Chinaunix首页 | 论坛 | 博客
  • 博客访问: 252654
  • 博文数量: 58
  • 博客积分: 2241
  • 博客等级: 大尉
  • 技术积分: 522
  • 用 户 组: 普通用户
  • 注册时间: 2009-08-07 09:53
文章分类
文章存档

2012年(4)

2011年(19)

2010年(31)

2009年(4)

分类:

2009-12-24 14:22:44

第2章 计算机网络基础知识

2.5 差错控制方法

 
2.5.1 差错的产生原因及其控制方法

  差错控制在数据通信过程中能发现或纠正差错,把差错限制在尽可能小的允许范围内的技术和方法。
  信号在物理信道中传输时,线路本身电器特性造成的随机噪声、信号幅度的衰减、频率和相位的畸变、电器信号在线路上产生反射造成的回音效应、相邻线路间 的串扰以及各种外界因素(如大气中的闪电、开关的跳火、外界强电流磁场的变化、电源的波动等)都会造成信号的失真。在数据通信中,将会使接受端收到的二进 制数位和发送端实际发送的二进制数位不一致,从而造成由“0”变成“1”或由“1”变成“0”的差错。

 1.热噪声和冲击噪声
  传输中的差错都是由噪声引起的。噪声有两大类,一类是信道固有的、持续存在的随机热噪声;另一类是由外界特定的短暂原因所造成的冲击噪声。
  热噪声引起的差错称为随机差错所引起的某位码元的差错是孤立的,与前后码元没有关系。它导致的随机错通常较少。
  冲击噪声呈突发状,由其引起的差错称为突发错。冲击噪声幅度可能相当大,无法靠提高幅度来避免冲击噪声造成的差错,它是传输中产生差错的主要原因。冲击噪声虽然持续时间较短,但在一定的数据速率条件下,仍然会影响到一串码元。

 2.差错的控制方法
  最常用的差错控制方法是差错控制编码。数据信息位在向信道发送之前,先按照某种关系附加上一定的冗余位,构成一个码字后再发送,这个过程称为差错控制 编码过程。接收端收到该码字后,检查信息位和附加的冗余位之间的关系,以检查传输过程中是否有差错发生,这个过程称为检验过程。
  差错控制编码可分为检错码和纠错码。
  ①检错码--能自动发现差错的编码;
  ②纠错码--不仅能发现差错而且能自动纠正差错的编码。
  差错控制方法分两类,一类是自动请求重发ARQ,另一类是前向纠错FEC。
  在ARQ方式中,当接收端发现差错时,就设法通知发送端重发,直到收到正确的码字为止。ARQ方式只使用检错码。
  在FEC方式中,接收端不但能发现差错,而且能确定二进制码元发生错误的位置,从而加以纠正。FEC方式必须使用纠错码。

 3.编码效率
  衡量编码性能好坏的一个重要参数是编码效率R,它是码字中信息位所占的比例。编码效率越高,即R越大,信道中用来传送信息码元的有效利用率就越高。编码效率计算公式为:
            R=k/n=k/(k+r)
  式中 k为码字中的信息位位数
     r为编码时外加冗余位位数
     n为编码后的码字长度

 
2.5.2 奇偶校验码

  奇偶校验码是一种通过增加冗余位使得码字中“1”的个数为奇数或偶数的编码方法,它是一种检错码。

 1.垂直奇偶校验的特点及编码规则

发送顺序







I11 I12 ... I1q







I21 I22 ... I2q

......

Ip1 Ip2 ... Ipq

rr2  ... rq

冗余位

  1)编码规则:
  偶校验:ri=I1i+I2i+...+Ipi (i=1,2,...,q)
  奇校验:ri=I1i+I2i+...+Ipi+1(i=1,2,...,q)
  式中 p为码字的定长位数
     q为码字的个数
  垂直奇偶校验的编码效率为R=p/(p+1)。

  2)特点:垂直奇偶校验又称纵向奇偶校验,它能检测出每列中所有奇数个错,但检测不出偶数个的错。因而对差错的漏检率接近1/2。

位\数字 0 1 2 3 4 5 6 7 8 9
C1 0 1 0 1 0 1 0 1 0 1
C2 0 0 1 1 0 0 1 1 0 0
C3 0 0 0 0 1 1 1 1 0 0
C4 0 0 0 0 0 0 0 0 1 1
C5 1 1 1 1 1 1 1 1 1 1
C6 1 1 1 1 1 1 1 1 1 1
C7 0 0 0 0 0 0 0 0 0 0
C0 0 1 1 0 1 0 0 1 1 0
1 0 0 1 0 1 1 0 0 1

 2.水平奇偶校验的特点及编码规则
  1)编码规则:

发送顺序









I11 I12 ... I1q

r1
r2
....
rp



I21 I22 ... I2q

......

Ip1 Ip2 ... Ipq

└──────┘

 ↑
信息位 冗余位

  偶校验:ri=Ii1+Ii2+...+Iiq (i=1,2,...,p)
  奇校验:ri=Ii1+Ii2+...+Iiq+1(i=1,2,...,p)
  式中 p为码字的定长位数
     q为码字的个数
  水平奇偶校验的编码效率为R=q/(q+1)。

  2)特点:水平奇偶校验又称横向奇偶校验,它不但能检测出各段同一位上的奇数个错,而且还能检测出突发长度<=p的所有突发错误。其漏检率要比垂直奇偶校验方法低,但实现水平奇偶校验时,一定要使用数据缓冲器。

位\数字 0 1 2 3 4 5 6 7 8 9 偶校验
C1 0 1 0 1 0 1 0 1 0 1 1
C2 0 0 1 1 0 0 1 1 0 0 0
C3 0 0 0 0 1 1 1 1 0 0 0
C4 0 0 0 0 0 0 0 0 1 1 0
C5 1 1 1 1 1 1 1 1 1 1 1
C6 1 1 1 1 1 1 1 1 1 1 1
C7 0 0 0 0 0 0 0 0 0 0 0

 3.水平垂直奇偶校验的特点及编码规则
  1)编码规则:

发送顺序







I11 I12 ... I1q

r1,q+1

I21 I22 ... I2q r2,q+1

......

...

Ip1

Ip2 ... Ipq rp,q+1

rp+1,1

rp+1,2 ... rp+1,q

rp+1,q+1

  若水平垂直都用偶校验,则         
      ri,q+1=Ii1+Ii2+...+Iiq (i=1,2,...,p)

      rp+1,j=I1j+I2j+...+Ipj (j=1,2,...,q)

      rp+1,q+1=rp+1,1+rp+1,2+...+rp+1,q

           =r1,q+1+r2,q+1+...+rp,q+1

  水平垂直奇偶校验的编码效率为R=pq/[(p+1)(q+1)]。

  2)特点:水平垂直奇偶校验又称纵横奇偶校验。它能检测出所有3位或3位以下的错误、奇数个错、大部分偶数个错以及突发长度<=p+1的突发 错。可使误码率降至原误码率的百分之一到万分之一。还可以用来纠正部分差错。有部分偶数个错不能测出。适用于中、低速传输系统和反馈重传系统。

位\数字 0 1 2 3 4 5 6 7 8 9

校验码字

C1 0 1 0 1 0 1 0 1 0 1 1
C2 0 0 1 1 0 0 1 1 0 0 0
C3 0 0 0 0 1 1 1 1 0 0 0
C4 0 0 0 0 0 0 0 0 1 1 0
C5 1 1 1 1 1 1 1 1 1 1 1
C6 1 1 1 1 1 1 1 1 1 1 1
C7 0 0 0 0 0 0 0 0 0 0 0
C8 0 1 1 0 1 0 0 1 1 0 1

 2.5.3 循环冗余码(CRC)
 1.CRC的工作方法
  在发送端产生一个循环冗余码,附加在信息位后面一起发送到接收端,接收端收到的信息按发送端形成循环冗余码同样的算法进行校验,若有错,需重发。
 2.循环冗余码的产生与码字正确性检验例子。
 例1.已知:信息码:110011 信息多项式:K(X)=X5+X4+X+1
      生成码:11001    生成多项式:G(X)=X4+X3+1(r=4)
    求:循环冗余码和码字。
  解:1)(X5+X4+X+1)*X4的积是 X9+X8+X5+X4 对应的码是1100110000。
    2)积/G(X)(按模二算法)。
    由计算结果知冗余码是1001,码字就是1100111001。

               1 0 0 0 0 1←Q(X)
  G(x)→1 1 0 0 1 )1 1 0 0 1 1 0 0 0 0←F(X)*Xr 
           1 1 0 0 1     
                1 0 0 0 0
                1 1 0 0 1
                 1 0 0 1←R(X)(冗余码)

 例2.已知:接收码字:1100111001 多项式:T(X)=X9+X8+X5+X4+X3+1
      生成码 :  
11001    生成多项式:G(X)=X4+X3+1(r=4)
    求:码字的正确性。若正确,则指出冗余码和信息码。
  解:1)用字码除以生成码,余
数为0,所以码字正确。

              1 0 0 0 0 1←Q(X)
 G(x)→1 1 0 0 1 )1 1 0 0 1 1 1 0 0 1←F(X)*Xr+R(x) 
          1 1 0 0 1     
               1 1 0 0 1
               1 1 0 0 1
                   0←S(X)(余数)

    2)因r=4,所以冗余码是:11001,信息码是:110011
    

 3.循环冗余码的工作原理
  循环冗余码CRC在发送端编码和接收端校验时,都可以利用事先约定的生成多项式G(X)来得到,K位要发送的信息位可对应于一个(k-1)次多项式 K(X),r位冗余位则对应于一个(r-1)次多项式R(X),由r位冗余位组成的n=k+r位码字则对应于一个(n-1)次多项式 T(X)=Xr*K(X)+R(X)。

 4.循环冗余校验码的特点
  1)可检测出所有奇数位错;
  2)可检测出所有双比特的错;
  3)可检测出所有小于、等于校验位长度的突发错。

 5.4种生成码(P44)

 
2.5.4 海明码

 1.海明码的概念

  海明码是一种可以纠正一位差错的编码。它是利用在信息位为k位,增加r位冗余位,构成一个n=k+r位的码字,然后用r个监督关系式产生的r个校正因子来区分无错在码字中的n个不同位置的一位错。它必需满足以下关系式:
         2r>=n+1  或  2r>=k+r+1
  海明码的编码效率为:
            R=k/(k+r)
  式中 k为信息位位数
     r为增加冗余位位数

 2.海明码的生成与接收

 方法一:(按教科书)

 1)海明码的生成。

 例1.已知:信息码为:"0010"。海明码的监督关系式为:
        S2=a2+a4+a5+a6
        S1=a1+a3+a5+a6
        S0=a0+a3+a4+a6
       

    求:海明码码字。

  解:1)由监督关系式知冗余码为a2a1a0
    2)冗余码与信息码合成的海明码是:"0010a2a1a0"。
     设S2=S1=S0=0,由监督关系式得:
        a2=a4+a5+a6=1
        a1=a3+a5+a6=0
        a0=a3+a4+a6=1
     
 因此,海明码码字为:"0010101"
    
 2)海明码的接收。

 例2.已知:海明码的监督关系式为:
        S2=a2+a4+a5+a6
        S1=a1+a3+a5+a6
        S0=a0+a3+a4+a6
      接收码字为:"0011101"(n=7)

    求:发送端的信息码。

  解:1)由海明码的监督关系式计算得S2S1S0=011。
    2)由监督关系式可构造出下面错码位置关系表:

S2S1S0 000 001 010 100 011 101 110 111
错码位置 无错 a0 a1 a2 a3 a4 a5 a6

    3)由S2S1S0=011查表得知错码位置是a3
    4)纠错--对码字的a3位取反得正确码字:"0 0 1 0 1 0 1"
    5)把冗余码a2a1a0删除得发送端的信息码:"0010"

 方法二:(不用查表,方便编程)

 1)海明码的生成(顺序生成法)。

 例3.已知:信息码为:" 1 1 0 0 1 1 0 0 " (k=8)
    求:海明码码字。
  解:1)把冗余码A、B、C、…,顺序插入信息码中,得海明码
      码字:" A B 1 C 1 0 0 D 1
1  0  0 "
       码位: 1 2 3 4 5 6 7 8 9
10 11 12  
     其中A,B,C,D分别插于2k位(k=0,1,2,3)。码位分别为1,2,4,8。
    2)冗余码A,B,C,D的线性码位是:(相当于监督关系式)
      A->1,3,5,7,9,11;
      B->2,3,6,7,10,11; 
      C->4,5,6,7,12;(注 5=4+1;6=4+2;7=4+2+1;12=8+4)
      D->8,9,10,11,12。
    3)把线性码位的值的偶校验作为冗余码的值(设冗余码初值为0):
      A=∑(0,1,1,0,1,0)=1
      B=∑(0,1,0,0,1,0)=0
      C=∑(0,1,0,0,0) =1
      D=∑(0,1,1,0,0) =0
    4)海明码为:"1 0 1 1 1 0 0 0 1 1 0 0"

 2)海明码的接收。

 例4.已知:接收的码字为:"1 0 0 1 1 0 0 0 1 1 0 0"(k=8)
    求:发送端的信息码。
  解:1)设错误累加器(err)初值=0
    2)求出冗余码的偶校验和,并按码位累加到err中:
      A=∑(1,0,1,0,1,0)=1 err=err+20=1
      B=∑(0,0,0,0,1,0)=1 err=err+21=3
      C=∑(1,1,0,0,0) =0 err=err+0
=3
      D=∑(0,1,1,0,0) =0 err=err+0
=3
     由err≠0可知接收码字有错,
    3)码字的错误位置就是错误累加器(err)的值3。
    4)纠错--对码字的第3位值取反得正确码字:
      "1 0 1 1 1 0 0 0 1 1 0 0"
    5)把位于2k位的冗余码删除得信息码:"1 1 0 0 1 1 0 0"

阅读(3142) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~