2. 线性分组码(Linear Block Codes)
线性分组码是一类重要的差错控制编码,其编码规则满足线性性质:任意两个合法码字的模2加仍是合法码字。它具有良好的数学结构,便于分析、设计和实现。
一、基本概念
| 概念 | 定义 |
|---|---|
| 信息码元 | 原始要传输的数据位,共 $ k $ 位,记为 $ \mathbf{u} = (u_1, u_2, …, u_k) $ |
| 监督码元(校验位) | 编码过程中添加的冗余位,共 $ r = n - k $ 位,用于检错或纠错 |
| 码字 | 由信息位和监督位组成的完整编码序列,长度为 $ n $,即 $ \mathbf{c} = (c_1, c_2, …, c_n) $ |
| 误码图样(Error Pattern) | 表示在传输中发生错误的位置,如 $ \mathbf{e} = (0,1,0,0,1) $ 表示第2和第5位出错 |
| 校正子(Syndrome) | 接收端根据接收码计算的一个向量,用于判断是否有错及定位错误位置 |
✅ 接收码:$ \mathbf{r} = \mathbf{c} + \mathbf{e} $
校正子:$ \mathbf{s} = \mathbf{r} \cdot \mathbf{H}^T = (\mathbf{c} + \mathbf{e}) \cdot \mathbf{H}^T = \mathbf{e} \cdot \mathbf{H}^T $(因为 $ \mathbf{c}\cdot\mathbf{H}^T=0 $)
⇒ 校正子只与错误有关,与原始码字无关
二、监督方程与监督矩阵
1. 监督方程
- 是一组线性方程,描述监督位如何由信息位生成
- 例如对于 (7,4) 汉明码:
{p1=d1+d2+d4p2=d1+d3+d4p3=d2+d3+d4 \begin{cases} p_1 = d_1 + d_2 + d_4 \\ p_2 = d_1 + d_3 + d_4 \\ p_3 = d_2 + d_3 + d_4 \end{cases} ⎩⎨⎧p1=d1+d2+d4p2=d1+d3+d4p3=d2+d3+d4
其中 $ d_i $ 是信息位,$ p_j $ 是校验位
2. 监督矩阵 $ \mathbf{H} $
- 维度为 $ (n-k) \times n $,用于检测错误
- 满足:所有合法码字 $ \mathbf{c} $ 都满足 $ \mathbf{c} \cdot \mathbf{H}^T = \mathbf{0} $
- 若 $ \mathbf{r} \cdot \mathbf{H}^T \neq \mathbf{0} $,则说明有错
📌 示例:(7,4) 汉明码的监督矩阵为:
H=[101010101100110001111]
\mathbf{H} =
\begin{bmatrix}
1 & 0 & 1 & 0 & 1 & 0 & 1 \\
0 & 1 & 1 & 0 & 0 & 1 & 1 \\
0 & 0 & 0 & 1 & 1 & 1 & 1 \\
\end{bmatrix}
H=100010110001101011111
三、生成方程与生成矩阵
1. 生成方程
- 描述如何从信息位 $ \mathbf{u} $ 得到整个码字 $ \mathbf{c} $
- $ \mathbf{c} = \mathbf{u} \cdot \mathbf{G} $
2. 生成矩阵 $ \mathbf{G} $
- 维度为 $ k \times n $,若为系统码,则形式为:
G=[Ik∣P] \mathbf{G} = [\mathbf{I}_k \mid \mathbf{P}] G=[Ik∣P]
其中 $ \mathbf{I}_k $ 是单位阵,$ \mathbf{P} $ 是 $ k \times (n-k) $ 的校验子矩阵
📌 示例:(7,4) 汉明码的生成矩阵为:
G=[1000101010011000101110001011]
\mathbf{G} =
\begin{bmatrix}
1 & 0 & 0 & 0 & 1 & 0 & 1 \\
0 & 1 & 0 & 0 & 1 & 1 & 0 \\
0 & 0 & 1 & 0 & 1 & 1 & 1 \\
0 & 0 & 0 & 1 & 0 & 1 & 1 \\
\end{bmatrix}
G=1000010000100001111001111011
✅ $ \mathbf{G} $ 和 $ \mathbf{H} $ 满足关系:$ \mathbf{G} \cdot \mathbf{H}^T = \mathbf{0} $
四、汉明码的构造
汉明码是一种能纠正单个错误的线性分组码,记作 $ (n, k) $,其中:
- $ n = 2^m - 1 $
- $ k = 2^m - m - 1 $
- $ r = n - k = m $
- 最小距离 $ d_{\min} = 3 $ → 可纠1错
构造步骤:
- 确定校验位数 $ m $,使得 $ 2^m \geq n+1 = k + m + 1 $
- 将码字位置编号为 1 到 $ n $
- 所有 $ 2^i $ 位置作为校验位(如第1、2、4、8…位)
- 其余为信息位
- 每个校验位负责其二进制表示中某一位为1的所有位置进行偶校验(或奇校验)
✅ 校正子 $ \mathbf{s} = \mathbf{r} \cdot \mathbf{H}^T $ 的值直接对应出错位的地址(即错误位置)
五、循环码及其特点
循环码是线性分组码的一个重要子类,具有循环移位不变性。
特点:
- 任一码字左/右循环移位后仍是一个合法码字
- 可用多项式表示,便于硬件实现
- 包括 CRC、BCH、RS 等都属于循环码
1. 生成多项式 $ g(x) $
- 是一个次数为 $ r = n-k $ 的因式,整除 $ x^n - 1 $
- 所有码多项式 $ c(x) $ 都是 $ g(x) $ 的倍数
✅ 如 (7,4) 循环码可用 $ g(x) = x^3 + x + 1 $
2. 编码过程(系统形式)
- 将信息多项式 $ u(x) $ 乘以 $ x^{n-k} $(相当于左移 $ r $ 位)
- 计算余式 $ r(x) = [x^{n-k}u(x)] \mod g(x) $
- 码多项式为:$ c(x) = x^{n-k}u(x) + r(x) $
3. 译码过程
- 接收多项式 $ r(x) $
- 计算伴随式 $ s(x) = r(x) \mod g(x) $
- 若 $ s(x)=0 $,无错;否则查表或使用算法定位错误
六、交织码(Interleaving Code)
用于对抗突发错误(burst error),将连续传输中的长串错误分散成多个独立的随机错误,以便原编码能有效纠正。
类型:
- 块交织器(Block Interleaver)
- 卷积交织器
工作原理:
- 发送端:将多个码字按列写入矩阵,再按行发送
- 接收端:按行接收,按列读取恢复原始顺序
✅ 即使出现一段连续错误,解交织后每个码字最多只错一位,可被汉明码等纠正
七、循环冗余检验码(CRC 码)
CRC(Cyclic Redundancy Check) 是一种广泛应用的检错码,不属于纠错码,常用于数据链路层(如以太网、Wi-Fi)、存储系统等。
原理:
- 使用生成多项式 $ g(x) $ 进行模2除法
- 发送端附加 $ r $ 位校验码,使整体能被 $ g(x) $ 整除
- 接收端重新计算余数,若不为0则判错
常见标准多项式:
| 名称 | 多项式 | 应用场景 |
|---|---|---|
| CRC-8 | $ x^8 + x^2 + x + 1 $ | 蓝牙 |
| CRC-16 | $ x^{16} + x^{15} + x^2 + 1 $ | USB、Modbus |
| CRC-32 | $ x^{32} + … + 1 $ | 以太网、ZIP文件 |
✅ CRC 可检测:
- 所有单比特错
- 所有双比特错
- 奇数个错误
- 长度 ≤ $ r $ 的突发错误
- 大部分更长的突发错误


589

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



