基于DSP Builder的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)
在信息信號(hào)處理過程中,如對(duì)信號(hào)的過濾、檢測(cè)、預(yù)測(cè)等,都要使用濾波器,數(shù)字濾波器是數(shù)字信號(hào)處理(DSP,DigitalSignalProcessing)中使用最廣泛的一種器件。常用的濾波器有無限長(zhǎng)單位脈沖響應(yīng)(ⅡR)濾波器和有限長(zhǎng)單位脈沖響應(yīng)(FIR)濾波器兩種[1],其中,FIR濾波器能提供理想的線性相位響應(yīng),在整個(gè)頻帶上獲得常數(shù)群時(shí)延從而得到零失真輸出信號(hào),同時(shí)它可以采用十分簡(jiǎn)單的算法實(shí)現(xiàn),這兩個(gè)優(yōu)點(diǎn)使FIR濾波器成為明智的設(shè)計(jì)工程師的首選,在采用VHDL或VerilogHDL等硬件描述語言設(shè)計(jì)數(shù)字濾波器時(shí),由于程序的編寫往往不能達(dá)到良好優(yōu)化而使濾波器性能表現(xiàn)一般。而采用調(diào)試好的IPCore需要向Altera公司購(gòu)買。筆者采用了一種基于DSPBuilder的FPGA設(shè)計(jì)方法,使FIR濾波器設(shè)計(jì)較為簡(jiǎn)單易行,并能滿足設(shè)計(jì)要求。
2 FIR濾波器介紹
2.1 FIR濾波器設(shè)計(jì)的原理
FIR濾波器的數(shù)學(xué)表達(dá)式可用差分方程(1)來表示:
其中:r是FIR的濾波器的抽頭數(shù);b(r)是第r級(jí)抽頭數(shù)(單位脈沖響應(yīng));x(n-r)是延時(shí)r個(gè)抽頭的輸入信號(hào)。
設(shè)計(jì)濾波器的任務(wù)就是尋求一個(gè)因果,物理上可實(shí)現(xiàn)的系統(tǒng)函數(shù)H(z),使其頻率響應(yīng)H(ejw)滿足所希望得到的頻域指標(biāo)。
2.2 設(shè)計(jì)要求
數(shù)字濾波器實(shí)際上是一個(gè)采用有限精度算法實(shí)現(xiàn)的線性非時(shí)變離散系統(tǒng),它的設(shè)計(jì)步驟為先根據(jù)需要確定其性能指標(biāo),設(shè)計(jì)一個(gè)系統(tǒng)函數(shù)H(z)逼近所需要的技術(shù)指標(biāo),最后采用有限的精度算法實(shí)現(xiàn)。本系統(tǒng)的設(shè)計(jì)指標(biāo)為;設(shè)計(jì)一個(gè)16階的低通濾波器,對(duì)模擬信號(hào)的采樣頻率fs為48KHz要求信號(hào)的截止頻率fc=10.8kHz輸入序列位寬為9位(最寬位為符號(hào)位)。
3 DSPBuilder介紹
DSPbuilder是Altera推出的一個(gè)DSP開發(fā)工具,它在QuartusⅡFPGA設(shè)計(jì)環(huán)境中集成了Mathworks的Matlab和simulinkDSP開發(fā)軟件[2]。
以往Matlab工具的使用往往作為DSP算法的建模和基于純數(shù)學(xué)的仿真,其數(shù)學(xué)模型無法為硬件DSP應(yīng)用系統(tǒng)直接產(chǎn)生實(shí)用程序代碼,仿真測(cè)試的結(jié)果也僅僅是基于數(shù)學(xué)算法結(jié)構(gòu)。而以往FPGA所需的傳統(tǒng)的基于硬件描述語言(HDL)的設(shè)計(jì)由于要考慮FPGA的硬件的δ延時(shí)與VHDL的遞歸算法的銜接,以及補(bǔ)碼運(yùn)算和乘積結(jié)果截取等問題,相當(dāng)繁雜。
對(duì)DSP是Builder而言,頂層的開發(fā)工具是MatLab/Simulink整個(gè)開發(fā)流層幾乎可以在同一環(huán)境中完成,真正實(shí)現(xiàn)了自定向下的設(shè)計(jì)流程,包括DSP系統(tǒng)的建模、系統(tǒng)級(jí)仿真、設(shè)計(jì)模型向VHDL硬件描述語言代碼的轉(zhuǎn)換、RTL(邏輯綜合RegisterTransferLevel)級(jí)功能仿真測(cè)試、編譯適配和布局布線、時(shí)序?qū)崟r(shí)仿真直至對(duì)DSP目標(biāo)器件的編程配置,整個(gè)設(shè)計(jì)流程一氣呵成地將系統(tǒng)描述和硬件實(shí)現(xiàn)有機(jī)地融為一體,充分顯示了現(xiàn)代電子設(shè)計(jì)自動(dòng)化開發(fā)的特點(diǎn)與優(yōu)勢(shì)。
4 FIR數(shù)字濾波器的DSPBuilder設(shè)計(jì)
4.1 FIR濾波器參數(shù)選取
用Matlab提供的濾波器設(shè)計(jì)的專門工具箱———FDATool仿真設(shè)計(jì)濾波器,滿足要求的FlR濾波器幅頻特性如圖1,由于浮點(diǎn)小數(shù)FPGA中實(shí)現(xiàn)比較困難,且代價(jià)太大,因而需要將濾波器的系數(shù)和輸入數(shù)據(jù)轉(zhuǎn)化為整數(shù),其中量化后的系數(shù)在Matlab主窗口可直接轉(zhuǎn)化,對(duì)于輸入數(shù)據(jù),可乘上一定的增益用Altbus控制位寬轉(zhuǎn)化為整數(shù)輸入。
根據(jù)FIR濾波器原理,可以利用FPGA來實(shí)現(xiàn)FIR濾波電路,DSPBuilder設(shè)計(jì)流程的第一步是在Matlab/Simulink中進(jìn)行設(shè)計(jì)輸入,即在Matlab的Simulink環(huán)境建立一個(gè)MDL模型文件,用圖形方式調(diào)用AlteraDSPBuilder和其他的Simulink庫中的圖形模塊,構(gòu)成系統(tǒng)級(jí)或算法級(jí)設(shè)計(jì)框圖(或稱Simulink建模),如圖2所示。
評(píng)論