|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
关于Hamming码的问题依照Micron的一篇关于Hamming码实现的technique note做Hamming编解码,结果发现数据有单比特错误时能够准确纠错,但是多于1-bit错误时就会误报为单错或无错,请大家帮忙看看。
按照这篇文档,计算8-bit数据的ECC码时按以下步骤进行:
1)计算ECCe[2:0] = {^bit[3:0], ^{bit[5:4], bit[1:0]}, ^{bit[6], bit[4], bit[2], bit[0]};
2)计算ECCo[2:0] = {^bit[7:4], ^{bit[7:6], bit[3:2]}, ^{bit[7], bit[5], bit[3], bit[1]};
验证时按以下步骤,
3)先按1)和2)计算数据的ECCe_new, ECCo_new;
4)然后计算ECC_ver = ECCe_new ^ ECCo_new ^ ECCe_old ^ ECCo_old;如果ECC_ver结果为3'b000则数据没错;如果为3'b111则是单bit错,ECCo_new ^ ECCo_old的值就是错误bit的位置;如果为其他值则是多于1-bit的错误。
比如信息码是8'b0000_0000;
这样ECC_o是3'b000; ECC_e也是3'b000;
如果接收到的信息码在bit[0]出现误码,即变成8'b0000_0001,则
ECC_o_new是3'b000; ECC_e_new是3'b111;
ECC_e ^ ECC_e_new ^ ECC_o ^ ECC_o_new = 3'b111,表示有1-bit的错误,
错误位置在 ECC_o ^ ECC_o_new = 3'b000,即bit[0],能正确纠错;
但是如果接收到的信息码在bit[0]和bit[7]出现误码,即变成8'b1000_0001,则
ECC_o_new是3'b111; ECC_e_new也是3'b111;
ECC_e ^ ECC_e_new ^ ECC_o ^ ECC_o_new = 3'b000,表示没有错误,
这样就出现了不能探测2-bit错误的问题。
[ 本帖最后由 jamyce 于 2008-11-11 13:38 编辑 ] |
-
-
tn2908.rar
336.13 KB, 下载次数: 48
, 下载积分:
资产 -2 信元, 下载支出 2 信元
|