新聞中心

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

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

作者: 時間:2011-07-01 來源:網(wǎng)絡(luò) 收藏

1 引言
---目前迅速發(fā)展的數(shù)字信號處理器已在數(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ī)中使用控制串口接收數(shù)據(jù)并完成解壓、回放、編碼、通信仿真等處理。

2 硬件接口電路


---

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

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

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


---

本系統(tǒng)的軟件由上位機(jī)部分和下位機(jī)部分組成。其中,下位機(jī)部分主要是針對DSP編程完成語音信號的采樣、量化、濾波、壓縮編碼、以及與PC的串行通信。上位機(jī)部分主要是采用MATLAB語言編程進(jìn)行串口數(shù)據(jù)接收、解壓縮、以文件的形式存儲數(shù)據(jù)并且最終將該數(shù)據(jù)文件送入本人用MATLAB語言完成的一個通信信號處理系統(tǒng)進(jìn)行進(jìn)一步處理。


---3.1 下位機(jī)部分
---整個下位機(jī)部分的程序流程圖如圖4所示,其中濾波部分為一個FIR高通濾波算法。這是因?yàn)橹饕杉膶ο鬄檎Z音信號,而TLC320AD50內(nèi)部只有一個低通濾波器,可以用于濾除高于3.4kHz的干擾信號,但是對于低于300Hz的干擾則無能為力,所以針對DSP編程設(shè)計一個FIR高通濾波器濾除低頻干擾。FIR濾波器在數(shù)學(xué)上可表示為:

---式(1)中x(n)為最近的輸入信號,x(n-k)為延時了k個取樣周期的輸入信號,y(n)為時刻t=nT的濾波器輸出信號,N為濾波器的階數(shù)。h(k)是第k個延時節(jié)的加權(quán)值,既濾波器系數(shù),可由MATLAB的kaiserord函數(shù)和fir1函數(shù)共同算得。從計算結(jié)果可以看出,一個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-
v---N/2)] (2)
---根據(jù)(2)式可以編寫相應(yīng)程序完成FIR高通濾波。
---語音壓縮部分采用的是非失真的壓縮算法。具體為:當(dāng)有兩個以上連續(xù)相等的數(shù)據(jù)時,可以用3字節(jié)表示,即前2字節(jié)相等表示被壓縮的數(shù)據(jù)值,后1字節(jié)表示被重復(fù)次數(shù)。由于語音信號自身的特點(diǎn),即冗余度大,這就為此種壓縮提供了可能。同樣,在解壓時,程序讀入數(shù)據(jù)流,當(dāng)遇到兩個相等數(shù)據(jù)時則重復(fù)此數(shù),重復(fù)次數(shù)由后一個數(shù)據(jù)決定。


3.2 上位機(jī)部分
---本次設(shè)計中比較新穎的地方就是上位機(jī)部分采用MATLAB控制串口接收并處理數(shù)據(jù)。比起VC或者VB,用MATLAB作上位機(jī)程序有其獨(dú)特的優(yōu)勢。MATLAB自帶很龐大的函數(shù)庫,控制串口有serial等函數(shù),語音的回放有wavread函數(shù),至于信號處理更是MATLAB的強(qiáng)項(xiàng),它自帶的信號處理工具箱函數(shù)大大的縮短了系統(tǒng)軟件開發(fā)的周期。另外,MATLAB作人機(jī)交互界面也很方便,其自帶的GUI工具包使整個過程快捷、流暢,比起VB也遜色不了多少。
---3.1.1 MATLAB的人機(jī)交互軟件設(shè)計


---

用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)試時注意MATLAB本身的GUI環(huán)境下設(shè)計的軟件界面不能使用全局變量,若是使用會出現(xiàn)函數(shù)使用錯誤。另外,接收和發(fā)送數(shù)據(jù)之前要清PC的數(shù)據(jù)緩沖區(qū),以免接收到或發(fā)送的數(shù)據(jù)不是當(dāng)前數(shù)據(jù)。最后,接收到的數(shù)據(jù)應(yīng)以文件的形式存儲下來,以便后續(xù)的系統(tǒng)處理。
---3.1.2 信號處理系統(tǒng)設(shè)計
---上位機(jī)的信號處理系統(tǒng)的設(shè)計思路是這樣的,信號首先以文件的形式輸入處理系統(tǒng)進(jìn)行頻譜分析,觀察信號是否被噪聲污染。若其頻譜含有噪聲譜則馬上進(jìn)入濾波器模塊進(jìn)行濾波,以濾除信號中的噪聲。然后,再將濾波后的信號送入編解碼模塊進(jìn)行編碼或解碼(在這里用戶可以選擇不同的編解碼方式)。最后將信號送入通信仿真模塊進(jìn)行各種調(diào)制或解調(diào)處理及相應(yīng)波形的顯示。

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

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


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


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


存儲器相關(guān)文章:存儲器原理


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


評論


相關(guān)推薦

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

關(guān)閉