<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          文摘:本文詳細(xì)描述了在TI(TexasInstruments)C55x系列平臺上集成實時0.3kbps至16kbps多種速率的方法,及在現(xiàn)有C語言源代碼基礎(chǔ)上優(yōu)化匯編指令的技巧。介紹了在編寫C55x系列匯編程序中的關(guān)鍵技術(shù),諸如函數(shù)調(diào)用中的參數(shù)傳遞,指令優(yōu)化,標(biāo)志位設(shè)置,宏使用等。文章同時給出了一種采用TIC55x系列的能運行多種硬件系統(tǒ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ā)展帶動相關(guān)的軟件、硬件水平迅速提高,這些發(fā)展使得一大批性能優(yōu)良的復(fù)雜的數(shù)字信號處理可以實時并在日常通信系統(tǒng)中得到廣泛應(yīng)用,極大地提高了現(xiàn)有通信系統(tǒng)的可靠性和效率。因此,研究處理技術(shù)并將其用基于DSP芯片硬件系統(tǒng)實現(xiàn)有著非常重要的現(xiàn)實意義和廣闊的市場前景。本文介紹了語音編硬件平臺的設(shè)計思路和編解碼算法在硬件平臺上的實現(xiàn)和優(yōu)化過程,同時給出了硬件平臺結(jié)構(gòu)和低功耗設(shè)計思路。

          1 平臺中語音編解碼算法簡述

          本文在TI C55x系列DSP上實現(xiàn)了0.3kbps至16kbps的多種不同速率的語音編解碼算法。其中16kps速率采用連續(xù)可變增量調(diào)制(CVSD)的波形編碼算法,8kps速率采用了ITU-T公布的G.729a標(biāo)準(zhǔn)算法。而低速率編解碼采用了正弦激勵線性預(yù)測(SELP)算法。SELP算法是建立在傳統(tǒng)的線性預(yù)測模型的基礎(chǔ)上,其中清音成分用白噪聲擬合,濁音成分在每個諧波處用一個頻率變化的正弦信號合成,整個激勵的濁音部分由一組不同幅度的正弦疊加而成,這也是SELP模型不同于傳統(tǒng)的線性預(yù)測的一個非常的重要方面,即激勵信號采用分帶混合正弦激勵。

          2 語音編解碼算法在DSP數(shù)字處理芯片上的實現(xiàn)和優(yōu)化

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

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

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

          (1)匯編函數(shù)的聲明:在匯編函數(shù)中定義的函數(shù)如果要想在C代碼中被調(diào)用,必須用.global語句加以聲明,這樣,對象或函數(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ù)個數(shù)超過寄存器個數(shù),則存放在堆棧中。同時,函數(shù)的返回值如果是短整型(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 標(biāo)志位的設(shè)置

          標(biāo)志位是DSP芯片在計算時設(shè)置一些位置。它們存放在ST0_55~ST3_55中,在運算中主要用到的幾個有:

          FRCT,當(dāng)其值等于1時,乘法運算的結(jié)果將左移一位。等于零時,運算結(jié)果不變。

          SATD,當(dāng)其值等于1時,運算發(fā)生溢出時作飽和處理

          SXMD,當(dāng)其值等于1時,輸入操作數(shù)有符號擴(kuò)展

          SMUL,當(dāng)其值等于1時,飽和模式開

          他們分別存儲在ST1_55和ST3_55寄存器的位置如圖1所示:

          圖1 C55x DSP關(guān)鍵標(biāo)志位在寄存器中的位置

          這幾個操作位的設(shè)置不對的話,會出現(xiàn)運算結(jié)果的錯誤。所以要根據(jù)程序的需要正確設(shè)置操作位,同時要在程序的前后保護(hù)和還原其初值。

          psh *(ST1_55)

          psh *(ST3_55)

          ……

          pop *(ST3_55)

          pop *(ST1_55)

          3 語音編解碼硬件平臺簡述

          本文設(shè)計的多模式語音編解碼系統(tǒng)基于C55x系列DSP和MCU的雙處理器設(shè)計,主芯片采用了TI公司的TMS320VC5510A數(shù)字信號處理器。其時鐘周期最高為200MHz。擁有160KWord片上RAM(其中包括8塊4KWord的DARAM和32塊4KWord的SARAM)、16KWord片上ROM、8MWord的最大擴(kuò)展尋址能力。微控制器(MCU)選用TI公司的MSP430F149,主要完成系統(tǒng)啟動,電源管理,狀態(tài)監(jiān)控,DSP程序加載,聲碼器二進(jìn)制碼流位置重排等功能,并和DSP配合實現(xiàn)系統(tǒng)級加密機(jī)制。另外,硬件平臺的音頻編解碼芯片選用TLV320AIC10,而程序存儲部分采用的是SST39VF160 Flash,容量為1MWord,用來儲存程序和數(shù)據(jù)。本硬件平臺的框架結(jié)構(gòu)圖如圖2所示。

          圖2 多速率語音編解碼系統(tǒng)硬件平臺框架結(jié)構(gòu)圖

          4 低功耗設(shè)計

          在數(shù)字集成電路設(shè)計中,CMOS電路的靜態(tài)功耗很低,與其動態(tài)功耗相比基本可以忽略不計,故暫不考慮。其動態(tài)功耗計算公式為:

            (1)

          式中Pd為CMOS芯片的動態(tài)功耗;CT為CMOS芯片的負(fù)載電容;V為CMOS芯片的工作電壓;f為CMOS芯片的工作頻率。本硬件平臺的低功耗設(shè)計從選用有可變電壓和多電壓的器件、動態(tài)功耗管理、動態(tài)頻率控制三個方面入手。

          4.1 選用有可變電壓和多電壓的器件

          首先在文中的系統(tǒng)中,選用的單片機(jī)芯片TI公司的MSP430系列MCU是一款功耗相當(dāng)?shù)偷钠骷?,供電電?.8V~3.6V,運行模式下功耗280μA/MHz,待機(jī)模式下功耗1.6μA/MHz,禁用模式下功耗0.1μA/MHz。其次選用的DSP芯片TI的C5510 DSP采用兩種驅(qū)動電壓,內(nèi)核電壓1.6V,I/O電壓3.3V,根據(jù)(1)式,IC器件的功耗和供電電壓的平方成正比,1.6V供電的器件比3.3V供電器件能降低一半以上的功耗。IC設(shè)計中通常都將降低電壓作為控制功耗的最直接的手段,通過采用低電壓供電的DSP,既能有效地降低內(nèi)核動態(tài)功耗,還能兼顧I/O的電平兼容性。

          4.2動態(tài)功耗管理

          PCM編解碼芯片TLV320AIC11可以單獨將A/D或D/A部分禁用。當(dāng)話筒PTT沒有按下時,表示沒有話音輸入,此時可以將A/D部分置為IDLE狀態(tài)。同樣的,當(dāng)MODEM的CD信號為高時,表示沒有有效的數(shù)字碼流輸入聲碼器,故在此時可以將D/A部分設(shè)為IDLE狀態(tài)。通過將該芯片配置成低功耗模式,降低了系統(tǒng)的功耗。另外,C5510 DSP芯片內(nèi)部劃出了五個獨立的IDLE域,分別負(fù)責(zé)CPU、DMA、CACHE、外設(shè)、時鐘生成器、EMIF接口的配置。每個域可以獨立地將該域管轄的多個部件設(shè)置成活動模式或IDLE模式以此降低DSP的功耗。針對本文設(shè)計,由于沒有使用到DMA、CACHE、時鐘生成器三個域中的外設(shè),故將這三個域設(shè)置成了IDLE模式。EMIF域在DSP和MSP交換數(shù)據(jù)(為了調(diào)整發(fā)送和接收的比特流)時才被置為活動,其他時候被置為IDLE。通過這樣的設(shè)置,更加有效地控制了整個系統(tǒng)的運算功耗。

          4.3動態(tài)頻率控制

          根據(jù)(1)式,IC器件的功耗和頻率成正比,因此,將IC器件的頻率控制在剛剛好滿足運算處理要求的情況,可以大大減小系統(tǒng)功耗。這種方法的關(guān)鍵是算法運算量的大小,動態(tài)的調(diào)整芯片的運行頻率,從而達(dá)到節(jié)省功耗的目的。在本文設(shè)計的平臺上運行的六種速率的低速率語音編解碼算法中,600bps、1200bps、2400bps、8000bps、16kbps的峰值運算量分別為37.4MIPS、59.2MIPS、44.8MIPS、18.6MIPS、1MIPS,因此將DSP的工作頻率分別設(shè)置在40.096MHz、65.536MHz、49.152MHz、24.576MHz。這樣處理能夠很有效地降低DSP的內(nèi)核功耗,最大限度地有效利用運算資源。

          通過以上幾個方面的優(yōu)化設(shè)計,我們達(dá)到了應(yīng)用場合對功耗的要求。表1是本系統(tǒng)在不同運行模式下的功耗統(tǒng)計。

          表1 不同模式下DSP功耗

          工作方式

          功耗

          全速運行(80MHz)

          521.4mW

          低速運行(2MHz)

          264mW

          低速運行/DSP外設(shè)休眠

          214.5mW

          低速運行/DSP外設(shè)休眠/外圍芯片休眠

          155.1mW

          5 小結(jié)

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

          本文的創(chuàng)新點:1.指出了多種在TI C55x系列DSP平臺上匯編語言的開發(fā)經(jīng)驗與技巧。2.實現(xiàn)了一個可同時加載多種速率語音編解碼的嵌入式硬件平臺。 3.采用多種方案實現(xiàn)了對該硬件平臺的低功耗設(shè)計,很大程度上節(jié)約了系統(tǒng)的運行功耗。

          參考文獻(xiàn)(References)
          [1]田秋玲,崔慧娟,唐昆.高質(zhì)量0.6Kb/s聲碼器的TMS320VC55x實現(xiàn)[J].電聲技術(shù),2005,8:50-53
          [2]詹杰,唐昆,崔慧娟.基于TMS320VC5510的低功耗加密型語音硬件平臺的設(shè)計與實現(xiàn)[J],微計算機(jī)信息,2005/25:63-65
          [3]TMS320C55xDSPProgrammer’sGuide(spru376a)[R].TexasInstruments,July2001
          [4]TMS320C55xDSPMnemonicInstructionSetReferenceGuide(spru374g)[R].TexasInstruments,October2002
          [5]趙永剛,高攀峰,崔慧娟,等.聲碼器通用硬件平臺的實現(xiàn)[J].電聲技術(shù),2004,7:24-26.
          [6]荊元利,樊曉椏,高德遠(yuǎn),等.一種數(shù)字信號處理器的動態(tài)功耗管理方案[J].微電子學(xué)與計算機(jī),2003,9:60-63.
          [7]TI.MSP430X1XXFAMILYUSERGUIDE.[R].TexasInstruments,January2003



          評論


          相關(guān)推薦

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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();