蓝牙技术如何在无线基础上实现可靠通信

蓝牙设备能够在最具挑战性的环境中实现高度可靠的通信。蓝牙技术每一层的设计都考虑了可靠性并采用了多种技术来降低干扰概率。

近日,蓝牙技术联盟(SIG)的开发者关系经理Martin Woolley发布了一篇技术专题文章:了解蓝牙技术的可靠性。在这篇深入探讨蓝牙可靠性的文章中,Woolley解释了蓝牙技术如何在无线电的基础上建立可靠的连接。

以下内容摘自此专题文章。

在无线的基础上创造可靠性

蓝牙设备的通信效果非常好,原因在于蓝牙通信系统所使用的无线电及其协议等设计的诸多方面。

蓝牙技术是一个模块化的系统,而且可以配置不止一种堆栈。

智能手机和可连接的外围设备包含一个低功耗蓝牙(Bluetooth LE)控制器,其主机组件支持通用接入配置文件(GAP)和通用属性配置文件(GATT)以及属性协议(ATT)和安全管理协议(SMP)等协议。图3a显示了这种堆栈配置。

支持GAP/GATT/ATT低功耗蓝牙的堆栈配置
图3a - 支持GAP/GATT/ATT低功耗蓝牙的堆栈配置

蓝牙mesh网络设备也包含一个低功耗蓝牙控制器,而主机部分将包含蓝牙mesh网络协议堆栈的各层。图3b描绘的是一个蓝牙mesh堆栈。

支持蓝牙mesh网络的堆栈配置
图3b - 支持蓝牙mesh网络的堆栈配置

无论堆栈配置如何,每一层都有明确的职责和向上下相邻层传递数据的方法。蓝牙技术中用于减轻或降低特定类型潜在可靠性问题概率的特征存在于堆栈的各个部分中。有些此类机制适用于蓝牙技术的所有可能用途,有些则只适用于特定的情景。

一般适用特征和缓解技术

我们先从蓝牙技术提升可靠性的特征开始讲解,这些特征普遍适用于所有情景。图4所示的是一个蓝牙空中接口数据包(air interface packet)示例。

包含ATT PDU的蓝牙数据包示例
图4 – 包含ATT PDU的蓝牙数据包示例

蓝牙调制方案

蓝牙技术的可靠性始于最基本的问题 —— 如何使用无线电作为数字数据的载体。在蓝牙协议堆栈中,这些问题在物理(PHY)层处理。

物理层必须处理的主要问题之一是能够识别蓝牙无线电传输并正确提取信号中的编码数据。这绝对是实现可靠性过程中最基本的一步。

无线电是一种模拟物理现象。物理学家通常用波来模拟无线电信号。无线电波拥有电磁能量,并具有振幅、波长和频率等一系列基本特性(请参见图5和图6)。如之前所述,利用波的基本特性以某种方式编码信息的策略称为调制方案。目前有很多调制方案。有的利用信号的振幅变化;有的利用无线电相位进行信息编码,有的则利用频率变化。

当可靠性成为无线电通信系统的一个重要设计目标时,就能发现有些调制方案优于其他方案。基于振幅的调制方案在一定程度上容易受到噪声的干扰,而基于频率的方案在这方面则不那么容易受到干扰。

包含ATT PDU的蓝牙数据包示例

图5 - 基本波属性

基本波属性
图6 - 频率

蓝牙技术采用一种特殊的二进制频移键控调制方案,这被称为高斯频移键控(Gaussian Frequency Shift Keying,GFSK)。之所以称之为二进制调制方案,是因为每个符号只代表一个数位,其值为0或1。

二进制频移频键控通过选择一个中心频率(即载体),然后根据给定的频率偏差将其上移以表示1,或根据该频率偏差下移以表示0,从而对数字数据进行编码。蓝牙核心规格中规定了允许的最小频率偏差大小,同时后者取决于所选择的符号速率。在低功耗蓝牙中,符号速率为每秒1或2个百万符号(Msym/s)。1Msym/s符号速率的规定最小频率偏差为185kHz,较快符号速率的最小频率偏差为370kHz。应仔细选择这些数值,以帮助可靠识别在信号中编码的1和0。

根据定义,在频移键控(Frequency shift keying,FSK)调制方案中,每当符号值发生变化时,频率都会发生变化。频率的突发瞬时变化会产生噪音,而噪音会造成干扰。此外在实际电路中可能出现信号意外溢出至其他频率的频谱泄漏,使接收器的解码任务变得更加困难。

蓝牙技术通过使用高级FSK调制方案GFSK来降低干扰。GFSK修改了标准的FSK方法,加入了一个高斯滤波器,使频率转换变得平滑,因此噪声更小、频谱宽度更窄,减少了对其他频率的干扰。

前导码

所有低功耗蓝牙数据包中的第一个字段被称为前导码(preamble)。前导码长8位,包含一个二进制1和0的交替模式。其用途是为接收机提供可以用来寻找剩余数据包中用于编码数字1和0的频率的材料。它还被优化信号强度的无线电自动增益控制所使用。

准确确定信号中使用的频率并将无线电的参数设置到最佳状态是保证可靠接收数据包的第一步。

访问地址

当蓝牙控制器正在监听某个通道的数据时,它将接收该通道定义的频率范围内的所有无线电信号。所接收的信号可能是:

· 发送到该设备的蓝牙数据包

· 原本未计划发送给该设备的蓝牙数据包

· 与其他无线通信技术有关的数据包(在同一ISM频段内运行并使用当前正在被扫描的蓝牙无线电通道的频率)

· 背景噪音

蓝牙控制器必须能够区分这些信号,并准确选出对发送到该设备的蓝牙数据包进行编码的信号。任何其他信号必须被忽略。

所有蓝牙数据包都包含一个32位访问地址(access address),该地址可以帮助在最短的时间内迅速挑选出来是蓝牙的信号,其他信号可以立即被丢弃。

访问地址有两种类型。广播访问地址(advertising access address)为固定值0x8E89BED6,大多数广播包都使用这个地址。之所以选择这个数值,是因为它具有良好的相关性。相关性是用于识别信号中特定模式的数学程序。

在两个相连设备通信过程中交换的数据包包含一个访问地址,该地址包含一个由链路层分配的值,该值是所有与该连接相关的数据包的唯一识别符。这些生成的访问地址值大部分都是随机的,但受制于提高访问地址识别可靠性的附加规则。

与定期广播链(periodic advertising)和同步广播串流(Broadcast Isochronous Streams,BIS)有关的数据包都有一个唯一的访问地址。通过访问地址可以选择与接收设备相关的信号。蓝牙协议堆栈的链接层负责检查访问地址。

由于访问地址的长度为32位,将随机背景电磁噪声误认为蓝牙信号的概率极小。在极少数的情况下,随机背景噪声模式与接收器相关访问地址会匹配,那么就将通过进一步的位流处理迅速确定它不是一个有效的蓝牙数据包。

仅快速选择相关信号并丢弃其他信号是蓝牙接收器运行的另一个关键步骤,有助于实现可靠的通信。

循环冗余检查

所有蓝牙数据包都包含一个循环冗余检查(Cyclic Redundancy Check,CRC)字段,该字段出现在数据包的末端或附近。CRC是一种常用机制,用于检测由于冲突等问题导致传输数据被无意改变的情况。

当链路层制定一个新的数据包时,通过对数据包中的其他位应用CRC算法计算出一个CRC值。然后将结果的24位值加到数据包中。在接收数据包时,接收设备中的链路层重新计算CRC,并将结果与接收数据包中包含的CRC值进行比较。如果两个值不一样,则断定传输数据包中的一个或多个数位被改变,并且数据包被丢弃。

应该注意的是,CRC并不是一种安全机制,这是因为数据包可能被故意改变,而且CRC可能被轻易地重新计算。

频率
图7 – 带有MIC字段的加密低功耗蓝牙数据包

信息完整性代码

低功耗蓝牙数据包可以被加密。所有的加密数据包都包括一个称为消息完整性检查(Message Integrity Check,MIC)的字段。MIC其实是一种信息验证码(Message Authentication Code,MAC),但由于MAC的缩写在通信领域还有其他用途,所以在蓝牙规格中使用的是MIC。

MIC本身并不是一种可靠性功能。它是一种安全功能,用于检测故意篡改数据包内容的企图。但由于在可靠性的非正式定义中,所传输的数据应是被接收的数据,并且我们承认可能会发生无意或故意的更改,因此考虑到完整性,我们把它加入到其中。

毕竟,不安全的通信怎么可能是可靠的通信呢?

扩频率(Spread Spectrum)

蓝牙技术使用2.4GHz ISM无线电频段。2.4 GHz ISM并未定义一个单一的频率,而是定义了一个频率范围,在这里是从2400 MHz开始,到2483.5 MHz结束。当与低功耗蓝牙一起使用时,这个频率范围将被划分为40个通道,每个通道宽2MHz。蓝牙BR/EDR将其分为80个1MHz宽的通道。

每个通道都有编号,第一个是通道0。通道零的中心频率为2402 MHz,划定通道零的最低频率与ISM 2.4 GHz频段的起始频率之间留有1 MHz的空隙。通道39的中心频率为2480MHz,与ISM 2.4GHz频段的末端留有2.5MHz的空隙。

图8描述的是将ISM频段划分为低功耗蓝牙所使用的无线电通道。请注意,通道号(channel number)按照0到39的顺序递增,而通道指数(channel index)通过一种略微不同的方式分配至ISM通道集。

带有MIC字段的加密低功耗蓝牙数据包
图8 – ISM 2.4 GHz频段内的低功耗蓝牙通道

通过蓝牙技术进行数据通信需要使用一个以上的无线电通道。多个无线电通道的使用使蓝牙通信在繁忙的无线电环境中具有很高的可靠性。在这种环境中很可能发生冲突和干扰。

这种使用多个频率的方法被称为扩频技术。蓝牙也属于一种扩频无线通信技术。扩频技术在不同情况下的应用细节各不相同。

解决共存和合用问题

一些不同的无线电技术会同时使用同一无线电频段,这会带来潜在的挑战。一种技术可能会干扰另一种技术的传输,尤其是发生冲突(collision)。此类问题统称为共存(coexistence)问题。蓝牙技术、Wi-Fi、无绳DECT电话甚至微波炉都在2.4 GHz ISM频段工作,因此这些技术和设备类型之间可能存在共存问题。

蓝牙主要通过使用扩频技术来解决共存问题。在连接两个设备时,可通过让蓝牙在该场景中使用扩频技术这一特殊方式实现更高的可靠性。

合用(Collocation)指在同一设备中存在一个以上的无线电,而且每个无线电支持不同的通信技术或技术组。同一设备中的不同无线电设备之间存在干扰范围。长期演进(Long-Term Evolution,LTE)无线电用于4G移动电话系统,可以在与2.4 GHz ISM频段相邻的频段中工作,这就会产生潜在的问题,比如在一个无线电发送时阻止另一个无线电接收。大多数合用问题不属于蓝牙核心规格本身范畴,但规格会向实施者提供建议。缓解措施包括使用滤波器减少无线电之间的干扰和建议实施者对无线电时间段进行排程。

无线电时间段排程是一个复杂的问题,涉及到确定何时可以使用和不可以使用无线电。排程的一些方面属于蓝牙核心规格范畴。与其他无线电搭配所产生的问题以及其他考虑因素和限制因素,如操作系统可能施加的限制因素等,则不属于这一范畴。已定义一个被称为槽位可用性掩码(Slot Availability Masks,SAM)的特征,它允许两台蓝牙设备互相提供关于哪些时间段可以使用的信息。根据这些信息,可以优化每个设备的排程,避免发生合用干扰的时间段。

低功耗蓝牙编码的物理层

低功耗蓝牙提供三种不同的无线电使用方式。这三种方案是物理层的一部分,每一种都以缩写PHY来表示。这三种定义的物理层是: 

· LE 1M – 1 Msym/s符号速率

· LE 2M – 2 Msym/s符号速率

· LE Coded – 1 Msym/s符号速率,带前向纠错(FEC)

LE Coded PHY增加了接收器的灵敏度,因此在接收器与发射器的距离比LE 1M PHY更大时才会出现0.1%的误码率。在使用LE Coded时,参数S被设置为2或8。当S=2时,LE Coded的可靠通信范围大约增加一倍。当S=8时,范围约为四倍。

在不增加传输功率的情况下,LE Coded PHY通过在每个数据包中加入额外的数据来实现更远距离的可靠通信,这使得错误既能被检测到,又能通过一种被称为前向纠错(Forward Error Correction)的数学技术进行纠正。但伴随范围增加的是数据速率的降低,S=2的数据速率为500 Kb/s,S=8的数据速率为125 Kb/s。

LE Coded PHY的主要用途是增加范围,但它是通过降低较低信号强度下的误码率来实现这一目标,因此较长距离的通信也有足够的可靠性。

本文转载自:蓝牙技术联盟