- 相關推薦
基于FPGA流水線分布式算法的FIR濾波器的實現
摘要:提出了一種采用現場可編碼門陣列器件(FPGA)并利用窗函數法實現線性FIR數字濾波器的設計方案,并以一個十六階低通FIR數字濾波器電路的實現為例說明了利用Xilinx公司的Virtex-E系列芯片的設計過程。對于在FPGA中實現FIR濾波器的關鍵——乘加運算,給出了將乘加運算轉化為查找表的分布式算法。設計的電路通過軟件進行了驗證并進行了硬件仿真,結果表明:電路工作正確可靠,能滿足設計要求。隨著數字技術日益廣泛的應用,以現場可編程門陣列(FPGA)為代表的ASIC器件得到了迅速普及和發展,器件集成度和速度都在高速長。FPGA既具有門陣列的高邏輯密度和高可靠性,又具有可編碼邏輯器件的用戶可編程特性,可以減少系統設計和維護的風險,降低產品成本,縮短設計周期。
分布式算法是一種以實現乘加運算為目的的運算方法。它與傳統算法實現乘加運算的不同在于執行部分積運算的先后順序不同。簡單地說,分布式算法在完成乘加功能時是通過將各輸入數據每一對應位產生的部分積預先進相加形成相應部分積,然后在對各部門積進行累加形成最終結果,而傳統算法是等到所有乘積產生之后再進行相加來完成乘加運算的。與傳統算法相比,分布式算法可極大地減少硬件電路規模,很容易實現流水線處理,提高電路的執行速度。
FPGA有著規整的內部邏輯塊陣列和豐富的連線資源,特別適合細粒度和高并行度結構特點的數字信號處理任務,如FIR、FFT等。本文詳細討論利用FPGA實現FIR濾波器的設計過程,并且對設計中的關鍵技術——分布式算法進行詳細描述。
1 FIR和分布式算法
1.1 FIR的基本概念
FIR濾波器的數學表達式為:
式中,N是FIR濾波器的抽頭數,x(n)表示第n時刻的輸入樣本;h(i)是FIR濾波器的第i級抽頭系數。
普通的直接型FIR濾波器結構如圖1所示。
FIR濾波器實質上是一個分節的延遲線,把每一節的輸出加權累加,便得到濾波器的輸出。對于FIR濾波器,幅度上只需滿足以下兩個條件之一,就能構成線性相位FIR濾波器。
h(n)=h(N-1-n) (2)
h(n)=-h(N-1-n) (3)
式(2)稱為第一類線性相位的幅度條件(偶對稱),式(3)稱為第二類線性相位的幅度條件(奇對稱)。
1.2 FIR濾波器的優化
在實際應用中,為了減少邏輯資源的占有量和提高系統的運行速度,對FIR濾波器需要進行優化處理。本文采用的優化主要有兩種:一種是對表達式進行優化,另一種是在FPGA實現中利用特有的查找表進行優化。
1.2.1 表達式的直接優化
對于線性相位因果FIR濾波器,它的系列具有中心對稱特性,即h(i)=±h(N-1-i)。令s(i)=x(i) ±x(N-1-i),對于偶對稱,代入式(1)可得:
根據方程(4),線性相位FIR濾波器的直接型結構可以改為如圖2所示的結構,從而使N次乘法減少為[N/2]次,加法次數增加了[N/2]次(N為偶數),總的運算量減少。
1.2.2 利用查找表進行設計優化
由于實現的是固定系數的FIR濾波器,所以可以用利用簡化的過程(如查找表)減少設計所耗用的器件資源。
以一個8階FIR濾波器為例來說明在FPGA實現中優化的過程。假定濾波器的輸入為2bit的正整數,由(4)可以得到輸出為:
y(n)=s(0)h(0) s(1)h(1) s(2)h(2) s(3)h(3) (5)
這時的乘法和加法就可以并行地采用查找表實現,其結構示意圖如圖3所示。
在圖3中,右面4個信號是輸入的低位bit,左邊是輸入信號的高位bit。低位和P1最多使用4bit,由于系數固定,查找表實現起來很方便;高位和P2可按同樣方法計算。在該結構中,部門積P1和P2可以利用Virtex-E的4輸入查找表實現,所有的計算都可并行完成。由于輸入為2bit,因此只用了一個加法器;對于更多位數的輸入來說,將需要更多的加法器。這樣就實現了將乘法器轉化為回法器,減少了解邏輯資源,優化了設計。
1.3 分布式算法
分布式算法在20多年前被首次提出,但直到Xilinx發明FPGA的查找表結構以后,分布式算法才在20世紀90年代初重新受到重視,并被有效地應用在FIR濾波器的設計中。下面介紹分布式算法的原理。
式(1)可以用下式表示:
【基于FPGA流水線分布式算法的FIR濾波器的實現】相關文章:
基于FPGA實現FIR濾波器的研究03-18
基于流水線技術的并行高效FIR濾波器設計03-18
基于Cyclone系列FPGA的1024點FFT算法的實現03-07
基于頻罩法的FIR濾波器的設計03-07
基于TMS320VC5416的FIR數字濾波器設計與實現03-07
基于MATLAB的FIR數字濾波器設計03-07
基于FPGA的HDLC通信模塊的實現05-14
3-DES算法的FPGA高速實現03-20