第 8 章 信道编码 / Channel Coding
无线信道中的噪声、衰落和干扰使得接收端不可避免地出现误码。信道编码(Channel Coding)的核心目标是在有限的发送功率和带宽资源下,通过引入可控的冗余,尽可能可靠地恢复原始信息。本章从工程应用视角出发,系统介绍无线通信中主流的信道编码方案。
7.1 无线信道编码的特殊需求
与有线信道不同,无线信道具有两个显著特征:
- 深衰落(Deep Fading):信号幅度可能瞬时下降 20–30 dB,导致连续突发错误(Burst Errors)。
- 功率受限:移动终端电池容量有限,无法通过无限提高发射功率来换取可靠性。
因此,无线信道编码需要同时关注两个指标:
- 编码增益(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)译码算法,通过网格图搜索与接收序列距离最小的路径。其核心思想是:
- 在每个时间单元,计算到达每个状态的分支度量(Branch Metric)
- 对每个状态,选择累积度量最小的路径(幸存路径,Survivor Path)
- 回溯(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 码 |
|---|---|---|---|---|
| 提出时间 | 1955 | 1993 | 1962/1996 | 2009 |
| 编码类型 | 树码 / 卷积 | 分组 / 并行级联 | 分组 / 线性分组码 | 分组 / 线性分组码 |
| 典型编码率 | 1/2, 1/3 | 1/3, 1/2 | 灵活 (1/5 ~ 5/6) | 灵活 |
| 适合码长 | 短~中 | 中~长 (≥1000) | 长 (≥1000) | 短~中 |
| 译码算法 | Viterbi | 迭代 SISO | BP / Min-Sum | SC / CA-SCL |
| 译码复杂度 | 低 | 中~高 | 中(可并行) | 中 |
| 吞吐量 | 中 | 中 | 极高(并行) | 高 |
| 误码平底 | 无 | 有 | 无 | 无(CA-SCL) |
| 距香农极限 | 2–3 dB | ~0.5 dB | ~0.0045 dB | 理论可达 |
| 典型应用 | GSM, 卫星 | 3G, LTE 上行 | LTE 下行, 5G 数据, Wi-Fi | 5G NR 控制信道 |
选择建议:
- 高吞吐量数据信道(eMBB):优先 LDPC 码——天然并行、吞吐量高、无误码平底
- 短帧控制信道:优先 Polar 码——短码性能优异、CA-SCL 译码可靠
- 低复杂度 / 遗留系统:卷积码——实现简单、资源开销小
- 需要高编码增益但容忍误码平底:Turbo 码——成熟方案、3G/4G 广泛部署
7.7 小结
信道编码是无线通信系统可靠性的基石。从经典的卷积码到逼近香农极限的 Turbo 码、LDPC 码和 Polar 码,编码技术的演进始终围绕一个核心命题:以最低的复杂度代价逼近信道容量。
关键要点回顾:
- 编码增益是衡量编码方案价值的首要指标,在高 SNR 下尤为关键
- 卷积码通过 Viterbi 译码实现最大似然检测,适合低复杂度场景
- Turbo 码通过并行级联和迭代译码实现逼近香农极限的性能,但存在误码平底
- LDPC 码以稀疏校验矩阵和置信传播译码实现极高吞吐量,是现代高速数据信道的首选
- Polar 码是首个理论可达信道容量的编码方案,在短码场景下性能优异,5G NR 控制信道采用
在实际系统设计中,不存在"万能编码"。工程师需要根据码长、码率、时延要求、硬件资源和目标 BER 等因素,综合选择最合适的编码方案。5G NR 的"双码策略"——数据信道用 LDPC 码、控制信道用 Polar 码——正是这种工程权衡的典型范例。