基于FPGA+MATLAB的串行多階FIR濾波器設計
時序控制單元是設計的核心部分。AFCLK作為整個FIR濾波器系統(tǒng)的啟動信號,此模塊檢測到AFCLK上升沿到來時會進行以下幾個步驟的處理:(1)首先啟動WEN寫使能信號把當前DIN寫入緩存中,寫地址WRADDER累加一次。(2)然后啟動讀地址計數器RDADDER開始進行1 024次計數,同時把信號緩存和系數ROM中的數據送到乘加器中做1 024乘加運算,RST的作用是在第一個有效數據到來時進行累加器清零,RST_EN的作用是在完成1 024次運算時,準確地把結果鎖存到輸出端口,如圖6所示。
本文引用地址:http://www.bjwjmy.cn/article/236081.htm?

?
因為語音信號數據位寬是16位,經過1 024次乘加,和濾波器系數是32位整型量化處理的所有最終結果要做必要的量化處理,以得到正確的結果。
?

?
經過編譯綜合后,發(fā)現占用邏輯單元158,僅占EP3C5邏輯單元的3%,RAM單元約占12%,9位乘法器4個,如圖7所示,效果理想。
4 FPGA數字濾波器功能仿真驗證
QuartusII不支持Testbench,采用*.vwf文件進行仿真需要手工輸入激勵,人工檢查輸出結果,此程序反饋,且效率較低。由于Quartus II的工程文件都是文本文件,所有的數據都以文件形式存儲,所以可以編寫文本過濾程序,將文本文件中的有用數據提取出來,然后進行后期處理,既提高了靈活性,又提高了效率。
QuartusII支持*.vwf、*.vec等激勵輸入,由于*.vec的文本操作性優(yōu)于*.vwf文件,所以文中選擇*.vec文件作為激勵輸入。使用Matlab產生8 000 Hz速率800 Hz,1000 Hz,1 300 Hz共3種頻率的混合信號的仿真樣本序列,帶入到QuartusII中進行仿真,產生的仿真文件再導出到Matlab中進行顯示,結果如圖8所示。
?

?
由圖中可以看出,經過FPGA濾波過后,800 Hz和1 300 Hz的信號都被濾波器濾除,僅有1 000 Hz信號保留。
5 結束語
通過設計實例,介紹了高速串行多階FIR濾波器的設計思路和流程。仿真結果說明,FPGA在FIR數字濾波器實現方面相比通用和專用DSP芯片具有更靈活的使用方法,可以做到速度和邏輯資源占用方面的均衡。
濾波器相關文章:濾波器原理
fpga相關文章:fpga是什么
濾波器相關文章:濾波器原理
電源濾波器相關文章:電源濾波器原理
數字濾波器相關文章:數字濾波器原理
評論