首页> 中国专利> 用于收紧阈值电压宽度以避免编程干扰的编程方法

用于收紧阈值电压宽度以避免编程干扰的编程方法

摘要

一种非易失性存储系统执行多阶段编程处理以将非易失性存储装置编程为一组数据阈值电压分布。该多阶段编程处理包括:执行多阶段编程处理的第一阶段以将非易失性存储元件中的至少子集的阈值电压从擦除分布改变为一个或多个中间分布;执行多阶段编程处理的中间阶段以将非易失性存储元件中的至少部分非易失性存储元件的阈值电压改变为数据阈值电压分布中的适当分布;以及在执行多阶段编程处理的中间阶段之后,执行多阶段编程处理的后一阶段以仅收紧数据阈值电压分布的子集。

著录项

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2018-01-09

    授权

    授权

  • 2016-09-21

    著录事项变更 IPC(主分类):G11C11/56 变更前: 变更后: 申请日:20130709

    著录事项变更

  • 2015-11-25

    实质审查的生效 IPC(主分类):G11C11/56 申请日:20130709

    实质审查的生效

  • 2015-10-28

    公开

    公开

说明书

技术领域

本发明涉及用于非易失性存储装置的技术。

背景技术

半导体存储器设备已变得愈加普遍地用于各种电子设备中。例如,非 易失性半导体存储器用于蜂窝式电话、数码相机、个人数字助理、移动计 算设备、非移动计算设备以及其他设备中。电可擦除可编程只读存储器 (EEPROM)和闪速存储器在最普遍的非易失性半导体存储器之中。

EEPROM和闪速存储器两者均利用位于半导体衬底中的沟道区上方 且与其隔离的浮置栅极。浮置栅极位于源极区与漏极区之间。控制栅极设 置在浮置栅极上方并且与浮置栅极隔离。晶体管的阈值电压由保持在浮置 栅极上的电荷量控制。也就是说,在晶体管导通之前必须施加到控制栅极 以允许其源极与漏极之间导电的最小电压量由浮置栅极上的电荷电平控 制。

当对EEPROM或闪速存储器设备进行编程时,通常将编程电压施加 到控制栅极并且将位线接地。来自沟道的电子注入浮置栅极中。当电子在 浮置栅极中聚集时,浮置栅极变为带负电,并且存储器单元的阈值电压升 高,使得存储器单元处于编程状态。关于编程的更多信息可以查阅题为 “Source Side Self Boosting Technique For Non-Volatile Memory”的美国 专利6,859,397和题为“Detecting Over Programmed Memory”的美国专 利6,917,542,两个专利的全部内容通过引用并入本文中。

一些EEPROM和闪速存储器设备具有用于存储两个电荷范围的浮置 栅极,因此,存储器单元可在两个状态(与数据“1”和数据“0”对应的 擦除状态和编程状态)之间被编程/擦除。这样的设备被称为二进制设备或 双态设备。

通过识别多个不同的允许阈值电压范围来实现多态闪速存储器单元。 每个不同的阈值电压范围与在存储器单元中被编码的数据位组的预定值 对应。通常,可以使用2N个阈值电压范围(也被称为数据状态)来表示每 存储器单元N个数据位。每存储器单元使用高数量的数据位使得能够制造 具有高数据密度的闪存设备,从而降低了每个闪存设备的总成本。编程到 存储器单元中的数据与存储器单元的阈值电压范围之间的具体关系取决 于存储器单元所采用的数据编码方案。例如,第6,222,762号美国专利和 第2004/0255090号美国专利申请公布描述了用于多态闪速存储器单元的 各种数据编码方案,两者的全部内容通过引用并入本文中。

通常,将编程电压(Vpgm)作为一系列脉冲施加到存储器单元的控 制栅极。编程脉冲的幅度随每个连续脉冲而增加了预定步长(例如,0.2v、 0.3v、0.4v等)。在编程操作期间,将高电压施加到选择的字线(WL) 并且将0伏特施加到选择的位线(BL),其中未选择的WL保持处于传 导电压并且未选择的BL保持处于比编程电压低的某个电压。当期望对选 择的WL上的一个存储器单元进行编程而不对连接至同一字线的其他存 储器单元进行编程时出现问题。因为编程电压被施加到与选择的WL连接 的全部存储器单元,所以字线上的未选择的存储器单元(不是要被编程的 存储器单元),尤其是与被选择用于进行编程的存储器单元相邻的存储器 单元,可能无意中被编程。对选择的WL上的未选择的存储器单元的无意 编程被称为“编程干扰”。编程干扰通常在低电压电平存储器单元中更严 重,并且在使用高编程电压时增加。

另一个问题是浮置栅极与浮置栅极耦合。浮置栅极与浮置栅极耦合现 象在已被在不同时间编程的相邻存储器单元组之间最显著地发生。例如, 第一存储器单元被编程为将电荷电平添加到与一组数据对应的该第一存 储器单元的浮置栅极。随后,一个或多个相邻存储器单元被编程为将电荷 电平添加到与第二组数据对应的该一个或更多个相邻存储器单元的浮置 栅极。在对一个或更多个相邻存储器单元进行编程之后,从第一存储器单 元读取的电荷电平由于被耦合到第一存储器单元的相邻存储器单元上的 电荷效应而与经编程的电平不同。与相邻存储器单元的耦合可以使被读取 的表观电荷电平偏移足以导致对所存储的数据的错误读取的量。

多态设备更关注浮置栅极与浮置栅极耦合的影响,因为在多态设备 中,所允许的阈值电压范围和禁止范围比在二进制设备中更窄。因此,浮 置栅极与浮置栅极耦合可能导致存储器单元从允许阈值电压范围偏移到 禁止范围。

当将数据编程为多个状态(例如,而不是二进制编程)时,重要的是 编程处理足够精确以使得读取处理可以明确区分不同的阈值电压分布。编 程的精确度与在编程处理之后已编程的存储器单元的阈值电压的分布相 关。阈值电压分布越紧,越容易明确地读取存储器单元。为了获得紧密的 阈值电压分布,使用了大量的编程脉冲。使用高数量的编程脉冲导致在编 程操作期间施加到WL的高编程电压,这(在某些情况下)会导致更多编 程干扰。

附图说明

图1是NAND串的顶视图。

图2是NAND串的等效电路图。

图3是非易失性存储器系统的框图。

图4是描绘了感测块的一个实施例的框图。

图5是描绘了存储器阵列的一个实施例的框图。

图6是描述了用于编程的处理的一个实施例的流程图。

图7是描述了用于将数据编程到存储器单元块中的处理的一个实施例 的流程图。

图8是描述了用于对非易失性存储器进行编程的处理的一个实施例的 流程图。

图9描绘了三个编程脉冲以及施加在编程脉冲之间的验证脉冲。

图10描绘了阈值电压分布的示例组并且描述了用于对非易失性存储 器进行编程的处理。

图11描绘了将数据编码成与阈值电压分布相关联的一组数据状态的 示例。

图12A至图12E示出了多阶段编程的一个示例。

图13是描述了根据本技术的一个实施例的多阶段编程的流程图。

图14A至图14D描述了根据本技术的一个实施例的多阶段编程。

图15A至图15D描述了根据本技术的另一实施例的多阶段编程。

图16A至图16D描述了根据本技术的另一实施例的多阶段编程。

具体实施方式

用于在对一组非易失性存储元件进行编程时实现紧密阈值分布以避 免编程干扰的一个解决方案是使用多阶段编程处理。多阶段编程处理的第 一阶段包括:将非易失性存储元件中的至少子集的阈值电压从擦除分布改 变为一个或多个中间分布。多阶段编程处理的中间阶段包括:将非易失性 存储元件中的至少部分非易失性存储元件的阈值电压改变为数据阈值电 压分布中的适当分布。在执行多阶段编程处理的中间阶段之后执行的多阶 段编程处理的后一阶段包括:仅收紧数据阈值电压分布中的子集。在一个 实施例中,执行多阶段编程处理的中间阶段包括:将非易失性存储元件编 程为数据阈值电压分布中的全部分布;以及执行多阶段编程处理的后一阶 段包括:收紧低状态数据阈值电压分布,而不收紧高状态数据阈值电压分 布。

可以实现本文中描述的技术的非易失性存储系统的一个示例是使用 NAND结构的闪速存储器系统,其包括布置夹在两个选择栅极之间的串联 的多个晶体管。串联的晶体管和选择栅极被称为NAND串。图1是示出了 一个NAND串的顶视图。图2是其等效电路。图1和图2中描绘的NAND 串包括串联的且夹在(漏极侧)选择栅极120与(源极侧)选择栅极122 之间的四个晶体管100、102、104以及106。选择栅极120将NAND串经 由位线接触部126连接至位线。选择栅极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串具有128个或更多个存储器 单元。本文中的讨论不限于NAND串中的任何具体数量的存储器单元。一 个实施例使用具有66个存储器单元的NAND串,其中64个存储器单元用 于存储数据,并且存储器单元中的两个存储器单元由于其不存储数据而被 称为伪存储器单元(dummy memory cell)。

使用NAND结构的闪速存储器系统的典型架构包括若干NAND串。 每个NAND串通过由选择线SGS控制的其源极选择栅极而连接至公共源 极线,并且通过由选择线SGD控制的其漏极选择栅极而连接至其关联的 位线。每条位线和经由位线接触部连接至该位线的相应的(一个或多个) NAND串包括存储器单元阵列的列。位线由多个NAND串共用。通常, 位线沿垂直于字线的方向在NAND串之上运行并且连接至感测放大器。

在以下美国专利/专利申请中提供了NAND型闪速存储器及其操作的 相关示例:美国专利第5,570,315号;美国专利第5,774,397号;美国专利 第6,046,935号;美国专利第6,456,528号;以及美国专利公布第 US2003/0002348号,其全部内容通过引用并入本文中。

除NAND闪速存储器外,还可以使用其他类型的非易失性存储设备来 实现本文中描述的新技术。例如,TANOS结构(由硅衬底上的 TaN-Al2O3-SiN-SiO2堆叠层构成)也可以与本文中描述的技术一起使用, 该TANOS结构基本上是利用在氮化层中俘获电荷的存储器单元(代替浮 置栅极)。用在闪速EEPROM系统中的另一类型的存储器单元利用非导 电介电材料来代替导电浮置栅极以按非易失性方式储存电荷。在Chan等 人的文章“A True Single-Transistor Oxide-Nitride-Oxide EEPROM  Device”(IEEE Electron Device Letters,第EDL-8卷,第3期,1987年3 月,第93页至第95页)中对这样的存储器单元进行了描述。由氧化硅、 氮化硅、和氧化硅(“ONO”)形成的三层电介质夹在存储器单元沟道上 方的导电控制栅极与半导电衬底的表面之间。通过将来自存储器单元沟道 的电子注入到氮化物中来对存储器单元进行编程,其中电子被俘获并且储 存在有限的区域中。这样储存的电荷然后以可检测的方式来改变存储器单 元的沟道的一部分的阈值电压。通过将热空穴注入到氮化物中来对存储器 单元进行擦除。此外,参见Nozaki等人的“A 1-Mb EEPROM with MONOS  Memory Cell for Semiconductor Disk Application”(IEEE Journal of  Solid-State Circuits,第26卷,第4期,1991年4月,第497页至第501 页),其描述了分栅(split-gate)配置中的类似单元,其中掺杂有多晶硅 的栅极在存储器单元沟道的一部分之上延伸以形成单独的选择晶体管。

图3示出了存储器设备210,其具有用于对并联的存储器单元(例如, NAND多态闪速存储器)的页面进行读取和编程的读/写电路。存储器设备 210可以包括一个或多个存储器管芯或芯片212。存储器管芯212包括存 储器单元阵列(二维或三维)200、控制电路220以及读/写电路230A和 230B。在一个实施例中,在阵列的相对侧以对称方式来实现各个外围电路 对存储器阵列200的访问,使得在每一侧的访问线(access line)和电路的 密度减小一半。读/写电路230A和230B包括多个感测块300,其使得能够 对存储器单元的页面进行并行读取或编程。存储器阵列200可通过经由行 解码器240A和240B的字线和通过经由列解码器242A和242B的位线寻 址。在典型的实施例中,控制器244与一个或多个存储器管芯212一样包 括在同一存储器设备210(例如,可移动存储卡或封装件)中。经由线232 在主机与控制器244之间以及经由线路234在控制器与一个或多个存储器 管芯212之间传递命令和数据。一些存储器系统可以包括与控制器244通 信的多个管芯212。

控制电路220与读/写电路230A和230B协作以对存储器阵列200执 行存储器操作。控制电路220包括状态机222、芯片上地址解码器224以 及功率控制模块226。状态机222提供存储器操作的芯片级控制。芯片上 地址解码器224为解码器240A、240B、242A以及242B所使用的硬件地 址提供主机或存储器控制器使用的地址之间的地址接口。功率控制模块 226控制在存储器操作期间向字线和位线供给的功率和电压。在一个实施 例中,功率控制模块226包括可以产生大于供给电压的电压的一个或多个 电荷泵。控制电路220、功率控制226、解码器224、状态机222、解码器 240A/240B和242A/242B、读/写电路230A/230B以及控制器244可以被统 一地或单独地称为一个或多个管理电路。

图4是被划分成称为感测模块480的核心部分与公共部分490的单个 感测块300的框图。在一个实施例中,对于每条位线有单独的感测模块480 并且对于一组多个感测模块480有一个公共部分490。在一个示例中,感 测块包括一个公共部分490和八个感测模块480。一组中的每个感测模块 将经由数据总线472与关联的公共部分进行通信。对于进一步详情,参考 美国专利申请公布2006/0140007,其全部内容通过引用并入本文中。

感测模块480包括确定所连接的位线中的传导电流是在预定电平以上 还是以下的感测电路470。在一些实施例中,感测模块480包括通常被称 为感测放大器的电路。感测模块480还包括用于设置所连接的位线上的电 压条件的位线锁存器482。例如,锁存在位线锁存器482中的预定状态将 导致所连接的位线被拉到指定编程禁止的状态(例如,Vdd)。

公共部分490包括处理器492、一组数据锁存器494以及耦接在该组 数据锁存器494与数据总线420之间的I/O接口496。处理器492执行计 算。例如,处理器492的功能之一是确定存储在所感测的存储器单元中的 数据并且将所确定的数据存储在该组数据锁存器中。该组数据锁存器494 用于存储在读取操作期间由处理器492确定的数据位。该组数据锁存器494 还用于存储在编程操作期间从数据总线420导入的数据位。所导入的数据 位表示打算编程到存储器中的写入数据。I/O接口496提供数据锁存器494 与数据总线420之间的接口。

在读取或感测期间,系统的操作受状态机222的控制,状态机222控 制向被寻址的存储器单元供给不同的控制栅极电压。由于状态机222单步 调试(step through)与存储器支持的各种存储器状态对应的各个预定义的 控制栅极电压(读取参考电压或验证参考电压),所以感测模块480可以 在这些电压中的一个电压下跳变(trip)并且将经由总线472从感测模块 480向处理器492提供输出。在这一点上,处理器492通过考虑感测模块 的(一个或多个)跳变事件以及关于经由输入线493从状态机施加的控制 栅极电压的信息来确定所得到的存储器状态。处理器492接着计算对于存 储器状态的二进制编码并且将所得到的数据位存储到数据锁存器494中。 在核心部分的另一实施例中,位线锁存器482担负双重任务:既作为用于 锁存感测模块480的输出的锁存器,又作为如上所述的位线锁存器。

可以预料到的是,一些实现方式包括多个处理器492。在一个实施例 中,每个处理器492包括输出线(图4中未描绘),以使得每条输出线被 线或(OR)在一起。在一些实施例中,输出线在连接至线或的线之前被 反转。该配置使得能够在编程验证处理期间快速确定编程处理何时已完 成,这是因为容纳线或的线的状态机可以确定正被编程的全部位何时已达 到期望电平。例如,当每个位已达到其期望电平时,向线或的线发送该位 的逻辑零(或者反转数据1)。当全部位输出数据0(或者数据1反转) 时,则状态机知道要终止编程处理。在每个处理器与八个感测模块进行通 信的实施例中,状态机可能(在一些实施例中)需要读取线或的线八次, 或者向处理器492添加逻辑电路以累积关联的位线的结果,以使得状态机 仅需要读取线或的线一次。在具有许多感测模块的一些实施例中,可以将 许多感测模块的线或的线分组成N个感测模块的组,并且可以对这些组进 行分组以形成二叉树。

在编程或验证期间,将要编程的数据从数据总线420存储在该组数据 锁存器494中。在状态机的控制下,编程操作包括同时施加到被寻址的存 储器单元的控制栅极的一系列编程电压脉冲(具有增加的幅度),以使得 存储器单元被同时编程。每个编程脉冲之后是验证处理以确定存储器单元 是否已被编程为期望状态。处理器492监测相对于期望的存储器状态的经 验证的存储器状态。当两者一致时,处理器492设置位线锁存器482以使 位线被拉到指定编程禁止的状态。这抑制了耦接到位线的存储器单元进一 步进行编程,即使在其控制栅极上经受编程脉冲也是如此。在其他实施例 中,处理器最初加载位线锁存器482,并且感测电路在验证处理期间将其 设置为禁止值。

数据锁存器堆栈494包括与感测模块对应的数据锁存器堆栈。在一个 实施例中,每个感测模块480有三个(或四个或另一数量)数据锁存器。 在一些实现方式中(但不要求),将数据锁存器实现为移位寄存器,使得 其中存储的并行数据被转换为用于数据总线420的串行数据,并且反之亦 然。在一个优选实施例中,可以将与存储器单元的读/写块对应的全部数据 锁存器链接在一起以形成块移位寄存器,使得可以通过串行传输来输入或 输出数据块。具体地,将读/写模块库适配成使得其数据锁存器组中的每个 数据锁存器将数据依次移进或移出数据总线,就好像其是用于整个读/写块 的移位寄存器的一部分。

可以在以下专利申请中查阅关于非易失性存储设备的各种实施例的 结构和/或操作的附加信息:(1)2004年3月25日公布的美国专利申请 公布第2004/0057287号,“Non-Volatile Memory And Method With  Reduced Source Line Bias Errors”;(2)2004年6月10日公布的美国专 利申请公布第2004/0109357号,“Non-Volatile Memory And Method with  Improved Sensing,”;(3)美国专利申请公布第20050169082号;(4) 2005年4月5日提交的发明人为Jian Chen的、题为“Compensating for  Coupling During Read Operations of Non-Volatile Memory”的美国专利申 请公布2006/0221692;(5)2005年12月28日提交的发明人为Sui Lung  Chan和Raul-Adrian Cernea的、题为“Reference Sense Amplifier For  Non-Volatile Memory”的美国专利申请公布2006/0158947。以上直接列出 的全部五个专利文献的全部内容通过引用并入本文中。

图5描绘了存储器单元阵列200的示例性结构。在一个实施例中,将 存储器单元阵列划分成大量存储器单元块。如对于闪速EEPROM系统所 常见的,块是擦除单位。也就是说,每个块包含被一起擦除的最小数量的 存储器单元。其他实施例可以使用不同的擦除单位。

作为一个示例,将图5中描绘的NAND闪速EEPROM划分成1024 个块。然而,可以使用多于或少于1024个块。在该示例中,在每个块中 有与位线BL0、BL1、…BL69,623对应的69,624个列。在一个实施例中, 在读取操作和编程操作期间可以同时选择块的全部位线。可以同时(例如 同期地)对沿着公共字线并且连接至任意位线的存储器单元进行编程(或 读取)。在另一实施例中,将位线划分成偶数位线和奇数位线。在奇数/ 偶数位线架构中,在一个时间对沿着公共字线并且连接至奇数位线的存储 器单元进行编程,而在另一时间对沿着公共字线并且连接至偶数位线的存 储器单元进行编程。

图5示出了串联连接以形成NAND串的四个存储器单元。虽然四个存 储器单元被示为包括在每个NAND串中,但是可以使用多于或少于四个 (例如,16个、32个、64个、128个或另一数量的存储器单元可以在NAND 串上)。NAND串的一个端子经由漏极选择栅极(其连接至选择栅极漏极 线SGD)连接至对应的位线,并且另一端子经由源极选择栅极(其连接至 选择栅极源极线SGS)连接至源极线。

通常将每个块划分成许多页面。在一个实施例中,页面是编程单位。 一个或多个页面的数据通常存储在一行存储器单元中。页面可以存储一个 或多个扇区(sector)。扇区包括用户数据和开销数据。开销数据通常包 括已根据扇区的用户数据而计算出的纠错码(ECC)。控制器在数据被编 程到阵列中时计算ECC,并且还在数据被从阵列中读取时校验ECC。在 一些实施例中,状态机、控制器或其他部件可以计算并校验ECC。在一些 替选中,ECC和/或其他开销数据存储在与和其有关的用户数据不同的页 面或甚至不同的块中。用户数据的扇区通常为512个字节,其与磁盘驱动 器中的扇区的大小相对应。大量页面构成块,大概由例如8个页面构成, 可达32、64、128或更多个页面。在一个实施例中,块的每条字线与一个 页面相关联。在另一实施例中,块的每条字线与3个页面相关联。在其他 实施例中,字线可以与其他数量的页面相关联。

一些存储器单元的编程或擦除比其他存储器单元慢,这是因为那些存 储器单元之间的制造变化、因为那些存储器单元先前被擦除以达到比其他 存储器单元更低的阈值电压、因为页面内的存储器单元之间的不均匀磨损 或者其他原因。而且,当然,一些存储器单元由于缺陷或其他原因而无论 如何都无法被编程或擦除。此外,一些存储器单元快速编程并且可以被过 编程,这也可能造成错误。如上所述,纠错编码提供了容忍一些数量的失 败的存储器单元、同时仍然将存储器保持为可用的能力。在一些应用中, 通过反复地施加编程脉冲来对数据的页面进行编程,直到页面上的全部存 储器单元验证为期望的编程状态为止。在一些实现方式中,当尚未被完全 编程或擦除的错误存储器单元的数量少于可纠正的位数时,通过终止编程 脉冲或擦除脉冲的序列来节省编程和擦除时间。

图6是描述用于进行编程的处理的一个实施例的流程图。在步骤520 中,从主机、控制器或其他实体接收用于进行编程的请求。在步骤522中, 控制器(或状态机或其他实体)确定哪组的一个或多个块来存储数据。在 步骤524中,将针对该请求而接收到的数据编程到存储器单元的一个或多 个块中。在步骤526中,可以读取数据。步骤524与步骤526之间的虚线 表明在编程与读取之间可以存在不可预测的时间量。

图7是描述了用于对存储器块进行编程的处理的流程图。在图6的步 骤524期间,执行图7的处理一次或多次。在一个示例实现方式中,对存 储器单元进行预编程以保持存储器单元上的均匀磨损(步骤550)。在一 个实施例中,将存储器单元预编程为最高数据状态、随机模式或任何其他 模式。在一些实现方式中,无需执行预编程。一些实施例不实现预编程。

在步骤552中,在编程之前(以块或其他单位)擦除存储器单元。在 一个实施例中,通过将p阱提高至擦除电压(例如,20伏特)达充足的时 间段并且在源极线和位线浮置时将选择的块的字线接地来擦除存储器单 元。在未被选择为进行擦除的块中,字线被浮置。由于电容耦合,未被选 择的字线、位线、选择线以及公共源极线也被提高至擦除电压的相当大的 一部分,由此阻碍了对未被选择为进行擦除的块的擦除。在被选择为进行 擦除的块中,向选择的存储器单元的隧道氧化层施加强电场,并且通常通 过富勒-诺得海姆(Fowler-Nordheim)隧穿机制,随着浮置栅极的电子被 发射到衬底侧,选择的存储器单元被擦除。由于电子从浮置栅极传递到p 阱区域,所以降低了选择的存储器单元的阈值电压。可以对整个存储器阵 列、对各个块或存储器单元的另一单位执行擦除。在一个实施例中,在擦 除存储器单元后,块中的被擦除的全部存储器单元将处于状态S0(以下讨 论)。擦除处理的一种实现方式包括将若干个擦除脉冲施加到p阱并且在 擦除脉冲之间验证NAND串是否被适当地擦除。

在步骤554中,(可选地)执行软编程以缩窄对于所擦除的存储器单 元的擦除阈值电压分布。由于擦除处理,一些存储器单元可以处于比需要 的状态更深的擦除状态。软编程可以施加编程脉冲以将被较深地擦除的存 储器单元的阈值电压移至擦除阈值分布。在步骤556中,对块的存储器单 元进行编程。可以响应于来自主机的进行编程的请求或响应于内部处理来 执行编程。在进行编程之后,可以读取块的存储器单元。可以使用本领域 中公知的许多不同的读取处理来读取数据。在一些实施例中,读取处理包 括使用ECC来纠错。读取的数据被输出到请求了读取操作的主机。ECC 处理可以由状态机、控制器或另一设备来执行。擦除-编程循环可以发生许 多次而不进行读取或者与进行读取无关,该读取处理可以发生许多次而不 进行编程或者与进行编程无关并且读取处理可以在进行编程之后的任何 时间发生。可以在状态机的指引下使用上述各种电路来执行图7的处理。 在其他实施例中,可以在控制器的指引下使用上述各种电路来执行图7的 处理。

图8是描述用于对与公共字线连接的存储器单元进行编程的处理的一 个实施例的流程图。在图7的步骤556期间,可以执行图8的处理一次或 多次。例如,可以使用图8的处理来将存储器单元从数据状态S0直接编 程(例如,全序列编程)为如图10所示的数据状态S1至SF中的任意状 态。替选地,可以将图8的处理与多阶段编程处理一起使用。

通常,将在编程操作期间被施加到控制栅极的编程电压作为一系列编 程脉冲来施加。在编程脉冲之间是用于执行验证的一组验证脉冲。在许多 实现方式中,编程脉冲的幅度随每个连续脉冲而增加了预定的步长。在图 8的步骤570中,将编程电压(Vpgm)初始化为起始幅度(例如,~12-16V 或另一适当电平),并且将由状态机222保持的编程计数器PC初始化为 1。在步骤572中,将编程信号Vpgm的编程脉冲施加到所选择的字线(被 选择用于进行编程的字线)。在一个实施例中,将同期地被编程的一组存 储器单元全部连接至同一字线(所选择的字线)。未选择的字线接收一个 或多个升压电压(例如,~7-11伏特)以执行本领域中公知的升压方案。 如果存储器单元应该被编程,则对应的位线接地。另一方面,如果存储器 单元应该保持在其当前阈值电压,则对应的位线连接至Vdd以禁止编程。 在步骤572中,将编程脉冲同期地施加到与所选择的字线连接的全部存储 器单元,使得与所选择的字线连接的全部存储器单元同期地被编程。也就 是说,它们同时(或在重叠时间期间)被编程。以这种方式,与所选择的 字线连接的全部存储器单元将同期地使其阈值电压改变,除非它们已被锁 定而不进行编程。

在步骤574中,使用适当的目标电平组来验证适当的存储器单元以执 行一种或多种验证操作。在一个实施例中,通过应用对被选择用于进行编 程的存储器单元的阈值电压是否已达到适当的验证比较电压的测试来执 行验证处理(图10示出了一组验证比较电压Vv1、Vv2、Vv3、Vv4、Vv5、 Vv6、Vv7、Vv8、Vv9、Vv10、Vv11、Vv13、Vv13、Vv14、以及Vv15)。

在步骤576中,确定全部存储器单元是否已达到它们的目标阈值电压 (通过)。如果是这样,则编程处理完成且成功,这是因为选择的全部存 储器单元被编程且验证为它们的目标状态。在步骤578中报告“通过”的 状态。如果在576中确定出并非全部存储器单元都已达到它们的目标阈值 电压(失败),则编程处理继续至步骤580。

在步骤580中,系统对还未达到它们各自的目标阈值电压分布的存储 器单元的数量进行计数。也就是说,系统对未通过验证处理的存储器单元 的数量进行计数。该计数可以由状态机、控制器或其他逻辑电路来完成。 在一种实现方式中,每个感测块300(参见图3)存储它们各自的存储器 单元的状态(通过/失败)。可以使用数字计数器来对这些值进行计数。如 上所述,许多感测块具有线或在一起的输出信号。因而,检查一条线就可 以表明大的存储器单元组中没有存储器单元验证失败。通过适当地组织线 或在一起的线(例如,类似二叉树的结构),可以使用二分搜索法来确定 已失败的存储器单元的数量。以这样的方式,如果少量存储器单元失败, 则迅速完成计数。如果大量存储器单元失败,则计数占用较长时间。更多 信息可以查阅美国专利公布2008/0126676,其全部内容通过引用并入本文 中。在另一替选实施例中,如果每个感测放大器的对应的存储器单元已失 败,则该感测放大器可以输出模拟电压或电流,并且可以使用模拟电压/ 电流求和电路来对已失败的存储器单元的数量进行计数。

在一个实施例中,存在一个总计数,其反映未通过最后验证步骤的、 当前被编程的存储器单元的总数量。在另一实施例中,对于每个数据状态 保留单独计数。

在步骤582中,确定来自步骤580的计数是否小于或等于预定限值。 在一个实施例中,预定限值是在对于存储器单元的页面的读取处理期间可 以通过ECC纠正的位数。如果失败的存储器单元的数量小于或等于预定 限值,则编程处理可以停止,并且在步骤578中报告“通过”的状态。在 这种情况下,正确地对足够的存储器单元进行编程,以使得在读取处理期 间可以使用ECC来对还尚未被完全编程的一些剩余的存储器单元进行纠 正。在一些实施例中,步骤580针对每个扇区、每个目标数据状态或其他 单位而对失败的存储器单元的数量进行计数,并且在步骤582中将那些计 数单独地或全体地与阈值进行比较。

在另一实施例中,预定限值可以小于在读取处理期间可以通过ECC 纠正的位数,以对未来的错误留有余地。当对少于全部存储器单元的页面 进行编程,或者与仅一个数据状态(或少于全部状态)的计数相比较时, 预定限值可以是在对于存储器单元的页面的读取处理期间可以通过ECC 纠正的位的数量的一部分(按比例或不按比例)。在一些实施例中,该限 值不是预定的。替代地,其基于已针对页面计数的错误的数量、所执行的 编程-擦除循环的次数、温度或其他标准而改变。

如果失败的存储器单元的数量不少于预定限值,则编程处理在步骤 584继续,并且对照编程限制值(PL)来检查编程计数器PC。编程限制 值的示例包括20和30;然而,可以使用其他值。如果编程计数器PC不 小于编程限制值PL,则认为编程处理已失败,并且在步骤588中报告失 败的状态。如果编程计数器PC小于编程限制值PL,则处理在步骤586 继续,在其期间编程计数器PC递增了1并且编程电压Vpgm步进达到下 一幅度。例如,下一脉冲具有比前一脉冲大一个步长(例如,0.1伏特至 0.4伏特的步长)的幅度。在步骤586之后,处理循环返回至步骤572,并 且将另一编程脉冲施加到所选择的字线。

在一些实施例中,在编程操作期间施加到控制栅极的编程电压包括幅 度随每个连续脉冲而增加预定步长(例如,0.2v、0.3v、0.4v等)的一系 列脉冲。在脉冲之间,一些存储器系统验证各个存储器单元是否已达到它 们各自的目标阈值电压范围。例如,图9示出了施加到与公共字线连接的 多个存储器单元的控制栅极的信号的一部分。图9示出了编程脉冲564、 565以及566,其中一组验证脉冲在编程脉冲之间。当在一个实施例中执 行全序列编程时,编程脉冲之间的验证处理将针对每个阈值电压分布(数 据状态)进行测试。例如,如果存储器单元存储三位数据,则存在八个有 效的阈值电压分布(也被称为数据状态:S0、S1、S2、S3、S4、S5、S6 以及S7)。在本示例中,将数据从S0(S0是针对擦除的存储器单元)编 程为S1至S7。因此,图9示出了具有与验证目标电平Vv1、Vv2、Vv3、 Vv4、Vv5、Vv6以及Vv7对应的幅度的七个验证脉冲。然而,其他实施 例可以使用每存储器单元多于或少于三位数据。例如,图10示出了在每 个存储器单元存储四位数据时与存储器单元阵列的数据状态对应的示例 阈值电压分布。因此,图10示出了与数据状态S0至SF对应的十六个阈 值电压分布。在本实施例中,存在具有与验证目标电平Vv1、Vv2、Vv3、 Vv4、Vv5、Vv6、Vv7、Vv8、Vv9、Vv10、Vv11、Vv13、Vv13、Vv14、、 Vv15对应的幅度的十五个验证脉冲。

在一些实施例中,由于验证操作不是必需的或者是多余的,所以可以 省略一种或多种验证操作(并且因此,可以省略一个或多个验证脉冲)。 例如,如果没有一个正被编程的存储器单元已达到Vv2,则达到Vv7的可 能性非常低,因此在Vv7处进行验证是不必要的。可以在全部内容通过引 用并入本文中的以下专利文献中查阅关于省略针对一个或更多个状态的 验证的智能验证方案的更多信息:美国专利7,073,103;美国专利7,224,614; 美国专利7,310,255;美国专利7,301,817;美国专利申请2004/0109362; 以及美国专利申请2009/0147573。

在成功的编程处理(利用验证)结束时,存储器单元的阈值电压应视 情况在用于所编程的存储器单元的阈值电压的一个或多个分布内,或者在 用于所擦除的存储器单元的阈值电压分布内。图10示出了当每个存储器 单元存储四位数据时存储器单元阵列的示例阈值电压分布。然而,其他实 施例可以使用每存储器单元多于或少于四位数据(例如,诸如每存储器单 元三位数据)。

在图10的示例中,每个存储器单元存储四位数据;因此,存在十六 个有效的阈值电压分布,也被称为数据状态:S0、S1、S2、S3、S4、S5、 S6、S7、S8、S9、SA、SB、SC、SD、SE以及SF。在一个实施例中,数 据状态S0在0伏特以下,并且数据状态S1至SF在0伏特以上。在其他 实施例中,所有十六个数据状态都在0伏特以上,或者可以实现其他布置。 在一个实施例中,S0的阈值电压分布比S1至SF的阈值电压分布宽。

在一些设备中,存储器单元被擦除而达到状态S0。可以将存储器单元 从状态S0编程为状态S1至SF中的任意状态。在一个实施例中,被称为 全序列编程,可以将存储器单元从擦除状态S0直接编程为编程状态S1至 SF中的任意状态。例如,可以首先将要编程的存储器单元的全体擦除,使 得该全体中的全部存储器单元处于擦除状态S0。在将一些存储器单元从状 态S0编程为状态S1时,可以将其他存储器单元从状态S0编程为状态S2、 从状态S0编程为状态S3、从状态S0编程为状态S4、从状态S0编程为状 态S5、从状态S0编程为状态S6、从状态S0编程为状态S7、从状态S0 编程为状态S8、从状态S0编程为状态S9、从状态S0编程为状态SA、从 状态S0编程为状态SB、从状态S0编程为状态SC、从状态S0编程为状 态SD、从状态S0编程为状态SE以及从状态S0编程为状态SF。全序列 编程可以通过图10的十五个曲线箭头以图形方式描绘。

图10示出了一组验证目标电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6、 Vv7、Vv8、Vv9、Vv10、Vv11、Vv12、Vv13、Vv14以及Vv15。这些验 证电平在编程处理期间被用作比较电平(也称为目标电平)。例如,当将 存储器单元编程为数据状态S1时,系统进行检查以查看存储器单元的阈 值电压是否已达到Vv1。如果存储器单元的阈值电压尚未达到Vv1,则针 对该存储器单元的编程将继续,直到其阈值电压大于或等于Vv1为止。如 果存储器单元的阈值电压已达到Vv1,则针对该存储器单元的编程将停止。 验证目标电平Vv2用于被编程为数据状态S2的存储器单元。验证目标电 平Vv3用于被编程为数据状态S3的存储器单元。验证目标电平Vv4用于 被编程为数据状态S4的存储器单元。验证目标电平Vv5用于被编程为数 据状态S5的存储器单元。验证目标电平Vv6用于被编程为数据状态S6 的存储器单元。验证目标电平Vv7用于被编程为数据状态S7的存储器单 元。验证目标电平Vv8用于被编程为数据状态S8的存储器单元。验证目 标电平Vv9用于被编程为数据状态S9的存储器单元。验证目标电平Vv10 用于被编程为数据状态SA的存储器单元。验证目标电平Vv11用于被编 程为数据状态SB的存储器单元。验证目标电平Vv12用于被编程为数据状 态SC的存储器单元。验证目标电平Vv13用于被编程为数据状态SD的存 储器单元。验证目标电平Vv14用于被编程为数据状态SE的存储器单元。 验证目标电平Vv15用于被编程为数据状态SF的存储器单元。

图10还示出了一组读取比较电平Vr1、Vr2、Vr3、Vr4、Vr5、Vr6、 Vr7、Vr8、Vr9、Vr10、Vr11、Vr12、Vr13、Vr14以及Vr15。这些读取 比较电平在读取处理期间被用作比较电平。通过测试存储器单元是否响应 于被单独地施加到存储器单元的控制栅极的读取比较电平Vr1、Vr2、Vr3、 Vr4、Vr5、Vr6、Vr7、Vr8、Vr9、Vr10、Vr11、Vr12、Vr13、Vr14以 及Vr15而接通或保持关断,系统可以确定存储器单元将数据存储为哪些 状态。

一般来说,在验证操作和读取操作期间,选择的字线连接至如下电压, 该电压的电平被指定用于每个读取操作(例如,参见图10的读取比较电 平Vr1、Vr2、Vr3、Vr4、Vr5、Vr6、Vr7、Vr8、Vr9、Vr10、Vr11、 Vr12、Vr13、Vr14以及Vr15)或验证操作(例如,参见图10的验证目 标电平Vv1、Vv2、Vv3、Vv4、Vv5、Vv6、Vv7、Vv8、Vv9、Vv10、Vv11、 Vv12、Vv13、Vv14以及Vv15),以便确定所关注的存储器单元的阈值电 压是否已达到这样的电平。在施加字线电压之后,测量存储器单元的传导 电流以确定存储器单元是否响应于施加到字线的电压而接通。如果传导电 流被测量为大于特定值,则假设存储器单元接通并且施加到字线的电压大 于存储器单元的阈值电压。如果传导电流被测量为不大于特定值,则假设 存储器单元没有接通并且施加到字线的电压不大于存储器单元的阈值电 压。在读取或验证处理期间,未选择的存储器单元在其控制栅极处被提供 了一个或多个读取通过电压,使得这些存储器单元用作通过栅极(例如, 传导电流而与其是被编程还是被擦除无关)。

存在很多测量存储器单元在读取操作或验证操作期间的传导电流的 方法。在一个示例中,根据存储器单元对感测放大器中的专用电容器放电 或充电的速率来测量存储器单元的传导电流。在另一示例中,所选择的存 储器单元的传导电流使得(或无法使得)包括存储器单元的NAND串能够 使相应的位线放电。一段时间之后测量位线上的电压以查看其是否已放 电。注意,本文中所描述的技术可以与本领域中公知的用于验证/读取的不 同方法一起使用。关于验证/读取的更多信息可以在全部内容通过引用并入 本文中的以下专利文献中查阅:(1)美国专利申请公布第2004/0057287 号;(2)美国专利申请公布第2004/0109357号;(3)美国专利申请公布 第2005/0169082号;以及(4)美国专利申请公布第2006/0221692号。根 据本领域中公知的技术来执行上述的读取和验证操作。因而,本领域的技 术人员可以改变所说明的许多细节。也可以使用本领域中公知的其他读取 和验证技术。

图10的每个数据状态对应于在被编程为相应状态的存储器单元中存 储的数据位的预定值。图11是提供被分配给每个数据状态S0至SF的数 据值的示例的表。在一个实施例中,存储器单元将数据存储在四个不同页 面中。四个页面被称为第一下部页面、第二上部页面,第三更高页面以及 第四顶部页面。图11描绘了每个页面中针对每个数据状态S0至SF的数 据。在一个实施例中,单独地对每个页面进行编程。在另一实施例中,同 时对存储器单元的全部四个数据位进行编程。也可以使用数据到状态S0 至SF的其他映射。被编程到存储器单元中的数据与存储器单元的阈值电 压电平之间的具体关系取决于针对存储器单元所采用的数据编码方案。例 如,美国专利第6,222,762号和2003年6月13日提交的美国专利申请公 布第2004/0255090号“Tracking Cells For A Memory System”描述了用 于多态闪速存储器单元的各种数据编码方案,这两者的全部内容通过引用 并入本文中。

在一个实施例中,使用格雷码分配来将图11的数据值分配给阈值电 压范围使得:如果浮置栅极的阈值电压错误地偏移到其相邻的阈值电压分 布,则仅影响一个位。这种布置在存储器单元的阈值电压太低或太高的情 况下减少了错误位的数量。然而,在其他实施例中,不使用格雷码。

当将数据编程为多个状态(例如,而不是二进制编程)时,重要的是, 编程处理足够精确以使得读取处理可以明确区分不同的阈值电压分布。例 如,阈值电压分布越紧密,越容易明确地读取存储器单元。

一种用于实现紧密阈值电压分布而没有不合理地减慢编程处理的解 决方案包括使用两阶段编程处理。粗略编程阶段包括:试图以更快的方式 提高阈值电压并且更少关注于实现紧密阈值电压分布。精细编程阶段试图 以更慢的方式提高阈值电压以达到目标阈值电压、同时还实现更紧密阈值 电压分布。关于粗略/精细编程的更多信息可以查阅全部内容通过引用并入 本文中的以下专利文献:(1)美国专利6,643,188;以及(2)美国专利 7,092,290。

正如前面注意到的那样,对选择的WL上的未选择的存储器单元的无 意编程被称为“编程干扰”。通常,由于较高编程电压(Vpgm),低数 据状态比较高数据状态遭受更多编程干扰。

一种用于减少编程干扰的解决方案包括:在对较高/高数据状态进行编 程之后对低数据状态进行编程(也称为高状态优先(high-state-first)或 “HSF”编程)。例如,对8电平存储器单元设备(S0至S7)进行编程 包括:首先对较高状态S4至S7进行编程,并且在对较高状态进行编程之 后对较低状态S1至S3进行编程。HSF减少了对低数据状态的编程干扰影 响。根据存储器单元的目标状态对存储器单元的编程的该排序与公知技术 相反,在公知技术中,编程处理从低阈值状态进行到高阈值状态。关于 HSF编程的更多信息可以在题为“Programming a NAND flash memory  with reduced program disturb”的美国专利8,059,456中查阅,其全部内容 通过引用并入本文中。

为了实现紧密阈值电压分布、同时避免编程干扰,一种解决方案是将 粗略/精细编程与如上所述的HSF编程组合。然而,如以下在图12A至图 12E中描述的那样,这种解决方案的缺点在于,在粗略编程阶段的低状态 可能遭受由在精细编程阶段的高状态编程引起的编程干扰。

图12A至图12E示出了多阶段编程方法的一个示例。在本实施例中, 编程处理包括三个阶段。在编程之前,擦除存储器单元,使得连接至公共 字线的全部存储器单元都处于擦除阈值电压分布E。在编程的第一阶段期 间,将存储器单元中的至少子集从擦除阈值电压分布E编程为一个或多个 中间阈值电压分布。例如,如图12A中描绘的那样,将存储器单元中的目 标为数据状态S4至S7的第一子集编程为具有阈值电压LU_1的中间阈值 电压分布IM_1,将存储器单元中的目标为数据状态S8至SB的第二子集 编程为具有阈值电压LU_2的中间阈值电压分布IM_2,将存储器单元中 的目标为数据状态SC至SF的第三子集编程为具有阈值电压LU_3的中间 阈值电压分布IM_3。在本示例中,要被编程为数据状态S0至S3的那些 存储器单元保持处于擦除阈值电压分布E。

在图12A至图12E的编程处理的第二阶段(粗略编程)期间,如图 12B中描绘的那样,首先将存储器单元编程为针对高数据状态的适当数据 阈值电压分布。例如,如可以从图12B看到的那样,将要被编程为数据状 态S8的那些存储器单元从中间阈值电压分布IM_2编程为针对数据状态 S8的数据阈值电压分布,将要被编程为数据状态S9的那些存储器单元从 中间阈值电压分布IM_2编程为针对数据状态S9的数据阈值电压分布,将 要被编程为数据状态SA的那些存储器单元从中间阈值电压分布IM_2编 程为针对数据状态SA的数据阈值电压分布,以及将要被编程为数据状态 SB的那些存储器单元从中间阈值电压分布IM_2编程为针对数据状态SB 的数据阈值电压分布。同样,将要被编程为数据状态SC的那些存储器单 元从中间阈值电压分布IM_3编程为针对数据状态SC的数据阈值电压分 布,将要被编程为数据状态SD的那些存储器单元从中间阈值电压分布 IM_3编程为针对数据状态SD的数据阈值电压分布,将要被编程为数据状 态SE的那些存储器单元从中间阈值电压分布IM_3编程为针对数据状态 SE的数据阈值电压分布,以及将要被编程为数据状态SF的那些存储器单 元从中间阈值电压分布IM_3编程为针对数据状态SF的数据阈值电压分 布。

在第二阶段(即,粗略编程)期间,在编程为高数据状态之后,随后 将存储器单元编程为针对低数据状态的适当数据阈值电压分布。例如,如 从图12C可以看到的那样,将要被编程为数据状态S0的那些存储器单元 从擦除阈值电压分布E编程为针对数据状态S0的数据阈值电压分布,将 要被编程为数据状态S1的那些存储器单元从擦除阈值电压分布E编程为 针对数据状态S1的数据阈值电压分布,将要被编程为数据状态S2的那些 存储器单元从擦除阈值电压分布E编程为针对数据状态S2的数据阈值电 压分布,以及将要被编程为数据状态S3的这些存储器单元从擦除阈值电 压分布E编程为针对数据状态S3的数据阈值电压分布。同样,将要被编 程为数据状态S4的那些存储器单元从中间阈值电压分布IM_1编程为针对 数据状态S4的数据阈值电压分布,将要被编程为数据状态S5的那些存储 器单元从中间阈值电压分布IM_1编程为针对数据状态S5的数据阈值电压 分布,将要被编程为数据状态S6的那些存储器单元从中间阈值电压分布 IM_1编程为针对数据状态S6的数据阈值电压分布,以及将要被编程为数 据状态S7的那些存储器单元从中间阈值电压分布IM_1编程为针对数据状 态S7的数据阈值电压分布。

如可以在图12C中看到的那样,在编程的第二阶段结束时,全部数据 状态(状态S0至状态SF)与相邻数据状态不重叠。在一些实施例中,全 部或部分数据状态可以与相邻数据状态重叠。

在图12A至图12E的编程处理的第三阶段(精细编程)中,首先收紧 针对上部数据状态的数据阈值电压分布。例如,如图12D中描绘的那样, 收紧针对数据状态S8的数据阈值电压分布以实现具有目标阈值电压Vv9 的针对数据状态S8的目标阈值电压分布,收紧针对数据状态S9的数据阈 值电压分布以实现具有目标阈值电压Vv10的针对数据状态S9的目标阈值 电压分布,收紧针对数据状态SA的数据阈值电压分布以实现具有目标阈 值电压Vv11的针对数据状态SA的目标阈值电压分布,收紧针对数据状 态SB的数据阈值电压分布以实现具有目标阈值电压Vv12的针对数据状态 SB的目标阈值电压分布,收紧针对数据状态SC的数据阈值电压分布以实 现具有目标阈值电压Vv13的针对数据状态SC的目标阈值电压分布,收 紧针对数据状态SD的数据阈值电压分布以实现具有目标阈值电压Vv14 的针对数据状态SD的目标阈值电压分布,收紧针对数据状态SE的数据 阈值电压分布以实现具有目标阈值电压Vv15的针对数据状态SE的目标阈 值电压分布,以及收紧针对数据状态SF的数据阈值电压分布以实现具有 目标阈值电压Vv16的针对数据状态SF的目标阈值电压分布。

在编程的第三阶段期间,在收紧高状态数据阈值电压分布之后,随后 收紧针对低数据状态的数据阈值电压分布。这通过图12E来以图形的方式 描绘。例如,如图12E中描绘的那样,收紧针对数据状态S0的数据阈值 电压分布以实现具有目标阈值电压Vv1的针对数据状态S0的目标阈值电 压分布,收紧针对数据状态S1的数据阈值电压分布以实现具有目标阈值 电压Vv2的针对数据状态S1的目标阈值电压分布,收紧针对数据状态S2 的数据阈值电压分布以实现具有目标阈值电压Vv3的针对数据状态S2的 目标阈值电压分布,收紧针对数据状态S3的数据阈值电压分布以实现具 有目标阈值电压Vv4的针对数据状态S3的目标阈值电压分布,收紧针对 数据状态S4的数据阈值电压分布以实现具有目标阈值电压Vv5的针对数 据状态S4的目标阈值电压分布,收紧针对数据状态S5的数据阈值电压分 布以实现具有目标阈值电压Vv6的针对数据状态S5的目标阈值电压分布, 收紧针对数据状态S6的数据阈值电压分布以实现具有目标阈值电压Vv7 的针对数据状态S6的目标阈值电压分布,以及收紧针对数据状态S7的数 据阈值电压分布以实现具有目标阈值电压Vv8的针对数据状态S7的目标 阈值电压分布。

在一些实施例中,在编程处理的第二阶段期间不对要被编程为一种或 多种数据状态的一些存储器单元进行编程,因此,这些存储器单元保持处 于中间状态。在第三编程阶段期间,将这些存储器单元从中间状态编程为 其适当的目标数据状态。在其他实施例中,在编程处理的第二阶段期间, 被指定为其他目标数据状态的存储器单元也可以保持处于中间状态或擦 除阈值电压分布E。

如可以在图12B至图12E中看到的那样,在粗略编程阶段和精细编程 阶段二者中,高状态优先(HSF)都首先对高数据状态进行编程并且随后 对低数据状态进行编程。然而,在粗略编程阶段的低数据状态(参见图12C) 可能遭受因在精细编程阶段对高数据状态的编程(参见图12D)引起的编 程干扰。

为了收紧阈值电压分布、同时避免编程干扰(例如,如图12A至图 12E的编程处理中描绘的编程干扰),如下详细描述的那样,本文描述的 系统在编程处理期间针对一种或多种数据状态来屏蔽(mask)数据。

图13是描述根据本技术的一个实施例的对一组非易失性存储元件的 多阶段编程的流程图,该多阶段编程提供了精确编程,同时减少编程干扰 以及浮置栅极与浮置栅极耦合。在图7的步骤556期间可以执行图13的 处理一次或多次。例如,图13的处理可以用于对连接至公共字线的存储 器单元进行编程;因此,如果针对块来对连接至X条字线的存储器单元进 行编程,则执行图13的处理X次。在一个实施例中,图13的处理包括三 个阶段,并且每个阶段包括执行图8的处理一次或多次。

在编程之前,擦除非易失性存储元件,使得连接至公共字线的全部存 储器单元都处于擦除阈值电压分布E。在图13的步骤850中,针对非易失 性存储元件执行多阶段编程处理的第一阶段,以将存储器单元中的至少子 集的阈值电压从擦除分布改变为中间阈值电压分布。步骤850中的编程的 第一阶段类似于如图12A中描绘的编程的第一阶段。

在图13的步骤852中,针对非易失性存储元件来执行多阶段编程处 理的中间阶段以将非易失性存储元件中的至少部分非易失性存储元件的 阈值电压改变为目标数据阈值电压分布中的适当分布。在一个实施例中, 执行中间阶段包括:首先将非易失性存储元件的第一子集编程为高状态数 据阈值电压分布,并且随后将非易失性存储元件的第二子集编程为低状态 数据阈值电压分布。例如,在中间阶段期间,首先将要被编程为高数据状 态S8至SF的那些存储器单元编程为高状态数据阈值电压分布中的适当分 布,并且在编程为高状态数据阈值电压分布之后,随后将要被编程为低数 据状态S0至S7的那些存储器单元编程为低状态数据阈值电压分布中的适 当分布。图14B至图14C包括步骤852的一种示例实现方式。图15B包 括步骤852的另一示例实现方式。图16B包括步骤852的又一示例实现方 式。

在步骤854中,在中间阶段之后,执行多阶段编程处理的后一阶段, 该阶段仅收紧数据阈值电压分布的子集。在一个实施例中,执行多阶段编 程处理的后一阶段包括:仅收紧低状态数据阈值电压分布,而不收紧高状 态数据阈值电压分布。图14D包括步骤854的一种示例实现方式。图15C 至图15D包括步骤854的另一示例实现方式。图16C至图16D包括步骤 854的又一示例实现方式。

图14A至图14D描述了根据本技术的一个实施例的针对一组非易失 性存储元件的多阶段编程,并且包括步骤850、步骤852以及步骤854的 一种示例实现方式。在该实施例中,图14A至图14D的编程处理包括三个 阶段。在编程之前,擦除非易失性存储元件,使得连接至公共字线的全部 存储器单元都处于擦除阈值电压分布E。如图14A中描绘的编程的第一阶 段将存储器单元中的至少子集编程为中间阈值电压分布(例如,如图14A 中描绘的IM_1、IM_2和IM_3),并且类似于如图12A中描绘的编程的 第一阶段。

在图14A至图14D的编程处理的第二阶段(粗略编程)期间,首先 将非易失性存储元件的第一子集编程为高状态数据阈值电压分布,并且在 将非易失性存储元件的第一子集编程为高状态数据阈值电压分布之后,随 后将非易失性存储元件的第二子集编程为低状态数据阈值电压分布。在一 些实施例中,首先将要被编程为数据状态S8至SF的那些存储器单元编程 为高状态数据阈值电压分布中的适当分布。例如,如通过图14B以图形的 方式描绘的那样,将要被编程为数据状态S8的那些存储器单元从中间阈 值电压分布IM_2编程为具有目标阈值电压Vv9的针对数据状态S8的目 标数据阈值电压分布,将要被编程为数据状态S9的那些存储器单元从中 间阈值电压分布IM_2编程为具有目标阈值电压Vv10的针对数据状态S9 的目标数据阈值电压分布,将要被编程为数据状态SA的那些存储器单元 从中间阈值电压分布IM_2编程为具有目标阈值电压Vv11的针对数据状 态SA的目标数据阈值电压分布,将要被编程为数据状态SB的那些存储 器单元从中间阈值电压分布IM_2编程为具有目标阈值电压Vv12的针对 数据状态SB的目标数据阈值电压分布,将要被编程为数据状态SC的那 些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压Vv13 的针对数据状态SC的目标数据阈值电压分布,将要被编程为数据状态SD 的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值电压 Vv14的针对数据状态SD的目标数据阈值电压分布,将要被编程为数据状 态SE的那些存储器单元从中间阈值电压分布IM_3编程为具有目标阈值 电压Vv15的针对数据状态SE的目标数据阈值电压分布,以及将要被编程 为数据状态SF的那些存储器单元从中间阈值电压分布IM_3编程为具有 目标阈值电压Vv16的针对数据状态SF的目标数据阈值电压分布。

随后,在图14A至图14E的编程处理的第二阶段(粗略编程)中,在 编程为针对数据状态S8至SF的高状态数据阈值电压分布之后,将要被编 程为数据状态S0至S7的那些存储器单元编程为低状态数据阈值电压分布 中的适当分布。例如,如通过图14C以图形的方式描绘的那样,将要被编 程为数据状态S0的那些存储器单元从擦除阈值电压分布E编程为具有目 标阈值电压PT_0的针对数据状态S0的数据阈值电压分布,将要被编程为 数据状态S1的那些存储器单元从擦除阈值电压分布E编程为具有目标阈 值电压PT_1的针对数据状态S1的数据阈值电压分布,将要被编程为数据 状态S2的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电 压PT_2的针对数据状态S2的数据阈值电压分布,将要被编程为数据状态 S3的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电压 PT_3的针对数据状态S3的数据阈值电压分布,将要被编程为数据状态S4 的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压 PT_4的针对数据状态S4的数据阈值电压分布,将要被编程为数据状态S5 的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压 PT_5的针对数据状态S5的数据阈值电压分布,将要被编程为数据状态S6 的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电压 PT_6的针对数据状态S6的数据阈值电压分布,以及将要被编程为数据状 态S7的那些存储器单元从中间阈值电压分布IM_1编程为具有目标阈值电 压PT_7的针对数据状态S7的数据阈值电压分布。如图14B至图14C中 以图形的方式描绘的编程处理的第二阶段示出了图13中的步骤852的一 种示例实现方式。

在图14A至图14D的编程处理的第三阶段(精细编程)中,收紧针 对低数据状态的数据阈值电压分布而不收紧高状态数据阈值电压分布。例 如,如图14D中描绘的那样,收紧针对数据状态S0的数据阈值电压分布 以实现具有目标阈值电压Vv1的针对数据状态S0的目标阈值电压分布, 收紧针对数据状态S1的数据阈值电压分布以实现具有目标阈值电压Vv2 的针对数据状态S1的目标阈值电压分布,收紧针对数据状态S2的数据阈 值电压分布以实现具有目标阈值电压Vv3的针对数据状态S2的目标阈值 电压分布,收紧针对数据状态S3的数据阈值电压分布以实现具有目标阈 值电压Vv4的针对数据状态S3的目标阈值电压分布,收紧针对数据状态 S4的数据阈值电压分布以实现具有目标阈值电压Vv5的针对数据状态S4 的目标阈值电压分布,收紧针对数据状态S5的数据阈值电压分布以实现 具有目标阈值电压Vv6的针对数据状态S5的目标阈值电压分布,收紧针 对数据状态S6的数据阈值电压分布以实现具有目标阈值电压Vv7的针对 数据状态S6的目标阈值电压分布,以及收紧针对数据状态S7的数据阈值 电压分布以实现具有目标阈值电压Vv8的针对数据状态S7的目标阈值电 压分布。如图14D中描绘的编程处理的第三阶段示出了图13中的步骤854 的一种示例实现方式。

如可以从图14A至图14D看到的那样,在编程为低状态数据阈值电 压分布之后不收紧高状态数据阈值电压分布。由于在最后对低数据状态进 行编程,所以低数据状态不太可能遭受由高数据状态引起的编程干扰。

图15A至图15D描述了根据本技术的另一实施例的针对一组非易失 性存储元件的多阶段编程,并且包括步骤850、步骤852以及步骤854的 一种示例实现方式。在该实施例中,图15A至图15D的编程处理包括三个 阶段。在进行编程之前,擦除非易失性存储元件,使得连接至公共字线的 全部存储器单元都处于擦除阈值电压分布E。如图15A中描绘的编程的第 一阶段将存储器单元中的至少子集编程为中间阈值电压分布(例如,如图 15A中描绘的IM_1、IM_2、IM_3),并且类似于如图12A中描绘的编程 的第一阶段。

在图15A至图15D的编程处理的第二阶段(粗略编程)期间,将非 易失性存储元件编程为高状态数据阈值电压分布,而不编程为低状态数据 阈值电压分布。在一些实施例中,在编程处理的第二阶段期间,将要被编 程为数据状态S8至SF的那些存储器单元编程为高状态数据阈值电压分布 中的适当分布。例如,如通过图15B以图形方式描绘的那样,将要被编程 为数据状态S8的那些存储器单元从中间阈值电压分布IM_2编程为具有目 标阈值电压PT_8的针对数据状态S8的数据阈值电压分布,将要被编程为 数据状态S9的那些存储器单元从中间阈值电压分布IM_2编程为具有目标 阈值电压PT_9的针对数据状态S9的数据阈值电压分布,将要被编程为数 据状态SA的那些存储器单元从中间阈值电压分布IM_2编程为具有目标 阈值电压PT_A的针对数据状态SA的数据阈值电压分布,将要被编程为 数据状态SB的那些存储器单元从中间阈值电压分布IM_2编程为具有目 标阈值电压PT_B的针对数据状态SB的数据阈值电压分布,将要被编程 为数据状态SC的那些存储器单元从中间阈值电压分布IM_3编程为具有 目标阈值电压PT_C的针对数据状态SC的数据阈值电压分布,将要被编 程为数据状态SD的那些存储器单元从中间阈值电压分布IM_3编程为具 有目标阈值电压PT_D的针对数据状态SD的数据阈值电压分布,将要被 编程为数据状态SE的那些存储器单元从中间阈值电压分布IM_3编程为 具有目标阈值电压PT_E的针对数据状态SE的数据阈值电压分布,以及 将要被编程为数据状态SF的那些存储器单元从中间阈值电压分布IM_3 编程为具有目标阈值电压PT_F的针对数据状态SF的数据阈值电压分布。 如图15B中描绘的编程处理的第二阶段示出了图13中的步骤852的一种 示例实现方式。

在图15A至图15D的编程处理的第二阶段期间,不对要被编程为数 据状态S0至S7的那些存储器单元进行编程。在一些实施例中,要被编程 为数据状态S0至S3的那些存储器单元在第二阶段期间保持在擦除阈值电 压分布E状态,并且要被编程为数据状态S4至S7的那些存储器单元在第 二阶段期间保持处于中间阈值电压分布IM_1。

在图15A至图15D的编程处理的第三阶段(精细编程)中,首先收 紧高状态数据阈值电压分布,并且在收紧高状态数据阈值电压分布之后, 随后将非易失性存储元件编程为低状态数据阈值电压分布。在一些实施例 中,在编程处理的第三阶段期间,首先收紧针对数据状态S8至SF的数据 阈值电压分布以实现目标阈值电压分布中的适当分布。例如,如图15C中 描绘的那样,收紧针对数据状态S8的数据阈值电压分布以实现具有目标 阈值电压Vv9的针对数据状态S8的目标阈值电压分布,收紧针对数据状 态S9的数据阈值电压分布以实现具有目标阈值电压Vv10的针对数据状态 S9的目标阈值电压分布,收紧针对数据状态SA的数据阈值电压分布以实 现具有目标阈值电压Vv11的针对数据状态SA的目标阈值电压分布,收 紧针对数据状态SB的数据阈值电压分布以实现具有目标阈值电压Vv12 的针对数据状态SB的目标阈值电压分布,收紧针对数据状态SC的数据 阈值电压分布以实现具有目标阈值电压Vv13的针对数据状态SC的目标 阈值电压分布,收紧针对数据状态SD的数据阈值电压分布以实现具有目 标阈值电压Vv14的针对数据状态SD的目标阈值电压分布,收紧针对数 据状态SE的数据阈值电压分布以实现具有目标阈值电压Vv15的针对数据 状态SE的目标阈值电压分布,以及收紧针对数据状态SF的数据阈值电压 分布以实现具有目标阈值电压Vv16的针对数据状态SF的目标阈值电压分 布。

随后,在图15A至图15D的编程处理的第三阶段(精细编程)中, 在收紧针对数据状态S8至SF的高状态数据阈值电压分布之后,将要被编 程为数据状态S0至S7的那些存储器单元编程为低状态数据阈值电压分布 中的适当分布。例如,如通过图15D以图形的方式描绘的那样,将要被编 程为数据状态S0的那些存储器单元从擦除阈值电压分布E编程为具有目 标阈值电压Vv1的针对数据状态S0的目标数据阈值电压分布,将要被编 程为数据状态S1的那些存储器单元从擦除阈值电压分布E编程为具有目 标阈值电压Vv2的针对数据状态S1的目标数据阈值电压分布,将要被编 程为数据状态S2的那些存储器单元从擦除阈值电压分布E编程为具有目 标阈值电压Vv3的针对数据状态S2的目标数据阈值电压分布,将要被编 程为数据状态S3的那些存储器单元从擦除阈值电压分布E编程为具有目 标阈值电压Vv4的针对数据状态S3的目标数据阈值电压分布,将要被编 程为数据状态S4的那些存储器单元从中间阈值电压分布IM_1编程为具有 目标阈值电压Vv5的针对数据状态S4的目标数据阈值电压分布,将要被 编程为数据状态S5的那些存储器单元从中间阈值电压分布IM_1编程为具 有目标阈值电压Vv6的针对数据状态S5的目标数据阈值电压分布,将要 被编程为数据状态S6的那些存储器单元从中间阈值电压分布IM_1编程为 具有目标阈值电压Vv7的针对数据状态S6的目标数据阈值电压分布,以 及将要被编程为数据状态S7的那些存储器单元从中间阈值电压分布IM_1 编程为具有目标阈值电压Vv8的针对数据状态S7的目标数据阈值电压分 布。如图15C至图5D中描绘的编程处理的第三阶段示出了图13中的步骤 854的一种示例实现方式。

如可以从图15A至图15D看到的那样,在编程为低状态数据阈值电 压分布之后不收紧高状态数据阈值电压分布。由于在最后对低数据状态进 行编程,所以低数据状态不太可能遭受由高数据状态引起的编程干扰。

图16A至图16D描述了根据本技术的另一实施例的针对一组非易失 性存储元件的多阶段编程,并且包括步骤850、步骤852以及步骤854的 一种示例实现方式。在该实施例中,图16A至图16D的编程处理包括三个 阶段。在进行编程之前,擦除非易失性存储元件,使得连接至公共字线的 全部存储器单元都处于擦除阈值电压分布E。如图16A中描绘的编程的第 一阶段将存储器单元中的至少子集存储器单元编程为中间阈值电压分布 (例如,如图16A中描绘的IM_1、IM_2、IM_3),并且类似于如图12A 中描绘的编程的第一阶段。

在图16A至图16D的编程处理的第二阶段(粗略编程)期间,将非 易失性存储元件编程为高状态数据阈值电压分布和第一组低状态数据阈 值电压分布,而不编程为第二组低状态数据阈值电压分布。在一些实施例 中,在编程处理的第二阶段期间将要被编程为数据状态S8至SF的那些存 储器单元编程为高状态数据阈值电压分布中的适当分布,并且将要被编程 为数据状态S2至S7的那些存储器单元编程为第一组低状态数据阈值电压 分布中的适当分布。例如,如通过图16B以图形的方式描绘的那样,将要 被编程为数据状态S8的那些存储器单元从中间阈值电压分布IM_2编程为 具有目标阈值电压PT_8的针对数据状态S8的数据阈值电压分布,将要被 编程为数据状态S9的那些存储器单元从中间阈值电压分布IM_2编程为具 有目标阈值电压PT_9的针对数据状态S9的数据阈值电压分布,将要被编 程为数据状态SA的那些存储器单元从中间阈值电压分布IM_2编程为具 有目标阈值电压PT_A的针对数据状态SA的数据阈值电压分布,将要被 编程为数据状态SB的那些存储器单元从中间阈值电压分布IM_2编程为 具有目标阈值电压PT_B的针对数据状态SB的数据阈值电压分布,将要 被编程为数据状态SC的那些存储器单元从中间阈值电压分布IM_3编程 为具有目标阈值电压PT_C的针对数据状态SC的数据阈值电压分布,将 要被编程为数据状态SD的那些存储器单元从中间阈值电压分布IM_3编 程为具有目标阈值电压PT_D的针对数据状态SD的数据阈值电压分布, 将要被编程为数据状态SE的那些存储器单元从中间阈值电压分布IM_3 编程为具有目标阈值电压PT_E的针对数据状态SE的数据阈值电压分布, 以及将要被编程为数据状态SF的那些存储器单元从中间阈值电压分布 IM_3编程为具有目标阈值电压PT_F的针对数据状态SF的数据阈值电压 分布。

同样如通过图16B以图形的方式描绘的那样,在编程处理的第二阶段 期间,将要被编程为数据状态S2的那些存储器单元从擦除阈值电压分布E 编程为具有目标阈值电压PT_2的针对数据状态S2的数据阈值电压分布, 将要被编程为数据状态S3的那些存储器单元从擦除阈值电压分布E编程 为具有目标阈值电压PT_3的针对数据状态S3的数据阈值电压分布,将要 被编程为数据状态S4的那些存储器单元从中间阈值电压分布IM_1编程为 具有目标阈值电压PT_4的针对数据状态S4的数据阈值电压分布,将要被 编程为数据状态S5的那些存储器单元从中间阈值电压分布IM_1编程为具 有目标阈值电压PT_5的针对数据状态S5的数据阈值电压分布,将要被编 程为数据状态S6的那些存储器单元从中间阈值电压分布IM_1编程为具有 目标阈值电压PT_6的针对数据状态S6的数据阈值电压分布,将要被编程 为数据状态S7的那些存储器单元从中间阈值电压分布IM_1编程为具有目 标阈值电压PT_7的针对数据状态S7的数据阈值电压分布。如图16B中 描绘的编程处理的第二阶段示出了图13中的步骤852的一种示例实现方 式。

然而,在图16A至图16D的编程处理的第二阶段期间,不对要被编 程为最低数据状态S0至S1的那些存储器单元进行编程,并且因此要被编 程为最低数据状态S0至S1的那些存储器单元保持在擦除阈值电压分布E 状态。如将在下面讨论的那样,在完成了对全部高数据状态的编程之后, 最后对最低数据状态S0至S1(最低数据状态S0和S1经受最多编程干扰) 进行编程。

在图16A至图16D的编程处理的第三阶段(精细编程)中,首先收 紧高状态数据阈值电压分布,并且在收紧高状态数据阈值电压分布之后, 随后收紧第一组低状态数据阈值电压分布。同样,在编程处理的第三阶段 期间,在收紧高状态数据阈值电压分布之后,随后将非易失性存储元件编 程为第二组低状态数据阈值电压分布。

在一些实施例中,在编程处理的第三阶段期间,首先收紧针对高数据 状态S8至SF的数据阈值电压分布以实现针对数据状态S8至SF的目标阈 值电压分布中的适当分布。例如,如图16C中描绘的那样,收紧针对数据 状态S8的数据阈值电压分布以实现具有目标阈值电压Vv9的针对数据状 态S8的目标阈值电压分布,收紧针对数据状态S9的数据阈值电压分布以 实现具有目标阈值电压Vv10的针对数据状态S9的目标阈值电压分布,收 紧针对数据状态SA的数据阈值电压分布以实现具有目标阈值电压Vv11 的针对数据状态SA的目标阈值电压分布,收紧针对数据状态SB的数据 阈值电压分布以实现具有目标阈值电压Vv12的针对数据状态SB的目标阈 值电压分布,收紧针对数据状态SC的数据阈值电压分布以实现具有目标 阈值电压Vv13的针对数据状态SC的目标阈值电压分布,收紧针对数据 状态SD的数据阈值电压分布以实现具有目标阈值电压Vv14的针对数据 状态SD的目标阈值电压分布,收紧针对数据状态SE的数据阈值电压分 布以实现具有目标阈值电压Vv15的针对数据状态SE的目标阈值电压分 布,以及收紧针对数据状态SF的数据阈值电压分布以实现具有目标阈值 电压Vv16的针对数据状态SF的目标阈值电压分布。

随后,在图16A至图16D的编程处理的第三阶段(精细编程)中, 在收紧针对数据状态S8至SF的高状态数据阈值电压分布之后,收紧针对 低数据状态S2至S7的数据阈值电压分布。例如,如图16D中描绘的那样, 收紧针对数据状态S2的数据阈值电压分布以实现具有目标阈值电压Vv3 的针对数据状态S2的目标阈值电压分布,收紧针对数据状态S3的数据阈 值电压分布以实现具有目标阈值电压Vv4的针对数据状态S3的目标阈值 电压分布,收紧针对数据状态S4的数据阈值电压分布以实现具有目标阈 值电压Vv5的针对数据状态S4的目标阈值电压分布,收紧针对数据状态 S5的数据阈值电压分布以实现具有目标阈值电压Vv6的针对数据状态S5 的目标阈值电压分布,收紧针对数据状态S6的数据阈值电压分布以实现 具有目标阈值电压Vv7的针对数据状态S6的目标阈值电压分布,以及收 紧针对数据状态S7的数据阈值电压分布以实现具有目标阈值电压Vv8的 针对数据状态S7的目标阈值电压分布。

同样,在图16A至图16D的编程处理的第三阶段期间,在收紧针对 数据状态S8至SF的高状态数据阈值电压分布之后,随后将要被编程为数 据状态S0至S1的那些存储器单元编程为低状态数据阈值电压分布中的适 当分布。例如,如通过图16D以图形方式描绘的那样,将要被编程为数据 状态S0的那些存储器单元从擦除阈值电压分布E编程为具有目标阈值电 压Vv1的针对数据状态S0的目标数据阈值电压分布,以及将要被编程为 数据状态S1的那些存储器单元从擦除阈值电压分布E编程为具有目标阈 值电压Vv2的针对数据状态S1的目标数据阈值电压分布。由于两个最低 数据状态S0和S1经受最多编程干扰,所以图16A至图16D的编程处理 确保在完成了对全部高数据状态的编程之后最后对数据状态S0和S1进行 编程。这减少了总的编程干扰。如图16C至图16D中描绘的编程处理的第 三阶段示出了图13中的步骤854的一种示例实现方式。

在上述示例实施例中,针对高状态优先编程在数据状态S7与数据状 态S8之间划分数据状态S0至SF。在一些实施例中,针对高状态优先编 程的对数据状态S0至SF的划分可以移动到其他数据状态。例如,在数据 状态S3与数据状态S4之间划分数据状态S0至SF,以使得数据状态S4 至SF是针对高状态优先编程的高数据状态。在另一示例中,在数据状态 SB与数据状态SC之间划分数据状态S0至SF,以使得数据状态SC至SF 是针对高状态优先编程的高数据状态。

一个实施例包括一种将非易失性存储装置编程为一组数据阈值电压 分布的方法,该方法包括:针对连接至公共字线的一组非易失性存储元件 来执行多阶段编程处理的第一阶段以将非易失性存储元件中的至少子集 的阈值电压从擦除分布改变为一个或多个中间分布;执行多阶段编程处理 的中间阶段以将非易失性存储元件中的至少部分非易失性存储元件的阈 值电压改变为数据阈值电压分布中的适当分布;以及在中间阶段之后执行 多阶段编程处理的后一阶段,该后一阶段仅收紧数据阈值电压分布中的子 集。

一个实施例包括:多个非易失性存储元件;以及与非易失性存储元件 通信的一个或多个管理电路,用于将非易失性存储元件编程为一组数据阈 值电压分布。为了对非易失性存储元件进行编程,该一个或多个管理电路 执行多阶段编程处理,包括:执行多阶段编程处理的第一阶段以将非易失 性存储元件中的至少子集的阈值电压从擦除分布改变为一个或多个中间 分布;执行多阶段编程处理的中间阶段以将非易失性存储元件中的至少部 分非易失性存储元件的阈值电压改变为数据阈值电压分布中的适当分布; 以及在执行多阶段编程处理的中间阶段之后执行多阶段编程处理的后一 阶段以仅收紧数据阈值电压分布中的子集。

一个实施例包括:针对连接至公共字线的一组非易失性存储元件来执 行多阶段编程处理的第一阶段以将非易失性存储元件中的至少子集的阈 值电压从擦除分布改变为多个中间分布;执行多阶段编程处理的中间阶段 以将非易失性存储元件的阈值电压改变为低状态数据阈值电压分布和高 状态数据阈值电压分布;以及在中间阶段之后执行多阶段编程处理的后一 阶段,该后一阶段仅收紧低状态数据阈值电压分布而不收紧高状态数据阈 值电压分布。

一个实施例包括:执行多阶段编程处理的第一阶段以将非易失性存储 元件从擦除分布编程为多个中间分布;执行多阶段编程处理的中间阶段以 将非易失性存储元件编程为一组数据阈值电压分布中的多个分布;以及在 中间阶段之后,通过首先收紧高状态数据阈值电压分布并且随后收紧低状 态数据阈值电压分布来执行多阶段编程处理的后一阶段。

出于说明和描述目的,已呈现了以上详细描述。其不旨在穷尽或限于 所公开的确切形式。根据上述教导可进行许多修改和变化。选择所描述的 实施例是为了最佳地说明所公开的技术的原理及其实际应用,从而使得本 领域的技术人员能够最佳地利用各种实施例中的具有适合于所预期的特 定用途的各种修改的技术。范围由本文所附权利要求来限定。

权利要求书(按照条约第19条的修改)

1.一种用于在将非易失性多态存储元件编程为一组N个数据阈值电 压分布时减少编程干扰的发生的方法,N为大于2的自然数,所述方法包 括:

针对连接至公共字线的一组非易失性存储元件来执行多阶段编程处 理的第一阶段(850)以将所述非易失性存储元件中的至少子集的阈值电 压从擦除分布(E)改变为一个或多个中间分布(IM_1、IM_2、IM_3);

执行所述多阶段编程处理的中间阶段(852)以将所述非易失性存储 元件中的至少部分非易失性存储元件的阈值电压改变为至少高状态数据 阈值电压分布;以及

在所述中间阶段之后,执行所述多阶段编程处理的后一阶段(854) 以使得仅在高状态阈值分布已达到目标阈值分布之后,才执行对所述数据 阈值电压分布中的包括低状态数据阈值电压分布的子集的任意收紧。

2.根据权利要求1所述的方法,其中:

所述执行所述中间阶段包括:首先将所述非易失性存储元件的第一子 集编程为所述高状态数据阈值电压分布,随后将所述非易失性存储元件的 第二子集编程为所述低状态数据阈值电压分布;并且

所述执行所述多阶段编程处理的后一阶段包括:收紧所述低状态数据 阈值电压分布,而不收紧所述高状态数据阈值电压分布。

3.根据权利要求2所述的方法,其中:

在将所述非易失性存储元件的第二子集编程为所述低状态数据阈值 电压分布之后,不收紧所述高状态数据阈值电压分布。

4.根据权利要求1所述的方法,其中:

所述执行所述中间阶段包括:将非易失性存储元件编程为所述数据阈 值电压分布中的全部分布;并且

所述执行所述多阶段编程处理的后一阶段包括:收紧低状态数据阈值 电压分布,而不收紧高状态数据阈值电压。

5.根据权利要求1所述的方法,其中:

所述执行所述中间阶段包括:将非易失性存储元件编程为所述高状态 数据阈值电压分布,而不将非易失性存储元件编程为所述低状态数据阈值 电压分布;并且

所述执行所述多阶段编程处理的后一阶段包括:收紧所述高状态数据 阈值电压分布,并且随后将非易失性存储元件编程为所述低状态数据阈值 电压分布。

6.根据权利要求1所述的方法,其中:

所述执行所述中间阶段包括:将非易失性存储元件编程为所述高状态 数据阈值电压分布和低状态数据阈值电压分布中的第一组低状态数据阈 值电压分布,而不将非易失性存储元件编程为所述低状态数据阈值电压分 布中的第二组低状态数据阈值电压分布;并且

所述执行所述多阶段编程处理的后一阶段包括:

收紧所述高状态数据阈值电压分布,

在收紧所述高状态数据阈值电压分布之后,收紧所述低状态数据 阈值电压分布中的所述第一组低状态数据阈值电压分布,以及

将非易失性存储元件编程为所述低状态数据阈值电压分布中的 所述第二组低状态数据阈值电压分布。

7.根据权利要求1所述的方法,其中:

所述执行所述中间阶段包括:将非易失性存储元件编程为所述数据阈 值电压分布中的多个分布;并且

所述执行所述多阶段编程处理的后一阶段包括:首先收紧高状态数据 阈值电压分布,随后收紧低状态数据阈值电压分布。

8.根据权利要求7所述的方法,其中:

将非易失性存储元件编程为所述数据阈值电压分布中的多个分布包 括:将非易失性存储元件编程为所述高状态数据阈值电压分布和所述低状 态数据阈值电压分布中的第一组低状态数据阈值电压分布;并且

所述执行所述多阶段编程处理的后一阶段包括:在收紧所述高状态数 据阈值电压分布之后,随后将非易失性存储元件编程为所述低状态数据阈 值电压分布中的第二组低状态数据阈值电压分布。

9.根据权利要求7所述的方法,其中:

在将非易失性存储元件编程至所述低状态数据阈值电压分布之后,不 将所述非易失性存储元件编程至所述高状态数据阈值电压分布,并且不收 紧所述高状态数据阈值电压分布。

10.一种非易失性存储系统,包括:

多个非易失性存储元件;以及

与所述非易失性存储元件通信的一个或多个管理电路(240),所述 一个或多个管理电路通过执行多阶段编程处理来将所述非易失性存储元 件编程为一组数据阈值电压分布,所述多阶段编程处理包括:执行所述多 阶段编程处理的第一阶段(850)以将所述非易失性存储元件中的至少子 集的阈值电压从擦除分布(E)改变为一个或多个中间分布(IM_1、IM_2、 IM_3);执行所述多阶段编程处理的中间阶段(852)以将所述非易失性 存储元件中的至少部分非易失性存储元件的阈值电压改变为至少高状态 数据阈值电压分布(Vv9至VvF);以及在执行所述多阶段编程处理的所 述中间阶段之后,执行所述多阶段编程处理的后一阶段(854),以使得 仅在高状态阈值分布已达到目标阈值分布之后,执行对所述数据阈值电压 分布中的包括低状态数据阈值电压分布的子集的任何收紧。

11.根据权利要求10所述的非易失性存储系统,其中:

所述一个或多个管理电路通过将非易失性存储元件编程为所述数据 阈值电压分布中的全部分布来执行所述多阶段编程处理的所述中间阶段; 并且

所述一个或多个管理电路通过收紧所述低状态数据阈值电压分布而 不收紧所述高状态数据阈值电压分布来执行所述多阶段编程处理的后一 阶段。

12.根据权利要求10所述的非易失性存储系统,其中:

所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理 的所述中间阶段:首先将所述非易失性存储元件的第一子集编程为所述高 状态数据阈值电压分布,随后将所述非易失性存储元件的第二子集编程为 所述低状态数据阈值电压分布;并且

所述一个或多个管理电路通过收紧所述低状态数据阈值电压分布而 不收紧所述高状态数据阈值电压分布来执行所述多阶段编程处理的后一 阶段。

13.根据权利要求12所述的非易失性存储系统,其中:

在将所述非易失性存储元件的第二子集编程为所述低状态数据阈值 电压分布之后,所述高状态数据阈值电压分布不被收紧。

14.根据权利要求10所述的非易失性存储系统,其中:

所述一个或多个管理电路通过下述操作来执行所述中间阶段:将非易 失性存储元件编程为所述高状态数据阈值电压分布,而不将非易失性存储 元件编程为所述低状态数据阈值电压分布;并且

所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理 的后一阶段:收紧所述高状态数据阈值电压分布,并且随后将非易失性存 储元件编程为所述低状态数据阈值电压分布。

15.根据权利要求10所述的非易失性存储系统,其中:

所述一个或多个管理电路通过下述操作来执行所述中间阶段:将非易 失性存储元件编程为所述高状态数据阈值电压分布和所述低状态数据阈 值电压分布中的第一组低状态数据阈值电压分布,而不将非易失性存储元 件编程为所述低状态数据阈值电压分布中的第二组低状态数据阈值电压 分布;并且

所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理 的后一阶段:首先收紧所述高状态数据阈值电压分布;随后,在收紧所述 高状态数据阈值电压分布之后,收紧所述低状态数据阈值电压分布中的第 一组低状态数据阈值电压分布并且将非易失性存储元件编程为所述低状 态数据阈值电压分布中的第二组低状态数据阈值电压分布。

16.根据权利要求10所述的非易失性存储系统,其中:

所述一个或多个管理电路通过将非易失性存储元件编程为所述数据 阈值电压分布中的多个分布来执行所述中间阶段;并且

所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理 的后一阶段:首先收紧所述高状态数据阈值电压分布,随后收紧所述低状 态数据阈值电压分布中的第一组低状态数据阈值电压分布。

17.根据权利要求16所述的非易失性存储系统,其中:

所述一个或多个管理电路通过下述操作来将非易失性存储元件编程 为所述数据阈值电压分布中的多个分布:将非易失性存储元件编程为高状 态数据阈值电压分布和所述低状态数据阈值电压分布中的第一组低状态 数据阈值电压分布;并且

所述一个或多个管理电路通过下述操作来执行所述多阶段编程处理 的后一阶段:在收紧所述高状态数据阈值电压分布之后,随后将非易失性 存储元件编程为所述低状态数据阈值电压分布中的第二组低状态数据阈 值电压分布。

18.根据权利要求10至17中任一项所述的非易失性存储系统,其中:

所述多个非易失性存储元件为多态NAND闪速存储器设备。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号