杨 伟,郭志强,王 沁,万亚东
(北京科技大学计算机与通信工程学院,北京100083)
单纯地采用小灵通或手机等通信设备实现无线语音通信,存在着成本高、多人通话难以及辐射大等诸多问题。目前市场上广泛使用公众模拟或数字对讲机实现短距离无线通信,模拟对讲机将语音信号直接以模拟量调制到载频上进行传输,其存在频带利用率低、通信保密性和抗干扰能力差等特点[1-3],数字对讲机却存在功耗大和价格偏高等问题,并且由于其已经产品化,有些需要定制场合无法适用。随着无线传感器网络技术快速发展,其作为一种短距离无线通信技术,凭借其具有成本低、功耗小、全球免费通用的ISM频段等优点,被广泛地应用在工业监控、环境监测、军事等多个领域,语音信号也可以作为一种被采集信息,使用无线传感器网络技术进行处理和传输[4,5],现有符合IEEE15.4标准的无线射频芯片最大传输可以达到500kbps,完全可以满足高品质语音通信64kbps的带宽要求。本文针对无线语音通信系统开展了深入研究,从系统结构、硬件设计、软件设计和通信协议等核心方面进行了详细地分析,设计了一种基于中心基站的无线语音通信系统,对无线语音通信过程中存在周期性顿音现象,提出了语音数据双缓存解决机制,系统通过测试运行良好,能够满足高品质实时无线语音通信需求,并克服了无中心基站语音通信系统容量小、通信距离短等弱点[6]。
系统的网络拓扑结构如图1所示,其采用分簇的网络结构,分簇的网络之间根据具体应用场合可以通过中心基站连起来,也可以使每个分簇网络相互独立工作,不同的分簇网络之间使用不同无线频道,可保障多个星形网络之间同时工作,互相不产生干扰。
图1 系统网络结构
簇内的网络拓扑采用星形结构,其由一个中心基站和若干个端节点构成。每个中心基站可以允许连接多个用户端节点进行半双工语音通信,在空旷地带中心基站到端节点的通信距离可达到100m以上。中心基站主要功能管理其簇内端节点网络通信,若有端节点发出呼叫请求,应为其分配语音通信信道,并通知其它端节点进入监听状态;当端节点发送语音通信数据时,接受其语音信息然后广播出去;当网络处于空闲状态,其也可以向簇内的端节点广播音乐;端节点主要功能以广播的方式将语音信息发送给中心基站,然后通过中心基站广播出去,其它簇内的端节点接受语音信息。
系统有两种类型的节点:中心基站与端节点,节点采用模块化设计,通过不同的模块配置实现两种节点的功能。中心基站的硬件设计按功能划分为微处理器单元设计、射频单元设计、语音处理单元设计、电源管理单元设计、4*4矩阵键盘和液晶屏LCD、以及ISP接口和串行调试接口单元设计,端节点在硬件设计减少了液晶屏LCD等外网设备。
图2 中心基站硬件总框架
中心基站硬件总框图如图2所示。系统的微处理器选用ATMEL公司的ATMega128L,它是基于AVR内核的RISC结构的8位微处理器[7],具有高性能和低功耗特点,并提供了丰富的外围接口,为节点硬件结构的设计提供灵活性。节点的射频单元选用CC2500模块,它是一款低功耗、高集成和多频道2.4G射频收发芯片[8],主要应用于无线消费电子和无线语音等领域。节点的语音处理单元选用CMX649语音编解码芯片,其支持一种抗信道误码非常好的CVSD高性能语音编解码算法,并具有全双工的ADM,μ-律、A-律和线性PCM编码以及ADM与PCM的码制转换功能,广泛应用于语音编解码各个领域[9]。中心基站还配备了4*4矩阵键盘和液晶屏LCD。节点实物图如图3所示。
图3 节点实物
目前市场射频模块种类繁多,在充分考虑传输速率、通信距离、功耗及其成本等因素情况下,合理选择恰当的射频模块。系统选择的射频模块是Chipcon公司的CC2500,其特点如下[8]:
(1)采用2.4GHz频段,该频段是全球范围内被广泛使用的超低辐射绿色环保频段。
(2)传输速度快,最高传输速率可以达到500kbps,能够满足高品质语音信号传输要求。
(3)低功耗设计,工作在发送模式时电流消耗仅21.6mA,接收模式时电流消耗15.6mA;其在空旷地带传输距离可达150m,加了放大器,传输距离更远。
节点的射频模块设计电路如图4所示。ATMega128通过4线的SPI接口与CC2500连接,通过SPI接口可以完成对CC2500内部寄存器读写和芯片初始化,SPI是一种高速度、全双工、同步的通信总线,可以减少语音信息传输延迟,保证语音质量。
图4 射频模块设计电路
系统的语音处理芯片采用英国的CML微电子公司CMX649,其支持脉冲编码调制PCM、自适应差分脉冲编码调制ADPCM、自适应增量调制ADM等广泛应用的语音编码算法,为无线语音应用提供了一种低成本、低功耗的理想解决方案[9]。
图5 为系统语音处理模块CMX649的典型外围电路,CMX649有20个引脚作为应用接口之用,这些接口包括:电源接口、模拟信号输入输出接口、编解码数据接口、编解码指示接口、时钟信号接口、C-BUS控制信号接口等。
CMX649编解码数据接口TXDATA与RXDATA采用串行方式与ATMega128L相连,其编解码指示接口ENCVAD与DECVAD与ATMega128L中断引脚相连,CMX649通过C-BUS控制信号接口对控制寄存器进行读写操作,完成对采样速率的选取、功率的控制、编码的相关算法以及其它的一些功能参数配置,其与ATMega128L普通I/O口相连。
图5 CMX649典型外围电路
考虑中心基站采用固定稳压电源供电,可以使用220V转12V开关电源,然后设计电源管理单元。节点的供电机制是按模块分别供电,微处理器单元、射频模块和语音处理模块需要3.3V电源,而液晶屏LCD需要5V电源。
系统选择美国国家半导体公司生产的LM2576S降压开关型集成稳压电路,芯片输出电压为5V,电流为3A,具有完善的保护电路,包括电流限制及热关断电路等,能够满足系统供电要求。系统选择另一款降压芯片AMS1117,芯片输出电压为3.3V,并能提供最大电流1A,并具有低功耗、低噪声、高PSRR、封装小以及高稳定性等特点,在设计电路过程中,输入输出引脚上都加了滤波电容,可以有效减少干扰。
系统软件开发使用开发工具AVR Studio,编译工具WinAVR,系统软件设计采用模块化的设计思想,将系统实现分为多个功能模块,主要包括四大模块:射频通信模块,语音处理模块,液晶屏LCD模块与主程序模块。
图6 是中心基站主程序流程。中心基站在上电后首先初始化射频,即无线通信模块,然后初始化语音处理模块与液晶屏LCD模块,初始化的过程主要是驱动编写;下一步工作模式判断,当值为1时是对讲广播模式,即存在端节点发出呼叫请求,首先判断是否刚刚进行模式切换与否,若是启动液晶屏显示当前状态,然后将射频状态设置为发送态,否则就直接调用中继转存,其功能完成为端节点分配语音通信信道和中继转发语音数据包给其它簇内节点,下一步键盘扫描,判断键值变化否,当有变化跳转到相应模式,否则回到工作模式判断进行循环;值为2时是音频播放模式,即中心基站向簇内节点广播音乐,其程序流程与模式1大体类似,其中模式2中调用编码发送,其功能语音处理芯片CMX649连续编码放入缓冲区,然后射频模块CC2500将缓冲区数据发送出去;值为3时是同步模式,即中心基站周期性向簇内节点广播同步信号,便于端节点在无工作任务时候周期性进入休眠状态,能够达到低功耗设计目的。
图6 主程序流程
在通信协议设计中,考虑到语音传输对实时性的要求较高,而对于传输过程中出现的少量的丢包以及误码又都是可以允许的,因此系统采用一次握手、多个数据连续通信的不可靠数据报传送协议[10]。当中心基站传送语音数据之前,先向簇内节点发送同步帧,端节点从休眠状态唤醒,进入接收状态,然后中心基站将多个数据连续语音数据包发送过去,端节点成功接收完语音数据包,其再次进入休眠模式,这样既满足低功耗设计要求,又能保证语音通话质量。
中心基站与簇内的节点通信需要协定射频通信帧格式,帧格式主要由3部分组成:帧头 (RFHead),数据域 (Data)和帧尾 (RFFoot)。系统设计4种类型通信帧,其分别是呼叫请求帧、确认帧、数据帧和拆线帧。其中呼叫请求帧、确认帧和拆线帧由RFHead和RFFoot组成,其Data部分为空。系统设计数据帧格式如图7所示,其中RFFoot内容由硬件填充,其为RFHead和Data部分的16位CRC校验序列,射频芯片发送完RFHead和Data后会自动发送 RFFoot。因此射频驱动层只需发送RFHead和Data即可。
图7 数据帧格式
在进行无线语音通信过程中,射频数据帧长度设置40B,除去帧头和帧尾部分,数据域为32B,系统射频模块CC2500设置传输速率250kbps,语音处理芯片CMX649编解码速率16 kbps,当语音处理芯片编解码产生长度为32B的数字信号时,即此时可以构成一个射频数据帧,就触发一次中断,中断处理程序调用射频发送,将这一个射频数据帧发送出去,而在中断处理过程中语音处理芯片编解码产生数据假如没有处理机制将会丢失大量语音信息,严重影响到语音通话质量,可以通过分析与计算有多少语音信息丢失;当射频模块CC2500传输速率为250kbps时,发射长度为40B帧时间大约1.28ms,进行中断处理程序还需要关中断和保护CPU内部寄存器等时间,所以语音处理芯片CMX649至少在1.28ms时间产生语音数据完全丢失,当其编解码速率16 kbps大概有2.56B语音数据丢失,从整个语音编解码和发送过程分析,每发送32B语音数据帧,后面紧接着至少有2.56B数据丢失,即8%以上语音数据丢失,这还没有包括语音数据通过无线传输过程丢包等情况,这种方式进行设计语音系统音质是比较差的,并且会周期性产生顿音现象,而产生顿音原因主要是周期性语音数据丢失,后来通过示波器对接收端语音信号进行分析,可以明显观察到周期性产生不正常信号,对此采用语音数据双缓存机制方法解决这一问题。
设计双缓存区分别为RFTX_BUF和RFRX_BUF,如图8所示,RFTX_BUF缓冲区作用缓冲语音处理芯片CMX649编码输出数据,可设定输出到指定值时射频模块CC2500开始发射一个数据包出去,设定两个指针,一个指针指示CMX649编码输出数据位置,另一个指示CC2500发射数据位置,当语音处理芯片CMX649产生一个字节数据时就放入RFTX_BUF缓冲区,其指针进行++操作,这样当缓存区语音数据达到或超过一个射频帧长时可以中断调用射频发送,而在中断发送过程中产生语音数据继续进入缓存区,这样能避免因为中断打扰而丢失数据,指示射频指针移动步长为射频帧大小。当指向末尾时候重新循环;RFRX_BUF缓冲区作用缓冲射频模块CC2500接收数据包,然后语音处理芯片CMX649开始解码数据,设定两个指针,一个指针指示CC2500接收数据位置,另一个指示CMX649解码数据位置,其原理与RFTX_BUF缓冲区类似。采用此双缓存机制能够很好保证因中断响应导致周期性的语音数据丢包问题,对音质提高具有关键影响作用。
图8 语音数据缓冲区
系统软硬件基本完成后,选择一空旷地带进行测试,测试分两组进行,分别来验证系统运行结果。第一组搭建5个节点测试平台,其中1个为中心基站,主要验证语音数据双缓冲机制对语音通话质量影响、正常通信距离和功耗大小;第二组搭建8个节点测试平台,其中2个中心基站主要验证系统不同的分簇网络之间能否相互通信以及是否存在相互干扰。
首先对系统采用语音数据双缓冲机制对语音通话质量影响进行测试,配置参数如下:射频模块CC2500工作在2.4GHz频段,发射功率配置成0dBm,传输速率设置为250kbps;语音处理芯片CMX649配置成16 kbps或64 kbps的CVSD语音编码调制方式,端节点与中心基站摆放距离很近。其测试结果见表1,当没有使用语音数据双缓冲机制时语音通话质量比较差,并且周期性顿音产生,实验结果恰好与3.3节理论分析一致;当采用数据双缓冲机制时,缓存区设置过小,没能很好的起到缓存功能,有部分语音数据丢失,其缓存大小应该在缓存一个射频数据包和射频中断处理响应时间内产生语音数据长度之和,而当语音处理芯片CMX649编解码速率配置成64 kbps时,在射频中断处理响应时间内产生语音数据长度大于其编解码速率16 kbps,所以其缓存区大小应该更大些;当然缓存区大小受到微处理器的RAM大小限制,系统选用ATMega128L足够提供50B空间。
表1 实验运行测试结果
然后对系统正常通信距离以及功耗大小进行测试,射频模块CC2500发射功率配置成0dBm,4个端节点围绕中心基站摆放,距离100m范围内,在测试对讲广播模式时,从一个端节点发起语音通信,其余3个端节点都能清晰听到语音信号,并且能够互相通信;当中心基站进入音乐播放模式时,4个端节点都能够正常收听到音乐,并且语音清晰;因中心基站一般采用固定稳压电源供电,其功耗大小可以不用测量,仅需要对端节点功耗大小测量,其正常语音通信最大工作电流大小约61.6mA,工作电压3.3V,故功率大约为0.2W,远小于现有数字对讲机5W功耗,假如配备1200mAh电池,其能够工作时间大约20个小时,能够满足对语音通信需求。
最后对第二组搭建8个节点进行测试,将其分为2簇,将2个中心基站分别摆放在相距100m位置,然后将6个端节点摆放其附近,其中一簇配置参数如下:射频模块CC2500工作在2.4GHz频段,使用信道1,发射功率配置成0dBm,传输速率设置为250kbps;语音处理芯片CMX649配置成16 kbps的CVSD语音编码调制方式;另一簇使用另外一个非相邻信道,其它配置相同,实测结果表明2簇能够正常语音通信,语音通信质量良好,互相没有进行无线信号干扰;然后对2簇之间能否相互通信进行测试,从一个簇的端节点发起语音通话,经过其簇内中心基站,让后中转到另外簇的中心基站,在另外一个簇的端节点能够接受到语音信号,但是存在延迟现象,音质略有下降。
本文设计一种有中心基站的无线语音通信系统,并对系统结构、硬件设计、软件设计和通信协议等核心问题进行详细分析,针对无线语音通信过程中存在周期性顿音现象,提出了语音数据双缓存解决机制,实验结果表明采用该机制能使语音通信质量得到很大改善,从而实现了短距离、高品质实时无线语音通信系统,下一步工作目标先从硬件上将中心基站和端节点微型化,制成更高密度电路板,并进一步对系统通信协议进行改进,使得其能够支持更大规模的节点之间进行无线语音通信。
[1]XU Xiaoxiao,QU Guangxiang,HUANG Yanqiu,et al.Probe on wireless voice communication system of coalmine based on ZigBee[J].Industry and Mine Automation,2013(1):99-102(in Chinese).[徐肖肖,瞿光祥,黄艳秋,等.基于ZigBee的矿井无线语音通信系统探讨 [J].工矿自动化,2013(1):99-102.]
[2]WANG Ying.Design and implementation of voice communication system based on the ZigBee technology[D].Harbin:Harbin University of Science and Technology,2011(in Chinese).[汪影.基于ZigBee技术的语音通信系统设计与实现 [D].哈尔滨:哈尔滨理工大学,2011.]
[3]XU Guisen,LIU Xin,TAN Xuezhi.Talk on thewireless interphone analog to digital[J].Mobile Communication,2009(6):22-25(in Chinese).[徐贵森,刘鑫,谭学治.浅谈无线电对讲机模拟转数字 [J].移动通信,2009(6):22-25.]
[4]Yick J,Mukherjee B,Ghosal D.Wireless sensor network survey[J].Computer Networks,2008,52(12):2292-2330.
[5]YU Hongyi,LIOu,ZHANG Xiaoyi,et al.Wireless sensor networks theory,technique and implementation[M].Beijing:National Defense Industry Press,2008(in Chinese).[于宏毅,李鸥,张效义,等.无线传感器网络理论、技术与实现[M].北京:国防工业出版社,2008.]
[6]ZHENG Zuhui,BAO Zhiliang,ZHENG Lan.Digital trunking mobile communication system[M].3rd th.Beijing:Electronic Industry Press,2008(in Chinese).[郑祖辉,鲍智良,郑岚.数字集群移动通信系统 [M].3版.北京:电子工业出版社,2008.]
[7]ATMEL.8-bit Microcontroller with 128K bytes in-system programmable flash[EB/OL].[2012-02-03].www.atmel.com/Images/2549s.pdf.
[8]TI.CC2500 Low-cost low-power 2.4 GHz RF transceiver[EB/OL].[2008-05-04].http://www.ti.com/lit/ds/symlink/cc2500.pdf.
[9]ZHOU Jie,CHEN Xiangdong.Design and study of wireless voice systems based on the continuously variable slope delta(CVSD)modulation[J].Microcomputer Information,2006,23(5):238-240(in Chinese).[周捷,陈向东.基于CVSD编码的无线语音系统方案的设计与研究[J].微计算机信息,2006,23(5):238-240.]
[10]ZHANG Zhidong,SUN Yugeng,YANG Ting.Design and implementation of voice communication system based on wireless sensor network[J].Application of Electronic Technique,2007(11):117-120(in Chinese).[张志东,孙雨耕,杨挺.基于无线传感器网络的语音通信系统设计与实现[J].电子技术应用,2007(11):117-120.]