基于DSP和MATLAB的語音數(shù)據(jù)采集和處理系統(tǒng)
1 引言
---目前迅速發(fā)展的數(shù)字信號處理器已在數(shù)據(jù)采集、通信及多媒體等領域中得到廣泛的應用。本系統(tǒng)采用TI公司16位定點高速芯片TMS320C5410和專用語音采集芯片TLC320AD50進行數(shù)據(jù)采集和相關濾波、壓縮處理,并將最終的數(shù)據(jù)流經(jīng)串口送入計算機。在計算機中使用MATLAB控制串口接收數(shù)據(jù)并完成解壓、回放、編碼、通信仿真等處理。
2 硬件接口電路
---
2.1 TMS320C5410外部擴展電路
---TMS320C5410是TI公司于1996年推出的定點數(shù)字信號處理器。它運行速度快,單周期定點指令執(zhí)行時間10ns或8.3ns,遠大于語音采集和處理的要求。另外它采用修正的哈佛結構,程序與數(shù)據(jù)分開存放,內(nèi)部具有8條高度并行性的總線。其中,一組程序總線,三組16位數(shù)據(jù)總線和四組地址總線。允許數(shù)據(jù)存放在程序存儲器中,并被算術指令直接使用,大大提高了運行速度和靈活性。CPU具有40位算術邏輯單元,兩個獨立的40位累加器,17×17位并行乘法器,一個40位桶形移位寄存器、8個輔助寄存器、2個輔助寄存器算術邏輯單元。最大可有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位增強型主機接口(HPI8)。
---圖1為DSP與存儲器的接口電路,其中PS、DS、IS分別為程序、數(shù)據(jù)和I/O空間選擇信號。MSTRB、IOSTRB分別為存儲器和I/O選通信號。
---另外,由于FLASH存儲器與EPROM相比有更高的性價比,而且體積小,功耗低,可電擦寫,使用較方便。因此,本系統(tǒng)也擴展了一片F(xiàn)LASH存儲器,圖2為DSP與FLASH的接口電路。FLASH芯片為AMD公司的AM29LV400B,該芯片為單電源供電,支持整片擦除,每個分區(qū)有保護,避免意外擦除,并且使用壽命很長。
--2.2 TMS320C5410與TLC320AD50的接口電路
---AD轉(zhuǎn)換是本系統(tǒng)的重要組成部分,要著重考慮轉(zhuǎn)換精度和抗干擾問題。本系統(tǒng)所用AD和DA轉(zhuǎn)換芯片為TI公司的TLC320AD50,它在一個封裝中集成了兩種功能,可同時進行AD和DA轉(zhuǎn)換。圖3為TMS320C5410和TLC320AD50的接口電路。
---AD50采用16位過采樣sigma-delta技術,以8K的采樣率對輸入的語音信號進行采樣、量化,按同步串行方式傳給5410進行處理。AD50向CPU發(fā)出幀同步和移位時鐘信號來控制數(shù)據(jù)的串行傳輸。在此需說明一下,本系統(tǒng)主要用來將語音信號通過AD轉(zhuǎn)換采集進來,然后串行發(fā)送給PC,在PC中用MATLAB接收信號并進行處理。整個過程中DA轉(zhuǎn)換并不在信號處理的主要流程中,DA轉(zhuǎn)換只是用來驗證采集數(shù)據(jù)時所用到的濾波、壓縮算法的正確性與合理性。所以,在編寫系統(tǒng)軟件時并沒有將DA轉(zhuǎn)換寫入。此外,把DA轉(zhuǎn)換加進來也是為了豐富系統(tǒng)硬件資源利于今后進行功能擴展。
---2.3 TMS320C5410與PC機的串口通信
---本系統(tǒng)采用MAX232E構成5410與PC間的通信接口。MAXIM公司的MAX232E采用單5V電源供電,使用時只需外接4個電容就能完成TTL與RS232間的電平和邏輯關系的轉(zhuǎn)換。經(jīng)過DSP系統(tǒng)處理的語音信號通過串口以9600b/s的速率送入計算機,在計算機中通過MATLAB控制串口接收數(shù)據(jù),并且利用MATLAB強大的數(shù)據(jù)處理能力對語音信號進行處理。
3 軟件實現(xiàn)
---
本系統(tǒng)的軟件由上位機部分和下位機部分組成。其中,下位機部分主要是針對DSP編程完成語音信號的采樣、量化、濾波、壓縮編碼、以及與PC的串行通信。上位機部分主要是采用MATLAB語言編程進行串口數(shù)據(jù)接收、解壓縮、以文件的形式存儲數(shù)據(jù)并且最終將該數(shù)據(jù)文件送入本人用MATLAB語言完成的一個通信信號處理系統(tǒng)進行進一步處理。
---3.1 下位機部分
---整個下位機部分的程序流程圖如圖4所示,其中濾波部分為一個FIR高通濾波算法。這是因為主要采集的對象為語音信號,而TLC320AD50內(nèi)部只有一個低通濾波器,可以用于濾除高于3.4kHz的干擾信號,但是對于低于300Hz的干擾則無能為力,所以針對DSP編程設計一個FIR高通濾波器濾除低頻干擾。FIR濾波器在數(shù)學上可表示為:
---式(1)中x(n)為最近的輸入信號,x(n-k)為延時了k個取樣周期的輸入信號,y(n)為時刻t=nT的濾波器輸出信號,N為濾波器的階數(shù)。h(k)是第k個延時節(jié)的加權值,既濾波器系數(shù),可由MATLAB的kaiserord函數(shù)和fir1函數(shù)共同算得。從計算結果可以看出,一個N(設N為偶數(shù))階的FIR濾波器具有系數(shù)對稱性,從而其輸出方程可進一步簡寫為:
---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)式可以編寫相應程序完成FIR高通濾波。
---語音壓縮部分采用的是非失真的壓縮算法。具體為:當有兩個以上連續(xù)相等的數(shù)據(jù)時,可以用3字節(jié)表示,即前2字節(jié)相等表示被壓縮的數(shù)據(jù)值,后1字節(jié)表示被重復次數(shù)。由于語音信號自身的特點,即冗余度大,這就為此種壓縮提供了可能。同樣,在解壓時,程序讀入數(shù)據(jù)流,當遇到兩個相等數(shù)據(jù)時則重復此數(shù),重復次數(shù)由后一個數(shù)據(jù)決定。
3.2 上位機部分
---本次設計中比較新穎的地方就是上位機部分采用MATLAB控制串口接收并處理數(shù)據(jù)。比起VC或者VB,用MATLAB作上位機程序有其獨特的優(yōu)勢。MATLAB自帶很龐大的函數(shù)庫,控制串口有serial等函數(shù),語音的回放有wavread函數(shù),至于信號處理更是MATLAB的強項,它自帶的信號處理工具箱函數(shù)大大的縮短了系統(tǒng)軟件開發(fā)的周期。另外,MATLAB作人機交互界面也很方便,其自帶的GUI工具包使整個過程快捷、流暢,比起VB也遜色不了多少。
---3.1.1 MATLAB的人機交互軟件設計
---
用MATLAB控制串口接收數(shù)據(jù)有以下幾步:
---1. 先進行串口的初始化操作,然后打開串口,用到的函數(shù)為:serial和open。
---2. 設定MATLAB和DSP的握手方式,可通過串口目標的FlowControl屬性設定。
---3. 接收和發(fā)送數(shù)據(jù),用到fread和fwrite函數(shù)。
---界面如圖5所示,調(diào)試時注意MATLAB本身的GUI環(huán)境下設計的軟件界面不能使用全局變量,若是使用會出現(xiàn)函數(shù)使用錯誤。另外,接收和發(fā)送數(shù)據(jù)之前要清PC的數(shù)據(jù)緩沖區(qū),以免接收到或發(fā)送的數(shù)據(jù)不是當前數(shù)據(jù)。最后,接收到的數(shù)據(jù)應以文件的形式存儲下來,以便后續(xù)的系統(tǒng)處理。
---3.1.2 信號處理系統(tǒng)設計
---上位機的信號處理系統(tǒng)的設計思路是這樣的,信號首先以文件的形式輸入處理系統(tǒng)進行頻譜分析,觀察信號是否被噪聲污染。若其頻譜含有噪聲譜則馬上進入濾波器模塊進行濾波,以濾除信號中的噪聲。然后,再將濾波后的信號送入編解碼模塊進行編碼或解碼(在這里用戶可以選擇不同的編解碼方式)。最后將信號送入通信仿真模塊進行各種調(diào)制或解調(diào)處理及相應波形的顯示。
結束語
---TMS320C5410作為高速數(shù)字信號處理器具有快速的運算能力,結合MATLAB強大的信號處理能力,完全可以達到較復雜的語音信號處理要求。而且系統(tǒng)的可擴展能力很強,可對軟件進行修改或者添加新的快速的算法提高系統(tǒng)信號處理的實時性。
濾波器相關文章:濾波器原理
濾波器相關文章:濾波器原理
低通濾波器相關文章:低通濾波器原理
存儲器相關文章:存儲器原理
高通濾波器相關文章:高通濾波器原理
評論