首页> 中国专利> 在编程相邻存储单元后对过度编程的存储单元的检测

在编程相邻存储单元后对过度编程的存储单元的检测

摘要

在一非易失性半导体存储系统(或其它类型的存储系统)中,是通过改变存储单元的阈电压来编程存储单元。由于在所述系统中的不同存储单元的编程速度的变化,所以将存在某些存储单元过度编程的可能性。即,在一个实例中,将使阈电压移动超过预期值或值的范围。本发明包括判定所述存储单元是否由于编程一相邻行的单元而被过度编程。

著录项

  • 公开/公告号CN1853240A

    专利类型发明专利

  • 公开/公告日2006-10-25

    原文格式PDF

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

    申请/专利号CN200480026442.8

  • 发明设计人 陈建;李彦;杰弗里·W·卢策;

    申请日2004-07-07

  • 分类号G11C16/34(20060101);

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

  • 代理人刘国伟

  • 地址 美国加利福尼亚州

  • 入库时间 2023-12-17 17:51:11

法律信息

  • 法律状态公告日

    法律状态信息

    法律状态

  • 2016-07-20

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

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

  • 2013-02-27

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

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

  • 2012-05-02

    专利权的转移 IPC(主分类):G11C16/34 变更前: 变更后: 登记生效日:20120323 申请日:20040707

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

  • 2009-04-01

    授权

    授权

  • 2006-12-20

    实质审查的生效

    实质审查的生效

  • 2006-10-25

    公开

    公开

查看全部

说明书

相关申请案的交叉参考

本申请案涉及与本申请案同一天申请的,由Jian Chen、Yan Li和Jeffrey W.Lutze所著的,题为“DETECTING OVER PROGRAMMED MEMORY”的美国专利申请案,其以引用的方式并入本文中。

技术领域

本发明大体涉及用于存储装置的技术,且更具体地说,本发明涉及检测存储装置是否过度编程。

背景技术

半导体存储装置已变得更加普及地应用于各种电子装置中。举例来说,非易失性半导体存储器被用于移动电话、数码相机、个人数字助理、移动计算装置、非移动计算装置(non-mobile computing device)和其它装置中。在最普及的非易失性半导体存储器当中有电可擦可编程只读存储器(EEPROM)和闪存。

典型的EEPROM和闪存利用具有一浮动栅极(floating gate)的存储单元,所述浮动栅极提供于半导体基板中的一通道区域的上方并与所述通道区域绝缘。所述浮动栅极位于源极区域与漏极区域之间。一控制栅极提供于浮动栅极上并与所述浮动栅极绝缘。存储器的阈电压由保留在浮动栅极上的电荷的量来控制。即,在存储单元接通以允许在其源极与漏极之间进行传导之前,必须施加到控制栅极的最小电压量是由浮动栅极上的电荷电平来控制。

某些EEPROM和闪存装置具有用于存储电荷的两种范围的浮动栅极且,因此,可在两种状态之间编程/擦除存储单元。当编程EEPROM或闪存装置时,将一编程电压(program voltage)施加到控制栅极并使位线接地。使来自p-阱(p-well)的电子注入浮动栅极中。当电子累积在浮动栅极中时,浮动栅极开始变得带负电荷且存储单元的阈电压升高。

通常,施加到控制栅极的编程电压是作为一系列脉冲来施加的。脉冲的量值随着每一次脉冲而以一预定步长(step size)增加。在脉冲之间的周期中,执行验证操作。即,平行编程的每一单元的编程水平在每一编程脉冲之间读取,以判定其是等于还是大于其被编程到的验证水平。一种验证编程的方法是在一特定比较点处测试传导性。

传导性表示对应于电流流过装置的通道的装置的″开启″状态。″关闭″状态对应于没有电流流过源极与漏极之间的通道。通常,如果施加到控制栅极的电压大于阈电压,那么闪存单元将导通,且如果施加到控制栅极的电压小于阈电压,那么存储单元将不导通。通过将单元的阈电压设定为一适当值,可使所述单元针对给定的一组施加电压导通或不导通。因此,通过判定在给定的一组施加电压下一单元是否导通,可判定所述单元的状态。

通过在一装置内识别多个、截然不同的阈电压范围来产生多位或多状态闪存单元。每一截然不同的阈电压范围都对应于用于所述组数据位的预定值。编程到存储单元中的数据与单元的阈电压电平之间的特定关系视所述单元所采用的数据编码方案而定。举例来说,美国专利第6,222,762号和2003年6月13日申请的题为″Tracking Cells For A MemorySystem″的美国专利申请案第10/461,244号描述了各种数据编码方案,所述两者之全文以引用的方式并入本文中。适合的数据存储要求使多状态存储单元的阈电压电平的多个范围以足够的裕度彼此分离,以使得存储单元的电平能以明确的方式编程或擦除。

在许多情况下,举例来说,为生产市场需要的可在合理的时间量内编程的存储系统,平行地编程多个存储单元是必要的。然而,当要同时编程若干存储单元时出现了一个问题。此是由于归因于包含所述存储单元的半导体装置的结构和操作中的微小变化,每一存储单元的特征不同;因此,通常将会发生不同单元的编程速度中的变化。此导致比其它存储单元编程得更快的存储单元和一些存储单元会被编程到与所希望的不同的状态的可能性。对多个存储单元的更快编程可导致过冲(overshooting)所需阈电压电平范围,从而在正被存储的数据中产生误差。

通常,当正在编程数据时,装置的验证过程将保证存储单元的阈电压高于一最小电平。然而,装置通常不保证阈电压的上限。一些装置确实会检查软编程过程(softprogramming process)(下文中描述)  是否使阈电压上升得太高;然而,这些装置不会检查常规编程过程是否使阈电压上升得太高。因此,使阈电压升高而超出所需状态的范围的过度编程可在不被察觉的情况下发生。过度编程会导致存储单元存储不正确的数据,进而在随后的读取操作期间导致误差。可在美国专利号5,321,699、5,386,422、5,469,444、6,134,140及5,602,789中找到关于过度编程的更多信息。

为校正过度编程,许多存储系统在随后的读取操作期间使用误差校正码(″ECC″)。当从一装置读取数据时,使用ECC来判定是否发生了误差。如果误差足够小,那么可使用ECC来校正误差。然而,当使用ECC来校正归因于过度编程的误差时会出现至少三个问题。第一,ECC过程需要大量处理时间,且因此,大大减缓了存储系统的操作。第二,ECC需要附加的专用硬件来在合理的时间量中执行ECC。此类专用硬件可在存储系统芯片上占据相当大的空间量。趋势是减少存储系统的大小以便能够在系统中放置更多的存储单元且使系统尽可能的小以适应更小的主机装置。因此,新的存储器设计通常减少可用于ECC的基板面(real estate)的量。第三,如果有多个误差,那么ECC可能不能够校正所述误差。

因此,需要一种经改进的构件来检测存储单元的过度编程。

发明内容

本发明大体上来说属于用于检测存储装置是否已经过度编程的技术。一旦检测到一个或一个以上存储装置已经过度编程,系统就可通过用来修正数据的若干已知方法中任何一种来对所述情形进行补救。举例来说,系统可将数据重写到相同或不同的存储装置。此类过度编程检测确保了数据没有归因于过度编程的误差,以使得对ECC的要求可减少。

本发明的一个实施例包括一种用于检测使用多个逻辑页的存储系统中的过度编程的方法。所述方法包括以一特定逻辑页的数据来编程第一多状态存储元件,和使用来自一不同的逻辑页的数据来判定所述第一多状态存储元件是否过度编程。在一个实施中,系统判定第一多状态存储元件的阈电压是否大于一比较值。如果第一多状态存储元件的阈电压大于比较值且不同逻辑页的数据指示第一多状态存储元件的阈电压不应大于所述比较值,那么系统断定第一多状态存储元件被过度编程。在两个逻辑页都已经编程后,执行所述过度编程检测。

本发明的另一实施例包括编程与第一控制线相关的一个或一个以上多状态存储元件和随后编程与第二控制线相关的一个或一个以上多状态存储元件。在编程与第二控制线相关的一个或一个以上多状态存储元件后,判定与第一控制线相关的一个或一个以上多状态存储元件是否过度编程。控制线可为字线、位线、或其它类型的控制线(视技术而定)。在一个实施例中,通过以下步骤来作出过度编程判定:对与第一控制线相关的多状态存储元件执行读取操作以获取一个或一个以上过度编程范围的边缘;和如果与第一控制线相关的多状态存储元件具有在所述过度编程范围中的一个内的阈电压,那么判定其过度编程。在另一实施例中,通过以下步骤来作出过度编程判定:对与第一控制线相关的多状态存储元件执行读取操作以获取一组一个或一个以上读取比较点,以便判定与第一控制线相关的多状态存储元件的初始状态;对与第一控制线和初始状态相关的多状态存储元件执行误差校正码过程;和如果对一多状态存储元件的误差校正码过程失败,那么判定那个多状态存储元件被过度编程。

在另一实施例中,本发明包括编程第一多状态存储元件和编程第二多状态存储元件。在编程第二多状态存储元件后,系统判定第一多状态存储元件是否过度编程。

在一个实施例中,实施本发明的系统包括一存储元件阵列和一管理电路。所述管理电路可包括专用硬件和/或可包括由存储在诸如非易失性存储器(例如闪存、EEPROM等)或其它存储装置的一个或一个以上存储装置中的软件来编程的硬件。在一个实施例中,管理电路包括一控制器和一状态机。在另一实施例中,管理电路只包括一状态机而不包括一控制器。管理电路可执行上文所论述的步骤。在一些实施例中,由状态机执行用于验证一存储元件是否过度编程的过程。在一些实施中,状态机与存储元件阵列位于相同的集成电路芯片上。

从结合附图陈述的本发明的优选实施例的以下描述中,本发明的这些和其它目标和优势会变得更加清楚。

附图说明

图1是一NAND串的俯视图。

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

图3是所述NAND串的横截面图。

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

图5是在其中实施本发明的各种方面的非易失性存储系统的一个实施例的方框图。

图6说明一存储阵列的构造的实例。

图7描绘列控制电路的一部分。

图8描绘存储单元阈值分布并说明用于编程多状态存储单元的技术的实例。

图9是描述用于编程一存储阵列的过程的一个实施例的流程图。

图10-13是描述用于执行过度编程检测的一组过程的一个实施例的流程图。

图14A和14B是描述用于编程并执行过度编程检测的过程的两个实施例的流程图。

图15A描绘存储器阈值分布。

图15B和15C是描述用于执行过度编程检测的过程的两个实施例的流程图。

图16描绘具有用于执行过度编程检测的一组备用比较点的存储器阈值分布。

图17-22是执行过度编程检测的附加实施例的真值表。

具体实施方式

闪存系统的一个实例使用NAND结构,其包括将多个晶体管串联配置在两个选择栅极之间。所述串联的晶体管和所述选择栅极称为一NAND串。图1是展示一个NAND串的俯视图。图2是其等效电路。图1和图2中所描绘的NAND串包括串联并夹在第一选择栅极120与第二选择栅极122之间的四个晶体管100、102、104和106。选择栅极120将NAND串连接到位线126。选择栅极122将NAND串连接到源极线(source line)128。通过将适当的电压施加到控制栅极120CG来控制选择栅极120。通过将适当的电压施加到控制栅极122CG来控制选择栅极122。晶体管100、102、104和106中的每一个都具有一控制栅极和一浮动栅极。晶体管100具有控制栅极100CG和浮动栅极100FG。晶体管102包括控制栅极102CG和浮动栅极102FG。晶体管104包括控制栅极104CG和浮动栅极104FG。晶体管106包括控制栅极106CG和浮动栅极106FG。控制栅极100CG连接到字线WL3;控制栅极102CG连接到字线WL2;控制栅极104CG连接到字线WL1;且控制栅极106CG连接到字线WL0。

图3提供上文所述的NAND串的横截面图。如图3中所描绘,NAND串的晶体管(也称作单元或存储单元)形成在p-阱区域140中。每一晶体管都包括一由所述控制栅极(100CG、102CG、104CG和106CG)和一浮动栅极(100FG、102FG、104FG和106FG)组成的堆叠栅极结构。浮动栅极形成于在氧化膜之上的p-阱的表面上。控制栅极位于浮动栅极上方,一氧化层使控制栅极与浮动栅极分离。注意,图3看似描绘晶体管120和122的控制栅极和浮动栅极。然而,对于晶体管120和122来说,控制栅极和浮动栅极是连接在一起的。存储单元(100、102、104、106)的控制栅极形成字线。在相邻单元之间共用N+扩散层(N+diffused layer)130、132、134、136和138,藉此所述单元彼此串联连接以形成一NAND串。这些N+扩散层形成所述单元中的每一个的源极和漏极。举例来说,N+扩散层130充当晶体管122的漏极和晶体管106的源极;N+扩散层132充当晶体管106的漏极和晶体管104的源极;N+扩散区域134充当晶体管104的漏极和晶体管102的源极;N+扩散区域136充当晶体管102的漏极和晶体管100的源极;且N+扩散层138充当晶体管100的漏极和晶体管120的源极。N+扩散层126连接到所述NAND串的位线,而N+扩散层128连接到多个NAND串的共用源极线。

注意,尽管图1-3显示NAND串中的四个存储单元,但使用四个晶体管只作为一实例而提供。一NAND串可具有少于四个的存储单元或多于四个的存储单元。举例来说,一些NAND串将包括8个存储单元、16个存储单元、32个存储单元等。本文的论述不限于NAND串中的存储单元的任一特定数目。

使用NAND结构的闪存系统的一典型架构将包括若干NAND串。举例来说,图4显示具有更多NAND串的存储阵列的三个NAND串202、204和206。图4的NAND串中的每一个都包括两个选择晶体管和四个存储单元。举例来说,NAND串202包括选择晶体管220和230与存储单元220、224、226和228。NAND串204包括选择晶体管240和250与存储单元242、244、246和248。每一串都由其选择晶体管(例如选择晶体管230和选择晶体管250)连接到源极线。一选择线SGS用于控制源极端选择栅极。由选择晶体管220、240等(其由选择线SGD控制)将各个NAND串连接到个别位线。在其它实施例中,未必需要共用选择线。字线WL3连接到存储单元222和存储单元242的控制栅极。字线WL2连接到存储单元224、存储单元244和存储单元250的控制栅极。字线WL1连接到存储单元226和存储单元246的控制栅极。字线WL0连接到存储单元228和存储单元248的控制栅极。如可见,每一位线和各别NAND串组成存储单元阵列的列。字线(WL3、WL2、WL1和WL0)组成所述阵列的行。

每一存储单元可存储数据(模拟或数字)。当存储数字数据的一个位时,将存储单元的可能阈电压的范围划分为分配到逻辑数据″1″和″0″的两个范围。在NAND类型闪存的一个实例中,在擦除存储单元后电压阈值为负,并定义为逻辑″1″。在编程操作后阈电压为正,并定义为逻辑″0″。当阈电压为负且试图进行读取时,存储单元会接通以指示逻辑1被存储。当阈电压为正且试图进行读取操作时,存储单元不会接通,此指示逻辑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)。其它类型的闪存装置也可与本发明一起使用。举例来说,以下专利描述NOR类型闪存,且所述案的全文以引用的方式并入本文中:美国专利第5,095,344号、第5,172,338号、第5,890,192号和第6,151,248号。可在美国专利第6,151,248号中找到闪存类型的另一实例,所述案的全文以引用的方式并入本文中。

图5是可用于实施本发明的闪存系统的一个实施例的方框图。由列控制电路304、行控制电路306、c-源极控制电路310和p-阱控制电路308来控制存储单元阵列302。列控制电路304连接到存储单元阵列302的位线以读取存储在存储单元中的数据、在一编程操作期间判定存储单元的状态并控制位线的电位电平来促进编程或禁止编程。行控制电路306连接到字线以选择所述字线中之一个、施加读取电压、施加编程电压并施加擦除电压。C-源极控制电路310控制连接到存储单元的共用源极线(图6中标记为″C-源极″)。P-阱控制电路308控制p-阱电压。

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

将用于控制闪存装置的命令数据输入控制器318。所述命令数据通知闪存请求了什么操作。输入命令传送到控制列控制电路304、行控制电路306、c-源极控制310、p-阱控制电路308和数据输入/输出缓冲器312的状态机316。状态机316还可输出闪存的状态数据,诸如READY/BUSY(待用/忙碌)或PASS/FAIL(通过/失败)。

控制器318连接到或可连接到诸如个人电脑、数码相机、个人数字助理等的主机系统。控制器318与主机通信以便从主机接收命令;从主机接收数据;将数据提供到主机并将状态信息提供到主机。控制器318将来自主机的命令转换为可由与状态机316通信的命令电路314加以解译并执行的命令信号。控制器318通常含有写入到存储阵列或从存储阵列读取的用户数据的缓冲存储器。

一个示范性存储系统包含:一个包括控制器318的集成电路,和一个或一个以上集成电路芯片,其每一个都含有一存储阵列和相关的控制、输入/输出和状态机电路。趋势是将一系统的存储阵列和控制器电路一起集成在一个或一个以上集成电路芯片上。存储系统可嵌入作为主机系统的一部分,或可包含在一可移除地插入主机系统中的存储卡(或其它插件)中。此类可移除卡可包括整个存储系统(例如,包括控制器),或只包括所述存储阵列和相关的外围电路(同时控制器嵌入主机中)。因此,控制器可嵌入主机中或包括在可移除存储系统内。

参看图6,描述存储单元阵列302的一实例结构。作为一个实例,描述了被分为1,024个区块的NAND快闪EEPROM。存储在每一区块中的数据可同时擦除。在一个实施例中,区块是可同时擦除的单元的最小单位。在此实例中,在每一区块中都存在划分为偶数列和奇数列的8,512个列。也将位线划分为偶数位线(BLe)和奇数位线(BLo)。图6显示串联连接以形成一NAND串的四个存储单元。尽管显示每一NAND串中包括四个单元,但可使用多于或少于四个的单元。NAND串的一个端子经由第一选择晶体管SGD连接到对应的位线,且另一端子经由第二选择晶体管SGS连接到c-源极。

在读取和编程操作期间,同时选择4,256个存储单元。选定的存储单元具有相同的字线和相同种类的位线(例如,偶数位线)。因此,可同时读取或编程数据的532个字节。同时读取或编程的数据的这532个字节形成一逻辑页。因此,一个区块可存储至少八个逻辑页(四个字线,每一个都具有奇数页和偶数页)。当每一存储单元都存储数据的两个位时(例如一多级单元),一个区块存储16个页。还可与本发明一起使用其它大小的区块和页。

通过将p-阱升高到一擦除电压(例如20伏)并使一选定区块的字线接地来擦除存储单元。源极和位线是浮动的。可在整个存储阵列、单独区块或单元的另一单位上执行擦除。电子从浮动栅极传送到p-阱区域且阈电压变为负。

在读取和验证操作中,使选择栅极(SGD和SGS)和未选定的字线(例如,WL0、WL1和WL3)升高到一读取通过电压(例如4.5伏)以使晶体管作为通过栅极来操作。选定字线(例如WL2)连接到一电压,为每一读取和验证操作规定所述电压的电平以便判定相关存储单元的阈电压是否已达到了所述电平。举例来说,在对两电平的存储单元的读取操作中,选定字线WL2可接地,以使得可检测阈电压是否高于0V。在一验证操作中,例如,选定字线WL2连接到2.4V,以使得可验证阈电压是否已达到至少2.4V。源极和p-阱为0伏。选定的位线(BLe)预充电到一电平,例如0.7V。如果阈电压高于读取或验证电平,那么相关位线(BLe)的电位电平会由于不导通的存储单元而维持高电平。另一方面,如果阈电压低于读取或验证电平,那么相关位线(BLe)的电位电平会由于导通的存储单元(M)而降低到一低电平,例如少于0.5V。由连接到位线的读出放大器检测存储单元的状态。存储单元是被擦除还是被编程之间的差异视负电荷是否存储在浮动栅极中而定。举例来说,如果负电荷存储在浮动栅极中,那么阈电压会变高且晶体管可处于增强模式中。

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

图7描绘图5的列控制电路304的一部分。每一对位线(例如BLe和BLo)都耦接到一读出放大器。所述读出放大器连接到三个数据锁存器:第一数据锁存器402、第二数据锁存器404和第三数据锁存器406。三个数据锁存器中的每一个都能够存储数据的一个位。读出放大器在读取或验证操作期间感测选定位线的电位电平;以二进制方式存储感测到的数据;且在编程操作期间控制位线电压。通过选择信号″evenBL(偶数BL)″和″oddBL(奇数BL)″中的一个,读出放大器选择性地连接到选定位线。数据锁存器402、404和406耦接到I/O线408以输出读取到的数据并存储编程数据。I/O线408连接到图5的数据输入/输出缓冲器312。数据锁存器402、404和406还耦接到(多个)状态线410以接收并发送状态信息。在一个实施例中,每一对(偶数和奇数)位线都有一读出放大器、第一数据锁存器402、第二数据锁存器404和第三数据锁存器406。

图8说明存储数据的两个位(例如,四个数据状态)的存储单元的阈电压分布。分布460代表具有负阈电压电平的处于擦除状态中的单元(存储″11″)的阈电压的分布。分布462代表存储″10″的单元的阈电压的分布。分布464代表存储″00″的单元的阈电压的分布。分布466代表存储″01″的单元的阈电压的分布。在此实例中,存储在单个存储单元中的两个位中每一个都是一不同逻辑页的一部分。在正方形中显示的位对应于一下层页面。在圆形中显示的位对应于一上层页面。在一个实施例中,使用格雷码排列方向(graycode orientation)(11、10、00、01)将这些逻辑状态分配给所述物理状态,以使得如果浮动栅极的阈电压错误地偏移,那么将只影响一个位。尽管图8显示四个状态,但本发明可与少于或多于四个的状态一起使用。

为了提供改进的可靠性,个别分布最好收紧(分布变窄),因为更紧的分布会带来更宽的读取裕度(状态之间的距离)。根据文章″Fast and Accurate Programming Method forMulti-level NAND EEPROMs,第129-130页,1995年超大规模集成电路技术研讨会摘要(Digest of 1995 Symposium on VLSI Technology)″(所述文章以引用的方式并入本文中),原则上,将分布限定为0.2V宽度要求通常重复的编程脉冲在步进之间递增0.2V。为使分布收紧于0.05V宽度内,需要0.05V步进。以编程电压中如此小的步进递增对单元进行编程导致增加编程时间。

图8说明编程4状态NAND存储单元的两遍技术(two pass technique)的一实例。在第一遍编程中,根据要编程到下层逻辑页中的位来设定单元的阈电压电平。如果所述位元是逻辑″1″,那么阈电压不改变,因为其由于早先已经擦除而处于适当的状态中。然而,如果要编程的位是逻辑″0″,那么单元的阈电平增加到处于阈电压分布462内,如箭头470所示。此结束第一遍编程。

在第二遍编程中,根据编程到上层逻辑页中的位来设定单元的阈电压电平。如果上层逻辑页位将存储逻辑″1″,那么由于单元处于对应于阈电压分布460或462的状态中的一个中,所以不发生编程,视下层页面位的编程而定,所述两状态都载有上层页面位″1″。如果上层页面位将是逻辑″0″,那么阈电压偏移。如果第一遍导致单元保持对应于阈值分布460的擦除状态中,那么在第二阶段中,编程所述单元,以使得阈电压增加到处于阈电压分布466内,如箭头474所描绘。如果由于第一遍编程,已将所述单元编程为对应于阈值分布462的状态中,那么在第二遍中进一步编程所述存储单元,以使得阈电压增加到处于阈电压分布464内,如箭头472所描绘。第二遍的结果是将所述单元编程为一状态,所述状态指定为存储上层页面的逻辑″0″而不改变下层页面的数据。

注意,尽管已将特定位图案分配给所述分布中的每一个,但可以此方式分配不同的位图案,在此情况下,在其之间发生编程的所述状态可不同于图8中描绘的那些状态。

通常,平行编程的单元是沿一字线的交替单元。举例来说,图4说明沿字线WL2的更大数目的单元的三个存储单元224、244和250。一组交替单元(包括单元224和250)存储逻辑页0和2(″偶数页面″)的位,而另一组交替单元(包括单元244)存储逻辑页1和3(″奇数页面″)的位。在以上实例中,逻辑页0和1是下层页面且逻辑页2和3是上层页面。

注意,图8还显示读取比较点和验证比较点。举例来说,读取比较点包括Vr10、Vr00和Vr01。在一读取操作期间,将对应于Vr10、Vr00和Vr01的电压施加到存储单元的控制栅极以判定在哪个点上存储单元导通和不导通。基于所述三个读取操作,存储系统可判定存储单元处于哪个阈值分布(例如,哪个状态)中。举例来说,如果存储单元对于三个读取操作中的任何一个读取操作不导通,那么存储单元处于状态01。如果只有在将Vr01施加到控制栅极时存储单元才导通,那么存储单元处于状态00。如果在施加Vr00时存储单元导通且在施加Vr10时存储单元不导通,那么存储单元处于状态10。如果在施加Vr10、Vr00和Vr01时存储单元导通,那么存储单元处于状态11。在一个实施例中,读取比较点Vr10、Vr00和Vr01中的每一个都是阈值分布的相邻状态之间的中间点。在编程过程期间使用验证比较点Vr10、Vr00和Vr01以判定单元是否已充分地编程。

图8还显示过度编程验证比较点VopSP、Vop10、Vop00和Vop01。这些过度编程验证比较点用于判定一特定存储单元是否已经过度编程。举例来说,通过将VopSP施加到希望处于状态11的存储单元的控制栅极,如果所述单元不导通,那么可判定所述单元过度编程(过度软编程)。如果单元希望处于状态10,如果在将Vop10施加到单元的控制栅极时单元不导通(例如接通),那么可断定所述单元过度编程。当意图使单元处于状态00时,如果在将Vop00施加到控制栅极时存储单元不导通,那么所述单元已经过度编程。当将单元编程到状态01时,如果将Vop01施加到控制栅极时单元不导通,那么可断定所述单元过度编程。每一过度编程验证比较点都稍低于邻近的读取比较点。举例来说,在一个实施例中,其比邻近读取比较点低50mV。在其它实施例中,所述验证比较点可与邻近的读取比较点相差50mV以上或以下。在一个实施例中,由状态机316执行所述过度编程验证过程。

在编程过程的一个实施例中,在下层页面编程之前,首先将存储单元擦除(以区块或其它单位)。当编程过程开始时,将由控制器从主机接收一数据载入或写入命令。控制器将发出适当的命令到数据输入/输出缓冲器312和状态机316。控制器318将接收一地址以写入数据到那里。此地址将被映射到一个(或多个)特定逻辑页面和存储单元阵列302中的物理地址。地址数据将从控制器318发送到数据输入/输出缓冲器312和(在某些实施例中)状态机316。接着基于用于(多个)编程操作的地址来将数据发送到适当的第一数据锁存器402。来自第一数据锁存器402的数据被载入对应的第二数据锁存器404。响应于来自控制器的编程命令,接着状态机316开始图9的流程图所描述的编程过程。

在步骤594中,状态机316判定数据是正被写入上层页面还是下层页面。如果数据正被写入下层页面,那么过程在步骤600处继续。如果数据正被写入上层页面,那么状态机在步骤596中执行下层页面读取操作以判定下层页面数据。再看图8,上层页面编程包括将存储单元编程到状态00或状态01。如果下层页面数据是逻辑″1″,那么上层页面编程过程包括将存储单元编程到状态01(见图8的箭头474)。如果下层页面数据是逻辑″0″,那么上层页面编程过程包括将存储单元编程到状态00(见图8的箭头472)。因此,为了判定在上层页面编程过程期间存储单元必须被编程到哪个状态,系统需要知道下层页面数据。

在步骤596的一个实施例中,状态机在Vr10处执行一读取操作。如果存储单元导通(接通),那么下层页面的所读取数据是″1″。如果存储单元不导通(未接通),那么下层页面的所读取数据是″0″。接着将下层页面数据存储在第三数据锁存器406中。注意:可使用其它读取过程来读取下层页面数据且可将下层页面数据存储在除第三数据锁存器406之外的位置中。在将下层页面数据存储在第三数据锁存器406后,过程在步骤600处继续。

在步骤600中,状态机将施加一编程脉冲到适当的(多个)字线。在驱动第一脉冲之前,将编程电压初始化到一起始脉冲(例如12伏),且将由状态机维持的编程计数器初始化到0。在步骤600的第一次重复中,将第一编程脉冲施加到选定字线。如果逻辑″0″存储在一特定的第一数据锁存器中,那么所述存储单元的对应位线接地。另一方面,如果逻辑″1″存储在一特定存储单元的第一数据锁存器中,那么对应位线连接到Vdd以禁止编程。可在2003年3月5日申请的题为″Improved Self Boosting Technique″的美国专利申请案第10/379,608号中找到关于禁止编程的更多信息,所述案的全文以引用的方式并入本文中。

在步骤602中,验证选定的存储单元。如果检测到一选定单元的目标阈电压已达到了其目标电平(例如,通过将读出放大器的输出与第二数据锁存器相比较),那么使存储在第二数据锁存器404中的数据改变到逻辑″1″。如果检测到阈电压没有达到适当的电平,那么存储在第二数据锁存器404中的数据不改变。以此方式,具有存储在对应的第二数据锁存器404中的逻辑″1″的存储单元不需要加以编程。当所有的第二数据锁存器都存储逻辑″1″时,状态机(经由线410)知道所有选定单元都已被编程。因此,步骤604包括检查是否所有的第二数据锁存器404都存储逻辑″1″。如果是,那么编程的第一阶段完成且在步骤610中报告一适当的状态消息。

如果在步骤604中判定不是所有的第二数据锁存器404都存储逻辑″1″,那么编程过程继续。在步骤606中,对照一编程极限值来检查编程计数器。编程极限值的一个实例是20。如果编程计数器不小于20(例如已执行了最大数目的编程尝试),那么编程过程已失败(步骤608)且报告一适当的状态消息。如果编程计数器小于所述最大值,那么给编程电压电平增加下一步长;递增所述编程计数器且在步骤600处继续编程过程以施加下一脉冲。

如果在步骤604中验证步骤成功,那么所编程的存储单元中的每一个都应具有一在图8所描绘的所述分布的一个中的阈电压。然而,先前论述的过程只验证了正被编程的单元的阈电压至少与适当的验证比较点一样高。步骤602中使用的验证比较点是目标阈值分布中的最低可接受的电压电平。举例来说,参看图8,步骤604的用于验证一单元被编程为状态10的验证比较点是Vv10;用于编程为状态00的验证比较点是Vv00且用于编程为状态01的验证比较点是Vv01。因此,上文所述的过程验证编程过程不下冲(undershoot)所需状态。到此点为止,尚没有检查确认编程过程是否过冲所需状态。举例来说,如果打算将一存储单元编程为状态10且将所述存储单元的阈电压编程为任何高于Vop10的值,那么所述存储单元过度编程。步骤620-676用于判定编程过程是否过度编程存储单元。

在步骤610后,图9的过程分成两个平行的路径。如果编程过程编程了下层页面,那么过程执行步骤620-644。如果编程过程编程了上层页面,那么过程执行步骤660-676。可能某些单元会编程下层页面而其它单元在相同的编程过程期间会编程上层页面。因此,可对不同的存储单元执行不同组步骤。在另一实施例中,可对正被编程的每一单元执行步骤620-644和步骤660-676,不管下层页面或上层页面是否正被编程。

如果正编程下层页面,那么执行620。步骤620包括一软编程过度编程验证过程(softprogram over program verification process)。即,步骤620包括执行一过程,所述过程判定在擦除过程后或作为擦除过程的一部分执行的软编程过程是否将阈电压提高到高于所擦除的存储单元的可接受值。当擦除了一存储单元时,可能所擦除存储单元的阈电压太低。为补救太低的阈电压,执行一软编程过程来将所擦除存储单元的阈电压提高到可接受的水平。可能软编程过程将阈电压提高得太多,以使得存储单元变得过度编程(例如阈电压变得大于VopSP)。步骤620检测所述过度编程单元。在步骤622中,判定各个单元是否通过了620的软编程过度编程验证过程。如果不是所有的单元都通过,那么将在步骤624中返回一状态指示所述软编程过度编程验证失败。如果步骤620的过程通过(由于在所述软编程过程期间没有单元过度编程),那么在步骤638中执行状态10过度编程验证过程。

步骤638包括执行状态10过度编程验证过程。状态机判定一希望处于状态10的单元是否具有大于Vop10的阈电压。如果是,那么所述单元未通过测试(步骤640)且返回一状态指示存在一过度编程失败(步骤642)。在一个实施例中,所述状态可包括指示其为一状态10过度编程失败。在另一实施例中,还可返回高于可接受水平的阈电压的量值。如果步骤638的过程不识别出过度编程的存储单元,那么在步骤644中返回″通过″状态。在步骤644的替代实施例中,过程可返回存在一状态10过度编程验证通过。

如果编程了上层页面,那么过程在步骤660中执行状态00过度编程验证过程。系统进行检查以判定希望处于状态00中的存储单元的阈电压是否大于Vop00。如果所述单元不通过(由于希望处于状态00中的存储单元具有大于Vop00的阈电压),那么将在步骤664中提供一指示过度编程失败的状态。在一替代实施例中,所述状态可指示其为状态00过度编程失败。如果判定所述单元没有过度编程,那么过程循环到步骤670并执行状态01过度编程验证过程。

在步骤670中,系统判定希望处于状态01中的单元是否具有大于Vop01的阈电压。如果希望所述单元处于状态01中且阈电压大于验证比较点Vop01,那么所述单元不能通过所述测试且在步骤674中报告失败的状态。如果所有单元都通过测试(由于它们没有过度编程或没有处于状态01中),那么将在步骤676中报告通过的状态。在一个实施例中,可省略步骤670-676。

图10是描述用于执行软编程过度编程验证(图9的步骤620)的过程的一个实施例的流程图。在步骤700中,先前编程到存储单元中的数据仍存在于第一数据锁存器402中。将此数据从第一数据锁存器402载入所述存储单元的第二数据锁存器404中。在步骤702中,使用VopSP执行验证过程。即,系统可在控制栅极接收电压VopSP处执行一读取操作。如果存储单元导通,那么读出放大器返回逻辑1。如果单元不导通,那么读出放大器返回逻辑0。如果验证数据与第二数据锁存器404中的数据相符(步骤704),那么将第二数据锁存器404中的数据设定为1(步骤706)。对所述单元中的每一个平行执行步骤700-706。如果将存储单元的所有的第二数据锁存器都设定为1(步骤708),那么软编程过度编程验证过程返回″通过″的结果(步骤710)。如果不是所有的第二数据锁存器404都设定为1,那么过程失败(步骤712)。注意,如果单元处于状态10中,那么在步骤700中载入第二数据锁存器中的数据将是逻辑0,验证步骤702将施加VopSP电压,晶体管将不会导通且读出数据将指示0。因此,读取数据将与第二数据锁存器404中的数据相符,第二数据锁存器404将被设定为逻辑1且过程仍将通过。

图11是描述用于执行状态10过度编程验证(图9的步骤638)的过程的流程图。在图11中的步骤764中,系统使用Vop10执行验证过程。即,随着将Vop10施加到各个存储单元的控制栅极,执行读取操作。如果一单元处于状态11或10且没有过度编程,那么所述单元应导通;因此,应接收到逻辑1。在步骤766中,将得自验证步骤的结果载入第二数据锁存器404。如果所有的单元都没有过度编程,那么它们都应具有一存储在它们各自的第二数据锁存器中的逻辑1。如果所有的第二数据锁存器都处于逻辑1(步骤768),那么过程通过(步骤770)。如果不是所有的第二数据锁存器都处于逻辑1,那么过程失败(步骤772)。

图12是描述用于执行状态00过度编程验证过程(图9的步骤660)的过程的一个实施例的流程图。在图12的步骤802中,使用Vop00执行验证过程。即,随着将Vop00施加到存储单元的控制栅极,执行读取操作。在一个实施例中,如果一存储单元的阈电压大于Vop00,那么存储单元将不会接通且将返回逻辑″0″。如果一存储单元的阈电压小于Vop00,那么存储单元将接通且返回逻辑″1″。将从步骤802的验证返回的结果存储在适当的第二数据锁存器404中。在步骤804中,系统将验证步骤802的结果与存储在第三数据锁存器406中的下层页面数据相比较。在上层页面编程后执行图12的过程。如上所述,上层页面编程以读取下层页面数据和将下层页面数据存储在第三数据锁存器406中(见步骤596和598)开始。将存储在第三数据锁存器中的下层页面数据与验证步骤802的结果相比较。

在上层页面编程后,状态机需要知道存储单元是应处于状态00还是状态01。下层页面数据提供所述信息。如果下层页面数据是0,那么意味着在上层页面编程之前,存储单元处于状态10。如果存储单元处于状态10,那么执行上层页面编程会使存储单元移动到状态00(见图8的箭头472)。如果下层页面数据是1,那么意味着在上层页面编程之前,存储单元处于状态11。如果存储单元处于状态11,那么执行上层页面编程会使存储单元移动到状态01(见图8的箭头474)。因此,状态机知道:如果下层页面数据是逻辑″0″,那么其需要进行检查以查看存储单元是否过度编程。如果下层页面数据是逻辑″1″,那么存储单元不可能处于状态00且,因此,状态00过度编程验证不可能失败。

在一个实施例中,如果第三数据锁存器406中的下层页面数据是逻辑″0″且存储在第二数据锁存器404中的从步骤802的验证返回的结果是逻辑″0″,那么在步骤806中判定存储单元过度编程。此情形指示存储单元应处于状态00;然而,阈电压大于Vop00。如果下层页面数据是逻辑″1″或存储在第二数据锁存器404中的从步骤802的验证过程返回的结果是逻辑″1″,那么将存储单元验证为相对于状态00没有过度编程。在步骤806中,对于相对于状态00没有过度编程的每一存储单元,将相关的第二数据锁存器404设定为逻辑″1″。注意,如果上层页面编程过程希望将上层页面保持在逻辑1(例如状态11或状态10),那么各自的第二数据锁存器将已经在逻辑″1″处。如果所有的第二数据锁存器404都设定为逻辑″1″(步骤808),那么图12的过程通过(步骤810)。如果不是所有的第二数据锁存器404都设定为逻辑″1″,那么图12的过程失败(步骤812),因为存在相对于状态00过度编程的一或一个以上存储单元。

图13是描述用于执行状态01的上层页面过度编程验证过程(图9的步骤670)的过程的一个实例的流程图。在步骤862中,使用比较点Vop01来执行验证过程。如果单元导通(返回为逻辑1的验证结果),那么第二数据锁存器404设定为逻辑″1″;否则,第二数据锁存器404设定为逻辑″0″。如果所有的第二数据锁存器都设定为1(步骤864),那么图13的过程通过(步骤866)。如果不是所有的第二数据锁存器都设定为逻辑″1″,那么图13的过程不通过(步骤868)。

注意,上文所述的流程图认为验证过程是通过将特定电压施加到控制栅极和判定存储单元是接通还是关闭来执行的。然而,存在也可在本发明的精神内使用的验证(和读取)存储单元以判定状态的其它方法。举例来说,可使用一电流感测系统,其中将在某一读取条件下的存储单元中的电流与一组参考电流相比较。在另一实施例中,可使用若干不同参数来判定存储单元的状态。举例来说,可通过电流感测来执行对单元的所存储电荷电平的判定,其中使用固定的偏置条件来感测其传导的量值。或者,可通过感测阈电压来作出所述判定,其中可使用各种导引栅极偏置条件(steering gate bias condition)来感测所述传导的开始。或者,可通过使单元的电荷电平判定的驱动器强度控制动态保持的感测节点的放电速率(例如,通过一预充电电容器)来动态地执行判定。通过感测达到给定放电电平的时间,判定所存储的电荷电平。在此情况下,指示单元条件的参数是时间。此方法描述于美国专利第6,222,762号中,其全文以引用的方式并入本文中。另一替代技术是一种将频率用作参数来判定存储单元的状态的技术,如美国专利第6,044,019号中所述,其全文以引用的方式并入本文中。电流感测方法更完整地阐述于美国专利第5,172,338号中,其全文也以引用的方式并入本文中。

因为存在由相邻浮动栅极上的电荷导致的电场,可发生存储在浮动栅极中的视在电荷(apparent charge)中的偏移。困难在于在将现正被读取的本单元编程后的时间处,相邻的存储单元可被编程或擦除。举例来说,考虑将一组单元编程以将一电荷电平添加到其浮动栅极以对应一组数据。在用第二组数据编程第二组单元(与第一组单元相邻)后,从第一组单元的浮动栅极读取的电荷电平有时会由于来自第二组浮动栅极的电场的影响而显得与所编程的不同。即,观察到的误差可归因于来自相邻浮动栅极的电场对正被读取的单元的浮动的视在电压电平的影响。此称为遇频效应(Yupin effect),且更完整地描述于美国专利第5,867,429号和第5,930,167号中,所述专利的全文以引用的方式并入本文中。这些专利描述了将两组浮动栅极物理地彼此隔离或在读取第一组浮动栅极时考虑第二组浮动栅极上的电荷的影响。

可能的情况为:正确地编程了第一组存储单元,但当随后编程相邻的单元时,遇频效应导致第一组存储单元显得过度编程。举例来说,将检查希望编程到状态10(见图8)的第一单元以验证所述单元的阈电压高于Vv10(编程验证)并低于Vop10(过度编程验证)。在编程相邻的存储单元后,从所述第一单元读取的阈电压可能显得高于原先编程的电压(例如,高出2伏)。如果将第一存储单元编程到一刚好低于Vop10的电压阈值,那么在编程相邻的单元后,所述第一单元具有一高于Vop10的视在阈电压。因此,所述第一存储单元过度编程。视在阈电压可能高于读取比较点(例如Vr00),从而导致数据误差。注意,相邻单元可在一相邻字线上或可在一相邻位线上。举例来说,在图4中,单元244与单元224、242、250和246相邻。在一些实施中,不与单元244相邻的存储单元可具有一影响从单元244读取的视在电荷的电场。

为了解决此遇频效应(Yupin effect),在使用第一控制线(例如字线或位线)进行编程后,本发明的一组实施例将对先前已被编程并与相邻于所述第一控制线的所述控制线相关的(多个)页面执行过度编程验证检查。图14A-15C描述所述实施例。

图14A描述用于对与先前选定的字线相关的逻辑页执行过度编程验证的过程的一个实施例。在图14A的步骤902中,使用第一字线编程一组存储单元。举例来说,参看图4,可使用字线WL1编程一逻辑页。步骤902的过程包括执行图9中的过程,包括如上文相对于图10-13所述般检查过度编程的存储单元。在步骤904中,使用第二字线(例如图4的字线WL2)对存储单元执行第二组编程操作。步骤904的过程包括执行图9中的过程,包括检查过度编程的存储单元。在步骤906中,系统对与第一字线(例如字线WL1)相关的逻辑页的存储单元检查归因于上述遇频效应的过度编程。在步骤908中,系统将使用第三字线(例如字线WL3)编程第三组存储单元。步骤908的过程包括执行图9中的过程,包括检查过度编程的存储单元。在步骤910中,系统对与第二字线(例如字线WL2)相关的逻辑页检查归因于上述遇频效应的过度编程。接着过程可继续(或不继续)编程与附加字线相关的附加存储单元并对先前编程的字线检查过度编程的存储单元。

注意,在一些实施中,沿NAND串依次编程字线;因此,在第一字线用于编程后,下一编程操作使用与第一字线相邻的字线。通常(但并不总是)从源极端到漏极端(例如,从存储单元228到存储单元222(见图4))对一NAND串进行编程。因此,在使用WL0来编程后,系统将接下来使用WL1(其与WL0相邻)。因此,在图14A的实例中,将对紧接在前面的字线执行过度编程验证。然而,在其它的实施例中,可检查其它先前被编程的存储单元而不是紧接在前面的被编程的存储单元。

图14B提供一流程图,其描述通过对先前选定的位线检查过度编程的存储单元来解决遇频效应的一个实施例的过程。在一个实施例中,将位线分组为奇数位线与偶数位线。编程奇数位线后,接着编程偶数位线,接着编程奇数位线,接着编程偶数位线,等等。在其它实施例中,可在不同编程操作中使用不同组位线。图14B设想在用一组位线进行编程后,将对相对于先前被编程的另一组位线的过度编程执行检查。在步骤950中,将使用偶数位线执行编程操作。步骤950的过程包括执行图9中的过程,包括如上文相对于图10-13所述般检查过度编程的存储单元。在步骤952中,将使用奇数位线执行编程操作。步骤952的过程包括执行图9中的过程,包括检查过度编程的存储单元。在步骤954中,系统对与先前被编程的偶数位线相关的逻辑页检查归因于上述遇频效应的过度编程。在步骤956中,将使用偶数位线执行编程。步骤956的过程包括执行图9中的过程,包括检查过度编程的存储单元。在步骤958中,系统对与先前被编程的奇数字线相关的逻辑页检查归因于上述遇频效应的过度编程。此过程可以编程与在先前位线上对过度编程进行检查的交替而继续。

图14A和14B中的过程可由状态机、控制器、用于实施那些过程的特定逻辑或上述的组合来执行。

作为图14A和14B的过程的一部分,系统可使用许多不同的合适方法来对与先前被编程的控制线相关的逻辑页检查归因于遇频效应的过度编程。图15A-C描述两种所述方法;然而,还可使用许多其它合适方法。

与图8类似,图15A说明用于存储数据的两个位的存储单元的阈电压分布460、462、464和466。除读取比较点(Vr10、Vr00和Vr01)、验证比较点(Vv10、Vv00和Vv01)和过度编程比较点(VopSP、Vop10、Vop000和Vop01)之外,图15A还描绘过度编程测试点VopA、VopB和VopC。在对第一单元且接着对相邻的第二单元进行编程后,来自第二单元的遇频效应将使第一单元的阈电压升高大约0.2伏(视技术、尺寸、间距等而定,可为0.2伏或多于或少于0.2伏)。所述数据没有受到完全破坏。相反地,其受到可预测的破坏。一种情形是如果原先的编程导致第一单元的阈电压刚好低于过度编程验证电压(例如刚好低于Vop10)且接着所述单元经受最大遇频效应(例如大约0.2伏,或如上文所论述的另一值)。因此,建立过度编程区域来表示在单元由于遇频效应而变得过度编程时阈电压将位于哪里的预测。图15A显示三个过度编程区域。第一过度编程区域包括VopSP与VopA之间的区域。第二过度编程区域包括Vop10与VopB之间的区域。第三过度编程区域包括Vop00与VopC之间的区域。注意,过度编程比较点和过度编程测试点的值可不同于图15A中所描绘的值。

一个用于判定一存储单元是否由于遇频效应而过度编程的过程是测试所述单元的阈电压是否在所述过度编程区域中的一个内。如果一单元的阈电压在一过度编程区域内,那么认为所述单元由于遇频效应而过度编程。举例来说,如果判定一单元的阈电压在第二过度编程区域内,那么认为所述单元应已经在分布462内,但由于遇频效应而变得过度编程。注意,尽管图15A描绘四个阈值分布(存储数据的两个位),但当实施本发明时,还可使用更多或更少的分布(和数据的位)。

图15B提供一流程图,其描述用于测试归因于遇频效应的过度编程(如上文所述)的过程的一个实施例。可将图15B中的过程作为图14A和14B的步骤906、910、954和958中的检查过度编程的过程的一部分来执行。在步骤1002中,在所述过度编程区域中的每一个的边缘处执行读取操作。举例来说,在VopSP、VopA、Vop10、VopB、Vop00和VopC处执行读取操作。基于那些读取操作,判定单元的阈电压是否在所述过度编程区域中的任何一个内。举例来说,如果在将Vop10施加到字线时存储单元接通且在将VopB施加到字线时存储单元不接通,那么认为所述单元位于第二过度编程区域中。如果存储单元的阈电压在所述过度编程区域中的一个内(步骤1006),那么断定所述单元由于来自相邻单元的耦合(遇频效应)而过度编程(步骤1008)。在步骤1010中,将修复过度编程的单元的数据。可部分地擦除所述单元以使阈电压降低回到适当的分布中;可将所述单元完全擦除并重写;可将数据写入另一位置;可存储错误信息,以指示所述单元过度编程以使得将来的读取可考虑所述过度编程;或可执行另一合适的动作。

如果在步骤1006中判定阈电压不在所述过度编程区域中的任何一个中,那么对过度编程比较点Vop01执行读取操作。如果存储单元的阈电压大于Vop01(步骤1022),那么将认为存储单元过度编程且过程将在步骤1008处继续。如果存储单元的阈电压小于Vop01(步骤1022),那么认为存储单元没有过度编程(步骤1024)。

图15C提供一流程图,其描述用于测试归因于遇频效应的过度编程的过程的另一实施例。可将图15C中的过程作为图14A和14B的步骤906、910、954和958中的检查过度编程的过程的一部分来执行。在步骤1060中,在读取比较点Vr10、Vr00和Vr01中的每一个处执行读取操作。基于所述读取操作,初始判定存储单元的状态。在步骤1062中,根据所属技术中已知的方法执行ECC过程。如果不存在ECC误差(步骤1064),那么可认为存储单元没有由于遇频效应而过度编程(步骤1066)。如果检测到一ECC误差(步骤1064),那么可认为所述误差是通过存储单元由于遇频效应而过度编程所导致的(步骤1070)。在步骤1072中,修复数据(与图15B的步骤1010类似)。举例来说,认为在步骤1060中读取操作导致阈电压大于Vr00并小于Vr01的判定。认为存储单元处于阈值分布464中,存储逻辑数据00。如果ECC失败,那么认为存储单元应在阈值分布462中,存储逻辑数据10;然而,存储单元过度编程。因此,在步骤1072的一个实施例中,可将存储单元的阈电压校正到在阈值分布462内。

图17-22提供真值表,其与图16一起描述用于执行过度编程验证的替代实施例。与图8类似,图16说明用于存储数据两个位的存储单元的阈电压分布460、462、464和466。然而,图16显示不同的过度编程验证比较点VopSP′、Vop10′、Vop00′和Vop01′。比较点VopSP′是一比阈电压分布460中的最高电压稍大的值。Vop10′是一比阈电压分布462中的最大电压稍大的值。Vop00′是一比阈电压分布464中的最大电压稍大的值。Vop01′是一比阈电压分布466中的最大电压稍大的值。注意,图16的VopSP′低于图8的VopSP;图16的Vop10′低于图8的Vop10;图16的Vop00′低于图8的Vop00;且图16的Vop01′低于图8的Vop01。在其它实施例中,还可使用高于各自的阈电压分布的验证比较点VopSP′、Vop10′、Vop00′和Vop01′的其它值。

图17解释一用于在下层页面编程后执行软编程过度编程验证的实施例。图17的真值表具有两列,其对应于在先前的下层页面编程期间编程的″0″数据或″1″数据。真值表的第二行(在VopSP′处读取)对应于从一正被验证过度编程的存储单元读取的数据。第三行指示存储在第二数据锁存器404中的数据。第四行指示存储在第一数据锁存器402中的数据。第五行指示状态11的过度编程验证的结果。

如果编程″1″(图17中的左侧列),那么存储单元保持在状态11内。如果编程″0″,那么希望将单元编程到状态10。真值表的第二行指示一包括将VopSP′施加到存储单元的控制栅极的读取操作的结果。如果正被读取的存储单元的阈电压高于VopSP′,那么存储单元不会接通且会读取逻辑0。如果存储单元的阈电压低于VopSP′,那么存储单元会接通且会读取逻辑1。在对应于将逻辑1编程到存储单元中的列中,读取步骤将读取逻辑″1″(适当编程)或逻辑″0″(过度编程)。在将单元编程到状态10的情况下,由于在编程期间的验证步骤验证了电压至少大于Vv10,所以读取步骤会读取逻辑″0″。将读取的数据存储在第二数据锁存器404中。第一数据锁存器402存储先前编程到下层页面中的数据。状态机将检查第一数据锁存器402和第二数据锁存器404的内容。如果第一数据锁存器402正存储逻辑″1″且第二数据锁存器404正存储逻辑″0″,那么过度编程测试失败。即,状态机断定存储单元过度编程。

图18是一真值表,其描述在已经执行下层页面编程和上层页面编程两者后执行软编程过度编程验证的实施例。为了适应所述任务,有必要考虑下层页面数据和上层页面数据。因为上层页面和下层页面编程操作两者都已经执行,所以真值表包括所有四种状态11、10、00和01的列。真值表的第二行指示当将VopSP′施加到控制栅极时从单元读取的数据。如果希望单元处于状态11,那么在单元没有过度编程时读取操作会返回1且在单元过度编程时会返回0。如果单元处于其它三种状态中的任何一个时,因为在编程过程期间的先前验证步骤会已经确保单元的阈电压充分地高于适当的验证点,所以应返回0。真值表的第三行指示第二数据锁存器404的内容,所述第二数据锁存器404存储先前所描述的读取操作的结果。第四行指示第三数据锁存器406的内容。如上文所述,第三数据锁存器存储下层页面数据。第五行指示状态11的过度编程验证的结果。状态机进行检查以判定第三数据锁存器406是否正存储逻辑1且第二数据锁存器404是否正存储逻辑0。如果是,那么因为存储单元过度编程,所以过度编程测试失败。如果不是,那么测试通过。

在另一实施例中,代替使用先前存储在第三数据锁存器中的数据,系统随后将在Vr10处执行另一读取。所述读取操作判定所述单元的阈电压是否高于VopSP′并低于Vr10。如果是,那么状态机断定存储单元过度编程;否则,状态机认为所述存储单元没有过度编程。

图19是一真值表,其描述用于验证将一单元编程到状态10的编程过程是否过度编程所述单元的过程。在一下层页面编程过程后且在一上层页面编程过程之前,执行与图19相关的验证过程。所述真值表具有两列,其中一个列对应于当将逻辑″1″编程到下层页面时的情形且另一列对应于当将逻辑″0″编程到下层页面时的情形。第二行指示来自将Vop10′施加到控制栅极的读取操作的数据。如果希望存储单元保持在状态11中或存储单元适当地编程到状态10,那么在Vop10′处的读取操作将导致存储单元接通且报告逻辑″1″。将读取操作的此结果存储在第二数据锁存器404中(见真值表的第三行)。如果所述单元希望编程到状态10且并过度编程,那么因为所述单元不会接通,所以在Vop10′处的读取操作将导致逻辑″0″。第一数据锁存器402存储所编程的数据(见第四行)。如果编程逻辑″1″(例如,没有进行编程),那么第二数据锁存器404和第一数据锁存器402两者都将存储逻辑1且测试将通过(见第五列)。如果适当地编程逻辑″0″,那么第一数据锁存器404将存储逻辑0、第二数据锁存器402将存储逻辑1且测试将通过。如果第二数据锁存器404位于逻辑0且第一数据锁存器402位于逻辑0,那么因为所述单元过度编程,所以测试失败。

图20是一真值表,其描述用于在已经编程了上层页面和下层页面两者后执行状态10过度编程验证的过程。因为两页面都已被编程,所以存在四列,一列对应于可将一单元编程到的每一状态——11、10、00和01。第二行指示来自将Vop10′施加到控制栅极的读取操作的数据。所述读取操作的结果存储在第二数据锁存器404中(第三行)。如果存储单元保持在状态11中或适当地编程到状态10,那么存储单元会接通且会读取逻辑″1″。如果所述单元希望编程到状态10,但过度编程,那么所述单元不会接通且会返回逻辑″0″。如果在上层页面编程期间将单元编程到状态00或状态01,那么所述单元不会接通且会读取逻辑″0″。第一数据锁存器402将存储来自最近执行的上层页面编程操作的数据(第四行)。举例来说,如果单元处于状态11或10,那么第一数据锁存器将存储逻辑″1″。如果单元处于状态00或01,那么第一数据锁存器将存储逻辑″0″。接着系统将进行测试以判定第一数据锁存器402是否正存储逻辑1且第二数据锁存器404是否正存储逻辑0。如果是,那么因为存储单元过度编程,所以验证过程失败。否则,验证过程通过(第五行)。

图21是一真值表,其描述用于执行状态00过度编程验证的过程。在上层页面和下层页面编程后,执行验证状态00的过程;因此,图21的真值表显示四列(一列对应于可将所述单元编程到的每一状态)。首先,执行一包括将Vop00′施加到控制栅极的读取操作(见真值表的第二行)。如果将单元适当地编程到状态11、10或00,那么单元会接通且会返回逻辑″1″。如果将所述单元编程到状态01,那么所述单元不会接通且会返回逻辑″0″。如果所述单元希望编程到状态00,但过度编程,那么所述单元不会接通且会返回逻辑″0″。将从读取操作返回的数据存储在第二数据锁存器404中(见真值表的第三行)。第四行指示第三数据锁存器406的内容。如上文所述,第三数据锁存器存储下层页面数据。第五行指示状态00的过度编程验证的结果。状态机进行检查以判定第三数据锁存器406是否正存储逻辑″0″且第二数据锁存器404是否正存储逻辑0。如果是,那么因为存储单元过度编程,所以过度编程测试失败。如果不是,那么测试通过。

在另一实施例中,代替使用先前存储在第三数据锁存器中的数据,系统随后将在Vr01处执行另一读取。所述读取操作判定单元的阈电压是否高于Vop00′并低于Vr01。如果是,那么状态机断定存储单元过度编程;否则,状态机认为所述存储单元没有过度编程。

图22是一真值表,其描述用于执行状态01过度编程验证的过程。因为在上层页面读取后执行所述过程,所以存在四列,一列对应于可将所述单元编程到的每一状态。图22的第二行指示来自包括将Vop01′施加到控制栅极的读取操作的结果。将来自所述读取操作的数据存储在第二数据锁存器404中(第三行)。无论所述单元处于什么状态,所述读取操作导致的数据应总是为逻辑1。因此,如果返回逻辑″0″,那么验证步骤失败;否则,验证步骤通过(第四行)。

注意,图9的流程图设想:如果执行下层页面编程操作,那么执行软编程验证和状态10过度编程验证;且如果执行上层页面编程操作,那么执行状态00过度编程验证并执行状态01过度编程验证。此方法还可以与上文相对于图17、19、21和22论述的过程一起使用。在一个替代实施例中,在下层页面和上层页面两者都已被写入后,可使用上文相对于图18、20、21和22的真值表论述的过程来执行所有过度编程验证。在另一替代实施例中,在执行下层页面编程过程后,可执行上文相对于图17论述的验证过程。当上层页面被编程时,系统将使用图20、21和22的真值表来执行状态10、00和01的过度编程验证。

相对于NAND型闪存提供以上实例。然而,本发明的原理可应用于其它类型的闪存和其它类型的非易失性存储器,包括那些目前存在的存储器和那些设想使用正在开发的新技术的存储器。

本发明所提供的前述详细描述是用于说明和描述的目的。并不期望所述描述是穷尽的或将本发明限制为所揭示的形式完全一致。可根据以上教示做出许多修改和变化。经过选择的所描述的实施例是为了最好地解释本发明的原理和其实际应用,借此使其它所属领域技术人员能够在各种实施例中最好地利用本发明并作出各种修改以使其适合于所期待的特殊用途。我们期望本发明的保护范围由所附的权利要求书限定。

去获取专利,查看全文>

相似文献

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

客服邮箱:kefu@zhangqiaokeyan.com

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

  • 服务号