nand ECC 算法记录

nandflash ECC 原理记录。

nand ECC 全称是Error Checking and correction.

该算法分为列校验和行校验。

  • 列校验有下图所示:

991711-20170301175641454-903664143.jpg

    * 如上图所示, CP0 == 所有的 Bit0 ^ Bit2 ^ Bit4 ^ Bit6  
                   CP1 == 所有的 Bit1 ^ Bit3 ^ Bit5 ^ Bit7  
                   CP2 == 所有的 Bit0 ^ Bit1 ^ Bit4 ^ Bit5  
                   CP3 == 所有的 Bit2 ^ Bit3 ^ Bit6 ^ Bit7  
                   CP4 == 所有的 Bit0 ^ Bit1 ^ Bit2 ^ Bit3  
                   CP5 == 所有的 Bit4 ^ Bit5 ^ Bit6 ^ Bit7  
                     ---------> 每个列校验都是 1024 位异或的结果
                     ---------> 如果结果为1,说明有奇数个1位,结果如果为0,说明为偶数个1.
                     ---------> 列校验结果一共有上面6位

  • 行校验有下图所示:

991711-20170301180039235-915494584.jpg

    * 如上图所示,RP0 第0行以及每隔 1 行所有位的异或结果。
                  RP1 第1行以及每隔 1 行所有位的异或结果。
                  RP2,RP3 是间隔 2 行所有位的异或结果。
                  RP4,RP5 是间隔 4 行所有位的异或结果。
                  RP6,RP7 是间隔 8 行所有位的异或结果。
                  RP8,RP9 是间隔 16 行所有位的异或结果。
                  RP10,RP11 是间隔 32 行所有位的异或结果。
                  RP12,RP13 是间隔 64 行所有位的异或结果。
                  RP14,RP15 是间隔 128 行所有位的异或结果。
                ----> 这些结果都是8 * 128 = 1024 位的异或结果。
                ---->  如果结果为1,说明有奇数个1位,结果如果为0,说明为偶数个1.
                ----> 行校验一共有16位。

  • 在nand 中常用3个字节去存储这22位结果,有下图所示:

991711-20170301180339548-2019513253.jpg

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值