范寒柏,司加禎
摘 要:現(xiàn)場可編程門陣列(FPGA)器件廣泛用于數(shù)字信號處理領(lǐng)域,而使用VHDL或VerilogHDL語言進行設(shè)計的難度較大。提出一種采用DSP Builder實現(xiàn)FIR濾波器的設(shè)計方案,按照Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ的設(shè)計流程,設(shè)計一個16階的FIR低通濾波器,并完成了軟硬件的仿真與驗證。結(jié)果表明,該方法簡單易行,可滿足設(shè)計要求,它驗證了采用DSP Builder實現(xiàn)濾波器設(shè)計的獨特優(yōu)勢。
關(guān)鍵詞:FIR 濾波器;Simulink;DSP Builder;Quartus Ⅱ
中圖分類號:TN713文獻標(biāo)識碼:A
文章編號: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ù)字信號處理的各種應(yīng)用中發(fā)揮著十分重要的作用,它能夠提供理想的線性相位響應(yīng),在整個頻帶上獲得常數(shù)群時延,從而得到零失真輸出信號,同時它可以采用十分簡單的算法予以實現(xiàn)。這些優(yōu)點使FIR濾波器成為設(shè)計工程師的首選。在采用VHDL或VerilogHDL等硬件描述語言設(shè)計數(shù)字濾波器時,由于程序的編寫往往不能達到良好優(yōu)化而使濾波器性能表現(xiàn)一般,而采用調(diào)試好的IP Core需要向Altera公司購買。在此,采用一種基于DSP Builder的FPGA設(shè)計方法,使FIR濾波器設(shè)計較為簡單易行,并能滿足設(shè)計要求[1]。
1 FIR濾波器介紹
1.1 FIR濾波器原理[2,3]
對于一個FIR濾波器系統(tǒng),它的沖激響應(yīng)總是有限長的,最具體的FIR濾波器可用下式表示[4]:
y(n)=∑Mr=1b(r)x(n-r)
式中: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)=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è)計要求
數(shù)字濾波器實際上是一個采用有限精度算法實現(xiàn)的線性非時變離散系統(tǒng)。它的設(shè)計步驟是先根據(jù)需要確定其性能指標(biāo),設(shè)計一個系統(tǒng)函數(shù)h(n)逼近所需要的性能指標(biāo),濾波器的系數(shù)計算可以借助Matlab強大的計算功能和現(xiàn)成濾波器設(shè)計工具來完成,最后采用有限的精度算法實現(xiàn)[5]。該系統(tǒng)的設(shè)計指標(biāo)為:設(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是美國Altera公司推出的一個面向DSP開發(fā)的系統(tǒng)級設(shè)計工具,它在Quartus Ⅱ設(shè)計環(huán)境中集成了Matlab和Simulink DSP開發(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é)果截取等問題,所以相當(dāng)繁瑣。
而對于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)勢[6]。
2.2 FIR濾波器的設(shè)計
2.2.1 FIR濾波器參數(shù)選取
采用Matlab提供的濾波器專用設(shè)計工具FDAtool仿真設(shè)計的濾波器[7],可滿足要求的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è)計框圖[6],如圖2所示。
圖2 FIR濾波器模型
2.2.3 在Simulink中的仿真并生成VHDL代碼[8]
完成模型設(shè)計之后,可以先在Simulink中對模型進行仿真,可以通過Simulink中的示波器模塊查看各個步驟的中間結(jié)果。輸入信號采用800 Hz和1 600 Hz,幅值相同的兩個正弦信號的疊加。仿真結(jié)果如圖3所示。從仿真波形可以看出,通過濾波器之后,1 600 Hz的信號能夠被很好地濾除[9]。
圖3 Simulink中的仿真波形
雙擊Signal Compiler可對以上的設(shè)計模型進行分析,選擇相應(yīng)的芯片,將以上設(shè)計模塊圖文件“翻譯”成VHDL語言。
2.2.4 Modelsim的RTL仿真[10]
在Simulink中進行的仿真屬于系統(tǒng)驗證性質(zhì)的,是對mdl文件進行的仿真,并沒有對生成的VHDL代碼進行仿真。事實上,生成VHDL描述的是RTL級的,是針對具體的硬件結(jié)構(gòu),而在Matlab的Simulink中的模型仿真是算法級的,兩者之間有可能存在軟件理解上的差異,轉(zhuǎn)化后的VHDL代碼實現(xiàn)可能與mdl模型描述的情況不完全相符。這就需要針對生成的RTL級VHDL代碼進行功能仿真,仿真結(jié)果如圖4所示。
圖4 Modelsim進行RTL仿真的波形
仿真結(jié)果說明,在Modelsim中仿真結(jié)果和Simulink里的仿真結(jié)果基本一致,該濾波器有較好的濾波效果??梢钥闯?輸入正弦波經(jīng)過數(shù)字化過程以后,能夠在Modelsim中還原出模擬波形,符合設(shè)計的要求,可以在Quartus Ⅱ的環(huán)境下進行硬件設(shè)計[1]。
2.2.5 濾波器在FPGA上的實現(xiàn)[1]
在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ā)時,采用DSP Builder作為設(shè)計工具,能加快進度。當(dāng)然,在實際應(yīng)用中,受精度、速度和器件選擇方面的影響,可能對其轉(zhuǎn)化的VHDL進行進一步的優(yōu)化。
參考文獻
[1]楊麗杰,崔葛瑾.基于FPGA的FIR濾波器設(shè)計方法的研究[J].東北大學(xué)學(xué)報,2006,32(6):93-96.
[2]程佩清.數(shù)字信號處理教程[M].北京:清華大學(xué)出版社,1995.
[3]胡廣書.數(shù)字信號處理理論、算法與實現(xiàn)[M].北京:清華大學(xué)出版社,2002.
[4]田東生,王鵬.基于FPGA的FIR濾波器的設(shè)計與實現(xiàn)[J].電子測量,2007(10):54-57.
[5]張淼,伏云昌.基于DSP Builder的14階FIR濾波器的設(shè)計[J].現(xiàn)代電子技術(shù),2007,30(21):185-186.
[6]潘松,黃繼業(yè),王國棟.現(xiàn)代DSP技術(shù)[M].西安:西安電子科技大學(xué)出版社,2003.
[7]張志恒,王衛(wèi)芳.基于Matlab信號處理工具箱的數(shù)字濾波器設(shè)計與仿真[J].電力學(xué)報,2007,22(1):54-56.
[8]王紫婷,郭海麗.基于Matlab/Simulink的數(shù)字濾波器IP核的設(shè)計與實現(xiàn)[J].蘭州交通大學(xué)學(xué)報,2008,27(3):111-113.
[9]楊守良.Matlab/Simulink在FPGA設(shè)計中的應(yīng)用[J].微計算機信息,2005,21(16):98-100.
[10]袁博,宋萬杰,吳順君.基于FPGA的Matlab與Quartus Ⅱ聯(lián)合設(shè)計技術(shù)研究[J].電子工程師,2007,33(1):6-8.