目录
作用: 为了防止计算机在处理信息的过程中出现错误,将信号采用专门的逻辑电路进行编码以检测错误,甚至校正错误。
方法:在每个字上添加一些校验位,用来确定字中出现错误的位置。
1.奇偶校验
这种检错必须保证合法数和非法数的数目相等,因为奇数个1和偶数个1的组合的数目是相等的,规定一方为合法数,当有一位数字改变,合法数就会变成非法数,就说明出现错误。
实验原理 :通常是为一个字节补充一个二进制位,称为加偶安慰,用设置校验位的值为0或1,使字节的8位和该校验位含有1值的个数为奇数或偶数,在使用奇数个1的方案进行校验时,称为奇校验;用偶数个1的方案进行校验时,称为偶校验。
a.偶校验
定义:设X = (X0,X1,…,Xn-1)
C = X0 ⊕ X1 ⊕ …… ⊕ Xn ;当X中有偶数个1的时候,校验位C=0,有奇数个1的时候C=1,即保证 C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn始终有偶数个1
形成的校验位C与X0,X1,…,Xn-1一同参与逻辑运算,即
A = C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn 若A = 1,说明在传送的过程中 说明有一位发生了变化;若A = 0,说明传送正确。
b.奇校验
定义:设X = (X0,X1,…,Xn-1)
C = X1 ⊕ …… ⊕ Xn ;当X中有偶数个1的时候,校验位C=1,有奇数个1的时候C=0,即保证 C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn始终有奇数个1。
形成的校验位C与X0,X1,…,Xn-1一同参与逻辑运算,即
A = C ⊕ X0 ⊕ X1 ⊕ …… ⊕ Xn 若A = 0,说明在传送的过程中 说明有一位发生了变化;若A = 1,说明传送正确。
2.海明校验
特点:能检测出二位同时出错,亦能检测出一位出错并能自动纠错。
实验原理:在k个数据位之外加上r个校验位,从而形成一个k+r位的新码字,当某一位出错后,就会引起相关的几个校验位的值发生变化,从而达到检错、纠错的目的。
发现并纠正一位错:校验位r不仅要检验每个数据位是否出错(k个数据位),还需要能够检验校验位本身是否发生错误(r个校验位),还要考虑没有发生错误的情况(1)。所以需要的校验位组合与数据位的关系需要满足
2^r >= k + r + 1
编码规律:若海明码的最高位号为m,最低位号为1,即HmHm-1…H2H1
<1> 校验位与数据位之和为m,每个校验位Pi在海明码中被分在位号2^i-1 的位置,其余各位为数据位,并按从低到高诸位一次排列的关系分配各数据位。
<2> 海明码的每一位码Hi(包括数据位和校验位本身)由多个校验位校验,其关系是被校验的每一位位号要等于校验它的各校验位的位号之和。这样安排的目的,是希望校验位的结果能正确反映出出错位的位号。
校验位的编码规则(发送端):根据每个校验位所参与校验的数据位可得(求Pi相当于奇/偶校验)
译码规则(接收端):
S1=P1 ⊕ D1⊕D2⊕D4⊕D5⊕D7
S2=P2 ⊕ D1⊕D3⊕D4⊕D6⊕D7
S3=P3 ⊕ D2⊕D3⊕D4⊕D8
S4=P4 ⊕ D5⊕D6⊕D7⊕D8
线路实现:
一般都是高电平输出
假设利用偶校验,
①无错:S1 = 0,S2 = 0,S3 = 0 ,S4 = 0
②一位出错:假设D6出错,则S4S3S2S1=1010,转化为十进制即H10出错,即D6出错,然后对其进行取反操作,纠正错误。
判断一位错还是两位错:
P5=D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8⊕P4⊕P3⊕P2⊕P1
S5=P5⊕P4⊕P3⊕P2⊕P1⊕D1⊕D2⊕D3⊕D4⊕D5⊕D6⊕D7⊕D8
任何偶数个数出错,S5一定为0,因此可区分两位出错或一位出错。