FIR數字濾波器分布式算法的原理及FPGA實(shí)現論文
摘要:在利用FPGA實(shí)現數字信號處理方面,分布式算法發(fā)揮著(zhù)關(guān)鍵作用,與傳統的乘積-積結構相比,具有并行處理的高效性特點(diǎn)。詳細研究了基于FPGA、采用分布式算法實(shí)現FIR數字濾波器的原理和方法,并通過(guò)XilinxISE在Modelsim下進(jìn)行了仿真。
關(guān)鍵詞:分布式算法DALUTFPGAFIR
數字濾波器正在迅速地代替傳統的由R、L、C元件和運算放大器組成的模塊濾波器并且日益成為DSP的一種主要處理環(huán)節。FPGA也在逐漸取代ASIC和PDSP,用作前端數字信號處理的運算(如:FIR濾波、CORDIC算法或FFT)。乘累加運算是實(shí)現大多數DSP算法的重要途徑,而分布式算法則能夠大大提高乘累加運算的效能。
1傳統的乘累加結構FIR數字濾波器基本理論
FIR濾波器被稱(chēng)為有限長(cháng)脈沖響應濾波器,與IIR數字濾波器相對應,它的單位脈沖響應h(n)只有有限個(gè)數據點(diǎn)。輸入信號經(jīng)過(guò)線(xiàn)性時(shí)不變系系統輸出的過(guò)程是一個(gè)輸入信號與單位脈沖響應進(jìn)行線(xiàn)性卷積的過(guò)程,即:
式中,x(n)是輸入信號,y(n)是卷積輸出,h(n)是系統的單位脈沖響應?梢钥闯,每次采樣y(n)需要進(jìn)行L次乘法和L-1次加法操作實(shí)現乘累加之和,其中L是濾波器單位脈沖響應h(n)的'長(cháng)度?梢园l(fā)現,當L很大時(shí),每計算一個(gè)點(diǎn),則需要很長(cháng)的延遲時(shí)間。
2乘累加運算的位寬分配
DSP算法最主要的就是進(jìn)行乘累加運算。假設采樣信號的位寬用N來(lái)表示,則N位與N位的乘累結果需要2N位的寄存器來(lái)保存;如果兩個(gè)操作數都是有符號數,則乘積只有2N-1個(gè)有效位,因為產(chǎn)生了兩個(gè)符號位。
為了使累加器的結果不產(chǎn)生溢出,需要對累加器進(jìn)行冗余設計,也就是說(shuō)要在累加器2N的位寬上多設計出K位,累加器的長(cháng)度M計算方式如下(L為濾波器的長(cháng)度):
對于無(wú)符號數:M=2N+K=2N+log2L
對于有符號數:M=2N=K=2N+log2L-1
3乘累加運算的分布式算法原理分析
得益于XilinxFPGA查找表結構的潛能,分布式算法在濾波器設計方面顯示出了很高的效率,自20世紀90年代初以來(lái)越來(lái)越受到人們的重要。分布式算法是基于查找表的一種計算方法,在利用FPGA實(shí)現數字信號處理方面發(fā)揮著(zhù)重要的作用,可以大大提高信號的處理效率。它主要應用于數字濾波、頻率轉換等數字信號處理的乘累加運算。
分布式算法推導如下:
設Ak是已知常數(如濾波器系數、FFT中的正弦/余弦基本函數等),xk(n)是變量,可以看作是n時(shí)刻的第k個(gè)采樣輸入數據,y(n)代表n時(shí)刻的系統響應。那么它們的內積為:
其中,xk(n)變量可以寫(xiě)成下面的格式:
式中,B為數據格式的字長(cháng),xkb是變量的二進(jìn)制位,只有“0”和“1”兩種狀態(tài)。將(2)式代入(1)式得:
4FPGA實(shí)現過(guò)程中查找表的構造方法
根據以上論述,括號中的每一乘積項代表著(zhù)輸入變量的某一位與常量的二進(jìn)制“與”操作,加號代表著(zhù)算術(shù)和操作,指數因子對括號中的值加權。如果事先構造一個(gè)查找表,該表存儲著(zhù)括號中所有可能的組合值,就可以通過(guò)所有輸入變量相對應位的組合向量(XNb,X(N-1)b,...x1b)對該表進(jìn)行尋址,該查找表稱(chēng)為DALUT。DALUT的構造規則如表1所示。
5采用分布式算法實(shí)現FIR數字濾波器
為了說(shuō)明問(wèn)題,以一個(gè)三個(gè)系數的FIR數字濾波器為例設計分布式算法,字寬也設置為三位。設FIR數字濾波器系數為:h(0)=5,h(1)=2,h(2)=3。
在進(jìn)行FPGA設計時(shí),該表以組件Component形式構建,設置為ROM結構,提供輸入尋址端口table_in,輸出端口table_out。FPGA算法的結構圖如圖2所示。
算法實(shí)現中的幾個(gè)關(guān)鍵問(wèn)題為:
。1)采用狀態(tài)機實(shí)現分布式算法的狀態(tài)轉移
狀態(tài)機的實(shí)現如圖3所示,設置三個(gè)狀態(tài)s0、s1、s2。狀態(tài)s0完成數據的裝入,數據寄存器需要成對出現,一個(gè)完成數據的延遲,另一個(gè)完成數據的移位,并將狀態(tài)轉移到s1;狀態(tài)s1完成查找表功能、數據移位和分布式算法的乘累加運算,數據移位一個(gè)數據寬帶后將狀態(tài)轉移到s2;狀態(tài)s2完成數據的輸出,并將狀態(tài)轉移到s0。利用狀態(tài)機可以條理清楚地簡(jiǎn)化計算過(guò)程,在算法實(shí)現時(shí)發(fā)揮著(zhù)關(guān)鍵的作用。
。2)系統時(shí)鐘與數據輸入時(shí)鐘的關(guān)系
根據上述的狀態(tài)轉移關(guān)系,可以得出:每輸入一個(gè)數據,在下一次數據輸入之前,需要在狀態(tài)s1停留一個(gè)數據寬帶(三位)的時(shí)鐘時(shí)間,在s2停留一個(gè)時(shí)鐘的數據輸出時(shí)間。也就是說(shuō),系統時(shí)鐘頻率應是數據輸入頻率的5倍,即fclkock=5fxin。
。3)分布式算法中的乘累加式公推導及核心代表實(shí)現
設B是數據的字寬,Pn是分布式算法第n位的結果,則有:
有了該關(guān)系式,就可以通過(guò)for...loop循環(huán),使用一條語(yǔ)句完成
分布式乘累加算法。具體如下:
fornin0toB-1loop
P:=p/2+tableout(n)*2B-1;
Endloop;
6算法仿真驗證與結論
本文實(shí)現的FIR濾波器在Xilinx的集成開(kāi)發(fā)環(huán)境ISE下利用ModelSim進(jìn)行了仿真。當輸入數據為7,3,1...時(shí),仿真輸出依次為35,29,32,16...,與乘累加方式FIR濾波算法得出的結果完全一致。假設查找表和PDSP的通用乘法器延時(shí)時(shí)間相同,分布式算法的等待時(shí)間是Br,通用乘法器的等待時(shí)間是N1?梢(jiàn),對于位寬較小的數據來(lái)說(shuō),分布式算法的執行速度遠高于乘累加運算?梢(jiàn),利用FPGA實(shí)現分布式計算大大提高了計算的速度,在高速信號處理中發(fā)揮著(zhù)重要作用。
【FIR數字濾波器分布式算法的原理及FPGA實(shí)現論文】相關(guān)文章:
網(wǎng)絡(luò )即時(shí)通信的原理和實(shí)現論文06-12
分布式熱線(xiàn)錄音系統的整體設計及實(shí)現論文04-21
《算法及其實(shí)現》的備課教案06-20
淺析基于云計算的分布式數據挖掘系統設計與實(shí)現論文04-20
FIR我們的愛(ài)歌詞02-17
基于現代密碼學(xué)的加密算法驗證系統的設計與實(shí)現的論文04-20
FPGA數據采集與回放系統設計論文04-24
分布式電源系統設計論文04-19