你有没有这样的经历——在嘈杂的食堂里跟朋友聊天,虽然周围吵得要命,但你依然能听懂对方在说什么。你的大脑是怎么做到的?答案是上下文冗余。你不需要听清每一个字,因为语言的冗余性让你能"脑补"缺失的部分。
通信系统面对的问题一模一样:无线电波在空中传播,噪声、干扰、多径衰落时刻在摧毁你的信号。那通信系统靠什么"脑补"回来?靠的就是信道编码——一种把"聪明的冗余"塞进数据里的技术。
今天这篇文章,我们从最根本的问题出发:为什么需要纠错?冗余是怎么变成纠错能力的?5G为什么选了LDPC和Polar这两种码?它们各自的设计哲学是什么?
如果你的朋友在食堂里没听清你说的话,最简单的办法是——再说一遍。如果还不确定,那就说三遍,取多数表决。
这就是最原始的纠错编码:重复码。把一个比特"1"编码成"111",接收端收到"101",通过多数表决恢复成"1"。
但问题很明显:效率太低。说三遍只传递了一遍的信息量,效率只有1/3。在无线通信中,频谱资源比黄金还贵,你能容忍这样的浪费吗?
1948年,香农(Claude Shannon)发表了一篇改变世界的论文,其中有一个震惊所有人的结论:
只要传输速率不超过信道容量C,就一定存在一种编码方式,使得误码率可以任意小。
换句话说,你不需要无限地重复——只要方法足够聪明,你可以在接近信道极限效率的同时,做到几乎零错误。信道容量的公式是:
$$C = B \cdot \log_2(1 + \text{SNR})$$
其中B是带宽,SNR是信噪比。这个公式告诉你:每Hz带宽、在给定信噪比下,理论上最多能传多少bit/s而不出错。
香农证明了"好码"的存在,但他没告诉你怎么构造。此后的70多年,无数研究者前赴后继,试图逼近这个理论极限。从汉明码、BCH码、卷积码、Turbo码,到今天的LDPC码和Polar码,我们终于可以说:我们到达了。
timeline
title 信道编码70年进化史
1950 : 汉明码 — 第一个实用的纠错码
1960 : BCH码/RS码 — 代数编码的黄金年代
1962 : LDPC码被Gallager提出 — 但被遗忘30年
1967 : Viterbi译码 — 卷积码的黄金搭档
1993 : Turbo码 — 首次逼近香农极限(0.5dB)
2003 : LDPC码复兴 — 被纳入WiFi/卫星标准
2008 : Polar码由Arıkan提出 — 首个理论可达香农极限的码
2016 : 3GPP决定5G用LDPC+Polar
信道编码的本质操作很简单:在K个信息比特后面,附加上(N-K)个校验比特,组成N个比特的码字。这个(N, K)码的码率R = K/N。
$$\text{码率 } R = \frac{K}{N}$$
码率越低,冗余越多,纠错能力越强,但有效传输效率也越低。工程师的任务是:在给定码率下,找到纠错能力最强的编码方式。
汉明距离是两个等长二进制序列之间不同比特的个数。例如"011011"和"110001"的汉明距离是3(第1、3、5位不同)。
一个编码方案的最小汉明距离d_min决定了它能纠几个错:
$$t = \lfloor \frac{d_{\min} - 1}{2} \rfloor$$
其中t是可纠正的错误比特数。直观理解:如果所有合法码字之间的"距离"足够大,那么即使传输过程中有几个比特被翻转,接收到的序列仍然离正确的码字最近——就像"投票",最近邻就是正确答案。
在实际工程中,我们用编码增益来衡量一种编码的价值:
编码增益 = 不编码时达到目标误码率所需的SNR − 编码后达到同样误码率所需的SNR
一个优秀的编码方案可以提供8~10dB的编码增益。这意味着什么?10dB的编码增益,等价于发射功率可以降低10倍,或者覆盖距离可以扩展约3倍。这就是信道编码的巨大价值——它直接转化为覆盖、容量和功耗的优势。
| 编码增益(dB) | 等价发射功率节省 | 等价覆盖距离扩展 |
|---|---|---|
| 3 dB | 50% | 1.4x |
| 6 dB | 75% | 2.0x |
| 9 dB | 87.5% | 2.8x |
| 10 dB | 90% | 3.2x |
想象一个考试阅卷系统:
这就是LDPC码的核心思想——稀疏的校验关系网。"低密度"指的是校验矩阵H中"1"非常稀少,绝大部分是"0"。
LDPC码由一个稀疏的奇偶校验矩阵H定义。假设有一个(6,3)码:
$$H = \begin{bmatrix} 1 & 1 & 0 & 1 & 0 & 0 \ 0 & 1 & 1 & 0 & 1 & 0 \ 1 & 0 & 1 & 0 & 0 & 1 \end{bmatrix}$$
这个矩阵可以用Tanner图(二部图)来可视化——左边是变量节点(数据比特),右边是校验节点(校验方程),连线表示"参与校验":
graph LR
subgraph 变量节点 VN
v1((x1))
v2((x2))
v3((x3))
v4((x4))
v5((x5))
v6((x6))
end
subgraph 校验节点 CN
c1[校验1]
c2[校验2]
c3[校验3]
end
v1 --- c1
v1 --- c3
v2 --- c1
v2 --- c2
v3 --- c2
v3 --- c3
v4 --- c1
v5 --- c2
v6 --- c3
"低密度"的威力:每个校验节点只连2~3个变量节点,每个变量节点也只连2~3个校验节点。这种稀疏性使得迭代译码的计算量大幅降低——每一步只需要处理少量的邻居节点。
LDPC码的译码采用信念传播(Belief Propagation, BP)算法,也叫消息传递算法。它的过程像极了一群人在开会讨论:
sequenceDiagram
participant VN as 变量节点们
participant CN as 校验节点们
Note over VN,CN: 第1轮迭代
VN->>CN: 我收到的信号告诉我x1≈0.8(倾向1)
CN->>VN: 校验规则检查后,反馈"x1可能确实是1"
Note over VN,CN: 第2轮迭代
VN->>CN: 综合所有反馈,更新信念:x1≈0.95
CN->>VN: 校验一致性提高,确认"x1很大概率是1"
Note over VN,CN: 第3轮迭代
VN->>CN: 信念收敛:x1≈0.99
CN->>VN: 所有校验通过 ✅
Note over VN,CN: 输出最终判决
为什么叫"信念传播"? 每个节点维护的不是硬判决(0或1),而是一个"软信息"——我有多大把握认为这个比特是0还是1。用术语说,这叫对数似然比(LLR):
$$\text{LLR}(x_i) = \ln \frac{P(x_i = 0)}{P(x_i = 1)}$$
每一轮迭代,变量节点把自己的LLR传给相连的校验节点;校验节点根据校验方程的约束,反馈修正后的LLR。几轮下来,整个网络达成"共识",输出最终结果。
5G NR的LDPC码采用了准循环(QC-LDPC)结构,定义了两张基础图(Base Graph):
| 特性 | Base Graph 1 (BG1) | Base Graph 2 (BG2) |
|---|---|---|
| 适用场景 | 大数据包、高码率 | 小数据包、低码率 |
| 信息位长度 | 较大(最大8448 bit) | 较小(最大3840 bit) |
| 支持码率 | 1/3 ~ 8/9 | 1/5 ~ 5/6 |
| 典型用途 | eMBB大流量传输 | VoIP、小包业务 |
| 校验节点度 | 较高(连接更多变量) | 较低 |
为什么需要两张图? 因为没有一种"万能"的LDPC码能同时在所有码长和码率下都表现最优。BG1针对大数据包优化,BG2针对小数据包优化——这是一个典型的工程折中。
Polar码由土耳其学者Erdal Arıkan于2008年提出,他的发现可以用一句话概括:
通过特定的编码变换,可以将N个"一般"的信道,分裂成一些"完美"的信道和一些"完全无用"的信道。
这就是信道极化(Channel Polarization)。
用一个比喻:想象一条大河经过多次分流,最终变成了很多小溪。奇妙的是,经过足够多的分流后,有的小溪变得无比清澈(信道容量→1),有的小溪变得完全浑浊(信道容量→0)。极端的"好"和极端的"坏"出现了——中间地带消失了。
Polar码的基本构建模块是一个2×2的变换矩阵:
$$G_2 = \begin{bmatrix} 1 & 0 \ 1 & 1 \end{bmatrix}$$
对于2个输入比特(u1, u2),编码输出为:
$$(x_1, x_2) = (u_1, u_2) \cdot G_2 = (u_1 \oplus u_2, \; u_2)$$
这个看似简单的变换产生了神奇的效果:
graph TD
subgraph 输入
u1[u₁]
u2[u₂]
end
subgraph 极化变换
op["x₁ = u₁ ⊕ u₂<br/>x₂ = u₂"]
end
subgraph 合成信道
W_minus["W⁻ (差的信道)<br/>u₁同时依赖两个输出<br/>噪声被放大"]
W_plus["W⁺ (好的信道)<br/>u₂直接映射到x₂<br/>噪声被抑制"]
end
u1 --> op --> W_minus
u2 --> op --> W_plus
对于N=2的情况,u2所在的子信道W⁺比原始信道W更可靠,u1所在的子信道W⁻比W更差。这就是极化——一个变好,一个变差。
通过递归地应用2×2变换,可以扩展到任意N=2^n的码长:
$$G_N = G_2^{\otimes n} = \underbrace{G_2 \otimes G_2 \otimes \cdots \otimes G_2}_{n \text{次}}$$
其中⊗表示Kronecker积。当N足够大时(如N=1024),极化效果非常显著:
| 子信道序号(按可靠性排序) | 信道容量 | 用途 |
|---|---|---|
| 第1~200个(最差) | ≈ 0 | 放冻结位(固定为0) |
| 第201~700个(中等) | ≈ 0.5 | 过渡区域 |
| 第701~1024个(最好) | ≈ 1 | 放信息位(实际数据) |
Polar码的编码策略极其简洁:
$$\mathbf{x} = \mathbf{u} \cdot G_N$$
其中u的前K位(对应好信道的位)是信息比特,其余是冻结位。
最基本的Polar译码算法是连续消除(Successive Cancellation, SC)——逐位顺序判决:
SC译码的问题在于错误传播——如果前面某位判错了,后面所有位都可能跟着错。为此,5G采用了改进的CRC辅助SCL(CA-SCL)译码:
维护L条候选路径(类似走迷宫时同时探索L条路),每条路径都有自己的"可能性分数"。译码完成后,用CRC校验选出正确的那条路径。
L越大,性能越好,但复杂度也越高。5G中通常使用L=8的SCL译码。
graph TD
A[接收信号] --> B[SC译码器]
B --> C{是冻结位?}
C -->|是| D[直接判0]
C -->|否| E[计算LLR]
E --> F{LLR > 0?}
F -->|是| G[判为0]
F -->|否| H[判为1]
D --> I[继续下一位]
G --> I
H --> I
I --> J{所有位判完?}
J -->|否| B
J -->|是| K[CRC校验]
K -->|通过| L[输出结果 ✅]
K -->|不通过| M[从候选路径中重选]
3GPP在2016年的RAN1 #86bis和#87次会议上,经过了激烈的讨论和投票,最终决定:
这个选择不是随意的,背后有深刻的技术逻辑:
| 比较维度 | LDPC码 | Polar码 |
|---|---|---|
| 最佳码长 | 长码(1000+ bit) | 短/中码(20~1000 bit) |
| 吞吐量 | 极高(高度并行) | 中等(串行译码为主) |
| HARQ兼容 | 天然支持增量冗余 | 支持但灵活性弱 |
| 短码性能 | 一般 | 优异 |
| 长码性能 | 优异 | 距香农极限稍远 |
| 译码延迟 | 低(迭代次数少) | 较高(SCL列表搜索) |
| 实现复杂度 | 中等 | 中等 |
| 错误平底 | 有(需要精心设计避免) | 无(确定性构造) |
理由1:吞吐量碾压
5G eMBB目标速率达到Gbps级别。LDPC的并行译码结构天然适合高吞吐量——你可以同时处理几十个甚至几百个变量节点,而Polar的SCL译码路径搜索很难做到这种程度的并行。
理由2:HARQ增量冗余
5G的HARQ(混合自动重传请求)机制需要编码支持增量冗余(IR)——第一次传不完,重传时追加校验比特而不是重复发送。LDPC码的速率匹配天然支持这种操作:你可以从LDPC的校验矩阵中灵活地"截取"不同数量的校验比特来传输。
理由3:实测性能优异
在实际测试中,对于长码(>1000 bit)和中高码率(1/2以上),LDPC码的性能不仅逼近Turbo码,在高码率场景下甚至超越Turbo码。
理由1:短码就是强
控制信息(DCI/UCI)通常只有几十到几百个比特。在这个长度范围内,Polar码的性能明显优于LDPC码和TBCC码(Tail-Biting Convolutional Code,LTE控制信道使用的编码)。
理由2:没有错误平底
LDPC码在低误码率区域可能出现"错误平底"(error floor)——误码率降到一定程度后就不降了。这对数据信道可以容忍(因为上层有HARQ兜底),但控制信息不能冒这个风险。Polar码是确定性构造,不存在错误平底问题。
理由3:构造灵活
Polar码可以根据不同的码长和码率,灵活地选择信息位的位置集合。这种"按需定制"的特性非常适合控制信道码长多变的需求。
当你拿到一条BLER(Block Error Rate)vs SNR的仿真曲线时,你看到的"瀑布区"陡峭程度,很大程度上取决于信道编码的性能。
5G的MCS(Modulation and Coding Scheme)表格中,每个MCS索引对应一个调制阶数和一个码率。码率的选择直接影响覆盖和容量:
当你做链路自适应或外场优化时,理解码率背后的LDPC编码机制,能帮你判断MCS选择是否合理。
手机在搜索PDCCH时,需要对多个候选位置进行盲检(Blind Decoding)。每个候选位置的DCI都是用Polar码编码的。如果Polar译码失败(CRC校验不通过),手机会跳过这个候选位置继续搜索。
调试场景:如果手机频繁PDCCH译码失败,可能的原因包括: - 信道估计不准(导致LLR计算偏差) - 聚合等级选择不合适(控制信道重复次数不够) - 干扰突发(导致短时间内SNR骤降)
4G LTE使用Turbo码做数据信道、TBCC做控制信道。5G为什么不用了?
| 维度 | 4G (Turbo + TBCC) | 5G (LDPC + Polar) |
|---|---|---|
| 数据信道 | Turbo码 | LDPC码 |
| 控制信道 | TBCC卷积码 | Polar码 |
| 最大吞吐 | 约1 Gbps | 10+ Gbps |
| 译码并行度 | 受限(网格结构) | 高(图结构) |
| 距香农极限 | 约0.5 dB | 约0.1~0.3 dB |
| HARQ灵活性 | 一般(CB级重传) | 强(IR自然支持) |
Turbo码的核心瓶颈是吞吐量。它的译码器基于网格(Trellis)结构,每次迭代需要按顺序处理所有状态,并行度受限。当5G要求数Gbps的峰值速率时,Turbo译码器很难在合理的功耗和面积下实现。
LDPC码的消息传递译码天然适合并行——Tanner图中的每个节点可以独立地更新和传递消息。这种结构使得LDPC译码器可以用高度并行的硬件实现,轻松达到10 Gbps以上的吞吐量。
graph TD
subgraph 发送端
A[原始数据<br/>传输块 TB] --> B[CRC添加<br/>检错保护]
B --> C[码块分割<br/>大包拆小段]
C --> D{信道类型?}
D -->|数据信道| E[LDPC编码<br/>BG1或BG2]
D -->|控制信道| F[Polar编码<br/>选信息位集合]
E --> G[速率匹配<br/>截断/重复]
F --> G
G --> H[调制映射<br/>QPSK/16QAM/64QAM]
end
subgraph 信道
H --> I[无线信道<br/>噪声+干扰+衰落]
end
subgraph 接收端
I --> J[解调<br/>输出软信息LLR]
J --> K{信道类型?}
K -->|数据信道| L[LDPC译码<br/>BP迭代]
K -->|控制信道| M[Polar译码<br/>CA-SCL]
L --> N[CRC校验]
M --> N
N --> O[恢复原始数据 ✅]
end
Q: LDPC码和Turbo码的根本区别是什么?
A: 结构上的区别——Turbo码由两个或多个卷积编码器并行级联组成,译码时两个分量译码器交替迭代;LDPC码由一个稀疏校验矩阵定义,译码时在Tanner图上进行消息传递。虽然都是迭代译码,但LDPC的并行度更高,更适合高吞吐量场景。
Q: Polar码"理论可达香农极限"是什么意思?LDPC不能达到吗?
A: Polar码是第一个被数学证明在码长趋于无穷时严格达到信道容量的编码方案。LDPC码在实际中也能逼近香农极限到0.1dB以内,但它的证明依赖于随机编码论证,不是构造性证明。从工程角度看,两者性能非常接近,差异主要在短码长度场景。
Q: 为什么5G没有用统一的编码方案?
A: 因为没有一种编码在所有场景下都是最优的。数据信道的特点是码长、高吞吐、需要HARQ——LDPC的并行译码和增量冗余支持正好匹配;控制信道的特点是码短、可靠性要求极高——Polar在短码下的优势和无错误平底特性正好匹配。组合使用是工程最优解。
Q: 工程师在日常工作中哪里会直接接触到信道编码?
A: 最常见的场景是分析BLER/SINR曲线、优化MCS表格、调试HARQ重传效率、排查PDCCH漏检问题。虽然你不会手写LDPC译码器,但理解编码原理能帮你做出更准确的故障定位。
Q: 6G还会用LDPC+Polar吗?
A: 目前6G标准化还处于早期研究阶段,但已有的讨论表明:LDPC和Polar码在5G中表现优秀,大概率会继续作为基础方案。但可能会出现新的增强,例如支持更灵活的码长、更高的吞吐量(Tbps级别)、以及针对AI场景的联合信源信道编码。
本文由「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 等场景全覆盖。
