具体实施方式
闪存系统的一个例子使用NAND结构,其包括在两个选择门之间串联并夹着布置多个晶体管。串联的晶体管和选择门被称为NAND串。图1是示出一个NAND串的顶视图。图2是其等效电路。在图1和2中描述的NAND串包括串联且夹在第一(或漏极侧)选择门(select gate)120和第二(或源极侧)选择门122之间的四个晶体管、100,102,104和106。选择门120经由位线触片(bit line contact)126将NAND串连接到位线。选择门122将NAND串连接到源极线128。通过向选择线SGD施加适当的电压来控制选择门120。通过向选择线SGS施加适当的电压来控制选择门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。
注意,虽然图1和2示出了在NAND串中的四个存储器单元,仅提供四个存储器单元的使用作为例子。NAND串可以具有少于四个存储器单元或多于四个存储器单元。例如,一些NAND串将包括八个存储器单元、16个存储器单元、32个存储器单元、64个存储器单元、128个存储器单元等。在此的讨论不局限于在NAND串中的任何具体数量的存储器单元。
使用NAND结构的闪存系统的典型架构将包括若干NAND串。每个NAND串通过由选择线SGS控制的其源极选择门而连接到源极线,并通过由选择线SGD控制的其漏极选择门而连接到其相关位线。每个位线和经由位线触片连接到该位线的相应的(一个或多个)NAND串包括存储器单元的阵列的列。位线与多个NAND串共享。典型地,位线在垂直于字线的方向上在NAND串的顶部延伸,并连接到一个或多个感测放大器。
在以下美国专利/专利申请中提供NAND型闪存和其操作的相关例子,所有被通过引用附于此:美国专利No.5,570,315;美国专利No.5,774,397;美国专利No.6,046,935;美国专利No.6,456,528;和美国专利申请No.US2003/0002348。
还可以使用除了NAND闪存以外的其他类型的非易失性存储器件。例如,还从使用用于存储电荷的介电层的存储器单元制造非易失性存储器器件。取代先前描述的导电浮置栅极源极,使用介电层。使用介电存储元件的这种存储器器件已经由以下描述:Eitan等人的“NROM:A Novel Localized Trapping,2-Bit Nonvolatile Memory Cell”,IEEE Electron Device Letters,vol.21,no.11,2000年11月,pp.543-545。“A Novel Localized Trapping,2-Bit NonvolatileMemory Cell”,IEEE Electron Device Letters,vol.21,no.11,2000年11月,pp.543-545。543-545.ONO介电层跨越源极和漏极扩散之间的沟道而延伸。一个数据位的电荷被定位于与漏极相邻的介电层,且另一数据位的电荷被定位于与源极相邻的介电层。例如,美国专利5,768,192和6,011,725公开了具有在两个二氧化硅层之间夹着的捕获电介质(trapping dielectric)的非易失性存储器单元。通过分开地读取介电层内的空间上分开的电荷储存区的二进制状态来实现多状态数据存储。还可以使用其他类型的非易失性存储器。
图3图示了具有用于并行读取和编程一页(或其他单位的)存储器单元(例如,NAND多状态闪存)的读/写电路的存储器器件210。存储器器件210可以包括一个或多个存储器晶片(die)或芯片212。存储器晶片212包括存储器单元的(二维或三维)阵列200、控制电路220和读/写电路230A和230B。在一个实施例中,以对称的方式在该阵列的相对侧上实现由各种外围电路对存储器阵列200的存取,以便在每个侧上的存取线和电路的密度减少了一半。读/写电路230A和230B包括多个感测块300,其允许并行读取或编程一页存储器单元。该存储器阵列200可由字线经由行解码器240A和240B且由位线经由列解码器242A和242B来寻址。字线和位线是控制线的例子。在一个典型的实施例中,,控制器244被包括在与一个或多个存储器晶片212相同的存储器器件210(例如,可移除存储卡或包)中。经由线232在主机和控制器244之间且经由线234在控制器和一个或多个存储器晶片212之间转移命令和数据。
控制电路220与读/写电路230A和230B合作以对存储器阵列200进行存储器操作。控制电路220包括状态机222、芯片上地址解码器224和功率控制模块226。状态机222提供存储器操作的芯片级控制。芯片上地址解码器224提供由主机或存储器控制器使用的与由解码器240A,240B,242A,和242B使用的硬件地址之间的地址接口。功率控制电路226控制在存储器操作期间供应给字线和位线的功率和电压。在一个实施例中,功率控制模块226包括可以创建大于供应电压的电压的一个或多个电荷泵。在一个实施例中,控制电路220、功率控制电路226、解码器电路224、状态机电路222、解码器电路242A、解码器电路242B、解码器电路240A、解码器电路240B、读/写电路230A、读/写电路230B和/或控制器224可以被称为一个或多个管理或控制电路。一个或多个管理或控制电路进行在此描述的处理。
图4描述了存储器单元阵列200的示例结构。在一个实施例中,存储器单元的阵列被划分为存储器单元的大量块(例如,块0-1023或另一量)。在一个实施例中,该块是传统擦除的单位。还可以使用其他单位的擦除。
块包括经由位线(例如,位线BLO-BLX)和公共的一组字线(WLO,WL1,WL2,WL3)存取的一组NAND串。图4示出了串联连接以形成NAND串的四个存储器单元。虽然示出了四个存储元件以被包括在每个NAND串中,但是可以使用比四个更多或更少(例如,16、32、64、128或另一数量,或存储器单元可以在NAND串上)。NAND串的一端经由(连接到选择门逻辑线SGD的)漏极选择门被连接到对应的位线,且另一端经由(连接到选择门源极线SGS的)源极选择门连接到源极线。在一个实施例中,每个NAND串包括两个哑存储器单元,一个在NAND串的每端。哑存储器单元不被用于存储数据。
每个块通常被划分为大量页。在一个实施例中,一页是编程的单位。还可以使用其他单位的编程。一页或多页数据通常被存储在一行存储器元件中。例如,一页或多页数据可以被存储在与公共字线的存储器单元中。一页可以存储一个或多个扇区。扇区包括用户数据和开销数据(overhead data)(也称为系统数据)。开销数据通常包括头部信息和已经从扇区的用户数据中计算的纠错码(ECC)。控制器(或状态机或其他组件)当数据正被编程到阵列中时计算ECC,还当正从该阵列中读取数据时检查它。或者,ECC和/或其他开销数据被存储在与它们所属的用户数据不同的页或甚至不同的块中。用户数据的扇区通常是512字节,对应于在磁盘中的扇区的尺寸。大量页形成块,无论从例如8页直到32,64,128或更多页。还可以使用其他尺寸的块、页和扇区。
在一些实施例中,存储器单元包括三阱,包括p衬底、p衬底内的n阱和n阱内的p阱。沟道区、源极区和漏极区典型地位于p阱中。P阱和n阱被认为是衬底的部分。在一个实施例中,存储器单元的整个阵列在一个p阱内,且在p阱中的沟渠(trench)提供在NAND串之间的电隔离。在一个实施方式中,在共享相同组的位线的相同p阱中的所有块被称为一个平面(plane)。在其他实施例中,不同的块可以处于不同的p阱。
另外,该器件可以具有相反的极性,以便三阱包括n衬底、n衬底内的p阱、和p阱内的n阱。在该配置中,沟道区、源极区和漏极区典型地位于n阱中。
图5是分离的感测块300的方框图,该分离的感测块300被分区为核心部分、称为感测模块480,和公共部分490。在一个实施例中,将存在对于每个位线的分离的感测模块480和对于多个感测模块490的一组的一个公共部分480。在一个例子中,感测块将包括一个公共部分490和八个感测模块480。在一个分组中的感测模块的每个将经由数据总线472与相关公共部分通信。一个例子可以在美国专利申请公开2006/0140007中发现,其整体被引用附于此。
感测模块480包括确定在连接的位线中的导电电流高于还是低于预定电平的感测电路470。在一些实施例中,感测模块480包括统称为感测放大器的电路。感测模块480还包括用于设置在连接的位线上的电压状况的位线锁存器482。例如,在位线锁存器482中锁存的预定状态将导致连接的位线被拉到指示编程禁止的状态(例如Vdd)。
公共部分490包括处理器492、一组数据锁存器494和在该组数据锁存器494和数据总线420之间耦合的I/O接口496。处理器492进行计算。例如,其功能之一是确定在感测的存储器单元中存储的数据并在该组数据锁存器中存储确定的数据。该组数据锁存器494被用于存储在读取操作期间由处理器492确定的数据位。其还用于存储在编程操作期间从数据总线420输入的数据位。输入的数据位表示意欲被编程到存储器中的写数据。I/O接口496提供在数据锁存器494和数据总线420之间的接口。
在读取或感测期间,该系统的操作在状态机222的控制下,该状态机222(使用功率控制226)控制不同的控制栅极电压向被寻址的(一个或多个)存储器单元的供应。随着其步经对应于由存储器支持的各种存储器状态的预定的控制栅极电压,感测模块480可以停留在这些电压之一,且将经由总线472从感测模块480向处理器492提供输出。在该点上,处理器492通过考虑感测模块的停留事件(tripping event)和关于经由输入线493从状态机的施加的控制栅极电压的信息来确定得到的存储器状态。然后,其计算对于存储器状态的二进制编码,并将得到的数据位存储到数据锁存器494。在核心部分的另一实施例中,位线锁存器482用于双重任务,作为用于锁存感测模块480的输出的锁存器,还作为如上述的位线锁存器。
预期,一些实施方式将包括多个处理器492。在一个实施例中,每个处理器492将包括使得每个输出线(未在图5中示出)被一起配线为逻辑或(wired-OR′d)的输出线(未示出)。在一些实施例中,输出线在被连接到配线为逻辑或的线之前被反转(invert)。该配置使得能够在编程确认处理期间快速确定何时完成了编程处理,因为接收配线为或的线的状态机可以确定正被编程的所有位何时到达了期望的电平。例如,当每个位到达了其期望的电平时,该位的逻辑零将被发送到配线为或的线(或数据一被反转)。当所有位输出数据0(或数据一被反转)时,然后状态机知道确定编程处理。在其中每个处理器与八个感测模块通信的实施例中,状态机可能(在一些实施例中)需要读取配线为或的线八次,或逻辑被添加到处理器492以累积相关位线的结果以便状态机仅需要读取配线为或的线一次。
数据锁存堆栈494包含对应于感测模块的数据锁存器的堆栈。在一个实施例中,存在每个感测模块480的三个(或四个或另一数量的)数据锁存器。在一个实施例中,锁存器每个一位。
在编程或验证期间,要被编程的数据从数据总线420被存储在该组数据锁存器494中。在验证处理期间,处理器492针对期望的存储器状态来监视验证的存储器状态。当两者一致时,处理器492设置位线锁存器482以便使得位线被拉到指定编程禁止的状态。这禁止与位线耦合的存储器单元被进一步编程,即使其经历在其控制栅极上的编程脉冲。在其他实施例中,处理器初始地加载位线锁存器482,且感测电路在确认处理期间设置其到禁止值。
在一些实施方式(但是不必要)中,数据锁存器被实施为移位寄存器以便在其中存储的并行数据被转换为用于数据总线420的串行数据,且反之亦然。在一个优选实施例中,对应于m个存储器单元的读/写块的所有数据锁存器可以被链接到一起以形成块移位寄出去,以便数据的块可以被串行转移输入或输出。具体地,读/写模块的库(bank)被适配以便其数据锁存器组的每个将顺序地偏移数据到数据总线中或数据总线以外,就好像它们是移位寄存器的部分,用于整个读/写块。
关于感测操作和感测放大器的更多信息可以在以下中找到:(1)美国专利申请公开No.2004/0057287,″Non-Volatile Memory And Method With ReducedSource Line Bias Errors,″2004年3月25日公布;(2)美国专利申请公开No.2004/0109357,″Non-Volatile Memory And Method with Improved Sensing,″2004年6月10日公布;(3)美国专利申请公开No.20050169082;(4)美国专利申请公开No.2006/0221692,题为″Compensating for Coupling During ReadOperations of Non-Volatile Memory,″发明人Jian Chen,2005年4月5日提交;以及(5)美国专利申请公开No.2006/0158947,题为″Reference Sense Amplifier For Non-Volatile Memory″,发明人Siu Lung Chan和Raul-Adrian Cernea,2005年12月28日提交。所有五个就在上述列出的专利文档在此通过整体被引用附于此。
在成功编程处理的末尾,存储器单元的阈值电压应该在已编程存储器单元的阈值电压的一个或多个分布中,或在已擦除存储器单元的阈值电压的分布中,如适当地。图6A图示了当每个存储器单元存储两位数据时存储器单元阵列的示例阈值电压分布(每个对应于数据状态)。但是,其他实施例可以使用每个存储器单元比两位数据更多或更少。例如,还可以使用每个存储器单元的三位数据、每个存储器单元的四位数据或其他量。图6A示出了已擦除存储器单元的第一阈值电压分布/数据状态SO。还描述了已编程存储器单元的三个阈值电压分布/数据状态S1,S2和S3。在一个实施例中,在S0中的阈值电压是负的,且在S1,S2和S3中的阈值电压是正的。在一些实施例中,多个阈值电压分布对应于负的阈值电压。
图6A的每个不同的阈值电压分布对应于具有该组数据位的预定值的数据状态。在被编程到存储器单元中的数据和该存储器单元的阈值电压电平之间的具体关系取决于适用于这些单元的数据编码机制。例如,两个被整体引用附于此的美国专利6,222,762和2003年6月13日提交的美国专利申请公开No.2004/0255090,″Tracking Cells For A Memory System″描述了用于多状态闪存单元的各种数据编码机制。在一个实施例中,使用格雷码分配来将数据值分配给阈值电压范围/数据状态,以便如果浮置栅极的阈值电压错误地偏移到相邻的物理状态,仅将影响一个位。一个例子向阈值电压分布/数据状态S0分配″11″,向阈值电压分布/数据状态S1分配″10″,向阈值电压分布/数据状态S2分配″00″,且向阈值电压分布/数据状态S3分配″01″。在该例子中,如果擦除存储器单元且要编程的数据是11,则存储器单元不需要改变其阈值电压,因为其已经在与11相关联的S0中。如果擦除存储器单元且要被编程的数据是00,则存储器单元的阈值电压需要移动到S2。
图6A还示出三个读取参考电压,Vr1,Vr2和Vr3用于从存储器单元读取数据。通过测试给定的存储器单元的阈值电压高于Vr1,Vr2和Vr3还是低于VrI,Vr2和Vr3,该系统可以确定存储器单元处于什么阈值电压分布/数据状态。
图6A还示出三个验证参考电压Vv1,Vv2和Vv3。当将存储器单元编程到数据状态S1时,该系统将测试那些存储器单元是否具有大于或等于Vv1的阈值电压。当将存储器单元编程到数据状态S2时,该系统将测试存储器单元是否具有大于或等于Vv2的阈值电压。当将存储器单元编程到数据状态S3时,该系统将测试存储器单元是否具有大于或等于Vv3的阈值电压。
在已知为全序列编程的一个实施例中,可以将存储器单元从已擦除阈值电压分布/数据状态S0直接编程到已编程阈值电压分布/数据状态S1、S2或S3中的任一。例如,要被编程的全体存储器单元可以首先被擦除,以便在该全体中的所有存储器单元处于已擦除阈值电压分布/数据状态S0中。虽然一些存储器单元正从阈值电压分布/数据状态S0编程到阈值电压分布/数据状态S1,但是其他存储器单元正从阈值电压分布/数据状态S0编程到阈值电压分布/数据状态S2以及/或者从阈值电压分布/数据状态S0编程到阈值电压分布/数据状态S3。由图6A的三个曲线箭头图形化地描述全序列编程。
存储器单元可能遭受与相同字线、相同位线或相邻字线和相邻位线上的相邻存储器单元的电容性耦合。电容性耦合用于升高存储器单元的明显阈值电压,因为相邻存储器单元已经被编程了;但是,浮置栅极可能不被增加或减少了一定量的电荷。在许多存储器单元的明显阈值电压中的增加导致阈值电压分布扩宽,如图6B所示。在严重的电容性耦合的一些情况下,已擦除状态的阈值电压可以被扩宽到其与第一已编程状态重叠的点。例如,图6B示出与阈值电压分布/数据状态S1重叠的阈值电压分布/数据状态S0,因为阈值电压分布/数据状态S0已经由于与相邻的存储器单元的电容性耦合而被扩宽。在一些情况下,由其阈值电压重叠的存储器单元构成的一页或扇区可能不被正确地读回,因为该系统将不能确定这些单元是处于状态0还是状态1。
在此提出的技术选择性地进行擦除操作以重新擦除应该处于已擦除状态0的那些存储器单元,但由于电容性耦合(或其他原因),具有显得在已擦除数据状态S0的阈值电压分布之外的阈值电压。进行选择性的擦除,而不有意擦除在本应该已编程的任一存储器单元中的已编程数据。因此,在一个实施例中,图6B的阈值电压分布/数据状态S0将被缩紧以变得像图6C的阈值电压分布/数据状态S0,其中,在阈值电压分布/数据状态S0中的所有存储器单元具有低于擦除验证电平Ev的阈值电压。在一个实施例中,Ev=0伏特。在状态S1、S2和S3中的存储器单元将不在选择性擦除期间经历擦除操作。
图7是描述用于操作非易失性存储器的处理的流程图。在步骤548中,接收要编程的请求和要编程的数据。存储该数据。该数据可以被存储在控制器、状态机、缓冲器或其他地方。在图7的处理的一个实施方式中,存储器单元被预编程以便维持对存储器单元的平均损耗(步骤550)。在一个实施例中,存储器单元被预编程到状态S3(最高状态)、随机图案或任何其他图案。在一些实施方式中,不需要进行预编程。
在步骤552中,存储元件在编程之前(以块或其他单位)被擦除。在一个实施例中,通过将p阱升高到擦除电压(例如20伏特)达足够的时间段,并将所选块的字线接地同时将源极和位线浮置,来擦除存储器单元。在不被选择以被擦除的块中,将字线浮置。由于电容性耦合,未选字线、位线、选择线和公共源极线还被升高到擦除电压的大分数,由此阻碍对未被选择以被擦除的块的擦除。在被选择以被擦除的块中,从而将强电场施加到所选存储器单元的隧道氧化物层,且随着浮置栅极的电子通过Fowler-Nordheim遂穿机制被发射到衬底侧,所选存储器单元被擦除。随着电子从浮置栅极转移到p阱区,所选单元的阈值电压被降低。可以对整个存储器阵列、单元的分离的块或另一单位进行擦除。在一个实施例中,在擦除存储器单元之后,所有已擦除的存储器单元将处于数据状态S0(见图6A)。擦除处理的一个实施方式包括向p阱施加几个擦除脉冲,且在擦除脉冲之间验证存储器单元是否具有低于Vev的阈值电压。
在步骤554,(可选地)进行软编程以缩窄已擦除存储器单元的已擦除阈值电压的分布。一些存储器单元由于擦除处理可以处于比所需的更深的已擦除状态。软编程可以向控制栅极施加编程脉冲以便将更深的已擦除存储器单元的阈值电压移动到更接近于擦除验证电平Ev。例如,看图6A,步骤554可以包括缩紧与状态S0相关的阈值电压分布。在步骤556中,该块的存储器单元被编程。可以受使用上述各种电路的状态机之命进行图7的处理。在其他实施例中,可以受使用上述各种电路的控制器之命进行图7的处理。在步骤558中,存储器系统(受控制器和/或状态机之命)选择性地对应该处于已擦除状态但具有显得在已擦除数据状态的阈值电压分布之外的阈值电压的那些存储器单元进行擦除操作(例如重新擦除)。进行选择性的擦除,而不有意擦除在本应该已编程的任一存储器单元中的已编程数据。在存储器单元已经被编程且(可能地)选择性地被重新擦除之后,可以读取存储器单元(步骤560),且可以向与控制器通信的控制器和/或主机报告所读取的数据。
图8是描述对连接到公共字线的存储器单元进行编程的处理的一个实施例的流程图。可以在图7的步骤556期间进行图8的处理一次或多次。例如,可以使用图8的处理来进行图6A的全序列编程,在该情况下,将对每个字线进行图8的处理一次。在一个实施例中,以从最接近于源极线的字线开始并朝向该位线工作的次序来进行编程处理。还可以使用图8的处理来对字线进行一页(或部分页或其他单位的)数据的编程,或多遍编程处理中的一遍。还可以使用其他布置。受状态机222之命进行图8的处理。可以用许多不同编程机制来使用用于擦除的在此描述的技术。
通常,在编程操作期间施加到控制栅极的编程电压(Vpgm)被施加为一系列编程脉冲。在编程脉冲之间的是使能验证的一组验证脉冲。在许多实施方式中,随每个连续脉冲将编程脉冲的量值增加预定步长。在图8的步骤608中,编程电压Vpgm被初始化到起始的量值(例如,-12-16V或另一适当的电平),且编程计数器PC被初始化在1。在步骤610中,编程电压Vpgm的编程脉冲被施加到所选字线(被选择用于编程的字线)。未选字线接收一个或多个升压电压(例如,~9伏特)以进行本领域已知的升压机制。如果应该编程存储器单元,则对应的位线接地。另一方面,如果存储器单元应该维持在其当前阈值电压,则对应的位线被连接到VDD(大约2.5伏特)来禁止编程(锁止该存储器单元以不编程)。关于升压机制的更多信息可以在美国专利6,859,397和美国专利申请公开号20080123425中找到,其两者全部被引用附于此。
在步骤610中,编程脉冲同时被施加到连接到所选字线的所有存储器单元,以便连接到被选择用于编程的所选字线的所有存储器单元被一起编程。以此方式,连接到所选字线的所有存储器单元将同时使其阈值电压改变,除非它们已经被锁止以不编程。
在步骤612中,使用适当的一组目标电平来验证所选存储器单元的状态。图8的步骤612包括进行一个或多个验证操作。通常,在验证操作和读取操作期间,所选字线被连接到电压,其电平被指定用于每个读取和验证操作(例如,见用于验证的图6A的Vv1,Vv2和Vv3和用于读取的Vr1,Vr2和Vr3),以便确定所关心的存储器单元的阈值电压已经到达了这种电平。在施加字线电压之后,存储器单元的导电电流被测量以确定该存储器单元是否相应于施加到字线的电压而导通了。如果导电电流被测量为大于特定值,则假设存储器单元导通了,且施加到字线的电压大于存储器单元的阈值电压。如果导电电流不被测量为大于特定值,则假设存储器单元未曾导通,且施加到字线的电压不大于存储器单元的阈值电压。
存在在读取或验证操作期间测量存储器单元的导电电流的许多方式。在一个例子中,通过其放电或充电在感测放大器中的专用电容器的速率来测量存储器单元的导电电流。在另一例子中,所选存储器单元的导电电流允许(或不能允许)包括存储器单元的NAND串对对应的位线放电,其中该位线曾被预充电到已知电压。在一段时间之后测量在位线上的电压,以看其是否已经被放电。注意,用本领域中已知的用于验证/读取的不同方法来使用在此描述的技术。关于验证/读取的更多信息可以在整体被引用附于此的以下专利文档中找到:(1)美国专利申请公开No.2004/0057287,″Non-Volatile Memory And Method With Reduced Source Line Bias Errors;″(2)美国专利申请公开No.2004/0109357,″Non-Volatile Memory And Method with Improved Sensing;″(3)美国专利申请公开No.20050169082;以及(4)美国专利公开2006/0221692,题为″Compensating for Coupling During Read Operations of Non-Volatile Memory″。
如果检测所选存储器单元的阈值电压已经到达了适当的目标电平,则通过例如在随后编程脉冲期间将其位线电压升高到Vdd来将该存储器单元锁止以不进一步编程。
回看图8,在步骤614中,检查所有存储器单元是否都已经到达了其目标阈值电压。如果是,编程处理完成且成功,因为所有所选存储器单元都被编程且验证到其目标状态。在步骤616中报告状态″PASS(通过)″。注意,在一些实施方式中,在步骤614中,检查至少预定数量的存储器单元是否已经被适当地编程了。该预定数量可以少于所有存储器单元的数量,由此允许编程处理在所有存储器单元已经到达其适当的验证电平之前停止。可以在读取处理期间,使用错误校正来校正不成功编程的存储器单元。
如果在步骤614中,确定不是所有存储器单元已经到达其目标阈值电压,则编程处理继续。在步骤618中,针对编程限制值(PL),来检查编程计数器PC。编程限制值的一个例子是20,但是还可以使用其他值。如果编程计数器PC不小于编程限制值,则在步骤630中确定还没有成功编程的存储器单元的数量是否等于或小于预定数。如果不成功编程的存储器单元的数量等于或小于预定数,则编程处理被考虑为成功,且在步骤632中报告PASS(通过)的状态。在许多情况下,可以在读取处理期间,使用错误校正来校正不成功编程的存储器单元。但是,如果不成功编程的存储器单元的数量大于预定数,则编程处理被考虑为不成功,且在步骤634中报告FAIL(失败)的状态。
如果在步骤618中,确定编程计数器PC小于编程限制值PL,则处理在步骤620处继续,在期间,编程计数器PC递增1,且编程电压Vpgm被步增到下一量值。例如,下一脉冲将具有比先前脉冲大于步长(例如0.1-0.4伏特的步长)的量值。在步骤620之后,该处理循环回到步骤610,且另一编程脉冲被施加到所选字线,且该处理继续。
图9是描述用于选择性地对应该是已擦除状态、但具有显得在已擦除数据状态的阈值电压分布之外的阈值电压的那些存储器单元进行擦除操作的处理的流程图。在一个实施例中,对一个所选字线进行图9的处理,以便对连接到一个所选字线的那些存储器单元进行选择性擦除。在其他变型中,连接到不同字线的存储器单元可以同时经历选择性擦除处理。
在步骤650中,本应该维持已擦除的存储器单元被识别。例如,如果状态S0对应于数据11,状态S1对应于数据10,状态S2对应于数据00且状态S3对应于数据01,则本应该存储数据11的所有存储器单元应该维持已擦除(例如,维持在状态S0中)。存在识别本应该维持已擦除的存储器单元许多适当的方式。在一个例子中,当前被编程或近来被编程的数据可以被存储在缓冲器(在RAM或闪存)中。在步骤650中可以从缓冲器读取该数据,且该系统将使用控制器(见图3)、状态机(见图3)或处理器492(见图4)来识别本应该存储数据11的存储器单元。在另一实施例中,可以从控制器重新发出数据到状态机或处理器492,以便确定哪些存储器单元本应该存储数据11。在另一实施例中,当前被编程或近来被编程的数据可以被存储在数据锁存器494中,且由处理器492使用以确定哪些存储器单元本应该存储数据11。
在步骤652中,对连接到所选字线的存储器单元进行擦除验证操作。该擦除验证操作确定存储器单元是否已经被适当地擦除。在一个例子中,该擦除验证操作确定存储器单元的阈值电压大于擦除验证比较电压Vev(见图6A)。所选字线接收擦除验证比较电压Vev,且未选字线接收过有时称为Vread的驱动电压(大约8-10伏特)。如针对图8的步骤612以上所述,在施加适当的字线电压(其向控制栅极提供电压)之后,所选存储器单元的导电电流被观察/测量以确定存储器单元是否正导电。假设响应于擦除验证电压Vev而导通的存储器单元具有状态S0内的阈值电压且因此被适当地擦除。响应于接收擦除验证电压Vev而不导通且本应该处于擦除状态S0中的存储器单元被导通以具有显得在用于擦除数据状态S0的阈值电压分布之外(例如,之上)的阈值电压。在步骤654中,如果所有存储器单元验证(即,所有存储器单元响应于Vev而导通),则图9的处理完成。在一个实施例中,如果至少预定数量的存储器单元在步骤652中通过擦除验证处理,则图9的处理完成。如果少于所有存储器单元适当地验证(或少于预定数量的存储器单元验证),则该处理在步骤656处继续,且对本应该处于擦除状态S0中但未通过步骤652的验证处理的那些存储器单元进行选择性擦除操作。在步骤652处通过了验证处理的任何存储器单元将被锁止以不进行步骤656的选择性擦除处理,如以下所述。在进行步骤656的选择性擦除处理之后,该处理循环回到步骤652,且进行另一擦除验证处理。进行步骤652,654和656的循环,直到所有存储器单元验证或预定数量的存储器单元适当地验证。在其他实施例中,可以由最大数量的迭代来限制该循环。
图10是描述图9的步骤656的选择性擦除操作的时序图。图10示出了用于连接到将被选择性地擦除的存储器单元的位线、连接到将不被擦除的存储器单元的位线SGD、未选字线、所选字线、SGS、源极线、具有正被选择性地擦除的存储器单元的NAND串的沟道、具有不正被选择性地擦除的任何存储器单元的NAND串的沟道、以及p阱的电压信号。图10的处理具有三个步骤。在步骤1期间,连接到将被擦除的存储器单元的位线在t1被充电到Vdd(大约2-2.5伏特)。连接到将不被擦除(因为它们被编程,或因为它们本应该被擦除且它们通过了擦除验证操作)的存储器单元的位线维持在0电压。源极线和SGD也在t1升高到Vdd。字线、SGS和p阱都维持在0伏特。步骤2包括升压NAND串的沟道。在时间t2,向未选字线施加升压电压Vpass。在一个实施例中,Vpass大约10伏特。将未选字线升压到Vpass(至少部分地)使得沟道区升压用于具有被选择以被擦除的存储器单元的那些NAND串。沟道区将被升压到大约6伏特(或接近6伏特的电压范围)。因为那些NAND串的位线处于Vdd,因此在漏极侧上的选择门变得截止,其允许沟道升压。不具有被选择以被编程的存储器单元的NAND串将使其沟道维持在0伏特(或接近0伏特的范围电压)。步骤3包括向所选字线施加负电压以使得能够进行擦除。例如,在t3向所选字线施加Verase(大约-10伏特)。在所选字线上的负电压和在升压的沟道中的正电压建立了大的场,其选择性地擦除连接到所选字线且正在具有升压的沟道的NAND串上的那些存储器单元。在一个实施例中,该擦除包括从浮置栅极移除电子以便降低阈值电压。在一个例子中,电子被转移到源极/漏极区。在另一实施例中,不将电子移出浮置栅极,而是可以在所选字线/控制栅极下方的接合处存在栅极感应漏极泄漏(Gate Induced Drain Leakage)(GIDL)以使得空穴(hole)被注入浮置栅极。
注意,每次进行步骤656时进行图10的处理。在一个实施例中,可以对于步骤656的每个迭代来递增Vpass的值。
图11示出在图10的步骤3期间的一组NAND串。如可以看出的,所选字线(WL2)接收Verase,且未选字线接收Vpass。在该例子中,存储器单元724和725被选择用于擦除。存储器单元724和725两者都连接到WL2、公共字线。如所描述的,未选存储器单元也连接到公共字线。包括要被擦除的存储器单元的NAND串的字线接收Vdd。例如,包括存储器单元724的NAND串746的位线正接收Vdd。不具有正被擦除的存储器单元的NAND串(例如NAND串748)的位线接收0伏特。仅具有接收Vdd的位线的那些NAND串将具有升压的沟道。具有接收0V的位线的NAND串将不具有升压的沟道。注意,图11中描述的NAND串都在相同衬底区(例如,相同p阱)。
图12A示出了在图10中描述的擦除处理的步骤3期间的NAND串746(表示具有将被擦除的存储器单元的NAND串)的剖面图。图12B示出了在图10中描述的擦除处理的步骤3期间的NAND串748(表示不具有将被擦除的存储器单元的NAND串)的剖面图。图12A的NAND串746包括五个存储器单元720,722,724,726和728。NAND串746还包括源极侧选择门730、漏极侧选择门732、源极线736和位线738。如可以看见的,存储器单元720,722,726和728经由各个字线接收在其控制栅极处的Vpass。被选择用于擦除的存储器单元724接收Verase。源极侧选择门730接收0伏特。源极线736接收Vdd,且位线738接收Vdd。NAND串746的各种存储器单元的源极/漏极区和浮置栅极下方(除了在存储器单元724的浮置栅极下方)的反向层(inversion layer)形成称为NAND串746的沟道区742的等势区。图12A中描述的该沟道区742被升压到6伏特。在p阱区739的顶部处图示了升压的沟道区742。在存储器单元724的浮置栅极之下的沟道区升压区域中存在空隙。
图12B示出了不包括被选择用于擦除的存储器单元的NAND串748(见图11)。NAND串748包括存储器单元750,752,754,756和758。NAND串748还包括源极侧选择门760、漏极侧选择门762、源极线736、位线764和源极/漏极区770。如可以看见的,位线764接收防止漏极侧选择门762截止的0伏特,因此NAND串的沟道区不以与图12A中描述的方式升压。图11、12A和12B描述如何可以选择连接到公共字线的一些存储器单元用于擦除同时连接到相同字线的其他存储器单元将不被擦除。
在一些实施例中,使用负字线电压需要用于行解码器的三阱结构和供应该电压的负泵(negative pump)。在一些情况下,这种布置可以是昂贵的。图13是描述用于对连接到字线的存储器单元的子集进行选择性的擦除操作的处理的另一实施例的流程图。可以在图9的步骤656期间进行的图13的处理包括四个步骤。在步骤800中,要被擦除的存储器单元的位线将被充电到Vdd,且将不被擦除的存储器单元的位线维持在0伏特。在步骤802中,整个平面的p阱和所有字线将被充电到电压Vwell(例如,大约10伏特)。这将用电压Vwell耦合这些位线。被充电到了Vdd的位线将维持与处于了0伏特的位线相比的电压差。p阱充电可以被二极管降(或多于二极管降)偏移(相比于字线),以防止位线接合的前向偏压。在步骤804中,用于被选择以擦除的存储器单元的块将被充电到Vwell+Vpass(大约17伏特),以便对用于具有将被擦除的存储器单元的NAND串的沟道进行升压。升压的沟道将处于大约15伏特。在步骤806处,将通过将所选字线降低到0伏特来擦除所选存储器单元。
图14是提供图13的处理的更多细节的时序图。图14示出了与图13相同的四个步骤。在第一步骤(预充电位线-步骤800)中,将被擦除的那些存储器单元的位线被升高到Vdd,公共源极线被升高到Vdd,不连接到具有将被擦除的存储器单元的NAND串的位线维持在0伏特,且图14中描述的所有其他信号也维持在0伏特。
在第二步骤(电荷WL和阱-步骤802)中,未选和所选的字线在时间t2从0伏特充电高达Vwell。另外,在t2,SGD从0伏特升高到Vwell+2V,且SGS从0伏特升高到Vwell。将字线升高到Vwell使得位线耦合于与要被擦除的存储器单元相关的位线的Vwell+Vdd(大约10伏特)。不与要被擦除的存储器单元相关的位线将维持在Vwell。在t2,p阱还被升高到Vwell,这使得NAND串的沟道升高到Vwell。
在第三步骤(升压的擦除沟道-步骤804)中,整个块的未选和所选字线在时间t3被升高到Vwell+Vpass(大约17伏特),这(至少部分地)使得要被擦除的存储器单元的NAND串的沟道区的升压被升压到Vwell+升压电压(例如,大约15伏特)或接近于该电平的电压范围。该升压正发生,因为漏极侧选择门由于所选存储器单元的位线处于Vwell+Vdd而截止。因为未选存储器单元的位线仅在Vwell,因此那些漏极侧选择门不截止,且不被擦除的存储器单元的NAND串沟道将不被升压到Vwell+升压电压,但将维持在Vwell或接近于该电平的电压范围。
在步骤四中,所选字线具有在时间t4时降低到0伏特的其电压,以使能该擦除。被选择用于擦除的存储器单元将具有跨越控制栅极和沟道的15伏特,这提供适用于擦除的条件。在相同NAND串中的未选存储器单元将具有在字线处的17伏特,且在沟道处的15伏特,这不提供适用于擦除的条件。在相同NAND串中的未选存储器单元将具有在控制栅极处的0伏特,且在沟道处的10伏特,这不提供适用于擦除的条件。在一个实施例中,该擦除包括从浮置栅极移除电子以降低阈值电压。在一个例子中,电子被转移到沟道区。
在另一实施例中,不将电子移出浮置栅极,而是可以在所选字线/控制栅极下方的接合处存在栅极感应漏极泄漏(Gate Induced Drain Leakage)(GIDL)以使得空穴(hole)被注入浮置栅极。
图15示出在图13的步骤806期间的NAND串的示例组,其中,(在NAND串830上的)存储器单元854和存储器单元855被选择用于擦除。虽然图15仅示出正被选择性地擦除的两个存储器单元,但是在其他例子中,连接到相同公共所选字线(WL2)的更多或更少存储器单元可以被选择用于擦除。该选择性的擦除允许少于连接到所选字线的所有存储器单元被选择用于擦除。如可以看见的,具有将被擦除的存储器单元的NAND串(例如,NAND串830)的位线处于Vwell+Vdd,而不具有要被擦除的存储器单元的其他NAND串(例如,NAND串832)具有在Vwell处的位线。所选字线接收0伏特,而未选字线接收Vwell+Vpass。注意,图15中描述的NAND串都在相同衬底区域中(且因此在相同p阱上)。
图16A示出在图13的步骤806期间的NAND串830(表示具有将被擦除的存储器单元的NAND串)的剖面图。NAND串830包括存储器单元850,852,854,856和858。NAND串830还包括源极侧选择门860、漏极侧选择门862、源极线866和位线868。图16A示出了升压的沟道区域872,这被升压到大约15伏特。
图16B示出在图13的步骤806期间的NAND串832(表示不具有将被擦除的存储器单元的NAND串)的剖面图。NAND串832包括存储器单元880,882,884,886和888。NAND串832还包括源极侧选择门890、漏极侧选择门892、公共源极侧线866和位线896。NAND串832包括升压的沟道区874。但是,该升压的沟道区仅被升压到大约10伏特,如以上所讨论的;因此,不经意地发生擦除。
看回图9,步骤656包括对被选择用于擦除的存储器单元进行一个或多个擦除操作。在图10和14的实施例中,在步骤656的每次迭代期间对所选存储器单元进行一个擦除操作。在其他实施例中,可以在步骤656的每个迭代中进行多个擦除操作(进行或不进行中间的验证操作)。另外,图13和14中描述的四个步骤操作的一个变型可以包括预充电位线(800)和充电字线(802)仅一次,且然后重复升压沟道(804)和擦除(806)多次。
图17是描述用于进行多个擦除操作的处理同时预充电位线且充电字线仅一次的一个实施例的流程图。在图17的步骤902中,位线被充电,如在图13的步骤800中进行的。在步骤904中,字线和阱被充电,如在图13的步骤802中进行的。在图17的步骤906中,升高的沟道被升压,如在图13的步骤804中进行的。注意,未选字线在步骤906中接收Vpass。在步骤908中,所选字线被降低到0伏特,且电子从浮置栅极移除。在步骤910中,再次升压擦除沟道。步骤910与图13的步骤804类似;但是,未选字线和所选字线将接收Vwell+Vpass+ΔVpass。在一个例子中,ΔVpass可以任意从0.2到0.5伏特。在步骤912中,所选字线被降低到0伏特,且随着电子被转移出浮置栅极,存储器单元被擦除。步骤912类似于步骤806。在步骤914中,擦除沟道被升压(类似于步骤804);但是,字线将接收Vwell+Vpass+2ΔVpass未来的迭代将使用3ΔVpass,4ΔVpass等。在步骤916中,所选字线被降低到0伏特,且随着电子被转移出浮置栅极,所选存储器单元被擦除,类似于步骤806。分别重复升压和擦除直到步骤918和920。图17的处理示出在预充电位线(步骤902)和充电字线(步骤904)一次,擦除沟道的升压和擦除处理可以重复数次,而不必须再次预充电这些字线并充电那些字线。擦除沟道的升压和擦除处理的重复可以进行两次或多次。不存在需要的具体数量的重复。
图18是图形化地描述图17的步骤902-912的时序图。本领域技术人员知道如何使用图18的教导来推断和进行图17的其他步骤。如可以从图18中看出的,要被擦除的存储器单元的位线在t1初始地被Vdd预充电(902)。要被擦除的存储器单元的位线在t2耦合到Vwell+Vdd(904),且直到t8都维持在该电平。不要被擦除的存储器单元的位线在t2耦合到Vwell,且直到t8都维持在该电平。另外,在t2,SGD从0伏特升高到Vwell+2伏特(或Vdd),且直到t8都维持在该电平。未选字线在t2从0伏特升高到Vwell,然后在t3升高到Vwell+Vpass(906)。在步骤908之后,在t5,未选字线被降低到Vwell,作为恢复阶段的部分。当在步骤910中再次进行沟道的升压时,未选字线被升高到Vwell+Vpass+ΔVpass,如上所述。图17的处理的未来迭代将使得未选字线升高到Vwell+Vpass+nΔVpass。所选字线在t2升高到Vwell,然后在t4降低到擦除电压0伏特(908)。在t5时的恢复阶段期间,在擦除和下一升压之间,所选字线被再次升高到Vwell。在t7,所选字线将被降低到0伏特,以使能选择性擦除(912)。该处理将继续使得所选字线升高到Vwell,用于升压擦除沟道阶段,然后使得其降低到0伏特用于完成擦除操作。在t2,SGS从0伏特升高到Vwell,且直到t8都停留在该电平。公共源极线在t1升高到Vdd,然后在t2升高到Vwell,且直到t8都停留在该电平。在t2,p阱升高到Vwell,且直到t8都停留在该电平。由于在t2将p阱升高到Vwell,所有NAND串的沟道在t2也升高到Vwell(904)。本应该被擦除的NAND串的沟道将在t3被升压到Vwell+升压电压(906),在t5降低到Vwell,然后在t6升高到Vwell+附加的升压电平(910)。该沟道将继续在图17的处理期间在Vwell和Vwell+升压之间切换。
在一个实施例中,可以进行选择性擦除,作为包括粗糙阶段和精细阶段的两个(或更多)阶段性擦除处理的部分。在粗糙阶段期间,可以用在擦除擦之间不进行验证的两个或更多擦除操作进行图17的处理。在预定数量的擦除操作之后,将完成粗糙阶段。然后,通过进行图9的处理来开始精细阶段,其中,使用图14的处理来实现步骤656。粗糙阶段擦除得更快,但更不精确。精细阶段擦除得更慢但更精确。
在编程期间,用于实现紧密的阈值电压分布而不会不合理地减慢编程过程的一个解决方案是使用两个(或更多)遍编程处理。第一遍、粗糙编程阶段包括试图以较快的方式升高阈值电压而较少地关注实现紧密的阈值电压分布。第二遍、精细编程阶段包括试图以较慢的方式升高阈值电压以便达到目标阈值电压,同时还实现紧密的阈值电压分布。
图19是描述用于两遍编程处理的一个实施例的流程图。在步骤932中,进行第一遍。在一个实施例中,第一遍是粗糙编程阶段。所选存储器单元将被编程到一个或多个粗糙验证电平。一旦所有所选存储器单元都已经到达其各自的粗糙验证电平,则将完成粗糙编程阶段。在步骤934中,进行第二遍。在一个实施例中,第二遍是在完成了粗糙编程阶段之后进行的精细编程阶段。所选存储器单元将被编程到一个或多个精细验证电平。一旦所有所选存储器单元都已经到达其各自的精细验证电平,则将完成精细编程阶段。在一些实施例中,被施加到字线的编程脉冲对于粗糙阶段将在量值上相比于精细阶段更长或更高。在其他实施例中,对于粗糙阶段的位线电压将处于0伏特,且对于精细阶段的位线电压将处于在0伏特和Vdd之间的电平(例如,~1伏特)。还可以使用粗糙/精细编程方法的各种替换方式和实施例。在一些实施例中,可以存在多于一个粗糙阶段和或多于一个精细阶段。还可以使用其他类型的多遍编程处理、包括不同于粗糙/精细的处理且包括具有多于两遍的处理。
图20示出了与数据状态S0、S1、S2和S3相关的一组阈值电压分布。对于每个数据状态,描述了粗糙验证电平(Vvc),且描述了精细验证电平(Vvf)。例如,在存储器单元正被编程到数据状态S1的粗糙阶段期间,验证电平将是Vvcl,且在精细阶段期间,存储器单元将针对Vvf1来验证。被编程到数据状态S2的存储器单元在粗糙阶段期间针对Vvc2来验证,且在精细阶段期间,针对Vvf2来验证。正被编程到数据状态S3的存储器单元在粗糙阶段期间针对Vvc3来验证,且在精细阶段期间,针对Vvf3来验证。
图7中描述的操作的方法,如上所述,构想了其中编程存储器单元且在完成编程之后进行选择性的擦除处理的实施例。在另一实施例中,可以以混合的方式进行编程处理和选择性擦除处理。例如,可以在编程的粗糙阶段之后且在编程的精细阶段之前进行选择性擦除。在另一实施例中,可以在编程某些数据之后且在编程其他数据之前进行选择性擦除。
图21是描述用于混合编程处理和选择性擦除处理的一个实施例的流程图。在一个实施例中,两遍编程处理是粗糙/精细编程处理,其中,第一遍是粗糙阶段,且第二遍是精细阶段。还可以使用其他两遍编程处理。在图21的实施例中,在第一遍和第二遍之间进行选择性擦除处理,以便重新擦除已经到达其错误地偏移的阈值电压的存储器单元。在该实施例中,还在相邻字线根据两遍编程处理中的第一遍而被编程了之后,进行选择性擦除处理。操作的该顺序将减少来自相邻存储器单元的耦合的影响。
图21说明了从字线WLn上的存储器单元的视角看来的处理。在图21的步骤952中,连接到字线WLn的存储器单元根据两遍编程处理中的第一遍(例如,粗糙阶段)而被编程。在步骤954中,连接到字线WLn的存储器单元经历以上描述的选择性擦除处理,以便重新擦除那些本应该被擦除但具有被升高到擦除阈值分布以上的阈值电压的存储器单元。那些954包括进行图9的处理。但是,在对连接到相邻字线WLn+1的存储器单元编程两遍编程处理的第一遍之后,进行步骤954的处理。因此,如果步骤952包括编程在字线WL1上的存储器单元,则将在对字线WL2上的存储器单元实行粗糙阶段之后进行步骤954的选择性擦除。在步骤956中,在对字线WLn+1进行选择性擦除处理之后,将对连接到WLn的存储器单元进行两遍编程处理中的第二遍。在一个实施例中,对于在块中的所有字线进行图21的处理。在其他实施例中,可以仅对字线的子集进行该处理。
图22是示出对五个字线上的存储器单元编程两遍编程处理的第一遍、两遍编程处理的第二遍和选择性的擦除处理的顺序的表。初始地,对WL0进行第一编程遍。随后,对字线WL1进行第一编程遍,然后对字线WL0进行选择性擦除处理,然后对字线WL2进行第一编程遍,然后对字线WL1进行选择性擦除处理,然后对WL0进行第二编程遍,然后对WL3进行第一编程遍,然后对WL2进行选择性擦除处理,然后对WL1进行第二编程遍,然后对WL4进行第一编程遍,然后对WL3进行选择性擦除处理,然后对WL2进行第二编程遍,等等。图22中描述的操作的顺序可以被外推到多于五个字线。
图23示出了从根据图21和22的编程处理得到的一组阈值电压分布。描述了状态S0、S1、S2和S3(其表示在精细阶段之后的最终阈值电压分布)。在状态S1、S2和S3的每个背后的是虚线的阈值电压分布,其表示在粗糙阶段之后的对应的阈值电压分布。如可以看出的,最终分布(从精细阶段得到的)窄得多且稍微更高。
在另一实施例中,可以使用图21和22的两遍编程技术来将数据编程到八个数据状态S0-S7。在第一遍期间,将分别使用验证点Vint1、Vint2、和Vint3,来使得存储器单元编程到阈值电压分布960、962、和964。在编程处理的第二遍期间,存储器单元可以移动到两个可能的数据状态中的一个。处于数据状态S0的存储器单元可以维持在S0中,或可以使用验证点Vf1被编程到数据状态S1。在阈值电压分布960中的存储器单元可以分别使用验证点Vf2和Vf3被编程到数据状态S2或数据状态S3。在阈值电压分布962中的存储器单元可以分别使用验证点Vf4和Vf5被编程到数据状态S4或数据状态S5。在阈值电压分布964中的存储器单元可以分别使用验证点Vf6和Vf7被编程到数据状态S6或数据状态S7。在第一遍之后且在第二遍之前,进行选择性擦除处理,如以上针对图21和/或22所述。
当编程存储器单元时,无论它们使用单遍还是多遍编程处理,一些存储器单元都可能变得过度编程。例如,意图被编程到数据状态S2的存储器单元可能具有升高到大于状态S2的阈值电压分布的电平的阈值电压。图25示出了具有一些过度编程的存储器单元的一组阈值电压分布。如可以看出的,数据状态S1-S7具有在其阈值电压分布的右手侧的拖尾(tail)。这些拖尾表示过度编程的存储器单元。还在图25的图上描述的是过度编程的验证点(Vop1,Vop2,Vop3,Vop4,Vop5,Vop6,和Vop7)。在具有大于相关过度编程验证点的阈值电压的具体阈值电压分布中的那些存储器单元被认为是过度编程的。
在一些器件中,较低数据状态(例如,S1,S2和S3)经历比较高状态更过度的编程。在一些器件中,较高状态不经历过度编程。
在一个实施例中,可以使用针对图10-18上述的选择性擦除处理来校正过度编程的存储器单元。图26A和26B提供用于使用上述选择性擦除方法来校正过度编程的存储器单元的两个示例处理。
在图26A的步骤1002中,存储元件被预编程(类似于图7的步骤550)。在步骤1004中,存储器单元的块(或其他单位)被擦除(类似于图7的步骤552)。在步骤1006中,存储器单元可以被可选地软编程(类似于图7的步骤554)。在步骤1008中,使用本领域已知的各种适当的编程处理的任一来编程存储器单元。在步骤1010中,校正过度编程的存储器单元。因此,26A的处理将在完成步骤1008的编程之后校正过度编程的存储器单元。
图26B的处理将混合对存储器单元的编程和在编程处理期间对过度编程的存储器单元的校正。在步骤1002中,存储器单元的块被预编程。在步骤1004中,存储器单元的该块(或其他单位)被擦除。在步骤1006中,存储器单元被可选地软编程。在步骤1020中,存储器单元被编程,且使用选择性擦除处理来校正被过度编程的那些存储器单元,以便以混合的方式进行编程和选择性擦除。以下提供更多细节。
图27是描述用于校正过度编程的存储器单元的一个实施例的流程图。在一个实施例中,一次对于一个数据状态进行图27的方法。例如,可以对S1进行图27的方法。然后,可以对S2进行图27的方法,等等。在步骤1100中,该系统将识别本应该被编程到所考虑的数据状态的存储器单元。如上所述,可以通过从控制器获得信息,从缓冲器(RAM或非易失性存储器)获得信息或从数据所采取494获得信息来找到该信息。在步骤1102中,使用与所考虑的数据状态相关的适当的过度编程的验证点(例如,Vop1,Vop2,Vop3,Vop4,Vop5,Vop6,或Vop7)。来进行验证处理。例如,如果正对于数据状态S1进行图12的处理,则将使用VOP1进行步骤1102的验证处理。VOP1的电压将被施加到存储器单元的控制栅极(经由字线)以确定它们是否对于数据状态1被过度编程了。如果所有存储器单元都不被过度编程且所有都正确地验证(步骤1104),则完成图27的处理。或者,如果足够的存储器单元适当的验证了,则该处理可以被认为完成了。如果所有存储器单元未适当地验证(步骤1104),则进行选择性擦除操作,以便在步骤1102处不验证的那些存储器单元选择性地经历一个或多个擦除操作以减小其阈值电压,以便该阈值电压将低于适当的过度编程的验证电平。可以使用图10-18的处理来实现步骤1106。在步骤1108中,对于步骤1102-1108的下一迭代,递增升压电压(Vpass),且该处理循环回到步骤1102,且进行验证处理。循环1102-1108将重复,直到所有或预定数量的存储器单元已经成功地验证了。随着存储器单元在步骤1102中验证,它们被锁止以不进一步擦除。
在一个实施方式中,在图26A的步骤1010期间进行图27的处理。在一个实施例中,要对每个编程状态单独进行图27的处理,以便如果存在七个编程状态(S1-S7),则将在图26A的步骤1010期间进行图27的处理七次,且如果存在三个编程状态(S1-S3),则将在图26A的步骤1010期间进行图27的处理三次。在另一实施例中,可以对所有数据状态同时进行图27的处理,以便步骤1100将识别每个存储器单元应该处于什么数据状态,且步骤1102包括对每个数据状态进行验证操作,且本地处理器482将保持跟踪要存储哪个验证操作的结果。以此方式,可以进行图27的处理仅一次。
图28提供图26B的步骤1020的实施方式的一个例子。在步骤1120中,存储器单元的单位被编程。该包括可以包括每个存储器单元编程一位数据、每个存储器单元编程两位数据、每个存储器单元编程三位数据等等。在一个实施例中,该存储器单元的单位可以是连接到公共字线的所有存储器单元、一页中的所有存储器单元、一个扇区中的所有存储器单元或其他单位。在步骤1122中,该系统将校正在步骤1120的最近迭代中编程的该存储器单元的单位的过度编程的存储器单元。步骤1122可以使用图27的处理来实现。例如,步骤1122可以包括对每个数据状态进行图27的处理一次。或者,步骤1122可以包括对所有数据状态同时进行图27的处理一次,如上所述。在步骤1124中,确定是否存在要编程的任何更多的单位。如果否,则处理完成。如果存在要编程的更多单位,则图28的方法循环回到步骤1120,且编程下一存储器单元的单位,且然后将在步骤1122中对该存储器单元的单位校正过度编程的存储器单元。步骤1120和1122的迭代将对于需要被编程的存储器单元的所有单位重复。
在一些实施例中,过度编程对于较低状态来说是更大的问题;因此,该系统将仅对较低状态校正过度编程。
在一些实施例中,可以使用选择性擦除处理来校正过度编程而不在选择性擦除的每个迭代之间进行擦除-验证。例如,可以进行图27的步骤1106多次,而不进行步骤1102。一个这种实施方式使用图17和18的处理。
已经为了例示和描述的目的来呈现了本发明的前述详细描述。不意图穷举或限制本发明到所公开的精确的形式。在上述教导下,许多修改和变化是可能的。选择所描述的实施例以便最佳地说明本发明的原理和其实际的应用,以从而使得本领域技术人员能够在各种实施例中且具有适合于所构思的具体用途的各种修改地最佳地使用本发明。意图本发明的范围被附于此的权利要求所定义。