在数字系统中,用于通信的传输数据可能由于外部噪声和任何其他物理故障而被破坏。如果传输的数据与给定的输入数据不匹配,则称为“错误”。数据错误可能会删除数字系统中的重要数据。在数字系统中,数据传输将以位(0和1)的形式进行。如果比特中的任何一个被更改,那么整个系统的性能都可能受到影响。如果将位“1”更改为位“0”,反之亦然,则称为位错误。存在不同类型的错误,如单个比特错误、多个错误和突发错误。在这篇文章中,我们讨论了错误校正和检测,以及hamming代码。


什么是错误检测和纠正?

在数字通信中,如果在从一个系统/网络到另一个系统或网络的信息传输中出现错误,则数据将丢失。因此,发现并纠正错误是很重要的。为了进行有效的通信,使用了一些错误检测和纠正方法来检测和纠正错误。如果使用这些方法,则可以以更高的精度传输数据。

错误检测被定义为,在数字系统中用于检测从发送器/发送器发送到接收器的错误的方法。在传输过程中,会将冗余代码添加到数据中,以查找错误。这些被称为错误检测代码。

纠错是对从发射机传输到接收机的数据进行校正。纠错可以分为两种类型。

向后纠错

在这种类型的纠错中,如果接收器检测到错误,则接收器请求发送器重新发送数据。

前向纠错

如果接收器接收到的数据发现错误,那么它执行纠错码,以自动纠正和恢复数据。

如果有“m”个数据位和“r”个冗余位,那么信息的组合将是2r。

2r>=m+r+1

错误检测代码的类型

可以通过使用3种类型的错误检测码来检测接收到的数据中的错误。它们是奇偶校验、循环冗余校验(CRC)和纵向冗余校验。

奇偶校验

在偶数奇偶校验或奇数奇偶校验的情况下,添加称为奇偶校验位的冗余位以使位数为偶数或奇数。接收器对一帧中的比特数(1)进行计数,以添加奇偶校验比特。这被称为奇偶校验。如果一帧中1的数量是偶数,则通过将位“1”与零值相加来使用偶数奇偶校验。类似地,如果1的数量是奇数,则通过将值为“1”的位相加来使用奇数奇偶校验。

ding="async" class="size-full wp-image-38403" src="https://uploads.9icnet.com/images/aritcle/20230518/error-detection.jpg" alt="Error-Detection" width="494" height="179" sizes="(max-width: 494px) 100vw, 494px">
错误检测

因此,它用于确保接收器从源接收的帧/日期不被破坏。在这种类型的错误检测中,1的数量应该在接收到的帧中是偶数。在所有类型的错误检测中,它的成本非常低。

纵向冗余检查(LRC)

当比特的集合/块被组织时,则LRC方法可以用于检查每个帧中的奇偶校验比特。它有助于将奇偶校验位集与原始数据一起发送,并检查冗余度。

循环冗余检查

他的类型用于检测从源接收的数据/帧是否有效。它涉及对应该发送的数据进行二进制除法,并使用多项式(生成除数)。在传输之前,发送器对数据/比特/帧执行除法运算以计算余数。

Cyclic-Redundancy-Check
循环冗余校验

在从发送方传输实际数据的过程中,它将剩余部分添加到实际数据的末尾。实际数据和余数的组合称为码字。数据是以码字的形式传输的。在这个过程中,如果数据被破坏,那么数据将被接收器拒绝,否则它将被接受。

什么是汉明密码?

汉明码被定义为,一种线性码,用于错误检测过程中,最高可达2个中间错误。它还能够检测单个比特错误。在这种方法中,发送器将冗余比特添加到数据/消息中,以对数据进行编码。为了进行错误检测和校正,这些冗余比特被添加到用于错误校正过程的特定位置。

Hamming-Code
汉明码

汉明码的历史

1950年,Richard W.hamming发明了hamming码来检测和纠正数据中的错误。在具有更高可靠性的计算机发展之后,他引入了hamming码作为1-纠错码,后来又扩展到2-检错码。由于奇偶校验无法检测和纠正数据中的错误,因此产生了汉明码。汉明码被插入到实际数据和冗余比特之间的任何数据块长度。他开发了一系列算法来解决纠错方法的问题,这些代码被广泛用于ECC存储器。

使用汉明码对消息进行编码的过程

发送者使用hamming码对消息进行编码的过程包括3个步骤。

第1步:第一步是计算消息中的冗余比特数

  • 例如,如果消息包含“n”个比特,并且向消息中添加了“p”个冗余比特,则“np”表示(n+p+1)个不同的状态。
  • 其中(n+p)表示每个比特位置中错误的位置
  • 1(额外状态)表示没有错误。
  • 由于“p”表示2^p(2p)态,等于(n+p+1)态。

第2步:将冗余位放置在准确/正确的位置

“p”比特被插入到2的幂的比特位置,如1、2、4、8、16等。这些比特位置被指示为p1(位置1)、p2(位置2)、p3(位置4)等。

步骤3:计算冗余位的值

  • 这里使用奇偶校验位来计算冗余位的值。
  • 奇偶校验位可以使消息中的1的数量为偶数或奇数。
  • 如果消息中1的总数为偶数,则使用偶数奇偶校验
  • 如果消息中1的总数是奇数,则使用奇数奇偶校验。

用汉明码解密消息的过程

接收器使用hamming码对从发送器接收到的消息进行解密的过程包括以下步骤。这个过程只不过是重新计算以检测和更正消息中的错误。

第1步:计算冗余位的数量

使用冗余比特对消息进行编码的公式是,

2p≥n+p+1

第2步:校正所有冗余位的位置

“p”个冗余比特被放置在2的幂的比特位置,如1,2,4,8,16,32等

第3步:奇偶校验(奇数奇偶校验和偶数奇偶校验)

奇偶校验位是基于数据位和冗余位中的1的数量来计算的。

例如

p1的奇偶校验为1、3、5、7、9、11,…

p2的奇偶性为2、3、6、7、10、11,…

p3的奇偶性为4-7、12-15、20-23,…

汉明码的优点

如果数据流包含单比特错误,则使用hamming码的主要优点是具有成本效益。

  • 它可以提供错误检测,并且还指示包含用于校正的错误的比特。
  • 汉明码非常简单,最好用于计算机内存和单比特纠错和检测。

汉明码的缺点

  • 它最好只用于单个比特的纠错和检测。如果多个比特出错,那么整个比特可能会被破坏。
  • 汉明码算法只能解决单个比特的错误。

汉明码的应用

汉明码被用于,

  • 计算机
  • 电信
  • 数据压缩
  • 解决谜题和turbo代码
  • 卫星
  • 等离子凸轮
  • 屏蔽电线
  • 调制解调器
  • 计算机内存
  • 打开连接器
  • 嵌入式系统和处理器

常见问题解答

1). 汉明码能检测2位错误吗?

汉明码可以检测和纠正数据流中多达2位的错误

2). 你是如何修复汉明密码的?

汉明码被放置在实际数据和冗余比特之间的任何长度的数据中。这些代码是最小距离为3位的位置

3). 奇偶校验码是什么?

奇偶校验码或奇偶校验位是将一个比特添加到接收的帧(数据包含1和0),以使比特总数(1)为偶数或奇数。

4). 数据之间的汉明距离是多少?

相等长度的两个不同数据流之间的汉明距离为1。

相等长度的两个数据串之间的hamming距离可以通过使用XOR运算来计算。

例如,a=11011001

b=10011101

汉明距离可以计算为,

11011001Ş10011101=01000100(1位的数量为2)

hamming距离表示结果数据流中1的数量

因此,d(1101100110011101)=2

类似地,010Ş011=001,d(010,011)=1。

5). 汉明码是循环的吗?

是的,hamming码相当于可以用作错误检测码的循环码。

因此,这一切都与纠错和检测、错误检测的类型、汉明码、使用汉明码加密和解密消息的过程、汉明代码的应用、汉明码的优点和缺点有关。这里有一个问题要问你,“错误检测和纠正的应用是什么?”