加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

NAND FLASH ECC校验原理与实现 (2008-03-01 23:15:53)

发布时间:2020-12-15 06:45:17 所属栏目:百科 来源:网络整理
导读:转载 标签: ? flash ? ecc ? 教育 分类: ?ARM硬件 ? ECC 简介 由于 NAND? Flash 的工艺不能保证 NAND 的 Memory? Array 在其生命周期中保持性能的可靠,因此,在 NAND 的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用 NAND? Flash 的系统中

转载
标签:?

flash

?

ecc

?

教育

分类:?ARM硬件
?

ECC简介
  由于NAND?Flash的工艺不能保证NANDMemory?Array在其生命周期中保持性能的可靠,因此,在NAND的生产中及使用过程中会产生坏块。为了检测数据的可靠性,在应用NAND?Flash的系统中一般都会采用一定的坏区管理策略,而管理坏区的前提是能比较可靠的进行坏区检测。
  如果操作时序和电路稳定性不存在问题的话,NAND?Flash出错的时候一般不会造成整个Block或是Page不能读取或是全部出错,而是整个Page(例如512Bytes)中只有一个或几个bit出错。
  对数据的校验常用的有奇偶校验、CRC校验等,而在NAND?Flash处理中,一般使用一种比较专用的校验——ECCECC能纠正单比特错误和检测双比特错误,而且计算速度很快,但对1比特以上的错误无法纠正,对2比特以上的错误不保证能检测。

ECC原理
  ECC一般每256字节原始数据生成3字节ECC校验数据,这三字节共24比特分成两部分:6比特的列校验和16比特的行校验,多余的两个比特置1,如下图所示:

NAND?<wbr>FLASH?<wbr>ECC校验原理与实现

ECC 的列校验和生成规则如下图所示:

NAND?<wbr>FLASH?<wbr>ECC校验原理与实现

NAND?<wbr>FLASH?<wbr>ECC校验原理与实现

用数学表达式表示为:
     P4=D7(+)D6(+)D5(+)D4    P4`=D3(+)D2(+)D1(+)D0
     P2=D7(+)D6(+)D3(+)D2    P2`=D5(+)D4(+)D1(+)D0
     P1=D7(+)D5(+)D3(+)D1    P1`=D6(+)D4(+)D2(+)D0
  这里 (+) 表示 位异或 操作
  
   ECC 的行校验和生成规则如下图所示:

NAND?<wbr>FLASH?<wbr>ECC校验原理与实现

用数学表达式表示为:
    P8?=?bit7(+)bit6(+)bit5(+)bit4(+)bit3(+)bit2(+)bit1(+)bit0(+)P8
    ……………………………………………………………………………………
  这里(+)同样表示位异或操作
 
  当往NAND?Flashpage中写入数据的时候,每256字节我们生成一个ECC校验和,称之为原ECC校验和,保存到PAGEOOBout-of-band)数据区中。
  当从NAND?Flash中读取数据的时候,每256字节我们生成一个ECC校验和,称之为新ECC校验和。
  校验的时候,根据上述ECC生成原理不难推断:将从OOB区中读出的原ECC校验和新ECC校验和按位异或,若结果为0,则表示不存在错(或是出现了ECC无法检测的错误);若3个字节异或结果中存在11个比特位为1,表示存在一个比特错误,且可纠正;若3个字节异或结果中只存在1个比特位为1,表示OOB区出错;其他情况均表示出现了无法纠正的错误。

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读