新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > DSP與MATLAB的語音數(shù)據(jù)采集和處理系統(tǒng)

DSP與MATLAB的語音數(shù)據(jù)采集和處理系統(tǒng)

作者: 時(shí)間:2012-03-12 來源:網(wǎng)絡(luò) 收藏

1 引言
目前迅速發(fā)展的數(shù)字信號(hào)處理器已在數(shù)據(jù)采集、通信及多媒體等領(lǐng)域中得到廣泛的應(yīng)用。本系統(tǒng)采用TI公司16位定點(diǎn)高速芯片TMS320C5410和專用語音采集芯片TLC320AD50進(jìn)行數(shù)據(jù)采集和相關(guān)濾波、壓縮處理,并將最終的數(shù)據(jù)流經(jīng)串口送入計(jì)算機(jī)。在計(jì)算機(jī)中使用MATLAB控制串口接收數(shù)據(jù)并完成解壓、回放、編碼、通信仿真等處理。

本文引用地址:http://butianyuan.cn/article/257651.htm

2 硬件接口電路

2.1 TMS320C5410外部擴(kuò)展電路
TMS320C5410是TI公司于1996年推出的定點(diǎn)數(shù)字信號(hào)處理器。它運(yùn)行速度快,單周期定點(diǎn)指令執(zhí)行時(shí)間10ns或8.3ns,遠(yuǎn)大于語音采集和處理的要求。另外它采用修正的哈佛結(jié)構(gòu),程序與數(shù)據(jù)分開存放,內(nèi)部具有8條高度并行性的總線。其中,一組程序總線,三組16位數(shù)據(jù)總線和四組地址總線。允許數(shù)據(jù)存放在程序存儲(chǔ)器中,并被算術(shù)指令直接使用,大大提高了運(yùn)行速度和靈活性。CPU具有40位算術(shù)邏輯單元,兩個(gè)獨(dú)立的40位累加器,17×17位并行乘法器,一個(gè)40位桶形移位寄存器、8個(gè)輔助寄存器、2個(gè)輔助寄存器算術(shù)邏輯單元。最大可有8M字可尋址程序存儲(chǔ)空間,可訪問的數(shù)據(jù)存儲(chǔ)空間有64K字,I/O存儲(chǔ)器空間有64KB。其中片內(nèi)64KB的RAM包括兩塊2KB的DARAM,七塊8KB的SARAM以及片內(nèi)16KB的ROM配置位程序存儲(chǔ)器。片上集成一個(gè)16位定時(shí)器、軟件可編程等待狀態(tài)發(fā)生器、六通道直接存儲(chǔ)器訪問(DMA)控制器、三個(gè)多通道緩沖串口(McBSP)以及一個(gè)8位增強(qiáng)型主機(jī)接口(HPI8)。
圖1為與存儲(chǔ)器的接口電路,其中PS、DS、IS分別為程序、數(shù)據(jù)和I/O空間選擇信號(hào)。MSTRB、IOSTRB分別為存儲(chǔ)器和I/O選通信號(hào)。
另外,由于FLASH存儲(chǔ)器與EPROM相比有更高的性價(jià)比,而且體積小,功耗低,可電擦寫,使用較方便。因此,本系統(tǒng)也擴(kuò)展了一片F(xiàn)LASH存儲(chǔ)器,圖2為與FLASH的接口電路。FLASH芯片為AMD公司的AM29LV400B,該芯片為單電源供電,支持整片擦除,每個(gè)分區(qū)有保護(hù),避免意外擦除,并且使用壽命很長。


2.2 TMS320C5410與TLC320AD50的接口電路
AD轉(zhuǎn)換是本系統(tǒng)的重要組成部分,要著重考慮轉(zhuǎn)換精度和抗干擾問題。本系統(tǒng)所用AD和DA轉(zhuǎn)換芯片為TI公司的TLC320AD50,它在一個(gè)封裝中集成了兩種功能,可同時(shí)進(jìn)行AD和DA轉(zhuǎn)換。圖3為TMS320C5410和TLC320AD50的接口電路。
AD50采用16位過采樣sigma-delta技術(shù),以8K的采樣率對輸入的語音信號(hào)進(jìn)行采樣、量化,按同步串行方式傳給5410進(jìn)行處理。AD50向CPU發(fā)出幀同步和移位時(shí)鐘信號(hào)來控制數(shù)據(jù)的串行傳輸。在此需說明一下,本系統(tǒng)主要用來將語音信號(hào)通過AD轉(zhuǎn)換采集進(jìn)來,然后串行發(fā)送給PC,在PC中用MATLAB接收信號(hào)并進(jìn)行處理。整個(gè)過程中DA轉(zhuǎn)換并不在信號(hào)處理的主要流程中,DA轉(zhuǎn)換只是用來驗(yàn)證采集數(shù)據(jù)時(shí)所用到的濾波、壓縮算法的正確性與合理性。所以,在編寫系統(tǒng)軟件時(shí)并沒有將DA轉(zhuǎn)換寫入。此外,把DA轉(zhuǎn)換加進(jìn)來也是為了豐富系統(tǒng)硬件資源利于今后進(jìn)行功能擴(kuò)展。
2.3 TMS320C5410與PC機(jī)的串口通信
本系統(tǒng)采用MAX232E構(gòu)成5410與PC間的通信接口。MAXIM公司的MAX232E采用單5V電源供電,使用時(shí)只需外接4個(gè)電容就能完成TTL與RS232間的電平和邏輯關(guān)系的轉(zhuǎn)換。經(jīng)過系統(tǒng)處理的語音信號(hào)通過串口以9600b/s的速率送入計(jì)算機(jī),在計(jì)算機(jī)中通過MATLAB控制串口接收數(shù)據(jù),并且利用MATLAB強(qiáng)大的數(shù)據(jù)處理能力對語音信號(hào)進(jìn)行處理。

3 軟件實(shí)現(xiàn)

本系統(tǒng)的軟件由上位機(jī)部分和下位機(jī)部分組成。其中,下位機(jī)部分主要是針對DSP編程完成語音信號(hào)的采樣、量化、濾波、壓縮編碼、以及與PC的串行通信。上位機(jī)部分主要是采用MATLAB語言編程進(jìn)行串口數(shù)據(jù)接收、解壓縮、以文件的形式存儲(chǔ)數(shù)據(jù)并且最終將該數(shù)據(jù)文件送入本人用MATLAB語言完成的一個(gè)通信信號(hào)進(jìn)行進(jìn)一步處理。
3.1 下位機(jī)部分
整個(gè)下位機(jī)部分的程序流程圖如圖4所示,其中濾波部分為一個(gè)FIR高通濾波算法。這是因?yàn)橹饕杉膶ο鬄檎Z音信號(hào),而TLC320AD50內(nèi)部只有一個(gè)低通濾波器,可以用于濾除高于3.4kHz的干擾信號(hào),但是對于低于300Hz的干擾則無能為力,所以針對DSP編程設(shè)計(jì)一個(gè)FIR高通濾波器濾除低頻干擾。FIR濾波器在數(shù)學(xué)上可表示為:

式(1)中x(n)為最近的輸入信號(hào),x(n-k)為延時(shí)了k個(gè)取樣周期的輸入信號(hào),y(n)為時(shí)刻t=nT的濾波器輸出信號(hào),N為濾波器的階數(shù)。h(k)是第k個(gè)延時(shí)節(jié)的加權(quán)值,既濾波器系數(shù),可由MATLAB的kaiserord函數(shù)和fir1函數(shù)共同算得。從計(jì)算結(jié)果可以看出,一個(gè)N(設(shè)N為偶數(shù))階的FIR濾波器具有系數(shù)對稱性,從而其輸出方程可進(jìn)一步簡寫為:
y(n)=h0[x(k)+x(k-N+1)]+h1[x
(k-1)+x(k-N+2)]+Λ+
nH/2-1[x(k-N/2+1)+x(k-
vN/2)] (2)
根據(jù)(2)式可以編寫相應(yīng)程序完成FIR高通濾波。
語音壓縮部分采用的是非失真的壓縮算法。具體為:當(dāng)有兩個(gè)以上連續(xù)相等的數(shù)據(jù)時(shí),可以用3字節(jié)表示,即前2字節(jié)相等表示被壓縮的數(shù)據(jù)值,后1字節(jié)表示被重復(fù)次數(shù)。由于語音信號(hào)自身的特點(diǎn),即冗余度大,這就為此種壓縮提供了可能。同樣,在解壓時(shí),程序讀入數(shù)據(jù)流,當(dāng)遇到兩個(gè)相等數(shù)據(jù)時(shí)則重復(fù)此數(shù),重復(fù)次數(shù)由后一個(gè)數(shù)據(jù)決定。
3.2 上位機(jī)部分
本次設(shè)計(jì)中比較新穎的地方就是上位機(jī)部分采用MATLAB控制串口接收并處理數(shù)據(jù)。比起VC或者VB,用MATLAB作上位機(jī)程序有其獨(dú)特的優(yōu)勢。MATLAB自帶很龐大的函數(shù)庫,控制串口有serial等函數(shù),語音的回放有wavread函數(shù),至于信號(hào)處理更是MATLAB的強(qiáng)項(xiàng),它自帶的信號(hào)處理工具箱函數(shù)大大的縮短了系統(tǒng)軟件開發(fā)的周期。另外,MATLAB作人機(jī)交互界面也很方便,其自帶的GUI工具包使整個(gè)過程快捷、流暢,比起VB也遜色不了多少。
3.1.1 MATLAB的人機(jī)交互軟件設(shè)計(jì)

用MATLAB控制串口接收數(shù)據(jù)有以下幾步:
1. 先進(jìn)行串口的初始化操作,然后打開串口,用到的函數(shù)為:serial和open。
2. 設(shè)定MATLAB和DSP的握手方式,可通過串口目標(biāo)的FlowControl屬性設(shè)定。
3. 接收和發(fā)送數(shù)據(jù),用到fread和fwrite函數(shù)。
界面如圖5所示,調(diào)試時(shí)注意MATLAB本身的GUI環(huán)境下設(shè)計(jì)的軟件界面不能使用全局變量,若是使用會(huì)出現(xiàn)函數(shù)使用錯(cuò)誤。另外,接收和發(fā)送數(shù)據(jù)之前要清PC的數(shù)據(jù)緩沖區(qū),以免接收到或發(fā)送的數(shù)據(jù)不是當(dāng)前數(shù)據(jù)。最后,接收到的數(shù)據(jù)應(yīng)以文件的形式存儲(chǔ)下來,以便后續(xù)的系統(tǒng)處理。
3.1.2 信號(hào)設(shè)計(jì)
上位機(jī)的信號(hào)的設(shè)計(jì)思路是這樣的,信號(hào)首先以文件的形式輸入處理系統(tǒng)進(jìn)行頻譜分析,觀察信號(hào)是否被噪聲污染。若其頻譜含有噪聲譜則馬上進(jìn)入濾波器模塊進(jìn)行濾波,以濾除信號(hào)中的噪聲。然后,再將濾波后的信號(hào)送入編解碼模塊進(jìn)行編碼或解碼(在這里用戶可以選擇不同的編解碼方式)。最后將信號(hào)送入通信仿真模塊進(jìn)行各種調(diào)制或解調(diào)處理及相應(yīng)波形的顯示。

結(jié)束語
TMS320C5410作為高速數(shù)字信號(hào)處理器具有快速的運(yùn)算能力,結(jié)合MATLAB強(qiáng)大的信號(hào)處理能力,完全可以達(dá)到較復(fù)雜的語音信號(hào)處理要求。而且系統(tǒng)的可擴(kuò)展能力很強(qiáng),可對軟件進(jìn)行修改或者添加新的快速的算法提高系統(tǒng)信號(hào)處理的實(shí)時(shí)性

低通濾波器相關(guān)文章:低通濾波器原理


高通濾波器相關(guān)文章:高通濾波器原理


評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉