扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
摘要:随着网络的普及,基于分组交换的VoIP技术得到迅猛发展。如何将VoIP技术与无线通信技术相结合,实现无线VoIP话机是当前嵌入式VoIP话机设计的一个新方向。本文提出了一种适用于家庭办公室小范围内的无线VoIP话机系统设计方案,并且将该方案在具体的硬件平台上付诸实现。本文重点介绍了该系统的设计特点,无线MAC层的设计,以及手持设备端的硬件结构和软件结构。
当前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编解码
·外扩存储设备以存放大量的代码和数据
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。