《電子技術(shù)應用》
您所在的位置:首頁 > 嵌入式技术 > 业界动态 > 基于DSP的IIR数字滤波器的设计与实现

基于DSP的IIR数字滤波器的设计与实现

《电子技术应用》
2008-03-27
作者:杨达亮, 王巨丰

  摘 要: 敘述了IIR數(shù)字濾波器" title="數(shù)字濾波器">數(shù)字濾波器的設計原理及其在DSP上的實現(xiàn)思路,并對用DSP實現(xiàn)IIR數(shù)字濾波的方法進行了分析。用MATLAB計算出IIR數(shù)字濾波器的系數(shù),考慮到溢出問題,采用級聯(lián)" title="級聯(lián)">級聯(lián)的形式對濾波器進行分解,最后在TMS320VC5416 DSP上得以實現(xiàn),并通過CCS(come composer studio)的輸入輸出功能和RTDX(real-time data exchange)的功能保證實現(xiàn)結(jié)果和仿真結(jié)果的一致性。
  關(guān)鍵詞: IIR數(shù)字 濾波器 DSP 算法


  數(shù)字濾波器在各種數(shù)字信號處理中發(fā)揮著十分重要的作用,數(shù)字濾波器設計一直是信號處理領(lǐng)域的重要研究課題。常用的數(shù)字濾波器有FIR濾波器和IIR濾波器,其中IIR數(shù)字濾波器因具有結(jié)構(gòu)簡單、占用存儲空間少、運算速度快、較高的計算精度和能夠用較低的階數(shù)實現(xiàn)較好的選頻特性等特點[1],得到了廣泛應用。DSP芯片有適合于數(shù)字信號處理的軟件資源和硬件資源,是實現(xiàn)數(shù)字信號處理的重要途徑[2]。目前所見文獻,多數(shù)為濾波器的模型設計,所得結(jié)果也是在MATLAB等實驗環(huán)境下模擬仿真完成的,帶有很大的局限性。本文討論IIR數(shù)字濾波器在DSP上的實現(xiàn)思路,并對其實現(xiàn)方法" title="實現(xiàn)方法">實現(xiàn)方法進行了分析。
1 數(shù)字IIR濾波器的理論設計分析
  數(shù)字濾波器實際上是一個采用有限精度算法實現(xiàn)的線性非時變離散系統(tǒng),濾波器的功能實現(xiàn)實際上是通過大量的加法運算和乘法運算完成的。IIR數(shù)字濾波器差分方程的一般形式為:
  

  從IIR數(shù)字濾波器的實現(xiàn)來看,有直接型、級聯(lián)型、并聯(lián)型和格型等基本網(wǎng)絡結(jié)構(gòu)。不同的結(jié)構(gòu)形式會有不同的運算誤差,其穩(wěn)定性、運算速度、所占用的存儲空間等也有所不同[3]。其中直接Ⅱ型僅需要N級延遲單元,且可作為級聯(lián)型和并聯(lián)型結(jié)構(gòu)中的基本單元,是最常用的IIR數(shù)字濾波器結(jié)構(gòu)之一。
  IIR數(shù)字濾波器的設計方法" title="設計方法">設計方法有兩類[4],一類是借助于模擬濾波器的設計方法設計出模擬濾波器,利用沖激響應不變法或雙線性變換法轉(zhuǎn)換成數(shù)字濾波器,然后用硬件或軟件實現(xiàn);另一類是直接在頻域或時域中進行設計,設計時需要計算機作輔助工具。對系統(tǒng)傳遞函數(shù)為
  
的IIR數(shù)字波濾器來說,設計的任務就是尋求一種因果關(guān)系和物理上可實現(xiàn)的系統(tǒng)傳遞函數(shù)H(z),使其頻率響應H(e)能夠滿足所希望得到的頻域指標。
2 IIR數(shù)字濾波器在DSP上的實現(xiàn)方法及實現(xiàn)過程
2.1 IIR數(shù)字濾波器在DSP上的實現(xiàn)步驟和條件

  IIR數(shù)字濾波器在DSP上的設計過程如下:
  (1)根據(jù)指標確定濾波器的類型,設計出濾波器的參數(shù);
  (2)根據(jù)DSP的特點(字長、精度等)對參數(shù)進行取舍、量化,然后進行仿真;
  (3)根據(jù)仿真結(jié)果對濾波器的結(jié)構(gòu)、參數(shù)再次進行調(diào)整,直到滿足要求為止;
  (4)在DSP上用語言實現(xiàn)濾波器功能。
  定點DSP芯片,既可以做定點運算,也可以做浮點運算。一個算法,既可以用匯編語言編程實現(xiàn),也可以用高級語言(C,C++)實現(xiàn)。而一個IIR數(shù)字濾波器是否可以在DSP上實現(xiàn),最終要看此算法是否滿足兩個條件:執(zhí)行時間和精度。一個算法的精度再高,如果做不到實時,也沒有實用價值;相反,如果執(zhí)行時間很快,但精度滿足不了要求,也就無從實現(xiàn)濾波功能。IIR數(shù)字濾波器在DSP上的實現(xiàn)思路,應該是在滿足上面兩個條件的前提下,找到盡可能簡易的實現(xiàn)方法。
2.2 IIR數(shù)字濾波器在TMS320VC5416 DSP上的實現(xiàn)過程
  借助于計算機強大的仿真功能,在MATLAB環(huán)境下設計一個IIR數(shù)字濾波器變得十分容易[5]。但是要在DSP上實現(xiàn)此濾波器功能,則需要對濾波器的結(jié)構(gòu)、系數(shù)等參數(shù)進行改進。下面以一個低通IIR數(shù)字濾波器在DSP芯片TMS320VC5416上的實現(xiàn)為例,敘述其實現(xiàn)過程。
  TMS320VC5416是DSP芯片的主要供應商TI公司最近推出的5000系列中的高性能DSP,該處理器為16位定點DSP,最高運算速度可達160MIPS,內(nèi)帶256KB的RAM,有128KB的數(shù)據(jù)空間,最大程序容量高達16MB,有3個McBSP和6個DMA通道并且支持外部DMA,內(nèi)核電壓低至1.5V。其CPU由于運算速度快、內(nèi)部資源充足、接口靈活、功耗低,非常適合做復雜算法運算。
  低通IIR數(shù)字濾波器的參數(shù)如下:采樣率為16000Hz,截止頻率為500Hz,采用butterworth模型設計時階數(shù)為7階,在MATLAB6.5環(huán)境下得到的b系數(shù)和a系數(shù)如表1所示。


  從理論上說,可以用高階" title="高階">高階IIR數(shù)字濾波器實現(xiàn)良好的濾波效果。但由于DSP本身有限字長和精度的因素,加上IIR濾波器在結(jié)構(gòu)上存在反饋回路,是遞歸型的,再者高階濾波器參數(shù)的動態(tài)范圍很大。這樣一來造成兩個后果:結(jié)果溢出和誤差增大,從而導致算法無法在DSP上實現(xiàn)。
  解決此問題的有效方法是把高階IIR數(shù)字濾波器簡化成幾個2階濾波器來設計,即采用級聯(lián)結(jié)構(gòu)。因此系統(tǒng)函數(shù)為:
  H(z)=H1(z)H2(z)…Hn(z)      (3)
  上述7階IIR數(shù)字濾波器采用級聯(lián)的結(jié)構(gòu)后變成4個濾波器級聯(lián)的形式,每個濾波器的系數(shù)如表2所示。


  TMS320VC5416是16位DSP。在CCS下,它的浮點數(shù)格式占用兩個字,即32bit。通過CCS的數(shù)據(jù)輸入輸出功能和RTDX功能,可以隨時觀察DSP結(jié)果和理論仿真結(jié)果之間的差異,及時發(fā)現(xiàn)數(shù)據(jù)的溢出和計算誤差。對表2的系數(shù)取7個有效位(在CCS下浮點數(shù)的有效位為7位),計算結(jié)果如圖1所示。


  圖中為輸入和濾波后的波形,信號頻率為500Hz。從圖中可以看出,濾波沒有產(chǎn)生溢出現(xiàn)象且濾波效果滿足設計要求。


  程序流程如圖2。采用間接尋址指向數(shù)據(jù)存儲單元,主要指令為加法、乘法和循環(huán)實現(xiàn),這些都可以通過MAC等指令直接實現(xiàn)。需注意的是要對乘法運算結(jié)果進行溢出保護。另外,因為主程序框架采用C結(jié)構(gòu),而算法由匯編語言實現(xiàn),所以要注意不同環(huán)境下尋址方式的區(qū)別,當從C環(huán)境進入直接尋址時,要先確定DP值,以免帶來不確定的計算結(jié)果。數(shù)據(jù)采集時要先通過DSP的DMA功能將輸入數(shù)據(jù)保存在外部SRAM中,采樣結(jié)束后再將要濾波的數(shù)據(jù)通過DMA載入內(nèi)部RAM中,從而提高處理速度。考慮到IIR數(shù)字濾波器的運算特點,某一時刻的輸入數(shù)據(jù)參加一次運算后不再參與下次運算,只有各級濾波器輸出結(jié)果需要參與多次運算,因此濾波結(jié)果和輸入數(shù)據(jù)可以共用同一存儲地址,從而節(jié)省存儲空間。
  除此之處,還要注意以下問題:
  (1)IIR數(shù)字濾波器是針對采樣率固定的系統(tǒng)設計的,更改系統(tǒng)或系統(tǒng)采樣率改變時應重新設計。
  (2)用到的數(shù)據(jù)存儲單元,程序開始時應對這些單元進行初始化。如果要進行連續(xù)濾波,應保存上一次濾波的結(jié)果。
  (3)IIR數(shù)字濾波器的濾波結(jié)果會引起相位的延遲,故對相位嚴格要求的場合,需加全通網(wǎng)絡進行較正,或選用FIR濾波器實現(xiàn)濾波功能。
  IIR數(shù)字濾波器以它優(yōu)越的性能,在電力、通信和測控等領(lǐng)域得到廣泛應用。本文針對TI公司的TMS320VC5416 DSP,敘述了IIR數(shù)字濾波器的理論設計及在DSP上的實現(xiàn)過程。根據(jù)其實現(xiàn)思路,可以很方便設計出符合要求的濾波器。該方法具有很強的實用性,對FIR濾波器的設計及濾波器在嵌入式系統(tǒng)中的實現(xiàn)也有很好的參考價值。通過“變壓器絕緣套管介損在線監(jiān)測”等測控系統(tǒng)中的濾波器設計和實現(xiàn)表明,設計方法簡單、方便、實現(xiàn)靈活,滿足工程實際要求。
參考文獻
1 邢培育,崔克清.一種基于TMS320C5402的數(shù)字IIR濾波器設計[J].數(shù)據(jù)采集與處理,2002;17(2):227~230
2 張雄偉,曹鐵勇.DSP芯片的原理與開發(fā)應用(第2版)[M].北京:電子工業(yè)出版社,2001
3 高宇晨,戴居豐.改進的IIR濾波器避免運算溢出和定點DSP的實現(xiàn)[J]. 天津通信技術(shù),2001;(3):31~34
4 陳愛萍,胡曉東.基于MATLAB的IIR數(shù)字濾波器的設計[J]. 湖南工程學院學報,2004;14(3):8~10
5 成躍樂,李東興,王文暢. MATLAB6.1環(huán)境下IIR數(shù)字濾波器的設計[J]. 山東理工大學學報(自然科學版),2003;17(5):82~85

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。

相關(guān)內(nèi)容