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