基于FPGA+MATLAB的串行多階FIR濾波器設(shè)計(jì)
摘要 FIR濾波器的設(shè)計(jì)分為濾波器系數(shù)計(jì)算和濾波器結(jié)構(gòu)的具體兩個部分。為說明使用FPGA實(shí)現(xiàn)FIR的靈活性,文中列舉了一個多階串行FIR濾波器實(shí)例,并給出主要的源代碼和相關(guān)模塊的時序和功能說明,最后使用Matlab和Quartusii聯(lián)合仿真驗(yàn)證了FPGA硬濾波器工程的正確性。
本文引用地址:http://www.biyoush.com/article/236081.htm關(guān)鍵詞 FPGA;FIR數(shù)字濾波器;Matlab;仿真
數(shù)字濾波器是用于過濾時間離散信號的數(shù)字系統(tǒng),通過對抽樣數(shù)據(jù)進(jìn)行數(shù)學(xué)處理達(dá)到頻域?yàn)V波的目的。根據(jù)單位沖激響應(yīng)函數(shù)的時域特性可分為兩類:無限沖激響應(yīng)(Infinite Impulse Response,IIR)濾波器和有限沖激響應(yīng)(Finite Inpulse Response,F(xiàn)IR)濾波器。與IIR濾波器相比,F(xiàn)IR濾波器的實(shí)現(xiàn)是非遞歸的,較穩(wěn)定;且FIR濾波器可獲得嚴(yán)格的線性相位特性。因此,應(yīng)用領(lǐng)域較廣。
FIR濾波器具有成熟的結(jié)構(gòu),使用Matlab強(qiáng)大的功能使得本來繁重的計(jì)算工作變得輕松。在具體應(yīng)用時,要根據(jù)工程當(dāng)中信號的特點(diǎn):采樣速率、信號帶寬等具體使用Matlab得到FIR濾波器系數(shù)。濾波器的結(jié)構(gòu)實(shí)現(xiàn)可以使用PC軟件、單片機(jī)、微處理器、FPGA、通用DSP芯片。其需根據(jù)信號特性選擇。文中主要使用FPGA實(shí)現(xiàn)高速時鐘下的串行FIR濾波器結(jié)構(gòu),達(dá)到速度和邏輯資源情況下的最佳均衡。
1 FIR的特點(diǎn)
有限長單位沖激響應(yīng)(FIR)濾波器的特點(diǎn):(1)系統(tǒng)的單位沖激響應(yīng)h(n)在有限個n值處不為零。(2)系統(tǒng)函數(shù)H(z)在|z|>0處收斂,極點(diǎn)全部在z=0處。(3)結(jié)構(gòu)上主要是非遞歸結(jié)構(gòu),沒有輸出到輸入的反饋,但有些結(jié)構(gòu)中也包含有反饋的遞歸部分。
設(shè)FIR濾波器的單位沖激響應(yīng)h(n)為一個N點(diǎn)序列,0≤n≤N-1,則濾波器的系統(tǒng)函數(shù)為
?

?
即有N-1階極點(diǎn)在z=0處,有N-1個零點(diǎn)位于有限z平面的任何位置。
2 使用MatIab Fdatool設(shè)計(jì)FIR濾波器
FDATool(Fliter Design & Analysis Tool)是Matlab信號處理工具箱專用的濾波器設(shè)計(jì)分析工具,操作簡單、靈活,可采用多種方法設(shè)計(jì)FIR和IIR濾波器。在Matlab命令窗口輸入FDATool后回車就會彈出FDATool界面。
帶通濾波器設(shè)計(jì)已知濾波器的階數(shù)n=1 024,beta=3.4。首先在Fiher Ttype中選擇Bandpass;在Design Method選項(xiàng)中選擇FIRWindow,接著在Window選項(xiàng)中選取Blackman—Harris;指定Filter Order項(xiàng)中的Specify Order為1 024;采樣頻率Fs=8 000 Hz,截止頻率Fc1=900 Hz,F(xiàn)c2=1 200 Hz。設(shè)置完以后點(diǎn)擊窗口下方的Design Filter,在窗口上方就會看到所設(shè)計(jì)濾波器的幅頻響應(yīng),通過菜單選項(xiàng)Analysis還可看到濾波器的相頻響應(yīng)、組延遲、脈沖響應(yīng)、階躍響應(yīng)、零極點(diǎn)配置等,如圖1所示。
?

?
這樣選擇File菜單當(dāng)中的Export導(dǎo)出濾波器系數(shù)到文件中。因?yàn)榈玫较禂?shù)是浮點(diǎn)數(shù),為適合在FPGA中使用,要編寫一個M文件對系數(shù)進(jìn)行整型量化處理并在此文件當(dāng)中生成FPGA能夠使用的.mif表格文件。
3 FPGA設(shè)計(jì)和仿真驗(yàn)證
當(dāng)已知濾波器系數(shù),信號速率為8 kHz,周期125μs。根據(jù)FIR濾波器的結(jié)構(gòu)可知,只要在125μs之內(nèi)完成1 024次乘加運(yùn)算,那么就可達(dá)到對8 kHz速率的語音信號的有效濾波。文中使用QuartusII9.1開發(fā)平臺,F(xiàn)PGA芯片選用EP3C5E144C8,主時鐘25 MHz,周期40 ns進(jìn)行1 024次運(yùn)算,耗時40.96 μs<<125μs。
首先新建在QuartusII中新建一個工程FIR1024,然后使用原理圖和VHDL混合的方式設(shè)計(jì)出以下FPGA程序。把fircoef.mif表格文件代入到系數(shù)ROM存儲器中。
輸入管腳:CLK主時鐘25 MHz;DIN[15..0]語音數(shù)據(jù)輸入;AFCLK數(shù)據(jù)速率時鐘8 kHz;信號數(shù)據(jù)1 024點(diǎn)緩存RAM和濾波器系數(shù)ROM。
?

?
?

?
?

濾波器相關(guān)文章:濾波器原理
fpga相關(guān)文章:fpga是什么
濾波器相關(guān)文章:濾波器原理
電源濾波器相關(guān)文章:電源濾波器原理
數(shù)字濾波器相關(guān)文章:數(shù)字濾波器原理
評論