具体实施方式
适合于实现本发明的闪存系统的一个例子使用NAND闪存结构,其包括在两个选择栅极之间串联布置多个晶体管。串联的晶体管和选择栅极被称为NAND单列(string)。图1是示出一个NAND单列的俯视图。图2是其等效电路。图1和图2描绘的NAND单列包括四个晶体管100、102、104和106,串联并夹在第一选择栅极120和第二选择栅极122之间。选择栅极120选通(gate)到位线126的NAND单列连接。选择栅极122选通到源线128的NAND单列连接。通过将合适的电压施加到控制栅极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。在一个实施例中,晶体管100、102、104和106每个都是存储器单元。在其他实施例中,存储元件可包括多个晶体管,或者可以不同于图1和图2所描绘的。选择栅极120连接到选择线SGD。选择栅极122连接到选择线SGS。
图3提供了上述NAND单列的横截面视图。如图3所示,在p-阱区140中形成NAND单列的晶体管。每个晶体管包括由控制栅极(100CG、102CG、104CG和106CG)和浮置栅极(100FG、102FG、104FG和106FG)构成的堆叠栅极结构。典型地,通过堆积多晶硅层形成控制栅极和浮置栅极。在氧化物或其他介电膜的顶部上的p-阱的表面上形成浮置栅极。控制栅极在浮置栅极之上,由多晶硅间介电层分开控制栅极和浮置栅极。存储器单元(100、102、104和106)的控制栅极形成字线。N+掺杂扩散区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个存储器单元、64个存储器单元等。这里的讨论不限于NAND单列中的任何特定数目的存储器单元。
每个存储器单元可存储以模拟或数字形式表示的数据。当存储一比特数字数据时,存储器单元的可能阈值电压的范围被划分为两个范围,其被指派逻辑数据“1”和“0”。在NAND型闪存的一个例子中,在存储器单元被擦除之后电压阈值为负,并被定义为逻辑“1”。在编程操作之后阈值电压为正,并被定义为逻辑“0”。当阈值电压为负且通过向控制栅极施加0伏来尝试读取时,存储器单元将导通以指示正在存储逻辑1。当阈值电压为正且通过向控制栅极施加0伏而尝试读操作时,存储器单元将不导通,其指示存储逻辑0。存储一比特数字数据的存储器单元被称为二进制存储器单元。
存储器单元也可存储多个状态。这样的存储器单元被称为多状态存储器单元。多状态存储器单元的阈值电压窗口被划分为状态的数目。例如,如果使用四个状态,则将有四个阈值电压范围被指派给数据值“11”、“10”、“01和“00”。在NAND型存储器的一个例子中,擦除操作后的阈值电压为负且被定义为“11”。正阈值电压用于状态“10”、“01”和“00”。
在以下美国专利/专利申请中提供了NAND型闪存及其操作的相关例子:美国专利号US5,570,315;美国专利号US5,774,397;美国专利号US6,046,935;美国专利号US5,386,422;美国专利号US6,456,528;和美国专利申请号No.09/893,277(公开号US2003/0002348),它们每个通过引用合并于此。除NAND闪存外,其他类型的非易失性存储器也可用于本发明。
在闪速EEPROM系统中有用的另一类型的存储器单元利用非导电介电材料代替导电浮置栅极来以非易失性方式存储电荷。在Chan等的文章“ATrue Single-Transistor Oxide-Nitride-Oxide EEPROM Device”(IEEE ElectronDevice Letters,第EDL-8卷,第3期,1987年3月,93-95页)中描述了这样的单元。由氧化硅、氮化硅和氧化硅(“ONO”)形成的三层电介质夹在传导控制栅极与存储器单元沟道上方的半导电衬底的表面之间。通过将电子从单元沟道注入到氮化物中来对单元进行编程,在氮化物处电子被俘获并存储在限制区中。此存储的电荷接着以可检测的方式改变单元沟道的一部分的阈值电压。通过将热空穴注入到氮化物中来擦除单元。还参见Nozaki等的“A1-MbEEPROM with MONOS Memory Cell for Semiconductor Disk Application”(IEEE Journal of Solid-State Circuits,第26卷,第4期,1991年4月,497-501页),其描述了处于分裂栅极配置中的类似单元,其中掺杂的多晶硅栅极在存储器单元沟道的一部分上延伸以形成单独的选择晶体管。上述两篇文章全文通过引用合并于此。在通过引用合并于此的“Nonvolatile SemiconductorMemory Technology”(由William D.Brown和Joe E.Brewer编写,IEEE Press,1998)的1.2章中提到的编程技术在该章中还描述为可应用于介电电荷俘获装置。本段中描述的存储器单元也可用于本发明。因此,本文描述的技术也适用于不同存储器单元的介电区之间的耦合。
Eitan等的“NROM:A Novel Localized Trapping,2-Bit NonvolatileMemory Cell”(IEEE Electron Device Letters,第21卷,第11期,2000年11月,543-545页)已描述在每个单元中存储两个比特的另一方法。ONO介电层在源极与漏极扩散之间的沟道上延伸。用于一个数据比特的电荷位于邻近于漏极的介电层中,且用于另一数据比特的电荷位于邻近于源极的介电层中。通过单独读取电介质内的空间上分隔的电荷存储区的二进制状态而获得多状态数据存储。本段中描述的存储器单元也可用于本发明。
图4例示了诸如图1-3所示的NAND单元的阵列的例子。沿着每列,位线206耦连到NAND单列150的漏极选择栅极的漏极端126。沿着NAND单列的每行,源线204可连接NAND单列的源极选择栅极的所有源极端128。在美国专利申请号5,570,315、5,744,397和6,046,935中找到NAND体系阵列及其作为存储器系统一部分的操作的例子。
存储器单元的阵列被分为存储器单元的大量块。如闪速EEPROM系统常用的,块是擦除的单位。即,每个块包含一起擦除的最小量的存储器单元。典型地,每个块被分为多个页。页是编程的单位。在一个实施例中,单个块可被分为区段,并且区段可包含作为基本编程操作一次写入的单元的最小数目。典型地,一页或多页数据被存储在存储器单元的一行中。页可存储一个或多个扇区。扇区包括用户数据和开销数据。典型地,开销数据包括已从扇区的用户数据计算出的纠错码(ECC)。控制器(下面描述)在数据被编程到阵列中时计算ECC,还在从阵列读取数据时检查它。可替换地,ECC和/或其他开销数据被存储在与它们所属的用户数据不同的页中,或者甚至是不同的块中。用户数据的扇区典型地为512字节,对应于磁盘驱动器中的扇区大小。开销数据典型地位附加16-20字节。大量页形成块,例如大概从8页直到32、64、128或更多页。
图5例示了根据本发明的一个实施例的具有用于并行读取和编程存储器单元的页的读/写电路。存储器装置296可包括一个或多个存储器裸片(die)298。存储器裸片298包括存储器单元300的二维阵列、控制电路块310以及读/写电路365。在一个实施例中,存储器单元的阵列可以是三维的。通过各种控制线,如位线、字线、源线以及其他用来控制存储器单元的线,控制和访问存储器单元。例如,存储器阵列300可经由行解码器330由字线寻址,或经由列解码器360由位线寻址。读/写电路365包括多个感测块400并允许并行读取或编程存储器单元的页。典型地,控制器350被包括在作为一个或多个存储器裸片298的相同存储器装置296(例如,可移除存储卡)中。命令和数据经由线路320在主机和控制器350之间传递,并经由线路318在控制器和一个或多个存储器裸片298之间传递。
控制电路块310与读/写电路365协作执行对存储器阵列300的存储器操作。控制电路块310包括状态机312、片上地址解码器314和功率控制模块316。状态机312提供存储器操作的芯片级控制。片上地址解码器314向解码器330和360使用的硬件地址提供由主机或存储器控制器使用的它们之间的地址接口。功率控制模块316控制在存储器操作期间向字线和位线提供的功率和电压。
在一些实现方式中,图5的一些组件可组合。在各种设计中,除了存储器单元阵列300外的图5的组件中的一个或多个(单独或组合)可当作管理电路。例如,管理单路可包括控制电路块310、解码器电路314、状态机电路312、解码器314/360、功率控制316、感测块400、读/写电路365、控制器350等。
图6例示了图5所示的存储器装置296的另一布置。以对称方式,在阵列的相对侧上实现各种外部电路对存储器阵列300的访问,从而每侧的访问线和电路块的密度减少一半。由此,行解码器被分为行解码器330A和330B,并且列解码器被分为列解码器360A和360B。类似地,读/写电路被分为从底部连接到位线的读/写电路365A和从阵列300的顶部连接到位线的读/写电路365B。以此方式,读/写模块的密度基本减小一半。图6的装置也可包括控制器,如上用于图5的装置。
参照图7,描述了存储器单元阵列300的示例结构。作为一个例子,描述了被分为1024块的NAND闪速EEPROM。每个块中存储的数据可被同时擦除。在一个实施例中,块是同时擦除的存储器单元的最小单位。在每个块中,在该例子中,存在对应于位线BL0、BL1、…BL8511的8512列。在一个实施例中,在读和编程操作期间,可同时选择块的所有位线。沿着公共字线并连接到任何位线的存储器单元可同时编程。
在另一实施例中,位线被分为偶数位线和奇数位线。在奇数/偶数位线体系中,沿着公共字线并连接到奇数位线的存储器单元在一个时间编程,而沿着公共字线并连接到偶数位线的存储器单元在另一时间编程。
图7示出了串联以形成NAND单列的四个存储器单元。尽管示出为在每个NAND单列中包括四个单元,但可使用多于或少于四个(例如,16、32或其他数)。NAND单列的一端经由漏极选择栅极(连接到选择栅极漏极线SGD)连接到相应位线,并且另一端经由源极选择栅极(连接到选择栅极源线SGS)连接到源线。
图8是被分为核心部分(称为感测模块380)和公共部分390的单个感测块400的框图。在一个实施例中,对每个位线将存在单独的感测模块380,并且对一组多个感测模块380将存在一个公共部分390。在一个例子中,感测块将包括一个公共部分390和八个感测模块380。群组中每个感测模块将经由数据总线372与相关联的公共部分通信。对于进一步的细节,参照在12/29/04提交的美国专利申请11/026,536“Non-Volatile Memory & Methodwith Shared Processing for an Aggregate of Sense Amplifiers”,其全文通过引用合并于此。
感测模块380包括感测电路块370,其确定所连接的位线中的传导电流是高于还是低于预定电平。感测模块380还包括位线锁存器382,其用于设置所连接的位线上的电压条件。例如,位线锁存器382中锁存的预定状态将导致所连接的位线拉至表示编程禁止的状态(例如,Vdd)。
公共部分390包括处理器392、一组数据锁存器394和耦连在该组数据锁存器394和数据总线320之间的I/O接口396。处理器392进行计算。例如,其功能之一是确定在所感测的存储器单元中存储的数据,并在该组数据锁存器中存储所确定的数据。该组数据锁存器394用于在读操作期间存储由处理器392确定的数据比特。其还用于在编程操作期间存储从数据总线320导入的数据比特。所导入的数据比特表示要编程到存储器中的写数据。I/O接口396提供数据锁存器394和数据总线320之间的接口。
在读和感测期间,系统的操作在控制(使用功率控制226)对所定址的单元提供不同控制栅极电压的状态机312的控制之下。当它步经(step through)与存储器支持的各种存储器状态相对应的各种预定义控制栅极电压时,感测模块380可捕捉这些电压之一,并且输出将经由总线372从感测模块380提供到处理器392。此时,处理器392通过考虑感测模块的捕捉事件和关于经由输入线393从状态机施加的控制栅极电压的信息,确定所得的存储器状态。然后,它计算存储器状态的二进制编码,并将所得的数据比特存储到数据锁存器394中。在核心部分的另一实施例中,位线锁存器482负两个责任,作为用于锁存感测模块380的输出的锁存器以及作为上述位线锁存器。
应理解,一些实现方式将包括多个处理器392。在一个实施例中,每个处理器392将包括输出线(图9中未示出),从而每个输出线被一起线或(wired-OR)。在一些实施例中,输出线在连接到线或线之前被倒转。该配置能够在已经完成编程过程使得编程验证过程中进行快速确定,因为接收线或线的状态机可确定被编程的所有比特何时到达期望电平。例如,当每个比特到达其期望电平时,用于该比特的逻辑0将被发送到线或线(或倒转数据1)。当所有比特输出数据0(或倒转数据1)时,则状态机得知终止编程过程。在每个处理器与八个感测模块通信的实施例中,状态机可能(在一些实施例中)需要读取线或线八次,或者逻辑被添加到处理器392以积累相关联的位线的结果,从而状态机仅仅需要读取线或线一次。类似地,通过蒸气选择逻辑电平,全局状态机可检测到第一比特何时改变器状态,并相应地改变算法。
在编程或验证期间,要编程的数据从数据总线320存储在该组数据锁存器394中。在状态机控制下的编程操作包括将一系列编程电压脉冲施加到所寻址的存储器单元的控制栅极。每个编程脉冲之后是用来确定存储器单元是否已经被编程为期望状态的验证操作。处理器392相对于期望的存储器状态监视验证存储器状态。当两者一致时,处理器222设置位线锁存器214,以便使得位线拉至表示编程禁止的状态。这禁止耦连到位线的存储器单元进一步编程,即使它在其控制栅极经受到编程脉冲也是如此。在其他实施例中,处理器一开始加载位线锁存器382,并且感测电路块在验证过程中将其设置为禁止值。
数据锁存器堆栈394包含对应于感测模块的数据锁存器的堆栈。在一个实施例中,每个感测模块380存在三个数据锁存器。在一些实施方式(但不是所需的)中,数据锁存器被实现为移位寄存器,从而其中存储的并行数据被转换为用于数据总线320的串行数据,反之亦然。在优选实施例中,对应于m个存储器单元的读/写块的所有数据锁存器可一起链接以形成块移位寄存器,从而可通过串行传输,输入或输出数据的块。具体地,r个读/写模块的库(bank)被适配为使得它的数据锁存器组中的每一个按顺序将数据移进或移出数据总线,如同它们是用于整个读/写块的移位寄存器的一部分。
可在以下中找到关于感测操作和感测放大器的其他信息:(1)2004年3月25日公开的美国专利申请公开号2004/0057287“Non-Volatile MemoryAnd Method With Reduced Source Line Bias Errors”;(2)2004年6月10日公开的美国专利申请公开号2004/0109357“Non-Volatile Memory And MethodWith Improved Sensing”;(3)12/16/04提交的发明人Raul-Adrian Cernea的题为“Improved Memory Sensing Circuit And Method For Low Voltage Operation”的美国专利申请号11/015,199;(4)2005年4月5日提交的发明人Jian Chen的题为“Compensating for Coupling During Read Operations of Non-VolatileMemory”的美国专利号11/099,133;以及(5)2005年12月28日提交的发明人Siu Lung Chan和Raul-Adrian Cernea的题为“Reference Sense Amplifier ForNon-Volatile Memory”的美国专利申请号11/321,953。所有上面列出的五篇专利文档通过引用全文合并于此。
图9例示了感测模块380的例子;然而,也可使用其他实现方式。感测模块380包括位线隔离晶体管512、位线下拉电路(晶体管522和550)、位线电压箝位晶体管612、读出总线传输栅极530、感测放大器600和位线锁存器382。位线隔离晶体管512的一侧连接到位线BL和电容器510。位线隔离晶体管512的另一侧连接到位线电压箝位晶体管612和位线下拉晶体管522。位线隔离晶体管512的栅极接收被标记为BLS的信号。位线电压箝位晶体管512在节点SEN2连接到读出总线传输栅极530。读出总线传输栅极530连接到读出总线532。位线电压箝位晶体管512在节点SEN2连接到感测放大器600。在图9的实施例中,感测放大器600包括晶体管613、634、641、642、643、654、654和658以及电容器Csa。位线锁存器382包括晶体管661、662、663、664、666和668。
通常,沿着字线的存储器单元并行操作。因而相应数目的感测模块并行操作。在一个实施例中,控制器向并行操作的感测模块提供控制和定时信号。在一些实施例中,沿着字线的数据被分为多页,并且一次一页或一次多页地读取或编程数据。
当位线隔离晶体管512被信号BLS使能时,感测模块380可连接到用于存储器单元的位线(例如,位线BL)。感测模块380借助于感测放大器600感测存储器单元的传导电流,并锁存所读结果,作为感测节点SEN2处的数字电压电平,并经由栅极530将其输出到读出总线532。
感测放大器600包括第二电压箝位器(晶体管612和634)、预充电电路(晶体管541、642和643)以及鉴别器或比较电路(晶体管654、656和658;以及电容器Csa)。在一个实施例中,参考电压被施加到被读取的存储器单元的控制栅极。如果参考电压大于存储器单元的阈值电压,则存储器单元将导通,并在其源极和漏极之间传导电流。如果参考电压不大于存储器单元的阈值电压,则存储器单元将不导通,并不会在其源极和漏极之间传导电流。在许多实现方式中,导通/截止可以是连续转变,从而存储器单元将响应于不同控制栅极电压而传导不同的电流。如果存储器单元导通并且传导电流,则所传导的电流将使得节点SEN上的电压下降,有效地充电或增加横跨晶体管Csa(其另一端是在Vdd)的电压。如果节点SEN上的电压在预定感测时段期间放电到预定电平,则感测放大器600报告存储器单元响应于控制栅极电压而导通。
感测模块380的一个特征是在感测期间向位线提供恒定电压。优选地,这通过类似于二极管箝位器操作的位线电压箝位晶体管612,其中晶体管612与位线BL串联。其栅极被偏置为与在其阈值电压VT之上的期望位线电压VBL相等的恒定电压BLC。以此方式,在编程-验证或读取期间,其将位线与节点SEN隔离,并设置用于位线的恒定电压电平,如期望VBL=0.5到0.7伏。通常,位线电压电平被设置为使得它足够低到避免长的预充电时间、但也足够搞到避免接地噪声和其他因素的电平。
感测放大器600通过感测节点SEN感测传导电流,并且确定传导电流是高于还是低于预定值。感测放大器向读出总线532输出数字形式的所感测结果,作为信号SEN2。
实质上可以是SEN2处的信号的倒转状态的数字控制信号INV也被输出以控制下拉电路。当所感测的传导电流高于预定值时,INV将为高(HIGH)而SEN2将为低(LOW)。此结果由下拉电路加强。下拉电路包括由控制型号INV控制的n-晶体管522和由控制信号GRS控制的另一n-晶体管550。低的GRS信号允许位线BL浮置,而不考虑INV信号的状态如何。在编程期间,GRS信号走高,以允许位线BL拉至接地并由INV控制。当位线BL需要浮置时,GRS信号走低。注意,也可使用感测模块、感测放大器和锁存器的其他设计。
读/写电路365同时对存储器单元的页操作。读/写电路365中的每个感测模块380经由位线耦连到相应单元。传导电流从感测模块经位线流进存储器单元的漏极,并在经源线接地之前从源极流出。在集成电路芯片中,存储器阵列中的单元的源极被绑定在一起,作为连接到存储器芯片的某一外部接地焊盘(例如,Vss焊盘)的源线的多个分支。即使当使用金属系带(strapping)减少源线的电阻时,在存储器单元的源电极和接地焊盘之间剩余有限电阻R。典型地,接地环路电阻R为大约50欧姆。
对于并行感测的整页存储器,流经源线的总电流是所有传导电流之和。通常,每个存储器单元具有取决于被编程到其电荷存储元件中的电荷量的传导电流。对于存储器单元的给定控制栅极电压,小电荷将到来相对高的传导电流。当在存储器单元的源电极和接地焊盘之间存在有限电阻时,在电阻两端下降的电压由Vdrop=iTOT给出。
例如,如果4256位线同时放电,每个具有1μA的电流,则源线压降将等于4000线×1μA/线×50欧姆~0.2伏特。当感测存储器单元的阈值电压时,该源线偏压将贡献0.2伏特的感测误差。
在一组实施例中,由具有用于多通路感测的特征和技术的读/写电路实现减少源线偏压的方法。每个通路帮助识别和关闭具有比给定分界(demarcation)电流值更高的传导电流的存储器单元。典型地,对于每个通路,给定分界电流值连续收敛到用于传统单通路感测的断点电流值。以此方式,后续通路中的感测将较少受到源线偏压的影响,因为较高电流的单元已经被关闭。
例如,可在两通路(j=0至1)中实现多通路感测。在第一通路之后,那些具有比断点更高的传导电流的存储器单元被识别并通过截止它们的传导电流而移除。截止它们的传导电流的一个优选方式是将它们位线上的漏极电压设置为接地。在第二通路中,减少来自源线偏压的误差。也可预期多于两个通路。在源线偏压不会导致误差的实施例中,一个通路可用于感测。
图10(A)-10(K)描绘了解释在读/验证操作期间感测模块380的一个实施例的时序图。
阶段(0):设置
感测模块380(见图9)经由信号BLS(图10(A))连接到相应位线。利用BLC(图10(B))使能电压箝位器。利用控制信号FLT(图10(C)),使能预充电晶体管642,作为有限电流源。
阶段(1):受控预充电
感测放大器600通过经由晶体管658将信号INV(图10(H))拉至接地的重设信号RST(图10(D))初始化。由此,在重设时,INV被设置为LOW。同时,p-晶体管663将补充信号LAT拉至Vdd或HIGH(图10(H))。即,LAT是INV的补数。隔离晶体管634由信号LAT控制。由此,在重设后,使能隔离晶体管634以将感测节点SEN2连接到感测放大器的内部感测节点SEN。
预充电晶体管642通过内部感测节点SEN和感测节点SEN2对位线BL预充电预定时间段。这将位线带至用于感测其中传导的最优电压。预充电晶体管642由控制信号FLT(“FLOAT”)控制。将向着由位线电压箝位器612设置的期望位线电压,上拉位线。上拉的速率取决于位线中的传导电流。传导电流越小,则上拉越快。
前面已经描述了,如果具有比预定值更高的传导电流的那些存储器单元被截止并且消除它们对源线偏压的贡献,则由于源线偏压引起的感测误差被最小化。因而,预充电晶体管642具有两个功能。一个是将位线预充电到最优感测电压。另一个是帮助识别用于D.C.(直流)感测的具有比预定值更高的传导电流的那些存储器单元,从而可消除它们对源线偏压的贡献。
D.C.感测通过提供用于向位线提供预定电流的与电流源同样作用的预充电电路来实现。控制预充电晶体管642的信号FLT使得它“编程”预定电流以流动。作为例子,可以从具有被设为500nA的参考电流的电流镜,生成FLT信号。当预充电晶体管642形成电流镜的镜像腿(mirrored leg)时,它其中将还具有相同的500nA分散(throwing)。
图10(I1)-10(I4)例示了分别连接到具有700nA、400nA、220nA和40nA的传导电流的存储器单元的四个示例位线上的电压。当预充电电路(包括晶体管642)是具有例如500nA限制的电流源时,具有超过500nA的传导电流的存储器单元在位线上的电荷泄漏比它能聚集的更快。因此,对于具有传导电流700nA的位线,其在内部感测节点SEN处的电压或信号将保持接近0V(如0.1伏特;见10(I1))。另一方面,如果存储器单元的传导电流低于500nA,则预充电电路(包括晶体管642)将开始向上充电位线,并且其电压将开始向着箝位位线电压(例如,电压箝位器612设置的0.5V)上升(图10(I2)-10(I4))。相应地,内部感测节点SEN将保持接近0V或被上拉至Vdd(图10(G))。通常,传导电流越小,则位线电压将越快地充电到箝位位线电压。由此,通过在受控预充电阶段之后检查位线上的电压,可以识别出所连接的存储器单元是具有比预定电平更高还是更低的传导电流。
阶段(2):D.C.锁存和从后续选通脉冲(strobe)移除高电流单元
在受控预充电阶段之后,初始D.C.高电流感测阶段开始,其中由区分器电路感测节点SEN。感测识别出具有比预定电平更高的传导电流的那些存储器单元。区分器电路包括串联的两个p-晶体管654和656,其充当用于记录信号INV的节点的上拉器。p-晶体管654由走低的读选通信号STB使能,而p-晶体管656由走低的内部感测节点SEN处的信号使能。高电流存储器单元将具有接近于0V的信号SEN或者至少适合于让其位线被预充电足够高到截止p-晶体管656。例如,如果弱上拉限于500nA的电流,它将不能上拉具有700nA的传导电流的单元(图10(G1))。当STB选通低到锁存器时,INV被上拉到Vdd。这将设置具有INV高和LAT低的锁存器电路660(图10(H1))。
当INV为高而LAT为低时,隔离栅极630被禁能,并且感测节点SEN2与内部感测节点SEN阻断。同时,位线由下拉晶体管522(见图9和图10(I1))拉至接地。这将有效地截止位线中的任何传导电流,消除它对源线偏压的贡献。
由此,在感测模块380的一个优选实现方式中,采用有限电流预充电电路。这提供了识别携带高电流的位线以及在后续感测中截止它们以最小化源线偏压误差的附加或替换的方式(D.C.感测)。
在另一实施例中,预充电电路不被特别配置为帮助识别高电流位线,而被优化为在存储器系统可用的最大电流的允许范围内尽可能快地上拉和预充电位线。
阶段(3):恢复/预充电
在感测先前已被下拉的位线中的传导电流之前,由低的信号FLT激活预充电电路,以将内部感测节点SEN2预充电到Vdd(图10(C)和图10(I2)-10(I4)),以及预充电由于相邻位线上的电压下降而已经向下部分耦合的位线。
阶段(4):第一A.C.感测
在一个实施例中,通过确定浮置的内部感测节点SEN上的压降,进行A.C.(交流或瞬时)感测。这通过采用耦合到内部感测节点SEN的电容器Csa的区分器电路以及考虑到对它充电(减少节点SEN上的电压)的传导电流的速率来实现。在集成电路环境中,电容器Csa一般利用晶体管实现;然而,其他实现方式也是合适的。电容器Csa具有预定电容,例如30fF,其可选择用于最优电流确定。可通过适当调整充电时段,设置分界电流值,典型地,在100-1000nA的范围内。
区分器电路感测内部感测节点SEN中的信号SEN。在每次感测之前,内部感测节点SEN处的信号被预充电晶体管642上拉至Vdd。这将横跨电容器Csa的电压初始设置为零。
当感测放大器600准备好感测时,预充电电路由高的FLT禁能(图10(C))。第一感测时段T1通过选通信号STB的引发(assertion)而结束。在感测时段中,导电的存储器单元引起的传导电流将对电容器充电。因为通过位线上的传导电流的泄漏动作而对电容器Csa充电,所以SEN处的电压将从Vdd下降。图10(G)(见曲线G2-G4)例示了与分别连接到具有400nA、220nA和40nA的存储器单元的剩余三个示例位线相对应的SEN节点,对于更高的传导电流,下降更快。
阶段(5):第一A.C.锁存和从后续感测移除较高电流的单元
在第一预定感测时段结束时,SEN节点将已经下降到取决于位线中的传导电流的某一电压(见图10G的曲线G2-G4)。作为例子,此第一阶段中的分界电流被设置为300nA。电容器Csa、感测时段T1和p-晶体管656的阈值电压使得与高于分界电流(例如300nA)的传导电流相对应的SEN处的信号将下降到足够低到导通晶体管656。当锁存信号STB选通低时,输出信号INV将被拉至高,并将由锁存器382锁存(图10(E)和图10(H)(曲线H2))。另一方面,与在分界电流之下的传导电流相对应的信号SEN将产生不能导通晶体管656的信号SEN。在此情况下,锁存器382将保持不变,在该情况下,LAT保持高(图10(H3)和10(H4))。由此,能看出,区分器电路有效地相对于由感测时段设置的参考电流确定位线中的传导电流的幅度。
感测放大器600还包括第二电压箝位晶体管612,其目的是维持晶体管612的漏极电压足够高,以便让位线电压箝位器610正确工作。如前所述,位线电压箝位器610将位线电压箝位到预定值VBL,例如0.5V。这将需要晶体管612的栅极电压BLC设置为VBL+VT(其中VT是晶体管612的阈值电压),并且连接到感测节点501的漏极大于源极,即,信号SEN2>VBL。具体地,给定电压箝位器的配置,SEN2应该不比XX0-VT或BLX-VT中的较小者更高,并且SEN应该不会更低。在感测期间,隔离栅极630在通路(pass-through)状态。然而,在感测期间,内部感测节点SEN上的信号具有从Vdd减少的电压。第二电压箝位器防止SEN下降到低于XX0-VT或BLX-VT,无论哪一个更低。这通过由信号BLX控制的n-晶体管612实现,其中BLX≥VBL+VT。由此,通过电压箝位器的动作,在感测期间,位线电压VBL被保持恒定,例如,~0.5V。
电流确定的输出由锁存器电路382锁存。锁存器电路由晶体管661、662、663和664以及晶体管666和668一起形成为设置/重设锁存器。p-晶体管666由信号RST(RESET)控制,并且n-晶体管668由信号STB控制。在12/16/04提交的发明人Raul-Adrian Cernea的题为“Improved Memory Sensing CircuitAnd Method For Low Voltage Operation”的美国专利申请号11/015,199中找到适合于低电压操作的上述感测放大器的变型,其全文通过引用合并于此。
通常,将有相应数目的多通路感测放大器380操作存储器单元的页。对于具有比第一分界电流水平更高的传导电流的那些存储器单元,它们的LAT信号将被锁存为低(INV被锁存为高)。这会激活位线下拉电路520将相应位线拉至接地,由此截止它们的电流。
阶段(6):恢复/预充电
在先前未被下拉的位线中的传导电流的下次感测之前,由信号FLT激活预充电电路,以将内部感测节点631预充电至Vdd(图10(C)和图10(I3)-10(I4))。
阶段(7):恢复/预充电
当感测放大器600准备好感测时,预充电电路由高的FLT禁能(图10(C))。第二感测时段T2通过选通信号STB的引发而设置。在感测时段期间,传导电流(如果有)将对电容器充电。当电容器Csa通过位线36中的传导电流的泄漏动作充电时,节点SEN处的信号将从Vdd下降。
根据前面的例子,在前面的阶段中,具有高于300nA的传导电流的存储器单元已经被识别并且关闭。图14(G)(曲线G3和G4)分别例示了与分别连接到具有220nA和40nA的传导电流的存储器单元的两个示例位线相对应的SEN信号。
阶段(8):读出的第二锁存
在第二预定感测时段T2结束时,SEN将已经下降到取决于位线中的传导电流的某一电压(图10G(曲线G3和G4))。作为例子,此第二阶段中的分界电流被设置为100nA。在此情况下,具有传导电流220nA的存储器单元将具有被锁存为高的INV(图10(H)),并且其位线被接着拉至接地(图10(I3))。另一方面,具有40nA的传导电流的存储器单元将对锁存器的状态没有影响,其被预设为LAT高。
阶段(9):读出至总线
最终,在读出阶段中,传输栅极530处的控制信号NCO允许锁存的信号SEN2被读出到读出总线532(图10(J)和10(K))。
如可从图10(I1)-10(I4)中看到的,位线电压在每次感测时段期间维持恒定。由此,根据前面的讨论,消除了电容性位线到位线耦合。
上述感测模块380是一个实施例,其中通过三个通路执行感测,前两个通路被实现为识别和关闭较高电流的存储器单元。通过消除了较高电流对源线偏压的贡献,最后一个通路能够更准确地感测具有较低范围的传导电流的单元。
在其他实施例中,感测操作通过D.C.和A.C.通路的不同组合实现,一些使用仅仅一个或更多个A.C.通路,或者仅仅一个通路。对于不同的通路,所使用的分界电流值可以每次相同,或者向着最后一个通路中使用的分界电流连续收敛。因此,上述感测实施例仅仅是合适的感测模块的一个例子。也可使用其他设计和技术实现本发明。对于这里描述的本发明,不需要或暗示一个特定的感测模块。
图11是描述用于对非易失性存储器编程的方法的一个实施例。在一个实现方式中,在编程之前擦除存储器单元(以块或其他单位)。在一个实施例中通过在足够的时间段中将p-阱升高到擦除电压(例如,20伏)并将所选块的字线接地,同时源极和位线浮置,擦除存储器单元。由于电容性耦合,未选字线、位线、选择线和公共源线也被升高为大部分的擦除电压。由此强电场被施加到所选存储器单元的隧道氧化物层,并且当浮置栅极的电子发射到衬底侧(典型地,通过Fowler-Nordheim隧道机制)时,所选存储器单元被擦除。当电子从浮置栅极输运到p-阱区时,所选单元的阈值电压降低。擦除可对整个存储器阵列、对单个块或另一单位的单元进行。
在图11的步骤700中,“数据加载”命令由控制器发出并由控制电路块310接收。在步骤702中,指定页地址的地址数据从控制器或主机输入到解码器314中。在步骤704中,编程数据页或所寻址的页被输入到数据缓冲器以进行编程。该数据被锁存在合适的锁存器组中。在步骤706中,由控制器向状态机312发出“编程”命令。
由“编程”命令触发,使用被施加到合适字线的图12的阶梯脉冲,在步骤704中锁存的数据将被编程到由状态机312控制的所选存储器单元中。在步骤708中,编程电压Vpgm被初始化为起始脉冲(例如,12V或其他值),并且由状态机312维持的编程计数器PC被初始化为0。在步骤710中,第一Vpgm脉冲被施加到所选字线。如果逻辑“0”被存储在特定数据锁存器中,表示相应存储器单元应该被编程,则相应位线接地。另一方面,如果逻辑“1”被存储在特定锁存器中,表示相应存储器单元应该维持其当前数据状态,则相应位线被连接到Vdd以禁止编程。
在步骤712中,验证所选存储器单元的状态,以确定它们是否已经到达它们的目标阈值电压。如果检测到所选单元的阈值电压已经到达目标电平,则相应数据锁存器中存储的数据被变为逻辑“1”。如果检测到阈值电压还未到达合适的电平,则相应数据锁存器中存储的数据不变。以此方式,具有在其相应数据锁存器中存储的逻辑“1”的位线不需要被编程。当所有数据锁存器存储逻辑“1”时,状态机(经由上述线或型机制)得知所有的所选单元已经被编程。在步骤714中,检查所有的数据锁存器是否存储逻辑“1”。如果这样,则编程过程完成且成功,因为所有的所选存储器单元被编程和验证。在步骤716中报告“通过”(PASS)的状态。
如果在步骤714中确定并非所有数据锁存器存储逻辑“1”,则编程过程继续。在步骤718中,针对编程限值PCMAX检查编程计数器PC。编程限值的一个例子是20;然而,也可使用其他值。如果编程计数器PC不小于20,则编程过程已经失败,并且在步骤720中报告状态“失败”(FAIL)。在一些实施例中,在达到最大循环数之后,系统检查小于预定量的单元是否已经完成编程。如果小于预定量的单元还未完成编程,则编程过程仍被当作通过。如果编程计数器PC小于20,则在步骤722中,Vpgm电平增加步长,并且编程计数器PC递增。在步骤722之后,过程循环回到步骤710,以施加下一Vpgm脉冲。
图12示出了施加到选择用于编程的字线的一系列编程脉冲。编程脉冲之间是一组验证脉冲(未示出)。在一些实施例中,对于数据被编程的每个状态,可以有一个验证脉冲。在其他实施例中,可以有更多或更少的验证脉冲。
在一个实施例中,数据沿着公共字线编程到存储器单元中。由此,在施加图12的编程脉冲之前,选择字线之一用于编程。该字线将被称为所选字线。块的其余字线被称为未选字线。
在成功的编程(具有验证)过程的结束处,根据情况,存储器单元的阈值电压应该在已编程存储器单元的阈值电压的一个或多个分布范围(distribution)内,或者在已擦除存储器单元的阈值电压的分布范围内。图13例示了当每个存储器单元存储两比特数据时存储器单元阵列的示例阈值电压分布范围。图13示出了用于已编程存储器单元的第一阈值电压分布范围E。还绘出了用于已编程存储器单元的三个阈值电压分布范围A、B和C。在一个实施例中,E分布范围中的阈值电压为负,并且A、B和C分布范围中的阈值电压为正。
图13的每个不同的电压范围对应于数据比特组的预定值。被编程到存储器单元中的数据和存储器电压的阈值电压电平直接的特定关系取决于对存储器单元采用的数据编码方案。例如,美国专利号6,222,762和2003年6月13日提交的美国专利申请公开号2004/0255090“Tracking Cells For AMemory System”描述了多态闪存单元的各种数据编码方案,两者都通过引用全文合并于此。在一个实施例中,使用Gray码分配法将数据值分配给阈值电压范围,从而,如果浮置栅极的阈值电压错误移位到其相邻物理状态,则将影响到仅仅一个比特。一个例子将“11”分派给阈值电压范围E(状态E),将“10”分派给阈值电压范围A(状态A),将“00”分派给阈值电压范围B(状态B),以及将“01”分派给阈值电压范围C(状态C)。然而,在其他实施例中,不使用Gray码。尽管图13示出了四个状态,但本发明也可用于其他多状态结构,包括多于或少于四个状态的那些结构。例如,一些非易失性存储元件可利用八个(七个编程和一个擦除)或更多状态。
图13还示出了从存储器单元读数据的三个读参考电压,Vra、Vrb和Vrc。通过测试给定存储器单元的阈值电压是高于还是低于Vra、Vrb和Vrc,系统能确定存储器单元处于什么状态。
图13还示出了三个验证参考电压Vva、Vvb和Vvc。当将存储器单元编程为状态A时,系统将测试那些存储器单元是否具有高于或等于Vva的阈值电压。当将存储器单元编程为状态B时,系统将测试那些存储器单元是否具有高于或等于Vvb的阈值电压。当将存储器单元编程为状态C时,系统将测试那些存储器单元是否具有它们的高于或等于Vvc的阈值电压。
在被称为全序列编程的一个实施例中,存储器单元可从擦除状态E直接编程为已编程状态A、B或C中的任一个。例如,可首先擦除要编程的存储器单元的空间,从而空间中的所有存储器单元处于擦除状态E。当一些存储器单元正从状态E编程为状态A时,其他存储器单元从状态E编程为状态B和/或从状态E编程为状态C。
图14例示了对存储两个不同页(较低页和较高页)的数据的多状态存储器单元编程的两通路技术的例子。描绘了四个状态:状态E(11)、状态A(10)、状态B(00)和状态C(01)。对于状态E,两页都存储“1”。对于状态A,较低页存储“0”,而较高页存储“1”。对于状态B,两页都存储“0”。对于状态C,较低页存储“1”,而较高页存储“0”。注意到,经管特定比特模式(bit pattern)已经被分派给每个状态,但也可分配不同的比特模式。
在第一编程通路中,根据要编程到较低逻辑页中的比特,设置单元的阈值电压电平。如果该比特是逻辑“1”,则因为它由于早先已经被擦除而处于合适的状态,所以阈值电压不改变。然而,如果要编程的比特是逻辑“0”,则单元的阈值电平上升到状态A,如箭头730所示。
在第二编程通路中,根据要编程到较高逻辑页中的比特,设置单元的阈值电压电平。如果较高逻辑页比特要存储逻辑“1”,则不进行编程,因为单元取决于较低页比特的编程而处于状态E或A之一,两者都带有较高页比特“1”。如果较高页比特将为逻辑“0”,则阈值电压移位。如果第一通路导致单元保持在擦除状态E,则在第二阶段中,单元被编程使得阈值电压增加到在状态C之内,如箭头734所示。如果单元由于第一编程通路而已经被编程为状态A,则存储器单元在第二通路中进一步编程,使得阈值电压增加到在状态B之内,如箭头732所示。第二通路的结果是将单元编程为被指定为对较高页存储逻辑“0”的状态中,而不改变较低页的数据。
在一个实施例中,如果写入足够的数据以填满字线,则系统可被设置为进行全序列写入。如果不写入足够的数据,则编程过程可利用所接收的数据进行较低页编程。当接收后续数据时,则系统将编程较高页。在再一实施例中,如果接着接收足够的数据以填满整个(或大部分)字线的存储器单元,则系统可在对较低页编程的模式下开始写入,并转换为全序列编程模式。在12/14/04提交的发明人Sergey Anatolievich Gorobets和Yan Li的系列号11/013125的题为“Pipelined Programming of Non-Volatile Memories UsingEarly Data”的美国专利申请中公开了这样的实施例的更多细节,其全文通过引用合并于此。
图15是描述了用于从非易失性存储器单元读数据的一个实施例的流程图。参照感测模块的上述讨论描述了如何从特定位线读数据。图15提供了系统级的读过程。在步骤800中,从主机、控制器或另一实体接收对读数据的请求。如上所述,由于基于相邻浮置栅极(或其他相邻电荷存储元件)中存储的电荷的电场耦合,可能出现非易失性存储器单元的浮置栅极(或其他电荷存储元件)上存储的表观电荷的移位。为补偿这种耦合,对给定存储器单元的读过程将考虑相邻存储器单元的已编程状态。步骤802包括确定是否对于相邻浮置栅极之间的耦合提供这样的补偿。在一些实施例中,步骤802还包括确定要使用多少补偿。在步骤804中,响应于对读数据的请求,对特定页或其他数据单位进行读过程。步骤804的读过程可包括基于步骤802,对于相邻浮置栅极之间的耦合的适当补偿。在一个实施例中,在步骤804中读取的存储器单元连接到公共字线,但连接到不同的位线。
在一个实施例中,当页的数据被编程时,系统也产生纠错码(ECC),并与数据页一起写入那些ECC。ECC技术是本领域公知的。所使用的ECC过程可包括本领域中已知的任何合适的ECC过程。当从页(或其他数据单位)读数据时,将使用ECC确定数据中是否有任何错误(步骤806)。ECC过程可由控制器、状态机或系统中的其他地方执行。如果数据中没有错误,则在步骤808,数据被报告给用户。如果在步骤806中找到错误,则确定错误是否可校正(步骤810)。各种ECC方法具有校正数据组中预定数目的错误的能力。如果ECC过程可校正数据,则在步骤812中使用ECC过程校正该数据,并且在步骤814中将校正的数据报告给用户。如果数据不能通过ECC过程校正(步骤810),则在步骤820中,错误将被报告给用户。在一些实施例中,步骤820还可包括报告所有数据或数据的子集。如果已知数据的子集没有错误,则可报告该子集。
图16是描述了用于从非易失性存储器单元读数据的另一实施例的流程图,该实施例潜在地使用对相邻浮置栅极之间的耦合的补偿。图15的过程和图16的过程之间的一个不同之处在于图16的过程仅仅在读过程期间存在错误的情况下才使用补偿。
在图16的步骤840中,从主机、控制器或另一实体接收对读数据的请求。在步骤842中,响应于对读数据的请求,对特定页或其他数据单位进行读过程。步骤842的读过程不包括对这里所述的耦合的补偿。步骤844包括确定数据中是否有任何错误。如果数据中没有错误,则在步骤846,数据被报告给用户。如果在步骤844没有找到错误,则在步骤850中确定错误是否可校正。各种ECC方法具有校正数据组中预定数目的错误的能力。如果ECC过程可校正数据,则在步骤852中使用ECC过程校正该数据,并且在步骤854中将校正的数据报告给用户。如果数据不能通过ECC过程校正(步骤850),则系统将通过执行具有对相邻浮置栅极之间的耦合的补偿的读过程,尝试恢复数据。由此,在步骤860中,系统确定是否和/或使用多少补偿来解决相邻浮置栅极直接的耦合。在步骤862中,响应于对读数据的请求,对特定页或其他数据单位进行读过程。步骤862的读过程通过基于步骤860使用对相邻浮置栅极直接的耦合的适当补偿,尝试恢复数据。
目标浮置栅极的相邻浮置栅极可包括在同一位线上但在不同字线上的相邻浮置栅极,在同一字线上但在不同位线上的相邻浮置栅极,或者从目标浮置栅极跨越的浮置栅极(因为它们在相邻位线和相邻字线这两者上)。在一个实施例中,这里讨论的对耦合的补偿可应用于上述这些相邻浮置栅极组中的任一个。在一些实施例中,这里描述的对耦合的补偿应用于在相同字线上但在不同位线上的相邻浮置栅极。例如,存储器单元362可具有由于与存储器单元364和366(见图7)的耦合而改变的表观阈值电压。在2005年4月5日提交的发明人为Yan Li和Jian Chen的美国专利申请11/099049“ReadOperations For Non-Volatile Storage That Includes Compensation for Coupling”中更加详细地讨论了由于在同一位线上但在不同字线上的相邻浮置栅极引起的耦合的补偿,其全文通过引用合并于此。一些实施例提供了对在同一字线上但在不同位线上的相邻浮置栅极之间以及在同一位线上但在不同字线上的相邻浮置栅极之间的耦合的补偿。
相邻浮置栅极之间的耦合的量取决于合适对相邻浮置栅极编程。同时编程的两个相邻浮置栅极有可能具有较少耦合或没有耦合。最大耦合量有可能在一个浮置栅极没有编程(例如,保持擦除状态E)而另一浮置栅极被接着编程为最高(例如,最大)编程状态(例如,被编程为状态C-见图13)的两个相邻浮置栅极之间产生。因为在状态E和状态A之间具有最大裕度,所以即使有耦合,也不太可能存在状态E下的错误读数据。第二最大耦合量在被编程为状态A的第一浮置栅极和被编程为状态C的后面编程的浮置栅极之间。由此在一个实施例中,将使用对耦合的补偿的那个时间是当存储器单元处于第一编程状态(例如,状态A)并且其邻居处于状态组(4个状态、8个状态或不同数目的状态)中的最高编程状态(例如状态C)时。在其他实施例中,当邻居存储器单元处于不同状态,如状态B或另一状态时,可使用对耦合的补偿。在使用多于或少于四个状态的一些实施例中,当邻居存储器单元处于已经发现引起耦合的状态下时,可使用对耦合的补偿。类似地,当目标存储器单元处于非状态A的状态下时,根据特定实现方式,可使用对耦合的补偿。
如果可使用某一技术检测或获取邻居存储器单元的状态,则可在下一读操作中确定和调整所考虑的存储器单元所需的校正量。一种方式是通过读操作得知特定存储器单元的状态。但在一个实施例中,用于相邻位线的感测放大器之间没有通信。即使在读操作之后,所考虑的存储器单元将不会知道其邻居存储器单元的状态。
图17是描述基于存储器单元是否处于状态A以及其邻居中的一个或多个是否处于状态C、确定是否应使用补偿以及使用多少补偿的一个实施例的流程图。存在至少两个场景。在一个场景中,所读特定存储器单元处于状态A并且其邻居之一处于状态C。在第二场景中,所读特定存储器单元处于状态A,并且其邻居中的两个(不同位线)处于状态C。图17的过程确定特定存储器单元(或特定位线)的任何邻居是否处于状态C(或者处于7个或更多个状态中的最高已编程状态)。使用该过程实现图15的步骤802和图16的步骤860。
在图17的步骤900中,读取连接到所选字线的所有存储器单元(或子集)以确定存储器单元是否处于状态C。这通过使用读比较点Vrc实现。假设具有比Vrc更高的阈值电压的那些存储器单元处于状态C。具有比Vrc更少的阈值电压的那些存储器单元不处于状态C。在使用Vrc的读操作的结束处,每个感测放大器将锁存相应的存储器单元是否处于状态C。一个必须克服的障碍是在一些实现方式中,感测放大器不能与相邻感测放大器对话。由此,看图7,位线BL2的感测放大器不能与位线BL1或位线BL3的感测放大器通信。因而,BL2的感测放大器不知道BL1和BL3上的邻居存储器单元是否处于状态C。执行步骤902-910以表示邻居存储器单元是否处于状态C。在步骤902,连接到步骤900中感测的要处于状态C的存储器单元的所有位线被充电到预定电压。在一个例子中,具有处于状态C的存储器单元的位线被充电至0.5伏特。回来看图9,这可通过向晶体管612的栅极施加0.5伏特+(晶体管612的)Vth并触发RST信号为低以使得INV=0来实现。利用INV=1设置其他感测放大器,因而,它们的位线将不充电。对于GRS=0,在位线上没有活动的下拉。当具有C数据的位线充电时,由于位线到位线耦合,相邻位线将被耦合到那些位线。在一个实现方式中,这样的耦合可以是总位线电容的40%。对于具有两个带C数据的邻居的位线,电容性耦合可以高至总位线电容的80%。例如,如果位线没有一个带C数据的邻居,则其可向上耦合大约0.15伏特。如果位线具有两个带C数据的邻居,则其可向上耦合大约0.3伏特。
在步骤904中,识别出具有两个带C数据的邻居的那些位线。在一个实施例中,通过将BLC拉低至0.2+(晶体管612的)Vth来实现步骤904。这将使得具有两个C邻居的位线使得其晶体管612截止,因为晶体管612的漏极侧是Vdd,而源极侧是0.3伏特。这样,SEN节点将不会放电,感测放大器将锁存LAT=1。具有一个C邻居或没有C邻居的其他位线将使得晶体管612导电。因为位线具有比电容Csa高得多的电容,所以SEN节点将放电,并且感测放大器将锁存LAT=0。在合适的数据锁存器394中存储SEN节点被充电还是放电的结果(步骤906)。在步骤906之后,感测放大器和位线被重置,然后连接到处于状态C的存储器单元的那些位线在步骤908中被再次充电,类似于步骤902。在步骤910中,通过施加BLC=0.15伏特+(晶体管612的)Vth,感测耦合到一个或多个C邻居的那些位线。系统感测具有处于状态C的存储器单元的一个或多个邻居的那些位线。在步骤912中,在锁存器394之一中存储结果。对于存储在步骤904中两个邻居处于状态C以及在步骤908中一个或多个邻居处于状态C的指示的那些位线,假设位线具有两个或更多个处于状态C的邻居。对于在步骤906中不存储两个或更多个邻居处于状态C的指示以及在步骤910中不存储一个或多个邻居处于状态C的指示的那些位线,假设那些位线具有一个处于状态C的邻居。
图18是图示出在图17的过程中执行的一些操作的时序图。时序图被分解为对应于步骤902、904和906的三个时间段。在步骤902期间,看到信号BLC上升到0.5伏特加上晶体管612的阈值电压。这对于连接到所选字线且处于状态C的存储器单元所耦合的所有位线完成。那些位线被示出为上升到0.5伏特。这样,具有两个C邻居的位线耦合到两个相应的邻居位线,从而位线上升到0.3伏特。没有C邻居的位线将停留在0伏特。在该时间帧期间,信号GRS为低。然后,BLC下降到0伏特,接着上升到0.2伏特加上晶体管612的阈值电压,此时感测位线(步骤904)。两个状态C邻居之后的那些位线将不对SEN节点放电(见线914)。不具有两个状态C邻居的那些位线将对SEN节点放电(见线916)。在合适的位线锁存器382中锁存数据之后,数据将被传输到数据锁存器394。
图19描述了可包括对具有一个或多个C邻居的存储器单元提供补偿的读过程的一个实施例。图19的过程提供了图15的步骤804和图16的步骤862的一个实施例的更多细节。此外,可使用步骤940-950和964-972实现图16的步骤842。可对于包括字线和所有位线或位线子集的数据页执行图19的过程。在图19的步骤940中,读参考电压Vra被施加到与页相关联的合适字线。这是的读参考电压Vra被施加到与该字线连接的存储器单元的控制栅极。在步骤842中,感测与页相关联的位线,以确定所寻址的存储器单元是否基于向它们的控制栅极施加Vra而传导。传导的位线表示存储器单元导通;因而,那些存储器单元的阈值电压低于Vra(例如,处于状态E)。在步骤944中,在那些位线的合适的锁存器中存储位线的感测结果。
在步骤946中,读参考电压Vrb被施加到与所读页相关联的字线。在步骤948中,如上所述感测位线。在步骤950中,在与没有处于状态C的邻居存储器单元的页的存储器单元连接的那些位线的合适的锁存器中存储结果。
该实施例尝试校正在处于状态C的存储器单元之后的处于状态A的数据。可能引起的错误在于,当实际处于状态A时,存储器单元将具有被增加为使得看起来处于状态B的表观阈值电压。在步骤952中,Vrb加上第一偏量被施加到与所读页相关联的字线。在步骤954中,如上所述感测位线。在步骤956中,在与具有一个处于状态C的相邻存储器单元的页中的存储器单元连接的那些位线的合适的锁存器中存储结果。在步骤958中,Vrb加上第二偏量被施加到与所读页相关联的字线。在步骤960中,如上所述感测位线。在步骤962中,在与具有两个处于状态C的相邻存储器单元的页中的存储器单元连接的那些位线的合适的锁存器中存储结果。
在步骤964中,读参考电压Vrc被施加到与所读页相关联的字线。在步骤966中,如上所述感测位线。在步骤968中,在所有位线的合适的锁存器中存储结果。在步骤970中,确定页(或其他数据单位)中的每个存储器单元的数据值。例如,如果存储器单元以Vra传导,则存储器单元处于状态E。如果存储器单元以Vrb(或Vrb加上第一偏量或Vrb加上第二偏量)和Vrc而不是以Vra传导,则存储器单元处于状态A。如果存储器单元以Vrc而不是以Vra或Vrb(或Vrb加上任一偏量)传导,则存储器单元处于状态B。如果存储器单元不以Vra、Vrb(或Vrb加上任一偏量)或Vrc传导,则存储器单元处于状态C。在一个实施例中,由处理器392确定数据值。在步骤972中,处理器392将在每个位线的合适的锁存器中存储所确定的数据值。在其他实施例中,以不同顺序感测电平(Vra、Vrb和Vrc)。
第一偏量和第二偏量的量取决于特定实现方式。这里描述的本发明不取决于第一偏量或第二偏量的任何具体值。在一个实施例中,第一偏量是0.1伏特,而第二偏量是0.2伏特;然而,也可使用其他合适的值。
取代在读过程期间校正不同位线上的相邻存储器单元之间的电容性耦合,也可在编程时进行补偿。因为系统在编程时会知道数据,所以如果该存储器单元使得其邻居中的一个或多个被分派为编程至状态C,则系统能有意地利用略低的阈值电压将存储器单元编程至状态A。这种状态A存储器单元将在被分派为状态C的邻居之后正确读取的方式已经完成了编程。
一个实现紧凑阈值电压分布而不会不合理地拖慢编程过程的方案是使用两阶段编程过程。第一阶段(粗略编程阶段)包括尝试以较快的方式升高阈值电压,并且相对少地关注实现紧凑阈值电压分布。第二阶段(精细编程阶段)尝试以较慢的方式升高阈值电压,以便达到目标阈值电压,同时实现更紧凑的阈值电压分布。可在全文通过引用合并于此的美国专利6,888,758中找到粗略/精细编程方法的例子。
在粗略/精细编程方法的一个例子中,该过程使用两个验证电平:目标验证电平(也称为精细验证电平)和粗略验证电平。该过程将通过执行编程过程的粗略阶段而开始。当存储器单元的阈值电压到达低于目标验证电平的粗略验证电平时,通过将位线电压升高至大于0伏特但小于禁止电压的值,存储器单元将进入精细编程阶段。在粗略阶段期间,位线电压将是大约0伏特。为禁止存储器单元编程,位线电压升高至禁止电压(例如,Vdd)。在精细编程阶段期间,与粗略编程阶段相比,由于位线电压从0伏特升高至中间值的影响,编程变慢。因而,每个编程步骤中阈值电压的改变在粗略编程阶段期间有可能更小。存储器单元将保持在精细编程阶段中,直到存储器单元的阈值电压已经达到目标阈值电压。当存储器单元的阈值电压达到目标阈值电压时,位线电压升高至Vdd(或其他禁止电压)以禁止该存储器单元的进一步编程。
所提出的包括校正不同位线上的相邻存储器单元之间的耦合的编程方法将使用上述粗略/精细编程过程;然而,将使用三个验证电平取代两个。例如,图20示出了状态A的阈值电压分布范围980。用于验证的目标电压是Vva。上述用于粗略/精细编程的现有技术方法具有被标记为Vca的粗略验证电平。所提出的方案包括添加如下所述那样使用的第三验证电平Via。总之,在粗略编程阶段期间,存储器单元将被编程直至阈值电压达到Vca。那些由于被编程至状态A并且在要被编程至状态C的存储器单元之后而需要补偿的存储器单元,在精细阶段中将被编程直至阈值电压达到Via。其他存储器单元在精细阶段中将被编程直至它们的阈值电压达到Vva。由此,具有处于状态C的邻居的处于状态A的存储器单元有可能具有较低的阈值电压,甚至有可能低于目标阈值电压分布范围980。因而,耦合将导致那些存储器单元的阈值电压升高至阈值电压分布范围980中。
图21提供了阈值电压对时间和位线电压对时间的图,以表示由于其邻居均不处于状态C而无需补偿的存储器单元的粗略/精细编程的一个例子。该图假设在时间t1、t2、t3、t4和t5,编程脉冲被施加到存储器单元的控制栅极。在与t1、t2和t3相关联的脉冲上,存储器单元的阈值电压增加。在时间t3,存储器单元的阈值电压变得高于Vca。因而,粗略编程阶段完成,并且精细编程阶段开始。位线电压相应地从0伏特升高至中间电压V1(例如,1伏特)。与0伏特相对,中间电压V1的施加拖慢了该位线的编程过程。在时间t5,当存储器单元的阈值电压大于Vva时,位线电压将升高至禁止电压(例如,Vdd)。
图22示出了由于其邻居中的一个或多个处于状态C并且该存储器单元正被编程至状态A而确实需要补偿的存储器单元的图。在时间t3,存储器单元的阈值电压已经增加为达到Vca;因而,位线电压升高至中间电压V1。在时间t4,存储器单元的阈值电压达到Via,其高于Vca且小于Vva;因而,通过将位线电压升至Vdd,存储器单元被锁定不能进一步编程。
注意到,在其他实施例中,除了V1之外,可使用多个中间电压。例如,接收补偿的存储器单元可使用一个中间位线电压,而不接收补偿的存储器单元可使用另一种见位线电压。在其他实施例中,不同的位线可使用不同的中间电压。
图23是描述根据图21和图22的图进行编程的过程的一个实施例的流程图。在步骤700中,“数据加载”由控制器发出并由控制电路块接收。在步骤1002中,指定页地址的地址数据从控制器或主机输入到解码器314。在步骤1004中,所寻址的页的编程数据页(或其他数据单位)被输入到数据缓冲器以进行编程。该数据被锁存在合适的锁存器组中。在步骤1006中,由控制器向状态机312发出“编程”命令。在步骤1008中,确定是否要补偿耦合。例如控制器350、控制电路块310、感测块400或另一组件将确定特定存储器单元是否由于该特定存储器单元被编程至状态C并且其邻居中的一个或多个(或两个或更多个)将被编程至状态C而需要在编程过程期间接收补偿。因为控制器350和控制电路块310知道所有编程数据,所以在一个实施例中,系统将自动得知补偿是否有必要。在其他实施例中,每个位线的每个数据锁存器将得知要编程的数据。因而,感测模块400可执行图17的步骤908、910和912,以确定任何位线是否有具有要在状态C下编程的数据的邻居。如果这样,则具有这样的邻居的那些位线将被标记以进行补偿。在图23的一个实施例中,仅仅有一个补偿值被提供给具有处于状态C的一个或多个邻居的存储器单元。在其他实施例中,可根据存在一个处于状态C的邻居还是两个处于状态C的邻居,提供不同的值补偿。
在图23的步骤1010中,初始脉冲被设置为其初始值,编程计数器被设置为其初始值,并且位线电压被设置为其初始值。对于要编程的存储器单元,位线电压将被设置为0伏特。对于不编程的存储器单元,位线将被设置为Vdd。初始电压的指示也可存储在锁存器中。在一些实施例中,在编程脉冲步骤1012(下面讨论)期间,可施加初始位线值。
在步骤1012中,编程脉冲被施加到合适的字线。在步骤1014中,执行验证过程。如果存储器单元在粗略编程阶段中,则将使用步骤1014的验证过程确定存储器单元的阈值电压是否已经达到粗略验证电平。如果存储器单元处于精细编程阶段,则将存储器单元的阈值电压与需要补偿的那些存储器单元的目标阈值电压(例如,Vva)或中间验证电平(例如,Via)进行比较。下面将提供步骤1014的更多细节。在步骤1016中,确定所有要编程的存储器单元的状态是否使得它们已经全部被验证。如果它们已经全部被验证,则在步骤1018中报告成功的编程过程。如果它们没有被全部验证,则在步骤1020中,针对编程限值PCmax检查编程计数器PC。如果编程计数器PC不小于PCmax,则编程过程已经失败,并且在步骤1022中报告失败的状态。如果编程计数器小于PCmax,则在步骤1024中,Vpgm电平增加步长,并且编程计数器PC递增。在步骤1024之后,过程循环回到步骤1012,以施加下一Vpgm脉冲。
图24是描述了图23的验证步骤1014的一个实施例的流程图。在步骤1060中,系统确定存储器单元是处于粗略编程阶段还是精细编程阶段。注意到,图23的过程描述了对于存储器单元的群组(例如,连接到公共字线的存储器单元的页)执行的高级过程。图24的过程对于被编程的每个特定存储器单元单独进行。在一个实施例中,感测块配有用来存储特定存储器单元是处于粗略还是精细编程阶段的指示的锁存器。如果存储器单元处于粗略编程阶段,则在步骤1062中,利用粗略验证电平(例如,Vca)进行验证过程。即,将使用感测放大器确定存储器单元的阈值电压是否已经达到合适的粗略验证电平。例如,如果存储器单元正被编程至状态A,则如上所述,感测放大器将测试存储器单元的阈值电压是否已经达到Vca。如果阈值电压已经达到粗略验证电平(步骤1064),则存储器单元已经完成粗略编程阶段。因而,在步骤1066,位线电压升高至中间电压V1,从而存储器单元将在下一编程脉冲进入精细编程阶段。在步骤1066之后,过程将继续到步骤1080(下面讨论)以确定阈值电压是否也超出精细验证电平(或者中间验证电平是合适的)。如果存储器单元的阈值电压已经达到粗略验证电平,则在步骤1068中,位线电压将维持在当前电平,从而存储器单元将继续粗略编程阶段。
如果在步骤1060中确定存储器单元处于精细编程阶段,则在步骤1080中,确定存储器单元是否正被编程至状态A且需要补偿耦合。如果不,则在步骤1082中使用精细验证电平(例如,目标验证电平Vva、Vvb或Vvc)执行验证过程。如果需要补偿,则在步骤1090中,使用中间验证电平Via进行验证过程。如果存储器单元的阈值电压在合适的验证电平之上(步骤1084),则在步骤1088中,通过将位线电压升至Vdd,存储器单元被锁定不能进行进一步编程。如果存储器单元的阈值电压不在验证电平之上(步骤1084),则在步骤1086中,位线电压维持其当前电平,并且精细编程阶段将继续。
如上所述,可在编程序列期间校正单元浮置栅极到浮置栅极耦合效应。也可在读操作期间校正。以下讨论描述了将位线到位线耦合效应作为修正引资合并到感测过程中的读序列,从而可根据邻居存储器单元状态修正读取。图25和图26解释了用于读数据的过程的实施例,其允许向经受来自相邻存储器单元的耦合的某些存储器单元提供补偿。在步骤1100中,读取所有位线以确定连接到那些位线和连接到所选字线的存储器单元是否处于状态C。这通过使用Vrc作为读比较点进行读操作来执行。具有处于状态C的存储器单元的那些位线将锁存存储器单元处于状态C的指示。图18中示出了读操作。在步骤1102中,具有非状态C的状态的存储器单元的那些位线将被充电。在一个实施例中,那些位线被充电至0.5伏特。在步骤1102中对位线充电之后,在步骤1104中,连接到处于状态C的存储器单元的那些位线被充电至.25和.4伏特之间。在步骤1104中对连接到处于状态C的存储器的位线充电,这将在步骤1102中充电的位线向上耦合至高于0.5伏特的电压。例如,图26示出了代表不具有处于状态C的存储器单元的那些位线的位线BLn。该图示出了在步骤1102期间被充电至0.5伏特的位线。位线BLn+1连接到处于状态C的存储器单元,并且BLn+1是BLn的邻居。在步骤1104期间,BLn+1被充电至大约.4伏特。然后,位线BLn将被耦合至高于0.5,如虚线1120所示。不挨着在步骤1104中充电的邻居的那些位线将保持在0.5伏特,如线1122所示。在图25的步骤1106中,将感测所有位线(或位线子集)。具有C邻居的位线被感测为具有较高位线电压。因为较高的位线电压,所以位线将传导更多电流,这给出了较低阈值电压的表观。这将补偿相邻单元之间的耦合。具有C邻居的单元在它们的邻居被编程之后,被耦合到比它原始编程电平更高的浮置电压。具有浮置栅极到浮置栅极耦合补偿的这种读取将争取的读回单元的原始编程电平。完成该读校正,无需源自多次读操作的时间惩罚。一个读操作获得需要校正的存储器单元和无需校正的存储器单元的结果。
在上述一个实施例中,当移除单元源噪声时,可存在数个感测选通脉冲。在所有发送选通脉冲期间或在以后的感测选通脉冲期间,可施加上面参照图25和图26所述的过程。例如,在具有两个选通脉冲的一个实施例中,第一选通脉冲可不使用图25和图26的过程,而第二选通脉冲可使用图25和图26的过程。
上面描述了在编程期间和在读取期间补偿浮置栅极耦合的过程。在一些实施例中,可在编程和读取两者期间进行补偿。然而在大多数实施例中,在编程期间或在读取期间进行补偿,而不在两者期间都进行补偿。可基于存储器系统的使用,判定是在读取期间还是在编程期间进行补偿。例如,如果存储器系统要在主机中使用,其中数据将被非常少地编程但被读取许多次,则可能更好的是在编程期间进行补偿。可替换地,如果主机将编程许多次而读取非常少的次数,则更好的是在读取过程中进行补偿。
在一个实施例中,存储器系统可被制造为包括在读取过程期间和在编程过程期间进行补偿的技术。在制造过程期间或之后的某个时间点上,存储器系统可被配置为使得它仅仅在读取过程期间或者仅仅在编程过程期间进行补偿。
图27提供了描述用于配置存储器系统使得它在读取过程期间或在编程过程期间进行补偿的过程的流程图。在步骤1200中,存储器系统被制造为具有在读取期间进行补偿和在编程期间进行补偿的能力。这可包括制造半导体晶片(wafer)。可选地,步骤1200可能还包括使用本领域已知的工艺封装晶片。封装可具有或没有用来执行上述配置的开关。在集成电路上添加连接到存储元件的这样的开关的技术是本领域已知的。在步骤1202中,基于计划用途,设置作为在步骤1200中制造的存储器系统的一部分的标志(补偿标志),以指示是否应该在读取期间进行补偿或者是否应该在编程期间进行补偿。可在制造过程期间、在制作过程之后、在测试过程期间或在使用装置时设置标志。在步骤1204中,当使用装置时,系统将检查补偿标志。如果补偿标志被设置为在读取期间进行补偿,则在步骤1206中,存储器系统将在读取过程期间提供对耦合的补偿。如果补偿标志被设置用于编程,则存储器系统将在编程过程期间提供对耦合的补偿(步骤1208)。
在步骤1202中可按许多不同方式设置标志。在制造或测试过程期间,可设置ROM熔丝(fuse)以指示应该在读取期间或在编程期间进行补偿。在其他实施例中,可在制造过程期间或在以后实现和/或设置用于存储标志的指示的其他部件(例如,非易失性阵列中的存储器单元、触发器或其他存储装置)。还可在测试过程期间或在使用期间设置标志。此外,集成电路的封装可包括由用户在将存储卡插入主机中之前设置的开关。
在一些实施例中,可在存储器系统被插入主机中之后在步骤1202中设置补偿标志。图28-31提供了这样的配置的例子。在图28的步骤1300中,在主机中安装存储器系统。主机的例子可包括数码相机、音乐播放器、移动电话、手持计算装置或其他计算装置。例如,考虑到音乐播放器可能比编程更多地进行读取。因为,音乐播放器可在编程期间提供补偿。另一方面,数码相机可能更多地进行编程,因而,它可能更适合在读取过程期间提供补偿过程。在图28的步骤1302中,主机将向控制器通知其偏好。即,主机将被预编程为知道它将在它希望进行补偿时使用已知协议告知控制器。在步骤1304中,控制器将从主机接收偏好,并基于从主机接收的该偏好设置补偿标志(存储在存储器系统或其他存储装置中)。
图29提供了用于配置存储器系统的另一实施例的流程图。在步骤1320中,存储器系统被安装在主机中。在步骤1332中,用户可选择偏好。在一个实施例中,用户将通过移动机械开关或在主机的用户界面上选择偏好,来选择偏好。例如,数码相机的用户可选择在读取期间进行补偿,而音乐播放器的用户可选择在编程期间进行补偿。在步骤1334中,主机向控制器通知该偏好。在步骤1336中,控制器基于从主机接收的偏好设置补偿标志。
图30提供了描述配置存储器系统的过程的另一实施例的流程图。在步骤1330中,存储器系统被安装在主机中。在步骤1332中,控制器请求主机识别自己。例如,主机可指示它是数码相机、音乐播放器、PDA、蜂窝电话等。在步骤1334中,控制器将接收该信息并访问主机信息表。该表将对于装置的每个模型或类型识别出如何设置补偿标志。基于该表和从主机接收的信息,控制器将选择配置(例如,选择是在读取还是编程期间进行补偿)。在步骤1336中,控制器将基于在步骤1334中确定的配置相应地设置标志。
图31是描述用于配置存储器系统的过程的另一实施例的流程图。在步骤1360中,存储器系统将被安装在主机中。步骤1362,主机将使得多个文件被存储在存储器系统中。在预定量的时间之后,在预定量的文件已经被存储在存储器系统中之后或者在来自主机或用户的命令时,在步骤1364中,控制器将确定在存储器系统上存储的最有代表性的文件类型。例如,如果是个文件被存储并且它们中的八个是音乐文件,则控制器将确定最有代表性的文件是音乐文件。在步骤1366,控制器将基于代表性文件类型确定配置。例如,可在存储器系统中存储表,其列出了文件类型,并且对于每个文件类型,将存储用于补偿标志的值。标志的值可知识是在编程还是读取期间进行补偿。在步骤1368中,控制器将基于在步骤1366中确定的配置设置补偿标志。
在编程期间补偿由于相邻单元中的电荷引起的扰动
单元到单元的浮置栅极耦合(“Yupin效应”)
如前所述,被编程到一个存储器单元的电荷存储元件中的电荷产生扰动相邻存储器元件的电场。这将影响实质上是具有电荷存储元件的场效应晶体管的相邻存储器单元的特性。具体地,当感测到存储器单元将表现为具有比它没太被扰动时更高的阈值电平(或更加编程)。
通常,如果存储器单元是在第一场环境下编程验证的,并且以后在由于后续通过不同电荷编程的相邻元件引起的不同场环境下再次读取,则由于被称为“Yupin效应”的相邻浮置栅极之间的耦合,可能影响读取准确度。随着半导体存储器中的越来越高的集成度,当单元间的间距缩短时,由于存储器单元之间所存储的电荷引起的电场扰动(Yupin效应)变得更加可观。
在读取期间校正BL-BL和WL-WL Yupin效应
如前段所述,一种方式是在读取操作期间补偿BL-BL Yupin效应。它是一种预测(“LA”)技术,其中相邻位线上的单元的已编程状态被首先标记,并在读取当前位线上的当前单元时用于进行适当的补偿。为读取相邻单元的数据,在当前单元的位线处进行附加感测。基于相邻位线上的检测数据,当感测当前单元时,使用适当量的补偿。
在读取期间对WL-WL Yupin效应的校正实质上已经被称为预测(“LA”)读取。LA读取方案已经在美国专利号7,196,928和2006年十月公开的题为“Read Operations for Non-Volatile Storage that Includes Compensation forCoupling”美国专利申请公开号US-2006-0221714-A1中公开,其全部公开通过引用合并于此。具有LA校正的读取基本上检查被编程到邻近字线上的单元中的存储器状态,并校正它们在当前字线上被读取的存储器单元上所具有的任何扰动影响。如果已经根据上述优选编程方案对页编程,则邻近字线将来自紧接在当前字线之上的字线。LA校正方案将需要在当前页之前读取邻近字线上的数据。
在2006年3月17日提交的题为“System for Performing Read Operationson Non-Volatile Storage with Compensation for Coupling”的美国专利申请系列号11/377,972中公开了替代的直接LA方案(“DLA”),其全部公开通过引用合并于此。DLA方案也通过考虑下一字线上的邻近单元的已编程状态,对当前字线中的单元的读取进行校正。取代在读取期间简单地偏置当前字线,通过按如下方式偏置邻近字线来施加校正:所得的浮置栅极耦合偏移WL-WL Yupin效应错误。
尽管可以在读取期间校正Yupin效应,但当存储器支持每个单元的越来越多的存储器状态时,操作变得更加繁重。在2比特或4状态存储器中,已经有3次读取来确定当前字线上的页的已编程状态。如果使用下一字线上的数据进行补偿,则也必须读取下一字线上的页。所以读取当前字线上的当前页也将需要读取下一字线上的下一页。
在编程期间校正Yupin效应
在许多方式中,尽管有减少编程性能的代价,但优选的是在编程期间校正Yupin效应。许多存储器装置按照使得一旦数据被编程则接着读取许多次而很少或不更新的方式进行使用。由此,通过将校正的负担移至编程侧,优化装置的整体性能。
Yupin效应更强地影响邻近单元,其可沿着存储器阵列的行跨越位线(BL-BL Yupin效应)以及沿着列跨越字线(WL-WL Yupin效应)。它通过最小化单元的场环境在编程验证时和在相邻单元已经被编程之后进行读取时之间的非对称性来减轻。
存在在编程期间减少Yupin效应的几种方式。一个方式是进行多通路编程,其中在多于一个的通路上完成沿着字线的存储器单元的页的编程。典型地,进行至少两个编程通路。第一通路使用相应的验证电平(其为比它对于目标状态正常应该的更低的偏量)对接近它们各自目标状态的页中的所有单元编程。后续通路使用正常验证电平完成编程,而没有这样的偏量。单元上的Yupin效应仅仅由在单元编程之后的邻居的改变(即,编程)贡献。当通过浮置栅极之间的电荷改变的最小量执行后续通路时,在编程验证和后续读取操作之间的场环境的非对称性将最小。由此,在2通路编程技术中,Yupin效应被最小化。该技术能最小化BL-BL Yupin效应。如后所述,如果当从字线到字线编程时按特定序列执行两个通路,则它也能减少WL-WL Yupin效应。
以上至少2通路编程方案的一个缺点是,每次编程在数据到位(in place)前需要至少两个通路。换言之,数据无效,因而在完成最终通路之前没有用。
替代的多通路编程方案是采用多比特编码,使得每个通路连续对一个附加比特编程,直到所有比特到位。以此方式,每个通路对多比特数据中的至少一个比特编程,并且能存储有用数据,而不必在被编程到单元中多比特数据变得有效之前完成所有通路。为减少BL-BL Yupin效应,使用避免二进制编程的每个通路之间的大电荷变化的编码。由前面结合图14描述的“LM”编码给出了具有这种特性的优选编码。LM编码,在有效地允许每个通路存储一比特数据的同时,仍然紧紧减少大约50%的Yupin效应。
取决于相邻单元的目标存储器状态和预定状态这两者的验证电平
根据本发明的一般方面,通过相应调整验证电平,在将单元编程到给定目标状态期间,补偿由于相邻存储器单元上的电荷引起的扰动,从而从单元读取正确目标状态,而不考虑被后续编程到相邻存储器单元中的扰动电荷。
这通过预先确定相邻存储器单元的存储器状态和根据所编程的存储器单元的状态以及相邻存储器单元的状态调整验证电平来实现。该方案还具有将在单通路中完成编程的优点。
图32是例示了在使用依赖于数据的验证电平进行编程期间补偿Yupin效应的方法的流程图。它实质上是利用依赖于数据的验证电平的单通路编程方案。
步骤1400:将一项(dose)编程电压并行施加到存储器单元群组,以增加被编程的每个存储器单元的阈值电压。
步骤1410:通过确定相对于预定验证电平验证的存储器单元的阈值电压,相对于给定目标状态验证存储器单元的群组的编程状态,预定验证电平是个顶目标状态和与被验证的存储器单元相邻的存储器单元的目标状态的函数。
步骤1420:禁止对群组中已经验证的存储器单元进一步编程。
步骤1430:已经验证了所有要编程为给定目标状态的存储器单元?如果是,前进到步骤1440;否则,前进到步骤1400。
步骤1440:对于要编程为给定目标状态的那些存储器单元,编程完成。
图33例示了适合于例示本发明的一部分存储器阵列。例如,由字线WLn连接的一页存储器单元被并行编程。对页中任一个单元,如存储器单元1460的Yupin效应大部分由邻近被编程的存储器单元1460的相邻单元的后续编程所贡献。具体地,沿着字线WLn,左侧邻居是单元1472,右侧邻居是单元1474。类似地,编程单元1460经由位线BL2耦连到感测放大器(未示出)。沿着位线BL2,在字线WLn-上的位于编程单元1460下方的邻居是单元1482,而上面的WLn+1字线上的邻居是单元1484。
存储器单元1460的邻居可以是任一个可能的存储器状态,每个在其电荷存储元件中具有不同的电荷量,由此引发不同的扰动量。对于四个邻近邻居,扰动的范围由这些邻居中可能的存储器状态的排列(permutation)给出。通常,仅仅相关的邻居是那些将在存储器单元1460完成了编程之后编程的邻居。实践中,优选的是,将存储器单元1460所见到的扰动量以及因此的补偿电平数量化为可管理的数目。例如,可通过一比特对补偿电平数编码,其中“0”可表示不补偿,“1”可表示预定补偿电平。在另一实施例中,可使用两个比特代表多达四个可能的补偿电平。
施加到当前字线WLn的预定偏移验证电平
在一个实施例中,通过感测进行验证,其中预定偏移验证电压电平被施加到与要编程验证的存储器单元相关联的字线。例如,参照图33,如果存储器单元1460正被编程验证,则预定验证电压电平被施加到WLn。
图34例示了在编程期间调整WLn上的验证电平以补偿相邻电荷的扰动。该例子示出了由一个比特编码的两个可能补偿电平。当邻居被较少编程(其中总扰动在预定阈值之下)时,不采用补偿。因而,在验证感测期间施加到WLn字线的验证电压电平与正常V(目标状态)相同,适合于将诸如单元1460的单元编程至目标状态(补偿代码“1”)。另一方面,当邻居处于较多编程状态(其中总扰动在预定阈值之上)时,通过将正常验证电平向下偏移预定偏量电压ΔV,施加补偿,即,电压V-ΔV被施加到WLn(补偿代码“0”)。偏量ΔV是被标记为ΔV(相邻状态)的相邻状态的函数。图34中的例子与NAND存储器有关,其中在NAND串(见图2)中的所选字线,并且在验证操作期间,剩余的未选字线将具有向它们施加的电压Vpass。WLn-1和WLn+1被示出为邻近WLn的两个未选字线。
通常,偏量是有多少来自邻居的取决于要向其编程的目标状态的扰动的函数。存在越多的编程状态,则电荷和扰动将越多。可通过在工厂对存储器芯片的初始测试和检验来预先确定偏量。
尽管图32中的例子示出1比特补偿方案,但诸如2比特补偿方案的更精细的方案也是可以的。在2比特的情况下,存在可施加到WLn的四个可能的电压电平,即,V、(V-ΔV1)、(V-ΔV2)和(V-ΔV3)。
图35是例示了图23中所示的验证步骤的一个实施例的流程图,其中仅仅向当前字线施加单通路数据依赖验证电平。验证步骤1410包括:
步骤1412:通过确定相对于预定验证电平验证的存储器单元的阈值电压,相对于给定目标状态验证存储器单元的群组的编程状态,预定验证电平是给定目标状态和与被验证的存储器单元相邻的存储器单元的目标状态的函数。
步骤1414:验证包括在被验证的存储器单元的字线上利用预定验证电平给出的电压进行感测。
如果要编程的存储器单元是NAND串(见图2)的一部分,则预定验证电平将被施加到与被编程的存储器单元相关联的字线。串中的所有其他存储器单元具有被施加到它们相关联的字线的通路电压Vpass,以便导通它们。
利用1比特补偿方案,编程期间的验证需要对给定目标状态的页编程两次,因为页的所有单元的控制栅极共享相同的字线WLn。对于邻居不需要补偿的页中的那些单元,正常电压电平V被施加到WLn。对于需要补偿的那些单元,偏移验证电压电平V-ΔV被施加到WLn。
将理解,在其他实施例中,预期更多的补偿电平。将通过超过一个比特对不同电平编码,并且验证操作将必须对具有不同补偿电平的不同自己进行。当确定被编程的单元的补偿电平时,其被锁存在相同列中或单元的感测电路中,供验证操作期间使用。如前所述,不能验证的那些单元将通过下一编程脉冲进行进一步的编程,而那些已经验证的将被禁止编程,不能进一步编程。
通过在编程期间根据目标状态和相邻存储器单元的预定存储器状态调整验证电平,基本上在一个编程通路中补偿由于相邻单元上存在或预期的电荷引起的Yupin效应。无需在第一通路中将所有单元编程为接近它们的目标状态,然后优选地在相邻单元已经编程后在另一通路中完成编程。实践中,编程可优选地采用超过一个阶段(例如,粗略/精细阶段)增加性能,但无需在完全不同的时间执行两个分离的通路,以便减轻Yupin效应。单通路编程将允许最大的编程性能以及从字线到字线的更简单的编程序列。
利用较低偏移验证电压的操作的问题
在单通路或多通路编程方案的情况下,需要验证电平在至少一个通路中被偏移得更低。对于使用过低的验证电平,可能产生问题。
通常,由于其邻居的Yupin效应引起的单元上的扰动具有升高单元的表观阈值电平的影响。换言之,单元表现为比没有Yupin效应的情况更多地编程。由此,考虑到Yupin效应,验证电平将需要比正常情况更低。这对于两通路编程方案而言尤其如此。第一通路将完全受到Yupin效应的冲击,而第二完成通路将进行验证,而来自Yupin效应的冲击较少。由此,第一通路验证电平将需要偏移得比正常情况更低以避免由于最差情况Yupin效应引起的“过编程”,并且确保存储器单元之间阈值电平的空间的紧凑分布。然而,如可从以下解释中看到的,偏移可能低至1V或更多。这可带来感测期间的操作困难,或者限制了存储器单元能支持的存储器状态数。
图36A例示了支持在四个不同簇中的阈值窗口中分布的四个存储器状态的存储器单元的典型空间的例子。每个簇代表具有四个存储器状态之一的空间存储器单元。该例子示出了范围从-2.5V到4V的阈值窗口。通常,通过感测放大器以负电压感测的能力,确定阈值窗口的下限。另一方面,由高电压晶体管击穿电压的限值和浮置栅极保持大量电荷的退化,确定阈值窗口的上限。
图36B例示了当前被感测的单元的已编程阈值电平上的高度编程的相邻单元的影响。这是Yupin效应,其增加当前单元的感知阈值电平。例如,高度编程的邻居将具有被编程到其电荷存储元件(或浮置栅极)中的实质电荷量,并且相邻电荷的影响将耦合到被感测的当前单元的浮置栅极。每个邻居可将当前单元的感知阈值电平升高350mV那么多。如果单元被所有四个中间邻居(左、右、上和下)扰动,其可将感知阈值电平升高超过1V。由此,根据其邻居的编程状态,每个单元可具有其在从零到某最大附图的范围中平移的表观阈值电平。每个簇上的净影响是它尾端向着较高电压扩展。
图37A例示了不同邻居对被感测的当前单元的Yupin效应的分布。该例子示出了从处于状态“A”的存储器单元的空间感测的当前单元。空间1502代表未受到任何相邻扰动的存储器单元。当空间的一些单元被其邻近位线上的以后编程至最大编程状态的两个邻居扰动(BL-BL Yupin效应)时,1502的尾端被修正为1504。类似地,当空间的一些单元还被其下一字线(WLn+1)上的以后编程至最大编程状态的邻居扰动(WL-WL Yupin效应)时,1504的尾端被进一步修正为1506。由此,可看出BL-BL和WL-WL Yupin效应的组合可使得单元表现为具有更高的阈值电压电平。例如,最差情况的BL-BL效应可将阈值电压平移250mV,并且来自一个邻居的最差情况的WL-WL效应可将阈值电压平移350mV并且在从两侧的情况下平移700mV。然后组合可总计为从600mV到大约1V。
如前所述,为了不会由于在受到Yupin效应的存储器单元的表观阈值电平的升高引起“过编程”,多通路编程的第一通路的验证电平被基本包括最差情况Yupin效应的偏量1512设置为更低。由此,对于第一编程通路,为避免由因为高度编程的相邻单元引起的感知提高的阈值电平所表明的当前单元的可能的“过编程”,第一通路的验证电平可能必须被偏移得更低1V那么多。
图37B例示了平移多通路编程的第一通路的验证电平以减少Yupin效应。例如,如果存在两个通路,并且最后一个通路采用分别用于状态“A”、“B”和“C”的正常验证电平V2a、V2b和V2c,则用于编程至这些目标状态中的每一个的相应第一通路验证电平V1a、V1b和V1c可能偏移得更低预定量。例如,V1a从V2a偏移预定量1512(也参见图37A)。
多通路编程方案中的第一通路验证电平的偏移,以及用来在单通路编程方案中较小程度地补偿Yupin效应的较低验证电平,产生了对于擦除状态“E”的问题。通常,为最小化阈值窗口的程度以便符合尽量多的不同状态,擦除状态是在阈值窗口的较低端的限值处的位置。如前所述,该限值由感测放大器以负电压进行感测的能力控制。例如,下限可以所示的-2.5V。实践中,优选的是,具有擦除单元的良好定义和紧凑控制的分布。典型地,它由擦除后的软编程完成以形成更紧凑的分布。软编程将要求相对于擦除状态的预定电平的编程验证。然而,通过偏移第一通路验证电平的要求,偏量1510可具有平移超出阈值窗口的下限的验证电平。尽管有可能向着更加正值的一端平移所有簇以将偏量保持在边界内,但它仍然减少了阈值窗口的有用范围。
通过偏置邻近字线虚拟偏移验证电平
根据本发明的另一方面,通过相应地偏置邻近字线,虚拟地进行验证电平的调整,从而当利用调整后的验证电平进行编程验证,将从单元读取正确的目标状态,而不考虑后续编程到相邻存储器单元中的扰动电荷。这具有避免使用被编程的单元的验证电平上的实际偏移的优点,由此避免可能使得验证电平平移过低而在验证最低存储器状态时要求负电压感测的问题。
如前结合图36A和图36B所述,使用较低的验证电平偏移是不期望的。本发明的这方面通过利用邻近字线WLn+1的适当偏置实现相同效果,避免了使用比正常验证电平更低的电平的问题。
图38示出了根据优选实施例的被验证的字线上的正常验证电平与用来对正常验证电平施加虚拟偏移的邻近字线的偏置的组合。该例子示出了被施加到NAND存储器的由一比特编码的两个可能的补偿电平。具体地,WLn是NAND串(见图2)中的所选字线,而剩余的未选字线将在验证操作期间具有向其施加的电压Vpass。
当邻居被较少编程(其中总扰动在预定阈值之下)时,不采用补偿(补偿代码“1”)。因而,在验证感测期间施加到WLn字线的验证电压电平与正常V(目标状态)相同,适合于将诸如单元1460的单元编程至目标状态(补偿代码“1”)。同时,剩余的未选字线将在验证操作期间具有向其施加的电压Vpass。WLn-1和WLn+1被示出为邻近WLn的两个未选字线。具体地,两个电压之一V0=Vpass被施加到WLn+1。
另一方面,当邻居处于较多编程状态(其中总扰动在预定阈值之上)时,需要补偿(补偿代码“0”)。在此情况下,小于V0的V1被施加到WLn+1。V1是预定的,从而其具有虚拟地类似于图34所示的补偿代码“0”的配置的效果。然而,取代更低地偏移正常校准电平和将其施加到WLn(补偿代码“0”)。等效方案是在WLn+1上施加作为偏移得更低的Vpass的V1。
由此,通过1比特补偿,字线电压配置类似于正常验证操作,其中当不需要补偿时V0=Vpass被施加到下一字线WLn+1,当需要补偿时,V1被施加到下一字线。电压V1可被看作Vpass-ΔV’,其中ΔV’是在图34所示的WLn处产生对正常验证电平的虚拟偏移效果的额外偏压。优选地,邻近字线上的电压从利用补偿验证那些单元期间按的较低电压V1升高到无补偿地验证其他单元期间的较高电压V0。
图39是例示了图32所示的验证步骤的另一优选实施例的流程图,其中在当前字线和相邻字线两者上施加单通路数据依赖验证电平。邻近字线(例如WLn+1)上的偏压的额外施加具有虚拟偏移向当前字线(例如WLn)施加的验证电压的效果。这避免了与前面描述的降低验证电压有关的缺点。事实上,虚拟偏移的效果模拟了WL-WL耦合效应的机制,因而在在调制WL-WL耦合效应时更准确。
步骤1530:提供具有能由字线和位线访问的存储器单元阵列的非易失性存储器。
步骤1540:指定要并行编程至给定目标状态的存储器单元的群组。
步骤1550:将一项编程波形电压并行施加到存储器单元的群组,以增加被编程的每个存储器单元的阈值电压。
步骤1560:将预定验证电压电平施加到访问存储器单元的群组的字线,该预定校正电压电平是给定目标状态的第一函数。
步骤1562:将预定偏压电平施加到邻近字线,该预定偏压是邻近被验证的存储器单元的存储器单元的目标状态的第二函数。
步骤1568:感测以验证被编程的存储器单元的群组。
步骤1570:禁止对群组中已经被验证为已编程至给定目标状态的存储器单元进一步编程。
步骤1580:已经验证了所有要编程为给定目标状态的存储器单元?如果是,前进到步骤1590;否则,前进到步骤1540。
步骤1590:对于要编程为给定目标状态的那些存储器单元,编程完成。
将WL-WL Yupin效应减半的优选编程方案
对于WL-WL Yupin效应,其中扰动在邻近字线上的存储器单元之间,它在编程期间使用优选编程方案减轻。这将有效地将扰动减半。还可使用在前面描述的编程或读取操作期间的各种补偿方案中的一个或组合,校正剩下的一半。
美国专利号6,781,877描述了还通过以优化顺序对存储器阵列中的页编程,减少WL-WL Yupin效应的编程方案。
优选编程方案将使得与字线相关联的页按优化序列编程。例如,在每个物理页保存一页二进制数据的二进制存储器的情况下,页优选地沿着一致的方向顺序地编程,如从底部到顶部。以此方式,当特定页被编程时,它下侧的页已经被编程。无论它们可能对当前页有什么扰动影响,在当前页被编程验证时在这些扰动方面考虑它们。实质上,对页编程的序列应允许当前页被编程以在它已经编程之后看到围绕它周围的变化的最小量。由此,每个编程页仅仅受到它上侧的页的扰动,并且通过此编程序列有效地将WL-WL Yupin效应减半。
在存储器单元的每个物理页是多状态并且所得的多个逻辑数据页在不同通路中编程的存储器的情况下,序列不那么直着向前。例如,在编码4个存储器状态的2比特存储器中,与字线相关联的每个物理页可被看作来自每个单元或两个分离的逻辑页中的2比特数据的单页,每个来自每个单元的1比特数据的较低和较高比特。因而,物理页可被编程,其中每个单元被直接编程到对应于2比特代码的4个状态中的其目标状态。可替换地,两个比特中的每一个可被分开编程,首先对于低比特页,然后对于高比特页。当每个物理页的逻辑页被分开编程时,修正的优化序列是可能的。
图40例示了存储器的例子,其具有2比特存储器单元,并且其页按优化序列编程以便最小化邻近字线上的存储器单元之间的Yupin效应。为方便,标记为使得物理页P0、P1、P2…分别放在字线W0、W1、W2…上。对于2比特存储器,每个物理页具有与之相关联的两个逻辑页,即,高比特和低比特逻辑页,每个具有二进制数据。通常,由LP(字线.逻辑页)给出特定逻辑页。例如,W0上的P0的低比特和高比特页将分别被标记为LP(0.0)和LP(0.1),并且W2上的相应页是LP(2.0)和LP(2.1)。
实质上,逻辑页的编程将遵循序列n,从而被编程的当前页将在其被编程之后看到围绕其周围的改变的最小量。在此情况下,再次在从底部到顶部的一个一致方向上递增移动,这将有助于消除来自一侧的扰动。另外,因为当编程向上移动过物理页时每个物理页可具有两个编程通路,更好的是,当前高比特页在其邻近的低比特页已经被编程之后编程,从而当对当前高比特页编程时将考虑它们的扰动效应。由此,如果编程从LP(0.0)开始,则序列由页编程顺序标示,0、1、2、…n,这将得到:LP(0.0)、LP(1.0)、LP(0.1)、LP(2.0)、LP(1.1)、LP(3.0)、LP(2.1)…
利用数据依赖验证电平编程的相邻状态的确定
如前所述,结合图24,在编程验证期间针对BL-BLYupin效应的优选补偿方案是根据相邻状态的编程状态调整编程验证电平。为了将相邻状态通知给被编程的列或位线,每个邻居的位线被设置为取决于每个邻居的编程状态的预定电压。该预定电压在被编程的位线处执行的附加感测中检测,然后用于偏移编程验证电平。
在编程期间补偿WL-WL Yupin效应的情况下,相邻字线的编程状态或数据必须被获取,并且使得被验证的单元的验证或感测电路可获得,以便相应偏移编程验证电平。
如果按优选顺序执行编程,即从存储器阵列的底部字线开始,则相对于当前被编程的字线,前一字线将已经被编程。来自前一字线的数据页可被简单地读取和锁存到相应列锁存器中。然而,如果坚持结合图40描述的优选编程顺序,则已经注意到来自前一字线的Yupin效应,并且无需获得其数据以计划补偿。
对于还要编程的下一字线中的数据,存在获取它的多种可能性。
图41例示了与图5所示的存储器装置通信的主机。存储器装置包括存储器芯片298和控制器610。存储器芯片298包括存储器阵列300和诸如感测放大器、数据锁存器394、I/O电路和片上控制电路310的外围电路。片上控制电路310控制存储器芯片的操作。在许多实现方式中,主机10经由控制器350与存储器芯片298通信和交互。
控制器350与存储器芯片协作,并控制和管理高级存储器操作。例如,在主机写入时,主机10请求将数据逐页写入到存储器阵列300。然后每个数据页被发送到控制器350,其随后使得其停留(stage)在数据锁存器394中以被编程到存储器阵列中。在一个实现方式中,至少两个数据页由控制器350接收并被缓冲在控制器RAM 352中。当第一页被锁存在数据锁存器394中以被编程到字线WLn中的当前页中时,估计想要编程到字线WLn+1中的下一页中的下一数据页,并且对应于高度编程状态的那些也被作为编码补偿电平锁存到相应数据锁存器中。在优选实现方式中,与每列相关联的逻辑和处理器将与状态机协作以利用本发明的各种验证方案进行编程操作。
图42例示了用于获得下一字线的数据页的另一技术。一部分非易失性存储器阵列300被划分为常规部分302和缓冲部分304。典型地,存储器阵列的常规部分302存储多比特数据。另一方面,缓冲部分302中的存储器单元优选地被配置为存储二进制数据。以此方式,二进制数据以相对较高的速度编程到缓冲部分,并且也无需校正Yupin效应。优选地,当数据第一次写入存储器时,它首先被陷入缓冲部分304。之后,在适宜的时间,来自缓冲部分302的数据可复制到常规部分302。因为在当前页正编程时,要编程至常规部分302的数据可容易地从缓冲部分304读取,所以下一页的数据也可用于编程验证期间的补偿的考虑。
补偿由于擦除存储器状态的相邻单元的改变引起的扰动
如前所述,当数据页以明确的字线顺序(即从底部到顶部)编程时,则较低邻近字线WLn-1将在当前字线WLn之前编程,因而将对当前字线的单元有Yupin效应。由此当调整验证电平,需要考虑先前编程的字线WLn-1。
然而,对于保留在擦除状态的那些存储器单元,即使WLn-1上的已编程单元也将对WLn上的擦除单元有Yupin效应。换言之,顶部Wn+1和底部Wn-1上的两个邻近邻居将扰动WLn上的单元。这是因为如果单元始终保留在擦除状态,则得到编程的任何邻近邻居将在达到该状态的单元之后。因而,两者将贡献于单元的场环境的改变,因为单元之前被擦除。
典型地,存储器使得其单元被擦除,从而它们的阈值电平减少到在阈值窗口的远低端处的范围。在优选实施例中,采用软编程操作将更深擦除的单元编程至预定分界阈值电平之下的较窄范围内。软编程相对于预定分界阈值电平与验证交替。以此方式,软编程和验证有助于将擦除单元的分布范围紧缩到紧接在预定分界阈值电平之下的预定范围。
图43例示了具有处于擦除状态的单元的空间的存储器以及它们如何受到Yupin效应的影响。在擦除单元已经通过在单元的字线上施加预定验证电平VE而相对于预定分界阈值电平1610软编程验证之后,紧缩的擦除空间由实线分布范围1602表示。如上所述,WLn-1处的页的编程将引起WL-WLYupin效应,导致分布范围1602的右尾部向着在延伸尾部1604中的较高电平扩展。最终,WLn+1上的页的编程的效应还进一步将右尾部从1606扩展至延伸尾部1608。
从图43清楚,由于以后编程的邻居,一些擦除单元被扰动以使得它们的阈值电平平移到编程状态区域。
根据本发明的另一方面,擦除存储器单元优选地在它们已经被擦除之后“软编程”。“软编程”是指相对于用于在擦除和编程状态之间分界的预定阈值,将擦除单元编程至阈值电平的预定范围。这通过相对于预定阈值交替编程和验证擦除单元来实现。在软编程期间,通过相应地调整验证电平,补偿由于相邻存储器单元上的电荷引起的扰动,从而将从单元读取正确的擦除状态,而不考虑后续被编程到相邻存储器单元中的扰动电荷。
这通过预先确定相邻存储器单元(包括在被编程的单元的字线两侧的邻近字线上的那些)的存储器状态、以及通过利用偏量减少分界电平调整验证电平来实现,其中该偏量是相邻存储器单元的存储器状态的函数。
图44例示了在验证电平被调整以校正来自所有邻近邻居的扰动之后擦除单元的分布的效应。在此情况下,根据两个邻近字线WLn-1和WLn+1上的相邻单元以及相邻位线上的邻居,调整验证电平。可看到,在软编程之后,擦除单元具有相对于图43所示的不正确的分布范围由1602的左尾部和1626的右尾部紧缩的阈值分布范围1630。
在可忍受BL-BL Yupin效应的替代实施例中,仅仅在调整验证电平的偏量时校正WL-WL Yupin效应。
在优选实施例中,通过偏置类似于图38A和图38B所示的邻近字线中的一个或多个,虚拟地实现验证电平的偏移。
图45例示了根据一个优选实施例用来施加双侧校正的邻近字线的偏置。如果被软编程的擦除单元在字线WLn上,则类似于图38A所示的方案,正常验证电平VE被施加到WLn。正常验证电平VE将用于擦除单元的正常软编程,而不考虑如前结合图43所述的Yupin效应校正。
因为在WLn的任一侧上有邻近字线,所以优选实现方式是偏置两个邻近字线。如果在被分别由一比特“1”或“0”表示的两个电压V0或V1之一上允许采用每个邻近字线,则两个邻近字线将具有由两比特表示四个可能的组合。这些组合中的每一个提供对VE的不同虚拟偏移量,因而提供了相应的补偿电平量。如前所述,当邻近字线在具有值Vpass的V0处偏置时,它是正常情况。另一方面,当邻近字线在低于V0的V1处偏置时,其具有产生对VE的虚拟较低偏移的效果。由此,利用在V1偏置的两个邻近字线,实现最高补偿电平(00)。下一较低补偿电平(01)将具有V1的邻近字线WLn+1和V0的WLn-1。类似地,最少或无补偿电平(11)将具有均为V0的WLn-1和WLn+1。
图46是利用相对于预定阈值电平的阈值电平的已定义分布范围建立存储器单元群组的流程图。
步骤1600:提供具有可由字线和位线访问的存储器单元的阵列的非易失性存储器。
步骤1610:擦除实质上超出对擦除状态分界的预定阈值电平的存储器单元的群组。
步骤1620:将一项编程波形电压并行施加到存储器单元的群组,以增加被编程的每个存储器单元的阈值电压。
步骤1630:将预定验证电压电平施加到访问存储器单元的群组的字线。
步骤1632:将第一预定偏压电平施加到第一邻近字线,该第一预定偏压电平是第一相邻存储器单元的目标状态的第二函数,第一相邻单元可由第一邻近字线访问并邻近被验证的存储器单元。
步骤1634:将第二预定偏压电平施加到第二邻近字线,该第二预定偏压电平是第二相邻存储器单元的目标状态的第二函数,第二相邻单元可由第二邻近字线访问并邻近被验证的存储器单元。
步骤1638:感测以验证已相对于预定阈值电平编程的存储器单元的群组。
步骤1640:禁止对群组中已经被验证的存储器单元进一步编程。
步骤1650:已经验证了群组中的所有存储器单元?如果是,前进到步骤1660;否则,前进到步骤1620。
步骤1660:群组中的所有已擦除单元已经相对于预定阈值电平编程。
具有用来最小化Yupin效应的验证电平的虚拟偏移的多通路编程
如前所述,Yupin效应将使得已编程单元在相邻单元接着得到编程之后被读取时表现为更多利用明显更高的阈值电平较多“编程”。这将使得被编程至相同状态的阈值的分布范围变宽。
之前的解决方案是在超过一个通路中进行编程。第一通路将每个单元编程为恰好达不到其目标状态或目标阈值电平。第二通路王朝编程至目标状态。以此方式,使得被编程的单元所看到的从其最后编程验证时到百年差相邻单元使得相邻场环境的改变最小化。这通过在第一通路期间偏移所选字线上的较低验证电平来完成。在下一字线中的单元被编程之后,施加第二通路编程以紧缩分布范围。
根据本发明的另一方面,为了最小化基于邻近电荷存储元件中存储的电荷的电场的耦合,在至少两个通路中执行编程过程。第一通路使用从标准验证电平的偏移,对每个单元编程以恰好达不到其目标状态。第二通路利用标准验证电平完成编程。优选地,通过偏置一个或多个相邻字线,而不是实际偏移标准校准电平,来虚拟地偏移第一通路中的验证电平,以便避免在低电平上验证。
图47是根据本发明的一般方面通过多通路编程减少Yupin效应的流程图,其中第一通路采用验证电平的虚拟偏移。
步骤1700:提供具有可由字线和位线访问的存储器单元的阵列的非易失性存储器,各个存储器单元中的每一个可相对于相关联的目标阈值电平编程。
步骤1710:在第一通路中对存储器单元群组并行编程,从而被编程的各个存储器单元中的每一个被验证位比相关联的目标阈值电平差预定偏量,其中第一通路中的编程包括步骤1714。
步骤1714:通过利用被施加到访问各个存储器单元的字线的相关联的目标阈值电平以及被施加到第一邻近字线的第一预定偏压进行感测,将要编程的各个存储器单元验证位比相关联的目标阈值电平差预定偏量。
步骤1720:在后续通路中对群组编程,从而被编程的各个存储器单元中的每一个被验证位相关联的目标电平。
图48是根据本发明的优选实施例通过多通路编程减少Yupin效应的流程图,其中第一通路采用验证电平中的虚拟偏移。
步骤1700:提供具有可由字线和位线访问的存储器单元的阵列的非易失性存储器,各个存储器单元中的每一个可相对于相关联的目标阈值电平编程。
步骤1710:在第一通路中对存储器单元群组并行编程,从而被编程的各个存储器单元中的每一个被验证位比相关联的目标阈值电平差预定偏量,其中第一通路中的编程包括步骤1712、步骤1714、步骤1716和步骤1718。
步骤1712:将预定项的编程波形电压并行施加到存储器单元的群组,以增加被编程的每个存储器单元的阈值电压。
步骤1714:通过利用被施加到访问各个存储器单元的字线的相关联的目标阈值电平以及被施加到第一邻近字线的第一预定偏压进行感测,将要编程的各个存储器单元验证位比相关联的目标阈值电平差预定偏量。
步骤1716:禁止对群组中已经被验证的存储器单元进一步编程。
步骤1718:已经验证了群组中的所有存储器单元?如果是,前进到步骤1720;否则,前进到步骤1710。
步骤1720:在后续通路中对群组编程,从而被编程的各个存储器单元中的每一个被验证位相关联的目标电平。
如前所述,使用多通路编程的优点是可减少Yupin效应。多通路编程更容易执行,因为它不涉及确定相邻单元的目标状态以校正Yupin效应。
使用粗略验证的虚拟验证偏移进行粗略/精细编程
已经在美国专利号6,888,758中,前面还结合图20和图21描述了粗略和精细编程步骤的两阶段中的编程技术。将看到,编程操作使用两个验证电平:目标验证电平(也称为精细验证电平);以及在精细验证电平之前的粗略验证电平。粗略验证电平比精细验证电平向下偏移预定偏量。
过程将通过执行编程过程的粗略阶段开始。每个粗略编程步骤之后是相对于粗略验证电平的验证。当存储器单元的阈值电压被编程为低于目标验证电平的粗略验证电平时,存储器单元将进入精细编程阶段。编程被减慢,以便不会过冲目标电平。这通过将单元的位线电压升至大于0伏特且小于禁止电压的值来实现。通常,对于全变成效率,如在粗略阶段期间,位线电压将在大约0伏特。另一方面,为禁止存储器单元编程,位线电压被升至禁止电压(例如,Vdd)。在精细编程阶段期间,与粗略编程阶段相比,由于位线电压从0伏特升至中间值的影响,编程被减慢。因而,每个编程步骤的阈值电压改变有可能在粗略编程阶段期间更小。存储器单元将保留在精细编程阶段中,直到存储器单元的阈值电压已经达到目标阈值电压。当存储器单元的阈值电平达到目标阈值电压时,位线电压被升至Vdd(或其他禁止电压),以禁止该存储器单元的进一步编程。
之前的粗略/精细编程技术需要相对于两个验证电平进行验证,第一个是低于目标验证电平的粗略验证电平。在粗略阶段期间,这通过在被验证的存储器单元的所选字线上提供实际粗略验证电压电平来实现。在NAND串的情况下,NAND串中的所有其他字线典型地被设置为Vpass电压。在精细阶段期间,所选字线自己升高至目标验证电压电平。
根据本发明的另一方面,在一开始包括在较精细步骤之前使用较粗略但快的编程步骤的编程操作中,对于要相对于相关联的目标阈值电压编程的存储器单元,每个粗略步骤中的验证相对于比相关联的目标阈值电平低预定偏量的粗略验证电平,利用被施加到访问所验证的存储器单元的所选字线的相关联目标阈值电平和被施加到邻近字线的预定偏压,虚拟地影响粗略验证电平。通常,虚拟偏量是邻近字线上的预定偏压的反函数。
图49示出了根据本发明优选实施例的在粗略编程阶段中的验证期间被验证的所选字线上的正常验证电平和用来对正常验证电平施加虚拟偏量的邻近字线的偏置的组合。在例子中,WLn是NANA串(见图2)中的所选字线,而剩余的未选字线将正常具有在验证操作期间施加到它们的电压Vpass。
在粗略阶段期间,通过相对于应该偏移得比目标状态的验证电平更低的粗略验证电平进行感测,实现验证操作。然而,取代WLn上的电压的偏移,其在粗略和精细阶段中始终保持同样在目标验证电平。相反,在粗略阶段期间,邻近字线之一,如WLn+1,被偏置到低于正常Vpass的电压V1。这具有将WLn设置为Vcoarse的虚拟效应。
在存储器单元已经被编程和验证到粗略验证电平时,其通过将其位线偏执为零电压进入精细编程阶段。在正常实践中,通过相对于目标验证电平进行感测,实现精细阶段中的验证操作。这是将目标验证电平施加到WLn,并将V2(=Vpass)施加到未选字线,如WLn+1和WLn-1。
图50例示了在粗略或精细编程阶段下的存储器单元的位线电压。在粗略编程阶段期间,位线基本在零电压。在精细编程阶段期间,位线在零和Vdd之间的预定中间电压,以便减慢编程。
图51是例示了根据本发明优选实施例的粗略/精细编程的流程图,其中虚拟地实现粗略验证电平。
步骤1800:提供具有可由字线和位线访问的存储器单元的阵列的非易失性存储器。
步骤1802:为相对于相关联的目标阈值电平对存储器单元编程,提供小于相关联的目标阈值电平的偏移验证电平。
步骤1810:初始地将第一位线电压施加到单元群组的位线以使得能够在粗略阶段中编程。
步骤1820:通过施加预定项的编程波形电压,相对于相关联的目标阈值电平对存储器单元的群组并行编程。
步骤1830:通过利用被施加到访问各个存储器单元的字线的相关联的目标阈值电平以及被施加到第一邻近字线的第一预定偏压进行感测,相对于偏移验证电平验证被编程的各个存储器单元。
步骤1832:通过利用被施加到访问各个存储器单元的字线的相关联的目标阈值电平以及被施加到第一邻近字线的第二预定偏压进行感测,相对于相关联的目标阈值电平验证被编程的各个存储器单元。
步骤1840:已经将群组中的所有存储器单元验证为相关联的目标阈值电平?如果是,前进到步骤1860;否则,前进到步骤1850。
步骤1850:将被验证为偏移验证电平的任何存储器单元的位线设置为第二位线电压,从而在精细阶段中将减慢对这样的存储器单元的编程。
步骤1852:将被验证为相关联的目标阈值电平的任何存储器单元的位线设置为第三位线电压,从而将禁止对这样的存储器单元的编程。
步骤1860:对于群组完成相对于相关联的目标阈值电平的编程。
所描述的各类非易失性存储器系统能够支持各自存储一至多个比特数据并预期在不同数字存储装置和系统(包括可移除存储卡和嵌入其他装置的电路板中的存储装置)的存储器单元。
已经为了例示和描述的目的给出了本发明的前述详细说明。不意图它是穷尽的或将本发明限于所公开的精确形式。根据以上教导,许多修改和变化是可能的。选择所描述的实施例以便最好地解释本发明的原理及其实践应用,从而使得本领域技术人员在各种实施例中并使用适合于预期特定用途的各种修改来最好地利用本发明。希望由所附权利要求限定本发明的范围。