本申請涉及存儲器技術(shù)領(lǐng)域,特別是涉及一種非易失性存儲器的擦寫方法及擦寫裝置。
背景技術(shù):非易失性存儲器(Non-volatileMemory)由于具有可多次進行數(shù)據(jù)的讀取、擦除、編程等動作,且存入的數(shù)據(jù)在斷電后也不會消失的優(yōu)點,因此,非易失性存儲器被廣泛采用在個人電腦和電子設(shè)備等等。目前,一般的非易失性存儲器在編程操作之前都需要進行擦除操作,而目前的非易失性存儲器基本都是編程和擦除操作分開,這就要求用戶在需要編程時需要先進行擦除。這樣,實際的編程時間就包括了擦除時間。而非易失性存儲器的擦除是比較費時的,這就導(dǎo)致了非易失性存儲器的編程時間也比較久。例如,目前非易失性存儲器主要用于存儲數(shù)據(jù)和代碼,很多應(yīng)用的存儲內(nèi)容的修改量很小。如代碼與代碼之間的區(qū)別往往很小,有時僅僅修改1個字節(jié)就可以將現(xiàn)在的代碼編程為另一個代碼,在這種情況下,如果還按照傳統(tǒng)的先擦除后編程的步驟執(zhí)行,會浪費大量的時間。
技術(shù)實現(xiàn)要素:本申請所要解決的技術(shù)問題是提供一種非易失性存儲器的擦寫方法及擦寫裝置,以解決現(xiàn)有的編程方式,當(dāng)數(shù)據(jù)修改量很小時,不必要的擦除操作浪費大量時間的問題。為了解決上述問題,本申請公開了一種非易失性存儲器的擦寫方法,包括:選擇工作模式,所述工作模式包括擦除模式、編程模式和擦寫模式;當(dāng)選擇擦寫模式時,確定一要擦寫的目標(biāo)存儲塊,并對該目標(biāo)存儲塊執(zhí)行以下操作:驗證所述目標(biāo)存儲塊是否需要編程;對需要編程的所述目標(biāo)存儲塊進行塊擦除;對塊擦除過的所述目標(biāo)存儲塊進行塊編程;判斷所有目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)確定下一個目標(biāo)存儲塊并進行驗證、塊擦除和塊編程。優(yōu)選的,所述驗證是把目標(biāo)存儲塊中的數(shù)據(jù)和需要編程的數(shù)據(jù)進行比較,如果相同則目標(biāo)存儲塊不需要編程,轉(zhuǎn)入下一個目標(biāo)存儲塊,如果不同則目標(biāo)存儲塊需要編程。優(yōu)選的,所述驗證之前,還包括:將需要編程的數(shù)據(jù)存到臨時存儲器中;從臨時存儲器中讀取需要編程的數(shù)據(jù)。優(yōu)選的,當(dāng)選擇擦除模式時,對所有的目標(biāo)存儲塊進行全部擦除。優(yōu)選的,當(dāng)選擇編程模式時,對所有的目標(biāo)存儲塊進行全部編程。本申請還公開了一種非易失性存儲器的擦寫裝置,包括:模式選擇模塊,用于選擇工作模式,所述工作模式包括擦除模式、編程模式和擦寫模式;目標(biāo)塊確定模塊,用于當(dāng)選擇擦寫模式時,確定一要擦寫的目標(biāo)存儲塊;編程驗證模塊,用于當(dāng)選擇擦寫模式時,驗證所述目標(biāo)存儲塊是否需要編程;擦除模塊,用于對需要編程的所述目標(biāo)存儲塊進行塊擦除;編程模塊,用于對塊擦除過的所述目標(biāo)存儲塊進行塊編程;判斷模塊,用于判斷所有目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)確定下一個目標(biāo)存儲塊并進行驗證、塊擦除和塊編程。優(yōu)選的,所述編程驗證模塊把目標(biāo)存儲塊中的數(shù)據(jù)和需要編程的數(shù)據(jù)進 行比較,如果相同則目標(biāo)存儲塊不需要編程,轉(zhuǎn)入下一個目標(biāo)存儲塊,如果不同則目標(biāo)存儲塊需要編程。優(yōu)選的,還包括:編程數(shù)據(jù)存儲模塊,用于將需要編程的數(shù)據(jù)存到臨時存儲器中;編程數(shù)據(jù)讀取模塊,用于從臨時存儲器中讀取需要編程的數(shù)據(jù)。優(yōu)選的,當(dāng)模式選擇模塊選擇擦除模式時,對所有的目標(biāo)存儲塊進行全部擦除。優(yōu)選的,當(dāng)模式選擇模塊選擇編程模式時,對所有的目標(biāo)存儲塊進行全部編程。與現(xiàn)有技術(shù)相比,本申請包括以下優(yōu)點:本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法及擦寫裝置,提供了三種工作模式,可以根據(jù)實際需要選擇適合的模式,在數(shù)據(jù)變化較大的情況下,選擇擦除模式和編程模式;在數(shù)據(jù)變化較小的情況下,選擇擦寫模式。當(dāng)選擇擦寫模式時,驗證目標(biāo)存儲塊是否需要編程;對需要編程的目標(biāo)存儲塊進行塊擦除;對擦除過的目標(biāo)存儲塊進行塊編程;判斷目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)對下一個目標(biāo)存儲塊進行驗證、塊擦除和塊編程。首先,本申請與現(xiàn)有的非易失性存儲器的擦寫方法及擦寫裝置相比,根據(jù)不同的需要提供了靈活的工作模式可供選擇;例如,修改量大,對非易失性存儲器中存儲的所有數(shù)據(jù)都進行編程,可以先選擇擦除模式進行擦除,再選擇編程模式進行編程;修改量小,如對非易失性存儲器中存儲的一個代碼進行編程,而編程前后的代碼之間只有一個字節(jié)的區(qū)別,此時可以選擇擦寫模式。其次,上述擦寫模式中提出的擦寫方法結(jié)合了擦除和編寫過程,在數(shù)據(jù)變化較小時(如只有一個字節(jié)的區(qū)別時)使用,對目標(biāo)存儲塊進行編程驗證后,只對其中數(shù)據(jù)不同的目標(biāo)存儲塊進行擦除,對大部分?jǐn)?shù)據(jù)相同的目標(biāo)存儲塊來說減少了不必要的擦除操作,節(jié)省了擦除的時間,從而在整體上提高 了編程的速度。附圖說明圖1是本申請實施例一所述一種非易失性存儲器的擦寫方法流程圖;圖2是本申請實施例二所述一種非易失性存儲器的擦寫方法流程圖;圖3是本申請實施例三所述一種非易失性存儲器的擦寫方法中選擇工作模式的示意圖;圖4是本申請實施例三所述一種非易失性存儲器的擦寫方法中擦寫模式的流程圖;圖5是本申請實施例四所述一種非易失性存儲器的擦寫裝置結(jié)構(gòu)圖;圖6是本申請實施例五所述一種非易失性存儲器的擦寫裝置結(jié)構(gòu)圖。具體實施方式為使本申請的上述目的、特征和優(yōu)點能夠更加明顯易懂,下面結(jié)合附圖和具體實施方式對本申請作進一步詳細(xì)的說明。本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法及擦寫裝置,根據(jù)實際需要在三種工作模式中進行選擇,如果數(shù)據(jù)變化比較大,選擇擦除模式和編程模式,如果數(shù)據(jù)變化比較小,選擇擦寫模式。當(dāng)選擇擦寫模式時,通過確定目標(biāo)存儲塊,以及編程驗證、塊擦除和塊編程等一系列步驟對目標(biāo)存儲塊進行編程,直至所有需要擦寫的目標(biāo)存儲塊都編程完畢。本申請中非易失性存儲器包括多個存儲塊,每個存儲塊的擦除或編程不影響其它的存儲塊。存儲塊設(shè)計得盡量小,保證擦除之前編程驗證操作的可行性。下面通過列舉幾個具體的實施例來詳細(xì)說明本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法及擦寫裝置。實施例1,詳細(xì)介紹本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法。參照圖1,示出了本申請實施例1所述一種非易失性存儲器的擦寫方法流程圖。步驟11,選擇工作模式,所述工作模式包括擦除模式、編程模式和擦寫模式;本實施例中的非易失性存儲器的擦寫方法包括三種工作模式,分別為擦除模式、編程模式和擦寫模式。其中,擦除模式包括對目標(biāo)存儲塊的擦除操作;編程模式包括對目標(biāo)存儲塊的編程操作;擦寫模式包括對目標(biāo)存儲塊的確定、驗證、擦除和編程操作。如果僅僅對存儲塊進行擦除操作,選擇擦除模式;如果僅僅對存儲塊進行編程操作,選擇編程模式;如果對存儲塊進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較大,先選擇擦除模式,再選擇編程模式;如果對存儲塊進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較小,選擇擦寫模式。步驟12,當(dāng)選擇擦寫模式時,確定一要擦寫的目標(biāo)存儲塊,并對該目標(biāo)存儲塊執(zhí)行步驟13至步驟16的操作:當(dāng)選擇了擦寫模式時,要在非易失性存儲器中確定出哪些存儲塊需要進行擦寫操作,在這些存儲塊中確定出其中的一個,即確定一要擦寫的目標(biāo)存儲塊。步驟13,驗證所述目標(biāo)存儲塊是否需要編程;確定了一個要擦寫的目標(biāo)存儲塊之后,要對該目標(biāo)存儲塊進行驗證,目的是判斷該目標(biāo)存儲塊上的數(shù)據(jù)與需要編程的數(shù)據(jù)是否相同,如果相同,則該目標(biāo)存儲塊不需要編程,轉(zhuǎn)入驗證下一個目標(biāo)存儲塊;如果不同,則該目標(biāo)存儲塊需要編程。該步驟是本實施例所介紹的擦除方法中的關(guān)鍵步驟,通過該步驟的驗證,排除了一些不需要進行編程的目標(biāo)存儲塊,節(jié)省了進行后續(xù)步驟的時間,提高了擦寫速度。步驟14,對需要編程的所述目標(biāo)存儲塊進行塊擦除;在確定出該目標(biāo)存儲塊需要編程之后,對需要編程的該目標(biāo)存儲塊進行 塊擦除。其中,所述塊擦除是有針對性的對一個需要編程的目標(biāo)存儲塊進行擦除,操作對象是一個目標(biāo)存儲塊。步驟15,對塊擦除過的所述目標(biāo)存儲塊進行塊編程;在對該目標(biāo)存儲塊進行塊擦除之后,對塊擦除過的該目標(biāo)存儲塊進行塊編程。其中,所述塊編程是有針對性的對一個進行過塊擦除的目標(biāo)存儲塊進行編程,編程對象是一個目標(biāo)存儲塊。步驟16,判斷所有目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)確定下一個目標(biāo)存儲塊并進行驗證、塊擦除和塊編程。對一個目標(biāo)存儲塊進行編程后,判斷這個目標(biāo)存儲塊后是否還有需要擦寫的目標(biāo)存儲塊,如果沒有,則編程結(jié)束;如果有,則確定出下一個需要擦寫的目標(biāo)存儲塊并進行上述13-15步驟。綜上所述,本申請實施例提出的一種非易失性存儲器的擦寫方法,提供了三種工作模式,可以根據(jù)實際需要選擇適合的模式,在數(shù)據(jù)變化較大的情況下,選擇擦除模式和編程模式;在數(shù)據(jù)變化較小的情況下,選擇擦寫模式。當(dāng)選擇擦寫模式時,驗證目標(biāo)存儲塊是否需要編程;對需要編程的目標(biāo)存儲塊進行塊擦除;對擦除過的目標(biāo)存儲塊進行塊編程;判斷目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)對下一個目標(biāo)存儲塊進行驗證、塊擦除和塊編程。首先,本申請實施例與現(xiàn)有的非易失性存儲器擦寫方法相比,根據(jù)不同的需要提供了靈活的工作模式可供選擇;例如,修改量大,對非易失性存儲器中存儲的所有數(shù)據(jù)都進行編程,可以先選擇擦除模式進行擦除,再選擇編程模式進行編程;修改量小,如對非易失性存儲器中存儲的一個代碼進行編程,而編程前后的代碼之間只有一個字節(jié)的區(qū)別,此時可以選擇擦寫模式。其次,上述擦寫模式中提出的擦寫方法結(jié)合了擦除和編寫過程,在數(shù)據(jù) 變化較小時(如只有一個字節(jié)的區(qū)別時)使用,對目標(biāo)存儲塊進行編程驗證后,只對其中數(shù)據(jù)不同的目標(biāo)存儲塊進行擦除,對大部分?jǐn)?shù)據(jù)相同的目標(biāo)存儲塊來說減少了不必要的擦除操作,節(jié)省了擦除的時間,從而在整體上提高了編程的速度。下面通過實施例2詳細(xì)說明本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法。實施例2,詳細(xì)介紹本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法。參照圖2,示出了本申請實施例2所述一種非易失性存儲器的擦寫方法流程圖。步驟21,選擇工作模式,所述工作模式包括擦除模式、編程模式和擦寫模式;如果僅僅對存儲塊或存儲區(qū)域進行擦除操作,選擇擦除模式;例如,僅僅對非易失性存儲器中的1-10號存儲塊進行擦除操作,則選擇擦除模式。如果僅僅對存儲塊或存儲區(qū)域進行編程操作,選擇編程模式;例如,僅僅對非易失性存儲器中的11-20號存儲塊進行編程操作,則選擇編程模式。如果對存儲塊或存儲區(qū)域進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較大,先選擇擦除模式,再選擇編程模式;例如,對非易失性存儲器中的50-500號存儲塊進行擦寫操作,并且其中100-500號存儲塊的數(shù)據(jù)與需要編程的數(shù)據(jù)不同,其他相同,則先選擇擦除模式,再選擇編程模式。如果對存儲塊或存儲區(qū)域進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較小,選擇擦寫模式。例如,對非易失性存儲器中的600-800號存儲塊進行擦寫操作,并且其中600-610號存儲塊的數(shù)據(jù)與需要編程的數(shù)據(jù)不同,其他相同,則選擇擦寫模式。步驟22,當(dāng)選擇擦寫模式時,確定一要擦寫的目標(biāo)存儲塊;當(dāng)選擇了擦寫模式時,要在非易失性存儲器中確定出那些存儲塊需要進行擦寫操作,在這些存儲塊中確定出其中的一個,即確定一要擦寫的目標(biāo)存儲塊。例如,在非易失性存儲器中,要對存儲的執(zhí)行代碼S1進行擦寫,就要確定出所述執(zhí)行代碼S1所在的存儲塊,在這些存儲塊中確定出其中的一個。步驟23,將需要編程的數(shù)據(jù)存到臨時存儲器中;例如,需要編程的數(shù)據(jù)是執(zhí)行代碼S2,將執(zhí)行代碼S2存儲到臨時存儲器。步驟24,從臨時存儲器中讀取需要編程的數(shù)據(jù);從臨時存儲器中讀取執(zhí)行代碼S2。步驟25,驗證所述目標(biāo)存儲塊是否需要編程;利用步驟24中讀取的代碼S2與對應(yīng)的該目標(biāo)存儲塊中的數(shù)據(jù)S1進行比較,如果相同則該目標(biāo)存儲塊不需要編程,轉(zhuǎn)入下一個目標(biāo)存儲塊,如果不同則該目標(biāo)存儲塊需要編程。步驟26,對需要編程的所述目標(biāo)存儲塊進行塊擦除;在步驟25的驗證后,如果該目標(biāo)存儲塊需要編程,則對該目標(biāo)存儲塊進行塊擦除。步驟27,對塊擦除過的所述目標(biāo)存儲塊進行塊編程;對在步驟26中進行過塊擦除的該目標(biāo)存儲塊進行塊編程。步驟28,判斷所有目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)確定下一個目標(biāo)存儲塊并進行驗證、塊擦除和塊編程。對該目標(biāo)存儲塊進行塊編程后,判斷執(zhí)行代碼S1所在的目標(biāo)存儲塊是否全部編程完畢,如果全部編程完畢,則對執(zhí)行代碼S1的編程結(jié)束。如果執(zhí)行代碼S1還有其他目標(biāo)存儲塊,則確定下一個目標(biāo)存儲塊并進行上述的驗證、塊擦除和塊編程。下面通過實施例3詳細(xì)說明本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法。實施例3,詳細(xì)介紹本申請?zhí)岢龅囊环N非易失性存儲器的擦寫方法。參照圖3,示出了本申請實施例3所述一種非易失性存儲器的擦寫方法中選擇工作模式的示意圖。在對非易失性存儲器進行擦寫時,根據(jù)實際需要在三種工作模式中進行選擇;如果僅僅對存儲塊或存儲區(qū)域進行擦除操作,選擇擦除模式31;如果僅僅對存儲塊或存儲區(qū)域進行編程操作,選擇編程模式32;如果進行對存儲塊或存儲區(qū)域進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較大,先選擇擦除模式31,再選擇編程模式32;如果進行對存儲塊或存儲區(qū)域進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較小,選擇擦寫模式33。其中,擦除模式31和編程模式32是針對存儲塊或存儲區(qū)域分別進行單純的擦除和編程操作,而擦寫模式33是先驗證存儲塊或存儲區(qū)域是否需要編程,排除掉不需要編程的存儲塊或存儲區(qū)域后,只對需要編程的存儲塊或存儲區(qū)域進行塊擦除和塊編程操作。例如,僅僅對1-5號存儲塊進行擦除操作,選擇擦除模式31,則對1-5號存儲塊進行單純的擦除操作;僅僅對6-10號存儲塊進行編程操作,選擇編程模式32,則對6-10號存儲塊進行單純的編程操作;對11-20號存儲塊進行擦寫操作,其中11-18號存儲塊的數(shù)據(jù)與需要編程的數(shù)據(jù)不同,先選擇擦除模式31,對11-20號存儲塊進行單純的擦除操作,再選擇編程模式32,對11-20號存儲塊進行單純的編程操作;對21-30號存儲塊進行擦寫操作,其中21-28號存儲塊的數(shù)據(jù)與需要編程的數(shù)據(jù)相同,選擇擦寫模式33,對21-30號存儲塊進行編程驗證后,再對29、30號存儲塊進行塊擦除和塊編程操作。參照圖4,示出了本申請實施例3所述一種非易失性存儲器的擦寫方法 中擦寫模式的流程圖。非易失性存儲器擦寫時按最小存儲塊進行。步驟41,編程驗證;首先針對當(dāng)前的一個目標(biāo)存儲塊進行編程驗證,驗證該目標(biāo)存儲塊中的數(shù)據(jù)和需要編程的數(shù)據(jù)是否相同,如果不同,轉(zhuǎn)到步驟42;如果相同,轉(zhuǎn)到步驟44。步驟42,塊擦除;在步驟41的驗證后,如果該目標(biāo)存儲塊中的數(shù)據(jù)和需要編程的數(shù)據(jù)不同,對該目標(biāo)存儲塊進行塊擦除。步驟43,塊編程;對塊擦除完成后的該目標(biāo)存儲塊進行編程。步驟44,判斷編程結(jié)束。判斷所有的目標(biāo)存儲塊是否編程完畢,如果沒有編程完畢,下一個目標(biāo)存儲塊設(shè)為當(dāng)前塊,重復(fù)進行上面操作。下面通過實施例4詳細(xì)說明本申請?zhí)岢龅囊环N非易失性存儲器的擦寫裝置。實施例4,詳細(xì)介紹本申請?zhí)岢龅囊环N非易失性存儲器的擦寫裝置。參照圖5,示出了本申請實施例4所述一種非易失性存儲器的擦寫裝置結(jié)構(gòu)圖。所述擦寫裝置包括以下模塊:模式選擇模塊51,目標(biāo)塊確定模塊52,編程驗證模塊53,擦除模塊54,編程模塊55,以及,判斷模塊56。下面分別詳細(xì)說明各個模塊的功能及模塊間的關(guān)系。模式選擇模塊51,用于選擇工作模式,所述工作模式包括擦除模式、編程模式和擦寫模式;本實施例中的非易失性存儲器的擦寫裝置包括三種工作模式,分別為擦除模式、編程模式和擦寫模式。其中,擦除模式包括對目標(biāo)存儲塊的擦除操作;編程模式包括對目標(biāo)存儲塊的編程操作;擦寫模式包括對目標(biāo)存儲塊的確定、驗證、擦除和編程操作。如果僅僅對存儲塊進行擦除操作,則模式選擇模塊51選擇擦除模式;如果僅僅對存儲塊進行編程操作,則模式選擇模塊51選擇編程模式;如果對存儲塊進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較大,則模式選擇模塊51先選擇擦除模式,再選擇編程模式;如果對存儲塊進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較小,則模式選擇模塊51選擇擦寫模式。目標(biāo)塊確定模塊52,用于當(dāng)選擇擦寫模式時,確定一要擦寫的目標(biāo)存儲塊;當(dāng)模式選擇模塊51選擇了擦寫模式時,目標(biāo)塊確定模塊52要在非易失性存儲器中確定出哪些存儲塊需要進行擦寫操作,在這些存儲塊中確定出其中的一個,即確定一要擦寫的目標(biāo)存儲塊。編程驗證模塊53,用于當(dāng)選擇擦寫模式時,驗證所述目標(biāo)存儲塊是否需要編程;在目標(biāo)塊確定模塊52確定了一個要擦寫的目標(biāo)存儲塊之后,編程驗證模塊53要對該目標(biāo)存儲塊進行驗證,目的是判斷該目標(biāo)存儲塊上的數(shù)據(jù)與需要編程的數(shù)據(jù)是否相同,如果相同,則該目標(biāo)存儲塊不需要編程,轉(zhuǎn)入驗證下一個目標(biāo)存儲塊;如果不同,則該目標(biāo)存儲塊需要編程。該模塊是本實施例所介紹的擦除裝置中的關(guān)鍵模塊,通過該模塊的驗證,排除了一些不需要進行編程的目標(biāo)存儲塊,節(jié)省了進行后續(xù)步驟的時間,提高了擦寫速度。擦除模塊54,用于對需要編程的所述目標(biāo)存儲塊進行塊擦除;在編程驗證模塊53確定出該目標(biāo)存儲塊需要編程之后,擦除模塊54對需要編程的該目標(biāo)存儲塊進行塊擦除。編程模塊55,用于對塊擦除過的所述目標(biāo)存儲塊進行塊編程;在擦除模塊54對該目標(biāo)存儲塊進行塊擦除之后,編程模塊55對塊擦除 過的該目標(biāo)存儲塊進行塊編程。判斷模塊56,用于判斷所有目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)確定下一個目標(biāo)存儲塊并進行驗證、塊擦除和塊編程。對一個目標(biāo)存儲塊進行編程后,判斷模塊56判斷這個目標(biāo)存儲塊后是否還有需要擦寫的目標(biāo)存儲塊,如果沒有,則編程結(jié)束;如果有,則確定下一個需要擦寫的目標(biāo)存儲塊并進行編程驗證、塊擦除和塊編程。綜上所述,本申請實施例提出的一種非易失性存儲器的擦寫裝置,提供了三種工作模式,可以根據(jù)實際需要選擇適合的模式,在數(shù)據(jù)變化較大的情況下,選擇擦除模式和編程模式;在數(shù)據(jù)變化較小的情況下,選擇擦寫模式。當(dāng)選擇擦寫模式時,驗證目標(biāo)存儲塊是否需要編程;對需要編程的目標(biāo)存儲塊進行塊擦除;對擦除過的目標(biāo)存儲塊進行塊編程;判斷目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)對下一個目標(biāo)存儲塊進行驗證、塊擦除和塊編程。首先,本申請實施例與現(xiàn)有的非易失性存儲器的擦除裝置相比,根據(jù)不同的需要提供了靈活的工作模式可供選擇;例如,修改量大,對非易失性存儲器中存儲的所有數(shù)據(jù)都進行編程,可以先選擇擦除模式進行擦除,再選擇編程模式進行編程;修改量小,如對非易失性存儲器中存儲的一個代碼進行編程,而編程前后的代碼之間只有一個字節(jié)的區(qū)別,此時可以選擇擦寫模式。其次,上述擦寫模式結(jié)合了擦除和編寫過程,在數(shù)據(jù)變化較小時(如只有一個字節(jié)的區(qū)別時)使用,對目標(biāo)存儲塊進行編程驗證后,只對其中數(shù)據(jù)不同的目標(biāo)存儲塊進行擦除,對大部分?jǐn)?shù)據(jù)相同的目標(biāo)存儲塊來說減少了不必要的擦除操作,節(jié)省了擦除的時間,從而在整體上提高了編程的速度。下面通過實施例5詳細(xì)說明本申請?zhí)岢龅囊环N非易失性存儲器的擦寫裝置。實施例5,詳細(xì)介紹本申請?zhí)岢龅囊环N非易失性存儲器的擦寫裝置。參照圖6,示出了本申請實施例5所述一種非易失性存儲器的擦寫裝置結(jié)構(gòu)圖。所述擦寫裝置包括以下模塊:模式選擇模塊61,目標(biāo)塊確定模塊62,編程數(shù)據(jù)存儲模塊63,編程數(shù)據(jù)讀取模塊64,編程驗證模塊65,擦除模塊66,編程模塊67,以及,判斷模塊68。下面分別詳細(xì)說明各個模塊的功能及模塊間的關(guān)系。模式選擇模塊61,用于選擇工作模式,所述工作模式包括擦除模式、編程模式和擦寫模式;如果僅僅對存儲塊或存儲區(qū)域進行擦除操作,模式選擇模塊61選擇擦除模式;如果僅僅對存儲塊或存儲區(qū)域進行編程操作,模式選擇模塊61選擇編程模式;如果對存儲塊或存儲區(qū)域進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較大,模式選擇模塊61先選擇擦除模式,再選擇編程模式;如果對存儲塊或存儲區(qū)域進行擦寫操作,并且所述擦寫操作涉及到的數(shù)據(jù)改變較小,模式選擇模塊61選擇擦寫模式。目標(biāo)塊確定模塊62,用于當(dāng)選擇擦寫模式時,確定一要擦寫的目標(biāo)存儲塊;當(dāng)模式選擇模塊61選擇了擦寫模式時,目標(biāo)塊確定模塊62要在非易失性存儲器中確定出哪些存儲塊需要進行擦寫操作,在這些存儲塊中確定出其中的一個,即確定一要擦寫的目標(biāo)存儲塊。編程數(shù)據(jù)存儲模塊63,用于將需要編程的數(shù)據(jù)存到臨時存儲器中;所述編程數(shù)據(jù)存儲模塊63將需要編程的數(shù)據(jù)存到臨時存儲器中。臨時存儲器只是用來臨時存放需要編程的數(shù)據(jù)。編程數(shù)據(jù)讀取模塊64,用于從臨時存儲器中讀取需要編程的數(shù)據(jù);編程數(shù)據(jù)讀取模塊64將編程數(shù)據(jù)存儲模塊63在臨時存儲塊中存儲的數(shù)據(jù)讀取出來。編程驗證模塊65,用于當(dāng)選擇擦寫模式時,驗證所述目標(biāo)存儲塊是否需要編程;在目標(biāo)塊確定模塊62確定了一個要擦寫的目標(biāo)存儲塊之后,編程驗證模塊65要對該目標(biāo)存儲塊進行驗證,目的是判斷該目標(biāo)存儲塊上的數(shù)據(jù)與需要編程的數(shù)據(jù)是否相同,如果相同,則該目標(biāo)存儲塊不需要編程,轉(zhuǎn)入驗證下一個目標(biāo)存儲塊;如果不同,則該目標(biāo)存儲塊需要編程。擦除模塊66,用于對需要編程的所述目標(biāo)存儲塊進行塊擦除;在編程驗證模塊65確定出該目標(biāo)存儲塊需要編程之后,擦除模塊66對該目標(biāo)存儲塊進行塊擦除。編程模塊67,用于對塊擦除過的所述目標(biāo)存儲塊進行塊編程;在擦除模塊66對該目標(biāo)存儲塊進行塊擦除之后,編程模塊67對塊擦除過的該目標(biāo)存儲塊進行塊編程。判斷模塊68,用于判斷所有目標(biāo)存儲塊是否全部編程完畢,如果編程完畢,則編程結(jié)束;如果編程未完畢,繼續(xù)確定下一個目標(biāo)存儲塊并進行驗證、塊擦除和塊編程。對一個目標(biāo)存儲塊進行編程后,判斷模塊68判斷這個目標(biāo)存儲塊后是否還有需要擦寫的目標(biāo)存儲塊,如果沒有,則編程結(jié)束;如果有,則確定下一個需要擦寫的目標(biāo)存儲塊并進行編程驗證、塊擦除和塊編程。本說明書中的各個實施例均采用遞進的方式描述,每個實施例重點說明的都是與其他實施例的不同之處,各個實施例之間相同相似的部分互相參見即可。以上對本申請所提供的一種非易失性存儲器的擦寫方法及擦寫裝置,進行了詳細(xì)介紹,本文中應(yīng)用了具體個例對本申請的原理及實施方式進行了闡述,以上實施例的說明只是用于幫助理解本申請的方法及其核心思想;同時,對于本領(lǐng)域的一般技術(shù)人員,依據(jù)本申請的思想,在具體實施方式及應(yīng)用范圍上均會有改變之處,綜上所述,本說明書內(nèi)容不應(yīng)理解為對本申請的限制。