楊曉晗 李彬華 丁 旭
(昆明理工大學信息工程與自動化學院,昆明 650500)
基于FPGA的光柵信號FIR濾波器實現(xiàn)
楊曉晗 李彬華 丁 旭
(昆明理工大學信息工程與自動化學院,昆明 650500)
為了去除實測光柵信號的噪聲干擾,提高信號的細分精度,提出一種基于FPGA的光柵信號FIR濾波器實現(xiàn)方法。給出濾波器的基本原理和設計流程。通過DSP Builder和Matlab/Simulink完成了濾波器模塊的設計和仿真,并將此模塊直接轉換成VHDL語言,用Modelsim的RTL進行仿真,驗證了VHDL模塊的正確性。濾波結果表明:示波器的實測光柵信號和濾波后的光柵信號與Matlab/Simulink、DSP Builder模型仿真結果相同,設計的32階FIR濾波器在FPGA開發(fā)板的實現(xiàn)效果即示波器觀測到的輸入輸出信號,證明該濾波器設計的可行性及其良好的濾波效果。
FIR濾波器 光柵信號 DSP Builder FPGA Matlab/Simulink
光柵測量技術是以光柵付相對移動所形成的莫爾條紋信號為基礎的。光柵付的相對移動使透射光的光強呈周期性變化,該周期性光信號經(jīng)光電轉換后成為正弦波信號。正弦波信號每變化一個周期,表示被測物體移動一個光柵柵距。為了提高被測物體移動距離的檢測精度和分辨率,大多數(shù)研究人員側重研究的是對光柵信號的電子學細分處理方法[1]。但是,大部分細分方法所用的光柵信號都是理想的正余弦波,而且細分倍數(shù)越高,對光柵信號的要求越嚴格。而光柵測量系統(tǒng)產(chǎn)生的莫爾信號不可避免地會引入噪聲干擾,使得實際情況下很難得到理想的莫爾條紋,光電元件的輸出波形變?yōu)閹в须s波的近似正余弦曲線[2]。因此,需要對光柵信號進行濾波處理,消除噪聲對它產(chǎn)生的影響。目前,濾波器設計主要有軟件實現(xiàn)和硬件實現(xiàn)兩種方式[3]。軟件實現(xiàn)是利用計算機的存儲器、運算器和控制器完成濾波運算程序,但此方法速度慢且難以對信號進行實時處理。硬件實現(xiàn)多利用現(xiàn)場可編程門陣列(Field-Programmable Gate Array,FPGA)結合乘法和累加構成的卷積運算實現(xiàn)濾波器。FPGA具有體積小、速度快、功耗低及可靠性高等優(yōu)點,但它在實現(xiàn)復雜算法時可行性較差。在比較各種實現(xiàn)有限長單位沖激響應(Finite Impulse Response,FIR)濾波器方法的優(yōu)缺點后,Altera公司推出了專門針對數(shù)字信號處理器的設計軟件DSP Builder[4],使得濾波器設計效率大為提高,但它很少應用于光柵信號的濾波處理。
在此,筆者提出一種基于Matlab/Simulink、DSP Builder及QuartusII等軟件的FPGA開發(fā)板環(huán)境下的32階FIR濾波器,對實測的光柵信號進行濾波去噪處理,以得到較為理想的正弦信號。
通過云南天文臺經(jīng)緯儀的讀數(shù)頭SR050A采集到的光柵信號如圖1所示。示波器將采集的光柵信號保存為csv格式,然后導入Matlab中,并將它歸一化量化為8位數(shù)據(jù)。這是因為FPGA開發(fā)板自帶的是8位AD芯片TLC5510。由于示波器的采樣頻率為100kHz,所以將對應的采樣時間和數(shù)據(jù)一起導入Simulink的From Workspace模塊中,即完成了光柵信號數(shù)據(jù)的導入過程。
圖1 實測光柵信號
2.1FIR濾波器的基本原理
FIR濾波器在數(shù)字通信系統(tǒng)中被大量使用,如低通濾波、通帶選擇、抗混疊、抽取及內插等。通常對于一個FIR濾波器而言,它的沖擊響應是有限長的,其系統(tǒng)函數(shù)可以記為[5]:
(1)
式中bk——加權系數(shù);
H(z)——FIR濾波器的系統(tǒng)函數(shù);
M——FIR濾波器的零點數(shù),即延時節(jié)數(shù),為敘述簡便,稱M為FIR濾波器的階數(shù);
z-k——移位算子。
最基本的FIR濾波器可表示為:
(2)
式中h(i)——濾波器系數(shù);
L——濾波器的系數(shù)長度;
x(n)——輸入采樣序列;
y(n)——濾波器的輸出序列。
也可以用卷積來表示輸出序列y(n)與x(n)、h(n)的關系:
y(n)=x(n)*h(n)
(3)
其中,h(n)是系統(tǒng)的沖激響應函數(shù)。
2.2設計流程
幾乎所有的工程技術領域都涉及到信號(如電、磁、機械、熱、聲及光等)[6],因此信號噪聲無處不在,它貫穿于信號的獲取、傳輸及處理等各個環(huán)節(jié)。要將噪聲從信號中去除并提取有用信號,就必須對原始信號進行濾波。根據(jù)FIR濾波器的基本原理,為了設計32階低通濾波器,首先建立一個4階低通濾波器模型,然后根據(jù)4階濾波器便可以搭成4n階的直接I型濾波器。圖2所示為一個4階FIR濾波器,含有4個延遲模塊、4個乘法單元和一個加法器。
圖2 4階FIR濾波器模型
復制4個如圖2所示的4階FIR濾波器,將它們銜接起來。前一級的輸出端口Out2接后一級的In1輸入端口,并附加16個常數(shù)端口和一個4輸入端口的加法器,最后得到16階的FIR濾波器(圖3)輸出端口Out1。同理,以16階FIR濾波器為基礎可以得到32階的FIR低通濾波器,設計流程如圖4所示。設計完成后,根據(jù)光柵信號頻率(1.3kHz)和采樣頻率(100kHz),通過FDATool工具確定32階FIR濾波器的系數(shù)。
圖3 16階FIR濾波器模型
圖4 32階FIR濾波器的設計流程
根據(jù)實測光柵信號和32階FIR濾波器的設計流程,需在Matlab/Simulink環(huán)境下建立一個mdl模型文件,用圖形方式調用DSP Builder和其他Simulink庫中的圖形模型(Block),以構成算法級的設計框圖。
為了驗證設計的Simulink模型(圖5)的正確性,對它進行仿真驗證,結果如圖6所示??梢姡?jīng)濾波處理的光柵信號基本濾除了噪聲干擾,證實基于Simulink的DSP Builder模型是正確的。但Simulink仿真屬系統(tǒng)驗證性質,是對mdl文件進行仿真,并未對生成的VHDL代碼進行仿真。生成的VHDL描述的是RTL級,是針對具體硬件結構的;而Matlab/Simulink的模型仿真是算法級的,是針對算法實現(xiàn)的。因此轉換后的VHDL代碼實現(xiàn)可能與mdl模型描述的情況不完全相符,需對生成的RTL級VHDL代碼進行功能仿真。為此,在Simulink模型仿真之后,用DSP Builder的Signal Compiler模塊把mdl文件轉換成相應的硬件描述語言VHDL文件,再用DSP Builder的Test Bench模塊生成針對VHDL仿真器Modelism的測試文件進行仿真,如圖7所示。
圖5 32階FIR濾波器的Simulink模型
a. 濾波前
b. 濾波后圖6 Simulink仿真結果
圖7 Modelsim的RTL仿真結果
上述仿真實驗驗證了該32階FIR濾波器設計的正確性。最終,筆者將設計的32階FIR濾波器在FPGA硬件系統(tǒng)(圖8)中實現(xiàn),該系統(tǒng)包括AD轉換模塊、FPGA、DA轉換模塊和電源模塊4部分。其中,F(xiàn)PGA模塊采用的是Cyclone系列FPGA芯片EP3C16Q240C8;AD轉換模塊采用TLC5510芯片,目的是將模擬信號進行數(shù)字化并送入FPGA中進行數(shù)字濾波;DA模塊采用DAC7643芯片,將FPGA處理后輸出的數(shù)字信號轉換為模擬信號。
圖8 FPGA硬件系統(tǒng)
用示波器的A通道和B通道同時觀察輸入的原始光柵信號(AD輸入波形)和經(jīng)過FPGA硬件實現(xiàn)后的濾波信號(DA輸出波形),如圖9所示。csv格式的原始信號數(shù)據(jù)導入可編程函數(shù)信號發(fā)生器33250A后,由于可編程函數(shù)信號發(fā)生器的csv數(shù)據(jù)格式和示波器保存的csv數(shù)據(jù)格式不同,因此信號幅度和頻率都會發(fā)生改變。示波器的csv數(shù)據(jù)格式是時間與幅度一一對應的,而可編程函數(shù)信號發(fā)生器是以導入幾個波形為一個周期的,且其可編程軟件可將信號幅度放大,但整體波形規(guī)律不會改變。
圖9 AD輸入波形和DA輸出波形
筆者利用DSP Builder技術,將Matlab/Simulink和QuartusII設計工具有效結合,設計32階FIR濾波器模塊,并在FPGA開發(fā)板上實現(xiàn)了對實測光柵信號的數(shù)字濾波處理。借助Matlab/Simulink和Modelsim進行的仿真分析結果表明:通過Simulink仿真實現(xiàn)了光柵信號的去噪處理,說明此濾波器設計在Matlab中的正確性;Modelsim仿真得到了相同的結論,所以基于DSP Builder的32階FIR濾波器是可行的;為了更準確地說明此方法可以在硬件環(huán)境下實現(xiàn),把生成的VHDL代碼封裝成模塊移植至FPGA開發(fā)板,并用示波器觀察輸入輸出信號(即實測光柵信號和濾波后的光柵信號),結果與用Simulink和Modelsim仿真得到的相同。
[1] 胡曉東,彭瑯,雷明,等.一種光柵信號細分算法的FPGA實現(xiàn)[J].光子學報,2011,40(3):407~412.
[2] 羅華,高山,李翔龍.粗光柵信號全數(shù)字化處理法實現(xiàn)高倍數(shù)細分[J].光學精密工程,2007,15(2):283~288.
[3] 朱好學.基于FPGA的高階FIR濾波器設計[D].南京:南京理工大學,2008.
[4] 郝小江,黃昆.FIR數(shù)字濾波器設計及其FPGA實現(xiàn)[J].微型機與應用,2013,32(19):22~24.
[5] 潘松,黃繼業(yè),王國棟.現(xiàn)代DSP技術[M].西安:西安電子科技大學出版社,2003:163~164.
[6] 高耀鴻.基于FPGA的FIR低通濾波器[D].長沙:湖南大學,2012.
(Continued on Page 332)
FPGA-basedImplementationofFIRFilterforGratingSignals
YANG Xiao-han, LI Bin-hua, DING Xu
(FacultyofInformationEngineeringandAutomation,KunmingUniversityofScienceandTechnology,Kunming650500,China)
TH865
A
1000-3932(2016)03-0272-06
2016-01-12(修改稿)