基于Matlab和FPGA的FIR數字濾波器設計及實現
移位相加單元時序仿真:仿真結果如圖5所示,輸入一個階躍信號(8191),從圖5中可以看出,輸出數據從D_out_a到D_out_p依次有一個時鐘周期的時延,并且總的時延和濾波器階數(32)相等,最后輸出數據是16 382=8 191*2,和理論計算值相同。
4.2 與濾波器系數相乘
數據首尾相加輸出后與濾波器系數h(n)相乘,由于FIR濾波器的結構是對稱的,因而只需16個乘法器即可。乘法器直接調用QuartusⅡ里面的參數化元件庫,系數的位寬設為18。關鍵Verilog語句如下:
以上為一個乘法器設置方法,16個乘法器的整體模塊圖如圖6所示。
為了便于仿真測試,乘法器單元一開始只設置了4個輸入。其中h(0)=100,h(1)=200,h(2)=300,h(3)=400,a,b,c,d為4個輸入數據,與h(n)相乘后對應輸出分別為R_a,R_b,R_c和R_d。這樣設計不失一般性,仿真無誤后再擴充到16個即可。仿真結果如圖7所示。
4.3 乘法器輸出結果相加
16路數據相加后位數被擴為33+4=37,另外要在其輸出端加一寄存器,以消除毛刺。此模塊原理圖如圖8所示。
相加輸出模塊仿真:實際用到的是16輸入的加法器,為便于仿真測試.輸入先設為4路,仿真結果如圖9所示。
4.4 截位輸出
評論