摘要:信道编码是通信系统的“守护神”,但面对 CRC、汉明码、RS、卷积码、Turbo、LDPC、Polar 等众多编码,初学者往往一头雾水。本文用一张总览地图 + 分门别类的讲解,帮你快速建立信道编码的完整知识框架,并给出工程选码建议。适合通信工程师、学生以及对无线通信感兴趣的朋友阅读。
💡 核心结论:信道编码 = 加冗余抗噪声。目标是在码率尽量高、时延尽量低、复杂度尽量小的前提下,让错误概率尽量低。

📌 0. 先统一几个概念
在展开之前,先统一几个贯穿全文的基础概念,后面会反复用到。
码率
码率定义为 ,其中
k 个信息比特编成 n 个发送比特,冗余为 n-k。
⚠️ 注意:R 越小,冗余越多,抗噪越强,但传输效率越低。
最小距离
两个合法码字之间最少有几个比特不同,称为最小汉明距离 d_min。硬判决下能纠错的个数为:
t = floor((d_min - 1) / 2)
例如 d_min=3 时,能纠 1 个错。
硬判决 vs 软判决
- 硬判决:解调器先判成 0/1,再送给译码器。
- 软判决:解调器送“可信度”(如 LLR),译码器性能更好。
现代码 Turbo、LDPC、Polar 都严重依赖软信息。
香农限
香农指出:只要码率 R < C(C 为信道容量),就能做到错误概率任意小。Turbo、LDPC、Polar 正是逼近香农限的实用码。
🔍 1. 检错码:只发现错,不纠正
检错码只能发现错误,不能纠正错误,通常配合重传机制使用。
奇偶校验
加 1 个比特,让 1 的个数为奇数或偶数。只能检奇数个错误,不能纠错。
二维奇偶校验
行列都加校验,能检很多错,甚至纠一点错,但效率低。
校验和
把数据分块求和,附在末尾。互联网协议常用,简单但不够强。
CRC 循环冗余校验
这是工程上最重要的检错码。把数据看成多项式,除以生成多项式,余数作为 CRC。
特点:
- ✅ 检错能力很强,尤其擅长突发错误。
- ❌ 不纠错。
- 🔁 常和 ARQ 配合:错了就重传。
- 📡 用于以太网、WiFi、LTE/5G、存储、文件校验。
🔥 一句话:CRC 是检错界的王者,不是纠错码。
🧱 2. 分组码:一块一块编码
分组码的思路其实很简单:把要发送的数据切成一块一块,每块单独处理。比如把 k 个比特的信息打包成一块,然后编成 n 个比特的码字发出去(n 比 k 大,多出来的就是冗余)。
打个比方:就像寄快递,你先把货物(信息比特)装进箱子,再塞进泡沫(冗余比特)防震。箱子里的货物是固定的,但泡沫怎么塞、塞多少,决定了这箱货能不能扛住运输途中的磕碰(噪声干扰)。
重复码
最简单:1 -> 111,0 -> 000,多数投票译码。能纠错,但效率极低。
汉明码
它怎么纠错?核心思路是“用校验位给每个比特做体检”。发送时,4 个信息位会额外算出 3 个校验位,凑成 7 个比特一起发出去。接收端收到 7 个比特后,会重新算一遍校验关系,得到一个“症状值”(伴随式)。
打个比方:就像给 7 个位置各装了一个报警器,哪个位置出错,报警器就会亮起一组特定的灯。因为 d_min=3,任意两个合法码字至少差 3 个比特,所以只要 1 个比特出错,接收到的码字离“正确的那个”最近,离其他合法码字都更远。译码器只要找到距离最近的合法码字,就能把错的那一位翻回来。
具体到 (7,4) 汉明码:3 个校验位能产生 8 种症状值,其中 7 种分别对应 7 个比特位置,剩下 1 种表示“没出错”。所以它能精确定位是哪一位错了,然后直接翻转修复。这就是“能纠 1 个错”的由来。
线性分组码
码字是信息比特的线性组合。用生成矩阵 G 编码:
c = mG
用校验矩阵 H 检验:
H c^T = 0
译码常用伴随式。汉明码、BCH、RS、LDPC 都属于广义线性分组码。
循环码
码字循环移位后仍是合法码字。可以用多项式表示,硬件用移位寄存器实现,非常方便。BCH 和 RS 都是循环码的重要子类。
BCH 码
二进制循环码,能纠正多个随机错误。例如 BCH(15,7) 能纠多个错,用于存储、光通信、早期通信。
RS 码(里德-所罗门码)
非二进制 BCH,按符号运算,比如 GF(256) 一个符号 8 比特。特点:
- 🎯 特别擅长纠突发错误。
- 📐 是 MDS 码,达到 Singleton 界。
- 🔢
RS(n,k)能纠(n-k)/2个符号错误,或n-k个符号删除。 - 📀 用于 QR 码、CD/DVD、深空、DSL、DVB。
🔥 一句话:随机错找 BCH/LDPC,突发错找 RS+交织。
RM 码(Reed-Muller)
一类短码,结构规整,能纠错,也能用于 Polar 码的理论分析。实际系统不如 BCH/RS/LDPC 常见。
乘积码
把分组码按行列排,行编码、列编码。能纠突发和随机错。Turbo 乘积码曾用于深空和存储。
🌊 3. 卷积码:连续流编码
分组码是“一块一块”,卷积码是“连续输入,连续输出”。输出不仅和当前输入有关,还和历史输入有关。关键参数:
- 约束长度 K
- 码率 1/n
- 生成多项式
它可以用状态图、网格图表示,译码核心是网格搜索。
Viterbi 译码
最大似然序列译码,在网格图上找一条最可能路径。硬判决、软判决都能用,软判决性能更好。用于 2G/3G 语音、卫星、深空、WiFi 旧标准。
怎么找?核心是动态规划,也就是 Viterbi 算法的精髓:逐时刻比较、只留最优、剪掉次优。网格图每一列代表一个时刻,每个节点代表编码器的一个状态。算法从起点出发,一层一层向右推进。
具体分三步:
- 加(Add):每到一个节点,把上一时刻留下的路径度量,加上当前分支的度量(硬判决用汉明距离,软判决用欧氏距离或 LLR)。
- 比(Compare):同一个节点可能有多条路径汇入,比较它们的累计度量。
- 选(Select):只保留度量最小(最像正确)的那条路径,其余全部丢弃。
打个比方:就像在迷宫里找出口,你不需要记住所有走过的路,每到岔路口只保留当前最接近出口的那条,其余直接放弃。这样一路走到终点,剩下的那条路径就是最大似然路径,也就是最可能发送的比特序列。

BCJR / MAP 译码
不是找整条路径,而是算每个比特的后验概率,输出软信息 LLR。Turbo 译码的核心就是两个 BCJR/SISO 译码器互相交换外信息。
删余卷积码
母码码率 1/2,删掉一些校验位,得到 2/3、3/4 等更高码率。灵活,但删得越多,纠错越弱。
🔥 一句话:卷积码是流式编码,Viterbi 是最大似然序列译码,BCJR 是软输出译码。
🤝 4. 级联码:组合拳
单个码不够强,就把多个码串起来。
串行级联码
典型方案:外码 RS,内码卷积码,中间加交织。深空通信经典方案。RS 纠突发,卷积纠随机,交织打散突发。
并行级联码 / Turbo 码
两个 RSC 卷积码并行,中间加交织器。译码用两个 SISO 迭代交换外信息。LTE 数据信道用过,3G 也用过。性能接近香农限,但时延大、复杂度高、有错误平底。、
交织器
本身不是码,但极其重要。作用:把突发错误打散,让译码器看到的错误近似独立。Turbo、LDPC、RS 都常配交织。
🔥 一句话:级联码就是“外码+内码+交织”,Turbo 是并行级联+迭代译码。
🚀 5. 现代容量逼近码:Turbo、LDPC、Polar
这三者是现代通信的顶梁柱。
Turbo 码
- 编码:两个 RSC + 交织器。
- 译码:两个 SISO 迭代交换外信息。
- 优点:低信噪比性能极好,接近香农限。
- 缺点:时延大,并行化差,错误平底。
- 应用:3G、LTE 数据信道。

它具体怎么纠错?核心是两个译码器互相“商量”,也就是迭代译码。发送端把同一份信息用两个不同的卷积码各编一遍,中间用交织器打乱顺序,让两份校验信息“看”到的错误模式不一样。
接收端收到后,两个译码器轮流工作:
- 第一轮:译码器 1 先算每个比特的可信度(软信息 LLR),把“我觉得哪些位可能错了”的猜测交给译码器 2。
- 第二轮:译码器 2 结合自己的校验关系,修正这些猜测,再把更新的信息反馈给译码器 1。
- 反复迭代:两个译码器像两个侦探互相印证线索,每轮都让判断更可靠,直到意见一致或达到迭代次数上限。
打个比方:就像两个医生会诊同一个病人,一个看 X 光片,一个看化验单,各自提出怀疑,再互相参考对方的结论,反复讨论后给出更准确的诊断。Turbo 码正是靠这种“你帮我、我帮你”的迭代,把纠错能力推到接近香农限。
LDPC 码(低密度奇偶校验码)
- 本质:线性分组码,但校验矩阵 H 非常稀疏。
- 表示:用 Tanner 图表示,译码用置信传播 BP。
- 优点:吞吐高,并行好,错误平底低,接近香农限。
- 缺点:短包性能一般,编码复杂度曾高,现在已解决。
- 应用:5G 数据信道、WiFi、DVB-S2、存储、光通信。
它具体怎么纠错?核心是在图上“投票”,也就是置信传播(BP)。发送端用稀疏校验矩阵 H 生成码字,接收端把每个比特看成图上的一个节点,把校验关系看成连接节点的边,构成一张 Tanner 图。接收端收到后,图上所有节点开始互相传递“可信度”消息:
- 变量节点发言:每个比特节点先根据收到的信号,给出自己“是 0 还是 1”的初始可信度(软信息 LLR)。
- 校验节点核对:每个校验节点检查自己连着的那些比特是否满足校验方程,把“我觉得你们谁可能错了”的修正意见反馈回去。
- 反复迭代:两类节点像邻居之间互相传话,每轮都让每个比特的可信度更准确,直到所有校验方程都满足,或达到迭代次数上限。
打个比方:就像一场班级投票,每个同学(比特)先说出自己的初步判断,然后小组长(校验节点)核对各组是否“对得上”,把矛盾反馈回去,大家再修正自己的判断。如此反复,最终全班意见收敛到一致,错误就被纠正了。LDPC 正是靠这种图上迭代投票,把长包数据的纠错能力推到接近香农限。

🔥 一句话:LDPC 是稀疏图上的迭代译码,长包数据王者。
Polar 码(极化码)
- 原理:基于信道极化,把 N 个相同信道变成一部分极好、一部分极坏。
- 策略:在好信道上发信息,坏信道上发冻结比特。
- 译码:SC、SCL、CA-SCL。
- 优点:短包性能好,理论可证明达到容量。
- 缺点:中长包不如 LDPC,译码复杂度曾高。
- 应用:5G 控制信道。
它具体怎么纠错?核心是“先猜前面,再推后面”,也就是串行抵消(SC)。发送端利用信道极化,把信息放在“好信道”上,坏信道发已知的冻结比特。接收端则按顺序一个比特一个比特地恢复。接收端收到后,按固定顺序逐个判决:
- 先判前面的比特:根据收到的信号,先估计第一个信息比特是 0 还是 1。
- 再推后面的比特:把已经判定的比特当作已知条件,结合信道关系,去推算下一个比特的可信度。
- 逐级抵消:每判完一个比特,就把它从接收信号里“抵消”掉,让后面的判决越来越干净、越来越准。
打个比方:就像玩“猜字谜接龙”,你先根据提示猜出第一个字,然后把它当作线索去猜第二个字,再拿前两个字去猜第三个字……一路串下去,越到后面线索越多,猜得越准。Polar 码正是靠这种逐级抵消、层层递进,让短包控制信息在低信噪比下也能可靠恢复。

🔥 一句话:Polar 是信道极化+串行抵消,短包控制信息王者。
三者对比
| 码 | 核心 | 译码 | 强项 | 典型应用 |
|---|---|---|---|---|
| Turbo | 并行级联+迭代 | SISO/BCJR | 低 SNR | LTE |
| LDPC | 稀疏校验矩阵 | BP | 高吞吐长包 | 5G数据、WiFi、DVB |
| Polar | 信道极化 | SC/SCL | 短包控制 | 5G控制 |
工程选码决策流程:面对具体场景,可按码率、时延、包长、信道类型等维度快速定位推荐码型。
flowchart TD
A[开始选码] --> B{是否需要纠错?}
B -- 否 --> C[CRC 循环冗余校验]
B -- 是 --> D{信道类型?}
D -- 突发错误为主 --> E[RS 码 + 交织]
D -- 随机错误为主 --> F{包长?}
F -- 短包 / 控制信道 --> G[Polar 码]
F -- 长包 / 数据信道 --> H{时延要求?}
H -- 低时延 --> I[LDPC 码]
H -- 高时延可接受 --> J{码率要求?}
J -- 低码率 / 低 SNR --> K[Turbo 码]
J -- 中高码率 --> L[卷积码 / LDPC]
F -- 极短包 / 内存级 --> M[汉明码]
📦 6. 纠删码与无速率码
RS 纠删
RS 不仅能纠错,还能纠删除。知道哪个符号丢了,纠删能力比纠错强一倍。用于存储、RAID、深空。
喷泉码
无速率码:发送端可以源源不断产生编码包,接收端收够一定数量就能恢复。
- LT 码
- Raptor 码
用于多播、MBMS、文件分发、深空。优点:不需要反馈重传,适应丢包。
网络编码
中间节点不只会转发,还会把数据线性组合再发。随机线性网络编码 RLNC 可提高多播吞吐和鲁棒性。用于无线多跳、P2P、5G 部分场景。
🔥 一句话:纠删码管“丢包”,喷泉码管“无速率”,网络编码管“中间节点组合”。
📡 7. 编码调制与 MIMO
TCM(网格编码调制)
把卷积码和调制联合设计。不增加带宽,靠扩大星座图,最大化欧氏距离。用于电话线调制解调器。
BICM(比特交织编码调制)
编码、交织、调制分开做,接收端软解调。WiFi、LTE、5G 常用。BICM-ID 是迭代版,性能更好。
空时码
空时码是专门为多天线 MIMO 系统设计的编码方案,核心思路是把编码和空间维度结合起来:不仅利用时间上的冗余,还利用多根天线提供的空间自由度,让信号在时间和空间两个维度上同时获得分集增益。
打个比方:就像一个人说话容易听不清,但让几个人在不同位置同时说同一句话,听的人就能从多个方向互相印证,把内容听得更准。空时码正是让多根天线“同时、多角度”地发送信息,接收端综合各路信号,即使某一路被噪声严重污染,也能靠其他路把信息恢复出来。
- Alamouti:两天线正交空时分组码,简单,满分集。
- STBC:空时分组码。
- STTC:空时网格码。
- 空间复用:不是编码,但常和信道编码结合,如 V-BLAST。
它具体怎么纠错?核心是“让多根天线互相备份”。以最经典的 Alamouti 方案为例:发送端有两根天线,同一时刻把两个符号分别从两根天线发出,下一时刻再交换顺序、取共轭后发出。接收端把两个时刻收到的信号放在一起解方程,就能把两个符号都解出来。
接收端收到后,按两步恢复:
- 合并各路信号:把两根天线、两个时刻收到的信号按 Alamouti 规则做线性合并,让每个符号都“享受”到两条独立路径的增益。
- 最大似然判决:对合并后的信号做判决,因为两条路径同时深衰落的概率极低,所以即使某一路信号很差,另一路也能把符号救回来。
打个比方:就像两个人分别从左右两边同时递给你同一句话,你左右耳各听一遍,即使一边被噪音盖住,另一边也能让你听清。Alamouti 正是靠这种“两根天线互相备份”,用极低的复杂度换来满分集增益,成为 4G/5G 里最基础的空时编码方案。
🔥 一句话:TCM 是编码+调制联合,空时码是编码+多天线联合。
🧩 8. 其他重要家族
LDPC 卷积码
LDPC 和卷积码结合,适合流式传输。
Spinal 码
无速率、低复杂度,适合短包和低时延。
极化调整码
Polar 的变体,改善中短包性能。
量子纠错码
用于量子通信和量子计算,如表面码、Shor 码。经典信道编码思想在量子域扩展。
联合信源信道编码
把压缩和纠错联合设计,在恶劣信道下更优。
不等差错保护
重要比特多保护,次要比特少保护。用于图像、视频、控制信令。
🗺️ 9. 应用场景速查
| 场景 | 常用编码 |
|---|---|
| 以太网、WiFi 帧检错 | CRC |
| 内存纠错 | 汉明码、SEC-DED |
| QR 码、CD/DVD | RS |
| 深空 | RS+卷积级联、Turbo、LDPC |
| 2G/3G 语音 | 卷积码、Turbo |
| LTE 数据 | Turbo |
| 5G 数据 | LDPC |
| 5G 控制 | Polar |
| WiFi 数据 | LDPC、卷积码 |
| DVB-S2 | LDPC+BCH |
| 存储、SSD | LDPC、BCH、RS |
| 多播、文件分发 | Raptor、喷泉码 |
| MIMO | 空时码+信道编码 |
转载自 CSDN-专业IT技术社区
原文链接:https://blog.csdn.net/qq_56483923/article/details/165887589




