《電子技術(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)化;并且當數(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)用中,,當濾波器設(shè)計對濾波速度要求不高時,可采用串行結(jié)構(gòu)或改進串行結(jié)構(gòu)來實現(xiàn),,這樣可以選取資源較少的器件,,降低設(shè)計成本;當對濾波速度有較高要求時,,可以考慮采用并行或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ù)的兩個位,,依照當前與前一位的不同,執(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)勢,。但當多個數(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)載,。