999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于TMS320C64xx的多通道語音編碼平臺的設計

2008-04-12 00:00:00吳宗魁王曉耘
現代電子技術 2008年22期

摘 要:設計一種基于TMS320C64xx DSP陣列實現多路語音編解碼的軟件平臺,以滿足不改變軟件框架即可實現各種語音編碼算法的應用需求。在此軟件平臺中,采用現代語音編碼算法“逐幀處理”的思想設計,優化DSP的HPI接口、McBsp接口的數據處理流程。通過EDMA控制器控制外部數據的接收和發送,不占用DSP的內核開銷。該平臺具有極高的編碼效率和良好的擴展性。

關鍵詞:TMS320C64xx;DSP;語音編碼;多通道

中圖分類號:TP336.8文獻標識碼:B

文章編號:1004-373X(2008)22-062-05

Design of Multi-channel Speech Coding Platform Based on TMS320C64xx

WU Zongkui,WANG Xiaoyun

(Nanjing Ednns Digital Technology Co.Ltd.,Nanjing,211100,China)

Abstract:This article describes a TMS320C64xx based multi-channel speech coding software platform design.The platform meets the application requirement that any kind of speech coding algorithm could be performed without changing software structure.Based on progressive frame processing design concept,data processing flow on both HPI and McBsp interfaces are optimized.EDMA controller is used to control external data transmitting and receiving.This approach does not require DSP kernel resources.The platform shows high coding efficiency and good extensibility.

Keywords:TMS320C64xx;DSP;speech coding;multi-channel

1 引 言

現代語音編碼算法一般都采用逐幀處理的方式,每收到一幀語音(多個樣點)進行1次編碼,以利用線性預測和矢量量化等技術去除語音信號之間的短期和長期相關性,盡可能地降低語音編碼速率,同時保持較高的重建語音質量(清晰度、可懂度和自然度)。通常這些語音編碼算法都很復雜,需要在特殊的器件上才能實時實現,這就要求器件的處理能力足夠強,為此有2種選擇:一種選擇是采用專用集成電路(ASIC),用硬件方式實現語音編解碼算法;另一種選擇是采用可編程數字信號處理器(DSP),用高級語言或匯編語言編寫的算法軟件來實現語音編解碼。由于軟件實現比較靈活,有利于滿足不斷增加的應用需求,而且隨著集成電路工藝的發展, DSP運算能力越來越強,采用DSP來實現語音編碼算法越來越普遍。

TMS320C64xx(以下簡稱64x)是TI推出的功能強大的32位定點DSP,其工作主頻可高達600 MHz。64x的內核包含8個功能單元,可同時執行8條指令,因此在600 MHz工作主頻下64x DSP的處理能力峰值高達4 800 MIPS。64x DSP采用兩級Cache機制,一級指令Cache和一級數據Cache都是16 kB;二級Cache達到1 024 kB,二級Cache也可以作為片內RAM使用,這么大的片內內存空間一般可以保證程序代碼和數據都存儲在片內內存,確保最快的運行速度。此外,64xDSP還集成了豐富的外設資源,提供了如主機接口(HPI)、多通道緩沖串口(McBSP)等多種類型的接口。為配合這些高速外設的數據傳輸,64xDSP還包含1個64通道的增強型直接存儲器存取(EDMA)控制器。EDMA控制器配置靈活簡單,可以十分方便地將DSP配置成一個獨立的多通道信號處理系統。正因為以上特點,TMS320C64xx廣泛應用于媒體網關、寬帶、無線基礎設施等需要同時做多路復雜信號處理的場合。

本文介紹的是一種基于64x DSP實現多通道語音編碼的框架和方法。

2 系統框架

圖1給出了由多片64x DSP構成的多路語音編碼系統的整體框架。

該系統由1塊主(HOST)處理器和n塊64x DSP構成。主處理器通常采用嵌入式高性能微處理器,用于高層協議處理以及對DSP進行控制。DSP作從處理器,用來完成語音編解碼算法。單片DSP就可處理幾十甚至上百路語音信號。

HOST處理器收取分組網絡中的數據包并做拆包處理,提取其中的語音壓縮碼字并將壓縮碼字通過HPI接口發給相應的DSP進行解碼處理;另一方面HOST處理器要接收DSP送來的語音壓縮碼字,打包后發送到分組網絡中。同時HOST處理器還需要向DSP發送與通道控制、業務有關的命令,比如激活、釋放某個通道,告知DSP某個通道采用的算法類型。DSP運行的代碼保存在HOST處理器本地存儲空間,當系統上電工作后,HOST處理器將DSP代碼通過HPI口寫入到各片DSP的內存空間中,然后給DSP一個喚醒信號使之啟動運行。HOST處理器通過DSP的HPI口與DSP進行雙向數據傳輸,HPI口總線通常掛接在HOST處理器的外部數據存儲總線上,這樣HOST處理器可以像訪問片外數據存儲器一樣訪問DSP的HPI口寄存器。

DSP主要完成多路語音編碼和解碼運算。通常n塊DSP運行相同的代碼。DSP通過McBSP口接收時分復用的原始語音信號,當某個通道收齊一幀信號后DSP進行一次語音編碼,將編出來的壓縮碼字加上通道號、業務類型等信息封裝成特殊的幀格式并發送到HOST處理器。另一方面,DSP將從HOST接收到的壓縮碼字進行解碼運算,并將解碼得到的重建語音從McBSP發送出去。

這里重點討論DSP側的實現。

3 接口設計

DSP與外部通信的接口主要包括HPI口和McBSP口。

3.1 HPI接口

HOST處理器與DSP之間的信息交互通過HPI口進行。DSP的EDMA控制器配合HOST處理器完成HPI口讀寫操作,DSP的內核并不直接與HPI接口打交道。HOST處理器可以透明地訪問DSP的所有內存空間。64x的HPI接口總線可以是16位或32位,可根據實際應用的通信流量選擇總線寬度。

DSP與HOST處理器逐幀進行通信,幀長固定,每幀都包含幀頭部分和載荷部分,幀格式遵循內部約定的協議。例如,對于話音業務幀,幀頭可以包括通道號、幀類型指示(指示當前幀是話音幀)和編解碼速率等信息,載荷即語音壓縮碼字。HOST處理器發給DSP的各種命令幀(如激活通道命令、釋放通道命令)的幀頭部分包括通道號、幀類型指示(指示當前幀是命令幀)和命令ID號,載荷部分則是無用信息。

在DSP內存中設立HPI接收緩沖區和HPI發送緩沖區,采用FIFO格式操作。HOST處理器將從外部網絡新收到的話音業務幀和要發給DSP的命令幀寫入到HPI接收緩沖區;DSP則將編碼后得到的話音壓縮碼字按規定的幀格式組成HPI話音幀并寫入到HPI發送緩沖區。

3.1.1 HPI緩沖區的設置

HPI接收緩沖區和HPI發送緩沖區可以采用相同的環形緩沖區結構,如下:緩沖區含HPIFRAMENUM個HPI緩沖幀,每個緩沖幀長HPIFRAMELEN個字節。HOST處理器與DSP之間以HPI緩沖幀作為單位進行數據傳輸,1個HPI緩沖幀可以裝載1個語音幀或命令幀。用數組描述HPI輸入/輸出緩沖區為:

Unsigned charHpiRxBuf[HPIFRAMENUM][ HPIFRAMELEN];

Unsigned charHpiTxBuf[HPIFRAMENUM][ HPIFRAMELEN];

另外要為HPI輸入緩沖區設立1個HOST寫入指針、1個DSP讀出指針,指針取值范圍為0,1,…,HPIFRAMENUM-1,表明緩沖區將要寫入和讀出的位置。HOST處理器每向DSP發送數據幀后都要修改HOST寫入指針,使之指向下一個要填寫的HPI緩沖幀。DSP通過比較DSP讀出指針和HOST寫入指針是否一致,如果不一致則說明HOST已發來新的HPI幀,DSP讀出這些新收到的HPI幀并同步修改DSP讀出指針。同理要為HPI輸出緩沖區設立一個DSP寫入指針和HOST讀出指針,HOST處理器根據這兩個指針是否一致來判斷DSP是否發送了新的信息。HPI輸入/輸出緩沖區讀寫操作見圖2。

3.2 McBSP接口

DSP通過McBSP口接收和發送多個通道的PCM語音信號。單個McBSP口最多可以接收發送256個通道的時分復用信號。實際上單片DSP能實時處理的通道數是有限的,可根據實際要求激活所需要的通道。McBSP還可以硬件完成PCM A律或μ律壓擴。在EDMA控制器的配合下,McBSP可以高效地接收/發送數據。

3.2.1 McBSP緩沖區的設置

為了最大程度地提高效率、降低DSP內核的負荷,在實際中McBSP接收發送數據可以采用DMA即直接存儲器訪問方式,內存中要發送的的數據由EDMA控制器搬運到McBSP發送寄存器;另一方面McBSP接收寄存器新收到的數據也將由EDMA控制器搬運到內存中適當位置。除了初始化階段需要配置McBSP口和EDMA控制器的有關參數,CPU并不直接與McBSP接口打交道。CPU只需通過McBSP的輸入/輸出緩沖區(McbspRxBuf和McbspTxBuf)讀寫數據即可。McBSP輸入/輸出緩沖區采用三維數組結構,描述如下:

WORD16 McbspRxBuf[MCBSPFRAMENUM] [MAXCHNUM] [CHFRAMELEN];

WORD16 McbspTxBuf[MCBSPFRAMENUM] [MAXCHNUM] [CHFRAMELEN];

McBSP緩沖區設MCBSPFRAMENUM個McBSP緩沖幀,每一個McBSP緩沖幀含MAXCHNUM個通道的時分復用數據,每通道存儲CHFRAMELEN個樣值(每個樣值16位)。單個McBSP緩沖幀的結構見圖3。MAXCHNUM是DSP可能同時處理的最大通道數。CHFRAMELEN可以等于語音編碼算法本身的幀長度。比如,假如語音編碼算法每幀長160個樣點(8 kHz采用頻率下為20 ms),那么CHFRAMELEN可以取160。不過因為McBSP緩沖幀的“粒度”越精細就越有利于上層軟件采取措施降低通信時延,這里建議CHFRAMELEN取值小于算法幀長,比如算法幀長為160的情況下CHFRAMELEN可以取值80或40。假如要同時運行多種算法且各種算法的幀長不盡相同,那么CHFRAMELEN可以取所有算法幀長的公約數。

為了實時實現,McBSP輸入/輸出緩沖區為每個通道分配的空間(即MCBSPFRAMENUM*CHFRAMELEN個樣點)應該不小于算法幀長的3倍。

一般,語音編碼算法要求的輸入原始語音和解碼器輸出的重建話音通常是16位線性格式。為了節省CPU運算資源,這里由McBSP硬件來完成語音樣點在16位線性格式與8位PCM格式之間的變換,所以緩沖區由16位字構成,這樣語音編解碼算法可以直接輸入/輸出線性語音,不用再由軟件實現PCM壓擴變換。當然,這種策略也使得McBSP輸入/輸出緩沖區增大了1倍。

程序在初始化階段要設置McBSP的工作方式,配置EDMA控制器使其自動從McBSP接收和發送數據。對McBSP的設置通過修改幾個控制寄存器來完成,EDMA控制器的配置相對更復雜一些。

3.2.2 EDMA控制器的設置

64x EDMA各通道的工作方式由EDMA參數表(PaRAM)設定,EDMA參數表占2 kB空間,共有84個EDMA參數項,每項6個WORD32(合24 B)。每個EDMA事件用一個或多個鏈接(Link)起來的參數項表示。EDMA參數項描述了對應的EDMA通道傳輸參數,其內容如圖4所示。

圖4中各字段的含義如下:

(1) Options(OPT):傳送配置選項,包括:EDMA事件優先級、數據大小、中斷使能、Link方式使能等;

(2) SRC Address(SRC):數據源地址;

(3) Element Count (ELECNT):一幀或一個陣列中數據單元的個數;

(4) Array/frame count(FRMCNT):幀的個數(對一維傳送而言)或陣列的個數(對二維傳送而言);

(5) DST Address(DST):數據傳向的目的地址;

(6) Element Index (ELEIDX):數據單元索引(只用于一維傳送);

(7) Frame/Array Index (FRMIDX):幀/陣列索引;

(8) Element Count Reload (ELERLD):重新裝載的數據單元個數;

(9) Link Address (LINK):被鏈接的參數RAM的地址;

McBSP口收發數據占用2個EDMA通道,一個負責將McBSP接收寄存器Rx的數傳送到McbspRxBuf;另一個負責將McbspTxBuf中的數據傳送到McBSP的發送寄存器Tx。

對McBSP接收EDMA通道而言,EDMA參數項中源地址(SRC)參數就是該McBSP口接收寄存器Rx的地址,源地址固定不變;目的地址(DST)參數是McBSP接收緩沖幀的起始地址,EDMA傳輸的目的地址按元素地址偏移(ELEIDX)變化,這里ELEIDX等于2×CHFRAMELEN,即McBSP接收緩沖幀中通道1的第一個樣點與通道0的第一個樣點之間的地址偏移。Element Count參數等于MAXCHNUM,Frame Count參數等于CHFRAMENUM-1。Frame Index參數等于( 1 - (MAXCHNUM-1)×CHFRMAENUM )×2,即McBSP接收緩沖幀中通道0的第2個樣點與通道MAXCHNUM-1的第1個樣點之間的地址偏移。

對McBSP發送EDMA通道而言,Destination Address參數就是該McBSP口發送寄存器Tx的地址,Source Address參數是McBSP接收緩沖幀的起始地址。其余Element Count,Element Index,Frame Count以及Frame Index等參數與McBSP接收EDMA通道設置相同。

與HPI緩沖區相似,McBSP緩沖區也要設置讀寫指針指向不同的McBSP緩沖幀。由于McBSP緩沖區實際上劃分為MAXCHNUM個通道,且各個通道之間具有獨立性,它們的承載的業務可能不一樣,激活和釋放的時間也各不相同,因此McBSP緩沖區讀寫指針設置與HPI緩沖區略有不同。對McBSP接收緩沖區來說,需要設置1個EDMA寫指針表示EDMA控制器正在往哪個McBSP接收緩沖幀搬運數據。

EDMA寫指針的初始值為0,以后EDMA控制器每消耗1個EDMA參數項(也就是寫滿了1個McBSP接收緩沖幀)就會產生1次EDMA中斷,在中斷服務程序中修改EDMA寫指針,使之指向下一個McBSP接收緩沖幀。另外為每個通道設立一個CPU讀指針表示該通道將要讀取哪個McBSP接收緩沖幀。同理,McBSP發送緩沖區需要設置一個EDMA讀指針表示EDMA控制正在讀取哪個McBSP發送緩沖幀,另外為每個通道設立一個CPU寫指針表示該通道將要往哪個McBSP發送緩沖幀寫入待發送的數據。

McBSP接收緩沖區EDMA寫指針和McBSP發送緩沖區EDMA讀指針為所有通道共同使用。McBSP緩沖區的讀寫指針取值范圍為0~MCBSPFRAMENUM-1。圖5顯示了某個通道(i通道)讀寫McBSP緩沖區數據的示意圖。

3.2.3 EDMA中斷服務程序

EDMA控制器每填滿1個McBSP接收緩沖幀就會產生1次EMDA中斷,進入EDMA中斷服務程序;同樣,EDMA控制器每發送完1個McBSP發送緩沖幀也會產生1次EDMA中斷,進入EDMA中斷服務程序。在EDMA中斷服務程序中需要先確認激發當前中斷的是哪個EDMA事件,這是通過查詢EDMA通道中斷懸掛寄存器CIPR的相應位來獲知的。在本應用中,EDMA中斷服務程序主要完成修改McBSP接收/發送緩沖區的讀寫指針功能,上層軟件將查詢讀寫指針的間隔來激活不同的功能模塊。由于緩沖區是環形結構,故指針的修改含有取模運算。

EDMA中斷服務程序流程圖見圖6所示。

4 軟件設計

軟件部分分成3層,即底層通信模塊、調度模塊和上層業務模塊,見圖7所示。

底層通信模塊即EDMA中斷服務程序,主要為上層軟件(調度模塊)提供McBSP接口的接收/發送狀態。有些實時性要求嚴格的任務(如McBSP接收/發送緩沖區的流量控制)也應該在底層通信模塊完成。

上層業務模塊執行語音編解碼算法。調度模塊負責在系統上電初期初始化各通道狀態以及其他全局變量、設置McBSP和EDMA控制器工作方式;在運行過程中監控各個通道的狀態,處理HOST處理器發來的命令,為語音編碼/解碼算法提供軟件接口適配。

5 結 語

本文提出了一種基于TMS320C64xx DSP實現多路語音編解碼的系統框架,重點說明HPI接口和McBSP接口的設計方案。在這種接口設計方案下,數據的接收和發送由EDMA完成,不占用DSP的內核開銷,具有極高的效率。同時該系統具有很好的擴展性,在此平臺上可以運行多種語音編解碼算法。

參考文獻

[1]Texas Instruments Incorporated.TMS320C6000 DSP Multi-channel Buffered Serial Port(McBSP) Reference Guide.2004.

[2]Texas Instruments Incorporated.TMS320C6000 DSP Enhanced Direct Memory Access (EDMA) Controller Reference Guide.2000.

[3]王劍峰,馬艷萍,劉云.McBSP在語音信號處理中的應用與實現.微計算機應用,2006,27(3):349-351.

[4]周敬利,趙冕,郭紅星.G.729語音編碼器在DSP上的實時實現.微處理機,2007,28(4):1-3.

[5]郭芙蓉.基于DSP的語音編碼系統設計.信息技術,2008,32(2):109-112,117.

[6]張丹紅,游珍珍.DSP的多領域應用研究.計算機技術與發展,2006,16(3):206-107,210.

[7]姚天任.數字語音處理.武漢:華中科技大學出版社,2003.

[8]陳華,關宇東,王健.一種短波通信中基于DSP的低速率語音編碼技術.應用科技,2007(8):9-13.

[9]楊永超,付中華,蔣冬梅.基于DSP的實時語音檢測的設計與實現.計算機應用,2008,28(2):491-493,498.

[10]張剛,史忠科.基于DSPs C6000系列的異步串行數據傳輸.工業儀表與自動化裝置,2007(4):56-58,61.

[11]高秀娟.TMS320C6000系列DSP的軟件優化技術.單片機與嵌入式系統應用,2007(4):22-24,28.

[12]余建康,來五星,史鐵林.TMS320C6711 DSP異步串行通信的研究與實現[J].機械與電子,2006(1):38-40.

作者簡介 吳宗魁 1976年出生,工程師。研究方向為多媒體通信,嵌入式系統開發。

王曉耘 1973年出生,工程師。研究方向為集成電路應用設計。

主站蜘蛛池模板: 久久精品人人做人人爽| 亚洲欧美另类日本| 国产色婷婷视频在线观看| 国产激情无码一区二区三区免费| 最新痴汉在线无码AV| 人妻精品全国免费视频| 日韩毛片视频| 91久久国产热精品免费| 國產尤物AV尤物在線觀看| 国产欧美精品一区aⅴ影院| 亚洲一区毛片| 国产青青操| 国产成人乱无码视频| 久久久精品久久久久三级| 国产美女主播一级成人毛片| 免费激情网站| 日日拍夜夜操| 精品无码一区二区三区电影| 色香蕉影院| 九色视频线上播放| 日本高清有码人妻| 亚洲精品国产乱码不卡| 中文成人在线| 日韩成人在线视频| 在线va视频| 国产极品粉嫩小泬免费看| 成人午夜精品一级毛片| 日本国产一区在线观看| 色哟哟精品无码网站在线播放视频| 欧美激情综合一区二区| 91日本在线观看亚洲精品| 她的性爱视频| 色丁丁毛片在线观看| 99爱视频精品免视看| 99re视频在线| 精品91在线| 婷婷色在线视频| 久久久久国产精品嫩草影院| 欧美国产菊爆免费观看| 午夜限制老子影院888| 国产视频a| 国产欧美日韩专区发布| 国产综合另类小说色区色噜噜| 五月天久久婷婷| 国产精品真实对白精彩久久 | 青青国产视频| 国产毛片一区| 夜夜操国产| 亚洲日韩精品无码专区97| 激情無極限的亚洲一区免费| 国产一线在线| 欧美日韩专区| 丁香五月婷婷激情基地| 精品国产一区91在线| 欧美精品啪啪一区二区三区| 91久久偷偷做嫩草影院电| 国产白浆在线| 国产激情无码一区二区三区免费| a毛片基地免费大全| 久久综合伊人 六十路| 亚洲无码高清一区| 亚洲福利网址| 欧美.成人.综合在线| 国产一区二区三区在线精品专区| 最新国产午夜精品视频成人| 欧美色视频日本| 自拍欧美亚洲| 日韩欧美91| 不卡视频国产| 亚洲国产在一区二区三区| 亚洲性一区| 日韩经典精品无码一区二区| 青青草国产免费国产| 亚洲AV无码乱码在线观看裸奔| 色香蕉影院| 亚洲啪啪网| 国产在线专区| 久久精品亚洲专区| 国产在线专区| 高潮爽到爆的喷水女主播视频| 欧美www在线观看| 国产微拍精品|