第一周工作总结——BLE: PHY & MAC

来源:互联网 发布:sacd播放软件 编辑:程序博客网 时间:2024/05/17 04:41

1. 总述

苹果的IBeacon协议基于蓝牙4.0协议中的BLE实现,因此在分析IBeacon之前,适当学习BLE协议是必要的,其中最重要的就是BLE的PHY层和MAC层协议。在PHY层,BLE采用了GFSK调制信号。在MAC层,BLE完成了packet的构造。这些内容将是本文介绍的重点。

2. BLE物理层

2.1 BLE工作频率和信道分配

BLE在2.4GHz ISM频段上工作,频率范围为2.400~2.4835GHz,其将这段频带分为40个带宽为2MHz的信道,其中第k个信道的中心频率计算如下:
f_{k} = 2402 + k * 2MHz, k = 0,..,39.

2.2 GFSK

2.2.1 基础知识
BLE采用GFSK调制,GFSK源于FSK,其基本思想是通过改变载波频率来携带调制输入符号。以2FSK为例,其输入符号为0和1,通过在输入0时将载波频率减小,在输入1时将载波频率增大,调制信号就携带了原始的数据信息。对于FSK而言,其输入的01序列(其中0被映射为-1)可以被看作方波,若在调制之前对该方波进行高斯滤波,用滤波结果进行频移键控,那我们就得到了GFSK。更多介绍参见文章Implementation of Digital Signal Processing: Some Background on GFSK Modulation。

GFSK调制的参数主要有两个:一个是Modulation Index h,其控制了载波相位的变化速度,进而控制了GFSK的频偏程度;另一个是Bandwidth-Bit period Product BT,其用于确定高斯滤波的具体参数。在BLE中,h取值为0.45~0.55,BT取值为0.5。
2.2.2 GFSK在Gnuradio中的实现
Gnuradio并未采用编写独立的GFSK调制解调模块,而是利用已有的模块组合实现了GFSK调制解调功能,代码在gr-digital/python/digital/目录下,名称为gfsk.py。

其中调制模块主要由三部分组成,分别为:将二进制比特转化为非归零码,高斯滤波以及频移键控。而解调模块包括两部分:解调和时钟恢复。

2.3 符号速率和采样率

BLE的符号率是1Mbauds,而其并未规定采样率。GFSK正常工作要求每个符号的采样数至少在两个以上。在老师的建议下,我们确定每符号的采样数为8。

3. BLE MAC层

3.1 概述

BLE设备有5种工作状态,其中一种是Advertising,IBeacon设备就工作在这种状态,因此本文只涉及和Advertising相关的MAC层协议内容。发射BLE Packet时,除了CRC以外的其它部分均从小端开始传输,而CRC则从大端开始传输。设备地址是BLE Packet中的一个重要部分,协议规定了设备地址的长度为48bit,地址规范不再赘述。BLE将40个物理信道中的3个作为Advertising信道,分别是0,12,39,其对应索引号为37,38,39。

3.2 包格式


BLE MAC层的包格式如上图所示,其中Preamble用于同步发射机和接收机的载波频率和时钟,长度为8bit。在Advertising模式中,Preamble取值为10101010b;Advertising模式下的Access Address域的取值为10001110100010011011111011010110b(0x8E89BED6);PDU域即BLE Packet的协议数据单元,其基本格式为16bit Header加上0~37byte的Payload。Header中包含了Length域用于指示Payload的长度,Type域则用于指示PDU的类别。对于IBeacon使用的ADV_IND PDU而言,Payload中的前6个byte是发射机的设备地址,其后则是上层协议的数据。CRC域由PDU计算得到。

3.3 数据处理流程

Advertising Packet PDU的比特流处理流程主要包括两步,第一步是计算PDU的CRC;第二部是做Data Whitening,即进行扰码操作(scramble),通过将PDU的数据比特与伪随机序列进行模二和消除代调制序列中的长0或长1序列,这些序列会造成接收机的直流偏执,影响信号接收。


1 0
原创粉丝点击