首页 › deep-tech › 信号处理与信道编码:从FFT到LDPC与Polar

信号处理与信道编码:从FFT到LDPC与Polar

阅读导引:本文面向1-3年经验的通信工程师,从"为什么需要这些技术"出发,用类比和图解拆解信号处理中三大核心模块——FFT/IFFT(时频域桥梁)、LDPC码(数据信道保护伞)、Polar码(控制信道利器)。读完本文,你将理解5G物理层信号处理链的底层逻辑,而不是死记公式。


一、从"写信"说起:信号处理在通信中的角色

想象你给远方朋友写了一封信。你得先把意思组织好(信源编码),然后加上防伪标记和校验码(信道编码),再翻译成对方能读懂的语言(调制),最后通过邮局寄出(射频发射)。

信号处理就是中间那段"加校验码 + 翻译"的过程。它要解决两个根本问题:

  1. 效率问题——怎么用最少的"笔墨"表达最多的信息?(FFT/IFFT让多路信号高效复用)
  2. 可靠性问题——信件在途中被雨水打湿、被虫咬了几个洞,对方怎么还能读出来?(信道编码LDPC/Polar纠错)

整条5G物理层信号处理链如下:

原始数据 → CRC校验 → 信道编码(LDPC/Polar) → 速率匹配 → 调制(QAM)
    → 层映射 → 预编码 → 资源映射 → IFFT → 加CP → 射频发射

下面我们逐模块拆解。


二、FFT与IFFT:时域与频域的"万能翻译器"

2.1 直觉理解:音乐的频谱

你听一段交响乐,听到的是随时间变化的声压波形(时域)。但一个训练有素的音乐家能分辨出"小提琴在高音区、大提琴在低音区"——这就是频域视角。

傅里叶变换就是那双"音乐家的耳朵":它能把任意一段时域信号拆解成不同频率的正弦波分量。

$$X(f) = \int_{-\infty}^{\infty} x(t) \cdot e^{-j2\pi ft} \, dt$$

反过来,逆傅里叶变换(IFFT)就是把各个频率的音符重新合成为一段完整的音乐。

$$x(t) = \int_{-\infty}^{\infty} X(f) \cdot e^{j2\pi ft} \, df$$

2.2 为什么OFDM必须用IFFT/FFT?

OFDM(正交频分复用)的核心思想是:把高速数据流分成N路低速数据流,分别调制到N个相互正交的子载波上并行传输。

如果用硬件来实现:你需要N个振荡器(混频器),每路子载波一个。当N=4096(5G NR最大FFT点数)时,这完全不可行。

IFFT的妙处在于:它是一个纯数字运算,一个模块就能同时完成"N路子载波调制并叠加"的工作。

用一个类比:IFFT就像一个超级计算器,你告诉它"N个子载波上各自要传什么符号",它直接帮你算出"这些符号叠加后在时域长什么样"。接收端的FFT则反过来:"我收到了一段时域波形,帮我拆出每个子载波上承载的符号"。

flowchart TD
    subgraph 发射端
        A[数据符号<br/>S₀,S₁,...,Sₙ₋₁] --> B[IFFT]
        B --> C[时域OFDM信号<br/>s₀,s₁,...,sₙ₋₁]
        C --> D[加循环前缀CP]
        D --> E[数模转换+射频发射]
    end
    subgraph 接收端
        F[射频接收+模数转换] --> G[去CP]
        G --> H[FFT]
        H --> I[恢复符号<br/>Ŝ₀,Ŝ₁,...,Ŝₙ₋₁]
    end
    E -.->|无线信道| F

2.3 DFT到FFT:算法复杂度的飞跃

离散傅里叶变换(DFT)的原始定义:

$$X[k] = \sum_{n=0}^{N-1} x[n] \cdot e^{-j\frac{2\pi}{N}kn}, \quad k = 0, 1, \ldots, N-1$$

直接计算需要 $O(N^2)$ 次复数乘法。当N=4096时,就是约1600万次乘法——太慢了。

FFT(快速傅里叶变换)利用了旋转因子 $W_N^{kn} = e^{-j\frac{2\pi}{N}kn}$ 的对称性和周期性,通过分治策略把复杂度降到 $O(N\log_2 N)$:

FFT点数 N DFT复杂度 N² FFT复杂度 Nlog₂N 加速比
64 4,096 384 10.7×
256 65,536 2,048 32×
1024 1,048,576 10,240 102×
4096 16,777,216 49,152 341×

N越大,FFT的加速效果越惊人。这就是为什么5G NR能用多达4096点的FFT实现数百个子载波的并行处理。

2.4 工程实战:FFT点数选择

5G NR中FFT点数不是固定的,取决于子载波间隔(SCS)和信道带宽:

参数 典型值
子载波间隔 15kHz / 30kHz / 60kHz / 120kHz
采样率 $f_s = N_{FFT} \times \Delta f$
有效子载波数 取决于带宽(如100MHz对应273个RB)
FFT点数 通常是2的幂次,≥有效子载波数

调试陷阱:在做OFDM接收机调试时,如果FFT窗口起点偏移了几个采样点,就会引入载波间干扰(ICI)和符号间干扰(ISI)。这就是为什么同步(时间和频率同步)是OFDM系统最关键的步骤之一。


三、信道编码:为什么通信需要"纠错"?

3.1 香农极限——纠错码的理论天花板

1948年,香农(Claude Shannon)证明了:只要传输速率低于信道容量 $C$,就一定存在一种编码方式使得误码率任意小。

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

其中 $B$ 是带宽,$S/N$ 是信噪比。

这个定理给出了希望,但没告诉怎么构造这种码。从那以后,通信工程师花了70多年寻找逼近香农极限的实用编码方案:

timeline
    title 信道编码发展历程
    1950 : 汉明码 (Hamming Code)
    1955 : 卷积码 (Convolutional Code)
    1962 : LDPC码 (Gallager提出)
    1993 : Turbo码 (Berrou等)
    2009 : Polar码 (Arıkan提出)
    2016 : 5G标准采纳LDPC+Polar

3.2 为什么5G不再用Turbo码?

4G LTE使用Turbo码作为数据信道编码。但5G时代有几个新需求让Turbo码力不从心:

  1. 吞吐量:5G峰值速率10Gbps,Turbo码的串行译码结构难以支撑
  2. 低延迟:URLLC场景要求1ms端到端时延,Turbo的迭代次数不可控
  3. 并行性:LDPC码基于稀疏图的译码天然支持高度并行

因此5G选择了一种混合编码策略:

信道类型 5G编码方案 核心原因
数据信道 (PDSCH/PUSCH) LDPC码 长码、高吞吐、并行友好
控制信道 (PDCCH/PUCCH) Polar码 短码、低BLER、可达容量
广播信道 (PBCH) Polar码 短包传输

四、LDPC码:数据信道的"编织铠甲"

4.1 核心思想:用稀疏的校验矩阵保护数据

LDPC(Low-Density Parity-Check)码是一种线性分组码,由Robert Gallager在1962年提出(他的博士论文),比Turbo码早了31年!只是当年算力不够,直到1990年代才被"重新发现"。

"低密度"的含义:校验矩阵 $\mathbf{H}$ 中1的个数非常稀少。比如一个 $1000 \times 2000$ 的矩阵,可能只有约6000个1(密度0.3%)。

为什么稀疏很重要?因为稀疏意味着每个校验方程只涉及少量比特,每个比特只参与少量校验方程——这直接决定了译码算法的低复杂度和高并行性。

4.2 Tanner图:把矩阵变成"社交网络"

校验矩阵 $\mathbf{H}$ 可以用Tanner图来表示,这是理解LDPC译码的关键:

flowchart TB
    subgraph Tanner图示例
        direction LR
        subgraph 变量节点 VN
            v1((v₁))
            v2((v₂))
            v3((v₃))
            v4((v₄))
            v5((v₅))
            v6((v₆))
        end
        subgraph 校验节点 CN
            c1[c₁]
            c2[c₂]
            c3[c₃]
        end
    end
    v1 --- c1
    v1 --- c2
    v2 --- c1
    v2 --- c3
    v3 --- c1
    v3 --- c2
    v4 --- c2
    v4 --- c3
    v5 --- c1
    v5 --- c3
    v6 --- c2
    v6 --- c3

上面这个Tanner图对应的校验矩阵(部分):

$$\mathbf{H} = \begin{bmatrix} 1 & 1 & 1 & 0 & 1 & 0 \ 1 & 0 & 1 & 1 & 0 & 1 \ 0 & 1 & 0 & 1 & 0 & 1 \end{bmatrix}$$

4.3 置信传播(BP)译码:像"八卦传播"一样纠错

LDPC最常用的译码算法是置信传播(Belief Propagation, BP),也叫消息传递(Message Passing)。其核心思想可以用一个生活类比:

想象6个学生(变量节点)参加3场考试(校验节点)。每场考试由几个学生共同完成,老师根据学生的表现给出反馈。学生之间不能直接交流,但可以通过老师传递"我对某个答案有多大把握"。经过多轮"考试→反馈→修正",最终大家都确定了正确答案。

具体流程:

  1. 初始化:每个变量节点根据接收到的信道值,计算自身为0或1的初始概率(似然比)
  2. 变量节点→校验节点:每个VN把它的置信信息沿着边发给相邻的CN
  3. 校验节点→变量节点:每个CN根据接收到的所有VN信息,计算出"如果其他VN都正确,这个VN应该是什么"的外信息,发回去
  4. 判决:每个VN综合所有收到的外信息,做出硬判决
  5. 校验:检查 $\mathbf{H}\hat{\mathbf{c}}^T = \mathbf{0}$ 是否成立。若成立则译码成功;否则回到步骤2继续迭代
flowchart TD
    A[接收信道值<br/>初始化LLR] --> B[VN → CN<br/>传递置信信息]
    B --> C[CN → VN<br/>计算外信息]
    C --> D[综合判决<br/>硬判决输出]
    D --> E{H·ĉᵀ = 0?}
    E -->|是| F[✅ 译码成功]
    E -->|否, 未达最大迭代| B
    E -->|否, 达到最大迭代| G[❌ 译码失败<br/>上报错误]

4.4 5G NR中的LDPC:两个基图(Base Graph)

5G标准定义了两个LDPC基图:

特性 Base Graph 1 (BG1) Base Graph 2 (BG2)
校验矩阵大小 46×68 42×52
适用码长 较长(≥约308比特) 较短(<约308比特)
适用码率 高码率(≥约0.67) 低码率(<约0.67)
典型场景 eMBB大数据传输 小包/低码率传输
支持IR-HARQ 是 是

设计哲学:BG1针对大数据量、高吞吐优化;BG2针对小数据包、低码率优化。gNB根据传输块大小(TBS)和码率自动选择。

4.5 工程实战连接

在哪里会遇到LDPC?

常见误解: - ❌ "LDPC码率越低越好"——码率低意味着更多冗余,频谱效率也低。实际需要在可靠性和效率之间取平衡 - ❌ "LDPC一定能纠错成功"——BP算法不保证收敛,强干扰下仍可能失败,此时依赖HARQ重传


五、Polar码:控制信道的"精准护盾"

5.1 信道极化:一个天才的观察

2008年,Erdal Arıkan发现了一个深刻的现象:如果把N个相同的信道通过特定的递归变换组合,这些信道会"极化"——一部分变成完美的信道(容量=1),另一部分变成完全不可用的信道(容量=0)。

用类比理解:

想象你有100个同样的杯子(信道),每个杯子容量相同。你做了一种特殊的"配对操作"——每两个杯子合并后重新分配:一个杯子得到更多的容量,另一个失去容量。重复多次后,有些杯子变得"几乎无限大"(好信道),有些变得"几乎没有容量"(差信道)。

数学上,极化变换可以用矩阵表示。对于 $N=2$ 的最简单情况:

$$\begin{bmatrix} U_1 \ U_2 \end{bmatrix} = \begin{bmatrix} 1 & 0 \ 1 & 1 \end{bmatrix} \begin{bmatrix} X_1 \ X_2 \end{bmatrix}$$

经过这个变换后,$U_1$ 对应的合成信道容量降低,$U_2$ 对应的合成信道容量升高。扩展到 $N=2^n$,递归操作让信道容量趋向极端化(0或1)。

5.2 编码策略:好信道传信息,差信道传固定值

极化完成后,编码策略非常简单:

flowchart LR
    subgraph 极化后的N个合成信道
        direction TB
        G1[信道1: 容量≈1 ✅]
        G2[信道3: 容量≈1 ✅]
        G3[信道5: 容量≈1 ✅]
        G4[信道7: 容量≈1 ✅]
        B1[信道2: 容量≈0 ❌]
        B2[信道4: 容量≈0 ❌]
        B3[信道6: 容量≈0 ❌]
        B4[信道8: 容量≈0 ❌]
    end
    G1 --> |传信息比特| O[输出码字]
    G2 --> O
    G3 --> O
    G4 --> O
    B1 --> |固定为0<br/>冻结比特| O
    B2 --> O
    B3 --> O
    B4 --> O

5.3 译码:连续消除(SC)与列表(SCL)

SC(Successive Cancellation)译码是最基本的Polar译码算法:

  1. 按顺序逐比特译码
  2. 如果是冻结比特,直接判为0
  3. 如果是信息比特,根据之前已译出的比特和当前接收值计算似然比,做硬判决

SC的问题:一旦某个比特判错,后续所有比特都会受影响(错误传播)。

SCL(SC List)译码是改进方案:同时维护L条候选路径(L=8或32),保留最可能的L种译码结果,最后选最优的。这大大提高了短码下的纠错性能。

5G NR中还使用了CRC辅助的SCL(CA-SCL):在编码前先加CRC,译码时用CRC从L条候选路径中选出正确的那条。

译码算法 复杂度 性能 5G NR使用
SC $O(N\log N)$ 中等 基础版本
SCL (L=8) $L \cdot O(N\log N)$ 优秀 ✅ 主要使用
CA-SCL $L \cdot O(N\log N)$ + CRC 最佳 ✅ 标准方案

5.4 Polar在5G中的具体应用

5G NR使用Polar码的场景:

信道 内容 典型载荷
PDCCH 下行控制信息 DCI 20-140比特
PUCCH 上行控制信息 UCI 12-19比特(格式2/3)
PBCH 广播信息 32比特
RAR 随机接入响应 约40比特

为什么控制信道用Polar而不用LDPC?

5.5 Polar vs LDPC:一张表看清差异

维度 LDPC码 Polar码
理论性质 渐近逼近香农极限 严格证明可达香农极限
最佳码长 中长码(数百~数千比特) 短码(数十~数百比特)
译码方式 置信传播(BP),迭代 SC/SCL,顺序
并行性 高(节点间可并行) 较低(顺序依赖)
吞吐量 极高(数十Gbps) 中等
码率灵活性 优秀(支持增量冗余HARQ) 有限
5G应用 数据信道 PDSCH/PUSCH 控制信道 PDCCH/PUCCH/PBCH
提出时间 1962年(Gallager) 2009年(Arıkan)
标准成熟度 多标准验证(WiFi/5G) 5G首次大规模商用

六、全链路视角:信号处理如何协同工作

让我们把FFT/IFFT和信道编码放在完整的5G下行处理链中看:

flowchart TB
    subgraph 发射端基带处理
        A[传输块 TB] --> B[CRC附加]
        B --> C[信道编码<br/>LDPC: 数据<br/>Polar: 控制信息]
        C --> D[速率匹配<br/>打孔/重复]
        D --> E[调制映射<br/>QPSK/16QAM/64QAM/256QAM]
        E --> F[层映射与预编码<br/>MIMO处理]
        F --> G[资源映射<br/>映射到RE]
        G --> H[IFFT<br/>频域→时域OFDM信号]
        H --> I[加CP与DAC<br/>生成射频信号]
    end
    subgraph 无线信道
        I -->|多径衰落+噪声| J[接收信号]
    end
    subgraph 接收端基带处理
        J --> K[ADC与去CP]
        K --> L[FFT<br/>时域→频域]
        L --> M[信道估计与均衡]
        M --> N[解调<br/>软比特LLR输出]
        N --> O[信道译码<br/>LDPC BP / Polar SCL]
        O --> P[CRC校验]
        P --> Q[✅ 恢复传输块]
    end

关键数据流转换: 1. 比特级(CRC、编码):数据被添加冗余保护 2. 符号级(调制):比特映射为复数符号 3. 采样级(IFFT/FFT):频域符号变为时域采样

每一级转换都有对应的逆操作在接收端还原。


七、工程调试实战要点

7.1 FFT相关调试

现象 可能原因 排查方向
子载波功率不平 FFT窗偏移 检查时间同步
星座图旋转 载波频偏 检查频率同步
EVM偏高 采样时钟偏差 检查晶振精度
特定子载波无信号 资源映射错误 检查DC子载波和保护带

7.2 信道编码相关调试

现象 可能原因 排查方向
BLER持续高 码率过高或SNR过低 降低MCS等级
HARQ重传仍失败 LDPC迭代次数不足 增加BP迭代次数
DCI漏检 Polar译码失败 检查聚合等级(AL)配置
短包BLER高于预期 冻结比特序列错误 检查Polar码构造参数

7.3 常用工具


常见问题

Q1: FFT和DFT有什么区别? A: FFT是DFT的一种快速算法。数学结果完全相同,只是FFT利用旋转因子的对称性大幅降低了计算量,从 $O(N^2)$ 降到 $O(N\log_2N)$。N越大加速越明显(N=4096时约341倍)。工程上几乎不存在直接算DFT的场景。

Q2: LDPC码和Turbo码的本质区别是什么? A: 核心区别在于译码结构。Turbo码用两个递归系统卷积码(RSC)并行级联,依赖交织器,译码是两个SISO译码器之间的迭代;LDPC码基于稀疏校验矩阵的Tanner图,译码是在变量节点和校验节点之间的消息传递。LDPC的并行性更好,天然适合硬件加速器(GPU/FPGA/ASIC),这是5G选择它的主因。

Q3: 为什么不统一用Polar码或统一用LDPC码? A: 因为没有一种编码在所有场景下都最优。LDPC在长码、高吞吐场景下表现优异(数据信道),但在短码(几十比特)下性能不如Polar。Polar在短码下可达香农极限,但长码下译码复杂度急剧上升,且不支持增量冗余HARQ。所以5G采取了"术业有专攻"的混合方案。

Q4: 信道编码中的"码率"是什么意思?它怎么影响系统性能? A: 码率 $R = k/n$,其中 $k$ 是信息比特数,$n$ 是编码后总比特数(含冗余)。码率越低,冗余越多,纠错能力越强,但频谱效率也越低。5G中gNB根据信道质量(CQI/RI)动态调整MCS,其中就包含码率的选择——好信道用高码率提效率,差信道用低码率保可靠。

Q5: 在实际项目中如何选择FFT点数? A: FFT点数 $N_{FFT}$ 由采样率和子载波间隔决定:$N_{FFT} = f_s / \Delta f$。在5G NR中,$f_s$ 由信道带宽和SCS决定。通常 $N_{FFT}$ 取≥有效子载波数的下一个2的幂次。比如100MHz带宽、30kHz SCS配置下,有效子载波约3276个,$N_{FFT}$ 取4096。零填充部分对应保护带和直流子载波。


参考来源

  1. PySDR - 信道编码章节 — 含FEC、香农极限、LDPC码的Python交互式教程,推荐实践学习
  2. Demystifying 5G Polar and LDPC Codes (arXiv 2502.11053) — 2025年发表的LDPC与Polar码综合综述论文
  3. Stanford EE376A - Polar Codes Lecture — Arıkan极化码理论的经典课程讲义
  4. CafeTele - LDPC and Polar Coding in 5G NR — 面向3GPP TS 38.212的工程实现指南
  5. NVIDIA Sionna - 5G Channel Coding Tutorial — GPU加速的5G信道编码仿真教程,含可视化对比

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