阅读导引:本文面向1-3年经验的通信工程师,从"为什么需要这些技术"出发,用类比和图解拆解信号处理中三大核心模块——FFT/IFFT(时频域桥梁)、LDPC码(数据信道保护伞)、Polar码(控制信道利器)。读完本文,你将理解5G物理层信号处理链的底层逻辑,而不是死记公式。
想象你给远方朋友写了一封信。你得先把意思组织好(信源编码),然后加上防伪标记和校验码(信道编码),再翻译成对方能读懂的语言(调制),最后通过邮局寄出(射频发射)。
信号处理就是中间那段"加校验码 + 翻译"的过程。它要解决两个根本问题:
整条5G物理层信号处理链如下:
原始数据 → CRC校验 → 信道编码(LDPC/Polar) → 速率匹配 → 调制(QAM)
→ 层映射 → 预编码 → 资源映射 → IFFT → 加CP → 射频发射
下面我们逐模块拆解。
你听一段交响乐,听到的是随时间变化的声压波形(时域)。但一个训练有素的音乐家能分辨出"小提琴在高音区、大提琴在低音区"——这就是频域视角。
傅里叶变换就是那双"音乐家的耳朵":它能把任意一段时域信号拆解成不同频率的正弦波分量。
$$X(f) = \int_{-\infty}^{\infty} x(t) \cdot e^{-j2\pi ft} \, dt$$
反过来,逆傅里叶变换(IFFT)就是把各个频率的音符重新合成为一段完整的音乐。
$$x(t) = \int_{-\infty}^{\infty} X(f) \cdot e^{j2\pi ft} \, df$$
OFDM(正交频分复用)的核心思想是:把高速数据流分成N路低速数据流,分别调制到N个相互正交的子载波上并行传输。
如果用硬件来实现:你需要N个振荡器(混频器),每路子载波一个。当N=4096(5G NR最大FFT点数)时,这完全不可行。
IFFT的妙处在于:它是一个纯数字运算,一个模块就能同时完成"N路子载波调制并叠加"的工作。
用一个类比:IFFT就像一个超级计算器,你告诉它"N个子载波上各自要传什么符号",它直接帮你算出"这些符号叠加后在时域长什么样"。接收端的FFT则反过来:"我收到了一段时域波形,帮我拆出每个子载波上承载的符号"。
flowchart TD
subgraph 发射端
A[数据符号<br/>S₀,S₁,...,Sₙ₋₁] --> B[IFFT]
B --> C[时域OFDM信号<br/>s₀,s₁,...,sₙ₋₁]
C --> D[加循环前缀CP]
D --> E[数模转换+射频发射]
end
subgraph 接收端
F[射频接收+模数转换] --> G[去CP]
G --> H[FFT]
H --> I[恢复符号<br/>Ŝ₀,Ŝ₁,...,Ŝₙ₋₁]
end
E -.->|无线信道| F
离散傅里叶变换(DFT)的原始定义:
$$X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j\frac{2\pi}{N}kn}, \quad k = 0, 1, \ldots, N-1$$
直接计算需要 $O(N^2)$ 次复数乘法。当N=4096时,就是约1600万次乘法——太慢了。
FFT(快速傅里叶变换)利用了旋转因子 $W_N^{kn} = e^{-j\frac{2\pi}{N}kn}$ 的对称性和周期性,通过分治策略把复杂度降到 $O(N\log_2 N)$:
| FFT点数 N | DFT复杂度 N² | FFT复杂度 Nlog₂N | 加速比 |
|---|---|---|---|
| 64 | 4,096 | 384 | 10.7× |
| 256 | 65,536 | 2,048 | 32× |
| 1024 | 1,048,576 | 10,240 | 102× |
| 4096 | 16,777,216 | 49,152 | 341× |
N越大,FFT的加速效果越惊人。这就是为什么5G NR能用多达4096点的FFT实现数百个子载波的并行处理。
5G NR中FFT点数不是固定的,取决于子载波间隔(SCS)和信道带宽:
| 参数 | 典型值 |
|---|---|
| 子载波间隔 | 15kHz / 30kHz / 60kHz / 120kHz |
| 采样率 | $f_s = N_{FFT} \times \Delta f$ |
| 有效子载波数 | 取决于带宽(如100MHz对应273个RB) |
| FFT点数 | 通常是2的幂次,≥有效子载波数 |
调试陷阱:在做OFDM接收机调试时,如果FFT窗口起点偏移了几个采样点,就会引入载波间干扰(ICI)和符号间干扰(ISI)。这就是为什么同步(时间和频率同步)是OFDM系统最关键的步骤之一。
1948年,香农(Claude Shannon)证明了:只要传输速率低于信道容量 $C$,就一定存在一种编码方式使得误码率任意小。
$$C = B \cdot \log_2\left(1 + \frac{S}{N}\right)$$
其中 $B$ 是带宽,$S/N$ 是信噪比。
这个定理给出了希望,但没告诉怎么构造这种码。从那以后,通信工程师花了70多年寻找逼近香农极限的实用编码方案:
timeline
title 信道编码发展历程
1950 : 汉明码 (Hamming Code)
1955 : 卷积码 (Convolutional Code)
1962 : LDPC码 (Gallager提出)
1993 : Turbo码 (Berrou等)
2009 : Polar码 (Arıkan提出)
2016 : 5G标准采纳LDPC+Polar
4G LTE使用Turbo码作为数据信道编码。但5G时代有几个新需求让Turbo码力不从心:
因此5G选择了一种混合编码策略:
| 信道类型 | 5G编码方案 | 核心原因 |
|---|---|---|
| 数据信道 (PDSCH/PUSCH) | LDPC码 | 长码、高吞吐、并行友好 |
| 控制信道 (PDCCH/PUCCH) | Polar码 | 短码、低BLER、可达容量 |
| 广播信道 (PBCH) | Polar码 | 短包传输 |
LDPC(Low-Density Parity-Check)码是一种线性分组码,由Robert Gallager在1962年提出(他的博士论文),比Turbo码早了31年!只是当年算力不够,直到1990年代才被"重新发现"。
"低密度"的含义:校验矩阵 $\mathbf{H}$ 中1的个数非常稀少。比如一个 $1000 \times 2000$ 的矩阵,可能只有约6000个1(密度0.3%)。
为什么稀疏很重要?因为稀疏意味着每个校验方程只涉及少量比特,每个比特只参与少量校验方程——这直接决定了译码算法的低复杂度和高并行性。
校验矩阵 $\mathbf{H}$ 可以用Tanner图来表示,这是理解LDPC译码的关键:
flowchart TB
subgraph Tanner图示例
direction LR
subgraph 变量节点 VN
v1((v₁))
v2((v₂))
v3((v₃))
v4((v₄))
v5((v₅))
v6((v₆))
end
subgraph 校验节点 CN
c1[c₁]
c2[c₂]
c3[c₃]
end
end
v1 --- c1
v1 --- c2
v2 --- c1
v2 --- c3
v3 --- c1
v3 --- c2
v4 --- c2
v4 --- c3
v5 --- c1
v5 --- c3
v6 --- c2
v6 --- c3
上面这个Tanner图对应的校验矩阵(部分):
$$\mathbf{H} = \begin{bmatrix} 1 & 1 & 1 & 0 & 1 & 0 \ 1 & 0 & 1 & 1 & 0 & 1 \ 0 & 1 & 0 & 1 & 0 & 1 \end{bmatrix}$$
LDPC最常用的译码算法是置信传播(Belief Propagation, BP),也叫消息传递(Message Passing)。其核心思想可以用一个生活类比:
想象6个学生(变量节点)参加3场考试(校验节点)。每场考试由几个学生共同完成,老师根据学生的表现给出反馈。学生之间不能直接交流,但可以通过老师传递"我对某个答案有多大把握"。经过多轮"考试→反馈→修正",最终大家都确定了正确答案。
具体流程:
flowchart TD
A[接收信道值<br/>初始化LLR] --> B[VN → CN<br/>传递置信信息]
B --> C[CN → VN<br/>计算外信息]
C --> D[综合判决<br/>硬判决输出]
D --> E{H·ĉᵀ = 0?}
E -->|是| F[✅ 译码成功]
E -->|否, 未达最大迭代| B
E -->|否, 达到最大迭代| G[❌ 译码失败<br/>上报错误]
5G标准定义了两个LDPC基图:
| 特性 | Base Graph 1 (BG1) | Base Graph 2 (BG2) |
|---|---|---|
| 校验矩阵大小 | 46×68 | 42×52 |
| 适用码长 | 较长(≥约308比特) | 较短(<约308比特) |
| 适用码率 | 高码率(≥约0.67) | 低码率(<约0.67) |
| 典型场景 | eMBB大数据传输 | 小包/低码率传输 |
| 支持IR-HARQ | 是 | 是 |
设计哲学:BG1针对大数据量、高吞吐优化;BG2针对小数据包、低码率优化。gNB根据传输块大小(TBS)和码率自动选择。
在哪里会遇到LDPC?
常见误解: - ❌ "LDPC码率越低越好"——码率低意味着更多冗余,频谱效率也低。实际需要在可靠性和效率之间取平衡 - ❌ "LDPC一定能纠错成功"——BP算法不保证收敛,强干扰下仍可能失败,此时依赖HARQ重传
2008年,Erdal Arıkan发现了一个深刻的现象:如果把N个相同的信道通过特定的递归变换组合,这些信道会"极化"——一部分变成完美的信道(容量=1),另一部分变成完全不可用的信道(容量=0)。
用类比理解:
想象你有100个同样的杯子(信道),每个杯子容量相同。你做了一种特殊的"配对操作"——每两个杯子合并后重新分配:一个杯子得到更多的容量,另一个失去容量。重复多次后,有些杯子变得"几乎无限大"(好信道),有些变得"几乎没有容量"(差信道)。
数学上,极化变换可以用矩阵表示。对于 $N=2$ 的最简单情况:
$$\begin{bmatrix} U_1 \ U_2 \end{bmatrix} = \begin{bmatrix} 1 & 0 \ 1 & 1 \end{bmatrix} \begin{bmatrix} X_1 \ X_2 \end{bmatrix}$$
经过这个变换后,$U_1$ 对应的合成信道容量降低,$U_2$ 对应的合成信道容量升高。扩展到 $N=2^n$,递归操作让信道容量趋向极端化(0或1)。
极化完成后,编码策略非常简单:
flowchart LR
subgraph 极化后的N个合成信道
direction TB
G1[信道1: 容量≈1 ✅]
G2[信道3: 容量≈1 ✅]
G3[信道5: 容量≈1 ✅]
G4[信道7: 容量≈1 ✅]
B1[信道2: 容量≈0 ❌]
B2[信道4: 容量≈0 ❌]
B3[信道6: 容量≈0 ❌]
B4[信道8: 容量≈0 ❌]
end
G1 --> |传信息比特| O[输出码字]
G2 --> O
G3 --> O
G4 --> O
B1 --> |固定为0<br/>冻结比特| O
B2 --> O
B3 --> O
B4 --> O
SC(Successive Cancellation)译码是最基本的Polar译码算法:
SC的问题:一旦某个比特判错,后续所有比特都会受影响(错误传播)。
SCL(SC List)译码是改进方案:同时维护L条候选路径(L=8或32),保留最可能的L种译码结果,最后选最优的。这大大提高了短码下的纠错性能。
5G NR中还使用了CRC辅助的SCL(CA-SCL):在编码前先加CRC,译码时用CRC从L条候选路径中选出正确的那条。
| 译码算法 | 复杂度 | 性能 | 5G NR使用 |
|---|---|---|---|
| SC | $O(N\log N)$ | 中等 | 基础版本 |
| SCL (L=8) | $L \cdot O(N\log N)$ | 优秀 | ✅ 主要使用 |
| CA-SCL | $L \cdot O(N\log N)$ + CRC | 最佳 | ✅ 标准方案 |
5G NR使用Polar码的场景:
| 信道 | 内容 | 典型载荷 |
|---|---|---|
| PDCCH | 下行控制信息 DCI | 20-140比特 |
| PUCCH | 上行控制信息 UCI | 12-19比特(格式2/3) |
| PBCH | 广播信息 | 32比特 |
| RAR | 随机接入响应 | 约40比特 |
为什么控制信道用Polar而不用LDPC?
| 维度 | LDPC码 | Polar码 |
|---|---|---|
| 理论性质 | 渐近逼近香农极限 | 严格证明可达香农极限 |
| 最佳码长 | 中长码(数百~数千比特) | 短码(数十~数百比特) |
| 译码方式 | 置信传播(BP),迭代 | SC/SCL,顺序 |
| 并行性 | 高(节点间可并行) | 较低(顺序依赖) |
| 吞吐量 | 极高(数十Gbps) | 中等 |
| 码率灵活性 | 优秀(支持增量冗余HARQ) | 有限 |
| 5G应用 | 数据信道 PDSCH/PUSCH | 控制信道 PDCCH/PUCCH/PBCH |
| 提出时间 | 1962年(Gallager) | 2009年(Arıkan) |
| 标准成熟度 | 多标准验证(WiFi/5G) | 5G首次大规模商用 |
让我们把FFT/IFFT和信道编码放在完整的5G下行处理链中看:
flowchart TB
subgraph 发射端基带处理
A[传输块 TB] --> B[CRC附加]
B --> C[信道编码<br/>LDPC: 数据<br/>Polar: 控制信息]
C --> D[速率匹配<br/>打孔/重复]
D --> E[调制映射<br/>QPSK/16QAM/64QAM/256QAM]
E --> F[层映射与预编码<br/>MIMO处理]
F --> G[资源映射<br/>映射到RE]
G --> H[IFFT<br/>频域→时域OFDM信号]
H --> I[加CP与DAC<br/>生成射频信号]
end
subgraph 无线信道
I -->|多径衰落+噪声| J[接收信号]
end
subgraph 接收端基带处理
J --> K[ADC与去CP]
K --> L[FFT<br/>时域→频域]
L --> M[信道估计与均衡]
M --> N[解调<br/>软比特LLR输出]
N --> O[信道译码<br/>LDPC BP / Polar SCL]
O --> P[CRC校验]
P --> Q[✅ 恢复传输块]
end
关键数据流转换: 1. 比特级(CRC、编码):数据被添加冗余保护 2. 符号级(调制):比特映射为复数符号 3. 采样级(IFFT/FFT):频域符号变为时域采样
每一级转换都有对应的逆操作在接收端还原。
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| 子载波功率不平 | FFT窗偏移 | 检查时间同步 |
| 星座图旋转 | 载波频偏 | 检查频率同步 |
| EVM偏高 | 采样时钟偏差 | 检查晶振精度 |
| 特定子载波无信号 | 资源映射错误 | 检查DC子载波和保护带 |
| 现象 | 可能原因 | 排查方向 |
|---|---|---|
| BLER持续高 | 码率过高或SNR过低 | 降低MCS等级 |
| HARQ重传仍失败 | LDPC迭代次数不足 | 增加BP迭代次数 |
| DCI漏检 | Polar译码失败 | 检查聚合等级(AL)配置 |
| 短包BLER高于预期 | 冻结比特序列错误 | 检查Polar码构造参数 |
fft() / ifft() 函数直接验证numpy.fft.fft() 快速原型验证Q1: FFT和DFT有什么区别? A: FFT是DFT的一种快速算法。数学结果完全相同,只是FFT利用旋转因子的对称性大幅降低了计算量,从 $O(N^2)$ 降到 $O(N\log_2N)$。N越大加速越明显(N=4096时约341倍)。工程上几乎不存在直接算DFT的场景。
Q2: LDPC码和Turbo码的本质区别是什么? A: 核心区别在于译码结构。Turbo码用两个递归系统卷积码(RSC)并行级联,依赖交织器,译码是两个SISO译码器之间的迭代;LDPC码基于稀疏校验矩阵的Tanner图,译码是在变量节点和校验节点之间的消息传递。LDPC的并行性更好,天然适合硬件加速器(GPU/FPGA/ASIC),这是5G选择它的主因。
Q3: 为什么不统一用Polar码或统一用LDPC码? A: 因为没有一种编码在所有场景下都最优。LDPC在长码、高吞吐场景下表现优异(数据信道),但在短码(几十比特)下性能不如Polar。Polar在短码下可达香农极限,但长码下译码复杂度急剧上升,且不支持增量冗余HARQ。所以5G采取了"术业有专攻"的混合方案。
Q4: 信道编码中的"码率"是什么意思?它怎么影响系统性能? A: 码率 $R = k/n$,其中 $k$ 是信息比特数,$n$ 是编码后总比特数(含冗余)。码率越低,冗余越多,纠错能力越强,但频谱效率也越低。5G中gNB根据信道质量(CQI/RI)动态调整MCS,其中就包含码率的选择——好信道用高码率提效率,差信道用低码率保可靠。
Q5: 在实际项目中如何选择FFT点数? A: FFT点数 $N_{FFT}$ 由采样率和子载波间隔决定:$N_{FFT} = f_s / \Delta f$。在5G NR中,$f_s$ 由信道带宽和SCS决定。通常 $N_{FFT}$ 取≥有效子载波数的下一个2的幂次。比如100MHz带宽、30kHz SCS配置下,有效子载波约3276个,$N_{FFT}$ 取4096。零填充部分对应保护带和直流子载波。
本文由「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 等场景全覆盖。
