首页 › deep-tech › 信号处理基石:FFT与信道编码图解

信号处理基石:从傅里叶变换到5G信道编码的原理图解

引言:信号处理的"翻译官"们

想象一个场景:你对着手机说了一句"你好",几毫秒后,千里之外的朋友听到了。这中间发生了什么?你的声音先变成了一串0和1,然后这些比特经过傅里叶变换被"翻译"成电磁波的形态,再通过信道编码穿上"防弹衣"抵御噪声干扰,最后以光速飞向远方。

这三件事——信号的频域转换(FFT/IFFT)和纠错保护(LDPC/Polar码)——构成了现代通信最底层的信号处理基石。今天我们不讲公式推导,而是用直觉和图解,搞清楚这些技术为什么这样设计。


一、傅里叶变换:看见信号的"隐藏维度"

1.1 一个直觉类比

你听到一段交响乐,里面有提琴、长笛、鼓声混在一起。傅里叶变换就像一个超级耳朵,能告诉你:这段音乐里有440Hz的提琴声(强度0.8)、880Hz的长笛声(强度0.3)、220Hz的大鼓声(强度0.5)。

时域看到的是波形随时间的变化,频域看到的是每个频率成分的强度。两者描述的是同一个信号,只是视角不同。

1.2 DFT的数学定义

离散傅里叶变换(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$$

其中 $x[n]$ 是时域的第 $n$ 个采样点,$X[k]$ 是频域的第 $k$ 个频率分量,$j$ 是虚数单位。

直觉上理解:每个 $X[k]$ 就是把信号 $x[n]$ 和一个频率为 $k$ 的"标准正弦波"做点积。点积越大,说明信号中包含该频率成分越多。这就是"投影"的思想——把信号投影到一组正交基底上。

1.3 从DFT到FFT:蝴蝶的魔法

直接计算DFT需要 $O(N^2)$ 次运算——对 $N$ 个输出,每个输出需要 $N$ 次乘加。当 $N=1024$ 时,需要约100万次运算。

1965年,Cooley和Tukey提出了快速傅里叶变换(FFT)算法,把复杂度降到 $O(N \log_2 N)$。对 $N=1024$,只需要约1万次运算——提速100倍。

FFT的核心思想是分治:把一个 $N$ 点DFT拆成两个 $N/2$ 点DFT,再拆成四个 $N/4$ 点DFT……直到只剩2点DFT。这个过程不断递归,形成标志性的蝶形运算(Butterfly Operation)。

graph TD
    subgraph "8点FFT蝶形图"
        X0["x[0]"] --> B1["蝶形<br/>+W⁰"]
        X4["x[4]"] --> B1
        X1["x[1]"] --> B2["蝶形<br/>+W⁰"]
        X5["x[5]"] --> B2
        X2["x[2]"] --> B3["蝶形<br/>+W⁰"]
        X6["x[6]"] --> B3
        X3["x[3]"] --> B4["蝶形<br/>+W⁰"]
        X7["x[7]"] --> B4
        B1 --> S1["Stage 2<br/>蝶形"]
        B2 --> S1
        B3 --> S2["Stage 2<br/>蝶形"]
        B4 --> S2
        S1 --> F1["Stage 3<br/>蝶形"]
        S2 --> F1
        F1 --> OUT["X[0]~X[7]<br/>频域输出"]
    end

    style X0 fill:#e1f5fe
    style X4 fill:#e1f5fe
    style OUT fill:#c8e6c9

每个蝶形运算做两件事:

$$A_{out} = A_{in} + W_N^k \cdot B_{in}$$ $$B_{out} = A_{in} - W_N^k \cdot B_{in}$$

其中 $W_N^k = e^{-j\frac{2\pi k}{N}}$ 称为旋转因子(Twiddle Factor),本质上是一个复数旋转操作。

1.4 FFT vs IFFT

IFFT(逆FFT)是FFT的逆运算,把频域信号变回时域:

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

区别只在指数符号(正号)和前面的 $1/N$ 系数。在硬件实现中,FFT和IFFT可以用同一个电路,只改变旋转因子的符号即可——这就是为什么通信芯片里通常只有一个FFT/IFFT复用模块。

特性 DFT FFT IFFT
功能 时域→频域 时域→频域(高效) 频域→时域(高效)
复杂度 $O(N^2)$ $O(N \log_2 N)$ $O(N \log_2 N)$
N=1024运算量 ~1,048,576 ~10,240 ~10,240
旋转因子 $e^{-j2\pi kn/N}$ $e^{-j2\pi kn/N}$ $e^{+j2\pi kn/N}$
硬件复用 - 同一电路可复用为IFFT 同一电路可复用为FFT

二、FFT/IFFT在OFDM中的角色

2.1 为什么OFDM需要FFT?

OFDM(正交频分复用)是4G/5G的核心多载波技术。它的想法很简单:把高速数据流分成很多低速数据流,分别调制到不同的子载波上并行传输。

如果没有FFT,实现OFDM需要一个子载波配一个振荡器(混频器)。5G的FFT Size可达4096,意味着需要4096个振荡器——完全不可行。

FFT/IFFT的妙处在于:用数学运算代替了大量硬件振荡器。IFFT一次性把所有子载波的频域数据"合成"成一个时域波形,FFT一次性把接收到的时域波形"拆解"回各个子载波的数据。

graph TD
    subgraph "发射端"
        Bits["输入比特流"] --> Mod["QAM映射"]
        Mod --> SC["子载波映射<br/>频域数据X[0]...X[N-1]"]
        SC --> IFFT["IFFT<br/>频域→时域"]
        IFFT --> CP["加循环前缀CP"]
        CP --> DAC["DAC+射频发送"]
    end

    subgraph "接收端"
        ADC["射频接收+ADC"] --> RCP["去循环前缀CP"]
        RCP --> FFT_B["FFT<br/>时域→频域"]
        FFT_B --> EQ["信道均衡"]
        EQ --> Demod["QAM解映射"]
        Demod --> OutBits["输出比特流"]
    end

    DAC -->|无线信道| ADC

    style IFFT fill:#ffecb3
    style FFT_B fill:#ffecb3

2.2 一个具体例子

假设5G NR的参数: - 信道带宽:100 MHz - 子载波间隔:30 kHz - FFT Size:$N = 4096$ - 有效子载波数:约3276个(其余为保护带)

发射端流程: 1. 待发送的比特经过QAM映射(如256-QAM,每符号8比特) 2. QAM符号被映射到4096个频域子载波上 3. 对4096点频域数据做IFFT,得到4096个时域采样点(一个OFDM符号) 4. 复制尾部若干采样到头部,形成循环前缀(CP) 5. 通过DAC变成模拟信号,调制到射频发送

接收端流程: 1. 接收、采样、去掉CP 2. 对4096点时域数据做FFT,恢复出各子载波的频域数据 3. 信道均衡(补偿无线信道的衰落) 4. QAM解映射,恢复比特

关键洞察:OFDM中,IFFT就是"调制器",FFT就是"解调器"。这不是巧合——IFFT的数学定义恰好等价于把多个正弦波叠加在一起,这正是OFDM发送端要做的事。


三、信道编码:给比特穿上"防弹衣"

3.1 为什么需要信道编码?

无线信道充满噪声、干扰和衰落。你发送的"1",接收端可能误判为"0"。信道编码的思路是:发送前给数据加上冗余比特,接收端利用冗余信息发现和纠正错误。

这就像你寄快递时在箱子里塞泡沫——泡沫本身不是货物,但它保护货物不被损坏。代价是:箱子变大了(需要更多带宽)。

香农定理告诉我们:只要编码速率 $R$ 不超过信道容量 $C$,就存在一种编码方案可以实现无差错传输:

$$C = B \cdot \log_2(1 + \text{SNR})$$

其中 $B$ 是带宽,SNR 是信噪比。信道编码技术的发展史,就是不断逼近香农极限的历史。

graph TD
    subgraph "信道编码发展历程"
        T1["1950s<br/>汉明码<br/>Hamming Code<br/>~香农限3dB"]
        T2["1960s<br/>Reed-Solomon码<br/>RS码<br/>~香农限2.5dB"]
        T3["1993<br/>Turbo码<br/>逼近香农限0.5dB<br/>3G/4G使用"]
        T4["1996重发现<br/>LDPC码<br/>逼近香农限0.0045dB<br/>5G数据信道"]
        T5["2009<br/>Polar码<br/>达到香农极限<br/>5G控制信道"]
        T1 --> T2 --> T3 --> T4 --> T5
    end

    style T4 fill:#ffecb3
    style T5 fill:#c8e6c9

3.2 信道编码的核心概念

概念 含义 通俗类比
信息比特 原始要发送的数据 快递中的货物
冗余比特 为纠错添加的额外比特 箱子里的泡沫
码率 R 信息比特数 / 总比特数 货物占总重量的比例
编码增益 为达到同样误码率,编码后可容忍的SNR降低量 泡沫的抗冲击效果
码字 编码后的完整比特序列 封装好的快递箱

四、LDPC码:5G数据信道的守护者

4.1 什么是LDPC码?

LDPC(Low-Density Parity-Check,低密度奇偶校验码)最早由Gallager在1962年提出,但因为计算复杂度太高,被遗忘了30多年。直到1996年,MacKay和Neal重新发现它,证明其性能可以极其接近香农极限。

"低密度"指的是什么?——LDPC码的校验矩阵 $H$ 中,1的个数非常稀疏。比如一个1000×2000的矩阵,可能只有几千个1(密度不到1%)。这种稀疏性使得译码可以在Tanner图上用消息传递算法高效实现。

4.2 校验矩阵与Tanner图

假设一个简单的(6,3) LDPC码,信息位3比特,码长6比特,校验矩阵为:

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

对应的Tanner图如下:

graph LR
    subgraph "变量节点(比特位)"
        V1["c₁"]
        V2["c₂"]
        V3["c₃"]
        V4["c₄"]
        V5["c₅"]
        V6["c₆"]
    end

    subgraph "校验节点(校验方程)"
        C1["f₁: c₁⊕c₂⊕c₄=0"]
        C2["f₂: c₂⊕c₃⊕c₅=0"]
        C3["f₃: c₁⊕c₃⊕c₆=0"]
    end

    V1 --- C1
    V2 --- C1
    V4 --- C1
    V2 --- C2
    V3 --- C2
    V5 --- C2
    V1 --- C3
    V3 --- C3
    V6 --- C3

    style V1 fill:#e3f2fd
    style V2 fill:#e3f2fd
    style V3 fill:#e3f2fd
    style V4 fill:#fff3e0
    style V5 fill:#fff3e0
    style V6 fill:#fff3e0
    style C1 fill:#fce4ec
    style C2 fill:#fce4ec
    style C3 fill:#fce4ec

Tanner图中的两种节点: - 变量节点(Variable Node):对应码字中的每个比特 - 校验节点(Check Node):对应每个校验方程

边连接了参与该校验方程的比特。低密度意味着每个节点连接的边数很少。

4.3 译码:置信度传播(Belief Propagation)

LDPC的译码过程是一个"投票协商"的过程:

  1. 初始化:根据接收信号的软信息(不只是判断是0还是1,而是给出"有多大概率是0/1"),给每个变量节点一个初始置信度
  2. 变量节点→校验节点:每个变量节点把自己当前的置信度传递给相邻的校验节点
  3. 校验节点→变量节点:每个校验节点根据收到的所有置信度,计算出排除某个变量后该变量"应该"是什么值,反馈回去
  4. 迭代:重复2-3步,直到所有校验方程满足或达到最大迭代次数

直觉理解:就像一群人投票决定答案,每个人都先根据自己掌握的信息给出判断,然后互相讨论、修正意见,最终达成共识。迭代越多,共识越准确。

4.4 5G中LDPC的结构特点

5G NR为LDPC码设计了两个基础图(Base Graph):

参数 BG1(大数据) BG2(小数据)
适用场景 eMBB大包传输 URLLC/小包传输
最大码长 8448比特 3840比特
支持码率 1/3 ~ 8/9 1/5 ~ 5/6
典型信道 PDSCH/PUSCH PDSCH/PUSCH(小包)
结构特点 更大的矩阵,更精细的调控 更紧凑,适合短码

为什么5G选LDPC而不是继续用Turbo码?


五、Polar码:5G控制信道的"精确制导"

5.1 信道极化——一个优美的数学发现

2009年,土耳其科学家Erdal Arıkan发表了一篇论文,提出了信道极化(Channel Polarization)理论,并据此构造了Polar码。这是历史上第一个被严格证明可以达到香农极限的编码方案。

信道极化的核心思想:通过递归的信道变换,把N个相同质量的"中等"信道,变成一部分"完美"信道和一部分"无用"信道。

graph TD
    subgraph "信道极化过程(N=8)"
        W["W: 8个相同质量的信道<br/>(容量≈0.5)"]
        W --> S1["第一级变换<br/>4个稍好 + 4个稍差"]
        S1 --> S2["第二级变换<br/>2个更好 + 2个好 + 2个差 + 2个更差"]
        S2 --> S3["第三级变换<br/>完全极化"]
        S3 --> G["✓ 完美信道<br/>容量≈1.0<br/>放信息比特"]
        S3 --> B["✗ 无用信道<br/>容量≈0.0<br/>放固定比特(冻结)"]
    end

    style W fill:#fff9c4
    style G fill:#c8e6c9
    style B fill:#ffcdd2

类比:想象8个水桶,初始水位一样(都是半满)。通过一种特殊的"搬水"操作:把相邻两个桶的水重新分配——一个多给点,一个少给点。经过几轮操作后,有些桶满了,有些桶空了。你当然会把珍贵的货物(信息)放在满桶里。

5.2 Polar码的编码

Polar码的编码过程基于一个核心矩阵:

$$G_N = B_N F^{\otimes n}$$

其中 $F = \begin{bmatrix} 1 & 0 \ 1 & 1 \end{bmatrix}$,$F^{\otimes n}$ 表示 $F$ 的 $n$ 次Kronecker积,$B_N$ 是比特反转置换矩阵。

编码步骤: 1. 信道排序:根据信道可靠性排序,确定哪些位置"好"、哪些"差" 2. 比特放置:把 $K$ 个信息比特放在最可靠的 $K$ 个位置上 3. 冻结比特:其余 $N-K$ 个位置填充固定值(通常为0) 4. 矩阵乘法:用生成矩阵 $G_N$ 编码

5.3 Polar码的译码:逐比特消除

Polar码最基本的译码算法是逐次消除(SC, Successive Cancellation)译码:

按顺序逐个估计每个比特——对信息比特位,根据接收信号和已译出的前序比特,计算该比特最可能是0还是1;对冻结比特位,直接输出0。

SC译码的问题是错误传播:如果第3个比特译错了,后面所有依赖第3个比特的译码都会受影响。

5G NR实际使用的是增强版——CRC辅助的列表译码(CA-SCL): - CRC:在编码前先加循环冗余校验 - 列表(List):同时保留 $L$ 条最可能的译码路径(如 $L=8$) - 路径选择:最后用CRC校验,选出通过CRC校验的那条路径

译码算法 复杂度 性能 5G是否使用
SC(逐次消除) $O(N \log N)$ 中等,短码表现一般 基础算法
SCL(列表译码,L=8) $O(LN \log N)$ 优秀,接近ML译码 实际使用
CA-SCL(CRC+SCL) $O(LN \log N)$ 非常优秀 5G NR标准

5.4 为什么5G控制信道选Polar码?

控制信道的特点:传输的DCI/UCI信息通常很短(几十比特),但对可靠性要求极高——一条控制信令如果出错,可能导致整个调度失败。

特性 LDPC码 Polar码
最佳码长 中长码(>200比特) 短码(<200比特)
短码性能 较差 优异
译码延迟 较高(需多次迭代) 较低(顺序译码)
实现复杂度 中等 较低
5G用途 数据信道(PDSCH/PUSCH) 控制信道(PDCCH/PUCCH/PBCH)
HARQ支持 天然支持 不典型使用

简单说:LDPC擅长扛大包(大数据吞吐),Polar擅长送急件(短而可靠的控制信令)。两者分工明确,互补搭配。


六、信号处理全链路:从比特到电磁波

把FFT/IFFT和信道编码放在一起,看看5G信号处理的完整链路:

graph TD
    subgraph "发射端处理链"
        A["源比特"] --> B["信道编码<br/>LDPC/Polar"]
        B --> C["比特交织"]
        C --> D["QAM调制<br/>比特→符号"]
        D --> E["子载波映射<br/>RE映射"]
        E --> F["IFFT<br/>频域→时域"]
        F --> G["加CP"]
        G --> H["DAC+上变频<br/>→天线发射"]
    end

    subgraph "接收端处理链"
        I["天线接收<br/>+下变频+ADC"] --> J["去CP"]
        J --> K["FFT<br/>时域→频域"]
        K --> L["信道估计<br/>&均衡"]
        L --> M["QAM解调<br/>符号→LLR软信息"]
        M --> N["解交织"]
        N --> O["信道译码<br/>LDPC/Polar译码"]
        O --> P["恢复比特"]
    end

    H -->|无线信道| I

    style B fill:#ffecb3
    style F fill:#c8e6c9
    style K fill:#c8e6c9
    style O fill:#ffecb3

这个链路中每个模块的职责: - 信道编码:加冗余,抵抗信道错误(黄色模块) - IFFT/FFT:实现OFDM调制/解调(绿色模块) - QAM调制:把比特映射成复数符号 - 信道估计与均衡:估计无线信道的衰落并补偿


七、实战连接:工程师日常中的应用

7.1 调试FFT相关问题的技巧

常见问题1:CP长度不够导致ISI

当多径时延扩展超过CP长度时,FFT窗口内会混入前一个符号的干扰(码间干扰ISI)。表现为: - 频域上某些子载波的信号"旋转"失真 - 信道均衡无法完全补偿 - 误码率在特定时延条件下突增

排查方法:用信道冲激响应(CIR)工具观察多径时延分布,确认最大时延是否超过CP长度。5G NR的可扩展CP就是为了应对不同时延扩展场景。

常见问题2:FFT Size选择影响系统性能

FFT Size决定了OFDM的基本参数: - FFT Size越大 → 子载波越密集 → 频谱效率越高 → 但对多普勒频移越敏感 - FFT Size越小 → 符号越短 → 时延容忍度越低 → 但适合高速移动

5G NR定义了多种 numerology(子载波间隔),本质上就是在不同的FFT Size和CP之间权衡。

7.2 LDPC译码器调试要点

7.3 Polar码相关的调试场景


常见问题

Q1: FFT和DFT有什么区别?为什么通信系统都用FFT?

A: DFT是数学定义,FFT是计算DFT的高效算法。区别就像"计算1+2+3+...+100"和"用公式(100×101)/2"的区别——结果一样,但FFT快得多($O(N \log N)$ vs $O(N^2)$)。通信系统对实时性要求极高,所以必须用FFT。实际上,今天说到"做傅里叶变换",几乎都是指FFT。

Q2: LDPC和Polar码可以互换使用吗?为什么5G不统一用一种?

A: 理论上可以,但不合理。LDPC在长码(几百到几千比特)场景性能优异,且天然支持并行译码和增量冗余HARQ,适合高速数据传输。Polar码在短码(几十到两百比特)场景性能更优,译码延迟更低,适合对可靠性要求极高的控制信令。5G让两者各司其职,是工程上的最优解。

Q3: 为什么OFDM发送端用IFFT而不是FFT?

A: 这是很多人的困惑。记住:IFFT把频域变时域,FFT把时域变频域。发送端有频域的子载波数据,需要变成时域波形才能通过天线发射,所以用IFFT。接收端收到时域波形,需要恢复出频域子载波数据,所以用FFT。

Q4: Polar码"达到香农极限"和LDPC"逼近香农极限"有什么区别?

A: 这是一个理论深度的问题。Polar码在码长 $N \to \infty$ 时,被严格数学证明可以达到香农极限——这是确定性保证。LDPC码虽然也能非常接近香农极限(差距可以小于0.01dB),但理论上始终是"逼近"而非"达到"。不过在实际有限码长下,LDPC和Polar的性能差异很小,工程选择更多考虑实现复杂度、吞吐率和灵活性。

Q5: 基站和手机的FFT模块一样吗?

A: 数学原理完全相同,但规模和实现不同。基站的FFT Size通常更大(如4096点,支持更大带宽),且需要同时处理多路信号(多用户MIMO),因此FFT引擎需要更强的并行处理能力。手机的FFT Size根据当前工作带宽确定(如100MHz用4096点,20MHz用1024点),功耗和面积是关键约束。但核心的蝶形运算电路是一样的。


参考来源

  1. Understanding FFT and IFFT in OFDM — FFT/IFFT在OFDM中的详细应用解释
  2. 5G NR Channel Coding Explained: LDPC vs Polar Codes — 5G NR信道编码全面对比
  3. How the Cooley-Tukey FFT Algorithm Works - The Inner Butterfly — FFT蝶形运算原理详解
  4. 信道编码 - 通信类知识库 — 从香农定理到5G编码的演进
  5. 信道编码(分组码、卷积码、Polar码、LDPC码、Turbo码) — 信道编码技术全景教程

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