随着物联网产业的高速发展,无线通信协议已成为研究热点。在无线通信协议的开发和测试过程中,通常会使用无线数据包监听器捕获指定信道的射频数据包,结合相关软件对数据包进行解码和显示,快速地发现并解决一些常见的问题[1],减少开发和测试的周期。
现有的无线数据包监听器大多仅能监听单个信道的数据,在采用跳频技术的通信协议进行开发时,如ISA100.11a、WIA-PA、WirelessHART等工业无线标准[2],需要同时监听多个信道的数据。为满足此类需求,本文提出了多路无线信道监听系统的设计,利用FPGA在数据获取方面良好的实时与并行控制性能,以IEEE 802.15.4[3]标准为基础,针对2.4 GHz频段开发了可以同时监听16路无线信道的系统。结合协议分析软件,可以为无线通信协议开发提供数据分析、辅助设计等服务,是一种极为有效的协议测试工具。
1 系统总体设计
多路无线信道监听系统由2.4 GHz无线RF接收器、FPGA和USB2.0接口单元等组成。无线RF接收器负责监听、封装无线数据报文并通过SPI传输至FPGA;FPGA作为整个系统的控制逻辑核心,完成数据的接收、缓存和USB2.0通信控制,USB2.0接口芯片FT2232H将数据高速传输至上位机,上位机采用C#语言开发,完成RF接收器参数的设置控制、数据分析和显示功能,多路无线信道监听系统组成框图如图1所示。
2 系统硬件设计
2.1 2.4 GHz无线RF接收器单元
系统采用16片2.4 GHz 无线收发芯片CC2530,其具有极高的接收灵敏度和抗干扰性能,支持IEEE 802.15.4标准,提供精确的数字化RSSI/LQI,同时内嵌了具有代码预取功能的低功耗8051微控制器内核,能高速处理无线数据报文,并拥有两路SPI通信模块和其他丰富的外设资源[4],16个CC2530的接收信道以5 MHz为间隔,平均分布在2 405 MHz~2 480 MHz之间。
图2所示为CC2530与FPGA连接示意图。采用一对一和多对一的方式分别传输数据和指令,避免总线竞争,提高了传输效率,其中CC2530的SPI0作为主机,负责将无线数据报文传至FPGA,SPI1作为从机负责接收来自FPGA的指令,如信道设置、数据传输设置等。
2.2 USB通信接口单元
系统采用FTDI公司的FT2232H芯片,由它完成数据采集控制及数据采集后与PC之间的高速数据传输。FT2232H支持480 Mb/s的USB2.0高速规范,其中USB数据传输细节全部封装在FT2232H内部,上位机提供虚拟串口VCP和D2XX两种驱动程序,免去了复杂的USB固件和驱动程序开发过程[5]。
图3为FPGA与FT2232H硬件连接示意图,采用同步245 FIFO模式[6],Clk是FT2232H的同步时钟信号,其频率固定为60 MHz,FPGA的主时钟由同步时钟3分频得到,ADBUS[7..0]为8位双向数据总线,因此最大传输速率可达160 Mb/s,nRXF和nTXE分别是FT2232H的读写标志位,nOE用于使能数据总线 ADBUS的输出,nRD和nWR分别是FT2232H的读写选通信号。
3 系统软件设计
3.1 CC2530程序设计
首先初始化RF、SPI等外设,2.4 GHz无线RF接收器处于监听状态,如果侦听到无线数据报文,就将其取出进行处理,添加报文头、长度、信道号、通道号、RSSI、校验位等信息,并通过SPI0传至FPGA,继续准备接收下一个无线数据报文。同时也可以根据所收到的上位机下发的命令来执行相应的操作:若收到设置信道的指令,则设置监听信道;若收到启动或者停止监听的指令,则开始或停止监听无线数据报文。程序流程如图4所示。
制可划分为5个模块,分别是数据接收模块、缓存模块、传输模块、命令输出模块、USB2.0通信模块。其中缓存模块主要由计数器、数据缓存和长度缓存三部分组成,计数器记录数据缓存现有报文数量,数据缓存记录报文数据,长度缓存记录每一报文的长度,数据缓存和长度缓存的实现是通过调用FPGA的IP核生成相应容量的FIFO来完成。
系统首先设置CC2530监听的信道并启动监听,一旦CC2530监听到无线数据,就将监听到的数据报文传至FPGA,FPGA将数据写入到数据缓存,同时计算报文的长度并将结果写入到长度缓存,计数器加1,当检测到计数器大于0时,先读取长度缓存获取报文长度,计数器减1,然后根据报文长度读取数据缓存,将读取的数据通过USB上传至PC,直到读取数量与报文长度相等时停止,继续检测下一路计数器,依次循环。FPGA逻辑控制的流程如图6所示。
4 系统测试
为了对多路无线信道监听系统功能进行有效的测试,搭建了一个由多路无线信道监听系统、16个ZigBee无线模块和PC组成的测试平台,并进行以下几项测试。
4.1 多路信道监听测试
将无线模块全部打开,让它们在各自的信道独立地发送测试报文,为了便于对测试结果进行分析,设置每个模块的发送时间间隔和报文内容都相同。图7所示为多路无线信道监听系统同时监听5路信道的结果,说明系统逻辑功能设计正确,能够同时监听多路信道,达到了系统的设计要求。
4.2 数据准确性测试
用协议分析软件和TI的Packet Sniffer同时采集数据包并实时解析各层字段,所得结果分别如图8和图9所示,对比两者的解析结果,发现协议分析软件解析所得的各层帧控制字段与TI的Packet Sniffer解析所得结果完全吻合,说明多路无线信道系统监听到的数据是正确的,达到了预期效果。
4.3 丢包率测试
将多个无线模块放到20 m处且每次发送报文长度为32 B进行测试,得到如表1所示的结果。
测试结果表明,20 m内丢包率小于0.33%。能真实再现网络运行情况,且每分钟发包数为1 500帧时,多路无线信道监听系统运行正常,满足实时监听的要求。
为满足工业无线标准开发和测试的要求,本文设计了基于FPGA的多路无线信道监听系统,利用FPGA在数据获取方面良好的实时与并行控制性能,实现了对16路数据的缓存与传输,并通过搭建的测试平台对其进行多项测试。测试结果表明,多路无线信道监听系统具有良好的实时性和可靠性。
参考文献
[1] 卢良进,徐向华,童超.无线传感网络协议分析技术研究与实现[J].传感技术学报, 2009,22(12):1828-1833.
[2] 曲家兴,周莹,王希忠,等.工业控制系统无线网络安全体系的研究[J].信息技术,2013(1):36-38.
[3] IEEE. IEEE Std 802.15.4-2006 Wireless Medium Access Control(MAC) and Physical Layer(PHY) Specifications for Low-rate Wireless Personal Area Networks(LR-WPANs)[S].2006.
[4] Texas Instruments.CC2530 Data Sheet. http://www.ti.com.2011.
[5] Future Technology Devices International Limited. Software Application Development D2xx Programmer’s guide[Z/OL].http://www.ftdichip.com.
[6] 荆成财,王顺杰,王润田. 双通道同步高速数据采集器的设计[J].电子产品世界, 2012(12):43-44.