使用FPGA構(gòu)建的數(shù)字濾波器設計方案
在Matlab/Simulink環(huán)境下,采用DSP Builder模塊搭建FIR模型,根據(jù)FDATool工具對FIR濾波器進行了設計,然后進行系統(tǒng)級仿真和ModelSim功能仿真,其仿真結(jié)果表明其數(shù)字濾波器的濾波效果良好。通過SignalCompiler把模型轉(zhuǎn)換成VHDL語言加入到FPGA的硬件設計中,從QuartusⅡ軟件中的虛擬邏輯分析工具SignalTapⅡ中得到數(shù)字濾波器實時的結(jié)果波形圖,結(jié)果符合預期。
本文引用地址:http://m.butianyuan.cn/article/201710/367069.htm0 引言
在信息信號處理過程中,數(shù)字濾波器是信號處理中使用最廣泛的一種方法。通過濾波運算,將一組輸入數(shù)據(jù)序列轉(zhuǎn)變?yōu)榱硪唤M輸出數(shù)據(jù)序列,從而實現(xiàn)時域或頻域中信號屬性的改變。常用的數(shù)字濾波器可分為有限脈沖響應(FIR)濾波器和無限脈沖響應(IIR)濾波器兩種。其中,F(xiàn)IR數(shù)字濾波器具有嚴格的線性相位,而且非遞歸結(jié)構(gòu)也保證了運算的穩(wěn)定性。在實時性要求比較高的應用場合,采用可編程芯片F(xiàn)PGA加以實現(xiàn),相比于DSP芯片或?qū)S眯酒膶崿F(xiàn)方法,具有高速、高精度、高靈活性的優(yōu)點。本文在采取了一種基于FPGA和DSP Builder的方法設計FIR數(shù)字濾波器時,采用了層次化、模塊化的設計思想,遵循DSP Builder的設計開發(fā)流程,在Matlab/Simulink 中建立模型并進行系統(tǒng)級仿真,再進行Verilog語言轉(zhuǎn)換,ModelSim仿真驗證無誤后實現(xiàn)了FIR數(shù)字濾波器的實時測試。
1 FIR 數(shù)字濾波器的基本原理及結(jié)構(gòu)
對于一個FIR濾波器系統(tǒng),它的沖擊響應總是有限長的,其系統(tǒng)函數(shù)可以記為:
式中:x(n) 是輸入采樣序列;h(i) 是濾波器系數(shù);k 是濾波器階數(shù);y(n) 表示濾波器的輸出序列。
圖1為k 階FIR數(shù)字濾波器的結(jié)構(gòu)框圖。
2 FIR 數(shù)字濾波器的設計流程
該設計流程主要涉及到Matlab/Simulink、DSPBuilder和Quartus Ⅱ等工具軟件的開發(fā)設計。整個設計流程,包括從系統(tǒng)描述直至硬件實現(xiàn),可以在一個完整的設計環(huán)境中完成,如圖2所示。
?。?)Matlab/Simulink 中設計輸入,即在Matlab 的Simulink環(huán)境中建立一個擴展名為mdl的模型文件,用圖形方式調(diào)用Altera DSP Builder 和其他Simulink庫中的圖形模塊(Block),構(gòu)成系統(tǒng)級或算法級設計框圖(或稱Simulink設計模型)。
(2)利用Simulink的圖形化仿真、分析功能,分析此設計模型的正確性,完成模型仿真,也叫系統(tǒng)級仿真。
?。?)DSP Builder設計實現(xiàn)的關鍵一步,通過Signal-Compiler把Simulink的模型文件轉(zhuǎn)化成通用的硬件描述語言Verilog文件。
(4)轉(zhuǎn)換好的Verilog源代碼用ModelSim軟件進行功能仿真,驗證Verilog文件的正確性。接下來的幾個步驟是對以上設計產(chǎn)生的Verilog的RTL代碼和仿真文件在Quartus Ⅱ工具軟件中進行綜合、編譯適配,生成擴展名為。sof的文件加載到FPGA硬件系統(tǒng)中。
3 FIR 數(shù)字濾波器的詳細設計
3.1 FIR數(shù)字濾波器模塊設計與系統(tǒng)級仿真
根據(jù)FIR數(shù)字濾波器的原理,在Simulink環(huán)境下搭建16階的FIR數(shù)字濾波器結(jié)構(gòu),如圖3所示。
在模型的搭建過程中,使用了兩個8位的Shift Taps移位寄存器模塊對輸入信號進行分解,然后根據(jù)數(shù)字濾波器的原理進行算法計算。
模型搭建好之后,需要確定16階FIR數(shù)字濾波器的系數(shù),在這使用Matlab中的FDATool濾波器設計工具來確定。確定好濾波器的指標:
?。?)設計一個16階的FIR 濾波器;
?。?)低通濾波器;
(3)采樣頻率fs為16 384 Hz,截頻點頻率fs為533 Hz;
(4)輸入序列位寬為16位。
在設計濾波器界面中,如圖4所示,進行下列選擇:
?。?)濾波器類型(Filter Type)為低通(Lowpass);
?。?)設計方法(Design Method)為FIR,采用窗口法(Window);
?。?)濾波器階數(shù)(Filter Order)定制為15(設置為15 階而不是16階,是由于設計的16階FIR濾波器的常系數(shù)項h(0)=0);
?。?)濾波器窗口類型為Kaiser,Beta為0.5.
所有的選項確定好后,在FDATool濾波器設計界面中點擊“Design Filter”,Matlab就會計算濾波器系數(shù)并作相關分析。圖5所示為濾波器的幅頻響應,圖6所示為濾波器的階躍響應。
由于所有的模塊都在同一個Simulink圖中,這時的Simulink設計圖顯得很復雜,不利于閱讀和排錯,因此把FIR數(shù)字濾波器模型做成一個子系統(tǒng)在設計圖中顯示出來,如圖7所示,這就是Matlab中的層次化設計,在頂層設計圖中,濾波器作為名稱是SubFIR_533_16js的一個模塊出現(xiàn)。同時,圖7中還設置了其他模塊,包括仿真信號輸入模塊、Signal Tap Ⅱ信號實時監(jiān)測模塊、Signal Compiler模塊、硬件開發(fā)板模塊、TestBench模塊。
這樣整個濾波器的Simulink電路設計模型就完成了,然后要對該模型進行系統(tǒng)級仿真,查看其仿真結(jié)果,在頻率為533 Hz的波形輸入上加入了頻率為3 600 Hz的擾動波形,其Simulink仿真結(jié)果如圖8所示。
圖中,上面的波形是533 Hz的輸出,中間的波形是533 Hz加上3 600 Hz高頻干擾后的輸出,下面的波形是經(jīng)過濾波后的輸出。
3.2 從模型文件到Verilog代碼的RTL級轉(zhuǎn)換和編譯適配
利用Signal Compiler模塊將電路模型文件即Simu-link 模塊文件(。mdl)轉(zhuǎn)換成RTL 級的Verilog 代碼表述和Tcl(工具命令語言)腳本。這種轉(zhuǎn)換是用來對數(shù)字濾波器Simulink模型進行結(jié)構(gòu)化分析的[5]。獲得轉(zhuǎn)換好的VHDL描述后就可以調(diào)用 Verilog綜合器,這里我們選用Quartus Ⅱ,用來生成底層網(wǎng)表文件,同時也就可以得到其網(wǎng)表文件對應的RTL電路圖。如圖9所示。
3.3 數(shù)字濾波器的ModelSim功能仿真
ModelSim軟件可支持VHDL和Verilog混合仿真,無論是FPGA設計的RTL級和門級電路仿真,還是系統(tǒng)的功能仿真都可以用ModelSim來實現(xiàn)[4-5]。由Signal Com-piler生成的Verilog硬件描述語言模塊,在ModelSim中可以直接對Verilog代碼進行仿真,檢測源代碼是否符合功能要求。圖 10所示的16階FIR數(shù)字濾波器的功能仿真結(jié)果圖。與圖8的Simulink仿真結(jié)果圖的波形一致,表明經(jīng)過轉(zhuǎn)換的Verilog源代碼可以實現(xiàn)正常的濾波功能。
3.4 FIR數(shù)字濾波器的FPGA硬件實現(xiàn)
FIR數(shù)字濾波器一般是嵌入在采集器的采集板卡中進行工作的,把由數(shù)字濾波器的Verilog源代碼生成的模塊嵌入到采集板卡的FPGA邏輯中,如圖11所示。
在Quartus Ⅱ環(huán)境下,數(shù)字濾波器的內(nèi)部邏輯經(jīng)過編譯適配之后,以。sof文件的形式直接加載到FPGA中。
4 FIR 數(shù)字濾波器的FPGA 實時測試
進行實時測試的電路是應用FPGA和USB的數(shù)據(jù)采集電路,如圖12所示。
測試時把信號發(fā)生器設置好的輸入信號輸入到A/D,采樣得到的數(shù)據(jù)經(jīng)過FPGA,再通過USB與PC機相連,應用QuartusⅡ中的SignalTapⅡ工具進行實時檢測,結(jié)果如圖13所示,其中,上面的波形為輸入波形,頻率為200 Hz,下面的波形為輸出波形,由于200 Hz在低通的帶通內(nèi),所以兩者的波形相差不大。當輸入波形為頻率533 Hz時,由于是在截頻點,其輸出波形的幅值約為輸入波形幅值的71%,如圖13和14所示。
5 結(jié)束
FIR數(shù)字濾波器在數(shù)字信號處理領域有著廣泛的使用,本文通過仿真和實時驗證兩種方式實現(xiàn)了一種基于FPGA和DSP Builder的FIR數(shù)字濾波器。先根據(jù)FIR濾波器的基本原理和結(jié)構(gòu)框圖搭建了濾波器的模型,再根據(jù)濾波器的性能指標通過FDATool工具對其進行設計,并通過系統(tǒng)級仿真和ModelSim功能仿真進行了簡要的可行性分析,最后通過QuartusⅡ軟件對FIR數(shù)字濾波器進行實時驗證,表明本方案所設計的FIR 濾波器功能正確,性能良好。
評論