首页 理论教育差错控制方法-计算机网络实用技术教程

差错控制方法-计算机网络实用技术教程

【摘要】:1.5.5差错控制方法数据传送过程中数据失真产生的原因很多,但大多是由噪声引起的。差错控制是指在数据通信过程中能够发现和纠正差错,把差错限制在尽可能小的允许范围内的技术和方法。前向纠错方式是接收端不但能发现错误,还能通过差错控制编码方法确定二进制码元发生错误的位置而加以纠正,这种编码称为纠错码。

1.5.5 差错控制方法

数据传送过程中数据失真产生的原因很多,但大多是由噪声引起的。噪声有两大类,一类是信道固有的,持续存在的随机热噪声;另一类是由外界特定的短暂原因所造成的冲击噪声。热噪声引起的差错称为随机错误,所引起的某位码元的差错与前后码元没有关系,物理信道用较大的信噪比可以减少热噪声的影响。冲击噪声通常是突发的,由其引起的差错称为突发错,冲击噪声幅度可能相当大,无法靠提高信号幅度来避免冲击噪声造成的差错,通常会影响到连续的码元。

数据通信中不加任何差错控制措施,直接用信道传输信号是不可靠的,需要通过相应的差错控制手段和方法对其进行修正。差错控制是指在数据通信过程中能够发现和纠正差错,把差错限制在尽可能小的允许范围内的技术和方法。常用的差错控制方法是差错控制编码,进行差错控制的方法有两大类:自动重发请求方式和前向纠错方式。

自动重发请求方式是当接收端检测出有差错时,通过发送重发请求,直到收到正确的码字,可以通过差错控制编码检测码字是否正确,但不确定错误的位置,这种编码称为检错码。前向纠错方式是接收端不但能发现错误,还能通过差错控制编码方法确定二进制码元发生错误的位置而加以纠正,这种编码称为纠错码

1.差错控制编码原理

差错控制编码的原理是:发送方对准备传输的数据进行抗干扰编码,即按某种算法附加上一定的冗余位,构成一个码字后再发送。接收方收到数据后进行校验,即检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生。差错控制编码分检错码和纠错码两种,检错码是能自动发现差错的编码,纠错码是不仅能发现差错而且能自动纠正差错的编码。

衡量编码性能好坏的一个重要参数是编码效率R,有

img9

式中,n表示码字的位长,m表示数据信息的位长,k表示冗余位的位长。

2.奇偶校验

奇偶校验码是一种最简单的检错码,其原理是通过增加冗余位,从而使得码字中“1”的个数保持为奇数(奇校验)或偶数(偶校验)。例如,偶校验100101100,111001011。在实际使用时,奇偶校验可分为以下三种方式:垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验,如图1-8所示。

img10

图1-8 垂直奇偶校验、水平奇偶校验和水平垂直奇偶校验方式示意图

3.循环冗余码CRC

循环冗余码又称CRC码(Cyclic Redundancy Code),简称循环码。CRC码检错能力强,且容易实现,是目前最广泛的检错码编码方法之一。在计算机网络中,CRC被广泛采用。CRC是一种检错码,其编码过程涉及多项式知识。多项式和比特串有一定的对应关系,例如,比特串10010101110可被解释成X10+ X7+X5+ X3+ X2+X1

发送端的编码步骤如下:

1)将要发送的二进制数据(k位比特序列),对应一个(k-1)阶多项式K(x);再选取一个收发双方预先约定的r阶生成码多项式G(x);

2)在原数据尾添加r个0,即,xrK(x)。;

3)进行xrK(x)/G(x),求得余数R(x)。R(x)即为校验序列;

4)用R(x)替代xrK(x)中最后的r个0(即xrK(x)-R(x)),得到待传送的CRC码多项式(数据位加校验位)T(x)。

可以看出,CRC码字的总长(传送位)为n= k+ r位,对应一个(n-1)阶多项式T(x)。

接收端的检验是要求与发送方所使用的G(x)要一致,过程如下:

1)接收端收到的CRC码多项式T'(x);

2)校验:进行T'(x)/G(x),求得余数;

3)若余数为0,则正确(即T'(x)/G(x)= K(x));若余数不为0,则出错。

若适当选取G(x),使其含有(x+ 1)因子,常数项不为0,且周期大于n,则由此G(x)作为生成多项式产生的CRC码,可检测出:所有双位错、所有奇数位错、所有突发长度小于等于r的突发错、(1-2-(r-1))的突发长度等于r+ 1的突发错以及(1-2-r)的突发长度大于r+ 1的突发错。目前广泛使用的G(x)有各种标准,主要有以下4种:

CRC12= X12+ X11+ X3+ X2+1

CRC16= X16+ X15+ X2+1(IBM公司)

CRC16= X16+ X12+ X5+1(CCITT)

CRC32= X32+ X26+ X23+ X16+ X11+X10+X8+ X7+ X5 X4 X2 X1+1

4.海明码

海明码是一种可以纠正一位差错的编码,它是利用在信息位为m位,增加k位冗余位,构成一个n=m+ k位的码字,然后用k个监督关系式产生的k个校正因子来区分无错和在码字中的n个不同位置的一位错。海明校验码是放在2的幂次位上的,即1、2、4、8、 16、32…而对于信息位为m的原始数据,需加k位校验码,它满足m+ n+1<2k。海明码是从原始数据的第一位开始写,遇到校验位置留空格(即1、2、4、8、16…),如信息101101100的海明码为xx1x011x01100,x表示海明校验码的相应位置。海明码的编码效率为

img11(www.chuimin.cn)

式中,m为信息位位数,k为增加冗余位位数。

海明码的编码,主要是确定海明码的校验码。校验码的计算规则比较简单,规则是海明码第i(即1、2、4、8、16…)个监督关系Si位计算式的产生与n值有关,结果为1到n各数值二进的第i位的异或运算得到的值。如8比特数据的信息,k为4,n值为13,监督关系式的计算如表1-1所示。

表1-1 8比特数据信息的海明码校验码计算

img12

Si可根据表中各列为1的相应序号的信息位的异或得到,计算式为

S1= b3+ b5+ b7+ b9+ b11+ b13

  S2= b3+ b6+ b7+ b10+ b11    

  S4= b5+ b6+ b7+ b12+ b13    

  S8= b9+ b10+ b11+ b12+ b13   

同样,以此方法可以得到四比特信息码的海明码的监督关系式为

S4= a3+ a5+ a6+ a7

S2= a2+ a4+ a6+ a7

S1= a1+ a4+ a5+ a7

海明码的生成:

已知:信息码为0010,求海明码码字。

解:由监督关系式知冗余码为:S4 S2 S1

冗余码与信息码合成的海明码是:S1 S2 0S4 010。

设S4= S2= S1=0,由监督关系式得

S4= a3+ a5+ a6+ a7=1

S2= a2+ a4+ a6+ a7=1

S1= a1+ a4+ a5+ a7=0

因此,海明码码字为:0101010

海明码的接收:

已知:接收码字为0101011(n= 7),求发送端的信息码。

解:(1)由海明码的监督关系式计算得S4 S2 S1= 111。

(2)由监督关系式可构造出错码位置关系如表1-2所示。

表1-2 海明码错码位置关系

img13

3)由S4 S2 S1= 011查表得知错码位置是a3。

4)纠错——对码字的a7位取反得正确码字:0101011。

5)把纠正后编码中的第1、2、4位冗余码删除,得到发送端的信息码:0010。