天天看點

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

FIR濾波器的FPGA實作方法

2011-02-21 23:34:15   來源:網際網路   

非常重要的基本單元。近年來,由于FPGA具有高速度、高內建度和高可靠性的特點而得到快速發展。随着現代數字通信系統對于高精度、高處理速度的需求,越來越多的研究轉向采用FPGA來實作FIR濾波器。而對于FIR濾波器要充分考慮其資源與運作速度的合理優化,各種不同的FIR濾波結構各具優缺點,在了解各種結構優

缺點後才能更好地選擇合适結構來實作FIR濾波。

1 FIR數字濾波器

    FIR數字濾波器由有限個采樣值組成,設計中在滿足幅值特性時,還能保證精确、嚴格的相位特性,是以在信号處理等領域得到廣泛的應用。

    對于FIR濾波器,其輸出y(n)表示為如下形式:

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    式中:N為濾波器的階數(或抽頭數);x(i)表示第i時刻的輸入樣本;h(i)為FIR濾波器的第i級抽頭系數。

    由于FIR濾波器的沖擊響應為一個有限序列,其系統函數可表示為:

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    FIR濾波器的基本結構如圖1所示。FIR濾波器隻在原點處存在極點,是以這使得FIR濾波器具有全局穩定性。同時FIR濾波器滿足線性相位條件,其沖擊響應序列為實數且滿足奇對稱或偶對稱條件,即:

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法
FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

2 實作方法

    運用FPGA來實作FIR數字濾波器的結構多種多樣,但是主要有以下幾類:串行結構、并行結構、轉置型結構、基于FFT算法結構、分布式結構。其他類型的FIR濾波器結構都可以由以上幾種結構衍生而來。

2.1 串行結構

    由表達式(1)可知,FIR濾波器實質是做一個乘累加運算,其濾波器的階數決定了一次乘累加的次數,其串行結構如圖2所示。

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    串行結構的FIR濾波器結構簡單,硬體資源占用少,隻需要複用1個乘法器和1個加法器,是以成本較低。但是,這種結構的FIR濾波器要經過多個時鐘周期才有輸出,同時,内部時鐘周期還受到乘法器運算速度的影響,是以該結構的FIR濾波器處理速度慢,隻适用于濾波階數較低且處理速度要求低的系統。

2.2 并行結構

    将串行結構的FIR濾波器展開就可以得到并行結構的FIR濾波器,并行FIR濾波器結構又稱作直接型FIR濾波器結構,這種結構是直接根據圖1的濾波器結構,用多個乘法器和加法器并行實作。通常考慮到其濾波器系數的對稱性,先對輸入值進行加法運算,再進行乘法運算,最後累加輸出,以此來減少乘法器的個數,其結構如圖3所示。

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    并行結構的FIR濾波器在1個周期内可以完成1次濾波,運作速度快,雖然利用濾波系數對稱性,但仍要占用大量的乘法器和加法器,特别對于濾波階數高的濾波器,其資源占用較多,如對于256階的濾波器,其需要128個乘法器來實作。為提高濾波器速度,常引入流水線結構,即在每次加法或者乘法運算後加入1個寄存器存儲資料,使得濾波器可以運作在更高的頻率上。2.3 轉置型結構

    根據轉置定理,如果将網絡中所有的支路方向倒轉,并将輸入x(n)和輸出y(n)互相交換,則其系統函數H(z)不變。通過轉置定理,将并行結構的FIR濾波器變換就可以得到轉置型FIR濾波器,其結構如圖4所示。

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    基于并行結構的轉置型FIR濾波器實作了資料的并行輸入,在1個周期内就能完成1次濾波,并且各級結構相同,在每個階段都可以讀出資料,可以對濾波階數進行擴充或者縮減,實作任意階數的濾波器。但是由于基于的是并行結構,便有着并行結構的一些缺點,主要是對于高階的濾波器,其資源占用量是巨大的,設計成本高。雖然這樣,轉置型FIR濾波器仍是應用廣泛的一種濾波器。

2.4 基于FFT的結構

    應用快速傅裡葉變換(fast fourier transform,FFT)實作FIR濾波器是一種快速實作濾波算法的重要途徑。由式(1)可知,FIR濾波器的輸出y(n)是輸入x(n)與系統沖擊響應序列h(n)的卷積,應用FFT可以快速實作卷積變換。如圖5所示,先将輸入信号x(n)通過FFT變換為它的頻譜采樣值X(k),然後再與FIR濾波器的頻響采樣值H(k)相乘,H(k)可事先存放在存儲器中,最後再将乘積X(k)H(k)通過快速傅裡葉反變換(IF-FT)還原為時域序列,即得到輸出y(n)。

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    為實作FFT,根據兩有限長序列的線性卷積可用其循環卷積代替而不發生混疊,必須選擇循環卷積長度N≥N1+N2-1,即将x(n)和h(n)補零至長度為N的序列,即:

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    在基于FFT的FIR濾波器結構中,求X(k),H(k)以及反傅裡葉變換y(n)需要的乘法次數均為N/2log2N,而計算X(k)H(k)需要N次乘法,是以基于FFT的總乘法次數為mf=3/2Nlog2N+N。由于h(n)滿足式(3)條件,是以直接卷積所需的乘法次數為md=1/2N1N2。假設N1=N2,則比較這兩種乘法計算量有:

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    從表1可知,當N1<42時,FFT法的運算量小于直接卷積的運算量,當N1=42時,FFT法的運算量與直接卷積的運算量相當,當N1>42時,FFT法的運算量大于直接卷積的運算量,并且随着N1增加,FFT法的運算速度越來越快,特别是N1=8 192時,FFT法的運算速度與直接卷積相比快上将近100倍。

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

2.5 分布式結構

2.5.1 分布式算法原理

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

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    對于式(7)中的h(i)xb(n-i)代表着輸入資料x(n-i)的第i位與抽頭系數h(i)的乘積,對于FIR濾波器,其系數h(i)是常數,是以可以事先構造一個查找表。該查找表存儲所有h(i)xb(n-i)的乘積值,通過輸入(xb(N-1),xb(N-2),…,xb(0))對該表尋址,然後将查得的值乘上2b後移位累加便得到濾波器輸出y(n)。該查找表構造規則如表2所示。

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

2.5.2 基于分布式算法的FIR濾波器結構

    基于分布式算法的FIR濾波器主要有3種結構類型。

    (1)第一種結構為串行分布式結構。串行分布式FIR濾波器的原理為,首先用所有N個輸入量的最低位對DA查找表進行尋址查值,得到一個部分積,将部分積右移一位即相當于除以2後放到寄存器中暫存。同時,N個輸入量的次低位開始對DA查找表進行尋址查值,得到另一個部分積,把該部分積與上一個儲存在寄存器中的值進行相加,相加後的值再右移一位放到寄存器中。以此重複循環累加,直到所有位數都尋址完

成,注意最高位尋址後的部分積是相減,最後所得到的值就是所需要的結果。

    當N過大,即FIR濾波器的濾波階數很高時,采用一個查找表來實作将使得存儲查找表的ROM變得十分龐大。為此可采用部分表結構,即将查找表劃分為多個部分,N個輸入量的同一位對應不同的部分表尋址。圖6所示即為基于4輸入部分表結構的串行DA結構。

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

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

FIR濾波器的FPGA實作方法FIR濾波器的FPGA實作方法

    第三種結構為串并結合分布式結構。它是一種折中方案,既要求速度不太高又要求資源占用少。對于串行分布式算法,是一次一位(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位。類似地,第2行右數第1列為資料的4位,第2列為資料的5位,第3列為資料的6位,第4列為資料的7位。以後各行按相似的數位順序排列。在第一個時鐘周期,資料的0,4,…,B-4位同時進入查找表ROM中,查出所要的資料,第二個時鐘周期,1,5,…,B-3位同時進入ROM中,查出所要的資料,所查得的資料傳遞給下一級累加器進行累加,這樣依次對剩下的各資料位進行同樣的操作。由于每個塊之間相差4位,即16倍,為了對應位相加,是以乘16。FIR濾波器的分布式算法結構比單獨用乘法器實作的速度快,特别是濾波階數越高,其優勢更加明顯。分布式結構中,串行結構是1次查詢1位,是以對B位的資料在不算上移位寄存等的時間,完成1次濾波需要B個時鐘周期;而并行結構隻需要1個時鐘周期便完成濾波,是以并行結構是速度最優的結構,但是并行結構需要B個DA查找表,需要大量的ROM來儲存,加大了硬體資源的消耗,特别是階數越高,硬體規模将十分膨大;串并結構綜合兩種結構優勢,實作在速度和規模上的協調。實際應用中。需根據系統的要求來選擇合适的結構。

3 結語

    本文定性地分析了各種FIR濾波器的FPGA實作方法。對于低階的FIR濾波器可采用串行結構、并行結構以及轉置型結構來實作,而并行結構和轉置型結構的FIR濾波器以犧牲資源損耗來實作了速度上優勢;對于高階的FIR濾波器,基于乘法器結構的串行結構、并行結構及轉置型結構在速度上難以達到高速處理的要求,而分布式算法将乘法轉換為查表和累加的結構,使得分布式結構的FIR濾波器在速度上得到了提高,

但三種不同形式的分布式結構要在綜合考慮資源以及速度的基礎上進行合理選擇;同樣采用FFT實作的FIR濾波器以減少運算量來獲得了速度上的提高,特别是濾波階數越高其速度提升越明顯。

    現代工程技術領域對濾波系統的帶寬、高速、信号的實時性處理等方面要求越來越高,在運用FPGA來實作FIR濾波中,基于乘法器結構的FIR濾波器無法滿足以上要求,而分布式結構的FIR濾波器巧妙地運用ROM查找表來實作固定系數的乘累加運算,避免了乘法運算,并且在随後的每級加法運算中引入流水線結構,提高了速度。是以采用分布式算法實作FIR濾波器是目前研究的熱點,同時無論哪種分布式算法都要使用ROM來做查找表,但是随着濾波階數的增加,ROM的數量将會增加,在進一步提高速度的情況下如何減少ROM的數量是今後亟待解決的問題。

轉載于:https://www.cnblogs.com/lianjiehere/p/3807087.html