- 1、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于FPGA的NANDFlashECC校验
摘要 基于Flash存储器的Hamming编码原理,在Altera Quartus7.0开发环境下,实现ECC校验功能。测试结果表明,该程序可实现每256 Byte数据生成3 Byte的ECC校验数据,能够检测出1 bit错误和2 bit错误,对于1 bit错误还能找出其出错位置并予以纠正,可应用于NAND Flash读写控制器的FPGA设计,保证数据传输的可靠性。关键词 ECC校验;FPGA;NAND Flash;读写控制器??? 移动产品应用领域,NAND Flash设备已成为人们解决高密度固态存储的专用方法。信息技术的飞速发展,人们对信息的需求量也越来越大。因此,大量数据在系统内部以及网络之间存储和传递时,对数据进行检测并更正可能出现的错误尤为重要。纠错码ECC(Error Correct-ion Code)满足这一需求,其被称为ECC校验,是一种常用于NAND Flash读写控制器的校验编码。??? ECC校验负责检测错误、维护ECC信息、更正由原数值改变了的单比特错误。所有ECC的操作处理都可由一个ECC模块来控制,其作为一种简单地存储一映射接口,放置在NAND器件和处理器接口之间。该模块一般包含Hamming编码产生模块和出错位置模块,分别用于产生ECC校验码和计算出错位置。1 Haremina编码??? Hamming编码计算简单。广泛用于NAND Flash的Hamming算法,通过计算块上数据包得到2个ECC值。为计算ECC值,数据包中的比特数据要先进行分割,如1/2组、1/4组、1/8组等,直到其精度达到单个比特为止,以8 bit即1 Byte的数据包为例进行说明,如图1所示。 ??? 该数据按图1所示方式进行比特分割,分别得到上方的偶校验值ECCe和下方的奇校验值ECCo。其中,1/2校验值经“异或”操作构成ECC校验的最高有效位,同理1/4校验值构成ECC校验的次高有效位,最低有效位由具体到比特的校验值填补。图2展示了两个ECC校验值的计算过程。 ??? 即偶校验值ECCe为“101”,奇校验值ECCo为“010”。图1所示为只有1 Byte数据的数据包,更大的数据包需要更多的ECC值。事实上,每n bit的ECC数值可满足2nbit数据包的校验要求。又由于这种Hamming码算法要求一对ECC数据(奇偶),所以总共要求2n bit的ECC校验数据来处理2nbit的数据包。??? 计算之后,原数据包和ECC数值都要写入NAND器件。稍后,原数据包将从NAND器件中读取,此时ECC值将重新计算。如果新计算的ECC不同于先前编入NAND器件的ECC,那么表明数据在读写过程中出错。??? 例如,原始数有1个单一的比特出现错误,出错后的数据经前面所示方法计算,从图3中可以清楚地看到由于数据发生了变化,2个新的ECC数值已不同与原来的ECC值。 此时把所有4个ECC数值进行按位“异或”,就可以判断是否出现了1个单一比特的错误或者是多比特的错误。如果计算结果为全“0”,说明数据在读写过程中未发生变化。如果计算的结果为全“1”,表明发生了1 bit错误,如图4所示。如果计算结果是除了全“0”和全“1”的任何一种情况,那么就是2 bit出错的情况。2 bit错误总可以检测到,然而,Hamming码算法仅能够保证更正单一比特的错误。如果两个或是更多的比特出错,那么就不能修改该出错的数据包,在这种情况下,Hamming算法就可能不能够指示出已经出现的错误。不过,考虑到SLC NAND器件的比特错误的情况,出现2、3 bit错误的可能性非常低。 ??? 对于1 bit错误的情况,出错地址可通过将原有ECCo值和新ECCo值进行按位“异或”来识别获取。通过图5中的计算,结果为2,表明原数据第2 bit位出现了问题。该计算采用奇校验数据ECCo,这是因为它们可以直接地反映出出错比特的位置。 ??? 找到出错比特后,只要通过翻转它的状态就可修复数据包,具体操作也就是将该位与“1”进行异或操作,如图6所示。 2 扩展数据包??? 在上述举例中,校验1个8 bit数据包需要6 bit的ECC数据。在这种情况下,校验数据量达到原始数据包的数据量的75%,看上去并不令人满意。然而,随着数据包大小的增加,Hamming算法将表现得越来越有效率。由前面2n bit数据需要2n bit ECC校验的关系推知,每增加一倍的数据要求两个额外的ECC信息比特。这样,当数据增加到,比如512 Byte时,仅产生24 bit的ECC,此时用于校验的数据占原数据的比例降为0.06%,效率较高。下面,以1个8 Byte的数据包为例说明扩展数据包的校验情况。??
文档评论(0)