登录/注册

汉明码

更多

好的,我们来详细解释一下汉明码

核心概念

汉明码是一种用于检测和纠正数据传输或存储过程中发生的单个比特错误的编码方案(纠错码)。它是由理查德·汉明在20世纪50年代提出的,旨在解决早期计算机中继电器不可靠导致的数据错误问题。

核心思想和目标

  1. 添加冗余(校验位): 在原始数据位中添加额外的比特位。
  2. 奇偶校验: 利用这些冗余位存储特定数据比特的奇偶性信息(通常是偶校验或奇校验)。
  3. 精准定位: 精心设计冗余位与数据位之间的关联规则,使得当发生单个比特错误(无论是数据位还是校验位本身)时,能够通过重新计算奇偶性并比较结果,精准地定位到出错比特的位置
  4. 纠错: 一旦定位到错误比特,只需将其翻转(0变1或1变0)即可纠正错误。

关键机制和步骤

  1. 确定校验位数量:

    • 设原始数据位数为 k
    • 所需的校验位数为 r,需满足: 2^r >= k + r + 1
    • 这个不等式确保 r 个校验位产生的 2^r 种组合(包括全0代表无错)足够表示 k 个数据位和 r 个校验位中任何一个位置出错的情况(共至少 k + r + 1 种情况)。
    • 例如:
      • 4位数据 (k=4):2^r >= 4 + r + 1 => 2^r >= 5 + rr=3 满足 (8 >= 7)。
      • 8位数据 (k=8):2^r >= 8 + r + 1 => 2^r >= 9 + rr=4 满足 (16 >= 13)。
      • 11位数据 (k=11):2^r >= 11 + r + 1 => 2^r >= 12 + rr=4 满足 (16 >= 16)。
    • 总编码长度 n = k + r
  2. 放置校验位:

    • 校验位放置在码字中位置编号为 2 的幂次方 的地方:1, 2, 4, 8, 16, ...
    • 数据位填充剩余的位置。
    • 示例 (7-4 汉明码, k=4, r=3, n=7):
      • 位置编号:1, 2, 3, 4, 5, 6, 7
      • 校验位位置:P1 (位置1), P2 (位置2), P3 (位置4)
      • 数据位位置:D1 (位置3), D2 (位置5), D3 (位置6), D4 (位置7)
      • 码字结构:P1, P2, D1, P3, D2, D3, D4
  3. 分组与计算校验位(偶校验为例):

    • 每个校验位负责一组特定的比特位(包括数据位和其它校验位)。
    • 确定分组规则: 位置编号的二进制表示决定了它属于哪个校验组。
      • P1 (位置1, 二进制 001): 负责所有位置编号中最低有效位 (LSB) 为 1 的位。即位置 1, 3, 5, 7, ... (1, 3, 5, 7)
      • P2 (位置2, 二进制 010): 负责所有位置编号中中间位为 1 的位。即位置 2, 3, 6, 7, ... (2, 3, 6, 7)
      • P3 (位置4, 二进制 100): 负责所有位置编号中最高有效位 (MSB) 为 1 的位。即位置 4, 5, 6, 7, ... (4, 5, 6, 7)
    • 计算校验位值:
      • P1 = (D1) XOR (D2) XOR (D4) // 偶校验:确保位置1,3,5,7的和为偶(即异或结果为0)
      • P2 = (D1) XOR (D3) XOR (D4) // 确保位置2,3,6,7的和为偶
      • P3 = (D2) XOR (D3) XOR (D4) // 确保位置4,5,6,7的和为偶
  4. 检错与纠错(接收端/读取端):

    • 接收端收到码字后,根据同样的规则重新计算校验位,得到一组新的校验值。
    • 新计算出的校验值接收到的校验值进行按位异或 (XOR) 操作:
      • S1 = P1_received XOR P1_calculated (检查 P1 组)
      • S2 = P2_received XOR P2_calculated (检查 P2 组)
      • S3 = P3_received XOR P3_calculated (检查 P3 组)
    • S3 S2 S1 组合成一个二进制数(称为伴随式校正子)。
    • 解释伴随式:
      • 000: 没有检测到错误(也可能存在未检测到的多个错误)。
      • 000 (例如 XXX): 检测到错误。XXX 这个二进制数直接对应错误比特的位置编号
        • 例如 S3S2S1 = 101 (二进制 5) 表示位置 5 的比特出错。
      • 纠错: 定位到错误比特的位置后,只需将该比特的值取反(0 变 1 或 1 变 0),即可纠正单个错误。

优点

局限性

增强与应用

总结

汉明码是一种巧妙利用奇偶校验二进制位置编码的纠错码。通过在数据中添加精心计算的校验位,并将校验位与特定的数据位组关联起来,它能够检测并精准定位单个比特错误的位置,从而实现对该错误的自动纠正。它是构建更复杂、更强大纠错码(如 SECDED)的重要基础。

简单记忆要点:位置按2的幂放校验位,每个校验位管一组特定位置(根据位置的二进制位决定),算奇偶,出错时校验结果组合起来直接告诉你哪一位错了。

卫星通信v2 第四章 传输技术(4)

继续讲解! 上堂课给出了例题!让我们一起来看看解题过程。 请注意结论! 下堂课详细讲解汉明码。 汉明码(Hamming Code)是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名

2023-01-11 11:35:07

汉明码编译码文档

电子发烧友网站提供《汉明码编译码文档.doc》资料免费下载

资料下载 xymbmcu 2023-11-17 16:04:06

STM32F0/F1/F2/F3/F4/F7编程数据中英文手册(所有型号中文参考手册)

STM32中文/英文编程手册(所有型号中文参考手册免费获取STM32所有手册ST官方免费的资料不应该共享的吗?怎么还欺负人,明码标价。进入官方,第一个就是。感谢大佬的分享https

资料下载 佚名 2021-12-27 19:02:04

IPUS SQPI PSRAM为STM32单片机提供RAM扩展方案

的一种基于大RAM的系统设计:系统自举是用简单的明码,其它代码是加密后存储在flash中。当系统运行时,Flash中的数据,解密后转存到PSRAM中,程序从PSRAM中运行,当程序(或函数)运行结束时,可以轻易地再次在SPI PSRAM中加密(用于再次使用)以及销毁(一次性使用)。其中密

资料下载 王利祥 2021-12-09 14:51:13

汉明码编译码器的数据手册免费下载

本文档的主要内容详细介绍的是汉明码编译码器的数据手册免费下载。

资料下载 槐诗sa 2019-12-13 08:00:00

求教大佬构建距离3的汉明码步骤?

比如说11信息位,4位校验位。构建校验规则时表示不明白,该构建几位的信息位校验?然后该怎么排列组合信息位校验,使能校验出一位错误和两位错误?校验信息位的组合是唯一么,有没有其他组合?书上看到最后一个信息位总是出现在每一个组合,为什么?最后图片P4不知道是不是搞错了

2022-01-17 00:17:52

如何提高汉明码的纠错能力?

汉明码纠错原理是什么?怎样实现汉明码对连续多位差错纠正?怎样去设计汉明码测试程序?

2021-04-27 06:22:22

汉明码纠错的基本原理及优化解决方案

我们也要看到,这样处理后提高了汉明码对突发干扰差错的纠错能力,却牺牲了对随机干扰纠错能力。因为这样对汉明码重新排序后,原来1个汉明码的各个位分布

2020-09-16 17:52:12

「ALIENTEK 阿波罗 STM32F767 开发板资料连载」第四十六章 NAND FLASH 实验

出错(一般只有 1 个 bit 出错)。ECC 就可以检测这种错误,并修正错误的数据位,因此,ECC 在 NAND FLASH驱动里面,被广泛使用。ECC 有三种常用的算法:汉明码(Hamming Code

2020-05-20 15:14:49

实现汉明纠错码的编码和解码方案设计

理解汉明码首先要理解奇偶校验,奇校验就是在一串编码里增加一位校验位使这一串编码里的1的个数位奇数。偶校验同理,使编码里1的个数为偶数。

2020-05-04 09:00:00

【原创】基于FPGA的汉明码编码解码设计

基于FPGA的汉明码编码解码设计实验简述本实验的目的是实现汉明纠错码的编码和解码1.1汉明码简介 汉明码,是在电信领域的一种线性调试码,以发明者

2020-04-15 11:47:48

基于FPGA的汉明码译码器如何对码元数据添加噪声干扰?

入门小白求助,我最近在做毕业设计的时候 看到一篇《基于FPGA的汉明码译码器》相关论文,其中学者对该译码器是这样设计的(附图),我想问一下在noise_add模块中是如何向输入数据添加噪声干扰

2020-02-26 23:29:41
7天热门专题 换一换
相关标签