基于DSP的G.729語(yǔ)音編解碼算法的優(yōu)化和實(shí)現
2.3 內聯(lián)指令的應用和C程序中嵌入匯編語(yǔ)句
由于語(yǔ)音編碼的特點(diǎn),編解碼函數都是由一些基本的加減乘除簡(jiǎn)單函數組織而成,這些函數定義在BASIC OP.C和OPER_32B.C兩個(gè)文件中,如果能夠對這些簡(jiǎn)單函數進(jìn)行內聯(lián)指令(intrinsic)的優(yōu)化,就能達到事半功倍的效果。內聯(lián)指令是匯編指令的直接映射,具有很高的效率。例如:
#define muh_ r(varl,var2) _mpylir(varl,var2)
#define L_ add(L_var1,L_var2) _sadd(L_var1,L_var2)
#define L_ muh(var1,var2) _smpy(var1,var2)
(1)不要破壞C環(huán)境,因為C編譯器并不檢查和分析嵌入的匯編語(yǔ)句。
(2)匯編語(yǔ)句不要改變C程序中變量的值,不要在匯編語(yǔ)句中加入匯編器而改變匯編環(huán)境。
在簡(jiǎn)化算法的基礎上,使用CCS提供的C優(yōu)化器進(jìn)行C語(yǔ)言?xún)?yōu)化,同時(shí)還使用內聯(lián)函數和匯編優(yōu)化。
3 G.729在TMS320C5416上的實(shí)現
3.1 TMS320C5416的體系結構和應用
TMS320C5416(以下簡(jiǎn)稱(chēng)C5416)是TI公司最近推出的一款高性?xún)r(jià)比的通用l6位定點(diǎn)DSP芯片,它的內核CPU基本組成與TMS320C54X系列一樣。C5416的單指令周期為6.25 RS,每秒執行的指令數為160×106,指令系統豐富并具有很多多功能指令,使用了6級指令流水線(xiàn)結構,這些都很適合實(shí)現低時(shí)延的G.729聲碼器。采用一個(gè)40bit ALU、128K×16bit片內RAM(包括64KB的片內DARAM和64KB的片內SARAM)、3個(gè)獨立的l6bit數據內存總線(xiàn)、1個(gè)程序內存總線(xiàn)、3個(gè)MCBSP、6信道DMA控制器、1個(gè)8/l6位并行增強主機端口接口及2個(gè)l6bit計時(shí)器。
在TMS320C5416中通過(guò)PCM3002進(jìn)行語(yǔ)音信號的A/D和D/A轉換,PCM3002使用兩個(gè)串行通道,一個(gè)用于控制內部寄存器,另外一個(gè)用于數據傳輸。在系統板TMS320C5416中默認的語(yǔ)音信號的抽樣率是48kHz,通過(guò)修改PCM3002的內部控制寄存器,設定PCM3002信號的抽樣率。為了滿(mǎn)足G.729編碼的要求,PCM3002信號的抽樣率為8 000Hz。為了充分利用DSP進(jìn)行信號處理,通過(guò)使用MCBSP和DMA把抽樣的數據送入DMA的緩沖區中,當緩沖區滿(mǎn)時(shí)產(chǎn)生一次中斷,DSP把DMA的緩沖區中的數據讀入DSP中進(jìn)行處理,然后把處理過(guò)的數據送入DMA發(fā)送緩沖區。
3.2 G.729在TMS320C5416的實(shí)現
系統運行主要分為四個(gè)過(guò)程:語(yǔ)音存儲,數據編碼壓縮,數據解壓縮,語(yǔ)音回放。將輸入的語(yǔ)音數據首先進(jìn)行抗疊濾波,然后進(jìn)行模數轉換,經(jīng)DSP采集并存入RAM存儲器中,即是語(yǔ)音存儲過(guò)程;接著(zhù)運行編碼程序,將前面存儲的信息進(jìn)行壓縮并存儲,這是編碼過(guò)程;然后進(jìn)行解碼,并將數據存回原來(lái)的位置;最后DSP執行輸出指令,將解碼后的數據送到數模轉換器中,實(shí)現模擬輸出。
評論