FIR 濾波器廣泛應用於數位訊號處理中,主要功能就是將不感興趣的信號濾除,留下有用信號。FIR濾波器是全零點結構,系統永遠穩定;並且具有線性相位的特徵,在有效頻率範圍內所有信號相位上不失真。在無線通信收發機中的DDC/DUC模塊,抽取和內插都需要加入濾波器以防止信號在頻譜上混疊,最典型的是採用 FIR濾波器實現半帶濾波器。
本文引用地址:http://www.eepw.com.cn/article/249651.htmFIR濾波處理如下式所示,其中x(n)為輸入信號,h(n)為FIR濾波係數,y(n)為經過濾波後的信號;N表示FIR濾波器的抽頭數,濾波器階數為N-1。
由上式可得到FIR濾波器在FPGA中的實現結構,如圖1所示,主要由延遲單元Z-1、乘法器和累加器組成。此結構為直接型FIR濾波器結構,也稱橫向結構(transverse)。
圖1
設計FIR濾波器的方法有多種,其中Matlab軟體提供了很多關於濾波器設計的工具箱,FDATool就是一個很好的工具,如圖2所示就是FDATool的界面,可以在Matlab的Command窗口中直接輸入FDATool命令來調用。
圖2
濾波器的設計首先需要設置的參數:
(1) Response Type:選擇FIR濾波器的類型:低通、高通、帶通和帶阻等。如圖3所示為Lowpass中的下拉選項,在DDC/DUC模塊設計中,抽取和內插需要使用Halfband Lowpass類型,而channel filter需要使用Raised-cosine類型。
圖3
(2) Design Method:FIR濾波器設計方法有多種,如圖4所示,最常用的是窗函數設計法(Window)、等波紋設計法(Equiripple)和最小二乘法 (Least-Squares)等。其中窗函數設計法在學校課堂中是重點講解的,提到FIR濾波器肯定會想到hamming、kaiser窗,但是實際應用中卻很少使用,因為如果採用窗函數設計法,達到所期望的頻率響應,與其它方法相比往往階數會更多;而且窗函數設計法一般只參照通頻帶wp、抑制頻帶ws 和理想增益來設計濾波器,但是實際應用中通頻帶和抑制帶的波紋也是需要考慮的,那在這種情況下,採用等波紋設計法就非常適用了。
圖4
(3) Filter Order:設置濾波器的階數,這個選項直接影響濾波器的性能,階數越高,性能越好,但是相應在FPGA實現耗用的資源需要增多。在這個設置中提供2個選項:Specify order和Minimum order,Specify order是工程師自己確定濾波器的階數,Minimum order是讓工具自動確定達到期望的頻率相應所需要的最小階數,因此具體選擇哪個選項得視實際情況而定了。
圖5
(4) Frequency Specification:設置頻率響應的參數,包括採樣頻率Fs、通帶頻率Fpass和阻帶頻率Fstop。
圖6
參數設置完成後,FDATool就會分析並且生成濾波係數,如圖7所示,可以得到濾波器的頻率相應曲線,並且可以通過File-》Export導出濾波係數,如圖8所示。
圖7
圖8
為了快速驗證FIR濾波器的FPGA實現,使用Xilinx的System Generator工具,如圖9所示為FIR濾波器的驗證模型,其中通過Gateway In和Gateway out模塊分隔matlab simulink模塊和Xilinx FPGA模塊,matlab simulink模塊用於產生測試源,接收並顯示濾波後波形。還有System Generator Token用於生成Xilinx FPGA模塊的HDL代碼。
圖9
其中FIR Compiler 5.0模塊的參數設置如圖10所示,濾波係數直接調用FDATool生成的濾波係數equ_coe,輸出為全精度數據。
圖10
得到輸出結果如圖11所示,上邊圖為輸入原波形,由兩個頻率分量的正弦波疊加而成,頻率分別為2MHz和100MHz,經過FIR濾波之後,100MHz頻率分量被濾除。
圖11
濾波器相關文章:濾波器原理
濾波器相關文章:濾波器原理
電源濾波器相關文章:電源濾波器原理
高通濾波器相關文章:高通濾波器原理 數字濾波器相關文章:數字濾波器原理