一種非易失性存儲器寫狀態(tài)寄存器的方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及非易失性存儲器技術(shù)領(lǐng)域,尤其涉及一種非易失性存儲器寫狀態(tài)寄存器的方法。
【背景技術(shù)】
[0002]半導(dǎo)體存儲器包括易失性存儲器和非易失性存儲器。易失性存儲器在斷電時會丟失存儲的內(nèi)容。非易失性存儲器即使在斷電時也可以保持存儲的內(nèi)容。非易失性存儲器包括只讀存儲器(ROM,Read-only Memory)、可編程只讀存儲器(PROM,ProgrammableRed-Only Memory)、電可擦除只讀存儲器(EEPR0M,Electrically Erasable ProgrammableRead-Only Memory)和閃存(Flash memory)。閃存存儲器包括NOR(或非)Flash和NAND(與非)Flash0
[0003]非易失性存儲器由存儲陣列組成,每個存儲陣列包括大量的存儲單元,每個存儲單元能夠存放I位二進(jìn)制數(shù)據(jù)(“O”或“I”)。存儲器中的存儲單元有一部分被用作為狀態(tài)寄存器,用戶通過發(fā)送寫狀態(tài)寄存器指令更新狀態(tài)寄存器的數(shù)據(jù)值。以閃存中的NOR Flash為例,對NOR Flash中的狀態(tài)寄存器進(jìn)行寫操作,可通過06H指令+01指令+數(shù)據(jù)來實現(xiàn)。
[0004]圖1是現(xiàn)有技術(shù)中對非易失性存儲器的狀態(tài)寄存器進(jìn)行寫操作的流程示意圖。參見圖1,所述寫操作具體包括如下步驟:
[0005]步驟SlOl:對狀態(tài)寄存器進(jìn)行預(yù)編程操作,將狀態(tài)寄存器中所有存儲單元的閾值電壓都調(diào)整到編程單元的閾值范圍內(nèi)。
[0006]步驟S102:將編程好的編程單元進(jìn)行擦除操作,每進(jìn)行一次擦除操作都要進(jìn)行擦除校驗,如果校驗失敗再次進(jìn)行擦除操作。
[0007]步驟S103:擦除成功后,利用用戶發(fā)送的數(shù)據(jù)對狀態(tài)寄存器中存儲單元進(jìn)行編程操作,每次編程操作都要進(jìn)行編程校驗,如果校驗失敗再次進(jìn)行編程操作。
[0008]步驟S104:編程成功后,將狀態(tài)寄存器中存儲單元中的數(shù)據(jù)讀出來,放到鎖存器中,供芯片工作時使用。
[0009]由上述非易失性存儲器狀態(tài)寄存器的寫操作流程可以看出,現(xiàn)有技術(shù)中,在軟件實現(xiàn)中,會重復(fù)對寄存器中的存儲單元進(jìn)行編程和擦除操作,降低了寫狀態(tài)寄存器的整體操作速度,增加了對狀態(tài)寄存器中存儲單元的擦除和編程次數(shù),縮短了狀態(tài)寄存器的使用壽命,降低了廣品品質(zhì)。
【發(fā)明內(nèi)容】
[0010]本發(fā)明實施例提供一種非易失性存儲器寫狀態(tài)寄存器的方法,以實現(xiàn)節(jié)約寫狀態(tài)寄存器的時間以及延長狀態(tài)寄存器的使用壽命。
[0011]本發(fā)明實施例提供了一種非易失性存儲器寫狀態(tài)寄存器的方法,包括:
[0012]步驟1、讀取狀態(tài)寄存器的原始數(shù)據(jù);
[0013]步驟2、判斷用戶發(fā)送的數(shù)據(jù)和所述狀態(tài)寄存器的原始數(shù)據(jù)是否相等,若是,則結(jié)束寫狀態(tài)寄存器過程,否則執(zhí)行步驟3 ;
[0014]步驟3、判斷所述狀態(tài)寄存器的原始數(shù)據(jù)是否全部為擦除數(shù)據(jù),若是,則對所述狀態(tài)寄存器的原始數(shù)據(jù)進(jìn)行編程操作,否則執(zhí)行步驟4 ;
[0015]步驟4、判斷所述狀態(tài)寄存器的原始數(shù)據(jù)是否全部為編程數(shù)據(jù),若是,則對所述狀態(tài)寄存器的原始數(shù)據(jù)進(jìn)行擦除操作,否則對所述狀態(tài)寄存器的原始數(shù)據(jù)依次進(jìn)行預(yù)編程操作和擦除操作,執(zhí)行步驟5;
[0016]步驟5、判斷所述用戶發(fā)送的數(shù)據(jù)是否全部為擦除數(shù)據(jù),若是,則結(jié)束寫狀態(tài)寄存器過程,否則對所述狀態(tài)寄存器的數(shù)據(jù)進(jìn)行編程操作,結(jié)束寫狀態(tài)寄存器過程。
[0017]進(jìn)一步的,所述預(yù)編程操作,包括:預(yù)編程校驗;判斷預(yù)編程校驗是否成功,若是,則執(zhí)行擦除操作,否則預(yù)編程所述狀態(tài)寄存器的數(shù)據(jù),直至預(yù)編程校驗成功。
[0018]進(jìn)一步的,所述擦除操作,包括:擦除所述狀態(tài)寄存器的所有數(shù)據(jù);擦除校驗;判斷擦除是否成功,若是,則執(zhí)行后續(xù)操作,否則擦除所述狀態(tài)寄存器的數(shù)據(jù),直至擦除成功。
[0019]進(jìn)一步的,所述擦除操作是擦除所述狀態(tài)寄存器的所有存儲單元數(shù)據(jù)。
[0020]進(jìn)一步的,所述編程操作,包括:編程校驗;判斷編程校驗是否成功,若是,則執(zhí)行后續(xù)操作,否則編程所述狀態(tài)寄存器的數(shù)據(jù),直至編程校驗成功。
[0021 ] 進(jìn)一步的,所述編程操作是將所述狀態(tài)寄存器數(shù)據(jù)不同于所述用戶發(fā)送數(shù)據(jù)的位數(shù)據(jù),編程為與所述用戶發(fā)送數(shù)據(jù)中相同的位數(shù)據(jù)。
[0022]進(jìn)一步的,所述方法在步驟1、讀取所述狀態(tài)寄存器的原始數(shù)據(jù)之前,還包括:接收用戶發(fā)送的寫狀態(tài)寄存器的數(shù)據(jù)。
[0023]進(jìn)一步的,所述方法在結(jié)束寫狀態(tài)寄存器過程之后,還包括:讀取所述狀態(tài)寄存器的當(dāng)前數(shù)據(jù),并存放到所述非易失性存儲器對應(yīng)的鎖存器中。
[0024]本發(fā)明實施例提供的技術(shù)方案,通過讀取狀態(tài)寄存器的原始數(shù)據(jù),對用戶發(fā)送的數(shù)據(jù)和狀態(tài)寄存器的原始數(shù)據(jù)進(jìn)行判斷,根據(jù)判斷結(jié)果,對狀態(tài)寄存器數(shù)據(jù)進(jìn)行寫操作,加快了寫狀態(tài)寄存器的整體操作速度,減少了對寄存器中的存儲單元重復(fù)編程和擦除的操作,延長了狀態(tài)寄存器的使用壽命,提高了產(chǎn)品品質(zhì)。
【附圖說明】
[0025]圖1是現(xiàn)有技術(shù)中對非易失性存儲器的狀態(tài)寄存器進(jìn)行寫操作的流程示意圖;
[0026]圖2是本發(fā)明實施例一提供的一種非易失性存儲器寫狀態(tài)寄存器的方法流程示意圖;
[0027]圖3是本發(fā)明實施例二提供的一種非易失性存儲器寫狀態(tài)寄存器的方法中預(yù)編程操作的流程示意圖;
[0028]圖4是本發(fā)明實施例二提供的一種非易失性存儲器寫狀態(tài)寄存器的方法中擦除操作的流程示意圖;
[0029]圖5是本發(fā)明實施例二提供的一種非易失性存儲器寫狀態(tài)寄存器的方法中編程操作的流程示意圖。
【具體實施方式】
[0030]下面結(jié)合附圖和實施例對本發(fā)明作進(jìn)一步的詳細(xì)說明。可以理解的是,此處所描述的具體實施例僅僅用于解釋本發(fā)明,而非對本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
[0031 ] 在更加詳細(xì)地討論示例性實施例之前應(yīng)當(dāng)提到的是,一些示例性實施例被描述成作為流程圖描繪的處理或方法。雖然流程圖將各項操作(或步驟)描述成順序的處理,但是其中的許多操作可以被并行地、并發(fā)地或者同時實施。此外,各項操作的順序可以被重新安排。當(dāng)其操作完成時所述處理可以被終止,但是還可以具有未包括在附圖中的附加步驟。所述處理可以對應(yīng)于方法、函數(shù)、規(guī)程、子例程、子程序等等。
[0032]實施例一
[0033]圖2是本發(fā)明實施例一提供的一種非易失性存儲器寫狀態(tài)寄存器的方法流程示意圖。所述方法適用于對非易失性存儲器的狀態(tài)寄存器進(jìn)行寫操作。所述狀態(tài)寄存器由多個存儲單元組成,每個存儲單元能夠存儲一位的二進(jìn)制數(shù)(“O”或“I”)。所述方法具體包括如下步驟:
[0034]步驟S210、讀取狀態(tài)寄存器的原始數(shù)據(jù),繼續(xù)執(zhí)行步驟S220 ;
[0035]步驟S220、判斷用戶發(fā)送的數(shù)據(jù)和所述狀態(tài)寄存器的原始數(shù)據(jù)是否相等,若是,則執(zhí)行步驟S290,否則執(zhí)行步驟S230 ;
[0036]步驟S230、判斷所述狀態(tài)寄存器的原始數(shù)據(jù)是否全部為擦除數(shù)據(jù),若是,則執(zhí)行步驟S280,否則執(zhí)行步驟S240 ;
[0037]步驟S240、判斷所述狀態(tài)寄存器的原始數(shù)據(jù)是否全部為編程數(shù)據(jù),若是,則執(zhí)行步驟S260,否則執(zhí)行步驟S250 ;
[0038]步驟S250、對所述狀態(tài)寄存器的原始數(shù)據(jù)進(jìn)行預(yù)編程操作,繼續(xù)執(zhí)行步驟S260 ;
[0039]步驟S260、對所述狀態(tài)寄存器的原始數(shù)據(jù)進(jìn)行擦除操作,繼續(xù)執(zhí)行步驟S270 ;
[0040]步驟S270、判斷所述用戶發(fā)送的數(shù)據(jù)是否全部為擦除數(shù)據(jù),若是,則執(zhí)行步驟S290,否則執(zhí)行步驟S280 ;
[0041]步驟S280、對所述狀態(tài)寄存器的原始數(shù)據(jù)進(jìn)行編程操作,繼續(xù)執(zhí)行步驟S290 ;
[0042]步驟S290、結(jié)束寫狀態(tài)寄存器過程。
[0043]其中,所述狀態(tài)寄存器的原始數(shù)據(jù)可以是全部為擦除數(shù)據(jù)、全部為編程數(shù)據(jù)或者部分為擦除數(shù)據(jù)。擦除數(shù)據(jù)是指狀態(tài)寄存器中存儲單元的閾值電壓處于擦除單元的閾值電壓范圍內(nèi)。編程數(shù)據(jù)是指狀態(tài)寄存器中需要編程的存儲單元的閾值電壓處于編程單元的閾值電壓范圍內(nèi)。
[0044]當(dāng)用戶發(fā)送的數(shù)據(jù)和所述狀態(tài)寄存器的原始數(shù)據(jù)相等時,狀態(tài)寄存器的原始