《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于子項(xiàng)空間技術(shù)的低復(fù)雜度FIR濾波器實(shí)現(xiàn)
基于子項(xiàng)空間技術(shù)的低復(fù)雜度FIR濾波器實(shí)現(xiàn)
2014年電子技術(shù)應(yīng)用第6期
徐 紅1,,葉 豐2,,黃朝耿3
1.浙江工業(yè)大學(xué) 信息工程學(xué)院,,浙江 杭州310023,; 2.杭州國芯科技股份有限公司,浙江 杭州3
摘要: 基于子項(xiàng)空間共享技術(shù),,利用硬件描述語言編程,,在FPGA上對FIR數(shù)字濾波器進(jìn)行了實(shí)現(xiàn)。該設(shè)計(jì)將常系數(shù)乘法模塊用加法和移位操作來實(shí)現(xiàn),,并利用子項(xiàng)共享有效地減少加法器個數(shù),。綜合結(jié)果表明,所提方法可以有效節(jié)省硬件資源,,降低實(shí)現(xiàn)成本,,適用于低功耗數(shù)字系統(tǒng)設(shè)計(jì)。
中圖分類號: TN713
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2014)06-0033-03
Implementation of low complexity FIR digital filters based on subexpression space
Xu Hong1,,Ye Feng2,Huang Chaogeng3
1.College of Information Engineering,,Zhejiang University of Technology,,Hangzhou 310023,China,;2.Hangzhou Nationalchip Science&Technology Co.,,Ltd.,Hangzhou 310012,,China,;3.School of Information, Zhejiang University of Finance & Economics,Hangzhou 310018,,China
Abstract: FIR filters are realized on FPGA by using hardware description language programming based on sharing common subexpression. In these techniques, the coefficient multipliers are realized as a multiplier block(MB) with shared shifters and adders,,and common subexpression sharing is used to effectively reduce the number of adders. The results of hardware synthesis show that the proposed method can efficiently save hardware resources consumption and achieve lower implementation costs,,which is in favor of low-power design of digital systems.
Key words : FIR digital filter design;subexpression space,;common subexpression sharing,;FPGA

       當(dāng)前在信息與通信領(lǐng)域,無論是為了解決能源問題還是滿足產(chǎn)品本身的需要,,如何設(shè)計(jì)低功耗通信電子產(chǎn)品已成為當(dāng)前國際上的研究熱點(diǎn)之一,。數(shù)字濾波器是各類電子系統(tǒng)中重要的組成部分,從實(shí)現(xiàn)的網(wǎng)絡(luò)結(jié)構(gòu)上可分為有限沖激響應(yīng)(FIR)濾波器和無限沖激響應(yīng)(IIR)濾波器,。對同樣的設(shè)計(jì)要求,,F(xiàn)IR濾波器通常比IIR濾波器需要更高的階數(shù),但FIR濾波器較IIR濾波器更為優(yōu)化和簡單,,且能保證絕對穩(wěn)定和線性相位,,因此在語音圖像處理、數(shù)字電視系統(tǒng)等領(lǐng)域都得到了極廣泛的應(yīng)用[1-2],。數(shù)字濾波器實(shí)質(zhì)上是一系列包括加法,、乘法和數(shù)據(jù)傳輸在內(nèi)的運(yùn)算,最終要用物理器件來實(shí)現(xiàn),。當(dāng)把這些設(shè)計(jì)好的數(shù)字濾波器用現(xiàn)場可編程門陣列(FPGA)器件來實(shí)現(xiàn)時[3],,通常用綜合后的邏輯單元LE(Logic Element)數(shù)來衡量硬件消耗。子項(xiàng)空間技術(shù)利用濾波器系數(shù)之間的子項(xiàng)共享,,可以有效減少濾波器實(shí)現(xiàn)時加法器的個數(shù)[4-8],,從而降低實(shí)現(xiàn)復(fù)雜度,節(jié)省硬件資源,。

1 子項(xiàng)空間及子項(xiàng)共享

        圖1(a)為FIR濾波器的轉(zhuǎn)置型結(jié)構(gòu),。在這種結(jié)構(gòu)中,輸入信號與濾波器的各個常系數(shù)h(k)(k=0,,1,,…,N-1)相乘并送入延時單元,,這種操作通常被稱為多常數(shù)乘法MCM(Multiple Constants Multiplication)問題[9],,可以用移位寄存器和加法器網(wǎng)絡(luò)來實(shí)現(xiàn)。因此,,加法器可以進(jìn)一步分為延遲單元的結(jié)構(gòu)加法器SA(Structural Adders)和常數(shù)乘法單元的加法器MBA(Multiplier Block Adders),,如圖1(b)所示。當(dāng)濾波器階數(shù)固定后,,延時單元和SA的數(shù)量相對固定(除非有些系數(shù)為0,,SA會有所減少),因此FIR濾波器的實(shí)現(xiàn)復(fù)雜度主要決定于MBA的個數(shù),。

        一個離散子項(xiàng)空間中的元素可以通過下式構(gòu)建[4]

        

        不論是單個系數(shù)內(nèi)部,,還是多個系數(shù)之間,,用來實(shí)現(xiàn)公共子項(xiàng)的加法器都可以共享,從而達(dá)到減少加法器個數(shù)的目的,。下面舉例說明:(1)假設(shè)某個系數(shù)用二進(jìn)制序列表示為1010101,,如果直接實(shí)現(xiàn),則需要3個加法器,,如圖2(a)所示,;如果將公共子項(xiàng)101提取出來先實(shí)現(xiàn),則只需要2個加法器,,如圖2(b)所示,。(2)假設(shè)某兩個系數(shù)用二進(jìn)制序列表示分別為100101和10101,若兩個系數(shù)獨(dú)立實(shí)現(xiàn),,則每個系數(shù)都需要2個加法器,,即總共需要4個加法器,如圖3(a)所示;而將公共子項(xiàng)101提取出來先實(shí)現(xiàn),,則每個系數(shù)只需要增加1個額外的加法器,,即總共需要3個加法器,如圖3(b)所示,。因此,,合理利用子項(xiàng)共享,可有效降低數(shù)字濾波器的硬件消耗 [4],。

2 FPGA內(nèi)部結(jié)構(gòu)及綜合特點(diǎn)

        硬件描述語言HDL(Hardware Description Language)支持行為級(Behavioral Level),、寄存器傳輸級RTL(Register Transfer Level)和門級(Gate Level)3個不同級別的設(shè)計(jì),目前普遍使用寄存器傳輸級源代碼進(jìn)行設(shè)計(jì),。綜合是把設(shè)計(jì)轉(zhuǎn)化為可制造器件的轉(zhuǎn)移過程,,而該器件能執(zhí)行預(yù)期的功能。

        FPGA是專用集成電路(ASIC)領(lǐng)域中的一種半定制電路,,應(yīng)用非常廣泛,,經(jīng)常作為高階數(shù)字濾波器的實(shí)現(xiàn)器件。Altera公司的FPGA器件一般由二維的行列結(jié)構(gòu)來實(shí)現(xiàn)用戶自定義邏輯,,內(nèi)部最小的邏輯單元LE可以高效地實(shí)現(xiàn)用戶邏輯函數(shù)[10],。一個LE主要由一個4輸入查找表、一個寄存器及進(jìn)位和互連邏輯組成,。查找表簡稱為LUT,,LUT本質(zhì)上是一個RAM,。當(dāng)用戶通過原理圖或HDL語言描述了一個邏輯電路后,,F(xiàn)PGA開發(fā)軟件會自動計(jì)算邏輯電路所有可能的結(jié)果,并把結(jié)果事先寫入RAM,,這樣每輸入一個信號進(jìn)行邏輯運(yùn)算就等于輸入一個地址進(jìn)行查表,,找出地址所對應(yīng)的內(nèi)容后輸出即可,。也可以把LE當(dāng)作一個4輸入的函數(shù)發(fā)生器,能夠?qū)崿F(xiàn)4變量輸入的所有邏輯[10],。由于RTL級設(shè)計(jì)不涉及具體的工藝,,不同的綜合工具、不同的器件類型可能會產(chǎn)生不同的綜合結(jié)果,,即所需要的LE數(shù)量會有差異,。因此,在同一種綜合工具,、同一種器件類型的前提下對不同的實(shí)現(xiàn)方法進(jìn)行比較,。

3 基于Verilog HDL的RTL級實(shí)現(xiàn)

        Verilog HDL是目前廣泛使用的IEEE標(biāo)準(zhǔn)硬件描述語言,可以用不同的工具進(jìn)行綜合和驗(yàn)證,。本文基于子項(xiàng)空間共享技術(shù),,采用Verilog HDL進(jìn)行FIR數(shù)字濾波器的RTL級描述。下面舉例介紹具體的實(shí)現(xiàn)方法,。以參考文獻(xiàn)[4]中的較低階濾波器S1為例,,下面給出濾波器S1的系數(shù),其中,,h(n)=h(24-n),,13≤n≤24;通帶增益為485.268 2,。

        h(12)=3×26-1×20,;h(11)=5×25-1×24;h(10)=3×24,;

        h(9)=-3×23,;h(8)=-1×25;h(7)=-3×20,;h(6)=1×24,;

        h(5)=5×21;h(4)=-1×22,;h(3)=-1×23,;h(2)=-1×21

        h(1)=3×20,;h(0)=1×21,。

        由上可知,S1對應(yīng)基組為{3,,5},,此基組的階數(shù)等于2,即產(chǎn)生基組需要2個加法器,由基組產(chǎn)生濾波器系數(shù)需要2個加法器,,因此,,MBA的個數(shù)為4,系數(shù)都不為零,;SA的個數(shù)為24,。

        (1)子項(xiàng)基組的產(chǎn)生

        assign x3={x_n,1'b0}+ x_n,;               //x_n為輸入信號

        assign x5={x_n,,2'b00}+x_n;

       (2)MBA的實(shí)現(xiàn)

        利用已經(jīng)產(chǎn)生的基組,,參照S1的系數(shù),,就可以得到MBA部分各常系數(shù)乘法的值,部分程序段如下:

        assign MBA12={x3,6'b000000}-x_n,; //實(shí)現(xiàn)h[12]×x_n

        ……

        assign MBA0 = {x_n,1'b0},;                  //實(shí)現(xiàn)h[0]×x_n

        (3)延時單元和SA的實(shí)現(xiàn)

        例S1中不存在值為0的系數(shù),且考慮到線性相位FIR濾波器系數(shù)對稱,,因此程序段如下:

        Delay_SA0 <= MBA0,;

        Delay_SA1 <= Delay_SA0 + MBA1;

        &hellip;&hellip;

        Delay_SA11 <= Delay_SA10 + MBA11,;

        Delay_SA12 <= Delay_SA11 + MBA12,;

        Delay_SA13 <= Delay_SA12 + MBA11;

        &hellip;&hellip;

        Delay_SA23 <= Delay_SA22 + MBA1,;

        Delay_SA24<= Delay_SA23 + MBA0,;

        (4)輸出的實(shí)現(xiàn)

        考慮到S1的系數(shù)在有限字長實(shí)現(xiàn)時單位脈沖響應(yīng)乘以512(=29)倍,因此在輸出時要進(jìn)行截短處理,,即去掉低9位,。

4 綜合結(jié)果

        本節(jié)將選取參考文獻(xiàn)[4]中的4個例子分別在FPGA上進(jìn)行綜合比較。4個例子的性能指標(biāo)如表1所示,。

        參考文獻(xiàn)[4]中基于子項(xiàng)共享進(jìn)行系數(shù)離散化得到的結(jié)果如表2所示,,具體的濾波器系數(shù)參見參考文獻(xiàn)[4]。

        如前所述,,F(xiàn)PGA實(shí)現(xiàn)硬件資源的消耗可以通過綜合后LE的數(shù)量來衡量,。分別選擇Cyclone系列的EP1-

C12Q240C8和APEX20KE系列的 EP20K600EBC652-3兩種型號的FPGA對4個濾波器兩種不同的實(shí)現(xiàn)方法(子項(xiàng)共享實(shí)現(xiàn)和直接實(shí)現(xiàn))進(jìn)行綜合,綜合工具選用Quartus II,,結(jié)果如表3所示,。

        從表3可以看出,基于子項(xiàng)共享的實(shí)現(xiàn)可以有效減少FPGA中LE的消耗數(shù)量,,且濾波器階數(shù)越高,,共享的機(jī)會越大,,效果越好。

        本文通過Verilog HDL編程在FPGA上實(shí)現(xiàn)了子項(xiàng)共享的FIR數(shù)字濾波器設(shè)計(jì),。子項(xiàng)空間共享技術(shù)可以有效地減少FIR濾波器實(shí)現(xiàn)時加法器的個數(shù),從而使得綜合后消耗的LE數(shù)量明顯減少,,有利于數(shù)字系統(tǒng)的低成本,、低功耗設(shè)計(jì),具有實(shí)際的應(yīng)用意義,。

參考文獻(xiàn)

[1] 唐博,,李錦明,李士照.基于FPGA的高階FIR濾波器強(qiáng)抗干擾數(shù)據(jù)采集系統(tǒng)[J].電子技術(shù)應(yīng)用,,2012,,38(9):89-92.

[2] 林志典,張方佩,,袁國順.基于FPGA的高速FIR濾波器的設(shè)計(jì)與實(shí)現(xiàn)[J].微電子學(xué),,2013,43(4):200-202.

[3] 惠鵬飛,,姚仲敏,,夏穎,等.基于FPGA的無線傳感網(wǎng)絡(luò)信道波形整形濾波器[J].電子技術(shù)應(yīng)用,,2013,,39(7):35-37.

[4] YU Y J,LIM Y C.Design of linear phase FIR filters in subexpression space using mixed integer linear programming[J].IEEE Trans.Circuits Syst.I,,2007,,54(10):2330-2338.

[5] YU Y J,LIM Y C.Optimization of linear phase FIR filters in dynamically expanding subexpression space[J].Circuit Syst.Signal Process.,,2010,,29(1):65-80.

[6] SHI D,YU Y J.Design of linear phase FIR filters with high probability of achieving minimum number of adders[J].IEEE Trans.Circuits Syst.I,,2011,,58(1):126-136.

[7] POTKONJAK M,SHRIVASTA M B,,CHANDRAKASAN A  P.Multiple constant multiplication:Efficient and versatile framework and algorithms for exploring common subexpression elimination[J].IEEE Trans.Comput.Aided,,1996,15(2):151-165.

[8] Xu Fei,,CHANG C H,,JONG C C.Design of low-complexity FIR filters based on signed-powers-of-two coefficients with reusable common subexpressions[J].IEEE Trans.Comput.Aided,2007,,26(10):1898-1907.

[9] WANG Y,,ROY K.CSDC:A new complexity reduction technique for multiplierless implementation of FIR filters[J].IEEE Trans.Circuits Sysm.I,2005,52(9):1845-1853.

[10] Altera公司.Cyclone2系列器件數(shù)據(jù)手冊:Cyclone device handbook,,volume 1[Z].2007.

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載。