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