基于MC13192射频芯片的VoIP无线语音网络

2011-04-14 15:56:49来源: 互联网
引言

  VoIP是当今热门技术,而越来越多的用户提出了在VoIP网络的用户侧一端构建起无线网络,传统意义上的VoIP终端充当 VoIP网关的方案。当前许多解决方案采用了蓝牙或其他技术,不难发现这些技术均有成本高,技术复杂等缺点。飞思卡尔MC13192是一款低功耗射频芯片,具有低成本、低功耗、性能稳定等优点,适用于低速率无线网络的射频芯片。用户可以通过该芯片及zigbee协议栈实现无线网络的构建,该技术已经被普遍用于家电控制。本文介绍了一种利用此技术实现VoIP两路语音通信的方案,是无线语音网络的一种新的低成本、低功耗的解决方案。

  设计实现

  MC13192简介

  飞思卡尔MC13192收发器是一个典型的ZigBee产品。芯片采用16通道、2.4GHz的频带,数据速率为250kb/s。它们可与32位嵌入式控制器(如飞思卡尔的MCF523x系列)协同使用。MC13192采用标准的4线SPI及7根GPIO与MCU通信,MCU可以通过对SPI的读写来设置及获取MC13192的寄存器,还可以通过对特定GPIO的电平设置来将MC13192的特定引脚置高或者拉低。

  MC13192同32位嵌入式处理器的通信

  由于处理器及开发板的差异,MCU同MC13192相联接的引脚会有所差异,因此为了实现MC13192同MCU的正常通信,必须首先配置相关引脚的方向及功能,本文所描述的方案基于飞思卡尔MCF5234平台,该平台同MC13192的引脚对应关系如表1所示。

  引脚的配置分为三部分:QSPI的初始化、GPIO的初始化以及中断引脚的配置。QSPI和中断引脚的配置相对比较简单,下面首先对这两部分做一个介绍。

  QSPI的初始化要完成对模式寄存器及环绕寄存器的初始化,值得一提的是方式寄存器初始化需要设置宏MCF_QSPI_QMR_BAUD(x),该宏用于设置QSPI的波特率,括号内的数值x需要根据硬件环境及用户需要的QSPI的时钟频率来确定,计算公式为:

  x=系统时钟频率

  4xQSPI时钟频率

  MCF5234的时钟频率为150MHz,在本系统中使用的QSPI的频率为2MHz,因此波特率数值约等于19。对于中断引脚的初始化则更为简单,初始化过程包括触发方式、引脚方向以及中断允许三步。其中触发方式需要选择下降沿触发,引脚方向要设置为输出,由于MC13192使用IRQ3,因此最后要允许来自IRQ3的中断。

  GPIO的初始化主要分为三步:引脚配置,方向寄存器初始化,以及数据寄存器的初始化。首先需要将要使用的GPIO引脚配置为GPIO功能,然后要将这些引脚配置为输出(因为这些引脚均被MCU用来控制MC13192,方向是从MCU输出),最后要将这些引脚上的数据配置为初始值。

  通过以上步骤,就完成了射频芯片和MCU的引脚联接,可以进行下一步的设计。

  IEEE 802.15.4协议MAC层的实现

  由于本方案需要通过射频芯片来进行语音数据的传输,因此需要一个可靠的MAC层协议的支持,可以采用IEEE802.15.4协议的一部分来满足本方案的要求,由于MC13192包含4个定时器,因此可以利用这4个定时器来划分时槽从而实现时分复用。

  网络结构设计

  本方案实现了两路语音通信,即两个手持设备通过无线网络与网关进行通信,网关通过有线网络连接到因特网。手持设备可以同时与外界进行通话。

  MAC协议设计

  本方案采用时槽的方式实现两路语音的复用,因此需要手持设备和网关之间时槽的严格同步。根据协议,每16个时槽作为一个超帧,网关在每个超帧的第一个时槽发送Baecon帧,第2到第8时槽是竞争时槽,因此在本方案中保留这7个时槽,第9到第16时槽是无竞争时槽,用于时分复用,在本方案中,将8个时槽分为4部分,分别用于两个手持设备的上下行数据传输。

  MAC协议的实现

  MC13192自带有4个定时器,每个定时器定时结束时产生一个中断,可以通过MC13192中断状态寄存器获知中断源,例如,当定时器1定时结束,则会产生一个中断,此时的中断状态寄存器的第9位被置高,因此在中断服务程序中加入对定时器中断的处理,可以实现时槽的划分,并且根据当前的时槽数来决定数据的收发,可以实现MAC层协议所要求的功能。在本设计中,我们采用30ms作为一个超帧的长度。以网关为例,处理定时器中断的程序如下所示:

  if(u16StatusContent & TIMER1_IRQ_MASK)

  //中断类别为定时器1中断

  {

  time_slot++;   //每次超时都将时槽加1

  if(time_slot==16)

  time_slot=0; //时槽数的合法数值为0-15

  PLMEEnableMC13192Timer1(1875);

  //每个时槽的长度为1.875ms

  switch(time_slot)

  {

  case 0:  LoadBaecon(&tx_pkt);//读取一个Baecon

  MCPSDataRequest(&tx_pkt);//发送Baecon

  break;

  case 8:

  MLMERXEnableRequest(&rx_pkt1,0);

  //打开接收天线,并将数据保存到rx_pkt1

  break;

  case 9:

  MLMERXEnableRequest(&rx_pkt2,0);

  break;

  case 10:

  LoadPacket(&tx_pkt,0,1);   //读取一个数据包

  MCPSDataRequest(&tx_pkt);//发送数据

  case 11:

  LoadPacket(&tx_pkt,0,1);   //读取一个数据包

  MCPSDataRequest(&tx_pkt);//发送数据

  //12-15时槽略

  }}

  手持设备的程序设计与网关设计大同小异,所不同的是,网关在每个超帧的开始自动发送Baecon,而手持设备则被动的接收Baecon,每次收到Baecon之后才打开定时器来划分时槽,而第15个时槽完毕后,手持设备需要打开接收天线以接收下一个超帧的Baecon。

  MC13192与语音编解码器及网络设备的协同工作

  因为MC13192支持的速率仅为250kbit/s,因此在网关与手持设备之间必须只能传输编码后的语音数据。在选择编解码方案之前,首先需要粗略估计一下带宽,由于极限速率为250Kbit/s,而由于协议所限,仅有一半时槽可供使用,即125Kbit/s,供两个设备上下行使用。这样,每个设备的单向极限速率仅为31.25kbit/s。而MC13192自身的切换时间为144us,而如2.3.3节描述,30ms为一个超帧,每个时槽长度为 1.875ms,再加上物理层头部的消耗,每设备单项可用速率约为20kbit/s。所以,在本方案中选用ITU-T G.726作为语音编解码方案。G.726语音编码消耗带宽16kbit/s,可以满足MC13192的带宽要求。

  对于网关而言,需要记录每个手持设备的通话对象,它通过MC13192及802.15.4 MAC协议获得时槽中的数据,根据对应的时槽确定数据属于哪个手持设备。最后将收到的语音数据封装成RTP包发送到手持设备的目的地。对于从网络上收到的语音数据,则需要确定属于哪一个手持设备,再通过MC13192在特定的时槽发送出去。

  对于手持设备则比较简单,它只需要在特定的时槽发送要编码后的数据,再在特定的时槽接收数据。

  设计总结

  该设计方案已经被用于本人参与的基于MC13192的zigbee电话项目中。经过实际测试,在40M范围内,可以实现无误码通信,通话质量优良。相对于基于其他技术的同类方案,本方案具有低成本、低功耗等优点,是一种比较有经济和技术价值的设计。

关键字:射频  芯片  无线

编辑:神话 引用地址:http://www.eeworld.com.cn/mndz/2011/0414/article_6972.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。
论坛活动 E手掌握
微信扫一扫加关注
论坛活动 E手掌握
芯片资讯 锐利解读
微信扫一扫加关注
芯片资讯 锐利解读
推荐阅读
全部
射频
芯片
无线

小广播

独家专题更多

富士通铁电随机存储器FRAM主题展馆
富士通铁电随机存储器FRAM主题展馆
馆内包含了 纵览FRAM、独立FRAM存储器专区、FRAM内置LSI专区三大部分内容。 
走,跟Molex一起去看《中国电子消费品趋势》!
走,跟Molex一起去看《中国电子消费品趋势》!
 
带你走进LED王国——Microchip LED应用专题
带你走进LED王国——Microchip LED应用专题
 
电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2016 EEWORLD.com.cn, Inc. All rights reserved