检测或纠正错误的核心概念是
冗余。为了能够检测或纠正错误,我们需要
用我们的数据发送一些额外的位。这些冗余位
由发送方添加,由接收方删除。他们的
存在允许接收器检测或纠正损坏的
位。包含额外信息的概念
用于错误检测的传输是一个很好的选择。但不是
重复整个数据流,一组较短的位
可以附加到每个单元的末尾。这种技术是
称为冗余,因为额外的位是冗余的
信息:一旦准确,它们就会被丢弃
的传输已确定。
图 8 显示了使用冗余位的过程
检查数据单元的准确性。一旦数据流有
生成后,它通过一个分析它的设备
并添加适当编码的冗余检查。这
数据单元,现在被多次点击放大,通过链路传输到接收器。接收器将整个流通过
一个检查功能。如果接收到的命中流通过
检查标准,数据单元的数据部分是
接受并丢弃冗余位。
循环冗余校验 (CRC)
最强大的冗余检查
技术是循环冗余校验(CRC)。
CRC 基于多项式算术,特别是基于计算
在 GF(2) 中除以一个多项式的余数(具有两个元素的伽罗瓦域)
由另一个。
与基于加法的奇偶校验不同。 CRC是基于
二进制除法。在 CRC 中,而不是添加位来实现
所需的奇偶校验,冗余位序列,称为 CRC
或 CRC 余数,附加到数据单元的末尾
这样得到的数据单元就可以完全被a整除
第二,预定的二进制数。在其目的地,
传入的数据单元除以相同的数字。如果此时
步骤没有剩余的数据单元被假定为
完好无损,因此被接受。余数表明
数据单元在运输过程中被损坏,因此
必须被拒绝。
CRC使用的冗余位是通过除法得出的
数据单元由一个预定的除数;剩下的是
CRC。为了有效,CRC 必须具有两个品质: 它必须
比除数少一位,并附加它
到数据字符串的末尾必须使结果位
序列完全可以被除数整除。
CRC错误的理论与应用
检测很简单。唯一的复杂性在于
导出 CRC。
CRC 的性能
CRC 是一种非常有效的错误检测方法。如果除数
根据前面提到的规则选择,
1.CRC可以检测所有影响奇数的突发错误
位。
2.CRC可以检测所有长度小于等于的突发错误
多项式的次数
3.CRC可以以非常高的概率检测突发错误
长度大于多项式的次数。
更正错误
纠错比检测更难。
在错误检测中,我们只查看是否有任何错误
已经发生了。答案很简单,是或否。我们不是
甚至对错误的数量感兴趣。单位错误是
对我们来说和突发错误一样。在纠错中,我们
需要知道损坏的确切位数
更重要的是,它们在消息中的位置。这
错误的数量和消息的大小是
重要因素。如果我们需要纠正一个错误
一个 8 位数据单元,我们需要考虑 8 个可能的错误
地点;如果我们需要纠正一个数据单元中的两个错误
同样大小,我们需要考虑28种可能性。你可以
想象一下接收者很难在数据中找到 10 个错误
单位为 1000 位。
计算冗余位数r需要
更正给定数量的数据位m。我们必须找到一个
m 和 r 之间的关系。带有m 位数据和r 位
添加到它们的冗余,结果的长度
代码是m + r。如果传输表中的总位数
单位是m + r。那么r 必须至少能够表明
m+r+1 不同的状态。其中,一种状态意味着没有错误,
和m + r 状态指示每个错误的位置
m + r 的位置。
所以m+r+1 状态必须可以被r bits: 和r 发现
位可以指示2^r 不同的状态。因此2^r 必须是
等于或大于m+r+1:
2^r=>m+r+1
例如,如果 m 的值为 7(如 7 位 ASCII
代码),可以满足这个方程的最小r值是
4:
2^4=>7+4+1
汉明码
Hamming 提供了一个实用的解决方案。汉明码
可以应用于任何长度的数据单元,并使用
讨论的数据和冗余位之间的关系
更多。例如,一个 7 位的 ASCII 码需要 4
可以在数据末尾添加 10 的冗余位
单元或穿插原始数据位。在图 17 中,
这些位被放置在位置 1、2、4 和 8(
2 次幂的 11 位序列中的位置。
有关信息和示例,请参阅此链接(以上所有信息均来自 1 个链接):
1,
2,
3.