奇偶校验码

奇偶校验码

奇偶校验码出现:数据传输会因各种原因发生错误、失败

校检原理

假设有01、00两个数据,01的1数据发生跳变会变成00,引发错误数据

可以设想01、00两个数据之前加入一个冗余码位,变成001,100,这样在假设冗余码未发生跳变,数据发生跳变,可以很好检测出数据发生跳变

码字:由若干位代码组成的一个字

将两个码字逐位对比,不同位个数称为两个码字间距

所有合法码字之间的距离叫码距,简称d

当d=1时,无检错能力;当d=2时,有检错能力;当>3时,设计合理即检错,又纠错

奇偶校验

在信息位的首部或尾部添加一个奇偶校验位

奇校验码:整个校验码中“1”的个数为奇数,如001,凑个0,变成0001

偶校验码:整个校验码中“1”的个数为偶数,如001,凑个1,变成1001

局限性:码距为2,只能检测奇数个数据跳变的错误,无纠错能力(思考是不是d为偶数就只能检测奇数个数据)

计算机如何实现奇偶校验:通过各个位的异或运算(模2加)

海明码

海明码思路

一个校验位只能携带2种状态信息(对/错)

多个校验位能携带多种状态信息(对/错,错在哪) 对n个信息位分k个分组(一个分组对应一个校验位)=k个

怎么分组,设置多少校验位

  1. 校验位k有 2k种状态

  1. 信息位n+校验位K

综合上述有如下公式

所有状态必须包含一个正确信息

D4D3D2D1(1010),共四位,校验位P3P2P1,

对应海明码信息位为H7H6H5H4H3H2H1

P的位置放在2i-1位置上,如同二进制的权值

形成D4D3D2P3D1P2P1这种数据格式

根据D数据位所占用信息位的2进制表示方式

3——》 011

5——》 101

6——》 110

7——》 111

二进制每个纵列发现问题可以配对

这样P所处的权重可以和二进制的4 2 1 对应

这样

P1=H3⊕H5⊕H7=D1⊕D2⊕D4 /6为0所以不算

P2=H3⊕H6⊕H7=D1⊕D3⊕D4

P3=H5⊕H6⊕H7=D2⊕D3⊕D4

如何纠错

S1=P1⊕D1⊕D2⊕D4

S2=P2⊕D1⊕D3⊕D4

S3=P3⊕D2⊕D3⊕D4

如果无数据丢失/正确则为0

如果数据位出错则出错位置为S3S2S1的数值二进制组合

海明码有1bit的纠错能力,有2bit的检错能力

如果有两个比特位的跳变则可能出错:P1P2跳变无法定位哪里出错,所以加入H8的偶校验进行全校验

S3S2S1=000且全体偶校验成功-》无错误

S3S2S1不=000且全体偶校验失败-》有1位错,纠正即可

S3S2S1不=000且全体偶校验成功-》有2位错,需重传

你可能感兴趣的:(计算机组成原理)