基于IEEE802.15.4的無(wú)線(xiàn)VoIP話(huà)機系統
飛思卡爾-電子科技大學(xué)研究中心 王晗 李廣軍 郭志勇 2008/01/02
摘要: 隨著(zhù)網(wǎng)絡(luò )的普及,基于分組交換的VoIP技術(shù)得到迅猛發(fā)展。如何將VoIP技術(shù)與無(wú)線(xiàn)通信技術(shù)相結合,實(shí)現無(wú)線(xiàn)VoIP話(huà)機是當前嵌入式VoIP話(huà)機設計的一個(gè)新方向。本文提出了一種適用于家庭辦公室小范圍內的無(wú)線(xiàn)VoIP話(huà)機系統設計方案,并且將該方案在具體的硬件平臺上付諸實(shí)現。本文重點(diǎn)介紹了該系統的設計特點(diǎn),無(wú)線(xiàn)MAC層的設計,以及手持設備端的硬件結構和軟件結構。
圖1 無(wú)線(xiàn)VoIP話(huà)機的系統示意圖
無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)同手持設備端之間的無(wú)線(xiàn)通信采用了低速低功耗的IEEE802.15.4協(xié)議,采用該協(xié)議雖然能極大地降低系統特別是手持設備的功耗,但僅僅250Kb/s的無(wú)線(xiàn)帶寬對語(yǔ)音的傳輸卻提出了挑戰。為適應250Kb/s的無(wú)線(xiàn)傳輸速率同時(shí)保證語(yǔ)音質(zhì)量,本設計采用了g.726壓縮編解碼將語(yǔ)音速率從64Kb/s降低到16Kb/s。另外根據該應用的特點(diǎn):手持設備與語(yǔ)音網(wǎng)關(guān)間僅構成星型拓撲結構,刪減了IEEE802.15.4協(xié)議部分功能,對其幀結構也作了一定修改以增加負載數據在幀中所占的比例。
SIP協(xié)議與無(wú)線(xiàn)網(wǎng)內部會(huì )話(huà)信令
VoIP目前有兩大獨立的信令標準:H.323協(xié)議和SIP協(xié)議。H.323主要參考了傳統PSTN的呼叫控制和信令架構,便于與傳統電話(huà)網(wǎng)相連。SIP協(xié)議是由IETF在1999年提出來(lái)的一個(gè)應用控制協(xié)議,它可用來(lái)創(chuàng )建、修改以及終結多個(gè)參與者參加的多媒體會(huì )話(huà)進(jìn)程。SIP協(xié)議借鑒了Internet協(xié)議設計思想,具有簡(jiǎn)單,開(kāi)放,可擴展等特點(diǎn)。本設計采用了SIP協(xié)議,并在實(shí)現時(shí)采用了源代碼開(kāi)放的SIP協(xié)議棧osip2/eXosip庫。
無(wú)線(xiàn)網(wǎng)內部會(huì )話(huà)信令是本設計中無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)與手持設備間進(jìn)行通話(huà)所交互的信令。該信令集可以看成SIP信令在本無(wú)線(xiàn)網(wǎng)絡(luò )中的擴展。由于SIP協(xié)議是放在無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)上實(shí)現,而在會(huì )話(huà)過(guò)程中,部分SIP事件例如發(fā)起呼叫,需要由手持設備來(lái)響應或送出,所以需要無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)將這部分消息發(fā)送給手持設備,同時(shí)需要將從手持設備接收到的消息轉換成相應的SIP信息發(fā)送到互聯(lián)網(wǎng)。無(wú)線(xiàn)網(wǎng)內部會(huì )話(huà)信令便在無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)和手持設備間充當了信息傳遞的橋梁。表1列舉了部分無(wú)線(xiàn)網(wǎng)內部會(huì )話(huà)信令在軟件實(shí)現中定義的宏名。
這里以無(wú)線(xiàn)手持設備發(fā)起呼叫為例介紹無(wú)線(xiàn)手持設備如何通過(guò)內部會(huì )話(huà)信令與其他VoIP電話(huà)建立會(huì )話(huà),如圖2所示。
圖2 無(wú)線(xiàn)手持設備發(fā)起呼叫信令交互
當用戶(hù)通過(guò)無(wú)線(xiàn)手持設備撥打一個(gè)號碼時(shí),無(wú)線(xiàn)手持設備將發(fā)送一個(gè)HtoG_CALL_ NEW的內部會(huì )話(huà)信令連同呼叫的號碼給無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān),無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)收到該信令后,將根據該信令構造相應的SIP消息并發(fā)送到外部網(wǎng)絡(luò )。當無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)收到來(lái)自被叫方表示振鈴信息的暫時(shí)應答RINGING時(shí),將發(fā)送一個(gè)GtoH_CALL_RINGING的內部會(huì )話(huà)信令給手持設備。當無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)收到來(lái)自被叫方表示應答的信息ANSWERED時(shí),語(yǔ)音網(wǎng)關(guān)將啟動(dòng)RTP線(xiàn)程并發(fā)送一個(gè)GtoH_CALL_ANSWERED的內部會(huì )話(huà)信令給手持設備以通知被叫方已應答。此時(shí)手持設備開(kāi)啟語(yǔ)音進(jìn)程,與被叫方實(shí)現通話(huà)。
無(wú)線(xiàn)MAC層設計和同步的實(shí)現
根據設計的特點(diǎn),無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)同手持設備間的無(wú)線(xiàn)網(wǎng)絡(luò )采用星型拓撲結構,無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)作為無(wú)線(xiàn)個(gè)域網(wǎng)的協(xié)調器同手持設備進(jìn)行信息交互。IEEE802.15.4MAC層分為使用信標幀和不使用信標幀兩種工作模式,本設計采用使用信標幀同步的超幀結構,由無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)發(fā)送信標幀同步無(wú)線(xiàn)手持設備的數據傳輸。本設計中超幀長(cháng)30ms,等分為16個(gè)時(shí)隙,每個(gè)時(shí)隙為1.875ms。信標幀在時(shí)隙1發(fā)送,時(shí)隙2到時(shí)隙8為競爭時(shí)隙,使用時(shí)隙CSMA-CA算法傳輸命令幀和應答幀。時(shí)隙9到時(shí)隙16固定分配給兩個(gè)手持設備作為上下行語(yǔ)音數據通道。上下行各兩個(gè)時(shí)隙的分配可以滿(mǎn)足經(jīng)
g.726壓縮后16Kb/s的語(yǔ)音數據傳輸帶寬要求。超幀結構如圖3所示。
圖3 超幀結構
對于命令幀,采用應答和超時(shí)重發(fā)機制保證其可靠傳輸。對于語(yǔ)音數據,采用5/6分組FEC糾錯算法改善語(yǔ)音質(zhì)量。該糾錯算法可以恢復五個(gè)連續語(yǔ)音數據包中任意丟失的一個(gè),且實(shí)現簡(jiǎn)單,延遲較小。
由于所有信息傳輸都是在雙方約定的時(shí)隙內進(jìn)行,時(shí)隙的錯位,抖動(dòng)都將造成丟幀,而丟幀對語(yǔ)音質(zhì)量的影響非常大,所以本設計的一個(gè)關(guān)鍵點(diǎn)是實(shí)現語(yǔ)音網(wǎng)關(guān)與手持設備間的精確同步,即手持設備在收到信標幀后保證隨后15個(gè)時(shí)隙與語(yǔ)音網(wǎng)關(guān)的對應時(shí)隙對齊。本設計利用了射頻芯片MC13192的接收時(shí)間戳功能來(lái)實(shí)現精確同步,如圖4所示。
圖4 超幀的同步
時(shí)隙1開(kāi)始后,語(yǔ)音網(wǎng)關(guān)需要TSTms的時(shí)間將射頻芯片從空閑狀態(tài)轉換為發(fā)送狀態(tài),當轉換為發(fā)送狀態(tài)后,預先存儲在射頻芯片發(fā)送RAM中的信標幀立即開(kāi)始發(fā)送,手持設備上的射頻芯片在收到六個(gè)字節TSPms后自動(dòng)鎖存一個(gè)當前時(shí)間timestamp(時(shí)間戳),
這個(gè)值由手持設備在正確接收完信標幀后讀取。根據這個(gè)值,手持設備可以設定MC13192定時(shí)器在(timestamp+1875-TST-
TSP)ms時(shí)刻產(chǎn)生中斷,進(jìn)入該中斷服務(wù)程序的時(shí)刻即時(shí)隙2的起始時(shí)刻。在時(shí)隙2中使用MCU定時(shí)器設置隨后14個(gè)時(shí)隙的定時(shí)中斷產(chǎn)生時(shí)間,定時(shí)時(shí)間為1875ms。設置MC13192定時(shí)器中斷相關(guān)代碼如下所示:
switch(frametype)
{
/*收到信標幀*/
case BEACON:
/*獲取接收時(shí)間戳*/
timestamp=PLMEGetTimestampRequest();
/*設置時(shí)隙2定時(shí)中斷時(shí)刻*/
PLMEEnableMC13192Timer1(timestamp+1875-144-192);
beacon_receive_index++;
break;
case DATA:
...
}
在時(shí)隙2中斷服務(wù)程序中設置隨后14個(gè)時(shí)隙中斷時(shí)刻,代碼如下所示:
/*MC13192定時(shí)器1中斷服務(wù)*/
if ((u16StatusContent & TIMER1_IRQ_MASK) != 0) {
/* 停止MC13192計數器*/
SPIDrvWrite(T1_HI_ADDR, 0x8000);
/* 設置MCU定時(shí)器*/
EnableTMR(1875);
無(wú)線(xiàn)手持設備端的硬件框架
手持設備端的硬件結構需要支持以下功能:
圖5 無(wú)線(xiàn)手持設備端的硬件框架
無(wú)線(xiàn)手持設備端的軟件設計
無(wú)線(xiàn)手持設備端的軟件框架
無(wú)線(xiàn)手持設備在軟件設計上需充分考慮系統的實(shí)時(shí)性和功耗。其一,手持設備需要處理語(yǔ)音,會(huì )話(huà)控制信令,鍵盤(pán)輸入信息等多種數據,并需要進(jìn)行通話(huà)過(guò)程控制,無(wú)線(xiàn)收發(fā)控制,單任務(wù)環(huán)境顯然不能勝任。其二語(yǔ)音數據是實(shí)時(shí)數據,必須得到及時(shí)有效的處理,且系統不能過(guò)于復雜,以減少不必要的開(kāi)銷(xiāo),降低功耗。綜合以上兩點(diǎn),本設計采用了一個(gè)輕巧的多任務(wù)實(shí)時(shí)嵌入式操作系統mC/OS-II,其內核可剝奪性保證了實(shí)時(shí)任務(wù)的運行。而且其內核代碼量小,能充分節省系統資源。該嵌入式操作系統提供除空閑,統計和保留任務(wù)以外的56個(gè)實(shí)時(shí)任務(wù)供用戶(hù)使用,提供信號量,消息隊列等機制實(shí)現任務(wù)間的同步和信息傳遞。其實(shí)時(shí)性強,代碼量小,內核簡(jiǎn)單的特點(diǎn)使其非常適用于本手持設備。
使用該操作系統之前需將其移植到MCF5249上,根據處理器的具體信息,編寫(xiě)OS_CPU.H,OS_CPU_A.ASM和
OS_CPU_C.C三個(gè)文件。
除內核外,完整的操作系統還需要編寫(xiě)鍵盤(pán),LCD,音頻驅動(dòng)和射頻芯片驅動(dòng)。音頻驅動(dòng)采用Phlips I2S數據格式,設定采樣率為8KHz。射頻芯片驅動(dòng)采用Freescale公司為MC13192提供的配套軟件模塊。
操作系統之上是無(wú)線(xiàn)MAC層,該模塊針對語(yǔ)音無(wú)線(xiàn)傳輸的特點(diǎn)簡(jiǎn)化實(shí)現了IEEE 802.15.4 協(xié)議MAC層功能。第三層為語(yǔ)音壓縮編解碼g.726模塊和無(wú)線(xiàn)網(wǎng)內部會(huì )話(huà)信令處理模塊。會(huì )話(huà)信令處理模塊負責處理來(lái)自無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)的會(huì )話(huà)信令。最上層為應用層,實(shí)現用戶(hù)界面和通話(huà)過(guò)程控制。無(wú)線(xiàn)手持設備總統框架如圖6所示。
圖6 無(wú)線(xiàn)手持設備端的軟件框架
無(wú)線(xiàn)手持設備端的軟件流程
當手持設備上電啟動(dòng)后,其工作流程如圖7示。首先進(jìn)行的是系統的初始化,包括處理器初始化,操作系統mC/OS-II初始化,LCD,鍵盤(pán),射頻模塊等的初始化。之后建立起始任務(wù)并通過(guò)OSStart()函數進(jìn)入多任務(wù)環(huán)境。此時(shí)起始任務(wù)占用CPU資源,在起始任務(wù)中,建立按鍵信息處理任務(wù)并通過(guò)信號量機制掛起。然后判斷是否收到來(lái)自無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)的幀,如果有,調用frame_deal()函數處理幀信息,在該函數中調用call_command_deal()完成無(wú)線(xiàn)網(wǎng)內部會(huì )話(huà)信令的處理。接著(zhù)判斷通話(huà)是否建立,如果建立則創(chuàng )建語(yǔ)音任務(wù),在語(yǔ)音進(jìn)程中使能PCM編解碼芯片,并進(jìn)行g(shù).726壓縮編碼。最后判斷是否有幀需要發(fā)送給無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān),如果有則把幀添加到發(fā)送緩存,等待發(fā)送時(shí)隙到來(lái)。這一過(guò)程完成以后重新跳到判斷是否收到來(lái)自無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān)的幀,重復以上過(guò)程。如果有鍵盤(pán)中斷,將會(huì )釋放一個(gè)信號量,該信號量將解掛按鍵信息處理任務(wù)。該任務(wù)對鍵盤(pán)輸入信息進(jìn)行處理。
圖7 無(wú)線(xiàn)手持設備的軟件流程
結語(yǔ)
本設計已經(jīng)在基于MCF5234微處理器(無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān))和MCF5249微處理器(無(wú)線(xiàn)手持設備)的硬件平臺上實(shí)現。如圖8所示,左圖為無(wú)線(xiàn)語(yǔ)音網(wǎng)關(guān),右圖為無(wú)線(xiàn)手持設備。
圖8 系統硬件實(shí)物圖
本設計實(shí)現了包括呼叫轉移,三方通話(huà)等在內的7項通話(huà)功能。在40米范圍內,具有良好的語(yǔ)音效果。該系統為家庭、辦公環(huán)境實(shí)現無(wú)線(xiàn)VoIP通信提供了一種參考設計,且具有結構簡(jiǎn)單,功耗小,軟件層次清晰等特點(diǎn)。
參考文獻:
1. IEEE Standard 802.15.4-2003
2.RFC 3261.Session Initial Protocol. 2002
3.Freescale. MCF5249 ColdFire Integrated Microprocessor
User’s Manual. 2003
4.Freescale. MC13192/MC13193-2.4GHz Low Power Transceiver
for the IEEE802.15.4 Standard Reference
Manual. 2006
5.Motorola. 3V 13-bit Linear PCM Codec-Filter User’s Manual.
1997
6.Jean J. Labrosse 著(zhù),邵貝貝等譯,嵌入式實(shí)時(shí)操作系統uC/OS-II(第二版). 北京航空航天大學(xué)出版社.
2005
電子產(chǎn)品世界
中小企業(yè)需要購買(mǎi)什么樣的PBX? 2007-12-27 |
研究:基于分層方法的VoIP安全問(wèn)題 2007-12-26 |
Jangl和Pluggd可讓Gmail成殺手級應用 2007-12-26 |
IP PBX電話(huà)系統:對你的業(yè)務(wù)有極大的好處 2007-12-26 |
互聯(lián)網(wǎng)周刊:通信進(jìn)化 2007-12-25 |