蓝牙6.0 Channel Sounding 基于接入地址的定时估计原理

张开发
2026/5/13 9:41:22 15 分钟阅读

分享文章

蓝牙6.0 Channel Sounding 基于接入地址的定时估计原理
基于接入地址的定时估计先看下core spec的描述蓝牙Core Spec Vol 6 Part H中3.2节「基于接入地址的定时估计」它定义了两种用于CS_SYNC包到达时间ToA估计的方法是RTT测距的基础定时方案。下面我逐段拆解一、整体结构与核心目标本节介绍两种基于CS Access AddressCS接入地址提取ToA到达时间定时估计的方法3.2.1 基于本地时钟的时间戳法3.2.2 基于伪噪声PN序列的定时估计法这两种方法分别对应“粗定时”和“精定时”共同构成了蓝牙CS的两级RTT定时方案。二、3.2.1 基于本地时钟的时间戳法1. 核心原理接收机在检测到CS接入地址时直接用本地时钟打时间戳记录信号到达时刻。单样本的分辨率直接取决于接收机时钟的精度和采样率。比如采样率1MHz时单样本分辨率是1μs只能做到符号级定时。2. 提升精度的方法多包平均 伪随机偏移为了提高整体分辨率规范给出了两种优化手段多包测量平均多次发送数据包取多个时间戳的平均值。由于设备间采样时钟相位无关多次测量的结果分布可以通过统计平均来抵消随机误差得到更精确的ToA估计。发射端伪随机偏移发射端可以在预期发送时刻的基础上叠加一个不超过1个符号周期的伪随机分数定时偏移。这个偏移是伪随机的接收端可以利用多次测量的分布特性进一步归一化和细化ToA值。目的打破时钟相位相关性让多次测量的误差分布更均匀提升平均后的精度。实现细节偏移的具体算法由厂商自行定义。三、3.2.2 基于伪噪声PN序列的定时估计法这部分你之前已经了解过这里是规范的正式定义1. 核心用途利用CS接入地址或Payload中足够长的伪噪声PN序列估计接收信号相对于接收机本地采样时钟的定时误差即分数定时分量。定时误差最佳采样点与实际采样点的差值单位小于一个符号周期亚符号级。2. 实现方法利用PN序列的自相关特性通过滑动相关找到相关峰的位置确定定时误差。具体可以通过遍历序列中所有符号寻找相关峰来实现。该方法不依赖于数据包之间的伪随机时钟相位分布直接通过序列相关就能提取稳定的分数定时分量。四、两种方法的对比与配合方法精度特点用途本地时钟时间戳法符号级简单直接依赖采样率和时钟精度粗定时建立ToA基准PN序列相关法亚符号级利用自相关峰插值精度高精定时提取分数定时分量两者的配合逻辑先用时间戳法得到粗定时估计再用PN序列相关法提取分数定时分量最终实现高精度RTT定时。五、总结这一节定义了蓝牙CS中基于CS接入地址的两种ToA定时估计方法一种是简单的本地时钟时间戳法另一种是利用PN序列自相关特性的高精度分数定时估计法两者结合构成了蓝牙RTT测距的基础定时方案。PN序列伪噪声序列的核心是线性反馈移位寄存器LFSR蓝牙CS中用的是最大长度序列m序列这是最常用、最简单的PN序列实现方式。下面我给你讲清楚原理、生成方法和蓝牙的具体实现。PN序列生成算法一、核心原理线性反馈移位寄存器LFSR1. 基本结构一个n级LFSR由一个n位移位寄存器一组反馈抽头根据本原多项式确定一个异或门XOR构成工作流程如下寄存器初始化为一个非零种子全0会一直输出0。每次时钟所有寄存器位向右移动一位。把指定抽头位置的输出做XOR运算作为新的输入位。最右端寄存器的输出就是生成的PN序列。2. 关键本原多项式要生成最大长度序列m序列反馈抽头必须满足本原多项式。序列周期L2n−1L 2^n - 1L2n−1n为寄存器级数序列特性近似白噪声的伪随机特性自相关函数为冲激型。二、蓝牙CS中常用的LFSR生成算法蓝牙规范中PRBS序列使用的是7级LFSR对应的本原多项式为x7x61 x^7 x^6 1x7x611. 算法流程伪代码// 蓝牙常用的PRBS生成器7级LFSRuint8_tlfsr0x7F;// 初始种子非零uint8_tprbs_next_bit(){// 反馈抽头bit6 和 bit7 异或uint8_tfeedback((lfsr6)^(lfsr7))1;// 右移一位把反馈结果写入最高位lfsr(lfsr1)|(feedback7);// 输出最低位returnlfsr1;}2. 特性周期27−11272^7 - 1 12727−1127bit序列平衡0和1的数量几乎相等64个163个0自相关只有当序列完全对齐时相关值才达到峰值旁瓣极低正好满足蓝牙RTT定时的需求。三、不同长度PN序列的生成蓝牙CS中支持32/64/96/128bit等不同长度的Random Sequence实现方式是用上述LFSR生成一个长序列比如127bit。截取前N bit如前32/64/96/128bit作为数据包中的Random Sequence。接收端用同样的种子和多项式生成本地序列做滑动相关即可。四、为什么蓝牙用m序列实现简单硬件上只需要移位寄存器和异或门资源占用极小。伪随机特性好近似白噪声抗干扰、防欺骗能力强。自相关峰尖锐相关运算能精确定位定时误差满足亚符号级定时需求。可预测性只要知道种子和多项式就能生成完全相同的序列便于接收端同步。补充其他PN序列类型除了m序列还有Gold序列、Kasami序列等但蓝牙CS中没有使用因为m序列的实现和同步都更简单足够满足CS的需求。m序列的自相关冲击特性一、先定义符号与序列设(a[n])(a[n])(a[n])为周期为(L2m−1)(L2^m-1)(L2m−1)的二元m序列取值为({0,1})(\{0,1\})({0,1})。为了便于推导自相关我们先将其映射到({1,−1})(\{1,-1\})({1,−1})b[n]1−2a[n] b[n] 1 - 2a[n]b[n]1−2a[n]此时(b[n]∈{1,−1})(b[n] \in \{1,-1\})(b[n]∈{1,−1})且周期仍为(L)(L)(L)。序列的周期性自相关函数定义为Rb[k]1L∑n0L−1b[n]b[nk] R_b[k] \frac{1}{L} \sum_{n0}^{L-1} b[n] b[nk]Rb​[k]L1​n0∑L−1​b[n]b[nk]其中(k)(k)(k)为整数偏移下标按模(L)(L)(L)运算即 $(b[nk]b[(nk)mod L])(b[nk] b[(nk) \mod L])(b[nk]b[(nk)modL])。二、关键性质m序列的“移位相加性”m序列最核心的代数性质是线性移位寄存器的线性性它保证了任意两个不同相位的m序列其模2和仍是一个相位不同的m序列或其本身。即a[n]⊕a[nk]a[nk′] a[n] \oplus a[nk] a[nk]a[n]⊕a[nk]a[nk′]其中(k′≠0)(k \neq 0)(k′0)当(k≢0(modL))(k \not\equiv 0 \pmod{L})(k≡0(modL))时。将此性质映射到({1,−1})(\{1,-1\})({1,−1})序列(b[n])(b[n])(b[n])上b[n]b[nk](1−2a[n])(1−2a[nk]) b[n]b[nk] (1-2a[n])(1-2a[nk])b[n]b[nk](1−2a[n])(1−2a[nk])由于(a[n]⊕a[nk]a[n]a[nk](mod2))(a[n] \oplus a[nk] a[n] a[nk] \pmod{2})(a[n]⊕a[nk]a[n]a[nk](mod2))当(a[n]≠a[nk])(a[n] \neq a[nk])(a[n]a[nk])时(a[n]a[nk]1)(a[n] a[nk] 1)(a[n]a[nk]1)此时(b[n]b[nk]−1)(b[n]b[nk] -1)(b[n]b[nk]−1)当(a[n]a[nk])(a[n] a[nk])(a[n]a[nk])时(a[n]a[nk]0)(a[n] a[nk] 0)(a[n]a[nk]0)此时(b[n]b[nk]1)(b[n]b[nk] 1)(b[n]b[nk]1)。因此(b[n]b[nk])(b[n]b[nk])(b[n]b[nk])本质上仍是一个周期为(L)(L)(L)的二元序列且等于(b[nk′])(b[nk])(b[nk′])。三、分两种情况计算自相关函数情况1(k≡0(modL))(k \equiv 0 \pmod{L})(k≡0(modL))序列完全对齐此时(b[nk]b[n])(b[nk] b[n])(b[nk]b[n])则b[n]b[nk]b[n]21 b[n]b[nk] b[n]^2 1b[n]b[nk]b[n]21代入自相关公式Rb[0]1L∑n0L−11LL1 R_b[0] \frac{1}{L} \sum_{n0}^{L-1} 1 \frac{L}{L} 1Rb​[0]L1​n0∑L−1​1LL​1这就是自相关函数的主峰。情况2(k≢0(modL))(k \not\equiv 0 \pmod{L})(k≡0(modL))序列错位此时(b[n]b[nk]b[nk′])(b[n]b[nk] b[nk])(b[n]b[nk]b[nk′])仍是一个m序列。我们知道长度为(L2m−1)(L2^m-1)(L2m−1)的m序列在一个周期内(1)(1)(1)的个数为(2m−1)(2^{m-1})(2m−1)个(−1)(-1)(−1)的个数为(2m−1−1)(2^{m-1}-1)(2m−1−1)个因此∑n0L−1b[n]b[nk]∑n0L−1b[nk′](2m−1)(1)(2m−1−1)(−1)1 \sum_{n0}^{L-1} b[n]b[nk] \sum_{n0}^{L-1} b[nk] (2^{m-1})(1) (2^{m-1}-1)(-1) 1n0∑L−1​b[n]b[nk]n0∑L−1​b[nk′](2m−1)(1)(2m−1−1)(−1)1代入自相关公式Rb[k]1L⋅11L R_b[k] \frac{1}{L} \cdot 1 \frac{1}{L}Rb​[k]L1​⋅1L1​四、结论冲激型自相关函数综合以上两种情况m序列的自相关函数为Rb[k]{1,k≡0(modL)1L,k≢0(modL) R_b[k] \begin{cases} 1, k \equiv 0 \pmod{L} \\ \dfrac{1}{L}, k \not\equiv 0 \pmod{L} \end{cases}Rb​[k]⎩⎨⎧​1,L1​,​k≡0(modL)k≡0(modL)​当序列长度(L)(L)(L)很大时如(L127)(L127)(L127)旁瓣值(1L(\frac{1}{L}(L1​) 趋近于0。此时自相关函数表现为仅在(k0)(k0)(k0)处有一个尖锐的峰值其他偏移处的值几乎为0这就是你所说的冲激型自相关特性也是m序列能实现高精度定时同步的数学基础。

更多文章