第 8 章 信道编码 / Channel Coding

无线信道中的噪声、衰落和干扰使得接收端不可避免地出现误码。信道编码(Channel Coding)的核心目标是在有限的发送功率和带宽资源下,通过引入可控的冗余,尽可能可靠地恢复原始信息。本章从工程应用视角出发,系统介绍无线通信中主流的信道编码方案。

7.1 无线信道编码的特殊需求

与有线信道不同,无线信道具有两个显著特征:

  1. 深衰落(Deep Fading):信号幅度可能瞬时下降 20–30 dB,导致连续突发错误(Burst Errors)。
  2. 功率受限:移动终端电池容量有限,无法通过无限提高发射功率来换取可靠性。

因此,无线信道编码需要同时关注两个指标:

  • 编码增益(Coding Gain):在相同误码率(BER)下,编码系统相比未编码系统所节省的 $E_b/N_0$(dB)。例如,某编码方案在 $\text{BER}=10^{-5}$ 处提供 7 dB 编码增益,意味着发送功率可以降低约 5 倍。
  • 编码率(Code Rate):$R_c = k/n$,其中 $k$ 为信息比特数,$n$ 为编码后比特数。$R_c$ 越低,冗余越多,纠错能力越强,但频谱效率(Spectral Efficiency)越低。

香农信道容量定理告诉我们,只要传输速率 $R < C$(信道容量),就存在某种编码方案使误码率任意小:

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

其中 $B$ 为带宽,$S/N$ 为信噪比。信道编码的全部工程努力,本质上就是逼近香农极限(Shannon Limit)

flowchart TD
    A["原始信息比特
k bits"] --> B["信道编码器
Channel Encoder"] B --> C["编码后比特
n bits (Rc = k/n)"] C --> D["调制
Modulation"] D --> E["无线信道
衰落 + 噪声"] E --> F["解调
Demodulation"] F --> G["信道译码器
Channel Decoder"] G --> H["恢复信息比特
k bits"] style A fill:#2d3748,stroke:#e2e8f0,color:#fff style B fill:#2b6cb0,stroke:#e2e8f0,color:#fff style C fill:#2d3748,stroke:#e2e8f0,color:#fff style D fill:#2b6cb0,stroke:#e2e8f0,color:#fff style E fill:#9b2c2c,stroke:#e2e8f0,color:#fff style F fill:#2b6cb0,stroke:#e2e8f0,color:#fff style G fill:#2b6cb0,stroke:#e2e8f0,color:#fff style H fill:#2d3748,stroke:#e2e8f0,color:#fff

7.2 卷积码(Convolutional Codes)

卷积码是无线通信中应用最广泛的编码方案之一,广泛用于 2G(GSM)、3G(WCDMA)以及卫星通信等系统。

7.2.1 编码器结构

卷积码编码器由移位寄存器和模-2 加法器(异或门)组成。一个 $(n, k, K)$ 卷积码的参数含义为:

  • $k$:每次输入的信息比特数
  • $n$:每次输出的编码比特数
  • $K$:约束长度(Constraint Length),编码器中移位寄存器的总级数加 1

编码率 $R_c = k/n$。以最常用的 $(2, 1, 7)$ 卷积码为例($R_c = 1/2$,$K=7$),编码器包含 6 级移位寄存器,两个生成多项式分别为:

$$g_1(D) = 1 + D^2 + D^3 + D^5 + D^6$$ $$g_2(D) = 1 + D + D^2 + D^3 + D^6$$

每输入 1 个比特,输出 2 个比特,分别由两个生成多项式计算得到。

flowchart LR
    IN["输入 x"] --> S0["S0"]
    S0 --> S1["S1"]
    S1 --> S2["S2"]
    S2 --> S3["S3"]
    S3 --> S4["S4"]
    S4 --> S5["S5"]
    S0 --> G1["⊕"]
    S2 --> G1
    S3 --> G1
    S5 --> G1
    G1 --> Y1["输出 y1"]
    S0 --> G2["⊕"]
    S1 --> G2
    S2 --> G2
    S3 --> G2
    S5 --> G2
    G2 --> Y2["输出 y2"]
    style IN fill:#2d3748,stroke:#e2e8f0,color:#fff
    style S0 fill:#2d3748,stroke:#e2e8f0,color:#fff
    style S1 fill:#2d3748,stroke:#e2e8f0,color:#fff
    style S2 fill:#2d3748,stroke:#e2e8f0,color:#fff
    style S3 fill:#2d3748,stroke:#e2e8f0,color:#fff
    style S4 fill:#2d3748,stroke:#e2e8f0,color:#fff
    style S5 fill:#2d3748,stroke:#e2e8f0,color:#fff
    style G1 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style G2 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style Y1 fill:#276749,stroke:#e2e8f0,color:#fff
    style Y2 fill:#276749,stroke:#e2e8f0,color:#fff

7.2.2 状态图与网格图

编码器有 $2^{K-1}$ 个状态。对于 $(2,1,7)$ 码,状态数为 $2^6 = 64$。状态图(State Diagram)和网格图(Trellis Diagram)是分析卷积码的重要工具:

  • 状态图:描述状态之间的转移关系及对应输出
  • 网格图:将状态转移按时间展开,用于可视化译码过程

7.2.3 Viterbi 译码

Viterbi 算法是一种最大似然(ML,Maximum Likelihood)译码算法,通过网格图搜索与接收序列距离最小的路径。其核心思想是:

  1. 在每个时间单元,计算到达每个状态的分支度量(Branch Metric)
  2. 对每个状态,选择累积度量最小的路径(幸存路径,Survivor Path
  3. 回溯(Traceback)得到译码结果

对于硬判决(Hard Decision),分支度量使用汉明距离(Hamming Distance);对于软判决(Soft Decision),使用欧氏距离(Euclidean Distance)。软判决通常能额外带来约 2 dB 的编码增益。

工程要点:Viterbi 译码器的复杂度随约束长度指数增长。实际系统中 $K$ 通常不超过 9,因此卷积码的纠错能力存在上限——这直接催生了对更强编码方案(Turbo 码、LDPC 码)的需求。

7.3 Turbo 码(Turbo Codes)

1993 年,Berrou、Glavieux 和 Thitimajshima 发表了 Turbo 码,宣称在 $R_c = 1/2$ 下距香农极限仅 0.5 dB,震惊了编码学界。Turbo 码是 3G(WCDMA、CDMA2000)和 4G LTE 上行链路的核心编码方案。

7.3.1 并行级联结构

Turbo 码的核心创新在于**并行级联卷积码(PCCC,Parallel Concatenated Convolutional Code)交织器(Interleaver)**的组合:

flowchart TD
    U["信息序列 u"] --> ENC1["RSC 编码器 1"]
    U --> Pi["交织器
Interleaver"] Pi --> ENC2["RSC 编码器 2"] ENC1 --> P1["校验位 p₁"] ENC2 --> P2["校验位 p₂"] U --> MUX["复用 / 打孔"] P1 --> MUX P2 --> MUX MUX --> OUT["编码输出"] style U fill:#2d3748,stroke:#e2e8f0,color:#fff style ENC1 fill:#2b6cb0,stroke:#e2e8f0,color:#fff style ENC2 fill:#2b6cb0,stroke:#e2e8f0,color:#fff style Pi fill:#9b2c2c,stroke:#e2e8f0,color:#fff style P1 fill:#2d3748,stroke:#e2e8f0,color:#fff style P2 fill:#2d3748,stroke:#e2e8f0,color:#fff style MUX fill:#276749,stroke:#e2e8f0,color:#fff style OUT fill:#276749,stroke:#e2e8f0,color:#fff

两个编码器均采用递归系统卷积码(RSC,Recursive Systematic Convolutional Code)。信息序列直接作为系统位输出,两个 RSC 编码器分别产生校验位 $p_1$ 和 $p_2$。通过打孔(Puncturing)可以灵活调整编码率。

7.3.2 交织器的作用

交织器对输入比特进行伪随机重排,使得两个 RSC 编码器面对的是同一组信息比特的不同排列。其关键作用:

  • 打散突发错误:将信道中的连续错误分散到不同的译码迭代中
  • 增加码字间距离:使 Turbo 码的最小自由距离显著增大
  • 交织长度越大,Turbo 码的性能越好(但时延也越大)

7.3.3 迭代译码

Turbo 码采用迭代译码(Iterative Decoding),两个软输入软输出(SISO,Soft-Input Soft-Output)译码器交替工作,通过交换**外信息(Extrinsic Information)**逐步提升译码可靠度:

flowchart LR
    DEC1["SISO 译码器 1"] -->|"外信息"| INT["交织"]
    INT --> DEC2["SISO 译码器 2"]
    DEC2 -->|"外信息"| DEINT["解交织"]
    DEINT --> DEC1
    style DEC1 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style DEC2 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style INT fill:#2d3748,stroke:#e2e8f0,color:#fff
    style DEINT fill:#2d3748,stroke:#e2e8f0,color:#fff

通常 6–8 次迭代即可收敛。译码复杂度高于 Viterbi,但编码增益可达 8–10 dB。

工程注意事项:Turbo 码存在**误码平底(Error Floor)**现象——在 BER 降到 $10^{-5} \sim 10^{-6}$ 量级后,曲线斜率明显变缓。这在需要极低误码率的应用(如数据传输)中是重要限制。

7.4 LDPC 码(Low-Density Parity-Check Codes)

LDPC 码由 Gallager 于 1962 年提出,但受限于当时的计算能力而被遗忘,直到 1990 年代被重新发现。LDPC 码是 4G LTE 下行链路、5G NR 数据信道、Wi-Fi 6(802.11ax)以及 DVB-S2 等标准的核心编码方案。

7.4.1 基本原理

LDPC 码是一种线性分组码(Linear Block Code),其校验矩阵(Parity-Check Matrix)$\mathbf{H}$ 中 “1” 的密度很低。一个 $(n, k)$ LDPC 码满足:

$$\mathbf{H} \cdot \mathbf{c}^T = \mathbf{0}$$

其中 $\mathbf{c}$ 为码字向量,$\mathbf{H}$ 为 $(n-k) \times n$ 的稀疏矩阵。

LDPC 码可以用 **Tanner 图(Tanner Graph)**直观表示,包含两类节点:

  • 变量节点(Variable Node):对应码字中的每一个比特
  • 校验节点(Check Node):对应校验方程
flowchart TD
    V1["v₁"] --- C1["c₁"]
    V1 --- C2["c₂"]
    V2["v₂"] --- C1
    V2 --- C3["c₃"]
    V3["v₃"] --- C2
    V3 --- C3
    V4["v₄"] --- C1
    V4 --- C2
    style V1 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style V2 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style V3 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style V4 fill:#2b6cb0,stroke:#e2e8f0,color:#fff
    style C1 fill:#9b2c2c,stroke:#e2e8f0,color:#fff
    style C2 fill:#9b2c2c,stroke:#e2e8f0,color:#fff
    style C3 fill:#9b2c2c,stroke:#e2e8f0,color:#fff

7.4.2 置信传播译码

LDPC 码通常采用**置信传播(BP,Belief Propagation)算法或其简化版本(如最小和算法,Min-Sum)进行译码。译码过程在变量节点和校验节点之间迭代传递对数似然比(LLR,Log-Likelihood Ratio)**消息:

$$L(c_i) = \log \frac{P(c_i = 0 \mid \mathbf{y})}{P(c_i = 1 \mid \mathbf{y})}$$

变量节点更新:收集来自所有相邻校验节点的消息与信道观测值,求和后发送给各校验节点。

校验节点更新:利用 $\tanh$ 函数(或其近似)处理来自变量节点的消息,传递校验约束信息。

7.4.3 LDPC 码的优势

  • 可并行译码:BP 算法天然适合硬件并行实现,吞吐量可达数十 Gbps
  • 灵活的码长和码率:通过基础矩阵扩展可支持多种参数组合
  • 无误码平底:相比 Turbo 码,LDPC 码在高 SNR 区域性能持续改善
  • 高度逼近香农极限:精心设计的 LDPC 码可距香农极限仅 0.0045 dB

7.5 Polar 码——5G NR 中的新选择

Polar 码由 Arıkan 于 2009 年提出,是首个被严格证明可达信道容量的编码方案。5G NR 将 Polar 码采纳为控制信道(下行 DCI、上行 UCI)的编码方案。

7.5.1 信道极化

Polar 码的核心思想是信道极化(Channel Polarization):通过对 $N = 2^n$ 个独立的二进制输入信道进行特定的编码变换,使一部分信道的容量趋近于 1(完美可靠),另一部分趋近于 0(完全不可靠):

$$\mathbf{G}_N = \mathbf{B}_N \mathbf{F}^{\otimes n}$$

其中 $\mathbf{F} = \begin{bmatrix} 1 & 0 \ 1 & 1 \end{bmatrix}$ 为核矩阵,$\mathbf{B}_N$ 为比特反转置换矩阵。

编码过程为:

$$\mathbf{x} = \mathbf{u} \cdot \mathbf{G}_N$$

其中信息比特被放置在可靠信道上,不可靠信道上填充固定的冻结比特(Frozen Bits)(通常为 0)。

7.5.2 译码算法

Polar 码最常用的译码算法是**连续消除(SC,Successive Cancellation)**译码及其改进版本:

  • SC 译码:按顺序逐比特判决,复杂度为 $O(N \log N)$
  • SCL 译码(SC List):同时维护 $L$ 条候选路径,选最优路径输出,性能显著优于 SC
  • CA-SCL(CRC-Aided SCL):在编码前添加 CRC 校验,利用 CRC 从 $L$ 条候选路径中选择正确路径,进一步提升性能
flowchart TD
    A["输入信息比特 + CRC"] --> B["信道极化编码
x = u · G_N"] B --> C["调制 & 传输"] C --> D["接收信号 y"] D --> E["SCL 译码
L 条候选路径"] E --> F["CRC 校验选择"] F --> G["输出译码比特"] style A fill:#2d3748,stroke:#e2e8f0,color:#fff style B fill:#2b6cb0,stroke:#e2e8f0,color:#fff style C fill:#2d3748,stroke:#e2e8f0,color:#fff style D fill:#2d3748,stroke:#e2e8f0,color:#fff style E fill:#2b6cb0,stroke:#e2e8f0,color:#fff style F fill:#9b2c2c,stroke:#e2e8f0,color:#fff style G fill:#276749,stroke:#e2e8f0,color:#fff

7.5.3 为什么 5G 选择 Polar 码用于控制信道?

控制信道通常传输短帧(数十至数百比特),在此场景下:

  • Turbo 码在短码长下性能不佳
  • LDPC 码在短码长下同样受限
  • Polar 码在 CA-SCL 译码下对短码长表现优异,且编译码复杂度可控

7.6 编码方案选择指南

不同编码方案的特性对比:

特性卷积码Turbo 码LDPC 码Polar 码
提出时间195519931962/19962009
编码类型树码 / 卷积分组 / 并行级联分组 / 线性分组码分组 / 线性分组码
典型编码率1/2, 1/31/3, 1/2灵活 (1/5 ~ 5/6)灵活
适合码长短~中中~长 (≥1000)长 (≥1000)短~中
译码算法Viterbi迭代 SISOBP / Min-SumSC / CA-SCL
译码复杂度中~高中(可并行)
吞吐量极高(并行)
误码平底无(CA-SCL)
距香农极限2–3 dB~0.5 dB~0.0045 dB理论可达
典型应用GSM, 卫星3G, LTE 上行LTE 下行, 5G 数据, Wi-Fi5G NR 控制信道

选择建议

  • 高吞吐量数据信道(eMBB):优先 LDPC 码——天然并行、吞吐量高、无误码平底
  • 短帧控制信道:优先 Polar 码——短码性能优异、CA-SCL 译码可靠
  • 低复杂度 / 遗留系统:卷积码——实现简单、资源开销小
  • 需要高编码增益但容忍误码平底:Turbo 码——成熟方案、3G/4G 广泛部署

7.7 小结

信道编码是无线通信系统可靠性的基石。从经典的卷积码到逼近香农极限的 Turbo 码、LDPC 码和 Polar 码,编码技术的演进始终围绕一个核心命题:以最低的复杂度代价逼近信道容量

关键要点回顾:

  1. 编码增益是衡量编码方案价值的首要指标,在高 SNR 下尤为关键
  2. 卷积码通过 Viterbi 译码实现最大似然检测,适合低复杂度场景
  3. Turbo 码通过并行级联和迭代译码实现逼近香农极限的性能,但存在误码平底
  4. LDPC 码以稀疏校验矩阵和置信传播译码实现极高吞吐量,是现代高速数据信道的首选
  5. Polar 码是首个理论可达信道容量的编码方案,在短码场景下性能优异,5G NR 控制信道采用

在实际系统设计中,不存在"万能编码"。工程师需要根据码长、码率、时延要求、硬件资源和目标 BER 等因素,综合选择最合适的编码方案。5G NR 的"双码策略"——数据信道用 LDPC 码、控制信道用 Polar 码——正是这种工程权衡的典型范例。