集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1034|回复: 1

汉明码实现原理

[复制链接]
fpga_feixiang 发表于 2020-5-21 11:54:59 | 显示全部楼层 |阅读模式
汉明码(Hamming Code)是广泛用于内存和磁盘纠错的编码。汉明码不仅可以用来检测转移数据时发生的错误,还可以用来修正错误。(要注意的是,汉明码只能发现和修正一位错误,对于两位或者两位以上的错误无法正确和发现)。


汉明码的实现原则是在原来的数据的插入k位数据作为校验位,把原来的N为数据变为m(m = n +k)位编码。其中编码时要满足以下原则:
2^k - 1 >= m 其中(m = n + k)
这就是Hamming不等式,汉明码规定,我们所得到的m位编码的2^k ( k>=0 && 2^k < m)位上插入特殊的校验码,其余位把源码按顺序放置。

汉明码的编码规则如下:
在新的编码的2^(k - 1)( k >= 0)位上填入0(即校验位)
把新的编码的其余位把源码按原顺序填入
校验位的编码方式为:第k位校验码从则从新的编码的第2^(k - 1)位开始,每计算2^(k - 1)位的异或,跳2^(k - 1)位,再计算下一组2^(k - 1)位的异或,填入2^(k - 1)位,比如:
第1位校验码位于新的编码的第1位(2 ^(1-1) == 1)(汉明码从1位开始),计算1,3,5,7,9,11,13,15,...位的异或,填入新的编码的第1位。
第2位校验码位于新的编码的第2位(2 ^(2-1) == 2),计算2,3,6,7,10,11,14,15,...位的异或,填入新的编码的第2位。
第3位校验码位于新的编码的第4位(2 ^(3-1) == 4),计算4,5,6,7,12,13,14,15,20,21,22,23,...位的异或,填入新的编码的第4位。
第4位校验码位于新的编码的第8位(2 ^(4-1) == 8),计算8-15,24-31,40-47,...位的异或,填入新的编码的第8位。
第5位校验码位于新的编码的第16位(2 ^(5-1) == 16),计算16-31,48-63,80-95,...位的异或,填入新的编码的第16位。
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2025-4-20 05:50 , Processed in 0.062267 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表