把手机发出的一帧数据放到慢镜头下看:从协议栈交给物理层的那串比特,到天线口那段波形,中间只隔几毫秒,却要走完一条精密的流水线。这条流水线上有三个模块最像“魔法”:往数据里加冗余,传输反而更可靠(信道编码);用一个公式同时点亮上千路子载波(IFFT);再用几十倍的算力折扣把这个公式算完(FFT)。今天把它们逐一拆开。
flowchart TD
A["信息比特"] --> B["加CRC校验"]
B --> C["信道编码<br/>LDPC 或 Polar"]
C --> D["速率匹配"]
D --> E["调制 QAM"]
E --> F["IFFT 多载波合成"]
F --> G["加循环前缀"]
G --> H["射频发射"]
接收端反向走一遍:FFT 分路、解映射、译码还原。先立一个总纲:这三个模块看似各管一摊,内核其实是同一种思想——分而治之,加结构化冗余。FFT 把大变换拆成小变换;LDPC 把一个大判决拆成一群小判决互相投票;Polar 把一堆平庸信道筛成两堆:极好与极坏。理解了这一点,三块知识就串成了一条线。
先从生活里找答案。电话里报姓名,单说一个“张”字,对方听成“王”就完了;改说“弓长张”,即使丢一两个字也能猜回来。朗读时把关键字重复一遍、快递把瓷器裹三层泡沫,都是同一个道理:用可预期的重复和约束,换取对错误的抵抗力。
通信里这笔账要算得更精:时间和带宽有限,多发一个冗余比特,就少发一个信息比特。冗余度(码率 = 信息比特数 ÷ 总发送比特数)与可靠性是一架天平。香农在 1948 年画出了这架天平的理论边界——信道容量:
$$C = B\,\log_2\left(1 + \frac{S}{N}\right)$$
只要码率低于容量 $C$,理论上就存在一种编码让误码率任意低;码率超过 $C$,神仙也救不了。注意香农只证明了“存在”,没给出构造方法。此后七十多年编码学的全部剧情,就是一句话:找到既逼近极限、又能用现实芯片算得动的码。5G 数据信道用的 LDPC 和控制信道用的 Polar,正是这场长跑的两位终点选手。
最朴素的冗余是奇偶校验:三个数据比特加一个校验位,让四个比特中 1 的个数为偶数:
$$b_1 \oplus b_2 \oplus b_3 \oplus p = 0$$
接收端一验不满足,立刻知道出错了——但只知道错了,不知道哪个错。所有现代纠错码回答的都是同一个问题:怎么布置这些校验,才能不仅发现错,还能定位错、纠正错,并且让芯片算得过来。
先讲一段历史。二十世纪六十年代初,Gallager 在博士论文里提出低密度奇偶校验码(LDPC),想法远远超前于时代——他设计的迭代译码当时计算机根本跑不动,论文沉寂了三十年。九十年代,随着软判决译码与算力成熟,这套理论被重新发掘,性能测试一鸣惊人:逼近香农极限。此后它进入 Wi-Fi,最终被 5G 选为数据信道的编码。
LDPC 的名字就是说明书:低密度奇偶校验码。校验矩阵里绝大多数是 0,1 非常稀疏。举一个 4 比特、3 条校验的迷你例子:
$$c_1:\; b_1 \oplus b_2 \oplus b_3 = 0$$ $$c_2:\; b_2 \oplus b_3 \oplus b_4 = 0$$ $$c_3:\; b_1 \oplus b_3 \oplus b_4 = 0$$
把比特画成圆圈(变量节点),校验画成方块(校验节点),连线表示“这个校验管这个比特”,就得到 Tanner 图:
flowchart TD
v1["比特b1"] --> c1["校验c1"]
v2["比特b2"] --> c1
v3["比特b3"] --> c1
v2 --> c2["校验c2"]
v3 --> c2
v4["比特b4"] --> c2
v1 --> c3["校验c3"]
v3 --> c3
v4 --> c3
真实的 5G 长码里,这是几千个变量节点、上千条校验构成的巨大稀疏网——每个比特被多条校验“交叉盯防”。
接收端解调后,给每个比特的不是一个非黑即白的 0/1,而是一个可信度分数(对数似然比:正值偏向 0,负值偏向 1,绝对值代表把握大小)。这是陪审团的“入场证词”。
接下来进入合议环节:
一句话:单个比特的证据可能很弱,但多条独立校验的意见互相印证,弱证据拼成了强判决。这就是陪审团的力量——一份证词可疑,多份证词交叉吻合就可信。
LDPC 的哲学是“大家一起扛”,每个比特都有多条退路。2009 年 Arıkan 提出的极化码换了思路:与其人人平庸,不如制造分化——把一堆同样平庸的信道两两捆绑使用一次再拆开看:拆出来的两条,一条比原来更差(记作 $W^-$),一条比原来更好(记作 $W^+$):
$$W^- \preceq W \preceq W^+$$
单次分化不明显,但把 $N$ 条信道做 $\log_2 N$ 层递归蝶形,分化按指数加速:最终一半信道近乎完美,一半近乎全损——教科书称之为信道极化,通俗说就是马太效应,好的愈好、差的愈差。
于是编码策略变得极其简单:信息比特只走极好信道;坏信道统一填上收发双方都约定的固定值(冻结比特,通常是 0)——反正那些信道等于白送,填什么都不心疼。$N=4$ 的编码蝶形长这样:
flowchart TD
u1["u1 信息"] --> A["合并器一"]
u2["u2 冻结0"] --> A
u3["u3 信息"] --> B["合并器二"]
u4["u4 冻结0"] --> B
A --> s1["较差信道"]
A --> s2["较好信道"]
B --> s3["较差信道"]
B --> s4["较好信道"]
s1 --> C["合并器三"]
s3 --> C
s2 --> D["合并器四"]
s4 --> D
C --> x1["输出x1"]
C --> x2["输出x2"]
D --> x3["输出x3"]
D --> x4["输出x4"]
发射前按可靠度排序挑出最好的位置放信息,其余冻结;这套“可靠度排序表”由收发双方按相同规则推算,必须严格一致。
极化码译码是逐位接力(逐次消去思想):先判第一个比特,把它当已知条件去判第二个;再拿前两个当条件判第三个……前面的判断帮助后面的判断。之所以接力得动,是因为好信道上的判决大概率正确。
弱点也在这里:串行,而且中途判错会一路错下去。工程解法是列表译码加 CRC 裁判:不押一条路径,同时保留若干条候选路径齐头并进,最后用 CRC 校验当裁判挑出正确分支。这也是为什么系统在极化码外面又套了一层 CRC——它不是装饰,是译码器的裁判哨。
极化码有一样 LDPC 短码时给不了的东西:短码块下确定性地逼近容量。LDPC 靠随机化构造加大量迭代,码块越短,图越小、环越致命,陪审团来不及充分合议;极化码的结构在几十到几百比特的短块上依然工作良好,且时延确定。控制信令(调度指令、广播消息)正是典型的短块场景,而且一旦判错整帧皆错,可靠度要求极高。分工由此成形:长块高吞吐给 LDPC,短块高可靠给 Polar。
看流水线另一端。调制后的符号要分坐到成百上千个子载波上。笨办法是给每个子载波配一套振荡器、滤波器和混频器——一千个子载波就是一千套硬件。
数学上,时域采样点与频域子载波之间本来就是一个线性变换——离散傅里叶变换(DFT):
$$X[k] = \sum_{n=0}^{N-1} x[n]\,e^{-j2\pi kn/N}$$
反过来(IDFT),给定 $N$ 个子载波上的符号 $X[k]$,一个公式就能直接合成时域波形:
$$x[n] = \frac{1}{N}\sum_{k=0}^{N-1} X[k]\,e^{j2\pi kn/N}$$
一个好记的理解视角:IFFT 是波形合成器——每个 $X[k]$ 是“第 $k$ 号纯音的音量与相位”,IFFT 把上千路纯音混成一路波形;FFT 是分路器,本质是一组相关器,把混音拆回各路。硬件上不再是上千套射频振荡器,而是数字芯片里的一次矩阵运算。
按定义硬算 DFT 需要 $N^2$ 次复数乘法。FFT 的分治思路:把 $N$ 点拆成偶数下标、奇数下标两个 $N/2$ 点 DFT 分别算完,再利用旋转因子的周期性与对称性做蝶形合并——合并的一半几乎是白送的。递归拆到底,复杂度从 $N^2$ 降到 $N\log_2 N$:
| DFT 点数 | 直接计算复乘 | FFT 复乘 | 节省倍数 |
|---|---|---|---|
| 64 | 4 096 | 384 | 约 11 倍 |
| 1024 | 1 048 576 | 10 240 | 约 102 倍 |
| 2048 | 4 194 304 | 22 528 | 约 186 倍 |
以 2048 点为例,一次变换省了近两百倍算力,而基带芯片每秒要做成千上万次。四点 FFT 的蝶形结构如下:
flowchart TD
x0["输入x0"] --> A["蝶形一"]
x2["输入x2"] --> A
x1["输入x1"] --> B["蝶形二"]
x3["输入x3"] --> B
A --> m1["中间值a0"]
A --> m2["中间值a1"]
B --> m3["中间值b0"]
B --> m4["中间值b1"]
m1 --> C["蝶形三"]
m3 --> C
m2 --> D["蝶形四"]
m4 --> D
C --> X0["输出X0"]
C --> X2["输出X2"]
D --> X1["输出X1"]
D --> X3["输出X3"]
工程惯例是发射端做 IFFT(合成)、接收端做 FFT(分路),两者结构相同、方向相反,硬件可以同源设计。
把四点 FFT 蝶形和极化蝶形并排看——长得一模一样。这不是巧合:两者都是“合并—拆分”的分治结构,FFT 在拆计算量,Polar 在拆信道可靠度。规整蝶形是基带芯片工程师最喜欢的图形:连线规则、模块可复用、天然适合流水线。可以说,基带三招里有两招画的是同一张图。
| 维度 | LDPC | Polar |
|---|---|---|
| 提出时间 | 20 世纪 60 年代(90 年代复兴) | 2009 年 |
| 核心结构 | 稀疏校验 Tanner 图 | 信道极化蝶形 |
| 译码方式 | 并行置信传播,迭代轮数灵活 | 逐位接力判决,列表译码增强 |
| 擅长码长 | 长码(千比特以上) | 短中码(几十到几百比特) |
| 5G 分工 | 数据业务信道 | 控制与广播信令 |
| 时延特性 | 吞吐高,可提前停迭代 | 串行度高,短块时延确定 |
落到现网,这几个原理处处露头:
三个常见误解:①信道编码能“消除”噪声——它只是用冗余容错,噪声能量一点没少;②冗余越多越好——码率下降直接吃掉吞吐,且逼近极限后边际收益陡降;③LDPC 和 Polar 是竞争关系——其实是按码长分工的队友。
Q: 发射端用的是 IFFT 还是 FFT? A: 惯例是发射端 IFFT(把频域符号合成为时域波形)、接收端 FFT(把波形分路回频域)。两者互为逆变换,数学结构几乎相同,硬件可同源复用。
Q: LDPC 和以前 4G 用的 Turbo 码是什么关系? A: 都是“软入软出加迭代译码”的路子,Turbo 靠卷积码加交织,LDPC 靠稀疏图上的消息传递。LDPC 胜在并行度高、迭代轮数灵活可提前停止,长码块下吞吐更好,这是 5G 数据信道换码的原因。
Q: 极化码的“极化”和天线极化是一回事吗? A: 完全不是。天线极化指电磁波电场矢量的振动方向(水平、垂直、圆极化);极化码的“极化”指信道可靠度向好坏两端分化的现象,是概率意义下的马太效应。
Q: 信道编码最多能纠多少错?有上限吗? A: 受香农极限约束:给定带宽和信噪比,码率一旦超过信道容量,任何编码都救不了;低于容量才存在可靠传输的方案。越逼近极限,译码复杂度和时延越高——工程上永远在“离极限多远”与“芯片多贵、时延多大”之间讨价还价。
Q: 为什么 LDPC 译码能提前停止,Polar 相对难? A: LDPC 每轮迭代后若所有校验已满足即可提前收工,收益立等可取;极化码的接力判决天然逐位串行,中途无法确认“全对”,需要靠 CRC 在列表译码里做最终裁决,灵活度低一些。
本文由「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 等场景全覆盖。
