汉明 Code错误检测与纠正示例

⚡ 智能摘要

汉明码是一种线性纠错码,它在 2 的幂位置添加冗余奇偶校验位,使接收器能够检测到最多两位错误,并在数据传输期间自动纠正任何单比特错误。

  • 🧭 目的: 汉明码通过嵌入奇偶校验位来检测和纠正传输错误,奇偶校验位可以精确定位损坏的比特位。
  • 🔢 冗余位: 奇偶校验位 (p) 的数量满足规则 2^p ≥ n + p + 1,其中 n 是数据位的数量。
  • 📍 放置: 奇偶校验位占据 2 的幂次方位置——1、2、4 和 8——而数据位填充剩余位置。
  • 🧮 汉明(7,4): 一种常见的编码形式是使用三个奇偶校验位将四个数据位编码成总共七个位。
  • 🧯 局限性: 标准汉明码只能纠正单比特错误;额外的总奇偶校验位增加了双重错误检测(SECDED)。
  • 🤖 人工智能辅助: 机器学习解码器有助于标记仅靠固定编码可能遗漏的噪声信道和错误模式。

利用奇偶校验位进行汉明码错误检测和纠正

什么是错误?

Transmit传输过程中数据可能会损坏,容易受到外部噪声或其他物理故障的影响。在这种情况下,输入数据与输出数据不可能相同。这种不匹配被称为“错误”。

数据错误可能导致重要或机密数据的丢失。数字系统中的大部分数据传输都采用“比特传输”的形式,即使单个比特的微小变化也会影响整个系统的性能。在数据序列中,如果1被更改为0,或者0被更改为1,则称为“比特错误”。

错误类型

数据丢失时主要会发生三种类型的比特错误 transmit从发送方到接收方的数据流。下图说明了每种类型如何影响数据序列:

图示比较二进制数据序列中的单比特错误、多比特错误和突发错误

  • 单比特错误
  • 多比特错误
  • 突发错误

单比特错误

整个数据序列中一位发生改变称为“单比特错误”。单比特错误并不常见。它主要发生在并行通信系统中,因为数据在不同的线路上按位传输,所以一条线路出现噪声而其他线路保持干净的概率更高。

多位错误

当数据序列中的两个或多个比特位发生变化时 transmit如果终端和接收端都出现这种情况,则称为“多比特错误”。

这种类型的错误在串行和并行数据通信网络中都会发生。

突发错误

数据序列中一组连续比特的改变称为“突发错误”。突发错误的长度是从第一个改变的比特到最后一个改变的比特测量的。

什么是错误检测和错误纠正?

在数字通信系统中,数据在设备间传输过程中可能会出现错误。如果这些错误未能被检测和纠正,数据就会丢失。为了实现有效的通信,数据传输必须保证高精度,而这需要首先识别错误,然后进行纠正。

错误检测 是一种查找数据中存在错误的方法。 transmit来自泰德 transmitter 到接收器 数据通信 系统。

冗余码通过在数据出错时向数据添加额外的比特来查找这些错误。 transmit这些额外的比特位来自源数据。它们被称为“错误检测码”。三种最常见的错误检测码类型是:

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

奇偶校验

  • 它也被称为奇偶校验。
  • 它提供了一种经济高效的错误检测机制。
  • 在这种技术中,添加到每个数据单元的冗余位称为奇偶校验位。它的设置使得单元中 1 的总数为偶数(偶校验)或奇数(奇校验)。

纵向冗余检查

在这种错误检测技术中,数据块被组织成一个表格。LRC 方法为每一列计算一个奇偶校验位,并将这组奇偶校验位与原始数据一起发送。奇偶校验位块帮助接收方检查冗余并检测错误。

循环冗余校验

循环冗余校验 (CR) 在数据单元的末尾附加一系列冗余位,使得生成的数据单元能够被第二个预定的二进制数整除。

到达目的地后,接收到的数据会除以同一个数。如果没有余数,则认为该数据单元正确并被接受。否则,表明该数据单元在传输过程中损坏,必须被拒绝。

什么是汉明效应 Code?

汉明码是一种线性码,可用于检测最多两个连续比特错误并纠正单个比特错误。这种纠错机制通常在数据链路层运行,对数据进行帧封装并检查相邻节点之间的数据完整性。

在汉明码中,信源通过添加冗余比特对消息进行编码。这些冗余比特被插入并生成在消息的特定位置,以执行错误检测和纠正过程。

汉明的历史 Code

  • 汉明码是RW汉明发明的一种用于检测和纠正错误的技术。
  • 它可以应用于任意长度的数据单元,并利用数据位和冗余位之间的关系。
  • 汉明致力于纠错问题的研究,并开发了一系列功能日益强大的算法。
  • 1950 年,他发表了汉明码,该码至今仍在 ECC 存储器等应用中广泛使用。

汉明的应用 Code

以下是汉明码的一些常见应用:

  • 卫星
  • 计算机内存(ECC RAM)
  • 调制解调器
  • 等离子CAM
  • 打开连接器
  • 屏蔽线
  • 嵌入式处理器

汉明法的优势 Code

  • 汉明码适用于数据流容易出现单比特错误的网络。
  • 它不仅能检测出比特错误,还能帮助你识别出包含错误的比特,以便进行纠正。
  • 汉明码易于使用,因此非常适合计算机内存和单错误纠错。

汉明定律的缺点 Code

  • 它是一种单比特错误检测和纠错码。如果发现多个比特出错,结果可能会翻转另一个原本正确的比特,从而进一步破坏数据。
  • 汉明码算法只能解决单比特问题。

如何用汉明编码方式对消息进行编码 Code

发送方对消息进行编码的过程包括以下三个步骤:

  • 计算冗余比特的总数。
  • 确定冗余位的位置。
  • 计算每个冗余位的值。

当冗余比特嵌入到消息中时,完整的码字就会发送给接收方。

步骤 1)计算冗余比特的总数。

假设该消息包含 n 数据位和 p 添加冗余位,使得 2p 可以表示至少 (n + p + 1) 种不同的状态。

这里,(n + p) 表示每个 (n + p) 位位置上的错误位置,而额外的一个状态表示没有错误。因为 p 个奇偶校验位可以表示 2p 州,2p 必须至少等于(n + p + 1)。

步骤 2)将冗余位放置在正确的位置。

p 个冗余位位于 2 的幂次方位上,例如 1、2、4、8 和 16。它们被称为 p1 (在位置 1),p2 (在位置 2),p3 (在第 4 个位置),依此类推。

步骤 3)计算每个冗余位的值。

每个冗余位都是一个奇偶校验位,它决定了该组位中 1 的个数是偶数还是奇数。奇偶校验有两种类型:

  • 均等: 覆盖位置中 1 的总数为偶数。
  • 奇偶性: 覆盖位置中 1 的总数变为奇数。

每个奇偶校验位覆盖一组特定的位置,这些位置由位置编号的二进制表示确定:

  • p1 检查每个最低有效位为 1 的位置——位置 1、3、5、7、9、11 等。
  • p2 检查从右数第二个比特为 1 的每个位置——位置 2、3、6、7、10、11 等。
  • p3 检查从右数第三位二进制值为 1 的每个位置——位置 4 到 7、12 到 15,依此类推。

示例 (7,4): 考虑以下四个数据位 1011需要三个奇偶校验位(23 = 8 ≥ 4 + 3 + 1),得到一个七位码字,布局为 p1 p2 d1 p3 d2 d3 d4放置数据后,位置 3、5、6、7 分别对应 1、0、1、1。使用偶校验:p1 涵盖位置 1、3、5、7(位 1、0、1 → p1 = 0);p2 覆盖 2、3、6、7(位 1、1、1 → p2 = 1);p3 覆盖 4、5、6、7(位 0、1、1 → p3 = 0)。 transmit因此,ted 代码是 0110011.

如何用汉明密码解码信息 Code

接收方接收消息后,会进行重新计算以查找并纠正错误。重新计算过程包含以下步骤:

  • 计算冗余比特的数量。
  • 正确放置所有冗余位。
  • 执行奇偶校验。

步骤 1)计算冗余比特的数量。 使用与编码相同的公式:2p ≥ n + p + 1,其中 n 为数据位数,p 为冗余位数。

步骤 2)正确放置所有冗余位。 每个冗余位都位于 2 的幂位位置上——例如,1、2、4 和 8。

步骤 3)执行奇偶校验。 奇偶校验位由数据位和接收到的冗余位重新计算得出:

  • p1 = parity(1, 3, 5, 7, 9, 11, …)
  • p2 = parity(2, 3, 6, 7, 10, 11, …)
  • p3 = parity(4–7, 12–15, 20–23, …)

重新计算后的奇偶校验位组成一个二进制数。如果该二进制数为零,则表示没有错误;否则,其值给出了单个错误位的确切位置,该错误位将被翻转以纠正消息。

常见问题

汉明距离是指两个等长二进制字符串之间不同的比特位数量。在纠错码中,有效码字之间的最小汉明距离决定了可以检测或纠正的错误数量。标准汉明码的最小汉明距离为3。

Hamming(7,4) 编码通过添加三个奇偶校验位,将四个数据位编码成一个七位码字。它可以纠正任何单比特错误并检测两位错误。符号 (n, k) 表示码字的总长度 n 和数据位数 k。

单个奇偶校验位只能检测奇数个错误位,无法定位或纠正这些错误位。汉明码使用多个奇偶校验位,每个奇偶校验位位于 2 的幂次方位置,因此可以精确定位出错的位并自动纠正。

基本的汉明码可以纠正一位错误,但可能会漏判两位错误。添加一个覆盖整个码字的奇偶校验位,就形成了SECDED(单错误纠正,双错误检测),将最小距离提高到四,从而能够可靠地检测双错误。

错误检测和纠正主要发生在数据链路层。 OSI模型它对数据进行帧封装,并检查相邻节点间数据的完整性。传输层协议增加了端到端检查,而物理介质则引入了这些代码所防范的噪声。

汉明码是一种线性分组码。它一次处理固定大小的数据块,并在数据块末尾添加奇偶校验位,这与卷积码不同,卷积码利用先前比特的记忆来编码连续的比特流。这使得汉明码简单而快速。

机器学习模型能够学习信道的噪声模式并预测可能的误码,从而提升解码精度,超越传统方案。人工智能驱动的LDPC和极化码解码器如今已应用于现代5G和存储系统,在这些系统中,仅靠传统的汉明码已无法满足需求。

GitHub 副驾驶 能够根据简短的注释搭建编码器和解码器函数,生成奇偶校验位掩码,并编写单元测试。验证位位置运算和奇偶校验组。ping务必仔细检查,因为差一索引是生成代码中常见的错误来源。

总结一下这篇文章: