当前位置:蜗牛素材网>综合资讯>科技>正文

检错码和纠错码讲解 通信中数据发生错误接收方如何判决

人气:277 ℃/2023-12-02 10:19:27

在数字通信系统中,模拟信号将转变为数字序列。

这种位序列被称为"数据流",传输过程中某个比特可能就会发出错位,1个比特的错误也会导致数据输出的灾难性(重大)误差。

图1 传输的01比特流

几乎在所有的电子设备中,我们都会发现错误,所以我们使用差错检测校正技术来获得精确的输出。

常见的错误方式

数据在传输期间(从发射器到接收器)可能被损坏。它可能受到外部噪音或其他信道的影响。在这种情况下,输入数据与接收到的输出数据不相同。这种不匹配的数据被称为"错误"。

数据错误将导致重要/安全数据的丢失。即使是数据中的一点变化也可能影响整个系统的性能。通常,数字系统中的数据传输将以比特传输的形式进行,在这种情况下,数据错误可能在0和1上发生。

图2 通信传输过程

在数据序列中,如果1改为0或0更改为1,则称为"位错误"。在从发射机到接收机的数据传输中,通常会出现3种类型的误差,它们是:

  1. 单比特错误Single bit errors
  2. 多位错误Multiple bit errors
  3. 突发错误Burst errors
单比特错误Single bit errors

整个数据序列中一位比特的变化称为"单比特错误"。在串行通信系统中,单比特错误的发生概率相对较少。这种错误通常发生在并行通信系统中,由于数据在单线上以位的方式传输,每条单线上有可能产生噪声。

图3 单比特错误

多比特错误Multiple bit errors

如果发送器到接收机的两个或多个数据序列发生变化,则称为"多比特错误"。这种错误既发生在串行型数据通信网络中,也发生在并行型数据通信网络中。

图4 多个比特错误

突发错误Burst Errors

数据序列中比特集合的变化称为突发错误。计算突发误差,要从改变的第一位bit到最后一位改变的bit。

图5 突发的比特错误

在图5,第4位和第6位之间的数字也被认为是误差。这些位被称为"突发错误"。这些突发比特在发送器和接收机之间都会发生变化,这可能会导致数据序列中的一个重大错误。这类错误发生在串行通信中,很难解决。

差错检测码Error Detecting Codes

在数字通信系统中,误差随数据从一个通信系统传输到另一个通信系统。如果没有检测和纠正这些错误,传输的数据将会丢失。为了进行有效的通信,数据的传输应该是高度精确的,可以通过检测错误,然后再进行修正来实现。

差错检测是指在通信系统中,对从发射机发送到接收机的数据中存在的误差进行检测的过程。我们使用一些冗余码来检测这些错误,在从源(发送器)发送数据时增加数据。这些代码被称为"错误检测代码"。

差错检测编码有许多中,今天给大家介绍三种简单的,也是经典的三种:

  • 奇偶校验Parity Checking
  • 循环冗余校验(CRC)
  • 纵向冗余校验(LRC)
Parity Checking

奇偶校验位是发送数据之前添加到发送器数据中的附加比特。

在添加奇偶校验位之前,计算数据中1或0的数目。然后,中添加一个额外的位。

图6 奇偶校验

在数据中添加奇偶校验位将导致数据字符串长度的变化。如果我们有一个7位数据,那么在向数据二进制字符串中添加一个奇偶校验位之后,它将变成一个8位二进制数据字符串。

奇偶校验也称为"垂直冗余检查(VRC)"。有两种类型的奇偶校验位,它们是

偶校验:

如果数据中1的个数为偶数,则奇偶校验位为0。例如:10000001>奇偶校验位0。

如果数据中1的个数为奇数,则奇偶校验位为1。例如:10010001>奇偶校验位1。

偶校验的作用就是:加上奇偶校验位后,1的个数均为偶数个。

奇校验:

如果数据中1的个数为奇数,则奇偶校验位为0。例:10011101->奇偶校验位0。

如果数据中1的个数为偶数,则奇偶校验位为1。例:10010101->奇偶校验位1。

奇校验的作用就是:加上奇偶校验位后,1的个数均为奇数个。

将奇偶校验比特添加到发射机数据的电路称为"奇偶发生器"。奇偶校验比特被发送并在接收器处被检查。如果发射机处发送的奇偶校验比特与接收端接收的奇偶校验比特不相等,则检测错误。在接收端检测奇偶校验的电路称为"奇偶校验器"。

图7 奇偶校验举例

Cyclic Redundancy Check (CRC)

循环冗余校验(CRC)也是多项式编码Polynomial Code

多项式编码的思想是:将位串看成是系数为0或1的多项式。CRC校验保护的单位是数据块。数据块的大小根据实际情况而定。每一个数据块均被看作是一个二进制多项式,即所有系数均为二进制(即1或0)的多项式。

当使用多项式编码时,发送方和接收方必须预先商定一个生成多项式(Generator Polynomial)G(x)。生成多项式的最高位和最低位必须为1。

从性能上和开销上考虑,CRC均远远优于奇偶校验及算术和校验等方式。因而,在数据存储和数据通讯领域,CRC无处不再:WinRAR,通用的图像存储格式GIF、TIFF都用CRC作为检错手段。

将待发送的位串看成系数为0或1的多项式

收发双方约定一个生成多项式G(x),其最高阶和最低阶系数必须为1.

发送方用位串及G(x)进行某种运算得到校验码,并在帧的膜外加上校验码,使带校验码的帧的多项式能被G(x)整除。

接收方收到信息后,用G(x)除多项式,若有余数,则传输有错。

图8 CRC生成的过程

举一个栗子,见图8

发送数据1001。

生成多项式G(x)=x^3 x 1,4个比特bits。

将要发送的数据系列左移3位,新的序列为1001000。

按模2算法,将生成的新序列除以生成多项式。

将余数多项式比特序列加到新的序列中即得发送端传送序列。

接收方可以直接用接收到的序列除以生成多项式G(x),如果余数R(x)=0,则正面传输正确。

Longitudinal Redundancy Check

纵向冗余校验(法);

在纵向冗余方法中,以表格格式(行和列)排列一些比特块,然后分别计算每列的奇偶校验位。这些奇偶校验位的集合就是这些比特块的校验码。

纵向冗余校验是一种逐位奇偶校验,因为我们单独计算每一列的奇偶校验。

该方法可以很容易地检测出突发错误和单比特错误,但不能检测出在同一垂直切片中发生的2位错误。

图9 LRC生成过程

总结

好了,三种差错检测编码介绍完了,下一步就是纠正错误的编码了。先检测,后纠正。

纠错码(error correcting code),在传输过程中发生错误后能在收端自行发现或纠正的码。仅用来发现错误的码一般常称为检错码。

纠错码也有很多种,比如说经典的分组码(Hamming Code),卷积码等。

分组码和卷积码不但可以用来纠正独立错误,而且可以用来恢复删除错误和纠正突发错误。如 分组码中有里德-索洛蒙码,法尔码等;卷积码中有岩垂码及扩散卷积码等。

由于篇幅有限,如果同学们感兴趣,可以自行学习哦。班长会在后期详细下介绍纠错码。

看到这里,为班长点个赞吧!欢迎在评论区留言讨论!

搜索更多有关“检错码和纠错码讲解 通信中数据发生错误接收方如何判决”的信息 [百度搜索] [SoGou搜索] [头条搜索] [360搜索]
本网站部分内容、图文来自于网络,如有侵犯您的合法权益,请及时与我们联系,我们将第一时间安排核实及删除!
CopyRight © 2008-2024 蜗牛素材网 All Rights Reserved. 手机版