0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

汉明码计算及其纠错原理详解

倩倩 来源:网络整理 2018-03-02 15:08 次阅读

当计算机存储或移动数据时,可能会产生数据位错误,这时可以利用汉明码来检测并纠错,简单的说,汉明码是一个错误校验码码集,由Bell 实验室的R.W.Hamming 发明,因此定名为汉明码。

汉明码(Hamming Code),是在电信领域的一种线性调试码,以发明者理查德·卫斯里·汉明的名字命名。汉明码在传输的消息流中插入验证码,以侦测并更正单一比特错误。由于汉明编码简单,它们被广泛应用于内存(RAM )。其SECDED (single error correction, double error detection)版本另外加入一检测比特,可以侦测两个或以下同时发生的比特错误,并能够更正单一比特的错误。因此,当发送端与接收端的比特样式的汉明距离(Hamming distance)小于或等于1时(仅有1 bit发生错误),可实现可靠的通信。相对的,简单的奇偶检验码除了不能纠正错误之外,也只能侦测出奇数个的错误。

在数学方面,汉明码是一种二元线性码。对于每一个整数,存在一个编码,带有个奇偶校验位个数据位。该奇偶检验矩阵的汉明码是通过列出所有米栏的长度是两两独立。

汉明码的定义和汉明码不等式:

设:m=数据位数,k=校验位数为,n=总编码位数=m+k,有Hamming不等式:

汉明码计算及其纠错原理详解

汉明码不等式含义:

a) 总数据长度为N,如果每一位数据是否错误都要记录,就需要N位来存储。

b) 每个校验位都可以表示:对或错;校验位共K位,共可表示2k种状态

c) 总编码长度为N,所以包含某一位错和全对共N+1种状态。

d) 所以2k≧N+1 e) 数据表见下

汉明码计算及其纠错原理详解

Hamming码缺点:

无法实现2位或2位以上的纠错,Hamming码只能实现一位纠错。

以典型的4位数据编码为例,演示汉明码的工作过程

a) 数据存储格式:

汉明码计算及其纠错原理详解

依照此前的汉明码不等式计算出,当数据位为4位时,汉明码校验位至少为3位,如上方式排列

可以看的出D8、D4、D2、D1中的数字都是2的整数幂

b) 汉明校验码的插入规律:

设:编码位代号k,校验码位代号p,数据位代号n

某个校验码Pp将处于整个编码的第k位

k=2^(p-1)=2的(p-1)次方

以数据位为5的一组9位数编码为例,如下:

汉明码计算及其纠错原理详解

c) 校验位与数据位的对应关系:

注:^是逻辑运算符异或。

P1=D8^D4^D1

P2=D8^D2^D1

P3=D4^D2^D1

小解释:数据位共4位每行等式都缺少一位,而缺少的这位数据位正好是DX,等式左边的校验位为PY,X=2y.

d) 校验位如何参与计算:

P1’=P1^D8^D4^D1

P2’=P2^D8^D2^D1

P3’=P3^D4^D2^D1

从高到低排列的二进制数:P3’ P2’ P1’表示的就是出错的编码位,从000-011-101-110-111共5种组合,可表示原数据位D8D4D2D1某一位错&没错的一共5种状态。

e) 设有一数字为:1101,带入运算:

D8=1、D4=1、D2=0、D1=1,

P1 =1,P2=0、P3=0。

汉明码处理的结果就是1010101

假设:D8出错,P3’ P2’ P1’=011=十进制的3,即表示编码后第三位出错,对照存储格式表,果然就是D8错误。

假设:D4错误,P3’ P2’ P1’=101=十进制的5,即表示编码后第五位出错,对照存储格式表,果然就是D4错误。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 汉明码
    +关注

    关注

    0

    文章

    8

    浏览量

    8075
收藏 人收藏

    评论

    相关推荐

    请问汉明码(7,4)一共有多少种码字呢?

    我觉得应该是2^4=16种吧?汉明码(12,8)就是2^8=256种?请问对不对?
    发表于 05-22 00:09

    级联码的MATLAB代码

    汉明码串行级联RS码以及性能分析的MATLAB程序
    发表于 05-23 15:39

    智能电表设计及其原理详解

    智能电表设计及其原理详解
    发表于 11-12 09:45

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

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

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

    基于FPGA的汉明码编码解码设计实验简述本实验的目的是实现汉明纠错码的编码和解码1.1汉明码简介 汉明码,是在电信领域的一种线性调试码,以发明者理查德 卫斯理 汉明的名字命名。
    发表于 04-15 11:47

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

    汉明码纠错原理是什么?怎样实现汉明码对连续多位差错纠正?怎样去设计汉明码测试程序?
    发表于 04-27 06:22

    提高汉明码对突发干扰的纠错能力

    在简要介绍汉明码编码原理的基础上,详细分析干扰对汉明码纠错的影响;通过对汉明码重新组织排列,在不增加代码冗余度的前提下,提高汉明码抗突发干扰
    发表于 04-15 11:34 20次下载

    PIC单片机串行通信中的汉明编码自动检纠错

    基于汉明码(Hamning Code)编码方式实现串行通信中的自动检纠错功能。重点分析汉明码编码方式和纠错方式,并介绍实现算法。在算法中,将位操作转化为对字节操作,从而可以直
    发表于 05-16 14:09 27次下载

    一种基于汉明码和湿纸码的隐写算法

    该文通过将载体图像分割成矩阵块,重复利用载体矩阵块像素,结合汉明码和湿纸码构造了一种新的双层结构隐写算法。该算法首先利用汉明码在载体矩阵的行向量中嵌入信息,然
    发表于 02-09 14:45 8次下载

    利用FPGA实现模式可变的卫星数据存储器纠错系统

    摘要:比较讨论了航天器数据存储器中汉明码和TMR两种典型纠错系统的原理、实现以及数据可靠性的估计,在此基础上提出了一种集成这两种系统模式并可在实际应
    发表于 06-20 15:39 554次阅读
    利用FPGA实现模式可变的卫星数据存储器<b class='flag-5'>纠错</b>系统

    汉明码,汉明码是什么意思

    汉明码,汉明码是什么意思 汉明码是一种能够纠正单个错误的线性分组码。它有以下特点: (1)最小码距
    发表于 03-17 17:41 8419次阅读

    基于FPGA的检纠错逻辑算法的实现

    基于汉明码纠错原理.根据对64位数据进行检纠错处理的需要,设计一个利用8位校验码,以实现该功能的算法逻辑,并通过FPGA实现。
    发表于 09-15 15:14 1609次阅读
    基于FPGA的检<b class='flag-5'>纠错</b>逻辑算法的实现

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

    本文档的主要内容详细介绍的是汉明码编译码器的数据手册免费下载。
    发表于 12-13 08:00 0次下载
    <b class='flag-5'>汉明码</b>编译码器的数据手册免费下载

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

    我们也要看到,这样处理后提高了汉明码对突发干扰差错的纠错能力,却牺牲了对随机干扰纠错能力。因为这样对汉明码重新排序后,原来1个汉明码的各个位
    的头像 发表于 09-16 17:52 1.5w次阅读
    <b class='flag-5'>汉明码</b><b class='flag-5'>纠错</b>的基本原理及优化解决方案

    汉明码编译码文档

    电子发烧友网站提供《汉明码编译码文档.doc》资料免费下载
    发表于 11-17 16:04 2次下载
    <b class='flag-5'>汉明码</b>编译码文档