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