【PUSCH番外篇】5G NR 相位补偿与频移校正:原理、流程与工程实现

【PUSCH番外篇】5G NR 相位补偿与频移校正:原理、流程与工程实现

5G NR 引入了 BWP(部分带宽) 技术,允许终端只使用基站整个载波带宽中的一部分进行通信。这带来了极大的灵活性,但也制造了一个 LTE 时代不需要面对的问题:基站发射载波的中心频率 f0f_0f0 与终端 BWP 的中心频率 f1f_1f1 可以不同 。这个 MHz 级的固定频差会在接收端引起符号间相位跳变,严重时甚至破坏 OFDM 子载波正交性。3GPP 为此定义了一套分层协同的补偿机制,其核心思想是:发射端用 f0f_0f0 做预补偿,接收端用 f1f_1f1 做后补偿,将符号间相位跳变消除 ,最后在数字域解决残留的频偏 Δf\Delta fΔf。本文将从问题根源、数学推导、工程方法以及仿真验证进行全面阐述。


1. 问题的起源:BWP 导致的中心频点不一致

在 NR 中,基站以一个宽带载波的中心频率 f0f_0f0 为射频参考,而终端只被分配了其中一段 BWP,其中心频率 f1f_1f1 可能与 f0f_0f0 不同。终端为了降低射频通道带宽、滤波器和混频器的成本与功耗,会将本振调谐到 f1f_1f1 上。这样收发之间就存在一个固定的频率差

Δf=f0−f1 \Delta f = f_0 - f_1 Δf=f0−f1

这个差值是由资源配置决定的,幅度可达数 MHz,且在通信过程中保持不变。它与晶振偏差或多普勒引起的"载波频偏"性质完全不同,后者通常是缓慢变化且幅度在 kHz 级以下的随机量。

忽略信道和噪声,基站发射一个 OFDM 符号的基带信号为 sl(t)s_l(t)sl(t),上变频后发射,终端用 f1f_1f1 下变频,得到基带信号:

rl(t)=sl(t)⋅ej2πΔft r_l(t) = s_l(t) \cdot e^{j2\pi \Delta f t} rl(t)=sl(t)⋅ej2πΔft

对第 lll 个 OFDM 符号,其有用部分(FFT 窗口)的起始时刻 Tl=tl,start+TCP,lT_l = t_{l,\text{start}} + T_{CP,l}Tl=tl,start+TCP,l 随着符号编号 lll 不断累积,因此每个符号的初始相位 ϕl=2πΔf⋅Tl\phi_l = 2\pi \Delta f \cdot T_lϕl=2πΔf⋅Tl 也在逐符号线性变化 。这相当于给每个 OFDM 符号乘上了一个不断旋转的因子 ejϕle^{j\phi_l}ejϕl,导致星座图发散旋转,信道估计和频偏跟踪完全失效。

问题的本质在于:OFDM 的符号分段特性将一个连续的频率偏移截断成了各符号不同的初相,破坏了符号间的相位连续性。


2. 3GPP 的解决方案:收发双方"各补各的"

3GPP 在 TS 38.211 5.4 节中规定,除 PRACH 和 RIM-RS 外,所有信道均须进行符号级相位补偿 。设计思想是:先将符号间相位跳变消除,使 Δf\Delta fΔf 变为所有符号共有的一个连续旋转,随后再专门解决这个残留频偏。

2.1 发射端预补偿

发射端在上变频前,对每个 OFDM 符号乘以一个相位因子 e−j2πf0Tle^{-j2\pi f_0 T_l}e−j2πf0Tl,等效于将上变频的载波表达式改为 ej2πf0(t−Tl)e^{j2\pi f_0 (t - T_l)}ej2πf0(t−Tl)。这样一来,无论之前过去了多少时间,每个符号在进入有用部分的时刻 t=Tlt = T_lt=Tl 时,t−Tl=0t - T_l = 0t−Tl=0,载波相位刚好为零。所有符号的有用部分都以相同的零初相开始,切断了符号间相位的累积关系。

举例 :设一个符号 CP 长 144 个样点,有用部分长 2048 点。Tl=tl,start+144T_l = t_{l,\text{start}} + 144Tl=tl,start+144。在 t=Tlt = T_lt=Tl 时,相位为 0。每个符号都如此重置。

2.2 接收端后补偿

终端用 f1f_1f1 下变频后,在数字基带对每个符号乘以 e+j2πf1Tle^{+j2\pi f_1 T_l}e+j2πf1Tl。结合发射端预补偿,整个基带信号变为:

zl(t)=sl(t)⋅ej2πΔf(t−Tl) z_l(t) = s_l(t) \cdot e^{j2\pi \Delta f (t - T_l)} zl(t)=sl(t)⋅ej2πΔf(t−Tl)

定义符号内局部时间 t′=t−Tlt' = t - T_lt′=t−Tl(在有用部分内 0≤t′<Tu0 \le t' < T_u0≤t′<Tu),则:

zl(t′)=sl(t′)⋅ej2πΔft′ z_l(t') = s_l(t') \cdot e^{j2\pi \Delta f t'} zl(t′)=sl(t′)⋅ej2πΔft′

表达式中不再含有符号编号 lll,所有符号的有用部分都乘上了完全相同的相位旋转 ej2πΔft′e^{j2\pi \Delta f t'}ej2πΔft′,符号间的相位跳变彻底消除 。此时残留的 Δf\Delta fΔf 成为一个所有符号共享的、连续的频率偏移。


3. 残留频偏 Δf\Delta fΔf 为何不破坏子载波正交性?

残留的 Δf\Delta fΔf 幅度可达数 MHz,远超子载波间隔 15/30 kHz,直觉上会引入严重的 ICI。但事实上它不会破坏正交性 ,因为 NR 的频率栅格保证了 f0f_0f0 和 f1f_1f1 都是子载波间隔 Δfsc\Delta f_{sc}Δfsc 的整数倍,故:

Δf=Δk⋅Δfsc,Δk∈Z \Delta f = \Delta k \cdot \Delta f_{sc}, \quad \Delta k \in \mathbb{Z} Δf=Δk⋅Δfsc,Δk∈Z

将此关系代入补偿后信号 zl(t′)=sl(t′)⋅ej2πΔkΔfsct′z_l(t') = s_l(t') \cdot e^{j2\pi \Delta k \Delta f_{sc} t'}zl(t′)=sl(t′)⋅ej2πΔkΔfsct′,在 FFT 积分时:

Ym=∑kak∫0Tuej2π(k+Δk−m)Δfsct′ dt′ Y_m = \sum_k a_k \int_0^{T_u} e^{j2\pi (k + \Delta k - m) \Delta f_{sc} t'} \, dt' Ym=k∑ak∫0Tuej2π(k+Δk−m)Δfsct′dt′

由复指数正交性,积分仅在 m=k+Δkm = k + \Delta km=k+Δk 时非零,结果为:

Ym=am−Δk⋅Tu Y_m = a_{m - \Delta k} \cdot T_u Ym=am−Δk⋅Tu

解调后的子载波数据仅仅是发送端数据的循环移位 :原本在子载波 kkk 上的符号,现在跑到了子载波 k+Δkk + \Delta kk+Δk 上。子载波间的正交性被完整保留,没有任何 ICI 产生 。这为后续用频域方法解决 Δf\Delta fΔf 提供了理论依据。


4. 消除 Δf\Delta fΔf 的两种工程方法

经过收发双方的符号级相位补偿后,所有符号共享同一个残留频偏 Δf\Delta fΔf。为了将 BWP 的频谱搬回零频,使解调后的子载波数据与发送端资源映射时的子载波位置一致,需要进一步消除该频偏。工程上主要有两种方法:时域数字搬移频域 RE 重映射

4.1 时域数字频率搬移

该方法直接利用傅里叶变换的频移特性 。傅里叶变换的频移性质指出:时域信号乘以复指数 ej2πf0te^{j2\pi f_0 t}ej2πf0t 等效于频域频谱整体右移 f0f_0f0,即:

x(t)⋅ej2πf0t⟷X(f−f0) x(t) \cdot e^{j2\pi f_0 t} \quad \longleftrightarrow \quad X(f - f_0) x(t)⋅ej2πf0t⟷X(f−f0)

反之,乘以 e−j2πf0te^{-j2\pi f_0 t}e−j2πf0t 等效于频谱整体左移 f0f_0f0:

x(t)⋅e−j2πf0t⟷X(f+f0) x(t) \cdot e^{-j2\pi f_0 t} \quad \longleftrightarrow \quad X(f + f_0) x(t)⋅e−j2πf0t⟷X(f+f0)

经过符号级补偿后的信号为 zl(t′)=sl(t′)⋅ej2πΔft′z_l(t') = s_l(t') \cdot e^{j2\pi \Delta f t'}zl(t′)=sl(t′)⋅ej2πΔft′,其频谱相对于原始基带信号 sl(t′)s_l(t')sl(t′) 整体偏移了 Δf\Delta fΔf。为将其搬回原始位置,只需在时域乘以反向的复指数:

s^l(t′)=zl(t′)⋅e−j2πΔft′=sl(t′)⋅ej2πΔft′⋅e−j2πΔft′=sl(t′) \hat{s}_l(t') = z_l(t') \cdot e^{-j2\pi \Delta f t'} = s_l(t') \cdot e^{j2\pi \Delta f t'} \cdot e^{-j2\pi \Delta f t'} = s_l(t') s^l(t′)=zl(t′)⋅e−j2πΔft′=sl(t′)⋅ej2πΔft′⋅e−j2πΔft′=sl(t′)

这样即可直接得到纯净的基带信号 。在实际操作中,通常下变频后 BWP 频谱对称分布于 DC 两侧,需要将其搬移到正频率区以匹配发射端子载波映射。搬移方向和大小由 Δf\Delta fΔf 的具体数值决定,但操作本质完全一致:都是时域乘以一个复指数 。这种方法不要求 Δf\Delta fΔf 为子载波间隔的整数倍,通用性最强。该乘法在数字域逐采样点进行,计算开销可控,是大多数中高端终端的首选方案。

4.2 频域 RE 重映射

与直接搬移不同,频域 RE 重映射利用第 3 节证明的整数倍频偏性质,在频域通过索引偏移完成校正,完全省去时域乘法

  • 前提条件 :Δf\Delta fΔf 必须为子载波间隔的整数倍,即 Δk=Δf/Δfsc\Delta k = \Delta f / \Delta f_{sc}Δk=Δf/Δfsc 为整数(在 NR 频率规划下始终成立)。
  • 基本原理 :整数倍频偏仅导致子载波的循环移位,不引入 ICI,因此 FFT 之后的子载波数据已经完整保留了发送符号,只是位置发生了偏移。
  • 发射端配合 :发送端在 IFFT 前的资源映射阶段,预先将数据放置在经过 −Δk-\Delta k−Δk 偏移的子载波上,从而保证接收端 FFT 后数据正好出现在约定的目标索引范围内。
  • 接收端操作 :下变频、降采样、完成符号级相位补偿后,直接做 FFT,不进行任何时域乘法 。然后根据已知的 Δk\Delta kΔk,从 FFT 输出向量中按偏移量取出对应子载波(需考虑循环移位)。
  • 核心优势:彻底免除每个采样点的复数乘法,功耗极低,特别适合低复杂度、低成本终端。
  • 限制与保障 :严重依赖 Δk\Delta kΔk 为整数,但 NR 的频率栅格设计(所有中心频点均为 SCS 整数倍)保证了这一条件必然满足。

两种方法各有优劣,在实际产品中可根据终端处理能力和功耗约束灵活选用。下一节将通过一个具体的 MATLAB 仿真示例,展示时域数字搬移方法的完整实现过程及频谱变化。



5. 基于 MATLAB 仿真的收发处理流程

下面以仿真代码中采用的参数为例,逐步描述物理层处理流程。参数设置如下:基站带宽 40 MHz(216 RB),子载波间隔 15 kHz,发射端 IFFT 点数 4096,采样率 61.44 MHz;BWP 带宽 20 MHz(106 RB),分配在基站高频段,其射频中心频率 28.98 MHz,高于基站中心频率 19.44 MHz,频差 Δf=−9.54\Delta f = -9.54Δf=−9.54 MHz ;接收端降采样后 FFT 点数 2048,采样率 30.72 MHz;调制方式为 QPSK,单个 OFDM 符号,未模拟 CP 和信道噪声。部分核心代码如下

复制代码
clear; clc; close all;

%% 1. 基础参数
delta_f = 15e3;             % 子载波间隔 15 kHz
N_sc_RB = 12;               % 每 RB 子载波数

%% 2. 系统带宽
N_RB_gNB = 216;             % 基站 40 MHz → 216 RB
N_fft_gNB = 4096;           % 基站 IFFT 点数
Fs_gNB = N_fft_gNB * delta_f;   % 61.44 MHz

N_RB_UE = 106;              % BWP 20 MHz → 106 RB
N_fft_UE = 2048;            % UE FFT 点数
Fs_UE = N_fft_UE * delta_f;     % 30.72 MHz

N_BW = N_RB_UE * N_sc_RB;   % BWP 总子载波数 = 1272

%% 3. 频点计算(BWP 在基站高频段,中心频率高于基站中心)
f0_gNB = (N_RB_gNB/2) * N_sc_RB * delta_f;          % 基站基带中心 19.44 MHz
delta_f_correct = (N_RB_UE/2) * N_sc_RB * delta_f;  % BWP 半带宽 9.54 MHz
f_rf_center = f0_gNB + delta_f_correct;             % BWP 射频中心 28.98 MHz

fprintf('基站中心频率:%.2f MHz\n', f0_gNB/1e6);
fprintf('BWP 射频中心:%.2f MHz\n', f_rf_center/1e6);
fprintf('频差 Δf = f0 - f1:%.2f MHz\n', f0_gNB - f_rf_center);
fprintf('BWP 带宽:%.2f MHz (%d 个子载波)\n\n', N_BW*delta_f/1e6, N_BW);

%% 4. 发送端 (gNB) ------ 数据放在 IFFT 开头,子载波 0~1271
rng(123);
tx_data = randi([0 3], N_BW, 1);
tx_symbols = qammod(tx_data, 4, 'UnitAveragePower', true);

X_gNB = zeros(N_fft_gNB, 1);
X_gNB(1 : N_BW) = tx_symbols;            % 正频率 0~19.08 MHz

x_gNB_base = ifft(X_gNB, N_fft_gNB);     % 基带信号,不要 ifftshift!

5.1 发射端处理步骤

步骤1:资源映射 BWP 位于基站高频段,在基带中对应正频率子载波。因此将 1272 个 QPSK 符号放在 4096 点 IFFT 输入向量的开头位置,占用子载波 0~1271。

步骤2:IFFT 变换 直接对映射好的频域向量做 4096 点 IFFT,得到时域 OFDM 基带信号。不做任何 fftshift 或 ifftshift ,保持标准 OFDM 的子载波排列顺序。此时可在频谱图上观察到 BWP 信号占据基带的正频率部分(0~19.08 MHz)。

步骤3:上变频 将基带信号乘以 ej2πf0te^{j2\pi f_0 t}ej2πf0t,其中 f0=19.44f_0 = 19.44f0=19.44 MHz,完成上变频。此时频谱图上 BWP 信号被搬移到 19.44~38.52 MHz,即基站载波的上半部分。仿真中未单独执行发射端逐符号相位预补偿,因为对于单符号场景,该补偿退化为一个固定相位旋转,可以被后续步骤吸收或通过整体相位校正消除。

步骤4:下变频 终端将本振调至 BWP 中心频率 f1=28.98f_1 = 28.98f1=28.98 MHz,乘以 e−j2πf1te^{-j2\pi f_1 t}e−j2πf1t 完成下变频。此时频谱图上 BWP 的中心被搬到 DC,整个 BWP 对称分布于 DC 两侧(-9.54~+9.54 MHz)

步骤5:降采样 从 4096 点降到 2048 点,采样率从 61.44 MHz 降至 30.72 MHz,与 BWP 带宽匹配。仿真中采用直接抽取,未加抗混叠滤波。降采样后频谱形状保持不变,BWP 仍然位于 DC 两侧。

步骤6:时域相位补偿(合并步) 这一步对应于第 4.1 节的时域数字搬移方法,将接收端符号级后补偿与搬移合并。原理如下:

  • 下变频后,信号中含有频偏 ej2πΔfte^{j2\pi \Delta f t}ej2πΔft,其中 Δf=f0−f1=−9.54\Delta f = f_0 - f_1 = -9.54Δf=f0−f1=−9.54 MHz,BWP 频谱对称分布于 DC 两侧。
  • 为了使 BWP 占据 0~19.08 MHz(对应子载波 0~1271),需要将频谱向右搬移 9.54 MHz。
  • 根据傅里叶变换的频移特性,时域乘以 e+j2π⋅9.54MHz⋅te^{+j2\pi \cdot 9.54\text{MHz} \cdot t}e+j2π⋅9.54MHz⋅t 即可实现右移。
  • 在仿真代码中,这一步为 x_ue_raw .* exp(1j*2*pi*delta_f_correct * t_ue) ,其中 delta_f_correct = 9.54e6

频谱图上可以清楚观察到:补偿前 BWP 位于 DC 两侧,补偿后 BWP 被完整搬移到 0~19.08 MHz 。这证明通过一次简单的时域乘法即可同时完成符号相位对齐和频谱搬移

步骤7:FFT 解调与数据提取 对补偿后的信号做 2048 点 FFT。由于 BWP 已经准确位于 0~19.08 MHz,FFT 输出的前 1272 个点即对应 BWP 的全部子载波。直接取前 1272 个点即可获得接收符号,完成 QPSK 解调。


6. 仿真结果与频谱变化分析

仿真代码在关键节点插入了频谱绘图,可以完整观察信号在收发链路中的频谱搬移过程:

  • 发射端 IFFT 后 :BWP 信号占据基带正频率 0~19.08 MHz,呈现 OFDM 信号的典型平坦频谱。
  • 上变频后 :BWP 被搬移到 19.44~38.52 MHz,即基站载波的高频段,中心位于 28.98 MHz。
  • 下变频后 :BWP 中心回到 DC,频谱分布在 -9.54~+9.54 MHz,正负半轴对称。
  • 降采样后:频谱形状不变,采样率降至 30.72 MHz。
  • 时域相位补偿后 :BWP 被完整搬移到 0~19.08 MHz ,频谱右移 9.54 MHz,与发射端 IFFT 后的基带频谱完全一致

误码率计算表明,经过上述处理后 BER = 0 。星座图呈现标准的 QPSK 四个星座点,无任何旋转或发散。这验证了整个补偿流程的正确性:即使收发中心频率相差近 10 MHz,通过一次时域乘法即可将 BWP 频谱精确搬回目标位置,子载波正交性完好,解调数据无误


7. 总结

5G NR 的相位补偿机制是 BWP 灵活性的必要代价,其核心逻辑清晰且精妙:

  • 发端预补偿 用 f0f_0f0 将每个符号的载波初相归零;
  • 收端后补偿 用 f1f_1f1 对齐所有符号的初相基准,消除符号间相位跳变;
  • 残留频偏 Δf\Delta fΔf 因频率栅格保证整数倍子载波间隔,不会破坏正交性
  • 通过时域搬移频域重映射将 BWP 频谱搬回正确位置,恢复星座点。

仿真结果直观展示了这一机制的完整流程和频谱搬移过程,验证了其有效性。理解这套流程,便可准确区分 BWP 频差与硬件频偏,快速定位接收机性能瓶颈。


📢 如果本文对你有帮助,欢迎关注「手搓物理层」 首页拓展服务获取本文完整PDF + 配套MATLAB代码包。

相关推荐
满怀冰雪1 小时前
第15篇-链表基础-反转链表-合并链表与快慢指针
java·算法·链表
2zcode2 小时前
基于MATLAB语音信号变声算法设计与实现
算法·matlab·语音识别·变声算法
满怀冰雪2 小时前
第14篇-队列与单调队列-解决窗口最值问题的关键结构
java·算法
QiLinkOS2 小时前
极客精神与商业思维的融合实践(3)
c语言·c++·人工智能·算法·开源协议
bIo7lyA8v2 小时前
算法设计中的代价函数优化与约束求解的技术8
算法
暖阳华笺2 小时前
【数据结构与算法】哈希专题
数据结构·c++·算法·leetcode·哈希算法
ceclar1232 小时前
C#字节流与字符流
算法·c#·.net
大白话_NOI2 小时前
【洛谷 P1024 】[NOIP2001 提高组] 一元三次方程求解 - 详细分析与C++实现
c++·算法
Matthew_zhu_2 小时前
P3374 【模板】树状数组 1 题解
算法