《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 模擬設(shè)計(jì) > 設(shè)計(jì)應(yīng)用 > 基于DSP Builder的16階FIR濾波器實(shí)現(xiàn)
基于DSP Builder的16階FIR濾波器實(shí)現(xiàn)
摘要: 在采用VHDL或VerilogHDL等硬件描述語言設(shè)計(jì)數(shù)字濾波器時(shí)。由于程序的編寫往往不能達(dá)到良好優(yōu)化而使濾波器性能表現(xiàn)一般,而采用調(diào)試好的IP Core需要向Al-tera公司購(gòu)買。在此,采用一種基于DSP Builder的FPGA設(shè)計(jì)方法,使FIR濾波器設(shè)計(jì)較為簡(jiǎn)單易行,并能滿足設(shè)計(jì)要求。
Abstract:
Key words :

  0 引 言

  FIR 數(shù)字濾波器在數(shù)字信號(hào)處理的各種應(yīng)用中發(fā)揮著十分重要的作用,它能夠提供理想的線性相位響應(yīng),在整個(gè)頻帶上獲得常數(shù)群時(shí)延,從而得到零失真輸出信號(hào),同時(shí)它可以采用十分簡(jiǎn)單的算法予以實(shí)現(xiàn)。這些優(yōu)點(diǎn)使FIR濾波器成為設(shè)計(jì)工程師的首選。在采用VHDL或VerilogHDL等硬件描述語言設(shè)計(jì)數(shù)字濾波器時(shí)。由于程序的編寫往往不能達(dá)到良好優(yōu)化而使濾波器性能表現(xiàn)一般,而采用調(diào)試好的IP Core需要向Al-tera公司購(gòu)買。在此,采用一種基于DSP Builder的FPGA設(shè)計(jì)方法,使FIR濾波器設(shè)計(jì)較為簡(jiǎn)單易行,并能滿足設(shè)計(jì)要求。

  1 FIR濾波器介紹

  1.1 FIR濾波器原理

  對(duì)于一個(gè)FIR濾波器系統(tǒng),它的沖激響應(yīng)總是有限長(zhǎng)的,最具體的FIR濾波器可用下式表示:

FIR濾波器
  
式中:r是FIR濾波器的抽頭數(shù);x(n-r)是延時(shí),r個(gè)抽頭的輸入信號(hào);b(r)是第r級(jí)抽頭數(shù)(單位脈沖響應(yīng));M是濾波器的階數(shù);y(n)表示濾波器的輸出序列。濾波器就是尋求一個(gè)可實(shí)現(xiàn)的系統(tǒng)函數(shù)H(z),使其頻率響應(yīng)H(ejω)滿足所希望得到的頻域信號(hào),也可以用卷積的形式來表示:

  y(n)=z(n)*h(n)

直接I型FIR濾波器

  典型的直接I型FIR濾波器如圖1表示,其輸出序列y(n)滿足下式:

輸出序列y

  1.2 設(shè)計(jì)要求

  數(shù)字濾波器實(shí)際上是一個(gè)采用有限精度算法實(shí)現(xiàn)的線性非時(shí)變離散系統(tǒng)。它的設(shè)計(jì)步驟是先根據(jù)需要確定其性能指標(biāo),設(shè)計(jì)一個(gè)系統(tǒng)函數(shù)h(n)逼近所需要的性能指標(biāo),濾波器的系數(shù)計(jì)算可以借助Matlab強(qiáng)大的計(jì)算功能和現(xiàn)成濾波器設(shè)計(jì)工具來完成,最后采用有限的精度算法實(shí)現(xiàn)。該系統(tǒng)的設(shè)計(jì)指標(biāo)為:設(shè)計(jì)一個(gè)16階的低通濾波器,選模擬信號(hào)的采樣頻率Fs為5 kHz,要求信號(hào)的截止頻率Fc=1 kHz,輸入序列的位寬為9位(最寬位為符號(hào)位)。激勵(lì)源為幅值為27,頻率為800 Hz與1 600 Hz兩個(gè)信號(hào)的混頻信號(hào)。

  2 基于DSP Builder設(shè)計(jì)FIR濾波器

  2.1 DSP Builder介紹

  DSP Builder是美國(guó)Al-tera公司推出的一個(gè)面向DSP開發(fā)的系統(tǒng)級(jí)設(shè)計(jì)工具,它在QuartusⅡ設(shè)計(jì)環(huán)境中集成了Matlab和 SimuIinkDSP開發(fā)軟件。以往使用的Matlab工具僅僅作為DSP算法的建模和基于純數(shù)學(xué)的仿真,其數(shù)學(xué)模型無法為硬件DSP應(yīng)用系統(tǒng)直接產(chǎn)生實(shí)用的程序代碼,仿真測(cè)試的結(jié)果也往往是基于數(shù)學(xué)的算法結(jié)果。而以往的FPGA所需要的傳統(tǒng)基于硬件描述語言的設(shè)計(jì)因考慮了FPGA硬件的延時(shí)與VHDL 遞歸算法的銜接,以及補(bǔ)碼運(yùn)算和乘積結(jié)果截取等問題,所以相當(dāng)繁瑣。而對(duì)于DSP Builder而言,它作為Matlab的一個(gè)Simulink工具箱,使得用FPGA設(shè)計(jì)的DSP系統(tǒng)完全可以通過Simulink的圖形化界面進(jìn)行建模、系統(tǒng)級(jí)仿真。設(shè)計(jì)模型可直接向VHDL硬件描述語言轉(zhuǎn)換,并自動(dòng)調(diào)用QuartusⅡ等EDA設(shè)計(jì)軟件,完成綜合、網(wǎng)表生成以及器件適配乃至FPGA 的配置下載,使得系統(tǒng)描述與硬件實(shí)現(xiàn)有機(jī)地融合,充分體現(xiàn)了現(xiàn)代電子技術(shù)自動(dòng)化開發(fā)的特點(diǎn)與優(yōu)勢(shì)。

  2.2 FIR濾波器的設(shè)計(jì)

  2.2.1 FIR濾波器參數(shù)選取

  采用Matlab提供的濾波器專用設(shè)計(jì)工具FDAtool仿真設(shè)計(jì)的濾波器,可滿足要求的FIR濾波器幅頻特性,由于浮點(diǎn)小數(shù)在FPGA中實(shí)現(xiàn)得比較困難,且代價(jià)太大,因而需要將濾波器的系數(shù)和輸人數(shù)據(jù)轉(zhuǎn)化為整數(shù),其中量化后的系統(tǒng)可以在Matlab主窗口中直接轉(zhuǎn)化,對(duì)于輸入數(shù)據(jù),乘以28的增益用 Altbus控制位寬轉(zhuǎn)化為整數(shù)輸入。

  2.2.2 FIR濾波器模型的建立

  根據(jù)FIR濾波器原理,可以利用FPGA來實(shí)現(xiàn)FIR濾波電路。DSP Builder設(shè)計(jì)流程的第一步是在Matlab/Simulink中進(jìn)行設(shè)計(jì)輸入的,即在Matlab的Simulink環(huán)境中建立一個(gè)MDL模型文件,用圖形方式調(diào)用DSP Builder和其他Simulink庫(kù)中的圖形模塊,構(gòu)成系統(tǒng)級(jí)或算法級(jí)設(shè)計(jì)框圖,如圖2所示。

設(shè)計(jì)框圖

 

 

  2.2.3 在Simulink中的仿真并生成VHDL代碼

  完成模型設(shè)計(jì)之后,可以先在Simulink中對(duì)模型進(jìn)行仿真,可以通過Simulink中的示波器模塊查看各個(gè)步驟的中間結(jié)果。輸入信號(hào)采用800 Hz和1 600 Hz,幅值相同的兩個(gè)正弦信號(hào)的疊加。仿真結(jié)果如圖3所示。從仿真波形可以看出,通過濾波器之后,1 600 Hz的信號(hào)能夠被很好地濾除。

在Simulink中的仿真

  雙擊SignalCompiler可對(duì)以上的設(shè)計(jì)模型進(jìn)行分析,選擇相應(yīng)的芯片,將以上設(shè)計(jì)模塊圖文件“翻譯”成VHDL語言。

   2.2.4 Modelsim的RTL仿真

  在Simulink中進(jìn)行的仿真屬于系統(tǒng)驗(yàn)證性質(zhì)的,是對(duì)mdl文件進(jìn)行的仿真,并沒有對(duì)生成的VHDL代碼進(jìn)行仿真。事實(shí)上,生成VHDL描述的是 RTL級(jí)的,是針對(duì)具體的硬件結(jié)構(gòu),而在Matlab的Simulink中的模型仿真是算法級(jí)的,兩者之間有可能存在軟件理解上的差異,轉(zhuǎn)化后的VHDL 代碼實(shí)現(xiàn)可能與mdl模型描述的情況不完全相符。這就需要針對(duì)生成的RTL級(jí)VHDL代碼進(jìn)行功能仿真,仿真結(jié)果如圖4所示。

 

仿真結(jié)果

  仿真結(jié)果說明,在Modelsim中仿真結(jié)果和Simulink里的仿真結(jié)果基本一致,該濾波器有較好的濾波效果??梢钥闯?,輸入正弦波經(jīng)過數(shù)字化過程以后,能夠在Modelsim中還原出模擬波形.符合設(shè)計(jì)的要求,可以在QLtortusⅡ的環(huán)境下進(jìn)行硬件設(shè)計(jì)。

  2.2.5 濾波器在FPGA上的實(shí)現(xiàn)

  在 QuartusⅡ環(huán)境中,打開DSP Builder建立的QuartusⅡ項(xiàng)目文件,在QuartusⅡ中再進(jìn)行一次仿真,由此可以看到符合要求的時(shí)序波形。然后指定器件引腳,并進(jìn)行編譯,最后下載到FPGA器件中,就可以對(duì)硬件進(jìn)行測(cè)試,加上clok信號(hào)和使能信號(hào),用信號(hào)發(fā)生器產(chǎn)生所要求的兩個(gè)不同頻率的正弦信號(hào),就可以在示波器上看到濾波后的結(jié)果。需要設(shè)計(jì)不同的濾波器電路是僅修改FIR濾波器模型文件就可以實(shí)現(xiàn),這樣不僅避免了繁瑣的VHDL語言編程,而且便于進(jìn)行調(diào)整。

  3 結(jié) 語

  在利用FPGA進(jìn)行數(shù)字濾波器開發(fā)時(shí),采用DSPBuilder作為設(shè)計(jì)工具,能加快進(jìn)度。當(dāng)然,在實(shí)際應(yīng)用中,受精度、速度和器件選擇方面的影響,可能對(duì)其轉(zhuǎn)化的VHDL進(jìn)行進(jìn)一步的優(yōu)化。

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。