基于DSP的TETRA話(huà)音編碼設計
1 引 言
TETRA是ETSI制定的一種全新的數字集群系統,他可以提供語(yǔ)音和快速數據傳輸業(yè)務(wù)。TETRA集成了移動(dòng)數據終端、PMR調度電話(huà)、蜂窩電話(huà)和尋呼機的功能,并且可以直接傳送Internet協(xié)議報文,支持可視電話(huà)功能,而語(yǔ)音又是最主要的業(yè)務(wù)。無(wú)線(xiàn)系統中,帶寬是影響語(yǔ)音服務(wù)質(zhì)量最關(guān)鍵的因素,為降低語(yǔ)音傳輸所要求的帶寬,TETRA系統采用代數碼激勵線(xiàn)性預測編碼(ACELP)壓縮算法,保證了高質(zhì)量的語(yǔ)音服務(wù),其編碼速率為4.567 kb/s。
ACELP是一種改進(jìn)型的CELP,繼承了傳統CELP的主要優(yōu)點(diǎn),并克服了其缺點(diǎn)。傳統CELP用固定的隨機碼本來(lái)逼近語(yǔ)音信號的余量信號,缺乏靈活性,不能很好地控制碼本的頻域特性。ACELP采用代數碼本結構,不僅降低了碼本的存儲量和搜索量,還提供了頻域控制函數,從而增強了碼字的靈活性和多樣性,能更好地逼近余量信號,具體算法可參見(jiàn)TETRA標準ETS395-2。
2 系統設計
針對TETRA的話(huà)音編碼算法實(shí)時(shí)要求高,運算量 大,核心處理器采用了TI公司的TMS320系列的5409芯片,該芯片主要特點(diǎn)有:速度快,處理能力可達到100 MI/s;低功耗,3 V電壓供電,內核電壓1.8 V;提供32 kBRAM,16 kBROM;3個(gè)多通道自動(dòng)緩沖串口(McBsp)。
A/D轉換芯片采用TI公司的AIC20芯片,完成模擬話(huà)音與數字話(huà)音的轉換工作。由于采用了過(guò)采樣技術(shù),AIC20可提供高分辨率的A/D,D/A 轉換;3 V供電,功耗低于30 mW;具有軟件可編程寄存器,配置方便,不改變硬件電路,僅改寫(xiě)軟件就可滿(mǎn)足多種需求。
存儲芯片選用Atmel公司的AT49LV001,用于存儲程序,DSP加電便可從Flash中引導程序運行。AT49LV001讀寫(xiě)電壓均為3 V,可大大簡(jiǎn)化電源設計,存儲空間為128 kB,足以存儲TETRA的話(huà)音編碼算法。
2.1 硬件設計
2.1.1 時(shí)鐘電路設計
這里為5409提供2種時(shí)鐘電路設計方法:
(1)將晶振產(chǎn)生的外部時(shí)鐘源直接輸入到X2/CLKIN引腳,X1懸空。
(2)利用5409內部提供的鎖相環(huán)(PLL)時(shí)鐘產(chǎn)生電路將內部時(shí)鐘倍頻或分頻得到。
在此采用第二種方法,如圖1所示。在X1和X2/CLKIN之間接一個(gè)16.384 MHz的晶振,同時(shí)將CLKMD1,CLKMD2,CLKMD3通過(guò)上拉電阻設置為邏輯0,1,0,即倍頻數為5,DSP工作在80 MHz,若需改變DSP的工作頻率,可通過(guò)軟件修改地址0x58的CLKMD寄存器的值設置倍頻數。
2.1.2 DSP與Codec接口設計
5409與AIC20接口如圖2所示,由DSP的CLKOUT提供MCLK,Codec工作在主模式,SCLK和FS為輸出,為DSP提供BCLK和 BFS。值得注意的是,由于A(yíng)IC20有2個(gè)采樣通道,在與DSP串口連接時(shí),為配合codec的時(shí)序,DSP串口需配置成接收2個(gè)通道的采樣值(即32 b),但只取一個(gè)通道的采樣值;串口發(fā)送時(shí),也要向2個(gè)通道發(fā)送數據。McBsp中的部分控制比特位配置如下:
當AIC20工作在主模式時(shí),FS=MCLK/(16×P×N×M),通過(guò)設置控制寄存器4可改變P,N,M的值。FS=8 kHz,MCLK=81.92 MHz,取P=8,N=8,M=10。
2.1.3 DSP與存儲器接口設計
AT49LV001存儲器內部以扇區組織,在對其編程前,必須對相應區域擦除。使用時(shí)可根據需要選擇扇區擦除或芯片擦除。圖3為5409與 AT49LV001的接口示意圖,AT49LV001的地址總線(xiàn)和數據總線(xiàn)分別接至5409的地址總線(xiàn)和數據總線(xiàn),5409的地址總線(xiàn)A22~A18懸空,數據總線(xiàn)D15~D8懸空。DS作為使能信號,XF則控制編程狀態(tài)。應當注意,AT49LV001為8 b存儲器,DSP為16 b處理器,所以每存儲一條DSP指令需2個(gè)存儲單元,且高字節在前。
2.2 軟件設計
2.2.1 初始化程序
完成DSP的初始化工作,包括設置SWWSR,PMST等寄存器的值;根據需要設置CLKMD寄存器改變倍頻數;配置串口。
2.2.2 中斷服務(wù)程序
中斷服務(wù)程序主要是串口接收和發(fā)送中斷。接收中斷從Codec的DS腳接收采樣數據,放入接收緩沖區MicIn,當接收到30 ms的數據(算法要求),啟動(dòng)編碼標志SpeechFlag。當解碼程序從Acelp碼流中解出話(huà)音后,放入發(fā)送緩沖區Sout中,然后通過(guò)串口發(fā)送中斷發(fā)至Codec。MicIn和Sout均為雙緩沖區。
2.2.3 算法設計
編碼程序每30 ms執行一次,將240個(gè)采樣值編成137 b,傳遞給解碼程序,再將解碼合成的話(huà)音通過(guò)音箱放出。在硬件平臺上做自環(huán)實(shí)驗,下面給出部分C代碼。
3 結 語(yǔ)
本文從軟件設計和硬件設計兩方面介紹了在TMS320VC5409芯片上實(shí)現TETRA話(huà)音編碼算法的具體步驟。通過(guò)標準P.862對算法評測,平均MOS得分為3.474。同時(shí),在做抗噪實(shí)驗時(shí),本算法在10-2誤碼率下,仍能保持良好的通信質(zhì)量。
評論