本發(fā)明實(shí)施例涉及存儲(chǔ)技術(shù)領(lǐng)域,具體涉及一種存儲(chǔ)單元的編程方法。
背景技術(shù):
非易失閃存介質(zhì)(nor flash/nand flash)是一種很常見的存儲(chǔ)芯片,兼有隨機(jī)存儲(chǔ)器(Random Access Memory,RAM)和只讀存儲(chǔ)器(Read-Only Memory,ROM)的優(yōu)點(diǎn),數(shù)據(jù)掉電不會(huì)丟失,是一種可在系統(tǒng)進(jìn)行電擦寫的存儲(chǔ)器,同時(shí)它的高集成度和低成本使它成為市場主流。Flash芯片是由內(nèi)部成千上萬個(gè)存儲(chǔ)單元組成的,每個(gè)儲(chǔ)存單元存儲(chǔ)一位數(shù)據(jù),多個(gè)存儲(chǔ)單元構(gòu)成頁,多個(gè)頁組成塊,正是由于該特殊的物理結(jié)構(gòu),在nor flash/nand flash中是以頁為單位進(jìn)行讀/寫(編程操作)數(shù)據(jù),以塊為單位進(jìn)行擦除數(shù)據(jù)的。
在Flash芯片中,一個(gè)存儲(chǔ)單元可看作為一個(gè)金屬氧化物半導(dǎo)體場效晶體管(Metal-Oxide-Semiconductor Field-Effect Transistor,MOSFET)。圖1是一種常見的MOSFET結(jié)構(gòu)圖,包括柵極20、源極21、漏極22、P型阱23、N型阱25、P型硅半導(dǎo)體襯底26以及隧穿氧化層24,其相互間的連接為:P型硅半導(dǎo)體襯底26擴(kuò)散出兩個(gè)N型區(qū),P型阱23上方覆蓋一層隧穿氧化層24,最后在N型區(qū)上方通過腐蝕的方法做成兩個(gè)孔,通過金屬化的方法分別在絕緣層上及兩個(gè)孔內(nèi)做成三個(gè)電極:柵極20、源極21和漏極22,源極21和漏極22分別對(duì)應(yīng)兩個(gè)N型區(qū)且柵極20為存儲(chǔ)單元的字線,漏極22為存儲(chǔ)單元的位線。進(jìn)一步的,柵極20又包括控制柵極201、多晶硅層間電介質(zhì)202(Inter-Poly Dielectric,IPD)、浮動(dòng)?xùn)艠O203,且浮動(dòng)?xùn)艠O203可以存儲(chǔ)電荷。當(dāng)對(duì)一個(gè)存儲(chǔ)單元進(jìn)行編程操作時(shí),分別給柵極20、源極21以及漏極22施加相應(yīng)的編程電壓,此時(shí),會(huì)有電流從漏極22流向源極21,電子從源極21流向漏極22的途中,會(huì)有一部分流向浮動(dòng)?xùn)艠O203,當(dāng)浮動(dòng)?xùn)艠O203中的電子達(dá)到一定數(shù)量時(shí),此存儲(chǔ)單元就被編程成功,即此存儲(chǔ)單元被成功寫0。但是,由于Flash芯片制作工藝的問題,會(huì)有一些存儲(chǔ)單元很難被編程,現(xiàn)有的解決方法是:為了保證編程的正確性,增加編程次數(shù),但是卻以犧牲編程速度為代價(jià)。
因此,有必要設(shè)計(jì)一種新的存儲(chǔ)單元的編程方法,以提高編程速度。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供一種存儲(chǔ)單元的編程方法,以提高編程速度。該方法包括:
根據(jù)編程指令對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行編程操作;
對(duì)所述存儲(chǔ)單元進(jìn)行編程校驗(yàn),檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功,若是,則結(jié)束當(dāng)前編程操作,否則增大編程電壓的脈沖寬度,并返回執(zhí)行所述對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行的編程操作,直至編程成功。
進(jìn)一步地,所述增大編程電壓的脈沖寬度,包括:
所述編程電壓的脈沖寬度依據(jù)如下公式進(jìn)行增大:
Ti=T0+(N-1)*Δt
其中,Ti表示對(duì)所述存儲(chǔ)單元進(jìn)行第i次編程時(shí)對(duì)應(yīng)的編程電壓的脈沖寬度,T0表示編程電壓的初始脈沖寬度,N表示對(duì)所述存儲(chǔ)單元進(jìn)行編程的次數(shù),Δt表示脈沖寬度的增加量。
進(jìn)一步地,在增大編程電壓的脈沖寬度之前,還包括:
通過編程計(jì)數(shù)器對(duì)編程失敗的次數(shù)進(jìn)行累計(jì);
判斷所述編程計(jì)數(shù)器中的數(shù)值是否為設(shè)定的最大值,若是,則結(jié)束此次編程操作,否則執(zhí)行增大編程電壓的脈沖寬度的操作。
優(yōu)選的,所述設(shè)定的最大值為小于或者等于64的正整數(shù)。
進(jìn)一步地,所述方法還包括:
當(dāng)檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)為已經(jīng)編程成功時(shí),判斷所述當(dāng)前編程地址是否為最后的編程地址,若是則退出編程操作,否則更改所述當(dāng)前編程地址,繼續(xù)對(duì)其他的存儲(chǔ)單元進(jìn)行編程操作,并進(jìn)行編程校驗(yàn),直至所有的存儲(chǔ)單元完成編程操作。
示例性地,所述編程操作包括:
分別向所述存儲(chǔ)單元的柵極和漏極施加編程電壓。
示例性地,向所述存儲(chǔ)單元的柵極施加的編程電壓范圍為7-10V,向所述存儲(chǔ)單元的漏極施加的編程電壓范圍為3-5V。
示例性地,所述檢驗(yàn)存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功,具體為:
檢測從存儲(chǔ)單元的源極流向漏極的電流值是否小于預(yù)設(shè)電流值,若是,則所述存儲(chǔ)單元的當(dāng)前狀態(tài)為已經(jīng)編程成功。
本發(fā)明實(shí)施例提供的一種存儲(chǔ)單元的編程方法,首先根據(jù)編程指令對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行編程操作,然后對(duì)所述存儲(chǔ)單元進(jìn)行編程校驗(yàn),檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功,若是,則結(jié)束當(dāng)前編程操作,否則增大編程電壓的脈沖寬度,并返回執(zhí)行所述對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行的編程操作,直至編程成功。當(dāng)一個(gè)存儲(chǔ)單元經(jīng)過第一次編程操作沒有編程成功時(shí),再對(duì)其進(jìn)行編程時(shí)通過隨著編程次數(shù)的增加不斷增大編程電壓的脈沖寬度,實(shí)現(xiàn)了對(duì)存儲(chǔ)單元的快速編程,提高了編程速度。
附圖說明
圖1是Flash芯片中一種作為存儲(chǔ)單元的金屬氧化物半導(dǎo)體場效晶體管的結(jié)構(gòu)圖;
圖2是本發(fā)明實(shí)施例一中的一種存儲(chǔ)單元的編程方法流程圖;
圖3是本發(fā)明實(shí)施例二中的一種存儲(chǔ)單元的編程方法流程圖;
圖4為本發(fā)明實(shí)施例三中的一種存儲(chǔ)單元的編程方法流程圖。
具體實(shí)施方式
下面結(jié)合附圖和實(shí)施例對(duì)本發(fā)明作進(jìn)一步的詳細(xì)說明??梢岳斫獾氖?,此處所描述的具體實(shí)施例僅僅用于解釋本發(fā)明,而非對(duì)本發(fā)明的限定。另外還需要說明的是,為了便于描述,附圖中僅示出了與本發(fā)明相關(guān)的部分而非全部結(jié)構(gòu)。
實(shí)施例一
圖2為本發(fā)明實(shí)施例一提供的一種存儲(chǔ)單元的編程方法流程圖,本實(shí)施例可適用于對(duì)一些很難被編程成功的存儲(chǔ)單元進(jìn)行編程操作。參加圖2,本實(shí)施例提供的存儲(chǔ)單元的編程方法具體包括如下步驟:
S110、根據(jù)編程指令對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行編程操作。
通過編寫程序代碼可以控制flash存儲(chǔ)器進(jìn)行三大主要操作,分別是讀操作、寫操作和擦除操作,其中,寫操作又被稱作編程操作,即完成對(duì)存儲(chǔ)單元的寫0操作。
需要說明的是,對(duì)一個(gè)存儲(chǔ)單元進(jìn)行編程操作的原理是通過分別給存儲(chǔ)單元的柵極以及漏極施加相應(yīng)的編程電壓,會(huì)有電流從漏極流向源極,電子從源極流向漏極的途中,會(huì)有一部分流向浮動(dòng)?xùn)艠O,當(dāng)浮動(dòng)?xùn)艠O中的電子達(dá)到一定數(shù)量時(shí),此存儲(chǔ)單元就被編程成功,即此存儲(chǔ)單元被成功寫0,具體的存儲(chǔ)單元的結(jié)構(gòu)可以參見圖1所示的結(jié)構(gòu)示意圖。
示例性地,所述編程操作具體可以是分別向所述存儲(chǔ)單元的柵極和漏極施加編程電壓。典型地,向所述存儲(chǔ)單元的柵極施加的編程電壓可以為7-10V中的任意數(shù)值,向所述存儲(chǔ)單元的漏極施加的編程電壓可以為3-5V中的任意數(shù)值。本領(lǐng)域技術(shù)人員都知道,施加到存儲(chǔ)單元的柵極上的電壓范圍7-10V以及施加到存儲(chǔ)單元的漏極上的電壓范圍3-5V都是是優(yōu)選的典型數(shù)值范圍,并不對(duì)其進(jìn)行限定。
S120、對(duì)所述存儲(chǔ)單元進(jìn)行編程校驗(yàn),檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功,若是,則執(zhí)行步驟S130結(jié)束當(dāng)前編程操作,否則執(zhí)行步驟S140、增大編程電壓的脈沖寬度,并返回執(zhí)行所述對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行的編程操作,直至編程成功。
對(duì)所述存儲(chǔ)單元進(jìn)行編程校驗(yàn)的實(shí)質(zhì)是對(duì)所述存儲(chǔ)單元進(jìn)行一次讀操作,更具體地可以理解為檢驗(yàn)讀出的數(shù)值是否為0,如果為0則說明所述存儲(chǔ)單元已經(jīng)編程成功,否則失敗,需要再次進(jìn)行編程操作。當(dāng)遇到某存儲(chǔ)單元編程失敗的時(shí)候,傳統(tǒng)的編程方法是通過增加編程次數(shù)來保證該存儲(chǔ)單元編程成功,但是卻犧牲了編程速度,本實(shí)施例的技術(shù)方案針對(duì)此種情況的做法是,當(dāng)某存儲(chǔ)單元第一次編程失敗時(shí),即編程校驗(yàn)不通過,再對(duì)該存儲(chǔ)單元進(jìn)行第二次編程操作時(shí)增大編程電壓的脈沖寬度,當(dāng)經(jīng)過第二次編程操作后,進(jìn)行編程校驗(yàn)時(shí),所述存儲(chǔ)單元還是編程校驗(yàn)不通過,則繼續(xù)增大編程電壓的脈沖寬度,即使所述編程電壓的脈沖寬度隨著編程次數(shù)的增加而不斷增加,典型地,每次增加的脈沖寬度可以是0.5μs。當(dāng)所述編程電壓的脈沖寬度增加后,從漏極流向源極的電流的持續(xù)時(shí)間會(huì)增加,相應(yīng)地,會(huì)有更多的時(shí)間讓電子從源極流向漏極的途中流向浮動(dòng)?xùn)艠O,浮動(dòng)?xùn)艠O中的電子會(huì)更快地達(dá)到設(shè)定數(shù)量,進(jìn)而所述存儲(chǔ)單元會(huì)更快地編程成功,提高編程速度。
示例性地,所述檢驗(yàn)存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功,即編程校驗(yàn),具體可以為:檢測從存儲(chǔ)單元的源極流向漏極的電流值是否小于預(yù)設(shè)電流值,若是,則所述存儲(chǔ)單元的當(dāng)前狀態(tài)為已經(jīng)編程成功,此時(shí)認(rèn)為存儲(chǔ)單元的浮動(dòng)?xùn)艠O上已經(jīng)有充足的電子,此時(shí)存儲(chǔ)單元的狀態(tài)為0。優(yōu)選的,所述預(yù)設(shè)電流值可以為20μA或者30μA,當(dāng)然還可以是其他數(shù)值,需要根據(jù)各flash芯片的制作工藝的不同而變化。
S130、結(jié)束當(dāng)前編程操作。
S140、增大編程電壓的脈沖寬度,返回執(zhí)行步驟S110,利用增加脈沖寬度后的編程電壓對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元繼續(xù)進(jìn)行編程操作直到所述存儲(chǔ)單元編程成功。
本發(fā)明實(shí)施例提供的一種存儲(chǔ)單元的編程方法,首先根據(jù)編程指令對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行編程操作,然后對(duì)所述存儲(chǔ)單元進(jìn)行編程校驗(yàn),檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功,若是,則結(jié)束當(dāng)前編程操作,否則增大編程電壓的脈沖寬度,并返回執(zhí)行所述對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行的編程操作,直至編程成功。當(dāng)一個(gè)存儲(chǔ)單元經(jīng)過第一次編程操作沒有編程成功時(shí),再對(duì)其進(jìn)行編程時(shí)通過隨著編程次數(shù)的增加不斷增大編程電壓的脈沖寬度,實(shí)現(xiàn)了對(duì)存儲(chǔ)單元的快速編程,提高了編程速度。
實(shí)施例二
圖3為本發(fā)明實(shí)施例二提供的一種存儲(chǔ)單元的編程方法流程圖,本實(shí)施例在實(shí)施例一的基礎(chǔ)上進(jìn)行進(jìn)一步優(yōu)化,在增大編程電壓的脈沖寬度之前,增加了:通過編程計(jì)數(shù)器對(duì)編程失敗的次數(shù)進(jìn)行累計(jì)的操作,這樣優(yōu)化的好處是,避免了對(duì)一些存儲(chǔ)單元進(jìn)行無限制地編程操作,使整個(gè)程序陷入死循環(huán)。參見圖3,本實(shí)施例提供的存儲(chǔ)單元的編程方法具體包括如下步驟:
S210、根據(jù)編程指令對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行編程操作。
S220、對(duì)所述存儲(chǔ)單元進(jìn)行編程校驗(yàn),檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功。
S230、若是,則結(jié)束當(dāng)前編程操作。
S240、否則,通過編程計(jì)數(shù)器對(duì)編程失敗的次數(shù)進(jìn)行累計(jì)。
上述操作主要是針對(duì)當(dāng)一個(gè)存儲(chǔ)單元經(jīng)過多次編程操作仍然沒有通過編程校驗(yàn)的情況,為了防止程序進(jìn)入“編程-編程校驗(yàn)-編程”的死循環(huán)中,設(shè)置編程計(jì)數(shù)器對(duì)編程失敗的次數(shù)進(jìn)行累計(jì),具體是指對(duì)同一個(gè)存儲(chǔ)單元編程失敗的次數(shù)進(jìn)行計(jì)數(shù),當(dāng)該存儲(chǔ)單元編程成功后,所述計(jì)數(shù)器清零。
S250、判斷所述編程計(jì)數(shù)器中的數(shù)值是否為設(shè)定的最大值,若是,則返回步驟S230結(jié)束此次編程操作。
為每個(gè)存儲(chǔ)單元設(shè)定一個(gè)允許編程的最大次數(shù),當(dāng)對(duì)某存儲(chǔ)單元的編程次數(shù)達(dá)到所述最大值時(shí),所述存儲(chǔ)單元還是編程失敗,此時(shí)則強(qiáng)制退出編程操作,不再對(duì)該存儲(chǔ)單元進(jìn)行編程。典型地,所述設(shè)定的最大值為小于或者等于64的正整數(shù)。當(dāng)然,本領(lǐng)域的技術(shù)人員都知道,所述設(shè)定值并不限于某一個(gè)或者某一些固定數(shù)值,需要根據(jù)實(shí)際操作情況以及flash芯片的制作工藝選定合適的數(shù)值。
S260、否則增大編程電壓的脈沖寬度,并返回執(zhí)行步驟S210,直至編程成功。
示例性地,所述增大編程電壓的脈沖寬度,具體可以包括:
所述編程電壓的脈沖寬度依據(jù)如下公式進(jìn)行增大:
Ti=T0+(N-1)*Δt
其中,Ti表示對(duì)所述存儲(chǔ)單元進(jìn)行第i次編程時(shí)對(duì)應(yīng)的編程電壓的脈沖寬度,T0表示編程電壓的初始脈沖寬度,N表示對(duì)所述存儲(chǔ)單元進(jìn)行編程的次數(shù),Δt表示脈沖寬度的增加量。
本發(fā)明實(shí)施例提供的一種存儲(chǔ)單元的編程方法,在增大編程電壓的脈沖寬度之前,通過編程計(jì)數(shù)器對(duì)編程失敗的次數(shù)進(jìn)行累計(jì),并判斷所述編程計(jì)數(shù)器中的數(shù)值是否為設(shè)定的最大值,若是,則結(jié)束此次編程操作,否則執(zhí)行增大編程電壓的脈沖寬度的操作,繼續(xù)對(duì)所述存儲(chǔ)單元進(jìn)行編程操作,直到編程成功。當(dāng)一個(gè)存儲(chǔ)單元經(jīng)過多次編程操作仍然沒有通過編程校驗(yàn)時(shí),通過設(shè)置編程計(jì)數(shù)器,實(shí)現(xiàn)了防止程序進(jìn)入“編程-編程校驗(yàn)-編程”的死循環(huán)。
實(shí)施例三
圖4為本發(fā)明實(shí)施例三提供的一種存儲(chǔ)單元的編程方法流程圖,本實(shí)施例在上述各實(shí)施例的基礎(chǔ)上進(jìn)行進(jìn)一步優(yōu)化,增加了判斷所述當(dāng)前編程地址是否為最后的編程地址的操作,這樣優(yōu)化的好處是,可以快速地完成對(duì)整個(gè)編程區(qū)域的編程操作。參見圖4,本實(shí)施例提供的存儲(chǔ)單元的編程方法具體包括如下步驟:
S310、根據(jù)編程指令對(duì)當(dāng)前編程地址對(duì)應(yīng)的存儲(chǔ)單元進(jìn)行編程操作。
S320、對(duì)所述存儲(chǔ)單元進(jìn)行編程校驗(yàn),檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)是否為已經(jīng)編程成功,若是則執(zhí)行步驟S330,否則執(zhí)行步驟S360。
S330、判斷所述當(dāng)前編程地址是否為最后的編程地址,若是,則執(zhí)行步驟S340,否則執(zhí)行步驟S350。
S340、退出編程操作,
S350、更改所述當(dāng)前編程地址,并返回執(zhí)行步驟S310,繼續(xù)對(duì)新的存儲(chǔ)單元進(jìn)行編程操作時(shí)。
S360、增大編程電壓的脈沖寬度,并返回執(zhí)行步驟S310,直至編程成功。
本發(fā)明實(shí)施例提供的一種存儲(chǔ)單元的編程方法,在上述各實(shí)施例的基礎(chǔ)上,當(dāng)檢驗(yàn)所述存儲(chǔ)單元的當(dāng)前狀態(tài)為已經(jīng)編程成功時(shí),判斷所述當(dāng)前編程地址是否為最后的編程地址,若是則退出編程操作,否則更改所述當(dāng)前編程地址,繼續(xù)對(duì)其他的存儲(chǔ)單元進(jìn)行編程操作,并進(jìn)行編程校驗(yàn),直至所有的存儲(chǔ)單元完成編程操作。實(shí)現(xiàn)了可以快速地完成對(duì)整個(gè)編程區(qū)域的編程操作。
注意,上述僅為本發(fā)明的較佳實(shí)施例及所運(yùn)用技術(shù)原理。本領(lǐng)域技術(shù)人員會(huì)理解,本發(fā)明不限于這里所述的特定實(shí)施例,對(duì)本領(lǐng)域技術(shù)人員來說能夠進(jìn)行各種明顯的變化、重新調(diào)整和替代而不會(huì)脫離本發(fā)明的保護(hù)范圍。因此,雖然通過以上實(shí)施例對(duì)本發(fā)明進(jìn)行了較為詳細(xì)的說明,但是本發(fā)明不僅僅限于以上實(shí)施例,在不脫離本發(fā)明構(gòu)思的情況下,還可以包括更多其他等效實(shí)施例,而本發(fā)明的范圍由所附的權(quán)利要求范圍決定。