摘 要: 提出一種以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