姜恩華,袁廣宇,陳得寶,楊一軍
(淮北師范大學物理與電子信息學院,安徽淮北235000)
數字信號處理課程主要講述的經典數字濾波器,分為無限長脈沖響應IIR濾波器和有限長脈沖響應FIR濾波器兩種類型,如何開展數字濾波器實驗教學一直是數字信號處理課程教學的難點。本文采用雙線性變換法實現IIR濾波器的實驗設計,采用窗函數法實現FIR濾波器的實驗設計。在CCS集成開發環境下[1],采用C語言編寫程序,以IIR帶通濾波器實驗設計為例,討論IIR濾波器的實驗設計過程和程序實現。以FIR高通濾波器實驗設計為例,討論FIR濾波器的實驗設計過程和程序實現。并通過比較濾波器輸入序列x(n)和輸出序列y(n)的頻譜,驗證實驗結果的正確性。
文獻[2-3]探索了CCS用于“信號處理”課程的實驗教學,該方法需要DSP硬件設備的支持;文獻[4-5]探索了采用CCS和MATLAB相結合的方法,該方法需要MATLAB軟件的支持。本文研究通過CCS3.3軟件搭建完成數字濾波器實驗設計的軟件實驗環境,選擇C5402 Device Simulator作為軟件模擬器,根據數字濾波器實驗設計的數據和程序要求編寫CMD存儲器配置文件;通過CCS軟件菜單欄中的View菜單中的Graph子菜單中的time/frequency[6],并借助time/frequency菜單,觀察數字濾波器輸出序列y(n)的波形和頻譜。在CCS集成開發環境下,通過C語言編寫程序實現數字濾波器實驗設計,熟練掌握CCS軟件以工程文件組織程序文件的方法,首先建立一個工程文件[6],然后把程序文件添加到工程文件中,對工程文件進行編譯并加載到軟件仿真器中,然后運行程序,觀察數字濾波器設計的實驗結果。
IIR濾波器實驗設計主要分為三個步驟。首先,輸入序列x(n)設計;其次,根據IIR濾波器設計的技術指標,通過雙線性變換法,得到模擬濾波器的技術指標,通過模擬濾波器設計(例如:巴特沃斯濾波器設計),求得模擬濾波器的系統函數Ha(s),根據Ha(s)和H(z)的分子分母多項式系數關系表[7],求得系統函數H(z)的分子分母多項式的系數,從而得到IIR濾波器的常系數差分方程;再次,把x(n)和初始條件代入常系數差分方程,通過遞推方法求解常系數差分方程,由此求得IIR濾波器的輸出序列y(n)。本文以IIR帶通濾波器實驗設計為例,在CCS集成開發環境下,通過C語言編寫程序,討論IIR帶通濾波器實驗設計的過程。IIR低通、高通和帶阻濾波器也可以按照此方法進行設計。
假設IIR帶通濾波器的通帶下限截止頻率為ωp1,通帶上限截止頻率為ωp2,ω∈[-π,π]時,通帶范圍為ωp1≤|ω|≤ωp2,阻帶范圍為ωp2< |ω|≤π,0≤|ω|≤ωp1[8]。
假設IIR帶通濾波器的通帶歸一化截止頻率為:bandpass1=0.24;bandpass2=0.26,則IIR帶通濾波器的通帶截止頻率為:ωp1=bandpass1*2*pi=0.48π;ωp2=bandpass2*2*pi=0.52π。
根據通帶截止頻率ωp1和ωp2,設計的輸入序列x(n)如(1)式所示。
在C語言的main主函數中,把(1)轉換為C語言語句,假設輸入序列的長度為N=256,求出輸入序列x(n),借助time/frequency菜單觀察x(n)的時域波形如圖1所示,頻譜如圖2所示。
圖1 輸入序列x(n)的時域波形
圖2 輸入序列x(n)的頻譜
假設模擬低通濾波器的歸一化的系統函數如(2)所示。
通過對(2)去歸一化,把(2)轉換為IIR帶通濾波器的系統函數Ha(s),如(3)所示[7]。
根據通帶截止頻率ωp1和ωp2,通過雙線性變換法頻率變換公式,假設 T=2秒,把 ωp1和ωp2轉換為模擬域頻率Ωp1和Ωp2,如(4)所示。
根據IIR帶通濾波器的通帶寬度B=Ωp2-Ωp1和中心頻率=Ωp1*Ωp2計算公式,計算出通帶寬度B和通帶中心頻率Ω0,代入(3),求出模擬帶通濾波器的系統函數Ha(s)。
根據Ha(s)分子分母多項式系數,查找系數關系表[7],由于Ha(s)的階數為2,所以把系數關系表中k=2的公式轉換為C語言的語句,編寫求解H(z)的分子分母多項式系數的子程序,在C語言的main主函數中,調用此子程序,求得H(z)的分子分母多項式的系數,從而得到IIR帶通濾波器的常系數差分方程。
采用遞推方法求解IIR濾波器的常系數差分方程的步驟如下[7-9]:初始條件w2=w1=w0=0.
根據輸入序列x(n)和初始條件,在C語言的main函數中,把遞推方法求解差分方程的公式,轉換為C語言的語句,計算出IIR帶通濾波器的輸出序列y(n),借助time/frequency菜單觀察y(n)的時域波形如圖3所示,頻譜如圖4所示。比較輸入序列x(n)和輸出序列y(n)的頻譜,可以看出,輸出序列y(n)就是輸入序列x(n)的中頻成分。
圖3 輸出序列y(n)的時域波形
圖4 輸出序列y(n)的頻譜
FIR濾波器實驗設計主要分為三個步驟。首先,設計輸入序列x(n);其次,根據FIR濾波器的類型,設計其單位脈沖響應h(n);再次,編寫計算x(n)和h(n)的線性卷積子程序,計算FIR濾波器的輸出序列y(n)。本文以FIR高通濾波器實驗設計為例,在CCS集成開發環境下,通過C語言編寫程序,討論FIR高通濾波器的實驗設計過程,FIR低通、帶通和帶阻濾波器也可以按照此方法進行設計。
假設FIR數字高通濾波器的截止頻率ωc=0.1π,則設計的FIR高通濾波器的單位脈沖響應h(n)如(5)所示[8]。
圖5 單位脈沖響應h(n)的時域波形
圖6 單位脈沖響應h(n)的頻譜
在C語言的main主函數中,把(5)轉換為C語言語句,假設h(n)的長度N=128,計算單位脈沖響應h(n),借助time/frequency菜單觀察h(n)的時域波形如圖5所示,頻譜如圖6所示。
根據FIR高通濾波器的截止頻率ωc=0.1π,輸入序列x(n)設計為兩個正弦序列的疊加,其中一個正弦序列的頻率小于ωc,另一個正弦序列的頻率大于ωc,如(6)所示。在C語言的main主函數中,把(6)轉換為C語言語句,假設x(n)的長度N=128,計算出輸入序列x(n),借助time/frequency菜單觀察x(n)的時域波形如圖7所示,頻譜如圖8所示。
圖7 輸入序列x(n)的時域波形
圖8 輸入序列x(n)的頻譜
FIR高通濾波器的常系數差分方程就是輸入序列x(n)和單位脈沖響應h(n)的線性卷積計算公式,所以FIR高通濾波器的輸出序列y(n)可以通過計算x(n)和h(n)的線性卷積求出。計算線性卷積的步驟分為:翻轉、移位、相乘和求和[7-9],根據線性卷積的計算步驟編寫計算線性卷積的子程序,此程序采用兩重循環,外層循環為移位運算,循環變量為n,內層循環為相乘求和運算,循環變量為m,根據相乘求和的上下限確定內層循環的起始條件和終止條件,根據相乘求和時序列x(n)和h(n)的邊界確定相乘求和時存放序列x(n)和h(n)的數組的下標,通過C語言編寫線性卷積子程序。
在C語言的main主函數中,調用線性卷積子程序,計算輸入序列x(n)和單位脈沖響應h(n)的線性卷積,求出輸出序列y(n),借助time/frequency菜單觀察y(n)的時域波形如圖9所示,頻譜如圖10所示。比較輸入序列x(n)和輸出序列y(n)的頻譜,可以看出,輸出序列y(n)就是輸入序列x(n)的高頻成分,其周期N為16。
圖9 輸出序列y(n)的時域波形
圖10 輸出序列y(n)的頻譜
綜上所述,借助CCS3.3軟件,選擇C5402 Device Simulator作為軟件模擬器,搭建了IIR和FIR濾波器實驗設計的軟件環境,采用C語言編寫程序,采用雙線性變換法實現IIR濾波器實驗設計,采用窗函數法實現FIR濾波器實驗設計,實驗設計過程主要包括:首先,輸入序列x(n)設計。其次,通過求解IIR濾波器的系統函數H(z),得到IIR濾波器的常系數差分方程;FIR濾波器的單位脈沖響應h(n)設計。再次,通過遞推方法求解常系數差分方程,計算IIR濾波器的輸出序列y(n);通過計算輸入序列x(n)和單位脈沖響應h(n)的線性卷積,計算FIR濾波器的輸出序列y(n)。以IIR帶通濾波器和FIR高通濾波器實驗設計為例,詳細討論了IIR和FIR濾波器實驗設計過程。借助time/frequency菜單觀察輸入序列x(n)和輸出序列y(n)的時域波形和頻譜,比較x(n)和y(n)的頻譜,并驗證實驗結果的正確性。
[1]Code Composer Studio(CCS)集成開發環境(IDE)[EB/OL].(2014-01-02)[2014-04-05].http://www.ti.com.cn/tool/cn/CCSTUDIO.
[2]劉成云,陳振學,孔慧.基于CCS的“信號分析與處理”實驗教學[J].實驗室研究與探索,2010,29(11):97-100.
[3]謝海霞,孫志雄.FIR 濾波器的 DSP 實現[J].電子器件,2012,35(5):554-557.
[4]李波,王冬霞.MATLAB在CCS集成編程環境中應用的研究[J].渤海大學學報:自然科學版,2010,31(1):84-88.
[5]梅志紅,趙莉.基于CCS環境和MATLAB仿真的FIR數字濾波器實現[J].電氣電子教學學報,2005,27(3):44-47.
[6]彭啟琮.TI DSP集成化開發環境(CCS)使用手冊[M].北京:清華大學出版社,2007.
[7]丁玉美,高西全.數字信號處理[M].2版.西安:西安電子科技大學出版社,2001.
[8]程佩青.數字信號處理教程[M].3版.北京:清華大學出版社,2007.
[9]A.V.奧本海姆,R.W.謝弗,J.R.巴克.劉樹棠,黃建國,譯.離散時間信號處理[M].2 版.陜西:西安交通大學出版社,2001.