首页> 中国专利> 非易失性存储器编程操作中的可变编程电压增量值

非易失性存储器编程操作中的可变编程电压增量值

摘要

多状态非易失性快闪存储器装置中的最低经编程状态可能在与其它状态相比时经受增加水平的位线到位线电容性电荷耦合。当将存储器单元编程到最低可编程状态时可使用较小值来递增作为渐增电压脉冲施加于存储器单元的编程电压。所述所施加的电压的较小增量实现较大的精度和较窄的阈值电压分布以补偿被编程到此状态的单元所经历的不成比例的电荷耦合。在一些实施方案中,当从下部页切换到上部页编程时可使用较小的增量值。在形成物理页的单元存储两个逻辑数据页且针对一个逻辑页的编程在接收用于另一逻辑页的数据之前开始的管线式编程结构中,当从对第一逻辑页进行编程切换到对所述两个页同时进行编程时可增加所述增量值。

著录项

  • 公开/公告号CN101584003A

    专利类型发明专利

  • 公开/公告日2009-11-18

    原文格式PDF

  • 申请/专利权人 桑迪士克股份有限公司;

    申请/专利号CN200780037930.2

  • 申请日2007-10-05

  • 分类号G11C11/56(20060101);G11C16/12(20060101);G11C16/04(20060101);

  • 代理机构11287 北京律盟知识产权代理有限责任公司;

  • 代理人刘国伟

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 23:01:37

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-07-20

    专利权人的姓名或者名称、地址的变更 IPC(主分类):G11C11/56 变更前: 变更后: 申请日:20071005

    专利权人的姓名或者名称、地址的变更

  • 2013-10-16

    授权

    授权

  • 2012-11-07

    专利申请权的转移 IPC(主分类):G11C11/56 变更前: 变更后: 登记生效日:20120928 申请日:20071005

    专利申请权、专利权的转移

  • 2010-01-13

    实质审查的生效

    实质审查的生效

  • 2009-11-18

    公开

    公开

说明书

技术领域

根据本发明的实施例涉及对非易失性存储器进行编程。

背景技术

半导体存储器装置已变得较普遍地用于各种电子装置中。举例来说,非易失性半导体存储器用于蜂窝式电话、数码相机、个人数字助理、移动计算装置、非移动计算装置和其它装置中。电可擦除可编程只读存储器(EEPROM)(包含快闪EEPROM)和电可编程只读存储器(EPROM)属于最流行的非易失性半导体存储器。

快闪存储器系统的一个实例使用与非(NAND)结构,其包含布置夹在两个选择栅极之间的多个串联晶体管。串联晶体管和选择栅极称为NAND串。图1是展示一个NAND串的俯视图。图2是其等效电路图。图1和2中描绘的NAND串包含四个晶体管100、102、104和106,其为串联的且夹在第一选择栅极120与第二选择栅极122之间。选择栅极120将NAND串连接到位线126。选择栅极122将NAND串连接到源极线128。通过经由选择线SGD向控制栅极120CG施加适当电压来控制选择栅极120。通过经由选择线SGS向控制栅极122CG施加适当电压来控制选择栅极122。晶体管100、102、104和106中的每一者包含控制栅极和浮动栅极,从而形成存储器单元的栅极元件。举例来说,晶体管100具有控制栅极100CG和浮动栅极100FG。晶体管102包含控制栅极102CG和浮动栅极102FG。晶体管104包含控制栅极104CG和浮动栅极104FG。晶体管106包含控制栅极106CG和浮动栅极106FG。控制栅极100CG连接到字线WL3,控制栅极102CG连接到字线WL2,控制栅极104CG连接到字线WL1,且控制栅极106CG连接到字线WL0。

请注意,尽管图1和2展示NAND串中的四个存储器单元,但仅提供四个晶体管的使用作为实例。NAND串可具有四个以下存储器单元或四个以上存储器单元。举例来说,一些NAND串将包含八个存储器单元、16个存储器单元、32个存储器单元等。本文的论述不限于NAND串中的任何特定数目的存储器单元。

使用NAND结构的快闪存储器系统的典型结构将包含若干NAND串。举例来说,图3展示具有许多NAND串的存储器阵列的三个NAND串202、204和206。图3的NAND串中的每一者包含两个选择晶体管或栅极以及四个存储器单元。举例来说,NAND串202包含选择晶体管220和230以及存储器单元222、224、226和228。NAND串204包含选择晶体管240和250以及存储器单元242、244、246和248。每一串通过一个选择栅极(例如,选择栅极230和选择栅极250)连接到源极线。选择线SGS用于控制源极侧选择栅极。各种NAND串通过由选择线SGD控制的选择栅极220、240等连接到相应位线。在其它实施例中,选择线不一定需要为共同的。字线WL3连接到用于存储器单元22和存储器单元42的控制栅极。字线WL2连接到用于存储器单元224和存储器单元244的控制栅极。字线WL1连接到用于存储器单元226和存储器单元246的控制栅极。字线WL0连接到用于存储器单元228和存储器单元248的控制栅极。如可见,一位线和相应的NAND串包括存储器单元阵列的一列。字线(WL3、WL2、WL1和WL0)包括阵列的行。每一字线连接行中的每一存储器单元的控制栅极。举例来说,字线WL2连接到用于存储器单元224、244和252的控制栅极。

每一存储器单元可存储数据(模拟或数字)。当存储一位数字数据时,存储器单元的可能阈值电压的范围被划分为两个范围,其被指派逻辑数据“1”和“0”。在NAND型快闪存储器的一个实例中,阈值电压在存储器单元经擦除之后为负,且被界定为逻辑“1”。编程操作之后的阈值电压为正,且被界定为逻辑“0”。当阈值电压为负且通过向控制栅极施加0伏来尝试读取时,存储器单元将接通以指示正在存储逻辑1。当阈值电压为正且通过向控制栅极施加0伏来尝试读取操作时,存储器单元将不接通,其指示存储逻辑0。存储器单元也可存储多个电平的信息,例如多位数字数据。在存储多个电平的数据的情况下,可能阈值电压的范围被划分为数据的电平的数目。举例来说,如果存储四个电平的信息,那么将存在四个阈值电压范围,其指派给数据值“11”、“10”、“01”和“00”。在NAND型存储器的一个实例中,擦除操作之后的阈值电压为负且被界定为“11”。三个不同的正阈值电压用于“10”、“01”和“00”的状态。

NAND型快闪存储器及其操作的相关实例在以下美国专利/专利申请案中提供,所述专利/专利申请案全部以引用的方式并入本文中:第5,570,315号美国专利;第5,774,397号美国专利;第6,046,935号美国专利;第6,456,528号美国专利;以及第09/893,277号美国专利申请案(第US2003/0002348号公开案)。

当对EEPROM或快闪存储器装置进行编程时,通常向控制栅极施加编程电压且将位线接地。来自沟道的电子被注入到浮动栅极中。当电子在浮动栅极中累积时,浮动栅极变为带负电且存储器单元的阈值电压升高,使得存储器单元处于经编程状态。单元的浮动栅极电荷和阈值电压可指示对应于所存储数据的特定状态。关于编程的更多信息可参见2003年3月5日申请的题目为“自升压技术(Self Boosting Technique)”的第10/379,608号美国专利申请案以及2003年7月29日申请的题目为“对经编程存储器的检测(Detecting Over Programmed Memory)”的第10/629,068号美国专利申请案,所述两个申请案的全文以引用的方式并入本文中。

存储在浮动栅极上的表观电荷的移位可能由于基于存储在邻近浮动栅极中的电荷的电场的耦合而发生。此浮动栅极到浮动栅极耦合现象在第5,867,429号美国专利中描述,所述专利的全文以引用的方式并入本文中。目标浮动栅极的邻近浮动栅极可包含处于同一位线上的相邻浮动栅极、处于同一字线上的相邻浮动栅极或处于相邻位线和相邻字线两者上的相邻浮动栅极,且因此在对角线方向上彼此交叉。

浮动栅极到浮动栅极耦合现象最明显地(但不是专门地)在已于不同时间编程的邻近存储器单元组之间发生。举例来说,可对第一存储器单元进行编程以向其浮动栅极添加对应于一组数据的电荷电平。随后,对一个或一个以上邻近存储器单元进行编程以向其浮动栅极添加对应于一组数据的电荷电平。在邻近存储器单元中的一者或一者以上被编程之后,从第一存储器单元读取的电荷电平可能由于正耦合到第一存储器单元的邻近存储器单元上的电荷的影响而表现为不同于其被编程时的电荷电平。来自邻近存储器单元的耦合可使正从选定存储器单元读取的表观电荷电平移位达足以导致所存储数据的错误读取的量。

浮动栅极到浮动栅极耦合的影响对于多状态装置来说存在更大问题,因为在多状态装置中允许的阈值电压范围和禁止的范围(表示相异存储器状态的两个相异阈值电压范围之间的范围)比二进制装置窄。因此,浮动栅极到浮动栅极耦合可导致存储器单元从允许的阈值电压范围移位到禁止的范围。

由于存储器单元在尺寸方面持续缩减,因此预期阈值电压的自然编程和擦除分布由于短沟道效应、较大的氧化物厚度/耦合比率变化以及较多的沟道掺杂剂波动而增加,从而减少邻近状态之间的可用分隔。此影响对于多状态存储器来说比仅使用两个状态的二进制存储器显著得多。此外,字线之间以及位线之间的空间的减少也将增加邻近浮动栅极之间的耦合。

发明内容

多状态非易失性快闪存储器装置中的最低经编程状态可能在与其它状态相比时经受增加水平的位线到位线电容性电荷耦合。当将存储器单元编程到最低可编程电平或状态时可使用较小值来递增作为渐增电压脉冲施加于存储器单元的编程电压。所施加电压的较小增量实现较大的精度和较窄的阈值电压分布以补偿被编程到此状态的单元所经历的不成比例的电荷耦合。在一个实施例中,当对第一逻辑页进行编程时可使用较小的增量值,且当对其它页进行编程时使用较大的增量值。在形成物理页的单元存储两个逻辑数据页且针对一个逻辑页的编程在接收用于另一逻辑页的数据之前开始的管线式编程结构中,当从对第一逻辑页进行编程切换到对所述两个页同时进行编程时可增加所述增量值。

在一个实施例中,提供一种对非易失性存储装置进行编程的方法,其包含接收将数据编程到一组多状态非易失性存储元件的请求,向所述组非易失性存储元件施加预定数目的编程电压脉冲以将所述数据编程到所述非易失性存储元件,以及向所述组非易失性存储元件施加一个或一个以上额外编程电压脉冲以完成所述数据的编程。向所述组施加预定数目的编程电压脉冲可包含将所述编程电压脉冲中的每一者的大小增加第一增量值,直到达到所述预定数目为止。向所述组施加一个或一个以上额外编程电压脉冲可包含将所述一个或一个以上额外编程电压中的每一者的大小增加第二增量值。

在一个实施例中,提供一种对非易失性存储装置进行编程的方法。接收指定用于存储在非易失性存储装置的物理页中的第一组数据。第一组数据可包含少于所述物理页可存储的最大数据量的全部。在一个实施例中,第一组数据形成下部逻辑数据页。在将数据编程到物理页时通过使用具有经递增第一增量值的峰值的编程电压信号来将第一组数据编程到物理页。接收同样指定用于存储在物理页中的第二组数据。可在开始将第一组数据编程到物理页之后且在完成将第一组数据编程到物理页之前接收第二组数据。响应于在完成第一组数据的编程之前接收到第二组数据,停止或中断第一组数据的编程。在停止第一数据页的编程之后,将第一组数据和第二组数据同时编程到物理页。同时编程可包含在将第一数据和第二数据同时编程到物理页时使用具有经递增第二增量值的峰值的编程电压信号来对第一数据和第二数据进行编程。

在一个实施例中,提供一种非易失性存储器系统,其包含多个存储元件、与所述存储元件通信的多个数据缓冲器以及与所述缓冲器和存储元件通信的管理电路。管理电路接收待存储于存储元件中的第一数据,且作为响应而将第一数据提供到第一组缓冲器。管理电路使用以第一增量值增加的多个编程电压脉冲来将第一数据编程到存储元件。管理电路在对第一数据进行编程的同时接收待存储在存储元件中的第二数据,且作为响应而将第二数据提供到第二组缓冲器。管理电路停止将第一数据编程到存储元件,且使用以第二增量值增加的多个编程电压脉冲将第一数据和第二数据同时编程到存储元件。

通过审阅说明书、图式和权利要求书可获得所揭示技术的实施例的其它特征、方面和目的。

附图说明

图1是NAND串的俯视图。

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

图3是描绘三个NAND串的电路图。

图4是非易失性存储器系统的一个实施例的框图。

图5说明存储器阵列的示范性组织。

图6描绘示范性编程电压信号。

图7描绘一组示范性阈值电压分布和全序列编程过程。

图8描绘一组示范性阈值电压分布和两遍编程过程。

图9是描绘示范性非易失性存储器系统中的电容性电荷耦合的影响的表。

图10是用于在离散时间间隔期间对下部页数据和上部页数据进行编程的时序图。

图11是根据一个实施例的可用于对图10所示的下部和上部数据页进行编程的编程电压信号。

图12是用于对下部页数据进行编程且随后在接收到上部页数据时对下部和上部页数据同时进行编程的时序图。

图13是根据一个实施例的可用于对图12所示的下部和上部数据页进行编程的编程电压信号。

图14是描绘根据一个实施例的对非易失性存储器进行编程的方法的流程图。

图15是描绘用于在接收到用于当前正被编程的一组存储器单元的额外数据时设定编程命令的方法的流程图。

图16是描绘用于在下部页编程完成时使用较大增量值转变到全序列或上部页编程的方法的流程图。

图17A、17B和17C描绘作为粗略/精细编程的一部分而执行的编程过程的一个实施例。

图18A、18B和18C描绘作为粗略/精细编程的一部分而执行的编程过程的一个实施例。

具体实施方式

图4是可用于实施本发明的一个或一个以上实施例的快闪存储器系统的一个实施例的框图。可使用其它系统和实施方案。存储器单元阵列302由列控制电路304、行控制电路306、c源极控制电路310和p阱控制电路308控制。列控制电路304连接到存储器单元阵列302的位线以用于读取存储在存储器单元中的数据,用于确定编程操作期间存储器单元的状态,以及用于控制位线的电位电平以促进或抑制编程和擦除。行控制电路306连接到字线以选择字线中的一者,施加读取电压,施加与由列控制电路304控制的位线电位电平组合的编程电压,以及施加擦除电压。C源极控制电路310控制连接到存储器单元的共同源极线(图5中标记为“C源极”)。P阱控制电路308控制p阱电压。

存储在存储器单元中的数据由列控制电路304读出且经由数据输入/输出缓冲器312输出到外部I/O线。待存储在存储器单元中的编程数据经由外部I/O线输入到数据输入/输出缓冲器312,且传递到列控制电路304。外部I/O线连接到控制器318。

用于控制快闪存储器装置的命令数据输入到控制器318。命令数据向快闪存储器通知什么操作被请求。输入命令传递到作为控制电路315的一部分的状态机316。状态机316控制列控制电路304、行控制电路306、c源极控制310、p阱控制电路308和数据输入/输出缓冲器312。状态机316也可输出快闪存储器的状态数据,例如就绪/忙(READY/BUSY)或通过/失败(PASS/FAIL)。

控制器318连接到例如个人计算机、数码相机或个人数字助理等主机系统或可与所述主机系统连接。其与主机通信,所述主机起始例如将数据存储到存储器阵列302或从存储器阵列302读取数据的命令,且提供或接收此数据。控制器318将此些命令转换为可由作为控制电路315的一部分的命令电路314解译和执行的命令信号。命令电路314与状态机316通信。控制器318通常含有用于正写入到存储器阵列或从存储器阵列读取的用户数据的缓冲器存储器。

一个示范性存储器系统包括:一个集成电路,其包含控制器318;以及一个或一个以上集成电路芯片,其每一者含有存储器阵列和相关联的控制、输入/输出和状态机电路。存在将系统的存储器阵列和控制器电路一起集成在一个或一个以上集成电路芯片上的趋势。存储器系统可嵌入作为主机系统的一部分,或可包含在以可移除方式插入到主机系统中的存储器卡(或其它封装)中。此卡可包含整个存储器系统(例如,包含控制器)或仅包含具有相关联外围电路的存储器阵列(其中控制器或控制功能嵌入在主机中)。因此,控制器可嵌入在主机中或包含在可移除存储器系统内。

参看图5,描述存储器单元阵列302的示范性结构。作为一个实例,描述经分割为1,024个区块的NAND快闪EEPROM。存储在每一区块中的数据可同时擦除。在一个实施例中,区块是同时擦除的单元的最小单位。在此实例中在每一区块中,存在8,512个列。每一区块通常被划分为可作为编程单位的多个页。用于编程的其它数据单位也是可能和预期的。在一个实施例中,可将各个页划分为若干区段且所述区段可含有作为基本编程操作而一次写入的最少数目的单元。一个或一个以上数据页通常存储在一行存储器单元中。

在图5的实例的每一区块中存在被划分为偶数列和奇数列的8,512个列。位线被划分为偶数位线(BLe)和奇数位线(BLo)。在奇数/偶数位线结构中,沿着共同字线且连接到奇数位线的存储器单元在一个时间编程,而沿着共同字线且连接到偶数位线的存储器单元在另一时间编程。图5展示串联连接以形成NAND串的四个存储器单元。尽管展示每一NAND串中包含四个单元,但可使用四个以上或以下(例如,16、32或另一数目)。NAND串的一个端子经由第一选择晶体管或栅极(连接到选择栅极漏极线SGD)连接到对应位线,且另一端子经由第二选择晶体管(连接到选择栅极源极线SGS)连接到c源极。

在其它实施例中,位线未被划分为奇数和偶数位线。此些结构通常称为全位线结构。在全位线结构中,一区块的所有位线在读取和编程操作期间被同时选择。沿着共同字线且连接到任何位线的存储器单元同时编程。

在一个实施例的读取和编程操作期间,同时选择4,256个存储器单元。选定的存储器单元具有相同字线(例如,WL2-i)和相同种类的位线(例如,偶数位线)。因此,可同时读取或编程532个字节的数据。同时读取或编程的这532个字节的数据形成一逻辑页。因此,在此实例中,一个区块可存储至少八个页。当每一存储器单元存储两位数据(例如,多电平单元)时,一个区块存储16个页。其它大小的区块和页也可用于实施例。另外,除图4和5的结构以外的结构也可用于实施实施例。

通过将p阱升高到擦除电压(例如,20伏)且将选定区块的字线接地来擦除存储器单元。源极线和位线为浮动的。可对整个存储器阵列、单独区块或另一单位的单元执行擦除。电子从浮动栅极转移到p阱区且阈值电压变为负(在一个实施例中)。

在读取和验证操作中,将选定区块的选择栅极升高到一个或一个以上选择电压,且将选定区块的未选定字线(例如,WL0、WL1和WL3)升高到读取通过电压(例如,4.5伏)以使晶体管作为通过栅极操作。选定区块的选定字线(例如,WL2)连接到参考电压,所述参考电压的电平是针对每一读取和验证操作而指定,以便确定所关注存储器单元的阈值电压是高于还是低于此电平。举例来说,在一位存储器单元的读取操作中,选定字线WL2接地,使得检测阈值电压是否高于0V。在一位存储器单元的验证操作中,选定字线WL2连接到(例如)0.8V,使得在编程进行时验证阈值电压是否已达到0.8V。源极和p阱在读取和验证期间处于零伏。选定位线(BLe)被预充电到(例如)0.7V的电平。如果阈值电压高于读取或验证电平,那么所关注位线(BLe)的电位电平由于相关联的不导电存储器单元而维持高电平。另一方面,如果阈值电压低于读取或验证电平,那么所关注位线(BLe)的电位电平由于导电存储器单元而减小到(例如)小于0.5V的低电平。通过连接到位线且感测所得位线电压的读出放大器来检测存储器单元的状态。存储器单元是经编程还是经擦除之间的差异取决于是否净负电荷存储在浮动栅极上。举例来说,如果负电荷存储在浮动栅极上,那么阈值电压变得较高且晶体管可处于增强操作模式。

当在一个实例中对存储器单元进行编程时,漏极和p阱接收0V,而控制栅极接收一系列具有递增量值的编程脉冲。在一个实施例中,所述系列中的脉冲的量值的范围是从12V到24V。在其它实施例中,所述系列中的脉冲的范围可有所不同,例如具有高于12伏的开始电平。在存储器单元的编程期间,在编程脉冲之间的周期中实行验证操作。也就是说,在每一编程脉冲之间读取正被并行编程的单元群组中的每一单元的编程电平,以确定其是否已达到或超过其正被编程到的验证电平。验证编程的一种方式是测试特定比较点处的传导。通过针对所有后续编程脉冲将位线电压从0升高到VDD(例如,2.5伏)以终止所述单元的编程过程,将被验证为经充分编程的单元(例如)在NAND单元中锁定。在一些情况下,脉冲的数目将为有限的(例如,20个脉冲),且如果给定存储器单元未由最后的脉冲充分编程,那么呈现错误。在一些实施方案中,在编程之前擦除(以区块或其它单位)存储器单元。

图6描绘根据一个实施例的编程电压信号。此信号具有一组具有递增量值的脉冲。所述脉冲的量值随着每一脉冲增加一预定步长。在包含存储多位数据的存储器单元的一个实施例中,示范性步长是0.2V(或0.4V)。在编程脉冲的每一者之间是验证脉冲。图6的信号假定四状态存储器单元,因此其包含三个验证脉冲。举例来说,在编程脉冲330与332之间是三个循序验证脉冲。第一验证脉冲334描绘为处于零伏验证电压电平。第二验证脉冲336跟随第一验证脉冲且处于第二验证电压电平。第三验证脉冲338跟随第二验证脉冲336且处于第三验证电压电平。能够以八个状态存储数据的多状态存储器单元可能需要在七个比较点执行验证操作。因此,循序施加七个验证脉冲以在两个连续编程脉冲之间在七个验证电平处执行七个验证操作。基于七个验证操作,系统可确定存储器单元的状态。用于减少验证的时间负担的一种方式是使用更有效的验证过程,例如以下专利申请案中所揭示:2002年12月5日申请的题目为“用于多状态存储器的智能验证(Smart Verify for Multi-State Memories)”的第10/314,055号美国专利申请案;2005年10月27日申请的题目为“用于使用智能验证对多状态非易失性存储器编程的设备(Apparatus for Programming of Multi-State Non-Volatile Memory Using Smart Verify)”的第11/259,799号美国专利申请案;以及2005年10月27日申请的题目为“用于使用智能验证对多状态非易失性存储器编程的方法(Method for Programming of Multi-StateNon-Volatile Memory Using Smart Verify)”的第11/260,658号美国专利申请案,所述申请案全部的全文以引用的方式并入本文中。

上文所述的擦除、读取和验证操作是根据此项技术中已知的技术而执行的。因此,所属领域的技术人员可改变所解释的细节中的许多细节。

在成功的编程过程结束时,存储器单元的阈值电压应适当地在经编程存储器单元的一个或一个以上阈值电压分布内或经擦除存储器单元的阈值电压分布内。图7说明当每一存储器单元存储两位数据时存储器单元阵列的阈值电压分布。图7展示经擦除存储器单元的第一阈值电压分布E。还描绘经编程存储器单元的三个阈值电压分布A、B和C。在一个实施例中,E分布中的阈值电压为负,且A、B和C分布中的阈值电压为正。

图7的每一相异阈值电压范围对应于所述组数据位的预定值。编程到存储器单元中的数据与所述单元的阈值电压电平之间的特定关系取决于针对单元所采用的数据编码方案。在一个实施例中,使用格雷码指派将数据值指派给阈值电压范围,使得如果浮动栅极的阈值电压错误地移位到其相邻的物理状态,那么仅一位将受影响。然而,在其它实施例中,不使用格雷编码。一个实例将“11”指派给阈值电压范围E(状态E),将“10”指派给阈值电压范围A(状态A),将“00”指派给阈值电压范围B(状态B),且将“01”指派给阈值电压范围C(状态C)。尽管图7展示四个状态,但本发明也可与其它多状态结构一起使用,包含那些包括四个以上或以下状态的结构。

图7还展示用于从存储器单元读取数据的三个读取参考电压VrA、VrB和VrC。通过测试给定存储器单元的阈值电压是高于还是低于VrA、VrB和VrC,系统可确定存储器单元处于什么状态。图7还展示三个验证参考电压VvA、VvB和VvC。当将存储器单元编程到状态A时,系统将测试所述存储器单元是否具有大于或等于VvA的阈值电压。当将存储器单元编程到状态B时,系统将测试所述存储器单元是否具有大于或等于VvB的阈值电压。当将存储器单元编程到状态C时,系统将确定存储器单元是否具有大于或等于VvC的阈值电压。

图7描绘利用全序列编程的一个实施例。在全序列编程中,可将存储器单元从擦除状态E直接编程到经编程状态A、B或C中的任一者。举例来说,可首先擦除待编程的存储器单元群集,使得所述群集中的所有存储器单元均处于经擦除状态E。下文中相对于图7描述的使用施加于选定存储器单元的控制栅极的一系列编程电压脉冲的过程随后将用于将存储器单元直接编程到状态A、B或C中。在一些存储器单元正从状态E编程到状态A时,其它存储器单元正从状态E编程到状态B和/或从状态E编程到状态C。

图8说明对存储用于两个不同页(下部页和上部页)的数据的多状态存储器单元进行编程的两遍技术的实例。描绘四个状态:状态E(11)、状态A(10)、状态B(00)和状态C(01)。对于状态E,两个页均存储“1”。对于状态A,下部页存储“0”且上部页存储“1”。对于状态B,两个页均存储“0”。对于状态C,下部页存储“1”且上部页存储“0”。请注意,尽管已将特定位模式指派给每一状态,但也可指派不同的位模式。在第一遍编程中,根据待编程到下部逻辑页中的位设定单元的阈值电压电平。如果所述位是逻辑“1”,那么阈值电压未改变,因为其由于已早先经擦除而处于适当状态。然而,如果待编程的位是逻辑“0”,那么单元的阈值电平增加到状态A,如箭头302所示。其结束第一遍编程。

在第二遍编程中,根据正编程到上部逻辑页中的位来设定单元的阈值电压电平。如果上部逻辑页位待存储逻辑“1”,那么没有编程发生,因为单元取决于下部页位的编程而处于状态E或A中的一者,所述状态E或A两者均携载上部页位“1”。如果上部页位将为逻辑“0”,那么阈值电压移位。如果第一遍导致单元保留在经擦除状态E中,那么在第二阶段中单元经编程以使得阈值电压增加到状态C内,如箭头306描绘。如果单元已由于第一遍编程而编程到状态A中,那么存储器单元在第二遍中进一步经编程以使得阈值电压增加到状态B内,如箭头304描绘。第二遍的结果是将单元编程到经指定以针对上部页存储逻辑“0”的状态而没有改变下部页的数据。

在一个实施例中,如果写入足够的数据以填满一整页,那么可设置系统以执行全序列写入。如果没有针对一完整页写入足够的数据,那么编程过程可用接收的数据对下部页进行编程。当接收到后续数据时,系统将随后对上部页进行编程。在又一实施例中,系统可使用两遍技术开始写入数据且随后在后续接收到足够数据以填满整个(或大部分)字线的存储器单元的情况下转换到全序列编程模式。此实施例的更多细节在发明人塞吉·阿纳托里维奇·格洛贝特(Sergy Anatolievich Gorobet)和李艳(Yan Li)的于2004年12月14日申请的题目为“使用早期数据对非易失性存储器进行管线式编程(PipelinedProgramming of Non-Volatile Memories Using Early Data)”的第11/013,125号美国专利申请案中揭示,所述专利申请案的全文以引用的方式并入本文中。

除了图8所示的全序列和上部页-下部页编程以外,还可根据各种实施例使用其它编程技术。举例来说,在一个实施例中,可使用两遍技术,其通过针对任何特定存储器单元,在对用于先前页的邻近存储器单元进行写入之后相对于特定页对所述特定存储器单元进行写入,来减少不同字线上的单元之间的浮动栅极到浮动栅极耦合。在此技术的一个实例中,存储器单元使用四个数据状态(例如,其中经擦除状态E存储11,经编程状态A、B和C分别存储01、10和00的非格雷编码)每存储器单元存储两位数据。每一存储器单元存储两页数据,其出于参考目的而将称为上部页和下部页。在第一遍中,对下部页进行编程——将在下部页中存储数据1的存储器单元保留在状态E,而将存储数据0的存储器单元升高到中间状态B′。在第二遍中,对上部页进行编程。将针对上部页存储数据1的处于经擦除状态E的存储器单元保留在状态E,而将针对上部页存储数据0的处于状态E的存储器单元被编程到状态A。将针对上部页存储数据1的处于中间状态B′的存储器单元被编程到最终状态B,而将针对上部页存储数据0的处于中间状态B′的存储器单元被编程到状态C。

图9是描绘在例如上部/下部页编程的单页技术和其中一次编程所有数据状态的全序列编程两者中编程的单元的各种电容性电荷耦合效应的表。图9的表描绘针对四状态存储器装置的效应,但所属领域的技术人员将了解,所实施的原理可与具有更多物理状态的系统一起使用。在单页编程和全序列编程两者中,编程到第一经编程状态A的存储器单元经受最多的来自电容性电荷耦合的影响。第一行描绘单页编程(列382)和具有编程到状态C的相邻者的处于状态A的存储器单元(列384)。处于状态A的单元将经历其表观阈值电压的增加,所述增加等于常数a(表示浮动栅极之间的耦合系数)和经擦除状态E与经编程状态C之间的电压改变的乘积。因为处于状态A的存储器单元是在对第一页进行编程时编程的且其相邻者是在稍后对第二页进行编程时编程到状态C的,所以相邻者的浮动栅极电压将上升达经擦除状态与C经编程状态之间的差值。列386陈述在存储器系统中在各种状态之间编程的存储器单元的示范性阈值电压改变。在提供的实例中,从状态E到状态C的编程将使阈值电压移位约6V。处于状态A的存储器单元将经历其阈值电压的表观移位,所述移位等于此差值和耦合系数的乘积。具有编程到状态B的相邻者的处于状态A的单元将经历一表观移位,其等于常数和第一经编程状态A与第二经编程状态B之间的电压改变的乘积(例如,2V)。具有处于状态C的相邻者的处于状态B的单元将经历阈值电压的表观移位,其等于常数和第二经编程状态B与第三经编程状态C之间的电压改变的乘积(例如,2V)。

尽管状态A存储器单元在全序列编程中经历较少的电容性电荷耦合,但其在与处于其它状态的单元相比时仍经历最多的电容性电荷耦合。对于在全序列编程中具有编程到状态C的相邻者的处于状态A的存储器单元,相邻者将在选定存储器单元经编程之后仅从状态A上升到状态C(例如,2V)。在全序列中,同时编程所有状态。因此,选定单元将在多数情况下大约与其相邻者同时达到状态A。因此,通过相邻者从状态A移动到状态C来反映在选定单元经编程之后的仅有耦合效应。

具有编程到状态B的相邻者的处于状态A的单元将经历一表观移位,其等于常数和第一经编程状态A与第二经编程状态B之间的电压改变的乘积(例如,2V)。具有处于状态C的相邻者的处于状态B的单元将经历阈值电压的表观移位,其等于常数和第二经编程状态B与第三经编程状态C之间的电压改变的乘积(例如,2V)。

如图9说明,处于最低经编程物理状态的单元将经受来自稍后编程的相邻者的最多电容性电荷耦合。这些不成比例的耦合效应可加宽A状态分布且可能引起读取错误。为了补偿处于第一经编程状态的单元所经历的较大量的表观阈值电压移位,在一个实施例中以较大精度编程第一经编程状态以补偿额外的电荷耦合效应。在各种实施例中,使用多种技术来实现针对第一经编程状态的较紧密的阈值电压分布以补偿其表观阈值电压的后续改变。在一个实施例中在将单元编程到最低可编程状态时可使用用于编程电压信号的较低增量值。在另一实施例中,所述增量值在将第一逻辑数据页编程到一组存储器单元时较低,且在将第二逻辑数据页编程到所述组时较大。在管线式结构中,当存储器从单页编程切换到全序列编程时增量值可增加。

图10是说明非易失性存储器系统处理和写入各个逻辑数据页的时序图,其中用于一组单元的第一数据页在开始第二数据页之前完成。来自主机装置的数据首先在控制器处接收。控制器将数据和地址信息转发到列控制电路,列控制电路将数据放置在数据寄存器中。在图10中,下部数据页是在用于相同存储器单元的上部数据页之前由控制器接收。加载适当的寄存器,且响应于来自控制器的编程命令,状态机将在时间t1开始将下部页数据编程到所述组单元中。

在时间t1之后从主机接收用于对应组存储器单元的上部数据页的数据。控制器在时间t2完成将数据加载到阵列处的寄存器中。在图10的特定实施例中,系统在下部页已被编程之后才对上部数据页进行编程。因此,状态机在时间t3之前持续将下部数据页编程到所述组单元中,且上部页数据保留在寄存器中。一旦下部页数据被编程,控制器就可发出针对上部数据页的编程命令,且状态机通过将上部页数据从寄存器编程到阵列中而做出响应。如所描绘,对上部页进行编程包含将单元从状态E编程到状态C以及从状态A编程到状态B。在替代实施例中,使用先前描述的两遍技术,使得上部页编程包含将单元从状态E编程到状态以及从中间状态编程到状态B和状态C。

根据本文揭示的技术的一个实施例,在如图10所示的实施例中当在时间t3对上部页进行编程时使用用于编程电压信号的不同增量值。图11描绘根据一个实施例的编程电压信号。将存储器单元从经擦除状态编程到状态A在时间t1当施加第一编程电压脉冲时开始。在执行验证以确定哪些单元(如果存在的话)被编程到状态A之后,以递增ΔVpgm1的峰值施加额外脉冲。这持续进行,直到下部页编程在时间t3完成为止。

下部页编程可在编程电压脉冲的数目达到预定最大数目之后或在待编程到状态A的足够数目的存储器单元被成功验证为已达到状态A之后完成。在状态A的存储器单元被编程或下部页编程已完成的情况下,编程电压增量值改变为ΔVpgm2。在一个实施例中,ΔVpgm2大于ΔVpgm1,以便加速编程过程。在一个实施例中,在分析之后选择ΔVpgm2以确定用于对阵列中的大多数存储器单元尽可能快地进行编程(较大增量值)但同时也确保数据的精确编程(较小增量值)的适当值。ΔVpgm1的值可为ΔVpgm2的经调节值,以补偿编程到状态A的单元所经历的增加量的电荷耦合。举例来说,ΔVpgm1可基于其接收的额外电容性电荷耦合的量而从ΔVpgm2值降低。例如参看图9,当对状态A进行编程时的ΔVpgm1可基于在编程之后其相邻者的浮动栅极电压的4V差值对编程到状态B和C的单元的2V差值而比ΔVpgm2低一量。借助于非限制性实例,在一个实施例中用于下部页的ΔVpgm1可为约0.3V,且ΔVpgm2对于上部页或全序列编程可为约0.4V。

图12是说明非易失性存储器系统处理和写入逻辑数据页的时序图,其中编程针对第一数据页开始且随后在接收到第二数据页时暂停或中断以便针对所有页开始全序列编程。来自主机装置的数据在控制器处接收。控制器将数据和地址信息转发到列控制电路,列控制电路将数据放置在数据寄存器中。在图12中,下部数据页在用于相同存储器单元的上部数据页之前由控制器接收。加载适当的寄存器,且响应于来自控制器的编程命令,状态机在时间t1开始将下部页数据编程到所述组单元中。

在时间t1之后从主机接收用于同一组存储器单元的上部页数据。控制器在时间t2完成将数据加载到阵列处的寄存器中。在确定新数据是用于相同单元的上部页数据之后,控制器可中断编程操作。在图12的特定实施例中,系统可中断、暂停或以另外方式停止下部页编程过程以切换到全序列操作。在一个实施例中,控制器仅在下部页编程操作没有已完成或没有充分完成以保证允许其结束的情况下停止下部页编程操作。

控制器可在将上部页数据提供到列控制电路中的数据寄存器之后针对全序列编程发出新的编程命令。可执行验证操作以锁定已达到其目标状态的那些单元。编程随后使用全序列编程针对两个数据页而继续进行。

根据一个实施例,在图12所示的实施例中当在时间t2之后利用全序列编程时使用用于编程电压信号的不同增量值。图12描绘根据一个实施例的编程电压信号。将存储器单元从经擦除状态编程到状态A在时间t1当施加第一擦除电压脉冲时开始。在针对下部页编程到状态A完成之前,从主机接收上部页数据。控制器在时间t2将数据发出到列控制电路,在该处数据存储在寄存器中。

在验证、锁定和发出新编程命令之后,全序列编程在时间t2之后以第一脉冲开始。在发出全序列命令后,下一编程电压脉冲比在停止下部页编程之前的最后编程电压脉冲递增ΔVpgm2。ΔVpgm2和ΔVpgm1值可随着实施例和各种实施方案的要求而变化。在一个实施例中,如相对于图11所述来选择ΔVpgm1和ΔVpgm2。

图14是根据一个实施例的用于对非易失性存储器进行编程的方法的流程图。基于正被编程的状态和/或编程操作和数据的类型来使用可变增量值。在步骤502处,控制器318发出“数据加载”命令且输入到命令电路314,从而允许数据输入到数据输入/输出缓冲器312。输入数据被辨识为命令且经由输入到命令电路314的命令锁存信号(未说明)由状态机316锁存。在步骤504处,将指定页地址的地址数据从控制器或主机输入到行控制器或解码器306。输入数据被辨识为页地址且在输入到命令电路314的地址锁存信号的影响下经由状态机316锁存。在步骤506处,将用于经寻址页的编程数据页输入到数据输入/输出缓冲器312以用于编程。举例来说,在一个实施例中可输入532个字节的数据。所述数据锁存在用于选定位线的适当寄存器中。在一些实施例中,数据还锁存在用于选定位线的第二寄存器中以用于验证操作。在一个实施例中,所述数据对应于由存储额外逻辑页的一组单元存储的逻辑数据页。所述组单元可被说成在由所述组单元界定的物理页中存储多个逻辑页。一物理页可包括一组单元(例如一行)一次可存储的所有数据。其也可表示一次可编程到所述组的最大量的数据。在步骤508处,控制器发出“编程”命令且输入到数据输入/输出缓冲器312。所述命令经由输入到命令电路314的命令锁存信号而由状态机316锁存。

由“编程”命令触发,在步骤506中锁存的数据将使用施加于适当字线的图6的步进脉冲而编程到由状态机316控制的选定存储器单元中。在步骤510处,将施加于选定字线的编程脉冲电压电平Vpgm初始化为开始脉冲(例如,12V)且将由状态机316维持的程序计数器PC初始化于0或另一值。在步骤512处,将第一Vpgm脉冲施加于选定字线。如果逻辑“0”存储在特定数据锁存器中从而指示对应存储器单元应被编程,那么将对应位线接地。另一方面,如果逻辑“1”存储在特定锁存器中从而指示对应存储器单元应保留在其当前数据状态,那么将对应位线连接到VDD以抑制编程。

在步骤514处,验证选定存储器单元的状态。如果检测到选定单元的目标阈值电压已达到适当电平,那么将存储在对应数据锁存器中的数据改变为逻辑“1”。如果检测到阈值电压尚未达到适当电平,那么不改变存储在对应数据锁存器中的数据。以此方式,具有存储在其对应数据锁存器中的逻辑“1”的位线不需要被编程。当所有数据锁存器均正存储逻辑“1”时,状态机知道所有选定单元已被编程。在步骤516处,检查是否所有数据锁存器均正存储逻辑“1”。如果是,那么编程过程完成且成功,因为所有选定存储器单元均已被编程且验证为其目标状态。在步骤518处报告“通过”状态。

如果在步骤516处确定并非所有数据锁存器均正存储逻辑“1”,那么编程过程继续进行。在步骤520处,对照编程限制值检查程序计数器PC。编程限制值的一个实例是20,然而在各种实施方案中可使用其它值。如果程序计数器PC不小于20,那么在步骤526处确定尚未成功编程的位的数目是否等于或小于预定数目。如果未成功编程的位的数目等于或小于预定数目,那么将编程过程标记为通过且在步骤528处报告通过状态。可在读取过程期间使用错误校正来校正未成功编程的位。然而,如果未成功编程的位的数目大于预定数目,那么将编程过程标记为失败且在步骤530处报告失败状态。如果程序计数器PC小于20,那么在步骤522处将Vpgm电平增加所述步长且递增程序计数器PC。在步骤522之后,过程循环回到步骤512以施加下一Vpgm脉冲。

如步骤502′到510′指示,存储器系统可在执行图14描绘的任何操作时接收用于一个或一个以上阵列的额外数据。控制器可响应于在任何时间来自主机的数据而发出额外数据加载命令502′。步骤502′可在除图14特定展示的位置和时间以外的位置和时间发生。可接收来自主机的数据,且在步骤502′处执行数据加载命令以在步骤504′处在行控制器处加载地址数据,且在步骤506′处将数据编程到阵列处的可用寄存器中。在一个实施例中,控制器进行等待,直到状态机或列控制器发出其可接收寄存器中的更多数据的可用信号为止。

在步骤508′处,控制器和状态机可以各种方式处理新接收的数据。在一个实施例中,控制器停止当前的下部页编程操作。这由从方框508′到方框508的箭头表示。控制器随后发出新的编程命令,指示状态机使用全序列编程同时(并发地)对下部页和上部页数据进行编程。状态机可在步骤510′处将ΔVpgm设定为ΔVpgm2,因此在全序列中对两个页进行编程时使用较大的增量值。编程操作随后如先前所述继续进行,但使用较大的增量值ΔVpgm2。在510′处所示的一个实施例中,在开始全序列之前复位Vpgm,且将PC计数器复位为0。Vinitial2可等于、小于或大于Vinitial1。然而,不是在所有实施例中均复位Vpgm。举例来说,如果上部页数据相对快地到达且仅已施加几个编程电压脉冲,那么Vpgm可在其最后的峰值处、在大于最后的峰值的值(递增ΔVpgm2或另一值)处或在小于最后的峰值的值处开始。

图15是描绘在图14的步骤508′中设定编程命令的更多细节的流程图。图15只是一个示范性实施方案,其中使用较小的增量值用于下部页编程,且使用较大的增量值用于上部页编程或全序列编程。在图15的实施例中,控制器在向列控制电路发出编程命令之前在步骤602处将新接收数据的地址数据与当前正针对所述组存储器单元的下部页编程的数据进行比较。如果控制器在步骤604处发现匹配,意味着正被编程的数据是用于新接收数据所用于的相同存储器单元,那么方法前进到步骤608。在一个实施例中,状态机和/或列控制电路执行步骤604。如果地址数据不匹配,那么下部页编程例如通过在图14的步骤512处施加下一编程电压脉冲而继续进行。除了步骤512以外,图14的方法还可在图15的步骤606之后的其它位置继续进行。如果地址数据匹配,那么控制器在步骤608处确定下部页编程是否完成。当已施加预定数目的编程电压脉冲时,当待编程到状态A的所有单元均已成功编程到状态A时,或当预定数目的单元已成功编程到状态A时,下部页编程可完成。

如果下部页编程完成,那么在步骤610处开始将上部页数据编程到所述组存储器单元中,其中由控制器发出上部页编程命令。在步骤620处,上部页编程如图14中的步骤510′处描绘而继续进行,其中将编程电压信号初始化为Vinitial2且将ΔVpgm设定为ΔVpgm2。第二增量值ΔVpgm2用于在对存储器单元的上部页进行编程时增加后续编程脉冲的大小。因为处于状态A的存储器单元将由于后续编程的相邻者而具有本质上较宽的阈值电压分布,所以在步骤512处当对下部页进行编程时使用较小的ΔVpgm1且使用较大的ΔVpgm2用于上部页。

如果下部页编程未完成(或不够接近完成),那么控制器在步骤612处停止下部页编程操作。在图14中,控制器停止下部页编程由从步骤508′到步骤508的箭头在概念上说明。控制器或状态机可发出迫使列控制电路停止对下部数据页进行编程的命令。在步骤612处停止下部页编程之后,控制器在步骤614处设定全序列编程数据命令。在一个实施例中,命令输入到缓冲器312,且经由输入到命令电路的命令锁存信号由状态机锁存。响应于编程命令而触发状态机以对选定存储器单元进行编程。控制器可促使列控制电路在步骤616处执行验证操作以确定在下部页编程期间哪些单元已成功编程。对于已达到其目标电平的任何单元,控制器将锁定所述单元免于进一步编程。在锁定已编程的单元之后,方法在对应于图14的步骤510′的步骤620处继续进行,其中可调节增量值。

在一个实施例中,ΔVpgm2大于ΔVpgm1。较低的ΔVpgm1用于下部页编程或用于对最低经编程物理状态进行编程以便减小编程之后状态A分布的宽度。由于处于状态A的单元所经历的额外电容性耦合效应,使用较低的ΔVpgm值以避免过度编程和/或引起编程干扰。在一个实施例中,步骤510′进一步包含复位Vpgm的初始值。举例来说,如果下部页编程已接近完成,那么在施加电压信号以对上部页进行编程或以全序列进行编程之前可将Vpgm的值复位为较低值。在一个实施例中,将Vpgm复位为与开始下部页编程时相同的开始值。在一个实施例中,将Vpgm复位为低于其当前值但并不低如用于下部页编程的原始值的值。在又一实施例中,当在完成下部页编程之后开始全序列或上部页编程时,将编程电压信号从对下部页进行编程时使用的最后值增加或减小第三增量值ΔVpgm3。在一个实施例中,在开始上部页或全序列编程之前不复位编程电压信号Vpgm。在一个实施例中,将用于下部页编程的最后电压脉冲增加ΔVpgm2。在另一实施例中,将用于下部页编程的最后电压脉冲增加ΔVpgm3以用于第一上部页或全序列脉冲。在第一额外脉冲之后,如所述将值增加ΔVpgm2。ΔVpgm3可大于ΔVpgm2以提供从两个不同步长得到的两种编程速率之间的更稳定的转变。

步骤510′还可包含复位程序计数器PC。举例来说,可独立建立最大数目的脉冲以用于下部页和上部页或全序列编程。在下部页与上部页之间或下部页与全序列编程之间的编程转变时,可将计数器PC复位为0或另一值。在另一实施例中,不复位计数器PC且使用用于整个编程操作的总最大数目的反复或脉冲。可根据实施例实践其它变型。

在图15中所描述的技术的变型中,即使在转变到全序列编程之后,也在对最低经编程状态的编程完成之后才增加用于编程电压脉冲的增量值。如果控制器在步骤608处确定下部页编程完成。那么操作如已描述那样前进到步骤610。然而,如果下部页编程尚未完成,那么控制器停止下部页编程过程且转换到全序列编程,如步骤612到618处说明。然而,在用于最低经编程状态(例如,状态A)的编程已完成之后,编程电压增量值才将改变到ΔVpgm2。当所有或预定单元被验证为已达到状态A时,编程电压增量值可改变为ΔVpgm2。在一个实施例中,选择预定数目的编程电压脉冲且用于确定何时切换到ΔVpgm2。举例来说,在切换到全序列编程之后,可在自从最初开始下部页编程过程时起已施加预定数目的编程电压脉冲之后将编程电压增量值改变为ΔVpgm2。

在一个实施例中,步骤608处对下部页编程完成的确定可基于下部页编程循环的预定数目的反复(即,预定数目的编程电压脉冲),而不管单元是否实际上被编程到适当状态(例如,状态A)。下部页编程也可在预定数目的单元已达到适当状态时(可在验证成功下部页编程正常所需的整组单元已达到适当状态之前)确定为完成。在这些实例的任一者中,一些单元可能需要基于复位编程电压信号之后的下部页数据且使用增量值ΔVpgm2的额外编程。这可在步骤610处的上部页编程期间通过以下方式来处置:不锁定那些尚未被验证为已达到状态A的待编程到状态A的单元,且在上部页编程期间以状态A电平继续验证。

在当一些单元可能仍需要编程到最低经编程状态时在步骤610处向上部页编程转变的一个实施例中,在针对最低经编程状态的编程完成之后才将ΔVpgm改变为ΔVpgm2。在上部页编程期间将继续使用ΔVpgm1,直到针对最低经编程状态的编程被验证为止。举例来说,在待编程到状态A的预定数目的单元已达到状态A之后,ΔVpgm可从ΔVpgm1改变为ΔVpgm2。

在对图15的又一变型中,如果如步骤608处确定下部页编程未完成,那么控制器不停止下部页编程过程且在接收到上部页数据时立即转换到全序列编程。事实上,控制器进行等待,直到其确定在转变之前下部页编程完成为止。

图16是如果针对下部页的编程完成则在接收到额外数据之后仅改变增量值的方法的流程图。所述技术可在从下部页编程向上部页编程或从下部页编程向全序列编程转变时切换增量值。在步骤704处接收下部页数据。在步骤706处设定地址数据,在步骤708处输入编程数据,且控制器在步骤710处发出编程命令。在步骤712处将Vpgm设定为其初始值,初始化程序计数器,且将ΔVpgm设定为ΔVpgm1。在步骤714处对下部页数据进行编程,例如图14中所示(步骤512到530)。在对下部页进行编程的同时,在步骤716处接收上部页数据。在步骤718处设定地址数据且在步骤720处输入编程数据。在发出经更新编程命令之前,控制器在步骤722处确定下部页编程是否完成。如先前针对图15的步骤608所述,可以各种方式执行确定状态A编程是否完成。可做出待编程到状态A的全部或预定数目的单元是否已达到状态A的确定。在其它实例中,步骤722可包含确定是否已施加预定数目的脉冲,且如果是,那么确定下部页编程完成。

如果下部页编程未完成,那么控制器在步骤724处继续下部页编程,且在此循环中继续等待下部页编程完成。当下部页编程完成时,方法在步骤726处继续进行,其中控制器发出经更新编程命令。控制器可在步骤728处将Vpgm复位为初始值Vinitial2,将增量值ΔVpgm复位为ΔVpgm2,且将程序计数器PC复位。在对信号复位(可通过将负责提供编程电压信号的数字到模拟转换器复位来执行)之后,在新命令下的编程在步骤730处开始。

在一个实施例中,步骤726处设定的编程命令是用于上部页编程。在步骤722处,控制器可在确定下部页编程完成之前进行等待,直到针对状态A的编程被成功验证为止。在此情况下,下部页编程数据已经编程,且针对上部页的编程是在步骤730处需要执行的所有内容。在此技术的变型中,只要下部页编程完成,就可在726处发出上部页编程命令,且在步骤730处编程针对上部页继续进行。然而,在针对最低经编程状态的编程被验证为完成之后才在步骤728处复位ΔVpgm。待编程到状态A的已编程到状态A的那些单元将被锁定以免于进一步编程,且尚未达到状态A的待编程到状态A的那些单元将经历进一步编程和验证。当状态A编程被验证为完成时,编程电压增量值可改变为ΔVpgm2。

在当一些单元可能仍需要升高到状态A时做出步骤722处对下部页编程完成的确定(例如,通过基于预定数目的脉冲而确定)的情况下,在一个实施例中编程可在步骤726处转变到全序列编程。可在施加第一编程电压脉冲以用于全序列编程之前执行验证。在下部页编程期间已达到其最终目标状态的任何单元可被锁定以免于在全序列编程期间受到额外编程。在下部页编程已完成的确定时尚未达到状态A的待编程到状态A的任何单元将在全序列反复期间经历额外编程。全序列编程可以状态A电平执行验证,使得在下部页编程期间未达到其目标A状态的单元可在全序列编程期间编程到状态A。在一个实施例中,当下部页编程完成时做出步骤726处的向全序列编程的转变,但在最低经编程状态被验证为完成之后(如果没有已被如此验证),编程电压增量值才改变为ΔVpgm2。

如图16中所示仅在完成下部页编程之后向全序列编程(或上部页编程)以及较大增量值转变的实施例可在特定实施方案中提供益处。举例来说,一些存储器装置将使用数字到模拟转换器来产生用于不同大小的编程电压脉冲的编程电压信号。在一个实施例中,数字到模拟转换器可形成行控制电路的一部分。一些转换器依赖于数字输入值来产生具有必要峰值的模拟编程电压脉冲。在一些情况下,在编程电压脉冲序列中间改变编程电压增量值可证实为存在问题。改变增量大小可能不产生具有等于前一脉冲加上新增量值的峰值的下一脉冲。事实上,一些转换器将如同自从开始针对所述序列进行编程时起增量值已处于新电平那样产生下一脉冲。因此,在使用此转换器的一个实施例中,系统将等待下部页编程完成。当下部页编程完成时,数字到模拟转换器可同样以新增量值和初始编程电压脉冲大小复位。这将避免编程电压脉冲值的任何不一致或大跳动。

尽管已根据从下部页编程到全序列编程或从下部页编程到上部页编程的转变描述了实施例,但实施例可应用于单一类型编程操作。举例来说,在一个实施例中,当在全序列编程中对最低经编程状态进行编程时使用较小的增量值ΔVpgm1。当最低经编程状态(例如,状态A)完成编程时,可将ΔVpgm复位为较大的增量值ΔVpgm2。以此方式,编程到状态A的存储器单元所经历的增加的电容性耦合效应被补偿较低的ΔVpgm1。尽管没有执行编程方法的改变,但增量值仍被较精确地调节到最低电平经编程状态。

在一个实施例中,使用统计学来预测何时最低经编程状态将完成编程。可在较低状态编程的所预测完成之后改变编程电压增量大小。举例来说,可确定在8个脉冲90%的时间之后较低状态完成编程。编程算法可使用较小的ΔVpgm1用于前八个编程电压脉冲,且随后切换到较大的增量值ΔVpgm2用于其余脉冲。以此方式,不必需要电路来评估下部页编程是否实际上完成并作为响应而改变编程电压增量值。事实上,在指定或预定数目的脉冲或编程电压信号的施加之后,增量值自动改变。此方法可与在切换增量值之前等待最低经编程状态完成编程的上述技术中的任一者一起使用。举例来说,如先前所述在切换到ΔVpgm2之前施加的预定数目的脉冲可基于何时将单元编程到状态A将完成的统计估计。

用于在从下部页向上部页或全序列编程转变时或针对第一编程状态的编程完成时改变增量值的技术可与其它编程技术组合。在一个实施例中,结合改变的增量值而利用所谓的粗略/精细编程。

在粗略/精细编程中,粗略编程阶段包含尝试以较快方式升高阈值电压,同时较不注意实现紧密的阈值电压分布。精细编程阶段尝试以较慢方式升高阈值电压,以便达到目标阈值电压,因此实现较紧密的阈值电压分布。粗略/精细编程方法的一个实例可参见第6,643,188号美国专利,其全文以引用的方式并入本文中。

图17和18提供粗略/精细编程方法的一个实例的更多细节。图17A和18A描绘施加于控制栅极的编程脉冲Vpgm。图17B和18B描绘用于正被编程的存储器单元的位线电压。图17C和18C描绘正被编程的存储器单元的阈值电压。此实例描绘使用两个验证电平将存储器单元编程到状态A,所述两个验证电平在图中指示为VvA1和VvA。最终目标电平是VvA。当存储器单元的阈值电压已达到VvA时,将通过向对应于所述存储器单元的位线施加抑制电压来抑制存储器单元以免于进一步编程。举例来说,位线电压可升高到V抑制(见图17B和图17B)。然而,当存储器单元已达到接近于(但低于)目标值VvA的阈值电压时,通过向位线施加某一偏置电压(通常大约0.3v到0.8v)来减慢后续编程脉冲期间存储器单元的阈值电压移位。因为在接下来几个编程脉冲期间阈值电压移位的速率减小,所以最终阈值电压分布可能较窄。为了实施此方法,使用低于VvA的电平的第二验证电平。此第二验证电平在图17和18中描绘为VvA1。当存储器单元的阈值电压大于VvA1但仍低于VvA时,将通过施加位线偏置VS(图18B)针对后续编程脉冲减小存储器单元的阈值电压移位。请注意,在此情况下,针对每一状态需要两个验证操作。一个验证操作是以用于粗略/精细编程方法所应用于的每一状态的对应最终验证电平(例如,VvA),且一个验证操作是以用于每一状态的对应第二验证电平(例如,VvA1)。这可能增加对存储器单元进行编程所需的总时间。然而,可使用较大的ΔVpgm步长来加速所述过程。

图17A、17B和17C展示阈值电压在一个编程脉冲中移动经过VvA1和VvA的存储器单元的行为。举例来说,阈值电压在图17C中描绘为在t2与t3之间经过VvA1和VvA。因此,在t3之前,存储器单元处于粗略阶段。在t3之后,存储器单元处于抑制模式。

图18A、18B和18C描绘进入粗略和精细编程阶段两者的存储器单元。存储器单元的阈值电压在时间t2与时间t3之间穿过VvA1。在t3之前,存储器单元处于粗略阶段。在t3之后,将位线电压升高到VS以将存储器单元置于精细阶段。在t3与t4之间,存储器单元的阈值电压穿过VvA。因此,通过将位线电压升高到V抑制而抑制存储器单元以免于进一步编程。

在一个实施例中,当改变增量值时使用这些粗略/精细编程技术。粗略/精细编程的使用可产生较窄的阈值分布。这可用于补偿从使用较大增量值而带来的分布宽度的任何增加。这些技术可以各种方式并入增量值的改变中。

举例来说,在一个实施例中,当对每一状态进行编程和验证时使用粗略/精细编程。然而,在增量值改变的一个实施例中,可结合增量值的切换而使用粗略/精细编程。举例来说,当对下部页进行编程时可使用单一最终验证电平来确定单元是否已达到(例如)状态A。当在增加增量值之后以全序列或针对上部页编程时,可发起粗略/精细编程。在一个实施例中,在全序列或上部页编程期间使用粗略和精细验证电平用于每一状态。在其它实施例中,粗略和精细验证电平仅用于一个或多个选定状态。举例来说,粗略和精细电平可仅用于状态B和状态C或仅用于状态C。

已出于说明和描述的目的呈现了以上对本发明的详细描述。不希望其为详尽的或将本发明限于所揭示的精确形式。鉴于以上教示,许多修改和变化是可能的。选择所描述的实施例以便最佳地解释本发明的原理及其实践应用,进而使所属领域的技术人员能够在各种实施例中且以适于所预期的特定用途的各种修改来最好地利用本发明。期望本发明的范围由所附权利要求书界定。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号