基于IEEE802.15.4的無線VoIP話機系統(tǒng)
摘要: 隨著網(wǎng)絡的普及,基于分組交換的VoIP技術(shù)得到迅猛發(fā)展。如何將VoIP技術(shù)與無線通信技術(shù)相結(jié)合,實現(xiàn)無線VoIP話機是當前嵌入式VoIP話機設計的一個新方向。本文提出了一種適用于家庭辦公室小范圍內(nèi)的無線VoIP話機系統(tǒng)設計方案,并且將該方案在具體的硬件平臺上付諸實現(xiàn)。本文重點介紹了該系統(tǒng)的設計特點,無線MAC層的設計,以及手持設備端的硬件結(jié)構(gòu)和軟件結(jié)構(gòu)。
關(guān)鍵詞: IEEE802.15.4;mC/OS-II;SIP;g.726
當前VoIP技術(shù)和無線通信技術(shù)的迅速發(fā)展為無線VoIP話機的實現(xiàn)創(chuàng)造了條件,也形成了一個研究熱點。當前提出的設計方案有采用802.11協(xié)議(WLAN)實現(xiàn)VoIP無線化,雖然覆蓋范圍可達上百米,充足的帶寬對語音壓縮也沒有過高要求,但作為移動便攜設備,其成本和功耗成為了設計瓶頸。本設計主要從性能,成本,功耗等方面出發(fā),提出了一種利用低速低功耗的無線個域網(wǎng)技術(shù)IEEE802.15.4[1]來實現(xiàn)無線VoIP話機系統(tǒng)的方案,并在基于Freescale射頻芯片MC13192的硬件平臺上成功實現(xiàn)了該方案。
無線VoIP話機系統(tǒng)方案
作為無線便攜設備,功耗是首要考慮的一個因素,如果把網(wǎng)絡協(xié)議棧,各個語音處理模塊,無線通信都放在手持設備上,必然造成手持設備功能復雜,功耗過大。本設計考慮將嵌入式VoIP話機劃分為兩部分:無線語音網(wǎng)關(guān)和手持設備端。無線語音網(wǎng)關(guān)作為該系統(tǒng)的非移動端,以有線方式連接到互聯(lián)網(wǎng),主要處理網(wǎng)絡及會話協(xié)議,各種語音壓縮標準與g.726壓縮標準之間的轉(zhuǎn)換以及無線收發(fā)工作,而作為真正移動部分的手持設備端僅作簡單的會話信令處理,g.726語音編解碼和無線收發(fā)工作。在這種結(jié)構(gòu)下,還可以增加手持設備的數(shù)量,實現(xiàn)多路無線通話,本設計成功實現(xiàn)了兩個手持設備的無線語音通話。即兩個手持設備可同時與互聯(lián)網(wǎng)上其它用戶建立語音通話。該無線VoIP話機系統(tǒng)如圖1所示。
圖1 無線VoIP話機的系統(tǒng)示意圖
無線語音網(wǎng)關(guān)同手持設備端之間的無線通信采用了低速低功耗的IEEE802.15.4協(xié)議,采用該協(xié)議雖然能極大地降低系統(tǒng)特別是手持設備的功耗,但僅僅250Kb/s的無線帶寬對語音的傳輸卻提出了挑戰(zhàn)。為適應250Kb/s的無線傳輸速率同時保證語音質(zhì)量,本設計采用了g.726壓縮編解碼將語音速率從64Kb/s降低到16Kb/s。另外根據(jù)該應用的特點:手持設備與語音網(wǎng)關(guān)間僅構(gòu)成星型拓撲結(jié)構(gòu),刪減了IEEE802.15.4協(xié)議部分功能,對其幀結(jié)構(gòu)也作了一定修改以增加負載數(shù)據(jù)在幀中所占的比例。
SIP協(xié)議與無線網(wǎng)內(nèi)部會話信令
VoIP目前有兩大獨立的信令標準:H.323協(xié)議和SIP協(xié)議。H.323主要參考了傳統(tǒng)PSTN的呼叫控制和信令架構(gòu),便于與傳統(tǒng)電話網(wǎng)相連。SIP協(xié)議是由IETF在1999年提出來的一個應用控制協(xié)議,它可用來創(chuàng)建、修改以及終結(jié)多個參與者參加的多媒體會話進程。SIP協(xié)議借鑒了Internet協(xié)議設計思想,具有簡單,開放,可擴展等特點。本設計采用了SIP協(xié)議,并在實現(xiàn)時采用了源代碼開放的SIP協(xié)議棧osip2/eXosip庫。
無線網(wǎng)內(nèi)部會話信令是本設計中無線語音網(wǎng)關(guān)與手持設備間進行通話所交互的信令。該信令集可以看成SIP信令在本無線網(wǎng)絡中的擴展。由于SIP協(xié)議是放在無線語音網(wǎng)關(guān)上實現(xiàn),而在會話過程中,部分SIP事件例如發(fā)起呼叫,需要由手持設備來響應或送出,所以需要無線語音網(wǎng)關(guān)將這部分消息發(fā)送給手持設備,同時需要將從手持設備接收到的消息轉(zhuǎn)換成相應的SIP信息發(fā)送到互聯(lián)網(wǎng)。無線網(wǎng)內(nèi)部會話信令便在無線語音網(wǎng)關(guān)和手持設備間充當了信息傳遞的橋梁。表1列舉了部分無線網(wǎng)內(nèi)部會話信令在軟件實現(xiàn)中定義的宏名。
這里以無線手持設備發(fā)起呼叫為例介紹無線手持設備如何通過內(nèi)部會話信令與其他VoIP電話建立會話,如圖2所示。
圖2 無線手持設備發(fā)起呼叫信令交互
{{分頁}}
當用戶通過無線手持設備撥打一個號碼時,無線手持設備將發(fā)送一個HtoG_CALL_ NEW的內(nèi)部會話信令連同呼叫的號碼給無線語音網(wǎng)關(guān),無線語音網(wǎng)關(guān)收到該信令后,將根據(jù)該信令構(gòu)造相應的SIP消息并發(fā)送到外部網(wǎng)絡。當無線語音網(wǎng)關(guān)收到來自被叫方表示振鈴信息的暫時應答RINGING時,將發(fā)送一個GtoH_CALL_RINGING的內(nèi)部會話信令給手持設備。當無線語音網(wǎng)關(guān)收到來自被叫方表示應答的信息ANSWERED時,語音網(wǎng)關(guān)將啟動RTP線程并發(fā)送一個GtoH_CALL_ANSWERED的內(nèi)部會話信令給手持設備以通知被叫方已應答。此時手持設備開啟語音進程,與被叫方實現(xiàn)通話。
無線MAC層設計和同步的實現(xiàn)
根據(jù)設計的特點,無線語音網(wǎng)關(guān)同手持設備間的無線網(wǎng)絡采用星型拓撲結(jié)構(gòu),無線語音網(wǎng)關(guān)作為無線個域網(wǎng)的協(xié)調(diào)器同手持設備進行信息交互。IEEE802.15.4MAC層分為使用信標幀和不使用信標幀兩種工作模式,本設計采用使用信標幀同步的超幀結(jié)構(gòu),由無線語音網(wǎng)關(guān)發(fā)送信標幀同步無線手持設備的數(shù)據(jù)傳輸。本設計中超幀長30ms,等分為16個時隙,每個時隙為1.875ms。信標幀在時隙1發(fā)送,時隙2到時隙8為競爭時隙,使用時隙CSMA-CA算法傳輸命令幀和應答幀。時隙9到時隙16固定分配給兩個手持設備作為上下行語音數(shù)據(jù)通道。上下行各兩個時隙的分配可以滿足經(jīng) g.726壓縮后16Kb/s的語音數(shù)據(jù)傳輸帶寬要求。超幀結(jié)構(gòu)如圖3所示。
圖3 超幀結(jié)構(gòu)
對于命令幀,采用應答和超時重發(fā)機制保證其可靠傳輸。對于語音數(shù)據(jù),采用5/6分組FEC糾錯算法改善語音質(zhì)量。該糾錯算法可以恢復五個連續(xù)語音數(shù)據(jù)包中任意丟失的一個,且實現(xiàn)簡單,延遲較小。
由于所有信息傳輸都是在雙方約定的時隙內(nèi)進行,時隙的錯位,抖動都將造成丟幀,而丟幀對語音質(zhì)量的影響非常大,所以本設計的一個關(guān)鍵點是實現(xiàn)語音網(wǎng)關(guān)與手持設備間的精確同步,即手持設備在收到信標幀后保證隨后15個時隙與語音網(wǎng)關(guān)的對應時隙對齊。本設計利用了射頻芯片MC13192的接收時間戳功能來實現(xiàn)精確同步,如圖4所示。
圖4 超幀的同步
{{分頁}}
時隙1開始后,語音網(wǎng)關(guān)需要TSTms的時間將射頻芯片從空閑狀態(tài)轉(zhuǎn)換為發(fā)送狀態(tài),當轉(zhuǎn)換為發(fā)送狀態(tài)后,預先存儲在射頻芯片發(fā)送RAM中的信標幀立即開始發(fā)送,手持設備上的射頻芯片在收到六個字節(jié)TSPms后自動鎖存一個當前時間timestamp(時間戳), 這個值由手持設備在正確接收完信標幀后讀取。根據(jù)這個值,手持設備可以設定MC13192定時器在(timestamp+1875-TST- TSP)ms時刻產(chǎn)生中斷,進入該中斷服務程序的時刻即時隙2的起始時刻。在時隙2中使用MCU定時器設置隨后14個時隙的定時中斷產(chǎn)生時間,定時時間為1875ms。設置MC13192定時器中斷相關(guān)代碼如下所示:
switch(frametype)
{
/*收到信標幀*/
case BEACON:
/*獲取接收時間戳*/
timestamp=PLMEGetTimestampRequest();
/*設置時隙2定時中斷時刻*/
PLMEEnableMC13192Timer1(timestamp+1875-144-192);
beacon_receive_index++;
break;
case DATA:
...
}
在時隙2中斷服務程序中設置隨后14個時隙中斷時刻,代碼如下所示:
/*MC13192定時器1中斷服務*/
if ((u16StatusContent & TIMER1_IRQ_MASK) != 0) {
/* 停止MC13192計數(shù)器*/
SPIDrvWrite(T1_HI_ADDR, 0x8000);
/* 設置MCU定時器*/
EnableTMR(1875);
無線手持設備端的硬件框架
手持設備端的硬件結(jié)構(gòu)需要支持以下功能:
評論