FIR數(shù)字濾波器分布式算法的原理及FPGA實(shí)現(xiàn)_第1頁(yè)
FIR數(shù)字濾波器分布式算法的原理及FPGA實(shí)現(xiàn)_第2頁(yè)
FIR數(shù)字濾波器分布式算法的原理及FPGA實(shí)現(xiàn)_第3頁(yè)
FIR數(shù)字濾波器分布式算法的原理及FPGA實(shí)現(xiàn)_第4頁(yè)
FIR數(shù)字濾波器分布式算法的原理及FPGA實(shí)現(xiàn)_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、FIR數(shù)字濾波器分布式算法的原理及FPGA實(shí)現(xiàn)摘要:在利用FPGA實(shí)現(xiàn)數(shù)字信號(hào)處理方面,分布式算法發(fā)揮著關(guān)鍵作用,與傳統(tǒng)的乘積-積結(jié)構(gòu)相比,具有并行處理的高效性特點(diǎn)。詳細(xì)研究了基于FPGA、采用分布式算法實(shí)現(xiàn)FIR數(shù)字濾波器的原理和方法,并通過(guò)Xilinx ISE在Modelsim下進(jìn)行了仿真。 關(guān)鍵詞:分布式算法 DALUT FPGA FIR數(shù)字濾波器正在迅速地代替?zhèn)鹘y(tǒng)的由R、L、C元件和運(yùn)算放大器組成的模塊濾波器并且日益成為DSP的一種主要處理環(huán)節(jié)。FPGA也在逐漸取代ASIC和PDSP,用作前端數(shù)字信號(hào)處理的運(yùn)算(如:FIR濾波、CORDIC算法或FFT)。乘累加運(yùn)算是實(shí)現(xiàn)大多數(shù)DSP算

2、法的重要途徑,而分布式算法則能夠大大提高乘累加運(yùn)算的效能。1 傳統(tǒng)的乘累加結(jié)構(gòu)FIR數(shù)字濾波器基本理論FIR濾波器被稱為有限長(zhǎng)脈沖響應(yīng)濾波器,與IIR數(shù)字濾波器相對(duì)應(yīng),它的單位脈沖響應(yīng)h(n)只有有限個(gè)數(shù)據(jù)點(diǎn)。輸入信號(hào)經(jīng)過(guò)線性時(shí)不變系系統(tǒng)輸出的過(guò)程是一個(gè)輸入信號(hào)與單位脈沖響應(yīng)進(jìn)行線性卷積的過(guò)程,即:式中,x(n)是輸入信號(hào),y(n)是卷積輸出,h(n)是系統(tǒng)的單位脈沖響應(yīng)??梢钥闯觯看尾蓸觵(n)需要進(jìn)行L次乘法和L-1次加法操作實(shí)現(xiàn)乘累加之和,其中L是濾波器單位脈沖響應(yīng)h(n)的長(zhǎng)度??梢园l(fā)現(xiàn),當(dāng)L很大時(shí),每計(jì)算一個(gè)點(diǎn),則需要很長(zhǎng)的延遲時(shí)間。2 乘累加運(yùn)算的位寬分配DSP算法最主要的就是進(jìn)

3、行乘累加運(yùn)算。假設(shè)采樣信號(hào)的位寬用N來(lái)表示,則N位與N位的乘累結(jié)果需要2N位的寄存器來(lái)保存;如果兩個(gè)操作數(shù)都是有符號(hào)數(shù),則乘積只有2N-1個(gè)有效位,因?yàn)楫a(chǎn)生了兩個(gè)符號(hào)位。為了使累加器的結(jié)果不產(chǎn)生溢出,需要對(duì)累加器進(jìn)行冗余設(shè)計(jì),也就是說(shuō)要在累加器2N的位寬上多設(shè)計(jì)出K位,累加器的長(zhǎng)度M計(jì)算方式如下(L為濾波器的長(zhǎng)度):對(duì)于無(wú)符號(hào)數(shù):M=2N+K=2N+log2 L對(duì)于有符號(hào)數(shù):M=2N=K=2N+log2 L-13 乘累加運(yùn)算的分布式算法原理分析得益于Xilinx FPGA查找表結(jié)構(gòu)的潛能,分布式算法在濾波器設(shè)計(jì)方面顯示出了很高的效率,自20世紀(jì)90年代初以來(lái)越來(lái)越受到人們的重要。分布式算法是基

4、于查找表的一種計(jì)算方法,在利用FPGA實(shí)現(xiàn)數(shù)字信號(hào)處理方面發(fā)揮著重要的作用,可以大大提高信號(hào)的處理效率。它主要應(yīng)用于數(shù)字濾波、頻率轉(zhuǎn)換等數(shù)字信號(hào)處理的乘累加運(yùn)算。分布式算法推導(dǎo)如下:設(shè)Ak是已知常數(shù)(如濾波器系數(shù)、FFT中的正弦/余弦基本函數(shù)等),xk(n)是變量,可以看作是n時(shí)刻的第k個(gè)采樣輸入數(shù)據(jù),y(n)代表n時(shí)刻的系統(tǒng)響應(yīng)。那么它們的內(nèi)積為:其中,xk(n)變量可以寫(xiě)成下面的格式:式中,B為數(shù)據(jù)格式的字長(zhǎng),xkb是變量的二進(jìn)制位,只有“0”和“1”兩種狀態(tài)。將(2)式代入(1)式得:4 FPGA實(shí)現(xiàn)過(guò)程中查找表的構(gòu)造方法根據(jù)以上論述,括號(hào)中的每一乘積項(xiàng)代表著輸入變量的某一位與常量的二進(jìn)

5、制“與”操作,加號(hào)代表著算術(shù)和操作,指數(shù)因子對(duì)括號(hào)中的值加權(quán)。如果事先構(gòu)造一個(gè)查找表,該表存儲(chǔ)著括號(hào)中所有可能的組合值,就可以通過(guò)所有輸入變量相對(duì)應(yīng)位的組合向量(XNb,X(N-1)b,.x1b)對(duì)該表進(jìn)行尋址,該查找表稱為DALUT。DALUT的構(gòu)造規(guī)則如表1所示。5 采用分布式算法實(shí)現(xiàn)FIR數(shù)字濾波器為了說(shuō)明問(wèn)題,以一個(gè)三個(gè)系數(shù)的FIR數(shù)字濾波器為例設(shè)計(jì)分布式算法,字寬也設(shè)置為三位。設(shè)FIR數(shù)字濾波器系數(shù)為:h(0)=5,h(1)=2,h(2)=3。在進(jìn)行FPGA設(shè)計(jì)時(shí),該表以組件Component形式構(gòu)建,設(shè)置為ROM結(jié)構(gòu),提供輸入尋址端口table_in2.0,輸出端口table_ou

6、t3.0。FPGA算法的結(jié)構(gòu)圖如圖2所示。 算法實(shí)現(xiàn)中的幾個(gè)關(guān)鍵問(wèn)題為:(1)采用狀態(tài)機(jī)實(shí)現(xiàn)分布式算法的狀態(tài)轉(zhuǎn)移狀態(tài)機(jī)的實(shí)現(xiàn)如圖3所示,設(shè)置三個(gè)狀態(tài)s0、s1、s2 。狀態(tài)s0完成數(shù)據(jù)的裝入,數(shù)據(jù)寄存器需要成對(duì)出現(xiàn),一個(gè)完成數(shù)據(jù)的延遲,另一個(gè)完成數(shù)據(jù)的移位,并將狀態(tài)轉(zhuǎn)移到s1;狀態(tài)s1完成查找表功能、數(shù)據(jù)移位和分布式算法的乘累加運(yùn)算,數(shù)據(jù)移位一個(gè)數(shù)據(jù)寬帶后將狀態(tài)轉(zhuǎn)移到s2;狀態(tài)s2完成數(shù)據(jù)的輸出,并將狀態(tài)轉(zhuǎn)移到s0。利用狀態(tài)機(jī)可以條理清楚地簡(jiǎn)化計(jì)算過(guò)程,在算法實(shí)現(xiàn)時(shí)發(fā)揮著關(guān)鍵的作用。 (2)系統(tǒng)時(shí)鐘與數(shù)據(jù)輸入時(shí)鐘的關(guān)系根據(jù)上述的狀態(tài)轉(zhuǎn)移關(guān)系,可以得出:每輸入一個(gè)數(shù)據(jù),在下一次數(shù)據(jù)輸入之前,需要

7、在狀態(tài)s1停留一個(gè)數(shù)據(jù)寬帶(三位)的時(shí)鐘時(shí)間,在s2停留一個(gè)時(shí)鐘的數(shù)據(jù)輸出時(shí)間。也就是說(shuō),系統(tǒng)時(shí)鐘頻率應(yīng)是數(shù)據(jù)輸入頻率的5倍,即fclkock=5fxin。(3)分布式算法中的乘累加式公推導(dǎo)及核心代表實(shí)現(xiàn)設(shè)B是數(shù)據(jù)的字寬,Pn是分布式算法第n位的結(jié)果,則有:有了該關(guān)系式,就可以通過(guò)for.loop循環(huán),使用一條語(yǔ)句完成分布式乘累加算法。具體如下:for n in 0 to B-1 loopP:=p/2+tableout(n)*2B-1;End loop;6 算法仿真驗(yàn)證與結(jié)論本文實(shí)現(xiàn)的FIR濾波器在Xilinx的集成開(kāi)發(fā)環(huán)境ISE下利用ModelSim進(jìn)行了仿真。當(dāng)輸入數(shù)據(jù)為7,3,1.時(shí),仿

8、真輸出依次為35,29,32,16.,與乘累加方式FIR濾波算法得出的結(jié)果完全一致。假設(shè)查找表和PDSP的通用乘法器延時(shí)時(shí)間相同,分布式算法的等待時(shí)間是Br,通用乘法器的等待時(shí)間是N1。可見(jiàn),對(duì)于位寬較小的數(shù)據(jù)來(lái)說(shuō),分布式算法的執(zhí)行速度遠(yuǎn)高于乘累加運(yùn)算??梢?jiàn),利用FPGA實(shí)現(xiàn)分布式計(jì)算大大提高了計(jì)算的速度,在高速信號(hào)處理中發(fā)揮著重要作用。適合單片機(jī)實(shí)時(shí)處理的簡(jiǎn)單FIR濾波器設(shè)計(jì)l 引 言 近年來(lái),心臟病的發(fā)病率不斷上升,為了使病人能夠隨時(shí)隨地得到診治,科研人員研制了多種便攜式移動(dòng)心電監(jiān)護(hù)設(shè)備。在研制便攜式心電監(jiān)護(hù)設(shè)備時(shí),既要考慮使 用者攜帶及使用方便,又要保證采集到高質(zhì)量的心電信號(hào)。解決這一矛

9、盾的惟一途徑就是用盡量?jī)?yōu)化的軟、硬件資源來(lái)完成相應(yīng)功能。心電信號(hào)的頻率在0 05100 Hz之間,一個(gè)正常的心電圖由P波、QRS波群、T波等組成。由頻譜分析可知,QRS波群的中心頻率在17 Hz帶寬約為10 Hz,P波、T波等的頻帶都在此頻帶的低端以外1。心電信號(hào)采集過(guò)程中的噪聲源主要有:50 Hz工頻干擾及其各次諧波,呼吸運(yùn)動(dòng)和電極移動(dòng)所產(chǎn)生的頻率小于5 Hz的干擾,肌肉收縮產(chǎn)生的O100 Hz肌電(EMG)噪聲,用于信號(hào)處理的電子設(shè)備所產(chǎn)生的噪聲等2,3。其中最明顯的是50 Hz工頻干擾及其各次諧波和由于呼吸運(yùn)動(dòng)所產(chǎn)生的頻率小于5 Hz的干擾。要得到清晰、準(zhǔn)確的心電信號(hào),必須在不影響正常心

10、電波形的基礎(chǔ)上將這些干擾濾除。這就要求濾波器具有良好的幅頻特性和嚴(yán)格的線性相位特性。本 文借助Matlab 704,采用窗函數(shù)法結(jié)合零、極點(diǎn)調(diào)整法1和試探法設(shè)計(jì)了一種濾除工頻50 Hz干擾的FIR濾波器。 2基本原理 21 窗函數(shù)設(shè)計(jì)濾波器6,7原理簡(jiǎn)述 設(shè)濾波器的理想頻率響應(yīng)函數(shù)為Hd(ejw),則其對(duì)應(yīng)的單位脈沖響應(yīng)為: 窗函數(shù)法設(shè)計(jì)濾波器的基本原理就是用有限長(zhǎng)度單位脈沖響應(yīng)序列h(n)去逼近hd(n)。通常hd(n)是無(wú)限長(zhǎng)序列,且是非因果的,所以用窗函數(shù)w (n)將hd(n)進(jìn)行截?cái)嗖⒆骷訖?quán)處理得到: h(n)=hd(n)w(n) h(n)就是實(shí)際設(shè)計(jì)的FIR數(shù)字濾波器的單位脈沖響應(yīng)序

11、列,其頻率響應(yīng)函數(shù)為: 其中,N為所選窗函數(shù)w(n)的長(zhǎng)度。同時(shí),如果要求濾波器具有線性相位特性,則h(n)必須滿足: h(n)=h(N1n) 22方法改進(jìn)及實(shí)現(xiàn) 設(shè)計(jì)中選用FIR I型濾波器8,9,即滿足h(n)=+h(N1n)且N為奇數(shù)。選用Hamming窗對(duì)理想濾波器的單位脈沖響應(yīng)進(jìn)行截?cái)?,窗函?shù)為: w(n)=054046 cos(2nn/N),N=0,1,2,N1 按常規(guī)設(shè)計(jì)方法直接設(shè)計(jì)50 Hz FIR陷波器,要達(dá)到較好的濾波效果,濾波器的階數(shù)較高且濾波器系數(shù)多為小數(shù),不利于通用單片機(jī)進(jìn)行實(shí)時(shí)處理。設(shè)定采樣頻率Fs=200 Hz,先用窗函數(shù)法設(shè)計(jì)一個(gè)低頻特性較好的30 Hz低通濾波

12、器,然后利用Matlab FDATOOL工具箱里的量化工具對(duì)濾波器的系數(shù)進(jìn)行量化和調(diào)整。量化后濾波器的傳遞函數(shù)為: Hl(Z)=0125+025 z1+0375 z2+ 025 z3+0125 z4 3濾波器波形特性比較 由以上濾波器的幅頻特性,結(jié)合零、極點(diǎn)調(diào)整法和試探法反復(fù)對(duì)濾波器系數(shù)進(jìn)行調(diào)整,使其具有更好的低頻特性和50 Hz衰減特性。系數(shù)調(diào)整后濾波器的傳遞函數(shù)為: H2(z)=025+z105 z2+z3025 z4 由濾波器幅頻特性曲線可以看出,經(jīng)系數(shù)調(diào)整后濾波器具有更好的低頻特性,3 dB截止頻率為35 Hz,同時(shí)對(duì)50 Hz工頻干擾的衰減達(dá)到38 dB。但是,系數(shù)調(diào)整也使濾波器的高

13、頻特性變差,在688 Hz處的增益超過(guò)+3 dB。為了濾除心電信號(hào)中的高頻噪聲,必須對(duì)50 Hz以上頻段范圍內(nèi)的信號(hào)進(jìn)行衰減。 同樣,可以用窗函數(shù)法結(jié)合試探法設(shè)計(jì)了一個(gè)低頻特性較好且具有良好高頻衰減特性的40 Hz低通濾波器。利用Matlab FDATOOL工具箱里的量化工具對(duì)濾波器的系數(shù)進(jìn)行量化和調(diào)整。量化后濾波器的傳遞函數(shù)為: H3(z)=025+05 z1+025 z-2 由幅頻特性曲線可以看出,量化后濾波器的一3 dB截止頻率為363 Hz且具有良好的低頻和高頻特性。綜合以上兩種濾波器的幅頻特性,將這兩種濾波器進(jìn)行級(jí)聯(lián)。級(jí)聯(lián)后濾波器的傳遞函數(shù)為: 濾波器的幅、相頻率特性由圖4可以看出,

14、級(jí)聯(lián)后濾波器的一3 dB截止頻率為281 Hz,在50 Hz頻率處的衰減為-442 dB,高頻最小衰減為-10 dB,且濾波器在通帶內(nèi)具有嚴(yán)格的線性相位特性。該濾波器的群延時(shí)為: t=(N-1)/2*TS=3*5=15 ms 由心電信號(hào)的功率譜可知,28 dB的截止頻率能夠滿足心電監(jiān)護(hù)的需要。 4濾波效果 將上述設(shè)計(jì)的濾波器用于實(shí)際心電信號(hào)濾波取得了良好的濾波效果。5 結(jié) 語(yǔ) 由濾波器的幅、相頻率特性和實(shí)際濾波效果可以看出,該濾波器不但能夠很好地濾除工頻干擾而且具有良好的低頻特性。同時(shí),濾波器的系統(tǒng)函數(shù)中分子、分母的各 相系數(shù)均為整數(shù),便于乘法運(yùn)算。并且分母正好是2的4次冪,在進(jìn)行除法運(yùn)算時(shí)可

15、以直接由一條移位指令完成。這無(wú)疑給編程和運(yùn)算都帶來(lái)了極大的方便。 本濾波器結(jié)構(gòu)簡(jiǎn)單、占用資源少、濾波效果好,非常適用于嵌入式便攜設(shè)備中的信號(hào)濾波。同時(shí),該濾波器的計(jì)方法也可以推廣到其他相似性能指標(biāo)的濾波器設(shè)計(jì)中在科研實(shí)踐中一定會(huì)有較大的發(fā)展前途基于DA算法的FIR濾波器設(shè)計(jì)與實(shí)現(xiàn)1引言 在數(shù)字信號(hào)處理系統(tǒng)中,F(xiàn)IR數(shù)字濾波器多采用專用DSP芯片(如TMS320CXX系列),這種基于DSP的處理系統(tǒng)存在很多優(yōu)點(diǎn),比如方案靈活、可操作性強(qiáng)、程序易于移植。但這種結(jié)構(gòu)的濾波器多是根據(jù)FIR 濾波器的數(shù)據(jù)移位相乘累加的算法編寫(xiě)相應(yīng)軟件,利用軟、硬件相互結(jié)合完成濾波器的設(shè)計(jì)。由于軟件運(yùn)行時(shí),指令都是串行執(zhí)

16、行的,這嚴(yán)重制約了系統(tǒng)的運(yùn)行速率,不能滿足高傳輸速率,大數(shù)據(jù)吞吐量的數(shù)字信號(hào)的實(shí)時(shí)性處理要求。而基于DA算法的FPGA濾波器則是一種采用純硬件的方式實(shí)現(xiàn)FIR 濾波器的方式,這種方法突出的優(yōu)點(diǎn)是運(yùn)算速度快,特別適合在高速、實(shí)時(shí)、快變的數(shù)字信號(hào)處理要求。2DA算法的基本思想 第一個(gè)討論分布式算法(distributed arithmetic,DA)的可以追溯到1973年Cr0i Croisier的一篇論文,并由Peled和Liu來(lái)推廣。但是直到FPGA出現(xiàn)以后,才在FPG計(jì)算乘積和中被廣泛地應(yīng)用。在FPGA 芯片設(shè)計(jì)中,分布式算法(distributed arithmetic,DA)是一種很重要

17、的技術(shù)。它在乘積和的計(jì)算中已被廣泛應(yīng)用,為了理解DA算法設(shè)計(jì)原理,我們考慮有一個(gè)線性時(shí)不變網(wǎng)絡(luò)的輸出可以用下式表示:假設(shè)系數(shù)cn是已知常數(shù),xn是變量,在有符號(hào)DA系統(tǒng)中假設(shè)變量xn的表達(dá)式如下:其中xbn表示 xn的第b位,即xn是x第n個(gè)樣點(diǎn)。所以,內(nèi)積y 可以表示為:我們重新分別求和次序(這就是分布式算法的由來(lái)),結(jié)果是:y=(c0xB-10+c1+cN-1xB-1N-1)2B-1+(c0xB-20+c1+cN-1xB-2N-1)2B-2 (2-4).+(c0x00+c1x01+cN-1x0N-1)20 用更緊湊的形式表示為: 從(24)式可以發(fā)現(xiàn),分布式算法是一種以實(shí)現(xiàn)乘加運(yùn)算為目的的

18、運(yùn)算方法。它與傳統(tǒng)算法實(shí)現(xiàn)乘加運(yùn)算的不同在于執(zhí)行部分積運(yùn)算的先后順序不同。分布式算法在實(shí)現(xiàn)乘加功能時(shí),是通過(guò)將各輸入數(shù)據(jù)的每一對(duì)應(yīng)位產(chǎn)生的部分積預(yù)先進(jìn)行相加形成相應(yīng)的部分積,然后再對(duì)各個(gè)部分積累加而得到最終的結(jié)果,而傳統(tǒng)算法是等到所有乘積已經(jīng)產(chǎn)生之后再來(lái)相加完成乘加運(yùn)算的。與傳統(tǒng)串行算法相比,分布式算法可極大地減少硬件電路的規(guī)模,提高電路的執(zhí)行速度。3基于DA算法的FIR數(shù)字濾波器的硬件實(shí)現(xiàn) 由上面分析可以知道,對(duì)于任何一個(gè)線性時(shí)不變網(wǎng)絡(luò)總可以將它轉(zhuǎn)換成式(2-5)那樣的形式,F(xiàn)IR濾波器是一個(gè)很典型的線性時(shí)不變網(wǎng)絡(luò),它的表達(dá)式是:我們可以將它轉(zhuǎn)化成下面這樣的形式:在本系統(tǒng)中,采用的是8 位輸入,所以B = 8 則: 線性相位FIR濾波器滿足系數(shù)對(duì)稱條件,本系統(tǒng)設(shè)計(jì)的系統(tǒng)為16階,那么它的系數(shù)關(guān)于h7偶對(duì)稱,即有:hn= h16-1-n= h15-n (3-4) 由式(3-3

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論