摘 要: 提出一種以2塊title="TMS320VC54x">TMS320VC54x DSP為核心處理器的IP分組語音通信解決方案,,并著重說明了語音處理模塊與以太網(wǎng)接口模塊的設(shè)計思路及2模塊的集成方法,。
關(guān)鍵詞: 分組語音通信 DSP CODEC 以太網(wǎng)接口 HPI
分組語音通信是當前網(wǎng)絡(luò)技術(shù)發(fā)展的一個熱點。雖然PC機早已可以通過軟件實現(xiàn)IP網(wǎng)絡(luò)通話,,但是用戶卻需要像電話一樣小巧而方便的終端,。嵌入式技術(shù)的不斷進步讓用戶的這個需求變成了現(xiàn)實。通常的IP分組語音通信解決方案是采用1塊MCU芯片作為系統(tǒng)主控CPU,,用1塊DSP芯片進行語音信號處理,、壓縮編解碼,再用CODEC,、以太網(wǎng)接口和存儲器等構(gòu)成外圍電路,。此外也有將MCU和DSP集成在一起的芯片,,如TI生產(chǎn)的OMAP平臺DSP就采用了ARM+DSP構(gòu)架,。集成化不僅可以降低成本,,還可以降低功耗并提高可靠性。筆者在設(shè)計中使用了2塊DSP,,分別作為主控和語音處理,,同樣實現(xiàn)了IP的分組語音通信。
1 IP分組語音通信
分組語音技術(shù)是指將語音信號轉(zhuǎn)化為一定長度的數(shù)字化語音包,,采用存儲-轉(zhuǎn)發(fā)的方式,,以IP包的形式進行交換和傳輸?shù)募夹g(shù)。傳統(tǒng)的電話網(wǎng)以電路交換的方式傳輸語音,,它需要的基本帶寬為64Kbps,,而在面向無連接的分組網(wǎng)絡(luò)上傳輸?shù)姆纸M語音需要的帶寬僅為10Kbps左右。由于互聯(lián)網(wǎng)并不能對傳輸帶寬提供保證,,因此語音包在傳輸過程中就會產(chǎn)生延遲,、抖動、包丟失等影響語音質(zhì)量的因素,。近年來由于低速率編解碼算法的出現(xiàn)和軟硬件性能的提高,,人們開始注意到分組語音技術(shù)的商業(yè)價值。
分組語音信道模型如圖1所示,。發(fā)送端語音在經(jīng)過模擬信號,、數(shù)字信號、語音包的處理過程后,,再經(jīng)過網(wǎng)絡(luò)傳輸,,在接收端對語音包進行相反的處理,還原出語音,。
2 語音處理模塊設(shè)計
該模塊實現(xiàn)了語音信號的驅(qū)動放大,,A/D、D/A變換,,壓縮編解碼等信號處理功能,。
2.1 模塊硬件設(shè)計
語音處理模塊硬件框圖如圖2所示。該模塊的核心是TMS320VC5402(以下簡稱C5402)數(shù)字信號處理器,。TLC320AD50是模/數(shù)接口芯片,,采用Σ-Δ調(diào)制方式,為DSP提供語音CODEC接口,。TLC2272和LM386分別作為TLC320AD50的輸入前置放大和輸出驅(qū)動,。在發(fā)送端,TLC2272運算放大器對輸入語音信號進行放大,,TLC320AD50模擬接口芯片對模擬信號進行A/D變換,,使之成為數(shù)字信號,C5402對數(shù)字信號進行壓縮編碼,得到低速率的語音數(shù)據(jù),,并送給作為主控制器的另一塊DSP,。在接收端,語音處理模塊從主控DSP處得到壓縮的低速率語音數(shù)據(jù),,由DSP進行解碼,,TLC320AD50進行 D/A變換,LM386進行信號放大后驅(qū)動揚聲器,,還原出模擬語音信號,。
C5402利用多通道緩沖串行口(Multichannel Buffered Serial Port,McBSP)和TLC320AD50連接,。TLC320AD50工作在主機模式下,,它提供與C5402進行串行通信的8kHz的幀同步信號FS#和8.192MHz的移位時鐘信號SCLK。C5402的BFS和BCLK設(shè)為輸入狀態(tài),。TLC320AD50每125ns輸出1幀16位的數(shù)據(jù),,并以DMA方式與C5402交換數(shù)據(jù),以減少CPU資源的占有,。
2.2 壓縮編解碼算法
壓縮編碼方式的標準由ITU-T統(tǒng)一制定,,分為波形編碼和參數(shù)編碼二類。常用的波形編碼標準有G.711和G.726,,其中G.711是PSTN電話網(wǎng)廣為使用的64Kbps的PCM編碼,,G.726采用32Kbps的ADPCM方式。常用的參數(shù)編碼標準有G.728,、G.729,、G.729A和G.723.1。本文采用的是G.723.1標準,,它是H.323協(xié)議標準缺省的語音編碼方式,。
G.723.1是目前分組語音通信中常用的壓縮比最高的編碼方式。它使用雙速率LPAS聲碼器,,其低速率采用代數(shù)碼本激勵線性預(yù)測(ACELP),,編碼速率為5.3Kbps,高速率(6.3Kbps)采用多脈沖最大似然量化(MP-MLQ)激勵,。G.723.1標準基于碼激勵線性預(yù)測(Code Excited Linear Prediction,,CELP)編碼模型對語音進行編碼。線性預(yù)測采用前饋型前向自適應(yīng),,并使用預(yù)視,。其輸入數(shù)據(jù)是經(jīng) 8kHz采樣的16位線性 PCM語音信號,幀長為30ms(240個樣點),,分為4個子幀,,即每個子幀含有60個抽樣信號,,預(yù)視7.5ms。編碼端對原始語音進行分析,,提取出CELP參數(shù)(LSP參數(shù),、碼本索引和增益等),并將這些參數(shù)編碼傳輸,。在解碼端,再用這些參數(shù)構(gòu)造激勵信號和合成濾波器,,將激勵信號通過合成濾波器重建語音信號,。G.723.1需要40MIPS以上的DSP才能保證語音編解碼的質(zhì)量。C5402運算能力可以達到100MIPS,,完全可滿足系統(tǒng)要求,。
3 以太網(wǎng)接口模塊設(shè)計
該模塊由主控DSP直接控制以太網(wǎng)接口芯片,進行IP語音數(shù)據(jù)包的收發(fā),。以太網(wǎng)驅(qū)動芯片采用的是RTL8019AS,,它是臺灣Realtek公司生產(chǎn)的一款兼容NE2000的8/16位網(wǎng)卡適配器,支持ISA總線結(jié)構(gòu),。由于其性能優(yōu)良,,價格低廉,因此在10Mbps網(wǎng)卡市場中占有相當大的份額,。RTL8019AS有16KB的RAM用于數(shù)據(jù)收發(fā)緩存,,分成64頁,每頁256B,,每頁存儲1幀以太網(wǎng)數(shù)據(jù)包,。它內(nèi)部有4頁寄存器,對應(yīng)著偏移量為0x00~0x0F的16個輸入/輸出地址,,控制器通過讀寫這些寄存器,,控制數(shù)據(jù)的收發(fā)。此外,,0x10~0x17是遠程DMA讀寫端口地址,,0x18~0x1F是復(fù)位端口地址。RTL8019AS中主要的寄存器如下,。
CR:控制以太網(wǎng)驅(qū)動器操作,,同時用于選擇寄存器頁。
PSTART:接收緩沖區(qū)的起始頁地址,。
PSTOP:接收緩沖區(qū)的結(jié)束頁地址,。
TPSR:發(fā)送緩沖區(qū)的起始頁地址。
BNRY:指向最后一個已讀取頁地址,。
CURR:指向當前的接收頁地址,。
ISR:中斷狀態(tài)寄存器,。
RCR:接收參數(shù)配置。
TCR:發(fā)送參數(shù)配置,。
DCR:數(shù)據(jù)參數(shù)配置,。
IMR:中斷屏蔽寄存器。
RSAR0,、RSAR1:遠程DMA起始地址,。
RBCR0、RBCR1:遠程DMA字節(jié)計數(shù)器,。
PAR0~PAR5:設(shè)置本地MAC地址,。
MAR0~MAR7:用于設(shè)置多點播送的參數(shù)。
3.1 模塊硬件設(shè)計
主控C5402的I/O資源豐富,,可以很容易地將RTL8019AS映射為它的I/O空間,。DSP與RTL8019AS的硬件連接如圖3所示。RTL8019AS的I/O電壓為5V,,而DSP的I/O電壓是3.3V,,二者連接時需要轉(zhuǎn)換電平。本設(shè)計選用SN74LVTH16244作為地址總線緩沖器,,選用SN74LVTH16245雙向總線收發(fā)器作為數(shù)據(jù)總線緩沖器,。
DSP采用查詢方式和RTL8019AS通信。DSP的XF為RTL8019AS提供硬件復(fù)位脈沖,,通過A4~A0共5根地址線來訪問RTL8019AS的0x00~0x1F寄存器和端口空間,,以太網(wǎng)驅(qū)動器的基地址由A19~A5確定,其值是0x300,。RTL8019AS的讀寫控制信號由DSP的IOSTRB#,、R/W#及A15通過圖中所示的邏輯提供。很顯然,,RTL8019AS被映射到了DSP低32K字的I/O空間,。
3.2 模塊軟件設(shè)計
模塊采用以太網(wǎng)的封裝格式協(xié)議(兼容IEEE802.3)、IP協(xié)議和UDP協(xié)議作為系統(tǒng)的通信協(xié)議,。該部分軟件包括2部分:以太網(wǎng)驅(qū)動器的初始化和收發(fā)數(shù)據(jù)處理,。
RTL8019AS硬件或軟件復(fù)位后即進行初始化工作,包括設(shè)置接收緩沖區(qū)和發(fā)送緩沖區(qū),,設(shè)置本地MAC地址,,配置接收參數(shù)、發(fā)送參數(shù)和數(shù)據(jù)參數(shù),,給寫入頁指針和讀取頁指針賦初值,,清除中斷狀態(tài)位等。
數(shù)據(jù)發(fā)送前,,要將語音數(shù)據(jù)封裝成以太網(wǎng)幀,,就是在語音數(shù)據(jù)前依次加上UDP包頭,、IP包頭和以太網(wǎng)包頭;對接收到的數(shù)據(jù)包,,要用相反的過程解包,,依次去掉各種包頭后,取出語音數(shù)據(jù),。
以太網(wǎng)接口模塊數(shù)據(jù)收發(fā)軟件流程如圖4所示,。發(fā)送時,DSP首先將語音數(shù)據(jù)封裝打包,,然后用遠程DMA方式寫入RTL8019AS的發(fā)送緩沖區(qū),,并將數(shù)據(jù)包傳到網(wǎng)上。接收時,,通過查詢ISR確定是否收到數(shù)據(jù),如果收到,,則以遠程DMA方式逐頁讀出接收緩沖區(qū)中的數(shù)據(jù)幀,,并去掉包頭,恢復(fù)出語音數(shù)據(jù),。每讀1幀,,將BNRY指向下一頁緩沖區(qū),如此反復(fù),,直到讀出RTL8019AS接收緩沖區(qū)中的所有數(shù)據(jù)幀,。
4 系統(tǒng)集成和測試
對上述2個模塊測試成功后,要將這2個模塊集成為1個端機系統(tǒng),,實現(xiàn)局域網(wǎng)環(huán)境下點到點的實時雙向分組語音通信,。
主從DSP的硬件連接如圖5所示。主控DSP與語音處理模塊DSP通過8位增強型HPI接口(Host-Port Interface)進行通信,。C5402的HPI由1個8位數(shù)據(jù)總線和一組控制信號組成,,通過HPI地址寄存器(HPIA)、HPI數(shù)據(jù)寄存器(HPID),、HPI控制寄存器(HPIC)和主機建立通信連接,。
主控DSP的A1、A2與HPI寄存器選擇信號HCNTL0,,1相連,。當A2A1=00b時,選擇HPIC寄存器,;當A2A1=01b時,,選擇HPIA寄存器;當A2A1=10b時,,選擇HPID寄存器,,且每次讀寫時HPIA加1,;當A2A1=11b時,選擇HPID寄存器,,讀寫不影響HPIA,。主控DSP的A0用于選擇通信的高或低字節(jié);IOSTRB#,、A15,、IS#按照圖示的邏輯關(guān)系組成數(shù)據(jù)傳輸?shù)钠x,此時從DSP位于主DSP高32K字的I/O空間,,避開了RTL8019AS的空間,;HR/W#和主DSP的R/W#直接連接;HINT#和HRDY用于向主DSP的發(fā)送中斷請求和準備好狀態(tài)信號,。
語音處理模塊的DSP按照G.723.1進行壓縮編碼,,每30ms生成1幀語音數(shù)據(jù),放入編碼緩存區(qū),,產(chǎn)生1次HPI中斷,。主DSP得到該中斷請求后,先將接收到的語音數(shù)據(jù)幀通過HPI口寫入從DSP的解碼緩存區(qū)供其解碼,,然后主DSP將從DSP編碼緩存區(qū)中待發(fā)送的數(shù)據(jù)讀出,,封裝后發(fā)送到網(wǎng)上。從DSP在30ms的時間間隔內(nèi),,一方面要壓縮編碼TLC320AD50傳輸過來的語音數(shù)據(jù),,另一方面要將主機送來的數(shù)據(jù)進行擴展解碼,然后送給TLC320AD50,,恢復(fù)出模擬的語音信號,。
經(jīng)過實驗測試,語音處理模塊和以太網(wǎng)接口模塊協(xié)調(diào)工作,,在局域網(wǎng)上2臺終端通信的話音質(zhì)量良好,,達到了預(yù)期的效果。
5 結(jié)束語
本文采用2塊C5402 DSP作為系統(tǒng)核心,,加上CODEC和NIC等外圍電路,,實現(xiàn)了局域網(wǎng)上的IP分組語音通信,是一個全新的VOIP解決方案,。筆者認為,,采用更高運算能力的DSP,有望實現(xiàn)單DSP方案的分組語音通信,。
參考文獻
1 Texas Instruments.TMS320VC54x DSP Reference Set.1999
2 Realtek.RTL8019AS Datasheet.2000
3 張雄偉,,曹鐵勇.DSP 芯片的原理與開發(fā)應(yīng)用(第2版).北京:電子工業(yè)出版社,2000
4 糜正琨.IP網(wǎng)絡(luò)電話技術(shù).北京:人民郵電出版社,,2000