基于FPGA的NAND Flash ECC校驗(yàn)
圖9給出了數(shù)據(jù)包發(fā)生1 bit錯(cuò)誤的校驗(yàn)情況。其中,DATAin表示待讀取的數(shù)據(jù),HammingCALC表示在寫(xiě)入NAND Flash頁(yè)時(shí)計(jì)算好的原始ECC,HAMMINGout表示后面在讀取DATAin數(shù)據(jù)時(shí)計(jì)算的新的ECC,errSTATUS為出錯(cuò)狀態(tài),ERRIoc為計(jì)算所得出錯(cuò)的位置。為滿足1 bit錯(cuò)誤的條件且易于觀察,將256 Byte數(shù)據(jù)(0~255)的最后一個(gè)Byte由“11110110”變?yōu)?ldquo;11111110”,如圖9中陰影部分所示。此時(shí),errSTATUS結(jié)果為01”,表明程序檢測(cè)出了該1 bit錯(cuò)誤,且ERRloc輸出為“111111111O11”,即出錯(cuò)位置為第255 Byte的比特3發(fā)生了錯(cuò)誤。為糾正該錯(cuò)誤,此時(shí),只要將該位置的比特取反輸出即可。本文引用地址:http://cafeforensic.com/article/191099.htm
在原來(lái)1 bit錯(cuò)誤的情況下,將其相鄰的第254 bit的數(shù)據(jù)由“11110101”變?yōu)?ldquo;01110101”,如圖10陰影部分所示,整個(gè)數(shù)據(jù)包有2 bit發(fā)生了變化。此時(shí),errSTATUS結(jié)果顯示為“10”,即檢測(cè)出了有2 bit錯(cuò)誤。但此時(shí)的ERRloe無(wú)效,不能表征出兩個(gè)出錯(cuò)的位置,也就是為什么ECC校驗(yàn)只能檢測(cè)出2 bit錯(cuò)誤而不能對(duì)其進(jìn)行更正的原因。
當(dāng)然,如果數(shù)據(jù)包沒(méi)有發(fā)生任何錯(cuò)誤,也就是若讀出的數(shù)據(jù)與先前寫(xiě)入的數(shù)據(jù)完全一致,ECC校驗(yàn)也是能夠保證檢測(cè)出來(lái)的。如圖11所示,當(dāng)未發(fā)生任何錯(cuò)誤時(shí),errSTATUS為“00”,驗(yàn)證了數(shù)據(jù)的一致性。此時(shí),ERPloe無(wú)意義。
值得說(shuō)明的是,如果數(shù)據(jù)包發(fā)生的錯(cuò)誤多于2 bit,該算法并不適宜。測(cè)定了更多比特(≥3)出錯(cuò)的情況,結(jié)果證明,errSTATUS的結(jié)果可能為“00”、“01”、“10”中的任何一個(gè),也就是說(shuō)在這種情況下,該算法很可能出現(xiàn)誤檢。因此,在這里,可以得出與ECC校驗(yàn)原理相符的結(jié)論:ECC能夠保證糾正1 bit錯(cuò)誤和檢測(cè)2 bit錯(cuò)誤,但對(duì)于1 bit以上的錯(cuò)誤無(wú)法糾正,對(duì)2 bit以上的錯(cuò)誤不保證能檢測(cè)。
4 結(jié)束語(yǔ)
本文將ECC校驗(yàn)算法通過(guò)硬件編程語(yǔ)言VHDL在Ahera QuanusⅡ7.0開(kāi)發(fā)環(huán)境下進(jìn)行了后仿真測(cè)試,實(shí)現(xiàn)了NAND Flash的ECC校驗(yàn)功能。本程序可實(shí)現(xiàn)每256 Byte數(shù)據(jù)生成3 Byte ECC校驗(yàn)數(shù)據(jù),且通過(guò)與原始ECC數(shù)據(jù)對(duì)比,能夠保證檢測(cè)出1 bit的錯(cuò)誤及其出錯(cuò)位置,進(jìn)一步結(jié)合對(duì)此錯(cuò)誤的糾正,可應(yīng)用于NAND Flash讀寫(xiě)控制器的FPGA設(shè)計(jì),實(shí)現(xiàn)對(duì)數(shù)據(jù)的ECC校驗(yàn),確保數(shù)據(jù)準(zhǔn)備有效地傳輸。經(jīng)硬件實(shí)驗(yàn)結(jié)果反饋,該算法硬件適應(yīng)性良好。
ECC是一種在NAND Flash處理中比較專(zhuān)用的校驗(yàn),其原理簡(jiǎn)便、易于執(zhí)行、計(jì)算速度快并且數(shù)據(jù)量越大,其算法越有效。但這樣一個(gè)高效的算法仍存在缺陷,那就是其有限的糾錯(cuò)能力。本文也驗(yàn)證了其對(duì)于2 bit以上錯(cuò)誤是無(wú)效的,盡管這種情況在Flash中發(fā)生的幾率很低,但就校驗(yàn)原理來(lái)說(shuō),是否存在一種改進(jìn)的算法可用于多比特錯(cuò)誤的糾正還有待進(jìn)一步研究和驗(yàn)證。
評(píng)論