色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 基于DSP的G.729語(yǔ)音編解碼算法的優(yōu)化和實(shí)現(xiàn)

          基于DSP的G.729語(yǔ)音編解碼算法的優(yōu)化和實(shí)現(xiàn)

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

          2.3 內(nèi)聯(lián)指令的應(yīng)用和C程序中嵌入?yún)R編語(yǔ)句

            由于的特點(diǎn),編解碼函數(shù)都是由一些基本的加減乘除簡(jiǎn)單函數(shù)組織而成,這些函數(shù)定義在BASIC OP.C和OPER_32B.C兩個(gè)文件中,如果能夠?qū)@些簡(jiǎn)單函數(shù)進(jìn)行內(nèi)聯(lián)指令(intrinsic)的優(yōu)化,就能達(dá)到事半功倍的效果。內(nèi)聯(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)

             在C程序中嵌入?yún)R編語(yǔ)句的方法比較簡(jiǎn)單,只需在匯編語(yǔ)句的左右加上一個(gè)引號(hào),然后用小括弧將匯編語(yǔ)句括住,并在括弧前加上ASM標(biāo)識(shí)符,例如ASM(“匯編語(yǔ)句”)。采用這種方法一方面可以在C程序中實(shí)現(xiàn)用C語(yǔ)言無(wú)法實(shí)現(xiàn)的一些硬件控制功能,如修改中斷控制寄存器、中斷使能或屏蔽、讀取狀態(tài)寄存器和中斷標(biāo)志寄存器等;另一方面,也可以用這種方法在C程序中的關(guān)鍵部分用匯編語(yǔ)句代替C語(yǔ)言以優(yōu)化程序。而采用這種方法的缺點(diǎn)是比較容易破壞C環(huán)境,因?yàn)镃編譯器在編譯嵌入了匯編語(yǔ)句的C程序時(shí)并不檢查或分析所嵌入的匯編語(yǔ)句。采用這種方法需要注意以下幾點(diǎn):

            (1)不要破壞C環(huán)境,因?yàn)镃編譯器并不檢查和分析嵌入的匯編語(yǔ)句。

             (2)匯編語(yǔ)句不要改變C程序中變量的值,不要在匯編語(yǔ)句中加入?yún)R編器而改變匯編環(huán)境。

             在簡(jiǎn)化算法的基礎(chǔ)上,使用CCS提供的C優(yōu)化器進(jìn)行C語(yǔ)言優(yōu)化,同時(shí)還使用內(nèi)聯(lián)函數(shù)和匯編優(yōu)化。

            3 G.729在上的實(shí)現(xiàn)

            3.1 的體系結(jié)構(gòu)和應(yīng)用

             (以下簡(jiǎn)稱C5416)是TI公司最近推出的一款高性價(jià)比的通用l6位定點(diǎn)DSP芯片,它的內(nèi)核CPU基本組成與TMS320C54X系列一樣。C5416的單指令周期為6.25 RS,每秒執(zhí)行的指令數(shù)為160×106,指令系統(tǒng)豐富并具有很多多功能指令,使用了6級(jí)指令流水線結(jié)構(gòu),這些都很適合實(shí)現(xiàn)低時(shí)延的G.729聲碼器。采用一個(gè)40bit ALU、128K×16bit片內(nèi)RAM(包括64KB的片內(nèi)DARAM和64KB的片內(nèi)SARAM)、3個(gè)獨(dú)立的l6bit數(shù)據(jù)內(nèi)存總線、1個(gè)程序內(nèi)存總線、3個(gè)MCBSP、6信道DMA控制器、1個(gè)8/l6位并行增強(qiáng)主機(jī)端口接口及2個(gè)l6bit計(jì)時(shí)器。

          在TMS320C5416中通過(guò)PCM3002進(jìn)行語(yǔ)音信號(hào)的A/D和D/A轉(zhuǎn)換,PCM3002使用兩個(gè)串行通道,一個(gè)用于控制內(nèi)部寄存器,另外一個(gè)用于數(shù)據(jù)傳輸。在系統(tǒng)板TMS320C5416中默認(rèn)的語(yǔ)音信號(hào)的抽樣率是48kHz,通過(guò)修改PCM3002的內(nèi)部控制寄存器,設(shè)定PCM3002信號(hào)的抽樣率。為了滿足G.729編碼的要求,PCM3002信號(hào)的抽樣率為8 000Hz。為了充分利用DSP進(jìn)行信號(hào)處理,通過(guò)使用MCBSP和DMA把抽樣的數(shù)據(jù)送入DMA的緩沖區(qū)中,當(dāng)緩沖區(qū)滿時(shí)產(chǎn)生一次中斷,DSP把DMA的緩沖區(qū)中的數(shù)據(jù)讀入DSP中進(jìn)行處理,然后把處理過(guò)的數(shù)據(jù)送入DMA發(fā)送緩沖區(qū)。

            3.2 G.729在TMS320C5416的實(shí)現(xiàn)

            G.729的處理過(guò)程中采用塊處理技術(shù)如圖3所示。按照G.729標(biāo)準(zhǔn),每塊(幀)由80個(gè)樣本組成,最初80個(gè)樣本被存起來(lái),處理過(guò)程中有兩個(gè)操作是同時(shí)進(jìn)行的。在處理塊L中數(shù)據(jù)的同時(shí),存儲(chǔ)L+1塊的數(shù)據(jù)。

            基于TMS320C5416的G.729語(yǔ)音編解碼算法的優(yōu)化和實(shí)現(xiàn)

            在G.729軟件仿真時(shí)發(fā)現(xiàn)運(yùn)算量較大的部分是LSP系數(shù)的矢量量化與激勵(lì)碼本(自適應(yīng)碼本和固定碼本)的搜索,這兩個(gè)部分的運(yùn)算量大約占全部編解碼運(yùn)算量的60%以上。所以在優(yōu)化過(guò)程中,著重對(duì)固定碼本Acelp_Code_A()、分?jǐn)?shù)基音分析pitch_fr3()、開(kāi)環(huán)基音分析pitch_ol_fast()、增益量化Qua_gain()等占據(jù)絕大多數(shù)運(yùn)算量的函數(shù)進(jìn)行了優(yōu)化;僅僅簡(jiǎn)化算法不能滿足實(shí)時(shí)要求,還使用了CCS提供的C優(yōu)化器進(jìn)行C語(yǔ)言優(yōu)化,同時(shí)還可以使用內(nèi)聯(lián)函數(shù)和匯編語(yǔ)句。經(jīng)過(guò)以上處理后,輸出的信號(hào)滿足通信要求。通過(guò)分析優(yōu)化前后這些主要模塊的速度對(duì)照表(如表1所示),可以看出各個(gè)主要模塊的優(yōu)化效果是比較明顯的。一幀語(yǔ)音信號(hào)經(jīng)過(guò)處理前后幅頻圖(如圖4所示),可以看出語(yǔ)音信號(hào)經(jīng)過(guò)處理后保持良好的語(yǔ)音質(zhì)量。

            基于TMS320C5416的G.729語(yǔ)音編解碼算法的優(yōu)化和實(shí)現(xiàn)

            

          基于TMS320C5416的G.729語(yǔ)音編解碼算法的優(yōu)化和實(shí)現(xiàn)

            系統(tǒng)運(yùn)行主要分為四個(gè)過(guò)程:語(yǔ)音存儲(chǔ),數(shù)據(jù)編碼壓縮,數(shù)據(jù)解壓縮,語(yǔ)音回放。將輸入的語(yǔ)音數(shù)據(jù)首先進(jìn)行抗疊濾波,然后進(jìn)行模數(shù)轉(zhuǎn)換,經(jīng)DSP采集并存入RAM存儲(chǔ)器中,即是語(yǔ)音存儲(chǔ)過(guò)程;接著運(yùn)行編碼程序,將前面存儲(chǔ)的信息進(jìn)行壓縮并存儲(chǔ),這是編碼過(guò)程;然后進(jìn)行解碼,并將數(shù)據(jù)存回原來(lái)的位置;最后DSP執(zhí)行輸出指令,將解碼后的數(shù)據(jù)送到數(shù)模轉(zhuǎn)換器中,實(shí)現(xiàn)模擬輸出。

            用C5416最終實(shí)時(shí)實(shí)現(xiàn)了G.729聲碼器,用該聲碼器分別實(shí)時(shí)播放純語(yǔ)音文件、語(yǔ)音加背景音樂(lè)文件。對(duì)重建語(yǔ)音質(zhì)量的主觀測(cè)試結(jié)果表明,恢復(fù)語(yǔ)音保留了很好的說(shuō)話人特征,合成語(yǔ)音的清晰度和自然度均較好。該聲碼器性能測(cè)試數(shù)據(jù)如下:編解碼一幀平均時(shí)鐘周期數(shù)為1 010 350,CPU時(shí)鐘頻率為160MHz,所以編解碼一幀需要7.31ms時(shí)間;程序RAM容量為9.381KB;數(shù)據(jù)和常數(shù)RAM容量為7.146KB。以上數(shù)據(jù)表明,G.729編解碼器在C5416上實(shí)時(shí)實(shí)現(xiàn)的技術(shù),可以很好地應(yīng)用在電話會(huì)議、多媒體通信以及采用寬帶的通信系統(tǒng)中。


          上一頁(yè) 1 2 下一頁(yè)

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉