【導(dǎo)讀】數(shù)字濾波器作為數(shù)字信號(hào)處理技術(shù)的一個(gè)重要工具,可用來(lái)過(guò)濾時(shí)間離散信號(hào)和數(shù)字信號(hào)。在數(shù)字信號(hào)處理中,數(shù)字濾波器占有極其重要的地位,濾波器可以用軟件濾波或?qū)S玫挠布V波兩種方法實(shí)現(xiàn)。硬件濾波器穩(wěn)定性差,易老化,精度低。用軟件來(lái)實(shí)現(xiàn)數(shù)字濾波器的優(yōu)點(diǎn)是隨著濾波器參數(shù)的改變,很容易改變?yōu)V波器性能,從而滿足設(shè)計(jì)需求。本文介紹了采用MATLAB仿真技術(shù)和DSP來(lái)設(shè)計(jì)實(shí)現(xiàn)FIR數(shù)字濾波器。
1、數(shù)字濾波器原理
對(duì)于數(shù)字濾波器,描述系統(tǒng)特性用差分方程。設(shè)其輸入序列為x(k),輸出序列為y(k),則它們之間的關(guān)系可以用差分方程來(lái)表示:
y(k})+b1y(k-1)+…+bMy(k-M)=a0x(k)+a1x(k-1)+…+anx(k-N) (1)
其中,y(k)系數(shù)一般取1;b1,…bM及a0,…aN為常系數(shù);對(duì)于特定的系統(tǒng),M和N為常數(shù),分別代表輸出最高階數(shù)和輸入最高階數(shù)。
2、FIR數(shù)字濾波器設(shè)計(jì)方案
數(shù)字濾波器的設(shè)計(jì)有無(wú)限沖激響應(yīng)濾波器(IIR)和有限沖激響應(yīng)濾波器(FIR)兩種選擇。無(wú)限沖激響應(yīng)濾波器的設(shè)計(jì)是借助模擬濾波器轉(zhuǎn)換的設(shè)計(jì)方法,一般有公式和圖表可查詢,另外還有一些典型模擬濾波器可供選擇,這種方法相對(duì)比較簡(jiǎn)單。有限沖激響應(yīng)濾波器主要采用非遞歸結(jié)構(gòu),可以保證絕對(duì)的穩(wěn)定,這有利于對(duì)諧波相位的分析。
在數(shù)字濾波器差分方程的基礎(chǔ)上,如果全部ak=0(k=0,1,…,N),此時(shí)系統(tǒng)的輸出只和輸入x(n-k)有關(guān)系,則以上公式成為沒(méi)有反饋的遞歸結(jié)構(gòu)。設(shè)FIR濾波器的單位沖激響應(yīng)h(r)為一個(gè)N點(diǎn)有限長(zhǎng)序列,其中0≤r≤N-1。
則FIR數(shù)字濾波器的傳遞函數(shù)可以表示為
從FIR數(shù)字濾波器傳遞函數(shù)表達(dá)式可以看出,其傳遞函數(shù)是一個(gè)Z-1的N-1次多項(xiàng)式,它在z平面上有N-1個(gè)零點(diǎn),沒(méi)有極點(diǎn)(有時(shí)認(rèn)為在原點(diǎn)上有N-1個(gè)重極點(diǎn))。其傳遞函數(shù)實(shí)際上就是單位抽樣序列的z變換。當(dāng)數(shù)字濾波器的技術(shù)指標(biāo)確定后,可以用一定的方法去逼近,目前FIR濾波器設(shè)計(jì)主要有3種方法:窗函數(shù)法、頻率抽樣法和切比雪夫最佳一致逼近法。
FIR濾波器的設(shè)計(jì)任務(wù)是根據(jù)給定的技術(shù)指標(biāo)確定一個(gè)傳遞函數(shù)H(z),使其頻率響應(yīng)滿足給定的要求。這些方法設(shè)計(jì)出的濾波器特性都是在不同意義上對(duì)理想頻率特性的逼近。
3、FIR數(shù)字濾波器的設(shè)計(jì)
若信號(hào)高頻分量很小,信號(hào)大部分能量集中在低頻處,那么諧波測(cè)量?jī)x只要求測(cè)到20次諧波就可以了,截止頻率為1 000 Hz左右,20次以上的諧波需要由濾波器濾除,為了達(dá)到更好的濾波效果,在硬件濾波的基礎(chǔ)上又增加了數(shù)字濾波器。這里以有閉合公式可循的窗函數(shù)法為例來(lái)介紹FIR濾波器設(shè)計(jì)。
3.1 濾波系數(shù)確定方法
首先,各技術(shù)指標(biāo)如下:
FIR濾波器的設(shè)計(jì)采用MATLAB數(shù)字信號(hào)處理軟件包提供的專用函數(shù)來(lái)直接求取FIR濾波器系數(shù)。在MATEAB中,提供了設(shè)計(jì)濾波器的函數(shù)。采用窗函數(shù)方法的函數(shù)firl,調(diào)用格式為:b=firl(n,ωn、window)或b=firl(n,ωn),其中n是濾波器階數(shù),ωn是0~1的數(shù),ωn=ωc/2π=0.25,window為窗函數(shù)類型。由于濾波器長(zhǎng)度N為34,因此階數(shù)n=N-1=33,則求取濾波系數(shù)的表達(dá)式為b=firl(33,0.25)。表1為利用MATLAB計(jì)算所得的濾波系數(shù)表。
3.2 FIR數(shù)字濾波器MATLAB仿真設(shè)計(jì)
在滿足各技術(shù)指標(biāo)的前提下,經(jīng)MATLAB仿真,圖1為頻率響應(yīng)曲線,阻帶衰減小于50 dB。圖2為S=S1+S2+S3的波形,其中S1=sin(50x 2xπxt),S2=0.15xsin(25x50x2xπxt),S3=0.1xsin(20x50x2xπxt)。圖3為濾除掉25次諧波S2和20次諧波S3后的波形圖。
由濾波前后兩個(gè)波形對(duì)比可以看出,該濾波器對(duì)20次以上諧波的濾除效果比較理想。
3.3 FIR數(shù)字濾波器的DSP實(shí)現(xiàn)
實(shí)現(xiàn)FIR濾波的核心器件是美國(guó)德州儀器公司生產(chǎn)的TMS320F2812DSP芯片。芯片內(nèi)12位精度的A/D轉(zhuǎn)換單元對(duì)輸入的模擬信號(hào)進(jìn)行采樣,DSP讀取采樣值后對(duì)每一點(diǎn)進(jìn)行FIR濾波處理,將數(shù)據(jù)存入內(nèi)部存儲(chǔ)器,為下一步進(jìn)行FFT運(yùn)算做準(zhǔn)備。以下為FIR濾波器流程圖。
下面對(duì)程序流程作詳細(xì)說(shuō)明:
首先初始化DSP寄存器,分配存儲(chǔ)單元,并定義一些變量名稱,接著在數(shù)據(jù)存儲(chǔ)區(qū)中開(kāi)辟一個(gè)N單元的緩沖區(qū),存放由MATLAB設(shè)計(jì)出的N個(gè)濾波系數(shù)。接下來(lái)讀入采樣值,并存入相應(yīng)存儲(chǔ)器A,然后開(kāi)始濾波運(yùn)算。
具體運(yùn)算步驟如下:
1)累加器ACC清零,初始化兩個(gè)準(zhǔn)備相乘的存儲(chǔ)單元A與B的計(jì)數(shù)值K和L;
2)將第K個(gè)采樣值A(chǔ)K與濾波器系數(shù)序列第L個(gè)數(shù)BL相乘(K+L=N+1),并將乘積送入累加器進(jìn)行累加;
3)將第K-1個(gè)采樣值A(chǔ)K-1存入AK單元,此時(shí)AK中的原數(shù)值被覆蓋;
4)重復(fù)(2)~(3)直至共完成N次乘加運(yùn)算;
5)輸出處理結(jié)果。
濾波運(yùn)算采用FFT算法。DSP控制器特有的反序間接尋址,為FFT算法的實(shí)現(xiàn)提供了方便。間接尋址方式還可以實(shí)現(xiàn)增/減l或增/減一個(gè)變址量,這就很容易實(shí)現(xiàn)各種查表方法。
Matlab仿真能夠輕松設(shè)計(jì)出具有嚴(yán)格線性相位要求的濾波器,在應(yīng)用中只需對(duì)程序中濾波器的起始頻率、截止頻率、采樣頻率和窗函數(shù)等參數(shù)進(jìn)行修改就可實(shí)現(xiàn)需要的濾波功能,實(shí)用性強(qiáng)。采用DSP控制器來(lái)實(shí)現(xiàn)FFT運(yùn)算從而使設(shè)計(jì)實(shí)現(xiàn)實(shí)時(shí)控制。利用Matlab輔助DSP實(shí)現(xiàn)FIR濾波器的設(shè)計(jì)是解決濾波器從設(shè)計(jì)到實(shí)現(xiàn)的有效辦法,可以縮短DSP應(yīng)用程序的開(kāi)發(fā)時(shí)間,提高了設(shè)計(jì)效率,具有很強(qiáng)的實(shí)用性。
相關(guān)閱讀:
基于Matlab的FIR數(shù)字濾波器
基于MATLAB的有源濾波器研究
DSP并聯(lián)有源電力濾波器的研究