首页 › deep-tech › 算得快修得对:通信两大内功

算得快修得对:通信两大内功

说明:本轮网络抓取工具均不可用(搜索与抓取接口均被拒绝或配额耗尽),本文基于编码理论与数字信号处理的教科书共识写作;复杂度数字均为可直接验算的数学结果,参考来源为公认稳定的权威词条与原始论文出处。

一套无线通信系统,剥掉所有营销词汇,本质上只干两件事:把信息“算”成适合飞行的波形发出去,以及把收到的波形“修”回正确的信息。前者靠信号变换,后者靠信道编码。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把错误修回来。一个管“算得快”,一个管“修得对”。


一、FFT:给信号做“成分分析”

1.1 DFT是一张“配方单”

任何一段信号,无论看起来多乱,都可以拆成一组不同频率的正弦波叠加——就像任何一种果汁都能写成一张成分表:水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的一切魔法,最后都落在这一对变换上。

1.2 痛点:直接算,算不过来

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发表快速算法后,整个数字信号处理学科才算真正起飞。

1.3 分而治之:FFT的聪明之处

首先要澄清一个最常见的误解: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模块换了个接线方式。

1.4 一个新手陷阱:IFFT点数 ≠ 子载波数

现网调参时经常有人困惑:4096点IFFT,怎么只有3300个子载波?答案是:IFFT点数是计算的“画布大小”,实际子载波是画布上真正落笔的部分。带宽配置决定的活跃子载波被放上去,两边大量保护子载波直接置零,直流子载波通常也空着。点数选2的幂是为了FFT算得快,子载波数由带宽和子载波间隔决定,两者本来就是两回事。


二、信道编码:让错误“修得回来”

2.1 一切从香农的一句话开始

无线的世界没有“干净”二字:噪声、衰落、邻区干扰随时在翻转你的比特。1948年香农给出了那个改变一切的结论:

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

只要传输速率低于信道容量C,理论上存在一种编码方式,能把误码率压到任意低——不需要升级硬件,靠数学就行。

但香农只证明了这种码“存在”,没告诉你它长什么样。于是接下来半个世纪,编码理论的主线任务只有一条:找到既逼近香农极限、又能用现实硬件译码的构造。5G的答案是一对组合:LDPC管数据,Polar管控制。

2.2 编码的直觉:用多余的线索包住信息

先忘掉一切术语,想想最原始的做法:报电话号码时报两遍,对方对照着听,两遍不一致就知道出错了。重复就是最古老的编码——用冗余换可靠。

代价同样直白:报两遍,效率减半。编码理论的一切,都是在回答同一个问题:怎样花最少的冗余,修最多的错,还能让接收端算得动。

LDPC和Polar给出了两个风格迥异、却都逼近极限的答案。

2.3 LDPC:让校验方程互相“打小报告”

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,编码器就能织出什么形状的网。

2.4 Polar:把烂信道“极化”成好信道

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”的组合拳,让几十比特的小码块也能把可靠性推到极高。

2.5 为什么5G让两兄弟分了工

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长期偏离目标带,或重传收敛慢。

三个常见调试陷阱:

  1. CRC失败扎堆,先分清是“网”还是“码”。干扰、弱覆盖导致的失败,伴随低SINR;而打孔位置附近的码块连续失败、换MCS后异常消失的,更可能是速率匹配边界问题。先看SINR分布再怪编码,别倒因为果。
  2. 频偏是FFT的天敌。子载波正交性建立在FFT窗对齐、载波频率精确对准之上;频偏会让FFT“看串门”,产生子载波间干扰,表现为星座点整体旋转发散。看到星座发散,除了想相噪,先查频偏跟踪。
  3. FFT窗同步错位,错的是一整块。符号定时偏移叠加多径时,FFT窗口会切进相邻符号,造成符号间干扰。这类错误不是随机比特错,而是成片码块崩塌——现象模式本身就在提示你该看同步还是该看信道。

至于日常工具,频谱仪屏幕上每一帧刷新的频谱,背后都是一次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的幂走才跑得最快。


参考来源

  1. Fast Fourier transform — Wikipedia — FFT算法历史(Cooley–Tukey 1965)与蝶形结构的权威综述
  2. Low-density parity-check code — Wikipedia — LDPC的Gallager起源、Tanner图与置信传播译码、5G采用情况
  3. Polar code (coding theory) — Wikipedia — Arikan极化码原理、冻结比特机制与5G控制信道应用
  4. Cooley & Tukey, "An algorithm for the machine calculation of complex Fourier series", Math. Comp. 19 (1965) — FFT原初论文
  5. Arikan, "Channel Polarization", arXiv:0807.3917 — 极化码理论奠基论文(后刊于IEEE Trans. Inf. Theory, 2009)

本文由「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学通信知识星球海报-扫码加入