一種NAND Flash存儲芯片的校驗方法及裝置制造方法
【專利摘要】本發(fā)明提供一種NAND?Flash存儲芯片的校驗方法,根據(jù)寫入擴展區(qū)中每頁數(shù)據(jù)的行列異或值、Hash值,比較數(shù)據(jù)區(qū)的數(shù)據(jù)內(nèi)容和計算的數(shù)據(jù)區(qū)的Hash值,能夠糾正一位及兩位錯誤,并能發(fā)現(xiàn)多位錯誤,從而確保存放在NAND?Flash芯片內(nèi)數(shù)據(jù)的完整性及準(zhǔn)確性,起到減少文件系統(tǒng)崩潰的風(fēng)險。
【專利說明】—種NAND Flash存儲芯片的校驗方法及裝置
【技術(shù)領(lǐng)域】
[0001]本發(fā)明屬于通信領(lǐng)域,尤其涉及一種NAND Flash存儲芯片的校驗方法及裝置。
【背景技術(shù)】
[0002]現(xiàn)今,NAND Flash (存儲型快閃記憶本)存儲芯片作為嵌入式領(lǐng)域的一種常見存儲介質(zhì),相比于NOR Flash存儲芯片,NAND Flash存儲芯片具有更快的讀寫速度和能夠存儲更多的數(shù)據(jù)的優(yōu)點。因此,NAND Flash存儲芯片一直以來廣受嵌入式設(shè)備廠商的青睞,但由于NAND Flash存儲芯片不能像NOR Flash (編碼型快閃記憶本)存儲芯片那樣能保持存儲數(shù)據(jù)的高可靠性,從而如何提高NAND Flash存儲芯片內(nèi)存儲數(shù)據(jù)的可靠性,變成了所有使用者的難題。
[0003]NAND Flash芯片的基本構(gòu)成,通常由多個塊組成,每個塊由多個頁組成,每個頁由數(shù)據(jù)區(qū)及Spare area區(qū)組成。塊是作為NAND Flash擦除的最小單位,頁一般作為讀寫的最小單位。對于每個頁上的擴展區(qū)(Spare area區(qū))及數(shù)據(jù)區(qū)(Data area區(qū))而言,數(shù)據(jù)區(qū)主要負(fù)責(zé)存放用戶數(shù)據(jù)信息,而Spare area區(qū)常用來存放糾錯校驗碼。
[0004]常見NAND Flash存儲芯片中存在有三種典型的情況會導(dǎo)致數(shù)據(jù)翻轉(zhuǎn)從而使得數(shù)據(jù)錯誤:
[0005]1、漂移翻轉(zhuǎn)
[0006]漂移翻轉(zhuǎn)指的是,NAND Flash芯片中cell的電壓值慢慢發(fā)生改變,變的和原始值不一樣了。
[0007]2、編程效應(yīng)引起的翻轉(zhuǎn)
[0008]對于某個頁面的編程操作(即擦或?qū)懖僮?,引起非相關(guān)的其他頁面的某個位跳變了。
[0009]3、讀翻轉(zhuǎn)
[0010]此效應(yīng)是,對一個頁進行數(shù)據(jù)讀取操作,卻使得對應(yīng)的某個位的數(shù)據(jù),產(chǎn)生了永久性的變化,即NAND Flash上該位的值發(fā)生改變。
[0011]NAND Flash的工藝特點使其存儲的數(shù)據(jù)在寫入和讀出的時會不一致,因此NANDFlash采用專門的ECC (Error Checking and Correction)校驗算法保證讀出數(shù)據(jù)的正確性。ECC校驗算法能夠針對NAND Flash的一個頁進行一位糾錯和兩位查錯,然而通過高壓力的測試發(fā)現(xiàn),NAND Flash每頁出現(xiàn)兩位錯誤的情況也時有發(fā)生,一旦發(fā)生兩位錯誤時,會導(dǎo)致建立在NAND Flash上的文件系統(tǒng)崩潰,為此急需研究一種校驗算法以減少文件系統(tǒng)崩潰的風(fēng)險。
【發(fā)明內(nèi)容】
[0012]本發(fā)明實施例的目的在于提供一種NAND Flash存儲芯片的校驗方法,解決現(xiàn)有技術(shù)中只能進行一位糾錯及兩位查錯的缺陷。
[0013]一種NAND Flash存儲芯片的校驗方法,所述方法包括:[0014]將NAND Flash存儲芯片每頁中數(shù)據(jù)區(qū)的數(shù)據(jù),對同一行上所有數(shù)據(jù)進行異或運算得到異或值,并對同一列上所有數(shù)據(jù)進行異或運算得到異或值,將行列的異或值寫入所述NAND Flash存儲芯片的擴展區(qū);
[0015]將所述數(shù)據(jù)區(qū)的數(shù)據(jù)進行Hash運算,將運算的結(jié)果存儲雙份到所述擴展區(qū);
[0016]取出所述數(shù)據(jù)區(qū)的數(shù)據(jù),并計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值;
[0017]取出存放在所述擴展區(qū)的行列異或值和雙份Hash值,并對雙份Hash值做運算得到新的Hash值;
[0018]對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash是否相同,若否,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對t匕,獲取出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。
[0019]一種NAND Flash存儲芯片的校驗裝置,所述裝置包括:
[0020]寫入單元,用于將NAND Flash存儲芯片每頁中數(shù)據(jù)區(qū)的數(shù)據(jù),對同一行上所有數(shù)據(jù)進行異或運算得到異或值,并對同一列上所有數(shù)據(jù)進行異或運算得到異或值,將行列的異或值寫入所述NAND Flash存儲芯片的擴展區(qū);
[0021]第一運算單元,用于將所述數(shù)據(jù)區(qū)的數(shù)據(jù)進行Hash運算,將運算的結(jié)果存儲雙份到所述擴展區(qū);
[0022]計算單元,用于取出所述數(shù)據(jù)區(qū)的數(shù)據(jù),并計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值;
[0023]第二運算單元,用于取出存放在所述擴展區(qū)的行列異或值和雙份Hash值,并對雙份Hash值做運算得到新的Hash值;
[0024]糾錯單元,用于對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash是否相同,若否,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對比,獲取出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。
[0025]與現(xiàn)有技術(shù)相比,本發(fā)明提供一種NAND Flash存儲芯片的校驗方法,根據(jù)寫入擴展區(qū)中每頁數(shù)據(jù)的行列異或值、Hash值,比較數(shù)據(jù)區(qū)的數(shù)據(jù)內(nèi)容和計算的數(shù)據(jù)區(qū)的Hash,能夠糾正一位及兩位錯誤,并能發(fā)現(xiàn)多位錯誤,從而確保存放在NAND Flash芯片內(nèi)數(shù)據(jù)的完整性及準(zhǔn)確性,起到減少文件系統(tǒng)崩潰的風(fēng)險。
【專利附圖】
【附圖說明】
[0026]為了更清楚地說明本發(fā)明實施例中的技術(shù)方案,下面將對實施例中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
[0027]圖1是本發(fā)明實施例一提供的一種NAND Flash存儲芯片的校驗方法流程圖;
[0028]圖2是本發(fā)明實施例一提供的一種NAND Flash存儲芯片的校驗方法示意圖;
[0029]圖3是本發(fā)明實施例一提供的一種NAND Flash存儲芯片的校驗方法示意圖;
[0030]圖4是本發(fā)明實施例一提供的一種NAND Flash存儲芯片的校驗方法示意圖;
[0031]圖5是本發(fā)明實施例二提供的一種NAND Flash存儲芯片的校驗裝置結(jié)構(gòu)圖?!揪唧w實施方式】
[0032]為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對本發(fā)明進行進一步詳細(xì)說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅僅用以解釋本發(fā)明,并不用于限定本發(fā)明。
[0033]以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
[0034]實施例一
[0035]參考圖1,圖1是本發(fā)明實施例一提供的一種NAND Flash存儲芯片的校驗方法流程圖,所述方法包括如下步驟:
[0036]步驟101,將NAND Flash存儲芯片每頁中數(shù)據(jù)區(qū)的數(shù)據(jù),對同一行上所有數(shù)據(jù)進行異或運算得到異或值,并對同一列上所有數(shù)據(jù)進行異或運算得到異或值,將行列的異或值寫入所述NAND Flash存儲芯片的擴展區(qū);
[0037]具體的,參考圖2,所述NAND Flash存儲芯片每頁2K Bytes,共16K bits,將其排列成128*128的矩陣,對同一行所有點進行異或運算,得到最終的異或值,因此記錄所有行的異或值需要128bits ;按照相同的方式對列進行處理,最終行列都需要16Bytes,共32Bytes0
[0038]具體的,所述計算行異或值是指將同一行的第一位數(shù)據(jù)和第二位數(shù)據(jù)做異或運算,得到的第一個異或值和同一行的第三位數(shù)據(jù)做異或運算,得到的第二個異或值和同一行的第四位數(shù)據(jù)做異或運算,得到的第三個異或值和同一行的第五位數(shù)據(jù)做異或運算,依次類推,對同一行的128位數(shù)據(jù)做異或運算后,得到的異或值作為該行的異或值。所述128*128共有128個行異或值和128個列異或值,共需要32Bytes存儲空間。
[0039]步驟102,將所述數(shù)據(jù)區(qū)的數(shù)據(jù)進行Hash運算,將運算的結(jié)果存儲雙份到所述擴展區(qū);
[0040]具體的,計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值共20Bytes ;寫入數(shù)據(jù)時,將32Bytes的異或值寫入擴展區(qū)(Spare area區(qū)),并將計算得到的Hash值的前12Bytes重復(fù)的寫入Spare area區(qū),具體的參考圖3所示。其中,取前12Bytes主要是考慮存儲芯片的存儲容量,取Hash值的前12Bytes重復(fù)寫入Spare area區(qū)。重復(fù)寫入是考慮到存儲芯片有可能存儲時的不穩(wěn)定性,需要雙份Hash計算新的Hash值,以避免存儲芯片的不穩(wěn)定行造成的誤差。
[0041]步驟103,取出所述數(shù)據(jù)區(qū)的數(shù)據(jù),并計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值;
[0042]步驟104,取出存放在所述擴展區(qū)的行列異或值和雙份Hash值,并對雙份Hash值做運算得到新的Hash值;
[0043]具體的,對比所述雙份Hash值,若所述雙份Hash在相同的行列位置Hash值同時為O,則取所述相同的行列位置的Hash值為I,否則Hash值為O,得到新的Hash值。
[0044]步驟105,對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值是否相同,若否,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對比,獲取出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。[0045]具體的,當(dāng)所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值不同時,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對比,如,計算后的數(shù)據(jù)區(qū)的第一行數(shù)據(jù)的行異或值對比所述擴展區(qū)的存儲的第一行數(shù)據(jù)的行異或值,當(dāng)計算得到的第一行數(shù)據(jù)的行異或值和存儲的第一行數(shù)據(jù)的異或值不同,則可獲取該行出現(xiàn)錯誤,即獲取第一行是出現(xiàn)錯誤的行;同理,可獲取出現(xiàn)錯誤的列的數(shù)量和位置。若出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列大于2時,則返回錯誤;若出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列小于或者等于2時,則根據(jù)出現(xiàn)錯誤的列和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。
[0046]作為一種可優(yōu)選的實施例,對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值,若相同,貝1J返回正確。
[0047]作為另一種可優(yōu)選的實施例,當(dāng)出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列大于2時,則返回錯誤。
[0048]可優(yōu)選一,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0049]當(dāng)出現(xiàn)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時,根據(jù)所述錯誤行所在的坐標(biāo)確定所述錯誤行所在的位置;
[0050]當(dāng)對所述錯誤行的按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0051]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的數(shù)據(jù)未進行取反的數(shù)據(jù);
[0052]對所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0053]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0054]基于所述可優(yōu)選一的實施例的基礎(chǔ)上,作為另一種可優(yōu)選的實施例,所述方法還包括:
[0055]若對所述錯誤行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0056]可優(yōu)選二,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0057]當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時,根據(jù)出現(xiàn)錯誤的兩行所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩行所在的位置;
[0058]對所述出現(xiàn)錯誤的兩行的其中一列的兩位數(shù)據(jù)同時異或運算時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);[0059]若計算的Hash值和所述新的Hash值不同,則將所述其中一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù);
[0060]對所述出現(xiàn)錯誤的兩行的其中一列的下一列的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一列的下一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0061]若計算的Hash值和所述新的Hash值不同,則將所述其中一列的下一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的下一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0062]基于可優(yōu)選二的實施例,作為另一種可優(yōu)選的實施例,所述方法還包括:
[0063]若對所述出現(xiàn)錯誤的兩行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0064]可優(yōu)選三,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0065]當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時,根據(jù)所述錯誤列所在的坐標(biāo)確定所述錯誤列所在的位置;
[0066]當(dāng)對所述錯誤列的按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0067]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)未進行取反的數(shù)據(jù);
[0068]對所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0069]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0070]基于可優(yōu)選三的實施例,作為另一種可優(yōu)選的實施例,所述方法還包括:
[0071]若對所述錯誤列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0072]可優(yōu)選四,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0073]當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為I時,根據(jù)錯誤行和錯誤列所在的坐標(biāo)確定所述錯誤行和錯誤列所在位置;
[0074]對所述所在的位置的數(shù)據(jù)進行取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);
[0075]若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
[0076]可優(yōu)選五,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0077]當(dāng)出現(xiàn)錯誤列為1,錯誤行為2時,當(dāng)出現(xiàn)在同一錯誤列的兩個錯誤行的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時的步驟;
[0078]當(dāng)出現(xiàn)錯誤為1,錯誤行為2時,并且當(dāng)所述錯誤行中的某一位數(shù)據(jù)錯誤,另一個錯誤行和所述錯誤列對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩行分別執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時的步驟。
[0079]可優(yōu)選六,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0080]當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O時,根據(jù)出現(xiàn)錯誤的兩列所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩列所在的位置;
[0081]對所述出現(xiàn)錯誤的兩列的其中一行的兩位數(shù)據(jù)同時取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0082]若計算的Hash值和所述新的Hash值不同,則將所述其中一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù);
[0083]對所述出現(xiàn)錯誤的兩列的其中一行的下一行的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一行的下一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0084]若計算的Hash值和所述新的Hash值不同,則將所述其中一行的下一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的下一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0085]基于可優(yōu)選六,作為另一種可優(yōu)選的實施例,所述方法還包括:
[0086]若對所述出現(xiàn)錯誤的兩列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0087]可優(yōu)選七,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0088]當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,當(dāng)出現(xiàn)所述同一行的兩個錯誤列的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O的步驟;
[0089]當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,并且當(dāng)所述錯誤列中的某一位數(shù)據(jù)錯誤,另一個錯誤列和所述錯誤行對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩列分別執(zhí)行當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時的步驟。
[0090]可優(yōu)選八,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:
[0091]當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第一錯誤列、第二錯誤行和第二錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤;
[0092]當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第二錯誤列、第二錯誤行和第一錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
[0093]具體的,參考圖4所示的方法示意圖。
[0094]作為另一種可優(yōu)選的實施例,當(dāng)執(zhí)行完上述所有步驟后不能糾錯時,則返回多位錯誤。
[0095]本發(fā)明提供一種NAND Flash存儲芯片的校驗方法,根據(jù)寫入擴展區(qū)中每頁數(shù)據(jù)的行列異或值、Hash值,比較數(shù)據(jù)區(qū)的數(shù)據(jù)內(nèi)容和計算的數(shù)據(jù)區(qū)的Hash,能夠糾正一位及兩位錯誤,并能發(fā)現(xiàn)多位錯誤,從而確保存放在NAND Flash芯片內(nèi)數(shù)據(jù)的完整性及準(zhǔn)確性,起到減少文件系統(tǒng)崩潰的風(fēng)險。
[0096]實施例二
[0097]參考圖5,圖5是本發(fā)明實施例一提供的一種NAND Flash存儲芯片的校驗裝置結(jié)構(gòu)圖,所述裝置包括如下單元:
[0098]寫入單元501,用于將NAND Flash存儲芯片每頁中數(shù)據(jù)區(qū)的數(shù)據(jù),對同一行上所有數(shù)據(jù)進行異或運算得到異或值,并對同一列上所有數(shù)據(jù)進行異或運算得到異或值,將行列的異或值寫入所述NAND Flash存儲芯片的擴展區(qū);
[0099]具體的,參考圖2,所述NAND Flash存儲芯片每頁2K Bytes,共16K bits,將其排列成128*128的矩陣,對同一行所有點進行異或運算,得到最終的異或值,因此記錄所有行的異或值需要128bits ;按照相同的方式對列進行處理,最終行列都需要16Bytes,共32Bytes0
[0100]第一運算單元502,用于將所述數(shù)據(jù)區(qū)的數(shù)據(jù)進行Hash運算,將運算的結(jié)果存儲雙份到所述擴展區(qū);
[0101]具體的,計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值共20Bytes;寫入數(shù)據(jù)時,將32Bytes的異或值寫入擴展區(qū)(Spare area區(qū)),并將計算得到的Hash值的前12Bytes重復(fù)的寫入Spare area區(qū),具體的參考圖3所示。其中,取前12Bytes主要是考慮存儲芯片的存儲容量,取Hash值的前12Bytes重復(fù)寫入Spare area區(qū)。重復(fù)寫入是考慮到存儲芯片有可能存儲時的不穩(wěn)定性,需要雙份Hash計算新的Hash值,以避免存儲芯片的不穩(wěn)定行造成的誤差。
[0102]計算單元503,用于取出所述數(shù)據(jù)區(qū)的數(shù)據(jù),并計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值;
[0103]第二運算單元504,用于取出存放在所述擴展區(qū)的行列異或值和雙份Hash值,并對雙份Hash值做運算得到新的Hash值;
[0104]具體的,對比所述雙份Hash值,若所述雙份Hash在相同的行列位置Hash值同時為O,則取所述相同的行列位置的Hash值為I,否則Hash值為O,得到新的Hash值。
[0105]糾錯單元505,用于對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash是否相同,若否,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對比,獲取出現(xiàn)錯誤的列和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。
[0106]具體的,當(dāng)所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值不同時,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對比,如,計算后的數(shù)據(jù)區(qū)的第一行數(shù)據(jù)的行異或值對比所述擴展區(qū)的存儲的第一行數(shù)據(jù)的行異或值,當(dāng)計算得到的第一行數(shù)據(jù)的行異或值和存儲的第一行數(shù)據(jù)的異或值不同,則可獲取該行是出現(xiàn)錯誤的行;同理,可獲取出現(xiàn)錯誤的列的數(shù)量和位置。若出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列大于2時,則返回錯誤;若出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列小于或者等于2時,則根據(jù)出現(xiàn)錯誤的列和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。
[0107]作為一種可優(yōu)選的實施例,所述裝置還包括:
[0108]返回單元,用于當(dāng)對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值相同時,則返回正確。
[0109]作為另一種可優(yōu)選的實施例,所述返回單元包括:
[0110]當(dāng)出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列大于2時,則返回錯誤。
[0111]可優(yōu)選一,所述糾錯單元505,包括:
[0112]當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時,根據(jù)所述錯誤行所在的坐標(biāo)確定所述錯誤行所在的位置;
[0113]當(dāng)對所述錯誤行的按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0114]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)未進行取反的數(shù)據(jù);
[0115]對所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0116]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0117]基于所述可優(yōu)選一的實施例的基礎(chǔ)上,作為另一種可優(yōu)選的實施例,所述裝置還包括第一返回單元506,包括:
[0118]若對所述錯誤行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0119]可優(yōu)選二,所述糾錯單元505,包括:
[0120]當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時,根據(jù)出現(xiàn)錯誤的兩行所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩行所在的位置;
[0121]對所述出現(xiàn)錯誤的兩行的其中一列的兩位數(shù)據(jù)同時取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,貝U返回正確,并保留所述其中一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0122]若計算的Hash值和所述新的Hash值不同,則將所述其中一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù);
[0123]對所述出現(xiàn)錯誤的兩行的其中一列的下一列的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一列的下一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0124]若計算的Hash值和所述新的Hash值不同,則將所述其中一列的下一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的下一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0125]基于可優(yōu)選二的實施例,作為另一種可優(yōu)選的實施例,所述裝置還包括第二返回單元507,包括:
[0126]若對所述出現(xiàn)錯誤的兩行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0127]可優(yōu)選三,所述糾錯單元505,包括:
[0128]當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時,根據(jù)所述錯誤列所在的坐標(biāo)確定所述錯誤列所在的位置;
[0129]當(dāng)對所述錯誤列的按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0130]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)未進行取反的數(shù)據(jù);
[0131]對所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0132]若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0133]基于可優(yōu)選三的實施例,作為另一種可優(yōu)選的實施例,所述裝置還包括第三返回單元508,包括:
[0134]若對所述錯誤列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0135]可優(yōu)選四,所述糾錯單元505,包括:
[0136]當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為I時,根據(jù)錯誤行和錯誤列所在的坐標(biāo)確定所述錯誤行和錯誤列所在位置;
[0137]對所述所在的位置的數(shù)據(jù)進行取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);
[0138]若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
[0139]可優(yōu)選五,所述糾錯單元505,包括:
[0140]當(dāng)出現(xiàn)錯誤列為1,錯誤行為2時,當(dāng)出現(xiàn)在同一錯誤列的兩個錯誤行的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時的步驟;
[0141]當(dāng)出現(xiàn)錯誤為1,錯誤行為2時,并且當(dāng)所述錯誤行中的某一位數(shù)據(jù)錯誤,另一個錯誤行和所述錯誤列對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩行分別執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時的步驟。
[0142]可優(yōu)選六,所述糾錯單元506,包括:
[0143]當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O時,根據(jù)出現(xiàn)錯誤的兩列所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩列所在的位置;
[0144]對所述出現(xiàn)錯誤的兩列的其中一行的兩位數(shù)據(jù)同時取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0145]若計算的Hash值和所述新的Hash值不同,則將所述其中一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù);
[0146]對所述出現(xiàn)錯誤的兩列的其中一行的下一行的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一行的下一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù);
[0147]若計算的Hash值和所述新的Hash值不同,則將所述其中一行的下一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的下一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
[0148]基于可優(yōu)選六,作為另一種可優(yōu)選的實施例,所述裝置還包括第四返回單元509,包括:
[0149]若對所述出現(xiàn)錯誤的兩列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
[0150]可優(yōu)選七,所述糾錯單元505,包括:
[0151]當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,當(dāng)出現(xiàn)所述同一行的兩個錯誤列的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O的步驟;
[0152]當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,并且當(dāng)所述錯誤列中的某一位數(shù)據(jù)錯誤,另一個錯誤列和所述錯誤行對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩列分別執(zhí)行當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時的步驟。
[0153]可優(yōu)選八,所述糾錯單元505,包括:
[0154]當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第一錯誤列、第二錯誤行和第二錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤;
[0155]當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第二錯誤列、第二錯誤行和第一錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
[0156]具體的,參考圖4所示的方法示意圖。
[0157]作為另一種可優(yōu)選的實施例,當(dāng)執(zhí)行完上述所有單元后不能糾錯時,則返回多位錯誤。
[0158]本發(fā)明提供一種NAND Flash存儲芯片的校驗裝置,根據(jù)寫入擴展區(qū)中每頁數(shù)據(jù)的行列異或值、Hash值,比較數(shù)據(jù)區(qū)的數(shù)據(jù)內(nèi)容和計算的數(shù)據(jù)區(qū)的Hash,能夠糾正一位及兩位錯誤,并能發(fā)現(xiàn)多位錯誤,從而確保存放在NAND Flash芯片內(nèi)數(shù)據(jù)的完整性及準(zhǔn)確性,起到減少文件系統(tǒng)崩潰的風(fēng)險。
[0159]最后應(yīng)說明的是:以上各實施例僅用以說明本發(fā)明的技術(shù)方案,而非對其限制;盡管參照前述各實施例對本發(fā)明進行了詳細(xì)的說明,本領(lǐng)域的普通技術(shù)人員應(yīng)當(dāng)理解:其依然可以對前述各實施例所記載的技術(shù)方案進行修改,或者對其中部分或者全部技術(shù)特征進行等同替換;而這些修改或者替換,并不使相應(yīng)技術(shù)方案的本質(zhì)脫離本發(fā)明各實施例技術(shù)方案的范圍。
【權(quán)利要求】
1.一種NAND Flash存儲芯片的校驗方法,所述方法包括: 將NAND Flash存儲芯片每頁中數(shù)據(jù)區(qū)的數(shù)據(jù),對同一行上所有數(shù)據(jù)進行異或運算得到異或值,并對同一列上所有數(shù)據(jù)進行異或運算得到異或值,將行列的異或值寫入所述NANDFlash存儲芯片的擴展區(qū); 將所述數(shù)據(jù)區(qū)的數(shù)據(jù)進行Hash運算,將運算的結(jié)果存儲雙份到所述擴展區(qū); 取出所述數(shù)據(jù)區(qū)的數(shù)據(jù),并計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值; 取出存放在所述擴展區(qū)的行列異或值和雙份Hash值,并對雙份Hash值做運算得到新的Hash值; 對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值是否相同,若否,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對比,獲取出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,所述方法還包括: 當(dāng)對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值相同時,則返回正確。
3.根據(jù)權(quán)利要求1或2所述的方法,其特征在于,所述方法還包括: 當(dāng)出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列大于2時,則返回錯誤。
4.根據(jù)權(quán)利要求3所述的方法,其特征在于,所述對雙份Hash值做運算得到新的Hash值,包括: 對比所述雙份Hash值,若所述雙份Hash在相同的行列位置Hash值同時為O,則取所述相同的行列位置的Hash值為I,否則Hash值為O,得到新的Hash值。
5.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括: 當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時,根據(jù)所述錯誤行所在的坐標(biāo)確定所述錯誤行所在的位置; 當(dāng)對所述錯誤行按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)未進行取反的數(shù)據(jù); 對所述按照預(yù)先設(shè)置的順序?qū)λ鲰樞虻牡谝晃粩?shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
6.根據(jù)權(quán)利要求5所述的方法,其特征在于,所述方法還包括: 若對所述錯誤行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
7.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括: 當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時,根據(jù)出現(xiàn)錯誤的兩行所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩行所在的位置; 對所述出現(xiàn)錯誤的兩行的其中一列的兩位數(shù)據(jù)同時取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,貝U返回正確,并保留所述其中一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù); 對所述出現(xiàn)錯誤的兩行的其中一列的下一列的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一列的下一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一列的下一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的下一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
8.根據(jù)權(quán)利要求7所述的方法,其特征在于,所述方法還包括: 若對所述出現(xiàn)錯誤的兩行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
9.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯·,包括: 當(dāng)出現(xiàn)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時,根據(jù)所述錯誤列所在的坐標(biāo)確定所述錯誤列所在的位置; 當(dāng)對所述錯誤列的按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)未進行取反的數(shù)據(jù); 對所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
10.根據(jù)權(quán)利要求9所述的方法,其特征在于,所述方法還包括: 若對所述錯誤列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
11.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括:當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為I時,根據(jù)錯誤行和錯誤列所在的坐標(biāo)確定所述錯誤行和錯誤列所在位置; 對所述所在的位置的數(shù)據(jù)進行取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
12.根據(jù)權(quán)利要求11所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括: 當(dāng)出現(xiàn)錯誤列為1,錯誤行為2時,當(dāng)出現(xiàn)在同一錯誤列的兩個錯誤行的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時的步驟; 當(dāng)出 現(xiàn)錯誤為1,錯誤行為2時,并且當(dāng)所述錯誤行中的某一位數(shù)據(jù)錯誤,另一個錯誤行和所述錯誤列對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩行分別執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時的步驟。
13.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括: 當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O時,根據(jù)出現(xiàn)錯誤的兩列所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩列所在的位置; 對所述出現(xiàn)錯誤的兩列的其中一行的兩位數(shù)據(jù)同時取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,貝U返回正確,并保留所述其中一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù); 對所述出現(xiàn)錯誤的兩列的其中一行的下一行的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一行的下一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一行的下一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的下一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
14.根據(jù)權(quán)利要求13所述的方法,其特征在于,所述方法還包括: 若對所述出現(xiàn)錯誤的兩列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
15.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括: 當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,當(dāng)出現(xiàn)所述同一行的兩個錯誤列的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O的步驟; 當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,并且當(dāng)所述錯誤列中的某一位數(shù)據(jù)錯誤,另一個錯誤列和所述錯誤行對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩列分別執(zhí)行當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時的步驟。
16.根據(jù)權(quán)利要求4所述的方法,其特征在于,所述根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯,包括: 當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第一錯誤列、第二錯誤行和第二錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤; 當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第二錯誤列、第二錯誤行和第一錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
17.一種NAND Flash存儲芯片的校驗裝置,所述裝置包括: 寫入單元,用于將NAND Flash存儲芯片每頁中數(shù)據(jù)區(qū)的數(shù)據(jù),對同一行上所有數(shù)據(jù)進行異或運算得到異或值,并對同一列上所有數(shù)據(jù)進行異或運算得到異或值,將行列的異或值寫入所述NAND Flash存儲芯片的擴展區(qū); 第一運算單元,用于將所述數(shù)據(jù)區(qū)的數(shù)據(jù)進行Hash運算,將運算的結(jié)果存儲雙份到所述擴展區(qū); 計算單元,用于取出所述數(shù)據(jù)區(qū)的數(shù)據(jù),并計算所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值; 第二運算單元,用于取出存放在所述擴展區(qū)的行列異或值和雙份Hash值,并對雙份Hash值做運算得到新的Hash值; 糾錯單元,用于對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash是否相同,若否,則對所述數(shù)據(jù)區(qū)的數(shù)據(jù)做行列異或運算,并將運算后的行列異或值和所述擴展區(qū)的行列異或值進行對比,獲取出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置,并根據(jù)出現(xiàn)錯誤的行和出現(xiàn)錯誤的列的數(shù)量和位置進行糾錯。
18.根據(jù)權(quán)利要求17所述的裝置,其特征在于,所述裝置還包括: 返回單元,用于當(dāng)對比所述數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值和所述新的Hash值相同時,則返回正確。
19.根據(jù)權(quán)利要求17或18所述的裝置,其特征在于,所述返回單元,包括: 當(dāng)出現(xiàn)錯誤的行或者出現(xiàn)錯誤的列大于2時,則返回錯誤。
20.根據(jù)權(quán)利要求19所述的裝置,其特征在于,所述第二運算單元,包括: 對比所述雙份Hash值,若所述雙份Hash在相同的行列位置Hash值同時為O,則取所述相同的行列位置的Hash值為I,否則Hash值為O,得到新的Hash值。
21.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述糾錯單元,包括: 當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時,根據(jù)所述錯誤行所在的坐標(biāo)確定所述錯誤行所在的位置; 當(dāng)對所述錯誤行的按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)未進行取反的數(shù)據(jù);對所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
22.根據(jù)權(quán)利要求21所述的裝置,其特征在于,所述裝置還包括第一返回單元,所述第一返回單元包括: 若對所述錯誤行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
23.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述糾錯單元,包括: 當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時,根據(jù)出現(xiàn)錯誤的兩行所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩行所在的位置; 對所述出現(xiàn)錯誤的兩行的其中一列的兩位數(shù)據(jù)同時取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,貝U返回正確,并保留所述其中一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù); 對所述出現(xiàn)錯誤的兩行的其中一列的下一列的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一列的下一列的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一列的下一列的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一列的下一列的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
24.根據(jù)權(quán)利要求23所述的裝置,其特征在于,所述裝置還包括第二返回單元,包括: 若對所述出現(xiàn)錯誤的兩行的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
25.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述糾錯單元,包括: 當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時,根據(jù)所述錯誤列所在的坐標(biāo)確定所述錯誤列所在的位置; 當(dāng)對所述錯誤列的按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)做取反后,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)未進行取反的數(shù)據(jù); 對所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,則將所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述按照預(yù)先設(shè)置的順序從所述順序的第一位數(shù)據(jù)的下一位的數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
26.根據(jù)權(quán)利要求25所述的裝置,其特征在于,所述裝置還包括第三返回單元,所述第三返回單元包括: 若對所述錯誤列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
27.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述糾錯單元,包括: 當(dāng)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為I時,根據(jù)錯誤行和錯誤列所在的坐標(biāo)確定所述錯誤行和錯誤列所在位置; 對所述所在的位置的數(shù)據(jù)進行取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
28.根據(jù)權(quán)利要求27所述的裝置,其特征在于,所述糾錯單元,包括: 當(dāng)出現(xiàn)錯誤列為1,錯誤行為2時,當(dāng)出現(xiàn)在同一錯誤列的兩個錯誤行的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為2時的步驟; 當(dāng)出現(xiàn)錯誤為1,錯誤行為2時,并且當(dāng)所述錯誤行中的某一位數(shù)據(jù)錯誤,另一個錯誤行和所述錯誤列對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩行分別執(zhí)行當(dāng)出現(xiàn)錯誤的列為O、出現(xiàn)錯誤的行為I時的步驟。`
29.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述糾錯單元,包括: 當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O時,根據(jù)出現(xiàn)錯誤的兩列所在的坐標(biāo)確定所述出現(xiàn)錯誤的兩列所在的位置; 對所述出現(xiàn)錯誤的兩列的其中一行的兩位數(shù)據(jù)同時取反時,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,貝U返回正確,并保留所述其中一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù); 對所述出現(xiàn)錯誤的兩列的其中一行的下一行的兩位數(shù)據(jù)同時做取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述其中一行的下一行的兩位數(shù)據(jù)進行取反后的數(shù)據(jù); 若計算的Hash值和所述新的Hash值不同,則將所述其中一行的下一行的兩位數(shù)據(jù)恢復(fù)到原先數(shù)據(jù),所述原先數(shù)據(jù)是所述其中一行的下一行的兩位數(shù)據(jù)未進行取反的數(shù)據(jù),依次類推。
30.根據(jù)權(quán)利要求29所述的裝置,其特征在于,所述裝置還包括第四返回單元,所述第四返回單元包括: 若對所述出現(xiàn)錯誤的兩列的所有位數(shù)據(jù)依次做取反后,當(dāng)計算的Hash值和所述新的Hash值都不相同時,則返回錯誤。
31.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述糾錯單元,包括:當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,當(dāng)出現(xiàn)所述同一行的兩個錯誤列的數(shù)據(jù)時,執(zhí)行當(dāng)出現(xiàn)錯誤的列為2、出現(xiàn)錯誤的行為O的步驟; 當(dāng)出現(xiàn)錯誤列為2,錯誤行為I時,并且當(dāng)所述錯誤列中的某一位數(shù)據(jù)錯誤,另一個錯誤列和所述錯誤行對應(yīng)的點所在的位置的數(shù)據(jù)錯誤時,對所述出現(xiàn)錯誤的兩列分別執(zhí)行當(dāng)出現(xiàn)出現(xiàn)錯誤的列為1、出現(xiàn)錯誤的行為O時的步驟。
32.根據(jù)權(quán)利要求20所述的裝置,其特征在于,所述糾錯單元,包括: 當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第一錯誤列、第二錯誤行和第二錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤; 當(dāng)出現(xiàn)錯誤行為2,錯誤列為2時,當(dāng)?shù)谝诲e誤行和第二錯誤列、第二錯誤行和第一錯誤列坐標(biāo)對應(yīng)的數(shù)據(jù)進行取反,計算整個數(shù)據(jù)區(qū)的數(shù)據(jù)的Hash值,若計算的Hash值和所述新的Hash值相同,則 返回正確,并保留所述所述所在的位置的數(shù)據(jù)進行取反后的數(shù)據(jù);若計算的Hash值和所述新的Hash值不同,否則返回錯誤。
【文檔編號】G11C29/42GK103578565SQ201210468353
【公開日】2014年2月12日 申請日期:2012年11月19日 優(yōu)先權(quán)日:2012年7月19日
【發(fā)明者】萬籟民, 韋獻康, 劉紹海 申請人:百富計算機技術(shù)(深圳)有限公司