《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 業(yè)界動態(tài) > TMS320VC5416器件的G.722.2的研究與實現(xiàn)

TMS320VC5416器件的G.722.2的研究與實現(xiàn)

2008-07-03
作者:黃元峰,黃學(xué)達(dá)

??? 摘 要: 提出自適應(yīng)多速率寬帶語音編碼" title="語音編碼">語音編碼標(biāo)準(zhǔn)G.722.2,重點研究了建立在代數(shù)碼激勵線性基礎(chǔ)上的信源編碼技術(shù),簡單介紹了包括活動語音檢測、舒適噪聲生成的源控制速率方案及錯誤隱藏機(jī)制。針對G.722.2算法復(fù)雜度高的特點,對TI公司的定點DSP TMS320VC5416的硬件原理進(jìn)行重點研究,給出了編解碼算法實現(xiàn)的軟件架構(gòu),分析了軟件實現(xiàn)流程。
??? 關(guān)鍵詞: 語音編碼? 自適應(yīng)多速率? 代數(shù)碼激勵線性預(yù)測? 源控速率

?

??? 脈沖編碼調(diào)制(PCM)原理的出現(xiàn)標(biāo)志著現(xiàn)代數(shù)字通信技術(shù)研究的開始。經(jīng)過半個多世紀(jì)的發(fā)展,數(shù)字通信系統(tǒng)以其在可靠性、抗干擾性、易集成性、保密性、交換速度和成本等方面的優(yōu)異性能取代了模擬通信系統(tǒng)。
??? 為壓縮語音編碼速率以提高通信系統(tǒng)的頻帶利用率,擴(kuò)大通信容量,ITU-T先后推出PCM、ADPCM、G.728、G.729、G.723.1等語音編碼標(biāo)準(zhǔn)。2001年,3GPP和ITU-T采納G.722.2為GSM、WCDMA和3G系統(tǒng)的語音編碼解碼" title="編碼解碼">編碼解碼標(biāo)準(zhǔn),2002年ITU-T又將其選為有線應(yīng)用的寬帶標(biāo)準(zhǔn)。
1 G.722.2寬帶語音編碼標(biāo)準(zhǔn)研究[1~7]
??? G.722.2寬帶語音編碼器是單個的集成語音編碼器,由9種速率模式組成,位速率分別為:23.85、23.05、19.85、18.25、15.85、14.25、12.65、8.85和6.6kbps。它包括活動語音檢測(VAD)、舒適噪聲生成(CNG)以及對付傳輸錯誤和丟包后的錯誤隱藏機(jī)制組成。
1.1 編碼算法部分
??? G.722.2以代數(shù)碼激勵線性預(yù)測為基礎(chǔ),通過線性預(yù)測分析、基音預(yù)測分析和在12.8kHz采樣的固定碼本參數(shù)的分析,以期最小化感覺加權(quán)差信號。處理時以幀為單位,分析每幀語音抽取CELP參數(shù),除此還計算出23.85kbps模式下高帶增益索引值。
1.2 解碼算法部分
??? 主要解碼器發(fā)送的參數(shù)(包括LP參數(shù),自適應(yīng)碼本矢量和增益,固定碼本矢量和增益以及高帶增益),分析合成重構(gòu)語音。
1.3 源控制速率方案
??? 源控制速率的作用是讓語音編碼器用一個低速率來編碼只包含背景噪音的語音幀,而不是編碼所有的語音。在GSM中,將這種模式稱為DTX(非連續(xù)傳輸)控制和操作。編碼解碼器在采用這種模式編碼時,位速率是1.75kbps。網(wǎng)絡(luò)可以調(diào)整其傳輸方案獲得可變速率。
1.4 丟幀/失幀錯誤隱藏機(jī)制
??? 由于傳輸錯誤,幀可能會出錯,而在無線網(wǎng)絡(luò)和包交換網(wǎng)絡(luò)還可能造成幀丟失。為了將單個錯幀/失幀屏蔽,錯幀/失幀發(fā)生時會通知語音解碼器,而后初始化錯誤隱藏的過程。在語音合成時使用一組預(yù)測參數(shù),網(wǎng)絡(luò)通過設(shè)置被傳輸語音幀的類型標(biāo)志位來指明發(fā)生了錯幀/失幀或者丟失SID幀。
2 TMS320VC5416的硬件平臺解決方案[8][9]
??? 采用 美國TI公司的54X系列定點DSP TMS320VC5416,具有低功耗、高性能等特點。
2.1 硬件平臺介紹
??? TMS320VC5416的主要特征有:
??? (1)優(yōu)化的CPU結(jié)構(gòu):增強(qiáng)的多總線結(jié)構(gòu),數(shù)據(jù)總線具有總線保持特性;40bit的算術(shù)邏輯單元(ALU),包括兩個獨立的40bit的累加器,一個40bit的桶形移位器;一個17×17的乘法器連接一個40bit專用加法器,可用來進(jìn)行非流水線式的單周期乘/累加(MAC)操作等。
??? (2)存儲器:擴(kuò)展地址模式可最大尋址8M×16bit" title="16bit">16bit;64K×16bit雙訪問片內(nèi)RAM;64K×16bit單訪問片內(nèi)RAM;16K×16bit片內(nèi)ROM。
??? (3)指令集:支持單指令循環(huán)和塊循環(huán)操作;塊存儲器傳送指令提供了高效的程序和數(shù)據(jù)存儲器管理;支持32bit長字操作;支持并行存儲/加載" title="加載">加載指令;支持條件存儲指令和中斷快速返回;支持定點DSP的C語言編譯器。
??? (4)片上硬件資源:軟件可編程等待狀態(tài)發(fā)生器和可編程存儲單元轉(zhuǎn)換;鎖相環(huán)(PLL)時鐘發(fā)生器;一個16bit定時器;三個多通道緩沖串口(McBSPs);六通道直接存儲訪問控制器;增強(qiáng)型8/16bit并行主機(jī)接口(HPI)。
??? (5)速度:在3.3V(內(nèi)核電壓1.6V)供電時,執(zhí)行周期是6.25ns(160MIPS)。
??? (6)電源:功耗低,工作電源有3.3V、1.6V和1.5V(內(nèi)核電壓),用節(jié)電模式IDLE1、IDLE2、IDLE3指令作功率控制,可禁止CLKOUT。
2.2 直接存儲器訪問DMA
??? C5416的DMA擁有6個獨立的可編程通道,同時允許6個不同的DMA操作。DMA控制器可以在不影響CPU情況下,允許數(shù)據(jù)在片內(nèi)存儲器、片上外設(shè)和片外設(shè)備之間獨立傳輸。主要特點:DMA操作獨立于CPU;擁有6個通道,DMA可以跟蹤6個獨立塊傳輸情況;對于內(nèi)部和外部訪問,DMA比CPU有更高優(yōu)先級;每一通道優(yōu)先級可編程;每個通道的源、目的地址寄存器值每次讀寫后可靈活配置,讀寫一次后地址可以為常數(shù)、后加一、后減一或者被一個編程值修改;每次讀寫內(nèi)部傳送可由選擇的時間來初始化;完成一半或整個數(shù)據(jù)塊傳送,DMA向CPU發(fā)中斷;DMA可執(zhí)行雙字傳送。
2.3 多通道緩沖串行口McBSP
??? C5416內(nèi)置了3個高速、全雙工的McBSPs。通過McBSPs可直接接到其他DSP器件、CODEC器件或系統(tǒng)內(nèi)其他器件。主要特點有全雙工通信;雙緩沖數(shù)據(jù)寄存器,允許連續(xù)數(shù)據(jù)流;收發(fā)時,獨立的幀和時鐘;可直接連接T1/E1、AC97等;最大至128通道的多通道收發(fā);u律和A律壓擴(kuò)可選;幀同步和數(shù)據(jù)時鐘的極性可選等。
??? CPU和DMA控制器通過內(nèi)部外設(shè)總線對McBSP進(jìn)行訪問,當(dāng)McBSP同步到一個DMA通道時,數(shù)據(jù)可以集中在發(fā)送和接收緩沖區(qū),并且整個緩沖區(qū)是連續(xù)的。當(dāng)DMA填充完整個緩沖區(qū)后,就觸發(fā)一個中斷給CPU。這就明顯降低了中斷延時和處理時間。
2.4 Bootloader技術(shù)
??? C54x DSP芯片一般都在片內(nèi)設(shè)置有BOOT程序,其主要功能是:在上電時將用戶程序代碼從外部存儲器加載到程序存儲器并執(zhí)行。加載程序途徑有從外部8位或16位EPROM加載,由主機(jī)通過8位或16位并行I/O口、串口、HPI以及自定義的自舉" title="自舉">自舉加載。其中自舉加載的過程如圖1所示。

?

????????????????


??? 本文介紹的代碼實現(xiàn)過程用到了外部FLASH的并口自舉。并口自舉檢測過程如下:DSP首先從I/O空間的0xFFFFH位置讀取自舉表的起始地址,如果低8位地址有效,則并行加載;如果低8位數(shù)據(jù)無效,則DSP將從數(shù)據(jù)空間0xFFFFH位置讀取自舉表的起始地址,同樣低8位有效則并行加載,否則轉(zhuǎn)串行檢測。
3 編解碼算法的實時實現(xiàn)[9][10]
??? 匯編語言程序設(shè)計是TMS320VC5416應(yīng)用軟件設(shè)計的基礎(chǔ),其主要任務(wù)是利用DSP芯片提供的匯編指令和偽指令編寫源程序完成指定的功能。開發(fā)環(huán)境是TI公司的集成DSP軟件開發(fā)環(huán)境CCS,開發(fā)語言是匯編語言和C語言的混合編程。
??? 由于G.722.2是多速率語音編碼,所以在編碼解碼前要確定編碼模式,在硬件平臺實現(xiàn)時,通過修改C源代碼的編碼模式提取部分函數(shù),從而給定每次編碼的速率模式,使代碼的實現(xiàn)不需要考慮信道傳輸情況,只專注于編解碼的算法實現(xiàn)。
3.1 C語言和匯編的混合編程
??? 采用C語言與匯編的混合編程實現(xiàn)G.722.2標(biāo)準(zhǔn)的代碼。為了不破壞C環(huán)境,改寫的匯編函數(shù)必須符合C函數(shù)的參數(shù)傳遞規(guī)則。在匯編程序設(shè)計時,參數(shù)的傳遞主要遵循以下規(guī)則:
??? (1)函數(shù)的第一個參數(shù)存放在A寄存器,后面的參數(shù)以逆序壓入堆棧;如果參數(shù)有結(jié)構(gòu)體,則將結(jié)構(gòu)體的地址保存在A寄存器中。
??? (2)如果參數(shù)中存在長操作數(shù),則應(yīng)按照低位字先壓棧、高位字后壓棧的順序保存,否則容易出錯。
在編寫匯編函數(shù)時,除了遵循匯編函數(shù)的調(diào)用規(guī)則外,還必須對函數(shù)中用到的輔助寄存器進(jìn)行存放堆棧的保護(hù),防止調(diào)用時修改被調(diào)用函數(shù)中使用的輔助寄存器。
3.2 系統(tǒng)軟件結(jié)構(gòu)
??? 整個系統(tǒng)軟件主要包括以下三個部分:初始化程序、語音編碼解碼部分和語音接口程序部分,整個軟件體系結(jié)構(gòu)如圖2所示。

????????????????????????

??? 軟件各模塊的主要功能:(1)初始化部分完成編碼解碼和外設(shè)的初始化;(2)語音編碼解碼部分進(jìn)行語音信號的編碼和解碼處理;(3)語音接口部分是整個系統(tǒng)的最底層,完成語音信號在串口上的接收與發(fā)送。
??? G.722.2語音編碼解碼實現(xiàn)軟件中,主函數(shù)包含在main.c文件中。主程序的處理過程為:首先對DSP芯片、A/D(D/A)芯片以及McBSP、DMA初始化,然后打開中斷屏蔽控制器(IMR),允許中斷請求,進(jìn)入等
??? 待主循環(huán)啟動DMA,同時串口開始接收數(shù)據(jù)。在接收過程中每接收完一幀數(shù)據(jù)時,DMA向CPU產(chǎn)生一次中斷,將一幀數(shù)據(jù)從中取出,DMA緩沖區(qū)計數(shù)器清零以重新開始填充接收緩沖區(qū)。同時開始調(diào)用編碼解碼子程序?qū)ψx入的語音數(shù)據(jù)進(jìn)行壓縮處理,存儲處理后的輸出數(shù)據(jù)等待發(fā)送;當(dāng)發(fā)送完一幀數(shù)據(jù)時,DMA向CPU產(chǎn)生一次中斷,緩沖區(qū)計數(shù)器清零,并將已存儲的待輸出數(shù)據(jù)填入發(fā)送緩沖區(qū),然后繼續(xù)對接收和發(fā)送緩沖區(qū)進(jìn)行檢測,重復(fù)上述循環(huán)過程。程序設(shè)計了兩個獨立并行的DMA通道,分別負(fù)責(zé)語音數(shù)據(jù)的發(fā)送和接收,在不影響CPU的情況下可同時收發(fā)數(shù)據(jù),每發(fā)送或接收完一幀數(shù)據(jù)產(chǎn)生一次DMA中斷。
重建語音的質(zhì)量是評價編碼解碼算法和系統(tǒng)性能的關(guān)鍵指標(biāo)之一,可分為客觀評測和主觀評測標(biāo)準(zhǔn)。其中客觀評測標(biāo)準(zhǔn)主要是以3GPP提供的一套測試文件為DSP匯編程序正確性檢驗的標(biāo)準(zhǔn);主觀評測一般采用的是平均判分法(MOS)。本文的主觀評測是邀請少量人員進(jìn)行實驗,實驗結(jié)果具有一定的可參考性。實際測試時,利用導(dǎo)線將硬件平臺上的Mic接口和各種聲音源相連,耳機(jī)插孔輸出編碼解碼后的語音,對解碼后的語音進(jìn)行試聽測試。實驗表明,以男生、女生、音樂等多種音源作為Mic輸入,系統(tǒng)具有良好的適應(yīng)性。非正式試聽測試,恢復(fù)語音保留了較好的說話人特征。通過對不同編碼速率的比較可知,高速率語音編碼方式語音質(zhì)量明顯優(yōu)于低速率語音編碼方式。
參考文獻(xiàn)
[1] 王炳錫.變速率語音編碼[M].西安:西安電子科技大學(xué)出版社,2004,7.
[2] 程佩青.數(shù)字信號處理教程[M].北京:清華大學(xué)出版社,2002,2.
[3] 3GPP,TS 26.091:AMR Speech Codec;Error concealment of lost frames[S].2002,6.
[4] 3GPP,TS 26.092:AMR Speech Codec;Comfort noise for AMR speech traffic channels[S].2002,6.
[5] 3GPP,TS 26.093:AMR Speech Codec;Source controlled rate operation[S].2004,4.
[6] 3GPP,TS 26.094:AMR Speech Codec;Voice activity?detector for AMR speech traffic channels[S].2002,6.
[7] 3GPP,TS 26.101:Mandatory speech codec speech processing functions;Adaptive Multi-Rate(AMR) speech codec?frame structure[S].2004,9.
[8] TMS320VC5416 Fixed-Point digital signal processor data?manual[Z],March 1999,Revised January 2005.
[9] 戴明禎.TMS320C54x數(shù)字信號處理器原理、結(jié)構(gòu)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2001
[10] 宗戰(zhàn)華,鄭建生.TMS320VC5416并行自舉的巧妙實現(xiàn)[J].電子技術(shù)應(yīng)用,2004(12):77-80

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟(jì)損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。