欢迎来到天天文库
浏览记录
ID:23141061
大小:263.31 KB
页数:5页
时间:2018-11-04
《基于fpga的nandflashecc校验》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、摘耍港于Flash存储器的Hamming编码原理,在AlteraQuartus117.o开发环境下,实现ECC校验功能,测试结果农明,该程序可实现毎256Byte数裾生.成3Byte的ECC校验数抛,能够检测出1bit错误和2bit错误,对丁•1bit错误还能找出其出错位質并予以纠正,可应用子NANDFlash读写控制怒的FPGA设计,保证数裾传输的坷銪性。关键词ECC校验:FPGA:NANDFlash:读写控制器移动产品应川领域,NANDHash没各已成为人们解决高密度固态存储的专用方法。信息技术的飞速发展,人们对信息的需求逭也越來越大。図
2、此,大蛍数抛在系统内部以及网络之叫存储和传迎时,对数抛进行检测并更正吋能出现的错误尤为重耍,纠错码ECCXEirorCorrect-ionCode)满足这-耑求,M:被称为ECC校验,足一种常用子NANDFlash读写控制器的校验編码。ECC校验负贵检测错误、维护ECC信思、更正由原数伉改变了的中.比特错误。所宥ECC的操作处理都可由一个ECC模块米控制,其作力一种简单地存储一映射接U,放S在NAN1)器件和处理器接口之间,该模块一般包含Hamming编码产生模块和出错位H模块,分别用于产生ECC校验码和计算出错位置。1Ilaremina编码
3、Hamming编科计算简‘广泛用于NANDFlash的Hamming算法,通过计算块上数据包得到2个ECC仇。为计算ECCtfL数据包中的比特数据要先进行分剖,如1/2组、1/4组、1/8组等,直到其精度达到单个比特为止,以8bit即1Byte的数据包为例进行说明,如阁1所示。比特位765432101:!1r:°「;」丄[.•tit••了‘0J1,140n,:■<>;
4、!o!
5、0!0—2!0!
6、调校般I/4IH校糖i/i供技教IZ2夼校編IM奇校验广ccrutffl18hit数根乜抆脍的效坍分羽该数裾按阁1所示方式进行比特分荆,分别得到上方的
7、偶校验偵ECCe和下方的奇校验值ECCo。荈屮,1/2校验偵经“异或”操作构成ECC校验的最商乜效位,同理1/4校验饥构成ECC校验的次商宵效位,最低有效位由抖体到比特的校验饥填补。阁2屐示了两个ECC校验们的计灯过程。ECCdOXTlECCo=0T(Tl1Z2.IZ4bit•m=ioi图2计算奇偁ECC教*即偶校验值ECCc为“101”,奇校验值ECCo为“010”。图1所示为只有1Byte数槲的数裾也,更人的数椐包滞耍更多的ECC值。事实上,每nbit的ECC数偵可满足2nbit数裾包的校验耍求。又由于这种Hamming蚂算法要求一对EC
8、C数据(奇偶),所以总共耍求2nbit的ECC校验数据來处理anbit的数裾包。计算之后,朌数据包和ECC数值都要写入NAN1)器件。稍后,拟数据包将从NAN1)器件中读取,此时ECC伉将审新il•算。如果新计算的ECC不同于先前编入NAND器件的ECC,那么农明数据在读写过程中山错。例如,原始数据oioioooi屮旮1个中.一的比特出现错误,出错后的数据圮oioioioi。经前而所示方法计算,从阁3屮可以消楚地卷到巾子数榭发虫了变化,2个新的ECC数偵己不同与原來的ECC假。1/4fbit(MDAi;rrr^ooo1/2ECC€=OT(ri
9、ECCo=0Ar(ri0"1介1!0剌*0,⑽)图3发生鎌谈數抵匕幼ECC计算此吋把所介4个ECC数值进行按位“异或”,就可以判断足否出现/1个单一比特的错误或芥足多比特的错误.如果计算结果为全“0”,说明数椐在读写过程中未发生变化。如果计算的结果为令“1”,表明发生丫1bit错误.如图4所示。如果计算结果足除了全“o”和全“1”的任何一种悄况,那么就足2bit出错的悄况。2bit错误总可以检测到,然而,Hamming妈算法仅能够保证更正单一比特的错误。如粜两个或是史多的比特出错,那么就不能修改该岀错的数据包,在这种怙况F,Hamming算法
10、就可能不能够指示出已经出现的错误,不过,考虑到SLCNAN1)器件的比特错误的悄况,出现2,3bit错误的可能性非常低。ECCc(old)*ECCo(old)*ECCc(new)MECCo(new=101D10D00糊=111
11、(ffl寻固图4判断是否发生捋诸#对于1bit错误的怡况,出错地址可通过将原有ECCo值和新ECCo值进行按位“异或”來识别获取。通过图5屮的讣锌,结果为2,表明原数裾笫2bit位出现了问题。该计算采川奇校验数裾ECCo.这足因力它们可以£(接地反映出出错比特的位捭、ECCo(old)-ECCo(ncw)=0101X)
12、0=111困5找出出错比特位置找到出错比特后,只耍通过翻转它的状态就川■修复数枞包,具体探作也就足将该位与“1”进行异或操作,如阁6所示。01010101D0000
此文档下载收益归作者所有