CN102985976B - 包括减小其他存储单元的影响的对非易失性存储器的编程 - Google Patents
包括减小其他存储单元的影响的对非易失性存储器的编程 Download PDFInfo
- Publication number
- CN102985976B CN102985976B CN201180027182.6A CN201180027182A CN102985976B CN 102985976 B CN102985976 B CN 102985976B CN 201180027182 A CN201180027182 A CN 201180027182A CN 102985976 B CN102985976 B CN 102985976B
- Authority
- CN
- China
- Prior art keywords
- group
- volatile memory
- storage unit
- memory cells
- programming
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3418—Disturbance prevention or evaluation; Refreshing of disturbed memory data
- G11C16/3427—Circuits or methods to prevent or reduce disturbance of the state of a memory cell when neighbouring cells are read or written
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5642—Sensing or reading circuits; Data output circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5621—Multilevel programming verification
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5622—Concurrent multilevel programming of more than one cell
Landscapes
- Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
一种对非易失性存储器进行编程的系统,该系统减小来自相邻存储单元的升压的干扰的影响。存储单元被分成两个或更多个组。在一个示例中,存储单元被分成奇数存储单元和偶数存储单元;但是,也可以使用其他分组方式。在第一触发之前,利用随着时间增大的编程信号对第一组非易失性存储单元和第二组非易失性存储单元一起进行编程。在第一触发之后、第二触发前,使用响应于第一触发而幅度减小了的编程信号独立于第二组存储单元来对第一组存储单元进行编程。在第二触发之后,通过响应于第二触发而升高的编程信号对第一组存储单元和第二组存储单元一起进行编程。在两个触发之前和之后,对第一组存储单元和第二组存储单元一起进行验证。
Description
技术领域
本发明涉及用于非易失性存储器的技术。
背景技术
半导体存储器对于各种电子设备中的使用变得越来越受欢迎。例如,非易失性半导体存储器用于移动电话、数码相机、个人数字助理、移动计算设备、非移动计算设备以及其他设备中。最受欢迎的非易失性半导体存储器包括电可擦可编程只读存储器(EEPROM)和闪存。
EEPROM和闪存两者都利用被布置在半导体基底中的沟道区上方并且与沟道区绝缘的浮置栅极。浮置栅极被布置在源区与漏区之间。在浮置栅极上设置有与浮置栅极绝缘的控制栅极。晶体管的阈值电压由浮置栅极上所保留的电荷的量来控制。即,在导通晶体管以使得晶体管的源极与漏极之间导通前所必须施加给控制栅极的最小电压量由浮置栅极上的电荷电平来控制。因此,可以通过改变浮置栅极上的电荷电平来改变阈值电压,以对存储单元(可以包括一个或更多个晶体管)进行编程和/或擦除。
每个存储单元都能够存储数据(模拟的或数字的)。当存储1比特的数字数据时(称为二进制存储单元),存储单元的可能的阈值电压被分成分别赋予逻辑数据“1”和“0”的两个范围。在NAND型闪存的一个示例中,阈值电压在存储单元被擦除后为负并且被定义为逻辑“1”;编程后,阈值电压为正并且被定义为逻辑“0”。当阈值电压为负并且通过对控制栅极施加0伏特以试图进行读取时,存储单元将会导通以指示正在存储逻辑1。当阈值电压为正并且通过对控制栅极施加0伏特以试图进行读取操作时,存储单元将不导通以表示存储逻辑0。
存储单元也可以存储多级信息(称为多态存储单元)。在存储多级数据的情况下,可能的阈值电压的范围被分成的份数与数据等级的数量相等。例如,如果存储四级信息,则会有分别赋以数据值“11”、“10”、“01”和“00”的4个阈值电压范围。在NAND型存储器的一个示例中,阈值电压在擦除操作后为负并且被定义为“11”;正的阈值电压用于状态“10”、“01”和“00”。如果在每个存储单元中存储八级信息(或状态)(例如,3比特的数据),则会有赋以数据值“000”、“001”、“010”、“011”、“100”、“101”、“110”和“111”的八个阈值电压范围。被编程到存储单元中的数据与存储单元的阈值电压电平之间的具体关系取决于存储单元所采用的数据编码方案。例如,美国专利No.6,222,762和美国专利申请公开No.2004/0255090(两者的全部内容通过引用而合并到本文中)描述了用于多态闪存单元的各种数据编码方案。在一种实施方式中,通过格雷码分配将数据值赋予阈值电压范围以使得:如果浮置栅极的阈值电压错误地偏移到相邻的物理状态,则仅会影响到1个比特。在某些实施方式中,数据编码方案可以针对不同的字线来改变,数据编码方案可以随时间改变,或者用于随机字线的数据比特可以被反转以减小数据模式敏感性以及对存储单元的均匀磨损。可以使用不同的编码方案。
当对EEPROM或闪存设备如NAND闪存设备进行编程时,通常给控制电极施加编程电压并且将位线接地。将来自沟道的电子注入浮置栅极。当电子在浮置栅极上积聚时,浮置栅极变得带负电并且存储单元的阈值电压升高使得存储单元处于编程状态。有关编程的更多信息可以在题为“SourceSideSelfBoostingTechniqueForNon-volatileMemory”的美国专利6,859,397和题为“DetectingOverProgrammedMemory”的美国专利申请公开2005/0024939中找到,两者的全部内容通过引用而合并到本文中。在许多设备中,在编程操作期间施加到控制栅极的编程电压是通过一系列脉冲来施加的,其中,对于每个相继的脉冲,脉冲的幅度以预定的步长增大。
许多非易失性存储系统包括按列和行排列的存储单元阵列。控制线(例如字线、位线或其他类型的控制线)与各行各列相连。在一个示例中,字线用于访问存储单元的行,而位线用于访问存储单元的列。在该布置中,将编程电压的一系列脉冲施加到与一组所选择的存储单元相连的所选择的字线上。所选择的接收脉冲的存储单元中的每个有可能响应于所接收的脉冲而升高其阈值电压。当存储单元达到它们的目标阈值电压时,它们被锁定而不能进一步编程。已经观察到,当存储单元被锁定后,它们干扰相邻存储单元的预期编程速度。这种效应可以使得相邻存储单元超过其预期的目标阈值电压,从而,变得过编程。在一些情况下,过编程的存储单元在读取时会导致错误。
附图说明
图1是NAND串的俯视图;
图2是NAND串的等效电路图;
图3是非易失性存储器系统的框图;
图4是描述存储阵列的一种实施方式的框图;
图5是描述读出块的一种实施方式的框图;
图6描绘了阈值电压分布的示例集合并且描述了用于对非易失性存储器编程的过程;
图7A-I示出了各种阈值电压分布并且描述了用于对易失性存储器编程的过程;
图8是描绘对非易失性存储器编程的顺序的一个示例的表格;
图9描绘了用于描述非易失性存储器编程过程的一种实施方式的流程图;
图10描绘了用于描述非易失性存储单元编程过程的一种实施方式的流程图;
图11A-C描绘了两个示例相邻存储单元的部分;
图12描绘了一组编程脉冲;
图13描绘了一组编程脉冲;
图14描绘了一组编程脉冲和验证脉冲;
图15描绘了一组编程脉冲和验证脉冲;
图16描绘了示例波形;
图17是描述用于确定条件是否存在的过程的一种实施方式的流程图;
图18是确定条件是否存在的电路的一种实施方式的框图;
图19是描述用于确定条件是否存在的过程的一种实施方式的流程图;
图20是确定条件是否存在的电路的一种实施方式的框图;
图21是描述用于确定改变编程处理的触发点的过程的一种实施方式的流程图;
图22是描述用于确定改变编程处理的触发点的过程的一种实施方式的流程图;
图23是描述用于确定改变编程处理的触发点的过程的一种实施方式的流程图;
图24是描述用于动态地调节触发电压的过程的一种实施方式的流程图;
图25是示出实施图24中的过程的部件中的一些部件的框图;
图26是描述用于动态地调节触发电压的过程的一种实施方式的流程图;
图27是示出实施图26中的过程的部件中的一些部件的框图。
具体实施方式
本文描述了减小编程期间相邻存储单元之间干扰的影响的技术。
在一组实施方式中,存储单元被分成两个或更多个组。在一个示例中,存储单元被分成奇数存储单元和偶数存储单元;但是,也可以使用其他分组方式。在第一触发之前,使用随时间增大的编程信号对第一组存储单元连同第二组存储单元进行编程。在第一触发之后与第二触发之前,使用已经响应第一触发而使幅度降低的编程信号来独立于第二组存储单元对第一组存储单元进行编程。在第二触发之后,使用已经响应第二触发而使幅度升高的编程信号对第一组存储单元连同第二组存储单元进行编程。在两个触发之前和之后,对第一组存储单元连同第二组存储单元进行验证。一些实施方式可以使用第一触发而不使用第二触发。
本文所描述的技术可以与各种类型的非易失性存储系统一起使用。一个示例是使用NAND结构的闪存系统,该系统包括夹在两个选择栅极之间的多个串联的晶体管。串联的晶体管和选择栅极被称为NAND串。图1是示出一个NAND串的俯视图。图2是其等效电路。图1和图2中所描绘的NAND串包括夹在第一(或漏侧)选择栅极120与第二(或源侧)选择栅极122之间的4个串联的晶体管100、102、104和106。选择栅极120通过位线触头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串中示出了4个存储单元,但是4个存储单元的使用仅作为示例。NAND串可以包含少于4个存储单元或多于4个存储单元。例如,一些NAND串可以包括8个存储单元、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以外还适用于其他类型的闪存以及其他类型的非易失性存储器。
除了NAND闪存外还可以使用其他类型的非易失性存储设备。例如,还可以由使用用于存储电荷的介电层的存储单元来制造非易失性存储设备。使用介电层替代前面所描述的导电的浮置栅极元件。这些使用介电存储元件存储设备已经由Eitan等人在"NROM:ANovelLocalizedTrapping,2-BitNonvolatileMemoryCell,"IEEEElectronDeviceLetters,vol.21,no.11,November2000,pp.543-545中做了描述。ONO介电层跨越源扩散与漏扩散之间的沟道延伸。用于一个数据位的电荷被定位在介电层中邻近漏极处,另一个数据位的电荷被定位介电层中邻近源极处。例如,美国专利No.5,768,192和No.6,011,725公开了具有夹在两个二氧化硅层之间的捕获电介质的非易失性存储单元。通过单独地读取电介质中由空间上分离开的电荷存储区域内的二进制状态来实施多态数据存储。也可以使用其他类型的非易失性存储器。
图3示出了具有用于并行读取和编程一页(或其他单位)存储单元(例如,NAND多态闪存或其他类型)的读/写电路的存储设备210。存储设备210可以包括一个或更多个存储晶片或芯片212。存储晶片212包括存储单元阵列200(二维或三维)、控制电路220和读/写电路230A和230B。在一种实施方式中,各种外围电路对存储阵列200的访问是在阵列的相对的两侧上以对称的方式来实施的,以使得每侧的访问线和电路的密度减半。读/写电路230A和230B包括使得能够对一页存储单元并行地进行读取或编程的多个读出块300。存储阵列200可以经由行解码器240A和240B通过字线以及经由列解码器242A和242B通过位线来进行寻址。字线和位线是控制线的示例。在一种典型的实施方式中,在与一个或更多个存储晶片212相同的存储设备210(如,可移除的存储卡或封装件)中包括有控制器244;但是,控制器也可以是单独的。指令与数据通过线232在主机与控制器244之间传递以及通过线234在控制器与一个或更多个存储晶片212之间传递。
控制电路220与读/写电路230A和230B协作以进行对存储阵列200的存储操作。控制电路220包括状态机222、片上地址解码器224和功率控制模块226。状态机222提供对存储器操作的芯片级控制。片上地址解码器224提供主机或存储控制器所用的硬件地址与解码器240A、240B、242A和242B所用的硬件地址之间的地址接口。功率控制模块226控制在存储器操作期间提供给字线和位线的功率和电压。在一种实施方式中,功率控制模块包括能够产生大于供电电压的电压的一个或更多个电荷泵。
在一种实施方式中,控制电路220、功率控制电路226、解码器电路224、状态机电路222、解码器电路242A、解码器电路242B解码器电路240A、解码器电路240B、读/写电路230A、读/写电路230B和/或控制器244之一或任意组合可以称为一个或更多个管理电路。上述一个或更多个管理电路进行本文所描述的处理。
图4描绘了存储单元阵列200的示例性结构。在一种实施方式中,存储单元阵列被分成大量的存储单元块(例如块0到1023,或其他数量)。如对于快闪EEPROM系统常见的,块是擦除的单位。即,每个块包含被同时擦除的最小数量的存储单元。也可以使用其他的擦除单位。
块含有一组通过位线(例如,位线BL0-BL69623)和字线(WL0、WL1、WL2、WL3)访问的NAND串。图4示出了4个存储单元串联连接以形成NAND串。虽然示出了每个NAND串中包含4个单元,但是可以使用多于或少于4个单元(例如,在NAND串中可以有16、32、64、128或其他数量个存储单元)。NAND串的一端经由漏极选择栅(连接到选择栅漏线SGD)连接至对应的位线,另一端经由源极选择栅(连接到选择栅源线SGS)连接至与源线。
每个块通常被分成许多页。在一种实施方式中,页是编程单位。也可以使用其他的编程单位。通常在存储单元中的一列中存储一页或更多页数据。例如,可以在连接至共用字线的存储单元中存储一页或更多页数据。页可以存储一个或更多个扇区。扇区包括用户数据和开销数据(也称作系统数据)。开销数据通常包括标题信息和已经根据扇区的用户数据计算的误差校正码(ECC)。控制器(或其他部件)在当数据被编程到阵列中时计算ECC,并且在从阵列读取数据时也对ECC进行检查。可替代地,将ECC和/或其他开销数据存储在与其所属的用户数据不同的页或甚至不同的块中。用户数据扇区通常是512字节,与磁盘驱动器中扇区的大小对应。大量的页组成块,从8页到例如上至32、64、128或更多页中的任何数量。可以使用不同大小的块、页和扇区。
图5是单个读出块300的框图,读出块300被划分为核心部分和共用部分490,核心部分被称作读出模块480。在一种实施方式中,每个位线将对应一个单独的读出模块480,一组多个读出模块480将对应一个共用部分490。在一个示例中,读出块将包括一个共用部分490和八个读出模块480。组中的读出模块中的每个可以通过数据总线472与相关联的共用部分进行通信。可以在美国专利申请公开No.2006/0140007中找到一个示例,其全部内容通过引用合并到本文中。
读出模块480包括读出电路470,读出电路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可能在这些电压之一处跳闸(trip)并且通过总线472将输出从读出模块480提供到处理器492。在那时,处理器492通过考虑读出模块的跳闸事件和关于经由输入线493施加的来自状态机的控制栅极电压的信息来确定所产生的存储状态。处理器492然后计算用于存储状态的二进制编码并且将所产生的数据位存储到数据锁存器494中。在核心部分的另一种实施方式中,位线锁存器482承担双重任务,作为用于锁存读出模块480的输出的锁存器和作为上述位线锁存器两者。
可以预期,一些实施将包括多个处理器492。在一种实施方式中,每个处理器492将包括输出线(未在图5中描绘)以使输出线中的每个都线或(wired-OR)在一起。在一些实施方式中,输出线在连接到线或线之前被反转。因为接收线或线的状态机能够确定所有编程的位何时达到了期望的电平,所以这种配置能够在编程验证处理期间快速地确定编程处理何时完成。例如,当每一位都达到其期望的电平时,用于该位的逻辑0将被发送到线或线(或数据1被反转)。当所有位都输出数据0(或数据1被反转)时,则状态机知道终止编程过程。在每个处理器与8个读出模块进行通信的实施方式中,状态机可能(在一些实施方式中)需要读取线或线8次,或者将逻辑加到处理器492以累积相关联的位线的结果以使状态机只需读取线或线一次。
数据锁存器堆栈494包含与读出模块对应的数据锁存器的堆栈。在一种实施方式中,每个读出模块480有三个(或四个或其他数量)数据锁存器。在一种实施方式中,每个锁存器只有一位。
在编程或验证期间,将待编程的数据从数据总线420存储到一组数据锁存器494中。在验证处理期间,处理器492相对于期望的存储状态监视验证存储状态。当两者一致时,处理器492设置位线锁存器482以将位线拉到指定编程禁止的状态。这阻止与位线耦接的存储单元进一步编程,即使存储单元的控制栅极上受到编程脉冲。在其他实施方式中,处理器初始地加载位线锁存器482,而且在验证过程中读出电路将它设置为禁止值。
在一些实施中(但不是需要的),将数据锁存器实施为移位寄存器,使得存储在其中的并行数据转化成用于数据总线420的串行数据,或使得用于数据总线的串行数据转化成适于存储在数据锁存器中的并行数据。在一种优选的实施方式中,可以将与m个存储单元的读/写块相对应的所有数据锁存器连接在一起以形成块移位寄存器,以使得能够通过串行传送来输入或输出数据块。具体地,调节读/写模块的库使得其数据锁存器中的每个依次将数据从数据总线移入或移出,如同它们是用于整个读/写块的移位寄存器的一部分一样。
关于读出操作和读出放大器的另外的信息可以在以下文献中找到:(1)于2004年3月25日公开的题为"Non-VolatileMemoryAndMethodWithReducedSourceLineBiasErrors"的美国专利申请公开No.2004/0057287;(2)于2004年1月10日公开的题为"Non-VolatileMemoryAndMethodwithImprovedSensing"的美国专利申请公开No.2004/0109357;(3)美国专利申请公开No.2005/0169082;(4)于2005年4月5日提交的发明人为JianChen、题为"CompensatingforCouplingDuringReadOperationsofNon-VolatileMemory"的美国专利公开2006/0221692;以及(5)于2005年12月28日提交的发明人为SiuLungChan和Raul-AdrianCernea、题为"ReferenceSenseAmplifierForNon-VolatileMemory"的美国专利公开2006/0158947。上面直接列出的所有五个专利文件的全部内容通过引用而合并到本文中。
在成功的编程处理(带有验证)结束时,存储单元的阈值电压应该视情况在用于已编程存储单元的一个或更多个阈值电压分布内或者在用于已擦除存储单元的阈值电压分布内。图6图解当每个存储单元存储3位数据时用于存储单元阵列的阈值电压分布(或数据状态)。但是,其他实施方式可以每存储单元使用多于或少于3位的数据(例如,如每个存储单元4位或更多位数据)。
在图6的示例中,每个存储单元存储3位数据,因此,有8个有效数据状态S0-S7。在一种实施方式中,数据状态S0在0伏特以下,而数据状态S1-S7在0伏特以上。在其他实施方式中,所有8个数据状态都在0伏特以上,或者可以实施其他的布置。在一种实施方式中,阈值电压分布S0比分布S1-S7宽。
每个数据状态与对于存储在存储单元中的3位的唯一值相对应。在一种实施方式中,S0=111,S1=110,S2=101,S3=100,S4=011,S5=010,S6=001而S7=000。还可以使用数据到状态S0-S7的其他映射。在一种实施方式中,存储在存储单元的所有位数据都存储在同一逻辑页中。在其他实施方式中,存储在存储单元的每一位数据都对应不同的页。因此,存储3位数据的存储单元可以包含位于第一页、第二页和第三页中的数据。在一些实施方式中,连接到同一字线的所有存储单元将在相同的三个数据页中存储数据。在一些实施方式中,可以将连接到字线的存储单元分成不同组的页(例如,通过奇数位线和偶数位线,或通过其他的布置)。
在一些现有技术的设备中,存储单元可以被擦除到状态S0。从状态S0,存储单元可以编程为S1-S7中的任一状态。在一种被称为全顺序编程的实施方式中,存储单元可以从已擦除状态S0直接编程为已编程状态S1-S7中的任一种状态。例如,首先可以擦除待编程的一群存储单元以使得该群中的所有存储单元都处于擦除状态S0。在一些存储单元从状态S0被编程为状态S1的同时,其他的存储单元被编程为从状态S0到状态S2、从状态S0到状态S3、从状态S0到状态S4、从状态S0到状态S5、从状态S0到状态S6和从状态S0到状态S7。图6中的七个弯箭头图示了全顺序编程。
图7A-7I公开了用于对非易性存储器进行编程的另一种处理,该处理通过针对任何具体的存储单元对先前页的邻近存储单元进行写操作后对关于具体页的邻近存储单元进行写操作,来减小浮置栅极到浮置栅极的耦合的影响。图7A-7I中的处理是一种三步编程处理。在第一步前,将擦除存储单元以使它们位于状态S0的擦除阈值分布中。
图7A-7I的方法假设:每个存储单元存储三位数据,每一位都在不同的页中。第一位数据(最左边的位)与第一页相关联。中间的位与第二页相关联。最右边的位与第三页相关联。数据状态到数据的相关性如下:S0=111,S1=110,S2=10l,S3=100,S4=011,S5=010,,S6=001以及S7=000。但是,其他的实施方式可以使用其他数据编码方案。(例如,格雷码,以使得相邻的状态之间只有一位改变)。
当对第一页(如图7A所述)进行编程时,如果该位要为数据“1”,则存储单元会保持在状态S0(阈值电压分布502)。如果该位要为数据“0”,则将存储单元编程为状态S4(阈值电压分布504)。在将邻近的存储单元编程后,邻近的浮置栅极之间的电容耦合可能导致状态S4变宽,如图7B所描绘的。状态S0可能也变宽,但是在S0与S1之间有足够的余量以忽略这种影响。关于邻近的浮置栅极之间电容耦合的更多信息可以在美国专利5,867,429和6,657,891中找到,两者的全部内容通过引用合并到本文中。
当对第二页(参见图7C)进行编程时,如果存储单元处于状态S0并且第二页位是数据“1”,则存储单元保持在状态S0。在一些实施方式中,用于第二页的编程处理会将阈值电压分布501收紧到新的S0。如果存储单元原本处于状态S0而待写入第二页的数据是“0”,则将存储单元移到状态S2(阈值电压分布506)。状态S2具有验证点(最低电压)C*。如果存储单元原本处于状态S4而待写入存储单元的数据是“1”,则存储单元保持在状态S4。但是,如图7C所描绘的,通过针对状态S4将存储单元从阈值电压分布504移动到阈值电压分布508来收紧状态S4。阈值电压分布508具有验证点E*(与阈值电压分布504的E**比较)。如果存储单元处于状态S4而待写入第二页的数据是“0”,则存储单元将阈值电压移动到带有验证点G*的状态S6(阈值电压分布510)。
在将邻近的存储单元编程后,状态S2、S4和S6由于浮置栅极到的浮置栅极耦合而加宽,如由图7D中的阈值电压分布506、508和510描述的。在某些情况下,状态S0也会变宽。
图7E、7F、7G和7H描绘了第三页的编程。虽然用一幅图就能说明编程,但是出于清晰的原因用四幅图来描述该处理。在将第二页编程后,存储单元处于状态S0、S2、S4或S6中的任意一种状态。图7E示出了针对第三页进行编程的处于状态S0的存储单元。图7F示出了针对第三页进行编程的处于状态S2的存储单元。图7G示出了针对第三页进行编程的处于状态S4的存储单元。图7H示出了针对第三页进行编程的处于状态S6的存储单元。图7I示出了在对该存储单元(同时地或串行地)执行了图7E、7F、7G和7H的处理后的阈值电压分布。
如果存储单元处于状态S0而第三页数据是“1”,则存储单元保持在状态S0。如果用于第三页的数据是“0”,则用于存储单元的阈值电压会升高而处于带有验证点B的状态S1(参见图7E)。
如果存储单元处于状态S2而待写入第三页的数据是“1”,则存储单元会保持在状态S2(参见图7F)。但是,将执行一些编程以将阈值电压分布506收紧到带有C伏特的验证点的新状态S2。如果待写入第三页的数据是“0”,则将存储单元编程到带有D伏特验证点的状态S3。
如果存储单元处于状态S4而待写入第三页的数据是“1”,则存储单元会保持在状态S4(参见图7G)。但是,将执行一些编程以将阈值电压分布508收紧到带有验证点E的新状态S4。如果存储单元处于状态S4而要写入第三页的数据是“0”,则存储单元的阈值电压会升高而处于带有验证点F的状态S5。
如果存储单元处于状态S6而待写入第三页的数据是“1”,则存储单元会保持在状态S6(参加图7H)。但是,会进行一些编程以将收紧阈值电压分布510而处于带有验证点G的新状态S6。如果第三页数据是“0”,则存储单元会将阈值电压编程到带有验证点H的状态S7。当第三页的编程结束时,存储单元会处于图7I所描述的八种状态之一。
图8描绘了对一组存储单元的页编程的顺序的一个示例。该表提供了关于图4的4个字线(WL0、WL1、WL2和WL3)进行编程的顺序;但是,可以修改该表以适应多于或少于4个字线。先对连接到WL0的存储单元的第一页进行编程,接下来对连接到WL1的存储单元的第一页进行编程,接下来对连接到WL0的存储单元的第二页进行编程,接下来对连接到WL2的存储单元的第一页进行编程,接下来对连接到WL1的存储单元的第二页进行编程,等等。
图9是描述用于对连接到所选择的字线的存储单元进行编程的编程处理的流程图。在一种实施方式中,图9的处理用来对存储单元的块进行编程。在图9的处理的一种实施中,预编程存储单元以维持对存储单元的均匀磨损(步骤550)。在一种实施方式中,存储单元被预编程到状态S7,随机模式或任何其他模式。在一些实现中,不需要进行预编程。
在步骤552中,在编程前(以块或其他单位)对存储单元进行擦除。在一种实施方式中,通过将P阱升高到擦除电压(例如,20伏特)足够的时间段并且将所选择的块的字线接地而源线和位线浮置来对存储单元进行擦除。由于电容耦合,未选的字线、位线、选择线和共用源线也被升高到擦除电压的显著部分。因此给所选择的存储单元的隧道氧化层施加强电场,并且由于浮置栅极上的电子通常以Fowler-Nordheim隧穿机制而发射到基底侧,所以对所选择的存储单元进行了擦除。因为电子从浮置栅极传递到p阱区域,所以降低了所选择的单元的阈值电压。可以对整个存储阵列、单个块或其它单位的单元进行擦除。在一种实施方式中,在擦除存储单元后,所有已擦除的存储单元都将处于状态S0(参见图6)。
在步骤554,进行软编程以缩窄用于擦除的存储单元的擦除阈值电压的分布。作为擦除过程的结果,一些存储单元可能处于比所需的已擦除状态更深的已擦除状态。软编程可以施加编程脉冲将以将较深的已擦除存储单元的阈值电压移动得较接近于擦除验证电平。例如,参见图6,步骤554可以包括收紧与状态S0相关联的阈值电压分布。在步骤556中,如本文所描述的,对该块的存储单元进行编程。图9的处理可以在状态机的指示下使用上述的各种电路来进行。在其他实施方式中,图9的处理可以在控制器的指示下使用上述的各种电路来进行。进行图9中的过程后,可以读取块中的存储单元。
图10是描述对连接到共用字线的存储单元进行编程的过程的一种实施方式的流程图。图10的处理可以在图9的步骤556期间进行一次或更多次。例如,图10的处理可以用来进行图6中的全顺序编程,在这种情况下,图10的处理会针对每个字线进行一次。在一种实施方式中,编程处理按照从离源线最近的字线到位线的顺序进行。图10的处理也可以用于关于图7A-7I的编程处理来对字线的一页数据进行编程,在这种情况下,图10的处理会针对每个字线进行三次。也可以使用其他布置,图10的处理在状态机222的指示下进行。
通常,在编程操作中将编程信号(也称作编程电压)作为一系列编程脉冲施加到控制栅极。在编程脉冲之间有一组使得能够进行验证的验证脉冲。在很多实施中,编程脉冲的幅度随着每个连续的脉冲而增大预定的步长。在图10的步骤608中,将编程电压(Vpgm)初始化为开始大小(例如,大约12-16V或其他合适的电平),并且将状态机222所维护的编程计数器PC初始化在1。在步骤610中,给所选择的字线(所选择的用于编程的字线)施加编程信号Vpgm的编程脉冲。未选择的字线接收一个或更多个升压(boosting)电压(例如大约9V)以进行本领域已知的升压方案。如果应该对存储单元进行编程,则将对应的位线接地。另一方面,如果存储单元应该保持在当前的阈值电压,则将对应的位线连接到VDD以禁止编程。有关升压方案的更多信息可以在美国专利6,859,397和美国专利申请公开2008/0123425中找到,两者的全部内容通过引用合并到本文中。
在步骤610中,给连接至所选择的字线的所有存储单元同时施加编程脉冲,使得对连接到所选择的字线的所有存储单元一起进行编程。即,同时(或者在重叠的时间期间)对它们进行编程。以这种方式,连接到所选择的字线的所有存储单元将同时改变其阈值电压,除非它们已经被锁定而不能进行编程。
在步骤612中,使用适当的一组目标电平来对所选择的存储单元的状态进行验证。图10的步骤612包括进行一个或更多个验证操作。一般地,在验证操作和读取操作期间,将所选择的字线连接到电平被针对每个读取和验证操作而指定的电压(例如,参见图7I的B、C、D、E、F、G和H)以确定所关心的存储单元的阈值电压是否达到这样的电平。在施加字线电压后,测量存储单元的传导电流以确定存储单元是否响应于施加到字线的电压而导通。如果测量到传导电流大于特定的值,则认为存储单元导通并且施加到字线的电压大于存储单元的阈值电压。如果没有测量到传导电流大于特定的值,则认为存储单元没有导通并且施加到字线上的电压不大于存储单元的阈值电压。
有很多种在读取或验证操作期间对存储单元的传导电流进行测量的方法。在一个示例中,存储单元的传导电流是通过其对读出放大器中的专用电容器进行放电或充电的速度来测量的。在另一个示例中,所选择的存储单元的传导电流允许(或不能允许)包括在存储单元中的NAND串对相应位线进行放电。一段时间后测量位线上的电压以查看它是否已被放电。注意,本文所描述的技术可以与验证/读取领域中已知的不同方法一起使用。关于验证/读取的更多信息可以在以下专利文献(其完整内容通过引用合并于本文中)中找到:(1)于2004年3月25日公开的题为"Non-VolatileMemoryAndMethodWithReducedSourceLineBiasErrors"的美国专利申请公开No.2004/0057287;(2)于2004年6月10日公开的题为"Non-VolatileMemoryAndMethodwithImprovedSensing"的美国专利申请公开No.2004/0109357;(3)美国专利申请公开No.2005/0169082;以及(4)题为"CompensatingforCouplingDuringReadOperationsofNon-VolatileMemory"的美国专利公开No.2006/0221692。
如果检测到所选择的存储单元的阈值电压已达到适当的目标电平,则通过例如在后续编程脉冲期间将其位线电压升高到Vdd来锁定存储单元使其不能进行进一步的编程。在编程操作(例如,步骤610)期间,给未选择的字线施加通过电压(passvoltage)(例如,大约10伏特)。未选择的字线(在通过电压下)耦接到未选择的位线(在Vdd),导致在未选择的位线的沟道里存在阻碍编程的电压(例如大约8伏特)。用于锁定存储单元以防止编程(和升压)的其他方案也可与以本文描述的技术一起使用。
再参考图10,在步骤614(“验证状态”)中检查是否所有的存储单元都达到它们的目标阈值电压。假如是这样的话,因为所有所选择的存储单元都被编程和验证到其目标状态,所以编程过程完成且成功。在步骤616中报告“通过”状态。注意,在一些实施中,在步骤614中检查是否至少预定数量的存储单元已被适当的编程。该预定数量可以少于所有存储单元的数量,从而允许编程过程在所有存储单元达到其适当的验证电平前停止。可以在读取过程中通过误差校正来校正未被成功编程的存储单元。
如果在步骤614中确定不是所有的存储单元都达到其目标阈值电压,则编程过程继续。在步骤618中,对照编程极限值(PL)来检查编程计数器PC。编程极限值的一个示例是20;但是也可以使用其他值。如果编程计数器PC不小于编程极限值,则在步骤630中确定未被成功编程的存储单元的数量是否等于或小于预定数量。如果未被成功编程的存储单元的数量等于或小于预定数量,则编程过程被标记为已通过,并且报告状态“通过”。在很多情况下,未被成功编程的存储单元可以在读取过程中使用误差校正来校正。但是,如果未被编程的存储单元的数量大于预定数量,则编程过程被标记为失败,并且在步骤634中报告状态“失败”。
如果在步骤618中确定编程计数器PC小于编程极限值PL,则在步骤619中继续编程过程,在步骤619中编程脉冲增加1。在步骤620中,确定前一编程脉冲是施加到所有位线(而不是因为相关联的存储单元达到其目标或者保持在擦除状态而被锁定的位线)或只施加到仍然需要编程的位线的子集。如下面将要讨论的,存在系统仅对奇数位线编程或仅对偶数位线编程的某些情况。如果系统对需要编程的所有位线进行编程,则下一个步骤就是步骤622(参见步骤620的结果“一起”)。如果系统只对需要编程的偶数位线或奇数位线进行编程,则步骤620的下一个步骤是步骤640(参见步骤620的结果“单独”)。
在步骤622中确定是否已发生触发。在一种实施方式中,当编程电压Vpgm(例如,编程脉冲)的幅度达到触发电压时,发生触发。其他实施方式可以使用其他的触发(例如,基于时间、被编程的位的数量、脉冲的数量、电流等)。如果未发生触发,则在步骤624中编程电压Vpgm步进到下一个幅度。例如,下一个脉冲的幅度将比前一个脉冲大一个步长(例如0.1-0.4伏特的步长)。在步进编程电压Vpgm后,处理循环回步骤610并且将(在步骤624中设置的新幅度下的)下一个编程脉冲施加到所选择的字线以使得对所有位线(除了由于处于其目标状态而被锁定的存储单元之外)的编程发生。处理如前所述地从步骤610继续。
设置步骤622的触发以使得其用信号通知或以其他方式指出涉及电容耦合的锁定条件。一般地,在相邻的浮置栅极之间存在电容耦合。当两个相邻的浮置栅极(第一浮置栅极和第二浮置栅极)被编程时,电容耦合保持恒定或可预测。当第一浮置栅极因为达到其目标状态而锁定不能编程时,第一浮置栅极的电势会因为升压而升高。因为第一浮置栅极的电势较高,所以到第二浮置栅极的电容耦合增大。较高的电容耦合会增大第二浮置栅极上的电压,从而增大第二浮置栅极的编程速度。这可以导致过编程。在从较慢编程(当两个相邻的存储单元都在被编程时)到较快编程(当存储单元正在被编程而其相邻的存储单元被禁止编程时)的转变时,过编程的风险比较大。
图11A示出了两个相邻的浮置栅极806和810。浮置栅极806和810布置在相应的有源区804和808上。共用字线多晶硅层802充当两个浮置栅极的控制栅极,并且也在两个浮置栅极之间提供屏蔽805。屏蔽805减小浮置栅极806与浮置栅极810之间的耦合。图11A示出了两个被编程的浮置栅极;因此,它们的有源区被设置在0伏特处。如上所述,如果浮置栅极之一被锁定而不能编程时,它的有源区将被升压至7到10伏特之间,从而升压相应的浮置栅极的电势并且导致与相邻的浮置栅极的电容耦合的增加。因此相邻的浮置栅极会较快地编程。较快地编程可导致过编程。
虽然浮置栅极806与810之间的屏蔽805有助于减小电容耦合,但是当给字线施加大电压时,多晶硅屏蔽805会耗尽。例如,图11B示出了相同的两个浮置栅极806和810,在字线多晶硅层802中带有虚线812。虚线812以下的区域被耗尽。由于虚线812以下的区域被耗尽,所以不能为上述电容耦合提供完全屏蔽。
图11C示出了具有位于虚线812以下的耗尽区的两个相同的浮置栅极806和810。但是,图11C示出了被锁定而不能编程的浮置栅极806。因此,有源区804处于高电压,导致浮置栅极806处于高电压。因为浮置栅极806处于较高电压而屏蔽805被耗尽,所以浮置栅极806和810之间的电容耦合将导致浮置栅极810具有较高的电势而因此较快地编程。
在一种实施方式中,利用设备表征(包括模拟)来确定在什么字线电压下多晶硅字线层802会耗尽以使得发生耦合,如关于图11C所描述的。在其他实施方式中,可以通过测试实际的硅来测量该字线电压。在一些实施方式中,可以测试每一片硅。在其他的实施方式中,可以测试部件样品并且可以将所测量的电压用于整组部件。也可以使用用于确定开始耗尽的电压的其他方法。
如上所述的严重到足以导致编程速度增大的耗尽的字线电压是图10的步骤622中所使用的触发电压。因此,如果Vpgm编程脉冲的幅度达到了因为其而在字线多晶硅层中具有允许耦合的充分耗尽的触发电压,则满足触发并且处理进行到图10的步骤630。当一个相邻的存储单元被锁定而另一个相邻的存储单元仍然在编程时,使字线多晶硅层耗尽并且允许耦合从而可能加速编程的条件在本文中被称为锁定条件。
针对步骤622的触发的另一种实施方式是:至少预定数量的应该被编程到一组具体的一个或更多个数据状态的存储单元(例如,连接到奇数字线和偶数字线的存储单元)被成功地编程到该一组具体的一个或更多个数据状态。例如,可以在当要编程到状态S1的所有存储单元经验证已经成功达到数据状态S1时进行触发。在替代方案中,系统可以针对所有或预定数量的要编程到状态S1并且经验证已经成功达到数据状态S1的存储单元进行测试。该预定数量可以是要达到数据状态S1的所有存储单元的数量减去在读取处理期间使用误差校正码(或其他误差恢复处理)所能够校正的较小数量。在另一种替代方案中,系统除了基于存储单元达到一个数据状态(例如,数据状态S1)来触发以外,系统还可以基于存储单元达到多个数据状态来触发,例如,数据状态S1、S2和S3(最低的三个状态)。也可以使用数据状态的其他集合。
当具备锁定条件存在(通过步骤622的触发来用信号通知)的合理的机会时,系统会分别对连接到偶数位线的存储单元和连接到奇数位线的存储单元进行编程。以这种方式,来自相邻存储单元的耦合是完全可预测的,因为对于将通过下一个编程脉冲来编程的给定的存储单元,可以保证与它在同一字线上的相邻存储单元都被禁止。因为已知两个相邻的存储单元都被禁止并且禁止相邻的存储单元使编程加速(其可以导致过编程),所以系统将减小编程脉冲Vpgm的电压幅度以补偿锁定条件。即,降低编程脉冲Vpgm的电压幅度放慢了编程,其会补偿使编程加速的锁定条件。
在图10的步骤630中,减小了编程信号(例如,编程脉冲)的电压幅度。在一些实施方式中,将电压幅度减小.5伏特。在其他实施方式中,电压的减小可以不同于5伏特。在一些实施方式中,编程信号的电压幅度的减小基于在制造、产品设计、测试时或其他时间设置的参数。以给定的过程或设计制造出一组部件后,工程师可以测试锁定条件对编程速度的影响有多大,从而选择适当电压量来降低编程信号以抵制锁定条件。也可以利用设备模拟来确定适当的电压量以降低编程信号,来抵制锁定条件。
在步骤632中,将编程脉冲施加到所选择的字线以只对连接到偶数位线的存储单元编程。因此,偶数位线将处于0伏特而施加Vdd到奇数位线。在步骤632期间,只有偶数位线将被编程。在进行步骤632后,进行步骤634,其包括施加编程脉冲到同一所选择的字线。在步骤634中,只有连接到奇数字线的存储单元会被编程。因此,步骤634包括施加0伏特到奇数字线和Vdd到偶数字线。因此步骤632和634包括施加两个连续的编程脉冲到同一字线(因此到连接到该字线的同一组存储单元);但是,在第一脉冲(步骤632)中只有偶数存储单元被编程,在第二脉冲(步骤634)中只有奇数存储单元被编程。因此,连接到偶数位线(偶数存储单元)的存储单元和连接到奇数位线(奇数存储单元)的存储单元分别被编程。例如,如果WL2i是所选择的字线(见图4),则在步骤632中连接到BL0、BL2、BL4和WL2i的存储单元会被编程而在步骤634中连接到BL1、BL3、BL5和WL2i的存储单元会被编程。虽然奇数存储单元在步骤632中接收编程脉冲,但是在步骤632中它们被禁止编程。虽然偶数存储单元在步骤634中接收编程脉冲,但是在步骤634中它们被禁止编程。步骤634后,过程循环回步骤612,偶数位线和奇数位线上的存储单元一起全部被验证(除非在一些实现中因为达到目标而被预先锁定)。过程如前所述地从步骤612继续。在步骤632和634之间不进行验证操作。
再参考图4,描述了存储单元块(块i)。在一种实施方式中,沿着字线的存储单元被分成两组。第一组是连接到奇数位线的所有存储单元(例如BL1、BL3和BL5……)。第二组包括连接到偶数位线的所有存储单元(例如BL0、BL2和BL4……)。从图4可以看到,偶数位线和奇数位线是交错的。因此,与偶数位线连接的存储单元组和与奇数位线连接的存储单元组交错。只要偶数位线正在被编程,则连接到奇数位线的所有存储单元都会被锁定。这将保证正在编程的任何存储单元可以将其相邻存储单元锁定的情形。虽然这可能导致耦合,但是因为两个相邻存储单元保证被锁定,所以耦合是可预测并且恒定的。因此,不会发生过编程。连接到字线的存储单元可以被分成多于两组,并且可以被分成除奇数组和偶数组之外其他类型的组。
如果在步骤620中确定出先前的编程验证迭代对偶数位线和奇数位线施加单独的脉冲,则过程继续到步骤640。系统决定是否继续对可能的锁定状态提供补偿。
在步骤640的一种实施方式中,当编程脉冲(或程序验证迭代)的数量达到预定的数量时,系统结束补偿(例如,用于奇数位线编程和偶数位线编程的单独的脉冲)。例如,系统可以测试PC是否小于预定数量。
在步骤640的另一种实施方式中,当至少预定数量的应该被编程到具体的一组一个或更多个数据状态的存储单元(例如与奇数字线和偶数字线连接的存储单元)被成功地编程到该具体的一组一个或更多个数据状态时,系统结束补偿(例如,用于奇数位线编程和偶数位线编程的单独的脉冲)。例如,当所有或几乎所有要到数据状态S6的存储单元已经成功被验证处于S6时,系统可以结束补偿。或者,所有或几乎所有要到数据状态S5和S6的存储单元已经成功被验证分别处于S5和S6时,系统可以结束补偿。系统可以对所有要到某个数据状态的存储单元或者该所有的存储单元减去在读出处理期间使用误差校正码(或其它误差恢复处理)能够校正较小预定数量的存储单元是否被成功编程进行测试。
在步骤640的另一种实施方式中,当确定出另外的锁定条件的概率低时,系统结束补偿(例如,用于奇数位线编程和偶数位线编程的单独的脉冲)。如上面所讨论的,当一个存储单元正在被编程时,锁定条件发生,相邻的存储单元被锁定而不能编程,并且字线电压足够高。锁定条件导致较快的编程。当从较慢编程到较快编程转变时可能发生过编程。因此,在一种实施方式中,系统检查是否存在由于锁定条件的开始而引发的从慢编程到快编程的可能的转变。系统通过检查新的/另外的锁定条件的可能的数量来对从慢编程到快编程的可能的转变进行检查。在一些实施方式中,系统可以容许少量的误差,因为这些误差可以在读取过程中通过本领域已知的误差校正方案来校正。因此,如果可能的锁定条件的数量足够小,则系统可以容许可能的误差而不必在编程期间校正它。
如果在步骤640中确定出此时不结束补偿,则过程继续以进行步骤632和634,其包括在与对奇位线上的存储单元进行编程的时刻不同的时刻单独地对偶位线上的存储单元编程。
如果在步骤640中确定出此时结束补偿,则存储系统将通过对奇数位线和偶数位线一起编程来继续编程过程。在一种实施方式中,当系统切换回对奇数位线和偶数位线一起编程时,也会升高编程电压的幅度(步骤642)。当在步骤642中提高编程电压的幅度后,过程继续到步骤610并且在奇数位线和偶数位线对编程存储单元施加下一个编程脉冲。在一些实施方式中,步骤642被跳过以便在切换回对奇数位线和偶数位线一起编程时,编程电压的幅度不提高。
步骤642包括提高编程电压的幅度。在一种实施方式中,编程电压的幅度被提高预定的固定量以获得期望的编程速度。在另一种实施方式中,编程电压的幅度提高到一个值,该值基于编程信号(以特定速度被升高)的没有响应于确定触发存在(步骤622)而降低的幅度。也就是,没有在步骤630中将编程电压Vpgm的幅度降低,则它现在应该具有X伏特的幅度。因此,步骤642包括将Vpgm的幅度增加到X伏特。
在一个示例实施中,在一个步骤(步骤642)中将编程电压Vpgm的幅度增加到其目标。在另一种实施中,编程电压Vpgm的幅度通过多步增加到其目标。例如,编程电压Vpgm的幅度可以通过一组多个程序验证迭代(步骤610和612)而增加到其目标。考虑到当在步骤640中决定结束补偿时,编程电压Vpgm低于当从未在步骤630中降低0.7伏特的情况下其所应具有的电压。或者,编程电压Vpgm在步骤610中的下一个编程脉冲中可以增加.45伏特并且在步骤610的下一次迭代的随后的编程脉冲中增加额外的.45伏特。编程电压Vpgm增加了.9伏特而不是.7伏特以占据编程脉冲之间.2伏特的阶跃。为实现这一目标,随后的624步骤必须修改以便将编程电压Vpgm增加.45而不是.2。又或者,通过多于两步(例如三个或多于三步)将编程电压Vpgm增加到其目标。
如果在步骤640中确定出新的/另外的锁定条件的可能的数量小,则补偿会继续并且存储系统会通过对奇数位线和偶数位线单独编程来继续编程过程。因此,会通过进行步骤632和634来继续过程,步骤632和634包括在与对奇位线上的存储单元进行编程的时刻不同的时刻单独地对偶数位线上的存储单元进行编程。
图12是编程电压Vpgm的示例波形。图12中的信号包括脉冲702,704,706,708,710,712,714,716,718,720,722,724,726,728,730,732,734和736。编程脉冲702-720都是在触发前施加的。这些脉冲的幅度中的每个都小于触发电压。脉冲702-720作为图10中步骤610的迭代的一部分而施加。在施加脉冲720后,已达到触发电压(例如,Vpgm的幅度大于触发电压)并且处理独立于奇数位线地对偶数位线进行编程(步骤632和步骤634)。因此,图12在722和724示出了两个具有相同幅度的脉冲。编程脉冲722用于对连接到偶数位线的存储单元进行编程(步骤632),编程脉冲724用于对连接到奇数位线的存储单元进行编程(步骤634);但是,两个脉冲722和724都施加到同一所选择的字线。按照步骤630,脉冲722和724的幅度小于脉冲720的幅度。在图12的示例中,过程继续对奇数位线和偶数位线单独编程(先对偶数位线编程随后对奇数位线编程)。例如,脉冲726和728(具有彼此相同、但大于脉冲722/724的幅度)是图10中步骤632和634的下一个迭代。脉冲730和732是步骤632和634随后的迭代。在图12的示例中,脉冲734和736是步骤632和634的最后迭代。施加脉冲734和736后,所有的存储单元都适当地验证过(或足够多的存储单元已经验证过)以成功完成该过程。
图13提供Vpgm的编程脉冲的波形的另一个示例。图13的示例包括从对所有位线编程(步骤610)转变到对偶数位线和奇数位线单独编程(步骤632和634)再转变回到所有位线编程(通过步骤640和642)的编程处理。在步骤610的迭代期间,施加编程脉冲750,752,754,756,758,760,762,764,766和768。在编程脉冲768后,已达到触发电压,并且过程进行步骤632和634以利用编程脉冲770对连接到偶数位线的存储单元以及利用编程脉冲772对连接到奇数位线的存储单元进行编程。由于图10中的步骤630,脉冲770和772的幅度小于脉冲768。图13示出了步骤632和634的三次迭代。在步骤632和634的第二次迭代中,编程脉冲774用来对连接到偶数位线的存储单元进行编程,脉冲776用来对连接到奇数位线的存储单元进行编程。在步骤632和634的第三次迭代中,编程脉冲778用来对连接到偶数位线的存储单元进行编程,编程脉冲780用来对连接到奇数位线的存储单元进行编程。当在步骤634中施加编程脉冲780后,确定出锁定状态的发生率低。因此,处理将进行步骤642并将编程电压Vpgm的幅度增加回到在不提供补偿的情况下的电压,并且施加编程脉冲782(在步骤610中)以对连接到所有位线的存储单元(除了因为达到其目标状态而已经被锁定的存储单元之外)进行编程。图10中的处理的下一个迭代可包括在步骤610中施加一个编程脉冲784。在施加编程脉冲784后,确定出足够多的存储单元已经验证并且成功完成了编程过程。注意,虚线785表明在补偿前(例如对奇/偶数位线单独编程前)编程信号Vpgm的幅度怎样升高,并且表明编程脉冲782的幅度与未响应于确定触发存在而被降低的编程信号的幅度相等。
如上所述,在编程脉冲之间进行一组验证操作。在一种实施方式中,对于每个验证操作,将验证脉冲施加到所选择的字线。例如,如果存储单元可以处于8种可能的数据状态下,则会有7个验证操作,并且因此而有7个验证脉冲。图14示出了编程脉冲706、708和710(也参考图12)以及施加在编程脉冲706、708和710之间的验证脉冲的示例。如上所述,图14中的每个验证脉冲是与验证操作相关联的。
图15也示出了其间有验证脉冲的编程脉冲。图15示出了图12中的编程脉冲722、724、726、728、730和732。这6个编程脉冲是与在达到触发电压后施加编程脉冲相关联的。因此,奇数存储单元和偶数存储单元被单独编程。如上所述,编程脉冲772对连接到偶数位线的存储单元编程而编程脉冲724对连接到奇数位线的存储单元编程。在一种实施方式中,编程脉冲722和724之间没有验证操作。在编程脉冲724之后、下一对脉冲726和728之前,施加一组验证脉冲以进行验证操作。在脉冲726和728之间不进行验证操作。在脉冲728后、下一对脉冲(730、732)之前,施加一组验证脉冲以进行相应的一组验证操作。
图16描绘了编程期间各种信号下的行为。更具体地,图16示出了在图10的步骤610、632或634的一个迭代中的操作。所描绘的编程操作可以分组为位线预充电阶段、编程阶段和放电阶段。
在位线预充电阶段的时段(1)期间,通过将SGS保持在0V来关断源极选择晶体管而通过将SGD升高到VSG来导通漏极选择晶体管,因此允许位线访问NAND串。在位线预充电阶段的时段(2)中,允许编程禁止的NAND串的位线电压(BLinhibit)升高到由VDD给定的预定的电压。当编程禁止的NAND串的位线电压升高到VDD时,当漏极选择晶体管上的栅电压SDG在时段(3)中降到VDD时,编程禁止的NAND串将浮置。编程NAND串的位线电压(BLpgm)被有源地下拉到0伏特。在一些替代的实施方式中,基于其相邻的编程NAND串中的一个或两个是否处于编程禁止模式,来对编程NAND串的位线电压进行偏置。关于该偏置的更多信息可以在美国专利7,187,585中找到,其全部内容通过引用合并到本文中。
在编程阶段的时段(4)期间,未被选择的字线(WLunsel)被设置到VPASS以使得能够对NAND串升压。因为编程禁止的NAND串是浮置的,所以施加到未寻址存储晶体管的控制栅极的高VPASS抬高它们的沟道和电荷存储单元的电压,从而禁止编程。VPASS通常设置到相对于Vpgm(例如,大约12-24V)而言的中间电压(例如,大约10V)。
在编程阶段的时段(5)期间,将编程电压Vpgm作为编程脉冲施加到所选择的字线(WLsel)上。被禁止存储单元(即,带有升压的沟道和电荷存储单元)将不被编程。所选择的存储单元(连接到所选择的字线)将被编程。在放电阶段的时段(6)期间,允许各种控制线和位线放电。
图17是描述用于确定是否因为另外的锁定条件的概率低而结束补偿(在图10的步骤640中)的处理的实施方式的流程图。在步骤850中,每个存储单元都和与其沿同一字线相邻的存储单元作比较。在步骤852中,系统计算到锁定状态的可能的转变的数量X。如果两个相邻的存储单元都仍然正在被编程,则存在可能的锁定条件,因为相邻的存储单元之一可能先于另一个达到其目标并且被锁定。因此,在一种实施方式中,步骤852包括计算仍在被编程的相邻存储单元对的数量。如果可能的锁定条件的数量大于阈值(步骤854),则另外的锁定条件的概率不低(步骤858)。如果可能的锁定条件的数量不大于阈值,则另外的锁定条件的概率低(步骤856)。基于能够由误差校正码(或其他误差恢复过程)校正的位数来设置步骤854中的阈值。例如,一种实施方式包括可以修复多至7位不正确数据(相当于大约0.01%的数据)的误差校正码。因此,如果可能的锁定条件的数量小于7,则另外的锁定条件的概率低(步骤856)。也可以使用其他阈值。在另一种实施方式中,步骤850可仅包括与其相邻的存储单元相比的存储单元子集,并且结果是针对整个群外推的并与阈值比较。
图18是能够实施图17中的处理的硬件的一个示例的框图。用于所有存储单元的数据锁存器494(见图5)向移位寄存器880提供数据。在一种实施方式中,移位寄存器880可以包括实际的数据锁存器494。移位寄存器880包括用于所有位线的所有数据。数据每次移出1位,先移到1位寄存器882再移到1位寄存器884。寄存器882中的数据和来自寄存器884的数据被发送到NOR门886。NOR门886的输出被发送到累加器888。累加器888的输出被提供给状态机222,状态机222确定可能的锁定条件的数量是否不大于阈值。图18的电路计算相邻位线存储0-0的发生率。在一个示例中,为了配置读出电路以在位线上施加合适的电压,使用数据锁存器以存储特定存储单元是应该被编程还是被禁止编程的指示。在一种实施方式中,如果位线要被禁止,则相应的数据锁存器将存储1,,如果位线被设置成用于编程,则相应的数据锁存器将存储0。也可以使用相反的极性。因此,图18的电路将寻找数据为0-0的相邻位线,并且使用累加器888计算其发生的次数。如果累加器计算0-0的次数大于阈值,则状态机推断另外的锁定条件的概率并不低。
图19描述了确定另外的锁定条件的概率是否低(在图10的步骤640中进行)的另一种实施方式。在步骤902中,计算仍然正在被编程的存储单元的数量。或者,计算被锁定的存储单元的数量。在步骤904中,确定仍然正在被编程的存储单元的数量是否小于阈值。如果仍在被编程的存储单元的数量小于阈值(步骤904),则另外的锁定条件的概率低(步骤906)。如果正在被锁定的存储单元的数量不小于阈值,则另外的锁定条件的概率不低(步骤908)。在一种实施方式中,可以设置阈值使得如果只有0.4%的存储单元仍在被编程(或99.6%被锁定),则另外的锁定条件的概率低。也可以使用其他的阈值。
图20是描述能够用于实施图19中的处理的硬件的一个示例的框图。图20示出了用于与比较器电路920通信的位线组中的每一组的处理器492中的每个(例如,用于8个位线的一个处理器492)。处理器中的每个会指示其相应的位线正在被编程或被锁定。比较器920包括用于计算被锁定位线的数量的电路。在一种实施方式中,这可以通过提供来自上述锁存器的数据来完成。比较器920可以访问指示阈值的参数922(见步骤904)并且比较将阈值与锁定的位线的和进行比较。比较器920的输出被发送到状态机222。
再参考图10,使用触发(步骤622)将编程过程从对奇数存储单元和偶数存储单元一起编程改变成对奇数存储单元和偶数存储单元单独地编程。一种实施方式包括使用设备表征(包括模拟)来确定合适的触发电压。在一些实施方式中,可以针对每个集成电路单独调整触发电压。即,在制造出集成电路后,可以测试每个集成电路。可以基于该测试来设置或调节触发电压。
图21、22和23是描述用于调整或设置触发值的三个实施方式的流程图。可以对一个块进行图21-23的处理。然后来自这个块的数据可以用于存储设备上的所有块。在一种替代方案中,可以测试多个块并且将结果应用于所有块。在另一种替代的实施方式中,可以对每个块进行图21-23中的处理,并且因此每个块都将具有其自己的触发值。在一种实施方式中,在块中只测试一个字线。在另一种实施方式中,可以测试多于一个的字线并且对结果进行平均或以其他方式组合。在其他实施中,可以选择其他单位(例如字线、字线组、页和扇区等)用于测试。
在图21的步骤1002中,对所测试的具体的块进行擦除。然后,处理将对一个所选择的字线上的偶数单元进行编程。在一种实施方式中,只有一个字线将被编程。基于这个字线,将针对整个块、整个芯片或整个存储系统确定新的触发值。在其他实施方式中,可以对多个字线编程并且可以对数据进行平均或者每个字线可以具有其自己的触发值。在步骤1004中,对连接到所选择的字线的存储单元进行编程。步骤1004的编程处理包括使能连接到奇数位线和偶数位线的所有存储单元用于编程并且施加幅度增加的编程脉冲直到编程脉冲达到Vpgm_test的幅度。在一种实施方式中,将Vpgm_test初始地设置在低于由设备表征确定的触发电压的2伏特。除了在步骤620后过程在步骤624处继续(没有步骤622或步骤630-642)外,步骤1004的编程处理与图10中的处理相似。步骤1004中的编程处理完成后,然后在步骤1006中对用于连接到偶数位线的存储单元的阈值电压分布的顶和底进行测量。在步骤1008中,对块进行擦除。
在步骤1010中,连接到偶数位线的存储单元再一次被编程;但是对于步骤1010中的所有编程脉冲,连接到奇数位线的存储单元被禁止编程。步骤1010包括施加幅度增长的一系列编程脉冲直到编程脉冲的幅度与步骤1004中的同一Vpgm_test相等。在步骤1012中,测量连接到偶数位线的存储单元的阈值电压分布。在步骤1014中,比较在步骤1012和1006中测量的阈值电压分布的顶和底。在一种实施方式中,比较两个阈值电压分布的下界。在另一种实施方式中,比较每个阈值电压分布的上界。如果阈值电压分布的下界(或上界)之间的差不大于阈值,则Vpgm_test增加预定的量(例如,0.5伏特或其他值)并且通过循环回步骤1002来重复该处理。如果两个阈值电压分布的最低点之间的差大于阈值,则在步骤1020中修改触发电压(根据由设备表征确定的值)以变成Vpgm_test的当前值。在一些实施方式中,可以通过增加一些余量偏移来进一步修改Vpgm_test以考虑到样本大小可能未捕获到实际的最差情况。在一种实施方式中,步骤1016的阈值等于0.5伏特,在步骤1004和1010的编程处理中所使用的编程脉冲的步长是0.4伏特。
图22提供了用于确定或调整触发电压的处理的另一种实施方式。在步骤1050中,对所考虑的块进行擦除。步骤1052中,在编程处理的每次迭代中连接到奇数位线的存储单元被选中用于编程,连接到偶数位线的存储单元被编程直到其阈值电压达到Vx伏特的目标电平。可以通过实验来设置Vx。Vx的一个示例值为3.5伏特。在步骤1054中,记录对步骤1052中连接到偶数位线的存储单元适当编程所需的编程脉冲的数量。在步骤1056中,对所考虑的块进行擦除。在步骤1058中,连接到偶数位线的存储单元被再次编程直到其阈值电压达到Vx伏特。在步骤1058中,对于每个循环,连接到奇数位线的存储单元总是被禁止。在步骤1060中,记录步骤1058中对存储单元编程所需的编程脉冲的数量。在步骤1062中,比较每次测试(步骤1054和1060)的脉冲数量。据预测在步骤1060中测量的脉冲数量将小于在步骤1054中测量的脉冲数量。脉冲数量的这种差指示与上述锁定条件相关联的干扰作用的大小。如果差大于阈值,则触发电压被设置成来自步骤1058的编程过程中的最后一个脉冲的大小。如果差不大于阈值,则增加电压Vx(例如增加0.5伏特)并且过程循环回到步骤1050以重复测试。在一个示例中,步骤1064的阈值等于一个脉冲。也可以使用其他的阈值。
图23是用于确定或调整触发电压的另一种实施方式。在步骤1102中,擦除所选择的块。在步骤1104中,连接到偶数位线的存储单元被编程直到其阈值电压等于电压Vy。在步骤1104的编程过程中,连接到奇数位线的存储单元总是被选则用于编程,在步骤1106中,测量连接到偶数位线的被过编程的存储单元的数量。例如,可以基于模拟来评估理想的阈值电压分布并且确定理想阈值电压分布的上电平。如果存储单元的阈值电压超过理想分布的上限,则存储单元被过编程。例如,参考图7I,状态S6具有下界G和上界OP。如果存储单元具有大于OP的阈值电压,则存储单元被过编程。在其他实施方式中,用于过编程的比较电平可以不同。
再参考图23,在步骤1108中,向所选择的字线施加又一个脉冲。尽管编程脉冲是在步骤1108施加的,但是连接到奇数位线的所有存储单元被禁止编程。这些在步骤1104中达到阈值电压Vy的存储单元在步骤1108中将保持锁定。因此,步骤1108的编程脉冲将只对未达到阈值电压Vy的存储单元编程。在步骤1110中,再次测量被过编程的存储单元的数量。在步骤1112中,将在步骤1110中测量的过编程的单元的数量与在步骤1106中测量的过编程的存储单元的数量相比较。如果过编程的存储单元的数量的差大于阈值,则触发电压被设置为步骤1108中所施加的脉冲的幅度。步骤1114的阈值的一个示例是5个存储单元。如果差不大于阈值(步骤114),则在步骤1116中增大Vy的电压电平(例如增大.5V)并且过程循环回步骤1102并重复。
在一些实施方式中,非易失性存储系统可以对触发电压进行动态调节以考虑由环境或使用条件如循环历史、温度等引起的变化。图24是描述基于编程/擦除循环数来动态改变触发电压的一种实施方式的流程图。编程/擦除循环包括进行擦除处理和编程处理。随着非易失性存储系统进行多次编程/擦除循环,电荷可能陷于浮置栅极和沟道之间的介电区域。这种情况可能减小上面关于图11A-C所讨论的耗尽区。因此,随着设备被多次循环,可能会增大触发电压使得对奇数存储单元和偶数存储单元的单独编程在编程过程中较晚地发生。在图24的步骤1240中,存储设备进行X次编程/擦除循环。在一个示例中,X次编程循环可以是10000次编程/擦除循环。也可以使用其他的X值。在进行X次编程/擦除循环后,在步骤1242中升高触发电压(例如升高0.5伏特)。在步骤1242中升高触发电压后,存储系统将在步骤1244中进行Y次编程/擦除循环。在一个示例中,Y次编程/擦除循环可以是5000次编程/擦除循环。在步骤1246中,触发电压将再一次升高(例如提高0.2伏特)。在步骤1246中升高触发电压后,存储系统将继续进行编程/擦除循环(步骤1248)。图24示出了存储设备两次升高触发电压。但是,在其他实施方式中,触发电压可以只升高一次或升高多于两次。可以基于设备表征或实验手段确定X和Y的不同值。
图25是用于进行图24的处理的部件一个示例的框图。图25示出了与存储触发参数的寄存器1282和存储循环参数的寄存器1284通信的状态机222。补偿电路1286也与寄存器1282和寄存器1284通信。触发参数是触发电压(或其他触发)的指示。触发参数可以是电压幅度、脉冲数或其他的指示。循环参数可以指示已经进行的编程/擦除循环的次数。基于循环参数的值,在合适的时候补偿电路将更新触发参数。例如,作为图24中步骤1242和1246的一部分,补偿电路1286可以更新触发参数。在图10的步骤622中,状态机222将使用触发参数。
图26是描述基于温度来动态地调节触发电压的实施方式的流程图。在步骤1302中,存储系统将测量温度。在一种实施方式中,存储系统可以包括温度传感器。基于所测量的温度,可以在步骤1304中调节触发电压。预期在低温下耗尽区应该更差,所以编程过程中触发应该较早发生。这可以通过在低温下降低触发电压来实现。如果在步骤1302中测得的温度低于预设的数值,则可以降低触发电压。如果在步骤1302中测得的温度高于预设的数值,则可以升高触发电压。在另一种实施方式中,状态机222可以存储将温度范围和触发电压相关联的表格。在步骤1302中,状态机222将读取温度,并且在步骤1304中,状态机222可以将温度作为关键字在表格中查找触发值。在表格中找到的触发电压将被存储在用于编程过程的参数中。在另一种实施方式中,补偿电路将读取测得的温度并且在步骤1304中调节触发电压。在步骤1306中,系统将使用步骤1304中设置的触发电压进行编程。在进行一定量的编程后,过程将循环回步骤1302,将再次测量温度并且可以在步骤1304中可选地调节触发电压。在一种实施方式中,步骤1302-1306的循环可以在每个编程过程中进行。在其他实施方式中,该过程可以每隔N个周期或N个时间段等进行一次。
图27是描述能够实施图26的处理的部件的一个示例的框图。图27示出了与存储触发参数的寄存器1350通信的状态机222。触发参数是触发电压(或其他触发)的指示。触发参数可以是电压幅度、脉冲数或其他的指示。补偿电路1352与寄存器1350和温度传感器1354通信。温度传感器1354输出指示温度的信号(电压或电流)。基于温度传感器1354的输出,补偿电路1352将更新触发参数。例如,作为图26的步骤1304的一部分,补偿电路1352可以更新触发参数。对触发参数的更新可以连续地、周期地或者按需进行。
一种实施方式包括使用编程信号对第一组非易失性存储单元和第二组非易失性存储单元一起编程和一起验证,确定第一条件存在,响应于对第一条件存在的确定来降低编程信号,以及使用响应于对第一条件存在的确定而降低的编程信号,独立于对第二组非易失性存储单元编程来对第一组非易失性存储单元编程。
在一个示例中,第一组非易失性存储单元和第二组非易失性存储单元被连接到一个共用控制线,并接收共用控制线上的编程信号。共用控制线的一个示例是字线。
一种实施方式包括多个非易失性存储单元,包括第一组非易失性存储单元和第二组非易失性存储单元,以及一个或更多个与非易失性存储单元通信的管理电路。一个或更多个管理电路使用编程信号对第一组非易失性存储单元和第二组非易失性存储单元一起编程和一起验证。一个或更多个管理电路确定第一条件存在并且响应于对第一条件存在的确定而降低编程信号。一个或更多个管理电路使用响应于对第一条件存在的确定而降低的编程信号,独立于对第二组非易失性存储单元编程来对第一组非易失性存储单元编程。
一种实施方式包括用于对非易失性存储器编程的方法。在第一触发前,该方法包括:使用包括有随时间增加到第一触发处的参考幅度的编程脉冲的共用编程信号来对第一组非易失性存储单元和第二组非易失性存储单元进行一起编程和一起验证。在第一触发后,该方法包括:使用幅度比参考幅度低的单独的编程脉冲,独立于对第二组非易失性存储单元编程来对第一组非易失性存储单元编程;以及对第一组非易失性存储单元和第二组非易失性存储单元一起进行验证。
上述对本发明的述详细描述是出于说明与描述的目的而做出的。无意成为穷尽性的或将本发明限制到所公开的精确形式。根据上述教示,可以有很多修改和变化。选择所描述的实施方式以最佳地解释本发明的原理及其实际应用,从而使本领域的其他普通技术人员能够在各种实施方式中以及通过各种适合于所预期的具体用途的修改来最佳地利用本发明。意在通过所附权利要求来限定本发明的范围。
Claims (19)
1.一种用于对非易失性存储器进行编程的方法,包括:
使用编程信号对第一组非易失性存储单元和第二组非易失性存储单元一起进行编程以及一起进行验证;
确定第一条件存在;
响应于确定所述第一条件存在来降低所述编程信号;以及
使用响应于确定所述第一条件存在而被降低了的所述编程信号来独立于对所述第二组非易失性存储单元进行的编程对所述第一组非易失性存储单元进行编程。
2.根据权利要求1所述的方法,其中:
所述第一组非易失性存储单元和所述第二组非易失性存储单元连接至共用控制线,并且接收所述共用控制线上的所述编程信号。
3.根据权利要求1或2所述的方法,还包括:
在确定所述第一条件存在后,对所述第一组非易失性存储单元和所述第二组非易失性存储单元一起进行验证。
4.根据权利要求1或2所述的方法,还包括:
确定第二条件存在;
响应于确定所述第二条件存在来升高所述编程信号;以及
使用响应于确定所述第二条件存在而被升高了的用于编程的所述编程信号来对所述第一组非易失性存储单元和所述第二组非易失性存储单元一起进行编程以及一起进行验证。
5.根据权利要求4所述的方法,其中:
所述确定第二条件存在包括:确定期望编程到一个或更多个数据状态的子集的所述第一组非易失性存储单元和所述第二组非易失性存储单元中的至少预定数量的非易失性存储单元已被成功地编程到了所述一个或更多个数据状态的子集。
6.根据权利要求4所述的方法,其中:
确定所述第二条件存在包括确定已经进行了预定量的编程。
7.根据权利要求4所述的方法,其中:
响应于确定所述第二条件存在,通过一组多个编程验证迭代来升高所述编程信号。
8.根据权利要求7所述的方法,其中:
在所述确定第一条件存在前,所述编程信号具有以特定速度增大的幅度;以及
所述升高所述编程信号包括:将所述编程信号升高到一个值,所述值基于所述编程信号在没有响应于确定所述第一条件存在而被减小的情况下的幅度。
9.根据权利要求1或2所述的方法,还包括:
确定第二条件存在,在所述确定第一条件存在前,所述编程信号具有以特定速度增大的幅度;
响应于确定所述第二条件存在,将所述编程信号升高到一个值,所述值基于所述编程信号在没有响应于确定所述第一条件存在而被减小的情况下的幅度;以及
使用响应于确定所述第二条件存在而被升高了的所述编程信号来对所述第一组非易失性存储单元和所述第二组非易失性存储单元一起进行编程以及一起进行验证。
10.根据权利要求1或2所述的方法,其中:
所述确定第一条件存在包括:确定期望编程到一个或更多个数据状态的特定集合的所述第一组非易失性存储单元和所述第二组非易失性存储单元中的至少预定数量的非易失性存储单元被成功地编程到了所述一个或更多个数据状态的特定集合;
将所述第一组非易失性存储单元和所述第二组非易失性存储单元编程到一组数据状态;以及
所述一个或更多个数据状态的特定集合是所述一组数据状态的最接近已擦除状态的子集。
11.一种非易失性存储装置,包括:
多个非易失性存储单元,包括第一组非易失性存储单元和第二组非易失性存储单元;以及
与所述非易失性存储单元通信的一个或更多个管理电路,所述一个或更多个管理电路使用编程信号对所述第一组非易失性存储单元和所述第二组非易失性存储单元一起进行编程以及一起进行验证,所述一个或更多个管理电路确定第一条件存在并且响应于确定所述第一条件存在来降低所述编程信号,所述一个或更多个管理电路使用响应于确定所述第一条件存在而被降低了的所述编程信号来独立于对所述第二组非易失性存储单元进行的编程对所述第一组非易失性存储单元进行编程。
12.根据权利要求11所述的装置,其中:
所述第一组非易失性存储单元和所述第二组非易失性存储单元连接到共用控制线并且接收所述共用控制线上的所述编程信号。
13.根据权利要求11或12所述的装置,其中:
所述第一组非易失性存储单元和所述第二组非易失性存储单元是多态非易失性存储单元。
14.根据权利要求11或12所述的装置,其中:
在确定所述第一条件存在后,所述一个或更多个管理电路对所述第一组非易失性存储单元和所述第二组非易失性存储单元一起进行验证。
15.根据权利要求11或12所述的装置,其中:
所述一个或更多个管理电路确定第二条件存在;以及
所述一个或更多个管理电路响应于确定所述第二条件存在、使用所述编程信号对所述第一组非易失性存储单元和第二组非易失性存储单元一起进行编程以及一起进行验证。
16.根据权利要求15所述的装置,其中:
所述一个或更多个管理电路响应于确定所述第二条件存在来升高所述编程信号。
17.根据权利要求16所述的装置,其中:
所述一个或更多个管理电路响应于确定所述第二条件存在、通过一组多个编程验证迭代来升高所述编程信号。
18.根据权利要求17所述的装置,其中:
在所述确定第一条件存在前,所述编程信号具有以特定速度增大的幅度;以及
所述一个或更多个管理电路将所述编程信号升高到一个值,所述值基于所述编程信号在没有响应于确定所述第一条件存在而被降低的情况下的幅度。
19.根据权利要求11所述的装置,其中:
所述一个或更多个管理电路确定第二条件存在;
在所述确定第一条件存在前,所述编程信号具有以特定速度增大的幅度;
所述一个或更多个管理电路响应于确定所述第二条件存在来将所述编程信号升高到一个值,所述值基于所述编程信号在没有响应于确定所述第一条件存在而被降低的情况下的幅度;以及
所述一个或更多个管理电路使用响应于确定所述第二条件存在而被升高了的所述编程信号对所述第一组非易失性存储单元和所述第二组非易失性存储单元一起进行编程以及一起进行验证。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/762,342 | 2010-04-18 | ||
US12/762,342 US8218366B2 (en) | 2010-04-18 | 2010-04-18 | Programming non-volatile storage including reducing impact from other memory cells |
PCT/US2011/032575 WO2011133404A1 (en) | 2010-04-18 | 2011-04-14 | Programming non-volatile storage includng reducing impact from other memory cells |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102985976A CN102985976A (zh) | 2013-03-20 |
CN102985976B true CN102985976B (zh) | 2015-11-25 |
Family
ID=44120993
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180027182.6A Active CN102985976B (zh) | 2010-04-18 | 2011-04-14 | 包括减小其他存储单元的影响的对非易失性存储器的编程 |
Country Status (7)
Country | Link |
---|---|
US (2) | US8218366B2 (zh) |
EP (1) | EP2561511B1 (zh) |
JP (1) | JP2013525935A (zh) |
KR (1) | KR101736414B1 (zh) |
CN (1) | CN102985976B (zh) |
TW (1) | TW201203258A (zh) |
WO (1) | WO2011133404A1 (zh) |
Families Citing this family (26)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8130556B2 (en) * | 2008-10-30 | 2012-03-06 | Sandisk Technologies Inc. | Pair bit line programming to improve boost voltage clamping |
US8218366B2 (en) | 2010-04-18 | 2012-07-10 | Sandisk Technologies Inc. | Programming non-volatile storage including reducing impact from other memory cells |
US8310870B2 (en) * | 2010-08-03 | 2012-11-13 | Sandisk Technologies Inc. | Natural threshold voltage distribution compaction in non-volatile memory |
US8395936B2 (en) * | 2011-05-09 | 2013-03-12 | Sandisk Technologies Inc. | Using channel-to-channel coupling to compensate floating gate-to-floating gate coupling in programming of non-volatile memory |
US9135989B2 (en) * | 2012-09-06 | 2015-09-15 | Sandisk Technologies Inc. | Write data preservation for non-volatile storage |
US8942043B2 (en) * | 2013-03-04 | 2015-01-27 | Sandisk Technologies Inc. | Non-volatile storage with process that reduces read disturb on end wordlines |
US9620238B2 (en) * | 2014-01-20 | 2017-04-11 | Sandisk Technologies Llc | Methods and systems that selectively inhibit and enable programming of non-volatile storage elements |
KR20160005840A (ko) | 2014-07-07 | 2016-01-18 | 에스케이하이닉스 주식회사 | 반도체 장치 |
KR102248835B1 (ko) | 2014-09-29 | 2021-05-10 | 삼성전자주식회사 | 불 휘발성 메모리 장치 및 그것의 동작 방법 |
KR20170011641A (ko) * | 2015-07-23 | 2017-02-02 | 에스케이하이닉스 주식회사 | 반도체 메모리 장치 및 그것의 동작 방법 |
US9852786B2 (en) | 2015-10-21 | 2017-12-26 | Toshiba Memory Corporation | Semiconductor memory device that varies voltage levels depending on which of different memory regions thereof is accessed |
US9489990B1 (en) * | 2015-11-17 | 2016-11-08 | Atmel Corporation | Adaptive non-volatile memory programming |
US10290346B2 (en) * | 2016-12-22 | 2019-05-14 | Western Digital Technologies, Inc. | Method and apparatus for low-latency read of flash storage devices using fractional bits per cell |
KR102267046B1 (ko) | 2017-03-29 | 2021-06-22 | 삼성전자주식회사 | 스토리지 장치 및 배드 블록 지정 방법 |
US10365854B1 (en) * | 2018-03-19 | 2019-07-30 | Micron Technology, Inc. | Tracking data temperatures of logical block addresses |
KR102469098B1 (ko) * | 2018-03-21 | 2022-11-23 | 에스케이하이닉스 주식회사 | 불휘발성 메모리 장치, 불휘발성 메모리 장치의 동작 방법 및 이를 포함하는 데이터 저장 장치 |
US10607709B1 (en) * | 2018-09-13 | 2020-03-31 | Toshiba Memory Corporation | System and method for efficient read-flow by inter-cell interference decoupling for NAND flash memories |
CN109800876B (zh) * | 2019-01-18 | 2021-06-01 | 合肥恒烁半导体有限公司 | 一种基于NOR Flash模块的神经网络的数据运算方法 |
US11081198B2 (en) | 2019-05-16 | 2021-08-03 | Sandisk Technologies Llc | Non-volatile memory with countermeasure for over programming |
US10910076B2 (en) | 2019-05-16 | 2021-02-02 | Sandisk Technologies Llc | Memory cell mis-shape mitigation |
US10839928B1 (en) * | 2019-05-16 | 2020-11-17 | Sandisk Technologies Llc | Non-volatile memory with countermeasure for over programming |
US11169876B2 (en) | 2019-12-31 | 2021-11-09 | Micron Technology, Inc. | Apparatuses, systems, and methods for error correction |
US11437092B2 (en) | 2020-05-27 | 2022-09-06 | Taiwan Semiconductor Manufacturing Company, Ltd. | Systems and methods to store multi-level data |
TWI784515B (zh) * | 2020-05-27 | 2022-11-21 | 台灣積體電路製造股份有限公司 | 記憶體系統以及操作記憶體系統的方法 |
KR20220030092A (ko) * | 2020-09-02 | 2022-03-10 | 에스케이하이닉스 주식회사 | 메모리 장치 및 이의 동작 방법 |
CN112908392B (zh) * | 2021-02-09 | 2023-09-15 | 东芯半导体股份有限公司 | 控制非易失性存储器参数的控制方法 |
Family Cites Families (41)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5555204A (en) | 1993-06-29 | 1996-09-10 | Kabushiki Kaisha Toshiba | Non-volatile semiconductor memory device |
KR0169267B1 (ko) | 1993-09-21 | 1999-02-01 | 사토 후미오 | 불휘발성 반도체 기억장치 |
US5903495A (en) | 1996-03-18 | 1999-05-11 | Kabushiki Kaisha Toshiba | Semiconductor device and memory system |
US5768192A (en) | 1996-07-23 | 1998-06-16 | Saifun Semiconductors, Ltd. | Non-volatile semiconductor memory cell utilizing asymmetrical charge trapping |
US6768165B1 (en) | 1997-08-01 | 2004-07-27 | Saifun Semiconductors Ltd. | Two bit non-volatile electrically erasable and programmable semiconductor memory cell utilizing asymmetrical charge trapping |
US5867429A (en) | 1997-11-19 | 1999-02-02 | Sandisk Corporation | High density non-volatile flash memory without adverse effects of electric field coupling between adjacent floating gates |
US6522580B2 (en) * | 2001-06-27 | 2003-02-18 | Sandisk Corporation | Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states |
US6456528B1 (en) | 2001-09-17 | 2002-09-24 | Sandisk Corporation | Selective operation of a multi-state non-volatile memory system in a binary mode |
US7221591B1 (en) | 2002-05-06 | 2007-05-22 | Samsung Electronics Co., Ltd. | Fabricating bi-directional nonvolatile memory cells |
US7046568B2 (en) | 2002-09-24 | 2006-05-16 | Sandisk Corporation | Memory sensing circuit and method for low voltage operation |
US7327619B2 (en) | 2002-09-24 | 2008-02-05 | Sandisk Corporation | Reference sense amplifier for non-volatile memory |
US7196931B2 (en) | 2002-09-24 | 2007-03-27 | Sandisk Corporation | Non-volatile memory and method with reduced source line bias errors |
US6657891B1 (en) | 2002-11-29 | 2003-12-02 | Kabushiki Kaisha Toshiba | Semiconductor memory device for storing multivalued data |
US7073103B2 (en) | 2002-12-05 | 2006-07-04 | Sandisk Corporation | Smart verify for multi-state memories |
US6882567B1 (en) | 2002-12-06 | 2005-04-19 | Multi Level Memory Technology | Parallel programming of multiple-bit-per-cell memory cells on a continuous word line |
US6859397B2 (en) | 2003-03-05 | 2005-02-22 | Sandisk Corporation | Source side self boosting technique for non-volatile memory |
US7237074B2 (en) | 2003-06-13 | 2007-06-26 | Sandisk Corporation | Tracking cells for a memory system |
US6917542B2 (en) | 2003-07-29 | 2005-07-12 | Sandisk Corporation | Detecting over programmed memory |
US7064980B2 (en) | 2003-09-17 | 2006-06-20 | Sandisk Corporation | Non-volatile memory and method with bit line coupled compensation |
US6956770B2 (en) | 2003-09-17 | 2005-10-18 | Sandisk Corporation | Non-volatile memory and method with bit line compensation dependent on neighboring operating modes |
US6937520B2 (en) | 2004-01-21 | 2005-08-30 | Tsuyoshi Ono | Nonvolatile semiconductor memory device |
US6888758B1 (en) * | 2004-01-21 | 2005-05-03 | Sandisk Corporation | Programming non-volatile memory |
US7716413B2 (en) | 2004-02-15 | 2010-05-11 | Sandisk Il Ltd. | Method of making a multi-bit-cell flash memory |
JP4405292B2 (ja) | 2004-03-22 | 2010-01-27 | パナソニック株式会社 | 不揮発性半導体記憶装置及びその書き込み方法 |
US20060140007A1 (en) | 2004-12-29 | 2006-06-29 | Raul-Adrian Cernea | Non-volatile memory and method with shared processing for an aggregate of read/write circuits |
US7212436B2 (en) | 2005-02-28 | 2007-05-01 | Micron Technology, Inc. | Multiple level programming in a non-volatile memory device |
US7196928B2 (en) | 2005-04-05 | 2007-03-27 | Sandisk Corporation | Compensating for coupling during read operations of non-volatile memory |
US7187585B2 (en) | 2005-04-05 | 2007-03-06 | Sandisk Corporation | Read operation for non-volatile storage that includes compensation for coupling |
KR100621634B1 (ko) | 2005-05-06 | 2006-09-07 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 프로그램 방법 |
JP4282636B2 (ja) | 2005-06-22 | 2009-06-24 | 株式会社東芝 | 不揮発性半導体記憶装置とそのデータ書き込み方法 |
US7023737B1 (en) * | 2005-08-01 | 2006-04-04 | Sandisk Corporation | System for programming non-volatile memory with self-adjusting maximum program loop |
JP4157563B2 (ja) * | 2006-01-31 | 2008-10-01 | 株式会社東芝 | 半導体集積回路装置 |
JP2008084471A (ja) | 2006-09-28 | 2008-04-10 | Toshiba Corp | 半導体記憶装置 |
US7580290B2 (en) | 2007-06-21 | 2009-08-25 | Sandisk Corporation | Non-volatile storage system with intelligent control of program pulse duration |
US7630249B2 (en) | 2007-06-21 | 2009-12-08 | Sandisk Corporation | Intelligent control of program pulse duration |
US7869273B2 (en) | 2007-09-04 | 2011-01-11 | Sandisk Corporation | Reducing the impact of interference during programming |
JP2009141225A (ja) * | 2007-12-07 | 2009-06-25 | Sharp Corp | 可変抵抗素子、可変抵抗素子の製造方法、不揮発性半導体記憶装置 |
US7826248B2 (en) * | 2008-05-20 | 2010-11-02 | Seagate Technology Llc | Write verify method for resistive random access memory |
US8144511B2 (en) | 2009-08-19 | 2012-03-27 | Sandisk Technologies Inc. | Selective memory cell program and erase |
US8218366B2 (en) | 2010-04-18 | 2012-07-10 | Sandisk Technologies Inc. | Programming non-volatile storage including reducing impact from other memory cells |
US8947908B2 (en) * | 2010-11-04 | 2015-02-03 | Crossbar, Inc. | Hetero-switching layer in a RRAM device and method |
-
2010
- 2010-04-18 US US12/762,342 patent/US8218366B2/en not_active Ceased
-
2011
- 2011-04-14 CN CN201180027182.6A patent/CN102985976B/zh active Active
- 2011-04-14 EP EP11718560.3A patent/EP2561511B1/en not_active Not-in-force
- 2011-04-14 JP JP2013505158A patent/JP2013525935A/ja not_active Withdrawn
- 2011-04-14 KR KR1020127030130A patent/KR101736414B1/ko active IP Right Grant
- 2011-04-14 WO PCT/US2011/032575 patent/WO2011133404A1/en active Application Filing
- 2011-04-18 TW TW100113414A patent/TW201203258A/zh unknown
-
2014
- 2014-05-29 US US14/290,927 patent/USRE45910E1/en active Active
Also Published As
Publication number | Publication date |
---|---|
TW201203258A (en) | 2012-01-16 |
EP2561511A1 (en) | 2013-02-27 |
US20110255345A1 (en) | 2011-10-20 |
EP2561511B1 (en) | 2014-09-03 |
KR101736414B1 (ko) | 2017-05-16 |
USRE45910E1 (en) | 2016-03-01 |
WO2011133404A1 (en) | 2011-10-27 |
CN102985976A (zh) | 2013-03-20 |
US8218366B2 (en) | 2012-07-10 |
JP2013525935A (ja) | 2013-06-20 |
KR20130101976A (ko) | 2013-09-16 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102985976B (zh) | 包括减小其他存储单元的影响的对非易失性存储器的编程 | |
CN101849263B (zh) | 减少编程期间的干扰冲击 | |
CN102906820B (zh) | 用同步耦合编程非易失性存储器 | |
CN102099867B (zh) | 非易失性存储器的擦除-验证处理 | |
CN101584006B (zh) | 非易失性存储器中的经分割的软编程 | |
CN102160118B (zh) | 非易失性存储器阵列的最后字线的数据保持的改进 | |
US9672926B2 (en) | Apparatus and method of programming and verification for a nonvolatile semiconductor memory device | |
CN102782764B (zh) | 用于检测有风险的非易失性存储元件的方法和非易失性存储设备 | |
CN101006519B (zh) | 非易失性存储器系统及其编程的方法 | |
EP2368248B1 (en) | Adaptive erase and soft programming for memory | |
CN100589202C (zh) | 多级单元快闪存储器中较高级状态的较快编程 | |
CN102187399B (zh) | 使用字线耦合的用于存储器的多趟次编程 | |
KR101020812B1 (ko) | 비휘발성 메모리에서 개선된 판독 동작을 위해 선택 상태에서 보상을 사용하여 감지 및 다른 크기의 마진 프로그래밍 | |
US10629266B2 (en) | Memory cell programming with a programming pulse having plurality of different voltage levels | |
CN107112047A (zh) | 用于在非易失性存储器中区块编程的部分区块擦除 | |
CN102005244A (zh) | 非易失性存储的可变编程 | |
CN101779250B (zh) | 编程脉冲持续期的智能控制 | |
CN101802925B (zh) | 控制门线架构 | |
CN104704567A (zh) | 针对非易失性存储器的写入数据保存 | |
CN105009218A (zh) | 用于收紧阈值电压宽度以避免编程干扰的编程方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C56 | Change in the name or address of the patentee | ||
CP01 | Change in the name or title of a patent holder |
Address after: American Texas Patentee after: DELPHI INT OPERATIONS LUX SRL Address before: American Texas Patentee before: Sandisk Technologies, Inc |