基于固態(tài)存儲器的ECC算法分析及實(shí)現
列校驗碼生成用數學(xué)表達式表示為本文引用地址:http://dyxdggzs.com/article/202613.htm
行校驗碼生成用數學(xué)表達式表示為
這里xor表示異或操作。
因為發(fā)生錯誤的數據位在該數據塊中的字節的偏移量為
發(fā)生錯誤的數據位在所處的字節中的位偏移量為P4_1,P2_1,P1_1
所以根據字節的偏移量和字節中的位的偏移量即可確定該頁(yè)數據中哪一位發(fā)生了變化。
2.2 ECC校驗流程
當向NAND Flash的頁(yè)中寫(xiě)入數據的時(shí)候,每2 048 bit生成4 bit的ECC校驗碼,稱(chēng)之為寫(xiě)ECC校驗碼,保存到每一頁(yè)的空閑數據區中。
當從NAND Flash中讀取數據的時(shí)候,每2 048 bit生成4 bit的ECC校驗碼,稱(chēng)之為讀ECC校驗碼。校驗的時(shí)候,根據上述ECC生成原理不難推斷:將從頁(yè)空閑區中讀出的寫(xiě)ECC校驗碼和讀ECC校驗碼按位異或,若結果為0,則表示不存在錯;若4 bit的異或結果中存在14 bit為1,表示存在1 bit錯誤,且可糾正;若4個(gè)bit的異或結果中只存在1 bit為1,表示空閑區中的校驗碼出錯;其他情況均表示出現了無(wú)法糾正的錯誤,校驗流程圖,如圖2所示。
3 ECC算法的實(shí)現
3.1 C語(yǔ)言實(shí)現ECC算法
以一頁(yè)數據2 048個(gè)字節作為測試數據產(chǎn)生ECC校驗碼,數據是0x00~0xFF,循環(huán)8次產(chǎn)生2048個(gè)數據,數據序列,如圖3所示。
評論