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

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

一、引言

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


二、场景与模型

2.1 ZC序列定义

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

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

核心性质:

  • 恒幅 :∣xun∣=1|x_un| = 1∣xun∣=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噪声:

rn=∑khk⋅tn−τk+wnrn = \sum_{k} h_k \cdot tn-\\tau_k + wnrn=k∑hk⋅tn−τk+wn

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


三、算法介绍

3.1 分段相关同步

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

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

段内相关

cm(d)=∑is∗i⋅rd+ic_m(d) = \sum_{i} s^*i \cdot rd+icm(d)=i∑s∗i⋅rd+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 差分相关同步

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

差分序列

dsn=sn+1⋅s∗nd_sn = sn+1 \cdot s^*ndsn=sn+1⋅s∗n

drn=rn+1⋅r∗nd_rn = rn+1 \cdot r^*ndrn=rn+1⋅r∗n

差分相关

cdiff(d)=∑n=0L−2ds∗n⋅drd+nc_{\text{diff}}(d) = \sum_{n=0}^{L-2} d_s^*n \cdot d_rd+ncdiff(d)=n=0∑L−2ds∗n⋅drd+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⋅rd+Lsym+iP(d) = \sum_{i=0}^{L_{\text{cp}}-1} r^*d+i \cdot rd+L_{\\text{sym}}+iP(d)=i=0∑Lcp−1r∗d+i⋅rd+Lsym+i

能量归一化

R(d)=12∑i=0Lcp−1(∣rd+i∣2+∣rd+Lsym+i∣2)R(d) = \frac{1}{2}\sum_{i=0}^{L_{\text{cp}}-1} \left(|rd+i|^2 + |rd+L_{\\text{sym}}+i|^2\right)R(d)=21i=0∑Lcp−1(∣rd+i∣2+∣rd+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=rd:d+N−1,rright=rd+N:d+2N−1\mathbf{r}{\text{left}} = rd:d+N-1, \quad \mathbf{r}{\text{right}} = rd+N:d+2N-1rleft=rd:d+N−1,rright=rd+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

相关推荐
wuweijianlove6 小时前
算法设计中的空间复用与数据对齐优化的技术5
算法
yuan199976 小时前
基于 MATLAB PSO 工具箱的函数寻优算法
开发语言·算法·matlab
YUANQIANG20246 小时前
博弈论中势函数与势博弈构造:为什么看似 “先射箭后画靶”
算法·信息与通信
WBluuue6 小时前
Codeforces 1096 Div3(ABCDEFGH)
c++·算法
wanzehongsheng6 小时前
基于天文算法的双轴太阳能追踪系统:从原理到工程实现
算法
basketball6167 小时前
Kadane算法 C++实现
java·c++·算法
handler017 小时前
【C++】二叉搜索树详解及其模拟实现(代码)
开发语言·c++·算法·c··二叉搜索树·搜索树
luj_17687 小时前
残熵算法的稳健防灾逻辑
c语言·开发语言·c++·经验分享·算法
玖釉-7 小时前
二叉树基础详解:TreeNode、buildTree、deleteTree 与 printTree 的实现原理(C++)
c++·windows·算法
Severus_black7 小时前
【初阶数据结构与算法】八大排序之非比较排序(计数排序),一次性讲清!
数据结构·算法·排序算法