傳統(tǒng)的電話(huà)網(wǎng)是以電路交換的方式傳輸語(yǔ)音信號(hào)的,,它需要的基本帶寬為64Kb/s。據(jù)統(tǒng)計(jì),,在正常的通話(huà)情況下,,大約只有40%的時(shí)間為有聲期,其余時(shí)間電路均為空占,,網(wǎng)絡(luò)帶寬利用率不高,。隨著計(jì)算機(jī)技術(shù)的不斷發(fā)展,尤其是互聯(lián)網(wǎng)絡(luò)的不斷完善,,基于分組交換的數(shù)據(jù)通信成為最重要的通信方式,。而要在基于IP的分組網(wǎng)絡(luò)上傳輸語(yǔ)音,就必須對(duì)模擬的語(yǔ)音信號(hào)進(jìn)行特殊的處理,,使處理后的信號(hào)可以適合在面向無(wú)連接的分組網(wǎng)絡(luò)上傳輸,,這就是分組語(yǔ)音技術(shù)。本文介紹的就是一種基于ARM7內(nèi)核的IP電話(huà)設(shè)計(jì),。
G.728編碼標(biāo)準(zhǔn)
語(yǔ)音編碼技術(shù)是IP電話(huà)的核心技術(shù)之一,,編碼質(zhì)量的好壞直接關(guān)系到IP電話(huà)的通信質(zhì)量。
G.728標(biāo)準(zhǔn)的語(yǔ)音編碼算法是16Kb/s的聲碼器編碼標(biāo)準(zhǔn),,采用低時(shí)延碼本激勵(lì)線(xiàn)性預(yù)測(cè)(LD-CELP)技術(shù),。線(xiàn)性預(yù)測(cè)器使用的是反饋型后向自適應(yīng)技術(shù),預(yù)測(cè)器系數(shù)是根據(jù)上一幀的語(yǔ)音量化數(shù)據(jù)進(jìn)行更新的,,因此算法時(shí)延較短,,為0.625ms,相當(dāng)于5個(gè)采樣點(diǎn)時(shí)間,,這也是G.728的幀長(zhǎng)時(shí)間,。由于使用反饋型自適應(yīng)技術(shù),因此預(yù)測(cè)器系數(shù)無(wú)須傳送,,唯一需要傳送的是激勵(lì)信號(hào)量化值,,也就是碼本索引值。G.728標(biāo)準(zhǔn)的語(yǔ)音編碼算法的碼本總共有1024個(gè)矢量,,索引需占10比特,,因此其比特率為10/0.625=16Kb/s,。
G.728標(biāo)準(zhǔn)的語(yǔ)音編碼的主要特點(diǎn)有:算法時(shí)延短,僅為0.625ms,;一路編碼時(shí)延小于2ms,;傳輸比特率為16Kb/s;MOS值為4.173,,達(dá)到了長(zhǎng)途通信質(zhì)量,。
由于G.728標(biāo)準(zhǔn)的語(yǔ)音編碼算法的時(shí)延短,語(yǔ)音傳輸比特率可以滿(mǎn)足IP電話(huà)的應(yīng)用要求,,所以選用G.728標(biāo)準(zhǔn)的語(yǔ)音編碼算法作為IP電話(huà)的編碼算法,。
硬件系統(tǒng)設(shè)計(jì)
TMS470R1A256屬于TI TMS470R1x通用16/32位精簡(jiǎn)指令微控制器系列。該系列采用高速的ARM7內(nèi)核,,從而保證了其高性能,、高吞吐量和編碼空間效率。
系統(tǒng)的主要作用是充分利用ARM7內(nèi)核高速的數(shù)據(jù)處理能力,,以減輕計(jì)算機(jī)CPU的負(fù)擔(dān),;語(yǔ)音的錄入和輸出系統(tǒng)也單獨(dú)分離出來(lái),這樣可以更好的和MCU進(jìn)行數(shù)據(jù)傳輸,,減少不必要的中間環(huán)節(jié),,減少時(shí)延。最后,,通過(guò)高速的PCI總線(xiàn),,將數(shù)據(jù)傳送給計(jì)算機(jī)。系統(tǒng)的總體結(jié)構(gòu)框圖如圖1所示,,各模塊的具體功能如表1所示,。
圖1 系統(tǒng)總體結(jié)構(gòu)框圖
1 MCU與Flash的通信
由于TMS470R1A256的I/O接口電壓為3.3V,而AM29F101B的接口電壓為5V,,所以在接口部分需要進(jìn)行電壓轉(zhuǎn)換,,并且AM29F101B的片選信號(hào)(CE)和輸出使能信號(hào)(OE)需要地址譯碼。這些工作均由一片復(fù)雜的可編程邏輯器件(CPLD)來(lái)完成,。
由于AM29F101B的接口速度較慢,,所以TMS470R1A256和AM29F101B之間的接口必須插入軟件等待狀態(tài),具體要插入的軟件等待狀態(tài)數(shù)目可以由數(shù)據(jù)手冊(cè)計(jì)算得到或在調(diào)機(jī)時(shí)由試驗(yàn)得到,。TMS470R1A256與AM29F101B之間的接口電路如圖2所示,。
圖2 MCU與Flash的接口電路
2 MCU與ADC、DAC之間的通信
本系統(tǒng)所選用的G.728標(biāo)準(zhǔn)的語(yǔ)音編碼算法需要8kHz的采樣速率,。所以對(duì)ADC和DAC要求最高采樣率或轉(zhuǎn)換時(shí)間不低于8kHz,。
根據(jù)語(yǔ)音信號(hào)的特點(diǎn),,選用TI的TLC32044芯片,,這是一片集成了ADC和DAC功能的芯片,。它的最高轉(zhuǎn)化速率為19.2kHz,轉(zhuǎn)換位數(shù)為14位,,輸入電壓帶范圍可調(diào),,有標(biāo)準(zhǔn)同步串口,還有輸入濾波器和輸出重構(gòu)濾波器,,這樣可以省去模擬濾波器的設(shè)計(jì),。TMS470R1A256與TLC32044的接口電路如圖3所示。
圖3 MCU與ADC,、DAC的接口電路
3 MCU與雙端口RAM之間的通信
為了體現(xiàn)PCI總線(xiàn)速度快的優(yōu)點(diǎn),,選用速度較快的雙端口RAM芯片CY7C133-25,其最大傳輸速率為25ns,。雙端口RAM在MCU的數(shù)據(jù)空間的地址映射為8000H~87FFH,。
需要強(qiáng)調(diào)的是雙端口RAM的BUSY信號(hào)。本設(shè)計(jì)并不使用這個(gè)信號(hào),,因?yàn)榉謩e對(duì)雙端口RAM的不同部分進(jìn)行操作,,所以避免了可能發(fā)生的任何沖突,因此省去了BUSY信號(hào),,該信號(hào)懸空,。
電路的電壓轉(zhuǎn)換和地址譯碼同樣由CPLD來(lái)完成。MCU與雙端口RAM的接口電路如圖4所示,。
圖4 MCU與雙端口RAM的接口電路
4 PCI9052與雙端口RAM之間的通信
MCU的任務(wù)是完成語(yǔ)音的編碼和解碼,,然后再通過(guò)PCI總線(xiàn)與計(jì)算機(jī)進(jìn)行數(shù)據(jù)交換。MCU與PCI9052之間用一片雙端口RAM(容量為2k×16bit)進(jìn)行數(shù)據(jù)交換,。
由于PCI9052具有5個(gè)局部地址空間和4個(gè)局部設(shè)備片選信號(hào),,所以連線(xiàn)變得相當(dāng)?shù)暮?jiǎn)單,只需要將雙端口RAM映射到其中一個(gè)局部地址空間,,然后使用其中的一個(gè)片選信號(hào)連接到雙端口RAM的CE,,最后將PCI9052的讀寫(xiě)信號(hào)(R/W)和OE對(duì)應(yīng)連接到雙端口RAM的R/W和OE。這樣就省去了地址譯碼等外圍邏輯電路,。
軟件系統(tǒng)設(shè)計(jì)
IP電話(huà)系統(tǒng)要實(shí)現(xiàn)的算法就是語(yǔ)音編碼算法,,還要完成與計(jì)算機(jī)的數(shù)據(jù)交換。
軟件部分的主要作用是用嵌入式操作系統(tǒng)中的TCP/IP協(xié)議對(duì)需要傳送的語(yǔ)音編碼信號(hào)進(jìn)行打包,,再通過(guò)計(jì)算機(jī)上的網(wǎng)卡將數(shù)據(jù)通過(guò)Internet傳送到接收方,,并把接收到的TCP/IP包還原為原來(lái)的語(yǔ)音編碼信號(hào),最后通過(guò)PCI總線(xiàn)傳輸給MCU進(jìn)行語(yǔ)音解碼,。
結(jié)束語(yǔ)
本設(shè)計(jì)方案的主要優(yōu)點(diǎn)是對(duì)計(jì)算機(jī)硬件的要求不高,,處理速度快,語(yǔ)音的輸入輸出系統(tǒng)單獨(dú)集成,,且信噪比高,。