在數字信號處理系統中,有限脈沖響應(finite impulse response,FIR)數字濾波器是一個(gè)非常重要的基本單元。近年來(lái),由于FPGA具有高速度、高集成度和高可靠性的特點(diǎn)而得到快速發(fā)展。隨著(zhù)現代數字通信系統對于高精度、高處理速度的需求,越來(lái)越多的研究轉向采用FPGA來(lái)實(shí)現FIR濾波器。而對于FIR濾波器要充分考慮其資源與運行速度的合理優(yōu)化,各種不同的FIR濾波結構各具優(yōu)缺點(diǎn),在了解各種結構優(yōu)
缺點(diǎn)后才能更好地選擇合適結構來(lái)實(shí)現FIR濾波。
1 FIR數字濾波器
FIR數字濾波器由有限個(gè)采樣值組成,設計中在滿(mǎn)足幅值特性時(shí),還能保證精確、嚴格的相位特性,因此在信號處理等領(lǐng)域得到廣泛的應用。
對于FIR濾波器,其輸出y(n)表示為如下形式:
2 實(shí)現方法
運用FPGA來(lái)實(shí)現FIR數字濾波器的結構多種多樣,但是主要有以下幾類(lèi):串行結構、并行結構、轉置型結構、基于FFT算法結構、分布式結構。其他類(lèi)型的FIR濾波器結構都可以由以上幾種結構衍生而來(lái)。
2.1 串行結構
由表達式(1)可知,FIR濾波器實(shí)質(zhì)是做一個(gè)乘累加運算,其濾波器的階數決定了一次乘累加的次數,其串行結構如圖2所示。
串行結構的FIR濾波器結構簡(jiǎn)單,硬件資源占用少,只需要復用1個(gè)乘法器和1個(gè)加法器,所以成本較低。但是,這種結構的FIR濾波器要經(jīng)過(guò)多個(gè)時(shí)鐘周期才有輸出,同時(shí),內部時(shí)鐘周期還受到乘法器運算速度的影響,所以該結構的FIR濾波器處理速度慢,只適用于濾波階數較低且處理速度要求低的系統。
2.2 并行結構
將串行結構的FIR濾波器展開(kāi)就可以得到并行結構的FIR濾波器,并行FIR濾波器結構又稱(chēng)作直接型FIR濾波器結構,這種結構是直接根據圖1的濾波器結構,用多個(gè)乘法器和加法器并行實(shí)現。通??紤]到其濾波器系數的對稱(chēng)性,先對輸入值進(jìn)行加法運算,再進(jìn)行乘法運算,最后累加輸出,以此來(lái)減少乘法器的個(gè)數,其結構如圖3所示。

并行結構的FIR濾波器在1個(gè)周期內可以完成1次濾波,運行速度快,雖然利用濾波系數對稱(chēng)性,但仍要占用大量的乘法器和加法器,特別對于濾波階數高的濾波器,其資源占用較多,如對于256階的濾波器,其需要128個(gè)乘法器來(lái)實(shí)現。為提高濾波器速度,常引入流水線(xiàn)結構,即在每次加法或者乘法運算后加入1個(gè)寄存器存儲數據,使得濾波器可以運行在更高的頻率上。
2.3 轉置型結構
根據轉置定理,如果將網(wǎng)絡(luò )中所有的支路方向倒轉,并將輸入x(n)和輸出y(n)相互交換,則其系統函數H(z)不變。通過(guò)轉置定理,將并行結構的FIR濾波器變換就可以得到轉置型FIR濾波器,其結構如圖4所示。

基于并行結構的轉置型FIR濾波器實(shí)現了數據的并行輸入,在1個(gè)周期內就能完成1次濾波,并且各級結構相同,在每個(gè)階段都可以讀出數據,可以對濾波階數進(jìn)行擴展或者縮減,實(shí)現任意階數的濾波器。但是由于基于的是并行結構,便有著(zhù)并行結構的一些缺點(diǎn),主要是對于高階的濾波器,其資源占用量是巨大的,設計成本高。雖然這樣,轉置型FIR濾波器仍是應用廣泛的一種濾波器。
2.4 基于FFT的結構
應用快速傅里葉變換(fast fourier transform,FFT)實(shí)現FIR濾波器是一種快速實(shí)現濾波算法的重要途徑。由式(1)可知,FIR濾波器的輸出y(n)是輸入x(n)與系統沖擊響應序列h(n)的卷積,應用FFT可以快速實(shí)現卷積變換。如圖5所示,先將輸入信號x(n)通過(guò)FFT變換為它的頻譜采樣值X(k),然后再與FIR濾波器的頻響采樣值H(k)相乘,H(k)可事先存放在存儲器中,最后再將乘積X(k)H(k)通過(guò)快速傅里葉反變換(IF-FT)還原為時(shí)域序列,即得到輸出y(n)。

為實(shí)現FFT,根據兩有限長(cháng)序列的線(xiàn)性卷積可用其循環(huán)卷積代替而不發(fā)生混疊,必須選擇循環(huán)卷積長(cháng)度N≥N1+N2-1,即將x(n)和h(n)補零至長(cháng)度為N的序列,即:



2.5 分布式結構
2.5.1 分布式算法原理
分布式算法(distributed arithmetic,DA)于1973年就由Croisier提出,但是直到FPGA出現,才廣泛的被應用于FPGA中計算乘累積和。
對于有符號數x(n)可以用下式的補碼形式表示:


2.5.2 基于分布式算法的FIR濾波器結構
基于分布式算法的FIR濾波器主要有3種結構類(lèi)型。
(1)第一種結構為串行分布式結構。串行分布式FIR濾波器的原理為,首先用所有N個(gè)輸入量的最低位對DA查找表進(jìn)行尋址查值,得到一個(gè)部分積,將部分積右移一位即相當于除以2后放到寄存器中暫存。同時(shí),N個(gè)輸入量的次低位開(kāi)始對DA查找表進(jìn)行尋址查值,得到另一個(gè)部分積,把該部分積與上一個(gè)儲存在寄存器中的值進(jìn)行相加,相加后的值再右移一位放到寄存器中。以此重復循環(huán)累加,直到所有位數都尋址完
成,注意最高位尋址后的部分積是相減,最后所得到的值就是所需要的結果。
當N過(guò)大,即FIR濾波器的濾波階數很高時(shí),采用一個(gè)查找表來(lái)實(shí)現將使得存儲查找表的ROM變得十分龐大。為此可采用部分表結構,即將查找表劃分為多個(gè)部分,N個(gè)輸入量的同一位對應不同的部分表尋址。圖6所示即為基于4輸入部分表結構的串行DA結構。

(2)第二種結構為并行分布式結構。并行分布式結構就是將N個(gè)輸入量的不同位進(jìn)行同時(shí)查表,而相同位送入同一個(gè)ROM尋址,不同位有不同的ROM。其結構如圖7所示。

第三種結構為串并結合分布式結構。它是一種折中方案,既要求速度不太高又要求資源占用少。對于串行分布式算法,是一次一位(one bit-at-a-time,1BAAT)查找表,而并行分布式算法是一次B位(B bits-at-a-time)。所以串并結合分布式算法采用一次多位,如2BAAT,3BA-AT。圖8所示為4BAAT查找表結構圖。
圖8中位數B是4的倍數,SRL為移位寄存器。SRL中第1行從右邊數第1列為數據的0位,第2列為數據的1位,第3列為數據的2位,第4列為數據的3位。類(lèi)似地,第2行右數第1列為數據的4位,第2列為數據的5位,第3列為數據的6位,第4列為數據的7位。以后各行按相似的數位順序排列。在第一個(gè)時(shí)鐘周期,數據的0,4,…,B-4位同時(shí)進(jìn)入查找表ROM中,查出所要的數據,第二個(gè)時(shí)鐘周期,1,5,…,B-3位同時(shí)進(jìn)入ROM中,查出所要的數據,所查得的數據傳遞給下一級累加器進(jìn)行累加,這樣依次對剩下的各數據位進(jìn)行同樣的操作。由于每個(gè)塊之間相差4位,即16倍,為了對應位相加,所以乘16。FIR濾波器的分布式算法結構比單獨用乘法器實(shí)現的速度快,特別是濾波階數越高,其優(yōu)勢更加明顯。分布式結構中,串行結構是1次查詢(xún)1位,所以對B位的數據在不算上移位寄存等的時(shí)間,完成1次濾波需要B個(gè)時(shí)鐘周期;而并行結構只需要1個(gè)時(shí)鐘周期便完成濾波,所以并行結構是速度最優(yōu)的結構,但是并行結構需要B個(gè)DA查找表,需要大量的ROM來(lái)儲存,加大了硬件資源的消耗,特別是階數越高,硬件規模將十分膨大;串并結構綜合兩種結構優(yōu)勢,實(shí)現在速度和規模上的協(xié)調。實(shí)際應用中。需根據系統的要求來(lái)選擇合適的結構。
3 結語(yǔ)
本文定性地分析了各種FIR濾波器的FPGA實(shí)現方法。對于低階的FIR濾波器可采用串行結構、并行結構以及轉置型結構來(lái)實(shí)現,而并行結構和轉置型結構的FIR濾波器以犧牲資源損耗來(lái)實(shí)現了速度上優(yōu)勢;對于高階的FIR濾波器,基于乘法器結構的串行結構、并行結構及轉置型結構在速度上難以達到高速處理的要求,而分布式算法將乘法轉換為查表和累加的結構,使得分布式結構的FIR濾波器在速度上得到了提高,
但三種不同形式的分布式結構要在綜合考慮資源以及速度的基礎上進(jìn)行合理選擇;同樣采用FFT實(shí)現的FIR濾波器以減少運算量來(lái)獲得了速度上的提高,特別是濾波階數越高其速度提升越明顯。
現代工程技術(shù)領(lǐng)域對濾波系統的帶寬、高速、信號的實(shí)時(shí)性處理等方面要求越來(lái)越高,在運用FPGA來(lái)實(shí)現FIR濾波中,基于乘法器結構的FIR濾波器無(wú)法滿(mǎn)足以上要求,而分布式結構的FIR濾波器巧妙地運用ROM查找表來(lái)實(shí)現固定系數的乘累加運算,避免了乘法運算,并且在隨后的每級加法運算中引入流水線(xiàn)結構,提高了速度。因此采用分布式算法實(shí)現FIR濾波器是目前研究的熱點(diǎn),同時(shí)無(wú)論哪種分布式算法都要使用ROM來(lái)做查找表,但是隨著(zhù)濾波階數的增加,ROM的數量將會(huì )增加,在進(jìn)一步提高速度的情況下如何減少ROM的數量是今后亟待解決的問(wèn)題。



歡迎通信工程師和FPGA工程師關(guān)注公眾號
全國第一大FPGA微信技術(shù)群
歡迎大家加入全國FPGA微信技術(shù)群,這個(gè)群體擁有數萬(wàn)工程師、一群熱愛(ài)技術(shù)的工程師,這里的FPGA工程師相互幫助,相互分享,技術(shù)氛圍濃厚!趕緊叫上小伙伴一起加入吧!!
用手指按住就可以加入FPGA全國技術(shù)群哦
FPGA之家元器件芯城
聯(lián)系客服