關鍵詞: IEEE802.15.4;mC/OS-II;SIP;g.726
當前VoIP技術和無線通信技術的迅速發展為無線VoIP話機的實現創造了條件,也形成了一個研究熱點。當前提出的設計方案有采用802.11協議(WLAN)實現VoIP無線化,雖然覆蓋范圍可達上百米,充足的帶寬對語音壓縮也沒有過高要求,但作為移動便攜設備,其成本和功耗成為了設計瓶頸。本設計主要從性能,成本,功耗等方面出發,提出了一種利用低速低功耗的無線個域網技術IEEE802.15.4[1]來實現無線VoIP話機系統的方案,并在基于Freescale射頻芯片MC13192的硬件平臺上成功實現了該方案。
無線VoIP話機系統方案
作為無線便攜設備,功耗是首要考慮的一個因素,如果把網絡協議棧,各個語音處理模塊,無線通信都放在手持設備上,必然造成手持設備功能復雜,功耗過大。本設計考慮將嵌入式VoIP話機劃分為兩部分:無線語音網關和手持設備端。無線語音網關作為該系統的非移動端,以有線方式連接到互聯網,主要處理網絡及會話協議,各種語音壓縮標準與g.726壓縮標準之間的轉換以及無線收發工作,而作為真正移動部分的手持設備端僅作簡單的會話信令處理,g.726語音編解碼和無線收發工作。在這種結構下,還可以增加手持設備的數量,實現多路無線通話,本設計成功實現了兩個手持設備的無線語音通話。即兩個手持設備可同時與互聯網上其它用戶建立語音通話。該無線VoIP話機系統如圖1所示。

圖1 無線VoIP話機的系統示意圖
無線語音網關同手持設備端之間的無線通信采用了低速低功耗的IEEE802.15.4協議,采用該協議雖然能極大地降低系統特別是手持設備的功耗,但僅僅250Kb/s的無線帶寬對語音的傳輸卻提出了挑戰。為適應250Kb/s的無線傳輸速率同時保證語音質量,本設計采用了g.726壓縮編解碼將語音速率從64Kb/s降低到16Kb/s。另外根據該應用的特點:手持設備與語音網關間僅構成星型拓撲結構,刪減了IEEE802.15.4協議部分功能,對其幀結構也作了一定修改以增加負載數據在幀中所占的比例。
SIP協議與無線網內部會話信令
VoIP目前有兩大獨立的信令標準:H.323協議和SIP協議。H.323主要參考了傳統PSTN的呼叫控制和信令架構,便于與傳統電話網相連。SIP協議是由IETF在1999年提出來的一個應用控制協議,它可用來創建、修改以及終結多個參與者參加的多媒體會話進程。SIP協議借鑒了Internet協議設計思想,具有簡單,開放,可擴展等特點。本設計采用了SIP協議,并在實現時采用了源代碼開放的SIP協議棧osip2/eXosip庫。
無線網內部會話信令是本設計中無線語音網關與手持設備間進行通話所交互的信令。該信令集可以看成SIP信令在本無線網絡中的擴展。由于SIP協議是放在無線語音網關上實現,而在會話過程中,部分SIP事件例如發起呼叫,需要由手持設備來響應或送出,所以需要無線語音網關將這部分消息發送給手持設備,同時需要將從手持設備接收到的消息轉換成相應的SIP信息發送到互聯網。無線網內部會話信令便在無線語音網關和手持設備間充當了信息傳遞的橋梁。表1列舉了部分無線網內部會話信令在軟件實現中定義的宏名。
這里以無線手持設備發起呼叫為例介紹無線手持設備如何通過內部會話信令與其他VoIP電話建立會話,如圖2所示。

圖2 無線手持設備發起呼叫信令交互
當用戶通過無線手持設備撥打一個號碼時,無線手持設備將發送一個HtoG_CALL_ NEW的內部會話信令連同呼叫的號碼給無線語音網關,無線語音網關收到該信令后,將根據該信令構造相應的SIP消息并發送到外部網絡。當無線語音網關收到來自被叫方表示振鈴信息的暫時應答RINGING時,將發送一個GtoH_CALL_RINGING的內部會話信令給手持設備。當無線語音網關收到來自被叫方表示應答的信息ANSWERED時,語音網關將啟動RTP線程并發送一個GtoH_CALL_ANSWERED的內部會話信令給手持設備以通知被叫方已應答。此時手持設備開啟語音進程,與被叫方實現通話。
無線MAC層設計和同步的實現
根據設計的特點,無線語音網關同手持設備間的無線網絡采用星型拓撲結構,無線語音網關作為無線個域網的協調器同手持設備進行信息交互。IEEE802.15.4MAC層分為使用信標幀和不使用信標幀兩種工作模式,本設計采用使用信標幀同步的超幀結構,由無線語音網關發送信標幀同步無線手持設備的數據傳輸。本設計中超幀長30ms,等分為16個時隙,每個時隙為1.875ms。信標幀在時隙1發送,時隙2到時隙8為競爭時隙,使用時隙CSMA-CA算法傳輸命令幀和應答幀。時隙9到時隙16固定分配給兩個手持設備作為上下行語音數據通道。上下行各兩個時隙的分配可以滿足經 g.726壓縮后16Kb/s的語音數據傳輸帶寬要求。超幀結構如圖3所示。

圖3 超幀結構
對于命令幀,采用應答和超時重發機制保證其可靠傳輸。對于語音數據,采用5/6分組FEC糾錯算法改善語音質量。該糾錯算法可以恢復五個連續語音數據包中任意丟失的一個,且實現簡單,延遲較小。
由于所有信息傳輸都是在雙方約定的時隙內進行,時隙的錯位,抖動都將造成丟幀,而丟幀對語音質量的影響非常大,所以本設計的一個關鍵點是實現語音網關與手持設備間的精確同步,即手持設備在收到信標幀后保證隨后15個時隙與語音網關的對應時隙對齊。本設計利用了射頻芯片MC13192的接收時間戳功能來實現精確同步,如圖4所示。

圖4 超幀的同步
時隙1開始后,語音網關需要TSTms的時間將射頻芯片從空閑狀態轉換為發送狀態,當轉換為發送狀態后,預先存儲在射頻芯片發送RAM中的信標幀立即開始發送,手持設備上的射頻芯片在收到六個字節TSPms后自動鎖存一個當前時間timestamp(時間戳), 這個值由手持設備在正確接收完信標幀后讀取。根據這個值,手持設備可以設定MC13192定時器在(timestamp+1875-TST- TSP)ms時刻產生中斷,進入該中斷服務程序的時刻即時隙2的起始時刻。在時隙2中使用MCU定時器設置隨后14個時隙的定時中斷產生時間,定時時間為1875ms。設置MC13192定時器中斷相關代碼如下所示:
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計數器*/
SPIDrvWrite(T1_HI_ADDR, 0x8000);
/* 設置MCU定時器*/
EnableTMR(1875);
無線手持設備端的硬件框架
手持設備端的硬件結構需要支持以下功能:
·能接收并處理用戶按鍵信息
·能在LCD屏上顯示系統信息
·無線數據傳輸
·語音數據的采樣、恢復以及PCM編解碼
·外擴存儲設備以存放大量的代碼和數據
按照以上對硬件功能的要求,本設計采用了Freescale公司32位微處理器MCF5249作為主控芯片。該處理器工作主頻為140MHz,實際工作頻率可通過片內PLL設定,片內帶有8K的指令高速緩存和96K的SRAM。該處理器還提供豐富的外設供用戶使用。
無線收發模塊采用Freescale公司符合IEEE802.15.4規范的射頻芯片MC13192,該芯片工作在2.4GHz頻段,提供16個無線通道,數據速率為250Kb/s[4],通過QSPI與主控芯片進行數據交換。語音采樣模塊采用Motorola公司13位線形PCM編解碼芯片MC145483SD[5],該芯片對語音進行AD采樣并形成線形PCM流,通過音頻接口與主控芯片交換數據。時鐘模塊的設計充分考慮手持設備的低功耗要求,提供高低兩種時鐘輸入。當系統處于未通話狀態,可向系統提供低頻率時鐘。時鐘輸入可通過軟件配置GPIO進行選擇。因為要處理大量音頻數據和固化代碼,擴展了片外SDRAM和FLASH。其他模塊還包括鍵盤,LCD,串口和BDM調試接口,其硬件框架如圖5所示。

圖5 無線手持設備端的硬件框架
無線手持設備端的軟件設計
無線手持設備端的軟件框架
無線手持設備在軟件設計上需充分考慮系統的實時性和功耗。其一,手持設備需要處理語音,會話控制信令,鍵盤輸入信息等多種數據,并需要進行通話過程控制,無線收發控制,單任務環境顯然不能勝任。其二語音數據是實時數據,必須得到及時有效的處理,且系統不能過于復雜,以減少不必要的開銷,降低功耗。綜合以上兩點,本設計采用了一個輕巧的多任務實時嵌入式操作系統mC/OS-II,其內核可剝奪性保證了實時任務的運行。而且其內核代碼量小,能充分節省系統資源。該嵌入式操作系統提供除空閑,統計和保留任務以外的56個實時任務供用戶使用,提供信號量,消息隊列等機制實現任務間的同步和信息傳遞。其實時性強,代碼量小,內核簡單的特點使其非常適用于本手持設備。
使用該操作系統之前需將其移植到MCF5249上,根據處理器的具體信息,編寫OS_CPU.H,OS_CPU_A.ASM和 OS_CPU_C.C三個文件。
除內核外,完整的操作系統還需要編寫鍵盤,LCD,音頻驅動和射頻芯片驅動。音頻驅動采用Phlips I2S數據格式,設定采樣率為8KHz。射頻芯片驅動采用Freescale公司為MC13192提供的配套軟件模塊。
操作系統之上是無線MAC層,該模塊針對語音無線傳輸的特點簡化實現了IEEE 802.15.4 協議MAC層功能。第三層為語音壓縮編解碼g.726模塊和無線網內部會話信令處理模塊。會話信令處理模塊負責處理來自無線語音網關的會話信令。上層為應用層,實現用戶界面和通話過程控制。無線手持設備總統框架如圖6所示。

圖6 無線手持設備端的軟件框架
無線手持設備端的軟件流程
當手持設備上電啟動后,其工作流程如圖7示。首先進行的是系統的初始化,包括處理器初始化,操作系統mC/OS-II初始化,LCD,鍵盤,射頻模塊等的初始化。之后建立起始任務并通過OSStart()函數進入多任務環境。此時起始任務占用CPU資源,在起始任務中,建立按鍵信息處理任務并通過信號量機制掛起。然后判斷是否收到來自無線語音網關的幀,如果有,調用frame_deal()函數處理幀信息,在該函數中調用call_command_deal()完成無線網內部會話信令的處理。接著判斷通話是否建立,如果建立則創建語音任務,在語音進程中使能PCM編解碼芯片,并進行g.726壓縮編碼。判斷是否有幀需要發送給無線語音網關,如果有則把幀添加到發送緩存,等待發送時隙到來。這一過程完成以后重新跳到判斷是否收到來自無線語音網關的幀,重復以上過程。如果有鍵盤中斷,將會釋放一個信號量,該信號量將解掛按鍵信息處理任務。該任務對鍵盤輸入信息進行處理。

圖7 無線手持設備的軟件流程
結語
本設計已經在基于MCF5234微處理器(無線語音網關)和MCF5249微處理器(無線手持設備)的硬件平臺上實現。如圖8所示,左圖為無線語音網關,右圖為無線手持設備。

圖8 系統硬件實物圖
本設計實現了包括呼叫轉移,三方通話等在內的7項通話功能。在40米范圍內,具有良好的語音效果。該系統為家庭、辦公環境實現無線VoIP通信提供了一種參考設計,且具有結構簡單,功耗小,軟件層次清晰等特點。
參考文獻:
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 著,邵貝貝等譯,嵌入式實時操作系統uC/OS-II(第二版). 北京航空航天大學出版社. 2005