姜恩華 ,崔少華,苗曙光,趙慶平,張亞萍
(淮北師范大學(xué) 物理與電子信息學(xué)院,安徽 淮北 235000)
數(shù)字濾波器設(shè)計(jì)及其濾波網(wǎng)絡(luò)結(jié)構(gòu)是數(shù)字信號(hào)處理課程的重要組成部分[1,2],如何有效開展數(shù)字濾波器及其濾波的實(shí)驗(yàn)教學(xué),是數(shù)字信號(hào)處理課程實(shí)驗(yàn)教學(xué)值得探討的問題[3]。
FDATool是MATLAB軟件提供的數(shù)字濾波器設(shè)計(jì)與分析軟件,采用圖形化的界面,能夠設(shè)計(jì)和分析IIR和FIR數(shù)字濾波器[4]。
CCS5.5軟件是TI公司發(fā)行的DSP集成開發(fā)環(huán)境[5],支持C語(yǔ)言程序設(shè)計(jì)。借助Texas Instruments Simulator/C55xx Rev3.0 CPU軟件模擬器,采用C語(yǔ)言編寫程序,完成IIR或FIR網(wǎng)絡(luò)濾波程序設(shè)計(jì),借助Tools/Graph菜單,觀察濾波前和濾波后的信號(hào)波形。
本文結(jié)合FDATool和CCS 5.5軟件,完成數(shù)字濾波器設(shè)計(jì)及其濾波實(shí)驗(yàn)設(shè)計(jì)。借助FDATool軟件完成IIR或FIR濾波器設(shè)計(jì),得到IIR或FIR濾波器的系數(shù),借助該系數(shù),在CCS 5.5軟件下,采用C語(yǔ)言編寫IIR或FIR網(wǎng)絡(luò)濾波程序,完成IIR或FIR濾波器的濾波實(shí)驗(yàn),實(shí)現(xiàn)對(duì)輸入序列的濾波。在實(shí)驗(yàn)過程中,實(shí)驗(yàn)步驟清晰,實(shí)驗(yàn)內(nèi)容豐富,實(shí)驗(yàn)現(xiàn)象明顯,取得了較好的實(shí)驗(yàn)效果。
通過FDATool軟件,根據(jù)IIR或FIR數(shù)字濾波器的技術(shù)指標(biāo),可以自動(dòng)進(jìn)行IIR或FIR數(shù)字濾波器設(shè)計(jì),觀察和分析該濾波器的幅頻特性和相頻特性。借助菜單File/Export導(dǎo)出IIR或FIR濾波器的系數(shù)。
通過FDATool軟件的圖形界面,進(jìn)行IIR數(shù)字濾波器設(shè)計(jì)[6,7]。在設(shè)計(jì)方法欄(Design Method)內(nèi),選擇IIR濾波器的設(shè)計(jì)方法,例如選擇巴特沃斯、切比雪夫和橢圓濾波器等設(shè)計(jì)方法。在響應(yīng)類型(Response Type)欄內(nèi),選擇濾波器的類型:低通、高通、帶通和帶阻。在濾波器階數(shù)(Filter Order)欄內(nèi),可以指定階數(shù),也可以選擇最小階數(shù)。在選項(xiàng)(Options)欄內(nèi),可以選擇阻帶匹配或通帶匹配。在頻率設(shè)置(Frequency Specifications)欄內(nèi),設(shè)置IIR數(shù)字濾波器的通帶和阻帶截止頻率,可以選擇數(shù)字域頻率或模擬域頻率。在幅度指定(Magnitude Specifications)欄內(nèi),設(shè)置通帶允許的最大衰減和阻帶允許的最小衰減。點(diǎn)擊設(shè)計(jì)濾波器(Design Filter)按鈕,自動(dòng)進(jìn)行濾波器設(shè)計(jì)。
通過菜單Edit/Convert Structure,可以得到IIR數(shù)字濾波器的級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu)的系數(shù)矩陣SOS和增益G,通過菜單Edit/Convert to single section,可以得到直接型網(wǎng)絡(luò)結(jié)構(gòu)系數(shù)分子多項(xiàng)式Num和分母多項(xiàng)式Dec.
通過FDATool軟件的圖形界面,進(jìn)行FIR數(shù)字濾波器設(shè)計(jì)[6,7]。在響應(yīng)類型(Response Type)欄內(nèi),選擇濾波器的類型:低通、高通、帶通和帶阻。在設(shè)計(jì)方法欄(Design Method)內(nèi),選擇FIR濾波器的設(shè)計(jì)方法,例如等波紋逼近法和窗函數(shù)法等設(shè)計(jì)方法,若選擇窗函數(shù)法,需要在選項(xiàng)(Options)欄內(nèi)指定窗函數(shù)。在濾波器階數(shù)(Filter Order)欄內(nèi),可以指定階數(shù),也可以選擇最小階數(shù)。在頻率設(shè)置(Frequency Specifications)欄內(nèi),設(shè)置IIR數(shù)字濾波器的通帶和阻帶截止頻率。
通過菜單Edit/Convert Structure,可以得到FIR數(shù)字濾波器直接型網(wǎng)絡(luò)結(jié)構(gòu)系數(shù)Num.
首先,在CCS 5.5軟件下,采用C語(yǔ)言,設(shè)計(jì)求解IIR濾波的線性常系數(shù)差分方程的程序,根據(jù)IIR濾波器的通帶和阻帶的截止頻率,設(shè)計(jì)輸入序列。其次,借助FDATool軟件,根據(jù)IIR濾波器的技術(shù)指標(biāo),設(shè)計(jì)IIR濾波器,得到IIR濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu)或級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu)的系數(shù)。借助該系數(shù),調(diào)用線性常系數(shù)差分方程的程序,完成對(duì)輸入序列的濾波。
IIR數(shù)字濾波器的線性常系數(shù)差分方程如式(1)所示。式(1)由兩部分組成,前半部分可以看作bi和x(i)的線性卷積,假設(shè)M=5,n為移位位數(shù)。由于數(shù)組下標(biāo)不能為負(fù)值,所以要求n-i≥0,數(shù)組x[i]存放輸入序列x(n),數(shù)組b[M+1]存放系數(shù)bi,如圖1所示,線性卷積表示為:
圖1 b[i]和x[i]的線性卷積
圖2 a[i]和y[i]的線性卷積
采用數(shù)組形式表示的線性常系數(shù)差分方程的表達(dá)式如式(2)所示,其中n為移位位數(shù)。
(2)
為了使實(shí)驗(yàn)現(xiàn)象明顯,容易觀察,一般選擇正弦信號(hào)作為輸入序列[8]。根據(jù)IIR濾波器的通帶和阻帶的截止頻率,確定輸入正弦序列的頻率。對(duì)于IIR數(shù)字帶通和帶阻濾波器,輸入序列x1(n)一般設(shè)計(jì)成式(3)所示,其中Fs為采樣頻率,f1、f2和f3為正弦信號(hào)的頻率。若f1=20 Hz、f2=70 Hz和f3=130 Hz,采樣頻率Fs=400 Hz,PI為3.14,輸入序列x2(i)如式(4)所示。其時(shí)域波形如圖3所示,頻域波形如圖4所示。
X1(n)=sin(2×PI×f1×n/Fs)+sin(2×PI×f2×n/Fs)+sin(2×PI×f3×n/Fs)
(3)
X2(i)=10×sin(2×PI×20×(i/Fs))+10×sin(2×PI×70×(i/Fs))+10×sin(2×PI×130×(i/Fs))
(4)
圖3 輸入序列x2(n)的時(shí)域波形
圖4 輸入序列x2(n)的頻域波形
通過FDATool軟件,可以得到IIR數(shù)字濾波器系統(tǒng)函數(shù)H(z)分子多項(xiàng)式系數(shù)Num和分母多項(xiàng)式系數(shù)Dec,IIR濾波器的系統(tǒng)函數(shù)H(z)如式(5)所示[9]。
(5)
根據(jù)式(5)可以畫出IIR數(shù)字濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu)[10],如圖5所示。若系數(shù)bi和輸入序列x(i)存放在數(shù)組b[M+1]和數(shù)組x[L],L為輸入序列x(i)的長(zhǎng)度。若系數(shù)ai和輸出序列y(i)存放在數(shù)組a[N+1]和數(shù)組y[L],L為輸出序列y(i)的長(zhǎng)度。采用C語(yǔ)言表示的計(jì)算式(2)的算法如圖6所示。
圖5 IIR直接型網(wǎng)絡(luò)結(jié)構(gòu)
圖6 計(jì)算線性常系數(shù)差分方程的C語(yǔ)言算法
采用IIR直接型網(wǎng)絡(luò)結(jié)構(gòu)完成濾波,以IIR數(shù)字帶通濾波器為例,其技術(shù)指標(biāo)為:Fs=400 Hz,fs1=30 Hz,fp1=50 Hz,fp2=90 Hz,fs2=110 Hz,αp=1,αs=40,選擇橢圓濾波器設(shè)計(jì)方法。在FDATool軟件界面內(nèi),輸入以上技術(shù)指標(biāo),點(diǎn)擊設(shè)計(jì)濾波器(Design Filter)按鈕,自動(dòng)進(jìn)行濾波器設(shè)計(jì)。通過菜單Edit/Convert to single section,通過菜單File/Export導(dǎo)出直接型網(wǎng)絡(luò)結(jié)構(gòu)系數(shù)。即IIR數(shù)字帶通濾波器的系統(tǒng)函數(shù)分子多項(xiàng)式系數(shù)Num和分母多項(xiàng)式Dec,把分子多項(xiàng)式系數(shù)Num存入數(shù)組b[M+1]中,如式(6)所示,把分母多項(xiàng)式Dec存入數(shù)組a[N+1]中,如式(7)所示。
b[9]=[0.0197,-0.0457,0.0633,-0.0796,0.0926,-0.0796,0.0633,-0.0457,0.0197]
(6)
a[9]=[1.0, -3.3572,7.3422,-10.4859,11.4808,-9.0686,5.4852,-2.1541,0.5554]
(7)
在CCS 5.5軟件下,借助Texas Instruments Simulator/C55xx Rev3.0 CPU軟件模擬器,把式(4)表示的輸入信號(hào)作為輸入序列x(n),其長(zhǎng)度L為64.
按照?qǐng)D6所示的C語(yǔ)言程序,編寫IIR數(shù)字帶通濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu)濾波程序,對(duì)輸入序列進(jìn)行濾波。借助Tools/Graph菜單,觀察輸出序列的時(shí)域波形如圖7所示,頻譜如圖8所示。比較圖8和圖4,可以看出,低頻信號(hào)和高頻信號(hào)被阻止,帶通信號(hào)通過IIR數(shù)字帶通濾波器。
圖7 IIR帶通濾波器輸出序列y(n)的時(shí)域波形
圖8 IIR帶通濾波器輸出序列y(n)的頻譜
對(duì)式(5)進(jìn)行因式分解,可以得到IIR濾波器的級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu),如圖9所示,采用數(shù)組形式表示的第k級(jí)基本二階網(wǎng)絡(luò)結(jié)構(gòu)對(duì)應(yīng)的線性常系數(shù)差分方程如式(6)所示。
圖9 IIR級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu)
采用IIR級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu)完成濾波,以IIR數(shù)字帶阻濾波器為例,其技術(shù)指標(biāo)為:采樣頻率Fs=400 Hz,通帶截止頻率:fp1=30 Hz,fp2=90 Hz,阻帶截止頻率:fs1=50 Hz,fs2=110 Hz,通帶允許的最大衰減為αp=1,阻帶允許的最小衰減為αs=40.選擇橢圓濾波器設(shè)計(jì)方法。在FDATool軟件界面內(nèi),輸入以上技術(shù)指標(biāo),點(diǎn)擊設(shè)計(jì)濾波器(Design Filter)按鈕,自動(dòng)進(jìn)行濾波器設(shè)計(jì)。通過菜單Edit/Convert Structure,可以得到IIR數(shù)字帶阻濾波器的級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu)的系數(shù)矩陣SOS和增益G,如式(7)所示。
(7)
在CCS 5.5軟件下,借助Texas Instruments Simulator/C55xx Rev3.0 CPU軟件模擬器,參考圖6所示的C語(yǔ)言程序,編寫IIR數(shù)字帶阻濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu)濾波程序,對(duì)輸入序列x(n)進(jìn)行濾波。采用式(4)表示的輸入信號(hào)作為輸入序列x(n),其長(zhǎng)度為64.借助Tools/Graph菜單,觀察輸出序列y(n)的時(shí)域波形如圖10所示,頻譜如圖11所示。比較圖11和圖4,可以看出帶通信號(hào)被阻止,低頻信號(hào)和高頻信號(hào)通過IIR數(shù)字帶阻濾波器。
圖10 IIR帶阻濾波器輸出序列y(n)的時(shí)域波形
圖11 IIR帶阻濾波器輸出序列y(n)的頻譜
首先,在CCS 5.5軟件下,采用C語(yǔ)言,設(shè)計(jì)求解FIR濾波的線性卷積程序,根據(jù)FIR濾波器的通帶和阻帶的截止頻率,設(shè)計(jì)輸入序列。其次,借助FDATool軟件,根據(jù)FIR濾波器的技術(shù)指標(biāo),設(shè)計(jì)FIR濾波器,得到FIR濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu)的系數(shù)。借助該系數(shù),調(diào)用線性卷積的程序,完成對(duì)輸入序列的濾波。
采用FDATool軟件,可以設(shè)計(jì)FIR數(shù)字濾波器,得到其單位脈沖響應(yīng)h(n),借助菜單File/Export導(dǎo)出FIR濾波器的系數(shù)Num或單位脈沖響應(yīng)h(n),畫出FIR濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu),如圖12所示,F(xiàn)IR數(shù)字濾波器的線性常系數(shù)差分方程如式(8)所示,式(8)表示單位脈沖響應(yīng)h(n)與輸入序列x(n)的線性卷積[11]。
(8)
圖12 FIR直接型濾波網(wǎng)絡(luò)結(jié)構(gòu)
圖13 FIR濾波器的h(n)時(shí)域波形
采用FIR直接型網(wǎng)絡(luò)結(jié)構(gòu)完成濾波,以FIR數(shù)字低通濾波器為例,其技術(shù)指標(biāo)為:fp=30 Hz,fs=60 Hz,αp=1,αs=40,F(xiàn)s=400 Hz.采用窗函數(shù)設(shè)計(jì)方法,窗函數(shù)為kaiser凱塞窗函數(shù)。在FDATool軟件界面內(nèi),輸入以上技術(shù)指標(biāo),點(diǎn)擊設(shè)計(jì)濾波器(Design Filter)按鈕,完成FIR數(shù)字低通濾波器設(shè)計(jì),其階數(shù)N-1為30.借助菜單File/Export導(dǎo)出FIR濾波器的單位脈沖響應(yīng)h(n),如圖13所示??梢钥闯鰄(n)偶對(duì)稱,N=31,把h(n)存入數(shù)組h[N]。
在CCS 5.5軟件下,借助Texas Instruments Simulator/C55xx Rev3.0 CPU軟件模擬器。采用式(4)表示的輸入信號(hào)作為輸入序列x(n),其長(zhǎng)度為L(zhǎng)=128,輸入序列x(n)存放在數(shù)組x[L]中。參考圖6所示的C語(yǔ)言程序,編寫計(jì)算h(n)與x(n)的線性卷積程序,完成對(duì)輸入序列x(n)的濾波[12]。借助Tools/Graph菜單,觀察輸出序列y(n)的時(shí)域波形如圖14所示,頻譜如圖15所示。比較圖15和圖4,可以看出,帶通信號(hào)和高頻信號(hào)被阻止,低頻信號(hào)通過FIR數(shù)字低通濾波器。
圖14 FIR帶阻濾波器輸出序列y(n)的時(shí)域波形
圖15 FIR帶阻濾波器輸出序列y(n)的頻譜
本文結(jié)合FDATool軟件和TI公司的CCS 5.5軟件,完成數(shù)字濾波器設(shè)計(jì)及其濾波實(shí)驗(yàn)。借助FDATool軟件完成IIR或FIR濾波器設(shè)計(jì),求得IIR帶通濾波器的直接型網(wǎng)絡(luò)結(jié)構(gòu)的分子多項(xiàng)式系數(shù)Num和分母多項(xiàng)式的系數(shù)Dec,求得IIR帶阻濾波器的級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu)的系數(shù)SOS和增益G,求得FIR濾波器的單位脈沖響應(yīng)h(n)。詳細(xì)論述了線性常系數(shù)差分方程的求解方案。在CCS 5.5軟件下,采用C語(yǔ)言編寫IIR或FIR濾波的程序,完成IIR直接型網(wǎng)絡(luò)結(jié)構(gòu)的帶通濾波,IIR級(jí)聯(lián)型網(wǎng)絡(luò)結(jié)構(gòu)的帶阻濾波,F(xiàn)IR直接型網(wǎng)絡(luò)結(jié)構(gòu)的低通濾波,實(shí)現(xiàn)對(duì)輸入序列x(n)的濾波。仿真實(shí)驗(yàn)結(jié)果表明,該實(shí)驗(yàn)方案,實(shí)驗(yàn)現(xiàn)象明顯,步驟清晰,內(nèi)容豐富,取得了較好的實(shí)驗(yàn)效果。
The comprehensive experimental design of the digital filter based on the FDATool and the CCS software
JIANG En-hua,CUI Shao-hua,MIAO Shu-guang,ZHAO Qing-ping,ZHANG Ya-ping