FIR濾波器的FPGA實(shí)現(xiàn)方法
2.3 轉(zhuǎn)置型結(jié)構(gòu)
根據(jù)轉(zhuǎn)置定理,如果將網(wǎng)絡(luò)中所有的支路方向倒轉(zhuǎn),并將輸入x(n)和輸出y(n)相互交換,則其系統(tǒng)函數(shù)H(z)不變。通過(guò)轉(zhuǎn)置定理,將并行結(jié)構(gòu)的FIR濾波器變換就可以得到轉(zhuǎn)置型FIR濾波器,其結(jié)構(gòu)如圖4所示。本文引用地址:http://www.ex-cimer.com/article/191366.htm
基于并行結(jié)構(gòu)的轉(zhuǎn)置型FIR濾波器實(shí)現(xiàn)了數(shù)據(jù)的并行輸入,在1個(gè)周期內(nèi)就能完成1次濾波,并且各級(jí)結(jié)構(gòu)相同,在每個(gè)階段都可以讀出數(shù)據(jù),可以對(duì)濾波階數(shù)進(jìn)行擴(kuò)展或者縮減,實(shí)現(xiàn)任意階數(shù)的濾波器。但是由于基于的是并行結(jié)構(gòu),便有著并行結(jié)構(gòu)的一些缺點(diǎn),主要是對(duì)于高階的濾波器,其資源占用量是巨大的,設(shè)計(jì)成本高。雖然這樣,轉(zhuǎn)置型FIR濾波器仍是應(yīng)用廣泛的一種濾波器。
2.4 基于FFT的結(jié)構(gòu)
應(yīng)用快速傅里葉變換(fast fourier transform,F(xiàn)FT)實(shí)現(xiàn)FIR濾波器是一種快速實(shí)現(xiàn)濾波算法的重要途徑。由式(1)可知,F(xiàn)IR濾波器的輸出y(n)是輸入x(n)與系統(tǒng)沖擊響應(yīng)序列h(n)的卷積,應(yīng)用FFT可以快速實(shí)現(xiàn)卷積變換。如圖5所示,先將輸入信號(hào)x(n)通過(guò)FFT變換為它的頻譜采樣值X(k),然后再與FIR濾波器的頻響采樣值H(k)相乘,H(k)可事先存放在存儲(chǔ)器中,最后再將乘積X(k)H(k)通過(guò)快速傅里葉反變換(IF-FT)還原為時(shí)域序列,即得到輸出y(n)。
為實(shí)現(xiàn)FFT,根據(jù)兩有限長(zhǎng)序列的線性卷積可用其循環(huán)卷積代替而不發(fā)生混疊,必須選擇循環(huán)卷積長(zhǎng)度N≥N1+N2-1,即將x(n)和h(n)補(bǔ)零至長(zhǎng)度為N的序列,即:
在基于FFT的FIR濾波器結(jié)構(gòu)中,求X(k),H(k)以及反傅里葉變換y(n)需要的乘法次數(shù)均為N/2log2N,而計(jì)算X(k)H(k)需要N次乘法,所以基于FFT的總乘法次數(shù)為mf=3/2Nlog2N+N。由于h(n)滿(mǎn)足式(3)條件,所以直接卷積所需的乘法次數(shù)為md=1/2N1N2。假設(shè)N1=N2,則比較這兩種乘法計(jì)算量有:
從表1可知,當(dāng)N142時(shí),F(xiàn)FT法的運(yùn)算量小于直接卷積的運(yùn)算量,當(dāng)N1=42時(shí),F(xiàn)FT法的運(yùn)算量與直接卷積的運(yùn)算量相當(dāng),當(dāng)N1>42時(shí),F(xiàn)FT法的運(yùn)算量大于直接卷積的運(yùn)算量,并且隨著N1增加,F(xiàn)FT法的運(yùn)算速度越來(lái)越快,特別是N1=8 192時(shí),F(xiàn)FT法的運(yùn)算速度與直接卷積相比快上將近100倍。
2.5 分布式結(jié)構(gòu)
2.5.1 分布式算法原理
分布式算法(distributed arithmetic,DA)于1973年就由Croisier提出,但是直到FPGA出現(xiàn),才廣泛的被應(yīng)用于FPGA中計(jì)算乘累積和。
評(píng)論