摘要 針對高階FIR抽取濾波器直接型結構和多相濾波結構中存在乘法器資源使用較多,導致實際系統(tǒng)實現(xiàn)困難的問題,提出了一種適合FPGA實現(xiàn)的高效多相結構。該結構采用分時復用技術,通過提高FPGA工作時鐘頻率,對降采樣后的濾波路數(shù)和每一路FIR濾波器中乘積和操作均復用一個乘法器,從而大幅節(jié)約了FPGA中乘法器資源的使用。結果表明,針對4096階濾波器和降采樣率為512的實際抽取濾波囂系統(tǒng),只需要8個乘法器,且在Xilinx公司VirtexⅣ芯片上能穩(wěn)定工作在204.8 MHz的時鐘頻率上。
關鍵詞 抽取濾波器;FPGA;乘法器
由于具有高集成度、高速、可編程等優(yōu)點,現(xiàn)場可編程門陣列(Field Programmable Gate Array,F(xiàn)PGA)已經廣泛應用于多種高速信號實時處理領域中。抽取濾波作為多速率信號處理中基本運算單元,基于FPGA的FIR抽取濾波器設計和實現(xiàn)是數(shù)字下變頻、信道化等眾多領域中一個重要環(huán)節(jié)。目前,采用FPGA實現(xiàn)FIR濾波器主要存在的問題是FPGA芯片中乘法器資源較少。在已知硬件FPGA芯片乘法器資源約束條件下,設計更為有效的FIR濾波器實現(xiàn)結構是致力研究的內容。
目前,Altera和Xilinx公司都提供了可塑性很強的FIR濾波器IP核,只要改動相應的參數(shù)設置,就可以應用于不同產品中。然而,在某些對性能和實時性要求較高的場合下,F(xiàn)IR濾波器階數(shù)和FPGA系統(tǒng)工作時鐘頻率均較高,上述FIR濾波器IP核無法直接使用,甚至無法應用。文中以Xilinx公司VirtexⅣ芯片為硬件平臺,針對整數(shù)倍FIR抽取濾波器的多相結構特點,提出一種高效FPGA實現(xiàn)結構。該結構能使用很少的乘法器資源完成高階FIR抽取濾波器,并且工作時鐘為輸入數(shù)據(jù)速率,有著良好的穩(wěn)定性。
1 FIR抽取濾波器的多相結構
整數(shù)D倍抽取濾波器框圖如圖1所示,對應的輸入輸出關系為
其中,濾波器h(n1T1)的長度為N;T1和T2分別對應輸入序列和輸出序列時間間隔,且滿足T2=DT1。根據(jù)式(1)和式(2)可以得到輸出數(shù)據(jù)速率f2=1/T2為輸入數(shù)據(jù)速率f1=1/T1的1/D,即f2=f1/D。
利用多相分解第1型式可以將H(z1)分解為
其中,。圖2(a)給出了式(3)所示的抽取濾波器多相結構。
為進一步利用網絡結構等效性,可以將抽取與各支路濾波器進行等效變換,從而得到如圖2(b)所示更為有效的多相抽取濾波結構圖,其中
相對圖1所示的直接實現(xiàn)結構,圖2(b)所示的高效實現(xiàn)結構具有如下兩個特點:(1)各支路濾波器輸入信號速率為原輸入信號速率的1/D,從而可以使得各支路濾波器工作在較低的速率上。(2)各支路濾波器系數(shù)個數(shù)為原濾波器系數(shù)個數(shù)的1/D。因此,相比圖1,圖2(b)所示的濾波器結構具有更高的運算效率。
2 FIR抽取濾波器的多相結構實現(xiàn)
采用多相結構實現(xiàn)抽取濾波器的基本思想是將輸入信號進行相應延遲和降采樣后,分別送至D個通道進行濾波,然后將每一支路濾波后的數(shù)據(jù)相加,得到最終輸出結果。如2(b)所示,降采樣后進行第一個濾波通道的信號數(shù)據(jù)為…,x(0T1),x(DT1),x(2DT1),…,進入第二個濾波通道的信號數(shù)據(jù)為…,x(-1T1),x((D-1)T1),x((2D-1)T1)…,進入最后一個通道的數(shù)據(jù)為…,x((-D+1)T1),x(1T1),x((2D+1)T1),…,等等。結合上述特點,在FPGA進行實現(xiàn)時,可以將延遲和降采樣結合在一起,采用圖3(a)所示的實現(xiàn)結構進行抽取濾波。該結構中包括3個模塊:(1)串并轉換,將輸入數(shù)據(jù)轉換成D路并行信號。(2)多相濾波模塊,將得到的D路并行信號分別進行濾波,每一路所采用的濾波器為原濾波器相應的多相分量。(3)加法模塊,該模塊將上述得到D路濾波后的數(shù)據(jù)相加得到最終的一路輸出信號。
但隨著降采樣率D的增加,相應的所需要的FPGA資源也急劇增加。例如,當D=512時,圖3(a)對應的實現(xiàn)結構需要至少512個乘法器,這在實際中難以滿足要求。由于D較大時,各路濾波器工作時鐘頻率卻很低。為了更少地使用乘法器資源,同時提高系統(tǒng)的工作效率,在圖3(a)的基礎上可以進一步優(yōu)化結構。
改進后的實現(xiàn)結構核心思想:可以將圖3(a)中D個通道分成L組,每組包括D/L通道,每一組采用分時復用方法進行實現(xiàn)濾波。同時,針對每一組濾波,進一步提高工作時鐘頻率,采用更少的乘法器實現(xiàn)抽取濾波器。下面將結合一個具體的設計要求給出更適合FPGA實現(xiàn)的多相濾波結構。該系統(tǒng)指標如下:輸入數(shù)據(jù)速率(或系統(tǒng)時鐘f1=204.8 MHz;降采樣率D=512;濾波器階數(shù)N=4 096;FPGA芯片Xilinx公司的VirtexⅣ芯片。
如果采用圖1所示的直接型結構至少需要4 096個乘法器,采用圖2(b)所示的多相濾波結構也至少需要512個乘法器,均無法滿足指標要求。為此,可以采用復用方法進行實現(xiàn)。根據(jù)技術指標要求,原濾波器的多相分量含有N/D=8個系數(shù),同時,每一路速率為fk=f1/D=0.4 MHz,因此,可以將D路濾波通道分成=8組,每組D/L=64路信號復用,同時濾波時乘法器進一步復用,則每一個濾波器工作頻率為fl=fk×64 ×8=f1=204.8 MHz。圖3(b)給出了優(yōu)化后的抽取濾波器多相實現(xiàn)結構。由于每組多相濾波模塊中同時完成64路的濾波功能,同時濾波器實現(xiàn)過程對成績和操作也進行復用,每一組多相濾波模塊只需1個乘法器,整個系統(tǒng)共需8個乘法器,大幅節(jié)約了乘法器資源。實際也可以根據(jù)不同的系統(tǒng)指標要求,針對不同的FPGA芯片性能,設置不同的復用路數(shù)和濾波器工作頻率,使整個系統(tǒng)資源和性能均滿足要求。
3 仿真結果
為驗證該結構的正確性,可分兩步完成:(1)采用Matlab程序進行功能仿真。(2)將FPGA程序運行結果與Matlab定點仿真程序結果進行進一步比較,以驗證FPGA程序的正確性。圖4給出了系統(tǒng)中采用的原型濾波器的幅頻響應曲線。圖5給出了采用Matlab分別對圖1和圖3(b)所對應的直接型結構和改進的多相結構仿真結果(灰色表示圖1對應的仿真結果,黑色表示圖3(b)對應的仿真結果)。從圖5可以看出,兩者運行結果相同,從而表明文中提出的FPGA結構正確。圖6給出了FPGA程序Modelsim仿真結果。圖7為FPGA程序輸出數(shù)據(jù)與Matlab定點仿真程序輸出數(shù)據(jù)對比結果(灰色表示Matlab定點程序對應的仿真結果,黑色表示Modelsim對應的仿真結果)。從圖7可以看出設計的FPGA程序正確。
4 結束語
針對高階FIR抽取濾波器,提出了一種更適合FPGA實現(xiàn)的優(yōu)化多相結構。相對應直接型和傳統(tǒng)的多相結構,設計的結構充分結合FPGA自身特點和多相濾波結構特性,采用分時復用技術,大幅降低了FPGA中乘法器資源的使用,能夠采用一片FPGA實現(xiàn)高階濾波。目前,該FPGA模塊已經應用于一個實際的數(shù)字分路系統(tǒng)中,程序運行正確。