基于VerilogHDL的FIR數字濾波器設計與仿真
1、設計意圖
本文引用地址:http://dyxdggzs.com/article/267752.htm本例主要是在Stratix 器件內實(shí)現基本有限脈沖響應濾波器。
FIR 的基本結構包括一系列的乘法和加法。FIR 的運算可用式( 1) 的方程描述, 現重寫(xiě)如下:

x(n)表示輸入樣本序列, h(n)代表濾波器的系數, L 是抽頭的數量。
一個(gè)L=8 的FIR 設計如圖2, 利用了輸入的8 個(gè)樣本。因此稱(chēng)之為8 抽頭濾波器。該結構是有一個(gè)移位寄存器, 乘法器和加法器組成的, 可實(shí)現L=8 階的FIR。其數據通道必須足夠寬, 以適應乘法器和加法器的輸出。這些采樣值被編碼為有限
字長(cháng)的形式, 然后通過(guò)M個(gè)寄存器并行移動(dòng)??梢?jiàn)用一個(gè)MAC級連鏈就可以構成這種機器。每個(gè)寄存器提供一個(gè)單位樣本內延遲。這些延遲輸入與各自的系數相乘, 然后疊加得到輸出。圖2 所示為基于MAC 的8 階FIR 數字濾波器結構。

在該設計中有八個(gè)抽頭, 各抽頭有18 位輸入和濾波器系數。由于一個(gè)DSP 塊可以支持4 個(gè)18 位輸入的分支, 所以設計需要2 個(gè)DSP 塊。輸入數據串行加載到DSP 塊中, DSP 內部的移入/移出寄存器鏈用于產(chǎn)生延遲。濾波器系數從TriMatrix(tm)的ROM存儲器中加載。

2、Verilog HDL 代碼編寫(xiě)風(fēng)格
HDL 代碼編寫(xiě)應該具有很好的易讀性和可重用性, 而自頂向下的分割方法可以幫助我們達到最佳的結果。HDL 代碼在達到功能的情況下要盡可能的簡(jiǎn)潔, 盡量避免使用帶有特殊庫單元的實(shí)例, 因為這樣會(huì )使得整個(gè)進(jìn)程變得不可靠。在本設計中, 我們將設計劃分成一個(gè)頂級文件和三個(gè)次級文件, 并且調用了QuartusII 中的MegaFunction 功能輔助完成整個(gè)設計。

3、驗證仿真
完全可綜合設計的一個(gè)優(yōu)點(diǎn)就是同樣的HDL 代碼能夠用于驗證和綜合。在使用HDL 代碼之前必須要驗證設計的功能,最好且最簡(jiǎn)單的方法就是利用驗證工具, 其次是利用仿真工具作有目的的仿真。QuartusII 內部帶有仿真器, 只要通過(guò)建立正確的Vector Waveform File( 向量波形文件) 就可以開(kāi)始仿真了。圖4 所示為QuartusII 內部仿真器得到的8 階FIR 的脈沖響應波形。

3 結論
利用Verilog HDL 設計數字濾波器的最大優(yōu)點(diǎn)就是可使設計更加靈活。比較硬件電路圖設計, Verilog HDL 語(yǔ)言設計的參數可以很容易在Verilog 程序中更改, 通過(guò)綜合工具的簡(jiǎn)化和綜合即可以得到電路圖, 其效率要高出利用卡諾圖進(jìn)行人工設計許多。而且編譯過(guò)程也非常簡(jiǎn)單高效。優(yōu)秀編碼風(fēng)格能夠在綜合過(guò)程中節省芯片使用的單元, 從而降低設計成本。
評論