基于TMS320C5409的語音實時變速系統(tǒng)設(shè)計
采用DMA的方式,即串口每收到或發(fā)送一組單元,都會自動觸發(fā)DMA將其搬送到一個內(nèi)部的Buffer中,等Buffer滿了再通過中斷方式告訴CPU處理。這時DMA最好采用ABU(Auto Buffering)模式,可以有效防止Buffer中的數(shù)據(jù)在串口速率較高時被新數(shù)據(jù)沖掉的問題。在進行語音變速時,只需要將13MA通道的幀長做相應(yīng)的改變即可。
SST39VF400A(256K×1 6位)作為TMS320C5409的外部數(shù)據(jù)存儲器,地址總線和數(shù)據(jù)總線接至TMS320C5409的外部總線,CR接至TMS320C5409的DS。TMS320C5409與SST39VF400A的接口如圖4所示。
外部存儲器采用的是CY7C133,它是高速的2K×16bit的靜態(tài)異步雙端口RAM,其存儲速度為25ns。它有兩套獨立的地址線、數(shù)據(jù)線和控制信號線,允許兩個控制器件中的數(shù)據(jù)通過共同連接的存儲器來進行通信。該雙端口RAM允許兩個控制器同時讀取任何存儲單元(包括同時讀同一單元),但不允許同時寫或者一讀一寫統(tǒng)一地址單元。
對于TMS 320VC5402,數(shù)據(jù)存儲器CY7C133的對應(yīng)地址為4000H~47FFH。
系統(tǒng)軟件
本系統(tǒng)實現(xiàn)的目標是鍵盤控制功能和語音錄放功能,并且能夠?qū)⑤斎氲?a class="contentlabel" href="http://www.ex-cimer.com/news/listbylabel/label/語音">語音信號以任意變速率播放而不改變語音的聲調(diào)。系統(tǒng)采用C語言進行功能開發(fā)。
本系統(tǒng)中將HPI口映射成為GPIO,并且將鍵盤連線通過或門接到INTO。當有按鍵按下時,INTO中斷處理程序通過從GPIO中讀出的數(shù)值判斷此時是錄音、放音、語速變快還是語速變慢。
抗干擾設(shè)計
本系統(tǒng)中既采用硬件抗干擾技術(shù),也采用了軟件抗干擾技術(shù)。下面簡要介紹一下本系統(tǒng)所采用的硬件看門狗和數(shù)字濾波器的設(shè)計。
利用硬件看門狗功能提高系統(tǒng)的抗干擾能力。由專用芯片MAX692構(gòu)成的看門狗電路(圖5),系統(tǒng)所用外圍元件少。MAX692是微系統(tǒng)監(jiān)控電路芯片,具有后備電池切換、掉電判別、看門狗監(jiān)控等功能。其中WDI是看門狗檢測輸入端,接到數(shù)字電路系統(tǒng)的一個專用I/O口或一個總線口上。RESET是復位信號輸出端,接數(shù)字電路系統(tǒng)的復位端RST。MAX692的WDI定時周期為1.6 s,復位脈沖寬度是200ms。如果WDI保持高或低超過看門狗定時周期(1.6s),RESET端將發(fā)生200ms寬(最小140ms)的負脈沖使數(shù)字電路系統(tǒng)復位。
設(shè)數(shù)字濾波器的輸入信號為X(n),輸出信號為Y(n),則輸入序列和輸出序列之間的關(guān)系可用差分方程表示為:
式中輸入信號X(n)可以是語音信號經(jīng)采樣和ADC變換后得到的數(shù)字序列,也可以是計算機的輸出信號;aK和bK均為系數(shù),通過設(shè)置aK和bK可將DF設(shè)計成需要的帶通濾波器。
數(shù)字濾波器的軟件設(shè)計方法有:程序判斷濾波法(限幅濾波法)、中位值濾波法、算術(shù)平均濾波法、遞推平均濾波法、防脈沖干擾平均濾波法、一階滯后濾波法等6種方法。根據(jù)需要,本系統(tǒng)選擇程序判斷濾波法。
結(jié)浯
看屁屁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);
})();
評論