劉春雅
(陜西國防工業職業技術學院 機電工程系,陜西 西安 710300)
數字濾波技術廣泛應用于科學技術的各個領域,如通信、雷達、數字電視、生物醫學等等,已成為極其重要的一門學科和技術領域。數字濾波器是對數字信號進行濾波處理以得到期望的響應特性的離散時間系統。數字濾波器工作在數字域,它處理的對象是經由采樣器件將模擬信號轉換而得到的數字信號。它的設計方法有很多,比較常用的有窗函數法、頻率抽樣法和最佳一直逼近法,但這些設計方法在設計濾波器尤其是高階濾波器時工作量很大,而利用MATLAB信號處理工具箱進行數字濾波器的設計工作,能夠減少工作量,提高設計效率。文中使用MATLAB這一高效工具完成一種FIR濾波器的前期參數設計工作,隨后給出了FPGA實現該FIR濾波器的設計方案,最后通過MATLAB和ModelSim的聯合仿真,驗證了該FIR濾波器滿足設計要求。
FIR濾波器為有限長脈沖響應濾波器,它的單位脈沖響應h(n)只有有限個數據點。輸入信號經過線性時不變系系統輸出的過程是一個輸入信號與單位脈沖響應進行線性卷積的過程,可以用線性常系數差分方程表示如下:

式中,x(n)是輸入信號,y(n)是卷積輸出,b(n)是系統的單位脈沖響應。可以看出,每次計算y(n)需要進行N次乘法和N-1次加法操作,實現乘累加之和,其中N是濾波器單位脈沖響應b(n)的長度。
根據差分方程表達式可知,FIR濾波器輸出是由移位、乘法和加法3種運算組成的。FPGA內部有大量觸發器及相應的RAM和DSP資源,移位操作可以由觸發器構成的移位寄存器鏈或RAM實現,而乘法和加法操作可以由DSP單元完成。故FPGA器件非常適合進行數字濾波器的設計實現。
離散時間系統的相頻響應反應了輸入信號的各頻率成分通過系統后在時間上發生位移的情況,一個理想的離散時間系統,除了具有所希望的幅頻響應外,最好還能具有線性相位,尤其在在語音合成、波形傳輸等通信領域體現的較為明顯。
設一個離散時間系統的幅頻特性等于1,而相頻特性具有如下的線性相位:

式中,k為常數,上式表明,該系統的相移和頻率成正比。那么,當信號x(n)通過該系統后,其輸出y(n)的頻率特性:

故 y(n)=x(n-k),輸出 y(n)等于輸入在時間上的位移,達到了無失真輸出的目的。
可以證明,當 FIR 系統的單位抽樣響應滿足 h(n)=±h(M-n)時,該系統具有線性相位。也就是說,FIR的單位抽樣響應需滿足對稱條件時,濾波器具有線性相位特性。其中,M可以是偶數或奇數,它們對應的濾波器的結構形式有所不同,但是實現方式上沒有太大的區別。
FIR濾波器的實現結構通常有:直接型,轉置型和線性相位型3種結構。由第一節的線性常系數差分方程式可以很容易地得到直接型的濾波器結構,如圖1所示。
轉置型由直接型可以推導得出,所實現的結構較直接型能夠省一些FPGA的寄存器資源。但不論是直接型還是轉置型,都不能夠節省DSP單元的數量。而對FPGA來說,DSP資源占用情況是考量濾波器設計是否合理的重要參考依據,因為FPGA中的DSP單元是一種比較寶貴的硬核資源。故在較大規模的設計中,直接型和轉置型兩種濾波器結構使用很少,所以這里并不做論述。
線性相位型的結構分為濾波器階數為偶數和奇數兩種情況,當濾波器階數N為奇數時,FIR的濾波器結構如圖2所示。

圖1 直接型的FIR濾波器結構Fig.1 Direct form FIR structure

圖2 線性相位型FIR濾波器結構(N為奇數)Fig.2 Linear-phase form FIR structure
從圖2可以看出,這種濾波器結構能夠節省50%的乘法運算,這樣FPGA的濾波器設計可以節約一半的DSP單元,是有利于FPGA實現的一種結構。
FDATool(Filter Design&Analysis Too1)是 Matlab 信號處理工具箱專用的濾波器設計分析工具,操作簡單、靈活,可以采用多種方法設計FIR濾波器。這種方法設計的數字濾波器,可以隨時調整濾波器特性,而且濾波結果實時顯示在圖形區,減少了工作量,有利于濾波器設計的進一步優化。
根據給定的濾波器設計指標,FIR濾波器通帶帶寬為100 Hz,截止頻率為200 Hz,主要完成濾除200 Hz以上干擾信號的工作,濾波器階數為40階。在FDATool中選用FIR低通濾波器設計,其幅頻響應和相頻響應如圖3和圖4所示。

圖3 幅頻響應Fig.3 Magnitude response

圖4 相頻響應Fig.4 Amplitude response
從幅頻響應和相頻響應可以看出實現低通濾波功能的同時得到了一個具有線性相位特性的濾波器系數。
由于MATLAB計算得到的濾波器系數為浮點數,而FPGA只能處理定點數據,所以還需要通過MATLAB將浮點數通過量化取整后轉化為定點數[7]。
FPGA采用Xilinx公司的Spartan3A的XA3S200A器件,經過ISE軟件綜合后的濾波器頂層圖如圖5所示。
模塊的資源占用情況如表1所示。
在MATLAB中產生一組測試數據來驗證FPGA最終實現的功能和性能。測試數據源包含了有用信號和干擾信號。測試數據源的時域波形如圖6所示。

圖5 濾波器頂層圖Fig.5 Top view of FIR

表1 FIR模塊資源占用情況Tab.1 Logic utilization of FIR module

圖6 測試數據波形Fig.6 Test datawaveform
信號從時域上無法區分干擾信號的具體頻率位置,通過對測試數據源做FFT變換,得到頻域圖如圖7所示。

圖7 測試數據源頻譜圖Fig.7 Test data in frequence domain
從頻譜上大致可以看出這組測試源有用信號頻點在50 Hz,另外3個干擾信號頻點在250 Hz,300 Hz和400 Hz的位置上。通過FPGA實現的FIR濾波器進行濾除干擾信號后的信號的頻譜如圖8所示。
濾波后信號的時域圖如圖9所示。
從圖8和圖9可見,無論在時域還是頻域均有效濾除了200 Hz以上的干擾信號,只保留了50 Hz的有用信號的頻率成分。

圖8 濾波后信號頻譜圖Fig.8 After filtered data in frequence domain

圖9 濾波后信號的時域圖Fig.9 After filtered datawaveform
研究了在FPGA中實現線性相位FIR濾波器的理論原理及設計方法,并在Xilinx FPGA器件上實現,借助ModelSim及MATLAB軟件分別對FPGA實現結果和理論算法結果進行了仿真驗證,經過數據分析,測試結果證明該FIR濾波器完全能夠滿足設計要求。
[1]徐志軍,徐光輝.CPLD/FPGA的開發與應用[M].北京:電子工業出版社,2002.
[2]王冠,愈一鳴.面向CPLD/FPGA的Verilog設計[M].北京:機械工業出版社,2008.
[3]夏宇聞,胡燕翔.Verilog HDL數字設計與綜合[M].北京:電子工業出版社,2009.
[4]胡廣書.數字信號處理[M].北京:清華大學出版社,2003.
[5]劉樹堂.數字信號處理(MATLAB版)[M].西安:西安交通大學,2008.
[6]田耕,徐文波.Xilinx FPGA開發實用教程[M].北京:清華大學出版社,2008.
[7]周云波,劉小群.基于Matlab的FIR數字濾波器的優化設計[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.