一、汉明码核心原理
1、校验位计算规则
汉明码通过插入冗余校验位实现单比特错误的检测与纠正。校验位数量 r 满足公式:
例如,4位数据需要3位校验位(总码长7位),即(7,4)汉明码。
2、校验位位置与覆盖关系
校验位位于2的幂次方位(如1、2、4、8等)
每个校验位覆盖的数据位由二进制索引确定:
P1(位置1):覆盖所有二进制索引末位为1的位(1,3,5,7…)
P2(位置2):覆盖所有二进制索引倒数第二位为1的位(2,3,6,7…)
P3(位置4):覆盖所有二进制索引倒数第三位为1的位(4,5,6,7…)
3、纠错机制
接收端重新计算校验位,与原校验位异或生成错误标志(Syndrome)
Syndrome的二进制值直接指示错误位置(如Syndrome=5对应第5位错误)
二、Verilog实现代码
- 编码器模块(以8位数据+4位校验的(12,8)扩展汉明码为例)
module hamming_encoder (
input [7:0] data_in,
output [11:0] encoded_out
);
// 计算校验位P1-P4
wire p1 = data_in[0] ^ data_in[1] ^ data_in[3] ^ data_in[4] ^ data_in[6];
wire p2 = data_in[0] ^ data_in[2] ^ data_in