本文深入剖析低功耗蓝牙中 LE 编码物理层的数据包格式,涵盖前导码、接入地址、编码指示符、协议数据单元、循环冗余校验以及 TERM1 和 TERM2 等关键组成部分的定义、用途及特点。
一、概述 LE编码物理层的数据包格式被定义为适用于所有物理通道上的数据包,其格式如图2.3所示。
每个数据包由以下三部分组成:
前导码(Preamble) :前导码是未进行编码的。它的作用是帮助接收器同步并准备接收接下来的数据包。
前向纠错(FEC)块1 :这个块由三个字段组成:
这三个字段都使用S=8的编码方案。
访问地址(Access Address) :用于标识数据包的目的地或类型。编码指示器(Coding Indicator, CI) :这个字段决定了FEC block 1使用的编码方案。TERM1 :这是一个终止字段,用于标识FEC block 1 的结束。 前向纠错(FEC)块2 :这个块也由三个字段组成:
FEC block 2的这三个字段使用S=2或S=8的编码方案,具体使用哪种方案取决于CI字段的值。
协议数据单元(PDU) :包含实际的数据信息。循环冗余校验(CRC) :用于检测数据传输中的错误。TERM2 :这是另一个终止字段,用于标识FEC block 1 的结束。 整个数据包使用1 Msym/s(每秒百万符号) 的调制速率进行传输。表2.1列出了数据包各字段的大小和持续时间。数据包的传输时间介于462微秒到17040微秒 之间。
另外,值得注意的是,在LE编码物理层上,没有使用恒定音调扩展(Constant Tone Extension )。
二、前导码(Preamble) 在通信系统中,前导码是一个重要的组成部分,它通常用于同步、信道估计或标识帧 的开始。前导码由80个符号组成,且这80个符号是由某个单一符号重复10次构成的。这种设计有几个目的:
同步 :接收端可以通过检测这个重复的模式来确定发送的起始点,从而实现时间同步。信道估计 :通过接收到的前导码信号,接收端可以估计出信道的特性,这对于后续的解调过程非常重要。帧标识 :前导码也可以作为一个帧的开始标识,告诉接收端一个新的数据帧即将到来。2.1. 符号重复的好处 使用同一个符号的多次重复有几个好处:
提高检测可靠性 :重复的模式使得接收端更容易从噪声中区分出信号,从而提高同步的准确性。简化设计 :使用简单的重复模式可以减少设计的复杂性,特别是在资源受限的系统中。兼容性 :在某些系统中,特定的前导码模式可能已经被广泛接受和使用,因此采用相同的模式可以确保与其他设备的兼容性。2.2. 应用场景 这种类型的前导码设计在许多通信系统中都有应用,包括但不限于:
蓝牙 :蓝牙通信使用前导码来标识数据包的开始,并实现同步。Wi-Fi :在Wi-Fi通信中,每个数据包都以一个特定的前导码开始,用于同步和信道估计。其他无线通信协议 :许多无线通信协议都采用了类似的设计,以确保数据的可靠传输。 前导码是通信系统中一个非常重要的组成部分,它通过使用重复符号的设计来提高同步的准确性和可靠性,从而确保数据的正确传输。
三、接入地址(Access Address) 在无线通信协议中,接入地址(Access Address)是一个特定的标识符,用于区分不同类型的通信帧或数据包。
3.1. 定义与用途 接入地址在无线通信中扮演着重要角色,它通常用于标识一个特定的通信会话、连接或数据包。通过检查接入地址,接收端可以确定数据包是否属于它应该接收的会话或连接。
3.2. 固定与随机值 固定值 :在某些通信协议中,接入地址可能被固定为一个特定的值。例如,在某些广播通道中,接入地址可能是一个固定的、预定义的标识符,用于标识该通道的所有通信。随机值 :在其他情况下,接入地址可能是随机生成的。这可以增加通信的安全性,因为每个数据包或会话都使用不同的接入地址,使得攻击者更难以预测或拦截通信。3.3. 接入地址的重要性 同步与识别 :接入地址有助于接收端同步和识别数据包。通过检查接入地址,接收端可以确定数据包是否属于它应该接收的会话或连接。安全性 :在使用随机接入地址的情况下,接入地址可以增加通信的安全性。由于每个数据包或会话都使用不同的接入地址,攻击者更难以预测或拦截通信。错误检测 :如果接收端检测到数据包的接入地址与预期不符,它可能会丢弃该数据包,从而避免处理错误的数据。 接入地址在【空口数据包】详解(1):未编码物理层的数据包格式 第三节中有具体说明,详见https://blog.csdn.net/weixin_37800531/article/details/143461709
接入地址在无线通信协议中扮演着重要角色。它用于标识和区分不同类型的通信帧或数据包,并有助于确保数据的正确传输和接收。同时,通过固定或随机生成接入地址,还可以增加通信的安全性和可靠性。
四、 编码指示符(Coding Indicator) 在无线通信和数据传输协议中,编码指示器(Coding Indicator,简称CI)是一个重要的字段,它用于指示当前数据包所使用的编码方案。这个字段对于接收端正确解码接收到的数据至关重要。
4.1. 定义与用途 编码指示器是一个两位的比特字段,用于告知接收端当前数据包采用了哪种编码方案。不同的编码方案可能具有不同的错误检测、纠正能力和数据传输效率。因此,正确识别编码方案对于确保数据的完整性和可靠性至关重要。
下表列出了编码指示器(CI)的比特位的具体含义:
这里描述了两种不同情况下前向纠错(Forward Error Correction,简称FEC)编码块2(FEC Block 2)所使用的编码方案。这些编码方案是通过编码指示器(Coding Indicator,简称CI)的值来区分的,其中CI的值由两个比特位组成。
0b00 : CI值为0b00时,表示FEC编码块2使用S=8的编码方案进行编码。 S=8通常意味着较高的编码冗余度,这可以提供更强的错误检测和纠正能力。这种编码方案适用于需要高可靠性的通信场景,因为它能够容忍更多的传输错误。 0b01 : CI值为0b01时,表示FEC编码块2使用S=2的编码方案进行编码。 S=2表示较低的编码冗余度,这通常用于换取更高的数据传输效率。在对数据传输速度有较高要求,但对错误容忍度相对较高的场景中,这种编码方案可能更为合适。 4.2. CI的重要性 编码方式选择: 选择适当的编码方案对于确保通信的可靠性和效率至关重要。较高的编码冗余度(如S=8)可以提供更强的错误检测和纠正能力,但可能会降低数据传输效率。较低的编码冗余度(如S=2)可以提高数据传输效率,但可能会降低通信的可靠性。因此,在选择编码方案时,需要根据具体的通信需求和场景进行权衡。正确解码 :编码指示器允许接收端根据发送端所使用的编码方案来正确解码数据。如果接收端错误地假设了编码方案,那么它可能无法正确解码数据,导致数据丢失或错误。灵活性 :通过允许不同的编码方案,系统可以适应不同的通信环境和需求。例如,在噪声较高的环境中,可能需要使用具有更高错误纠正能力的编码方案来确保数据的可靠性。兼容性 :编码指示器还有助于确保不同设备之间的兼容性。只要设备都遵循相同的协议和编码指示器定义,它们就可以正确地识别和解码彼此发送的数据。 通过CI的值,可以确定FEC编码块2所使用的编码方案。这对于确保数据包在传输过程中能够正确编码和解码至关重要。正确选择和使用编码方案可以优化通信的可靠性和效率,从而满足不同的通信需求。
五、协议数据单元(PDU) 在无线通信中,特别是低功耗蓝牙(BLE)等标准中,PDU(Protocol Data Unit,协议数据单元)是数据包的核心组成部分,它承载了实际要传输的数据以及相关的控制信息。PDU的结构和内容会根据其所处的物理通道类型而有所不同。
5.1. PDIU结构 主或次广播物理通道 :当数据包在这些通道上传输时,PDU应遵循广播通道PDU 的格式,具体格式在低功耗蓝牙规范第2.3节( BLUETOOTH CORE SPECIFICATION Version 6.0 | Vol 6, Part B Page 2940 ) 中定义。广播物理通道PDU主要用于设备发现、连接建立等广播相关操作。
数据物理通道 :当数据包在数据物理通道上传输时,PDU应遵循数据物理通道PDU 的格式,该格式在低功耗蓝牙规范第2.4节( BLUETOOTH CORE SPECIFICATION Version 6.0 | Vol 6, Part B Page 2964) 中定义。数据物理通道PDU用于在已建立的连接中传输用户数据。
同步物理通道 :当数据包在同步物理通道上传输时,PDU应遵循同步物理通道PDU 的格式之一,这些格式在低功耗蓝牙规范第2.6节( BLUETOOTH CORE SPECIFICATION Version 6.0 | Vol 6, Part B Page 3014 ) 中定义。同步物理通道PDU主要用于传输对时间敏感的数据,如音频或视频流。
5.2. PDU的重要性 PDU是无线通信中数据包的核心,它确保了数据能够在不同的物理通道上正确传输。 通过定义不同类型的PDU,无线通信标准可以灵活地支持多种通信模式和操作,如设备发现、连接建立、数据传输和同步数据传输。 PDU的格式和内容经过精心设计,以在有限的带宽和能量下实现高效、可靠的通信。 在无线通信中,PDU的选择和使用取决于数据包所处的物理通道类型。了解不同物理通道上PDU的格式和内容对于正确配置和使用无线通信设备至关重要。通过遵循无线通信标准中定义的PDU格式,可以确保数据包在不同设备之间正确传输,从而实现高效、可靠的通信。
六、循环冗余校验(CRC) CRC(Cyclic Redundancy Check,循环冗余校验)是一种广泛应用于数据通信领域的检错码,其原理基于多项式编码,能够提供高效率的错误检测能力。
6.1. CRC的长度与计算范围 CRC的长度为24位,这意味着在数据传输过程中,会附加24位的校验码用于错误检测。 CRC的值是通过对所有PDU(Protocol Data Unit,协议数据单元)位进行计算得出的。这确保了数据包的完整性在传输过程中得到验证。 6.2. CRC生成多项式 CRC的生成多项式是预先定义的,它决定了CRC的计算方式和错误检测能力。 根据提供的信息,CRC生成多项式的具体定义在低功耗蓝牙规范第3.1.1节( BLUETOOTH CORE SPECIFICATION Version 6.0 | Vol 6, Part B Page 3019) 中。要准确了解CRC的生成多项式,需要查阅该节的内容。 6.3. CRC的计算过程 CRC的计算过程通常涉及将PDU视为一个多项式,并将其除以CRC生成多项式。 除法的余数即为CRC校验码,这个校验码会被附加在PDU的末尾一起传输。 在接收端,接收到的数据包(包括PDU和CRC校验码)会再次被除以相同的CRC生成多项式。 如果余数为0,则说明数据传输无错误;否则,说明数据传输中有错误。 6.4. CRC的优点 CRC具有原理清晰、实现简单等优点,因此被广泛应用于各种数据通信系统中。 它能够提供高效的错误检测能力,确保数据在传输过程中的完整性。 CRC是一种重要的数据校验技术,它通过附加24位的校验码来检测数据传输中的错误。CRC的生成多项式是预先定义的,并决定了CRC的计算方式和错误检测能力。在数据通信系统中,CRC被广泛应用于确保数据包的完整性和可靠性。为了准确了解CRC的生成多项式,需要查阅相关的技术文档或标准。
七、TERM1 和 TERM2 在每个前向纠错(FEC)块的末尾有一个终止符,分别称为 TERM1 和 TERM2。每个终止符长度为 3 位,并形成 3.3.1 节中定义的终止序列。
在数据通信中,特别是在采用前向纠错(Forward Error Correction,FEC)技术的系统中,TERM1和TERM2是两个重要的终止符,它们位于每个FEC块的末尾。
7.1. TERM1和TERM2的定义与位置 定义 :TERM1和TERM2是分别位于每个FEC块末尾的两个终止符。位置 :它们紧跟在FEC块的数据部分之后,标志着FEC块的结束。7.2. TERM1和TERM2的长度与结构 长度 :每个终止符的大小都是3位(bit)。结构 :TERM1和TERM2的具体值或结构是预先定义的,通常根据所采用的FEC编码方案和通信标准来确定。这些值在通信系统的设计中已经固定,并在相关文档或标准中详细说明。具体定义请查阅低功耗蓝牙规范第3.3.1节( BLUETOOTH CORE SPECIFICATION Version 6.0 | Vol 6, Part B Page 3022 )。 7.3. TERM1和TERM2的作用 帧同步 :TERM1和TERM2作为终止符,有助于接收端识别并同步到FEC块的末尾。这对于正确解码和校验数据至关重要。错误检测 :虽然TERM1和TERM2本身不直接用于错误检测(通常由CRC或其他错误检测码完成),但它们作为帧结构的一部分,有助于接收端在解码过程中保持正确的帧同步,从而间接提高错误检测的能力。帧划分 :在连续的数据流中,TERM1和TERM2帮助接收端将连续的数据划分为不同的FEC块,这是进行解码和错误纠正的前提。 TERM1和TERM2是数据通信中采用FEC技术时位于每个FEC块末尾的两个重要终止符。它们具有固定的长度和结构,并在通信系统的设计中已经预先定义。TERM1和TERM2的主要作用是帮助接收端识别并同步到FEC块的末尾,从而正确解码和校验数据。
八、总结 低功耗蓝牙(BLE)LE编码物理层的数据包格式设计精巧,各组成部分各司其职,共同确保数据的可靠传输。前导码用于同步、信道估计和帧标识,接入地址用于区分不同类型的通信帧或数据包,编码指示器则指示当前数据包所使用的编码方案。PDU作为数据包的核心,承载了实际要传输的数据及控制信息。CRC作为检错码,提供高效的错误检测能力,确保数据在传输过程中的完整性。TERM1和TERM2作为终止符,位于每个FEC块的末尾,有助于接收端识别并同步到FEC块的末尾,从而正确解码和校验数据。通过对这些组成部分的深入分析,可以对BLE LE编码物理层数据包格式有一个全面而深入的了解。