一種31階FIR數(shù)字濾波器的設計及實現(xiàn)
引言
嚴格上講,利用QuartusH設計可以完成FPGA硬件的所有設計,但是使用這種方法設計涉及算法類或信號處理的設計項目,工作量極大且復雜,極大地降低了工程設計的效率。鑒于此,Altera公司推出了DSPBuilder這一工具,極好地解決了這個困擾工程師的難題。DSPBuilder是一個系統(tǒng)級(或算法級)設計工具,它架構在多個軟件工具之上,利用Matlab工具和DSPBuilder可以完成圖形化的系統(tǒng)建模、大部分的設計過程和仿真。
常用的數(shù)字濾波器有無限長沖激響應型(IIR)和有限長沖激響應(FIR)型。IIR濾波器的相位具有非相位特征,不適合用于數(shù)字通行系統(tǒng)。FIR型可以采用FFT來快速實現(xiàn)濾波,且相位具有嚴格線性關系,非常適合數(shù)字通信的要求。
1基本原理
1.1數(shù)字濾波器原理
因為FIR數(shù)字濾波器具有的線性相位非常適合數(shù)字通行要求,并被大量應用于數(shù)字通行系統(tǒng),所以,本設計為FIR數(shù)字濾波器。FIR濾波器系統(tǒng)的沖擊響應是有限長的,其系統(tǒng)函數(shù)為:
其中,M是FIR數(shù)字濾波器的階數(shù),也稱為延時階數(shù)。所以,基本的FIR數(shù)字濾波器系統(tǒng)的表達式如下:
其中,h(i)是數(shù)字濾波器系數(shù);x(n)是輸入信號的采樣序列;L是數(shù)字濾波器的系數(shù)長度;y(n)是數(shù)字濾波器的輸出序列。
1.2DDS
原理幅值為1,初始相位為0,頻率為f0的正弦波表達式如下:
將正弦波周期分為M份,第n份所在的相位對應的波形幅值u(n)為:
這樣,則DDS的基本原理圖如圖1所示。
DDS的正(余)弦波形是通過查找表生成波形的,如圖1所示。正弦查找表中存儲了正弦波形M個不同相位的幅值u(n),把表數(shù)據(jù)查找一輪產生一個周期的正弦波形,相位控制字P改變的是查表的初始位置,而頻率控制字F改變的是查表的步進值,假如F=1,產生的正弦波頻率為f1,則F=k時,表明查表每隔k個位置取一次值,因此產生的正弦波頻率為kf1。
1.3Matlab/DSPBuilder設計流程
Matlab/DSPBuilder設計流程框圖如圖2所示。該流程的第一步,是在Matlab/Simulink中,使用DSPBuilder模型庫中的元素建立一個mdl模型文件,以完成系統(tǒng)級或算法級設計框圖;第二步,利用Simulink的圖形化仿真、分析功能,分析此設計的正確性;第三步,由于EDA工具軟件不能直接處理Matlab的mdl文件,需要通過Signalcompiler轉化為硬件語言(VHDL文件),因VHDL文件是基于RTL級的,故可以下載至硬件。
圖2Matlab/DSPBuilder設計流程框圖
2設計的具體實現(xiàn)
由公式(2)分析可知,濾波器輸出是不同時刻輸入的線性組合,為實現(xiàn)此邏輯需使用L位的移位寄存器和L路輸入的求和器。本設計為31階FIR數(shù)字濾波器,需使用32位的移位寄存器和32路輸入的求和器,這樣,其濾波器模型如圖3所示。
設計FIR數(shù)字濾波器的第二步是確定32路輸入的求和器中的32個系數(shù),即公式(2)中的h(i)具體方法是:打開Matlab中的FDATool(FilterDesign&AnalysisTool)工具,輸入濾波器參數(shù),本設計為中心頻率為6kHz的帶通數(shù)字濾波器,其輸入?yún)?shù)如表1所列。
點擊DesignFilter,可得到如圖4所示的濾波器;然后選擇“File->Export…”,則濾波器的系數(shù)就被存在了NUM向量中。
在Matlab命令窗口鍵入NUM,由于K*NUM與NUM設計的濾波器只有幅值差異,所以可取一適當K值使系數(shù)向量為(-100?+100)以內的數(shù),四舍五入為整數(shù),此設計K=256,所得到的濾波器系數(shù)如表2所列。然后把系數(shù)添加進濾波器模型,便可得到所設計的帶通中心頻率為6kHz的FIR數(shù)字濾波器。按照Matlab/DSPBuilder設計流程框圖,使用DSPBuilderBlockset->IO&Bus為濾波器添加Input、Output模塊,對其進行simulink仿真,正確無誤后,添加signalCompiler模塊,對濾波器模型進行編譯,生成VHDL文件。
為了驗證數(shù)字濾波器的效果,根據(jù)DDS的原理,分別
設計頻率為6kHz和12kHz的正弦波信號,接入數(shù)字濾波器,使用Simulink仿真,觀看設計效果。結果證明數(shù)字濾波器效果良好,其結果仿真圖如圖5所示。
3結語
本文以中心頻率為6kHz的帶通FIR數(shù)字濾波器為例,系統(tǒng)地介紹了Matlab和DSPBuilder工具聯(lián)合在一起完成系統(tǒng)級或算法級系統(tǒng)的設計方法和流程。使用Matlab和DSPBuilder工具設計系統(tǒng)相較于傳統(tǒng)方法,操作簡單,邏輯清晰,可以極好地實現(xiàn)系統(tǒng)的要求。
20211020_61702b4b7cf62__一種31階FIR數(shù)字濾波器的設計及實現(xiàn)