ECC-算法原理 1、ECC介绍ECCError Checking and Correcting是用于内存存储的数据不稳定时发生错误时可以进行检查和纠正ECC是基于奇偶校验的原理多用于FLASH和SRAM中。1.1 纠一检二SEC-DED1SEC-DED可以纠正1bit错误检查2bit错误但是不能纠正ECC算法原理是根据汉明(Hamming)编码实现2^k-1≥nk其中n位要校验的二进制位数k是要加入的校验位例如以8‘b1100_0010为例n8则最小k4满足根据汉明编码的原理参考下图所示P1表示第1位为1序号1357911P2表示第2位为1序号23671011P3表示第3位为1序号456712P4表示第4位为1序号891011122需要注意的是默认先把校验码P1~4设置为0依次对上述序号的值进行校验校验结果使其为偶数个1那么P10110011P20100010P3010001P4000101再把对于的Px值填写到框内。3这里还需要加入一个总校验和PP使得总数据1个数为偶数个因此PP01.2 纠正步骤1如果单bit错误D3发生翻转那么P11结果仍然是正确的P2错误P3错误P4正确错误为1正确为0P4~P0的正确/错误逻辑组合成为4‘b0110就对应序号6也就是D3数据错误那么可以纠正注意PP0也是不正确的2如果发生双bit错误PP0是正确但是奇偶校验位报错因此判定为双bit错误细心的读者会发现汉明编码原理-单bit纠错类似于二分法逼近找到错误bit因此适用于3264128bit等数据校验3汉明距离就是两个码不同的数的个数1.3总结1所有的校验位正确则数据正确2PP错误其他校验位错误则出现单bit错误3PP正确其他校验位错误则出现双bit错误4PP错误其他校验位正确则PP数据错误