田莎莎,喻 成,汪 紅
(中南民族大學(xué)計(jì)算機(jī)科學(xué)學(xué)院,武漢430074)
在圖像處理、數(shù)據(jù)傳輸、雷達(dá)接收等現(xiàn)代信號(hào)處理領(lǐng)域,對(duì)信號(hào)處理的穩(wěn)定性、實(shí)時(shí)性和靈活性都有很高的要求.有限沖激響應(yīng)(FIR)數(shù)字濾波器因其線性相位特性滿足了現(xiàn)代信號(hào)處理領(lǐng)域?qū)V波器的高性能要求,成為應(yīng)用最廣泛的數(shù)字濾波器之一.高密度的現(xiàn)場(chǎng)可編程門陳列(FPGA)兼顧實(shí)時(shí)性和靈活性,為FIR數(shù)字濾波器的實(shí)現(xiàn)提供了強(qiáng)大的硬件支持[1,2].
用FPGA器件實(shí)現(xiàn)FIR數(shù)字濾波器硬件電路通常有2種實(shí)現(xiàn)方法:基于CSD編碼的實(shí)現(xiàn)方法(簡(jiǎn)稱為:CSD實(shí)現(xiàn)方法)和基于DA的實(shí)現(xiàn)方法(簡(jiǎn)稱為:DA實(shí)現(xiàn)方法).用FPGA設(shè)計(jì)的FIR數(shù)字濾波器占用芯片面積的多少與濾波器系數(shù)有關(guān),而針對(duì)不同濾波器系數(shù)分布情況,CSD和DA實(shí)現(xiàn)方法各有優(yōu)缺點(diǎn),為此本文提出了一種改進(jìn)的實(shí)現(xiàn)方法:基于CSD-DA的改進(jìn)實(shí)現(xiàn)方法(簡(jiǎn)稱為:CSD-DA實(shí)現(xiàn)方法).仿真實(shí)驗(yàn)證明CSD-DA實(shí)現(xiàn)方法在一般情況下較前兩種實(shí)現(xiàn)方法更加節(jié)約芯片面積.
FIR數(shù)字濾波器的差分方程表達(dá)式[3]為:

式(1)中,n表示第n個(gè)單位時(shí)間(例如:0表示當(dāng)前時(shí)間,1表示第1個(gè)單位時(shí)間),N表示濾波器的階數(shù),h(m)表示第m個(gè)濾波器系數(shù)(共有N個(gè)濾波器系數(shù),由于性能確定的FIR數(shù)字濾波器對(duì)應(yīng)確定的一組系數(shù),所以h(m)為一組常數(shù)),x(n-m)表示第n-m個(gè)單位時(shí)間的采樣輸入,y(n)表示第n個(gè)單位時(shí)間的濾波器輸出.
令h(n)表示第n個(gè)濾波器系數(shù),x(n)表示第n個(gè)時(shí)間之前的采樣輸入,y表示當(dāng)前時(shí)間的濾波器輸出,式(1)可變?yōu)?

由于線性相位的FIR數(shù)字濾波器滿足濾波系數(shù)的對(duì)稱性[3,4],因此當(dāng)N為偶數(shù)時(shí),式(2) 可以表示為:

由式(3)可知,輸入采樣值x(n)和x(N-1-n)先進(jìn)行相加再與對(duì)稱系數(shù)相乘,若設(shè)d(n)=x(n)+x(N-1-n),則式(3)可表示為:

當(dāng)N為奇數(shù)時(shí),式(2)可以表示為:

對(duì)式(5),當(dāng)0≤n<(N-1)/2,設(shè)d(n)=x(n)+x(N-1-n);當(dāng)n=(N-1)/2時(shí),如果設(shè)

將式(4),式(6) 統(tǒng)一為[5]:

在式(7)中,當(dāng)濾波器階數(shù)N為偶數(shù)時(shí),s=N/2;N為奇數(shù)時(shí),s=(N+1)/2.
對(duì)于FIR濾波運(yùn)算中x(n)的延時(shí)操作和d(n)=x(n)+x(N-1-n)的加法操作,其運(yùn)算速度是由輸入序列的采樣頻率決定的,芯片占用面積是由濾波器的階數(shù)決定的,很難進(jìn)行優(yōu)化,但式(7)中的“乘積和模塊”卻有很大的優(yōu)化空間.根據(jù)式(7),可畫出FIR數(shù)字濾波器的“乘積和模塊”電路框圖,如圖1所示.

圖1 “乘積和模塊”電路框圖Fig.1 “Summing aftermultipling”circuit scheme chart
CSD編碼是數(shù)字信號(hào)處理中設(shè)計(jì)常系數(shù)乘法器時(shí)常用的一種編碼方式.最佳CSD編碼算法可以描述為[1]:

表1 8位二進(jìn)制整數(shù)對(duì)應(yīng)的C值Tab.1 Corresponding C of8 bit binary integer
2)從最高有效位開始,用011代替10
CSD實(shí)現(xiàn)方法是將圖1中h(n)的數(shù)值部分用CSD編碼表示,在乘積項(xiàng)求和時(shí)再將系數(shù)的符號(hào)考慮進(jìn)去.h(n)的CSD編碼中1和的個(gè)數(shù)減去1即為此常系數(shù)乘法所需加法器的數(shù)目.從表1[1]可以查到8位二進(jìn)制整數(shù)作為常數(shù)因子時(shí)用移位-加法器實(shí)現(xiàn)常系數(shù)乘法時(shí)所需的加法器個(gè)數(shù)C.例如h(n)為255時(shí),其CSD編碼為1000000,從表1中可以查到所需加法器數(shù)目C為1,255·d(n)的運(yùn)算是將d(n)左移8位后再和d(n)相加減.
FPGA內(nèi)部大量的查找表(Look-up Tables,LUT)資源結(jié)合DA可以巧妙地實(shí)現(xiàn)FIR數(shù)字濾波器中的“乘積和模塊”.DA算法是將式(2)變換為式(8)的形式[1],式(8)中xb(n)表示第n個(gè)數(shù)據(jù)的第b位,因?yàn)閔(n)已知,所以可利用查找表通過查表方法實(shí)現(xiàn)f(h(n),xb(n)),再通過相應(yīng)的二次冪加權(quán)并累加得到y(tǒng):

設(shè)計(jì)FIR數(shù)字濾波器時(shí),要減少對(duì)FPGA芯片面積的占用,降低硬件成本,就要減小LUT的規(guī)模,國(guó)內(nèi)外的相關(guān)文獻(xiàn)提出了多種方法.有些采用OBC編碼方式,有些采用多路選擇器來減小查找表規(guī)模.文獻(xiàn)[6]則論證了表分割方法較其它方法在減小查找表規(guī)模上性能更優(yōu).表分割是將一個(gè)大的查找表分成多個(gè)小的查找表.假設(shè)將一個(gè)N輸入的大查找表分割成R個(gè)小查找表,R個(gè)小查找表的輸入個(gè)數(shù)分別為N1,N2,…,NR,其中N=N1+N2+…+NR,則式(2)可變?yōu)?

令X(n)=h(n)x(n),假設(shè)X(n)共有B位二進(jìn)制位,由式(9)可得表分割DA算法的電路原理框圖,見圖2.

圖2 表分割電路原理框圖Fig.2 Principle scheme chart of cutting table circuit
文獻(xiàn)[6]提出了用表分割的DA算法實(shí)現(xiàn)FIR數(shù)字濾波器的思想,文獻(xiàn)[7]提出了CSD實(shí)現(xiàn)方法實(shí)現(xiàn)FIR數(shù)字濾波器中的常系數(shù)乘法器的思想,文獻(xiàn)[8]把CSD和DA實(shí)現(xiàn)方法實(shí)現(xiàn)FIR數(shù)字濾波器的占用硬件資源情況進(jìn)行了對(duì)比,得到了這樣的結(jié)論:從資源利用的角度來講,在一般情況下,CSD實(shí)現(xiàn)方法占用資源較少,但是最壞情況下還是DA算法占用芯片面積少.通過這些文獻(xiàn)可以得到這樣的結(jié)論:DA和CSD實(shí)現(xiàn)方法實(shí)現(xiàn)FIR數(shù)字濾波器時(shí)在占用硬件資源方面各有優(yōu)缺點(diǎn).
由于DA實(shí)現(xiàn)方法設(shè)計(jì)的FIR數(shù)字濾波器,其運(yùn)算速度只與輸入采樣值的位數(shù)有關(guān),與濾波器階數(shù)無關(guān),其運(yùn)算速度不會(huì)隨著濾波器階數(shù)的增加而降低.另外查找表的HDL語言程序可以借助可執(zhí)行程序快速生成,且更改設(shè)計(jì)簡(jiǎn)單.而CSD實(shí)現(xiàn)方法在設(shè)計(jì)多個(gè)不同的乘法器時(shí),實(shí)現(xiàn)方法較為復(fù)雜.所以當(dāng)占用硬件資源幾乎一樣的情況下,用DA實(shí)現(xiàn)方法較CSD實(shí)現(xiàn)方法設(shè)計(jì)FIR數(shù)字濾波器簡(jiǎn)單方便[1].
為了將CSD與DA實(shí)現(xiàn)方法進(jìn)行更好的比較,在FPGA芯片Cyclone EPEC6Q240C8上進(jìn)行了一組實(shí)驗(yàn).表2給出了實(shí)驗(yàn)中CSD和DA實(shí)現(xiàn)方法實(shí)現(xiàn)的幾個(gè)典型系數(shù)FIR數(shù)字濾波器所需的邏輯元件(Logic element,LE)數(shù)目,一個(gè)LE包括一個(gè)LUT和一個(gè)D觸發(fā)器.
表2的實(shí)驗(yàn)結(jié)果表明2種實(shí)現(xiàn)方法各有優(yōu)劣.在濾波器系數(shù)對(duì)應(yīng)的C值為0或1時(shí)CSD實(shí)現(xiàn)方法優(yōu)勢(shì)明顯;濾波器系數(shù)對(duì)應(yīng)的C值為3或4時(shí)DA實(shí)現(xiàn)方法優(yōu)勢(shì)明顯;濾波器系數(shù)對(duì)應(yīng)C值都為2時(shí)二者差別不大,但由于DA實(shí)現(xiàn)方法較為簡(jiǎn)單,此時(shí)DA實(shí)現(xiàn)方法更有優(yōu)勢(shì).
根據(jù)上面的實(shí)驗(yàn)結(jié)果與理論分析,可以總結(jié)出改進(jìn)的CSD-DA實(shí)現(xiàn)方法:將圖1中的“乘積和模塊”分成2個(gè)子模塊,一個(gè)子模塊用CSD實(shí)現(xiàn)方法實(shí)現(xiàn)系數(shù)對(duì)應(yīng)的C值為0,1的“乘積和”,另一個(gè)子模塊用DA實(shí)現(xiàn)方法實(shí)現(xiàn)系數(shù)對(duì)應(yīng)的C值為2,3,4時(shí)的“乘積和”,最后將2個(gè)子模塊的結(jié)果相加.

表2 DA與CSD實(shí)現(xiàn)方法占用LE比較Tab.2 LE occupation comparison between DA and CSD implementation method
為了驗(yàn)證CSD-DA實(shí)現(xiàn)方法在一定情況下較DA和CSD實(shí)現(xiàn)方法優(yōu)越,在Cyclone EPEC6Q240C8芯片上實(shí)現(xiàn)了多個(gè)FIR數(shù)字濾波器,并從中選取了4個(gè)FIR濾波器占用的LE數(shù)目和濾波系數(shù)對(duì)應(yīng)的C值列于表3.從表3的實(shí)驗(yàn)結(jié)果可以看出:當(dāng)濾波器各系數(shù)對(duì)應(yīng)的C值幾乎都是0,1時(shí)CSD實(shí)現(xiàn)方法最優(yōu);當(dāng)濾波器各系數(shù)對(duì)應(yīng)的C值大部分都是2,3,4時(shí)DA實(shí)現(xiàn)方法最優(yōu);其余情況CSD-DA實(shí)現(xiàn)方法最優(yōu).而在一般情況下,濾波器各系數(shù)對(duì)應(yīng)的C值比較分散,不會(huì)都集中在0、1或2、3、4,所以在一般情況下CSD-DA實(shí)現(xiàn)方法較DA和CSD實(shí)現(xiàn)方法占用的芯片面積少.

表3 3種實(shí)現(xiàn)方法實(shí)現(xiàn)4個(gè)實(shí)例的實(shí)驗(yàn)結(jié)果Tab.3 Experimental results of four examples by using three implementation methods
為了系統(tǒng)的驗(yàn)證CSD-DA實(shí)現(xiàn)方法,本文用CSD-DA實(shí)現(xiàn)方法在Cyclone EPEC6Q240C8芯片和音頻編解碼芯片TLV320AIC23B上成功實(shí)現(xiàn)了一個(gè)可以濾除音頻信號(hào)中高頻噪聲的FIR數(shù)字低通濾波器[9,10],如圖 3 為此 FIR 濾波器的 Quartus2 仿真時(shí)序圖,圖4為MATLAB軟件計(jì)算濾波輸出的結(jié)果,比較兩圖可知結(jié)果完全一致,因此濾波器的硬件設(shè)計(jì)是成功的.

圖3 FIR低通濾波器時(shí)序仿真圖Fig.3 Timing simulation chart of the FIR low-pass filter

圖4 FIR低通濾波器MATLAB計(jì)算結(jié)果Fig.4 MATLAB calculation results of the FIR low-pass filter
FIR數(shù)字濾波器是數(shù)字信號(hào)處理電路中的重要部件,本文提出的CSD-DA實(shí)現(xiàn)方法豐富了FIR數(shù)字濾波器的設(shè)計(jì)方案體系.在一般情況下這種改進(jìn)的實(shí)現(xiàn)方法比現(xiàn)今常用的CSD和DA實(shí)現(xiàn)方法更加節(jié)約芯片面積.仿真實(shí)驗(yàn)結(jié)果表明CSD-DA實(shí)現(xiàn)方法實(shí)現(xiàn)的FIR數(shù)字濾波器性能良好,節(jié)省硬件資源,能滿足實(shí)際數(shù)字系統(tǒng)的需要.
[1]Uwe M B.數(shù)字信號(hào)處理的FPGA實(shí)現(xiàn)[M].劉 凌,譯.北京:清華大學(xué)出版社,2006:1-123.
[2]王文濤,王 建,朱順安.基于FPGA的女書文字切割技術(shù)的設(shè)計(jì)與應(yīng)用[J].中南民族大學(xué)學(xué)報(bào):自然科學(xué)版,2011,30(1):96-100.
[3]程佩青.數(shù)字信號(hào)處理教程[M].北京:清華大學(xué)出版社,2001:202-226,334-388.
[4]Tsao Y C,Choi K.Area-efficient parallel FIR digital filter structures for symmetric convolution based on fast FIR algorithm[J].IEEE Transaction on VLSI Systems,2010(99):1-5.
[5]Chen He,Xiong Chenghuan,Zhong Shunan.FPGA-based efficient programmable polyphase FIR Filter[J].Journal of Beijing Institute of Technology,2005,14(1):4-8.
[6]Meher P K,Chandrasekaran S,Amira A.FPGA realization of FIR filters by efficient and flexible systemization using distributed arithmetic[J].IEEE Transactions on Signal Processing,2008,56(7):3009-3017.
[7]李 京,沈 泊.一種低功耗常系數(shù)乘法器的設(shè)計(jì)[J].計(jì)算機(jī)工程與應(yīng)用,2005,41(30):99-101.
[8]朱 霞,柴志雷,須文波.基于CSD編碼的FIR數(shù)字濾波器優(yōu)化設(shè)計(jì)[J].計(jì)算機(jī)工程與設(shè)計(jì),2009,30(2):271-274.
[9]王 誠(chéng),吳繼華,范麗珍,等.Altera FPGA/CPLD設(shè)計(jì)基礎(chǔ)篇[M].北京:人民郵電出版社,2005:1-170.
[10]王 誠(chéng),吳繼華,范麗珍,等.Altera FPGA/CPLD設(shè)計(jì)高級(jí)篇[M].北京:人民郵電出版社,2005:1-96.