基于脈動(dòng)陣列的FIR濾波器設(shè)計(jì)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
有限長沖激響應(yīng)(FIR)濾波器在數(shù)字信號處理中是一種基本的處理單元。無限長單位沖激響應(yīng)(IIR)數(shù)字濾波器的優(yōu)點(diǎn)是可以利用模擬濾波器設(shè)計(jì)的結(jié)果,但其缺點(diǎn)是不具有線性相位性。圖像處理以及數(shù)據(jù)傳輸都要求信道具有線性相位特性,FIR濾波器可以做成嚴(yán)格的線性相位,避免被處理信號產(chǎn)生相位失真,還可以具有任意的幅度特性。此外,F(xiàn)IR濾波器的單位沖激響應(yīng)是有限長的,因而濾波器一定是穩(wěn)定的。
在數(shù)字濾波器的研究中,已經(jīng)提出多種FIR濾波器的設(shè)計(jì)和實(shí)現(xiàn)方法,如并行結(jié)構(gòu)、流水線結(jié)構(gòu)、分布式結(jié)構(gòu)等[1-3]。FIR濾波器計(jì)算量大,且要求實(shí)時(shí)實(shí)現(xiàn)。如何提高速度以滿足信號處理的高效性和實(shí)時(shí)性一直是人們研究的重點(diǎn)和熱點(diǎn)。脈動(dòng)陣列是一種新型的流水線結(jié)構(gòu),所有處理單元是相同且全流水的,并且有模塊化和規(guī)則化的特征,這對于硬件設(shè)計(jì)是很重要的。脈動(dòng)陣列結(jié)構(gòu)可以很好地滿足高速實(shí)時(shí)信號處理的需要,提高數(shù)據(jù)的通過率及電路的執(zhí)行速度。該結(jié)構(gòu)結(jié)合了并行結(jié)構(gòu)和流水線的優(yōu)勢,使FIR濾波器達(dá)到了更高的處理速度。
數(shù)字濾波器現(xiàn)在大多在DSP芯片上實(shí)現(xiàn)[4]。隨著集成電路技術(shù)的發(fā)展,現(xiàn)在已有多種專用DSP芯片用于實(shí)現(xiàn)濾波、FFT等運(yùn)算。另外,FPGA內(nèi)部的規(guī)整的邏輯塊陣列,很適合實(shí)現(xiàn)脈動(dòng)陣列這種高度并行的運(yùn)算。Altera公司新推出的Stratix系列FPGA內(nèi)部有豐富的邏輯陣列資源及高性能嵌入式DSP塊,能夠高效地實(shí)現(xiàn)數(shù)字信號處理功能[5]。
本文首先介紹了FIR濾波器和脈動(dòng)陣列的原理,然后設(shè)計(jì)了脈動(dòng)陣列結(jié)構(gòu)的FIR濾波器,畫出電路的結(jié)構(gòu)框圖,并進(jìn)行了時(shí)序分析,最后在FPGA上進(jìn)行驗(yàn)證。結(jié)果表明,脈動(dòng)陣列的模塊化和高度流水線的結(jié)構(gòu)使FIR濾波器在FPGA上獲得了很好的性能,比串行結(jié)構(gòu)的運(yùn)算速度更快,呵以更好地滿足數(shù)字信號處理中高效、實(shí)時(shí)的要求。
2 FIR濾波器及脈動(dòng)陣列原理
2.1 FIR濾波器原理
數(shù)字濾波器用于改變輸入信號X(n)的頻譜特性以滿足某種特定的設(shè)計(jì)要求。一個(gè)因果的數(shù)字濾波器可以用它的單位沖激響應(yīng)h(n)、傳輸函數(shù)H(z)或者差分方程來表達(dá)。其中單位沖激響應(yīng)和傳輸函數(shù)描述了系統(tǒng)的時(shí)域和頻域性質(zhì),差分方程則反映了實(shí)現(xiàn)該濾波器所需的運(yùn)算。
一個(gè)線性時(shí)不變因果濾波器可以用式(1)的差分方程描述:
如果1≤k≤N時(shí),ak=0,則:
這就是一個(gè)M階的FIR濾波器,是非遞歸運(yùn)算。
2.2 脈動(dòng)陣列
脈動(dòng)陣列結(jié)構(gòu)是1978年由Carneige-Mellon大學(xué)的H.T.Kung等人發(fā)展起來的一種專用處理器設(shè)計(jì)模型,是一種新的流水線結(jié)構(gòu),表示一種有節(jié)奏地汁算并通過系統(tǒng)傳輸數(shù)據(jù)的處理單元網(wǎng)絡(luò)。這些處理單元規(guī)則地泵入泵出數(shù)據(jù)以維持規(guī)則的數(shù)據(jù)流[6]。由于其數(shù)據(jù)運(yùn)算與傳送方式類似于心臟或脈搏有節(jié)奏地跳動(dòng),因此被稱為心動(dòng)陣列或脈動(dòng)陣列。利用脈動(dòng)陣列可設(shè)計(jì)出一系列適合數(shù)字信號處理應(yīng)用的模塊化、規(guī)則且有效的運(yùn)算結(jié)構(gòu)。脈動(dòng)陣列結(jié)構(gòu)的基本特性如下:
(1)脈動(dòng)性
數(shù)據(jù)在一個(gè)全局時(shí)鐘的精確控制下,有節(jié)奏地經(jīng)過計(jì)算和傳遞過程,最后通過網(wǎng)絡(luò)。
(2)模塊性和規(guī)則性
陣列由模塊化的處理單元組成,各處理單元之間的互連方式均勻一致,并且計(jì)算網(wǎng)絡(luò)可任意擴(kuò)大。
(3)空間局部性和時(shí)間局部性
表現(xiàn)在數(shù)據(jù)從一個(gè)計(jì)算節(jié)點(diǎn)傳遞到下一個(gè)計(jì)算節(jié)點(diǎn)至少需要一個(gè)單元時(shí)間。
(4)有效的流水線結(jié)構(gòu)
脈動(dòng)陣列免除了形成數(shù)據(jù)流所需的控制開銷。陣列內(nèi)處理單元間的局部連接方式使陣列中負(fù)載均勻、連線極短,最大限度地減小了系統(tǒng)內(nèi)部的通信延時(shí),提高了處理單元的利用率,使整個(gè)陣列的系統(tǒng)性能得到充分發(fā)揮。
脈動(dòng)結(jié)構(gòu)是將線性映射技術(shù)用于規(guī)則依賴圖上進(jìn)行設(shè)計(jì)的。依賴圖的邊表示優(yōu)先約束。脈動(dòng)陣列設(shè)計(jì)中的基本矢量有:
(1)投影矢量:
(2)處理器矢量:PT=(p1 p2)
(3)調(diào)度矢量:ST=(S1 S2)
(4)硬件利用率:HUE=1/│STd │
3 FlR濾波器的脈動(dòng)結(jié)構(gòu)設(shè)計(jì)
3.1 FIR濾波器的脈動(dòng)陣列結(jié)構(gòu)
用調(diào)度不等式選擇可行的調(diào)度矢量ST,并根據(jù)脈動(dòng)結(jié)構(gòu)的可行性限制條件選擇投影矢量d和處理器空間矢量PT,然后用線性映射技術(shù)設(shè)計(jì)脈動(dòng)列。
選擇投影矢量、處理器矢量和調(diào)度矢量如下:
于是,節(jié)點(diǎn)IT=(i,j)被處理為:
節(jié)點(diǎn)IT=(i,j)的執(zhí)行時(shí)間為:
硬件利用率:
以五階FIR濾波器為例:
FIR濾波器的脈動(dòng)結(jié)構(gòu)設(shè)計(jì)框圖如圖1所示。
其中,d0,d1,d2和d3作為延時(shí)單元,m0,m1,…,m4為固定乘數(shù)的乘法器,乘數(shù)分別為ω0,ω1,…,ω4。乘法器m0和加法器a0構(gòu)成處理器P0;乘法器m1和加法器a1構(gòu)成處理器P1;類似的,m4和a4構(gòu)成處理器P4。5個(gè)處理器同時(shí)工作,x(n)輸入后同時(shí)到達(dá)5個(gè)處理器,分別和權(quán)重ωi相乘后,經(jīng)不同的延時(shí)相加得到結(jié)果y(n)。
該設(shè)計(jì)框圖很好地體現(xiàn)了2.2節(jié)提到的脈動(dòng)陣列的4個(gè)基本特性。數(shù)據(jù)在網(wǎng)絡(luò)中有節(jié)奏的輸入、計(jì)算、傳遞并輸出。該結(jié)構(gòu)由5個(gè)相同的模塊化處理器構(gòu)成,容易擴(kuò)展,可實(shí)現(xiàn)任意階的FIR濾波器。數(shù)據(jù)的輸入、和權(quán)重的相乘、中間結(jié)果的寄存、數(shù)據(jù)的輸出各需要一個(gè)單元時(shí)問,但這幾種操作可同時(shí)進(jìn)行,不會(huì)互相干擾。該脈動(dòng)陣列結(jié)構(gòu)以高度的流水線方式運(yùn)行。
需要注意的是,在乘法器輸出的時(shí)候需要對輸出的數(shù)據(jù)進(jìn)行一位擴(kuò)展,以避免加法器的溢出問題。
3.2 時(shí)序分析
該結(jié)構(gòu)的空問時(shí)間表示如圖2所示。橫軸為時(shí)間軸,縱軸為處理器軸。圖中的每一行對應(yīng)一個(gè)處理器??梢钥吹皆跁r(shí)間軸的某一點(diǎn)上,輸入數(shù)據(jù)x(n)在同一時(shí)間劍達(dá)所有處理器,即輸入"廣播";在處理器軸的某一點(diǎn)上,權(quán)重ωi在各處理器中處于相同的空間坐標(biāo),因此權(quán)重"保持";而輸出數(shù)據(jù)y(n)在不同的空間和時(shí)間得到,所以輸出"移動(dòng)"。該FIR濾波器為輸入廣播、權(quán)重保持、輸出移動(dòng)型的脈動(dòng)陣列結(jié)構(gòu)。
借助于脈動(dòng)陣列技術(shù),輸入和輸出之間的處理可以同時(shí)進(jìn)行,因此,總的執(zhí)行時(shí)間變得最小。對該結(jié)構(gòu)進(jìn)行時(shí)序分析,如圖3所示。在第一個(gè)時(shí)鐘周期x(0)送到各處理器,和權(quán)重分別相乘后在第二個(gè)時(shí)鐘周期得到y(tǒng)(0)=ω0x(0),在此同時(shí)數(shù)據(jù)x(1)已經(jīng)輸入;第三個(gè)時(shí)鐘周期輸入x(2),在處理器P0得到ω0x(1),此時(shí)處理器P1的結(jié)果ω1x(0)經(jīng)一級延時(shí)后和P0的結(jié)果相加得到y(tǒng)(1)=ω0(1)+ω1x(O)。同理,第四個(gè)周期得到y(tǒng)(2)=ω0x(2)+ω1x(1)+ω2x(0),第五個(gè)周期得到y(tǒng)(3)=ω0x(3)+ω1x(2)+ω2x(1)+ω3x(O)…。
4 FPGA驗(yàn)證
以一個(gè)輸入輸出均為8 b的五階FIR濾波器為例,對該脈動(dòng)陣列結(jié)構(gòu)的FIR濾波器在FPGA上進(jìn)行驗(yàn)證。目標(biāo)器件選用Stratix系列器件,編譯軟件為QuartusⅡ4.2。
Stratix系列器件是Altera公司推出的新型FPGA,其內(nèi)部有豐富的嵌入式存儲器、優(yōu)化的數(shù)字信號處理(DSP)塊和高性能I/O能力。Stratix器件是設(shè)計(jì)復(fù)雜的高性能系統(tǒng)的理想選擇。StratiX器件使用DSP塊實(shí)現(xiàn)大計(jì)算量應(yīng)用所需的大數(shù)據(jù)吞吐量。DSP塊由硬件乘法器、加法器、減法器、累加器和流水線寄存器組成[6]。從圖1中可以看出,每個(gè)處理器單元由一個(gè)乘法器和一個(gè)加法器構(gòu)成,這種結(jié)構(gòu)很適合用FPGA內(nèi)部的DSP塊實(shí)現(xiàn)。
實(shí)驗(yàn)結(jié)果如表1所示。為了便于比較,使用相同的器件,還給出了串行結(jié)構(gòu)FIR濾波器的實(shí)驗(yàn)結(jié)果。在串行結(jié)構(gòu)中,每次計(jì)算1個(gè)x(n),需要3個(gè)時(shí)鐘周期。脈動(dòng)陣列結(jié)構(gòu)每次計(jì)算5個(gè)x(n),需要5個(gè)時(shí)鐘周期。每個(gè)x(n)為8 b數(shù)據(jù)。運(yùn)算速度可以由下面的公式得出:
運(yùn)算速度=(每次處理數(shù)據(jù)長度/運(yùn)算耗用的時(shí)鐘周期數(shù))×系統(tǒng)時(shí)鐘頻率
從表中可以看出,在占用邏輯單元的數(shù)量上二者基本相當(dāng),雖然串行結(jié)構(gòu)只占用了一個(gè)DSP塊,脈動(dòng)陣列結(jié)構(gòu)占用了5個(gè),但串行結(jié)構(gòu)的最高運(yùn)算速度只能達(dá)到284.93 Mb/s,脈動(dòng)陣列可以達(dá)到1 840.32 Mb/s。顯然脈動(dòng)陣列結(jié)構(gòu)更具優(yōu)勢,可以更好地滿足數(shù)字信號處理中高效、實(shí)時(shí)的要求。本文基于脈動(dòng)陣列技術(shù),設(shè)計(jì)了高效的FIR濾波器,具有模塊化和流水線的結(jié)構(gòu),并充分利用了FPGA資源,達(dá)到了較高的工作頻率。
5 結(jié) 語
FIR濾波器是數(shù)字信號處理中的一種基本運(yùn)算,有著廣泛的應(yīng)用?;诿}動(dòng)陣列結(jié)構(gòu),本文設(shè)計(jì)了高效的FIR濾波器。模塊化和高度流水線的結(jié)構(gòu)使得其在FPGA上獲得了較好的性能,完全可以滿足系統(tǒng)高效、實(shí)時(shí)處理的要求,提高了系統(tǒng)運(yùn)算速度并充分合理地利用了FPGA資源。另外,由于脈動(dòng)陣列自身的特點(diǎn),各級結(jié)構(gòu)相同,方便擴(kuò)展,可以實(shí)現(xiàn)任意階的FIR濾波器。