手机刷视频不卡、打电话不撕边,靠的不只是信号强,更靠一层看不见的“数学防护服”——信道编码。5G的数据通道穿着LDPC码,控制通道穿着Polar码。这两件“防护服”为什么长这样?为什么5G要同时选两个码?这篇文章从直觉讲到公式,把这件事讲透。
想象你在嘈杂的教室里给同桌传纸条:“周六去打球”。教室里人人都在说话(噪声),纸条传到同桌手里可能变成了“周六去大球”或者“周桅去打球”。只要信道有噪声,接收方收到的就不再是发送方写的原文。
数字通信里也一样:基站发出的比特"1",经过无线信道,可能因为衰落、干扰、热噪声,被手机解调成"0"。物理层能做的是尽量把信号解调准(调制解调是上一讲的主题),但永远做不到100%准。剩下的错误,就要靠信道编码来兜底。
整个数字通信系统的分工可以用一张图看清楚:
flowchart LR
A[信源<br>视频/语音数据] --> B[信源编码<br>压缩去冗余]
B --> C[信道编码<br>有规律地加冗余]
C --> D[调制<br>比特搬上电磁波]
D --> E((无线信道<br>必然引入噪声))
E --> F[解调<br>软信息:不只是0和1<br>还有"多确定"]
F --> G[信道译码<br>利用冗余纠错]
G --> H[信源译码<br>还原数据]
style C fill:#ffe0b2,stroke:#ff9800,stroke-width:3px
style G fill:#ffe0b2,stroke:#ff9800,stroke-width:3px
style E fill:#ffcdd2,stroke:#f44336
注意中间那对橙色的盒子:信源编码负责“删冗余”,信道编码负责“加冗余”——听起来矛盾,其实加的是“有结构的、能用来纠错的冗余”,删的是“没结构的、浪费的冗余”。这一删一加,就是通信系统设计的精髓。
信道编码纠错的核心思想朴素得惊人:发得多,才传得准。
最笨的办法是重复码:每个比特发3遍,"1"变成"111",接收端收到"101",少数服从多数,判为"1"。它能纠正1个错,但代价是速率只剩1/3——太浪费。好的信道编码,就是要在“加最少的冗余”和“纠最多的错”之间,逼近那个理论上的完美平衡点。
1948年,香农在创立信息论的论文里给出了一个反直觉的结论:再吵的信道,只要速率不超过某个上限,就一定存在一种编码方式能让误码率任意低。 这个上限就是信道容量:
$$C = B \log_2 \left( 1 + \frac{S}{N} \right)$$
其中 $B$ 是带宽,$S/N$ 是信噪比。这个公式有两层含义,工程师必须都记住:
用个类比:香农告诉你“这座山一定有登顶的路”,但没给地图。此后数十年的编码研究,就是一代代人拿着不同的路线图爬山——卷积码爬到了半山腰,Turbo码1993年首次几乎登顶(当年还差点被学术界轰下台,因为作者来自电路方向而非编码理论方向,且拿不出优雅的理论解释),而LDPC其实早在1960年就发明了,却因算力不够被雪藏了三十多年。
LDPC(Low-Density Parity Check,低密度奇偶校验码)由MIT博士生Robert Gallager在1960年的博士论文中提出。它的想法可以拆成两句话:
收到一串比特后,校验方程组是:
$$H \cdot x^T = 0$$
如果算出来不为零(称为“校验子/syndrome”非零),说明出错了,而且从哪些校验方程不满足,还能定位出错的概率分布。
把校验约束画成一张二部图,就是LDPC的灵魂——Tanner图:上面一排是变量节点(每个比特一个),下面一排是校验节点(每个校验方程一个),连线表示“这个比特参与了这个校验”。
graph TB
subgraph 变量节点 比特
V1[x1] --- V2[x2] --- V3[x3] --- V4[x4] --- V5[x5] --- V6[x6]
end
subgraph 校验节点 奇偶约束
C1[c1: x1+x2+x3+x4=0]
C2[c2: x3+x4+x6=0]
C3[c3: x1+x4+x5=0]
end
V1 --- C1
V2 --- C1
V3 --- C1
V4 --- C1
V3 --- C2
V4 --- C2
V6 --- C2
V1 --- C3
V4 --- C3
V5 --- C3
style C1 fill:#e3f2fd,stroke:#2196f3
style C2 fill:#e3f2fd,stroke:#2196f3
style C3 fill:#e3f2fd,stroke:#2196f3
译码时,接收端拿到的不是硬邦邦的0/1,而是软信息(LLR,对数似然比):
$$LLR(x) = \ln \frac{P(y \mid x=0)}{P(y \mid x=1)}$$
LLR的绝对值越大,表示“这个比特是0还是1”越确定;符号表示判断。译码就在Tanner图上做消息传递(置信传播),每一轮:
MIT的Forney教授给这个过程起过一个绝妙的类比——谣言闭路:如果一张图里环太短,某个比特的“谣言”转两圈就绕回自己,被自己重复相信了,置信度虚高,译码就崩了。LDPC要求“谣言传遍全世界才能绕回你耳边”——即图中环要尽量长,这正是稀疏+伪随机构码的设计动机。
一组比特中只要有两位信息可靠,第三个比特的值就能通过校验被“推理”出来——这是迭代译码能层层纠错的直觉来源。
因为1960年的计算机根本跑不动迭代译码。Gallager自己都说:设计这个码的初衷恰恰是想找个“实际可译”的好码,但当时的算力撑不住线性复杂度的迭代计算。直到1990年代,Turbo码的横空出世让学界疯狂研究迭代译码,人们才惊觉:30年前的LDPC就是同样的思路,而且性能更好。加上Turbo码专利收费而LDPC专利早已过期,LDPC迅速占领了Wi-Fi、DVB-S2卫星电视、10G以太网、SSD固态硬盘,最后拿下5G数据信道。
LDPC是“工程直觉”的产物(画一张好图,剩下的交给迭代),而Polar码是纯数学构造的产物。2009年,土耳其Bilkent大学教授Erdal Arıkan(Gallager的学生)发表论文《信道极化》,给出了第一个被数学证明能达到信道容量的编码方案。
它的核心思想一句话能说完:把 $N$ 个相同的物理信道,通过特定的线性变换组合再拆分,变成 $N$ 个质量各异的“虚拟信道”——一半变得近乎完美,一半变得近乎全废。然后把宝贵的信息比特只放在好信道上,坏信道统一填收发双方都约定好的固定比特(冻结比特)。
以最直观的信道合并与分裂看最小单元($N=2$):
graph TB
subgraph 合并阶段
u1[u₁ 信息比特] --> X1[XOR ⊕]
u2[u₂ 信息比特] --> X1
X1 -->|x1 = u1⊕u2| CH1[物理信道 W]
u2 -->|x2 = u2| CH2[物理信道 W]
end
CH1 --> Y1[y₁]
CH2 --> Y2[y₂]
subgraph 分裂阶段
D1[虚拟信道 W⁻: 译u₁时<br>只有y₁可看<br>变差了]
D2[虚拟信道 W⁺: 译u₂时<br>y₁和y₂都能看<br>变好了]
end
Y1 --> D1
Y1 --> D2
Y2 --> D2
style D1 fill:#ffcdd2,stroke:#f44336
style D2 fill:#c8e6c9,stroke:#4caf50
关键洞察在分裂阶段:译第1个比特 $u_1$ 时,只能看到 $y_1$,比原始信道还差(记作 $W^-$);但译第2个比特 $u_2$ 时,接收端已经知道 $u_1$,可以把 $y_1$、$y_2$ 一起利用(记作 $W^+$),比原始信道更好。一负一正,总容量守恒:
$$I(W^-) + I(W^+) = 2 \cdot I(W) \quad \text{但} \quad I(W^-) < I(W) < I(W^+)$$
把这个蝶形结构递归嵌套($N=4, 8, 16, \ldots, 2^n$),就是Polar码的完整构造。其生成矩阵是核矩阵 $F$ 的克罗内克幂:
$$F = \begin{pmatrix} 1 & 0 \ 1 & 1 \end{pmatrix}, \qquad G_N = F^{\otimes n} = \underbrace{F \otimes F \otimes \cdots \otimes F}_{n=\log_2 N}$$
编码就是 $x = u \cdot G_N$,其中向量 $u$ 里好信道位置放信息、坏信道位置放冻结比特。
随着码长翻倍,虚拟信道可靠度的分布像水结冰一样向两端凝聚——这就是信道极化。以删除信道(BEC)为例,每递归一层,虚拟信道容量按 $I^2$ 与 $2I - I^2$ 两条曲线分化:
$$\text{递归 } n \text{ 层后: } \frac{I(W^-)\text{类}}{I(W^+)\text{类}} \to \frac{\text{全部塌向 } 0}{\text{全部塌向 } 1} \quad (n \to \infty)$$
没有一个虚拟信道停留在中间地带——要么好到几乎不出错,要么坏到几乎纯噪声。只要把信息比特放到那占比为信道容量 $C$ 的好信道集合里,整体速率就无限逼近香农容量。这也是Polar码的一个天然性格:码长越长,极化越充分,性能越好;码长太短时,“分化不彻底”,中间有很多不好不坏的信道,效率就低。
Polar码天然匹配一种叫SC(Successive Cancellation,连续消除)译码的方式:按顺序先译 $u_1$,译对后把它“已知”这个事实用于辅助译 $u_2$,再依次传递。这与蝶形结构严丝合缝,复杂度只有 $O(N \log N)$,非常优雅。
但有个现实问题:SC译码一旦前面译错一个比特,错误会像多米诺一样向后传播。在工程要求的中短码长下,纯SC性能反而不如成熟的LDPC和Turbo。工程界的补救是SCL(Successive Cancellation List,列表译码):不再一条路走到黑,每步同时保留 $L$ 条候选路径并行推进,最后选总置信度最高的那条;再配合外挂的CRC校验帮着“选路”,短码性能大幅反超。代价是译码器复杂度约变成 $L$ 倍,硬件实现效率不如LDPC的并行迭代架构。
2016年11月,3GPP在5G eMBB信道编码的激烈争论后落锤:数据信道用LDPC,控制信道用Polar。据Wikipedia收录的3GPP RAN1#87会议记录及多篇综述记载,这是经过多轮提案比拼后的技术+产业综合决策。理解了两种码的性格,你会发现这个搭配几乎是“量体裁衣”:
| 维度 | LDPC | Polar | Turbo(4G遗留) |
|---|---|---|---|
| 数学性质 | 无容量证明,靠图构造逼近 | 唯一有严格容量证明的设计 | 无证明,工程逼近 |
| 擅长码长 | 长码、大块 | 中短码 | 中短码 |
| 高码率(如3/4、5/6)表现 | 优,无最下距离限制 | 好 | 较弱 |
| 低码率(如1/6、1/3)表现 | 较弱(Turbo/Polar更佳) | 好 | 优 |
| 硬件并行度 | 极高,天然适合Gbps级吞吐 | SCL译码并行度受列表规模限制 | 中 |
| 译码复杂度来源 | 迭代次数×稀疏图 | $O(N\log N)$×列表长度$L$ | 迭代×网格状态数 |
| 误码平台(error floor) | 存在(需设计规避短环) | 无明显平台 | 低码率下有平台 |
| 5G中的角色 | 数据信道(PDSCH/PUSCH,追求峰值吞吐) | 控制信道(PDCCH,短块、可靠性至上) | 退网过渡 |
控制信道为什么偏爱Polar?看需求画像:调度指令(DCI)块长很短(几十比特),但一旦译错,整条调度就指错了人,必须极限可靠。Polar恰好是短码之王——短码长下仍能精确挑出最可靠的虚拟信道,配合SCL+CRC在短块上误码率压得过任何对手。而且控制信道速率低,SCL译码的复杂度完全付得起。
数据信道为什么非LDPC不可?同样是需求画像:块长大(几千上万比特)、速率高(Gbps级),译码器必须能大规模并行。LDPC的稀疏Tanner图允许成百上千个校验节点同时计算,线性复杂度+高并行度 = 高吞吐低功耗;长码下LDPC已把性能打磨到距香农极限零点几dB以内。反过来,Polar在这种场景下SCL译码器的实现效率劣势就暴露了。
再看承载演进的历史脉络,能发现一条清晰的“每代换一次码”规律:
| 代际 | 数据信道编码 | 典型距香农极限差距 | 备注 |
|---|---|---|---|
| 2G GSM | 卷积码 | 约3 dB以上 | 结构简单,算力要求低 |
| 3G WCDMA | Turbo码 | 约1 dB | 1993年发明,首次逼近极限 |
| 4G LTE | Turbo码 | <1 dB | 打磨成熟 |
| 5G NR | LDPC + Polar | 长码约0.2~0.5 dB | 分场景择优 |
| 未来 | 各国6G研究已展开(如PAC码等Polar增强变体) | — | Arıkan本人2019年提出的PAC码在短码上进一步超越 |
一句话总结选择逻辑:Polar赢在“短码的数学保证”,LDPC赢在“长码的硬件吞吐”——5G两个都要,各管一摊。
做无线优化的人都盯着BLER(误块率),但很少有人问:为什么初传BLER目标常设在10%而不是0%? 这正是信道编码+HARQ的联合设计:10%的初传错误由HARQ重传兜底,换来的是每一步MCS都顶着信道容量跑(码率尽量高),系统频谱效率最大化。换句话说,“容忍少量初传失败”本身就是逼近香农极限的工程手段。看到BLER高先别慌,要看的是“初传BLER+重传后残余BLER”的组合。
工程师常在路测软件里看到MCS(调制编码方案),MCS的本质就是一条公式:
$$\text{码率} = \frac{\text{信息比特数 } K}{\text{编码后比特数 } N}$$
信道好→用高码率(少冗余、贴容量上限);信道差→用低码率(多冗余、保可靠)。5G数据信道LDPC支持码率打孔/重复实现速率匹配,同一个码可伸缩到任意码率——这是LDPC被选中时“灵活性”评分高的原因。调试时若发现“信号很好但吞吐上不去”,优先怀疑MCS被压制(如受邻区干扰、CQI上报偏差影响),本质是调度器不敢把码率推高。
调PDCCH问题的人会遇到CCE聚合等级(1/2/4/8/16):弱场用户用高聚合等级,同一条DCI重复占用更多资源换可靠性。这背后就是Polar码的冻结比特机制——聚合等级越高,等效码率越低,用于信息的虚拟信道越“挑肥拣瘦”。PDCCH弱场误调度问题,第一步就该查聚合等级分配策略,而不是上来就查功控。
mindmap
root((信道编码的目标))
逼近香农极限
LDPC: 长码+迭代置信传播
Polar: 唯一数学证明可达容量
译码复杂度可接受
LDPC: 稀疏图+线性复杂度+高并行
Polar: O(N log N) 但SCL受列表规模限制
工程灵活性
LDPC: 速率匹配适配任意码率
Polar: 冻结比特灵活适配短块
5G的答案: 数据用LDPC 控制用Polar
Q: LDPC和Polar码的根本区别是什么? A: 构造哲学完全不同。LDPC是“图论+工程直觉”路线——设计一张环尽量长的稀疏Tanner图,靠迭代消息传递逼近极限,没有容量证明但硬件实现极其高效;Polar是“纯数学构造”路线——用线性变换把物理信道极化成好/坏两堆,信息只放好信道,是第一个被严格证明能达到信道容量的码。可以粗略记为:LDPC赢在长码吞吐与并行实现,Polar赢在短码可靠性与理论保证。
Q: 为什么LDPC发明于1960年,却到2000年前后才火起来? A: 不是想法不好,是算力配不上。LDPC的置信传播译码虽然复杂度只有线性,但对1960年代的硬件依然过于昂贵。直到1993年Turbo码证明了迭代译码的实际威力,业界回头翻出Gallager的博士论文,才发现更优的方案早已躺在那里30年。这是通信史上著名的“理论超前于实现”案例。
Q: 码率越低误码越少,那为什么不把码率固定在很低值? A: 码率低意味着冗余多、有效速率低,等于用频谱效率换可靠性。好系统的做法是贴着信道容量动态调码率(MCS自适应):信道好的瞬间用高码率多吃容量,信道变差立刻降码率保住可靠度。固定低码率等于永远只用一半带宽,这在频谱按MHz计价的现网是不可接受的。
Q: Turbo码在5G里被彻底淘汰了吗? A: 在5G NR新空口里,Turbo确实退出了,但“淘汰”要分场景看:在低码率(如1/6、1/3)短块场景,Turbo至今仍有性能优势;而且存量4G网络仍长期运行Turbo。选择LDPC+Polar更多是面向5G的高吞吐、大块长、低时延需求做的组合优化,而非Turbo本身不行。
Q: 学习信道编码需要啃哪些数学基础? A: 三块就够入门:线性代数(生成矩阵、校验矩阵、GF(2)上的运算,理解LDPC和Polar的编码方程);概率论(似然比、贝叶斯更新,理解软译码和置信传播);信息论入门(熵、互信息、信道容量,理解“极限”在哪里)。不需要一上来就啃随机过程,先建立“冗余→约束→迭代推理”的直觉链条,公式自然会变得亲切。
本文由「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 等场景全覆盖。
