2.4 数据校验码

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

§2.4 数据校验码

校验码是一种提高数据可靠性、防止数据出错以及纠正错误的特殊编码。

一.码距

两个码字逐位比较,其不同字符的个数就是两个码字的距离。所以一个码制的距离定义为:在这个编码制中各个码字之间的最小距离称为码距。例如4位二进制数中16个代码的码距为1,若合法地增大码距,可提高发现错误的能力。

二.奇偶校验

在每个字组中附加一个校验位,用于将整个字组中二进制数“1”的个数凑成奇数个(奇校验)或偶数个(偶校验),统称为奇偶校验,附加位称为奇校验位或偶校验位。例如,ASCII中“A”为1000001 B,若采用奇校验,则在最高位补充1,成为11000001 B。

码距为2的奇偶校验编码能发现一个数据位错误或奇数个位错误,但不能确定出错的位置,也不能纠正错误。

对n 位数据Dn...D1加校验位P后应满足S=P⊕Dn⊕Dn-1⊕...⊕D2⊕D1=1/0 其中当奇校验时,S=1;偶校验时,S=0。

三.海明校验

1.校验原理:在数据中加入几个校验位(奇偶校验位),将数据代码的码距比较均匀地拉大,并把数据的每个二进制位分配在几个奇偶校验位组中。当某一位出错时,就会引起有关若干校验位的值发生变化,在不但可以发现出错,还能找出哪一位出错,为进一步自动纠错提供依据。

2.编码规则:设对N位数据用K位校验位校验,则其海明码为:

HmHm-1....H2H1

其中最高位位号m,最低位位号为1。

(1)校验位与数据位之和m(m=K+N);

(2)每个校验位Pi分配在海明码的2i-1位置上;

(3)海明码中除校验位,其它为数据位。被校验数据从低到高顺序分配到海明码中;

(4)海码的每一位码Hi由多个校验位校验,且被校验的每一位位号要等于校验它的个校验位的位号之和;

(5)在增大合法码的码距时,使码距均匀地增大,保证检错平均。

3.发现两位错、纠正一位错的海明码

为表示N位数据、K位校验位中某一位出错以及无错,共有N+k+1种情况,另考虑到要发现两位同时出错,则应满足

2K-1≥N+K+1

按此关系计算所得K与N对应值如教材所示。

例如,对N=8(一字节数据D8D7D6D5D4D3D2D1),需校验位K应为5,海明码为

H13H12....H2H1

其中5个校验位P5、P4、P3、P2、P1分别为H13、H8、H4、H2、H1,其余为数据位,即海码H13H12....H2H1为: P5D8D7D6D5P4D4D3D2P3D1P2P1

根据“被校验位的海码位号==校验位号之和”关系,校验位Pi校验所有位号中带有i的海码位(方法同奇偶校验):

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

在上述关系中D4和D7分别由三个校验位校验,其余均只被两位校验,为此用

P5对D1、D2、D3、D5、D6、D8再进行校验:

若采用奇校验,则S1 S2 S3 S4 S5应为11111;若采用偶校验,则S1 S2 S3 S4 S5应为00000。现假设采用偶校验,则有:

P1=D1⊕D2⊕D4⊕D5⊕D7

P2=D1⊕D3⊕D4⊕D6⊕D7

P3=D2⊕D3⊕D4⊕D8

P4=D5⊕D6⊕D7⊕D8

P5=D1⊕D2⊕D3⊕D5⊕D6⊕D8

生成海明码,就是计算上述五个校验位;而校验过程就是计算前面所述的S1 S2 S3 S4 S5

,它们反映了13 位海明码出错情况。当采用偶校验时,有教材所示判无错或发生一、二位出错及出错位号的结论。

4.发现一位错、纠正一位错的海明码

对N位数据位、K位校验位,要发现一位错、纠正一位错,则应满足

2K≥N+K+1

例如K=4,则N≤24-4-1=11,即最多只能校验11位数据。若对一字节(N=8)数据编码,则也需校验位4位,其海明码H12....H2H1为:

D8D7D6D5P4D4D3D2P3D1P2P1

校验关系式为:

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

若假设采用偶校验,则有:

P1=D1⊕D2⊕D4⊕D5⊕D7

P2=D1⊕D3⊕D4⊕D6⊕D7

P3=D2⊕D3⊕D4⊕D8

P4=D5⊕D6⊕D7⊕D8

举例:数据10101010采用偶校验方法可计算出4个校验位P4P3P2P1=0100,则求出数据10101010的海码为101001011000,把8位数据和4位校验位组成的海码一起存储、传送处理,当再次使用时,计算S1 S2 S3 S4,判是否均为0,若某一组S值不为0,则说明该组S所对应的位有错产生。如S4S3=11,则这两个S组中公有的一位出错---D8错。可通过对该位数据进行取反而得到纠正。

四.循环冗余校验码(CRC)

循环冗余校验码是目前通讯传输系统和磁盘、磁带存储系统中广泛采用的一种编码形式,在有传送的信息后附加若干校验位。CRC的编码格式为:

k 位信息位 + r位校验位

对k位信息附加r位校验位,形成共n(n=k+r)位的CRC,这种编码也称为(n,k)码。附加位的产生只与该组信息位有关,且校验位越多,校验能力越强。

1.CRC的产生

对一给定的(n,k)循环码,存在一个最高次幂为(n-k)的多项式g(x)可生成k位信息的r位校验码,g(x)被称为生成多项式。例如网络中的X.25协议,数据链路层在传递信息时,要附加16位校验位,其生成多项式g(x)

=x16+x12+x5+1,这里生成多项式的最高次幂数就是校验位位数,最低次幂一定是0。

设被传送k位信息的表达式为M(x),M(x)左移(n-k)位形成n位的数据x (n-k)M(x)(择交子表示的信息x=2),用g(x)去除x(n-k)M(x)后,得

X(n-k)M(x) R(x)

�������� =Q(x)+

��� ........(1)

g(x) g(x)

其中Q(x)是幂次小于k的商式,R(x)为幂次小于n-k的余式。若(1)式两边同乘以g(x),则可得

X(n-k)M(x)= Q(x)g(x)+ R(x)........(2)

其中(2)式中“+”号是按位加(逻辑加,不产生进位,且一个数按位加上另一个数所得结果与按位减去同一个数所得结果相同),所以(2)也可写成

相关文档
最新文档