<!-- title: 信道编码：冗余变纠错的智慧 -->

# 信道编码：冗余变纠错的智慧

你有没有这样的经历——在嘈杂的食堂里跟朋友聊天，虽然周围吵得要命，但你依然能听懂对方在说什么。你的大脑是怎么做到的？答案是**上下文冗余**。你不需要听清每一个字，因为语言的冗余性让你能"脑补"缺失的部分。

通信系统面对的问题一模一样：无线电波在空中传播，噪声、干扰、多径衰落时刻在摧毁你的信号。那通信系统靠什么"脑补"回来？靠的就是**信道编码**——一种把"聪明的冗余"塞进数据里的技术。

今天这篇文章，我们从最根本的问题出发：为什么需要纠错？冗余是怎么变成纠错能力的？5G为什么选了LDPC和Polar这两种码？它们各自的设计哲学是什么？

---

## 一、从"说三遍"到"聪明地说一遍"

### 1.1 最朴素的纠错：重复

如果你的朋友在食堂里没听清你说的话，最简单的办法是——**再说一遍**。如果还不确定，那就**说三遍**，取多数表决。

这就是最原始的纠错编码：**重复码**。把一个比特"1"编码成"111"，接收端收到"101"，通过多数表决恢复成"1"。

但问题很明显：**效率太低**。说三遍只传递了一遍的信息量，效率只有1/3。在无线通信中，频谱资源比黄金还贵，你能容忍这样的浪费吗？

### 1.2 香农的天才洞察：效率与可靠的统一

1948年，香农（Claude Shannon）发表了一篇改变世界的论文，其中有一个震惊所有人的结论：

> **只要传输速率不超过信道容量C，就一定存在一种编码方式，使得误码率可以任意小。**

换句话说，你不需要无限地重复——只要方法足够聪明，你可以在接近信道极限效率的同时，做到几乎零错误。信道容量的公式是：

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

其中B是带宽，SNR是信噪比。这个公式告诉你：**每Hz带宽、在给定信噪比下，理论上最多能传多少bit/s而不出错**。

香农证明了"好码"的存在，但他没告诉你怎么构造。此后的70多年，无数研究者前赴后继，试图逼近这个理论极限。从汉明码、BCH码、卷积码、Turbo码，到今天的**LDPC码和Polar码**，我们终于可以说：**我们到达了**。

```mermaid
timeline
    title 信道编码70年进化史
    1950 : 汉明码 — 第一个实用的纠错码
    1960 : BCH码/RS码 — 代数编码的黄金年代
    1962 : LDPC码被Gallager提出 — 但被遗忘30年
    1967 : Viterbi译码 — 卷积码的黄金搭档
    1993 : Turbo码 — 首次逼近香农极限(0.5dB)
    2003 : LDPC码复兴 — 被纳入WiFi/卫星标准
    2008 : Polar码由Arıkan提出 — 首个理论可达香农极限的码
    2016 : 3GPP决定5G用LDPC+Polar
```

---

## 二、信道编码的基本原理：冗余的数学

### 2.1 什么叫"编码"？

信道编码的本质操作很简单：**在K个信息比特后面，附加上(N-K)个校验比特**，组成N个比特的码字。这个(N, K)码的**码率**R = K/N。

$$\text{码率 } R = \frac{K}{N}$$

码率越低，冗余越多，纠错能力越强，但有效传输效率也越低。工程师的任务是：**在给定码率下，找到纠错能力最强的编码方式**。

### 2.2 汉明距离：衡量纠错能力的标尺

**汉明距离**是两个等长二进制序列之间不同比特的个数。例如"011011"和"110001"的汉明距离是3（第1、3、5位不同）。

一个编码方案的**最小汉明距离d_min**决定了它能纠几个错：

$$t = \lfloor \frac{d_{\min} - 1}{2} \rfloor$$

其中t是可纠正的错误比特数。直观理解：如果所有合法码字之间的"距离"足够大，那么即使传输过程中有几个比特被翻转，接收到的序列仍然离正确的码字最近——就像"投票"，最近邻就是正确答案。

### 2.3 编码增益：用dB衡量纠错的价值

在实际工程中，我们用**编码增益**来衡量一种编码的价值：

> 编码增益 = 不编码时达到目标误码率所需的SNR − 编码后达到同样误码率所需的SNR

一个优秀的编码方案可以提供8~10dB的编码增益。这意味着什么？**10dB的编码增益，等价于发射功率可以降低10倍，或者覆盖距离可以扩展约3倍**。这就是信道编码的巨大价值——它直接转化为覆盖、容量和功耗的优势。

| 编码增益(dB) | 等价发射功率节省 | 等价覆盖距离扩展 |
|:---:|:---:|:---:|
| 3 dB | 50% | 1.4x |
| 6 dB | 75% | 2.0x |
| 9 dB | 87.5% | 2.8x |
| 10 dB | 90% | 3.2x |

---

## 三、LDPC码：低密度奇偶校验的优雅

### 3.1 一个直观的类比：交叉验证系统

想象一个考试阅卷系统：

- 100道题的答案需要校验
- 老师设计了200条校验规则（例如：第1题+第5题+第9题的答案之和应该是偶数）
- 每条规则只涉及少数几道题，每道题也只被少数规则检查

这就是LDPC码的核心思想——**稀疏的校验关系网**。"低密度"指的是校验矩阵H中"1"非常稀少，绝大部分是"0"。

### 3.2 校验矩阵与Tanner图

LDPC码由一个稀疏的**奇偶校验矩阵H**定义。假设有一个(6,3)码：

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

这个矩阵可以用**Tanner图**（二部图）来可视化——左边是变量节点（数据比特），右边是校验节点（校验方程），连线表示"参与校验"：

```mermaid
graph LR
    subgraph 变量节点 VN
        v1((x1))
        v2((x2))
        v3((x3))
        v4((x4))
        v5((x5))
        v6((x6))
    end
    subgraph 校验节点 CN
        c1[校验1]
        c2[校验2]
        c3[校验3]
    end
    v1 --- c1
    v1 --- c3
    v2 --- c1
    v2 --- c2
    v3 --- c2
    v3 --- c3
    v4 --- c1
    v5 --- c2
    v6 --- c3
```

**"低密度"的威力**：每个校验节点只连2~3个变量节点，每个变量节点也只连2~3个校验节点。这种稀疏性使得**迭代译码**的计算量大幅降低——每一步只需要处理少量的邻居节点。

### 3.3 信念传播译码：群体智慧

LDPC码的译码采用**信念传播（Belief Propagation, BP）算法**，也叫消息传递算法。它的过程像极了一群人在开会讨论：

```mermaid
sequenceDiagram
    participant VN as 变量节点们
    participant CN as 校验节点们
    
    Note over VN,CN: 第1轮迭代
    VN->>CN: 我收到的信号告诉我x1≈0.8(倾向1)
    CN->>VN: 校验规则检查后,反馈"x1可能确实是1"
    
    Note over VN,CN: 第2轮迭代
    VN->>CN: 综合所有反馈,更新信念:x1≈0.95
    CN->>VN: 校验一致性提高,确认"x1很大概率是1"
    
    Note over VN,CN: 第3轮迭代
    VN->>CN: 信念收敛:x1≈0.99
    CN->>VN: 所有校验通过 ✅
    
    Note over VN,CN: 输出最终判决
```

**为什么叫"信念传播"？** 每个节点维护的不是硬判决（0或1），而是一个"软信息"——我有多大把握认为这个比特是0还是1。用术语说，这叫**对数似然比（LLR）**：

$$\text{LLR}(x_i) = \ln \frac{P(x_i = 0)}{P(x_i = 1)}$$

- LLR > 0：倾向判为0
- LLR < 0：倾向判为1  
- |LLR|越大：越确定

每一轮迭代，变量节点把自己的LLR传给相连的校验节点；校验节点根据校验方程的约束，反馈修正后的LLR。几轮下来，整个网络达成"共识"，输出最终结果。

### 3.4 5G中LDPC码的设计：两张"底图"

5G NR的LDPC码采用了**准循环（QC-LDPC）**结构，定义了**两张基础图（Base Graph）**：

| 特性 | Base Graph 1 (BG1) | Base Graph 2 (BG2) |
|:---|:---|:---|
| 适用场景 | 大数据包、高码率 | 小数据包、低码率 |
| 信息位长度 | 较大（最大8448 bit） | 较小（最大3840 bit） |
| 支持码率 | 1/3 ~ 8/9 | 1/5 ~ 5/6 |
| 典型用途 | eMBB大流量传输 | VoIP、小包业务 |
| 校验节点度 | 较高（连接更多变量） | 较低 |

**为什么需要两张图？** 因为没有一种"万能"的LDPC码能同时在所有码长和码率下都表现最优。BG1针对大数据包优化，BG2针对小数据包优化——这是一个典型的工程折中。

---

## 四、Polar码：信道极化的魔法

### 4.1 核心洞察：好信道和坏信道

Polar码由土耳其学者Erdal Arıkan于2008年提出，他的发现可以用一句话概括：

> **通过特定的编码变换，可以将N个"一般"的信道，分裂成一些"完美"的信道和一些"完全无用"的信道。**

这就是**信道极化（Channel Polarization）**。

用一个比喻：想象一条大河经过多次分流，最终变成了很多小溪。奇妙的是，经过足够多的分流后，有的小溪变得无比清澈（信道容量→1），有的小溪变得完全浑浊（信道容量→0）。极端的"好"和极端的"坏"出现了——中间地带消失了。

### 4.2 极化的数学：最简单的2×2变换

Polar码的基本构建模块是一个2×2的变换矩阵：

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

对于2个输入比特(u1, u2)，编码输出为：

$$(x_1, x_2) = (u_1, u_2) \cdot G_2 = (u_1 \oplus u_2, \; u_2)$$

这个看似简单的变换产生了神奇的效果：

```mermaid
graph TD
    subgraph 输入
        u1[u₁]
        u2[u₂]
    end
    subgraph 极化变换
        op["x₁ = u₁ ⊕ u₂<br/>x₂ = u₂"]
    end
    subgraph 合成信道
        W_minus["W⁻ (差的信道)<br/>u₁同时依赖两个输出<br/>噪声被放大"]
        W_plus["W⁺ (好的信道)<br/>u₂直接映射到x₂<br/>噪声被抑制"]
    end

    u1 --> op --> W_minus
    u2 --> op --> W_plus
```

对于N=2的情况，u2所在的子信道W⁺比原始信道W更可靠，u1所在的子信道W⁻比W更差。这就是**极化**——一个变好，一个变差。

### 4.3 递归扩展：从2到N=2^n

通过递归地应用2×2变换，可以扩展到任意N=2^n的码长：

$$G_N = G_2^{\otimes n} = \underbrace{G_2 \otimes G_2 \otimes \cdots \otimes G_2}_{n \text{次}}$$

其中⊗表示Kronecker积。当N足够大时（如N=1024），极化效果非常显著：

| 子信道序号（按可靠性排序） | 信道容量 | 用途 |
|:---|:---|:---|
| 第1~200个（最差） | ≈ 0 | 放冻结位（固定为0） |
| 第201~700个（中等） | ≈ 0.5 | 过渡区域 |
| 第701~1024个（最好） | ≈ 1 | 放信息位（实际数据） |

**Polar码的编码策略极其简洁**：

1. 选出可靠性最高的K个子信道
2. 把K个信息比特放在这些好信道上
3. 剩余N-K个子信道放冻结位（收发双方约定为0）
4. 做一次矩阵乘法就完成编码

$$\mathbf{x} = \mathbf{u} \cdot G_N$$

其中u的前K位（对应好信道的位）是信息比特，其余是冻结位。

### 4.4 译码：连续消除（SC）与列表译码（SCL）

最基本的Polar译码算法是**连续消除（Successive Cancellation, SC）**——逐位顺序判决：

- 碰到冻结位：直接判0（因为已知）
- 碰到信息位：根据前面所有已判决的位和接收信号，计算LLR来判决

SC译码的问题在于**错误传播**——如果前面某位判错了，后面所有位都可能跟着错。为此，5G采用了改进的**CRC辅助SCL（CA-SCL）译码**：

> 维护L条候选路径（类似走迷宫时同时探索L条路），每条路径都有自己的"可能性分数"。译码完成后，用CRC校验选出正确的那条路径。

L越大，性能越好，但复杂度也越高。5G中通常使用L=8的SCL译码。

```mermaid
graph TD
    A[接收信号] --> B[SC译码器]
    B --> C{是冻结位?}
    C -->|是| D[直接判0]
    C -->|否| E[计算LLR]
    E --> F{LLR > 0?}
    F -->|是| G[判为0]
    F -->|否| H[判为1]
    D --> I[继续下一位]
    G --> I
    H --> I
    I --> J{所有位判完?}
    J -->|否| B
    J -->|是| K[CRC校验]
    K -->|通过| L[输出结果 ✅]
    K -->|不通过| M[从候选路径中重选]
```

---

## 五、5G为什么这样选？LDPC给数据，Polar给控制

### 5.1 选码的标准

3GPP在2016年的RAN1 #86bis和#87次会议上，经过了激烈的讨论和投票，最终决定：

- **数据信道（PDSCH/PUSCH）**：使用LDPC码
- **控制信道（PDCCH/UCI）**：使用Polar码

这个选择不是随意的，背后有深刻的技术逻辑：

| 比较维度 | LDPC码 | Polar码 |
|:---|:---|:---|
| **最佳码长** | 长码（1000+ bit） | 短/中码（20~1000 bit） |
| **吞吐量** | 极高（高度并行） | 中等（串行译码为主） |
| **HARQ兼容** | 天然支持增量冗余 | 支持但灵活性弱 |
| **短码性能** | 一般 | 优异 |
| **长码性能** | 优异 | 距香农极限稍远 |
| **译码延迟** | 低（迭代次数少） | 较高（SCL列表搜索） |
| **实现复杂度** | 中等 | 中等 |
| **错误平底** | 有（需要精心设计避免） | 无（确定性构造） |

### 5.2 数据信道选LDPC：三大理由

**理由1：吞吐量碾压**

5G eMBB目标速率达到Gbps级别。LDPC的并行译码结构天然适合高吞吐量——你可以同时处理几十个甚至几百个变量节点，而Polar的SCL译码路径搜索很难做到这种程度的并行。

**理由2：HARQ增量冗余**

5G的HARQ（混合自动重传请求）机制需要编码支持**增量冗余（IR）**——第一次传不完，重传时追加校验比特而不是重复发送。LDPC码的速率匹配天然支持这种操作：你可以从LDPC的校验矩阵中灵活地"截取"不同数量的校验比特来传输。

**理由3：实测性能优异**

在实际测试中，对于长码（>1000 bit）和中高码率（1/2以上），LDPC码的性能不仅逼近Turbo码，在高码率场景下甚至超越Turbo码。

### 5.3 控制信道选Polar：三大理由

**理由1：短码就是强**

控制信息（DCI/UCI）通常只有几十到几百个比特。在这个长度范围内，Polar码的性能明显优于LDPC码和TBCC码（Tail-Biting Convolutional Code，LTE控制信道使用的编码）。

**理由2：没有错误平底**

LDPC码在低误码率区域可能出现"错误平底"（error floor）——误码率降到一定程度后就不降了。这对数据信道可以容忍（因为上层有HARQ兜底），但控制信息不能冒这个风险。Polar码是确定性构造，不存在错误平底问题。

**理由3：构造灵活**

Polar码可以根据不同的码长和码率，灵活地选择信息位的位置集合。这种"按需定制"的特性非常适合控制信道码长多变的需求。

---

## 六、实战连接：工程师哪里会用到这些知识？

### 6.1 BLER曲线分析

当你拿到一条BLER（Block Error Rate）vs SNR的仿真曲线时，你看到的"瀑布区"陡峭程度，很大程度上取决于信道编码的性能。

- **经验值**：5G NR PDSCH的BLER目标通常是10%，对应的SNR点就是你需要关注的。如果这个点偏高（向右偏移），说明编码增益不够，可能是码率选择过高或者信道条件恶化。
- **调试陷阱**：很多工程师看到BLER曲线上翘（在低SNR下反而变好），会怀疑仿真有bug。实际上这可能是速率匹配导致的——低码率时冗余更多，BLER自然会改善。

### 6.2 MCS选择与码率

5G的MCS（Modulation and Coding Scheme）表格中，每个MCS索引对应一个调制阶数和一个码率。码率的选择直接影响覆盖和容量：

- 高码率（如0.8~0.9）：频谱效率高，但需要好的信道条件（高SNR）
- 低码率（如0.1~0.2）：频谱效率低，但可以在恶劣信道下工作（低SNR）

当你做链路自适应或外场优化时，理解码率背后的LDPC编码机制，能帮你判断MCS选择是否合理。

### 6.3 DCI盲检与Polar译码

手机在搜索PDCCH时，需要对多个候选位置进行**盲检（Blind Decoding）**。每个候选位置的DCI都是用Polar码编码的。如果Polar译码失败（CRC校验不通过），手机会跳过这个候选位置继续搜索。

**调试场景**：如果手机频繁PDCCH译码失败，可能的原因包括：
- 信道估计不准（导致LLR计算偏差）
- 聚合等级选择不合适（控制信道重复次数不够）
- 干扰突发（导致短时间内SNR骤降）

---

## 七、从Turbo到LDPC+Polar：一次时代的交替

4G LTE使用Turbo码做数据信道、TBCC做控制信道。5G为什么不用了？

| 维度 | 4G (Turbo + TBCC) | 5G (LDPC + Polar) |
|:---|:---|:---|
| 数据信道 | Turbo码 | LDPC码 |
| 控制信道 | TBCC卷积码 | Polar码 |
| 最大吞吐 | 约1 Gbps | 10+ Gbps |
| 译码并行度 | 受限（网格结构） | 高（图结构） |
| 距香农极限 | 约0.5 dB | 约0.1~0.3 dB |
| HARQ灵活性 | 一般（CB级重传） | 强（IR自然支持） |

Turbo码的核心瓶颈是**吞吐量**。它的译码器基于网格（Trellis）结构，每次迭代需要按顺序处理所有状态，并行度受限。当5G要求数Gbps的峰值速率时，Turbo译码器很难在合理的功耗和面积下实现。

LDPC码的消息传递译码天然适合并行——Tanner图中的每个节点可以独立地更新和传递消息。这种结构使得LDPC译码器可以用高度并行的硬件实现，轻松达到10 Gbps以上的吞吐量。

---

## 八、一张图总结5G信道编码全流程

```mermaid
graph TD
    subgraph 发送端
        A[原始数据<br/>传输块 TB] --> B[CRC添加<br/>检错保护]
        B --> C[码块分割<br/>大包拆小段]
        C --> D{信道类型?}
        D -->|数据信道| E[LDPC编码<br/>BG1或BG2]
        D -->|控制信道| F[Polar编码<br/>选信息位集合]
        E --> G[速率匹配<br/>截断/重复]
        F --> G
        G --> H[调制映射<br/>QPSK/16QAM/64QAM]
    end
    subgraph 信道
        H --> I[无线信道<br/>噪声+干扰+衰落]
    end
    subgraph 接收端
        I --> J[解调<br/>输出软信息LLR]
        J --> K{信道类型?}
        K -->|数据信道| L[LDPC译码<br/>BP迭代]
        K -->|控制信道| M[Polar译码<br/>CA-SCL]
        L --> N[CRC校验]
        M --> N
        N --> O[恢复原始数据 ✅]
    end
```

---

## 常见问题

**Q: LDPC码和Turbo码的根本区别是什么？**

A: 结构上的区别——Turbo码由两个或多个卷积编码器并行级联组成，译码时两个分量译码器交替迭代；LDPC码由一个稀疏校验矩阵定义，译码时在Tanner图上进行消息传递。虽然都是迭代译码，但LDPC的并行度更高，更适合高吞吐量场景。

**Q: Polar码"理论可达香农极限"是什么意思？LDPC不能达到吗？**

A: Polar码是第一个被**数学证明**在码长趋于无穷时严格达到信道容量的编码方案。LDPC码在实际中也能逼近香农极限到0.1dB以内，但它的证明依赖于随机编码论证，不是构造性证明。从工程角度看，两者性能非常接近，差异主要在短码长度场景。

**Q: 为什么5G没有用统一的编码方案？**

A: 因为没有一种编码在所有场景下都是最优的。数据信道的特点是码长、高吞吐、需要HARQ——LDPC的并行译码和增量冗余支持正好匹配；控制信道的特点是码短、可靠性要求极高——Polar在短码下的优势和无错误平底特性正好匹配。组合使用是工程最优解。

**Q: 工程师在日常工作中哪里会直接接触到信道编码？**

A: 最常见的场景是分析BLER/SINR曲线、优化MCS表格、调试HARQ重传效率、排查PDCCH漏检问题。虽然你不会手写LDPC译码器，但理解编码原理能帮你做出更准确的故障定位。

**Q: 6G还会用LDPC+Polar吗？**

A: 目前6G标准化还处于早期研究阶段，但已有的讨论表明：LDPC和Polar码在5G中表现优秀，大概率会继续作为基础方案。但可能会出现新的增强，例如支持更灵活的码长、更高的吞吐量（Tbps级别）、以及针对AI场景的联合信源信道编码。

---

## 参考来源

1. [5G NR信道编码：LDPC和Polar — CSDN深度解析](https://blog.csdn.net/weixin_42565652/article/details/159848501) — LDPC与Polar在5G中的角色与实战对比
2. [LDPC Coding in 5G NR Explained — CafeTele](https://www.cafetele.com/5g-ldpc-coding/) — 5G LDPC编码的Base Graph、Tanner图详解
3. [Demystifying 5G Polar and LDPC Codes — arXiv](https://arxiv.org/abs/2502.11053) — 5G信道编码的学术综述论文
4. [重温华为和高通的5G编码方案：LDPC+Polar — 知乎](https://zhuanlan.zhihu.com/p/27410210827) — 3GPP编码方案选型过程回顾
5. [5G信道编码关键技术LDPC Polar码全面解析 — 阿里云开发者社区](https://developer.aliyun.com/article/739470) — LDPC、Polar、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学通信知识星球海报-扫码加入](https://wiki.500nian.com/images/zhixingqiu_qrcode.png)
