首页 › deep-tech › 补错的艺术:5G两大纠错码

你掏出身份证,末尾那个神秘的"X"曾让无数人困惑。它不是什么幸运数字,而是前17位数字经过一套固定算法算出来的校验码——任何一个数字被抄错、读错,校验位就会“报警”。这是绝大多数人一生中离“差错检测”最近的一次接触。

通信工程师每天都在和这件事打交道,只是规模大得多:你的手机与基站之间,每秒传输着上百万个比特,穿过充满噪声的空气,随时可能有个"1"被颠成"0"。一段视频少一个比特,画面可能花掉一块;一条信令错一个比特,整次通话可能夭折。5G是怎么保证比特在噪声里几乎不出错的?答案藏在两套精妙的数学装置里——LDPC码和Polar码。它们一个沉睡了33年才被唤醒,一个让研究者苦等了60年才等到。这篇文章把它们的原理讲透。

一、先看清对手:噪声与香农的天花板

所有故事都从1948年香农的那篇论文开始。香农证明了一件起初令人绝望的事:任何有噪声的信道,都存在一个传输速率的上限——信道容量。对带宽为 B、信噪比为 S/N 的信道:

$$C = B \log_2\left(1 + \frac{S}{N}\right)$$

这个公式有两层含义,方向完全相反:

第二层含义在当时简直是悖论:噪声明明在往信号里掺错,怎么可能“编码一下”就几乎不出错?香农的回答是随机的:他证明了这样的码存在,但他的证明是非构造性的——就像知道山里有矿,却不给地图。

于是整个编码学界接下了一个持续半个多世纪的任务:把这面墙上的矿挖出来。评价一个码好不好,就看两把尺子:它的性能离香农极限差多少;以及它的译码运算量,现实芯片算不算得动。

二、纠错的基本交易:用冗余换可靠

在讲两大码之前,先建立最朴素的图景。纠错的本质是一笔交易:你交出一部分传输效率,买回可靠性。

具体做法:原始信息有 k 个比特,编码器在后面掺入一些“多余”的比特,凑成 n 个比特一起发送(n > k)。定义码率:

$$R = \frac{k}{n}$$

码率越低,冗余越多,抗错能力越强,但有效吞吐越低。接收到这 n 个比特后,译码器利用其中合法的结构关系(哪些组合是“允许出现的”),把错误定位并纠正。

身份证的校验位就是最简版本:17位信息 + 1位校验,它能发现错误,却不能纠正——因为它只知道“出错了”,不知道“错在哪”。想要纠正,码的结构必须告诉你错误的位置。LDPC 和 Polar 走的是两条完全不同的路,但目标一致:逼近香农极限。

三、LDPC:让一群方程互相开会

3.1 一个沉睡33年的天才想法

LDPC(低密度奇偶校验码)由 MIT 的罗伯特·加拉格(Robert Gallager)在1963年的博士论文中提出。他的想法在当年看来有些“暴力”:把校验矩阵做得非常非常大,但里面几乎全是0——这就是“低密度”三个字的由来。

问题是,这样一个大矩阵对应的译码计算量,1960年代的计算机根本算不动。论文发表后被冷落,几乎无人问津。直到1993年 Turbo 码横空出世、展示了“迭代译码”的威力之后,MacKay 和 Neal 在1996年重新发现了加拉格的旧论文,才发现这座被遗忘的矿藏性能惊人。此后十几年,LDPC 一路横扫:Wi-Fi(从802.11n起的多个标准)、卫星广播 DVB-S2、万兆以太网,最终成为 5G 数据信道的官方编码。4G 时代这一席位属于 Turbo 码,而到了 5G,LDPC 全面接棒。

3.2 稀疏:灵魂所在

一个 LDPC 码由校验矩阵 H 定义。合法的码字 x 必须满足:

$$H x^T = 0$$

也就是所有校验方程都成立。关键在于“低密度”:矩阵里1的数量占比极小,每一行只“管着”少数几个比特,每一列也只被少数几个方程“管着”。

举个玩具例子。6个比特,3个校验方程:

(⊕ 是模2加法,即异或。)每个比特只出现在1~2个方程里——这就是稀疏。把方程和比特画成一张图,就是著名的 Tanner 图:一边是变量节点(比特),一边是校验节点(方程),连线表示“这个方程管这个比特”。

flowchart TD
    subgraph SV["变量节点:每一个比特"]
        V1["比特1"]
        V2["比特2"]
        V3["比特3"]
        V4["比特4"]
        V5["比特5"]
        V6["比特6"]
    end
    subgraph SC["校验节点:每一个方程"]
        C1["方程A"]
        C2["方程B"]
        C3["方程C"]
    end
    V1 --- C1
    V2 --- C1
    V3 --- C1
    V3 --- C2
    V4 --- C2
    V5 --- C2
    V4 --- C3
    V6 --- C3

真实的 5G LDPC 码,一个码块动辄几千个比特,但每个节点只有几个邻居——图很大,却很稀疏。

3.3 置信传播:一场多轮投票

稀疏图的价值在译码时爆发。LDPC 的译码算法叫置信传播(也称消息传递、和积算法),它的工作方式像一个委员会:

每一轮,所有节点交换两轮意见——

  1. 变量节点发言:每个比特把自己“我有多大概率是1”的判断(来自接收到的软信息,也就是解调器给出的似然比)告诉所有连着它的校验方程;
  2. 校验节点裁决:每个方程综合自己管的那几个比特的意见,检查“你们凑在一起能否让我的方程成立”。比如方程A管3个比特,如果其中两个强烈认为自己是0,那第三个“应该”是1——方程把这个反推出来的意见反馈给那个比特;
  3. 变量节点复盘:每个比特把来自各方程的反馈和自己的原始判断加权汇总,更新自己的置信度。

然后进入下一轮。每一轮,正确的比特会获得越来越多的“盟友证据”,而被噪声翻转的比特则被邻居们反复“纠偏”。通常迭代几轮到几十轮,所有比特同时趋于稳定,校验方程全部通过,译码成功。

flowchart TD
    A["接收端拿到每个比特的软信息"] --> B["初始化:比特相信自己的第一感觉"]
    B --> C["校验节点更新:用方程约束互推意见"]
    C --> D["变量节点更新:汇总各方反馈修正置信度"]
    D --> E["试探判决:每个比特给出当前猜测"]
    E --> F{"校验方程是否全部通过"}
    F -->|"是"| G["译码成功,输出结果"]
    F -->|"否"| H{"是否达到最大迭代次数"}
    H -->|"否"| C
    H -->|"是"| I["宣布译码失败,交给重传机制"]

一个直观的类比:传话游戏之所以越传越错,是因为信息只单向流动、没有交叉验证。LDPC 恰好反其道而行——每个比特的猜测都要经过多个独立的方程交叉盘问,一轮盘问一次修正,几轮下来,孤立的错误无处遁形。

3.4 为什么“稀疏”是命门

这里藏着 LDPC 最深刻的设计智慧。如果校验矩阵是稠密的(每个方程管一大堆比特),会出现两个致命问题:

稀疏性一刀解决两个问题:每比特计算量只与邻居数有关(线性复杂度),而且图上消息路径近似独立,各方程提供的是新鲜的、不重复的证据,信息每轮迭代都在真实增量。这正是 LDPC 能用合理算力逼近香农极限的根基。

概念 技术含义 直觉类比
变量节点 携带软信息的比特 正在自证清白的嫌疑人
校验节点 一条约束方程 交叉盘问的审讯官
消息传递 节点间交换的置信度 每一轮提供的证词
迭代 多轮更新直到稳定 越盘越明亮的案情
外信息 排除自身后邻居给出的意见 不许自己给自己作证

3.5 5G 给 LDPC 的三件定制装备

5G 里的 LDPC 并非学术原版,而是工程化改造过的准循环 LDPC:校验矩阵由一个小的“基图”通过循环移位复制扩展而成,硬件可以用移位寄存器高效实现,省内存也省算力。标准定义了两种基图,分别服务大码块(高码率、大流量,比如下载数据)和小码块(低码率、高可靠,比如边缘场景),工程上按场景选用,具体参数以各厂家官方文档为准。

另外两件装备是打孔与速率匹配:编码器先按低码率生成完整的冗余比特,发送时根据当前信道好坏决定发多少、丢多少——信道好就多丢冗余(等效高码率),信道差就全发。这让同一个码覆盖从极低码率到接近1的连续码率范围。再加上与增量冗余重传的配合(发送过的冗余比特下次换个花样再发,接收端合并累积证据),构成了 5G 链路自适应的底座。

四、Polar:把一堆烂信道炼成几根金条

4.1 迟到60年的答案

如果说 LDPC 的故事是“提出太早、被时间辜负”,Polar 码则是“终于等到了那个证明”。2009年,土耳其毕尔肯大学的 Erdal Arıkan 发表论文《信道极化》,给出了编码学史上第一个被严格证明能够达到香农容量、且构造方法明确的码。从1948年香农画下天花板,到2009年第一把够得着天花板的梯子出现,中间隔了六十余年。Arıkan 也因此获得2018年的香农奖——信息论界的最高荣誉。

它的核心思想说出来朴素得惊人:单个信道不好用?那就复制一堆出来,把它们互相耦合,让好的越好、坏的越坏。

4.2 信道极化:两极分化

想象你手上有 N 条一模一样的“普通信道”,每条的可靠性都不高——单独用哪一条传比特,都会出不少错。Polar 码的做法是把这些信道两两配对,做一次固定的线性组合运算(一半走“直连+相加”,一半走“相减”路径),得到两条“组合信道”;然后对组合信道递归地再做同样的操作,一层套一层,共做 log₂N 层。

数学上,整个过程就是一个小矩阵的反复克罗内克积:

$$F = \begin{pmatrix} 1 & 0 \ 1 & 1 \end{pmatrix}, \qquad G_N = F^{\otimes \log_2 N}$$

魔法发生在统计特性上:当 N 足够大,这 N 条组合信道的可靠性会剧烈两极分化——一部分信道的差错率趋近于0(几乎完美,像光纤一样干净),另一部分差错率趋近于1(纯噪声,传什么都错)。而且这个分化是可以精确计算的:每条极化后信道对应一个巴氏参数,取值越接近0越可靠。

用可靠的衡量指标给 N 条信道排队,画面是这样的:

flowchart TD
    subgraph IN["极化前:16条一模一样的普通信道"]
        direction LR
        B1["信道1 一般"]
        B2["信道2 一般"]
        B3["……"]
        B4["信道16 一般"]
    end
    subgraph MID["递归合并:两两耦合再耦合"]
        K1["第1层:8组两两组合"]
        K2["第2层:组间再组合"]
        K3["第3层:最后一层耦合"]
        K1 --> K2
        K2 --> K3
    end
    subgraph OUT["极化后:两极分化"]
        direction LR
        C1["好信道:差错趋近0"]
        C2["坏信道:差错趋近1"]
    end
    IN --> MID
    MID --> OUT

4.3 冻结比特:坏信道全部坐冷板凳

极化之后,用法简单粗暴:

这就是名字里"Polar"的含义:好信道上信息畅通无阻,坏信道上干脆不传任何秘密。整体效果相当于把 N 条平庸信道的容量,集中供养给 K 条优秀信道,系统总容量一点没浪费,只是重新分配了。有人心疼冻结比特“白白浪费位置”——恰恰相反,在坏信道上强行传信息,错误率接近抛硬币,传了等于没传还污染纠错;认怂不传,才是理性。

接收端知道哪些位置是冻结的,等于白送了一批“已知答案”,译码时它们是现成的锚点。

4.4 译码:串行消去与迷宫分身

Polar 的经典译码叫串行消去(SC):比特一个个依次判决,顺序与极化结构对应。轮到某个信息比特时,它“蹭”两个便宜:前面已判决的比特当作已知条件代入,本位置的冻结比特直接按约定填答案。一个接一个,像多米诺骨牌一样环环相扣。

SC 的缺点也来自这个顺序性:前面的判决如果错了,错误会传染给后面所有依赖它的比特,而且 SC 只有单条路径,错一步就一路黑到底。工程上真正使用的是升级版——串行消去列表译码(SCL):

类比:SC 是一个人走迷宫,遇到岔路口凭感觉选一边,错了就全盘皆输。SCL 是派出 L 个分身,每个岔路口兵分两路全都走,L 个分身各自走各自的;最后谁的路径“总得分”最高(对应路径度量最优),谁胜出。

5G 还在 SCL 之外加了一道保险:给每个候选路径的信息部分附加一段 CRC 校验(一种短检错码),最终从 L 个幸存路径里用 CRC 再筛一次——哪个分身走完了迷宫还能通过对暗号,就信谁。这个"CRC辅助SCL"组合拳,让 Polar 在短码块上的实测性能离香农极限只剩不到半个分贝。

4.5 5G 为什么让 Polar 守大门

看完原理,5G 的分工安排就顺理成章了:

维度 LDPC Polar Turbo(4G遗老)
出身年份 1963提出,1996重生 2009 1993
核心机制 稀疏图上的置信传播 信道极化+冻结比特 递归卷积+迭代软译码
译码方法 消息传递迭代 SC / SCL / CRC辅助SCL MAP类迭代
擅长码长 长码块、高吞吐 短码块、低时延 中等码长
并行性 极好(节点独立更新) 较差(串行依赖) 一般
5G 岗位 数据共享信道 控制信道与广播信道 退出5G舞台

分工逻辑就两条:

第一,码长匹配。 数据业务一次传几千上万个比特,正是 LDPC 大图迭代大显身手的场景;而控制信令一次只有几十个比特,LDPC 在短码上有“启动成本”——图还没迭代起来,比特就那么几个,稀疏优势施展不开。Polar 恰好相反,短码块正是它的舒适区。

第二,时延与并行性。 数据吞吐优先,LDPC 节点互相独立、可以大规模并行,吞吐上不封顶;控制信令量小但要求极低时延和极高可靠(信令错了,后面整个流程全崩),Polar 的 CRC辅助SCL 在短块上可靠性首屈一指。各守一段,各用其长。

五、在现网里,你会碰到它们的哪些身影

MCS 表的底座。 基站每几毫秒根据信道质量为用户挑一次调制与码率组合(这一机制的原理是链路自适应的话题,此处不展开)。你看到的“码率”二字,背后就是 LDPC 的速率匹配在执行:同一个码,靠打孔和重复覆盖整个码率区间。排查吞吐不达标的 CASE 时,先看当前调度的码率档位,往往比看信号强度更有信息量。

初传 BLER 目标。 现网链路自适应通常不追求一次传对,而是把初次传输的误块率目标设在百分之十左右的量级,剩下的错误交给重传兜底——这不是激进,而是精打细算:把码率压得极低来换取“次次必中”,总的吞吐反而更差。理解了“纠错码+重传”是分工关系,才能看懂这个看似危险的参数为什么人人这么配。

译码时延与迭代次数。 基带芯片的 LDPC 译码器有最大迭代次数上限,深衰落场景下迭代耗尽仍不收敛,就会触发译码失败和重传。在日志里看到“译码失败”频率升高,本质是那一轮的信道质量把该码块的置信传播推进不到全通。

一个常见误解: 纠错码不“消灭”错误,它只是把工作点从“错误频发”搬到“错误罕见”。总有一些码块撞大运译不动,系统设计必须为“译码失败”预留出口(重传、上层恢复)。以为“上了 5G 就不会错一个比特”,是理解这套机制时最常见的入门坑。

常见问题

Q: LDPC 和 Turbo 码的迭代是一回事吗? A: 精神相似(都是多轮软信息交换),结构完全不同。Turbo 的迭代发生在两个卷积译码器之间互相喂软信息;LDPC 的迭代发生在稀疏图上的变量节点与校验节点之间。LDPC 的消息路径更“散”,天然适合并行硬件,这也是它在 5G 取代 Turbo 的关键原因。

Q: 冻结比特占着位置不发信息,不浪费吗? A: 不浪费,反而是整个设计的精髓。被冻结的位置对应极化后的“垃圾信道”,在上面传信息出错率接近随机——传了等于没传,还会把错误传染给译码。宁可空着,也要保证信息比特脚下的信道足够干净。

Q: HARQ 和信道编码是什么关系? A: 分工协作的两层。LDPC/Polar 是“一次传输内的自愈”:不出网、不回头,靠冗余当场纠正。HARQ 是“跨传输的兜底”:当场没纠动,反馈 Nack,重传再来一次,接收端把前后多次收到的软信息合并积累证据。现网两者总是同时开启,前者管大概率事件,后者收拾残余。

Q: 为什么不干脆用极低码率,把错误一次全纠掉? A: 码率是吞吐与可靠的天平。码率压得越低,同样时间传送的有效信息越少。链路自适应的工程答案是:选择一个“初传大概率高成功率、偶尔失败靠重传”的工作点,系统吞吐反而最优。一味求稳是另一种浪费。

Q: 极化后的信道真的会“一个天堂一个地狱”吗? A: 是渐进结论:码长趋于无穷时分化彻底。实际 5G 控制信令的码长只有几十到几百比特,分化是“部分完成”的状态——好信道没有好到零差错,坏信道也没有坏到纯噪声。所以工程上还要靠 CRC辅助SCL 和详细的可靠性排序来补足,这就是为什么理论上的容量达成,落地时仍需要一整套工程化包装。

参考来源

  1. Low-density parity-check code - Wikipedia — LDPC 历史脉络(Gallager 1963 提出、MacKay 与 Neal 1996 重新发现)及在 Wi-Fi、DVB-S2、5G 中的应用
  2. Polar code (telecommunication) - Wikipedia — Arıkan 2009 年信道极化论文背景、SC/SCL 译码与 5G 控制信道采用情况
  3. Channel Polarization: A Method for Constructing Capacity-Achieving Codes - arXiv — Erdal Arıkan 的原始论文,Polar 码容量达成性的证明出处
  4. Richardson & Urbanke, The Capacity of Low-Density Parity-Check Codes under Message-Passing Decoding — 置信传播译码逼近香农容量的经典分析
  5. Tal & Vardy, List Decoding of Polar Codes — SCL 列表译码的原始提出,5G 实用化 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 等场景全覆盖。

51学通信知识星球海报-扫码加入