摘 要: 敘述了IIR數(shù)字濾波器" title="數(shù)字濾波器">數(shù)字濾波器的設(shè)計(jì)原理及其在DSP上的實(shí)現(xiàn)思路,并對(duì)用DSP實(shí)現(xiàn)IIR數(shù)字濾波的方法進(jìn)行了分析。用MATLAB計(jì)算出IIR數(shù)字濾波器的系數(shù),考慮到溢出問題,采用級(jí)聯(lián)" title="級(jí)聯(lián)">級(jí)聯(lián)的形式對(duì)濾波器進(jìn)行分解,最后在TMS320VC5416 DSP上得以實(shí)現(xiàn),并通過CCS(come composer studio)的輸入輸出功能和RTDX(real-time data exchange)的功能保證實(shí)現(xiàn)結(jié)果和仿真結(jié)果的一致性。
關(guān)鍵詞: IIR數(shù)字 濾波器 DSP 算法
數(shù)字濾波器在各種數(shù)字信號(hào)處理中發(fā)揮著十分重要的作用,數(shù)字濾波器設(shè)計(jì)一直是信號(hào)處理領(lǐng)域的重要研究課題。常用的數(shù)字濾波器有FIR濾波器和IIR濾波器,其中IIR數(shù)字濾波器因具有結(jié)構(gòu)簡單、占用存儲(chǔ)空間少、運(yùn)算速度快、較高的計(jì)算精度和能夠用較低的階數(shù)實(shí)現(xiàn)較好的選頻特性等特點(diǎn)[1],得到了廣泛應(yīng)用。DSP芯片有適合于數(shù)字信號(hào)處理的軟件資源和硬件資源,是實(shí)現(xiàn)數(shù)字信號(hào)處理的重要途徑[2]。目前所見文獻(xiàn),多數(shù)為濾波器的模型設(shè)計(jì),所得結(jié)果也是在MATLAB等實(shí)驗(yàn)環(huán)境下模擬仿真完成的,帶有很大的局限性。本文討論IIR數(shù)字濾波器在DSP上的實(shí)現(xiàn)思路,并對(duì)其實(shí)現(xiàn)方法" title="實(shí)現(xiàn)方法">實(shí)現(xiàn)方法進(jìn)行了分析。
1 數(shù)字IIR濾波器的理論設(shè)計(jì)分析
數(shù)字濾波器實(shí)際上是一個(gè)采用有限精度算法實(shí)現(xiàn)的線性非時(shí)變離散系統(tǒng),濾波器的功能實(shí)現(xiàn)實(shí)際上是通過大量的加法運(yùn)算和乘法運(yùn)算完成的。IIR數(shù)字濾波器差分方程的一般形式為:

從IIR數(shù)字濾波器的實(shí)現(xiàn)來看,有直接型、級(jí)聯(lián)型、并聯(lián)型和格型等基本網(wǎng)絡(luò)結(jié)構(gòu)。不同的結(jié)構(gòu)形式會(huì)有不同的運(yùn)算誤差,其穩(wěn)定性、運(yùn)算速度、所占用的存儲(chǔ)空間等也有所不同[3]。其中直接Ⅱ型僅需要N級(jí)延遲單元,且可作為級(jí)聯(lián)型和并聯(lián)型結(jié)構(gòu)中的基本單元,是最常用的IIR數(shù)字濾波器結(jié)構(gòu)之一。
IIR數(shù)字濾波器的設(shè)計(jì)方法" title="設(shè)計(jì)方法">設(shè)計(jì)方法有兩類[4],一類是借助于模擬濾波器的設(shè)計(jì)方法設(shè)計(jì)出模擬濾波器,利用沖激響應(yīng)不變法或雙線性變換法轉(zhuǎn)換成數(shù)字濾波器,然后用硬件或軟件實(shí)現(xiàn);另一類是直接在頻域或時(shí)域中進(jìn)行設(shè)計(jì),設(shè)計(jì)時(shí)需要計(jì)算機(jī)作輔助工具。對(duì)系統(tǒng)傳遞函數(shù)為

的IIR數(shù)字波濾器來說,設(shè)計(jì)的任務(wù)就是尋求一種因果關(guān)系和物理上可實(shí)現(xiàn)的系統(tǒng)傳遞函數(shù)H(z),使其頻率響應(yīng)H(ejω)能夠滿足所希望得到的頻域指標(biāo)。
2 IIR數(shù)字濾波器在DSP上的實(shí)現(xiàn)方法及實(shí)現(xiàn)過程
2.1 IIR數(shù)字濾波器在DSP上的實(shí)現(xiàn)步驟和條件
IIR數(shù)字濾波器在DSP上的設(shè)計(jì)過程如下:
(1)根據(jù)指標(biāo)確定濾波器的類型,設(shè)計(jì)出濾波器的參數(shù);
(2)根據(jù)DSP的特點(diǎn)(字長、精度等)對(duì)參數(shù)進(jìn)行取舍、量化,然后進(jìn)行仿真;
(3)根據(jù)仿真結(jié)果對(duì)濾波器的結(jié)構(gòu)、參數(shù)再次進(jìn)行調(diào)整,直到滿足要求為止;
(4)在DSP上用語言實(shí)現(xiàn)濾波器功能。
定點(diǎn)DSP芯片,既可以做定點(diǎn)運(yùn)算,也可以做浮點(diǎn)運(yùn)算。一個(gè)算法,既可以用匯編語言編程實(shí)現(xiàn),也可以用高級(jí)語言(C,C++)實(shí)現(xiàn)。而一個(gè)IIR數(shù)字濾波器是否可以在DSP上實(shí)現(xiàn),最終要看此算法是否滿足兩個(gè)條件:執(zhí)行時(shí)間和精度。一個(gè)算法的精度再高,如果做不到實(shí)時(shí),也沒有實(shí)用價(jià)值;相反,如果執(zhí)行時(shí)間很快,但精度滿足不了要求,也就無從實(shí)現(xiàn)濾波功能。IIR數(shù)字濾波器在DSP上的實(shí)現(xiàn)思路,應(yīng)該是在滿足上面兩個(gè)條件的前提下,找到盡可能簡易的實(shí)現(xiàn)方法。
2.2 IIR數(shù)字濾波器在TMS320VC5416 DSP上的實(shí)現(xiàn)過程
借助于計(jì)算機(jī)強(qiáng)大的仿真功能,在MATLAB環(huán)境下設(shè)計(jì)一個(gè)IIR數(shù)字濾波器變得十分容易[5]。但是要在DSP上實(shí)現(xiàn)此濾波器功能,則需要對(duì)濾波器的結(jié)構(gòu)、系數(shù)等參數(shù)進(jìn)行改進(jìn)。下面以一個(gè)低通IIR數(shù)字濾波器在DSP芯片TMS320VC5416上的實(shí)現(xiàn)為例,敘述其實(shí)現(xiàn)過程。
TMS320VC5416是DSP芯片的主要供應(yīng)商TI公司最近推出的5000系列中的高性能DSP,該處理器為16位定點(diǎn)DSP,最高運(yùn)算速度可達(dá)160MIPS,內(nèi)帶256KB的RAM,有128KB的數(shù)據(jù)空間,最大程序容量高達(dá)16MB,有3個(gè)McBSP和6個(gè)DMA通道并且支持外部DMA,內(nèi)核電壓低至1.5V。其CPU由于運(yùn)算速度快、內(nèi)部資源充足、接口靈活、功耗低,非常適合做復(fù)雜算法運(yùn)算。
低通IIR數(shù)字濾波器的參數(shù)如下:采樣率為16000Hz,截止頻率為500Hz,采用butterworth模型設(shè)計(jì)時(shí)階數(shù)為7階,在MATLAB6.5環(huán)境下得到的b系數(shù)和a系數(shù)如表1所示。
從理論上說,可以用高階" title="高階">高階IIR數(shù)字濾波器實(shí)現(xiàn)良好的濾波效果。但由于DSP本身有限字長和精度的因素,加上IIR濾波器在結(jié)構(gòu)上存在反饋回路,是遞歸型的,再者高階濾波器參數(shù)的動(dòng)態(tài)范圍很大。這樣一來造成兩個(gè)后果:結(jié)果溢出和誤差增大,從而導(dǎo)致算法無法在DSP上實(shí)現(xiàn)。
解決此問題的有效方法是把高階IIR數(shù)字濾波器簡化成幾個(gè)2階濾波器來設(shè)計(jì),即采用級(jí)聯(lián)結(jié)構(gòu)。因此系統(tǒng)函數(shù)為:
H(z)=H1(z)H2(z)…Hn(z) (3)
上述7階IIR數(shù)字濾波器采用級(jí)聯(lián)的結(jié)構(gòu)后變成4個(gè)濾波器級(jí)聯(lián)的形式,每個(gè)濾波器的系數(shù)如表2所示。
TMS320VC5416是16位DSP。在CCS下,它的浮點(diǎn)數(shù)格式占用兩個(gè)字,即32bit。通過CCS的數(shù)據(jù)輸入輸出功能和RTDX功能,可以隨時(shí)觀察DSP結(jié)果和理論仿真結(jié)果之間的差異,及時(shí)發(fā)現(xiàn)數(shù)據(jù)的溢出和計(jì)算誤差。對(duì)表2的系數(shù)取7個(gè)有效位(在CCS下浮點(diǎn)數(shù)的有效位為7位),計(jì)算結(jié)果如圖1所示。
圖中為輸入和濾波后的波形,信號(hào)頻率為500Hz。從圖中可以看出,濾波沒有產(chǎn)生溢出現(xiàn)象且濾波效果滿足設(shè)計(jì)要求。
程序流程如圖2。采用間接尋址指向數(shù)據(jù)存儲(chǔ)單元,主要指令為加法、乘法和循環(huán)實(shí)現(xiàn),這些都可以通過MAC等指令直接實(shí)現(xiàn)。需注意的是要對(duì)乘法運(yùn)算結(jié)果進(jìn)行溢出保護(hù)。另外,因?yàn)橹鞒绦蚩蚣懿捎肅結(jié)構(gòu),而算法由匯編語言實(shí)現(xiàn),所以要注意不同環(huán)境下尋址方式的區(qū)別,當(dāng)從C環(huán)境進(jìn)入直接尋址時(shí),要先確定DP值,以免帶來不確定的計(jì)算結(jié)果。數(shù)據(jù)采集時(shí)要先通過DSP的DMA功能將輸入數(shù)據(jù)保存在外部SRAM中,采樣結(jié)束后再將要濾波的數(shù)據(jù)通過DMA載入內(nèi)部RAM中,從而提高處理速度??紤]到IIR數(shù)字濾波器的運(yùn)算特點(diǎn),某一時(shí)刻的輸入數(shù)據(jù)參加一次運(yùn)算后不再參與下次運(yùn)算,只有各級(jí)濾波器輸出結(jié)果需要參與多次運(yùn)算,因此濾波結(jié)果和輸入數(shù)據(jù)可以共用同一存儲(chǔ)地址,從而節(jié)省存儲(chǔ)空間。
除此之處,還要注意以下問題:
(1)IIR數(shù)字濾波器是針對(duì)采樣率固定的系統(tǒng)設(shè)計(jì)的,更改系統(tǒng)或系統(tǒng)采樣率改變時(shí)應(yīng)重新設(shè)計(jì)。
(2)用到的數(shù)據(jù)存儲(chǔ)單元,程序開始時(shí)應(yīng)對(duì)這些單元進(jìn)行初始化。如果要進(jìn)行連續(xù)濾波,應(yīng)保存上一次濾波的結(jié)果。
(3)IIR數(shù)字濾波器的濾波結(jié)果會(huì)引起相位的延遲,故對(duì)相位嚴(yán)格要求的場(chǎng)合,需加全通網(wǎng)絡(luò)進(jìn)行較正,或選用FIR濾波器實(shí)現(xiàn)濾波功能。
IIR數(shù)字濾波器以它優(yōu)越的性能,在電力、通信和測(cè)控等領(lǐng)域得到廣泛應(yīng)用。本文針對(duì)TI公司的TMS320VC5416 DSP,敘述了IIR數(shù)字濾波器的理論設(shè)計(jì)及在DSP上的實(shí)現(xiàn)過程。根據(jù)其實(shí)現(xiàn)思路,可以很方便設(shè)計(jì)出符合要求的濾波器。該方法具有很強(qiáng)的實(shí)用性,對(duì)FIR濾波器的設(shè)計(jì)及濾波器在嵌入式系統(tǒng)中的實(shí)現(xiàn)也有很好的參考價(jià)值。通過“變壓器絕緣套管介損在線監(jiān)測(cè)”等測(cè)控系統(tǒng)中的濾波器設(shè)計(jì)和實(shí)現(xiàn)表明,設(shè)計(jì)方法簡單、方便、實(shí)現(xiàn)靈活,滿足工程實(shí)際要求。
參考文獻(xiàn)
1 邢培育,崔克清.一種基于TMS320C5402的數(shù)字IIR濾波器設(shè)計(jì)[J].數(shù)據(jù)采集與處理,2002;17(2):227~230
2 張雄偉,曹鐵勇.DSP芯片的原理與開發(fā)應(yīng)用(第2版)[M].北京:電子工業(yè)出版社,2001
3 高宇晨,戴居豐.改進(jìn)的IIR濾波器避免運(yùn)算溢出和定點(diǎn)DSP的實(shí)現(xiàn)[J]. 天津通信技術(shù),2001;(3):31~34
4 陳愛萍,胡曉東.基于MATLAB的IIR數(shù)字濾波器的設(shè)計(jì)[J]. 湖南工程學(xué)院學(xué)報(bào),2004;14(3):8~10
5 成躍樂,李東興,王文暢. MATLAB6.1環(huán)境下IIR數(shù)字濾波器的設(shè)計(jì)[J]. 山東理工大學(xué)學(xué)報(bào)(自然科學(xué)版),2003;17(5):82~85




