基于Matlab的FIR帶通濾波器設(shè)計(jì)及DSP實(shí)現(xiàn)
3 FIR數(shù)字帶通濾波器語音去噪的DSP實(shí)現(xiàn)
3.1 硬件結(jié)構(gòu)
圖3為FIR帶通濾波器的語音去噪硬件結(jié)構(gòu)框圖。系統(tǒng)主要由DSP芯片(TMS320C5402)、A/D轉(zhuǎn)換器(ADS7864)和D/A轉(zhuǎn)換器(DAC7625)組成。本文引用地址:http://butianyuan.cn/article/186064.htm
實(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ì)于語音信號(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的仿真過程可得到濾波器的級(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ù)沒有固定位置,但可以方便地完成濾波器窗口的自動(dòng)更新。考慮到本方案中使用的是匯編語言編程,還有N的階數(shù)較大,為提高速率,因此在選擇FIR濾波器的方式時(shí)選擇循環(huán)緩沖區(qū)實(shí)現(xiàn)z-1的方式。
對(duì)于N級(jí)的FIR濾波器,在數(shù)據(jù)存儲(chǔ)器中開辟一個(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ù)上述過程,在DAC7625的輸出端就得到濾波后的模擬信號(hào)。
為了精確地控制ADS7864的采樣率,使用TMS320C5402內(nèi)部的定時(shí)器控制采樣時(shí)間間隔T。設(shè)置定時(shí)器的定時(shí)時(shí)間等于采樣時(shí)間間隔T,并讓它工作在中斷方式,則定時(shí)器每過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中:
評(píng)論