具体实施方式
半导体存储器系统的一个实施例使用NAND快闪存储器结构,其包括在NAND串中在两个选择栅极之间串联布置多个晶体管。图1是显示一个此种NAND串150的俯视图。图2是其等效电路。图1及2中所描绘的NAND串包括串联布置在第一选择栅极120与第二选择栅极122之间的四个晶体管100、102、104及106。第一选择栅极120将NAND串150的连接选通到位线126。第二选择栅极122将NAND串150的连接选通到源极线128。通过向控制栅极120CG施加适当的电压来控制第一选择栅极120。通过向控制栅极122CG施加适当的电压来控制第二选择栅极122。晶体管100、102、104及106中的每一者具有控制栅极及浮动栅极。晶体管100具有控制栅极100CG及浮动栅极100FG。晶体管102具有控制栅极102CG及浮动栅极102FG。晶体管104具有控制栅极104CG及浮动栅极104FG。晶体管106具有控制栅极106CG及浮动栅极106FG。
控制栅极100CG连接到字线WL3,控制栅极102CG连接到字线WL2,控制栅极104CG连接到字线WL1,且控制栅极106CG连接到字线WL0。在一个实施例中,晶体管100、102、104及106用作存储器单元。在其它实施例中,存储器单元可包括多个晶体管或可不同于图1及2中所描绘。第一选择栅极120连接到漏极选择线SGD。第二选择栅极122连接到源极选择线SGS。
注意,尽管图1-图2显示在NAND串中存在四个存储器单元,但使用四个晶体管仅为说明性,且可容易地提供其它配置,包括8个存储器单元、16个存储器单元、32个存储器单元、64个存储器单元的普通配置等。
图3图解说明例如图1-图2中所示NAND单元的NAND单元阵列的实例。沿每一列,位线206耦合到NAND串150的每一漏极选择栅极120的漏极端子126。沿NAND串的每一行,源极线204可连接所述NAND串的源极选择栅极122的每一源极端子128。在以下美国专利中提供有NAND型快闪存储器及其操作的相关实例,所有所述美国专利的全文以引用的方式并入本文中:美国专利第5,386,422号;美国专利第5,570,315号;美国专利第5,774,397号;美国专利第6,046,935号;美国专利第6,456,528号;及美国专利第6,522,580号。
将存储器单元阵列划分为较大数量的存储器单元块。通常对于快闪EEPROM系统来说,块是擦除单位。也就是说,每一块包含可一同擦除的最小数量的存储器单元。每一块通常被划分为若干页。页是编程单位。在一个实施例中,可将个别页划分为多个段且所述段可包含作为基本编程操作一次写入的最少数量的单元。在一行存储器单元中通常存储一个或一个以上数据页。一页可存储一个或一个以上扇段。一个扇段包括用户数据及开销数据。开销数据通常包括依据所述扇段的用户数据计算得出的错误校正码(ECC)。控制器(下文说明)的一部分在数据正被编程到阵列中时计算ECC,且还在正从阵列读取数据时检查ECC。另一选择为,将ECC及/或其它开销数据存储在与其所从属的用户数据不同的页或甚至不同的块中。用户数据扇段通常为512个字节,相当于磁盘驱动器中扇段的大小。开销数据通常为额外的16-20字节。大量页形成一块,例如从8个页到多达32个、64个、128个或更多个页不等。
图4图解说明具有用于并行读取及编程一页存储器单元的读取/写入电路的存储器装置296的一个实施例。存储器装置296可包括一个或一个以上存储器裸片298。存储器裸片298包括二维存储器单元阵列300、控制电路310及读取/写入电路365。在某些实施例中,所述存储器单元阵列可以是三维的。存储器阵列300可由字线经由行解码器330及由位线经由列解码器360来寻址。读取/写入电路365包括多个感测块400且允许并行读取或编程一页存储器单元。通常,控制器350包括在与所述一个或一个以上存储器裸片298相同的存储器装置296(例如,可抽换式存储卡)中。命令与数据经由线320在主机与控制器350之间及经由线318在控制器与一个或一个以上存储器裸片298之间传送。
控制电路310与读取/写入电路365协作来对存储器阵列300执行存储器操作。控制电路310包括状态机312、芯片上地址解码器314及功率控制模块316。状态机312提供对存储器操作的芯片级控制。芯片上地址解码器314在主机或存储器控制器所使用的地址与解码器330及360所使用的硬件地址之间提供地址接口。功率控制模块316控制在存储器操作期间供应到字线及位线的功率及电压。
在某些实施方案中,可组合图4的某些组件。在各种设计中,可将图4除存储器单元阵列300以外的一个或一个以上组件(单独或组合)视为管理电路。举例来说,管理电路可包括控制电路310、状态机312、解码器314/360、功率控制316、感测块400、读取/写入电路365、控制器350等中的任一者或其组合。
图5图解说明图4中所示存储器装置296的另一布置。各个外围电路对存储器阵列300的存取是以对称方式在所述阵列的相对侧上实施的,以便将每一侧上的存取线及电路的密度减半。因此,行解码器分成行解码器330A及330B且列解码器分成列解码器360A及360B。同样,读取/写入电路分成从阵列300底部连接到位线的读取/写入电路365A及从阵列300顶部连接到位线的读取/写入电路365B。以此方式,读取/写入模块的密度实质上减半。图5的装置还可包括控制器,如上文针对图4的装置所说明。
图6是分割为核心部分(称为感测模块380)及共用部分390的个别感测块400的框图。在一个实施例中,针对每位线存在单独的感测模块380且针对一组多个感测模块380存在一个共用部分390。在一个实例中,一个感测块将包括一个共用部分390及八个感测模块380。群组中的感测模块中的每一者将经由数据总线372与相关联的共用部分连通。对于其它细节,参考标题为“非易失性存储器&对感测放大器的集合的共享处理的方法(Non-Volatile Memory&Method with Shared Processing for anAggregate of Sense Amplifiers)”的美国专利公开案第2006/0140007号,其全文以引用方式并入本文中。
感测模块380包括确定所连接位线中的传导电流在预定阈值电平以上还是以下的感测电路370。感测模块380还包括位线锁存器382,其用于设定所连接位线上的电压条件。举例来说,锁存在位线锁存器382中的预定状态将导致所连接位线被拉至指定编程禁止的状态(例如,Vdd)。
共用部分390包括处理器392、一组数据锁存器394及耦合在所述组数据锁存器394与数据总线320之间的I/O接口396。处理器392执行计算。举例来说,其功能之一是确定存储在所感测存储器单元中的数据并将所确定的数据存储在所述组数据锁存器中。在读取操作期间,所述组数据锁存器394用于存储由处理器392确定的数据位。在编程操作期间,其还用于存储从数据总线320导入的数据位。所导入数据位表示将要编程到存储器中的写入数据。I/O接口396在数据锁存器394与数据总线320之间提供接口。
在读取或感测期间,系统的操作处于状态机312的控制下,所述状态机控制向所寻址单元供应不同的控制栅极电压。在其经历对应于存储器所支持的各种存储器状态的各种预定义控制栅极电压时,感测模块380可在这些电压中的一者处跳闸且一输出将被从感测模块380经由总线372提供到处理器392。此时,处理器392通过考虑感测模块的跳闸事件及关于经由输入线393从状态机所施加的控制栅极电压的信息来确定所得存储器状态。然后其计算存储器状态的二进制编码并将所得数据位存储在数据锁存器394中。在所述核心部分的另一实施例中,位线锁存器382有两个用途:作为用于锁存感测模块380的输出的锁存器且还作为如上所说明的位线锁存器两者。
预期某些实施方案将包括多个处理器392。在一个实施例中,每一处理器392将包括输出线(在图6中未描绘)以使所述输出线中的每一者线或(wired-OR)在一起。在某些实施例中,输出线在连接到线或线之前反转。此配置使得能够在编程检验过程期间快速确定编程过程何时完成,因为接纳线或的状态机可确定正被编程的所有位何时达到所需电平。举例来说,当每一位已达到其所需电平时,针对所述位的逻辑零将被发送到线或线(或反转数据一)。当所有位输出数据0(或反转数据一)时,那么状态机知晓终止所述编程过程。在其中每一处理器与八个感测模块连通的实施例中,状态机需要读取线或线八次,或向处理器392添加逻辑以累加相关联位线的结果,使得所述状态机仅需读取所述线或线一次。
在编程或检验期间,将来自数据总线320的将要编程的数据存储在所述组数据锁存器394中。在状态机312的控制下的编程操作包含将一系列编程电压脉冲施加到所寻址存储器单元的控制栅极,如下文进一步说明。每一编程脉冲后跟检验操作以确定所述存储器单元是否已编程到所需状态。处理器392相对于所需存储器状态来监视被检验的存储器状态。当两者一致时,处理器392设定位线锁存器382,以致使所述位线被拉至指定编程禁止的状态。即使在编程脉冲出现在耦合到所述位线的单元的控制栅极上时,此仍禁止所述单元进一步编程。在其它实施例中,处理器最初加载位线锁存器382且在检验过程期间感测电路将其设定为禁止值。
数据锁存器堆叠394包含对应于感测模块的数据锁存器堆叠。在一个实施例中,每一感测模块380具有三个数据锁存器。在某些实施案中(但不要求),将所述数据锁存器实施为移位寄存器以使存储在其中的并行数据转换为用于数据总线320的串行数据,且反之亦然。在优选实施例中,可将对应于由m个存储器单元构成的读取/写入块的所有数据锁存器链接在一起以形成块移位寄存器,以使数据块可通过串行传送来输入或输出。特定来说,对r个读取/写入模块的库进行调适,以使其数据锁存器组中的每一者将依序将数据移入或移出数据总线,就像其是整体读取/写入块的移位寄存器的一部分那样。
关于非易失性存储装置的各个实施例的结构及/或操作的额外信息可见于以下专利参考中,其全文以引用方式并入本文中:标题为“具有改善的感测的非易失性存储器及方法(Non-Volatile Memory And Method with Improved Sensing)”的美国专利第7,023,736号;标题为“用于低电压操作的经改善存储器感测电路及方法(ImprovedMemory Sensing Circuit And Method For Low Voltage Operation)”的美国专利第7,046,568号;标题为“具有减少的源极线偏置错误的非易失性存储器及方法(Non-Volatile Memory And Method With Reduced Source Line Bias Errors)”的美国专利公开案第2004/0057287号;标题为“用于非易失性存储器的参考感测放大器(Reference Sense Amplifier For Non-Volatile Memory)”的美国专利公开案第2006/0158947号;及标题为“在非易失性存储器的读取操作期间补偿耦合(Compensating for Coupling During Read Operations of Non-Volatile Memory)”的美国专利申请案第11/099,133号。
参照图7,其说明存储器单元阵列300的实例性结构。作为一个实例,说明被分割为1,024个块的NAND快闪EEPROM。可同时擦除存储在每一块中的数据。在一个实施例中,所述块是同时被擦除的存储器单元的最小单位。在此实例中,在每一块中存在对应于位线BL0、BL1...BL8511的8,512列。在一个实施例中,在读取及编程操作期间可同时选择块的所有位线。可同时编程沿共用字线且连接到任何位线的存储器单元。
在另一实施例中,将位线划分为偶数位线及奇数位线。在奇数/偶数位线架构中,在一个时间处编程沿共用字线且连接到奇数位线的存储器单元,而在另一时间处编程沿共用字线且连接到偶数位线的存储器单元。
图7的下部部分显示具有四个串联连接的存储器单元以形成NAND串的块i,如前文所说明。尽管图中显示每一NAND串中包括四个单元,但可使用多于或少于四个单元(例如,8、16、32、64个或另一数量)。所述NAND串的一个端子经由漏极选择栅极SGD连接到对应的位线,且另一端子经由源极选择栅极SGS连接到共用源极。
每一存储器单元可存储以模拟形式或数字形式表示的数据。当存储一个数字数据位时,将存储器单元的可能阈值电压的范围划分为两个范围,为这两个范围指派逻辑数据值“1”及“0”。在NAND型快闪存储器的一个实例中,在存储器单元被擦除之后所述电压阈值为负且被定义为逻辑“1”。在编程操作之后阈值电压为正,且被定义为逻辑“0”。当阈值电压为负且通过向控制栅极施加0伏来起始读取操作时,存储器单元将接通以指示在所述单元中正存储逻辑“1”。当阈值电压为正且通过向控制栅极施加0伏来执行读取操作时,存储器单元将不接通,此指示存储逻辑“0”。存储一个数字数据位的存储器单元通常称为二进制存储器单元。
存储器单元还可存储多个数字数据位且可称为多状态或多级单元。多状态存储器单元的阈值电压窗口划分为若干范围。举例来说,如果使用四个状态,那么将存在四个被指派到逻辑数据值“11”、“10”、“01”及“00”的阈值电压范围。在NAND型存储器的一个典型实例中,在擦除操作之后阈值电压为负且被定义为“11”。针对状态“10”、“01”及“00”使用正的阈值电压。
通常,本文中所揭示的技术可与通过福勒-诺德海姆(Fowler-Nordheim)穿隧编程及擦除的装置一同使用。本发明还可应用于使用三层电介质(例如,由氧化硅、氮化硅及氧化硅(ONO)形成的电介质)的氮化物层来代替浮动栅极存储电荷的装置。由ONO形成的三层电介质夹在导电控制栅极与存储器元件沟道上方的半导电衬底的表面之间。在某些情况下,可使用三个以上电介质层。也可使用其它层,例如氧化铝。后者的实例是Si-Oxide-SiN-Al2O3-TaN(TANOS)结构,其中使用三层,即氧化硅、氮化硅及氧化铝。本发明还可应用于使用(举例来说)小的导电材料岛(例如,纳米晶体)作为代替浮动栅极的电荷存储区域的装置。可以与基于浮动栅极的NAND快闪装置类似的方式来编程及擦除此类存储器装置。
在成功的编程过程的结束,存储器单元的阈值电压应适当地在已编程存储器单元的阈值电压分布中的一者内或在已擦除存储器单元的单个阈值电压分布内。图8图解说明当每一存储元件存储两个数据位时存储元件阵列的典型阈值电压分布,包括已擦除存储元件的第一阈值电压分布E及已编程存储元件的三个额外阈值电压分布A、B及C。在一个实施例中,E分布中的阈值电压为负且A、B及C分布中的阈值电压为正。
图8中所示的每一不同的阈值电压范围对应于所述组数据位的预定值。编程到存储元件中的数据与所述存储元件的阈值电压电平之间的特定关系取决于针对所述存储元件采用的数据编码方案。举例来说,标题为“新颖多状态存储器(Novel Multi-StateMemory)”的美国专利第6,222,762号及标题为“存储器系统的追踪单元(Tracking CellsFor A Memory System)”的美国专利公开案第2004/0255090号(此两者的全文以引用方式并入本文中)说明了用于多状态快闪存储元件的各种数据编码方案。在一个实施例中,使用格雷(Gray)码指派来向阈值电压范围指派数据值,以便如果浮动栅极的阈值电压错误地变化为其相邻物理状态时仅会影响到一个位。一个实例向阈值电压范围E指派逻辑值“11”,向阈值电压范围A指派逻辑值“10”,向阈值电压范围B指派逻辑值“00”,且向阈值电压范围C指派逻辑值“01”。然而,在其它实施例中,不使用格雷码。尽管图8显示了四个状态,但本发明还可以与其它多状态结构及配置(包括那些包括多于或少于四个状态的多状态结构及配置)一同使用。
图8还显示三个读取参考电压Vra、Vrb及Vrc及六个检验参考电压Vva、Vva-L、Vvb、Vvb-L、Vvc及vc-L。对于读取操作,测量存储元件的阈值电压且将其与相关参考电压进行比较以确定所述存储元件处于什么状态。对于其中存储元件正被编程到状态A的标准编程操作,测量所述阈值电压且将其与检验电压Vva进行比较。只要所述阈值电压低于检验电压Vva,那么编程针对所述元件将继续。当使用粗略/精细编程技术时,还使用较低的检验电压Vva-L,且当所述阈值电压在所述两个检验点之间时,将减缓(部分禁止)编程。同样,对于其中存储元件正被编程到状态B的标准编程操作,测量所述阈值电压且将其与检验电压Vvb进行比较。只要所述阈值电压低于检验电压Vvb,那么编程针对所述元件将继续。当使用粗略/精细编程技术时,还使用较低的检验电压Vvb-L,且当所述阈值电压在所述两个检验点之间时,将减缓(部分禁止)编程。同样,对于其中存储元件正被编程到状态C的标准编程操作,测量所述阈值电压且将其与检验电压Vvc进行比较。只要所述阈值电压低于检验电压Vvc,那么编程针对所述元件将继续。当使用粗略/精细编程技术时,还使用较低的检验电压Vvc-L,且当所述阈值电压在所述两个检验点之间时,将减缓(部分禁止)编程。
在一个实施例(称为全序列编程)中,可将存储元件从擦除状态E直接编程到已编程状态A、B或C中的任一者。举例来说,可首先擦除将被编程的一群存储元件,使得所述群中的所有存储元件处于已擦除状态E。当某些存储元件正从状态E编程到状态A时,其它存储元件正从状态E编程到状态B及/或从状态E编程到状态C。
图9图解说明编程多状态存储元件的两遍式技术的实例,所述多状态存储元件存储有两个不同页(下部页及上部页)的数据。所描绘的四个状态是:状态E(11)、状态A(10)、状态B(00)及状态C(01)。对于状态E,两个页存储“1”。对于状态A,下部页存储“0”且上部页存储“1”。对于状态B,两个页存储“0”。对于状态C,下部页存储“1”且上部页存储“0”。注意,尽管已将特定的位图案指派到所述状态中的每一者,但还可指派不同的位图案。
在第一遍编程中,根据将要编程到下部逻辑页中的位来设定所述存储元件的阈值电压电平。如果所述位是逻辑“1”,那么所述阈值电压不改变,因为其处于因先前已被擦除而得到的适当状态。然而,如果将要编程的位是逻辑“0”,那么所述存储元件的阈值电平升高到状态A,如由箭头500所示。
在第二遍编程中,根据正被编程到上部逻辑页中的位来设定所述存储元件的阈值电压电平。如果上部逻辑页位将要存储逻辑“1”,那么不会发生编程,因为所述存储元件依据下部页位的编程而处于状态E或A(两者均携载上部页位“1”)中的一者中。如果上部页位将是逻辑“0”,那么所述阈值电压变化。如果所述第一遍导致所述存储元件保持在已擦除状态E中,那么在所述第二阶段中,将所述存储元件编程,使得阈值电压增加到处于状态C,如由箭头520所描绘。如果所述存储元件作为所述第一遍编程的结果而已被编程到状态A,那么所述存储元件在所述第二遍中进一步被编程以使得所述阈值电压增加到处于状态B,如由箭头510所描绘。第二遍的结果是将所述存储元件编程到经指定以在上部页存储逻辑“0”而不改变下部页的数据的状态中。
在一个实施例中,如果写入充足的数据以填满字线,那么可设立系统以执行全序列写入。如果未写入充足的数据,那么所述编程过程可以所接收的数据编程下部页。当接收到后续数据时,系统随后将编程上部页。在再一实施例中,所述系统可以编程下部页的模式开始写入且如果随后接收到足以填满整个字线的大部分或全部存储元件的数据时,那么所述系统转换成全序列编程模式。此种实施例的更多细节揭示在标题为“使用早期数据的非易失性存储器的管线化编程(Pipelined Programming ofNon-Volatile Memories Using Early Data)”的美国专利公开案第2006/0126390号中,其全文以引用方式并入本文中。
图10A-图10C描绘用于编程非易失性存储器的另一过程,其通过在写入先前页的邻近存储器元件之后写入关于特定页的任何特定存储器元件来减少所述特定存储器元件的浮动栅极到浮动栅极耦合。在一个实例性实施方案中,每一非易失性存储器元件使用四个数据状态来存储两个数据位。举例来说,假设状态E是已擦除状态且状态A、B及C是已编程状态。状态E存储数据11,状态A存储数据01,状态B存储数据10且状态C存储数据00。此是非格雷编码的实例,因为两个位均在邻近状态A与B之间变化。也可使用数据到物理数据状态的其它编码。每一存储器元件均存储来自两个数据页的位。出于参考的目的,将这些数据页称为上部页及下部页;然而,还可给予其其它称谓。对于状态A,上部页存储位0且下部页存储位1。对于状态B,上部页存储位1且下部页存储位0。对于状态C,两个页均存储位数据0。在图10A中描绘的第一步骤中编程字线WLn处的存储器单元的下部页数据且在图10C中描绘的第二步骤中编程所述单元的上部页数据。如果所述下部页将要保持数据1,那么所述存储器元件状态的阈值电压在所述第一步骤期间保持在状态E。如果将要将所述数据编程到0,那么将所述存储器单元的阈值电压Vt升高到状态B′。状态B′是具有检验电平Vvb′(其低于Vvb)的临时状态B。
在一个实施例中,在所述存储器元件的下部页数据从状态E编程到状态B′之后,编程邻近字线WLn+1上的其相邻存储器元件(相对于其下部页)。举例来说,可在字线WL1上的存储器单元的下部页之后编程字线WL2上的存储器单元的下部页。如果在编程目标存储器单元之后邻近存储器单元的阈值电压从状态E升高到状态B′,那么浮动栅极耦合可升高所述目标存储器单元的视在阈值电压。对WLn处的存储器单元的累积耦合影响将加宽所述单元的阈值电压的视在阈值电压分布,如图10B中所描绘。可在编程所关心字线的上部页时补救所述阈值电压值分布的视在加宽。
图10C描绘编程存储器元件WLn的上部页的过程。如果存储器元件处于已擦除状态E且上部页位将要保持处于1,那么所述存储器元件将保持处于状态E。如果所述存储器元件处于状态E且其上部页数据将被编程到0,那么存储器元件的阈值电压将升高以使存储器元件处于状态A。如果存储器元件处于具有中间阈值电压分布550的状态B′且上部页数据将保持处于1,那么存储器元件将被编程到最终状态B。如果存储器元件处于具有中间阈值电压分布550的状态B′且上部页数据将变为数据0,那么存储器元件的阈值电压将升高以使所述存储器元件处于状态C。图10A-10C所描绘的过程减少了浮动栅极到浮动栅极耦合的影响,因为仅相邻存储器元件的上部页编程将对给定存储器元件的视在阈值电压具有影响。此技术的替代状态编码的实例是在上部页数据为1时从中间状态B′移动到状态C,且在上部页数据为0时移动到状态B。尽管图10A-10C提供关于四个数据状态及两个数据页的实例,但也可将所教示的概念应用于具有多于或少于四个状态及多于或少于两个页的其它实施方案。关于各种编程方案及浮动栅极到浮动栅极耦合的更多细节可见于标题为“在非易失性存储器的读取操作期间补偿耦合(Compensating For Coupling During Read Operations Of Non-VolatileMemory)”的美国专利申请案第11/099,133号中。
图11-图13图解说明在可用于实施图8-10的编程过程的三个不同编程技术期间的阈值电压及位线电压。图11A及11B图解说明标准或常规编程过程,图12A及12B图解说明第一粗略/精细编程过程,且图13A及13B图解说明经修改的粗略/精细编程过程。所述粗略/精细技术用于编程多级NAND存储元件,但也可用于编程二进制装置。
图11A图解说明标准编程过程的阈值电压与时间之间的关系。将一系列编程脉冲施加到选定控制栅极,如前文所说明。在编程期间的某些时间间隔或检验点t1、t2、t3等处,实施其中测量存储元件的阈值电压Vt的检验操作。如果所述选定存储元件的所测量阈值电压Vt低于预定的检验电平V检验1,那么编程针对所述存储元件继续,且位线电压Vb1保持为低,通常为0V,如图11B中所示。在时间t3处,存储元件已达到高于V检验1的阈值电压电平,且位线电压Vb1升高到禁止电压V禁止,以完全禁止对所述存储元件的进一步编程。所述禁止电压V禁止通常是相对高的电压,例如电力供应电压Vdd。此标准编程方法从而使用单个检验电平,且所述存储元件的编程将继续直到其阈值电压Vt达到检验电平V检验1,此后通过将位线电压升高到高禁止电压V禁止来禁止进一步编程。
图12A图解说明粗略/精细编程过程的阈值电压与时间之间的关系。在此技术中,使用两个检验电平,且在存储元件达到在上限检验电平V检验1与下限检验电平V检验2之间的阈值电压电平时在时间t3处部分禁止所述存储元件编程。因此,不是将位线电压升高到高电压电平,而是将所述位线升高中间电压电平V1(通常约为0.5-1.0V),其部分禁止存储元件的编程,如图12B中所示。编程期间的沟道电压也将与V1大约相同。在时间t4处,阈值电压Vt仍在上限检验电平与下限检验电平之间,因此位线电压Vb1保持在中间电压V1。然而,在时间t5处,阈值电压Vt已增加到高于上限检验电平V检验1的电压,此时位线电压升高到V禁止以完全禁止编程。通过使用粗略/精细编程过程,已编程Vt分布比在标准编程过程的情况下窄,因为一旦阈值电压Vt接近所需已编程状态的目标阈值电压值,那么存储元件的阈值电压变化减小。
图13A图解说明经修改粗略/精细编程过程的阈值电压与时间之间的关系,在所述粗略/精细编程过程中在位线上使用不同的部分禁止电压V2。在此实例中,如在图12A中,当存储元件达到V检验1与V检验2之间的Vt状态时在时间t3处禁止所述存储元件编程。在那时,位线电压升高到中间电压V2。V2的值经选择使得在时间t4处,在一个额外编程脉冲已被施加之后,所述存储元件达到高于V检验1的Vt,此时Vb1从V2升高到V禁止以完全禁止编程。关于经修改粗略/精细编程的更多信息可见于美国专利公开案2005/0157552“编程非易失性存储器”中。
为使用经修改的粗略/精细编程技术获得最好的性能,优选地应以使得存储元件的阈值电压Vt在下一编程脉冲期间的变化等于ΔV编程/2的方式来选择中间禁止电压V2。如果以适当的方式选择检验限制V检验1及V检验2,那么存储元件的Vt在仅一个额外编程脉冲之后应高于V检验1(目标值)。因此,仅提供一个额外编程脉冲,而不管存储元件的阈值电压Vt在所述一个额外脉冲之后高于还是低于最终目标电平V检验1。经修改粗略/精细编程过程的优点是需要比在传统粗略/精细编程过程的情况下更少的编程脉冲,从而导致更短的编程时间及降低的编程干扰(尤其在用于最高已编程Vt状态时)。
在一个实施例中,使用标准技术(不是粗略/精细编程)编程到最高状态(例如,状态C)的同时使用粗略/精细编程技术编程到较低状态(例如,状态A及B)。然而,当完成所述较低状态的编程时,仍需要若干编程脉冲来编程所述最高状态(例如,状态C)。为改善编程速度,可从最低状态(例如,状态A及B)已被编程的时刻起使用较大的步长及较长的编程脉冲。同时,用于最高状态的编程技术可改变为上文所说明或另外所属领域中已知的粗略/精细编程技术中的一者。因此,优选地,所述编程方法在较低状态已完成编程时切换到较快的技术。此可不合理地加宽最高状态的阈值电压分布,然而,切换到粗略/精细编程限制最高状态的电压分布的此种加宽。还应注意,在某些情况下,没有必要一直等到所有存储器单元达到A或B状态。事实上,某些存储器单元可能不能够成功地编程到A或B状态。因此,应在所有存储器单元已达到所述A或B状态时或在除预定义最大数量的不规则存储器单元以外的所有存储器单元已达到所述A或B状态时起始到较快编程方法的切换。使用错误校正可有效地校正正确编程失败的不稳定存储器单元(假设存在不超过预定义的最大值的不稳定存储器单元)。因此,出于本发明的目的,当所有存储器单元或除预定义最大数量的不稳定存储器单元以外的所有存储器单元已达到B状态时,所述B状态已完成或完成编程。
图14图解说明可用于实现多级非易失性存储元件的最高级的较快编程的编程脉冲序列,如以上紧接段落所说明。这些图显示用于四状态装置的全序列编程的编程脉冲,但可使用其它方法。所述序列的标记为“B级编程”的部分关于存储器单元被编程到状态B时的时间。其也可被编程到状态A及C(至少在一部分时间期间)。所述序列的标记为“C级编程”的部分关于存储器单元被编程到状态C时的时间。所述“B级编程”在时间t12之后结束,在此点上将要编程到状态A或B的所有存储元件已达到最终目标阈值电压电平且现在被锁定以避免进一步编程。此点处的额外编程仅用于将要编程到状态C(最高状态)的存储元件。
将初始编程脉冲V编程施加到选定存储元件。每一后续脉冲递增脉冲步长ΔV编程1。在每一编程脉冲之间,实施一个或一个以上检验操作,从而将一系列检验脉冲(举例来说,如图16中所示)施加到存储元件,且将阈值电压Vt与适当的检验电平进行比较以确定针对所关心的单元继续编程还是禁止编程。
当确定B状态已完成编程(例如,将要编程到状态A或B的所有或几乎所有存储元件已达到最终目标阈值电压电平且现在被锁定以避免进一步编程)时,那么可施加准许C状态的较快编程的脉冲序列。参照图14,下一脉冲的步长从ΔV编程1(通常为0.4V)增加到ΔV编程2(通常为0.8V)。优选地,ΔV编程2约为ΔV编程1的两倍大。另外,在调节步长的同时,增加编程脉冲的长度。举例来说,现有编程方法的典型脉冲长度为10μsec,且增加的脉冲长度可为20μsec,但这些值将基于实施方案而变化。此外,替代针对C状态编程使用常规编程方法(其中使用单个检验电平的标准写入方法,如图16中所示),可使用两个检验电平的粗略/精细编程方法,如图17中所示。因此,对于正被编程到C状态的元件,将阈值电压Vt与检验电平Vvc及Vvc-L(其中Vvc>Vvc-L)进行比较。如果Vt<Vvc-L,那么编程继续。如果Vvc>Vt>Vvc-L,那么将中间电压施加到位线以减缓编程。当Vt>Vvc时,那么将高电压施加到位线以禁止进一步编程。注意,在某些实施例中,没有必要在增加脉冲长度及宽度的同时切换到粗略/精细编程方法。在某些情况下,可接受使用单个检验电平而继续,因为C状态的所得较宽Vt分布是可接受的。以此方式,可减少检验操作的数量,从而产生较快的编程。
图15类似于图14,除在B状态已完成编程之后,下一脉冲增加步长ΔV编程3(通常为1.2V),但然后后跟具有步长ΔV编程2(通常为0.8V)的脉冲。优选地,ΔV编程3大于ΔV编程2。注意,在B状态的编程期间,某些最快的单元将已经达到C状态。因此那些C状态单元以小步长ΔV编程1编程,且这些单元不需要粗略/精细方法。然而,当所有或几乎所有B状态单元已完成编程时,改变步长及检验方法两者。步长增加,且代替使用仅使用一个检验电平的正常写入方法(如在图16中),所述编程切换到使用两个检验电平的粗略/精细方法(如图17中所示)。优选地,使用经修改的快速一遍写入方法来写入C状态,以限制编程干扰以及编程脉冲的数量。如前文所提及,然而,在某些实施例中,可能没有必要改变检验方法,因为C状态的所得较宽Vt分布是可接受的。
对于时间间隔t1-t11,施加图16中所描绘的所述组检验脉冲。在此实例中,所述组检验脉冲包括五个脉冲。第一脉冲591具有量值Vva-L以用于检查A状态的下限检验电平。第二脉冲592具有量值Vva以用于检查A状态的上限检验电平。第三脉冲593具有量值Vvb-L以用于检查B状态的下限检验电平。第四脉冲594具有量值Vvb以用于检查B状态的上限检验电平。第五脉冲595具有量值Vvc以用于检查C状态的单个检验电平。因此,当正编程较低状态时,使用两个检验电平的粗略/精细技术用于编程较低状态A及B,而使用单个检验电平的标准技术用于编程最高状态C。在某些情况下,在每一编程脉冲之后,不是所有五个检验操作被执行。举例来说,任何单元在t1处的第一编程脉冲之后将已达到C状态的可能性非常小,因此可将C检验操作延期预定数量的脉冲且然后在所述预定数量的编程脉冲已完成之后开始。可使用各种技术来减小所需检验操作的总数量。
在间隔t12处,系统确认较低状态A及B已完成编程,且施加不同组的检验脉冲以实施粗略/精细检验技术以用于编程状态C,如图17中所示。由于A及B状态已完成编程,因此仅需要检验脉冲来检查状态C,且因此经修改组的检验脉冲包括用于检查C状态的下限检验电平的具有量值Vvc-L的第一脉冲596及用于检查C状态的上限检验电平的具有量值Vvc的第二脉冲597。应注意,如前文所提及,在某些实施例中,跳过用于检查C状态的下限检验电平的第一脉冲596可为可接受的,且因此仅用脉冲597来检验C状态。此减少所需检验操作的总数量且因此将以较宽C状态Vt分布的代价减少总的编程时间。
在每一编程脉冲之后执行多次检验操作会减缓编程过程。一种用于减小检验的时间负担的方法是使用更高效的检验过程。举例来说,在标题为“用于多状态存储器的智能检验(Smart Verify for Multi-State Memories)”的美国专利第7,073,103号中,揭示一种所谓的“智能检验”过程,所述专利的全文以引用方式并入本文中。在使用所述智能检验过程的编程/检验序列期间,多状态存储器的写入序列的实例性实施例中,在所述过程的开始处,在检验阶段期间仅检查多状态范围中正将选定存储器单元编程到的最低状态(例如,状态A)。一旦一个或一个以上存储器单元达到第一存储状态(例如,状态A),那么将所述多状态序列中的下一状态(例如,状态B)添加到检验过程。此下一状态可在最快单元达到所述序列中此前一状态后立即添加,或者,由于存储器通常设计为具有若干编程步骤以从一状态移到另一状态,因此可在延迟若干循环之后添加。延迟量既可固定或可使用基于参数的实施方案,基于参数的实施方案允许根据装置特性来设定延迟量。如上所述继续在检验阶段中将状态添加到正被检查的组,直到已添加最高状态。同样,当所有准备变为这些电平的存储器单元成功检验为达到那些目标值并被锁定以避免进一步编程时,可从所述检验组中移除较低状态。
在图14及15中,在B状态的编程期间,某些最快单元将已经达到C状态,且那些C状态单元将已用较小步长ΔV编程1编程。因此,这些单元不需要粗略/精细方法。然而,这些新技术的关键是当所有B状态单元已完成编程时,增加脉冲步长及脉冲长度,且优选地,编程切换到使用两个检验电平的粗略/精细方法以维持与在现有技术方法的情况下大致相同的C状态Vt分布宽度。如上文所提及,在某些实施例中,可能没有必要切换到粗略/精细方法,因为在某些情况下可容忍所得的较宽C状态Vt分布。
图18是说明用于编程非易失性存储器的方法(举例来说,如图14中所揭示)的一个实施例的流程图。在某些实施方案中,存储器单元在编程之前被擦除(以块为单位或以其它单位)。通常,通过在源极线及位线浮动的同时将p-井升高到擦除电压(例如,18伏)达一充足的时间周期并将选定块的字线接地来擦除存储器单元。由于电容性耦合,未选定字线、位线、选择线及c-源极也升高到占擦除电压显著分数的值。由此将强电场施加到选定存储器单元的隧道氧化物层上,且当浮动栅极的电子发射到衬底侧时,选定存储器单元的数据通常通过福勒-诺德海姆穿隧机制擦除。当电子从浮动栅极传送到p-井区域时,选定单元的阈值电压降低。可对整个存储器阵列、单独的块或另一单元单位执行擦除。
在图18的步骤601中,“数据加载”命令由控制器发出且由控制电路310接收。在步骤603中,将指定页地址的地址数据从控制器或主机输入到解码器314。在步骤605中,将所寻址页的一页编程数据输入到数据缓冲器以用于编程。所述数据锁存在适当组的锁存器中。在步骤607中,“编程”命令由控制器发出到状态机312。
由“编程”命令触发,使用施加到适当选定字线的步进式脉冲将在步骤605中锁存的数据编程到由状态机312控制的选定存储器单元中。在步骤609中,设定编程方法。举例来说,针对将要编程到状态A及B的存储器单元设定粗略/精细编程方法,而针对将要编程到状态C的存储器单元设定标准方法(不是粗略/精细编程)。在步骤611中,初始化过程变量。因此,编程电压V编程被初始化为开始脉冲量值(例如,12V或其它值),脉冲的长度PW被设定为初始值(例如,10μsec),脉冲步长ΔV编程被设定为ΔV编程1(例如,0.4V)且由状态机312维持的编程计数器PC被初始化为0。
在步骤613中,将编程脉冲V编程施加到选定字线,如图14。如果应编程存储器单元,那么将对应的位线接地。另一方面,如果存储器单元应保持为其当前数据状态,那么将对应位线连接到Vdd以禁止编程。
在步骤615中,检验选定存储器单元以确定其是否已完全编程。如果检测到选定单元的目标阈值电压已达到适当电平,那么锁定所述存储器单元以避免进一步编程。如果检测到阈值电压尚未达到适当电平,那么锁定所述存储器单元以避免进一步编程。在步骤617中,所述系统检查以了解较低状态是否已被编程。在一个实施例中,较低状态是除最高状态以外的所有已编程状态。在图8的实例中,低状态是状态A及B。因此,所述系统将确定将要编程到状态A及B的所有或几乎所有存储器单元是否已完成其编程。在其它实施例中,所述组较低状态可包括不同组的状态。如果确定将要编程到较低状态的所有或几乎所有存储器单元尚未完成其编程,那么在步骤618中,将编程计数器PC与PCMAX进行比较。如果编程计数器PC小于PCMAX,那么在步骤619中,将编程脉冲V编程的量值增加步长且将编程计数PC增加1。在步骤619之后,所述过程循环回到步骤613且将另一编程脉冲施加到选定字线。如果编程计数器PC不小于PCMAX,那么所述编程过程失败。
如果确定将要编程到较低状态的所有或几乎所有存储器单元已完成其编程,那么在步骤621中,改变编程方法,使得粗略/精细编程方法用于被编程到较高状态或状态(例如,图8的状态C)的那些存储器单元。如前文所提及,此步骤是任选地且并非在所有实施例中都需要。在步骤623中,改变过程变量,使得脉冲的宽度PW增加(例如,增加到20μsec)且步长ΔV编程增加(例如,增加到ΔV编程2-例如,0.8v代替0.4v)。在步骤625中,确定所有或几乎所有存储器单元是否被检验已完成编程。如果是,那么所述编程过程即成功完成。如果不是,那么所述编程过程继续到步骤627,其中对照编程限制值PCMAX来检查编程计数器PC。编程限制值的一个实例是二十;然而,也可使用其它数量。如果编程计数器PC不小于二十,那么所述编程过程即告失败。在许多实施例中,在达到最大循环数量之后,所述系统检查以了解是否少于预定量的单元尚未完成编程。如果少于预定数量的单元尚未完成编程,那么仍将所述编程过程视为一遍。如果编程计数器PC小于PCMAX,那么在步骤629中,更新过程变量。将编程电压V编程增加步长ΔV编程2。递增编程计数器PC。在步骤631中,施加下一编程脉冲且在步骤633中,检验所述存储器单元以确定其是否已完成编程。在步骤633之后,所述过程循环回到步骤625。注意,在步骤629中,将编程计数器PC增加一。然而,由于编程电压V编程增加较大的步长,因此优选地在某些实施例中将编程计数器PC增加二(或更大的数量)以反映V编程步长的改变。
图19是说明用于编程非易失性存储器的方法(如图15中所揭示)的实施例的流程图。步骤601-619与在图18中相同。在步骤617中,如果确定将要编程到较低状态的所有或几乎所有存储器单元已完成其编程,那么在步骤645中确定所有或几乎所有存储器单元是否被检验已完成编程。如果是,那么所述编程过程即成功完成。如果不是,那么所述编程过程继续到其中改变编程方法的步骤647,使得粗略/精细编程方法用于被编程到较高状态(例如,图8的状态C)的那些存储器单元。如前文所提及,此是任选步骤且并非在所有实施例中都需要。在步骤649中,改变过程变量,使得脉冲的宽度PW增加(例如,增加到20μsec)且步长ΔV编程增加(例如,增加到ΔV编程3例如,1.2v代替0.4v)。在步骤651中,更新过程变量。将编程电压V编程增加步长ΔV编程2。递增编程计数器PC。注意,在步骤651中,将编程计数器PC增加一。然而,由于编程电压V编程增加较大的步长,因此可优选地在某些实施例中将PC增加二(或更大的数量)以反映V编程步长的改变。在步骤653中,将下一编程电压脉冲(具有新的量值)施加到选定字线。在步骤655中,检验选定存储器单元以确定其是否已完全编程。在步骤657中,确定所有或几乎所有存储器单元是否经检验已完成编程。如果是,那么所述编程过程即成功完成。如果不是,那么所述编程过程继续到步骤659,在步骤659中对照编程限制值PCMAX来检查编程计数器PC。如果编程计数器PC不小于PCMAX,那么所述编程过程失败。如果编程计数器PC小于PCMAX,那么在步骤661中,更新过程变量。将编程电压V编程增加步长ΔV编程2。递增编程计数器PC。注意,在步骤661中,将编程计数器PC增加一。然而,由于编程电压V编程增加较大的步长,因此可优选地在某些实施例中将PC增加二(或更大的数量)以反映V编程步长的改变。在步骤661之后,所述过程循环回到步骤653且施加下一编程脉冲。
出于图解说明及说明目的,上文已提供了对本发明的详细说明。所述说明并非打算为穷尽性或将本发明限定于所揭示的精确形式。依据以上教示,可做出许多修改及改变。所说明实施例的选择旨在最好地解释本发明的原理及其实际应用,从而使所属领域的其它技术人员能够以适合于所构想的特定用途的各种实施例及使用各种修改来最好地利用本发明。本发明的范围打算由所附权利要求书来界定。