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