基于Matlab的FIR帶通濾波器設(shè)計(jì)及DSP實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
摘要:借助Matlab的FDATOOL濾波器設(shè)計(jì)分析軟件,設(shè)計(jì)了一種FIR數(shù)字帶通濾波器,并對(duì)一段含噪語(yǔ)音信號(hào)進(jìn)行濾波。利用匯編語(yǔ)言編程,在DSP上實(shí)現(xiàn)了該濾波器。實(shí)驗(yàn)結(jié)果表明,該數(shù)字帶通濾波器精確,穩(wěn)定性好,易于移植,具有很強(qiáng)的實(shí)用性與靈活性。
關(guān)鍵詞:FIR數(shù)字帶通濾波器;語(yǔ)音去噪;DSP;Matlab
0 引言
隨著電子技術(shù)的飛速發(fā)展,人們正逐步進(jìn)入數(shù)字化時(shí)代,數(shù)字濾波器越來(lái)越受到人們的關(guān)注,并且在近代電信設(shè)備和各類控制系統(tǒng)中的應(yīng)用極為廣泛,如語(yǔ)音處理、圖像處理、通信、電視、雷達(dá)、生物醫(yī)學(xué)信號(hào)處理等。數(shù)字濾波器根據(jù)其沖激響應(yīng)函數(shù)的時(shí)域特性,可分為有無(wú)限長(zhǎng)單位沖激響應(yīng)(IIR)濾波器和有限長(zhǎng)單位沖擊響應(yīng)(FIR)濾波器。IIR濾波器雖然可以利用模擬濾波器設(shè)計(jì)的結(jié)果,而模擬濾波器的設(shè)計(jì)有大量的圖表可查,方便簡(jiǎn)單,但它的相位是非線性的。圖像處理以及數(shù)據(jù)傳輸都要求信道具有線性相位,同時(shí)又可以具有任意的幅度特性。此外,F(xiàn)IR濾波器的單位沖激響應(yīng)是有限長(zhǎng)的,因而濾波器一定是穩(wěn)定的。隨著Matlab軟件和信號(hào)處理工具箱的不斷完善,可以利用Matl ab信號(hào)處理工具箱快速有效地實(shí)現(xiàn)數(shù)字濾波器的設(shè)計(jì)、分析和仿真。本文首先使用Matlab設(shè)計(jì)了一個(gè)FIR數(shù)字帶通濾波器,并對(duì)一段含噪語(yǔ)音信號(hào)進(jìn)行濾波,然后在TI公司生產(chǎn)的TMS320C5402芯片上具體實(shí)現(xiàn)了該濾波器。
1 FIR數(shù)字帶通濾波器設(shè)計(jì)原理
設(shè)FIR濾波器單位脈沖響應(yīng)h(n)長(zhǎng)度為N,其系統(tǒng)函數(shù)H(z)為:
FIR濾波器的設(shè)計(jì)任務(wù)是選擇有限長(zhǎng)度的h(n),使傳輸函數(shù)滿足技術(shù)要求。一般是先給定所要求的理想濾波器頻率響應(yīng),導(dǎo)出hd(n)。因?yàn)槔硐霝V波器的沖激響應(yīng)hd(n)是無(wú)限長(zhǎng)的非因果序列,而所要設(shè)計(jì)的是hd(n)是有限長(zhǎng)的FIR濾波器,所以要用有限長(zhǎng)序列hd(n)來(lái)逼近無(wú)限長(zhǎng)序列h(n)。設(shè):
由此可見(jiàn),窗函數(shù)不僅影響原信號(hào)在時(shí)域內(nèi)的波形,而且也影響頻域內(nèi)的波形。
2 用Matlab輔助設(shè)計(jì)與仿真
設(shè)計(jì)一個(gè)FIR濾波器,關(guān)鍵是要得到正確的h(n)系數(shù)。把生成的濾波器系數(shù)加載到目標(biāo)DSP程序中有兩種方式:
(1)把濾波器系數(shù)輸人到一個(gè)C語(yǔ)言的頭文件,在所建工程中添加該頭文件;
(2)直接把生成的濾波器系數(shù)加載到DSP程序的一個(gè)變量中。
本文采用第二種方法。選擇菜單File→Export打開(kāi)Export對(duì)話框,選擇Coefficient File(ASCII),指定輸出文件名,生成*fcf文件,就可以直接把生成的*fcf文件中的系數(shù)添加到DSP程序的變量中了。
在Matlab軟件平臺(tái)下,利用wavread函數(shù)對(duì)語(yǔ)音信號(hào)進(jìn)行采樣,記住采樣頻率和采樣點(diǎn)數(shù)。采樣值放在向量y中,fS表示采樣頻率(單位:Hz),bits表示采樣位數(shù)。根據(jù)語(yǔ)音信號(hào)的特點(diǎn)給出數(shù)字帶通FIR濾波器的性能指標(biāo):設(shè)置通帶頻率fp1=1 200 Hz,fp2=3 000 Hz,阻帶頻率fs1=1 000 Hz,fs2=3 200 Hz,抽樣頻率fs=8 000 Hz,阻帶最小衰減As=50 dB,通帶最大衰減Ap=1 dB。這里采用窗函數(shù)設(shè)計(jì)法設(shè)計(jì)FIR帶通濾波器。首先根據(jù)阻帶衰減選擇窗形狀,海明窗和布萊克曼窗等窗函數(shù)均可提供大于50 dB的衰減。由于海明窗可提供較小的過(guò)渡帶,所以選擇海明窗。根據(jù)ωp1=2fp1/fs;ωs1=2fs1/fs,B(帶寬)=ωp1-ωs1,N(窗口長(zhǎng)度)=ceil(6.6/B),n(階數(shù))=N-1;算出階數(shù)為132。在FDATo ol設(shè)計(jì)界面,按要求填寫(xiě)以上參數(shù),得到FIR數(shù)字帶通濾波器的仿真圖像,如圖1所示。
然后再用設(shè)計(jì)的FIR數(shù)字帶通濾波器對(duì)加噪的語(yǔ)音信號(hào)進(jìn)行濾波。在Matlab中,F(xiàn)IR濾波器利用函數(shù)fftfilt對(duì)信號(hào)進(jìn)行濾波。編寫(xiě)Matlab程序如下,實(shí)現(xiàn)上述功能。
程序中“quzao”為錄制的波形音頻文件(.wav),對(duì)加噪的語(yǔ)音信號(hào)進(jìn)行濾波仿真處理后,輸出結(jié)果如圖2所示。
3 FIR數(shù)字帶通濾波器語(yǔ)音去噪的DSP實(shí)現(xiàn)
3.1 硬件結(jié)構(gòu)
圖3為FIR帶通濾波器的語(yǔ)音去噪硬件結(jié)構(gòu)框圖。系統(tǒng)主要由DSP芯片(TMS320C5402)、A/D轉(zhuǎn)換器(ADS7864)和D/A轉(zhuǎn)換器(DAC7625)組成。
實(shí)現(xiàn)的核心器件采用TI公司生產(chǎn)的TMS320C5402芯片。該芯片采用先進(jìn)的修正哈佛結(jié)構(gòu),片內(nèi)共有8條總線、CPU、在片存儲(chǔ)器、在片外圍電路等硬件和高度專業(yè)化的指令系統(tǒng),使它的處理速度和容量大大提高,為數(shù)字濾波中的復(fù)雜算法的實(shí)現(xiàn)提供了良好的保證。
A/D轉(zhuǎn)換器采用TI公司生產(chǎn)的ADS7864芯片,它是一個(gè)高速(轉(zhuǎn)換時(shí)間2μs)12位精度,6通道的A/D轉(zhuǎn)換器件。它的最高工作頻率可達(dá)8 MHz,采樣率為500 kHz。根據(jù)奈奎斯特定理,信號(hào)的最高頻率不能高于250 kHz,這樣才不會(huì)有失真,而這個(gè)頻率對(duì)于語(yǔ)音信號(hào)的處理已經(jīng)足夠。
D/A轉(zhuǎn)換芯片采用DAC7625,它是一個(gè)4路12位D/A轉(zhuǎn)換器件,每路都有輸入寄存器和DAC寄存器,構(gòu)成雙緩沖結(jié)構(gòu),轉(zhuǎn)換時(shí)間為10μs。
3.2 軟件設(shè)計(jì)
3.2.1 數(shù)據(jù)組織方式
若輸入信號(hào)x(n)和濾波器的單位沖激響應(yīng)h(n)在頻域分別為,則其輸出信號(hào)的頻率響應(yīng)為。根據(jù)離散傅氏變換的性質(zhì),可以得到濾波系統(tǒng)的差分方程:
從上文Matlab的仿真過(guò)程可得到濾波器的級(jí)數(shù)N和濾波器系數(shù)h(n)。從上述可知數(shù)字濾波器實(shí)現(xiàn)時(shí),主要是進(jìn)行乘和加運(yùn)算以及數(shù)據(jù)存取操作。
在定點(diǎn)DSP上實(shí)現(xiàn)FIR濾波有兩種方式:一種是用線性緩沖區(qū)實(shí)現(xiàn)z-1,該方式能保證新老數(shù)據(jù)在存儲(chǔ)器中的存放位置直接明了,新的數(shù)據(jù)存放在緩沖區(qū)的固定位置;另一種方式是循環(huán)緩沖區(qū)實(shí)現(xiàn)z-1,該方式新老數(shù)據(jù)在緩沖區(qū)的位置不直接明了,新的數(shù)據(jù)沒(méi)有固定位置,但可以方便地完成濾波器窗口的自動(dòng)更新??紤]到本方案中使用的是匯編語(yǔ)言編程,還有N的階數(shù)較大,為提高速率,因此在選擇FIR濾波器的方式時(shí)選擇循環(huán)緩沖區(qū)實(shí)現(xiàn)z-1的方式。
對(duì)于N級(jí)的FIR濾波器,在數(shù)據(jù)存儲(chǔ)器中開(kāi)辟一個(gè)稱之為滑窗的N個(gè)單元的緩沖區(qū),滑窗中存放最新的N個(gè)輸入樣本。每次輸入新的樣本時(shí),一新樣本改滑窗中的最老數(shù)據(jù),而滑窗中的其他數(shù)據(jù)不需要移動(dòng)。利用片內(nèi)BK(循環(huán)緩沖區(qū)長(zhǎng)度)寄存器對(duì)滑窗進(jìn)行間接尋址,環(huán)緩沖區(qū)地址首位相鄰。
3.2.2 程序設(shè)計(jì)思路
程序設(shè)計(jì)的總體思路是:?jiǎn)?dòng)ADS7864對(duì)輸入的模擬信號(hào)進(jìn)行A/D轉(zhuǎn)換,每采集到一個(gè)數(shù)據(jù)就送入DSP進(jìn)行濾波運(yùn)算,運(yùn)算結(jié)果送DAC76 25轉(zhuǎn)換為模擬量。不斷地重復(fù)上述過(guò)程,在DAC7625的輸出端就得到濾波后的模擬信號(hào)。
為了精確地控制ADS7864的采樣率,使用TMS320C5402內(nèi)部的定時(shí)器控制采樣時(shí)間間隔T。設(shè)置定時(shí)器的定時(shí)時(shí)間等于采樣時(shí)間間隔T,并讓它工作在中斷方式,則定時(shí)器每過(guò)T時(shí)間間隔就向CPU發(fā)出中斷請(qǐng)求,CPU響應(yīng)中斷請(qǐng)求,轉(zhuǎn)去執(zhí)行中斷服務(wù)程序。在中斷服務(wù)程序中讀取A/D轉(zhuǎn)換結(jié)果,對(duì)轉(zhuǎn)換結(jié)果進(jìn)行濾波運(yùn)算,并將運(yùn)算結(jié)果送D/A轉(zhuǎn)換器轉(zhuǎn)換為模擬量。因此,程序分為主程序和定時(shí)器中斷服務(wù)程序兩部分,流程圖如圖4,圖5所示。
3.2.3 FIR濾波源程序
FIR濾波器指令,使用MAC指令執(zhí)行FIR濾波,將濾波輸出放在累加器A中:
3.2.4 結(jié)果分析
利用已做好的TMS320C5402開(kāi)發(fā)平臺(tái),下載在CCS中已經(jīng)通過(guò)編譯的數(shù)字帶通濾波器的程序,該程序的實(shí)驗(yàn)結(jié)果波形由CCS提供的顯示時(shí)頻圖來(lái)顯示。由于實(shí)際需求只涉及數(shù)字濾波器的幅頻特性,所以結(jié)果分析沒(méi)有對(duì)數(shù)字濾波器的相頻特性進(jìn)行討論。圖6和圖7分別為輸入信號(hào)與輸出信號(hào)的頻域圖。輸入信號(hào)的頻率為f1=600 Hz,f2=1 000 Hz,f3=2 000 Hz,f4=3 500 Hz和f5=3 900 Hz的混合正弦信號(hào),通過(guò)FIR數(shù)字帶通濾波器后,頻率為f1,f2,f4和f5的信號(hào)明顯削弱,甚至幾乎被濾去,而f3信號(hào)只有很少的衰減。說(shuō)明這個(gè)數(shù)字帶通濾波器有效地削弱了其他頻率的干擾信號(hào),提高了f3信號(hào)的質(zhì)量,達(dá)到了數(shù)字濾波的目的,能實(shí)現(xiàn)對(duì)語(yǔ)音信號(hào)的去噪。
4 結(jié)論
實(shí)踐證明,用Matlab軟件可方便地設(shè)計(jì)出FIR數(shù)字濾波器,并且修改系數(shù)方便。采用DSP實(shí)現(xiàn)FIR數(shù)字濾波器具有很強(qiáng)的適應(yīng)性和可移植性,是解決數(shù)字濾波器從設(shè)計(jì)到實(shí)現(xiàn)的有效辦法,具有一定的實(shí)際應(yīng)用價(jià)值。