摘要: 簡要介紹了FIR數字濾波器的結構特點和基本原理,提出基于FPGA和DSP Builder的FIR數字濾波器的基本設計流程和實現方案。在Matlab/Simulink環境下,采用DSP Builder模塊搭建FIR模型,根據FDATool工具對FIR濾波器進行了設計,然后進行系統級仿真和ModelSim功能仿真,其仿真結果表明其數字濾波器的濾波效果良好。通過SignalCompiler把模型轉換成VHDL語言加入到FPGA的硬件設計中,從QuartusⅡ軟件中的虛擬邏輯分析工具SignalTapⅡ中得到數字濾波器實時的結果波形圖,結果符合預期。
關鍵詞: FPGA; DSP Builder; FIR數字濾波器; ModelSim功能仿真
中圖分類號: TN911?34 文獻標識碼: A 文章編號: 1004?373X(2013)14?0123?04
Design and implementation of FIR digital filter based on FPGA
SHAN Wen?jun, ZHOU Xue?chun, LI Wen?hua
(China Flight Test Establishment, Xi’an 710089, China)
Abstract: The structure feature and the basic principle of FIR digital filter is introduced briefly. The basic design process and implementation scheme of the FIR digital filter based on FPGA and DSP Builder is proposed in this paper. FIR model is structured with DSP Builder module in the Matlab/Simulink environment. The FIR digital filter is designed according to the FDATool. The system level simulation and ModelSim function simulation were completed. The simulation results show that the filter has excellent effect. The model is converted to VHDL language through SingalCompiler and added to FPGA hardware design. The real?time waveform graph of the FIR digital filter was received by the virtual logic analysis tool SignalTapⅡ in QuartusⅡ. The results conform to the expected requirement.
Keywords: FPGA; DSP Builder; FIR digital filter; ModelSim function simulation
在信息信號處理過程中,數字濾波器是信號處理中使用最廣泛的一種方法。通過濾波運算,將一組輸入數據序列轉變為另一組輸出數據序列,從而實現時域或頻域中信號屬性的改變[1]。常用的數字濾波器可分為有限脈沖響應(FIR)濾波器和無限脈沖響應(IIR)濾波器兩種。其中,FIR數字濾波器具有嚴格的線性相位[2],而且非遞歸結構也保證了運算的穩定性。在實時性要求比較高的應用場合,采用可編程芯片FPGA加以實現,相比于DSP芯片或專用芯片的實現方法,具有高速、高精度、高靈活性的優點[3]。本文在采取了一種基于FPGA和DSP Builder的方法設計FIR數字濾波器時,采用了層次化、模塊化的設計思想,遵循DSP Builder的設計開發流程,在Matlab/Simulink中建立模型并進行系統級仿真,再進行Verilog語言轉換,ModelSim仿真驗證無誤后實現了FIR數字濾波器的實時測試。
1 FIR數字濾波器的基本原理及結構
對于一個FIR濾波器系統,它的沖擊響應總是有限長的,其系統函數可以記為:
(1)
該數學表達式可用差分方程來表示:
(2)
式中:是輸入采樣序列;是濾波器系數;是濾波器階數;表示濾波器的輸出序列。
圖1為階FIR數字濾波器的結構框圖。
2 FIR數字濾波器的設計流程
該設計流程主要涉及到Matlab/Simulink、DSP Builder和Quartus Ⅱ等工具軟件的開發設計。整個設計流程,包括從系統描述直至硬件實現,可以在一個完整的設計環境中完成[4],如圖2所示。
圖1 FIR數字濾波器的結構框圖
圖2 DSP Builder設計流程圖
(1)Matlab/Simulink中設計輸入,即在Matlab的Simulink環境中建立一個擴展名為mdl的模型文件,用圖形方式調用Altera DSP Builder和其他Simulink庫中的圖形模塊(Block),構成系統級或算法級設計框圖(或稱Simulink設計模型)。
(2)利用Simulink的圖形化仿真、分析功能,分析此設計模型的正確性,完成模型仿真,也叫系統級仿真。
(3)DSP Builder設計實現的關鍵一步,通過SignalCompiler把Simulink的模型文件轉化成通用的硬件描述語言Verilog文件。
(4)轉換好的Verilog源代碼用ModelSim軟件進行功能仿真,驗證Verilog文件的正確性。接下來的幾個步驟是對以上設計產生的Verilog的RTL代碼和仿真文件在Quartus Ⅱ工具軟件中進行綜合、編譯適配,生成擴展名為.sof的文件加載到FPGA硬件系統中。
3 FIR數字濾波器的詳細設計
3.1 FIR數字濾波器模塊設計與系統級仿真
根據FIR數字濾波器的原理,在Simulink環境下搭建16階的FIR數字濾波器結構,如圖3所示。
在模型的搭建過程中,使用了兩個8位的Shift Taps移位寄存器模塊對輸入信號進行分解,然后根據數字濾波器的原理進行算法計算。
圖3 FIR數字濾波器的Simulink結構圖
模型搭建好之后,需要確定16階FIR數字濾波器的系數,在這使用Matlab中的FDATool濾波器設計工具來確定。確定好濾波器的指標:
(1)設計一個16階的FIR 濾波器;
(2)低通濾波器;
(3)采樣頻率fs為16 384 Hz,截頻點頻率fs為533 Hz;
(4)輸入序列位寬為16位。
在設計濾波器界面中,如圖4所示,進行下列選擇:
(1)濾波器類型(Filter Type)為低通(Lowpass);
(2)設計方法(Design Method)為FIR,采用窗口法(Window);
(3)濾波器階數(Filter Order)定制為15(設置為15階而不是16階,是由于設計的16階FIR濾波器的常系數項);
(4)濾波器窗口類型為Kaiser,Beta為0.5。
所有的選項確定好后,在FDATool濾波器設計界面中點擊“Design Filter”,Matlab就會計算濾波器系數并作相關分析。圖5所示為濾波器的幅頻響應,圖6所示為濾波器的階躍響應。
圖5 FIR濾波器的幅頻響應
圖6 FIR濾波器的階躍響應
由于所有的模塊都在同一個Simulink圖中,這時的Simulink設計圖顯得很復雜,不利于閱讀和排錯,因此把FIR數字濾波器模型做成一個子系統在設計圖中顯示出來,如圖7所示,這就是Matlab中的層次化設計,在頂層設計圖中,濾波器作為名稱是SubFIR_533_16js的一個模塊出現。同時,圖7中還設置了其他模塊,包括仿真信號輸入模塊、Signal Tap Ⅱ信號實時監測模塊、Signal Compiler模塊、硬件開發板模塊、TestBench模塊。
圖7 FIR數字濾波器的頂層設計圖
這樣整個濾波器的Simulink電路設計模型就完成了,然后要對該模型進行系統級仿真,查看其仿真結果,在頻率為533 Hz的波形輸入上加入了頻率為3 600 Hz的擾動波形,其Simulink仿真結果如圖8所示。
圖8 Simulink仿真結果圖
圖中,上面的波形是533 Hz的輸出,中間的波形是533 Hz加上3 600 Hz高頻干擾后的輸出,下面的波形是經過濾波后的輸出。
3.2 從模型文件到Verilog代碼的RTL級轉換和編譯
適配
利用Signal Compiler模塊將電路模型文件即Simulink模塊文件(.mdl)轉換成RTL級的Verilog代碼表述和Tcl(工具命令語言)腳本。這種轉換是用來對數字濾波器Simulink模型進行結構化分析的[5]。獲得轉換好的VHDL描述后就可以調用Verilog綜合器,這里我們選用Quartus Ⅱ,用來生成底層網表文件,同時也就可以得到其網表文件對應的RTL電路圖。如圖9所示。
圖9 數字濾波器RTL電路圖
3.3 數字濾波器的ModelSim功能仿真
ModelSim軟件可支持VHDL和Verilog混合仿真,無論是FPGA設計的RTL級和門級電路仿真,還是系統的功能仿真都可以用ModelSim來實現[4?5]。由Signal Compiler生成的Verilog硬件描述語言模塊,在ModelSim中可以直接對Verilog代碼進行仿真,檢測源代碼是否符合功能要求。圖10所示的16階FIR數字濾波器的功能仿真結果圖。與圖8的Simulink仿真結果圖的波形一致,表明經過轉換的Verilog源代碼可以實現正常的濾波功能。
圖10 ModelSim時序仿真結果圖
3.4 FIR數字濾波器的FPGA硬件實現
FIR數字濾波器一般是嵌入在采集器的采集板卡中進行工作的,把由數字濾波器的Verilog源代碼生成的模塊嵌入到采集板卡的FPGA邏輯中,如圖11所示。在Quartus Ⅱ環境下,數字濾波器的內部邏輯經過編譯適配之后,以.sof文件的形式直接加載到FPGA中。
圖11 數字濾波器Verilog模塊邏輯圖
4 FIR數字濾波器的FPGA實時測試
進行實時測試的電路是應用FPGA和USB的數據采集電路[3],如圖12所示。
圖12 測試電路原理框圖
測試時把信號發生器設置好的輸入信號輸入到A/D,采樣得到的數據經過FPGA,再通過USB與PC機相連,應用QuartusⅡ中的SignalTapⅡ工具進行實時檢測,結果如圖13所示,其中,上面的波形為輸入波形,頻率為200 Hz,下面的波形為輸出波形,由于200 Hz在低通的帶通內,所以兩者的波形相差不大。當輸入波形為頻率533 Hz時,由于是在截頻點,其輸出波形的幅值約為輸入波形幅值的71%,如圖13和14所示。
圖13 數字濾波器的硬件調試結果圖(一)
5 結 語
FIR數字濾波器在數字信號處理領域有著廣泛的使用,本文通過仿真和實時驗證兩種方式實現了一種基于FPGA和DSP Builder的FIR數字濾波器。先根據FIR濾波器的基本原理和結構框圖搭建了濾波器的模型,再根據濾波器的性能指標通過FDATool工具對其進行設計,并通過系統級仿真和ModelSim功能仿真進行了簡要的可行性分析,最后通過QuartusⅡ軟件對FIR數字濾波器進行實時驗證,表明所設計的FIR濾波器功能正確,性能良好。
圖14 數字濾波器的硬件調試結果(二)
參考文獻
[1] 陳家禎,鄭子華,葉鋒,等.基于FPGA的數字濾波系統設計[J].計算機仿真,2009,26(12):329?332.
[2] 劉艷,趙洪,于效宇,等.可配置參數FIR數字濾波系統設計[J].數據采集與處理,2009,24(6):835?839.
[3] 孫耀奇,高火濤,熊超,等.基于Matlab和FPGA的FIR數字濾波器設計及實現[J].現代電子技術,2008,31(11):89?92.
[4] 王旭東,潘明海.數字信號處理的FPGA實現[M].北京:清華大學出版社,2011.
[5] 杜勇,路建功,李元洲.數字濾波器的Matlab與FPGA實現[M].北京:電子工業出版社,2012.
[6] 戴曜澤,王春雷,朱智強.基于FPGA高階FIR濾波器的實現[J].現代電子技術,2012,35(8):110?113.
[7] 周云波,劉小群.基于Matlab的FIR數字濾波器的優化設計[J]. 電子科技,2010(10):28?29.