低成本精简版BLE5.0 MAC 协议硬件设计与实现

2022-09-14 08:20丁福建刘倩芸王钢刘文文林敏
电子设计工程 2022年17期
关键词:状态机物理层精简

丁福建,刘倩芸,王钢,刘文文,林敏

(上海大学通信与信息工程学院特种光纤与光接入网重点实验室,上海 200444)

蓝牙自提出的23年以来,已成为普适计算以及物联网(Internet of Things,IoT)应用程序中的一种广泛使用的技术。低功耗蓝牙(Bluetooth Low Energy,BLE)信标作为其中的重要部分,在IoT 开发中极具发展前景,现已部署上亿BLE 信标设备[1]。

由于低成本、低功耗等突出优势,低功耗蓝牙信标已被广泛地用于IoT 中,例如商场中通过信标发送优惠券、通过信标使用指纹识别定位BLE 设备、博物馆指导、室内定位与跟踪、帮助盲人和残疾人、管理智能家庭等[2]。苹果公司推出的iBeacon 和谷歌公司推出的Eddystone 使用BLE 的不可连接广播作为信标[3-4]。它们均使用标准的BLE MAC 层协议作为其BLE 信标设备控制器的MAC 层解决方案。但这种解决方案在BLE 信标的使用场景中却存在一些问题,传统广播(Legacy Advertising)的通信范围较小,无法满足远距离传输的要求,冗余的功能会增大硬件资源的消耗,因此需要提出更符合实际应用的定制化MAC 层协议。

该文针对iBeacon、Eddystone 的应用场景,在BLE5.0 标准MAC 层协议的基础上提出了一种精简的低功耗蓝牙MAC 协议,为BLE 信标设备提供了低成本、低功耗、4 倍广播距离的MAC 层实现方案。

1 协议设计

1.1 协议功能设计

低功耗蓝牙MAC 层协议的状态机如图1(a)所示,有就绪态、广播态、扫描态、发起态和连接态五个状态[5]。在该文协议的应用场景中,信标设备会以固定的时间间隔向周边的信标接收设备发送携带少量信息的广播。由于一个只发广播的设备无需切换到标准协议下的扫描态、发起态和连接态,因此协议的状态机可以简化为图1(b)所示的状态机,其中只含就绪态和广播态两个状态。

图1 状态机对比

随着状态机的改变,精简MAC 层协议的功能在BLE5.0 标准协议的基础上也应做出相应改变。在多状态机的处理上,BLE5.0 标准协议需要对不同状态机下的事件进行调度和状态跳转,而该文协议只需保持在广播态下工作,进行定时广播,无需调度其他事件。

在帧处理方面,BLE5.0 MAC 层需要设计数据发送和接收子系统,对发送和接收的数据进行处理。而精简协议由于只发送广播不进行接收处理,在设计时只需数据发送子系统完成比特流的处理即可,其中包括组帧、产生CRC 校验位、数据白化和编码等模块。因此BLE5.0 标准协议中所需的AES-128 加密、过滤机制、白名单、确认与流控、FEC 解码器和跳频算法等有关接收处理和连接状态下的功能模块可以移除。

经重新设计后,精简MAC 层协议在硬件实现时只需按主机的需要定时发送广播事件以及设计发送子系统模块、系统总线和物理层接口等相关模块。

1.2 远距离广播帧设计

在BLE5.0协议中,连接态和扩展广播的4倍通信范围是在1 Mbps速率编码的物理层(LE_Coded_PHY)下实现的,MAC 层对帧内字段进行卷积码编码和模式映射,从而提高接收机的抗干扰能力。在其中采用约束长度为4,编码速率为1/2 的(2,1,3)卷积码编码器和s=8 的映射方式,卷积码编码器生成多项式如式(1)和式(2)[6-7]:

该文为实现long-range 传统广播功能并且与标准协议兼容,使用与BLE5.0 标准协议相同的(2,1,3)卷积码编码器和模式映射方式,除此外还对传统广播的帧结构进行更改。传统广播的帧结构如图2(a)所示,由前导码(Preamble)、接入地址(Access Address)、负载报头(Header)、负载(Payload)和CRC 校验位组成。在实现传统广播时使用标准协议的帧结构,不做改动;long-range 广播帧则在传统广播帧结构的基础上添加新字段,在帧结构中加入编码指示(CI)字段、编码终止1(TERM1)和编码终止2(TERM2)字段,如图2(b)所示。

图2 广播帧帧结构

long-range 广播帧结构分为前导码、接入地址、由Header 和Payload 组成的协议数据单元PDU(Protocol Data Unit)、校验位和3 个编码指示字段共五部分。其中前导码不进行卷积码编码,在LE_Coded_PHY 下长度为80 个符号,由00111100 序列重复十次得到;接入地址为固定值0x8E89BED6;编码指示(CI)长度为2 bits,用于指示编码块2 的模式映射方式;编码终止1(TERM1)字段长度为3 bits,是编码块1 的编码结束标志位;编码终止2(TERM2)字段长度为3 bits,是编码块2 的编码结束标志位。

2 模块化设计

2.1 协议模块结构

根据协议的状态机和功能,该文所设计的MAC层整体架构如图3 所示,由MAC 顶层状态机、TIMER、发送子系统、随机数生成模块、信道选择模块、TX_RAM、寄存器、AHB_SLAVE 端口和物理层接口九部分组成,其功能如下:

图3 MAC层整体架构

1)AHB_SLAVE与处理主机MCU的AHB_MASTER端口相连,将上层主机的数据进行解码后对寄存器内的值进行修改,并将需要发送的数据存在TX_RAM 中;

2)MAC 顶层状态机根据上层主机写入寄存器中的配置信息,对MAC 层的状态和其他硬件模块进行控制;

3)TIMER 包含负责调度MAC 层事件的活动计时器和睡眠计时器;

4)信道选择模块用于广播信道的切换;

5)发送子系统负责帧的比特流处理;

6)物理层接口与物理层相连,提供物理层所需要的控制信号。

发送子系统模块对发送帧的比特流处理过程如图4 所示,发送状态机根据上层的配置,生成对其他模块进行控制的使能(enable_signal)、选择(sel_signal)、有效信号(valid_signal)和帧内的数据字段(pack_data);序列化模块由发送状态机的有效信号和使能信号控制,对TX_RAM 中的数据进行序列化处理;CRC 模块对PDU 进行处理,生成24 bits 的校验位[8];白化模块是一个7 bits 的线性反馈移位寄存器;卷积码编码器仅在LE_Coded_PHY下使用,对帧内的编码块进行卷积码编码和模式映射[9-10]。

图4 发送帧的比特流处理

比特流处理按以下流程进行:

1)发送状态机根据主机的配置生成控制信号和Header;

2)序列化模块串行化TX_RAM 中的Payload 后与Header 组成PDU;

3)送至CRC 模块生成校验位;

4)将PDU 和CRC 校验位输入到白化模块进行白化处理(增加白噪声,避免过长的连0 或连1);

5)白化后的数据在卷积码编码映射模块中,根据编码使能信号(encoder_en)、编码速率(encoder_rate)和编码指示(ci)等信号决定对编码块进行编码和模式映射的方式[11]。

在发送子系统模块中完成MAC 帧的比特流处理和组帧后,MAC 顶层状态机根据计时器(TIMER)中的定时信息,将MAC 帧通过物理层接口发送至物理层,由物理层对MAC 帧进行调制。MAC 层的整体处理流程图如图5 所示。

图5 MAC层处理流程图

2.2 RTL级实现与仿真

2.2.1 方案设计

RTL 级实现是用寄存器来描述电路的数据流方式,Verilog-HDL 代码必须满足可综合的设计需求。在该文的仿真实验中,联合BLE5.0 的物理层和射频模块进行协同仿真,在一套较为完善的通信系统中对精简MAC 层协议进行仿真验证。

在仿真中,该文所设计的精简MAC 层协议作为仿真中的广播设备进行广播,定时发送广播事件;扫描设备对广播帧进行扫描并解析。为验证该文所设计的long-range 广播功能,扫描设备增加了在LE_Coded_PHY 下对37、38 和39 号广播信道进行扫描的功能,以便对long-range 广播进行接收和比特流的处理。

2.2.2 仿真结果分析

以广播设备发送long-range 广播帧的仿真结果为例,图6(a)是广播设备在LE_Coded_PHY 下发送不可连接long-range 广播的MAC 层部分信号仿真结果图,MAC 层中的数据经过比特流处理后得到longrange 广播帧(o_pp_tx_data_out 信号),再以一定的广播间隔发送。

图6(b)为扫描设备在LE_Coded_PHY 下扫描long-range 广播帧,并解析出帧内各个字段的仿真图。扫描设备解析出接收到的帧为一个不可连接的广播帧;广播地址为0x0000_0000_1234;负载数据为0xd609;帧内各个字段的错误标志信号(*_err)均为低电平。仿真表明接收到的不可连接long-range 广播帧的各个字段均正确,且解析出的帧内信息与广播设备发送的相同。

图6 long-range广播帧仿真图

结果显示,精简MAC 协议层的long-range 广播帧通过物理层调制,经射频模块发送出去后,扫描设备的射频模块、物理层和MAC 层能够正确地接收、解调并将帧内的各个字段和负载信息正确地解析出来,由此验证了协议的long-range 广播帧远距离通信的可行性。对于BLE5.0 中的其他类型广播功能该文均已实现,由于篇幅有限,未将仿真结果呈现。

3 FPGA验证与分析

3.1 验 证

3.1.1 验证平台与流程

为验证所设计的协议在电路上是否能够实现,还需要对精简MAC 层协议进行FPGA 验证。使用PC 和芯片型号为Zynq-7035 的FPGA 板进行联合测试[12-13]。

图7为该文所设计的FPGA验证平台,主要由PC、开源的UDP 协议和被测的精简MAC 层协议组成[14]。其中PC 作为上位机,其IP 地址设为192.168.10.2,FPGA 板 的IP 地址 设为192.168.10.1;FIFO1 用于存储UDP 协议解析出的负载数据;MAC(ADV)为被测的精简MAC 层协议,为一个广播设备;MAC(SCAN)为处理广播帧的扫描设备;控制模块(Control &FIFO2)作为广播设备与扫描设备之间的接口;FIFO3 可存储扫描设备解析出的负载数据。

图7 FPGA验证平台

在测试过程中,PC 会将广播帧的负载数据写在UDP 报文的负载中,通过以太网发送到FPGA 板上,由UDP 协议解析出其中的负载数据并存入FIFO1中;当FIFO1 中的数据量达到预设值时,广播设备读取FIFO1 中的数据并进行MAC 层配置和比特流处理;组帧完成后发送到FIFO2 中,并产生相应的控制信号;扫描设备根据控制模块的控制信号,读取FIFO2 中的广播帧并进行解析,将解析出的负载数据存在FIFO3 中;UDP 协议读取FIFO3 中的数据,存在UDP 报文负载中,发送至PC 进行对比。通过判断处理后的数据与发送的是否一致,以此验证MAC 层功能的正确性。

3.1.2 FPGA验证结果分析

为使分析结果更加直观,该文使用特定ASCII 码对应的十六进制数作为待处理数据。上位机发送的数据ASCII 码000000001234shushushushushushushu shu 对应的十六进制数,这些数据作为UDP 报文的负载,通过以太网发送到FPGA 板。0000_0000_1234是广播设备的广播地址,shushushushushushushushu为负载数据。

在验证过程中,使用Python 脚本向FPGA 板发送UDP 报文[15-16]。UDP 报文经过UDP 协议、广播设备(被测协议)和扫描设备处理后再通过FPGA 板上的UDP 协议发向PC 端,在此期间PC 端使用xcap 软件进行抓包。图8 是UDP 报文的负载,也就是扫描设备解析后得到的广播地址和负载数据,其中分号左侧阴影部分为十六进制数据,分号右侧为十六进制数对应的ASCII 码值。经过对比,上位机Python 脚本发送的广播地址和负载数据与xcap 抓包软件所接收的数据相同,并且IP 地址也对应。通过以上实验可验证精简MAC 层协议RTL 级设计的正确性。

图8 PC接收到的UDP包

3.2 FPGA资源分析

该文在Vivado 2018.3,芯片型号xc7z035ffg-676-2的实验环境下进行FPGA 综合[17]。该文提出协议综合后,使用了5 641 个LUT、11 076 个FF 和124 个IO;BLE5.0 标准协议使用12 751 个LUT、14 646 个FF、1 个DSP 和156 个IO。由于传统广播是不进行加密的,标准协议在不考虑AES-128 模块的情况下,使用8 206 个LUT、12 414 个FF、1 个DSP 和134 个IO。

表1 中列出了除去RAM(3 种情况下RAM 均设为1 kbytes,占 用FPGA的资源为2 176 个LUT 和8 256 个FF)情况下FPGA 综合后的资源对比。该文所提出的精简MAC 层协议只使用了FPGA 上的LUT和FF 两种资源。经计算,在不包含RAM 的情况下,与加密的BLE5.0 标准协议相比,该文提出的协议可以节省67.2%的LUT、55.9%的FF 和1 个DSP 单元,比不加密的BLE5.0 标准协议节省42.5%的LUT、32.2%的FF 和1 个DSP 单元。

表1 协议占用资源

4 结论

该文根据iBeacon 和Eddystone 的使用场景提出一种低成本、远距离、低功耗的精简BLE5.0 MAC 层协议。通过RTL 级的仿真实验,验证了协议的longrange 广播功能和标准协议的广播功能;使用FPGA在实际电路中对该文提出的MAC 层协议的逻辑设计进行验证。在通信距离上,通过对广播帧的编码和模式映射,可超过传统广播4 倍;在FPGA 资源的消耗上,该协议与加密的BLE5.0MAC 层相比,节省了67.2%的LUT、55.9%的FF 和1 个DSP 单元,与不加密的BLE5.0MAC 相比,FPGA 资源节省了42.5%的LUT、32.2%的FF 和1 个DSP 单元。

猜你喜欢
状态机物理层精简
基于K-ML-MPWFRFT的物理层安全传输技术
基于区域分割的多视角点云精简算法
FPGA状态机综合可靠性探究 ①
很美,很暖,很享受 Unison Research(优力声) MAX Mini书架音箱 Simply Italy精简意大利真空管合并放大器
公路联网电子不停车收费系统路侧单元物理层自动测试软件研发
基于有限状态机的交会对接飞行任务规划方法
基于Spring StateMachine的有限状态机应用研究
一种面向应用的流量监测精简架构设计
一种应用于5G基于LDPC码的物理层包编码
卫星通信物理层安全技术探析