ECC-算法原理

1、ECC介绍

ECC,Error Checking and Correcting,是用于内存存储的数据不稳定时,发生错误时可以进行检查和纠正,ECC是基于奇偶校验的原理,多用于FLASH和SRAM中。

1.1 纠一检二(SEC-DED)

(1)SEC-DED可以纠正1bit错误,检查2bit错误但是不能纠正,ECC算法原理是根据汉明(Hamming)编码实现

2^k-1≥n+k(其中n位要校验的二进制位数,k是要加入的校验位)
例如以8‘b1100_0010为例,n=8,则最小k=4满足;
根据汉明编码的原理,参考下图所示
P1表示第1位为1,序号1,3,5,7,9,11;
P2表示第2位为1,序号2,3,6,7;
P3表示第3位为1,序号4,5,6,7;
P4表示第4位位1,序号8,9;
在这里插入图片描述
(2)需要注意的是,默认先把校验码P1~4设置为0,依次对上述序号的值进行校验(校验结果使其为偶数个1),那么P1=1,P2=1,P3=1,P4=0
在这里插入图片描述
(3)这里还需要加入一个总校验和PP,使得总数据1个数为偶数个,因此PP=0;

1.2 纠正步骤

(1)如果单bit错误,D3发生翻转,那么P1=1结果仍然是正确的,P2错误,P3错误,P4正确,错误为1,正确为0,P4~P0的正确/错误逻辑组合成为4‘b0110就对应序号6,也就是D3数据错误,那么可以纠正,注意PP=0也是不正确的;
在这里插入图片描述
(2)如果发生双bit错误,PP=0是正确,但是奇偶校验位报错,因此判定为双bit错误;细心的读者会发现汉明编码原理-单bit纠错类似于二分法,逼近找到错误bit,因此适用于32,64,128bit等数据校验;
(3)汉明距离就是两个码不同的数的个数;

1.3总结

(1)所有的校验位正确,则数据正确;
(2)PP错误,其他校验位错误,则出现单bit错误;
(3)PP正确,其他校验位错误,则出现双bit错误;
(4)PP错误,其他校验位正确,则PP数据错误;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值