本發(fā)明涉及存儲(chǔ)設(shè)備硬件技術(shù)領(lǐng)域,尤其涉及一種nandflash的編程方法。
背景技術(shù):
nandflash是flash內(nèi)存的一種,屬于非易失性存儲(chǔ)設(shè)備(non-volatilememorydevice),其內(nèi)部采用非線性宏單元模式,具有容量大,改寫(xiě)速度快等優(yōu)點(diǎn),適用于大量數(shù)據(jù)的存儲(chǔ)。廣泛應(yīng)用于嵌入式產(chǎn)品中,如數(shù)碼相機(jī)、mp3隨身聽(tīng)記憶卡、體積小巧的u盤(pán)等。在nandflash的發(fā)展中,早期nandflash顆粒的存儲(chǔ)單元多為單層單元(single-levelcell,slc),即一個(gè)存儲(chǔ)單元為1bit(比特)位,此時(shí)每個(gè)存儲(chǔ)單元存在兩種狀態(tài)為0和1,隨著nandflash的發(fā)展,nandflash顆粒的存儲(chǔ)單元逐漸演變?yōu)槎鄬訂卧?multi-levelcell,mlc),即一個(gè)存儲(chǔ)單元有2比特位,接著推出了三層單元(triple-levelcell,tlc),即一個(gè)存儲(chǔ)單元有3比特位,甚至四層單元(quad-levelcell,qlc),即一個(gè)存儲(chǔ)單元有4比特位,相對(duì)應(yīng)的,nandflash顆粒存儲(chǔ)單元的狀態(tài)也由2個(gè)變?yōu)?個(gè)、8個(gè)甚至16個(gè)。
nandflash的操作包括三部分:擦除操作、編程(寫(xiě)操作)以及讀操作,其中以塊為單位進(jìn)行擦除操作,以頁(yè)為單位進(jìn)行編程和讀操作,對(duì)于nandflash的編程操作,其過(guò)程又分為加壓編程、編程驗(yàn)證以及驗(yàn)證結(jié)果三步操作。在nandflash存儲(chǔ)單元由1比特位變?yōu)槎啾忍匚坏那闆r下,圖1給出了傳統(tǒng)的nandflash進(jìn)行編程的編程方法示意圖。該示意圖以tlc存儲(chǔ)單元為例,tlc存儲(chǔ)單元具有1個(gè)擦除狀態(tài)和7個(gè)編程狀態(tài),其編程狀態(tài)記為p1~p7,如圖1所示,傳統(tǒng)的編程方法是在加壓編程之間啟動(dòng)七次編程的結(jié)果驗(yàn)證。該方法存在的問(wèn)題是:在一次加壓編程后,存儲(chǔ)單元實(shí)際上只達(dá)到了p1狀態(tài),還未達(dá)到p2,p3,p4,p5,p6,p7狀態(tài),如果此時(shí)就啟動(dòng)p2~p7的編程驗(yàn)證,就會(huì)大大浪費(fèi)編程驗(yàn)證時(shí)間。其編程驗(yàn)證和掃描驗(yàn)證結(jié)果所用的時(shí)間就會(huì)占據(jù)整個(gè)編程過(guò)程的一半以上,嚴(yán)重影響編程速度。
在編程操作中,由于加壓編程的時(shí)間不能改變,為了提高編程操作速度,只有控制編程驗(yàn)證和掃描驗(yàn)證結(jié)果所用的時(shí)間。圖2為改進(jìn)后的現(xiàn)有編程方法的示意圖,仍以tlcnandflash為例,如圖2所示,該編程方法使用參數(shù)來(lái)控制何時(shí)啟動(dòng)編程驗(yàn)證,例如,在編程驗(yàn)證階段,如果沒(méi)有啟動(dòng)p2的驗(yàn)證,那么只做p1的編程驗(yàn)證。該方法雖然減少了驗(yàn)證的次數(shù),提高了編程速度,但在對(duì)存儲(chǔ)塊中的所有編程頁(yè)都做一樣的處理時(shí)會(huì)產(chǎn)生誤差,導(dǎo)致其他問(wèn)題如對(duì)峰值電流和功耗產(chǎn)生影響。
技術(shù)實(shí)現(xiàn)要素:
有鑒于此,本發(fā)明實(shí)施例提供一種nandflash的編程方法,以提高nandflash內(nèi)存的編程速度。
本發(fā)明實(shí)施例提供了一種nandflash的編程方法,包括:
s101、對(duì)編程頁(yè)施加編程電壓,如果達(dá)到啟動(dòng)第1狀態(tài)編程驗(yàn)證的驗(yàn)證條件,則啟動(dòng)第1狀態(tài)的編程驗(yàn)證并掃描處于第1狀態(tài)的存儲(chǔ)單元;
s102、設(shè)置m=1,其中,m為所述nandflash的編程狀態(tài)序號(hào),1≤m≤m,m=2n-1,n為nandflash存儲(chǔ)單元具有的比特位;
s103、判定m<2n-1是否成立,若是,則執(zhí)行步驟s104;若否,則執(zhí)行步驟s106;
s104、如果第m狀態(tài)的掃描結(jié)果達(dá)到啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值,則設(shè)置m=m+1,啟動(dòng)第m狀態(tài)的編程驗(yàn)證并掃描處于第m狀態(tài)的存儲(chǔ)單元,之后返回步驟s103;若否,則執(zhí)行步驟s105;
s105、以設(shè)定電壓增量值抬升所述當(dāng)前編程電壓,啟動(dòng)第1狀態(tài)至第m狀態(tài)的編程驗(yàn)證并掃描處于第m狀態(tài)的存儲(chǔ)單元,之后返回步驟s103;
s106、判定第m狀態(tài)的編程驗(yàn)證次數(shù)是否達(dá)到最大驗(yàn)證次數(shù),若是,則執(zhí)行步驟s107;若否,則返回執(zhí)行步驟s105;
s107、如果所述編程頁(yè)中所有編程失敗的存儲(chǔ)單元總數(shù)不大于內(nèi)部設(shè)定值,則結(jié)束對(duì)所述編程頁(yè)的編程操作。
進(jìn)一步的,所述對(duì)編程頁(yè)施加編程電壓,包括:
基于nandflash中的控制單元通過(guò)字線選擇單元選取要編程的存儲(chǔ)頁(yè),記為編程頁(yè);對(duì)所述編程頁(yè)的字線施加初始編程電壓,并在設(shè)定時(shí)間內(nèi)持續(xù)施壓。
進(jìn)一步的,所述啟動(dòng)第1狀態(tài)編程驗(yàn)證的驗(yàn)證條件為:對(duì)所述編程頁(yè)施加編程電壓的編程次數(shù)達(dá)到設(shè)定驗(yàn)證啟動(dòng)次數(shù);所述預(yù)設(shè)驗(yàn)證啟動(dòng)次數(shù)設(shè)定在1次~128次。
進(jìn)一步的,還包括:對(duì)編程頁(yè)施加編程電壓,如果所施加編程電壓的當(dāng)前編程次數(shù)小于所述預(yù)設(shè)驗(yàn)證啟動(dòng)次數(shù),則以設(shè)定電壓增量值抬升所述編程電壓,并令當(dāng)前編程次數(shù)自加1。
進(jìn)一步的,還包括:如果所述編程頁(yè)中所有編程失敗的存儲(chǔ)單元總數(shù)超過(guò)內(nèi)部設(shè)定值,則強(qiáng)制結(jié)束所述編程頁(yè)的當(dāng)前編程驗(yàn)證操作,同時(shí)聲明所有編程失敗的存儲(chǔ)單元,并對(duì)所述編程頁(yè)重新執(zhí)行編程操作。
進(jìn)一步的,所述啟動(dòng)第m狀態(tài)的編程驗(yàn)證,包括:?jiǎn)?dòng)對(duì)所述編程頁(yè)的讀操作,基于讀操作查驗(yàn)應(yīng)該編程到第m狀態(tài)的存儲(chǔ)單元是否已編程到了第m狀態(tài)。
進(jìn)一步的,所述掃描所述第m狀態(tài)的存儲(chǔ)單元,包括:
基于所述編程頁(yè)中存儲(chǔ)單元的位線,對(duì)應(yīng)該處于第m狀態(tài)的存儲(chǔ)單元進(jìn)行掃描,確定編程失敗的存儲(chǔ)單元個(gè)數(shù),并計(jì)算第m狀態(tài)的編程失敗率;記所述第m狀態(tài)的編程失敗率為第m狀態(tài)的掃描結(jié)果。
進(jìn)一步的,所述啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值為一個(gè)百分比值,所述百分比值基于所述編程頁(yè)在歷史編程操作中第m狀態(tài)編程失敗率的數(shù)據(jù)規(guī)律設(shè)定。
進(jìn)一步的,所述最大驗(yàn)證次數(shù)以及內(nèi)部設(shè)定值均基于所述編程頁(yè)在歷史編程操作中的數(shù)據(jù)規(guī)律設(shè)定。
進(jìn)一步的,所述設(shè)定電壓增量值為一固定值。
本發(fā)明實(shí)施例提供的一種nandflash的編程方法,在現(xiàn)有的編程方法的前提下對(duì)編程過(guò)程中的編程驗(yàn)證及驗(yàn)證結(jié)果掃描兩階段的操作進(jìn)行了改進(jìn),在該方法中,將對(duì)處于第m+1編程狀態(tài)存儲(chǔ)單元的編程驗(yàn)證基于處于第m狀態(tài)存儲(chǔ)單元的掃描驗(yàn)證結(jié)果進(jìn)行啟動(dòng),并設(shè)定了存儲(chǔ)單元編程驗(yàn)證的最大次數(shù)以及結(jié)束編程操作的結(jié)束條件。利用該方法,可以大大降低整個(gè)編程操作的時(shí)間消耗,很大程度的提高編程速度,同時(shí)也避免了編程操作時(shí)峰值電流和功耗產(chǎn)生影響。
附圖說(shuō)明
圖1為nandflash傳統(tǒng)編程方法在tlcnandflash中的過(guò)程示意圖;
圖2為現(xiàn)有的nandflash編程方法在tlcnandflash中的過(guò)程示意圖;
圖3為本發(fā)明實(shí)施例一提供的一種nandflash的編程方法的流程圖;
圖4為本發(fā)明實(shí)施例二提供的一種nandflash的編程方法的流程圖;
圖5a為本發(fā)明實(shí)施例三提供的一種nandflash的編程方法的流程圖;
圖5b為本發(fā)明實(shí)施例三提供的一種nandflash的編程方法在tlcnandflash中的過(guò)程示意圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說(shuō)明??梢岳斫獾氖牵颂幩枋龅木唧w實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說(shuō)明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部?jī)?nèi)容。
實(shí)施例一
圖3為本發(fā)明實(shí)施例一提供的一種nandflash的編程方法的流程圖,該方法由nandflash執(zhí)行,是對(duì)現(xiàn)有編程方法的一種改進(jìn),如圖3所示,該方法包括:
s101、對(duì)編程頁(yè)施加編程電壓,如果達(dá)到啟動(dòng)第1狀態(tài)編程驗(yàn)證的驗(yàn)證條件,則啟動(dòng)第1狀態(tài)的編程驗(yàn)證并掃描處于第1狀態(tài)的存儲(chǔ)單元。
在本實(shí)施例中,所述編程頁(yè)具體可為nandflash的存儲(chǔ)單元陣列中用于編程操作的一個(gè)存儲(chǔ)單元頁(yè)。所述編程操作以存儲(chǔ)單元頁(yè)為單位進(jìn)行,所述nandflash的存儲(chǔ)單元陣列由多個(gè)存儲(chǔ)單元塊組成,所述存儲(chǔ)單元塊由多個(gè)存儲(chǔ)單元頁(yè)組成,所述存儲(chǔ)單元頁(yè)由多個(gè)存儲(chǔ)單元以行列連接組成。在一個(gè)存儲(chǔ)單元頁(yè)中,每行由多個(gè)存儲(chǔ)單元以字線連接,每列由多個(gè)存儲(chǔ)單元以位線連接,且一個(gè)存儲(chǔ)單元頁(yè)共享一根字線,一個(gè)存儲(chǔ)單元塊共享一根位線。
一般地,nandflash的編程操作分為:加壓編程、編程狀態(tài)驗(yàn)證以及驗(yàn)證結(jié)果掃描三個(gè)階段?;趎andflash型號(hào)的不同,存儲(chǔ)單元所具有比特位的個(gè)數(shù)不同,進(jìn)而編程時(shí)nandflash具有的編程狀態(tài)個(gè)數(shù)也不同。所述編程驗(yàn)證具體可為驗(yàn)證對(duì)編程頁(yè)加壓后存儲(chǔ)單元中要發(fā)生改變的比特位狀態(tài)是否發(fā)生了改變,即比特位的狀態(tài)是否由“1”變成“0”。所述驗(yàn)證結(jié)果掃描具體可為掃描編程到某個(gè)編程狀態(tài)的所有存儲(chǔ)單元,確定這些存儲(chǔ)單元中應(yīng)該編程到某個(gè)編程狀態(tài)但是編程失敗的存儲(chǔ)單元個(gè)數(shù)。
在本實(shí)施例中,所提供的方法對(duì)現(xiàn)有編程方法的改進(jìn)主要體現(xiàn)在編程狀態(tài)驗(yàn)證以及驗(yàn)證結(jié)果掃描階段。所述第1狀態(tài)具體可指nandflash編程操作中存儲(chǔ)單元應(yīng)該呈現(xiàn)出的一種編程狀態(tài)。相應(yīng)的,編程狀態(tài)還存在第2狀態(tài)、第3狀態(tài)、...、以及第m狀態(tài)等。將所述編程狀態(tài)以編號(hào)表示,主要便于對(duì)本發(fā)明所提編程方法中之后操作的描述。
進(jìn)一步的,所述對(duì)編程頁(yè)施加編程電壓,包括:基于nandflash中的控制單元通過(guò)字線選擇單元選取要編程的存儲(chǔ)頁(yè),記為編程頁(yè);對(duì)所述編程頁(yè)的字線施加初始編程電壓,并在設(shè)定時(shí)間內(nèi)持續(xù)施壓。
一般地,nandflash的簡(jiǎn)易結(jié)構(gòu)優(yōu)選為:存儲(chǔ)單元陣列、字線選擇單元、位線選擇單元、電壓泵、以及整個(gè)nandflash芯片的控制單元。所述控制單元控制nandflash的具體操作,如擦除操作,編程操作等。在本實(shí)施例中,對(duì)于nandflash的編程操作,nandflash中的控制單元首先通過(guò)字線選擇單元選取要編程的存儲(chǔ)頁(yè),作為編程頁(yè);然后控制電壓泵對(duì)編程施加編程電壓并進(jìn)行相應(yīng)的加壓控制,如持續(xù)施壓和以設(shè)定值抬升電壓等。
在本實(shí)施例中,通過(guò)電壓泵對(duì)編程頁(yè)的字線施加編程電壓,使其處于高電平,此時(shí)編程頁(yè)的位線處于0電平,進(jìn)而使作為存儲(chǔ)單元的晶體管中的電子注入該晶體管的浮柵中,由此實(shí)現(xiàn)存儲(chǔ)單元比特位狀態(tài)的改變。需要注意的是,在設(shè)定時(shí)間內(nèi)電壓泵向編程頁(yè)持續(xù)施加恒定電壓,設(shè)定時(shí)間一般優(yōu)選為10μs~150μs。
在本實(shí)施例中,在對(duì)編程頁(yè)加壓之后,需要對(duì)編程頁(yè)存儲(chǔ)單元的編程狀態(tài)進(jìn)行驗(yàn)證,所采用的方法是基于編程驗(yàn)證啟動(dòng)條件逐步啟動(dòng)各編程狀態(tài)的編程驗(yàn)證。所述啟動(dòng)第1狀態(tài)編程驗(yàn)證的條件具體為所施加編程電壓的當(dāng)前編程次數(shù)是否達(dá)到了設(shè)定的啟動(dòng)第1狀態(tài)編程驗(yàn)證的設(shè)定驗(yàn)證啟動(dòng)次數(shù)。
s102、設(shè)置m=1,其中,m為所述nandflash的編程狀態(tài)序號(hào),1≤m≤m,m=2n-1,n為nandflash存儲(chǔ)單元具有的比特位。
在本實(shí)施例中,不同類(lèi)型的nandflash,存儲(chǔ)單元具有的比特位個(gè)數(shù)不同,進(jìn)而編程時(shí)能達(dá)到的編程狀態(tài)的個(gè)數(shù)也不同,為了便于對(duì)之后步驟的描述,以序號(hào)m表示不同的編程狀態(tài),其中,1≤m≤m,m=2n-1,n為nandflash存儲(chǔ)單元具有的比特位。示例性的,如果存儲(chǔ)單元具有3比特位,則具有的編程狀態(tài)總數(shù)m就為7個(gè),各編程狀態(tài)可表示為第1狀態(tài),第2狀態(tài),...,第m狀態(tài),...,第7狀態(tài)。
s103、判定m<2n-1是否成立,若是,則執(zhí)行步驟s104;若否,則執(zhí)行步驟s107。
在本實(shí)施例中,在判定編程狀態(tài)的掃描結(jié)果是否符合啟動(dòng)下一編程狀態(tài)進(jìn)行編程驗(yàn)證的條件前,需要先判定所述編程狀態(tài)是否合法,即判定所述編程狀態(tài)的序號(hào)m是否大于2n-1,如果大于的話,再進(jìn)行之后的編程驗(yàn)證判定是無(wú)意義的,可直接執(zhí)行步驟s107。
s104、判定第m狀態(tài)的掃描結(jié)果是否達(dá)到啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值,若是,則執(zhí)行步驟s105;若否,則執(zhí)行步驟s106。
在本實(shí)施例中,啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值具體指第m+1狀態(tài)編程驗(yàn)證的啟動(dòng)條件,所述設(shè)定值需要與所述第m狀態(tài)的掃描結(jié)果值進(jìn)行比較。
s105、設(shè)置m=m+1,啟動(dòng)第m狀態(tài)的編程驗(yàn)證并掃描處于第m狀態(tài)的存儲(chǔ)單元,之后返回步驟s103;
在本實(shí)施例中,如果第m+1狀態(tài)的編程驗(yàn)證的設(shè)定值小于或等于第m狀態(tài)的掃描結(jié)果值,則可啟動(dòng)第m+1狀態(tài)的編程驗(yàn)證。需要注意的是,在啟動(dòng)第m+1狀態(tài)的編程驗(yàn)證前,需先將設(shè)置為m=m+1,由此便于實(shí)現(xiàn)所有編程狀態(tài)的編程驗(yàn)證條件判定的循環(huán)操作。
進(jìn)一步的,所述啟動(dòng)第m狀態(tài)的編程驗(yàn)證,包括:?jiǎn)?dòng)對(duì)所述編程頁(yè)的讀操作,基于讀操作查驗(yàn)應(yīng)該編程到第m狀態(tài)的存儲(chǔ)單元是否已編程到了第m狀態(tài)。
在本實(shí)施例中,所述對(duì)第m狀態(tài)的編程驗(yàn)證具體可理解為對(duì)所述編程頁(yè)中應(yīng)該編程到第m狀態(tài)的存儲(chǔ)單元進(jìn)行讀操作,由此查驗(yàn)應(yīng)該編程到第m狀態(tài)的存儲(chǔ)單元是否已編程到了第m狀態(tài)。
一般地,在nandflash的編程操作中,所述編程頁(yè)中哪個(gè)存儲(chǔ)單元的比特位應(yīng)該處于哪個(gè)編程狀態(tài)在加壓編程前已經(jīng)是確定的??梢哉f(shuō),在所述編程頁(yè)中,每個(gè)編程狀態(tài)對(duì)應(yīng)的存儲(chǔ)單元個(gè)數(shù)是一個(gè)固定值。確定編程狀態(tài)對(duì)應(yīng)存儲(chǔ)單元個(gè)數(shù)的過(guò)程可表述為:由外部用戶通過(guò)復(fù)用引腳向nandflash芯片輸入數(shù)據(jù),所述輸入數(shù)據(jù)存放至頁(yè)寄存器中,并通過(guò)nand片選向nfcmd寫(xiě)入命令以及向nfaddr寫(xiě)入地址告訴選中的存儲(chǔ)單元需要達(dá)到什么狀態(tài)。等待數(shù)據(jù)就緒后,就可通過(guò)加壓編程實(shí)現(xiàn)相應(yīng)存儲(chǔ)單元的比特位狀態(tài)的改變,之后可通過(guò)讀操作驗(yàn)證存儲(chǔ)單元中比特位狀態(tài)變化的情況。
s106、以設(shè)定電壓增量值抬升所述當(dāng)前編程電壓,啟動(dòng)第1狀態(tài)至第m狀態(tài)的編程驗(yàn)證并掃描處于第m狀態(tài)的存儲(chǔ)單元,之后返回步驟s103。
在本實(shí)施例中,如果第m狀態(tài)的掃描結(jié)果值沒(méi)有達(dá)到設(shè)定的第m+1狀態(tài)的編程驗(yàn)證啟動(dòng)值,那么表明nandflash電壓泵向編程也提供的編程電壓達(dá)不到存儲(chǔ)單元中電荷的移動(dòng)的力度,需要抬升電壓,因此可以以設(shè)定電壓增量值抬升當(dāng)前編程電壓并在設(shè)定時(shí)間內(nèi)持續(xù)施加抬升后的編程電壓。
一般地,存儲(chǔ)單元達(dá)到不同編程狀態(tài)所需要的電壓大小和寬度不同,即持續(xù)施加編程電壓的設(shè)定時(shí)間不同,因此,在設(shè)定電壓增量值抬升編程電壓時(shí)也要相應(yīng)改變電壓持續(xù)的設(shè)定時(shí)間長(zhǎng)短,在本發(fā)明方法中,設(shè)定時(shí)間的范圍基于歷史操作的數(shù)據(jù)規(guī)律動(dòng)態(tài)改變。
在本實(shí)施例中,在以設(shè)定電壓增量值抬升所述當(dāng)前編程電壓后,需要啟動(dòng)第1狀態(tài)到第m狀態(tài)的編程驗(yàn)證,而啟動(dòng)所述第1~m的編程驗(yàn)證時(shí)不再需要判定是否達(dá)到驗(yàn)證啟動(dòng)條件,且無(wú)需掃描處于第1~m-1狀態(tài)的存儲(chǔ)單元,只需對(duì)處于第m狀態(tài)的存儲(chǔ)單元進(jìn)行掃描,因?yàn)閷?duì)第m狀態(tài)存儲(chǔ)單元的掃描結(jié)果需要作為判定是否啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的條件。
s107、判定第m狀態(tài)的編程驗(yàn)證次數(shù)是否達(dá)到最大驗(yàn)證次數(shù),若是,則執(zhí)行步驟s108;若否,則返回執(zhí)行步驟s106。
在本實(shí)施例中,若m的當(dāng)前賦值大于等于2n-1(n為存儲(chǔ)單元具有的比特位個(gè)數(shù))時(shí),無(wú)需再基于第m狀態(tài)的掃描結(jié)果判定是否需要啟動(dòng)下一編程狀態(tài)的編程驗(yàn)證,而是需要判定對(duì)第m狀態(tài)的編程驗(yàn)證的次數(shù)是否達(dá)到了最大驗(yàn)證次數(shù)。
一般地,在nandflash閃存的工作操作中,無(wú)論是擦除操作還是編程操作,對(duì)存儲(chǔ)單元比特位狀態(tài)改變數(shù)量的限定并不像norflash那樣絕對(duì),nandflash允許存在少量沒(méi)有達(dá)到相應(yīng)狀態(tài)的存儲(chǔ)單元。因此對(duì)于第m狀態(tài)的編程驗(yàn)證不能無(wú)休止的進(jìn)行,需要一個(gè)結(jié)束條件,即設(shè)置編程驗(yàn)證的最大驗(yàn)證次數(shù),當(dāng)處于第m狀態(tài)存儲(chǔ)單元驗(yàn)證次數(shù)達(dá)到最大次數(shù)時(shí),就可結(jié)束對(duì)其的編程驗(yàn)證。
s108、如果所述編程頁(yè)中所有編程失敗的存儲(chǔ)單元總數(shù)不大于內(nèi)部設(shè)定值,則結(jié)束對(duì)所述編程頁(yè)的編程操作。
在本實(shí)施例中,所述所有編程失敗的存儲(chǔ)單元具體可指對(duì)存儲(chǔ)單元的驗(yàn)證達(dá)到最大驗(yàn)證次數(shù)后編程頁(yè)中所有沒(méi)有達(dá)到相應(yīng)編程狀態(tài)的存儲(chǔ)單元。所述內(nèi)部設(shè)定值具體可指nandflash中為相應(yīng)編程頁(yè)允許存儲(chǔ)單元可以達(dá)到的最大錯(cuò)誤個(gè)數(shù)。如果最終編程失敗的存儲(chǔ)單元總數(shù)不大于允許的最大錯(cuò)誤個(gè)數(shù)則可正常結(jié)束對(duì)所述編程頁(yè)的編程操作。
進(jìn)一步的,所述最大驗(yàn)證次數(shù)以及內(nèi)部設(shè)定值均基于所述編程頁(yè)在歷史編程操作中的數(shù)據(jù)規(guī)律設(shè)定。
在本實(shí)施例中,對(duì)最大驗(yàn)證次數(shù)及內(nèi)部設(shè)定值的設(shè)定由編程操作的實(shí)際情況設(shè)定,一般地,可基于所述編程頁(yè)在歷史編程操作中的數(shù)據(jù)規(guī)律設(shè)定最大驗(yàn)證次數(shù)及內(nèi)部設(shè)定值的最佳值。
本發(fā)明實(shí)施例一提供的一種nandflash的編程方法,在現(xiàn)有的編程方法的前提下對(duì)編程過(guò)程中的編程驗(yàn)證及驗(yàn)證結(jié)果掃描兩階段的操作進(jìn)行了改進(jìn),在該方法中,基于處于第m狀態(tài)存儲(chǔ)單元的掃描驗(yàn)證結(jié)果決定是否啟動(dòng)對(duì)處于第m+1編程狀態(tài)存儲(chǔ)單元的編程驗(yàn)證,所述方法還設(shè)定了存儲(chǔ)單元編程驗(yàn)證的最大次數(shù)以及結(jié)束編程操作的結(jié)束條件。利用該方法,可以大大降低整個(gè)編程操作的時(shí)間消耗,很大程度的提高編程速度,同時(shí)也避免了編程操作時(shí)峰值電流和功耗產(chǎn)生影響。
實(shí)施例二
圖4為本發(fā)明實(shí)施例二提供的一種nandflash的編程方法,本實(shí)施例在上述各實(shí)施例的基礎(chǔ)上進(jìn)行優(yōu)化,在本實(shí)施例中,進(jìn)一步的,本發(fā)明所述的方法還包括步驟:對(duì)編程頁(yè)施加編程電壓,如果所施加編程電壓的當(dāng)前編程次數(shù)小于所述預(yù)設(shè)驗(yàn)證啟動(dòng)次數(shù),則以設(shè)定電壓增量值抬升所述編程電壓,并令當(dāng)前編程次數(shù)自加1。
進(jìn)一步的,還包括步驟:如果所述編程頁(yè)中所有編程失敗的存儲(chǔ)單元總數(shù)超過(guò)內(nèi)部設(shè)定值,則強(qiáng)制結(jié)束所述編程頁(yè)的當(dāng)前編程驗(yàn)證操作,同時(shí)聲明所有編程失敗的存儲(chǔ)單元,并對(duì)所述編程頁(yè)重新執(zhí)行編程操作。
如圖4所示,本發(fā)明實(shí)施例提供的一種nashflash的編程方法,包括如下步驟:
s201、對(duì)編程頁(yè)施加編程電壓。
在本實(shí)施例中,基于nandflash的控制單元,控制電壓泵在設(shè)定時(shí)間內(nèi)對(duì)選中字線的編程頁(yè)持續(xù)施加恒定電壓。一般地,向編程頁(yè)施加的初始編程電壓為8v左右。
s202、判定所施加編程電壓的當(dāng)前編程次數(shù)是否達(dá)到啟動(dòng)第1狀態(tài)編程驗(yàn)證的驗(yàn)證條件,若否,則執(zhí)行步驟s203;若是,則執(zhí)行步驟s204。
在本實(shí)施例中,所述啟動(dòng)第1狀態(tài)編程驗(yàn)證的驗(yàn)證條件為對(duì)所述編程頁(yè)施加編程電壓的編程次數(shù)達(dá)到設(shè)定驗(yàn)證啟動(dòng)次數(shù);進(jìn)一步的,所述設(shè)定驗(yàn)證啟動(dòng)次數(shù)設(shè)定在1次~128次。
在本實(shí)施例中,當(dāng)對(duì)編程頁(yè)進(jìn)行編程操作時(shí),施加的編程電壓使得部分存儲(chǔ)單元的比特位處于了第1狀態(tài),需要說(shuō)明的是,存儲(chǔ)單元的比特位處于第1狀態(tài)所需要的閾值電壓的范圍一般在10v~30v。
s203、以設(shè)定電壓增量值抬升編程電壓,并令當(dāng)前編程次數(shù)自加1,之后返回步驟s202。
在本實(shí)施例中,如果編程頁(yè)所施加編程電壓的當(dāng)前編程次數(shù)沒(méi)有達(dá)到設(shè)定的啟動(dòng)第1狀態(tài)編程驗(yàn)證的驗(yàn)證條件,則需要以設(shè)定電壓增量值抬升當(dāng)前編程電壓,并令當(dāng)前編程次數(shù)自加1。進(jìn)一步的,所述設(shè)定電壓增量值為一固定值。即每次抬升的軟擦除電壓值不變,優(yōu)選地,所述電壓增量值的范圍控制在0.5v~1.5v內(nèi)。
s204、啟動(dòng)第1狀態(tài)的編程驗(yàn)證并掃描處于第1狀態(tài)的存儲(chǔ)單元。
在本實(shí)施例中,所述啟動(dòng)編程頁(yè)第1狀態(tài)的編程驗(yàn)證電壓與編程頁(yè)處于加壓編程階段的電壓不同,一般地,將編程驗(yàn)證階段的電壓設(shè)定在-3v~10v。同時(shí),所述啟動(dòng)第1狀態(tài)的編程驗(yàn)證并掃描處于第1狀態(tài)的存儲(chǔ)單元具體描述為對(duì)應(yīng)該編程到第1狀態(tài)的存儲(chǔ)單元進(jìn)行讀操作,查驗(yàn)所述存儲(chǔ)單元是否已經(jīng)編程到了第1狀態(tài);之后對(duì)所述存儲(chǔ)單元進(jìn)行掃描,確定應(yīng)編程到第1狀態(tài)的但是編程失敗的存儲(chǔ)單元個(gè)數(shù)?;谏鲜鍪〉拇鎯?chǔ)單元個(gè)數(shù)以及應(yīng)該編程到第1狀態(tài)存儲(chǔ)單元的總個(gè)數(shù),可以計(jì)算出此次加壓編程中,編程到第1狀態(tài)的失敗率。
s205、設(shè)置m=1,其中,m為所述nandflash的編程狀態(tài)序號(hào),1≤m≤m,m=2n-1,n為nandflash存儲(chǔ)單元具有的比特位。
在本實(shí)施例中,在接下來(lái)的驗(yàn)證啟動(dòng)的循環(huán)判定前,可先對(duì)nandflash的編程狀態(tài)m的值初始化,設(shè)置m=1。之后通過(guò)本發(fā)明方法中設(shè)定的對(duì)m的累加,實(shí)現(xiàn)對(duì)第m狀態(tài)是否啟動(dòng)編程驗(yàn)證的循環(huán)判定。
s206、判定m<2n-1是否成立,若是,則執(zhí)行步驟s207;若否,則執(zhí)行步驟s210。
在本實(shí)施例中,所述步驟s206的判定可看作本發(fā)明方法中進(jìn)行循環(huán)操作的一個(gè)總體判定條件,只有滿足m<2n-1,才有進(jìn)行循環(huán)操作的必要。
s207、判定第m狀態(tài)的掃描結(jié)果是否達(dá)到啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值,若是,則執(zhí)行步驟s208;若否,則執(zhí)行步驟209。
在本實(shí)施例中,所述第m狀態(tài)的掃描結(jié)果具體為:應(yīng)該處于第m狀態(tài)但加壓編程后沒(méi)有達(dá)到第m狀態(tài)的存儲(chǔ)單元個(gè)數(shù)與所述應(yīng)該處于第m狀態(tài)的所有存儲(chǔ)單元個(gè)數(shù)的比值。需要注意的是,該比值為一百分比值。
進(jìn)一步的,所述啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值為一個(gè)百分比值,所述百分比值基于所述編程頁(yè)在歷史編程操作中第m狀態(tài)編程失敗率的數(shù)據(jù)規(guī)律設(shè)定。
在本實(shí)施例中,由于第m+1狀態(tài)編程驗(yàn)證的啟動(dòng)基于第m狀態(tài)的掃描結(jié)果,所以用于啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值的形式應(yīng)該與第m狀態(tài)的掃描結(jié)果形式相同,需設(shè)置成一百分比值。所述百分比值的設(shè)定需要遵循一定的規(guī)律,設(shè)定的太高或太低都會(huì)影響編程驗(yàn)證的效率,因此可基于以往的歷史編程操作中第m狀態(tài)編程失敗率的一個(gè)數(shù)據(jù)規(guī)律設(shè)定,從而使第m+1狀態(tài)設(shè)定值快速啟動(dòng)編程驗(yàn)證。
s208、設(shè)置m=m+1,啟動(dòng)第m狀態(tài)的編程驗(yàn)證并掃描處于第m狀態(tài)的存儲(chǔ)單元,之后返回步驟s206。
如果設(shè)定的第m+1狀態(tài)的編程驗(yàn)證啟動(dòng)值小于或等于第m狀態(tài)的掃描結(jié)果值,則可啟動(dòng)第m+1狀態(tài)的編程驗(yàn)證。由于先設(shè)置m=m+1,所述啟動(dòng)第m狀態(tài)的編程驗(yàn)證并掃描處于第m狀態(tài)的存儲(chǔ)單元即可看作在設(shè)置m=m+1前,對(duì)第m+1狀態(tài)的編程操作。
進(jìn)一步的,所述掃描所述第m狀態(tài)的存儲(chǔ)單元,包括:基于所述編程頁(yè)中存儲(chǔ)單元的位線,對(duì)應(yīng)該處于第m狀態(tài)的存儲(chǔ)單元進(jìn)行掃描,確定編程失敗的存儲(chǔ)單元個(gè)數(shù),并計(jì)算第m狀態(tài)的編程失敗率;記所述第m狀態(tài)的編程失敗率為第m狀態(tài)的掃描結(jié)果。
在本實(shí)施例中,對(duì)所述第m狀態(tài)的存儲(chǔ)單元的掃描主要通過(guò)對(duì)所述編程頁(yè)中存儲(chǔ)單元的位線掃描實(shí)現(xiàn)?;谒龃鎯?chǔ)單元的位線,可查看哪些存儲(chǔ)單元的比特位沒(méi)有改變到第m狀態(tài)。如果比特位沒(méi)有改變到相應(yīng)狀態(tài),則認(rèn)為對(duì)相應(yīng)存儲(chǔ)單元的編程失敗,由此可確定編程到第m狀態(tài)失敗的存儲(chǔ)單元個(gè)數(shù)?;诰幊淌〉拇鎯?chǔ)單元個(gè)數(shù)以及需要編程的存儲(chǔ)單元總個(gè)數(shù),可計(jì)算出第m狀態(tài)的編程失敗率。第m狀態(tài)的編程失敗率被看作第m狀態(tài)的掃描結(jié)果。
s209、以設(shè)定電壓增量值抬升所述當(dāng)前編程電壓,啟動(dòng)第1狀態(tài)至第m狀態(tài)的編程驗(yàn)證并掃描處于第m狀態(tài)的存儲(chǔ)單元,之后返回步驟s206。
在本實(shí)施例中,如果第m狀態(tài)的掃描結(jié)果值沒(méi)有達(dá)到啟動(dòng)第m+1狀態(tài)編程驗(yàn)證的設(shè)定值,則需要以設(shè)定電壓增量值抬升當(dāng)前編程電壓并在設(shè)定時(shí)間內(nèi)持續(xù)施加抬升后的編程電壓。需要注意的是,該電壓增量與上述步驟s203中電壓增量可以相同也可以不同,可根據(jù)實(shí)際情況設(shè)定。
s210、判定第m狀態(tài)的編程驗(yàn)證次數(shù)是否達(dá)到最大驗(yàn)證次數(shù),若是,則執(zhí)行步驟s211;若否,則執(zhí)行步驟s209。
在本實(shí)施例中,對(duì)所述最大驗(yàn)證次數(shù)的判定具體用于作為nandflash編程操作結(jié)束的前提條件。
s211、判定編程頁(yè)中所有編程失敗的存儲(chǔ)單元總數(shù)是否小于等于內(nèi)部設(shè)定值,若是,則執(zhí)行步驟s212;若否,則執(zhí)行步驟s213。
在本實(shí)施例中,對(duì)所述內(nèi)部設(shè)定值的判定作為nandflash編程操作的結(jié)束條件。
s212、結(jié)束對(duì)所述編程頁(yè)的編程操作。
s213、強(qiáng)制結(jié)束所述編程頁(yè)的當(dāng)前編程驗(yàn)證操作,同時(shí)聲明所有編程失敗的存儲(chǔ)單元,返回s201重新執(zhí)行編程操作。
在本實(shí)施例中,如果所述編程頁(yè)中所有編程失敗的存儲(chǔ)單元總數(shù)超過(guò)內(nèi)部設(shè)定值,可認(rèn)為nandflash中存在存儲(chǔ)單元壞區(qū),需要對(duì)這些壞區(qū)存儲(chǔ)單元進(jìn)行聲明,將其標(biāo)記出來(lái),便于以后編程時(shí)不再向其寫(xiě)入數(shù)據(jù),之后返回s201對(duì)編程頁(yè)中正常的存儲(chǔ)單元重新執(zhí)行編程操作。
本發(fā)明實(shí)施例二提供的一種nandflash的編程方法,在該方法中,首先基于處于第m狀態(tài)存儲(chǔ)單元的掃描驗(yàn)證結(jié)果決定是否啟動(dòng)對(duì)處于第m+1編程狀態(tài)存儲(chǔ)單元的編程驗(yàn)證,同時(shí)在每次抬升電壓后無(wú)需重復(fù)掃描前m-1狀態(tài)的存儲(chǔ)單元,所述方法還設(shè)定了存儲(chǔ)單元編程驗(yàn)證的最大次數(shù)以及結(jié)束編程操作的結(jié)束條件。利用該方法,可以大大降低整個(gè)編程操作的時(shí)間消耗,很大程度的提高編程速度,同時(shí)也避免了編程操作時(shí)峰值電流和功耗產(chǎn)生影響。
實(shí)施例三
如圖5a所示,本發(fā)明實(shí)施例三提供了一種nandflash的編程方法的優(yōu)選實(shí)施例,本實(shí)施例基于tlc型的nandflash,詳細(xì)說(shuō)明了本發(fā)明所提的一種nandflash的編程方法。基于背景技術(shù)中對(duì)tlcnandflash的介紹,了解到tlc型nandflash的存儲(chǔ)單元具有3個(gè)比特位,因此具有7個(gè)編程狀態(tài),分別記作第1狀態(tài)p1、第2狀態(tài)p2、...、第i狀態(tài)pi、...、以及第7狀態(tài)p7。具體的本實(shí)施例的所提編程方法的編程示意圖如圖5b所示,下面具體結(jié)合圖5a,詳細(xì)說(shuō)明圖5b的編程操作過(guò)程,如圖5a所示,給出了本發(fā)明實(shí)施例的方法在tlcnandflash中進(jìn)行編程操作的流程示意圖,具體包括如下步驟:
s301、對(duì)選中字線施加初始編程電壓,并在持續(xù)時(shí)間內(nèi)持續(xù)施壓。
示例性的,基于tlcnandflash中的控制單元通過(guò)字線選擇單元選取編程頁(yè),之后通過(guò)電壓泵對(duì)選中頁(yè)的字線加壓。且持續(xù)時(shí)間可優(yōu)選設(shè)定為10μs~150μs的任一時(shí)間段。
s302、判定所施加編程電壓的當(dāng)前編程次數(shù)是否達(dá)到啟動(dòng)第1狀態(tài)編程驗(yàn)證的驗(yàn)證條件,若否,則執(zhí)行步驟s303;若是,則執(zhí)行步驟s304。
示例性的,設(shè)定第1狀態(tài)p1編程驗(yàn)證的啟動(dòng)條件為當(dāng)前編程次數(shù)達(dá)到設(shè)定驗(yàn)證啟動(dòng)次數(shù),所述設(shè)定驗(yàn)證啟動(dòng)次數(shù)為1次~128次的任一值。
s303、電壓泵以設(shè)定電壓增量值抬升當(dāng)前編程電壓,并令當(dāng)前編程次數(shù)自加1,之后返回s302。
示例性的,設(shè)定電壓增量值控制在0.5v~1.5v的任一值。
s304、啟動(dòng)第1狀態(tài)p1的編程驗(yàn)證并掃描處于第1狀態(tài)p1的存儲(chǔ)單元。
示例性的,對(duì)應(yīng)該編程到第1狀態(tài)p1的存儲(chǔ)單元進(jìn)行讀操作,之后查驗(yàn)上述存儲(chǔ)單元是否達(dá)到第1狀態(tài)p1,接著掃描應(yīng)編程到第1狀態(tài)p1但是編程失敗的存儲(chǔ)單元個(gè)數(shù)。
s305、設(shè)置m=1,其中,m為tlcnandflash的編程狀態(tài)序號(hào),1≤m≤7。
s306、判定m<7是否成立,若是,則執(zhí)行步驟s307;否則執(zhí)行步驟s310。
s307、判定第m狀態(tài)pm的掃描結(jié)果是否達(dá)到啟動(dòng)第m+1狀態(tài)pm+1編程驗(yàn)證的設(shè)定值,若是,則執(zhí)行步驟s308;若否,則執(zhí)行步驟309。
示例性的,啟動(dòng)第2狀態(tài)p2編程驗(yàn)證的設(shè)定值可以為30%,以及啟動(dòng)第7狀態(tài)p7編程驗(yàn)證的設(shè)定值可以為60%,各狀態(tài)的設(shè)定值可基于實(shí)際情況設(shè)定,將上述編程狀態(tài)設(shè)定的啟動(dòng)值與所述編程狀態(tài)的前一編程狀態(tài)的掃描結(jié)果比較,如將第2狀態(tài)p2的設(shè)定值與第1狀態(tài)p1的掃描結(jié)果比較,將第7狀態(tài)p7的設(shè)定值與第6狀態(tài)p6的掃描結(jié)果比較等等。
s308、設(shè)置m=m+1,啟動(dòng)第m狀態(tài)pm的編程驗(yàn)證并掃描處于第m狀態(tài)pm的存儲(chǔ)單元,之后返回步驟s306。
示例性的,當(dāng)m等于1時(shí),設(shè)置m=m+1后,m值為2,之后啟動(dòng)第2狀態(tài)p2的編程驗(yàn)證并掃描處于第2狀態(tài)p2的存儲(chǔ)單元。
s309、以設(shè)定電壓增量值抬升當(dāng)前編程電壓,啟動(dòng)第1狀態(tài)p1至第m狀態(tài)pm的編程驗(yàn)證并掃描處于第m狀態(tài)pm的存儲(chǔ)單元,之后返回步驟s306。
示例性的,當(dāng)m等于6時(shí),在抬升當(dāng)前編程電壓后,直接啟動(dòng)第1狀態(tài)p1至第6狀態(tài)p6的編程驗(yàn)證,并只掃描處于第6狀態(tài)p6的存儲(chǔ)單元。
s310、判定第m狀態(tài)pm的編程驗(yàn)證次數(shù)是否達(dá)到最大驗(yàn)證次數(shù)若是,則執(zhí)行步驟s311;若否,則執(zhí)行步驟s309。
示例性的,只需驗(yàn)證第7狀態(tài)p7的編程驗(yàn)證次數(shù)是否達(dá)到最大驗(yàn)證次數(shù)。
s311、如果編程頁(yè)中所有編程失敗的存儲(chǔ)單元總數(shù)小于等于內(nèi)部設(shè)定值,則直接結(jié)束編程操作;否則,強(qiáng)制結(jié)束當(dāng)前編程驗(yàn)證,同時(shí)聲明所有編程失敗的存儲(chǔ)單元,并返回s301重新執(zhí)行。
在本實(shí)施例中,所述最大驗(yàn)證次數(shù)以及內(nèi)部設(shè)定值均基于歷史編程操作中的數(shù)據(jù)規(guī)律設(shè)定。
本發(fā)明實(shí)施例三提供的一種nandflash的編程方法的優(yōu)選實(shí)施例,在該優(yōu)選實(shí)施例中,確定tlcnandflash的所有編程狀態(tài)后,基于本發(fā)明的方法對(duì)所述tlcnandflash編程操作中的編程驗(yàn)證以及驗(yàn)證結(jié)果掃描進(jìn)行改進(jìn)。利用該方法,可以大大降低整個(gè)編程操作的時(shí)間消耗,很大程度的提高編程速度,同時(shí)也避免了編程操作時(shí)峰值電流和功耗產(chǎn)生影響。
注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明不限于這里所述的特定實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員來(lái)說(shuō)能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過(guò)以上實(shí)施例對(duì)本發(fā)明進(jìn)行了較為詳細(xì)的說(shuō)明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。