《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 優(yōu)化FIR數(shù)字濾波器的FPGA實(shí)現(xiàn)
優(yōu)化FIR數(shù)字濾波器的FPGA實(shí)現(xiàn)
現(xiàn)代電子技術(shù)
鄒興宇,,程樹英 福州大學(xué)
摘要: 本文以FIR在FPGA中的實(shí)現(xiàn)結(jié)構(gòu)為基礎(chǔ),研究了提高乘法器性能的途徑,,并實(shí)現(xiàn)了Booth算法的乘法器,,此算法保證高速的前提下,,縮小了硬件規(guī)模,使得該乘法器的設(shè)計(jì)適合工程應(yīng)用及科學(xué)計(jì)算,,在加法器實(shí)現(xiàn)上提出了一種結(jié)合了CSA加法器和樹型結(jié)構(gòu)的新型實(shí)現(xiàn)結(jié)構(gòu),。利用以上兩部分,成功設(shè)計(jì)了一個(gè)16階FIR濾波器,,并且達(dá)到了高速的目的,,但在實(shí)現(xiàn)面積上還有待優(yōu)化,。
關(guān)鍵詞: FPGA 數(shù)字濾波器 FIR Matlab
Abstract:
Key words :

摘要:基于提高速度和減少面積的理念,對(duì)傳統(tǒng)的FIR數(shù)字濾波器進(jìn)行改良,??紤]到FPGA的實(shí)現(xiàn)特點(diǎn),研究并設(shè)計(jì)了采用Radix-2的Booth算法乘法器以及結(jié)合了CSA加法器和樹型結(jié)構(gòu)的快速加法器,,并成功應(yīng)用于FIR數(shù)字濾波器的設(shè)計(jì)中,。濾波器的系數(shù)由Matlab設(shè)計(jì)產(chǎn)生。仿真和綜合結(jié)果表明,,Booth算法乘法器和CSA算法加法器樹,,在滿足FIR數(shù)字濾波器的性能要求的同時(shí),在電路實(shí)現(xiàn)面積上,、尤其是速度上有明顯的優(yōu)化,;并且當(dāng)數(shù)據(jù)量越多時(shí),優(yōu)化也越明顯,。
關(guān)鍵詞:Matlab,;Booth算法;CSA算法,;ISE

    研究數(shù)字濾波器的意義就在于它們正日益成為一種主要的DSP(DigitaI Signal Processing)運(yùn)算,,并正在逐漸代替?zhèn)鹘y(tǒng)的模擬濾波器。它可以保證任意幅頻特性的同時(shí)具有嚴(yán)格的線性相頻特性,。而現(xiàn)場(chǎng)可編程門陣列(Field Programmable Gate Array,,F(xiàn)PGA)可并行執(zhí)行的特點(diǎn)決定它更加廣泛地應(yīng)用于實(shí)時(shí)數(shù)字信號(hào)處理領(lǐng)域。不能想象今天的生活如果沒有音頻,;視頻和言語(yǔ)交際的樣子,,而這些都要應(yīng)用數(shù)字信號(hào)處理技術(shù)。并且在任何時(shí)候,,高性能,,低規(guī)模,低成本都是設(shè)計(jì)的目標(biāo),。濾波器(Finite Impulse Response,,F(xiàn)IR)的實(shí)現(xiàn)方法有很多種,最常見的有串行結(jié)構(gòu)和并行結(jié)構(gòu)方法,。前者根據(jù)FIR濾波器的實(shí)現(xiàn)表達(dá)式,,將濾波器實(shí)質(zhì)看作是做一個(gè)乘累加運(yùn)算。一次乘累加運(yùn)算的次數(shù)由濾波器的階數(shù)來(lái)決定,。這種方法使用硬件資源相對(duì)較少,,但速度較慢。并行結(jié)構(gòu)的方法,將濾波器的串行實(shí)現(xiàn)展開,,就可以直接用多個(gè)乘法器和加法器并行實(shí)現(xiàn),,其可以在一個(gè)時(shí)鐘周期內(nèi)完成一次濾波,但要占用大量的乘累加器,,器件延遲比較大,。目前為了滿足面積和速度的需要,人們通常采用Booth算法,、CSD算法,,分布式算法等技術(shù)對(duì)FIR設(shè)計(jì)進(jìn)行優(yōu)化,優(yōu)化效果各有利弊,。本文針對(duì)串行結(jié)構(gòu)對(duì)乘累加運(yùn)算的乘和加分
別進(jìn)行優(yōu)化設(shè)計(jì),。分析了提高乘法器速度的途徑;針對(duì)多數(shù)據(jù)量的運(yùn)算,,提出了一種新型的快速加法器的解決方案,。體現(xiàn)了優(yōu)化設(shè)計(jì)中提高速度和減小面積的設(shè)計(jì)理念。同時(shí)給出并實(shí)現(xiàn)了一個(gè)16階FIR的設(shè)計(jì)實(shí)例,。

1 用Matlab設(shè)計(jì)濾波器系數(shù)
    利用Matlab軟件的FDATool模塊,,選擇濾波器類型為低通FIR,設(shè)計(jì)方法為窗口法,,階數(shù)為16,,窗口類型為Kaiser,,數(shù)據(jù)采樣頻率fs為4.8 kHz,,濾波器的截止頻率fc為1.08 kHz,導(dǎo)出的濾波器系數(shù)為16個(gè)15位的小數(shù),。將每一個(gè)系數(shù)擴(kuò)大相同的倍數(shù),,最后四舍五人得到一系列整數(shù)系數(shù)。如下:
a.JPG

2 優(yōu)化FIR濾波器在FPGA中的實(shí)現(xiàn)結(jié)構(gòu)
2.1 FIR濾波器的基本算法原理
    本文采用濾波器實(shí)現(xiàn)的基本的串行乘累加結(jié)構(gòu),。FIR濾波器的差分方程可表示為:
    b.JPG
    式中:t為濾波器的階數(shù),。

    其直接運(yùn)算結(jié)構(gòu)如圖1所示。

c.JPG


    從公式(1)中可知FIR濾波器在硬件上的設(shè)計(jì)主要是完成乘累加功能,,實(shí)現(xiàn)的一種方法是直接相乘累加,。在實(shí)際應(yīng)用中,當(dāng)濾波器設(shè)計(jì)對(duì)濾波速度要求不高時(shí),,可采用串行結(jié)構(gòu)或改進(jìn)串行結(jié)構(gòu)來(lái)實(shí)現(xiàn),,這樣可以選取資源較少的器件,降低設(shè)計(jì)成本,;當(dāng)對(duì)濾波速度有較高要求時(shí),,可以考慮采用并行或DA來(lái)實(shí)現(xiàn)。但要進(jìn)行FIR運(yùn)算,尤其在階數(shù)較高時(shí),,幾乎無(wú)法在FPGA內(nèi)實(shí)現(xiàn)并行結(jié)構(gòu),,所以這里采用串行運(yùn)算的結(jié)構(gòu),僅使用一個(gè)乘加器,。所以本文的設(shè)計(jì)著重于提高串行結(jié)構(gòu)FIR的速度,。下面將介紹一種高速的Booth算法乘法器和高速的加法器。
2.2 乘法器設(shè)計(jì)
    乘法器是數(shù)字信號(hào)處理電路中最常用的單元,,20年前就已經(jīng)研究的非常成熟,。高性能乘法器是實(shí)現(xiàn)高性能的FIR運(yùn)算的關(guān)鍵,乘法器的運(yùn)算過程可以分解為部分積的產(chǎn)生和部分積的相加2個(gè)步驟,。部分積的產(chǎn)生非常簡(jiǎn)單,,實(shí)現(xiàn)速度較快;而部分積相加的過程是多個(gè)二進(jìn)制數(shù)的相加,,實(shí)現(xiàn)速度通常較慢,。解決乘法器速度問題,需要減小部分積的個(gè)數(shù),、提高部分積相加運(yùn)算的速度,。在乘法器設(shè)計(jì)上這里著重研究能夠減少部分積的Booth算法。
    Booth算法乘法器可以減少乘法運(yùn)算部分積個(gè)數(shù),,提高乘法運(yùn)算的速度,。本文討論Radix-2的Booth算法,其基本算法思想是,,一次看乘數(shù)的兩個(gè)位,,依照當(dāng)前與前一位的不同,執(zhí)行不同的操作,??偨Y(jié)出Radix-2 Booth算法的編碼規(guī)則如表1所示。

d.JPG

2.3 累加器設(shè)計(jì)
    對(duì)于乘累加運(yùn)算的加法,,傳統(tǒng)的算法將使多個(gè)乘法器的結(jié)果逐一累加,,效率低、運(yùn)算時(shí)延大,。本文提出了一種結(jié)合了CSA算法加法器和樹型結(jié)構(gòu)的新型加法器結(jié)構(gòu),,對(duì)乘法器的結(jié)果一次性相加。
    圖2為6個(gè)數(shù)相加的實(shí)例,。如果不用其他加法器的話,,6個(gè)數(shù)據(jù)的相加將耗去5個(gè)加法器,其關(guān)鍵路徑總共經(jīng)過三級(jí)的加法電路延遲,,有必要對(duì)電路的面積和延遲進(jìn)行改進(jìn),。因此在多個(gè)數(shù)據(jù)相加的情況下,,CSA(Carry Save Adder)加法器是很好的選擇。
    CSA加法器仍然保留原有的全加器架構(gòu),,一個(gè)n-bit的CSA器件如圖3所示,。

e.JPG


    如果只有個(gè)數(shù)不多的數(shù)據(jù)相加時(shí),采用CSA器件不管是在電路面積和時(shí)序特性上都沒有優(yōu)勢(shì),。但當(dāng)多個(gè)數(shù)據(jù)相加時(shí),,CSA加法器就能在電路面積和時(shí)序特性上體現(xiàn)出它的優(yōu)越性。樹型加法器結(jié)構(gòu)的關(guān)鍵特性在于利用不規(guī)則的樹形結(jié)構(gòu)對(duì)所有的準(zhǔn)備好輸入數(shù)據(jù)的運(yùn)算及時(shí)并行處理,,大大節(jié)省了計(jì)算延時(shí),,尤其是在多個(gè)數(shù)相加的情況下;缺點(diǎn)是其邏輯結(jié)構(gòu)形式不規(guī)整,,在VLSI設(shè)計(jì)中對(duì)布局布線的影響較大,。本文用CSA加法器為單元組成樹型結(jié)構(gòu),設(shè)計(jì)出一種如圖4所示的快速加法器結(jié)構(gòu),。由CSA加法器樹組成的樹型加法器中調(diào)用5個(gè)CSA加法器和一個(gè)普通加法器,。R(0)~R(15)為前一級(jí)乘法器的16個(gè)輸出。在整個(gè)加法過程中,,CSA加法器在電路實(shí)現(xiàn)上本身就具備快速,、面積小的特點(diǎn),再加上樹型結(jié)構(gòu)的特點(diǎn),,使整個(gè)加法器在實(shí)現(xiàn)速度上進(jìn)一步提升,。同時(shí)整個(gè)加法過程能夠滿足最嚴(yán)格的時(shí)序要求,因?yàn)镃SA電路只在最后的時(shí)間內(nèi)執(zhí)行進(jìn)位加法,,也就是由構(gòu)成樹的最后一級(jí)的Normal Adder(進(jìn)位加法器)執(zhí)行進(jìn)位加法,。通常在大部分的應(yīng)用上會(huì)有一段足夠的時(shí)間允許執(zhí)行進(jìn)位加法的時(shí)間延遲。

f.JPG


2.4 FIR在FPGA中的實(shí)現(xiàn)結(jié)構(gòu)
    本文設(shè)計(jì)的FIR在FPGA中的實(shí)現(xiàn)結(jié)構(gòu)如圖5所示,,除了必須的乘法器和加法器外,,還需要一個(gè)寬度為15、深度為16的濾波器系數(shù)存儲(chǔ)器(ROM)和一個(gè)寬度為30,、深度為16的乘結(jié)果存儲(chǔ)器(RAM)。分別由相應(yīng)的計(jì)數(shù)器控制模塊控制,,配合計(jì)數(shù)的值,,執(zhí)行相應(yīng)的動(dòng)作。針對(duì)輸入的數(shù)據(jù)提取相應(yīng)的濾波器參數(shù),,送入乘法器相乘,,每得到一個(gè)結(jié)果送入下一級(jí)RAM中存儲(chǔ)起來(lái),最后統(tǒng)一送入加法器,,一次性執(zhí)行加運(yùn)算并輸出,,最后得到濾波的結(jié)果,。其中乘法器和加法器處理的都為符號(hào)數(shù)。

3 16階FIR的設(shè)計(jì)及仿真結(jié)果
    設(shè)計(jì)一個(gè)16階的15位FIR濾波器,。設(shè)計(jì)語(yǔ)言使用Verilog,。設(shè)計(jì)工具使用Xilinx ISE平臺(tái)。FIR的輸入和系數(shù)都為15位有符號(hào)數(shù),,乘法器的位數(shù)為30位,,經(jīng)加法器后得到的濾波器輸出為38位有符號(hào)數(shù)。編寫testbench對(duì)設(shè)計(jì)進(jìn)行邏輯仿真,,隨機(jī)選取16個(gè)輸入數(shù)據(jù),。配合前面有量化后的濾波器系數(shù),即可進(jìn)行行為級(jí)仿真,。圖6中,,rst為復(fù)位信號(hào),clk為系統(tǒng)時(shí)鐘信號(hào),,din為輸入數(shù)據(jù),,coe為濾波器系數(shù),dout為輸出信號(hào),,control為輸出同步信號(hào),。由仿真結(jié)果看出最終濾波器的輸出結(jié)果和預(yù)期的結(jié)果相一致。同時(shí)利用ISE自帶的綜合器SXT進(jìn)行綜合,,器件選用Xilinx公司的3s400pq208—4,。綜合報(bào)告顯示,濾波器最大的頻率可達(dá)到143.328 MHz,,達(dá)到高速目的,。報(bào)告顯現(xiàn)資源的使用相對(duì)較大,沒有預(yù)期的理想,。從RTL電路分析出在CSA構(gòu)成的加法器樹部分在面積上的優(yōu)化還不夠明顯,,這個(gè)問題將在以后的研究中進(jìn)一步解決。



4 結(jié)語(yǔ)
    本文以FIR在FPGA中的實(shí)現(xiàn)結(jié)構(gòu)為基礎(chǔ),,研究了提高乘法器性能的途徑,,并實(shí)現(xiàn)了Booth算法的乘法器,此算法保證高速的前提下,,縮小了硬件規(guī)模,,使得該乘法器的設(shè)計(jì)適合工程應(yīng)用及科學(xué)計(jì)算,在加法器實(shí)現(xiàn)上提出了一種結(jié)合了CSA加法器和樹型結(jié)構(gòu)的新型實(shí)現(xiàn)結(jié)構(gòu),。利用以上兩部分,,成功設(shè)計(jì)了一個(gè)16階FIR濾波器,并且達(dá)到了高速的目的,,但在實(shí)現(xiàn)面積上還有待優(yōu)化,。

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