关于数据校验码的一些理解

357 阅读4分钟

差错控制

数据在存储和传输的过程中可能会发生错误,可以使用差错控制减少错误。

差错控制是在数字通信中使用编码方法对传输过程中的错误进行检查和纠正,确保数字信号传输的准确性。

  1. 数据校验码

能够自动发现错误,或者纠正错误的数据编码,又称检错纠错码

  1. 码距

任意两个码字之间最少变化的二进制位数称为码距,例如用4位二进制码表示16种状态(8421码),两个码字之间的最少变化的二进制位为1(0000 和0001 只需要变化一位)

  • 码距太短的编码不能作为数据校验码,因为当在数据传输中一个bit位出错就变成了另一个码字,不具有发现错误的能力。
  1. 码距和检错误纠错

  2. 在一个码组内为了检测e个误码 要求最小码距满足 d≥e+1

  3. 在一个码组内为了纠正t个误码 要求最小码距满足 d≥2t+1

一、奇偶校验码

一种码距为2简单的校验码,由码距和检错纠错关系我们可得 2≥e+1 所以e≤1,那么使用奇偶校验码可以检查出一位的错误,不能纠正错误。

  • 常用于存储器读取检查,ASCII字符传送检查
  1. 实现方法

校验位形成

  1. 由若干有效信息位加上一个值为0或1的二进制校验位组成校验码,在加入校验位后通过统计校验码中所包含的1的数量为奇数还是偶数分为奇校验和偶校验。

校验检测

  1. 奇校验中的1位数最为奇数个则信息正确,否则错误。偶校验同理。

  2. 多重奇偶校验

由于奇偶校验码只能发现一位出错,当两位同时出错时就又回归正确,在横向位置和纵向位置同时设置校验码,这样即使同一行或列同时出现错误也能够发现。(电路是具有一定可靠性的,所以同时出现3位错误几乎不可能出现)

二、汉明码

一种多重奇偶校验码,在有效的信息位中加入几个校验位形成校验码,使码距均匀的拉大,把汉明码每一个校验位均匀的分配道多个校验组中,当一位发生错误,多校验组收到影响,不仅可以实现检测,还可以实现纠错。

1.冗余位

校验位数K和有效信息位数N应满足以下公式

2k1>=N+K+12^{k-1}>=N+K+1

2.校验码形成

若汉明码最高位索引为m,最低位为1

HmHm1Hm2...H1H_{m}H_{m-1}H_{m-2}...H_{1}

  • m=校验位信息位数量之和

  • 校验位PiP_{i}被放置在汉明码中位置为

2i12^{i-1}

Pi位校验位所校验的信息位在汉明码中索引的二进制的第i位为1P_{i}位校验位所校验的信息位在汉明码中索引的二进制的第i位为1

假设给定有效信息码为D8D7D6D5D4D3D2D1D_{8}D_{7}D_{6}D_{5}D_{4}D_{3}D_{2}D_{1}

  1. 加入校验位占位
D/PD8D_{8}D7D_{7}D6D_{6}D5D_{5}P4P_{4}D4D_{4}D3D_{3}D2D_{2}P3P_{3}D1D_{1}P2P_{2}P1P_{1}P5P_{5}
索引1211109232^{3}765222^{2}3212^{1}202^{0}13
1100101110101001100001110110010101000011001000011101
  1. 校验位值

在校验位加入后,我们确定每一个检验组的组成,将PiP_{i}ii 所对应的 信息位中索引值二进制中 ii位为11划分为一组,通过异或运算求的对应PiP_{i}

P1=D1D2D4D5D7 P_{1}=D_{1}\oplus D_{2}\oplus D_{4} \oplus D_{5} \oplus D_{7}

P2=D1D3D4D6D7P_{2}=D_{1}\oplus D_{3}\oplus D_{4} \oplus D_{6} \oplus D_{7}

P3=D2D3D4D8P_{3}=D_{2}\oplus D_{3}\oplus D_{4} \oplus D_{8}

P4=D5D6D7D8P_{4}=D_{5}\oplus D_{6}\oplus D_{7} \oplus D_{8}

由于P5P_{5} 找不到匹配的值,我们发现不同信息位出现的次数不一致,我们将出现次数少的信息项运算得到

P5=D1D2D3D5D6D8P_{5}=D_{1}\oplus D_{2}\oplus D_{3} \oplus D_{5} \oplus D_{6} \oplus D_{8}

每个信息项都关联3个校验组,当一位出现错误时会牵动3个校验组,提高了检错效率

三、Cyclic Redundancy Check(CRC)

循环冗余校验

通过除法运算建立有效信息位和校验位之间的约束关系。


  • 有效信息为

    • M(X)
  • 生成多项式

    • 发送方和接收方约定一致

    • G(X)

    • 位数为nn

除法均位模2除法

  1. 校验码生成 1

D(X)(商)=M(X)<<n1G(X)R(X)(余数)D(X)(商)=\frac{M(X)<<n-1}{G(X)}\cdot\cdot\cdot R(X)(余数)

  1. 校验码生成 2

Result=M(X)R(X)Result=M(X)||R(X)

  1. 校验成功

ResultG(X)=00\frac{Result}{G(X)}=0\cdot\cdot\cdot 0

  1. 校验失败

当校验码和生成式的模2除法结不能整除时说明数据出错

  1. 多项式转换

G(X)=X5+X3+1G(X)=X^5+X^3+1

X5X^5X4X^4X3X^3X2X^2X1X^1X1X^1
101001

G(X)=101001G(X)=101001

G(X)=XmaxXmax1...X1G(X)=‘X^{max}‘X^{max-1}...‘X^{1}

Xi‘X^{i} 意为Xi X^i这一位在给定的多项式中是否存在,存在则为1不存在则为0