3.5 差错控制技术

3.5 差错控制技术

我们知道由于用来传送信号的实际通信信道本身会存在传输特性等方面的局限再加上客观上有可能存在的外在环境的干扰对数据通信系统有可能存在传输的差错,所以说如何有效的检测到收到的数据中是否存在传输差错,如果出现了差错又如何能够从中恢复出正确的数据呢,这就是我们将要学习的差错控制技术需要解决的关键问题,在这里我们将要重点学习差错控制的原理包括什么是传输差错、差错控制的目的是什么、差错的分类以及差错产生的原因、差错控制的基本思想和方法,其次还要了解四种常见的差错控制方式,最后我们通过两种典型的差错控制编码具体的编码方法深入理解差错控制的本质思想。

3.5.1 差错控制原理
一、传输差错

传输差错是指通信接收端收到的数据和发送端发送的数据不一致的情况,如从物理端发送了0110的4个bit数据,接收端根据收到的信号电平值判断出收到的是0100,那么就是出现了一个比特的差错,对应的对于数据链路层来说收到的帧和发送的帧不一致,也就是出现了错帧,同样对于网络层来说可能会出现分组的差错,在通信过程中出现差错的原因有很多,但从传输的层面来看,由于数据通信系统本身传输特性的不理想和外部干扰的存在,如不同的传输媒介对应的不同频谱特性如果信号的带宽超出了信道的频带宽度或者数字信号的速率超出了信道的传输能力造成发送的矩形信号而接收端接收到的信号出现了变形失真造成码元的错误判决从而引起传输差错,特别是对于无线信道的传输更加复杂,不仅容易受到外界电磁信号的干扰,还会在电磁波传播过程遇到的散射、反射等现象导致信号波形失真,从而引起传输差错。

二、差错控制的目的

虽然说经过几十年的发展传输质量已经大大提高,特别是之前我们提到的光纤的大范围的铺设,但传输中出现差错是不可避免的,因此在我们设计通信系统时仍要考虑对传输差错进行控制,寻求有效的方法来发现并且纠正差错,从而提高传输的质量。所以差错控制主要涉及两方面的问题。

  1. 如何检测出错误
  2. 发现错误后如何进行纠正

差错控制的目的是采取有效的措施来发现和纠正差错,以提高数据传输的质量。

三、差错的分类及原因

一般来说传输差错可以分为两类

  1. 随机差错,随机差错的呈现形式是发生错误的位置随机且独立,随机差错一般是由传输信道内在的热噪声所引起的
  2. 突发差错,是指一串串甚至是成批的出现差错,引起突发差错的主要原因如脉冲噪声,雷电、开关等引起的瞬间电信号的变化等。
四、差错控制的基本思想

我们如何来控制差错呢?我们通过一个简单的额例子来引出我们采用的差错控制的思想,假设在一个公司的内部领导下发一个会议通知,内容是14点到16点开会,这里我们从会议通知发出后到员工收到通知前这个过程看作是经过了传输信道,信道噪声导致通知被传送到员工那里时变成了10点到16点开会,显然会议的时间出现了错误,但对所有的员工而言无法检测出差错,即使他们觉得会议的持续时间让他们难以忍受,这种传输方式没有包含任何的差错控制措施即使发生差错也检测不到更不用提纠正插错了,但是如果领导下发通知的时候多写两个字“下午14:00-16:00开会”加一些在我们看来多余的信息情况会有什么改变呢?同样经过噪声信道出现了差错,变成了“下午10:00-16:00开会”那员工收到通知以后一眼就能识别出通知有问题,明显的有矛盾,可以肯定通知是由差错的,那至于说正确的通知是什么,确切的开会时间是下午的哪个时间段呢?从出错的通知上显然无法辨别,也无法进行纠正,当然员工可以通过与领导进一步核实来纠正差错,所以说通过多加了看似冗余的“下午”两个字就可以达到简单的差错检测的目的,但是没有纠错的能力,那怎么才能既检测又能纠错呢?我们还需要多加一些冗余信息,如把通知改为“下午14:00-16:00开会两小时”明确指明会议时长,这样即使经过又噪声信道的传输会议通知变成了“下午10:00-16:00开会两小时”此时员工不仅能够发现错误,还能根据会议时间2小时这样一个冗余信息,将出错的信息纠正为14点到16点,显然通过加入更多的冗余信息不仅能够检测出错误,还能纠正错误。通过这个实例是要告诉我们在通信系统中要想达到差错控制的目的,仅仅传送原始数据本身是远远不够的。因此就有了差错控制的基本思想。

差错控制的基本思想

  • 在通信信道中所传输的数据码元是独立、随机的没有什么关联,单纯从数据接收序列中接收方无法判断所接受的码元是否存在差错。这就像示例中“14:00到16:00开会”一样起始时间、结束时间、开会三者之间没有任何的联系,任何一个信息出错都无法从其他信息中发现所以说为了能够进行差错控制还需要加入一些冗余信息。
  • 在发送的数据码元序列中加入监督位,并进行某种变换,使他们和原来相互独立的数据码元之间具有某种约束关系,这种约束关系是能够检测甚至纠正差错的。如示例中加入了“下午”这个冗余信息就能够检测到差错,再加入“两小时”就能实现纠错。在这里“下午”和“两小时”就是所谓的监督位。他们和原始的通知之间构成了一定的约束关系,设计合理有效的约束关系正是差错控制技术的关键。
  • 由于这些监督位对于表达信息是“冗余”的,差错控制在一定程度上会降低信息的传输效率。由于通过引入冗余信息来实现差错控制这在一定程度上会降低信道的传输效率。

引入监督位以后接收端如何进行差错检测呢?接收端只需要检测接收到的数据码元和监督码元的约束关系,如果发现这种约束关系被破坏了,就说明接收端接收到的是出错的数据。如果说冗余信息足够多的情况下接收端还可以利用约束关系来进行差错的纠正。如果这种约束关系依旧存在没有被破坏就可以认为没有差错,但我们要注意的是任何一种差错控制方法的检错和纠错的能力都是有限的往往会存在着差错未被检测出的可能性,在后面我们学习具体的差错控制方法的时候就会有所体会。

3.5.2差错控制方式

我们已经学习了差错控制的基本原理,在实际的通信系统中除了要设计差错控制编码之外还需要一套合理有效的差错控制方式,常见的差错控制方式有四种

一、检错重发

检错重发,接收端检测到差错后设法通知发送端重发,如ARQ。这种差错控制方式在发送端对数据序列进行分组,对每一组数据独立的进行差错控制编码,接收端利用相应的解码算法对收到的每一组数据进行差错检测,一旦检测到差错以后就会设法通知发送端进行重发,这种方式往往基于反馈机制,需要解决的问题是发送方如何获知数据分组出错,如何解决数据分组丢失,或反馈信息丢失的情况,如数据链路层往往采用一种叫做ARQ的检错重传的方法,ARQ的全称是自动请求重传,这种方法是基于超时重传机制,每发送一个分组数据设置一个定时器,在超时时间内没有收到对方的确认就会启动重传。

二、前向纠错

前向纠错,接收端发现差错后,直接纠正错码。这种方式必须采用具有纠错能力的差错控制编码,接收端接收到数据之后如果检测到差错,直接根据编码规则确定错误的位置并自动纠正,前向纠错方式是不需要反馈信道的,特别适合于只能提供单向信道的场合,而且不需要重传,延时小,实时性相对较好,但为了实现纠错,我们差错编码时需要引入更多的冗余信息,所以传输效率较低且编解码器较复杂。因此在过去单独使用这种控制方式的不是很多,但随着编码理论和微电子技术的发展,译码设备成本降低加之这种方式具有能够实现单向通信和控制电路简单的优点因而在实际应用中也是逐渐增多。

三、混合纠错检错

混合纠错检错,少量差错情况下自动自动纠正,否则自动请求重传。发送端发出同时具有检错和纠错能力的码,接收端收到码元之后检查错误的情况,如果错误小于纠错能力就自行纠正,如果干扰严重,错误很多超出纠错能力,但是能够检测出来就通过反向信道要求发送端重发,混合纠错检错方式在实时性和译码复杂性方面是前向纠错和检错重发方式的折中,因而近年来在数据通信系统中采用的较多。

四、信息反馈

信息反馈,接收端把收到的数据全部转发给发送端供发送端比较。这种想法比较简单就是接收端把收到的数据序列全部由反向信道送回给发送端,发送端比较发送的数据序列与送回的数据序列,从而发现是否有错误,并把认为错误的数据序列的原始数据再次发送,直到发送端没有发现错误为止。这种方式的优点是不需要纠错检错的编译码,设备比较简单,缺点是需要和前向信道相同的反向信道,实时性较差,此外发送端也需要一定容量的存储器用于存储发送的码组,因而仅仅适合于传输速率较低,信道数据差错率较低且具有双向传输线路及控制简单的系统中。

在我们的实际中到底采用那种差错控制方式比较合适呢?这就应该根据我们的实际情况合理的选用。在现代通信系统中由于光线的大量使用使得传输介质的传输质量大大提高,误码率很低,所以大多采用的是检错重发的差错控制方式。

3.5.4 差错控制编码

我们已经学习了差错控制的四种方式,下面我们要学习差错控制编码,根据纠检错能力,差错控制编码可以分为检错码、纠错码

一、检错码

检错码仅仅具备检测差错的能力,实际应用的检错码有很多,包括奇偶检验码、循环冗余码等,其中奇偶校验码编码很简单,检错能力有限,但是应用很广泛,如应用于串行通信、硬盘校验等。循环冗余码检错能力强,主要应用在数据链路层传输,如在广泛使用的以太网中数据帧内就采用循环冗余码来进行差错检测,下一章我们就会介绍以太网的相关知识。

  1. 奇偶校验码:我们知道奇偶校验码属于检错码仅仅具有检测差错的能力

    • 编码规则:对于一维的奇偶校验码,所传数据后面附加一位监督位,使得数据位和监督位中总共包含奇数个或者偶数个“1”。

      例如:在串行通信中要传输的比特序列是1011001一共七位包含了四个1

      奇校验方式:10110011,奇数个“1”,为了保证加入校验位以后总共包含奇数个“1”,所以校验位也必须为“1”,如此以来构造的完整的奇校验编码就是10110011。

      偶校验方式:10110010,偶数个“1”,为了确保偶数个“1”,校验位必须为“0”,从而形成偶校验编码是10110010。

    • 性质:编码规则简单也决定了奇偶校验码的检错能力是很有限的,可以检测出所有的1位或奇数位错,但无法确定错码的位置。无法检测出偶数个错,也就是说如果数据中如果两位同时出错,并不会改变原来数据中包含的1的数量到底是奇数还是偶数,也就不能检测出错误。当然为了提高检错能力有些系统会采用二维奇偶校验码,也就是在每一行和每一列上都引入了奇偶校验位。

  2. 循环冗余码:简称CRC这种编码在以太网中广泛使用,用来检测数据帧的完整性。

    • 特性:

      1. 线性分组,循环冗余码(CRC)是一种特殊的线性分组码。线性码是指信息位和监督位满足一组线性方程的编码,分组码是指监督位仅仅监督本码组中的信息位,与其他位的码组没有关系。

      2. 循环性,在这个名称中循环二字反映了这种编码具有循环的特性,循环冗余码各码组中的码元循环左移(或右移)若干次,最左端移到最右端,所形成的码组仍然是一个许用码组(全零码组除外),右移亦是如此,称为循环。

      3. 检错能力,循环冗余码具有较高的检错能力对应编解码器不太复杂,这也是他得以广泛应用的原因。

    • 编码规则:如果给定原始数据信息,如何实现CRC编码呢?这里我们就介绍一下CRC编码的编码规则,在学习具体的编码规则之前我们必须学习码多项式的概念,为了便于描述算法的理论,这里使用码多项式来标识比特序列

      • 举个例子:假设一串比特10110110一共是8位,如果用码多项式表示,就是 X 7 + X 5 + X 4 + X 2 + X 1 X^7+X^5+X^4+X^2+X^1 X7+X5+X4+X2+X1每一项的系数为1,这里的X并不代表自变量,幂次代表比特所在的位置,如果完整表示就应该是: 1 ∗ X 7 + 0 ∗ X 6 + 1 ∗ X 5 + 1 ∗ X 4 + 0 ∗ X 3 + 1 ∗ X 2 + 1 ∗ X 1 + 0 ∗ X 0 1*X^7+0*X^6+1*X^5+1*X^4+0*X^3+1*X^2+1*X^1+0*X^0 1X7+0X6+1X5+1X4+0X3+1X2+1X1+0X0,在这里我们一定要熟悉这种表示方法。

      • 例:假设M(x)是待发送信息位对应码多项式,长度为K位,监督位长度为r位,生成多项式是G(x)。对于CRC编码而言生成多项式是一个非常特殊的码多项式,它的最高次幂是r,之所以叫做生成多项式,因为所有有效的循环冗余码都是由他来产生的,换句话说就是一旦选择好生成多样式,所有有效的循环码组都被确定下来了。

      • 具体的编码方法:将信息位左移r位(用码多项式表示就是 X r ∗ M ( x ) X^r*M(x) XrM(x)),模2除生成多项式G(x),这是多项式运算,实际上我们可以直接用二进制序列进行模2除,得到余式R(x)或者是余数序列该余数序列就是我们所要求的监督位,然后将左移以后的M(x)和R(x)进行模2加,就可以得到发送方的循环码多项式T(x),换句话说就是将原始的信息位和余数序列组合在一起,就构成了发送方实际要发送的完整的数据序列,这里需要注意的是模2加和模2减其实是一回事,都对应着异或运算。那到底什么事模2除呢?下面我们看例题

      • 例:一个报文的比特序列为1101011011,通过数据链路传输,采用CRC进行差错检测,如所用的生成多项式为 G ( x ) = X 4 + X + 1 G(x)=X^4+X+1 G(x)=X4+X+1,试计算对应的CRC码,并说明实际发送的数据序列是什么?

        解答:

        1. 已知 数据比特序列M(x) 1101011011 (k=10) # 为了让他具有检错侧能力,采用了循环冗余编码得到监督位

        2. 生成多样式对应比特序列(因为最高次幂是4次,所以说监督位的长度r=4,也就是说我们最后得到的余数也是4位) 10011 (r=4)

        3. 采用模2除法计算监督位:(根据编码规则将原始的数据比特序列先左移4位,在右侧补0,再模2除生成的比特序列1011,最后得到的4位余数就是我们所要求的监督位,首先我们写好除法算式,这里要注意的是被除数是11010110110000,在这里很多人忘记补零,尤其注意生成多样式的最高次幂是多少就补几个零,除数就是生成多样式对应的码组10011 11010110110000 10011 = 1110 \frac{11010110110000}{10011}=1110 1001111010110110000=1110在这里插入图片描述

          模二减:模二减和模二加是一样的,就是把上下两位的和第二取余数,如0和1的和是1,与2相除以后余数为1,也就是二者模二加的结果为1,同理1和1的模二加的结果为0。
          模二除:因为是按位运算,所以在商的位置上要么是1要么是0,什么时候商为1呢,按照例题所示,因为除数是五位,被除数从左向右数五位,在第五位的上面写上商为1,在算式的第一行写上10011,接下来要按位计算计算11010和10011模二减的结果是01001,最左边的0是省略的,这样才能越除位数越短,接下来把被除数的1拉下来,现在五位够位以后商仍然是1,和刚才一样进行模二加或者模二减运算,结果为00000,接着把被除数的下五位拉下来,前4为不够除所以商都是0,最后一位商是1,这样就需要计算10110和10011的模二加得到00101,前面的0省去,再把被除数拉下两位,得到10100,依次写上商为01,再来计算10100和10011的模二加运算得到00111,前面0省去,得到111,此时被除数还有一个0需要拉下来,余数1110除不尽除数10011,,商为0,得到余数为1110,这就是我们要求的监督位。
          
        4. 计算发送序列:有了监督位1110,发送端实际要发送的完整的比特序列就是11010110111110,也就是直接将监督位加在信息为后面。

      • 因此我们得到发送方的循环码多项式: T ( x ) = X r M ( x ) − R ( x ) T(x)=X^rM(x)-R(x) T(x)=XrM(x)R(x)

    • 检错规则:接收端将收到的整个数据序列T(x)模二除生成多样式G(x),判断是否有错,如果余数为零代表无差错,余数不为零则有差错。

      • 例:如果接收端收到的帧对应的序列为10110110111110,其生成多样式为 G ( x ) = X 4 + X + 1 G(x)=X^4+X+1 G(x)=X4+X+1,请验证其是否出错。
    • 注意:循环冗余码只具有检错的功能,不具有纠错的功能

      • 仅用CRC检测差错,只能做到无差错接受。任何差错控制方法的检错或纠错能力都是有限的,都有可能出现存在差错但是检测不出来的情形,同样对于循环冗余码也是一样,所以说如果使用循环冗余码进行差错控制,只要检测结果显示无差错,系统就会认可这个结果,虽然说有可能是存在差错的。
      • “无差错接受”是指“凡是接受的帧(即不包括丢弃的帧),我们都能以非常接近于1的概率认为这些帧在传输过程中没有产生差错。”因为那些检测出来有错的帧都被丢弃了。
      • 在实际的通信系统中要想做到“可靠传输”(即发送什么就收到什么)仅仅依靠检错码是不够的,就必须再加上确认和重传机制。

    这里我们主要通过差错控制的基本原理,差错控制的方法、差错控制编码三个方面学习了差错控制技术,在这里我们要理解差错控制原理,掌握奇偶校验码和循环冗余码,在这里要对发送端编码过程以及接收端检错的过程都能掌握。在后面我们还会学习到通信协议中所采用到的其他的差错控制编码。

二、纠错码

纠错码具备纠错能力,典型的代表是汉明码,有的地方又翻译为海明码,编码规则并不复杂,采用的约束关系是异或运算(这里不做介绍)

通过本章的学习我们学习了数据、信息、信号的概念,学习了通信速率、带宽、时延、信道容量的定义和计算,了解了常用的传输介质,学习了常用的几种多路复用技术和数据交换技术,最后我们又学习了差错控制技术。下面我们就要进入局域网原理与技术的学习。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值