0 引 言
FIR 數(shù)字濾波器在數(shù)字信號處理的各種應(yīng)用中發(fā)揮著十分重要的作用,,它能夠提供理想的線性相位響應(yīng),在整個頻帶上獲得常數(shù)群時延,,從而得到零失真輸出信號,,同時它可以采用十分簡單的算法予以實現(xiàn)。這些優(yōu)點使FIR濾波器成為設(shè)計工程師的首選,。在采用VHDL或VerilogHDL等硬件描述語言設(shè)計數(shù)字濾波器時,。由于程序的編寫往往不能達到良好優(yōu)化而使濾波器性能表現(xiàn)一般,而采用調(diào)試好的IP Core需要向Al-tera公司購買,。在此,,采用一種基于DSP Builder的FPGA設(shè)計方法,使FIR濾波器設(shè)計較為簡單易行,,并能滿足設(shè)計要求,。
1 FIR濾波器介紹
1.1 FIR濾波器原理
對于一個FIR濾波器系統(tǒng),它的沖激響應(yīng)總是有限長的,,最具體的FIR濾波器可用下式表示:
式中:r是FIR濾波器的抽頭數(shù),;x(n-r)是延時,r個抽頭的輸入信號,;b(r)是第r級抽頭數(shù)(單位脈沖響應(yīng)),;M是濾波器的階數(shù);y(n)表示濾波器的輸出序列,。濾波器就是尋求一個可實現(xiàn)的系統(tǒng)函數(shù)H(z),,使其頻率響應(yīng)H(ejω)滿足所希望得到的頻域信號,也可以用卷積的形式來表示:
y(n)=z(n)*h(n)
典型的直接I型FIR濾波器如圖1表示,,其輸出序列y(n)滿足下式:
1.2 設(shè)計要求
數(shù)字濾波器實際上是一個采用有限精度算法實現(xiàn)的線性非時變離散系統(tǒng),。它的設(shè)計步驟是先根據(jù)需要確定其性能指標,設(shè)計一個系統(tǒng)函數(shù)h(n)逼近所需要的性能指標,,濾波器的系數(shù)計算可以借助Matlab強大的計算功能和現(xiàn)成濾波器設(shè)計工具來完成,,最后采用有限的精度算法實現(xiàn)。該系統(tǒng)的設(shè)計指標為:設(shè)計一個16階的低通濾波器,,選模擬信號的采樣頻率Fs為5 kHz,,要求信號的截止頻率Fc=1 kHz,輸入序列的位寬為9位(最寬位為符號位),。激勵源為幅值為27,,頻率為800 Hz與1 600 Hz兩個信號的混頻信號。
2 基于DSP Builder設(shè)計FIR濾波器
2.1 DSP Builder介紹
DSP Builder是美國Al-tera公司推出的一個面向DSP開發(fā)的系統(tǒng)級設(shè)計工具,,它在QuartusⅡ設(shè)計環(huán)境中集成了Matlab和 SimuIinkDSP開發(fā)軟件,。以往使用的Matlab工具僅僅作為DSP算法的建模和基于純數(shù)學(xué)的仿真,其數(shù)學(xué)模型無法為硬件DSP應(yīng)用系統(tǒng)直接產(chǎn)生實用的程序代碼,,仿真測試的結(jié)果也往往是基于數(shù)學(xué)的算法結(jié)果,。而以往的FPGA所需要的傳統(tǒng)基于硬件描述語言的設(shè)計因考慮了FPGA硬件的延時與VHDL 遞歸算法的銜接,以及補碼運算和乘積結(jié)果截取等問題,,所以相當繁瑣,。而對于DSP Builder而言,它作為Matlab的一個Simulink工具箱,,使得用FPGA設(shè)計的DSP系統(tǒng)完全可以通過Simulink的圖形化界面進行建模,、系統(tǒng)級仿真。設(shè)計模型可直接向VHDL硬件描述語言轉(zhuǎn)換,,并自動調(diào)用QuartusⅡ等EDA設(shè)計軟件,,完成綜合、網(wǎng)表生成以及器件適配乃至FPGA 的配置下載,,使得系統(tǒng)描述與硬件實現(xiàn)有機地融合,,充分體現(xiàn)了現(xiàn)代電子技術(shù)自動化開發(fā)的特點與優(yōu)勢。
2.2 FIR濾波器的設(shè)計
2.2.1 FIR濾波器參數(shù)選取
采用Matlab提供的濾波器專用設(shè)計工具FDAtool仿真設(shè)計的濾波器,,可滿足要求的FIR濾波器幅頻特性,,由于浮點小數(shù)在FPGA中實現(xiàn)得比較困難,且代價太大,,因而需要將濾波器的系數(shù)和輸人數(shù)據(jù)轉(zhuǎn)化為整數(shù),,其中量化后的系統(tǒng)可以在Matlab主窗口中直接轉(zhuǎn)化,對于輸入數(shù)據(jù),,乘以28的增益用 Altbus控制位寬轉(zhuǎn)化為整數(shù)輸入,。
2.2.2 FIR濾波器模型的建立
根據(jù)FIR濾波器原理,可以利用FPGA來實現(xiàn)FIR濾波電路,。DSP Builder設(shè)計流程的第一步是在Matlab/Simulink中進行設(shè)計輸入的,,即在Matlab的Simulink環(huán)境中建立一個MDL模型文件,用圖形方式調(diào)用DSP Builder和其他Simulink庫中的圖形模塊,,構(gòu)成系統(tǒng)級或算法級設(shè)計框圖,,如圖2所示。
2.2.3 在Simulink中的仿真并生成VHDL代碼
完成模型設(shè)計之后,,可以先在Simulink中對模型進行仿真,,可以通過Simulink中的示波器模塊查看各個步驟的中間結(jié)果。輸入信號采用800 Hz和1 600 Hz,,幅值相同的兩個正弦信號的疊加,。仿真結(jié)果如圖3所示,。從仿真波形可以看出,通過濾波器之后,,1 600 Hz的信號能夠被很好地濾除,。
雙擊SignalCompiler可對以上的設(shè)計模型進行分析,選擇相應(yīng)的芯片,,將以上設(shè)計模塊圖文件“翻譯”成VHDL語言,。
2.2.4 Modelsim的RTL仿真
在Simulink中進行的仿真屬于系統(tǒng)驗證性質(zhì)的,是對mdl文件進行的仿真,,并沒有對生成的VHDL代碼進行仿真,。事實上,生成VHDL描述的是 RTL級的,,是針對具體的硬件結(jié)構(gòu),,而在Matlab的Simulink中的模型仿真是算法級的,兩者之間有可能存在軟件理解上的差異,,轉(zhuǎn)化后的VHDL 代碼實現(xiàn)可能與mdl模型描述的情況不完全相符,。這就需要針對生成的RTL級VHDL代碼進行功能仿真,仿真結(jié)果如圖4所示,。
仿真結(jié)果說明,,在Modelsim中仿真結(jié)果和Simulink里的仿真結(jié)果基本一致,該濾波器有較好的濾波效果,??梢钥闯觯斎胝也ń?jīng)過數(shù)字化過程以后,,能夠在Modelsim中還原出模擬波形.符合設(shè)計的要求,,可以在QLtortusⅡ的環(huán)境下進行硬件設(shè)計。
2.2.5 濾波器在FPGA上的實現(xiàn)
在 QuartusⅡ環(huán)境中,,打開DSP Builder建立的QuartusⅡ項目文件,,在QuartusⅡ中再進行一次仿真,由此可以看到符合要求的時序波形,。然后指定器件引腳,,并進行編譯,最后下載到FPGA器件中,,就可以對硬件進行測試,,加上clok信號和使能信號,用信號發(fā)生器產(chǎn)生所要求的兩個不同頻率的正弦信號,,就可以在示波器上看到濾波后的結(jié)果,。需要設(shè)計不同的濾波器電路是僅修改FIR濾波器模型文件就可以實現(xiàn),這樣不僅避免了繁瑣的VHDL語言編程,而且便于進行調(diào)整,。
3 結(jié) 語
在利用FPGA進行數(shù)字濾波器開發(fā)時,,采用DSPBuilder作為設(shè)計工具,能加快進度,。當然,,在實際應(yīng)用中,受精度,、速度和器件選擇方面的影響,,可能對其轉(zhuǎn)化的VHDL進行進一步的優(yōu)化,。