·上一文章:多路读写SDRAM接口设计
·下一文章:您身边的云存储平台系列测试:Rayfile
行校验码生成用数学表达式表示为
这里xor表示异或操作。
因为发生错误的数据位在该数据块中的字节的偏移量为
发生错误的数据位在所处的字节中的位偏移量为P4_1,P2_1,P1_1
所以根据字节的偏移量和字节中的位的偏移量即可确定该页数据中哪一位发生了变化。
2.2 ECC校验流程
当向NAND Flash的页中写入数据的时候,每2 048 bit生成4 bit的ECC校验码,称之为写ECC校验码,保存到每一页的空闲数据区中。
当从NAND Flash中读取数据的时候,每2 048 bit生成4 bit的ECC校验码,称之为读ECC校验码。校验的时候,根据上述ECC生成原理不难推断:将从页空闲区中读出的写ECC校验码和读ECC校验码按位异或,若结果为0,则表示不存在错;若4 bit的异或结果中存在14 bit为1,表示存在1 bit错误,且可纠正;若4个bit的异或结果中只存在1 bit为1,表示空闲区中的校验码出错;其他情况均表示出现了无法纠正的错误,校验流程图,如图2所示。
3 ECC算法的实现
3.1 C语言实现ECC算法
以一页数据2 048个字节作为测试数据产生ECC校验码,数据是0x00~0xFF,循环8次产生2048个数据,数据序列,如图3所示。