1声通信实现原理
1.1物理层设计
物理层作为MAC(媒体接入控制)子层与空气声信道的接口,是传感器节点间进行声通信的基础。本系统参照IEEE802.15.4进行物理层的设计。物理层用于完成数据服务和管理服务。数据服务负责的工作包括:通过空气声信道发送和接收数据、声信号发送与接收的激活与休眠、检测声信道能量及接收数据包的链路质量、评估声信道空闲与否。管理服务则负责维护物理层中的相关数据组成的数据库。物理层载波调制中,载波采用频率为2940Hz的声波。调制方式采用DPSK(二进制差分移相键控),调制过程见图2,首先对协议数据单元中的比特数据进行差分编码,接着将1bit数据转换为15bit片序列(转换表见表1,转换的比特数据流进行DPSK调制后进入声信道[5]。物理层的数据帧结构同IEEE802.15.4,如表2所示。接收前导码期间,数据收发器通过识别前导码完成片同步与符号同步;作为物理帧的开始,设定帧起始分隔符(SFD)的值为0xA7;前导码接收完毕后,通过SFD完成位同步[6]。PHY负载负责承载MAC帧。
1.2声通信实现过程
考虑物理层设计,并结合传感器节点的硬件结构,声通信原理图见图3。发送数据时,CPU启动A/D转换,A/D模块将采集转换后的数据交由控制逻辑来进行空闲信道的判断,若信道空闲,控制CPU将数据经fifo送入控制逻辑,对数据按表2进行编帧,接着按图2所示进行DPSK调制,最后将调制好的数据经D/A转换、发送放大电路后驱动换能器将声信号发送出去[7]。接收数据时,CPU仍然先启动A/D转换,A/D模块将采集转换后的数据交由控制逻辑来判断信道中是否有节点传来信号,若有,则控制逻辑控制解调模块完成DPSK解调,依据前导码特征进行片同步和符号同步,通过SFD完成位同步,由物理帧头的帧长度计算物理层负载长度(不大于127个字节),从而获取解码后的数据,通知CPU通过解调数据FIFO读取数据。
2声通信程序设计
根据声通信的实现原理,设计声通信相关ARM程序(C语言)和FPGA控制逻辑部分的程序(VHDL语言),其工作流程图分别见图4和图5。编写ARM程序时,设计与声通信相关的程序为子函数,当选择通过声通信方式接收或发送数据时,调用这些子函数来完成数据的收发。子函数的参数包含三部分:接收或发送数据的控制字节、接收或发送数据的字节数、接收数据的存放地址或发送数据的起始地址。子函数主要负责接收和发送数据。程序设计时,还充分考虑了电能的损耗问题,只有在接收或发送数据时才控制电源管理模块开启协处理器模块和放大模块的电源,接收或发送数据完毕后又将控制关闭这两个模块的电源[8]。FPGA程序负责实现逻辑控制、声信号调制、解调、接收数据FIFO、发送数据FIFO等。控制逻辑部分是FPGA程序的核心部分,通过ARM程序的指令来完成数据的收发。发送数据时FPGA控制声信号调制部分调制数据流,并将调制后的数据发送到ARM的D/A模块;接收数据时FPGA信号解调部分读取ARM的A/D模块的数据并解调,将解调数据交给控制逻辑部分。
3声通信测试实验
本实验包含两种实验环境:室内环境和室外环境。室内环境为摆设着各类办公用品和家具的办公室,环境音量约为50dB,大小为9.6m×7m×3.1m;室外环境为空旷无明显障碍物的广场,环境音量约为40dB,大小为110m×65m。在不同的通信距离下,测试两个传感器节点间的通信误码率,结果见表3,在两个传感器间相聚3m时,不同波特率下的通信误码率见表4。
作者:邸丽霞 张彦军 刘文怡 单位:中北大学仪器科学与动态测试教育部重点实验室和电子测试技术国家重点实验室