<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > EDA/PCB > 設(shè)計應(yīng)用 > 基于FPGA的NAND Flash ECC校驗

          基于FPGA的NAND Flash ECC校驗

          作者: 時間:2011-07-13 來源:網(wǎng)絡(luò) 收藏

          b.JPG


          當(dāng)數(shù)據(jù)包發(fā)生錯誤時,錯誤檢測和更正所使用的方法與先前所描述的方法相似,這里仍以1 bit錯誤來說明校驗過程,具體如圖8所示。
          經(jīng)步驟1~步驟4的計算,新的數(shù)據(jù)包存在錯誤且出錯位置為“110010”,由于前面將字節(jié)校驗碼設(shè)為值的高位,比特校驗碼設(shè)為低位,因此,“110010”的高有效位表示出錯的字節(jié)地址,低有效位代表出錯的比特地址,即字節(jié)地址為6、比特地址為2的數(shù)據(jù)發(fā)生了錯誤,與設(shè)定的錯誤情況相符。此時,只需將該位的數(shù)據(jù)比特與“1”異或即可完成數(shù)據(jù)包的修正。

          e.JPG


          將8 Byte數(shù)據(jù)包擴展到512 Byte數(shù)據(jù)包,雖然數(shù)據(jù)量大大增加,但僅添加了數(shù)據(jù)分割的情況,算法仍然一樣。計算所得奇偶數(shù)據(jù)均為12 bit長,其中,3個低有效位代表bit地址(7~0),9個高有效位代表512Byte的地址(255~0)。

          3 實驗分析
          本實驗處理對像為256 Byte的數(shù)據(jù)包,對其進行校驗共生成22 bit校驗數(shù)據(jù)。為方便讀取,可以在末尾添加兩位,形成完整的3Byte校驗數(shù)據(jù)。這3 Byte共24 bit,分成兩部分:6 bit的比特校驗和16 bit的字節(jié)校驗,多余的兩個比特置1并置于校驗碼的最低位,在進行異或操作時此兩比特忽略。
          當(dāng)往 頁中寫人數(shù)據(jù)時,每256 bit生成一個ECC校驗,稱之為原ECC校驗和,并保存到頁的OOB數(shù)據(jù)區(qū)中;當(dāng)從 中讀取數(shù)據(jù)的時,每256 bit又生成一個新ECC校驗,稱之為新的ECC校驗和。校驗時,將從OOB區(qū)中讀出的原ECC校驗和與新ECC校驗和并執(zhí)行按位異或操作,若計算結(jié)果為全“0”,則表示不存在出錯,并將出錯狀態(tài)變量errSTATUS賦值為“00”;若結(jié)果為全“1”,表示出現(xiàn)1個比特錯誤,將errSTATUS賦值為01”并進行糾正;除全“0”和全“1”外的其他情況將errSTATUS賦值為“10”表示出現(xiàn)了無法糾正的2 bit錯誤,如表1所示。

          l.JPG


          實驗仿真環(huán)境為Altera Quartus II 7.0,編程語言為VHDL。VHDL語言為硬件編程語言,具有并行處理的特點,而原程序中有大量的需要并行處理的異或操作,因此程序執(zhí)行效率高,非常有利于硬件實現(xiàn)。



          關(guān)鍵詞: Flash FPGA NAND ECC

          評論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();