本节摘要:SOURCE 4.2:符号定时、载波频偏、采样频偏三类同步;CP 相关法估计定时,频偏靠导频或 CP 相位差。
| 类型 | 检测方法 | 容限 |
|---|---|---|
| 符号定时 | CP 自相关 | 须在 CP 内 |
| CFO | 导频/CP 相位斜率 | 子载波间隔分数 |
| SFO | 导频跟踪 | 长期漂移 |

毫米波 相位噪声随 f^2 增长 → 高阶 QAM 对 LO 质量极敏感——同步演化与射频工艺绑定。
⚠️ 常见坑:定时 off-by-one → 全部子载波 ICI。
💡 关键直觉:同步误差 = 正交性裂痕。
OFDM 接收机需要完成三类同步:符号定时(找到 FFT 窗口起点)、载波频率同步(补偿收发载波频率偏差 CFO)、采样频率同步(校正 ADC 采样时钟偏差 SFO)。三类误差的物理来源不同、影响不同、修正手段也不同,但在时间上存在先后依赖:必须先有粗定时才能切出符号做频偏估计,频偏补偿后才能稳定做精定时与信道估计。工程实现通常采用"前导符粗捕获 + CP 细跟踪 + 导频持续校正"的分层结构。
三类误差对正交性的破坏方式各异。定时偏差使 FFT 窗口错位,若起点移出 CP,则同时引入 ISI 与 ICI;CFO 使整个频谱平移,采样点偏离 sinc 零点,所有子载波都收到相邻子载波泄漏;SFO 使采样点随时间漂移,符号间相位累积旋转,子载波序号越大旋转越烈。三者叠加时,星座图会同时出现旋转、弥散与交叉,严重时彻底无法解调。
CP 是天然的定时信号。因为 CP 是符号尾部的复制,二者高度相关,接收端可滑动计算相关:
在正确起点处,R(d) 达到峰值(还叠加了符号内的平台区)。用 CP 相关法可以完成粗定时与分数倍频偏联合估计,因为平台区的相位斜率直接反映了 CFO。现代接收机通常用训练序列(如前导)做更精确的定时,再利用 CP 做跟踪。定时估计的精度要求是:FFT 窗口起点必须落在 CP 内,且尽量靠近符号起点——起点偏晚会缩小有效 CP 裕量,起点偏早虽然安全但会把部分噪声窗入。
需要警惕的是"off-by-one"型错误:若定时偏差恰为整数个采样但方向错误,看似无害,实际上会破坏每个子载波的相位一致性,导致星座整体旋转与子载波间干扰。这也是为什么同步电路要用多个相关峰加权、并配合循环校验,而不是简单取最大值。
设归一化频偏 \varepsilon = \Delta f_{CFO}/\Delta f_{sub},即 CFO 占子载波间隔的比例。接收端 FFT 输出的子载波 k 变为:
其中 \sin c(\varepsilon) 是幅度衰减因子,ICI_k 是来自所有其它子载波的泄漏项。当 \varepsilon=0.1(CFO 为子载波间隔的 10%)时,sinc 衰减约 1.6%,但 ICI 等效噪声随高阶调制急剧放大,64-QAM 下 BER 显著恶化。因此 CFO 补偿需要达到很低的残余量,通常 <1% 子载波间隔。
CFO 估计可利用 CP 相关平台区的相位斜率,也可利用相邻符号同一导频的相位差。估计出的 \varepsilon 分成整数部分与分数部分:整数倍频偏在频域移位即可补偿,分数倍频偏需在时域乘以 e^{-j2\pi\varepsilon n/N}。时域补偿对全部子载波统一作用,计算开销低,是接收机流水线中的标准操作。
SFO 造成的相位旋转与子载波序号成正比,并随时间线性累积。对第 k 个子载波,第 m 个符号的相位偏移为 2\pi k m \Delta T_s / T_s。SFO 必须持续跟踪,常用方法是在数据导频上估计每个符号的相位斜率,再反馈校正采样时钟或通过数字重采样补偿。与 CFO 不同,SFO 的影响随符号序号增长,长时间传输后即使很小时钟偏差也会积累成不可接受的相位旋转。
相位噪声是高频系统的另一大敌。振荡器相位噪声功率谱近似随频率以 -20 dB/decade 下降,对 OFDM 的影响分为两项:公共相位误差(CPE)使所有子载波旋转同一角度,可在导频上估计并扣除;剩余相位噪声则表现为类似噪声的 ICI,难以补偿。毫米波频段相位噪声按频率平方增长,对本地振荡器质量要求极高,这也推动 NR 在 60 GHz 以上采用更宽松的调制与更强的相位跟踪参考信号。
下面直观展示归一化频偏对 QPSK 星座的破坏程度。
import numpy as np N = 64 rng = np.random.default_rng(11) X = (rng.integers(0, 2, (2, N)).astype(float) * 2 - 1) X = (X[0] + 1j * X[1]) / np.sqrt(2) x = np.fft.ifft(X) def rx_with_cfo(eps, snr_db=25): n = np.arange(N) x_rot = x * np.exp(1j * 2 * np.pi * eps * n / N) # 时域频偏 snr = 10 ** (snr_db / 10) noise = rng.normal(0, np.sqrt(0.5 / snr), N) + 1j * rng.normal(0, np.sqrt(0.5 / snr), N) Y = np.fft.fft(x_rot + noise) / np.sqrt(N) # 接收 FFT return Y for eps in [0.0, 0.05, 0.15, 0.3]: Y = rx_with_cfo(eps) err = np.mean(np.stack([(Y.real > 0), (Y.imag > 0)], 1).flatten() != np.stack([(X.real > 0), (X.imag > 0)], 1).flatten()) print(f"归一化频偏 ε={eps:.2f} QPSK 误符号率 ≈ {err:.3f}")
可以看到,ε 超过 0.1 后误码迅速恶化,这正是同步电路要把 CFO 压制到子载波间隔 1% 以内的原因。