《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 通信與網(wǎng)絡(luò) > 設(shè)計(jì)應(yīng)用 > 雙DSP實(shí)現(xiàn)IP分組語(yǔ)音通信
雙DSP實(shí)現(xiàn)IP分組語(yǔ)音通信
劉 兵 徐家愷 劉 陽(yáng)
摘要: 提出一種以2塊TMS320VC54x DSP為核心處理器的IP分組語(yǔ)音通信解決方案,并著重說(shuō)明了語(yǔ)音處理模塊與以太網(wǎng)接口模塊的設(shè)計(jì)思路及2模塊的集成方法。
Abstract:
Key words :

  摘  要: 提出一種以2塊title="TMS320VC54x">TMS320VC54x DSP為核心處理器的IP分組語(yǔ)音通信解決方案,并著重說(shuō)明了語(yǔ)音處理模塊與以太網(wǎng)接口模塊的設(shè)計(jì)思路及2模塊的集成方法。
  關(guān)鍵詞: 分組語(yǔ)音通信  DSP  CODEC  以太網(wǎng)接口  HPI

   分組語(yǔ)音通信是當(dāng)前網(wǎng)絡(luò)技術(shù)發(fā)展的一個(gè)熱點(diǎn)。雖然PC機(jī)早已可以通過(guò)軟件實(shí)現(xiàn)IP網(wǎng)絡(luò)通話,但是用戶卻需要像電話一樣小巧而方便的終端。嵌入式技術(shù)的不斷進(jìn)步讓用戶的這個(gè)需求變成了現(xiàn)實(shí)。通常的IP分組語(yǔ)音通信解決方案是采用1塊MCU芯片作為系統(tǒng)主控CPU,用1塊DSP芯片進(jìn)行語(yǔ)音信號(hào)處理、壓縮編解碼,再用CODEC、以太網(wǎng)接口和存儲(chǔ)器等構(gòu)成外圍電路。此外也有將MCU和DSP集成在一起的芯片,如TI生產(chǎn)的OMAP平臺(tái)DSP就采用了ARM+DSP構(gòu)架。集成化不僅可以降低成本,還可以降低功耗并提高可靠性。筆者在設(shè)計(jì)中使用了2塊DSP,分別作為主控和語(yǔ)音處理,同樣實(shí)現(xiàn)了IP的分組語(yǔ)音通信。
1 IP分組語(yǔ)音通信
  分組語(yǔ)音技術(shù)是指將語(yǔ)音信號(hào)轉(zhuǎn)化為一定長(zhǎng)度的數(shù)字化語(yǔ)音包,采用存儲(chǔ)-轉(zhuǎn)發(fā)的方式,以IP包的形式進(jìn)行交換和傳輸?shù)募夹g(shù)。傳統(tǒng)的電話網(wǎng)以電路交換的方式傳輸語(yǔ)音,它需要的基本帶寬為64Kbps,而在面向無(wú)連接的分組網(wǎng)絡(luò)上傳輸?shù)姆纸M語(yǔ)音需要的帶寬僅為10Kbps左右。由于互聯(lián)網(wǎng)并不能對(duì)傳輸帶寬提供保證,因此語(yǔ)音包在傳輸過(guò)程中就會(huì)產(chǎn)生延遲、抖動(dòng)、包丟失等影響語(yǔ)音質(zhì)量的因素。近年來(lái)由于低速率編解碼算法的出現(xiàn)和軟硬件性能的提高,人們開(kāi)始注意到分組語(yǔ)音技術(shù)的商業(yè)價(jià)值。
  分組語(yǔ)音信道模型如圖1所示。發(fā)送端語(yǔ)音在經(jīng)過(guò)模擬信號(hào)、數(shù)字信號(hào)、語(yǔ)音包的處理過(guò)程后,再經(jīng)過(guò)網(wǎng)絡(luò)傳輸,在接收端對(duì)語(yǔ)音包進(jìn)行相反的處理,還原出語(yǔ)音。


2 語(yǔ)音處理模塊設(shè)計(jì)
  該模塊實(shí)現(xiàn)了語(yǔ)音信號(hào)的驅(qū)動(dòng)放大,A/D、D/A變換,壓縮編解碼等信號(hào)處理功能。
2.1 模塊硬件設(shè)計(jì)
  語(yǔ)音處理模塊硬件框圖如圖2所示。該模塊的核心是TMS320VC5402(以下簡(jiǎn)稱C5402)數(shù)字信號(hào)處理器。TLC320AD50是模/數(shù)接口芯片,采用Σ-Δ調(diào)制方式,為DSP提供語(yǔ)音CODEC接口。TLC2272和LM386分別作為TLC320AD50的輸入前置放大和輸出驅(qū)動(dòng)。在發(fā)送端,TLC2272運(yùn)算放大器對(duì)輸入語(yǔ)音信號(hào)進(jìn)行放大,TLC320AD50模擬接口芯片對(duì)模擬信號(hào)進(jìn)行A/D變換,使之成為數(shù)字信號(hào),C5402對(duì)數(shù)字信號(hào)進(jìn)行壓縮編碼,得到低速率的語(yǔ)音數(shù)據(jù),并送給作為主控制器的另一塊DSP。在接收端,語(yǔ)音處理模塊從主控DSP處得到壓縮的低速率語(yǔ)音數(shù)據(jù),由DSP進(jìn)行解碼,TLC320AD50進(jìn)行 D/A變換,LM386進(jìn)行信號(hào)放大后驅(qū)動(dòng)揚(yáng)聲器,還原出模擬語(yǔ)音信號(hào)。


  C5402利用多通道緩沖串行口(Multichannel Buffered Serial Port,McBSP)和TLC320AD50連接。TLC320AD50工作在主機(jī)模式下,它提供與C5402進(jìn)行串行通信的8kHz的幀同步信號(hào)FS#和8.192MHz的移位時(shí)鐘信號(hào)SCLK。C5402的BFS和BCLK設(shè)為輸入狀態(tài)。TLC320AD50每125ns輸出1幀16位的數(shù)據(jù),并以DMA方式與C5402交換數(shù)據(jù),以減少CPU資源的占有。
2.2 壓縮編解碼算法
  壓縮編碼方式的標(biāo)準(zhǔn)由ITU-T統(tǒng)一制定,分為波形編碼和參數(shù)編碼二類。常用的波形編碼標(biāo)準(zhǔn)有G.711和G.726,其中G.711是PSTN電話網(wǎng)廣為使用的64Kbps的PCM編碼,G.726采用32Kbps的ADPCM方式。常用的參數(shù)編碼標(biāo)準(zhǔn)有G.728、G.729、G.729A和G.723.1。本文采用的是G.723.1標(biāo)準(zhǔn),它是H.323協(xié)議標(biāo)準(zhǔn)缺省的語(yǔ)音編碼方式。
  G.723.1是目前分組語(yǔ)音通信中常用的壓縮比最高的編碼方式。它使用雙速率LPAS聲碼器,其低速率采用代數(shù)碼本激勵(lì)線性預(yù)測(cè)(ACELP),編碼速率為5.3Kbps,高速率(6.3Kbps)采用多脈沖最大似然量化(MP-MLQ)激勵(lì)。G.723.1標(biāo)準(zhǔn)基于碼激勵(lì)線性預(yù)測(cè)(Code Excited Linear Prediction,CELP)編碼模型對(duì)語(yǔ)音進(jìn)行編碼。線性預(yù)測(cè)采用前饋型前向自適應(yīng),并使用預(yù)視。其輸入數(shù)據(jù)是經(jīng) 8kHz采樣的16位線性 PCM語(yǔ)音信號(hào),幀長(zhǎng)為30ms(240個(gè)樣點(diǎn)),分為4個(gè)子幀,即每個(gè)子幀含有60個(gè)抽樣信號(hào),預(yù)視7.5ms。編碼端對(duì)原始語(yǔ)音進(jìn)行分析,提取出CELP參數(shù)(LSP參數(shù)、碼本索引和增益等),并將這些參數(shù)編碼傳輸。在解碼端,再用這些參數(shù)構(gòu)造激勵(lì)信號(hào)和合成濾波器,將激勵(lì)信號(hào)通過(guò)合成濾波器重建語(yǔ)音信號(hào)。G.723.1需要40MIPS以上的DSP才能保證語(yǔ)音編解碼的質(zhì)量。C5402運(yùn)算能力可以達(dá)到100MIPS,完全可滿足系統(tǒng)要求。
3  以太網(wǎng)接口模塊設(shè)計(jì)
  該模塊由主控DSP直接控制以太網(wǎng)接口芯片,進(jìn)行IP語(yǔ)音數(shù)據(jù)包的收發(fā)。以太網(wǎng)驅(qū)動(dòng)芯片采用的是RTL8019AS,它是臺(tái)灣Realtek公司生產(chǎn)的一款兼容NE2000的8/16位網(wǎng)卡適配器,支持ISA總線結(jié)構(gòu)。由于其性能優(yōu)良,價(jià)格低廉,因此在10Mbps網(wǎng)卡市場(chǎng)中占有相當(dāng)大的份額。RTL8019AS有16KB的RAM用于數(shù)據(jù)收發(fā)緩存,分成64頁(yè),每頁(yè)256B,每頁(yè)存儲(chǔ)1幀以太網(wǎng)數(shù)據(jù)包。它內(nèi)部有4頁(yè)寄存器,對(duì)應(yīng)著偏移量為0x00~0x0F的16個(gè)輸入/輸出地址,控制器通過(guò)讀寫這些寄存器,控制數(shù)據(jù)的收發(fā)。此外,0x10~0x17是遠(yuǎn)程DMA讀寫端口地址,0x18~0x1F是復(fù)位端口地址。RTL8019AS中主要的寄存器如下。
  CR:控制以太網(wǎng)驅(qū)動(dòng)器操作,同時(shí)用于選擇寄存器頁(yè)。
  PSTART:接收緩沖區(qū)的起始頁(yè)地址。
  PSTOP:接收緩沖區(qū)的結(jié)束頁(yè)地址。
  TPSR:發(fā)送緩沖區(qū)的起始頁(yè)地址。
  BNRY:指向最后一個(gè)已讀取頁(yè)地址。
  CURR:指向當(dāng)前的接收頁(yè)地址。
  ISR:中斷狀態(tài)寄存器。
  RCR:接收參數(shù)配置。
  TCR:發(fā)送參數(shù)配置。
  DCR:數(shù)據(jù)參數(shù)配置。
  IMR:中斷屏蔽寄存器。
  RSAR0、RSAR1:遠(yuǎn)程DMA起始地址。
  RBCR0、RBCR1:遠(yuǎn)程DMA字節(jié)計(jì)數(shù)器。
  PAR0~PAR5:設(shè)置本地MAC地址。
  MAR0~MAR7:用于設(shè)置多點(diǎn)播送的參數(shù)。
3.1 模塊硬件設(shè)計(jì)
  主控C5402的I/O資源豐富,可以很容易地將RTL8019AS映射為它的I/O空間。DSP與RTL8019AS的硬件連接如圖3所示。RTL8019AS的I/O電壓為5V,而DSP的I/O電壓是3.3V,二者連接時(shí)需要轉(zhuǎn)換電平。本設(shè)計(jì)選用SN74LVTH16244作為地址總線緩沖器,選用SN74LVTH16245雙向總線收發(fā)器作為數(shù)據(jù)總線緩沖器。

 


  DSP采用查詢方式和RTL8019AS通信。DSP的XF為RTL8019AS提供硬件復(fù)位脈沖,通過(guò)A4~A0共5根地址線來(lái)訪問(wèn)RTL8019AS的0x00~0x1F寄存器和端口空間,以太網(wǎng)驅(qū)動(dòng)器的基地址由A19~A5確定,其值是0x300。RTL8019AS的讀寫控制信號(hào)由DSP的IOSTRB#、R/W#及A15通過(guò)圖中所示的邏輯提供。很顯然,RTL8019AS被映射到了DSP低32K字的I/O空間。
3.2 模塊軟件設(shè)計(jì)
  模塊采用以太網(wǎng)的封裝格式協(xié)議(兼容IEEE802.3)、IP協(xié)議和UDP協(xié)議作為系統(tǒng)的通信協(xié)議。該部分軟件包括2部分:以太網(wǎng)驅(qū)動(dòng)器的初始化和收發(fā)數(shù)據(jù)處理。
  RTL8019AS硬件或軟件復(fù)位后即進(jìn)行初始化工作,包括設(shè)置接收緩沖區(qū)和發(fā)送緩沖區(qū),設(shè)置本地MAC地址,配置接收參數(shù)、發(fā)送參數(shù)和數(shù)據(jù)參數(shù),給寫入頁(yè)指針和讀取頁(yè)指針賦初值,清除中斷狀態(tài)位等。
  數(shù)據(jù)發(fā)送前,要將語(yǔ)音數(shù)據(jù)封裝成以太網(wǎng)幀,就是在語(yǔ)音數(shù)據(jù)前依次加上UDP包頭、IP包頭和以太網(wǎng)包頭;對(duì)接收到的數(shù)據(jù)包,要用相反的過(guò)程解包,依次去掉各種包頭后,取出語(yǔ)音數(shù)據(jù)。
  以太網(wǎng)接口模塊數(shù)據(jù)收發(fā)軟件流程如圖4所示。發(fā)送時(shí),DSP首先將語(yǔ)音數(shù)據(jù)封裝打包,然后用遠(yuǎn)程DMA方式寫入RTL8019AS的發(fā)送緩沖區(qū),并將數(shù)據(jù)包傳到網(wǎng)上。接收時(shí),通過(guò)查詢ISR確定是否收到數(shù)據(jù),如果收到,則以遠(yuǎn)程DMA方式逐頁(yè)讀出接收緩沖區(qū)中的數(shù)據(jù)幀,并去掉包頭,恢復(fù)出語(yǔ)音數(shù)據(jù)。每讀1幀,將BNRY指向下一頁(yè)緩沖區(qū),如此反復(fù),直到讀出RTL8019AS接收緩沖區(qū)中的所有數(shù)據(jù)幀。

 


4  系統(tǒng)集成和測(cè)試
  對(duì)上述2個(gè)模塊測(cè)試成功后,要將這2個(gè)模塊集成為1個(gè)端機(jī)系統(tǒng),實(shí)現(xiàn)局域網(wǎng)環(huán)境下點(diǎn)到點(diǎn)的實(shí)時(shí)雙向分組語(yǔ)音通信。
主從DSP的硬件連接如圖5所示。主控DSP與語(yǔ)音處理模塊DSP通過(guò)8位增強(qiáng)型HPI接口(Host-Port Interface)進(jìn)行通信。C5402的HPI由1個(gè)8位數(shù)據(jù)總線和一組控制信號(hào)組成,通過(guò)HPI地址寄存器(HPIA)、HPI數(shù)據(jù)寄存器(HPID)、HPI控制寄存器(HPIC)和主機(jī)建立通信連接。


  主控DSP的A1、A2與HPI寄存器選擇信號(hào)HCNTL0,1相連。當(dāng)A2A1=00b時(shí),選擇HPIC寄存器;當(dāng)A2A1=01b時(shí),選擇HPIA寄存器;當(dāng)A2A1=10b時(shí),選擇HPID寄存器,且每次讀寫時(shí)HPIA加1;當(dāng)A2A1=11b時(shí),選擇HPID寄存器,讀寫不影響HPIA。主控DSP的A0用于選擇通信的高或低字節(jié);IOSTRB#、A15、IS#按照?qǐng)D示的邏輯關(guān)系組成數(shù)據(jù)傳輸?shù)钠x,此時(shí)從DSP位于主DSP高32K字的I/O空間,避開(kāi)了RTL8019AS的空間;HR/W#和主DSP的R/W#直接連接;HINT#和HRDY用于向主DSP的發(fā)送中斷請(qǐng)求和準(zhǔn)備好狀態(tài)信號(hào)。
  語(yǔ)音處理模塊的DSP按照G.723.1進(jìn)行壓縮編碼,每30ms生成1幀語(yǔ)音數(shù)據(jù),放入編碼緩存區(qū),產(chǎn)生1次HPI中斷。主DSP得到該中斷請(qǐng)求后,先將接收到的語(yǔ)音數(shù)據(jù)幀通過(guò)HPI口寫入從DSP的解碼緩存區(qū)供其解碼,然后主DSP將從DSP編碼緩存區(qū)中待發(fā)送的數(shù)據(jù)讀出,封裝后發(fā)送到網(wǎng)上。從DSP在30ms的時(shí)間間隔內(nèi),一方面要壓縮編碼TLC320AD50傳輸過(guò)來(lái)的語(yǔ)音數(shù)據(jù),另一方面要將主機(jī)送來(lái)的數(shù)據(jù)進(jìn)行擴(kuò)展解碼,然后送給TLC320AD50,恢復(fù)出模擬的語(yǔ)音信號(hào)。
  經(jīng)過(guò)實(shí)驗(yàn)測(cè)試,語(yǔ)音處理模塊和以太網(wǎng)接口模塊協(xié)調(diào)工作,在局域網(wǎng)上2臺(tái)終端通信的話音質(zhì)量良好,達(dá)到了預(yù)期的效果。
5  結(jié)束語(yǔ)
  本文采用2塊C5402 DSP作為系統(tǒng)核心,加上CODEC和NIC等外圍電路,實(shí)現(xiàn)了局域網(wǎng)上的IP分組語(yǔ)音通信,是一個(gè)全新的VOIP解決方案。筆者認(rèn)為,采用更高運(yùn)算能力的DSP,有望實(shí)現(xiàn)單DSP方案的分組語(yǔ)音通信。
參考文獻(xiàn)
1   Texas Instruments.TMS320VC54x DSP Reference Set.1999
2   Realtek.RTL8019AS Datasheet.2000
3   張雄偉,曹鐵勇.DSP 芯片的原理與開(kāi)發(fā)應(yīng)用(第2版).北京:電子工業(yè)出版社,2000
4   糜正琨.IP網(wǎng)絡(luò)電話技術(shù).北京:人民郵電出版社,2000
 

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。