G729A語音編碼TMS320VC5416DSP實時實現_第1頁
G729A語音編碼TMS320VC5416DSP實時實現_第2頁
G729A語音編碼TMS320VC5416DSP實時實現_第3頁
G729A語音編碼TMS320VC5416DSP實時實現_第4頁
G729A語音編碼TMS320VC5416DSP實時實現_第5頁
已閱讀5頁,還剩3頁未讀 繼續免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、G.729A 語音編碼 TMS320VC5416 DSP 實時實現G.729A語音編碼TMS320VC5416 DSP實時實現類別:單片機/DSP  來源:世界電子元器件 作者:崔慧娟  概述  近二十年來,全球半導體產業的飛速發展帶動相關的軟件、硬件設計達到新的水平,使得很多比較復雜 的數字信號處理算法可以實時實現并且得到廣泛應用。突出的代表就是數字信 號處理器(DSP)與語音信號壓縮編碼算法相結合,并且在日常通信系統中得到 廣泛應用,例如數字移動電話、IP電話等。隨著網絡通信的發展、微處理器和 信號處理專用芯片的發展,也為語音處理技術的應用提供了更加廣闊的平臺。 所

2、有這些因素都促進了對更加有效、可靠、高質量的語音編碼系統的需要,從 而促進了語音編碼技術的持續發展。在最近一些年內,語音壓縮編碼技術有了 很大的發展。最早的標準化語音編碼標準是70年代CCITT公布的G.711 64kb/s脈沖編碼調制PCM。此后ITU又先后公布了 G.721 32kb/s自適應差分編 碼(ADPCM)、G.728 16kb/s短延時碼本激勵線性預測編碼(LD-CELP)。此外 還有一些政府和組織制定的語音標準,例如用于西歐數字移動通信的 13kb/s 具 有長時預測規則碼激勵(RPE-LPT)的線性預測方案,北美數字移動通信標準 8kb/s矢量和激勵線性預測(VSELP)方

3、案等。1999年歐洲通信標準協會(ETSI)推出了基于碼激勵線性預測編碼(CELP)的第三代移動通信語音編碼 標準自適應多速率語音編碼器(AMR),其中最低速率為4.75kb/s,達到通信 質量。1995年ITU公布G.723.1,編碼算法有兩種,5.3kb/s的ACELP和 6.3kb/s的MPMLQ算法,主要用于IP電話。1996年ITU公布了 G.728 8kb/s 的CSACELP算法,可以用于IP電話、衛星通信、語音存儲等多個領域。目 前,ITU正在致力于制定4kb/s的語音編碼國際標準,該算法將達到長途質 量。針對一些特殊應用,如保密通信、軍用通信、應急通信等,許多國際組 織、國家

4、也研制了各種不同速率的語音壓縮編碼速率,例如美國政府為保密通 信用開發的2.4和1.2kb/s MELP算法。我國近幾年也研制了 0.6、1.2、 2.4kb/s 及其它速率語音壓縮編碼算法,達到并且超過了國外同速率編碼的質 量。 DSP 在近 20 年內一直在高速發展,運算能力不斷提高,片上資源和接口更加豐富,而單位運算所需功耗不斷降低。下面給出幾個 主要廠家的 DSP 產品。 TI 的 DSP 主要有四大系列: C5000 系列(定點,低功耗):適合  個人與便攜上網及無線通信應用。 80400MIPS。 C2000 系列(定點,控制器):針對 &n

5、bsp控制進行優化的DSP。 C6000系列(高性能):適合寬帶   網絡和數字影像應用。  OMAP 系列(雙核芯片):適合低   功耗 移動設備和多媒體 PDA。 ADI 的 DSP 主要有四大系列: 21xx 系列:16 定點 DSP,內部 REM 大,外圍接口多,適合作為控制類芯片使用。 SHARC 系列: 32 位浮點 DSP, 21160 21161 提供與大內存容量結合的簡單浮點算法,具 有高水平的浮點性能。 TigerSHARC 系列:比 SHARC具  有更高的浮點運算功能 TS101,TS201

6、 Blackfin 系列:高性能 16 位 DSP   信號處理與通用微控制器易使用的性能結合。 Motolora 的DSP: DSP56800,16BIT 定點 DSP,通用型DSP。 DSP563XX,24bit 定點 DSP, 通用型DSP。  本文將介紹使用 TI 公司 C5000 系列實現 ITU-TG.729A 8kb/s CS-ACELP 語音壓縮編碼算法,并對 TI 公司的 TMS320C54x 系列 DSPITU-T G.729A 語音編碼算法做簡單介紹,以及軟件編程、調試和實現結果。  圖 1 C54xDSP 結構框圖

7、(略) TMS320 C54x 系列 DSP 芯片簡介及硬件設計 TMS320 C54x 系列 DSP 芯片是使用靜態 CMOS 技術制造的。其方框圖見圖 1,從圖中可以看出 C54x 系列 DSP 芯片具有以下功能單 元:  總線 C54x 共有八條總線分別是: PB: 程序讀取總線  CB: 數據讀取總線1  DB: 數據讀取總線 2  EB: 數據寫入總線 PAB: 程序讀取地址總線 CAB: 數據讀取地址總線1  DAB: 數據讀取地址總線 2 EAB: 數據寫入地址總線 中央處理器

8、(CPU) CPU由以下幾個部件組成:  先進的多總線結構: 包括三個獨立的數據總線和一個程序總線 40 位的算術邏輯單元: 包括一個 40 位移位器和兩個獨立的 40 位累加器 17bit 17bit的并行乘法器同一個專用的加法器相配合: 用來執行不經流水線的單周期乘加(MAC)運算 指數譯碼器:可以在一個周期里計算出一個 40 位累加器的指數值  兩個地址生成器: 包括 8 個輔助寄存器和兩個輔助寄存器算術單元  程序控制器: 對指令進行解碼、管理流水線和程序流程  片上存儲器 C54x共有192K字的尋址能力(64K

9、字的程序區,64K字的數據區,和 64K 字的 I/O 區)。  表 1 給出了部分C54x 芯片的片上資源、運算能力、工作電壓等。運算能力用 MIPS 來度量,即 每秒能執行一百萬條指令的數量。 片上其它資源 C54x 系列中不同產品具有不同的片上外設配置。這些外設有:  軟件可編程的等待狀態發生器  可編程的庫轉換  片上鎖相環時鐘發生器(包括一個內部振蕩器或一個外部時鐘源)  一個 16 比特定時器  通用輸入輸出管腳  同步串行口  異步串行口 C54x 系列 DSP 芯片具有以下主要特點:&nbs

10、p 采用改進哈佛結構,對程序內存和數據內存使用分  先進的CPU設計和為應用設計的硬件邏輯提高了芯片   為快速的后續發展設計的模塊化結 先進的IC處理技術提供了高性 能和低功 采用5V或3V靜態CMOS技術 可以進一步 Power-down 模式可以進一步降   低 能源消耗控制:使用IDLE1, IDLE2,和IDLE3指令進入Power-down模式 使用CLKOUT-off控制來禁止CLKOUT信號  高度專門的指令結構提供了快速運算和優化的高階語言操作  單指令循環和塊指令循環功能

11、 塊內存移動指令提供了更好的程序和數據管理 32 位操作數指令  擁有兩個或三個操作數讀取能力的指令  可以并行存儲和并行讀取的算術指令  條件存儲指令  從中斷快速返回的指令 擁有多種片上外設和內存配置方案 40 位算術運算器(ALU) l7bit 17bit單周期并行乘法器  六級流水線操作提高程序執行效率 支持比特倒置尋址方式和循環尋址方式。 對于語音壓縮編碼,通常所需要的DSP運算能力不會超過50個MIPS,程序和數據所占用的容量大約幾十K字,AD/DA的精度保持 就可以滿足使用要求,語音輸入輸出、

12、信碼輸入輸出各需要一個雙向串口。但 考慮在通信領域中應用,往往一片DSP不僅要實現語音壓縮編解碼,還需要實 現自適應回聲抵消、加解密、信道編解碼,甚至基帶調制解調算法等。因此我們選用了 TMS320VL5416設計硬件平臺。AD/DA芯片采用TI公司的TLV320AIC10,它是德州儀器公司(TI)推出的一款通用型低功耗16位A/D、 D/A音頻接口芯片,適用于語音以及寬帶音頻處理。采用3.3V或5V供電,片 內集成了 FIR濾波器,可以達到最高88KHz的采樣頻率,集成了輸入放大器和 輸出放大器,支持多路芯片串連,提供低功耗、ADC與DAC單獨三種工作模 式。TLV320AIC10的數字接口

13、采用同步串口方式,可以非常方便的與DSP同步 串口( McBSP)相連。FLASH采用SST39VF800A芯片,該芯片有512K 16容量, 可以將多種應用程序固化在該芯片中。開機后DSP的加載程序自動將FLASH中 的程序拷貝到DSP片上RAM中,以便能夠全速運行程序,充分發揮DSP的處理 能力。 ITU-T G.729 8kb/s CSACELP 簡介 國際電信聯盟(ITU-T)于1995年11月正式通過了G.729。ITU-T建議G.729也被稱作“共軛結構代數碼本激勵線性預測編碼方 案”(CS-ACELP),它是當前較新的一種語音壓縮標準。96年ITU-T又制定了 G

14、.729的簡化方案G.729A,主要降低了計算的復雜度以便于實時實現,因此目 前使用的都是G.729A。 G.729是由美國、法國、日本和加拿大的幾家著名國際電信實體聯合開發的。它需要符合一些嚴格的要求,比 如在良好的信道條件下要達到長話質量,在有隨機比特誤碼、發生幀丟失和多 次轉接等情況下要有很好的穩健性等。這種語音壓縮算法可以應用在很廣泛的 領域中,包括IP電話、無線通信、數字衛星系統和數字專用線 路。 G.729 算法采用“共軛結構代數碼本激勵線性預測編碼方案”(CS-ACELP)算法。這種算法綜合了波形編碼和參數編碼的優點,以自適應預測編碼技術為基礎,采用了矢量量化、合

15、成分析和感覺加權等技 術。   圖 1 G.729A 編碼器原理 圖  編碼器(圖 1 )對 10ms 長的語音幀進行處理,每幀分為兩個子幀。輸入語音首先要在預處理模塊中經過高通濾波和幅度壓縮變換, 以去除低頻干擾及防止在后面運算中出現溢出。每幀進行一次線性預測(LP) 分析,并將LPC參數轉換到線譜,對(LSP)形式進行預測式二階段矢量量化(VQ)。然后使用分析合成法,按照合成信號和原始信號間感覺加權失真最小 的準則來提取激勵參數。激勵參數(包括固定碼本和自適應碼本參數)要每子 幀(5ms)計算一次。每幀要利用感覺加權語音進行一次開環整數基值基音延時 估計,然后進行閉環的分數

16、值基音分析,確定自適應碼本的延時和增益,下面 再進行固定碼本的搜索。固定碼本是使用交織單脈沖排列設計的代數碼本。在 搜索時使用迭代式深度優先樹型搜索算法。這種算法的運算量比較小,并且具 有固定的運算復雜度,比較有利于使用硬件實現。自適應碼本和固定碼本的增 益使用預測式二階段共軛結構碼本進行矢量量化。  圖 2 G.729A 解碼器原理圖  圖2 給出了解碼算法的框圖。首先要從接收到的碼流中提取 LSP 系數和兩個分數基音延時、兩個固定碼本矢量以及兩套自適應碼本 和固定碼本增益等參數。然后,對LSP參數進行插值,并轉換到線性預測濾波 器系數的形式。接下來,將自適應碼本和固定碼本矢

17、量分別乘以各自的增益再 相加,得到激勵信號。激勵信號通過LPC綜合濾波器后,就得到了合成語音信 號。最后還要對合成語音信號進行后處理,以提高合成語音的質量。  程序的編制及調試  程序編制 DSP開發工具一般都提供C編譯器,可以直接將寫好的C語言程序轉換成DSP匯編語言程序,但效率非常低。G.729A算法C語言程 序用編譯器轉成匯編語言程序運行所需要的運算量超過2000個MIPS (每秒百 萬條指令),根本無法實時運行,因此必須手工編寫匯編程序。 由于編解碼的程序規模很大,又是在DSP的匯編語言級別上實現,因此保持原定點C語言程序所具有的模塊化、結構化的特點對

18、于匯編程序的編寫、檢查、調試和閱讀都是非常有利的。所以在編程時盡量保持DSP程序與C語言程序在流程上的一致,具體是使DSP程序與C程序之間保 持函數一一對應關系,保持循環、分支等結構的一一對應。只有為了避免使 DSP 程序產生過大的不必要開銷時,才對結構進行一定的修改,但仍然要保持 程序的模塊化和結構化。由于C程序的結構清晰,所以要想作到這一點并不困 難,只要為C程序中的if、else、for、while等結構設計出相應的結構化的 DSP匯編程序結構,在編程時按照這種固定對應關系對C語言程序進行轉換就 可以了。  程序的調試  程序的調試也是一項很費時的工作。ITU-T針對G.

19、729A提供了 8組測試碼,只要通過了這 8組測試碼,就可以認為程序基本正確了,這8組測試碼分別針對程序中的不同位置而設定如下: algthm - 算法中的條件部 algthm.in 的第一幀邊編程邊調試,也就是每編好一個函數,就將 algthm.in 的第一幀通過該函數后的輸出數據和 C 語言的相應輸出數據相比較,并針對出 現的錯誤修改函數內容,由于對剛編完的函數進行調試,對函數結構和指令記 憶會比較清晰。這樣,當編碼器完成后,algthm.in的第一幀也就基本通過 了。然后再繼續調試第二幀,當第二幀也通過后,程序中所剩的錯誤也就不多 了。等到通過了第 10 幀,就可以開始大規模地進

20、行仿真了。對于解碼部分,由 于程序比較短,就采用了先把全部程序編完,再進行調試的方分索查索程 erasure - 幀刪除恢復 分索查索程 erasure - 幀刪除恢復  lsp -LSP 系數量化  parity -奇偶校驗  speech -一般語音文件 fixed -固定碼本搜  overflow -合成器中的溢出檢  pitch -基音周期搜 tame -訓練過 采用的調試步驟是首先針對測試碼中最短的法。  程序的優化  編碼模塊與解碼模塊是按照G.729編解碼器的C語言定點源程序改寫的,雖

21、然定點的C語言程 序已經為DSP的實現作了一定的優化,但為在一個DSP芯片上實現盡量多路的 編解碼,必須根據C54x芯片的功能和特點對程序進行一定的優化。在編寫DSP 程序時,要想提高運行效率,就要充分利用C54x DSP芯片具有的各種硬件資 源,并適當地對程序結構進行一定調整,采用的主要方法有以下幾種:  充分利用各種延時 C54x 芯片指令中的跳轉、循環、調用子函數等指令都有延時的格式如 BD, BCD, RPTD,RPTBD,CALLD,CCD,RETD,RCD等,這些指令允許利用他 們執行過程中的等待周期預先執行一兩條其他指令,適當調整程序結構就可以 充分利用這些等待周

22、期,從而提高程序執行速度。  充分利用塊指令循環功能 C54x DSP 芯片還提供了塊指令循環功能,此功能可以大大地提高執行循環的速度,但是此功能只能在一重循環中 使用,因為它只提供了一個循環記數寄存器BRC,所以在遇到多重循環時就要 盡量把這個功能用在最里層的循環中,最里層循環是執行次數最多的循 環。  利用 DSP 芯片提供的各種寄存器  適當地利用各種寄存器也能顯著地提高程序的執行速度。特別是當一個函數在程序中被頻繁地調用,它的賦值可以減少執行時鐘周 期。  利用指令中的移位功能 C54xDSP 在做賦值和數值運算之前可以自動對操作數進行一

23、定位數的移位,這樣就 可以將移位運算和其它運算結合到一條指令中。另外,利用這種移位功能可以 代替一些乘數為 2 的冪乘法,雖然有這樣的限制,但是在許多濾波器和函數中 確實有這樣的運算,帶立即數的乘法需要兩個指令周期,而移位只需一個指令 周期,并且如果條件允許還可以將其結合到其它指令中,從而大大節省運算 量。  利用 DELAY 指令進行賦值操作  另外,在程序中有大量的賦值操作,即將一個內存變量的值賦給另一個內存變量。特別是在搜索碼本的時候有大量的賦值操作,并 且賦值的兩個變量是固定的。一般的方法是將第一個變量讀入到累加器或寄存 器 TREG 中,再將累加器的值賦到第二個變量中。此過程要用兩條單周期指令。 C54x提供了一個移動緩沖區的指令DELAY,可以在一個指令周期內將內存單元 的值復制到它后面的相鄰的內存單元內。雖然DELAY指令一般是用來移動緩沖 區的,但只要在給變量分配內存時將需要賦值的變量相鄰分配,就可以在一個 指令周期內完成賦值操作。 利用寄存器代替某些臨時變量  程序中往往有很多的

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
  • 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論