说明:本轮网络抓取工具均不可用(搜索与抓取接口均被拒绝或配额耗尽),本文基于编码理论与数字信号处理的教科书共识写作;复杂度数字均为可直接验算的数学结果,参考来源为公认稳定的权威词条与原始论文出处。
一套无线通信系统,剥掉所有营销词汇,本质上只干两件事:把信息“算”成适合飞行的波形发出去,以及把收到的波形“修”回正确的信息。前者靠信号变换,后者靠信道编码。5G之所以能跑出今天这样的性能,靠的正是两件看似毫不相干的发明:一个来自1965年的快速算法(FFT),一个来自2009年的编码理论突破(Polar码),再配上一位沉睡三十年才被唤醒的老将(LDPC码)。
这篇文章把这两大内功拆开讲透:它们各自的原理是什么、为什么非这样设计不可、以及你日常调试时它们藏在哪里。
先看一张全景图——一个数据包从手机到基站的完整旅程,后文所有内容都挂在这条链路上:
flowchart TD
SRC["信息比特"] --> CRC["补上CRC校验位"]
CRC --> ENC["LDPC编码"]
ENC --> RM["速率匹配"]
RM --> MOD["QAM调制"]
MOD --> IFFT["IFFT合成多载波波形"]
IFFT --> CH["穿越无线信道"]
CH --> FFT["FFT分离出每个子载波"]
FFT --> DEMOD["QAM解调"]
DEMOD --> DEC["LDPC迭代译码"]
DEC --> CHK{"CRC通过吗"}
CHK -->|通过| SINK["交付上层"]
CHK -->|失败| RETX["整块打回重传"]
注意看链路的两个“重心”:发出去之前靠IFFT把频谱想法变成真实波形,收错了之后靠LDPC把错误修回来。一个管“算得快”,一个管“修得对”。
任何一段信号,无论看起来多乱,都可以拆成一组不同频率的正弦波叠加——就像任何一种果汁都能写成一张成分表:水70%、糖15%、橙汁15%。
离散傅里叶变换(DFT)就是计算这张成分表的机器:给它N个时域采样点,它告诉你每个频率成分的“含量和相位”:
$$X[k]=\sum_{n=0}^{N-1}x[n]\,e^{-j\frac{2\pi}{N}kn}$$
读法:想知道第k号频率的成分,就拿信号x[n]去和频率为k的“探针”$e^{-j2\pi kn/N}$逐点相乘再求和——本质上是一次相关运算:信号里如果真藏着这个频率,乘积会同相累积出一个大值;如果没有,正负抵消趋近于零。
通信为什么离不开它?因为频率域是无线系统的“行政管理区”:每个用户占哪几个子载波、每个子载波上的信噪比多少、在哪里打孔在哪里灌功率——这些管理动作只有在频率域才能说清楚。而把频域“规划图”变成空中真实波形的工具,就是DFT的逆变换IFFT:
$$x[n]=\frac{1}{N}\sum_{k=0}^{N-1}X[k]\,e^{+j\frac{2\pi}{N}kn}$$
发射端在频域“画”出子载波排布,IFFT一口气合成出时域波形;接收端FFT再把每个子载波上的数据分离出来。OFDM的一切魔法,最后都落在这一对变换上。
DFT的定义朴素直接,但按定义算代价惊人:N个频率点,每个点要和N个采样做复数乘法,总计约 N² 次复数乘法。
这在基带里是致命的。一个100MHz带宽的5G载波,一个IFFT点数是4096量级;基站几十上百根天线、每毫秒十几个OFDM符号,都要实时算完。如果每算一次4096点IFFT要做1600多万次复数乘法,全世界的电费都不够基站烧的。
直接法和快速算法的差距有多大,看这张表(复数乘法次数,FFT按Cooley–Tukey算法的(N/2)·log₂N计):
| 变换点数 N | 直接计算 DFT(约N²次) | FFT 算法(约N/2·log₂N次) | 提速倍数 |
|---|---|---|---|
| 64 | 4,096 | 192 | ≈ 21 倍 |
| 256 | 65,536 | 1,024 | ≈ 64 倍 |
| 1,024 | 1,048,576 | 5,120 | ≈ 205 倍 |
| 4,096 | 16,777,216 | 24,528 | ≈ 684 倍 |
差距随点数增大指数级拉大——这就是为什么1965年Cooley和Tukey发表快速算法后,整个数字信号处理学科才算真正起飞。
首先要澄清一个最常见的误解:FFT不是一种新变换,它就是DFT,只是算得更快的算法。输入输出完全一样,数学上一字不差,区别仅在计算路径。
FFT的核心洞察只有一句话:一个N点DFT,可以由两个N/2点DFT拼出来。
把输入按下标奇偶分成两半——偶数下标的一组、奇数下标的一组。分别做N/2点DFT得到E[k]和O[k],然后利用旋转因子$e^{-j2\pi/N}$的周期性和对称性,把两半的结果交叉合并:
$$X[k]=E[k]+W_N^k\,O[k]$$
$$X[k+N/2]=E[k]-W_N^k\,O[k]$$
注意这个合并的精妙之处:算出$E[k]+W\cdot O[k]$之后,后一半结果几乎是白送的——同一个乘积$W\cdot O[k]$,一加一减,两个输出就都有了。这个“乘一次、加减两次”的基本单元,画出来像一只蝴蝶,所以叫蝶形运算。
而那两个N/2点的DFT,又能各自继续往下拆,一直拆到2点DFT(它本身就是一次蝶形)。整个计算变成一棵自底向上的树:
flowchart TD
A["8点DFT"] -->|"按下标奇偶拆分"| B["偶数项 4点DFT"]
A -->|"按下标奇偶拆分"| C["奇数项 4点DFT"]
B --> B1["2点DFT"]
B --> B2["2点DFT"]
C --> C1["2点DFT"]
C --> C2["2点DFT"]
B1 --> M["蝶形合并"]
B2 --> M
C1 --> M2["蝶形合并"]
C2 --> M2
M --> F["合成8点结果"]
M2 --> F
每一层只有N/2个蝶形,共log₂N层,所以总计算量是$\frac{N}{2}\log_2 N$量级,把N²压成了N log N。这就是表1里几百倍提速的全部来源。
IFFT几乎不用单独设计:对比两个公式,IDFT只是把指数变号、结果除以N。工程上最常用的取巧办法是把输入共轭一下做FFT、输出再共轭一次,或者直接改用带正指数的FFT硬件——所以你看到的基带芯片里,“IFFT模块”往往就是FFT模块换了个接线方式。
现网调参时经常有人困惑:4096点IFFT,怎么只有3300个子载波?答案是:IFFT点数是计算的“画布大小”,实际子载波是画布上真正落笔的部分。带宽配置决定的活跃子载波被放上去,两边大量保护子载波直接置零,直流子载波通常也空着。点数选2的幂是为了FFT算得快,子载波数由带宽和子载波间隔决定,两者本来就是两回事。
无线的世界没有“干净”二字:噪声、衰落、邻区干扰随时在翻转你的比特。1948年香农给出了那个改变一切的结论:
$$C=B\log_2\left(1+\frac{S}{N}\right)$$
只要传输速率低于信道容量C,理论上存在一种编码方式,能把误码率压到任意低——不需要升级硬件,靠数学就行。
但香农只证明了这种码“存在”,没告诉你它长什么样。于是接下来半个世纪,编码理论的主线任务只有一条:找到既逼近香农极限、又能用现实硬件译码的构造。5G的答案是一对组合:LDPC管数据,Polar管控制。
先忘掉一切术语,想想最原始的做法:报电话号码时报两遍,对方对照着听,两遍不一致就知道出错了。重复就是最古老的编码——用冗余换可靠。
代价同样直白:报两遍,效率减半。编码理论的一切,都是在回答同一个问题:怎样花最少的冗余,修最多的错,还能让接收端算得动。
LDPC和Polar给出了两个风格迥异、却都逼近极限的答案。
LDPC(低密度奇偶校验码)的原始思想简单到可以写在便签上:设计一批校验方程,比如
$$v_1 \oplus v_2 \oplus v_3 = 0$$
$$v_2 \oplus v_3 \oplus v_4 = 0$$
(⊕是模二加,即异或)。发送端让数据满足所有方程;接收端收到后逐条检查,不满足的方程就是“案发现场”。关键设计在于“低密度”三个字:每个方程只牵扯少数几个比特,每个比特也只出现在少数几个方程里。把这套关系画成图,就是著名的Tanner图——圆点是变量节点(比特),方块是校验节点(方程):
flowchart TD
V1["比特v1"] --> C1["校验方程A"]
V2["比特v2"] --> C1
V3["比特v3"] --> C1
V2 --> C2["校验方程B"]
V3 --> C2
V4["比特v4"] --> C2
这张图解释了LDPC为什么强:假设v2在空中被翻转了,那么方程A和方程B会同时报警,而两条线索的交集精确指向v2——一次错误被多个独立证人从不同角度夹住了。比特被越多条“线索链”覆盖,能修的错就越多,这正是“好码”的图论本质。
译码采用置信传播:变量节点和校验节点沿着边互相传“纸条”,每张纸条写着我判断你是0还是1、置信度几何。每一轮迭代,每个节点综合所有邻居的意见更新自己的判断,再传给下一轮。好比一个侦探委员会交叉质证:第一轮各说各的疑点,几轮之后真伪自然浮现——即使某些比特的初判是错的,邻居们的集体证据也会把它掰回来。所有节点可以同时并行工作,这是LDPC吞吐率碾压群雄的根本原因。
它的命运也颇富戏剧性:Gallager在1963年的博士论文里提出它,因当时算力无法支撑译码而被雪藏近三十年;九十年代MacKay等人重新发现它,一发不可收——今天的WiFi、以太网、卫星通信和5G数据信道,全是LDPC的地盘。
5G用的是它的准循环(QC-LDPC)变体:校验矩阵由循环移位的小方块拼成,硬件上用移位寄存器就能实现,并行度和芯片友好度极高。标准还准备了两张“底版”(Base Graph):大包、高码率的业务用一张,小包、低码率的用另一张,再通过打孔和重复实现任意码长与码率的无级调节——调度器给什么MCS,编码器就能织出什么形状的网。
LDPC逼近极限靠的是大量方程的群体智慧,而2009年Arikan提出的Polar码走了一条更“数学家”的路:既然单条信道不够好,那就用线性变换把N条平庸信道“洗牌”,洗出少数几条近乎完美的。
核心操作出奇地简单:把两条一样的信道交叉组合一次,结果分裂成两条不一样的信道——一条更差,一条更好。用极化核表示:
$$G_2=\begin{bmatrix}1&0\1&1\end{bmatrix}$$
把N条信道递归地两两组合、组合再分裂,log₂N轮之后,原本整齐划一的N条信道被彻底拉开档次:极少数信道质量趋近完美(差错概率趋近0),大多数信道烂得没法用。这像一杯“信道极化”的实验:两杯温水倒腾来倒腾去,总热量一点没变,最后却得到一杯热水和一杯冰水——总量守恒,分布分化。这个分化不是近似,而是被Arikan严格证明的数学定理,这也是Polar码成为第一个被证明能达到信道容量的构造性编码的原因——香农1956年许下的诺言,五十年后第一次有人拿出了可施工的图纸。
用法随之清晰,叫信道分配的“嫌贫爱富”:
flowchart TD
IN["N条同样平庸的信道"] --> G["极化变换:两两交叉组合"]
G --> S1["一部分变得更好"]
G --> S2["一部分变得更差"]
S1 --> G2["好信道继续递归组合"]
S2 --> G2b["差信道继续递归组合"]
G2 --> OUT1["少数极好信道"]
G2b --> OUT2["多数极差信道"]
OUT1 --> INFO["放真实信息比特"]
OUT2 --> FROZ["放冻结比特"]
信息比特只放好信道;烂信道统一塞“冻结比特”——也就是收发双方都预先知道的固定值(通常是0)。烂信道上根本不放信息,传错了也无所谓,接收端直接丢弃。可靠性问题被转化成了一个“选址”问题:与其在烂地基上加固房子,不如一开始就把房子盖在好地基上。
译码用连续消去(SC):按顺序逐比特判决,判完第1位,把它的结论用于帮助判决第2位,像推理小说一样层层递进。SC单路性能一般,工程上用列表译码(SCL)补救——同时保留L条候选推理路径,最后用CRC当裁判选出最像的一支。这个“Polar+CRC”的组合拳,让几十比特的小码块也能把可靠性推到极高。
LDPC和Polar不是替代关系,而是按岗分工:
| 维度 | LDPC | Polar |
|---|---|---|
| 诞生 | 1963年提出,1990年代重生 | 2009年提出 |
| 核心思想 | 稀疏校验 + 迭代消息传递 | 信道极化 + 冻结比特 |
| 译码方式 | 全并行置信传播 | 串行判决 / 列表搜索 |
| 强项 | 长码、高吞吐、低时延 | 短码、极高可靠性 |
| 弱项 | 短码性能一般 | 串行译码吞吐受限 |
| 5G岗位 | 数据业务信道(大码块) | 控制信令与广播(小码块) |
道理很直白:数据业务动辄几千上万比特一个码块,追求的是吞吐和时延,LDPC的全并行译码恰好是吞吐之王;控制信令只有几十个比特,却承担着“指挥调度”的重任,错一个DCI,后面整块数据全白搭,可靠性要求苛刻,而Polar恰好在短码区间增益最大。4G时代用Turbo码兼顾两头,5G用LDPC+Polar各取所长——这不是喜新厌旧,是按场景配置最优工具。
看MCS就是在看编码。调度器下发MCS,等于同时指定了调制阶数和目标码率;码率一变,LDPC选哪张底版、打孔打到哪里,全部随之确定。看小区级MCS分布异常偏低时,除了怀疑信道质量,也要想到是不是码块过大导致码率损失(码块分割会补入额外的码段CRC)。
看BLER就是在看译码战况。外环链路自适应通常把初始传输BLER目标维持在10%左右:译码失败不是事故,而是反馈链路的正常燃料——失败触发的重传本身携带着增量信息(软合并),系统靠它校准MCS。真正要报警的是BLER长期偏离目标带,或重传收敛慢。
三个常见调试陷阱:
至于日常工具,频谱仪屏幕上每一帧刷新的频谱,背后都是一次FFT;你用手机拍照时的JPEG压缩、语音识别的前端降噪,用的也是同一个1965年的算法。好算法的寿命,比它服务的制式长得多。
Q1: FFT和DFT到底是什么关系? A: DFT是数学定义,FFT是计算这个定义的快速算法。两者输入输出完全等价,FFT只是利用旋转因子的周期性对称性,把N²次乘法压缩到N log N。说“用了FFT”和说“做了DFT”指的是同一个变换,区别只是算得快不快。
Q2: 4G用Turbo码好好的,5G为什么换成LDPC加Polar? A: 三分天下不是喜新厌旧:Turbo译码的串行结构在高速率下时延和功耗吃紧;LDPC支持全并行译码且打孔重复天然适配灵活码率,接管大数据块;Polar在短码上理论增益显著,接管控制信令。各制式选择都是场景最优解的组合。
Q3: 有了这么强的信道编码,为什么还会有丢包重传? A: 编码能修的是“量变”错误,修不了“质变”深度衰落——当一段时隙内错误超出码的纠错能力,CRC会果断判负并丢弃,交给HARQ和上层重传兜底。编码负责把90%以上的错误就地消化,剩下极少数用重传解决,这是分层设计而非缺陷。
Q4: Polar码理论上能达容量,为什么不全面取代LDPC? A: Polar的理论优势集中在短码;它的SC译码是串行的,长码吞吐拼不过全并行的LDPC。数据信道要的是每秒Tbbit级的处理能力,控制信令要的是小码块的极致可靠——各守各的最优区间,谁也吃不掉谁。
Q5: 为什么IFFT点数总选2的幂(512/1024/2048/4096)? A: 因为Cooley–Tukey FFT的分治结构对2的幂最优雅,硬件流水线也最规整。带宽决定的活跃子载波数不满2的幂没关系——多余子载波置零即可,画布大一点不碍事,但算法必须顺着2的幂走才跑得最快。
本文由「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 等场景全覆盖。
