劉春雅
(陜西國防工業(yè)職業(yè)技術(shù)學(xué)院 機(jī)電工程系,陜西 西安 710300)
數(shù)字濾波技術(shù)廣泛應(yīng)用于科學(xué)技術(shù)的各個領(lǐng)域,如通信、雷達(dá)、數(shù)字電視、生物醫(yī)學(xué)等等,已成為極其重要的一門學(xué)科和技術(shù)領(lǐng)域。數(shù)字濾波器是對數(shù)字信號進(jìn)行濾波處理以得到期望的響應(yīng)特性的離散時間系統(tǒng)。數(shù)字濾波器工作在數(shù)字域,它處理的對象是經(jīng)由采樣器件將模擬信號轉(zhuǎn)換而得到的數(shù)字信號。它的設(shè)計(jì)方法有很多,比較常用的有窗函數(shù)法、頻率抽樣法和最佳一直逼近法,但這些設(shè)計(jì)方法在設(shè)計(jì)濾波器尤其是高階濾波器時工作量很大,而利用MATLAB信號處理工具箱進(jìn)行數(shù)字濾波器的設(shè)計(jì)工作,能夠減少工作量,提高設(shè)計(jì)效率。文中使用MATLAB這一高效工具完成一種FIR濾波器的前期參數(shù)設(shè)計(jì)工作,隨后給出了FPGA實(shí)現(xiàn)該FIR濾波器的設(shè)計(jì)方案,最后通過MATLAB和ModelSim的聯(lián)合仿真,驗(yàn)證了該FIR濾波器滿足設(shè)計(jì)要求。
FIR濾波器為有限長脈沖響應(yīng)濾波器,它的單位脈沖響應(yīng)h(n)只有有限個數(shù)據(jù)點(diǎn)。輸入信號經(jīng)過線性時不變系系統(tǒng)輸出的過程是一個輸入信號與單位脈沖響應(yīng)進(jìn)行線性卷積的過程,可以用線性常系數(shù)差分方程表示如下:
式中,x(n)是輸入信號,y(n)是卷積輸出,b(n)是系統(tǒng)的單位脈沖響應(yīng)??梢钥闯觯看斡?jì)算y(n)需要進(jìn)行N次乘法和N-1次加法操作,實(shí)現(xiàn)乘累加之和,其中N是濾波器單位脈沖響應(yīng)b(n)的長度。
根據(jù)差分方程表達(dá)式可知,F(xiàn)IR濾波器輸出是由移位、乘法和加法3種運(yùn)算組成的。FPGA內(nèi)部有大量觸發(fā)器及相應(yīng)的RAM和DSP資源,移位操作可以由觸發(fā)器構(gòu)成的移位寄存器鏈或RAM實(shí)現(xiàn),而乘法和加法操作可以由DSP單元完成。故FPGA器件非常適合進(jìn)行數(shù)字濾波器的設(shè)計(jì)實(shí)現(xiàn)。
離散時間系統(tǒng)的相頻響應(yīng)反應(yīng)了輸入信號的各頻率成分通過系統(tǒng)后在時間上發(fā)生位移的情況,一個理想的離散時間系統(tǒng),除了具有所希望的幅頻響應(yīng)外,最好還能具有線性相位,尤其在在語音合成、波形傳輸?shù)韧ㄐ蓬I(lǐng)域體現(xiàn)的較為明顯。
設(shè)一個離散時間系統(tǒng)的幅頻特性等于1,而相頻特性具有如下的線性相位:
式中,k為常數(shù),上式表明,該系統(tǒng)的相移和頻率成正比。那么,當(dāng)信號x(n)通過該系統(tǒng)后,其輸出y(n)的頻率特性:
故 y(n)=x(n-k),輸出 y(n)等于輸入在時間上的位移,達(dá)到了無失真輸出的目的。
可以證明,當(dāng) FIR 系統(tǒng)的單位抽樣響應(yīng)滿足 h(n)=±h(M-n)時,該系統(tǒng)具有線性相位。也就是說,F(xiàn)IR的單位抽樣響應(yīng)需滿足對稱條件時,濾波器具有線性相位特性。其中,M可以是偶數(shù)或奇數(shù),它們對應(yīng)的濾波器的結(jié)構(gòu)形式有所不同,但是實(shí)現(xiàn)方式上沒有太大的區(qū)別。
FIR濾波器的實(shí)現(xiàn)結(jié)構(gòu)通常有:直接型,轉(zhuǎn)置型和線性相位型3種結(jié)構(gòu)。由第一節(jié)的線性常系數(shù)差分方程式可以很容易地得到直接型的濾波器結(jié)構(gòu),如圖1所示。
轉(zhuǎn)置型由直接型可以推導(dǎo)得出,所實(shí)現(xiàn)的結(jié)構(gòu)較直接型能夠省一些FPGA的寄存器資源。但不論是直接型還是轉(zhuǎn)置型,都不能夠節(jié)省DSP單元的數(shù)量。而對FPGA來說,DSP資源占用情況是考量濾波器設(shè)計(jì)是否合理的重要參考依據(jù),因?yàn)镕PGA中的DSP單元是一種比較寶貴的硬核資源。故在較大規(guī)模的設(shè)計(jì)中,直接型和轉(zhuǎn)置型兩種濾波器結(jié)構(gòu)使用很少,所以這里并不做論述。
線性相位型的結(jié)構(gòu)分為濾波器階數(shù)為偶數(shù)和奇數(shù)兩種情況,當(dāng)濾波器階數(shù)N為奇數(shù)時,F(xiàn)IR的濾波器結(jié)構(gòu)如圖2所示。
圖1 直接型的FIR濾波器結(jié)構(gòu)Fig.1 Direct form FIR structure
圖2 線性相位型FIR濾波器結(jié)構(gòu)(N為奇數(shù))Fig.2 Linear-phase form FIR structure
從圖2可以看出,這種濾波器結(jié)構(gòu)能夠節(jié)省50%的乘法運(yùn)算,這樣FPGA的濾波器設(shè)計(jì)可以節(jié)約一半的DSP單元,是有利于FPGA實(shí)現(xiàn)的一種結(jié)構(gòu)。
FDATool(Filter Design&Analysis Too1)是 Matlab 信號處理工具箱專用的濾波器設(shè)計(jì)分析工具,操作簡單、靈活,可以采用多種方法設(shè)計(jì)FIR濾波器。這種方法設(shè)計(jì)的數(shù)字濾波器,可以隨時調(diào)整濾波器特性,而且濾波結(jié)果實(shí)時顯示在圖形區(qū),減少了工作量,有利于濾波器設(shè)計(jì)的進(jìn)一步優(yōu)化。
根據(jù)給定的濾波器設(shè)計(jì)指標(biāo),F(xiàn)IR濾波器通帶帶寬為100 Hz,截止頻率為200 Hz,主要完成濾除200 Hz以上干擾信號的工作,濾波器階數(shù)為40階。在FDATool中選用FIR低通濾波器設(shè)計(jì),其幅頻響應(yīng)和相頻響應(yīng)如圖3和圖4所示。
圖3 幅頻響應(yīng)Fig.3 Magnitude response
圖4 相頻響應(yīng)Fig.4 Amplitude response
從幅頻響應(yīng)和相頻響應(yīng)可以看出實(shí)現(xiàn)低通濾波功能的同時得到了一個具有線性相位特性的濾波器系數(shù)。
由于MATLAB計(jì)算得到的濾波器系數(shù)為浮點(diǎn)數(shù),而FPGA只能處理定點(diǎn)數(shù)據(jù),所以還需要通過MATLAB將浮點(diǎn)數(shù)通過量化取整后轉(zhuǎn)化為定點(diǎn)數(shù)[7]。
FPGA采用Xilinx公司的Spartan3A的XA3S200A器件,經(jīng)過ISE軟件綜合后的濾波器頂層圖如圖5所示。
模塊的資源占用情況如表1所示。
在MATLAB中產(chǎn)生一組測試數(shù)據(jù)來驗(yàn)證FPGA最終實(shí)現(xiàn)的功能和性能。測試數(shù)據(jù)源包含了有用信號和干擾信號。測試數(shù)據(jù)源的時域波形如圖6所示。
圖5 濾波器頂層圖Fig.5 Top view of FIR
表1 FIR模塊資源占用情況Tab.1 Logic utilization of FIR module
圖6 測試數(shù)據(jù)波形Fig.6 Test datawaveform
信號從時域上無法區(qū)分干擾信號的具體頻率位置,通過對測試數(shù)據(jù)源做FFT變換,得到頻域圖如圖7所示。
圖7 測試數(shù)據(jù)源頻譜圖Fig.7 Test data in frequence domain
從頻譜上大致可以看出這組測試源有用信號頻點(diǎn)在50 Hz,另外3個干擾信號頻點(diǎn)在250 Hz,300 Hz和400 Hz的位置上。通過FPGA實(shí)現(xiàn)的FIR濾波器進(jìn)行濾除干擾信號后的信號的頻譜如圖8所示。
濾波后信號的時域圖如圖9所示。
從圖8和圖9可見,無論在時域還是頻域均有效濾除了200 Hz以上的干擾信號,只保留了50 Hz的有用信號的頻率成分。
圖8 濾波后信號頻譜圖Fig.8 After filtered data in frequence domain
圖9 濾波后信號的時域圖Fig.9 After filtered datawaveform
研究了在FPGA中實(shí)現(xiàn)線性相位FIR濾波器的理論原理及設(shè)計(jì)方法,并在Xilinx FPGA器件上實(shí)現(xiàn),借助ModelSim及MATLAB軟件分別對FPGA實(shí)現(xiàn)結(jié)果和理論算法結(jié)果進(jìn)行了仿真驗(yàn)證,經(jīng)過數(shù)據(jù)分析,測試結(jié)果證明該FIR濾波器完全能夠滿足設(shè)計(jì)要求。
[1]徐志軍,徐光輝.CPLD/FPGA的開發(fā)與應(yīng)用[M].北京:電子工業(yè)出版社,2002.
[2]王冠,愈一鳴.面向CPLD/FPGA的Verilog設(shè)計(jì)[M].北京:機(jī)械工業(yè)出版社,2008.
[3]夏宇聞,胡燕翔.Verilog HDL數(shù)字設(shè)計(jì)與綜合[M].北京:電子工業(yè)出版社,2009.
[4]胡廣書.?dāng)?shù)字信號處理[M].北京:清華大學(xué)出版社,2003.
[5]劉樹堂.?dāng)?shù)字信號處理(MATLAB版)[M].西安:西安交通大學(xué),2008.
[6]田耕,徐文波.Xilinx FPGA開發(fā)實(shí)用教程[M].北京:清華大學(xué)出版社,2008.
[7]周云波,劉小群.基于Matlab的FIR數(shù)字濾波器的優(yōu)化設(shè)計(jì)[J].電子科技,2010(10):28-29.
ZHOU Yun-bo,LIU Xiao-qun.Design of a digital filter FIR based on Matlab[J].Electronic Science and Technology,2010(10):28-29.