本文提出了一种在Windows平台上基于USRP的数字对讲机收发系统设的计方案。首先简要介绍USRP及其开发平台,通过各种对比选择在Windows平台上利用VC来实现,然后描述了USRP驱动安装,详细分析了UHD重组的API函数接口,最后搭建数字对讲机收发系统,采用DMR数字通信协议,利用USRP作为收发前端,在PC上通过串口RS232连接AMBE-1000语音板,通过实际测试验证了系统的各项功能,证明了USRP在Windows平台上开发简单方便可行。
0引言
随着信息化时代的发展,人们日益迫切地要求对讲机具有诸如话音加密、数据传输、远程监控、联网调度等功能,而且要求进一步提高无线频谱的利用率(信道间隔由过去的25kHz到现在的12.5kHz以及6.25kHz),数字通信技术在对讲机及转信台等相关产品中的应用也就迫在眉睫了[1][2].
数字对讲机采用数字技术进行设计,将语音信号数字化,以数字编码形式传播。数字对讲机与模拟对讲机相比,语音清晰、接收通话信号稳定,数字对讲机不仅能实现模拟对讲机基本业务:单呼、组呼等功能,还具有调度台核查呼叫、区域选择、接入优先、优先呼叫、迟后进入、预占优先呼叫、侦听、动态重组、监听等补充业务[2].数字对讲机是我国的移动通信系统和设备中的最后一个由模拟转向数字的设备和系统。
本文提出了一种基于USRP的数字对讲机收发系统设计方案。该方案在Windows平台上,利用USRP作为收发前端,在PC机上通过串口RS232连接语音板,上层采用DMR数字通信协议,实现了数字对讲机系统的各项功能。
1 USRP介绍及系统开发平台选取
1.1USRP介绍
USRP(Universal Software Radio Peripheral,通用软件无线电外设)旨在使普通计算机能像高带宽的软件无线电设备一样工作。USRP是一个非常灵活的USB设备,包含一个小的母板,母板包含4个12bit/64M抽样率的ADC,4个14bit/128M DAC,一个百万门的FPGA芯片和一个可编程的USB2.0控制器。每个USRP母板支持4个子板,2个接收,2个发射[3].它的结构框图如图1所示。
如图1所示,USRP通过USB2.0与处理器相连。接收器链从高度敏感、可接受微小信号的模拟前端开始,然后使用直接下变频将它们数字化为同相(I)和正交(Q)基带信号。下变频后有高速模数转换器和一个DDC,用以降低采样率并将I和Q打包传输到主机。发射器链从主机开始,生成I和Q并通过USB2.0输到USRP硬件,DUC为DAC准备信号,然后I-Q进行混合,直接上变频信号以产生一个RF频率信号,然后进行信号放大与传输。
1.2开发平台选取
目前开发USRP的工具有四种,分别是Linux品台下的GNUradio,还有Windows平台下的VC,Simulink,Labview.
GNU Radio是Linux上一个软件无线电软件,通过最小程度地结合硬件USRP,用软件来定义无线电波发射和接收的方式,搭建无线电通信系统的开源软件系统[3].Labview是由NI提出的一款开发USRP的工具,用户可以开发自定义的无线通信协议并且实现实时运行的物理层数字链路。但是目前Labview只支持USRP-292x.MATLAB和Simulink连接Ettus Reseach公司的USRP,可以提供无线电回路设计和建模环境。它是由德国KIT大学开发的,只支持USRP2,还不是很完善。各个平台之间对比:
通过表1可知,相对于Linux平台而言,Windows平台开发更方便有以下几个优点:第一,Linux的操作比较复杂,Windows的比较简单,快速开发;第二,Windows可视化的界面编辑器,方便开发对讲机的界面对话框;第三,Windows是微软的东西,VC也是,自然会比其他公司的开发工具在兼容性等各方面要好;第四,Linux速度比较快,安全性比Windows好,但是有很多软件只能在Windows里运行,与Linux兼容的软件正在开发中,不方便调用PC里面的API和外面接口。
而用VC开发通信协议程序比较方便,USRP的通用驱动UHD也是用VC开发的,相比较与Simulink和Labview,在VC上开发,更具优势,更适合本项目的开发。并且Simulink和Labview都只支持USRP2,开发还不是很成熟,工具也不方便[4][5].本次验证系统采用的是USRP1,USRP1采用的是USB2.0接口,相对于USRP2以太网接口简单方便,母版上采用的是Altera的FPGA芯片,容易开发,并且价格便宜。所以,采用USRP1在Windows上用VC进行开发。
2 USRP在Windows上开发接口
UHD是由Ettus Resarch开发的,为其产品提供宿主驱动(host driver)和API.本次设计在Windows平台下,采用UHD驱动。在安装UHD驱动时,需要安装cmake,Boost,libUSB等插件,然后解压UHD源码,通过cmake交叉编译实现,可以得到UHD下面的各个项目工程。Boost和libUSB这两个库在cmake编译中都需要进行配置,否则编译过不去。这些插件主要作用就是将UHD下面的Linux源代码通过cmake等交叉编译生成Windows下面的C代码。
安装好后可以连接上USRP,通过里面的测试实例,可以看到USRP是否正确连上。正确连上会显示如下信息:图中的参数是可配置的。
然后,我们就可以调用UHD下面的一些API函数,在本次项目中主要参考的就是底层的send()和recv()。里面的程序全是通过类来实现的。在Windows平台上,USRP提供的可配参数主要如表2所示。
但是send()和recv()收发不满足DMR规定的要求,并且在进行收发转换时,时序处理不过来。为了方便上层调用,将配置分为三部分,对UHD下面的接口函数进行了重新封装,如表3所示。
在configure()里面主要是创建了一个USRP,它花时较长,需要返回一些USRP的子板和母版信息,还要导入一些映像文件,所以采用单独分开配置,在程序调用之前配置一次就可以。configure_recv()和configure_send()主要是配置一些收发的具体参数,就是上面介绍的主要参数。这样将配置分开,是为收发转换准备的,方便上层调用。Mod_send()主要负责将上层来的数据进行调制然后调用底层send()将数据发送出去,Demod_recv()主要负责调用底层recv()并将接收的数据解调返回给上层。
3收发系统实现及测试
3.1系统平台搭建
系统平台基于软件无线电的架构,基带处理部分按照DMR协议由软件模块来实现,包括组帧、同步、信道接入、BPTC信道编码等,这部分主要在PC机上完成。射频部分由硬件模块USRP完成,采用400M的射频子板,与PC之间通过USB2.0进行通信。语音模块由AMBE-1000来完成,本次系统中语音板是插在一个51最小系统上,51最小系统主要负责AMBE-1000语音板的驱动和它与PC机之间的串口通信。具体系统架构如图3。
3.2DMR协议栈收发时序
在PC上主要主要完成的就是DMR通信协议,主要分为三层,物理层主要功能是:比特与符号定义、建立频率同步和符号同步、构成突发、对基带信号进行调制解调、实现收发转换等;数据链路层的主要功能是:突发和参数定义、组帧和帧同步、信道编码、确认和重传机制、与两层之间的接口等;呼叫控制层的主要功能是:BS激活与去激活、语音业务下的呼叫建立、呼叫保持、呼叫终止、单呼和群呼的发送与接收等[6].在本文中严格按照DMR协议规定的帧结构和突发时序进行了设计,突发结构如图4所示。
每个burst长30ms,包含两个108比特有效载荷和一个48比特同步或信令域,其中27.5ms承载264比特内容,在传输语音时,可以利用两个有效载荷共216比特承载60ms的压缩语音信息。另外2.5s分布在左右两边,各占1.25s,这样两个突发就间隔2.5ms.在上行信道上,2.5ms间隔是保护间隔,作传播时延和功率放大器的上升时间;在下信道上,2.5ms间隔用作CACH信道,用于传送业务信道管理信息和低速信令。TDMA frame由两个burst构成,语音采集器每60ms采集一帧数据。基带处理模块进行基带处理和中频调制,处理时间小于60ms,其中包括数据收集和写入缓存的时间。USRP每30ms时间发送一帧数据,与基带模块和中频调制并行进行,接收端作类似的处理。收发的时序转换如图5所示。
3.3系统测试
本次开发的数字对讲机收发系统经过实际测试,可以正常进行单呼,组呼语音通话,通话质量较好。测试中系统采取主要参数在表2中已经说明,收发系统实物图如图6所示。
本文中对发送端得波形进行了测试,图7是一个突发的数据波形,图8是一个TDMA帧的数据波形。可以看出,实际的测试波形比27.5ms多一点,这个是由USRP不稳定带来的,但一帧数据在上层严格控制在60ms,30ms进行一次收发转换,满足DMR协议规定的格式。
4结论
本文通过对USRP的研究,选取在Windows平台上,利用软件无线电架构搭建数字对讲机收发系统。通过实际测试表明,USRP在Windows下开发很方便,搭建的数字对讲机收发系统能够进行清晰的单呼和组呼功能。