基于dsp的語音采集及濾波器設(shè)計_第1頁
基于dsp的語音采集及濾波器設(shè)計_第2頁
基于dsp的語音采集及濾波器設(shè)計_第3頁
基于dsp的語音采集及濾波器設(shè)計_第4頁
基于dsp的語音采集及濾波器設(shè)計_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、基于DSP的語音采集與FIR濾波器的設(shè)計與實現(xiàn)摘 要: 介紹了一種基于TMS320C5402的語音采集與FIR數(shù)字濾波器的設(shè)計與實現(xiàn), 采用TLC320AD50作為語音CODEC模塊的核心器件, 簡述了FIR數(shù)字濾波器的特點,以及其在DSP上實現(xiàn)的原理。利用TMS320C5402對采集到的語音信號進行FIR濾波, 該系統(tǒng)具有較強的數(shù)據(jù)處理能力和靈活的接口電路,能夠滿足語音信號濾波的要求, 可以擴展為語音信號處理的通用平臺.關(guān) 鍵 詞: 語音采集; FIR濾波器; TMS320C5402數(shù)字信號處理是把數(shù)字或符號表示的序列, 通過計算機或?qū)S锰幚碓O(shè)備, 用數(shù)字的方式去處理, 以達(dá)到更符合人們要求

2、的信號形式。而語音處理是數(shù)字信號處理最活躍的研究方向之一, 在IP電話和多媒體通信中得到廣泛應(yīng)用. 一個完備的語音信號處理系統(tǒng)不但要具有語音信號的采集和回放功能, 還要能夠進行復(fù)雜的語音信號分析和處理。通常這些信號處理算法的運算量很大, 而且又要滿足實時的快速高效處理要求, 隨著DSP技術(shù)的發(fā)展, 以DSP為內(nèi)核的設(shè)備越來越多, 為語音信號的處理提供了優(yōu)質(zhì)可靠的平臺. 軟件編程的靈活性給很多設(shè)備增加不同的功能提供了方便, 利用軟件在已有的硬件平臺上實現(xiàn)不同的功能已成為一種趨勢。 本文設(shè)計了一個語音處理系統(tǒng), 采用定點DSP芯片TMS320C5402作為CPU, 完成對語音信號的采集和濾波處理.

3、1 語音采集系統(tǒng)的設(shè)計1. 1 系統(tǒng)總體設(shè)計語音采集與處理系統(tǒng)主要包括3個主要部分: 以TMS320C5402 為核心的數(shù)據(jù)處理模塊; 以TLC320AD50為核心的語音采集與編解碼( CODEC)模塊; 用戶根據(jù)需要擴展的存儲器模塊. 系統(tǒng)硬件結(jié)構(gòu)如圖1所示.1. 1. 1 CODEC模塊 本設(shè)計選用TLC320AD50( 以下簡稱AD50) 完成語音信號的A/ D轉(zhuǎn)換和D/ A轉(zhuǎn)換. AD50是TI公司生產(chǎn)的一款集成有A/ D和D/ A的音頻芯片, DSP與音頻AD50連接后, 可使用一個緩沖串行口來同時實現(xiàn)語音信號的采集和輸出, 從而可以節(jié)省DSP的硬件開銷. AD50使用過采樣技術(shù)提供

4、從數(shù)字信號到模擬信號和模擬信號到數(shù)字信號的高分辨率低速信號轉(zhuǎn)換. 該器件包括2個串行的同步轉(zhuǎn)換通道, 分別用于各自的數(shù)據(jù)傳輸. 語音信號直接從AD50的模擬信號輸入端輸入, AD50對其進行采樣, 并將采樣后的數(shù)據(jù)傳送至DSP. DSP應(yīng)用相應(yīng)的算法對數(shù)據(jù)進行處理, 并將處理后的數(shù)據(jù)傳送到AD50的D/ A輸入端. AD50再對DSP處理后的數(shù)據(jù)進行數(shù)模轉(zhuǎn)換, 變?yōu)檎Z音信號后輸出到音響設(shè)備. 本系統(tǒng)中TLC320AD50與TMS320C5402之間采用串行通信, 通過DSP芯片的MCBSP串口實現(xiàn).接口電路如圖2所示.1. 1. 2 MCBSP的工作原理TMS320C5402有2個McBSP

5、多通道緩存串行口. McBSP提供了全雙工的通信機制, 以及雙緩存的發(fā)送寄存器和三緩存的接收寄存器, 允許連續(xù)的數(shù)據(jù)流傳輸, 數(shù)據(jù)長度可以為8、12、16、20、24、32; 同時還提供了A律和L律壓擴. 數(shù)據(jù)信號經(jīng)DR和DX引腳與外設(shè)通訊, 控制信號則由CLKX、CLKR、FSX、FSR等4個引腳來實現(xiàn) 4. CPU和DMA控制器可以讀取DRR 1, 2 的數(shù)據(jù)實現(xiàn)接收, 并且可以對DXR 1, 2 寫入數(shù)據(jù)實現(xiàn)發(fā)送. 串行口控制寄存器SPCR 1, 2 和引腳控制寄存器PCR用來配置串行口; 接收控制寄存器RCR 1, 2 和發(fā)送控制寄存器XCR 1, 2用來設(shè)置接收通道和發(fā)送通道的參數(shù);

6、 采樣率發(fā)生器寄存器SRGR 1, 2 用來設(shè)置采樣率. TMS320C5402芯片串口控制寄存器功能強大, 用戶通過編程不但可以設(shè)置時鐘信號的極性及輸入輸出方向, 還可以設(shè)置同步信號的極性及輸入輸出方向.1. 1. 3 AD50與DSP的同步通信在應(yīng)用中, 將TLC320AD50C接至DSP的同步串口, 并將TLC320AD50設(shè)置在主動工作模式下, 即由TLC320AD50 提供幀同步信號和移位時鐘,TMS320C5402的管腳電壓為3. 3V, 可以與AD50直接相連. 串口的移位時鐘SCLK由AD發(fā)出, 串行數(shù)據(jù)在SCLK的驅(qū)動下經(jīng)DIN、DOUT 移進、移出, 在SCLK的下降沿采樣

7、DIN數(shù)據(jù), 在SCLK下降沿送出數(shù)據(jù)到DOUT. XF控制首次或二次通信, XF為低時是AD50的首次通信, 是正常的AD、DA的數(shù)據(jù); XF為高時是AD50的二次通信, 這時可以讀寫AD50的4個寄存器. 進入二次通信有軟件的方法, 即把AD50設(shè)為15+1位數(shù)據(jù)模式, 最后一位標(biāo)記下一個數(shù)據(jù)是否為二次通信數(shù)據(jù), 1表示是, 0表示否.一次通信格式的16位都用來傳輸數(shù)據(jù). DAC的數(shù)據(jù)長度由寄存器1的D0位決定. 啟動和復(fù)位時, 默認(rèn)值為15+ 1模式, 最后一位要求二次通信. 如果工作在16位傳輸模式下, 則必須由FC產(chǎn)生二次通信請求. 二次通信格式則用來初始化和修改TLC320AD50

8、C內(nèi)部寄存器的值. 在二次通信中可通過向DIN寫數(shù)據(jù)來完成初始化.二次通信格式如圖3所示, D13= 1表示讀DIN的數(shù)據(jù), D13= 0表示向DIN寫數(shù)據(jù).系統(tǒng)復(fù)位后, 必須通過DSP 的DX接口向TLC320AD50C的DIN 寫數(shù)據(jù), 因為采用一片TLC320AD50C, 只需初始化寄存器1、寄存器2、寄存器4. 由于通信數(shù)據(jù)長度為16位, 初始化是應(yīng)通過RCR1和XCR1設(shè)置McBSP的傳輸數(shù)據(jù)長度為16.2 語音采集語音信號的采集, 是通過話筒經(jīng)模擬放大輸入到AD50, AD50作相應(yīng)的低頻濾波并進行A/ D轉(zhuǎn)化, 再通過MCBSP通道輸入DSP芯片. 語音信號采集程序包括以下幾個部

9、分:( 1) DSP初始化. 對DSP的寄存器以及緩沖串口進行初始化.( 2) AD50初始化. 通過DSP的緩沖串口和XF引腳對AD50進行初始化, 再設(shè)置AD50的4個控制寄存器; 確定AD50的4個控制寄存器設(shè)置正確后,AD50才能開始采集數(shù)據(jù). 此時, 可以用示波器檢測AD50的DOUT引腳, 能發(fā)現(xiàn)引腳是否有連續(xù)的信號輸出.( 3) 設(shè)置DSP的中斷, 從緩沖串口讀取數(shù)據(jù). 如果此時在緩沖串口連續(xù)讀取數(shù)據(jù), 就可以在仿真軟件CCS中查看讀取的數(shù)據(jù)是否正確.( 4) DSP存放數(shù)據(jù). 可以將緩沖串口讀取的數(shù)據(jù)存放到DSP的RAM單元, 連續(xù)存放, 可通過CCS的圖形顯示功能判斷AD50

10、采樣的數(shù)據(jù)是否正確.3 語音濾波語音去噪在語音信號上應(yīng)用較多, 在實質(zhì)上和普通的數(shù)字信號去噪沒有什么區(qū)別, 使用濾波器和各種算法均可以實現(xiàn)語音信號的去噪, 使得含有噪聲的信號更加清晰. 但語音信號的去噪和一般的數(shù)字信號去噪又存在著很大的差別, 因為語音信號的頻譜覆蓋在100Hz3. 4kHz, 較為豐富的信號主要集中在1kHz附近, 所以一般的濾波去噪時必須考慮語音信號的自身特征.本系統(tǒng)中應(yīng)用的AD50內(nèi)置了低通濾波器, 可以通過設(shè)置來有效濾除信號中混雜的高頻干擾信號, 而對于低于100Hz的干擾信號, 則無能為力. 因此, 要用DSP進行編程設(shè)計一個軟件可實現(xiàn)高通濾波器, 由處理器來完成信號

11、的去噪, 采用FIR濾波.3.1 FIR濾波器的基本結(jié)構(gòu)及特點有限沖激響應(yīng)( FIR)濾波器的基本結(jié)構(gòu)是一個分節(jié)的延時線, 把每一節(jié)的輸出加權(quán)累加, 得到濾波器的輸出. 數(shù)學(xué)上表示為y(n) =EN-1n=0h(n)x(n-m), (0 n N- 1) (1)對(1)式進行Z變換, 整理后可得出FIR濾波器的傳遞函數(shù)為H(z) = EN-1n=0h(n)z-n, (0 n N- 1) (2)由( 2)式可知FIR濾波器的一般結(jié)構(gòu)如圖1所示. 圖1 FIR數(shù)字濾波器直接實現(xiàn)形式3.2 FIR濾波器的DSP實現(xiàn)原理由( 1)式可知, FIR濾波器的沖激響應(yīng)為h(0), h(1), , h(N- 1

12、). x(n)表示濾波器在n時刻的輸入, 則n時刻的輸出為y(n) = h(0)x(n) +h(1)x(n- 1) + ,+ h(N- 1)x n- (N- 1) ,這是一個乘、加的過程, 可以使用DSP中的MAC指令實現(xiàn)該運算. 圖2說明了使用循環(huán)尋址實現(xiàn)FIR濾波器的方法. 為了能正確使用循環(huán)尋址, 必須先初始化BK, 塊長為N. 同時, 數(shù)據(jù)緩沖區(qū)和沖激響應(yīng)( FIR濾波器的系數(shù))的開始地址必須是大于N的2的最小冪的倍數(shù). 例如, 當(dāng)N= 11時, 大于N的最小2的冪為16, 則數(shù)據(jù)緩沖區(qū)的第一位地址應(yīng)該是16的倍數(shù), 因此數(shù)據(jù)緩沖區(qū)起始地址的最低4位必須是0.在圖2中, 濾波系數(shù)指針初

13、始化時指向h(N- 1), 經(jīng)過一次FIR濾波計算后, 在循環(huán)尋址的作用下,仍然指向h(N- 1). 而數(shù)據(jù)緩沖區(qū)指針指向的是需要更新的數(shù)據(jù), 如x(n). 在寫入新數(shù)據(jù)并完成FIR運算后, 該指針指向x(n- (N- 1) , 所以, 使用循環(huán)尋址可以方便地完成濾波窗口數(shù)據(jù)的自動更新.4 FIR濾波器設(shè)計實例給定FIR數(shù)字帶通濾波器的技術(shù)指標(biāo)為: 2個通帶截止頻率分別為4kHz和6kHz, 2個阻帶截止頻率分別為3kHz和7kHz, 采樣頻率均為25kHz. 輸入為一個混合信號f = cos(2000Pt) + cos(10000Pt) + cos(20000Pt) /6,利用Matlab設(shè)

14、計FIR帶通濾波器的系數(shù), 將得到的濾波器系數(shù)乘以32768(即215)后舍尾取整可得DSP中濾波器系數(shù)列表. 用. word匯編命令將各濾波器系數(shù)直接輸入到DSP程序中; 模擬輸入數(shù)據(jù)由C語言程序?qū)崿F(xiàn), 然后用. copy命令將C語言程序生成的數(shù)據(jù)文件firinput拷貝到DSP程序中. DSP程序?qū)崿F(xiàn)讀入數(shù)據(jù)、濾波、顯示波形等方面的任務(wù). 完成FIR濾波器的程序框圖如圖3所示, 可知FIR濾波器的DSP實現(xiàn)主要由以下4方面的內(nèi)容組成.4.1 模擬輸入數(shù)據(jù)的生成 用C語言程序生成輸入數(shù)據(jù), 通過. copy匯編命令將生成的數(shù)據(jù)文件拷貝到匯編程序中, 作為FIR濾波器的輸入數(shù)據(jù). C語言程序運

15、行后所生成的數(shù)據(jù)文件名為firinpu,t 生成firinput數(shù)據(jù)文件的C語言程序如下所示:#include"stdio. h"#include"math. h"main( ) int ;i double f 256; FILE*fp; if( ( fp= fopen( "e: firinput", "wt") ) = =NULL) printf( "canct openfile! n"); for( i=0; i< =255; i+ ) f i =( cos( 2* 3. 141592

16、65* *i 1000/25000) + cos( 2* 3. 14159265* *i 5000/25000) +cos( 2* 3. 14159265* *i 10000/25000) ) /6; fprintf( fp, " . word %ldn", ( long) ( f i* 32768) ); fclose( fp); 4.2 DSP初始化程序 DSP初始化程序包括了對堆棧指針( SP)、軟件等待狀態(tài)寄存器( SWWSR)、中斷寄存器( IFR)、中斷屏蔽寄存器( IMR)以及處理器工作狀態(tài)寄存器( PMST)的初始化; 另外還對各變量賦值, 具體的程序如下:

17、 . def _c_int00 . mmregs swcr . set 2bh t_ar2 . set 066h t_ar3 . set 067h out_wave_buf . set 0d00h data_in . set 0f00h N . set 51 fir_coef_buf . set 100h fir_data . set 200h . text rs b_c_int00 _c_int00: stm#2020h, pmst ssbx intm ssbx sxm ssbx frct stm #10h, 26h stm #10h, 36h stm #0ffh, sp ld #0, dp

18、 stm #0ffffh, ifr stm #20h, imr stm #02492h, swwsr stm #0, swcr可看出, FIR濾波器的系數(shù)列表將存在100h開始的單元中, 輸入數(shù)據(jù)將存在200h開始的單元中, 而輸出數(shù)據(jù)將存在0d00h開始的單元中.4.3 濾波系數(shù)以及輸入數(shù)據(jù)的調(diào)入 由于濾波器系數(shù)一開始是存在程序存儲器中, 輸入數(shù)據(jù)則是存在程序外的文件中, 程序?qū)@2組數(shù)據(jù)進行處理時, 需要把兩者都調(diào)到數(shù)據(jù)存儲器中, 具體實現(xiàn)程序如下: stm #fir_data, ar6 rpt #255 mvpd #inpu,t*ar6+ stm #fir_coef_bu,f ar6 r

19、pt #N-1 mvpdfir_coe,f*ar6+ stm #fir_coef_bu,f t_ar2 stm #fir_data, t_ar3這段程序?qū)崿F(xiàn)的是把輸入數(shù)據(jù)調(diào)到以200h開始的單元, 而把濾波系數(shù)調(diào)到從100h開始的單元.4.4 濾波子程序 一次濾波的過程實質(zhì)上就是對2組數(shù)進行有規(guī)律的乘加計算, 具體程序如下:fir: mvdm #t_ar2, ar2 ; 將起始濾波系數(shù)地址100h賦給ar2 mvdm #t_ar3, ar5 ; 將起始輸入數(shù)據(jù)地址200h賦給ar5 stm #data_in, ar3 ; ar3=0f00h stm #255, brc ; 定義塊循環(huán)次數(shù) rptbdloop-1 ; 定義塊循環(huán)結(jié)束地址 stm #N, bk ; 定義循環(huán)緩沖器大小 ld *ar5+, a ; 將新數(shù)據(jù)讀到累加器a中 stl a,*ar3+% ; 將新數(shù)據(jù)讀入棧頂 rp

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論