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

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

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

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

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

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

c.JPG


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

d.JPG

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

e.JPG


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

f.JPG


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

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



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

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