计算机组成原理笔记—数据信息的校验

一、校验码的构成

校验码是具有发现错误和纠正错误能力的数据编码。其主要原理是在被校验数据(原始数据)中引入冗余信息(校验数据),使得校验数据符合某种既定的规则;当传输过程中校验码发生错误破坏了这种规则时,可以检测和发现错误。 

 二、码距和校验

1、码距

码距,又称海明距离,即在信息编码中,两个编码对应的二进制位不同的个数。如10110和01111中有三位的二进制数不同,则码距为3。

2、编码集的码距

在一个有效编码集中,任意两个码字的最小码距称为该编码集的码距,也常称该编码集的最小码距。如:用4个3位二进制数001、010、011、100为一个编码集,其码距则为1.

3、码距和检错、纠错能力

码距与检错、纠错能力
码距检错、纠错能力
1d≥e+1可检测e个随机错误
2d≥2t+1可纠正t个随机错误
3d≥e+t+1&&e>t可检测e个随机错误并纠正t个错误

码距越大,抗干扰能力、纠错能力越强,数据冗余越大,编码效率越低。下面举例说明码距和检错、纠错能力的关系。

对于天气晴和雨两种状态:

(1)用一位二进制数来表示,1表示天晴,0表示天雨,码距为1。若输出为1,无法得知在传输过程中是否发生错误,即不具备检错和纠错能力

(2)用两位二进制数来表示,11表示天晴,00表示天雨,码距为2。则该编码最多可以识别1位错误,如00变为01,但是无法识别2位错误,如00变为11。

(3)用三位二进制数来表示,111表示天晴,000表示天雨,码距为3。则该编码最多可以识别2位错误,如000变为010或011,但是无法识别3位错误,如000变为111。同时也具备纠正1位错误的能力,如000变为010,则能推出原数据大概率位000。 

……

三、奇偶校验 

1、简单奇偶校验

奇偶校验的编码规则就是添加1位校验位P,使得最终校验码中数字1的个数为奇数(奇校验)或者偶数(偶校验)。该编码规则最小码距为2,即能检测出1位错误/准确来说是检测奇数位错。

奇、偶校验举例
原始数据(7位)奇校验码(8位)偶校验码(8位)
000 00000000 00010000 0000
111 11111111 11101111 1111
101 10011011 00111011 0010

发送方发送 D_{1}D_{2}D_{3}...D_{n}P

发送方,偶校验位P=D_{1}\bigoplus D_{2}\bigoplus D_{3}\bigoplus ...\bigoplus D_{n}

              奇校验位P=\overline{D_{1}\bigoplus D_{2}\bigoplus D_{3}\bigoplus ...\bigoplus D_{n}}

接收方收到D_{1}'D_{2}'D_{3}'...D_{n}'P'后生成检错位G

接收方,偶校验检错位G=D_{1}'\bigoplus D_{2}'\bigoplus D_{3}'\bigoplus ...\bigoplus D_{n}'\bigoplus P'

              奇校验检错位G=\overline{D_{1}'\bigoplus D_{2}'\bigoplus D_{3}'\bigoplus ...\bigoplus D_{n}'\bigoplus P'}

G=1时,传输有错;G=0时,无奇数位错误

2、多重奇偶校验

以交叉奇偶检验(二维奇偶检验)为例。

简单奇偶校验只有一个校验组,一个校验位,只能提供一位检错信息进行错误检查。若将原始数据信息按照某种规律分成若干校验组,使得每个数据位同时位于多个检验组中,当校验码中某一位发生错误时,可以被多个校验位指出,这样使得偶数位也可以被指出(也有例外),并能指出最大可能是哪一位出错并纠正。

1位出错,可以检出行列并纠错:

2位(1行2列)出错,可以检出列:

矩形顶角位出错,无法检错:

三、海明校验 

海明校验其实就是把一组k位原始数据分为r个奇偶校验组,就可以产生r个检错码(校正因子)。要求每个数据位至少参加两个校验组,这样当1个数据位出错,就可以导致多个检错码为1。

1、校验位r位数

r位校验位,生成r个检错码,可以产生2^{r}种组合。规定检错码全为0时表示数据传输无误,所以还剩下2^{r}-1中组合来表示数据出错的位置。

故校验位的位数满足:                                  2^{r}-1\geqslant k+r

例,数据位为4位,则2^{r}-1\geqslant 4+r求得r\geqslant 3

2、编码效率

编码效率=数据位/校验码的总位数

3、举例说明

以(7,4)组码为例,4个数据位,3个校验位: 

校验码D4D3D2D1P3P2

P1

海明码H7H6H5H4H3H2

H1

 由于是3位的校验位,会产生3个校验组(即3组奇偶校验组)会生成3位的检错码G3 G2 G1,现在来人为规定不同检错码所指定的出错位:

海明码G3G2G1出错位
000无错
H1001P1

G中只有1位为1,所以对应的情况为1校验位出错,对应的顺序任意

H2010P2
H4100P3
H3011D1G中至少2位为1,所以对应的情况为1数据位出错
H5101D2
H6110D3
H7111D4

这样三组奇偶校验组的的数据就分别确定了(偶校验时):

第一组,(D1 D2 D4 P1, G1),P_{1}=D_{1}\bigoplus D_{2}\bigoplus D_{4}G_{1}=D_{1}\bigoplus D_{2}\bigoplus D_{4}\bigoplus P_{1}

第二组,(D1 D3 D4 P2, G2),P_{2}=D_{1}\bigoplus D_{3}\bigoplus D_{4}G_{2}=D_{1}\bigoplus D_{3}\bigoplus D_{4}\bigoplus P_{2}

第三组,(D2 D3 D4 P3, G3),P_{3}=D_{2}\bigoplus D_{3}\bigoplus D_{4}G_{3}=D_{2}\bigoplus D_{3}\bigoplus D_{4}\bigoplus P_{3}

……未完待续

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值