一種用于數(shù)字下變頻的高階分布式FIR濾波器及FPGA實現(xiàn)
摘 要: 設(shè)計了一種用于數(shù)字下變頻的256階分布式FIR濾波器。通過分析分布式FIR濾器結(jié)構(gòu)給實現(xiàn)電路所需資源和運算速度帶來的影響,確定了適用于Cyclone III系列FPGA的實現(xiàn)結(jié)構(gòu)。在Cyclone III系列EP3C40F484C6N芯片上實現(xiàn)該算法并分析了資源消耗與電路速度。
關(guān)鍵詞: FPGA;FIR濾波器;分布式算法
隨著通信、雷達等技術(shù)的發(fā)展,軟件無線電技術(shù)已經(jīng)被廣泛的用于無線基站、雷達信號處理、軍用電臺等多個領(lǐng)域。數(shù)字下變頻技術(shù)作為軟件無線電技術(shù)的重要組成部分,主要完成中頻信號數(shù)模轉(zhuǎn)換后的變頻、濾波以及重采樣等工作。數(shù)字下變頻的主要硬件框圖如圖1所示[1]。
根據(jù)不同的性能需求,濾波器組中采用以FIR濾波器為主,與梳狀(CIC)濾波器、半帶(HB)濾波器相互搭配來實現(xiàn)數(shù)字中頻信號的抽取與濾波。梳狀濾波器和半帶濾波器通常用于前級的抽取濾波,以將信號速度降低到一定程度。整個信道波形的整形則主要依靠FIR濾波器完成。隨著對信號處理精度和速度的要求不斷提高,設(shè)計并實現(xiàn)更高速度和更高階數(shù)的FIR濾波器成為推進數(shù)字下變頻繼續(xù)發(fā)展所需要克服的難題。目前國內(nèi)很多論文發(fā)表FIR濾波器多為11階[2]、16階[3]等低階FIR濾波器,其濾波效果很難滿足實際需要。本文設(shè)計一種用于數(shù)字下變頻的256階分布式FIR濾波,并針對Cyclone III系列FPGA設(shè)計了合理的實現(xiàn)方法。
1 分布式算法分析
FIR濾波器的表達式可以寫為:
其中hk為濾波器抽頭系數(shù), xk為輸入數(shù)據(jù)。式(1)中K的大小表征了FIR濾波器的階數(shù)。如果采用通常的乘加算法來實現(xiàn)FIR濾波器,K階濾波器需要使用K個嵌入式乘加單元。即使采用預(yù)加的實現(xiàn)方式也至少需要K/2個嵌入式乘加單元[4]。因此采用乘加算法直接實現(xiàn)高階濾波器會消耗大量的嵌入式乘加單元。Cyclone III系列EP3C40F484C6N芯片上的嵌入式乘法單元僅為126個,直接使用硬件乘法器則FPGA片上資源無法滿足要求。
2 分布式算法的變形與資源消耗推算
從式(7)可知yB可能的取值與濾波器的階數(shù)K有關(guān),因此256階濾波器至少需要2256個存儲單元。從式(6)可知,如果xk的位寬為N,則yN的值需要經(jīng)過N次移位相加后得到。若取N為24,則計算一個濾波結(jié)果需要完成24次移位相加。如果直接在FPGA上實現(xiàn)分布式算法,存儲器資源和運算速度均無法滿足需求,需要從濾波器階數(shù)和輸入數(shù)據(jù)位寬兩方面對式(4)進行變形以減少存儲器資源的消耗并提高運算速度。
若N位的xk位寬劃分為m段,每段L個比特,則可將式(4)變形為:
從式(8)可以看出求得Zn(n=0,1,2…,m-1)的值僅需要進行L次移位相加運算,其運算時間是未變形前的1/m。但變形后需要同時使用m個查找表來并行完成查表運算。變形后所對應(yīng)的硬件實現(xiàn)框圖如圖2所示。
從圖2可知式(8)所對應(yīng)的實現(xiàn)電路主要由串并轉(zhuǎn)換模塊、查找表、移位相加模塊以及錯位相加模塊組成。串并轉(zhuǎn)換模塊將x0~xK-1對應(yīng)位串行移出組合后作為查找表的輸入。查找表預(yù)先把所有可能的運算結(jié)果預(yù)存,根據(jù)輸入數(shù)據(jù)查表直接求得濾波結(jié)果。移位相加模塊完成查表輸出的移位相加,求得表達式(8)中的Zn(n=0,1,2…,m-1)。最后根據(jù)Zn(n=0,1,2……,m-1)的權(quán)值不同,將其錯位相加后可得到最終結(jié)果。
查找表的大小由濾波器階數(shù)決定,因此可通過將將式(4)變形為多個子濾波器級聯(lián)的形式。通過減少各個子濾波器的階數(shù)來減少查找表的大小,最后將各個子濾波器的結(jié)果求和可得到最終的濾波輸出??蓪⑹?4)改寫為:
從式(9)可知,可以將K階FIR濾波器分解為t個S階的子濾波器。其實現(xiàn)框圖如圖3所示。
由此可知每個子濾波器所需查找表的大小為2S,則劃分為t個子濾波器后相比于未劃分之前的所需的存儲單元數(shù)量之比M0為:
由此可知若將K階濾波器劃分為多個子濾波器可以讓所需的儲存單元成指數(shù)級降低,而為提高速度所增加存儲單元只成線性增長。因此根據(jù)FIR速度和FPGA上資源的情況設(shè)計合理的實現(xiàn)方案到達速度和資源上的平衡。
3 FPGA實現(xiàn)方案及結(jié)果分析
嵌入式存儲器塊是現(xiàn)代FPGA中常見的資源,嵌入式存儲器塊可以配置成不同大小和不同位寬存儲器。Cyclone III系列的FPGA中嵌入的存儲器塊為M9K,每一個嵌入式存儲器塊容量為9 Kbit。M9K存儲器可以根據(jù)需求被配置為8 192×1、4 096×2、1 024×9、256×32等多種形式。
采用嵌入式存儲器塊來實現(xiàn)查找表,需要權(quán)衡子濾波器的階數(shù)以及輸出數(shù)據(jù)的精度。若考慮S階濾波器中加法運算精度,則需其位寬擴展S-1位。對于系數(shù)為24位FIR濾波器而言,其子濾波器的查找表滿足式(12)時可以將M9K的利用率發(fā)揮到最大。
根據(jù)M9K嵌入式存儲器的配置規(guī)格可求得S=8時為近似最優(yōu)解,所以可將嵌入式存儲器配置為256 × 32的模式,則每一個子濾波器為8階。對于256階FIR濾波器而言需要32個子濾波器級聯(lián)而成,則總共需要嵌入式存儲器塊32個。為提高運算速度減少移位累加次數(shù),根據(jù)公式(8)取m=3,則總共需要96個M9K嵌入式存儲器,低于EP3C40F484C6N芯片所擁有的126個M9K嵌入式存儲器的總數(shù)。
根據(jù)前面所述設(shè)計RTL級代碼并仿真,輸入采用頻率分別為50 kHz、2 MHz、8 MHz正弦混合信號仿真結(jié)果如圖4。
如圖4所示50 kHz和2 MHz正弦信號被保留,而8 MHz正弦信號被濾除。
由表1可知,在LE的使用率僅為37%時,RAM的使用率已達76%,還有較多的LE未被使用??稍陔S后的工作中進一步改進設(shè)計方案,采用超前進位加法等方法縮短關(guān)鍵路徑,進一步提高濾波器的運算速度。
本文對分布式濾波算法進行了詳細(xì)的分析和推導(dǎo),通過公式變形闡述了提高電路運算速度和減小存儲器資源消耗的方法。通過理論推導(dǎo)和對Cyclone III系列的FPGA中嵌入的存儲器塊的分析,設(shè)計了一種適用于EP3C40F484C6N芯片的高階分布式FIR濾波器實現(xiàn)方案并進行了仿真和綜合。結(jié)果表明,采用該方案可以實現(xiàn)高階的FIR濾波器設(shè)計并得到很高的等效乘加運算速度。
評論