ZC序列符号同步:多径信道下的四种经典算法

ZC序列符号同步:多径信道下的四种经典算法

一、引言

在无线通信中,接收机需要知道每个符号从哪里开始------这就是符号同步。Zadoff-Chu(ZC)序列因其完美的数学特性,被广泛用作同步前导序列。本文简要介绍四种经典的ZC序列符号同步算法。


二、场景与模型

2.1 ZC序列定义

ZC序列长度为 NNN(奇数),其数学表达式为:

xu[n]=exp⁡(−jπu n(n+1)N),n=0,1,...,N−1x_u[n] = \exp\left(-j\pi\frac{u\,n(n+1)}{N}\right), \quad n=0,1,\ldots,N-1xu[n]=exp(−jπNun(n+1)),n=0,1,...,N−1

核心性质:

  • 恒幅 :∣xu[n]∣=1|x_u[n]| = 1∣xu[n]∣=1
  • 零自相关:非零延迟处自相关为0
  • 低互相关:不同根序列相互干扰小

2.2 前导结构

本文采用对称前导设计:

  • 主体 :[xu;  conj(flip(xu))][ \mathbf{x}_u;\; \text{conj}(\text{flip}(\mathbf{x}_u)) ][xu;conj(flip(xu))],长度 2N2N2N
  • 循环前缀(CP) :复制主体尾部 LcpL_{\text{cp}}Lcp 个样点放到开头

接收信号经过多径Rayleigh信道并叠加AWGN噪声:

r[n]=∑khk⋅t[n−τk]+w[n]r[n] = \sum_{k} h_k \cdot t[n-\tau_k] + w[n]r[n]=k∑hk⋅t[n−τk]+w[n]

同步任务:估计前导CP的起始位置 d^\hat{d}d^。


三、算法介绍

3.1 分段相关同步

思想:将长序列分成若干短段,段内相干相关,段间非相干合并,抵抗频偏。

分段 :本地序列 s\mathbf{s}s(长度 LLL)分为 MMM 段,第 mmm 段覆盖索引 [bm−1,bm−1][b_{m-1}, b_m-1][bm−1,bm−1]。

段内相关

cm(d)=∑is∗[i]⋅r[d+i]c_m(d) = \sum_{i} s^*[i] \cdot r[d+i]cm(d)=i∑s∗[i]⋅r[d+i]

归一化

ρm(d)=∣cm(d)∣2Es⋅Er+ϵ\rho_m(d) = \frac{|c_m(d)|^2}{E_s \cdot E_r + \epsilon}ρm(d)=Es⋅Er+ϵ∣cm(d)∣2

同步度量

Λseg(d)=1M∑m=1Mρm(d)\Lambda_{\text{seg}}(d) = \frac{1}{M}\sum_{m=1}^{M} \rho_m(d)Λseg(d)=M1m=1∑Mρm(d)

检测

d^=arg⁡max⁡dΛseg(d)\hat{d} = \arg\max_d \Lambda_{\text{seg}}(d)d^=argdmaxΛseg(d)


3.2 差分相关同步

思想:利用相邻样点的相位差消除公共相位旋转,对任意大小频偏均鲁棒。

差分序列

ds[n]=s[n+1]⋅s∗[n]d_s[n] = s[n+1] \cdot s^*[n]ds[n]=s[n+1]⋅s∗[n]

dr[n]=r[n+1]⋅r∗[n]d_r[n] = r[n+1] \cdot r^*[n]dr[n]=r[n+1]⋅r∗[n]

差分相关

cdiff(d)=∑n=0L−2ds∗[n]⋅dr[d+n]c_{\text{diff}}(d) = \sum_{n=0}^{L-2} d_s^*[n] \cdot d_r[d+n]cdiff(d)=n=0∑L−2ds∗[n]⋅dr[d+n]

归一化

Λdiff(d)=∣cdiff(d)∣2Es⋅Er+ϵ\Lambda_{\text{diff}}(d) = \frac{|c_{\text{diff}}(d)|^2}{E_s \cdot E_r + \epsilon}Λdiff(d)=Es⋅Er+ϵ∣cdiff(d)∣2

检测

d^=arg⁡max⁡dΛdiff(d)\hat{d} = \arg\max_d \Lambda_{\text{diff}}(d)d^=argdmaxΛdiff(d)


3.3 CP阈值检测

思想:CP是主体尾部的副本,利用这一结构冗余实现盲同步。

CP相关

P(d)=∑i=0Lcp−1r∗[d+i]⋅r[d+Lsym+i]P(d) = \sum_{i=0}^{L_{\text{cp}}-1} r^*[d+i] \cdot r[d+L_{\text{sym}}+i]P(d)=i=0∑Lcp−1r∗[d+i]⋅r[d+Lsym+i]

能量归一化

R(d)=12∑i=0Lcp−1(∣r[d+i]∣2+∣r[d+Lsym+i]∣2)R(d) = \frac{1}{2}\sum_{i=0}^{L_{\text{cp}}-1} \left(|r[d+i]|^2 + |r[d+L_{\text{sym}}+i]|^2\right)R(d)=21i=0∑Lcp−1(∣r[d+i]∣2+∣r[d+Lsym+i]∣2)

同步度量

ΛCP(d)=∣P(d)∣2R(d)2+ϵ\Lambda_{\text{CP}}(d) = \frac{|P(d)|^2}{R(d)^2 + \epsilon}ΛCP(d)=R(d)2+ϵ∣P(d)∣2

阈值检测

设置门限 γ=α⋅max⁡(ΛCP)\gamma = \alpha \cdot \max(\Lambda_{\text{CP}})γ=α⋅max(ΛCP),取第一个超过门限的位置:

d^=min⁡{d:ΛCP(d)≥γ}\hat{d} = \min\{d : \Lambda_{\text{CP}}(d) \ge \gamma\}d^=min{d:ΛCP(d)≥γ}


3.4 Pauli对称相关

思想 :利用对称前导 [a;conj(flip(a))][\mathbf{a}; \text{conj}(\text{flip}(\mathbf{a}))][a;conj(flip(a))] 的结构,用Pauli矩阵构造四路检测通道。

提取左右部分(去掉CP后):

rleft=r[d:d+N−1],rright=r[d+N:d+2N−1]\mathbf{r}{\text{left}} = r[d:d+N-1], \quad \mathbf{r}{\text{right}} = r[d+N:d+2N-1]rleft=r[d:d+N−1],rright=r[d+N:d+2N−1]

镜像右半 :r2=flip(rright)\mathbf{r}2 = \text{flip}(\mathbf{r}{\text{right}})r2=flip(rright)

本地参考 :s1=a,  s2=conj(a)\mathbf{s}_1 = \mathbf{a},\; \mathbf{s}_2 = \text{conj}(\mathbf{a})s1=a,s2=conj(a)

四个Pauli通道

CI=∑n(s1∗rleft+s2∗r2)C_I = \sum_n (s_1^* r_{\text{left}} + s_2^* r_2)CI=n∑(s1∗rleft+s2∗r2)
CX=∑n(s1∗r2+s2∗rleft)C_X = \sum_n (s_1^* r_2 + s_2^* r_{\text{left}})CX=n∑(s1∗r2+s2∗rleft)
CY=∑n(−js1∗r2+js2∗rleft)C_Y = \sum_n (-j s_1^* r_2 + j s_2^* r_{\text{left}})CY=n∑(−js1∗r2+js2∗rleft)
CZ=∑n(s1∗rleft−s2∗r2)C_Z = \sum_n (s_1^* r_{\text{left}} - s_2^* r_2)CZ=n∑(s1∗rleft−s2∗r2)

同步度量

ΛPauli(d)=∣CI∣2+∣CX∣2+∣CY∣2+∣CZ∣24⋅Es⋅Er+ϵ\Lambda_{\text{Pauli}}(d) = \frac{|C_I|^2 + |C_X|^2 + |C_Y|^2 + |C_Z|^2}{4 \cdot E_s \cdot E_r + \epsilon}ΛPauli(d)=4⋅Es⋅Er+ϵ∣CI∣2+∣CX∣2+∣CY∣2+∣CZ∣2

检测

d^=arg⁡max⁡dΛPauli(d)\hat{d} = \arg\max_d \Lambda_{\text{Pauli}}(d)d^=argdmaxΛPauli(d)


四、算法对比

算法 抗频偏 抗多径 计算量 是否需要导频
分段相关
差分相关 极强
CP阈值 否(盲)
Pauli相关

五、总结

四种算法各有适用场景:

  • 分段相关:工程首选,综合性价比最高
  • 差分相关:大频偏场景必备
  • CP阈值:盲检测和唤醒接收的理想选择
  • Pauli相关:追求极限性能时的选项

理解这些算法的原理和取舍,是设计鲁棒通信接收机的基础。


开源项目:https://github.com/hjHe-ee/zc-sequence-synchronization

相关推荐
机器学习之心HML2 小时前
粒子群算法求解速冻食品冷链配送路径优化问题,MATLAB代码
算法·matlab·冷链配送路径优化
fie88892 小时前
基于粒子群优化(PSO)算法的带STATCOM的IEEE 30节点系统最优潮流MATLAB实现
开发语言·算法·matlab
hele_two2 小时前
SDL2高效画实心圆的算法(一)
c++·算法·图形渲染
cheems95272 小时前
[算法手记] 动态规划,二叉树计数问题
算法·动态规划
贫民窟的勇敢爷们2 小时前
Scikit-learn算法:从入门到精通的机器学习工具箱
算法·机器学习·scikit-learn
Liangwei Lin3 小时前
LeetCode 155. 最小栈
java·javascript·算法
~|Bernard|3 小时前
二.go语言中map的底层原理(2026-5-8)
算法·golang·哈希算法
mask哥3 小时前
力扣算法java实现汇总整理(下)
java·算法·leetcode
样例过了就是过了4 小时前
LeetCode热题100 编辑距离
数据结构·c++·算法·leetcode·动态规划