基于相关峰检测的信号定时同步器 算法原理说明基于相关峰检测的信号定时同步器1. 概述本模块corr_sync_top用于在接收链路中检测已知前导序列Preamble的到达时刻输出一个单周期定时同步脉冲m_axis_sync_pulse标记帧边界。核心方法是滑动窗互相关 能量峰值判决 多径保护窗抑制。适用场景突发通信帧同步、BPSK/QPSK 前导捕获、雷达/声呐脉冲对齐、扩频码同步等需要在噪声中找到已知模板出现位置的定时恢复问题。2. 算法数学模型2.1 互相关设接收复信号为r(n)rI(n)j rQ(n)r(n) r_I(n) j\,r_Q(n)r(n)rI​(n)jrQ​(n)本地已知前导序列为c(k), k0,1,…,N−1c(k),\ k0,1,\dots,N-1c(k),k0,1,…,N−1。滑动窗互相关定义为R(n)∑k0N−1c(k)⋅r(n−k) R(n) \sum_{k0}^{N-1} c(k)\cdot r(n-k)R(n)k0∑N−1​c(k)⋅r(n−k)当接收窗内的数据与本地前导对齐时R(n)R(n)R(n)出现显著峰值。本设计前导为 BPSK 码即c(k)∈{1,−1}c(k)\in\{1,-1\}c(k)∈{1,−1}因此乘法退化为条件加减R(n)∑k0N−1[ c(k)1 ? r(n−k) : −r(n−k) ] R(n) \sum_{k0}^{N-1}\big[\,c(k)1\ ?\ r(n-k)\ :\ -r(n-k)\,\big]R(n)k0∑N−1​[c(k)1?r(n−k):−r(n−k)]这一退化是硬件实现的关键——省去了NNN个通用乘法器只保留符号选择的加减树。2.2 相关能量对复相关结果取模平方得到与相位无关的能量指标P(n)∣R(n)∣2RI2(n)RQ2(n) P(n) |R(n)|^2 R_I^2(n) R_Q^2(n)P(n)∣R(n)∣2RI2​(n)RQ2​(n)用能量而非幅度是为了对载波相位偏移不敏感——只要码型对齐无论初相如何能量都会出现峰值。这是抗频偏/相偏的基础。2.3 判决准则同时满足以下三条才判定为有效同步点{P(nc)T超过门限P(nc)≥P(nc1) 且 P(nc)P(nc−1)局部极大保护窗空闲非多径副瓣 \begin{cases} P(n_c) T \text{超过门限} \\ P(n_c) \ge P(n_c{}1)\ \text{且}\ P(n_c) P(n_c{-}1) \text{局部极大} \\ \text{保护窗空闲} \text{非多径副瓣} \end{cases}⎩⎨⎧​P(nc​)TP(nc​)≥P(nc​1)且P(nc​)P(nc​−1)保护窗空闲​超过门限局部极大非多径副瓣​其中ncn_cnc​是 3 点滑窗的中心点TTT为可配门限。局部极大值判定用于精确定位峰尖避免在峰的上升/下降沿误触发。3. 关键设计决策与本质很多人以为同步器就是算个相关再比大小但真正决定上板稳定性的是三个底层问题长路径时序、DSP 对齐、多径虚警。逐一说明。3.1 为什么用树形流水加法而不是直接累加N16N16N16点直接串联累加会形成 15 级加法器的组合长路径最高频率FmaxF_{max}Fmax​被这条路径压死在百兆以下。解决方式是把累加拆成 2 级二叉树 1 级归约每级插寄存器16点 --Stage1-- 8点 --Stage2-- 4点 --Stage3-- 1点 (17bit) (18bit) (20bit)本质用寄存器面积换关键路径长度。每级只有 1~2 个加法器的延迟FmaxF_{max}Fmax​可拉到 300MHz。位宽逐级 1 是为了防止累加溢出每加一次最多进位 1 位。3.2 为什么显式写 DSP48 对齐寄存器I2Q2I^2Q^2I2Q2的平方用 DSP48 硬核实现。DSP48 内部有AREG/BREG输入寄存器和PREG乘积寄存器。如果不在 RTL 里显式打拍综合工具可能不把寄存器推进 DSP导致布线延迟大、时序难收敛。本设计显式写了两级寄存a/b对应 AREG/BREG→mult对应 PREG确保 100% 映射进 DSP 硬核流水不依赖工具猜测。3.3 为什么需要多径保护窗真实无线信道存在多径主径之后会有延迟、衰减的回波。回波同样是前导码的副本也会产生一个较弱的相关峰。如果不处理一帧会触发多个同步脉冲造成帧定位混乱。解决方式是命中后启动保护窗protect_cnt PROTECT_LEN建议取2N2N2N在窗内屏蔽一切新的判决逐拍递减到 0 才解除。本质是抓住第一个强主径吞掉后续所有副瓣。4. 定点化设计节点位宽说明输入 I/Q16-bit signed接收采样量化Stage117-bit2 点加减进位 1Stage218-bit再 1Stage3 (相关值)20-bit16 点累加log2(16)4 位余量乘积 mult40-bit20×20能量截断取 [39:8]右移 8 位映射到 32-bit 比较空间能量求和33-bit → 饱和 32-bit防 I²Q² 相加回绕能量截断的取舍取高位段[39:8]相当于右移 8 位丢弃低位精度换取比较器位宽可控。峰值理论值可由此推算例如满幅前导∣R∣16×100016000|R|16\times100016000∣R∣16×100016000则P2×160002/256≈2 000 000P2\times16000^2/256\approx2\,000\,000P2×160002/256≈2000000门限即据此设定。5. 流水线时延从有效输入到能量输出pipe_valid[0..6]共 7 级Stage1(1) → Stage2(1) → Stage3(1) → AREG/BREG(1) → PREG(1) → 能量求和(1) → 判决(1)即s_axis_din_valid拉高后约 7 个时钟周期对应的m_axis_corr_power才输出。做时序对齐或与其他链路合并时须计入这个固定延迟。6. 接口与握手采用 AXI-Streamvalid-ready双向握手上游s_axis_din_valid/s_axis_din_ready本设计内部无阻塞ready恒高若后续加 FIFO 反压握手协议天然支持挂起。下游m_axis_sync_pulse单周期脉冲、m_axis_corr_power实时能量、m_axis_peak_power峰值锁存供 SNR 估计。跨时钟域注意m_axis_sync_pulse是单周期脉冲若下游位于异步时钟域必须外接脉冲同步器cdc_pulse_sync禁止直接跨域连接否则会丢脉冲或产生亚稳态。7. 参数配置参数默认含义N16前导序列长度PROTECT_LEN32多径保护窗长度建议 2NPREAMBLE_PATTERN16’b1011_0101_0000_1111本地前导码1正,0负换协议改此处TH_MIN / TH_MAX1e4 / 5e7门限上下限钳位防配 0 全虚警或超大全漏警8. 性能与局限适用静态或慢变信道、码型已知、SNR 中等以上的突发同步。局限大频偏下R(n)R(n)R(n)会因码内相位旋转而衰减若频偏超过约1/(N⋅Ts)1/(N\cdot T_s)1/(N⋅Ts​)量级需先做频偏预估或改用差分相关。门限TTT为静态配置强时变噪声下建议改用基于滑动噪声功率的动态门限归一化相关。保护窗为固定长度若多径时延扩展超过PROTECT_LEN仍可能漏抑需按信道最大时延调PROTECT_LEN。9. 参考对照相关峰检测Van Trees,Detection, Estimation, and Modulation Theory前导同步经典Schmidl Cox 定时同步算法OFDM 场景可延展DSP48 流水结构Xilinx UG579《UltraScale DSP48E2 用户指南》沉淀的资产一份可复用的相关峰同步算法数学模型互相关 → 能量 → 三准则判决树形流水 DSP 显式对齐 多径保护窗三大工程决策的本质说明可迁移到其他相关类模块完整定点位宽表与峰值理论值推导直接指导门限设定