王英喆,王振宇,嚴偉,時廣軼
(北京大學 軟件與微電子學院,北京 100871)
數字信號處理及相關芯片的迅速發展與數字濾波是息息相關的,長久以來,數字濾波都是研究的熱點。FIR濾波器的硬件實現方法有3種:ASIC(專用集成電路)(Application Specific Integrated Circuit)、DSP (數字信 號處理器)(digital singnal processor)以及 FPGA (現場可編程門陣列)(Field Programmable Gate Array)[1-2]。FPGA擁有全并行的處理架構,在實時信號處理、可移植的代碼等方面具有優勢[3]。文章在FPGA上實現高速全并行FIR (Finite Impulse Response),并針對FIR固定系數提出優化方案。
FIR濾波器存在N個抽頭h(n),N被稱為濾波器的階數,濾波器的輸出可以通過卷積的形式表示為[4]:

通過Z變換可以將其方便地表示為:

在某些場合,需要FIR濾波器很強的實時性[5],這要求其具有高吞吐率與處理速度。全并行結構以“資源換速度”為方法,以同時運算多個乘加為方手段,使其擁有較串行高幾倍的處理速度,進而獲得高吞吐率。
直接型結構FIR濾波器[6]如圖1所示,引入流水線技術,得到基于直接型結構的15抽頭全并行FIR濾波器硬件結構。此結構同時執行所有乘法。
用Verilog HDL語言對15階線性相位FIR進行RTL(Register TransferLeve)描述,在 Xilinx的 FPGA芯片中完成了邏輯綜合、布局布線、時序分析和硬件測試。在設計和實現過程中,采用多級流水線結構,在加法器和乘法器后面都插入相應的寄存器,以FPGA設計資源換取對信號的處理速度。
FIR設計的整體框圖如圖2所示,數據8路并行,Enable為輸入有效信號、End為輸出有效信號。具體可劃分成三大模塊,輸入數據與濾波器系數點乘模塊,分級寄存器數據緩存模塊,并行加法模塊。詳細實現過程如下:

圖1 全并行FIR濾波器結構Fig.1 The structure of fully parallel FIR

圖2 FIR整體框架圖Fig.2 The global structure of FIR
每個時鐘周期進8組數據,各個數據對點乘的結果使用規律不盡相同,將輸入數據與所有系數相乘得到的結果寄存,在不同周期分批使用。圖3為第1、3個有效數據的分級寄存器,對于第1個數據,與H0~H7點乘的結果在本時鐘周期內使用,與H8~H14點乘的結果緩存一個周期使用。第3個數據與第1個數據類似,不同的是,第3個數據與H14點乘的結果需緩沖兩個周期使用,而且本周期僅用到與H0~H5的點乘結果。同理,其余6組亦如此。

圖3 分級寄存器Fig.3 Hierarchical register
為了運行速度的最大化,加法采用全并行方式,15組數據相加,需要4個周期得到最終結果,如圖4所示。
流水線設計方法可以大幅度提高工作頻率,整個數據處理是單流向的。本設計的數據流水線結構如圖5,第一級將8組輸入數據與所有對應系數相乘,結果進入分級寄存器中待用;第二級從分級寄存器中取數,做并行加法的第一級,第三至第五級做并行加法的第二至第四級。因此有效數據到來后第5個周期輸出有效數據。

圖4 并行加法模塊Fig.4 Parallel adder module
Testbench是包含3個部分,分別是FIR設計、TB生成、數據輸出校驗。搭建的testbench如圖6所示,從文本中讀取向量i_data,經過待測濾波器處理得到結果o_data,并根據end信號將向量寫入相應文檔中,與正確結果進行比對。

圖5 FIR流水線結構Fig.5 The pipeline structure of FIR
如圖7,在i_fir_enable信號到來后,5個周期后o_fir_enable信號拉高,之后輸出一直有效,與相應matlab軟件測試結果對比一致,仿真結果正確。
得到了正確的仿真波形后,經過綜合、布局布線,能進一步得到FIR的資源利用情況,如表1。利用全并行直接乘加方法,消耗的片上資源很多,需要尋求方法來減小資源利用。
設計的FIR為固定系數濾波器,針對系數固定的特點,對此提出以下兩種改進措施。

圖6 驗證框架Fig.6 The validation diagram

圖7 仿真波形Fig.7 The simulation waveform

表1 資源利用情況Tab.1 Resource utilization
在整體結構不做調整的情況下,可以改進的地方僅有乘法器。固定系數乘法器的實現可用移位相加代替,可將資源替換成普通的LUT與FF。經改進,綜合后得到的資源利用情況如表2。
分布式算法是一種以實現乘加運算為目的的運算方法,可以用分布式算法改變FIR結構。基本FIR分布式結構如圖8,而查找表構造方法如表3[6]。設計仍為15階FIR濾波器,但將輸入數據調整為8 bit,濾波器的系數h(n)以及由這些系數演算出的ROM的初始化數據文件由MATLAB產生。實現后的資源情況如表4所示。在兩種優化方案中,分布式FIR占明顯優勢,但缺點靈活度差,如果改動數據位寬或FIR階數,則程序需做較大改動。

表2 資源利用情況(措施一)Tab.2 Resource utilization (Measure 1)

圖8 FIR分布式結構Fig.8 The distributed structure of FIR

表3 分布式結構查表方法Tab.3 The distributed structure of the look-up table method
文章首先介紹了FIR濾波器的數學原理與基本架構,實現了基于直接型的利用乘法器IP核的全并行FIR濾波器,并仿真驗證了其正確性,同時得到所消耗資源。而后,按照兩種不同的優化途徑進行優化,分別針對乘法器IP核及FIR結構進行改進,得到相應資源利用情況,并進行比較。結果,對于8輸入15階FIR選擇分布式結構能在達到高吞吐率高速率的情況下,節省更多邏輯資源。

表4 資源利用情況(措施二)Tab.4 Resource utilization (Measure 2)
[1]Albicocco P,Dep of Electron,Univ.of Rome Tor Vergata.Degrading precision arithmetics for low-power FIR implementation[J].Circuits and Systems (MWSCAS),2011,8(1):4.
[2]Mirzaei S,California Univ,Santa Barbara,Hosangadi A,Kastner R.FPGA implementation of high speed FIR filters using Add and shift method[J].Computer Design,2006,308:313.
[3]Chao Cheng,Parhi K K.Low-cost parallel FIR filter structures with 2-stage parallelism[J].Circuits and Systems I, 2007,280:290.
[4]高亞軍.基于FPGA的數字信號處理[M].電子工業出版社,2012.
[5]徐遠澤,戴立新,高曉蓉,等.FIR濾波器的FPGA實現方法[J].現代電子技術, 2010,22(2):64-70.
[6]余琳,黃光明.基于FPGA的FIR濾波器的性能的研究[J].電子設計工程,2011,19(9):125-128.