欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種錯誤檢查與糾正能力的測試方法及裝置的制作方法

文檔序號:6604463閱讀:198來源:國知局
專利名稱:一種錯誤檢查與糾正能力的測試方法及裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及計算機及嵌入式領(lǐng)域,特別是涉及錯誤檢查與糾正能力的測試方法及
直O(jiān)
背景技術(shù)
Nand-flash是閃存的一種,其內(nèi)部采用非線性宏單元模式,為固態(tài)大容量內(nèi)存的實現(xiàn)提供了廉價有效的解決方案。Nand-flash具有成本較低、容量較大,改寫速度較快等優(yōu)點,適用于大量數(shù)據(jù)的存儲,因而在業(yè)界得到了越來越廣泛的認同。隨著人們持續(xù)追求功耗更低、重量更輕和性能更佳的產(chǎn)品,Nand-flash被愈加廣泛地應(yīng)用于移動多媒體設(shè)備上, 用于存儲應(yīng)用程序或在之上建立文件系統(tǒng)存儲多媒體數(shù)據(jù),如嵌入式產(chǎn)品中的數(shù)碼相機、 MP3 (Moving PictureExperts Group Audio Layer III,動態(tài)影像專家壓縮標準音頻層面 3) 隨身聽、記憶卡等。由于Nand-flash中存放的資料較多,結(jié)構(gòu)相對復雜,出錯的幾率也相應(yīng)增加,這樣就會使程序和文件資源很容易遭到破壞。因此,必須對Nand-flash進行錯誤糾正。現(xiàn)在普遍采用錯誤檢查與糾正(Error Checking and Correcting, ECC)算法對Nand-flash進行糾錯。ECC算法是通過在原始的數(shù)據(jù)位基礎(chǔ)上增加ECC數(shù)據(jù)(或稱校驗位)來實現(xiàn)的。 對Nand-flash操作(讀取或?qū)懭霐?shù)據(jù))時如果出現(xiàn)了 ECC算法的糾錯能力范圍之內(nèi)的錯誤,則ECC算法可以自動識別錯誤并將其更正,使系統(tǒng)得以持續(xù)正常的操作,這樣就能大大提高使用Nand-flash運行的安全性及穩(wěn)定性。綜上所述可以看出,ECC算法對于Nand-flash是否能安全穩(wěn)定運行起著至關(guān)重要的作用。關(guān)于ECC算法的糾錯能力,有理論上定義的糾錯值,而對于ECC算法是否能達到此理論糾錯值,現(xiàn)有技術(shù)中并未給出具體的測試方案。因此,需要對ECC算法的糾錯能力進行測試評估,以判斷ECC算法是否能達到其理論糾錯值,滿足糾錯需求。

發(fā)明內(nèi)容
本發(fā)明實施例提供一種ECC算法的糾錯能力的測試方法,用于實現(xiàn)對ECC算法的糾錯能力的測試,從而獲知ECC算法是否能較好的完成糾錯任務(wù)。一種ECC算法糾正能力的測試方法,包括以下步驟根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯,獲得糾錯后的數(shù)據(jù);所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的;將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,并根據(jù)比對結(jié)果獲知ECC算法的糾錯能力。一種ECC算法糾正能力的測試裝置,包括ECC算法模塊,用于根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯;所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)
5制造錯誤后獲得的;校驗模塊,用于將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,并根據(jù)比對結(jié)果獲知ECC 算法的糾錯能力。本發(fā)明實施例根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯, 獲得糾錯后的數(shù)據(jù);所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的;將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,可以獲知ECC 算法糾正了多少處錯誤,從而獲知ECC算法是否能達到其理論糾錯值,進而可以根據(jù)ECC算法的糾錯能力選擇與其相適應(yīng)的Nand-flash,以提高Nand-flash運行的安全性及穩(wěn)定性。 并且,對于無法達到理論糾錯值的ECC算法,可以采取測試等手段,檢測可能出現(xiàn)紕漏之處并加以改進,以提高ECC算法的糾錯能力。


圖1為本發(fā)明實施例中ECC糾錯能力測試裝置的主要結(jié)構(gòu)圖;圖2A為本發(fā)明實施例中ECC糾錯能力測試裝置的詳細結(jié)構(gòu)圖;圖2B為本發(fā)明實施例中當獲取ECC數(shù)據(jù)的過程用硬件實現(xiàn)時ECC糾錯能力測試裝置的詳細結(jié)構(gòu)圖;圖3為本發(fā)明實施例中ECC糾錯能力測試的主要方法流程圖;圖4為本發(fā)明實施例中當獲取ECC數(shù)據(jù)的過程用軟件實現(xiàn)時ECC糾錯能力測試的詳細方法流程圖;圖5為本發(fā)明實施例中當獲取ECC數(shù)據(jù)的過程用硬件實現(xiàn)時ECC糾錯能力測試的詳細方法流程圖;圖6為本發(fā)明實施例中對ECC數(shù)據(jù)制造錯誤時ECC糾錯能力測試的詳細方法流程圖。
具體實施例方式本發(fā)明實施例根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯, 獲得糾錯后的數(shù)據(jù);所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的;將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,可以獲知ECC 糾正了多少處錯誤,從而獲知ECC算法的糾錯能力。本實施例中,存在錯誤的測試數(shù)據(jù)包括對正確的原始數(shù)據(jù)制造錯誤后獲得的存在錯誤的原始數(shù)據(jù)和/或?qū)φ_的ECC數(shù)據(jù)制造錯誤后獲得的存在錯誤的ECC數(shù)據(jù)。本發(fā)明實施例中的原始數(shù)據(jù)是指最初獲得的數(shù)據(jù),未制造錯誤,默認為正確的數(shù)據(jù);ECC數(shù)據(jù)是指根據(jù)數(shù)據(jù)(如原始數(shù)據(jù)等)和ECC算法進行計算后獲得的數(shù)據(jù),并且可以根據(jù)ECC算法和依據(jù)正確數(shù)據(jù)獲得的正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯。參見圖1,本發(fā)明實施例提供一種用于測試ECC能力的裝置。其包括ECC算法模塊 101及校驗模塊102。所述的裝置可以具體為Nand-flash控制器(NFC)等。ECC算法模塊101用于根據(jù)ECC算法和依據(jù)正確數(shù)據(jù)獲得的正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯。其中,ECC算法模塊101的糾錯功能如下獲得正確數(shù)據(jù)對應(yīng)的第一 ECC數(shù)據(jù),以及獲得存在錯誤的測試數(shù)據(jù)對應(yīng)的第二 ECC數(shù)據(jù),將第一 ECC數(shù)據(jù)與第二 ECC數(shù)據(jù)進行比較。如果兩份ECC數(shù)據(jù)不相同,則對兩份ECC數(shù)據(jù)進行解碼,獲得解碼后的正確數(shù)據(jù)和解碼后的存在錯誤的測試數(shù)據(jù),并將解碼后的正確數(shù)據(jù)和解碼后的存在錯誤的測試數(shù)據(jù)進行比較,當有數(shù)據(jù)位不相同時,對存在錯誤的測試數(shù)據(jù)中的該數(shù)據(jù)位進行糾錯,獲得糾錯后的數(shù)據(jù)。由于獲得ECC數(shù)據(jù)過程、解碼過程和糾錯過程都可能存在失誤,以及受ECC算法本身的局限,所以ECC算法只能對一定范圍內(nèi)的錯誤進行糾錯,而該能力范圍目前只局限于理論值,故本實施例需要對其實際的糾錯能力進行測試。由于需要對ECC算法的糾錯能力進行測試,所以還需要校驗模塊102進行校驗。ECC算法可以有多種,如漢明碼和RS碼等,不一一列舉,所有ECC算法均適用于本實施例。其中,獲得ECC數(shù)據(jù)的過程可以用軟件實現(xiàn),也可以用硬件實現(xiàn)。校驗模塊102用于將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對。如果糾錯后的數(shù)據(jù)中第一比特位與正確數(shù)據(jù)中第二比特位一致,則確定該處糾正正確;如果兩者不一致,則確定此處未糾正;如果糾錯后的數(shù)據(jù)中原來正確的比特位與正確數(shù)據(jù)中相應(yīng)的比特位不一致,則確定此處將本來正確的比特位值糾正成錯誤的值。由此可以獲得ECC算法的糾錯能力,其中,第一比特位為制造過錯誤的比特位,第二比特位為與第一比特位相應(yīng)位置的比特位。具體的,可以通過多項指標來評估ECC算法的糾錯能力。如糾正正確的比特數(shù),未能糾正的比特數(shù)、ECC將本來正確的數(shù)據(jù)成錯誤數(shù)據(jù)的比特數(shù)及糾正了的比特位的總數(shù)(糾正正確的比特數(shù)與糾正錯誤的比特數(shù)之和為進行糾正了的比特位的總數(shù))中的一項或多項。還可以將上述指標分別與正確數(shù)據(jù)的比特總數(shù)做計算,得到計算結(jié)果,以此來評估ECC算法的糾錯能力。其中,可以有多種計算方式,例如計算糾正正確的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正正確率;計算未糾正的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為未糾正率;計算將本來正確的數(shù)據(jù)糾正成錯誤數(shù)據(jù)的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正失誤率;計算已糾正的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正率。為了提高測試的準確度,ECC算法模塊101對多份存在錯誤的測試數(shù)據(jù)進行糾錯, 得到多份糾錯后的數(shù)據(jù)。校驗模塊102針對多份糾錯后的數(shù)據(jù)得到多個測試結(jié)果。以及, 校驗模塊102還用于根據(jù)多次測試的測試結(jié)果計算最終測試結(jié)果。此計算最終測試結(jié)果的方式可以是對多次測試結(jié)果求平均值等。為了使實現(xiàn)模式更加優(yōu)化,所述裝置還包括輸出模塊103和第一存儲模塊104,參見圖2A。輸出模塊103用于接收校驗模塊102計算出的結(jié)果并輸出。輸出方式可以是輸出到本地并存儲,也可以是輸出到終端顯示設(shè)備供用戶查看,還可以是其它方式。其中,可以是自動輸出,也可以是收到輸出指令后輸出。第一存儲模塊104用于存儲存在錯誤的測試數(shù)據(jù)、正確數(shù)據(jù)、糾錯后的數(shù)據(jù)和存在錯誤的比特位的位置信息等。當獲得ECC數(shù)據(jù)的過程用硬件實現(xiàn)時,根據(jù)數(shù)據(jù)和ECC算法進行計算后獲得的ECC 數(shù)據(jù)被保存在硬件電路中,此時ECC數(shù)據(jù)或許只是一些高低電平的信號,是不可見的。因此需要將原始數(shù)據(jù)寫入存儲模塊,根據(jù)存儲模塊中的原始數(shù)據(jù)和ECC算法進行計算,得到ECC數(shù)據(jù),如果硬件電路中帶有模數(shù)轉(zhuǎn)換功能,則將以電平信號獲得的ECC數(shù)據(jù)通過模數(shù)轉(zhuǎn)換獲得數(shù)字信號后存儲在寄存器中,再將得到的數(shù)字形式的ECC數(shù)據(jù)從寄存器中讀出;如果硬件電路不帶模數(shù)轉(zhuǎn)換功能,則讀模塊需帶有模數(shù)轉(zhuǎn)換功能,將以電平信號獲得的ECC數(shù)據(jù)轉(zhuǎn)換為數(shù)字信號,獲得數(shù)字形式的ECC數(shù)據(jù),以獲得本來不可見的ECC數(shù)據(jù)。因此,所述裝置還包括寫模塊105、讀模塊106和控制模塊108。所述裝置還可以與第二存儲模塊107相連接。參見圖2B所示。寫模塊105用于將正確數(shù)據(jù)和/或存在錯誤的測試數(shù)據(jù)等寫入第二存儲模塊107。讀模塊106用于從第二存儲模塊107中讀取數(shù)據(jù),以及讀取ECC算法模塊101通過硬件方式獲得的ECC數(shù)據(jù)??刂颇K108用于格式化第二存儲模塊107。第二存儲模塊107用于存儲數(shù)據(jù)。第二存儲模塊107具體可以是Nand-flash等。下面通過實現(xiàn)流程來介紹ECC糾錯能力的測試方法。參見圖3,ECC糾錯能力測試的主要方法流程如下可以從本地(如存儲器中)獲取存在錯誤的測試數(shù)據(jù),或者從其它外部設(shè)備中獲取存在錯誤的測試數(shù)據(jù),或者以其它方式獲取存在錯誤的測試數(shù)據(jù)。步驟301 根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯,獲得糾錯后的數(shù)據(jù)。所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的。其中,對于如何對數(shù)據(jù)制造錯誤,可以是人為制造錯誤,或者計算機隨機制造錯誤,還可以是其它方式制造錯誤。制造錯誤時,盡量使錯誤比特位在數(shù)據(jù)中離散分布,如果錯誤分布過于集中,則測試出的ECC算法的糾錯能力可能不夠準確;并且,制造錯誤的比特位的數(shù)量最好不低于ECC算法的理論糾錯能力值,如果制造錯誤的比特位的數(shù)值低于ECC 算法的理論糾錯能力值,則ECC算法有可能將錯誤全部糾正過來,而此時得出的ECC算法的糾錯能力可能低于ECC算法的真實能力。步驟302 將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,并根據(jù)比對結(jié)果獲知ECC算法的糾錯能力。可以在制造錯誤時記錄錯誤的比特的位置,此記錄信息可以保存在第一存儲模塊 104中。當進行比對時,可以只針對這些錯誤的比特位進行比對。當需要獲得較為詳細的測試結(jié)果時,則可以將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)的每一個比特位進行比對。還可以有其它的實現(xiàn)方式,如不記錄錯誤的比特的位置,而是將正確數(shù)據(jù)、存在錯誤的測試數(shù)據(jù)和糾錯后的數(shù)據(jù)三者進行比對。如果正確數(shù)據(jù)與存在錯誤的測試數(shù)據(jù)相應(yīng)位置的比特位不一致,確定此處制造了錯誤,如果糾錯后的數(shù)據(jù)中此處的比特位與正確數(shù)據(jù)中一致,確定此處糾正正確,如果糾錯后的數(shù)據(jù)中該比特位與正確數(shù)據(jù)中不一致,確定此處未糾正;如果正確數(shù)據(jù)與存在錯誤的測試數(shù)據(jù)相應(yīng)位置的比特位一致,確定此處未制造錯誤,如果糾錯后的數(shù)據(jù)中該比特位與正確數(shù)據(jù)中不一致,確定此處將本來正確的數(shù)據(jù)糾正成錯誤數(shù)據(jù)。因為可能存在各種隨機或是不可控制的原因,只進行一次或幾次測試不能保證測試結(jié)果的準確性。因此,為了使測試結(jié)果更為準確可靠,可以重復執(zhí)行步驟301-302,進行大批量的測試過程??梢圆捎脤γ看蔚臏y試結(jié)果求平均值的方法來獲得最終測試結(jié)果。也可以采用其它方法來獲得最終測試結(jié)果。
存在錯誤的測試數(shù)據(jù)包括對正確的原始數(shù)據(jù)制造錯誤后獲得的存在錯誤的原始數(shù)據(jù)和/或?qū)φ_的ECC數(shù)據(jù)制造錯誤后獲得的存在錯誤的ECC數(shù)據(jù)。如果ECC算法支持 ECC數(shù)據(jù)本身有錯,則也可以對ECC數(shù)據(jù)制造錯誤,否則只能對原始數(shù)據(jù)制造錯誤。并且,獲得ECC數(shù)據(jù)的過程可以由軟件實現(xiàn)或硬件實現(xiàn)。下面通過三個實施例來詳細介紹測試ECC 算法糾錯能力的實現(xiàn)過程。本發(fā)明實施例為ECC算法模塊101用軟件方式獲得ECC數(shù)據(jù)時的測試流程。參見圖4,詳細方法流程如下步驟401 獲取原始數(shù)據(jù)和ECC數(shù)據(jù)??梢詮谋镜氐谝淮鎯δK104中獲取原始數(shù)據(jù)和ECC數(shù)據(jù),或者從其它外部設(shè)備中獲取原始數(shù)據(jù)和ECC數(shù)據(jù),或者以其它方式獲取原始數(shù)據(jù)和ECC數(shù)據(jù)。也可以只獲取原始數(shù)據(jù),軟件的ECC算法模塊101根據(jù)原始數(shù)據(jù)和ECC算法進行計算,獲得ECC數(shù)據(jù)。步驟402 對原始數(shù)據(jù)制造錯誤。其中,可以是人為制造錯誤,或者計算機隨機制造錯誤,還可以是其它方式制造錯誤。如果ECC算法支持ECC數(shù)據(jù)本身有錯,則也可以對ECC數(shù)據(jù)制造錯誤。制造錯誤時,盡量使錯誤比特位在數(shù)據(jù)中離散分布;并且,制造錯誤的比特位的數(shù)值不能低于ECC算法的理論糾錯值。步驟403 根據(jù)ECC算法和原始數(shù)據(jù)對應(yīng)的ECC數(shù)據(jù)對存在錯誤的原始數(shù)據(jù)進行糾錯。步驟404:針對制造了錯誤的比特位,將糾錯后的原始數(shù)據(jù)與正確的原始數(shù)據(jù)進行比對,若比對一致,則繼續(xù)步驟405,否則繼續(xù)步驟406。步驟405 更新比對一致的比特位的數(shù)量。繼續(xù)步驟406。本實施例中還可以將上述指標與正確的原始數(shù)據(jù)的比特總數(shù)做計算,得到計算結(jié)果,以此來評估ECC算法的糾錯能力。其中,可以有多種計算方式,例如計算未糾正的比特數(shù)與正確的原始數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為未糾正率。如果在步驟403中是根據(jù)ECC算法對存在錯誤的ECC數(shù)據(jù)進行糾錯,則本步驟中是將糾錯后的ECC數(shù)據(jù)與正確的ECC數(shù)據(jù)進行比對。步驟406 判斷是否有未進行比對的比特位,若有,則針對下一個比特位,繼續(xù)步驟404,否則繼續(xù)步驟407。因為可能存在各種隨機或是人為不可控制的原因,只進行或幾次測試不能保證測試結(jié)果的準確性。因此,為了使測試結(jié)果更為準確可靠,可以重復執(zhí)行步驟401-406,進行大批量的測試過程。步驟407 對多次的測試結(jié)果求平均值,獲得最終測試結(jié)果。步驟408 輸出最終測試結(jié)果。還可以輸出其中一次或幾次測試的測試結(jié)果。ECC算法模塊101還可以通過硬件方式獲得ECC數(shù)據(jù),此時第二存儲模塊107也需用硬件實現(xiàn)。本實施例中是對原始數(shù)據(jù)制造錯誤,ECC算法模塊101用硬件實現(xiàn)。參見圖 5,詳細方法流程如下步驟501 控制模塊108格式化第二存儲模塊107??梢愿鶕?jù)需要格式化相應(yīng)于數(shù)據(jù)大小的區(qū)塊(block)。第二存儲模塊107具體可以是Nand-flash。Nand-flash中的每個區(qū)塊只能寫入一次,如需再寫則需要先將該區(qū)塊格式化。如果能確定需要寫入的區(qū)塊之前未被寫入,則無需格式化的步驟。步驟502 寫模塊105將原始數(shù)據(jù)寫入格式化后的第二存儲模塊107中。步驟503 =ECC算法模塊101根據(jù)原始數(shù)據(jù)和ECC算法進行計算,獲得第一 ECC數(shù)據(jù)。當獲取ECC數(shù)據(jù)的過程用硬件實現(xiàn)時,根據(jù)數(shù)據(jù)和ECC算法進行計算后獲得的ECC 數(shù)據(jù)被保存在硬件電路中,此時ECC數(shù)據(jù)或許只是一些高低電平的信號,是不可見的。因此,執(zhí)行以下步驟504的目的是為了獲得本來不可見的ECC數(shù)據(jù)。步驟504 讀模塊106將第二存儲模塊107中存儲的原始數(shù)據(jù)與及ECC算法模塊 101中的ECC數(shù)據(jù)均讀取出來。步驟505 寫模塊105將存在錯誤的原始數(shù)據(jù)寫入第二存儲模塊107。制造錯誤時,盡量使錯誤比特位在數(shù)據(jù)中離散分布;并且,制造錯誤的比特位的數(shù)值不能低于ECC算法的理論糾錯值。其中,需寫入的區(qū)塊必須是空的,如果不能確定需寫入的區(qū)塊此前是否未曾操作過,則在步驟505之前需要對第二存儲模塊107進行格式化。步驟506 =ECC算法模塊101根據(jù)存在錯誤的原始數(shù)據(jù)和ECC算法進行計算,獲得第二 ECC數(shù)據(jù)。步驟507 讀模塊106將寫入第二存儲模塊107區(qū)塊中的存在錯誤的原始數(shù)據(jù)及 ECC算法模塊101中的第二 ECC數(shù)據(jù)讀取出來。步驟508 :ECC算法模塊101通過第一 ECC數(shù)據(jù)和第二 ECC數(shù)據(jù)確定需要對存在錯誤的原始數(shù)據(jù)進行糾錯,并根據(jù)ECC算法和第一 ECC數(shù)據(jù)對存在錯誤的原始數(shù)據(jù)進行糾錯。 由于本實施例中對原始數(shù)據(jù)制造了錯誤,所以第一 ECC數(shù)據(jù)與第二 ECC數(shù)據(jù)一定不一致,因此一定會需要對存在錯誤的原始數(shù)據(jù)進行糾錯。步驟509 針對未制造錯誤的比特位,將糾錯后的原始數(shù)據(jù)與正確的原始數(shù)據(jù)進行比對,若比對一致,則繼續(xù)步驟510,否則繼續(xù)步驟511。本實施例中還可以將上述指標與正確的原始數(shù)據(jù)的比特總數(shù)做計算,得到計算結(jié)果,以此來評估ECC算法的糾錯能力。其中,可以有多種計算方式,例如計算將本來正確的數(shù)據(jù)糾正成錯誤數(shù)據(jù)的比特數(shù)與正確的原始數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正失誤率。步驟510 更新比對一致的比特位的數(shù)量,此數(shù)量表示將本來正確給糾正錯誤的比特位的總數(shù)。繼續(xù)步驟511。步驟511 判斷是否有未進行比對的比特位,若有,則針對下一個比特位,繼續(xù)步驟508,否則繼續(xù)步驟512。步驟512 輸出測試結(jié)果,即輸出本來正確給糾正錯誤的比特位的總數(shù)。還可以輸出糾正失誤率。有的ECC算法支持ECC數(shù)據(jù)本身存在錯誤并能對其進行糾錯。本實施例中是對 ECC數(shù)據(jù)制造錯誤,ECC算法模塊101通過硬件方式獲得ECC數(shù)據(jù)。參見圖6,對ECC數(shù)據(jù)
10制造錯誤時的測試流程如下確定ECC算法模塊101支持ECC數(shù)據(jù)本身有錯并能對其進行糾錯。其中,可以在ECC算法中加入一個標識符,用此標識符來確定ECC算法是否支持 ECC數(shù)據(jù)本身有錯。如果此標識符為“0”,確定ECC算法不支持ECC數(shù)據(jù)本身有錯,則只能對原始數(shù)據(jù)制造錯誤。如果此標識符為“1”,確定ECC算法支持ECC數(shù)據(jù)本身有錯,可以對原始數(shù)據(jù)和/或ECC數(shù)據(jù)制造錯誤。也可以用其它方式來確定ECC算法是否支持ECC數(shù)據(jù)本身有錯。步驟601 控制模塊101格式化第二存儲模塊107??梢愿鶕?jù)需要格式化相應(yīng)于數(shù)據(jù)大小的區(qū)塊。當?shù)诙鎯δK107用硬件實現(xiàn)時,其具體可以是Nand-flash。Nand-flash中每個區(qū)塊只能寫入一次,如需再寫則需要先將該區(qū)塊格式化。如果能確定需要寫入的區(qū)塊之前未被寫入,則無需格式化的步驟。步驟602 寫模塊105將原始數(shù)據(jù)寫入格式化后的第二存儲模塊107中。步驟603 =ECC算法模塊101根據(jù)原始數(shù)據(jù)和ECC算法進行計算,獲得第一 ECC數(shù)據(jù)。當ECC算法模塊101用硬件實現(xiàn)時,根據(jù)數(shù)據(jù)和ECC算法進行計算后獲得的ECC數(shù)據(jù)被保存在硬件電路中,此時ECC數(shù)據(jù)或許只是一些高低電平的信號,是不可見的。因此, 執(zhí)行步驟604的目的是為了獲得本來不可見的ECC數(shù)據(jù)。步驟604 讀模塊106將第二存儲模塊107中存儲的原始數(shù)據(jù)與ECC算法模塊101 中的ECC數(shù)據(jù)均讀取出來。步驟605 寫模塊105將存在錯誤的ECC數(shù)據(jù)寫入第二存儲模塊107。在步驟605之前可以加入讀取ECC算法標識符的步驟。當讀取的標識符為“ 1 ”時, 確定ECC算法支持ECC數(shù)據(jù)本身有錯,則可以對ECC數(shù)據(jù)制造錯誤。制造錯誤時,盡量使錯誤比特位在數(shù)據(jù)中離散分布;并且,制造錯誤的比特位的數(shù)值不能低于ECC算法的理論糾錯值。寫入的也可以是制造過錯誤的ECC數(shù)據(jù)及制造過錯誤的原始數(shù)據(jù)。其中,需寫入的區(qū)塊必須是經(jīng)過格式化的,若需寫入的是未經(jīng)過格式化的區(qū)塊,則需加上格式化的步驟。步驟606 =ECC算法模塊101根據(jù)存在錯誤的ECC數(shù)據(jù)和ECC算法進行計算,獲得第二 ECC數(shù)據(jù)。如果在步驟605中寫入的是存在錯誤的ECC數(shù)據(jù)及存在錯誤的原始數(shù)據(jù),則本步驟中ECC算法模塊101根據(jù)存在錯誤的ECC數(shù)據(jù)及存在錯誤的原始數(shù)據(jù)和ECC算法進行計算,獲得第二 ECC數(shù)據(jù)。步驟607 讀模塊106將寫入第二存儲模塊107區(qū)塊中的存在錯誤的ECC數(shù)據(jù)及 ECC算法模塊101中的第二 ECC數(shù)據(jù)讀取出來。如果在步驟605中寫入的是存在錯誤的ECC數(shù)據(jù)及存在錯誤的原始數(shù)據(jù),則本步驟中,讀模塊106將寫入第二存儲模塊107區(qū)塊中的制造過錯誤的ECC數(shù)據(jù)及制造過錯誤的原始數(shù)據(jù)讀取出來。步驟608 :ECC算法模塊101通過第一 ECC數(shù)據(jù)和第二 ECC數(shù)據(jù)確定需要對存在錯誤的ECC數(shù)據(jù)進行糾錯,并根據(jù)ECC算法和第一 ECC數(shù)據(jù)對存在錯誤的ECC數(shù)據(jù)進行糾錯。 由于本實施例中對ECC數(shù)據(jù)制造了錯誤,所以第一 ECC數(shù)據(jù)與第二 ECC數(shù)據(jù)一定不一致,因此一定會需要對存在錯誤的ECC數(shù)據(jù)進行糾錯。如果在步驟605中寫入的是存在錯誤的ECC數(shù)據(jù)及存在錯誤的原始數(shù)據(jù),則本步驟中,ECC算法模塊101根據(jù)ECC算法和第一 ECC數(shù)據(jù)對存在錯誤的ECC數(shù)據(jù)及存在錯誤的原始數(shù)據(jù)進行糾錯。步驟609 針對每一個比特位,將糾錯后的ECC數(shù)據(jù)與正確的ECC數(shù)據(jù)進行比對, 若比對一致,則繼續(xù)步驟610,否則繼續(xù)步驟611。本發(fā)明實施例中還可以將上述指標與正確的ECC數(shù)據(jù)的比特總數(shù)做計算,得到計算結(jié)果,以此來評估ECC算法的糾錯能力。其中,可以有多種計算方式,例如計算已糾正的比特位總數(shù)與正確的ECC數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正率。如果步驟608中ECC算法模塊101是對存在錯誤的ECC數(shù)據(jù)及存在錯誤的原始數(shù)據(jù)進行糾錯,則本步驟中是將糾錯后的ECC數(shù)據(jù)及糾錯后的原始數(shù)據(jù)與正確的ECC數(shù)據(jù)及正確的原始數(shù)據(jù)進行比對,其中,將糾錯后的ECC數(shù)據(jù)及糾錯后的原始數(shù)據(jù)看作一份整體數(shù)據(jù),將正確的ECC數(shù)據(jù)及正確的原始數(shù)據(jù)看作一份整體數(shù)據(jù),將這兩份整體數(shù)據(jù)進行比對,根據(jù)比對結(jié)果獲知ECC的糾錯能力。步驟610:更新比對一致的比特位的數(shù)量。此數(shù)量為已糾正的比特位總數(shù)。獲得測試結(jié)果。繼續(xù)步驟611。步驟611 判斷是否有未進行比對的比特位,若有,則針對下一個比特位,繼續(xù)步驟609,否則繼續(xù)步驟612。因為可能存在各種隨機或是人為不可控制的原因,只進行或幾次測試不能保證測試結(jié)果的準確性。因此,為了使測試結(jié)果更為準確可靠,可以重復執(zhí)行步驟601-611,進行大批量的測試過程。步驟612 對多次的測試結(jié)果求平均值,獲得最終測試結(jié)果。步驟613 輸出最終測試結(jié)果。還可以輸出其中一次或幾次測試的測試結(jié)果。本發(fā)明實施例對獲取的原始數(shù)據(jù)用ECC算法進行糾錯,得到一份ECC數(shù)據(jù),根據(jù) ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯,獲得糾錯后的數(shù)據(jù);所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的;可以將糾錯后的數(shù)據(jù)中制造過錯誤的比特位與正確數(shù)據(jù)中相應(yīng)比特位進行比較,如果糾錯后的數(shù)據(jù)中第一比特位與正確數(shù)據(jù)中第二比特位一致,則確定該處糾正正確;如果兩者不一致,則確定此處未糾正,由此得到ECC算法的糾錯能力,其中,第一比特位為制造過錯誤的比特位,第二比特位為與第一比特位相應(yīng)位置的比特位。其不僅可以獲得ECC算法的糾錯能力,而且比對次數(shù)較少,實現(xiàn)過程比較快捷,結(jié)果準確,針對性強。如果需要得到較為詳細的ECC算法糾錯能力的評估結(jié)果,也可以將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)中每個比特位進行比較,除了可以得知糾正正確的比特位和未糾正的比特位之外,如果糾錯后的數(shù)據(jù)中原來正確的比特位與正確數(shù)據(jù)中相應(yīng)的比特位不一致,還可確定此處將本來正確的比特位值糾正成錯誤的值。此時得到的ECC算法的糾錯能力評估比較詳細可靠。還可以通過多項指標來評估ECC算法的糾錯能力,如糾正了的比特位的總數(shù)(糾正正確的比特數(shù)與糾正錯誤的比特數(shù)之和為進行糾正了的比特位的總數(shù)),以及將上述指標分別與正確數(shù)據(jù)的比特總數(shù)做計算,得到計算結(jié)果,以此來評估ECC算法的糾錯能力,使對于ECC算法糾錯能力的評估標準化,更有利于實際應(yīng)用。其中,可以有多種計算方式,例如計算糾正正確的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正正確率;計算未糾正的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為未糾正率;計算將本來正確的數(shù)據(jù)糾正成錯誤數(shù)據(jù)的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正失誤率;計算已糾正的比特數(shù)與正確數(shù)據(jù)的比特數(shù)的百分比值,此百分比值稱為糾正率。并且,本發(fā)明實施例支持ECC算法模塊101通過硬件方式或軟件方式獲得ECC數(shù)據(jù)。為了使測試結(jié)果更為準確可靠,可以重復進行大批量的測試過程,采用對每次的測試結(jié)果求平均值的方法來獲得最終測試結(jié)果。本發(fā)明實施例獲得了對ECC糾錯能力的量化評定結(jié)果,從而獲知 ECC算法是否能達到其理論糾錯值,進而可以根據(jù)ECC算法的糾錯能力選擇與其相適應(yīng)的 Nand-flash,如果ECC算法的糾錯能力比較強,可以選擇性能一般的Nand-fIash與其對應(yīng), 以節(jié)省成本,并且保證了 Nand-flash運行的安全性及穩(wěn)定性;如果ECC算法的糾錯能力較弱,則可以選擇性能質(zhì)量較好的Nand-flash與其對應(yīng),以提高Nand-flash運行的安全性及穩(wěn)定性。并且,對于無法達到理論糾錯值的ECC算法,還可以采取測試等手段,檢測可能出現(xiàn)紕漏之處并加以改進,以提高ECC的糾錯能力。用于實現(xiàn)本發(fā)明實施例的軟件可以存儲于軟盤、硬盤、光盤和閃存等存儲介質(zhì)。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1.一種ECC算法糾正能力的測試方法,其特征在于,包括以下步驟根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯,獲得糾錯后的數(shù)據(jù); 所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的;將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,并根據(jù)比對結(jié)果獲知ECC算法的糾錯能力。
2.如權(quán)利要求1所述的方法,其特征在于,存在錯誤的測試數(shù)據(jù)包括對正確的原始數(shù)據(jù)制造錯誤后獲得的存在錯誤的原始數(shù)據(jù)和/或?qū)φ_的ECC數(shù)據(jù)制造錯誤后獲得的存在錯誤的ECC數(shù)據(jù)。
3.如權(quán)利要求1所述的方法,其特征在于,在根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯之前,還包括步驟將第一 ECC數(shù)據(jù)與第二 ECC數(shù)據(jù)進行比較,其中第一 ECC數(shù)據(jù)為正確數(shù)據(jù)對應(yīng)的ECC數(shù)據(jù),第二 ECC數(shù)據(jù)為存在錯誤的測試數(shù)據(jù)對應(yīng)的ECC 數(shù)據(jù);當?shù)谝?ECC數(shù)據(jù)與第二 ECC數(shù)據(jù)不同時,對第一 ECC數(shù)據(jù)和第二 ECC數(shù)據(jù)進行解碼, 獲得解碼后的正確數(shù)據(jù)和解碼后的存在錯誤的測試數(shù)據(jù),并將解碼后的正確數(shù)據(jù)和解碼后的存在錯誤的測試數(shù)據(jù)進行比較;根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯的步驟包括當有比特位不相同時,根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)中的該比特位進行糾錯。
4.如權(quán)利要求3所述的方法,其特征在于,ECC數(shù)據(jù)是通過軟件方式獲得的,或者是通過硬件方式獲得的。
5.如權(quán)利要求4所述的方法,其特征在于,當ECC數(shù)據(jù)是通過硬件方式獲得時,在獲得 ECC數(shù)據(jù)之前,還包括步驟將數(shù)據(jù)寫入存儲器;通過硬件電路從存儲器中獲得數(shù)據(jù),及根據(jù)ECC算法和獲得的數(shù)據(jù)進行計算;從硬件電路中獲得ECC數(shù)據(jù)。
6.如權(quán)利要求1所述的方法,其特征在于,將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對的步驟包括針對制造錯誤時記錄的存在錯誤的比特位,將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對;或者將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)按照比特位逐一進行比對。
7.如權(quán)利要求1所述的方法,其特征在于,在根據(jù)比對結(jié)果獲知ECC算法的糾錯能力之前,還包括步驟當糾錯后的數(shù)據(jù)中第一比特位與正確數(shù)據(jù)中第二比特位的值一致時,確定第一比特位的值已被糾正正確;其中,第一比特位為制造過錯誤的比特位,第二比特位為與第一比特位相應(yīng)位置的比特位;當糾錯后的數(shù)據(jù)中第一比特位與正確數(shù)據(jù)中第二比特位的值不一致時,確定第一比特位的值未被糾正;當糾錯后的數(shù)據(jù)中正確比特位與正確數(shù)據(jù)中相應(yīng)位置的比特位的值不一致時,確定該本來正確的比特位的值被糾正成錯誤的值。
8.如權(quán)利要求7所述的方法,其特征在于,根據(jù)比對結(jié)果獲知ECC算法的糾錯能力的步驟包括根據(jù)第一比特位中已被糾正正確的比特位的數(shù)量與正確數(shù)據(jù)的比特數(shù)的比值獲知ECC 算法的糾錯能力;和/或根據(jù)第一比特位中未被糾正的比特位的數(shù)量與正確數(shù)據(jù)的比特數(shù)的比值獲知ECC算法的糾錯能力;和/或根據(jù)本來正確且被糾正成錯誤的比特位的數(shù)量與正確數(shù)據(jù)的比特數(shù)的比值獲知ECC 算法的糾錯能力;和/或根據(jù)第一比特位中已被糾正正確的比特位的數(shù)量和本來正確且被糾正成錯誤的比特位的數(shù)量之和,與正確數(shù)據(jù)的比特數(shù)的比值,獲知ECC算法的糾錯能力。
9.一種ECC算法糾正能力的測試裝置,其特征在于,包括ECC算法模塊,用于根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯; 所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的;校驗模塊,用于將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,并根據(jù)比對結(jié)果獲知ECC算法的糾錯能力。
10.如權(quán)利要求9所述的裝置,其特征在于,ECC算法模塊將第一ECC數(shù)據(jù)與第二 ECC 數(shù)據(jù)進行比較,其中第一 ECC數(shù)據(jù)為正確數(shù)據(jù)對應(yīng)的ECC數(shù)據(jù),第二 ECC數(shù)據(jù)為存在錯誤的測試數(shù)據(jù)對應(yīng)的ECC數(shù)據(jù);當?shù)谝?ECC數(shù)據(jù)與第二 ECC數(shù)據(jù)不同時,對第一 ECC數(shù)據(jù)和第二 ECC數(shù)據(jù)進行解碼,獲得解碼后的正確數(shù)據(jù)和解碼后的存在錯誤的測試數(shù)據(jù),并將解碼后的正確數(shù)據(jù)和解碼后的存在錯誤的測試數(shù)據(jù)進行比較;當有比特位不相同時,根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)中的該比特位進行糾錯。
11.如權(quán)利要求10所述的裝置,其特征在于,ECC數(shù)據(jù)是通過軟件方式獲得的,或者是通過硬件方式獲得的。
12.如權(quán)利要求11所述的裝置,其特征在于,所述裝置與存儲模塊連接;所述裝置還包括寫模塊和讀模塊;寫模塊,用于將數(shù)據(jù)寫入存儲模塊;ECC算法模塊還用于通過硬件電路從存儲模塊中獲得數(shù)據(jù),及根據(jù)ECC算法和獲得的數(shù)據(jù)進行計算;讀模塊,用于從硬件電路中獲得ECC數(shù)據(jù)。
13.如權(quán)利要求9所述的裝置,其特征在于,校驗模塊針對制造錯誤時記錄的存在錯誤的比特位,將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對;或者,將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)按照比特位逐一進行比對。
14.如權(quán)利要求9所述的裝置,其特征在于,校驗模塊當糾錯后的數(shù)據(jù)中第一比特位與正確數(shù)據(jù)中第二比特位的值一致時,確定該第一比特位的值已被糾正正確;其中,第一比特位為制造過錯誤的比特位,第二比特位為與第一比特位相應(yīng)位置的比特位;校驗模塊當糾錯后的數(shù)據(jù)中第一比特位與正確數(shù)據(jù)中第二比特位的值不一致時,確定該第一比特位的值未被糾正;校驗模塊當糾錯后的數(shù)據(jù)中正確比特位與正確數(shù)據(jù)中相應(yīng)位置的比特位的值不一致時,確定該本來正確的比特位的值被糾正成錯誤的值。
15.如權(quán)利要求9所述的裝置,其特征在于,校驗模塊根據(jù)第一比特位中已被糾正正確的比特位的數(shù)量與正確數(shù)據(jù)的比特數(shù)的比值獲知ECC算法的糾錯能力;和/或,根據(jù)第一比特位中未被糾正的比特位的數(shù)量與正確數(shù)據(jù)的比特數(shù)的比值獲知ECC算法的糾錯能力;和 /或,根據(jù)本來正確且被糾正成錯誤的比特位的數(shù)量與正確數(shù)據(jù)的比特數(shù)的比值獲知ECC 算法的糾錯能力;和/或,根據(jù)第一比特位中且已被糾正正確的比特位的數(shù)量和本來正確且被糾正成錯誤的比特位的數(shù)量之和,與正確數(shù)據(jù)的比特數(shù)的比值,獲知ECC算法的糾錯能力。
全文摘要
本發(fā)明公開了一種錯誤檢查與糾正能力的測試方法,用于實現(xiàn)對ECC算法的糾錯能力的測試,從而獲知ECC算法是否能較好的完成糾錯任務(wù)。所述方法包括根據(jù)ECC算法和正確的ECC數(shù)據(jù)對存在錯誤的測試數(shù)據(jù)進行糾錯,獲得糾錯后的數(shù)據(jù);所述正確的ECC數(shù)據(jù)是依據(jù)正確數(shù)據(jù)獲得的;所述存在錯誤的測試數(shù)據(jù)是對正確數(shù)據(jù)制造錯誤后獲得的;將糾錯后的數(shù)據(jù)與正確數(shù)據(jù)進行比對,并根據(jù)比對結(jié)果獲知ECC算法的糾錯能力。本發(fā)明還公開了用于實現(xiàn)所述方法的裝置。
文檔編號G06F11/10GK102279776SQ20101020560
公開日2011年12月14日 申請日期2010年6月11日 優(yōu)先權(quán)日2010年6月11日
發(fā)明者凌明 申請人:無錫中星微電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
太原市| 合山市| 临澧县| 曲阳县| 衡水市| 凭祥市| 太原市| 福海县| 商都县| 清原| 松江区| 来宾市| 烟台市| 绥棱县| 通河县| 栾城县| 淮阳县| 古交市| 丹巴县| 元江| 辽源市| 昭平县| 五常市| 博湖县| 桐城市| 汽车| 波密县| 中宁县| 蒲江县| 营山县| 辰溪县| 绥宁县| 遵化市| 鄂托克前旗| 西峡县| 台南县| 三穗县| 马公市| 新田县| 剑阁县| 瓦房店市|