范寒柏,司加禎
摘 要:現場可編程門陣列(FPGA)器件廣泛用于數字信號處理領域,而使用VHDL或VerilogHDL語言進行設計的難度較大。提出一種采用DSP Builder實現FIR濾波器的設計方案,按照Matlab/Simulink/DSP Builder/Modelsim /Quartus Ⅱ的設計流程,設計一個16階的FIR低通濾波器,并完成了軟硬件的仿真與驗證。結果表明,該方法簡單易行,可滿足設計要求,它驗證了采用DSP Builder實現濾波器設計的獨特優勢。
關鍵詞:FIR 濾波器;Simulink;DSP Builder;Quartus Ⅱ
中圖分類號:TN713文獻標識碼: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數字濾波器在數字信號處理的各種應用中發揮著十分重要的作用,它能夠提供理想的線性相位響應,在整個頻帶上獲得常數群時延,從而得到零失真輸出信號,同時它可以采用十分簡單的算法予以實現。這些優點使FIR濾波器成為設計工程師的首選。在采用VHDL或VerilogHDL等硬件描述語言設計數字濾波器時,由于程序的編寫往往不能達到良好優化而使濾波器性能表現一般,而采用調試好的IP Core需要向Altera公司購買。在此,采用一種基于DSP Builder的FPGA設計方法,使FIR濾波器設計較為簡單易行,并能滿足設計要求[1]。
1 FIR濾波器介紹
1.1 FIR濾波器原理[2,3]
對于一個FIR濾波器系統,它的沖激響應總是有限長的,最具體的FIR濾波器可用下式表示[4]:
y(n)=∑Mr=1b(r)x(n-r)
式中:r是FIR濾波器的抽頭數;x(n-r)是延時r個抽頭的輸入信號;b(r)是第r級抽頭數(單位脈沖響應);M是濾波器的階數;y(n)表示濾波器的輸出序列。
濾波器就是尋求一個可實現的系統函數H(z),使其頻率響應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 設計要求
數字濾波器實際上是一個采用有限精度算法實現的線性非時變離散系統。它的設計步驟是先根據需要確定其性能指標,設計一個系統函數h(n)逼近所需要的性能指標,濾波器的系數計算可以借助Matlab強大的計算功能和現成濾波器設計工具來完成,最后采用有限的精度算法實現[5]。該系統的設計指標為:設計一個16階的低通濾波器,選模擬信號的采樣頻率Fs為5 kHz,要求信號的截止頻率Fc=1 kHz,輸入序列的位寬為9位(最寬位為符號位)。激勵源為幅值為27,頻率為800 Hz與1 600 Hz兩個信號的混頻信號。
2 基于DSP Builder設計FIR濾波器
2.1 DSP Builder介紹
DSP Builder是美國Altera公司推出的一個面向DSP開發的系統級設計工具,它在Quartus Ⅱ設計環境中集成了Matlab和Simulink DSP開發軟件。
以往使用的Matlab工具僅僅作為DSP算法的建模和基于純數學的仿真,其數學模型無法為硬件DSP應用系統直接產生實用的程序代碼,仿真測試的結果也往往是基于數學的算法結果。而以往的FPGA所需要的傳統基于硬件描述語言的設計因考慮了FPGA硬件的延時與VHDL遞歸算法的銜接,以及補碼運算和乘積結果截取等問題,所以相當繁瑣。
而對于DSP Builder而言,它作為Matlab的一個Simulink工具箱,使得用FPGA設計的DSP系統完全可以通過Simulink的圖形化界面進行建模、系統級仿真。設計模型可直接向VHDL硬件描述語言轉換,并自動調用QuartusⅡ等EDA設計軟件,完成綜合、網表生成以及器件適配乃至FPGA
的配置下載,使得系統描述與硬件實現有機地融合,充分體現了現代電子技術自動化開發的特點與優勢[6]。
2.2 FIR濾波器的設計
2.2.1 FIR濾波器參數選取
采用Matlab提供的濾波器專用設計工具FDAtool仿真設計的濾波器[7],可滿足要求的FIR濾波器幅頻特性,由于浮點小數在FPGA中實現得比較困難,且代價太大,因而需要將濾波器的系數和輸入數據轉化為整數,其中量化后的系統可以在Matlab主窗口中直接轉化,對于輸入數據,乘以28的增益用Altbus控制位寬轉化為整數輸入。
2.2.2 FIR濾波器模型的建立
根據FIR濾波器原理,可以利用FPGA來實現FIR濾波電路。DSP Builder設計流程的第一步是在Matlab/Simulink中進行設計輸入的,即在Matlab的Simulink環境中建立一個MDL模型文件,用圖形方式調用DSP Builder和其他Simulink庫中的圖形模塊,構成系統級或算法級設計框圖[6],如圖2所示。
圖2 FIR濾波器模型
2.2.3 在Simulink中的仿真并生成VHDL代碼[8]
完成模型設計之后,可以先在Simulink中對模型進行仿真,可以通過Simulink中的示波器模塊查看各個步驟的中間結果。輸入信號采用800 Hz和1 600 Hz,幅值相同的兩個正弦信號的疊加。仿真結果如圖3所示。從仿真波形可以看出,通過濾波器之后,1 600 Hz的信號能夠被很好地濾除[9]。
圖3 Simulink中的仿真波形
雙擊Signal Compiler可對以上的設計模型進行分析,選擇相應的芯片,將以上設計模塊圖文件“翻譯”成VHDL語言。
2.2.4 Modelsim的RTL仿真[10]
在Simulink中進行的仿真屬于系統驗證性質的,是對mdl文件進行的仿真,并沒有對生成的VHDL代碼進行仿真。事實上,生成VHDL描述的是RTL級的,是針對具體的硬件結構,而在Matlab的Simulink中的模型仿真是算法級的,兩者之間有可能存在軟件理解上的差異,轉化后的VHDL代碼實現可能與mdl模型描述的情況不完全相符。這就需要針對生成的RTL級VHDL代碼進行功能仿真,仿真結果如圖4所示。
圖4 Modelsim進行RTL仿真的波形
仿真結果說明,在Modelsim中仿真結果和Simulink里的仿真結果基本一致,該濾波器有較好的濾波效果??梢钥闯?輸入正弦波經過數字化過程以后,能夠在Modelsim中還原出模擬波形,符合設計的要求,可以在Quartus Ⅱ的環境下進行硬件設計[1]。
2.2.5 濾波器在FPGA上的實現[1]
在Quartus Ⅱ環境中,打開DSP Builder建立的Quartus Ⅱ項目文件,在Quartus Ⅱ中再進行一次仿真,由此可以看到符合要求的時序波形,然后指定器件引腳,并進行編譯,最后下載到FPGA器件中,就可以對硬件進行測試,加上clok信號和使能信號,用信號發生器產生所要求的兩個不同頻率的正弦信號,就可以在示波器上看到濾波后的結果。需要設計不同的濾波器電路是僅修改FIR濾波器模型文件就可以實現,這樣不僅避免了繁瑣的VHDL語言編程,而且便于進行調整。
3 結 語
在利用FPGA進行數字濾波器開發時,采用DSP Builder作為設計工具,能加快進度。當然,在實際應用中,受精度、速度和器件選擇方面的影響,可能對其轉化的VHDL進行進一步的優化。
參考文獻
[1]楊麗杰,崔葛瑾.基于FPGA的FIR濾波器設計方法的研究[J].東北大學學報,2006,32(6):93-96.
[2]程佩清.數字信號處理教程[M].北京:清華大學出版社,1995.
[3]胡廣書.數字信號處理理論、算法與實現[M].北京:清華大學出版社,2002.
[4]田東生,王鵬.基于FPGA的FIR濾波器的設計與實現[J].電子測量,2007(10):54-57.
[5]張淼,伏云昌.基于DSP Builder的14階FIR濾波器的設計[J].現代電子技術,2007,30(21):185-186.
[6]潘松,黃繼業,王國棟.現代DSP技術[M].西安:西安電子科技大學出版社,2003.
[7]張志恒,王衛芳.基于Matlab信號處理工具箱的數字濾波器設計與仿真[J].電力學報,2007,22(1):54-56.
[8]王紫婷,郭海麗.基于Matlab/Simulink的數字濾波器IP核的設計與實現[J].蘭州交通大學學報,2008,27(3):111-113.
[9]楊守良.Matlab/Simulink在FPGA設計中的應用[J].微計算機信息,2005,21(16):98-100.
[10]袁博,宋萬杰,吳順君.基于FPGA的Matlab與Quartus Ⅱ聯合設計技術研究[J].電子工程師,2007,33(1):6-8.