范寒柏,司加禎
摘 要:現(xiàn)場(chǎng)可編程門陣列(FPGA)器件廣泛用于數(shù)字信號(hào)處理領(lǐng)域,而使用VHDL或VerilogHDL語言進(jìn)行設(shè)計(jì)的難度較大。提出一種采用DSP Builder實(shí)現(xiàn)FIR濾波器的設(shè)計(jì)方案,按照Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ的設(shè)計(jì)流程,設(shè)計(jì)一個(gè)16階的FIR低通濾波器,并完成了軟硬件的仿真與驗(yàn)證。結(jié)果表明,該方法簡(jiǎn)單易行,可滿足設(shè)計(jì)要求,它驗(yàn)證了采用DSP Builder實(shí)現(xiàn)濾波器設(shè)計(jì)的獨(dú)特優(yōu)勢(shì)。
關(guān)鍵詞:FIR 濾波器;Simulink;DSP Builder;Quartus Ⅱ
中圖分類號(hào):TN713文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1004-373X(2009)20-193-03
Design of 16-taps FIR Filter Based on DSP Builder
FAN Hanbai,SI Jiazhen
(North China Electric Power University,Baoding,071003,China)
Abstract:Field Programmable Gate Array(FPGA)devices is widely used in the field of digital signal processing,it is difficult to design using VHDL or VerilogHDL.A model development technology of DSP Builder is adopted to design FIR filter,according to the flow of Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ,a 16-taps low-pass FIR filter is designed,which is simulated and verified in the digital signal process circuit,the results show that the method is simple,feasible and the advantage of designing digital filter by the use of DSP builder are verified.
Keywords:FIR filter;Simulink;DSP Builder;Quartus Ⅱ
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需要向Altera公司購(gòu)買。在此,采用一種基于DSP Builder的FPGA設(shè)計(jì)方法,使FIR濾波器設(shè)計(jì)較為簡(jiǎn)單易行,并能滿足設(shè)計(jì)要求[1]。
1 FIR濾波器介紹
1.1 FIR濾波器原理[2,3]
對(duì)于一個(gè)FIR濾波器系統(tǒng),它的沖激響應(yīng)總是有限長(zhǎng)的,最具體的FIR濾波器可用下式表示[4]:
y(n)=∑Mr=1b(r)x(n-r)
式中: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)=x(n)*h(n)
典型的直接I型FIR濾波器如圖1表示,其輸出序列y(n)滿足下式[5]:
y(n)=h(0)x(n)+h(1)x(n-1)+
h(2)x(n-2)+…+h(15)x(n-15)
圖1 直接I型FIR濾波器
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)[5]。該系統(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ó)Altera公司推出的一個(gè)面向DSP開發(fā)的系統(tǒng)級(jí)設(shè)計(jì)工具,它在Quartus Ⅱ設(shè)計(jì)環(huán)境中集成了Matlab和Simulink DSP開發(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ì)[6]。
2.2 FIR濾波器的設(shè)計(jì)
2.2.1 FIR濾波器參數(shù)選取
采用Matlab提供的濾波器專用設(shè)計(jì)工具FDAtool仿真設(shè)計(jì)的濾波器[7],可滿足要求的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ì)框圖[6],如圖2所示。
圖2 FIR濾波器模型
2.2.3 在Simulink中的仿真并生成VHDL代碼[8]
完成模型設(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)能夠被很好地濾除[9]。
圖3 Simulink中的仿真波形
雙擊Signal Compiler可對(duì)以上的設(shè)計(jì)模型進(jìn)行分析,選擇相應(yīng)的芯片,將以上設(shè)計(jì)模塊圖文件“翻譯”成VHDL語言。
2.2.4 Modelsim的RTL仿真[10]
在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所示。
圖4 Modelsim進(jìn)行RTL仿真的波形
仿真結(jié)果說明,在Modelsim中仿真結(jié)果和Simulink里的仿真結(jié)果基本一致,該濾波器有較好的濾波效果??梢钥闯?輸入正弦波經(jīng)過數(shù)字化過程以后,能夠在Modelsim中還原出模擬波形,符合設(shè)計(jì)的要求,可以在Quartus Ⅱ的環(huán)境下進(jìn)行硬件設(shè)計(jì)[1]。
2.2.5 濾波器在FPGA上的實(shí)現(xiàn)[1]
在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í),采用DSP Builder作為設(shè)計(jì)工具,能加快進(jìn)度。當(dāng)然,在實(shí)際應(yīng)用中,受精度、速度和器件選擇方面的影響,可能對(duì)其轉(zhuǎn)化的VHDL進(jìn)行進(jìn)一步的優(yōu)化。
參考文獻(xiàn)
[1]楊麗杰,崔葛瑾.基于FPGA的FIR濾波器設(shè)計(jì)方法的研究[J].東北大學(xué)學(xué)報(bào),2006,32(6):93-96.
[2]程佩清.數(shù)字信號(hào)處理教程[M].北京:清華大學(xué)出版社,1995.
[3]胡廣書.數(shù)字信號(hào)處理理論、算法與實(shí)現(xiàn)[M].北京:清華大學(xué)出版社,2002.
[4]田東生,王鵬.基于FPGA的FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)[J].電子測(cè)量,2007(10):54-57.
[5]張淼,伏云昌.基于DSP Builder的14階FIR濾波器的設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2007,30(21):185-186.
[6]潘松,黃繼業(yè),王國(guó)棟.現(xiàn)代DSP技術(shù)[M].西安:西安電子科技大學(xué)出版社,2003.
[7]張志恒,王衛(wèi)芳.基于Matlab信號(hào)處理工具箱的數(shù)字濾波器設(shè)計(jì)與仿真[J].電力學(xué)報(bào),2007,22(1):54-56.
[8]王紫婷,郭海麗.基于Matlab/Simulink的數(shù)字濾波器IP核的設(shè)計(jì)與實(shí)現(xiàn)[J].蘭州交通大學(xué)學(xué)報(bào),2008,27(3):111-113.
[9]楊守良.Matlab/Simulink在FPGA設(shè)計(jì)中的應(yīng)用[J].微計(jì)算機(jī)信息,2005,21(16):98-100.
[10]袁博,宋萬杰,吳順君.基于FPGA的Matlab與Quartus Ⅱ聯(lián)合設(shè)計(jì)技術(shù)研究[J].電子工程師,2007,33(1):6-8.