<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

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

          本文引用地址:http://www.ex-cimer.com/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)大于語(yǔ)音采集和處理的要求。另外它采用修正的哈佛結(jié)構(gòu),程序與數(shù)據(jù)分開(kāi)存放,內(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ǔ)空間,可訪問(wèn)的數(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ǔ)器訪問(wèn)(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相比有更高的性?xún)r(jià)比,而且體積小,功耗低,可電擦寫(xiě),使用較方便。因此,本系統(tǒng)也擴(kuò)展了一片F(xiàn)LASH存儲(chǔ)器,圖2為與FLASH的接口電路。FLASH芯片為AMD公司的AM29LV400B,該芯片為單電源供電,支持整片擦除,每個(gè)分區(qū)有保護(hù),避免意外擦除,并且使用壽命很長(zhǎng)。


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

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

          本系統(tǒng)的軟件由上位機(jī)部分和下位機(jī)部分組成。其中,下位機(jī)部分主要是針對(duì)DSP編程完成語(yǔ)音信號(hào)的采樣、量化、濾波、壓縮編碼、以及與PC的串行通信。上位機(jī)部分主要是采用MATLAB語(yǔ)言編程進(jìn)行串口數(shù)據(jù)接收、解壓縮、以文件的形式存儲(chǔ)數(shù)據(jù)并且最終將該數(shù)據(jù)文件送入本人用MATLAB語(yǔ)言完成的一個(gè)通信信號(hào)進(jìn)行進(jìn)一步處理。
          3.1 下位機(jī)部分
          整個(gè)下位機(jī)部分的程序流程圖如圖4所示,其中濾波部分為一個(gè)FIR高通濾波算法。這是因?yàn)橹饕杉膶?duì)象為語(yǔ)音信號(hào),而TLC320AD50內(nèi)部只有一個(gè)低通濾波器,可以用于濾除高于3.4kHz的干擾信號(hào),但是對(duì)于低于300Hz的干擾則無(wú)能為力,所以針對(duì)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ù)對(duì)稱(chēng)性,從而其輸出方程可進(jìn)一步簡(jiǎn)寫(xiě)為:
          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)式可以編寫(xiě)相應(yīng)程序完成FIR高通濾波。
          語(yǔ)音壓縮部分采用的是非失真的壓縮算法。具體為:當(dāng)有兩個(gè)以上連續(xù)相等的數(shù)據(jù)時(shí),可以用3字節(jié)表示,即前2字節(jié)相等表示被壓縮的數(shù)據(jù)值,后1字節(jié)表示被重復(fù)次數(shù)。由于語(yǔ)音信號(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)勢(shì)。MATLAB自帶很龐大的函數(shù)庫(kù),控制串口有serial等函數(shù),語(yǔ)音的回放有wavread函數(shù),至于信號(hào)處理更是MATLAB的強(qiáng)項(xiàng),它自帶的信號(hào)處理工具箱函數(shù)大大的縮短了系統(tǒng)軟件開(kāi)發(fā)的周期。另外,MATLAB作人機(jī)交互界面也很方便,其自帶的GUI工具包使整個(gè)過(guò)程快捷、流暢,比起VB也遜色不了多少。
          3.1.1 MATLAB的人機(jī)交互軟件設(shè)計(jì)

          用MATLAB控制串口接收數(shù)據(jù)有以下幾步:
          1. 先進(jìn)行串口的初始化操作,然后打開(kāi)串口,用到的函數(shù)為:serial和open。
          2. 設(shè)定MATLAB和DSP的握手方式,可通過(guò)串口目標(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ǔ)下來(lái),以便后續(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ù)可以選擇不同的編解碼方式)。最后將信號(hào)送入通信仿真模塊進(jìn)行各種調(diào)制或解調(diào)處理及相應(yīng)波形的顯示。

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

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


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


          評(píng)論


          相關(guān)推薦

          技術(shù)專(zhuān)區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();