《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 采用DSPBuilder的FIR濾波器的方案實現(xiàn)
采用DSPBuilder的FIR濾波器的方案實現(xiàn)
摘要: 在采用VHDL或VerilogHDL等硬件描述語言設(shè)計數(shù)字濾波器時,,由于程序的編寫往往不能達(dá)到良好優(yōu)化而使濾波器性能表現(xiàn)一般,。而采用調(diào)試好的IPCore需要向Altera公司購買。筆者采用了一種基于DSPBuilder的FPGA設(shè)計方法,,使FIR濾波器設(shè)計較為簡單易行,并能滿足設(shè)計要求,。
關(guān)鍵詞: SoPC FIR DSPbuilder Altera
Abstract:
Key words :

 

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