差错控制编码(Error Control Coding)是数字通信中提高传输可靠性的重要技术,通过在原始信息中引入冗余比特,使接收端能够检测甚至纠正传输过程中发生的错误。
一、差错控制方式
根据编码和反馈机制的不同,主要有以下四种差错控制方式:
| 方式 | 名称 | 工作原理 | 特点 |
|---|---|---|---|
| 1 | 检错重传(ARQ) (Automatic Repeat reQuest) | 发送端编码仅用于检错;接收端发现错误后请求重发 | 需反馈信道,时延大,但效率高 |
| 2 | 前向纠错(FEC) (Forward Error Correction) | 编码具备纠错能力,接收端自动纠正一定数量的错误 | 无需重传,适合单向通信 |
| 3 | 混合纠错(HEC) (Hybrid Error Correction) | 结合 FEC 和 ARQ:先尝试纠错,失败则请求重发 | 兼顾效率与可靠性 |
| 4 | 信息反馈(IF) | 接收端将接收到的数据原样回传给发送端进行比对 | 简单但开销大,较少使用 |
✅ 实际系统如 Wi-Fi 使用 ARQ + FEC 混合机制。
二、检错和纠错的基本原理
1. 基本思想
- 在 $ k $ 位信息位后添加 $ r $ 位冗余位,构成一个长度为 $ n = k + r $ 的码字。
- 所有合法码字构成一个有限集合,非法组合表示出错。
2. 码距(Hamming Distance)
- 两个等长码字之间不同比特位的数量称为汉明距离。
- 一组码中任意两个合法码字之间的最小距离称为最小码距 $ d_{\min} $。
3. 码距与检错/纠错能力的关系
| 目标 | 所需最小码距 $ d_{\min} $ | 条件公式 |
|---|---|---|
| 检测 $ e $ 个错误 | $ d_{\min} \geq e + 1 $ | 可识别最多 $ e $ 位错误 |
| 纠正 $ t $ 个错误 | $ d_{\min} \geq 2t + 1 $ | 能自动纠正最多 $ t $ 位错误 |
| 同时检错 $ e $ 并纠错 $ t $ | $ d_{\min} \geq e + t + 1 $ 且 $ e > t $ | 如 $ d_{\min}=5 $:可纠1错并检3错 |
📌 示例:若 $ d_{\min} = 3 $,则:
- 最多可检 2 个错误($ e = d_{\min}-1 = 2 $)
- 或最多可纠 1 个错误($ t = \lfloor (d_{\min}-1)/2 \rfloor = 1 $)
三、主要编码类型分类
1. 分组码(Block Code)
- 将信息分为固定长度的 $ k $ 位块,每个块独立编码成 $ n $ 位码字
- 记作 $ (n, k) $ 分组码
- 常见例子:汉明码 $ (7,4) $、BCH码、RS码(里德-所罗门码)
- 优点:结构清晰,易于分析和实现
2. 卷积码(Convolutional Code)
- 编码结果不仅取决于当前输入的信息位,还依赖于前若干个输入位(记忆性)
- 用 $ (n, k, K) $ 表示:每输入 $ k $ 位,输出 $ n $ 位,约束长度为 $ K $
- 常用于语音通信、卫星通信
- 解码常用维特比算法(Viterbi Algorithm)
3. 线性码 vs 非线性码
- 线性码:任意两个合法码字的模2加仍是合法码字
- 包括:汉明码、BCH码、RS码、卷积码等
- 易于数学分析,广泛使用
- 非线性码:不满足线性性质,设计复杂,应用较少
4. 系统码 vs 非系统码
- 系统码:编码后的码字中明确包含原始信息位,后跟校验位
- 如:
[信息位][校验位] - 便于解码和兼容性处理,实际系统多采用
- 如:
- 非系统码:信息位被变换,不再直接出现在码字中
- 安全性好,但解码复杂
四、典型编码举例对比
| 编码类型 | 参数 | $ d_{\min} $ | 检错/纠错能力 | 应用场景 |
|---|---|---|---|---|
| 汉明码 | (7,4) | 3 | 纠1错 | 内存纠错、简单通信 |
| BCH码 | (63,51) | 5 | 纠2错 | 卫星通信、光通信 |
| RS码 | (255,239) | 17 | 纠8字节错 | CD/DVD、深空通信 |
| 卷积码 | (2,1,7) | ~10(自由距离) | 纠突发错误 | GSM、GPS、4G/5G |
五、总结
| 概念 | 核心要点 |
|---|---|
| 差错控制目标 | 提高通信可靠性,降低误码率 |
| 关键指标 | 最小码距 $ d_{\min} $ 决定纠错检错能力 |
| 分组码特点 | 固定长度、独立编码、结构规整 |
| 卷积码特点 | 有记忆、连续编码、适合维特比译码 |
| 线性码优势 | 数学工具丰富,易构造和译码 |
| 系统码优势 | 信息可见,便于解析和兼容 |
汉明距离(Hamming Distance) 是指两个等长码字之间在相同位置上不同比特的个数。它是衡量两个编码序列差异程度的基本度量,在差错控制编码中用于分析检错和纠错能力。
一、定义
汉明距离:对于两个长度相同的二进制序列(码字),它们的汉明距离等于对应位中不相同的位置数目。
记作:
d(c1,c2)
d(\mathbf{c}_1, \mathbf{c}_2)
d(c1,c2)
其中 $ \mathbf{c}_1 $ 和 $ \mathbf{c}_2 $ 是两个等长码字。
二、计算方法
步骤:
- 将两个码字按位对齐;
- 比较每一位是否相同;
- 统计不同的位数,即为汉明距离。
示例:
设两个码字为:
- $ \mathbf{c}_1 = 10110 $
- $ \mathbf{c}_2 = 11100 $
逐位比较:
| 位序 | 1 | 2 | 3 | 4 | 5 |
|---|---|---|---|---|---|
| c₁ | 1 | 0 | 1 | 1 | 0 |
| c₂ | 1 | 1 | 1 | 0 | 0 |
| 是否相同 | ✓ | ✗ | ✓ | ✗ | ✓ |
不同位出现在第 2 位和第 4 位 → 共 2 处
所以:
d(c1,c2)=2
d(\mathbf{c}_1, \mathbf{c}_2) = 2
d(c1,c2)=2
三、模2加法与异或运算(XOR)
汉明距离也可以通过模2加法(异或,XOR) 来快速计算:
c1⊕c2=(1⊕1)(0⊕1)(1⊕1)(1⊕0)(0⊕0)=01010 \mathbf{c}_1 \oplus \mathbf{c}_2 = (1\oplus1)(0\oplus1)(1\oplus1)(1\oplus0)(0\oplus0) = 01010 c1⊕c2=(1⊕1)(0⊕1)(1⊕1)(1⊕0)(0⊕0)=01010
结果中有 两个 1,说明有两位不同 → 汉明距离 = 2
✅ 因此:汉明距离 = 异或结果中“1”的个数 = 汉明重量(Hamming Weight)
四、最小汉明距离(Minimum Hamming Distance)
在一个编码方案中,所有合法码字两两之间的汉明距离的最小值称为最小码距 $ d_{\min} $:
dmin=minci≠cjd(ci,cj) d_{\min} = \min_{\mathbf{c}_i \neq \mathbf{c}_j} d(\mathbf{c}_i, \mathbf{c}_j) dmin=ci=cjmind(ci,cj)
这是决定该编码检错和纠错能力的关键参数:
| 目标 | 所需 $ d_{\min} $ |
|---|---|
| 检测 $ e $ 个错误 | $ d_{\min} \geq e + 1 $ |
| 纠正 $ t $ 个错误 | $ d_{\min} \geq 2t + 1 $ |
📌 例如:若 $ d_{\min} = 3 $,则可纠正 1 位错误或检测 2 位错误。
五、应用意义
| 应用场景 | 汉明距离的作用 |
|---|---|
| 差错检测 | 判断接收码是否为合法码字(若不在码集内,则出错) |
| 差错纠正 | 找到与接收码汉明距离最近的合法码字(最近邻译码) |
| 编码设计 | 设计具有足够 $ d_{\min} $ 的码以满足可靠性要求 |
| 生物信息学 | 比较DNA序列差异 |
| 计算机科学 | 哈希算法、容错系统中的相似性判断 |


2258

被折叠的 条评论
为什么被折叠?



