新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 多制式語音編解碼算法的DSP設(shè)計(jì)實(shí)現(xiàn)

多制式語音編解碼算法的DSP設(shè)計(jì)實(shí)現(xiàn)

作者: 時(shí)間:2008-05-09 來源:網(wǎng)絡(luò) 收藏

文摘:本文詳細(xì)描述了在TI(TexasInstruments)C55x系列平臺(tái)上集成實(shí)時(shí)0.3kbps至16kbps多種速率的方法,及在現(xiàn)有C語言源代碼基礎(chǔ)上優(yōu)化匯編指令的技巧。介紹了在編寫C55x系列匯編程序中的關(guān)鍵技術(shù),諸如函數(shù)調(diào)用中的參數(shù)傳遞,指令優(yōu)化,標(biāo)志位設(shè)置,宏使用等。文章同時(shí)給出了一種采用TIC55x系列的能運(yùn)行多種硬件系統(tǒng)平臺(tái)。最后介紹了該硬件平臺(tái)的動(dòng)態(tài)調(diào)整功耗,使系統(tǒng)的功耗在休眠狀態(tài)下最低僅為155.1mW。

Abstract:This paper detailed describes how to implement the real time multi-rate speech encoding and decoding algorithms between 0.3kbps to 16kbps on TI (Texas Instruments) C55x series DSP platform, and introduces methods of optimizing assembly language instructions based on the original C language source code. We introduce the key techniques during writing assembly programs like parameter transferring during function calling; instruction optimizing; status bits setting and macro application. The paper also design a hardware platform for general speech encoding and decoding based on C55x series DSP of TI Company. At last, the adaptive power design of the platform is presented, which reduce power of the system down to 155.1mW when in sleep running mode.

Keyword: Speech Coding; C55x; Assembly language

近二十年來,全球半導(dǎo)體產(chǎn)業(yè)的飛速發(fā)展帶動(dòng)相關(guān)的軟件、硬件水平迅速提高,這些發(fā)展使得一大批性能優(yōu)良的復(fù)雜的數(shù)字信號(hào)處理可以實(shí)時(shí)并在日常通信系統(tǒng)中得到廣泛應(yīng)用,極大地提高了現(xiàn)有通信系統(tǒng)的可靠性和效率。因此,研究處理技術(shù)并將其用基于DSP芯片硬件系統(tǒng)實(shí)現(xiàn)有著非常重要的現(xiàn)實(shí)意義和廣闊的市場(chǎng)前景。本文介紹了語音編硬件平臺(tái)的設(shè)計(jì)思路和編解碼算法在硬件平臺(tái)上的實(shí)現(xiàn)和優(yōu)化過程,同時(shí)給出了硬件平臺(tái)結(jié)構(gòu)和低功耗設(shè)計(jì)思路。

1 平臺(tái)中語音編解碼算法簡(jiǎn)述

本文在TI C55x系列DSP上實(shí)現(xiàn)了0.3kbps至16kbps的多種不同速率的語音編解碼算法。其中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 語音編解碼算法在DSP數(shù)字處理芯片上的實(shí)現(xiàn)和優(yōu)化

由于在DSP上運(yùn)行的聲碼器必須要達(dá)到實(shí)時(shí)化的要求,而直接編譯的C程序遠(yuǎn)無法達(dá)到。因此需要編寫和優(yōu)化C55x的匯編代碼來提高聲碼器的運(yùn)行效率。下面介紹幾點(diǎn)在算法硬件實(shí)現(xiàn)過程中的關(guān)鍵技術(shù):

2.1 C程序和匯編程序的混編,函數(shù)的調(diào)用和參數(shù)傳遞

把一個(gè)模塊改寫為匯編函數(shù),然后在C程序或者匯編程序中調(diào)用它。在C55x的開發(fā)中,函數(shù)的調(diào)用機(jī)制是這樣的:首先記錄下函數(shù)傳遞來的參數(shù),和返回地址SP向低位移。然后再在堆棧中開出本地變量常量所需要的空間,SP再次向低位移。

(1)匯編函數(shù)的聲明:在匯編函數(shù)中定義的函數(shù)如果要想在C代碼中被調(diào)用,必須用.global語句加以聲明,這樣,對(duì)象或函數(shù)被定義為外部的(external)。比如:

.global _Rem_Dc

_Rem_Dc:

……

(2)參數(shù)傳遞:在函數(shù)調(diào)用的過程中,C代碼傳來的參數(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ù)超過寄存器個(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í),飽和模式開

他們分別存儲(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 語音編解碼硬件平臺(tái)簡(jiǎn)述

本文設(shè)計(jì)的多模式語音編解碼系統(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,用來儲(chǔ)存程序和數(shù)據(jù)。本硬件平臺(tái)的框架結(jié)構(gòu)圖如圖2所示。

圖2 多速率語音編解碼系統(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ì)中通常都將降低電壓作為控制功耗的最直接的手段,通過采用低電壓供電的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沒有按下時(shí),表示沒有話音輸入,此時(shí)可以將A/D部分置為IDLE狀態(tài)。同樣的,當(dāng)MODEM的CD信號(hào)為高時(shí),表示沒有有效的數(shù)字碼流輸入聲碼器,故在此時(shí)可以將D/A部分設(shè)為IDLE狀態(tài)。通過將該芯片配置成低功耗模式,降低了系統(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ì),由于沒有使用到DMA、CACHE、時(shí)鐘生成器三個(gè)域中的外設(shè),故將這三個(gè)域設(shè)置成了IDLE模式。EMIF域在DSP和MSP交換數(shù)據(jù)(為了調(diào)整發(fā)送和接收的比特流)時(shí)才被置為活動(dòng),其他時(shí)候被置為IDLE。通過這樣的設(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)行的六種速率的低速率語音編解碼算法中,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)算資源。

通過以上幾個(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ì)語音編解碼算法在TI C55x系列DSP上的實(shí)現(xiàn)方法。結(jié)合作者在實(shí)際開發(fā)過程中的經(jīng)驗(yàn)與體會(huì)總結(jié)了編寫匯編程序中的主要技巧。目前C55x的高性能低功耗特點(diǎn)能大幅度提高便攜式設(shè)備的處理能力和電池的使用壽命,將會(huì)廣泛應(yīng)用于語音處理的各個(gè)領(lǐng)域。本文介紹的方法和經(jīng)驗(yàn)具有廣闊的推廣價(jià)值。

本文的創(chuàng)新點(diǎn):1.指出了多種在TI C55x系列DSP平臺(tái)上匯編語言的開發(fā)經(jīng)驗(yàn)與技巧。2.實(shí)現(xiàn)了一個(gè)可同時(shí)加載多種速率語音編解碼的嵌入式硬件平臺(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的低功耗加密型語音硬件平臺(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



評(píng)論


相關(guān)推薦

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

關(guān)閉