想象你听到一段钢琴和弦——三个键同时按下,耳朵听到的是一个"整体声音"。但你的大脑其实能分辨出其中包含了哪些音符。这个"把混合声音拆成独立频率成分"的过程,就是傅里叶变换在做的事情。
在移动通信中,基站发出的射频信号同样是一个"混合体"——它包含了成百上千个用户的数据、导频信号、控制信息,全部叠加在一起。如果不能把这个混合信号精准地拆解开来,通信根本无法实现。
信号处理就是通信系统的"底层算力"。它包含两大核心任务:
| 任务 | 含义 | 关键技术 |
|---|---|---|
| 信号变换 | 在时域和频域之间转换,实现多载波调制 | FFT / IFFT |
| 差错控制 | 在噪声信道中保护数据完整性 | LDPC码 / Polar码 |
本文将从直觉出发,用图解方式拆解这四大技术原理,让读者不仅知道"怎么用",更理解"为什么这样设计"。
牛顿用三棱镜把白光拆成彩虹,证明白光是多种颜色(频率)的混合。傅里叶变换就是数学上的"三棱镜":
时域信号(看到波形随时间变化)
⇅ FFT(拆解)
频域信号(看到包含哪些频率成分)
⇅ IFFT(合成)
时域信号(恢复原始波形)
离散傅里叶变换(DFT)将长度为N的时域序列 ${x[0], x[1], \ldots, x[N-1]}$ 变换为频域序列 ${X[0], X[1], \ldots, X[N-1]}$:
$$X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j \frac{2\pi}{N} k n}, \quad k = 0, 1, \ldots, N-1$$
逆变换(IDFT):
$$x[n] = \frac{1}{N} \sum_{k=0}^{N-1} X[k] \cdot e^{j \frac{2\pi}{N} k n}, \quad n = 0, 1, \ldots, N-1$$
为什么DFT不够用? 直接按公式计算,复杂度是 $O(N^2)$。当 $N=1024$ 时需要约100万次复数乘法。在5G系统中,OFDM的FFT点数可能高达4096甚至更大,按 $O(N^2)$ 实时处理根本不可能。
FFT(快速傅里叶变换) 的核心思想是分治(Divide and Conquer):
把一个N点的DFT,拆成两个N/2点的DFT,递归分解直到只剩1点。
graph TD
A["N点DFT<br/>O(N²)"] --> B["偶数序号样本<br/>N/2点DFT"]
A --> C["奇数序号样本<br/>N/2点DFT"]
B --> D["N/4点DFT"]
B --> E["N/4点DFT"]
C --> F["N/4点DFT"]
C --> G["N/4点DFT"]
D --> H["...直到1点DFT<br/>直接就是数据本身"]
E --> H
F --> H
G --> H
style A fill:#ff6b6b,color:#fff
style H fill:#4ecdc4,color:#fff
复杂度对比:
| 方法 | 复杂度 | N=1024时运算量 | N=4096时运算量 |
|---|---|---|---|
| 直接DFT | $O(N^2)$ | ~100万次 | ~1600万次 |
| FFT | $O(N \log_2 N)$ | ~1万次 | ~4.8万次 |
| 加速比 | — | 约100倍 | 约330倍 |
这就是1965年Cooley-Tukey算法的伟大之处:它让傅里叶变换从"数学理论"变成了"工程实用"。
这是很多初学者的困惑点:为什么OFDM发射端用IFFT而不是FFT?
直觉理解:
graph TD
subgraph 发射端
A1["比特流"] --> A2["QAM映射<br/>(频域符号)"]
A2 --> A3["IFFT<br/>频域→时域"]
A3 --> A4["加循环前缀CP"]
A4 --> A5["DAC→射频发射"]
end
subgraph 空中接口
A5 -->|无线信道| B1["天线接收<br/>ADC采样"]
end
subgraph 接收端
B1 --> B2["去CP"]
B2 --> B3["FFT<br/>时域→频域"]
B3 --> B4["信道均衡"]
B4 --> B5["QAM解调<br/>→比特流"]
end
style A3 fill:#ff9f43,color:#fff
style B3 fill:#54a0ff,color:#fff
类比: 想象一支合唱团。IFFT是"指挥"——把每个人(子载波)要唱的音符(数据符号)合成为统一的声音(时域波形)。FFT是"耳朵"——从听到的混合声中分辨出每个人唱的是什么。
在5G NR中,FFT大小 $N_{FFT}$ 与子载波间隔(SCS)和信道带宽直接相关:
| 参数 | 关系 |
|---|---|
| 采样率 $f_s$ | $f_s = N_{FFT} \times \Delta f$,其中 $\Delta f$ 是子载波间隔 |
| 有用子载波数 | 不超过 $N_{FFT}$,通常小于 $N_{FFT}$(留保护频带) |
| CP长度 | $N_{FFT} / (1 + \text{CP比例})$ 的一个OFDM符号中有用部分占的比例 |
| 5G NR典型配置 | 带宽 | SCS | FFT大小 | 有用子载波 |
|---|---|---|---|---|
| 100MHz | 100MHz | 30kHz | 4096 | 3276 |
| 50MHz | 50MHz | 15kHz | 4096 | 3168 |
| 10MHz | 10MHz | 15kHz | 1024 | 600 |
实战意义: FFT点数越大,频域分辨率越高(子载波越窄),但时域OFDM符号越长,时延也越大。这就是为什么5G支持灵活的 numerology(子载波间隔可配),让系统在高分辨率和低时延之间灵活取舍。
无线信道是一个极其恶劣的传输环境:
如果直接把原始数据发出去,接收端大概率会收到错误比特。信道编码的思路是:
在发送前,给数据加上"冗余校验信息"。接收端利用这些冗余信息来发现和纠正错误。
这就像寄快递时在箱子里塞泡沫——虽然增加了体积(开销),但保护了内容物(数据)的完好。
编码效率(码率) 的定义:
$$R = \frac{K}{N}$$
其中 $K$ 是信息比特数,$N$ 是编码后的总比特数。码率越低,冗余越多,保护越强,但有效传输速率也越低。
| 代际 | 数据信道编码 | 控制信道编码 | 核心突破 |
|---|---|---|---|
| 2G GSM | 卷积码 | 卷积码 | 引入纠错编码概念 |
| 3G WCDMA | Turbo码 | 卷积码 | Turbo码逼近香农极限 |
| 4G LTE | Turbo码 | 咬尾卷积码 | Turbo码成熟应用 |
| 5G NR | LDPC码 | Polar码 | 两种码分工协作,各司其职 |
5G为什么抛弃Turbo码?
Turbo码在4G时代表现优异,但它有两个致命短板: 1. 高吞吐量场景性能瓶颈:Turbo码的串行迭代译码结构难以并行化,无法支撑5G eMBB场景20Gbps的峰值速率 2. 短码性能不足:在URLLC等短包场景下,Turbo码性能明显下降
3GPP的最终决策:
graph TB
subgraph "5G NR信道编码架构"
A["待传输数据"] --> B{"数据类型?"}
B -->|"数据信道<br/>PDSCH/PUSCH"| C["LDPC编码<br/>擅长: 大块数据、高吞吐"]
B -->|"控制信道<br/>DCI/UCI"| D["Polar编码<br/>擅长: 短包、高可靠"]
C --> E["调制 → IFFT → 发射"]
D --> E
end
style C fill:#ff6348,color:#fff
style D fill:#7bed9f,color:#333
LDPC(Low-Density Parity-Check,低密度奇偶校验码)的故事极具戏剧性:
教训: 一个技术从理论提出到工程实用,可能需要50年。好的理论不怕等。
LDPC码的核心是一个稀疏的校验矩阵 H("低密度"指的是矩阵中1的密度很低):
$$\mathbf{H} \cdot \mathbf{c}^T = \mathbf{0}$$
其中 $\mathbf{c}$ 是有效码字。所有满足这个方程的向量 $\mathbf{c}$ 都是合法码字。
例子: 一个简单的(6,3) LDPC码校验矩阵:
$$H = \begin{bmatrix} 1 & 1 & 0 & 1 & 0 & 0 \ 0 & 1 & 1 & 0 & 1 & 0 \ 1 & 0 & 0 & 0 & 1 & 1 \ 0 & 0 & 1 & 1 & 0 & 1 \end{bmatrix}$$
矩阵中只有少量"1",大部分是"0"——这就是"低密度"的含义。
校验矩阵 H 可以用Tanner图(二部图)来可视化:
graph LR
subgraph "变量节点 (Variable Nodes) — 代表码字比特"
V1["c₁"]
V2["c₂"]
V3["c₃"]
V4["c₄"]
V5["c₅"]
V6["c₆"]
end
subgraph "校验节点 (Check Nodes) — 代表校验方程"
C1["f₁"]
C2["f₂"]
C3["f₃"]
C4["f₄"]
end
V1 --- C1
V1 --- C3
V2 --- C1
V2 --- C2
V3 --- C2
V3 --- C4
V4 --- C1
V4 --- C4
V5 --- C2
V5 --- C3
V6 --- C3
V6 --- C4
style V1 fill:#74b9ff,color:#333
style V2 fill:#74b9ff,color:#333
style V3 fill:#74b9ff,color:#333
style V4 fill:#74b9ff,color:#333
style V5 fill:#74b9ff,color:#333
style V6 fill:#74b9ff,color:#333
style C1 fill:#fd79a8,color:#fff
style C2 fill:#fd79a8,color:#fff
style C3 fill:#fd79a8,color:#fff
style C4 fill:#fd79a8,color:#fff
类比理解: 变量节点是"学生",校验节点是"考试"。每场考试检查几个学生的答案是否一致。如果某学生出错(比特翻转),通过多场考试之间的信息交换(消息传递),就能定位并纠正错误。
LDPC的译码不是"一次算出答案",而是通过迭代消息传递逐步收敛到正确码字:
sequenceDiagram
participant Channel as 信道接收端
participant VN as 变量节点
participant CN as 校验节点
Channel->>VN: 初始化LLR值<br/>(基于接收信号)
loop 迭代 (通常5~30次)
VN->>CN: 传递"我认为这个比特是0还是1"<br/>(Variable-to-Check消息)
CN->>VN: 传递"根据校验方程,建议修正"<br/>(Check-to-Variable消息)
Note over VN: 更新每个比特的后验概率
end
VN->>Channel: 输出硬判决结果<br/>(所有校验方程满足则成功)
关键术语解释:
5G中的LDPC码不是"通用"LDPC,而是经过精心定制的QC-LDPC(准循环LDPC):
| 设计特点 | 说明 |
|---|---|
| 两张基图 | BG1(大块、高速率)、BG2(小块、低速率) |
| 移位值矩阵 | 基图中的每个"1"被替换为一个循环移位单位矩阵,利于硬件并行 |
| 速率匹配 | 支持打孔(Puncturing)、缩短(Shortening)、重复(Repetition) |
| IR-HARQ兼容 | 增量冗余HARQ重传时,只需发送额外的校验比特 |
BG1 vs BG2选择逻辑:
| 条件 | 使用BG1 | 使用BG2 |
|---|---|---|
| 传输块大小 $TBS \leq 292$ | — | ✅ |
| 传输块大小 $292 < TBS \leq 3824$ 且码率 $R \leq 0.67$ | — | ✅ |
| 其他情况 | ✅ | — |
实战提示: 调试5G数据信道问题时,如果看到BLER(误块率)异常偏高,要检查:是否选择了错误的基图?打孔模式是否正确?LDPC迭代次数是否足够?
Polar码由土耳其学者Erdal Arıkan于2009年提出,其核心思想是一种反直觉的信道极化(Channel Polarization):
把N个相同的信道,通过特定的编码变换,变成两类极端信道—— 一部分变成"完美信道"(容量→1),另一部分变成"废信道"(容量→0)。 信息比特只放在完美信道上传输,废信道发送固定的"冻结比特"。
graph TD
A["N个相同的<br/>原始信道<br/>(容量=W)"] -->|"极化变换"| B["一部分信道<br/>容量→1<br/>★ 可靠信道<br/>(放信息比特)"]
A -->|"极化变换"| C["一部分信道<br/>容量→0<br/>✗ 不可靠信道<br/>(放冻结比特)"]
B --> D["信息比特在可靠信道<br/>上安全传输"]
C --> E["冻结比特=固定值<br/>接收端已知"]
style B fill:#2ecc71,color:#fff
style C fill:#e74c3c,color:#fff
style A fill:#f39c12,color:#fff
数学直觉: 极化变换的核心矩阵是:
$$F = \begin{bmatrix} 1 & 0 \ 1 & 1 \end{bmatrix}$$
对于 $N=2^n$ 的极化码,生成矩阵为:
$$G_N = B_N \cdot F^{\otimes n}$$
其中 $B_N$ 是比特反转置换矩阵,$F^{\otimes n}$ 表示矩阵 $F$ 的 $n$ 次Kronecker积(张量积)。
$N=2$ 的最简例子:
$$\begin{bmatrix} u_1 \ u_2 \end{bmatrix} \xrightarrow{F} \begin{bmatrix} x_1 \ x_2 \end{bmatrix} = \begin{bmatrix} u_1 \oplus u_2 \ u_2 \end{bmatrix}$$
经过信道传输后: - $x_2 = u_2$ 直接经过一个信道 → 可靠性不变 - $x_1 = u_1 \oplus u_2$ 需要从"两个信道的联合"中恢复 → 可靠性下降
递归执行这个过程,随着N增大,信道逐渐两极分化。
Polar码 $\mathcal{P}(N, K)$ 的编码($N$ = 码长,$K$ = 信息比特数):
graph LR
A["输入向量 u"] --> B["位置0: 冻结比特 0"]
A --> C["位置1: 冻结比特 0"]
A --> D["位置2: 信息比特 d₁"]
A --> E["位置3: 信息比特 d₂"]
A --> F["位置4: 冻结比特 0"]
A --> G["位置5: 信息比特 d₃"]
A --> H["位置6: 信息比特 d₄"]
A --> I["位置7: 信息比特 d₅"]
B & C & D & E & F & G & H & I --> J["× 生成矩阵 G₈"]
J --> K["编码输出 x₁...x₈"]
style D fill:#2ecc71,color:#fff
style E fill:#2ecc71,color:#fff
style G fill:#2ecc71,color:#fff
style H fill:#2ecc71,color:#fff
style I fill:#2ecc71,color:#fff
style B fill:#e74c3c,color:#fff
style C fill:#e74c3c,color:#fff
style F fill:#e74c3c,color:#fff
基本SC译码: 逐比特顺序译码。对冻结位直接设为已知值;对信息位,根据之前已译出的比特和接收信号计算LLR,做硬判决。
问题: SC译码是串行的——一个比特译错,后续所有比特都受影响(错误传播)。
解决方案——SCL(SC List)译码:
同时维护L条候选路径,保留"最有可能"的L条,最终选择CRC校验通过的那条。
| 参数 | SC | SCL (L=8) |
|---|---|---|
| 复杂度 | $O(N \log N)$ | $O(L \cdot N \log N)$ |
| 性能 | 中等 | 接近最大似然译码 |
| 适用场景 | 理论分析 | 5G NR实际使用 |
5G NR使用CRC辅助的SCL译码(CA-Polar): 发送前在信息比特上附加CRC,译码时用CRC辅助路径选择——只有CRC校验通过的路径才被选为最终结果。这相当于给Polar译码加了一层"质量检验"。
| 参数 | 下行控制信息DCI | 上行控制信息UCI |
|---|---|---|
| 最大码长 | 512 | 1024 |
| CRC长度 | 24位(分布式) | 6/11位 |
| 载荷大小 | ≥12比特用CA-Polar | ≥12比特用CA-Polar |
| 小载荷(<12比特) | PC-Polar | PC-Polar |
为什么5G控制信道不用LDPC?
| 对比维度 | LDPC码 | Polar码 |
|---|---|---|
| 5G用途 | 数据信道(PDSCH/PUSCH) | 控制信道(DCI/UCI) |
| 发明时间 | 1962年(Gallager) | 2009年(Arıkan) |
| 核心思想 | 稀疏校验矩阵 + 迭代消息传递 | 信道极化 + 可靠性排序 |
| 译码算法 | 置信传播(BP) | SC列表(SCL)+ CRC辅助 |
| 强项 | 大块数据、高吞吐量 | 短包、高可靠性 |
| 弱项 | 短码性能差 | 长码复杂度高 |
| 并行性 | 高度可并行(适合硬件加速) | 串行依赖(SCL列表缓解) |
| 码率灵活性 | 灵活(支持速率匹配) | 灵活(打孔/缩短/重复) |
| 理论最优性 | 接近香农极限 | 严格达到对称容量 |
一句话总结: LDPC是"重卡"——拉得多、跑得快;Polar是"快递车"——小而精准、使命必达。
| 场景 | 可能的问题 | 排查思路 |
|---|---|---|
| OFDM解调失败 | FFT窗口同步偏差 | 检查CP范围内的定时同步 |
| 子载波间干扰(ICI) | 采样钟偏移导致失正交 | 检查晶振精度、频偏补偿 |
| 频域信道估计异常 | FFT点数配置不匹配 | 确认基带参数与协议配置一致 |
| 峰均比(PAPR)过高 | IFFT输出信号幅度波动大 | 检查子载波分配、考虑PAPR降峰 |
| 场景 | 可能的问题 | 排查思路 |
|---|---|---|
| 数据信道BLER高 | LDPC迭代次数不够 | 增大最大迭代次数(默认通常5-8次) |
| DCI漏检率高 | Polar码率匹配出错 | 检查聚合等级(AL)配置 |
| HARQ重传无法合并 | IR-HARQ冗余版本(RV)配置错误 | 确认RV序列正确 |
| 小包数据误码 | 可能误用了BG1而非BG2 | 检查传输块大小和码率 |
误解1:"FFT只是数学工具,不懂也能做通信工程"
→ FFT/IFFT是OFDM的基石,不理解它就无法理解为什么需要CP、为什么有采样钟要求、为什么子载波要正交。遇到频偏问题时,不懂FFT就无从排查。
误解2:"LDPC比Turbo码好在所有方面"
→ 在某些中等码长(500~1000比特)、中等码率场景下,成熟的Turbo码实现可能与LDPC性能相当。LDPC的优势主要体现在极大块长和极高吞吐场景。
误解3:"Polar码是华为发明的"
→ Polar码由学者Arıkan于2009年在国际学术期刊公开发表。华为在5G标准中大力推动Polar码的应用,并在此基础上有大量工程优化专利,但基础理论本身是学术界成果。
把本文所有内容串联起来,一个5G NR下行链路的完整信号处理流程如下:
graph TD
A["MAC层PDU<br/>(传输块TB)"] --> B["CRC附加<br/>(24位)"]
B --> C["码块分段<br/>+ 每段CRC"]
C --> D["LDPC编码<br/>(BG1或BG2)"]
D --> E["速率匹配<br/>(打孔/重复)"]
E --> F["码块级联"]
F --> G["加扰<br/>(小区级/UE级)"]
G --> H["QAM调制<br/>(QPSK/16QAM/64QAM/256QAM)"]
H --> I["层映射<br/>(MIMO层数)"]
I --> J["预编码<br/>(波束赋形权重)"]
J --> K["RE映射<br/>(资源网格)"]
K --> L["IFFT<br/>(频域→时域)"]
L --> M["加CP"]
M --> N["DAC → 射频 → 天线"]
style D fill:#ff6348,color:#fff
style L fill:#ff9f43,color:#fff
控制信道路径的区别: 步骤D换成"Polar编码",且载荷通常很小(几十比特),不需要码块分段。
Q1: FFT和DFT到底是什么关系?
A: FFT不是一种新的变换,它只是DFT的一种快速算法。两者计算的数学结果是相同的,区别仅在计算效率。好比从北京到上海,DFT是走国道(能到但慢),FFT是走高速公路(能到且快得多)。在通信工程中,我们说"做FFT"其实就是"用FFT算法来计算DFT"。
Q2: 为什么5G数据信道用LDPC而不用Polar码?
A: 两个原因。第一,LDPC在大块数据场景下译码性能更优,且高度可并行化,能支撑5G的Gbps级吞吐量。第二,Polar码在长码场景下的SCL译码复杂度随列表大小L线性增长,硬件实现代价太高。标准制定时的仿真数据也证实了LDPC在高码率、大块长下的优势。
Q3: LDPC码的"低密度"到底有多稀疏?
A: 在5G NR的QC-LDPC中,基图H矩阵的行重(每行中非零元素的个数)通常只有十几到二十几个,而矩阵的总列数可能高达数百甚至数千。这意味着99%以上的元素都是0。这种极端稀疏性使得置信传播译码的每轮迭代只需处理极少的连接,从而实现高速并行译码。
Q4: 工程上如何选择FFT点数?
A: FFT点数由系统的采样率和子载波间隔共同决定:$N_{FFT} = f_s / \Delta f$。5G NR中,基带参数集(numerology)确定了子载波间隔 $\Delta f = 15 \times 2^\mu$ kHz($\mu=0,1,2,3,4$),然后根据信道带宽确定采样率,进而确定FFT点数。实际配置中,3GPP已经为每种带宽和SCS组合定义了推荐参数,工程师不需要自己计算。
Q5: Polar码的"冻结比特"为什么不放随机值?
A: 冻结比特必须放已知固定值(通常为0),因为接收端译码器需要"已知这些比特是什么"才能正确译出信息比特。如果冻结比特是随机的且接收端不知道,译码器就无法区分"信息位上的变化"和"冻结位上的噪声"——就好比考试答案中混入了无法识别的题目,评分就乱了。
本文由「51学通信」技术团队出品。51学通信由通信行业18年老兵爱卫生(微信ID: gprshome201101)维护,聚焦5G/6G核心网、3GPP标准解读、通信前沿技术深度分析。 出版作品有《5G核心网原理与实践》《IMS原理与实践》等4本通信专业书籍。知识星球「51学通信」提供深度技术答疑和行业洞察。
[!tip] 51学通信知识星球 星主:爱卫生(微信:gprshome201101)——公众号「51学通信」创办者,19 年通信行业运维与讲师经验,著有《GPRS网络信令实例详解》《EPC原理与实践》《5G核心网原理与实践》三本纸质书(各大电商平台有售)。 星球定位:深耕 5G 核心网、IMS、NFV/AI、云原生等 ICT 领域,主打运维岗位与信令分析。 当前规模:5200 篇主题 / 990 个回答,198 元/年。 加入福利:加入星球后请加爱卫生微信,拉您进知识星球年度陪伴与答疑群——不限量回复您的各种问题,另有群内分享。 AI 加持:51学通信知识星球已作为 skill 接入 WorkBuddy,使用 deepseek-4-flash 在海量星球帖子中精准找贴、找视频、找 FAQ 和案例,做总结、找文档和 PPT 等场景全覆盖。
