用于在非易失性存储器中区块编程的部分区块擦除的制作方法

文档序号:11451868阅读:567来源:国知局
用于在非易失性存储器中区块编程的部分区块擦除的制造方法与工艺



背景技术:

本公开涉及一种非易失性存储器技术。

半导体存储器在各种电子器件中变得越来越受欢迎。例如,非易失性半导体存储器在蜂窝电话,数码相机,个人数字助理,移动计算设备,非移动计算设备和其他设备中使用。电可擦可编程只读存储器(eeprom)和闪存是最流行的非易失性半导体存储器之一。与常规的全功能eeprom相比,在闪存(也是一种eeprom)中,整个存储器或部分存储器阵列的内容可以在一个步骤内被擦除。

常规的eeprom和闪存都利用浮置栅极,该栅极位于半导体基板中的沟道区域上方,并且与半导体基板的沟道区域绝缘。浮置栅极位于源极和漏极区域之间。控制栅极被提供于浮置栅极上面,并且与浮置栅极绝缘。由此形成的晶体管的阈值电压(vth)由保留在浮置栅极上的电荷的数量来控制。换言之,在晶体管被打开以允许其源极和漏极之间的导通之前,必须施加到控制栅极的电压的最小数量由浮置栅极上的电荷的级别所控制。用于快闪eeprom系统中的另一种存储器单元利用非导电电介质材料代替导电浮置栅极,以非易失性的方式存储电荷。

一些eeprom和闪存器件具有用于储存两个电荷范围的浮置栅极,并且,因此,存储器元件可以在两个状态之间被编程/擦除,例如,擦除状态和已编程状态。这样的闪存器件有时被称为二进制的闪存器件,因为每个存储器元件可以储存数据的一个位(bit)。

多状态(也称为多级别)闪存器件通过识别多个不同的允许/有效编程阈值电压范围来实现。每个不同的阈值电压范围对应于预定值,这些值用于在存储器器件中编码的该组数据位。例如,当将元件放置在对应于四个不同的阈值电压范围的四个离散的电荷带中时,每个存储元件可以存储数据的两个位。

典型地,在程序操作期间,施加到控制栅极的编程电压vpgm被施加为一系列随着时间推移而幅度增加的脉冲。在一个可能的方法中,脉冲的幅度以预定步长(例如0.2-0.4v),随着每个连续脉冲而增加。vpgm可以施加到闪存元件的控制栅极。在程序脉冲之间的周期中,执行验证操作。换言之,被平行编程的一组元件的每个元件的编程级别在连续编程脉冲之间被读取,以确定其是否等于或大于正在编程的元件的验证级别。对于多状态闪存元件的阵列,验证步骤可以在元件的每个状态执行,以确定元件是否达到其数据关联的验证级别。例如,可以在四个状态中储存数据的多状态存储器元件可以需要为三个比较点执行验证操作。

此外,当编程eeprom或闪存器件时,诸如nand串中的nand闪存器件,典型地,vpgm施加到控制栅极,并且位线接地,引起电子从单元或存储器元件(例如储存元件)的沟道注入浮置栅极。当电子在浮置栅极中累积时,浮置栅极变成带负电,并且存储器元件的阈值电压上升,以便存储器元件被认为在已编程状态中。

一旦非易失性储存元件已被编程,重要的是,其编程状态可以以高度的可靠性被读回。但是,由于包含噪声和器件随时间推移而倾向于电中性的趋势等因素,感测到的编程状态有时可以与预期的编程状态不同。

因此,在读取非易失性存储器的时候遇到错误或损坏的数据位是很常见的。典型地,某些形式的错误校正控制(ecc)应用于校正错误或损坏的数据。在数据被写入时,一个常用的控制存储附加的奇偶校验位,以设定一组数据位的奇偶性为需要的逻辑值。信息的和奇偶校验的位形成在写入过程期间被储存的编码字。在读取数据以检测任何损坏或错误的数据时,ecc通过计算一组位的奇偶性解码位。尽管有这些考虑,在易失性存储器中依然存在改善读取、擦除和程序操作的需求。

附图说明

图1是nand串的示例的顶视图。

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

图3是在一块非易失性储存元件中的三个nand串的示例的方框图。

图4是布置成区块的nand闪存单元的阵列的方框图。

图5a和5b是三维nand存储器阵列的截面图和透视图。

图6是根据一个实施例的非易失性存储器系统的方框图。

图7是根据一个实施例的感测区块的方框图。

图8a是描述制作和操作非易失性存储器系统的过程的一个实施例的流程图。

图8b是描述将数据编程到存储器单元的区块的过程的一个实施例的流程图。

图9描绘了一组示例性的阈值电压分布并且描述了编程非易失性存储器的过程。

图10描绘了一组示例性的阈值电压分布并且描述了编程非易失性存储器的过程。

图11描绘了三个编程脉冲,并且在编程脉冲之间施加验证脉冲。

图12a-12e描绘了不同的阈值电压分布并且描述了编程非易失性存储器的过程。

图12f是描绘了示例性数据编码的表格。

图13是描述编程非易失性存储器的过程的一个实施例的流程图。

图14是nand串的截面图,该图示出了用于编程操作的偏置条件。

图15是示出了一组可擦除的存储器单元的失效位计数作为字线位置的函数的曲线图。

图16是示出了使用三个不同的擦除深度的可擦除存储器单元的失效位计数的曲线图。

图17是描述了使用部分区块擦除操作的编程非易失性存储器的过程的流程图。

图18是nand串的截面图,该图示出了根据一个实施例的部分区块擦除操作的偏置条件。

图19是示出了一组可擦除存储器单元的失效位计数作为通过电压应力和部分区块擦除的函数的曲线图。

图20是示出了可擦除状态位计数作为各种通过电压应力计数和部分区块擦除的阈值电压的函数的曲线图。

图21是描述了使用多个地带的部分区块擦除操作的编程非易失性存储器的过程的流程图。

图22是描述了编程非易失性存储器的过程的流程图,该非易失性存储器使用基于存储器的写入/擦除周期的部分区块擦除操作。

具体实施方式

在非易失性存储器的编程期间,非易失性存储器系统减轻由施加的通过电压而导致的非易失性储存元件的潜在干扰。在使用基于区块的架构的非易失性存储器架构中,在编程选择的字线时,通过电压施加到一个或多个未选字线。

在通过电压施加到已经被擦除且还未编程的字线时,可以发生由于通过电压的无意的编程。在一些情况下,这可以导致可擦除存储器单元向已编程状态的一系列阈值分布移近,或移入编程状态的一系列阈值分布。可以发生在其它状态的阈值电压上的其它移动,这些移动遵循附加的编程以及附加的扰动。为了减轻这些通过电压扰动的影响,编程操作被分成具有在编程部分之间执行的部分区块擦除的多个部分。

通过利用在存储器区块的未编程区域中的部分区块擦除作为一部分的编程过程,来提供非易失性存储器系统。存储器系统接收与存储器区块关联的编程请求。编程请求可以包括在存储器区块的全部或部分的字线中的待编程的用户数据。存储器系统将编程请求的编程操作分成具有一个或多个介于中间的部分区块擦除操作的部分。系统通过编程请求的用户数据的子集,为存储器区块的字线的子集编程。字线的子集包括存储器区块的待编程的第一字线和区块的此后的字线的相邻集合。在为字线的子集编程后,系统暂停编程操作。

随着编程操作暂停,系统执行存储器区块的未编程区域的部分区块擦除。系统擦除还未在存储器区块中被编程的存储器单元,同时禁止已编程的存储器单元被编程。如此,可以除去任何在未编程区域中的编程扰动,该编程扰动起因于在为字线的第一子集编程时的通过电压的施加。系统擦除存储器单元,回到已擦除条件。在执行部分区块擦除操作后,系统为存储器区块的未编程区域编程,以完成编程操作。

在为存储器区块编程时,存储器系统可以利用任何数量的地带。例如,系统可以为第一地带编程,然后在包含第二和第三地带的存储器区块的未编程区域执行部分区块擦除。在擦除第二和第三地带后,系统为第二地带编程,接下来再次擦除第三地带。在擦除第三地带后,系统为第三地带编程。可以使用附加的地带,并且重复该过程。

在不同的实施例中,在存储器区块的预定数目的写入/擦除周期后,系统可以只执行部分区块擦除操作。此外,在擦除前,基于写入/擦除周期的数量,系统可以改变已编程的地带的尺寸。

系统可以通过擦除在未编程区域中的至少部分存储器单元,执行部分区块擦除,同时禁止已编程存储器单元被擦除。例如,系统可以在未编程区域中对一个或多个字线施加擦除使能电压(例如0.5v或接地),同时在已编程区域中对一个或多个字线施加擦除禁止电压。系统可以浮置(float)或施加正的电压于擦除电压脉冲处或接近擦除脉冲电压,以禁止在编程区域中的擦除。可以使用变化的使能和禁止电压。

闪存系统的一个示例使用nand结构,该结构包含在两个选择栅极之间串联布置的多个晶体管。串联晶体管和选择栅极被称为nand串。图1示出一个nand串30的顶视图。图2是nand串30的等效电路。在图1和图2中描绘的nand串包含在第一选择栅极12和第二选择栅极22之间串联的四个晶体管10、12、14和16。选择栅极12连接nand串至位线26。选择栅极22连接nand串至源极线28。通过向控制栅极20cg施加适当的电压来经由选择线sgd控制选择栅极12。通过向控制栅极22cg施加适当的电压来经由选择线sgs控制选择栅极22。每个晶体管10、12、14和16包含控制栅极和浮置栅极,形成存储器单元的栅极元件。例如,晶体管10包含控制栅极10cg和浮置栅极10fg。晶体管12包含控制栅极12cg和浮置栅极12fg。晶体管14包含控制栅极14cg和浮置栅极14fg。晶体管16包含控制栅极16cg和浮置栅极16fg。控制栅极10cg连接到字线wl3,控制栅极12cg连接到字线wl2,控制栅极14cg连接到字线wl1,并且控制栅极16cg连接到字线wl0。

注意到尽管图1和图2示出了在nand串中的四个存储器单元,四个晶体管的使用只是被作为示例提供。nand串可以具有小于四个存储器单元或多于四个存储器单元。例如,一些nand串将包含8个存储器单元、16个存储器单元、32个存储器单元等。在此的讨论不限于在nand串中任何特定数量的存储器单元。除nand闪存外的其它种类的非易失性存储器也可以根据实施例使用。

使用nand结构的闪存的典型架构包含许多nand串。图3描绘了如图1-2示出的在区块blk0中的三个nand串。blk0包含若干nand串ns0、ns1、ns2和与相应的感测放大器sa0、sa1、sa2通信的相应的位线,例如bl0、bbl1、bl2。blko包括一组非易失性储存元件。每个nand串在一端连接于选择栅极漏极(sgd)晶体管,并且sgd晶体管的控制栅极经由公共的sgd线连接。nand串在其另一端连接于选择栅极源极(sgs)晶体管,其继而连接至公共的源极线(sl)。若干字线wl0-wl63在sgs和sgd晶体管之间延伸。wl0是与区块的源极侧(ss)相邻的边缘字线,并且wl63是与区块的漏极侧(ds)相邻的边缘字线。

nand串ns0包含储存元件301、……、302-306、……、307,sgs晶体管308和sgd晶体管300,这些储存元件具有相应的控制栅极cg63、……cg32-cg28、……、cg0,sgs晶体管308具有控制栅极cgsgs,sgd晶体管300具有控制栅极cgsgd。nand串ns1包含储存元件311、……、312-316、……、317,sgs晶体管318和sgd晶体管310。nand串ns2包含储存元件321、……、322-326、……、327,sgs晶体管328和sgd晶体管320。nand串ns0、ns2……是偶数编号,并且nand串ns1、ns3(未示出)……是奇数编号。相似地,位线bl0、bl2……是偶数编号,并且nand串bl1、bl3(未示出)……是奇数编号。储存元件可以储存用户数据和/或非用户数据。

图4是包含图3的blk0和附加的区块blk1和blk2的nand闪存单元的阵列400的方框图。沿着每列,位线(bl)耦合至nand串的漏极选择栅极的漏极端子。沿着nand串的每行,源极线(sl)可以连接nand串(例如,在ns0的se0处)的源极选择栅极的所有源极端子。

储存元件的阵列分成储存元件的大量区块(例如,blk0-blk2),在这种情形中每个区块包含与一组公共的字线、sgs线和sgd线通信的一组一个或多个nand串。每个nand串也与相应的位线通信。例如,blk0包含nand串ns0、ns1、……、nsn-1,该nand串相应地与bl0、bl1、……、bln-1通信,并且与wl0-wl63、sgs和sgd通信。blk1包含nand串nsa0、nsa1、……、nsan-1,该nand串相应地与bl0、bl1、……、bln-1通信,并且与wl0a-wl63a、sgsa和sgda通信。blk2包含nand串nsb0、nsb1、……、nsbn-1,该nand串相应地与bl0、bl1、……、bln-1通信,并且与wl0b-wl63b、sgsb和sgdb通信。

对于快闪eeprom系统,利用区块作为擦除单元是常见的,该区块可以称为擦除区块或物理区块。每个区块可以包含被共同擦除的最小数量的存储器单元,尽管多个区块可以同时地被擦除。单元的更小单位可以在一些实现方式中被共同擦除。每个区块典型地被分成若干页。页是编程的最小单位。典型地,数据的一个或多个页储存在储存元件的一个行中。例如,典型地,行包含若干交叉存取的页,或者其可以构成一个页。页的所有储存元件将被共同读取或编程。此外,页可以储存一个或多个扇区的用户数据。扇区是由主机使用的逻辑概念,作为用户数据的方便的单位;典型地,其不包含被限制于控制器的开销数据。开销数据可以包含已从扇区的用户数据中计算出的错误校正码(ecc)。部分控制器(如下所述)在数据正在编程成为阵列时计算ecc,而且在数据正在从阵列中被读取时进行检查。或者,与ecc和/或其他开销数据所属的用户数据相比,ecc和/或其他开销数据被储存在不同的页中,或者甚至不同的区块中。

典型地,用户数据的扇区是512字节,对应于在磁盘驱动器中的扇区的大小。典型地,开销数据是附加的16-20字节。从例如8页,多达32个、64个或更多的页的任意位置,大量页形成区块。在一些实施例中,一行nand串包括区块。

在一个实施例中,通过提高p阱至擦除电压(例如,15-20v)达充足的一段时间,并且在已选择区块的字线上接地或者施加低偏置(例如1v),同时源极和位线浮置,来擦除存储器单元。由于电容交叉耦合(“交叉”表示临近的存储元件的耦合),位线、选择线和公共的源极也被提高到相当大一部分的擦除电压强电场因此被施加到已选择的存储器单元的隧穿氧化层,并且随着浮置栅极的电子被释放至基板侧,已选择的存储器单元的数据被擦除。随着电子从浮置栅极转移至p阱区域,已选择单元的阈值电压降低。可以在整个的存储器阵列、单独的区块、或者单元的另一个单位上执行擦除。

图5a-5b描绘了三维堆叠的nand非易失性存储器器件,该器件包含设置在基板上的交替的导电和电介质层的阵列,如也可以根据一个实施例使用。存储器孔在这些层中被钻出,以同时地限定许多存储器层。nand串然后通过采用适当的材料填充存储器孔形成。存储器单元的控制栅极由导电层提供。每个nand串具有经由漏极侧选择栅极晶体管(“sgd”)耦合至位线的第一“漏极”端部和经由源极侧选择栅极晶体管(“sgs”)耦合至公共的源极导体的第二“源极”端部。sgd和sgs可以用以选择性地耦合nand串的相应的漏极和源极端部至相应的位线和源极线。

图5a示出了tcat(太比特单元阵列晶体管)阵列50a,并且图5b示出了bics(位成本可扩展)阵列50b。tcat阵列50a包含设置在基板54a上的nand串52a。nand串52a具有经由sgd58a耦合至位线60a的漏极端部56b和经由sgs64a耦合至源极线66a的源极端部62a。bics阵列110b包含设置在基板114b上的nand串112b。nand串52b具有经由sgd58b耦合至位线60b的漏极端部56b和经由sgs64b耦合至源极线66b的源极端部62b。

相应地,选择栅极sgd116a和sgs120a,以及sgd16b和sgs120b在基板114a和114b上实现。sgd116a和sgs120a,以及sgd116b和sgs120b消耗了大量的面积。其他3dnand非易失性存储器器件可以包含布置在位于nand串下方的基板中的选择栅极晶体管(sgd或者sgs)。特别地,3dnand存储器阵列可以包含作为选择栅极晶体管(sgd或者sgs)的选择器件的埋入式(buried)字线。

在3d堆叠的非易失性存储器器件中进行擦除的一种方法是产生栅致漏极泄露(gateinduceddrainleakage,gidl)电流,以为nand串的沟道充电,提高沟道电势至擦除电压,并且在擦除期间维持该沟道电势。在一个方法中,存储器器件包含nand串,该nand串具有在一个端部的漏极侧选择栅极(sgd)晶体管和在另一个端部的源极侧选择栅极(sgs)晶体管。擦除可以是“一侧擦除”或者“两侧擦除”。当擦除电压以一侧擦除形式被施加到位线,或者以两侧擦除形式被施加到位线和源极线时,选择栅极晶体管产生充足量的栅致漏极泄漏(gidl)电流,为nand串的浮体(沟道)充电。gidl与选择栅极晶体管的漏极-栅极电压(vdg)成比例地增加。

图6示出了存储器器件110,该存储器器件具有读取/写入电路,用于平行地读取和编程存储器单元的页。存储器器件110可以包含一个或更多的存储器裸芯或者芯片112。存储器裸芯112包含存储器单元100的二维或者三维阵列。提供控制电路120和读取/写入电路130a和130b。在图6的实施例中,通过各种外围电路对存储器阵列100的访问在阵列的相对侧上以对称的形式实现,以便每侧的存取线和电路的密度减少一半。在其他实施例中,各种外围电路可以在阵列的单侧上以不对称的形式提供。读取/写入电路130a和130b包含多个感测区块200,该感测区块允许平行地读取或者编程存储器单元的页。通过字线经由行解码器140a和140b以及通过位线经由列解码器142a和142b,存储器阵列100是可寻址的。在一个典型的实施例中,控制器144被包含在与一个或者更多存储器裸芯112相同的存储器器件110(例如可移除储存卡或封装体)中。指令和数据在主机和控制器144之间经由线132传递,并且在控制器和一个或更多存储器裸芯112之间经由线134传递。

控制电路120与读取/写入电路130a和130b合作,用以在存储器阵列100上执行存储操作。控制电路120包含状态机122、片上地址解码器124和功率控制模块126。状态机122提供存储操作的芯片级控制。片上地址解码器124提供介于由主机或者存储器控制器使用的硬件地址与由解码器140a、140b、142a和142b使用的硬件地址之间的地址接口。在存储操作期间,功率控制模块126控制提供给字线和位线的功率和电压。存储器阵列100的管理电路可以被认为包括,例如,控制电路120、行解码器140、列解码器142、读取/写入电路130或者控制器144中的一个或多个。

图7是单独的感测区块200的方框图,感测区块分为被称为感测模块210的核心部分和公共的部分220。在一个实施例中,对于每个位线存在单独的感测模块210,对于一组多个感测模块210存在一个公共的部分220。在一个实施例中,感测区块将包含一个公共的部分220和八个感测模块210。一组中的每个感测模块将与关联的公共的部分经由数据总线216通信。

感测模块210包括感测电路214,该感测电路确定在连接的位线中的导通电流是否高于或低于预定的阈值级别。感测模块210也包含用于设定在连接的位线上的电压条件的位线锁存器212。例如,锁存于位线锁存器212中的预定的状态将导致连接的位线被拉至指定程序禁止的状态(例如,vdd)。

公共的部分220包括处理器222、一组数据锁存器224和位于一组数据锁存器224和数据总线230之间的i/o接口226。处理器222执行运算。例如,其功能之一是确定储存在感测存储器单元中的数据和在一组数据锁存器中储存被确定的数据。在读取操作期间,一组数据锁存器224用于储存由处理器222确定的数据位。在程序操作期间,这也用于储存从数据总线230输入的数据位。输入的数据位代表旨在编程进入存储器中的写入数据。在其与附加的数据结合并且经由i/o接口226发送到控制器之前,从单元读取的数据被储存在一组数据锁存器中。

在读取或感测期间,系统的操作处于状态机122的控制之下,该状态机122控制供应不同的控制栅极电压于地址单元。在常规的感测期间,状态机单步执行对应于由存储器支持的各种存储器状态的各种预先设定的控制栅极电压。感测模块210可以在这些电压之一处停留,并且输出将从感测模块210经由总线216,被提供给处理器222。在这一点上,通过考虑感测模块的一个或多个跳闸事件和关于从状态机经由输入线228施加的控制栅极电压的信息,处理器222确定结果的存储器状态。然后,其为存储器状态运算二进制编码,并且其将结果的数据位存储进入数据锁存器224中。在另一个核心部分的实施例中,位线锁存器212供应双重职责,既作为锁存感测模块210的输出的锁存器又作为上述的位线锁存器。

在编程或验证期间,来自于数据总线230的待编程的数据被储存在一组数据锁存器224中。在状态机控制下的程序操作包括一系列施加到编址的存储器单元的控制栅极的编程电压脉冲。每个编程脉冲接下来通过读回(验证)以确定单元是否已经被编程至期望的存储器状态。处理器222监控相对于期望存储器状态的读回存储器状态。在两个状态一致时,处理器222设置位线锁存器212以便使位线被拉至指定程序禁止状态。这禁止了单元从进一步的编程中耦合至位线,即使编程脉冲在其控制栅极上出现。在其他实施例中,在验证过程期间,处理器最初加载位线锁存器212,并且感测电路设定其为禁止值。

数据锁存器堆224包含对应于感测模块的一堆数据锁存器。在一个实施例中,每个感测模块210有至少四个数据锁存器以为单元储存四个数据位或储存来自单元的四个数据位。在一些实现方式(但是不需要)中,数据锁存器被实现为移位寄存器,以便其中存储的并行数据被转换为用于数据总线230的串行数据,反之亦然。在优选的实施例中,对应于在m个存储器单元中的读取/写入区块的所有数据锁存器可以相互连接以形成区块移位寄存器,以便一块数据可以通过串行传递输入或者输出。特别地,r个读取/写入模块的库被适配,以便其每个组的数据锁存器将数据依次移位进入或者离开数据总线,如同其是整个读取/写入区块的移位寄存器的一部分。

图8a是描述制作和操作非易失性储存器系统的过程的一个实施例的流程图。在步骤516中,非易失性储存系统被制造。其包含测试和(可选地)预加载数据。在步骤518中,非易失性储存系统被初始化,其可以包含上电、配置、从睡眠模式中唤醒、首次使用、或者其他初始化事件中的任何一个或组合。在步骤520中,编程请求从主机、控制器或者其他实体中接收。在步骤522中,控制器(或状态机或其他实体)将确定一个或多个区块的哪个集合储存数据。在步骤524中,对于该请求接收到的数据被编程入一个或多个存储器单元的区块。在步骤526中,数据可以被读取。编程和读取可以以任何顺序多次执行。

在步骤516&518、518&520和524&526之间的短划线表明可以在步骤之间存在不可预测数量的时间。注意到,图8a的过程(以及其他图中的其他过程)的步骤不需要通过相同的实体或如所描述的相同顺序来执行。

图8b是描述编程一块存储器的过程的流程图。图8b的过程在图8a的步骤524期间执行一次或多次。在一个示例性的实现方式中,为了维持在存储器单元(步骤550)上的均匀磨损,存储器单元被预先编程。在一个实施例中,存储器单元被预先编程至最高数据状态、随机图案或者任何其他的图案。在一些实现方式中,不需要执行预先编程。一些实施例不实现预先编程。

在步骤552中,存储器单元在编程之前被擦除(在区块或其他单位中)。在一个实施例中,通过提高p阱至擦除电压(例如,20v)达充足的周期的时间,并且将已选择区块的字线接地,同时源极和位线浮置,存储器单元将被擦除。在未被选择为擦除的区块中,字线是浮置的。由于电容耦合,未被选择的字线、位线、选择线和公共的源极线也提高至相当大一部分的擦除电压,因此阻止在未选择为擦除的区块上进行擦除。在未被选择为擦除的区块中,强电场施加到已选择的存储器单元的隧穿氧化层,并且随着浮置栅极的电子被释放至基板侧,已选择的存储器单元典型地通过福勒-诺德海姆(fowler-nordheim)隧穿机制被擦除。随着电子从浮置栅极转移至p阱区域,已选择单元的阈值电压降低。可以在整个的存储器阵列上、在单独的模块上、或者存储器单元的另一个单位上执行擦除。在一个实施例中,在擦除存储器单元后,在区块中所有已擦除的存储器单元将处于状态s0(如下讨论)。擦除过程的一个实现方式包含将若干擦除脉冲施加到p阱,并且在擦除脉冲之间验证是否适当地擦除nand串。

在步骤554中,(可选地)执行软编程以缩窄擦除存储器单元的擦除阈值电压的分布。因为该擦除过程,一些存储器单元可以处于与必须的擦除状态相比更深的擦除状态中。软编程可以施加编程脉冲以将更深的擦除存储器单元的阈值电压移动至擦除阈值分布。在步骤556中,区块的存储器单元被编程。响应于来自主机的对编程的请求,或者响应于内部过程,可以执行编程。在编程后,区块的存储器单元可以被读取。在本领域已知的许多不同的读取过程可以被用来读取数据。在一些实施例中,读取过程包括使用ecc以校正错误。被读取的数据被输出至请求读取操作的主机。ecc过程可以通过状态机、控制器或者另一个设备执行。擦除程序循环可以在没有或者不依赖读取的情况下发生多次,读取过程可以在没有或者不依赖编程的情况下发生多次,并且读取过程可以在编程后的任何时间发生。图7的过程可以在使用上述各种电路的状态机的指导下执行。在其他的实施例中,图8b的过程可以在使用上述各种电路的控制器的指导下执行。

在成功的编程过程(带有验证)结束时,适当地,存储器单元的阈值电压应该是在已编程的存储器单元的阈值电压的一个或多个分布以内,或者在已擦除的存储器单元的阈值电压的分布以内。

在每个存储器单元储存一个数据位时,图9示出了存储器单元阵列的示例性的阈值电压分布。但是,其他实施例可以使用每存储器单元有多于一个数据位(例如每存储器单元有2、3或者4个数据位)。图8示出了两个阈值电压分布(对应于两个数据状态)。第一阈值电压分布(数据状态)e代表被擦除的存储器单元。第二阈值电压分布(数据状态)p代表被编程的存储器单元。弯曲的箭头表明编程过程,在这种情形中一些存储器单元被编程,从e走到p。在一个实施例中,在数据状态e中的存储器单元储存逻辑的“1”并且在数据状态p中的存储器单元储存逻辑的“0”。在一个实施例中,在e中的阈值电压是负值,并且在p中的阈值电压是正值。图9也描绘了读取基准电压vr和验证基准电压vv。通过测试给定的存储器单元的阈值电压是否高于或者低于vr,系统可以确定存储器单元是否被擦除(e)或者被编程(p)。在编程存储器单元时,系统将测试该存储器单元是否具有大于或等于vr的阈值电压。

在每个存储器单元储存三个数据位时,图10示出了存储器单元阵列的示例性的阈值电压分布。但是,其他实施例可以使用每存储器单元有多于或少于一个数据位(例如每存储器单元有3个数据位)。在图10的示例中,每个存储器单元储存三个数据位;因此,存在八个有效阈值电压分布,也被称为数据状态。s0、s1、s2、s3、s4、s5、s6和s7。在一个实施例中,数据状态s0小于0v,并且数据状态s1-s7大于0v。在其他实施例中,所有八个数据状态均大于0v,或者可以实现其他的布置。在一个实施例中,s0的阈值电压分布比s1-s7的阈值电压分布更宽。在一个实施例中,s0用于已擦除的存储器单元。数据从s0到s1-s7编程。

每个数据状态对应于储存在存储器单元中的三个数据位的唯一值。在一个实施例中,s0=111,s1=110,s2=101,s3=100,s4=011,s5=010,s6=001并且s7=000。数据状态s0-s7的其他映射也可以使用。编程入存储器单元的数据和单元的阈值电压级别之间的指定关系依赖于被单元采用的数据编码方案。例如,于2003年6月13日提交的美国专利号6,222,762和美国专利申请公开号2004/0255090,“trackingcellsforamemorysystem”描述了用于多状态闪存单元的各种数据编码方案。在一个实施例中,使用格雷码(graycode)分配,将数据值分配到阈值电压范围,以便如果浮置栅极的阈值电压错误地移位到其临近的阈值电压分布,将只会影响一个位。但是,在其他的实施例中,没有使用格雷码。

在一个实施例中,所有储存在存储器单元中的数据位均被储存在相同的逻辑页中。在其他的实施例中,每个储存在存储器单元中的数据位对应于不同的逻辑页。因此,储存三个数据位的存储器单元将包含第一页中的数据,第二页中的数据和第三页中的数据。在一些实施例中,连接到相同的字线的所有存储器单元将在数据的相同的三个页中储存数据。在一些实施例中,连接到字线的存储器单元可以被分组为不同组的页(例如,通过奇数和偶数的位线,或者通过其他的布置)。

在一些器件中,存储器单元将被擦除至状态s0。从状态s0,存储器单元可以被编程至状态s1-s7中的任何一个。在一个实施例中,称为全序列编程,存储器单元可以从已擦除状态s0直接被编程至已编程状态s1-s7中的任何一个。例如,待编程的存储器单元的总体(population)可以首先被擦除,以便在总体中的所有存储器单元处于已擦除状态s0中。同时一些存储器单元从状态s0被编程至状态s1,其他存储器单元从状态s0被编程至状态s2,从状态s0被编程至状态s3,从状态s0被编程至状态s4,从状态s0被编程至状态s5,从状态s0被编程至状态s6,从状态s0被编程至状态s7。全序列编程通过图10的七个弯曲的箭头清晰地描绘。

图10示出了一组验证目标级别vv1、vv2、vv3、vv4、vv5、vv6和vv7。在编程过程期间,该验证级别被用作比较级别(也称为目标级别和/或对比级别)。例如,在编程存储器单元至状态s1时,系统将检查看存储器单元的阈值电压是否已经达到vv1。如果存储器单元的阈值电压还未达到vv1,则将继续对该存储器单元编程,一直到其阈值电压大于或等于vv1。如果存储器单元的阈值电压已经达到vv1,则将停止对该存储器单元编程。验证目标级别vv2用于正在编程至状态s2的存储器单元。验证目标级别vv3用于正在编程至状态s3的存储器单元。验证目标级别vv4用于正在编程至状态s4的存储器单元。验证目标级别vv5用于正在编程至状态s5的存储器单元。验证目标级别vv6用于正在编程至状态s6的存储器单元。验证目标级别vv7用于正在编程至状态s7的存储器单元。

图10也示出了一组读取对比级别vr1、vr2、vr3、vr4、vr5、vr6和vr7。在读取过程期间,这些读取对比级别用作比较级别。通过测试作为分别施加到存储器单元的控制栅极的读取对比级别vr1、vr2、vr3、vr4、vr5、vr6和vr7的响应,存储器单元是否打开或保持关断,系统可以确定存储器单元储存数据的状态。

通常,为了确定有关的存储器单元的阈值电压是否已经达到这样的级别,在验证操作和读取操作期间,选择的字线连接到电压(一个示例为基准信号),该电压的级别对每个读取操作(例如,参见图10的读取对比级别vr1、vr2、vr3、vr4、vr5、vr6和vr7)或验证操作(例如,参见图10的验证目标级别vv1、vv2、vv3、vv4、vv5、vv6和vv7)是指定的。在施加字线电压后,测量存储器单元的导通电流以确定作为施加到字线的电压的响应,存储器单元是否开启(导通电流)。如果导通电流被测量为大于某一值,则假设存储器单元打开并且施加到字线的电压大于存储器单元的阈值电压。如果导通电流被测量为未大于某一值,则假设存储器单元未打开并且施加到字线的电压未大于存储器单元的阈值电压。在读取或者验证过程期间,未被选择的存储器单元在其控制栅极处设置有一个或多个读取通过电压,以便存储器单元将操作为通过栅极(例如,不管其是否被编程或被擦除的导通电流)。

在读取或验证操作期间,存在许多方法以测量存储器单元的导通电流。在一个示例中,存储器单元的导通电流通过其放电或者充电在感测放大器中的专用电容器的速率来测量。在另一个示例中,被选择的存储器单元的导通电流允许(或未能允许)包含存储器单元的nand串来放电对应的位线。在位线上的电压在一段时间后被测量,以看其是否已经被放电。注意到,通过验证/读取的在本领域已知的不同方法,可以使用在此所述的技术。在本领域已知的其他读取和验证技术也可以使用。

在一些实施例中,施加到控制栅极的编程电压包含一系列的脉冲,该脉冲随着每个连续脉冲的幅度,采用预定的步长(例如,0.2v、0.3v、0.4v或其他)增加。在脉冲之间,一些存储器系统将验证单独的存储器单元是否已经达到其相应的目标阈值电压范围。例如,图10示出了施加到多个连接于公共字线的控制栅极的部分信号。图11示出了在编程脉冲之间有一组验证脉冲的编程脉冲557、558和559。当在一个实施例中执行全序列编程时,在编程脉冲之间的验证过程将对每个阈值电压分布(数据状态)s1-s7进行测试。因此,图11示出了七个验证脉冲,该验证脉冲具有对应于验证目标级别vv1、vv2、vv3、vv4、vv5、vv6和vv7的幅度。在一些实施例中,一个或多个验证操作可以被跳过(并且,因此一个或多个验证脉冲可以被跳过),因为验证操作不是必须的或多余的。例如,如果根据图10,没有正在编程的存储器单元达到vv2,不存在理由在vv7处进行验证。

图10示出了包括一个阶段的编程过程,在这种情形中,连接到相同的字线的所有存储器单元在该一个阶段期间同时地编程。图12a-e示出了多阶段编程方法。在该实施例中,编程过程包含三个阶段。在编程前,存储器单元被擦除,以便连接于公共字线的所有存储器单元处于擦除阈值电压分布e,如在图12a描绘的。在编程的第一阶段期间,这些存储器单元(其目标(由于待储存在这些存储器单元中的数据)是数据状态s4、s5、s6或者s7)被编程至中间状态im。这些存储器单元以数据状态s0、s1、s2或s3为目标,并且保持在擦除阈值电压分布e中。第一阶段由图11b清晰地描绘。正在编程为中间状态im的存储器单元被编程为vvim的目标阈值电压。

在图12a-e的编程过程的第二阶段的期间,在擦除阈值电压分布e中的这些存储器单元被编程至其目标数据状态。例如,待编程至数据状态s3的这些存储器单元从擦除阈值电压分布e被编程至数据状态s3,待编程至数据状态s2的这些存储器单元从擦除阈值电压分布e被编程至数据状态s2,待编程至数据状态s1的这些存储器单元从擦除阈值电压分布e被编程至数据状态s1,并且将在数据状态s0中的这些存储器单元在编程过程中的第二阶段期间并未被编程。因此,擦除阈值电压分布e成为数据状态s0。并且,在第二阶段期间,存储器单元从中间状态im编程至各种数据状态s4-s7。例如,待编程至数据状态s7的这些存储器单元从中间状态im被编程至数据状态s7,目标为处于数据状态s6中的这些存储器单元从中间状态im被编程至数据状态s6,待编程至数据状态s5的存储器单元从中间状态im被编程至数据状态s5,并且待编程至数据状态s4的这些存储器单元从中间状态im被编程至数据状态s4。编程的这个第二阶段在图12c中示出。编程的第二阶段可以被称为“模糊的”编程阶段。

如在图12c中可见,在编程数据状态s1-s7的第二阶段的末端处与临近的数据状态重叠。例如,数据状态s1与数据状态s2重叠,数据状态s2与数据状态s1和s3重叠,数据状态s3与数据状态s2和s4重叠,数据状态s4与数据状态s3和s5重叠,数据状态s5与数据状态s4和s6重叠,并且数据状态s6与数据状态s5和s7重叠。在一些实施例中,所有的或一些数据状态没有重叠。

在编程的第三阶段中,每个数据状态s1-s7被收紧,以便其不再与临近的状态重叠。这通过图12d清晰地描绘。三个阶段编程过程的最终结果在步骤11e中描绘,其示出了数据状态s0-s7。在一些实施例中,数据状态s0比数据状态s1-s7更宽。图12f示出了数据如何编码为图12a-e的数据状态。

在一些实施例中,待编码至数据状态s4的这些存储器单元在第二阶段期间未被编程,并且因此保持在中间状态im。在第三编程阶段期间,存储器单元从im编程至s4。在其他实施例中,在第二阶段期间,去往其他状态的存储器单元也可以保持在im或者e。

图13为流程图,该流程图描述了在连接到公共字线的存储器单元上执行编程至一个或多个目标(例如,数据状态或阈值电压范围)的过程的一个实施例。图13的过程可以在图7的步骤556期间执行一次或多次。例如,图13的过程可以用于从擦除数据状态e编程存储器单元至图9的编程数据状态p;从图10的数据状态s0至执行全序列编程的任何数据状态s1-s7和图12a-12e的多阶段编程过程的任何阶段。在编程操作期间,在图13中的过程可以为每个字线分别地执行。此外,图13可以在每个字线处为编程的每个阶段执行。

典型地,在程序操作期间,施加到控制栅极的编程电压作为一系列程序脉冲被施加。在编程脉冲之间是一组执行验证的验证脉冲,如(例如)在图11中描绘的。在许多实现方式中,程序脉冲的幅度通过预定步长随着每个连续脉冲而增加。在图13的步骤570中,编程电压(vpgm)初始化至起始幅度(例如,~12-16v,或者其他适当的级别),并且由状态机222维持的程序计数器pc在1处被初始化。在步骤572中,编程信号vpgm的程序脉冲施加到被选择的字线(为编程选择的字线)。在一个实施例中,正在同时编程的一组存储器单元全部连接到相同的字线(被选择的字线)。未被选择的字线接收一个或多个提升电压(例如,~7-11v)以执行在本领域已知的提升方案。如果存储器单元应该编程,则对应的位线接地。另一方面,如果存储器单元应该保持在其现在的阈值电压处,则对应的位线连接于vdd以禁止编程。在步骤572中,程序脉冲同时地施加到连接到已选择字线的所有存储器单元,以便连接到已选择字线的所有存储器单元被同时编程。换言之,其在相同时间(或在重叠的时间期间)被编程。如此,连接到已选择字线的所有存储器单元将同时具有其阈值电压变化,除非其已经从编程中锁定。

在步骤574中,适当的存储器单元使用目标(比较)级别的适当的设定以执行一个或多个验证操作。在一个实施例中,验证过程通过应用测试为编程选择的存储器单元的阈值电压是否已经达到适当的验证比较电压(vv1、vv2、vv3、vv4、vv5、vv6和vv7)而被执行。

在步骤576中,所有存储器单元是否已达到其目标阈值电压(通过电压)是确定的。如果是这样,编程过程是完整并且成功的,因为所有被选择的存储器单元均被编程和验证至其目标状态。“pass”的状态在步骤578中被报告。如果,在576中,确定了不是所有存储器单元已经达到其目标阈值电压(失败),则编程过程继续至步骤580。

在步骤580中,系统计算还未达到其相应的目标阈值电压分布的存储器单元的数量。换言之,系统计算验证过程已经失败的单元的数量。该计算可以通过状态机、控制器或者其他逻辑进行。在一个实现方式中,每个感测区块300(见图3)将储存其相应的单元的状态(通过/失败)。这些值可以使用数字计数器计算。如上所述,许多感测区块具有一起被线逻辑或运算(wire-or’d)的输出信号。因此,检查一根线可以表明一大组单元中没有单元验证失败。通过适当的组织一起被线逻辑或运算(例如,二进制的树状结构),二进制搜索方法可以用于确定已经失败的单元的数量。于是,如果小量的单元失败了,计算快速完成。如果大量的单元失败了,计算需要较长的时间。在另一个替代中,如果其对应的存储器单元已经失败,每个感测放大器可以输出模拟电压或电流,并且模拟电压或电流求和电路可以用于计算已经失败的存储器单元的数量。

在一个实施例中,有一个总计算,其反映了现在正在编程、最后验证步骤已经失败的存储器单元的总数。在另一个实施例中,为每个数据状态保持分别的计算。

在步骤582中,步骤580的计算是否少于或等于预先限定的极限是确定的。在一个实施例中,在存储器单元的页的读取过程期间,预定的极限是可以通过ecc校正的位的数量。如果失败的单元的数量少于或等于预定的极限,则编程过程可以停止,并且“pass”的状态在步骤578中被报告。在这种情况下,在读取过程期间,足够的存储单元被正确地编程,使得还没有被完整编程的少数剩余存储器单元可以使用ecc来校正。在一些实施例中,步骤580将计算每个扇区、每个目标数据状态或其他单位的失败单元的数量,并且把这些计算单独地或共同地比作在步骤582中的阈值。

在另一个实施例中,在读取过程期间,预定的极限可以少于能被ecc校正的位的数量以允许将来的错误。在编程少于页的所有存储器单元,或者比较只有一个数据状态(或者小于所有状态)的计数时,则在存储器单元的页的读取过程期间,预定的极限可以是能被ecc校正的位的数量的一部分(按比例或不按比例)。在一些实施例中,极限未预定。相反,其改变了基于页的已经计数的错误的数量、已执行的编程-擦除周期的数量或者其他标准。

如果失败的存储器单元数量不小于预定的极限,则编程过程在步骤584处继续,并且程序计数器pc对程序极限值(pl)进行检查。程序极限值的示例包含20和30;但是,可以使用其他值。如果程序计数器pc不小于程序极限值pl,则编程过程被认为是已经失败,并且fail的状态在步骤588中被报告。如果程序计数器pc小于程序极限值pl,则程序在586处继续,在此期间,程序计数器pc以1递增,并且程序电压vpgm接近下一个幅度。例如,下一个脉冲的幅度将大于之前的脉冲一定步长(例如,0.1-0.4v的步长)。在步骤586后,过程回到步骤572,并且另一个程序脉冲施加到已选择的字线。

图14是在编程过程期间的nand串示例的截面图。在该示例中,nand串包含每区块128个数据字线和未用于储存用户数据的四个虚拟虚拟字线。在编程已选择的字线wln时,图14描绘了nand串的偏置条件。在编程已选择的字线wln时,程序电压vpgm施加到控制栅极,并且位线接地。源极选择栅极sgd通过施加选择电压vsg而启用,并且源极选择栅极(sgs)通过施加0v而断开。来自p阱的电子注入浮置栅极。当电子在浮置栅极中累积时,浮置栅极变成带负电,并且单元的阈值电压上升。为了将程序电压施加到正在被编程的单元的控制栅极,程序电压在适当的字线上施加。如上所述,该字线也连接到利用相同字线的每个其他nand串中的一个单元。在未编程连接到相同字线的未被选择的单元的情况下,编程禁止用于启用在字线上被选择的单元的编程。未被选择的单元的无意编程被称为“程序干扰”。

可以采用若干技术以防止程序干扰。图14描绘了被称为“自提升”的一个程序禁止方案。在编程期间,未被选择的位线通过施加vdd(例如,2.5v)被电性隔离,并且通过电压(例如7-10v)施加到未被选择的字线。未被选择的字线耦合至对应于未被选择的位线的nand串的沟道和源极/漏极区域,引起电压(例如,8v)被外加(impress)在未被选择的位线的沟道和源极/漏极区域中,从而防止程序干扰。自提升引起电压提升至在沟道中存在,降低了穿过隧穿氧化层的电压,并且因此防止程序干扰。

可以使用其他提升的技术。例如,局部自提升(“lsb”)和擦除区域自提升(“easb”)都试图从被禁止的单元的沟道中隔离之前已编程单元的沟道,以维持在已提升沟道中的高压。自提升的原理依赖于已提升沟道和源极/漏极区域以减少或消除程序干扰。电压vpass施加到在nand串中每个未被选择的字线。同时,nand串400的位线通过vdd被驱动,以禁止编程。vpass电压(例如,7-10v)将耦合至对应于未被选择的位线的nand串的沟道和源极/漏极区域,并且引起已提升电压外加在位于已选择的字线及nand串的源极/漏极区域处的存储器单元的沟道区域中。在沟道中的已提升电压降低穿过未被选择的存储器单元的隧穿氧化物的电场,并且因此减少无意编程的可能性。

另一个自提升的技术是擦除区域自提升(easb),其试图从被禁止的单元的沟道中隔离之前已编程单元的沟道。在easb中,临近字线(例如字线wln-1)的源极侧,被设定为低压(例如0v),同时剩余的未被选择的字线被设定为vpass。vpass的值通过考虑提升和干扰进行限制。应该选择足够大的值,以便在沟道中的提升足以防止程序干扰。但是,应该选择足够低的值,以便未被选择的字线不能无意编程(行外干扰)。局部自提升(lsb)与easb相似,除了用于禁止方案,源极侧和漏极侧附近都设为0v。将0v施加到两个临近的字线将进一步隔离围绕已选择存储器单元的区域。

尽管对未被选择的字线施加vpass通常在沿着所选字线抑制编程干扰中是有效的,然而其可以导致其他扰动。例如,通过无意地软编程耦合至已擦除字线的存储器单元,vpass的施加可以导致在已擦除字线(wln1至wl127)上的程序干扰。如图14中所示,在程序操作期间,通过电压vpass施加到已擦除字线。通过电压vpass通常是大电压,该大电压足以打开在最高已编程状态中的存储器单元,以启用在nand串的沟道中充分的提升。在高的读取通过电压vpass施加到已擦除存储器单元的控制栅极时,其可以通过将电子注入进入已擦除存储器单元,来无意地软编程或者部分编程已擦除存储器单元,从而提高其阈值电压。因为提高了存储器单元的阈值电压,响应于编程请求,在被编程之前,这些单元处于比预期更高的状态级别。在阈值电压上的移动可以足够引起在程序操作后保持在擦除状态中的单元移入状态s1电压分布中。这可以通过引起这些单元被读取为在状态s1中而不是其预期的已擦除状态(或状态s0),来引起读取干扰。此外,因为存储器单元开始于更高的最初状态级别处,被编程至其他状态的存储器单元可以被过编程(over-programmed)。

图15是示出了字线的影响的图表,该字线依赖于一组存储器单元的平均失效位计数。图15是描绘出在从一组存储器单元中读取时,一组存储器单元的平均失效位计数(fbc)的曲线图。例如,一组存储器单元可以包含存储器单元的一个或多个区块。曲线图包含线902,该线描绘了一组存储器单元的平均失效位计数(fbc)作为被耦合的每个单元的字线的函数。曲线图示出,字线的平均fbc通常从更低的字线增加至更高的字线。图15示出,由于vpass的程序干扰随着编程过程从更低的字线增长至更高的字线。在读取操作期间,施加到未编程的存储器单元的通过电压,在编程这些存储器单元和稍后将其读回后,引起导致读取干扰的阈值电压的增加。

如前所述,区块的字线通常依次被编程,从wl0开始,并且以wl127(或区块的另一个最后的字线)结束。在每个字线的编程期间,未被选择的字线接收vpass电压。在编程期间,在已选择字线的源极侧上的字线通常在已擦除状态中。对这些未编程的存储器单元中vpass的施加可以无意地软编程可擦除存储器单元。vpass的施加引起存储器单元的阈值电压移动,导致这些单元的更浅的擦除状态。在未编程或已擦除状态时的更高的字线比在顺序过程中更早编程的低字线更多次的接收vpass。相应地,如图15中所示的vpass的施加似乎引起在区块的更高字线处的平均fbc比在区块的更低字线处的平均fbc更大,该平均fbc用于存储器单元无意地从已擦除状态移动至第一已编程状态。

图16描绘了依赖于平均失效位计数的字线的另一个图。在图17中,在编程以示出在平均fbc上的擦除深度的影响前,一组存储器单元被擦除至不同的擦除深度。实线912描绘了在使用给该组的预定的擦除验证级别来擦除时的一组存储器单元的平均fbc。如图15中所示,可以看见依赖于平均fbc的清晰的字线。平均fbc随字线数量的增加而增加。在图16中的虚线描绘了使用更浅的擦除深度的一组存储器单元的平均fbc。在该示例中,擦除存储器单元使用0.4v的擦除验证电压,该擦除验证电压比用于实线所示的限定的擦除验证级别的擦除验证电压更浅。在使用更浅的擦除深度时,从已擦除状态到状态s1,干扰的平均fbc增加。图16示出对于平均fbc,字线的依赖依然存在。短划线914描绘了使用更深的擦除深度的一组存储器单元的平均fbc。在该示例中,擦除存储器单元使用0.4v的擦除验证电压,该擦除验证电压比用于限定的擦除验证级别的擦除验证电压更深。在使用更深的擦除深度时,对于一组存储器单元,由在已擦除状态中无意地被编程至第一编程状态s1的单元造成的平均fbc增加。另外,字线的依赖依然示出,平均fbc随着字线从wl0到wl127的编程而增加。

为减轻由于在编程较低字线同时通过电压的施加所造成的在更高字线上的程序干扰的影响,描述了部分区块擦除操作。系统接收与区块的一组字线相关联的编程请求,诸如区块的所有或部分字线。在开始编程前,系统擦除并且软编程区块。然后系统对需要完成编程请求的区块的字线的子集进行编程。在为字线的子集编程后,系统暂停存储器单元的区块的编程操作。在继续编程过程之前,系统为区块的未编程序字线执行擦除操作。在擦除操作期间,已经编程的字线和一个或多个可选的缓冲字线可以禁止擦除。在擦除未编程字线后,系统通过在区块的未编程区域中编程剩余的用户数据,完成编程请求。

图17描述了根据一个实施例使用介于中间的部分区块擦除操作来编程存储器单元的区块的方法的流程图。在步骤702处,存储器器件从主机或控制器接收编程请求。编程请求可以对应于整个存储器区块或者只有部分存储器区块,该存储器区块用于储存对应于编程请求的用户数据。如前所述,区块的存储器单元在步骤704处被预先编程,接下来在步骤706处擦除区块,并且在步骤708处软编程区块。为包含区块的所有字线的整个存储器区块执行步骤702-708。

在步骤710处,编程存储器区块。在步骤710处的编程是为了少于区块中的所有字线,该区块需要在步骤702处完成编程请求。管理电路通过用户数据的子集,为编程请求编程了预定数量的字线。在编程位于区块的预定数量的字线中的用户数据的子集后,管理电路暂停编程操作。

然后,管理电路在完成编程请求前,在步骤712处执行部分区块擦除操作。管理电路减轻在还未用于编程序操作的被编程的字线上的vpass程序干扰的影响。管理电路可以在步骤712处,通过执行部分区块擦除操作,擦除区块的所有或部分未编程区域。管理电路禁止在存储器区块的已编程区域中的字线被擦除。在已编程区域中的字线可以被浮置或者具有直接施加到字线的正的擦除禁止电压,以便字线禁止擦除。管理电路也可以禁止在存储器区块的未编程区域中的一个或多个字线被擦除。

擦除电压verase以擦除电压脉冲的形式,施加到存储器区块。在二维存储器阵列中,verase可以直接施加到nand串的p阱区域。在三维存储器阵列中,正的电压可以施加到nand串的位线(和可选的源极线),并且穿过选择栅极传递至nand串的沟道区域。

在执行部分区块擦除操作后,管理电路在714步骤处,响应于编程请求继续编程。管理电路编程在存储器区块的未编程区域中的存储器单元,以完成对存储器区块的编程请求。管理电路通过使用来自编程请求中的用户数据,编程区块的未编程区域。管理电路在步骤714处,也可以编程区块的任何部分地被编程的字线。

在图17中,跟随部分区块擦除操作后,不会执行擦除验证。单一的部分区块擦除操作能够恢复由许多情况中vpass的压力所造成的平均fbc上的增加。正因为如此,擦除验证操作不需要执行。如此,整体的编程时间可以保持较短,以便节省编程时间。但是,在另一个实施例中,存储器区块的未编程区域可以被验证为擦除状态。在未编程或擦除区域中的存储器单元可以被验证擦除状态,同时从验证中排除在已经被编程区域中的存储器单元。各种擦除验证通过电压可以在已编程区域中使用。如果未编程区域被验证为擦除状态,管理电路可以报告区块的通过状态。如果区块没有通过部分区块擦除验证,管理电路可以执行附加的部分区块擦除(例如,使用更大的verase)。该过程可以重复,直到区块被验证为被擦除。验证计数器可以用来限制执行部分区块擦除和验证的次数的数量。

在部分区块擦除期间,擦除电压值可以变化。在一个示例中,在部分区块擦除期间的擦除电压比在标准存储器区块擦除期间使用的峰值擦除电压更低。因为在未编程区域的存储器单元具有相对低的阈值电压,可以使用更低的擦除电压。在其他示例中,在部分区块擦除期间的擦除电压可以等于或大于在存储器的标准存储器区块擦除期间使用的擦除电压。

图18是图14中的nand串的截面图,该图18示出了根据一个实施例的部分区块擦除操作的偏置条件。在图18中,字线wl0-wln已经完成对其最终目标状态的所有阶段的编程。例如,字线可以已经对储存在对应的字线中的数据的所有页完成编程。字线wln+1是部分已编程字线,该字线已经完成少于其所有预期的编程。例如,字线wln+1可以用少于字线的数据的所有页来编程。如图12a-12e所示,字线wln+1也可以在编程的第一或第二阶段被编程,但是不在目标为字线的所有阶段中被编程。在另一个示例中,附加的字线可以是在部分已编程状态中,并且可以类似于wln+1偏置。位线和源极线是浮置的,源极和漏极选择栅极线也是浮置的。漏极侧虚拟字线wldd和源极侧虚拟字线wlds是浮置的。其他示例可以不包含虚拟字线。在二维存储器阵列的情况中,p阱接收擦除电压verase,该擦除电压verase可以作为具有随着每个脉冲而增加幅度的一个或多个脉冲来施加。

已经被完全编程(wl0-wln)或部分编程(wln+1)的字线接收禁止电压vinh。在一个示例中,擦除禁止电压可以通过浮置对应的字线进行施加。在另一个示例中,禁止电压vinh可以作为正电压,直接施加到位线。在区块的未编程区域中的字线wln+3到wl127提供有零伏特或诸如0.5v的低偏置,以为这些存储器单元启用擦除。在该示例中,邻近于部分已编程的wln+1的wln+2也接收禁止电压vinh。通过浮置wln+2,可以避免wln和/或wln+1的无意的软擦除。在另一个示例中,wln+2可以通过接地或施加0v而被擦除。

在施加偏置条件下,在区块的未编程区域的所有字线或字线的子集将被擦除,同时在区块的编程区域的字线被禁止擦除。电子从未编程区域中的存储器单元的每个浮置栅极传递至p阱,该未编程区域是借助于向字线和verase施加0v建立的电势而设定的。为了禁止擦除已经被编程的存储器单元,在已编程区域中的字线被浮置或者提供有正电压,同时为未编程区域中的字线提供0v。如果浮置,在被编程区域中的字线将耦合至p阱,并且穿过存储器单元的隧穿电介质区域建立少量至没有的擦除电势。另一个可能的技术是在或者靠近擦除电压verase的电势处施加正电压,以禁止在已编程区域中字线的擦除。正电压将建立穿过隧穿电介质区域的少量或没有的擦除电势,以从浮置栅极吸引电子至p阱。通过提供0v给未编程区域中的字线,这些存储器单元将被启用以进行擦除。因此,在擦除电压脉冲施加到p阱以助于部分区块擦除时,仅仅在未编程区域中的存储器单元被擦除。

在三维阵列中,为了部分区块擦除,字线可以以如图18所示的相同方式被偏置。在3d非易失性存储器中进行擦除的一种方法是产生栅致漏极泄露(gidl),以为nand串的沟道充电,提高沟道电势至擦除电压,并且在擦除期间维持该沟道电势。在一个示例中,存储器器件包含nand串,该nand串具有漏极侧选择栅极sgd晶体管和源极侧选择栅极sgs晶体管。擦除可以是一侧擦除或者两侧擦除。在电压施加到在一侧擦除中的位线时,选择栅极晶体管产生充足数量的栅致漏极泄漏(gidl)电流,为nand串的浮体(沟道)充电。电压可以施加到在两侧擦除中的位线和源极线,以在漏极侧选择栅极处产生栅致漏极泄漏。gidl与选择栅极晶体管的漏极-栅极电压(vdg)成比例地增加。

图19是示出了vpass应力对一组存储器单元的影响和部分区块擦除操作的影响的图。图19是描绘了作为施加到一组字线的vpass应力时间的函数的一组存储器单元的平均失效位计数(failbitcount,fbc)的曲线图。在图19中,该组存储器单元在编程操作期间经历了vpass的施加。图19示出了施加到字线的若干vpass如何影响一组存储器单元的平均fbc。在不施加vpass到字线的情况下,平均fbc(读取擦除单元作为状态s1)是1.0e+01。在施加1000次vpass的情况下,平均fbc增加至略超过2.0e+01。在施加2,000次vpass的情况下,平均fbc从2.0e+01跳变至恰好超过4.0e+01。在施加3,000次vpass的情况下,平均fbc约是5.0e+01,并且在4,000次的施加下,平均fbc略超过6.0e+01。该曲线图示出,字线的平均fbc随着vpass应力施加到字线的数量的增加而增加。

图19也示出了在施加4,000次vpass后一组存储器单元的平均fbc,随后是如图18所示的一个部分区块擦除操作。平均fbc下降到约为在没有施加vpass情况下的起始级别。平均fbc回到约1.0e+01,接近开始施加vpass之前的位置。相应地,单一的部分区块擦除操作的使用可以恢复由于vpass编程应力造成的平均fbc的增加。

图20是示出部分区块擦除操作的影响的图。图20是描绘了每区块中擦除状态位的数量作为存储器单元的测量阈值电压的函数的图。在图20中,在没有任何vpass应力的情况下,已擦除状态位的数量作为一组存储器单元的阈值电压的函数以虚线922示出。在施加1,000次vpass后,已擦除状态位的数量作为阈值电压的函数以实线924示出,并且在施加4,000次vpass后,已擦除状态位的数量以短划线926示出。图20示出,已擦除状态存储器单元的阈值电压相对于施加vpass的次数而增加。

图20也示出了在施加4,000次vpass后已擦除状态位的数量作为阈值电压的函数,随后是一个部分区块擦除操作。存储器单元的阈值电压减少至约为在施加vpass前的最初阈值电压。实线928示出在跟随4,000次vpass的施加后的一个部分区块擦除操作之后的已擦除状态位计数。图20示出,单一的部分区块擦除操作的使用可以恢复由于vpass编程应力造成的阈值电压的增加。

图21是描述程通过部分区块擦除的编程来减轻vpass程序干扰对区块中的字线的子集的影响的过程的流程图。在图21中,描述了对图17的过程的变化,该变化为当编程存储器区块时,可以执行多个部分区块擦除操作的位置。管理电路将存储器区块划分或者以其他方式分成三个或更多的地带,该地带作为编程请求的响应被单独地编程。在编程每个地带中的字线后,未编程地带在继续编程前,通过部分区块擦除而被擦除。在一个示例中,在图21中的过程可以作为在图17中的步骤710-714的部分来执行。

在步骤752处,管理电路响应于编程请求,编程在存储器区块的第一地带中的字线。第一地带包含存储器区块的待编程的第一字线(例如wl0)和来自存储器区块的一组附加的相邻字线。在步骤752处,管理电路对编程请求的用户数据的第一子集进行编程。

在步骤754处,管理电路擦除在存储器区块的未编程区域中的字线。步骤754包含擦除在存储器区块的两个或更多附加地带中的字线。在步骤754处,管理电路擦除存储器区块的未编程区域,同时禁止存储器区块的编程区域被擦除。

在步骤756处,管理电路确定在步骤752(或步骤758)处被编程的区域是否为在存储器区块中的最后一个地带,以完成编程请求。如果该地带是对存储器区块进行编程的最后一个地带,管理电路在步骤760处报告用于编程操作的通过的状态,并且编程请求完成。如果存在用于编程请求的待编程的附加地带,在步骤758处,管理电路通过用于编程请求的用户数据的第二子集,编程存储器区块的下一个地带。在步骤758处编程下一个地带后,管理电路在步骤754处执行附加的部分区块擦除操作。在步骤754的后续迭代期间,管理电路擦除存储器区块的剩余未编程区域,同时禁止存储器区块的任何以前已编程区域被擦除。在步骤754处执行附加的部分区块擦除操作之后,管理电路返回至步骤756,以确定附加的地带是否要为存储器区块编程。

在存储器区块中的地带的数量可以变化。例如,存储器区块可以被划分成用于未编程区域的单独编程和部分区块擦除验证的任何数量的两个或更多地带。通过增加地带的数量,由于存储器单元更可能保持遵循任何以前的编程的擦除状态,可以期望在平均fbc中附加的改善。

地带的数量也可以随时间变化。例如,当器件相对较新时,存储器器件可以在没有部分区块擦除的情况下,利用标准编程。随着时间的推移,器件可以切换到随后是部分区块擦除的基于地带的编程。此外,器件可以随着时间的推移增加地带的数量,以在器件老化和性能下降时提供更精确的擦除级别。

图22是描述使用部分区块擦除进行编程的另一个过程的流程图。在图22中,描述了相对图17的过程的变化,其中部分区块擦除依赖于存储器区块已经经历的写入/擦除周期的数量。在早期的生存条件期间,可以不使用部分区块擦除。随着器件老化,可以使用部分区块擦除。此外,在一个示例中,用于建立部分区块擦除地带的n的值可以基于写入/擦除周期随着时间的推移而变化。在一个示例中,在图22中的过程可以作为在图17中的步骤710-714的部分来执行。

在步骤802处,管理电路访问写入/擦除周期计数。写入/擦除周期计数是对存储器区块已经编程或擦除的次数的测量。写入/擦除周期计数表明已经被放置在器件上的磨损和应力的数量。

在步骤804处,写入/擦除周期计数与诸如写入/擦除极限(wel)的阈值进行比较。如果循环计数小于或等于写入/擦除极限,在步骤814处,管理电路通过用于编程请求的用户数据,对存储器区块进行编程。管理电路在步骤814处不使用部分区块擦除,而是编程整个存储器区块,以完成区块的编程请求。因为写入/擦除周期计数较低,存储器器件不利用部分区块擦除,企图来减少编程时间。

如果写入/擦除周期计数大于写入/擦除极限wel,管理电路基于写入/擦除周期计数来选择n的值。步骤806是可选的。n的值是在执行部分区块擦除前将被编程的存储器区块的字线的数量。在一个示例中,每当执行部分区块擦除时,管理电路使用n的相同值。但是,在另一个示例中,n的值可以随着写入/擦除周期计数的增加而减小。如此,在擦除未编程区域前编程的字线的数量将更少。随着器件老化,这可以导致更精确的擦除级别,以维持平均fbc级别。在一个实施例中,管理电路可以通过如图21所述的多地带的方法来改变n的值。例如,随着器件老化,管理电路可以减小n的值,并且增加地带的数量。

在步骤808处,管理电路编程字线,直到在步骤806处字线wln被选择。在基于n的值进行编程字线后,管理电路在步骤810处执行部分区块擦除操作。管理电路擦除区块的未编程区域,同时禁止区块的任何编程区域被擦除。在步骤812处,管理电路编程在存储器区块的未编程区域中的存储器单元,以完成编程请求。

因此,描述了一种非易失性储存器件,该非易失性储存器件包含:包含非易失性储存元件的多个nand串、与多个nand串通信的多个字线及与多个nand串和多个字线通信的管理电路。管理电路被配置为接收与多个字线相关联的编程请求以及使用用于编程请求的用户数据的第一部分对第一组字线进行编程。管理电路被配置为,擦除第二组字线,同时在编程第一组字线之后禁止第一组字线被擦除,并且在擦除第二组字线后,使用用户数据的第二部分对第二组字线编程。

描述了一种方法,该方法包含:接收编程请求,该编程请求具有与多个nand串通信的多个字线的待编程的用户数据;使用用于编程请求的用户数据的第一部分,对第一组字线进行编程;在编程第一组字线后,擦除第二组字线,同时禁止第一组字线被擦除;以及在擦除第二组字线后,使用用户数据的第二部分,对第二组字线进行编程。

描述了一种方法,该方法包含:接收第一编程请求,该第一编程请求包含非易失性储存元件的区块相关联的用户数据,该非易失性储存元件包含多个nand串;确定与非易失性储存元件的区块相关联的写入/擦除周期的数量;并且如果写入/擦除周期的数量小于阈值,在使用用户数据的第二部分擦除和编程区块的第二组字线前,通过使用用户数据的第一部分对区块的第一组字线进行编程,来对第一编程请求做出响应。如果写入/擦除周期的数量大于阈值,该方法包含在使用用户数据的第四部分擦除和编程区块的第四组字线前,通过使用用户数据的第三部分对区块的第三组字线进行编程,来对第一编程请求做出响应。第一组字线包含比第三组字线更大数量的字线,并且第二组字线包含比第四组字线更少数量的字线。

描述了一种非易失性储存器件,该非易失性储存器件包含:包含多个nand串的非易失性储存元件的区块和与多个nand串通信的多个字线。存储器件包含与非易失性储存元件的区块通信的管理电路。管理电路被配置为接收与非易失性储存元件的区块相关联的编程请求以及确定与区块相关联的若干写入/擦除周期是否高于阈值。如果写入/擦除周期的数量高于阈值,管理电路被配置为在擦除和编程字线的第二子集前,编程第一组字线以完成编程请求。如果写入/擦除周期的数量低于阈值,管理电路被配置为以连续的程序序列对多个字线进行编程,以完成编程请求。

为了示出和描述的目的,前述的详细描述已经呈现。其并不旨在将本技术详尽或限制于在此所公开的精确形式。可以根据上述教导进行许多修改和变化。选择所描述的实施例是为了最好地解释本技术的原理及其实际应用,从而确保本领域的技术人员最好地利用各种实施例中的技术和适用于预期的特定用途的各种修改。本发明的范围由所附的权利要求限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1