无线电数据包中的前导码检测和频偏估计

信息处理 数字通讯 信号检测 前言
2022-02-09 05:04:50

我已经生成了一个无线电数据包,其前导标头为 0x55555555 和 crc32 仅用于数据。整个数据包在 I 和 Q 的偶数和奇数流中分离。I 和 Q 被过采样 10 倍。I 和 Q 被调制成 BPSK,然后 I 和 Q 被组合并与载波混合然后传送。传输是随机的,所以我不知道数据包何时开始或结束,因为有效载荷长度是可变的。该信道具有多径和噪声。

在接收器处,我接收到数据包之间带有噪声的符号。我知道传输过程中存在频率漂移。我尝试对数据包进行频率同步,但我无法从收集的符号中分辨出前导码从哪里开始如果我解调接收到的符号并搜索前导码,由于频率漂移,我找不到它。

解决这个循环问题的好方法是什么?

谢谢。

2个回答

对于具有时间参考的最大灵敏度前导码检测,考虑使用巴克码,或者对于具有更长长度的 PRN(伪随机噪声)序列的更多选择,或者在需要更多区分时获得更多选择 (CDMA) 金码是可能的. (也没有进一步详细但具有其他优点的是 Kasami 码和 Zadoff-Chu 码)。

所有这些代码都具有在时间偏移 = 0 时具有强自相关的特性,重要的是对于任何其他时间偏移具有更小的自相关。如下图所示,使用 LFSR(线性反馈移位寄存器)的 PRN 序列:

LFSR 相关属性

这些代码通过处理增益提供了一些抗噪性;在白噪声条件下,作为信噪比提高的处理增益为10Log10(N)其中 N 是序列的长度。这来自于相关信号分量的相加导致信号分量的标准偏差以速率 N 增长,而噪声(如果是白色,则意味着从样本到样本不相关)将具有以速率增长的标准偏差N. 我们使用相关性来检测序列的存在,这是一个乘法和求和:

Rxy(τ)=Σx(tτ)y(t)

用上式表示接收信号的互相关函数x(t)与感兴趣的序列y(t), 在不同的时间偏移τ.

在实践中有几种方法可以做到这一点,具体取决于具体的实现方法,但对于较短的序列,可以使用 FIR 滤波器来完成,将滤波器的系数作为代码序列进行上采样以匹配接收信号的采样率(当然,最好以尽可能低的速度执行此操作)。对于较长的序列,通常更实用的是创建一个具有可编程偏移量的代码生成器(以便及时移动起始位置),然后简单地将接收到的序列乘以代码并累加输出。阈值检测可以指示代码的成功存在。

下面显示了 GPS 信号上滑动相关的结果,其中代码每 1 ms 重复一次。(我永远不会使用 FIR 滤波器来关联 1023 码片长的 GPS 序列,但这显示了滑动关联的样子)。

滑动相关

其他方法涉及使用此关系在频域中进行相关:

Rxy=IFFT(FFT(x)FFT(y))

其中指出,对 x 和 y 的傅里叶变换的复共轭积进行傅里叶逆变换会导致 x 和 y 的循环相关

此外,一个非常重要的结论是任何这些相关性对频率偏移的敏感性,特别是幅度作为 Sinc 函数下降,第一个零点为 1/T。

请直接在我详细说明的地方查看此帖子:GPS CA 信号采集

这会根据使用的代码长度通知频率捕获范围。如果你在频率上很好地位于这个主瓣内(我通常使用 1/2 的零零频率范围,但如果 SNR 很差,你可能需要更多的限制)。典型的采集方法将在相关期间缓慢地增加频率偏移或逐步增加频率偏移(通过在相关之前对接收到的信号使用 IQ 旋转器来偏移频率)。步进偏移涉及将频率设置为初始猜测、相关,如果未超过采集阈值,则将频率步进 1/T(如果使用 1/2 零零频率范围)并重复。如果是斜坡,斜坡速率必须远小于 1/T,而不会导致额外的频率偏移损失。

通过比较两个连续的相关性可以准确估计频率偏移,因为频率是相位变化与时间变化的关系(dϕ/dt)通过简单地比较两个连续相关之间的相位和时间,我们可以确定频率偏移,假设我们在上面详述的采集频率范围内(重要的是,这些相关是与两个实际输出 I 和 Q 的复相关,因此载波相位被确定)。

请注意,此链接中详细介绍的频率计算 使用计算获得 ADC 后 2 个频谱分量的相位和幅度

K=I[n]Q[n1]I[n1]Q[n]
其中 K 与频率偏移成正比,同样适用于连续的 I 和 Q 相关输出,称为 I[n]、Q[n] 和 I[n-1]Q[n-1]。

使用现代处理和更短的前导序列更实用的是一次性频率偏移和延迟估计,我在这里详细介绍了:

GPS信号采集

也就是说,一个强大的前导码解决方案可能涉及发送一个代码的多个副本以帮助初始载波和时钟采集(以及信道估计!),然后是代码序列的最终否定以标记数据的开始。(只需反转代码,相关性将移动 180°)。交易空间超出了序言与收购敏感性的关系。在采集过程中通常需要更高的 SNR,尤其是在需要快速采集的情况下,因此相关性和处理增益的重要性。

通常在解调之前应用粗调和细调频率校正。报头前导用于解调位上的帧同步。这是 QAM 频率校正的 matlab 指南:https ://www.mathworks.com/help/comm/ug/correct-frequency-offset-qam-using-coarse-and-fine-synchronization.html