多制式語(yǔ)音編解碼算法的DSP設(shè)計(jì)實(shí)現(xiàn)
掃描二維碼
隨時(shí)隨地手機(jī)看文章
近二十年來(lái),全球半導(dǎo)體產(chǎn)業(yè)的飛速發(fā)展帶動(dòng)相關(guān)的軟件、硬件設(shè)計(jì)水平迅速提高,這些發(fā)展使得一大批性能優(yōu)良的復(fù)雜的數(shù)字信號(hào)處理算法可以實(shí)時(shí)實(shí)現(xiàn)并在日常通信系統(tǒng)中得到廣泛應(yīng)用,極大地提高了現(xiàn)有通信系統(tǒng)的可靠性和效率。因此,研究語(yǔ)音處理技術(shù)并將其用基于DSP芯片硬件系統(tǒng)實(shí)現(xiàn)有著非常重要的現(xiàn)實(shí)意義和廣闊的市場(chǎng)前景。本文介紹了語(yǔ)音編解碼硬件平臺(tái)的設(shè)計(jì)思路和編解碼算法在硬件平臺(tái)上的實(shí)現(xiàn)和優(yōu)化過(guò)程,同時(shí)給出了硬件平臺(tái)結(jié)構(gòu)和低功耗設(shè)計(jì)思路。
1 平臺(tái)中語(yǔ)音編解碼算法簡(jiǎn)述
本文在TI C55x系列DSP上實(shí)現(xiàn)了0.3kbps至16kbps的多種不同速率的語(yǔ)音編解碼算法。其中16kps速率采用連續(xù)可變?cè)隽空{(diào)制(CVSD)的波形編碼算法,8kps速率采用了ITU-T公布的G.729a標(biāo)準(zhǔn)算法。而低速率編解碼采用了正弦激勵(lì)線性預(yù)測(cè)(SELP)算法。SELP算法是建立在傳統(tǒng)的線性預(yù)測(cè)模型的基礎(chǔ)上,其中清音成分用白噪聲擬合,濁音成分在每個(gè)諧波處用一個(gè)頻率變化的正弦信號(hào)合成,整個(gè)激勵(lì)的濁音部分由一組不同幅度的正弦疊加而成,這也是SELP模型不同于傳統(tǒng)的線性預(yù)測(cè)的一個(gè)非常的重要方面,即激勵(lì)信號(hào)采用分帶混合正弦激勵(lì)。
2 語(yǔ)音編解碼算法在DSP數(shù)字處理芯片上的實(shí)現(xiàn)和優(yōu)化
由于在DSP上運(yùn)行的聲碼器必須要達(dá)到實(shí)時(shí)化的要求,而直接編譯的C程序遠(yuǎn)無(wú)法達(dá)到。因此需要編寫(xiě)和優(yōu)化C55x的匯編代碼來(lái)提高聲碼器的運(yùn)行效率。下面介紹幾點(diǎn)在算法硬件實(shí)現(xiàn)過(guò)程中的關(guān)鍵技術(shù):
2.1 C程序和匯編程序的混編,函數(shù)的調(diào)用和參數(shù)傳遞
把一個(gè)模塊改寫(xiě)為匯編函數(shù),然后在C程序或者匯編程序中調(diào)用它。在C55x的開(kāi)發(fā)中,函數(shù)的調(diào)用機(jī)制是這樣的:首先記錄下函數(shù)傳遞來(lái)的參數(shù),和返回地址SP向低位移。然后再在堆棧中開(kāi)出本地變量常量所需要的空間,SP再次向低位移。
(1)匯編函數(shù)的聲明:在匯編函數(shù)中定義的函數(shù)如果要想在C代碼中被調(diào)用,必須用.global語(yǔ)句加以聲明,這樣,對(duì)象或函數(shù)被定義為外部的(external)。比如:
.global _Rem_Dc
_Rem_Dc:
……
(2)參數(shù)傳遞:在函數(shù)調(diào)用的過(guò)程中,C代碼傳來(lái)的參數(shù)按照以下規(guī)則存放在特定的寄存器中:即16或23位的數(shù)據(jù)指針,先后存放在(X)AR0-(X)AR4中。16位的數(shù)據(jù),先后存放在T0,T1,AR0-AR4中,32位的數(shù)據(jù),先后存放在AC0,AC1和AC2中。如果參數(shù)個(gè)數(shù)超過(guò)寄存器個(gè)數(shù),則存放在堆棧中。同時(shí),函數(shù)的返回值如果是短整型(short)則存放在T0中,如果是長(zhǎng)整型(long)則存放在AC0中,如果是指針則存放在(X)AR0中。
例如:
①int fn(int i1, long l2, int *p3);
則fn->T0; il->T0, l2->AC0, p3->AR0
②long fn(int *p1, int i2, int i3, int i4);
則fn->AC0, p1->AR0, i2->T0, i3->T1, i4->AR1
③void fn(long l1, long l2, long l3, long l4, int i5);
則l1->AC0, l2->AC1, l3->AC2, l4->堆棧, i5->T0
④void fn(long l1, long l2, long l3, int *p4, int *p5, int *p6, int *p7, int *p8, int i9, int i10);
則l1->AC0,l2->AC1,l3->AC2,p4->AR0,p5->AR1, p6->AR2, p7->AR3, p8->AR4, i9->T0,i10->T1
2.2 標(biāo)志位的設(shè)置
標(biāo)志位是DSP芯片在計(jì)算時(shí)設(shè)置一些位置。它們存放在ST0_55~ST3_55中,在運(yùn)算中主要用到的幾個(gè)有:
FRCT,當(dāng)其值等于1時(shí),乘法運(yùn)算的結(jié)果將左移一位。等于零時(shí),運(yùn)算結(jié)果不變。
SATD,當(dāng)其值等于1時(shí),運(yùn)算發(fā)生溢出時(shí)作飽和處理
SXMD,當(dāng)其值等于1時(shí),輸入操作數(shù)有符號(hào)擴(kuò)展
SMUL,當(dāng)其值等于1時(shí),飽和模式開(kāi)
他們分別存儲(chǔ)在ST1_55和ST3_55寄存器的位置如圖1所示:
圖1 C55x DSP關(guān)鍵標(biāo)志位在寄存器中的位置
這幾個(gè)操作位的設(shè)置不對(duì)的話,會(huì)出現(xiàn)運(yùn)算結(jié)果的錯(cuò)誤。所以要根據(jù)程序的需要正確設(shè)置操作位,同時(shí)要在程序的前后保護(hù)和還原其初值。
psh *(ST1_55)
psh *(ST3_55)
……
pop *(ST3_55)
pop *(ST1_55)
3 語(yǔ)音編解碼硬件平臺(tái)簡(jiǎn)述
本文設(shè)計(jì)的多模式語(yǔ)音編解碼系統(tǒng)基于C55x系列DSP和MCU的雙處理器設(shè)計(jì),主芯片采用了TI公司的TMS320VC5510A數(shù)字信號(hào)處理器。其時(shí)鐘周期最高為200MHz。擁有160KWord片上RAM(其中包括8塊4KWord的DARAM和32塊4KWord的SARAM)、16KWord片上ROM、8MWord的最大擴(kuò)展尋址能力。微控制器(MCU)選用TI公司的MSP430F149,主要完成系統(tǒng)啟動(dòng),電源管理,狀態(tài)監(jiān)控,DSP程序加載,聲碼器二進(jìn)制碼流位置重排等功能,并和DSP配合實(shí)現(xiàn)系統(tǒng)級(jí)加密機(jī)制。另外,硬件平臺(tái)的音頻編解碼芯片選用TLV320AIC10,而程序存儲(chǔ)部分采用的是SST39VF160 Flash,容量為1MWord,用來(lái)儲(chǔ)存程序和數(shù)據(jù)。本硬件平臺(tái)的框架結(jié)構(gòu)圖如圖2所示。
圖2 多速率語(yǔ)音編解碼系統(tǒng)硬件平臺(tái)框架結(jié)構(gòu)圖
4 低功耗設(shè)計(jì)
在數(shù)字集成電路設(shè)計(jì)中,CMOS電路的靜態(tài)功耗很低,與其動(dòng)態(tài)功耗相比基本可以忽略不計(jì),故暫不考慮。其動(dòng)態(tài)功耗計(jì)算公式為:
(1)
式中Pd為CMOS芯片的動(dòng)態(tài)功耗;CT為CMOS芯片的負(fù)載電容;V為CMOS芯片的工作電壓;f為CMOS芯片的工作頻率。本硬件平臺(tái)的低功耗設(shè)計(jì)從選用有可變電壓和多電壓的器件、動(dòng)態(tài)功耗管理、動(dòng)態(tài)頻率控制三個(gè)方面入手。
4.1 選用有可變電壓和多電壓的器件
首先在文中的系統(tǒng)中,選用的單片機(jī)芯片TI公司的MSP430系列MCU是一款功耗相當(dāng)?shù)偷钠骷?,供電電?.8V~3.6V,運(yùn)行模式下功耗280μA/MHz,待機(jī)模式下功耗1.6μA/MHz,禁用模式下功耗0.1μA/MHz。其次選用的DSP芯片TI的C5510 DSP采用兩種驅(qū)動(dòng)電壓,內(nèi)核電壓1.6V,I/O電壓3.3V,根據(jù)(1)式,IC器件的功耗和供電電壓的平方成正比,1.6V供電的器件比3.3V供電器件能降低一半以上的功耗。IC設(shè)計(jì)中通常都將降低電壓作為控制功耗的最直接的手段,通過(guò)采用低電壓供電的DSP,既能有效地降低內(nèi)核動(dòng)態(tài)功耗,還能兼顧I/O的電平兼容性。
4.2動(dòng)態(tài)功耗管理
PCM編解碼芯片TLV320AIC11可以單獨(dú)將A/D或D/A部分禁用。當(dāng)話筒PTT沒(méi)有按下時(shí),表示沒(méi)有話音輸入,此時(shí)可以將A/D部分置為IDLE狀態(tài)。同樣的,當(dāng)MODEM的CD信號(hào)為高時(shí),表示沒(méi)有有效的數(shù)字碼流輸入聲碼器,故在此時(shí)可以將D/A部分設(shè)為IDLE狀態(tài)。通過(guò)將該芯片配置成低功耗模式,降低了系統(tǒng)的功耗。另外,C5510 DSP芯片內(nèi)部劃出了五個(gè)獨(dú)立的IDLE域,分別負(fù)責(zé)CPU、DMA、CACHE、外設(shè)、時(shí)鐘生成器、EMIF接口的配置。每個(gè)域可以獨(dú)立地將該域管轄的多個(gè)部件設(shè)置成活動(dòng)模式或IDLE模式以此降低DSP的功耗。針對(duì)本文設(shè)計(jì),由于沒(méi)有使用到DMA、CACHE、時(shí)鐘生成器三個(gè)域中的外設(shè),故將這三個(gè)域設(shè)置成了IDLE模式。EMIF域在DSP和MSP交換數(shù)據(jù)(為了調(diào)整發(fā)送和接收的比特流)時(shí)才被置為活動(dòng),其他時(shí)候被置為IDLE。通過(guò)這樣的設(shè)置,更加有效地控制了整個(gè)系統(tǒng)的運(yùn)算功耗。
4.3動(dòng)態(tài)頻率控制
根據(jù)(1)式,IC器件的功耗和頻率成正比,因此,將IC器件的頻率控制在剛剛好滿足運(yùn)算處理要求的情況,可以大大減小系統(tǒng)功耗。這種方法的關(guān)鍵是算法運(yùn)算量的大小,動(dòng)態(tài)的調(diào)整芯片的運(yùn)行頻率,從而達(dá)到節(jié)省功耗的目的。在本文設(shè)計(jì)的平臺(tái)上運(yùn)行的六種速率的低速率語(yǔ)音編解碼算法中,600bps、1200bps、2400bps、8000bps、16kbps的峰值運(yùn)算量分別為37.4MIPS、59.2MIPS、44.8MIPS、18.6MIPS、<1MIPS,因此將DSP的工作頻率分別設(shè)置在40.096MHz、65.536MHz、49.152MHz、24.576MHz。這樣處理能夠很有效地降低DSP的內(nèi)核功耗,最大限度地有效利用運(yùn)算資源。
通過(guò)以上幾個(gè)方面的優(yōu)化設(shè)計(jì),我們達(dá)到了應(yīng)用場(chǎng)合對(duì)功耗的要求。表1是本系統(tǒng)在不同運(yùn)行模式下的功耗統(tǒng)計(jì)。
表1 不同模式下DSP功耗
工作方式
功耗
全速運(yùn)行(80MHz)
521.4mW
低速運(yùn)行(2MHz)
264mW
低速運(yùn)行/DSP外設(shè)休眠
214.5mW
低速運(yùn)行/DSP外設(shè)休眠/外圍芯片休眠
155.1mW
5 小結(jié)
本文中介紹了針對(duì)語(yǔ)音編解碼算法在TI C55x系列DSP上的實(shí)現(xiàn)方法。結(jié)合作者在實(shí)際開(kāi)發(fā)過(guò)程中的經(jīng)驗(yàn)與體會(huì)總結(jié)了編寫(xiě)匯編程序中的主要技巧。目前C55x的高性能低功耗特點(diǎn)能大幅度提高便攜式設(shè)備的處理能力和電池的使用壽命,將會(huì)廣泛應(yīng)用于語(yǔ)音處理的各個(gè)領(lǐng)域。本文介紹的方法和經(jīng)驗(yàn)具有廣闊的推廣價(jià)值。
本文的創(chuàng)新點(diǎn):1.指出了多種在TI C55x系列DSP平臺(tái)上匯編語(yǔ)言的開(kāi)發(fā)經(jīng)驗(yàn)與技巧。2.實(shí)現(xiàn)了一個(gè)可同時(shí)加載多種速率制式語(yǔ)音編解碼的嵌入式硬件平臺(tái)。 3.采用多種方案實(shí)現(xiàn)了對(duì)該硬件平臺(tái)的低功耗設(shè)計(jì),很大程度上節(jié)約了系統(tǒng)的運(yùn)行功耗。
參考文獻(xiàn)(References)
[1]田秋玲,崔慧娟,唐昆.高質(zhì)量0.6Kb/s聲碼器的TMS320VC55x實(shí)現(xiàn)[J].電聲技術(shù),2005,8:50-53
[2]詹杰,唐昆,崔慧娟.基于TMS320VC5510的低功耗加密型語(yǔ)音硬件平臺(tái)的設(shè)計(jì)與實(shí)現(xiàn)[J],微計(jì)算機(jī)信息,2005/25:63-65
[3]TMS320C55xDSPProgrammer’sGuide(spru376a)[R].TexasInstruments,July2001
[4]TMS320C55xDSPMnemonicInstructionSetReferenceGuide(spru374g)[R].TexasInstruments,October2002
[5]趙永剛,高攀峰,崔慧娟,等.聲碼器通用硬件平臺(tái)的實(shí)現(xiàn)[J].電聲技術(shù),2004,7:24-26.
[6]荊元利,樊曉椏,高德遠(yuǎn),等.一種數(shù)字信號(hào)處理器的動(dòng)態(tài)功耗管理方案[J].微電子學(xué)與計(jì)算機(jī),2003,9:60-63.
[7]TI.MSP430X1XXFAMILYUSERGUIDE.[R].TexasInstruments,January2003