首页 > 编程笔记 > TCP/IP笔记 阅读:32

差错控制技术,差错控制的三种方式(非常详细)

正如邮局的信件在投递过程中会产生一些错误投递一样,数据在传输过程中也会产生差错,那么为什么会产生差错呢?如何进行差错控制呢?

差错的产生

所谓差错,就是指在数据通信中,接收端接收到的数据与发送端实际发出的数据出现不一致。

差错的产生是无法避免的,信号在物理信道中传输时,线路本身的电气特性造成的随机噪声、信号幅度的衰减、频率和相位的畸变、电气信号在线路上产生反射造成的回音效应、相邻线路间的干扰以及各种外界因素(如大气中的闪电、开关的跳火、外界强电磁流磁场的变化、电源的波动等)等,都会造成信号的失真。

而数据传输过程中出现的位丢失,如发出的数据位为“0”,而接收到的数据位为“1”,或发出的数据位为“1”,而接收到的数据位为“0”,也会产生差错,如下图所示。


图 1 差错的产生

差错是由噪声引起的。根据差错产生原因的不同可把噪声分为两类,分别是热噪声和冲击噪声:

差错控制编码

为了保证通信系统的传输质量,降低误码率,必须采取差错控制措施,即差错控制编码。

数据信息在向信道发送之前,先按照某种关系附加上一定的冗余位,构成一个完整码字再发送,这个过程称为差错控制编码过程;接收端收到该码字后,检查信息和附加的冗余位之间的关系,以判定传输过程中是否有差错产生,这个过程称为检错过程;如果发现错误,则及时采取措施,纠正错误,这个过程称为纠错过程。

因此,差错控制编码可分为检错码和纠错码两类:

1) 奇偶校验码

奇偶校验码是一种简单的检错码。其校验方式如下:在原数据位后附加校验位(冗余位),根据附加后的整个数据码中的“1”的个数为奇数或偶数,分别叫作奇校验码或偶校验码。奇偶校验有水平奇偶校验、垂直奇偶校验、水平垂直奇偶校验和斜奇偶校验。

例如,字符 A 的美国信息交换标准代码(American Standard Code for Information Interchange,ASCII)为 1000001,在其后面增加一位校验位进行奇校验,增加后为 10000011(使“1”的个数为奇数),传输时其中一位出错,如传输为 11000011,则奇校验能检查出错误。若传输有两位出错,如 11100011,则奇校验无法检查出错误。

在实际传输过程中,偶然一位出错的概率最大,因此这种简单的校验方法还是很有用处的。但这种方法只能检测错误,不能纠正错误,也不能检测出错在哪一位,故一般只用于对通信要求较低的情况。

2) 循环冗余校验码

循环冗余校验(Cyclic Redundancy Check,CRC)先将要发送的信息数据与通信双方共同约定的数据进行除法运算,根据余数得出一个校验码,再将这个校验码附加在信息数据帧之后发送出去。

接收端在接收到数据后,将包括校验码的数据帧与约定的数据进行除法运算,若余数为“0”,则表示接收的数据正确;若余数不为“0”,则表示数据在传输的过程中出现了错误。循环冗余校验码的数据传输过程如下图所示。


图 2 循环冗余校验码的数据传输过程

差错控制方法

当没有差错控制时,信源输出的数字(也称符号或码元)序列将直接送往信道。由于信道中存在干扰,信道的输出将产生差错。数字在传输中产生差错的概率(误码率)是衡量传输准确性的一个主要指标。在数字通信中信道给定以后,如果误码率不能满足要求,则要采取差错控制。

按具体实现方法的不同,差错控制方法可以分为前向纠错方法、反馈重发检错方法和混合法 3 种。

1) 前向纠错方法

前向纠错(Forward Error Correction,FEC)方法中,接收端不仅对数据进行检测,当检测出差错后还能利用编码的方法自动纠正差错,其原理如下图所示。前向纠错方法必须使用纠错码。


图 3 前向纠错方法原理

差错控制系统包含纠错码编码器和纠错码译码器。从信源输出的数字序列在信道编码器中被编码,然后送往信道。由于纠错码编码器使用了纠错码,因此纠错码译码器可以纠正传输中带来的大部分差错,从而使信宿得到比较正确的序列。

在接收端检测到接收码元差错后,通过一定的运算,确定差错的具体位置,并自动加以纠正,称为自动纠错,自动纠错是提高信道利用率的一种有效手段。信息论中的信道编码理论是研究对给定信道的前向纠错能力的极限,而纠错编码理论是研究用于前向纠错的纠错码的具体编译方法。

传统的纠错编码理论认为,为了使一种码具有纠错能力,必须对原码字增加多余的码元以扩大码字间的差别(称为码距离)。一般认为发送时因纠错所增加的多余码元将引起占用带宽的增加而减少单位带宽的传信率。组合编码调制理论把调制与纠错编码综合起来考虑,通过扩大调制信号集合而在不增加所需信道带宽的条件下提高编码调制系统的纠错能力。前向纠错方法已被广泛用于卫星通信、移动通信和频带数据传输之中。

2) 反馈重发检错方法

反馈重发检错方法又称自动请求重发(Automatic Repeat Quest,ARQ),指利用编码的方法在接收端检测差错。当检测出差错后,设法通知发送端重新发送数据,直到无差错为止,其原理如下图所示。反馈重发检错方法只使用检错码。


图 4 反馈重发检错方法原理

反馈重发检错方法利用检错码发现传输中带来的差错,同时在发现差错以后通过反馈信道通知发送端重新传输相应的一组数据,以此来提高传输的准确性。

根据重发控制方法的不同,反馈重发方法还可以分成若干种实现方式。其中最简单的一种为等待重传方式。采用这种方式时,发送端每发送出一组数据就停下来等待接收端的回答。此时,检错码译码器如未发现差错,则通过接收端重发控制器和反馈信道向发送端发出表示正确的回答。发送端收到后通过发送端重发控制器控制信源传输下一组数据,否则信源会重新传输原先那组数据。

3) 混合法

在信道干扰较大时,单用反馈重发检错方法会因不断重传而使消息的传输速率下降过多,而仅用前向纠错方法又不能保证足够的准确性,此时两者兼用比较有利,这就是混合法。

此法所用的信道编码是一种既能发现大部分差错又能纠正部分差错的编码。信道译码器会纠正那些可以纠正的差错,只有对那些能发现但不能纠正的差错才要求重传,能够大大减少重传的次数。同时,由于编码的检错能力很强,最后得到的数字信息的准确性是比较高的。

相关文章