错误检测

17 Mar 2025 | 5 分钟阅读

当数据从一个设备传输到另一个设备时,系统不保证接收到的数据与发送的数据是否相同。如果接收到的消息与发送的消息不一致,则发生错误。

错误的类型

Error Detection

错误可以分为两大类

  • 单比特错误
  • 突发错误

单比特错误

给定数据单元的唯一一个比特从1变为0或从0变为1。

Error Detection

在上图中,发送的消息被损坏为单比特,即0比特变为1比特。

单比特错误在串行数据传输中不太可能出现。例如,发送方以10 Mbps的速度发送数据,这意味着每个比特的持续时间仅为1 微秒,要发生单比特错误,噪声必须大于1 微秒。

单比特错误主要发生在并行数据传输中。例如,如果使用八根线来发送一个字节的八个比特,其中一根线有噪声,则每字节会损坏一个比特。

突发错误

两个或多个比特从0变为1或从1变为0称为突发错误。

突发错误的范围由第一个损坏的比特到最后一个损坏的比特确定。

Error Detection

突发错误中的噪声持续时间比单比特错误中的噪声持续时间长。

突发错误最有可能发生在串行数据传输中。

受影响的比特数量取决于噪声的持续时间和数据速率。


错误检测技术

最流行的错误检测技术是

  • 单奇偶校验
  • 二维奇偶校验
  • 校验和
  • 循环冗余校验

单奇偶校验

  • 单奇偶校验是一种简单的机制,检测错误成本低廉。
  • 在此技术中,一个冗余比特,也称为奇偶比特,被附加到数据单元的末尾,以便1的数量变为偶数。因此,传输的总比特数为9比特。
  • 如果1比特的数量为奇数,则附加奇偶比特1;如果1比特的数量为偶数,则在数据单元末尾附加奇偶比特0。
  • 在接收端,根据接收到的数据比特计算奇偶比特,并与接收到的奇偶比特进行比较。
  • 此技术将1的总数生成为偶数,因此称为偶奇偶校验。
Error Detection

单奇偶校验的缺点

  • 它只能检测单比特错误,而单比特错误非常罕见。
  • 如果两个比特发生交换,则它无法检测到错误。
Error Detection

二维奇偶校验

  • 通过使用二维奇偶校验可以提高性能,该校验将数据组织成表格形式。
  • 对每一行计算奇偶校验比特,这等同于单奇偶校验。
  • 在二维奇偶校验中,将一个比特块分成多行,并在整个块中添加冗余行。
  • 在接收端,将奇偶比特与从接收到的数据计算出的奇偶比特进行比较。
Error Detection

二维奇偶校验的缺点

  • 如果一个数据单元中的两个比特损坏,而另一个数据单元中相同位置的两个比特也损坏,则二维奇偶校验器将无法检测到错误。
  • 在某些情况下,此技术不能用于检测4位或更多的错误。

校验和

校验和(Checksum)是一种基于冗余概念的错误检测技术。

它分为两部分

校验和生成器

校验和在发送端生成。校验和生成器将数据细分为n比特的等段,并通过使用“1的补码”算术将所有这些段相加。将和取反并附加到原始数据上,称为校验和字段。然后将扩展后的数据传输到网络中。

假设L是数据段的总和,则校验和为?L

Error Detection

校验和校验器

校验和在接收端进行验证。接收方将接收到的数据细分为n比特的等段,并将所有这些段相加,然后对该和取反。如果和的补码为零,则接受数据,否则拒绝数据。

循环冗余校验(CRC)

CRC是一种用于确定错误的冗余错误技术。

CRC在错误检测中使用的步骤如下

  • 在CRC技术中,在数据单元末尾附加n个0,该n小于预定数量的比特,称为除数,其长度为n+1比特。
  • 其次,使用一种称为二进制除法的过程将新扩展的数据除以除数。此除法产生的余数称为CRC余数。
  • 第三,CRC余数替换原始数据末尾附加的0。然后将这个新生成的数据单元发送给接收方。
  • 接收方接收数据以及CRC余数。接收方将整个单元视为一个单元,并将其除以用于查找CRC余数的相同除数。

如果此除法的余数为零,则表示没有错误,数据被接受。

如果此除法的余数不为零,则表示数据存在错误。因此,数据被丢弃。

Error Detection

让我们通过一个例子来理解这个概念

假设原始数据是11100,除数是1001。

CRC生成器

  • CRC生成器使用模2除法。首先,在数据末尾附加三个零,因为除数的长度是4,而我们知道要附加的0的字符串的长度总是比除数短一个。
  • 现在,字符串变为11100000,并将结果字符串除以除数1001。
  • 二进制除法产生的余数称为CRC余数。生成的CRC余数值为111。
  • CRC余数替换了数据单元末尾附加的0字符串,最终字符串为11100111,并通过网络发送。
Error Detection

CRC校验器

  • CRC校验器的功能与CRC生成器类似。
  • 当接收端接收到字符串11100111时,CRC校验器执行模2除法。
  • 将字符串除以相同的除数,即1001。
  • 在这种情况下,CRC校验器产生的余数为零。因此,数据被接受。
Error Detection
下一主题#