優(yōu)化FIR數(shù)字濾波器的FPGA實(shí)現(xiàn)
摘要:基于提高速度和減少面積的理念,對(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)場可編程門陣列(Field Programmable Gate Array,FPGA)可并行執(zhí)行的特點(diǎn)決定它更加廣泛地應(yīng)用于實(shí)時(shí)數(shù)字信號(hào)處理領(lǐng)域。不能想象今天的生活如果沒有音頻;視頻和言語交際的樣子,而這些都要應(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ù)來決定。這種方法使用硬件資源相對(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ù)。如下:
2 優(yōu)化FIR濾波器在FPGA中的實(shí)現(xiàn)結(jié)構(gòu)
2.1 FIR濾波器的基本算法原理
本文采用濾波器實(shí)現(xiàn)的基本的串行乘累加結(jié)構(gòu)。FIR濾波器的差分方程可表示為:
式中:t為濾波器的階數(shù)。
其直接運(yùn)算結(jié)構(gòu)如圖1所示。
從公式(1)中可知FIR濾波器在硬件上的設(shè)計(jì)主要是完成乘累加功能,實(shí)現(xiàn)的一種方法是直接相乘累加。在實(shí)際應(yīng)用中,當(dāng)濾波器設(shè)計(jì)對(duì)濾波速度要求不高時(shí),可采用串行結(jié)構(gòu)或改進(jìn)串行結(jié)構(gòu)來實(shí)現(xiàn),這樣可以選取資源較少的器件,降低設(shè)計(jì)成本;當(dāng)對(duì)濾波速度有較高要求時(shí),可以考慮采用并行或DA來實(shí)現(xiàn)。但要進(jìn)行FIR運(yùn)算,尤其在階數(shù)較高時(shí),幾乎無法在FPGA內(nèi)實(shí)現(xiàn)并行結(jié)構(gòu),所以這里采用串行運(yùn)算的結(jié)構(gòu),僅使用一個(gè)乘加器。所以本文的設(shè)計(jì)著重于提高串行結(jié)構(gòu)FIR的速度。下面將介紹一種高速的Booth算法乘法器和高速的加法器。
評(píng)論