具体实施方式
适合实施本发明的存储器系统的一个实例使用NAND快闪存储器结构,其包括在两个选择栅极之间串联布置多个晶体管。所述串联的晶体管和所述选择栅极被称为NAND串。图1是展示一个NAND串的俯视图。图2是其等效电路。图1和2所描绘的NAND串包括串联并夹在第一选择栅极120与第二选择栅极122之间的四个晶体管100、102、104和106。选择栅极120门控与位线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所描绘,NAND串的晶体管形成在p阱区140中。每一晶体管包括堆叠栅极结构,其由控制栅极(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”。在一些实施方案中,使用格雷码(Gray code)指派来将数据值(例如,逻辑状态)指派给所述阈值范围,使得如果浮动栅极的阈值电压错误地移位至其邻近物理状态,则只有一个位将受到影响。在编程至存储器单元中的数据与所述单元的阈值电压范围之间的具体关系取决于针对存储器单元所采用的数据编码方案。举例来说,第6,222,762号美国专利和2003年6月13日申请的题为“跟踪存储器系统的单元(TrackingCells For A Memory System)”的第10/461,244号美国专利申请案(所述两个专利的全文均以引用的方式并入本文中)描述用于多状态快闪存储器单元的各种数据编码方案。
在以下美国专利/专利申请案中提供NAND型快闪存储器和其操作的相关实例,所有所述专利/专利申请案的全文均以引用的方式并入本文中:第5,570,315号美国专利;第5,774,397号美国专利;第6,046,935号美国专利;第5,386,422号美国专利;第6,456,528号美国专利和第09/893,277号美国专利申请案(第US2003/0002348号公开案)。除了NAND快闪存储器以外的其它类型的非易失性存储器也可配合本发明一起使用。
对快闪EEPROM系统有用的另一类型的存储器单元利用非传导介电材料来取代传导浮动栅极以用非易失性方式存储电荷。在1987年3月IEEE电子装置快报第EDL-8卷第3号第93至95页的张(Chan)等人的“真实单晶体管氧化物-氮化物-氧化物EEPROM装置(A True Single-Transistor Oxide-Nitride-Oxide EEPROM Device)”文章中描述此单元。由氧化硅、氮化硅和氧化硅(“ONO”)形成的三层式电介质夹在传导控制栅极与在存储器单元沟道上方的半传导性衬底的表面之间。通过将电子从单元沟道注入至氮化物(此处电子被捕获并存储在受限区中)中来编程单元。接着,此存储的电荷以可检测的方式改变所述单元的沟道的一部分的阈值电压。通过将热空穴注入至氮化物中来擦除单元。还请参阅1991年4月IEEE固态电路杂志第26卷第4号第497至501页的野崎(Nozaki)等人的“用于半导体磁盘应用的具有MONOS存储器单元的1-Mb EEPROM(A1-Mb EEPROM with MONOS Memory Cell for Semiconductor Disk Application)”,其描述一种分裂栅极配置的类似单元,其中经掺杂的多晶硅栅极在存储器单元沟道的一部分上方延伸以形成单独的选择晶体管。前述两篇文章的全文均以引用的方式并入本文中。在1998年IEEE出版社由威廉·D.布朗(William D.Brown)与乔·E.布鲁尔(Joe E.Brewer)编辑的“非易失性半导体存储器技术(Nonvolatile Semiconductor Memory Technology)”的第1.2节中所提及的编程技术(其以引用的方式并入本文中)在所述章节中也描述为适用于介电电荷捕获装置。本段中所描述的存储器单元也可配合本发明一起使用。因此,本文中描述的技术也适用于不同存储器单元的介电区之间的耦合。
2000年11月IEEE电子装置快报第21卷第11号第543至545页的埃特恩(Eitan)等人的“NROM:新颖的局部化捕获2位非易失性存储器单元(NROM:A Novel LocalizedTrapping,2-Bit Nonvolatile Memory Cell)”已描述用以在每一单元中存储两个位的另一途径。ONO介电层延伸跨越源极与漏极扩散之间的沟道。用于一个数据位的电荷被局限在相邻于漏极的介电层中,而用于另一数据位的电荷被局限在相邻于源极的介电层中。通过分开地读取电介质内的在空间上分隔的电荷存储区的二元状态来获得多状态数据存储。本段中所描述的存储器单元也可配合本发明一起使用。
图4说明NAND单元阵列的实例,例如图1至3中所展示的NAND单元。沿着每一列,位线206耦合至用于NAND串150的漏极选择栅极的漏极端子126。沿着每一行NAND串,源极线204可连接所述NAND串的源极选择栅极的所有源极端子128。作为存储器系统的部分的NAND结构阵列和其操作的实例请参阅第5,570,315号、第5,774,397号和第6,046,935号美国专利。
存储器单元阵列被划分成大量存储器单元区块。正如快闪EEPROM系统常见的,区块是擦除单位。也就是说,每一区块含有可一起擦除的最少数目的存储器单元。每一区块通常被划分成多个页。页是编程单位。在一个实施例中,各个页可被划分成若干区段,且所述区段可含有作为基本编程操作而一次写入的最少数目的单元。一页或一页以上数据通常被存储在一行存储器单元中。页可存储一个或一个以上扇区。扇区包括用户数据和额外开销数据。额外开销数据通常包括已从所述扇区的用户数据计算出的错误校正码(ECC)。控制器(在下文中描述)的一部分在正将数据编程至阵列中时计算所述ECC,且当从阵列读取数据时还检查所述ECC。替代地,将ECC和/或其它额外开销数据存储在与其所属的用户数据不同的页或甚至不同的区块中。
一扇区的用户数据通常是512个字节,其对应于磁盘驱动器中的扇区的大小。额外开销数据通常是额外的16至20个字节。大量页形成一区块,从8个页至(例如)多达32、64、128或更多页。在一些实施例中,一行NAND串组成一区块。
在一个实施例中,通过以下方式来擦除存储器单元:使p阱上升至擦除电压(例如,20伏)达一充分时间周期,且使选定区块的字线接地,同时源极线和位线处于浮动状态。由于电容性耦合,非选定字线、位线、选择线和共用源极也上升至所述擦除电压的显著分数。因此,施加强电场至选定存储器单元的隧道氧化物层,且由于浮动栅极的电子被发射至衬底侧(通常通过福勒-诺德海姆(Fowler-Nordheim)穿隧机制),所以选定存储器单元的数据被擦除。随着电子从浮动栅极转移至p阱区,选定单元的阈值电压被降低。可对整个存储器阵列、单独的区块或其它单元单位执行擦除。
图5说明根据本发明一个实施例的存储器装置296,其具有用于并行读取和编程一页存储器单元的读取/写入电路。存储器装置296可包括一个或一个以上存储器电路小片298。存储器电路小片298包括二维存储器单元阵列300、控制电路310和读取/写入电路365。在一些实施例中,存储器单元阵列可以是三维的。存储器阵列300可经由行解码器330通过字线寻址且经由列解码器360通过位线寻址。读取/写入电路365包括多个感测区块400,且允许并行地读取或编程一页存储器单元。通常,在与一个或一个以上存储器电路小片298相同的存储器装置296(例如,可移除式存储卡)中包括控制器350。命令和数据经由线路320在主机与控制器350之间传送,且经由线路318在所述控制器与所述一个或一个以上存储器电路小片298之间传送。
控制电路310与读取/写入电路365协作以对存储器阵列300执行存储器操作。控制电路310包括状态机312、芯片上地址解码器314和功率控制模块316。状态机312提供存储器操作的芯片级控制。芯片上地址解码器314提供在主机或存储器控制器使用的地址与解码器330和360使用的硬件地址之间的地址接口。功率控制模块316控制在存储器操作期间供应至字线和位线的功率和电压。
在一些实施方案中,可组合图5的一些组件。在各种设计中,图5的除存储器单元阵列300外的一个或一个以上组件(单独式或组合式)可视为管理电路。举例来说,一个或一个以上管理电路可包括以下各项中的任一者或组合:控制电路310、状态机312、解码器314/360、功率控制316、感测区块400、读取/写入电路365、控制器350等。
图6说明图5所示的存储器装置296的另一布置。由各种外围电路对存储器阵列300的存取是在所述阵列的相对侧处以对称方式实施,使得每一侧上的存取线路和电路的密度减少一半。因此,行解码器被分裂成行解码器330A和330B,且列解码器被分裂成列解码器360A和360B。类似地,读取/写入电路被分裂成读取/写入电路365A(其从阵列300底端连接至位线)和读取/写入电路365B(其从阵列300顶端连接至位线)。以此方式,使读取/写入模块的密度实质上减小一半。图6的装置还可包括控制器,如上文针对图5的装置所描述。
图7是个别感测区块400的框图,所述感测区块被分割成核心部分(称为感测模块380)和共用部分390。在一个实施例中,对于每一位线将有单独的感测模块380,且对于一组多个感测模块380将有一个共用部分390。在一个实例中,感测区块将包括一个共用部分390和八个感测模块380。一群组中的每一感测模块将经由数据总线372与相关联的共用部分通信。进一步细节请参阅2004年12月29日申请的题为“具有用于读出放大器集合体的共享处理的非易失性存储器和方法(Non-Volatile Memory & Methodwith Shared Processing for an Aggregate of Sense Amplifiers)”的第11/026,536号美国专利申请案,所述申请案的全文以引用的方式并入本文中。
感测模块380包含感测电路370,所述感测电路确定所连接的位线中的传导电流高于还是低于预定阈值电平。感测模块380还包括位线锁存器382,所述位线锁存器用于设定所连接的位线上的电压状况。举例来说,锁存于位线锁存器382中的预定状态将导致所连接的位线被拉至指定编程禁止的状态(例如,Vdd)。
共用部分390包含处理器392、一组数据锁存器394和耦合于所述组数据锁存器394与数据总线320之间的I/O接口396。处理器392执行计算。举例来说,其功能之一是确定所感测的存储器单元中所存储的数据,且将所确定的数据存储于所述组数据锁存器中。所述组数据锁存器394用于存储在读取操作期间处理器392所确定的数据位。其还用于存储在编程操作期间从数据总线320导入的数据位。所导入的数据位表示希望编程至存储器中的写入数据。I/O接口396提供数据锁存器394与数据总线320之间的接口。
在读取或感测期间,系统的操作是在状态机312的控制下,所述状态机312控制将不同的控制栅极电压供应至所寻址的单元。随着逐步通过对应于存储器所支持的各种存储器状态的各种预界定的控制栅极电压,感测模块380可能在这些电压中的一者处跳闸,且将把输出经由总线372从感测模块380提供至处理器392。此时,处理器392通过考虑感测模块的跳闸事件和关于经由输入线路393从状态机施加的控制栅极电压的信息来确定所得存储器状态。接着,处理器计算所述存储器状态的二进制编码,且将所得数据位存储至数据锁存器394中。在核心部分的另一实施例中,位线锁存器382具有双重用途,其作为用于锁存感测模块380的输出的锁存器且还作为如上文所述的位线锁存器。
预期一些实施方案将包括多个处理器392。在一个实施例中,每一处理器392将包括输出线(图7中未描绘),使得所述输出线的每一者以线“或”方式连接在一起。在一些实施例中,所述输出线在连接至所述线“或”线之前先被反转。此配置实现在编程检验过程期间迅速确定何时已完成编程过程,因为接收线“或”的状态机可确定所有正被编程的位何时已达到所需电平。举例来说,当每一位已达到其所需电平时,所述位的逻辑“0”将被发送至所述线“或”线(或数据“1”被反转)。当所有位输出数据“0”(或数据“1”被反转)时,则状态机知道要终止编程过程。因为每一处理器与八个感测模块通信,所以状态机需要读取线“或”线八次,或将用以累加相关联的位线的结果的逻辑添加至处理器392,使得状态机仅需要读取线“或”线一次。类似地,通过正确选择逻辑电平,全局状态机可检测何时第一位改变其状态且相应地改变算法。
在编程或检验期间,从数据总线320将待编程的数据存储在所述组数据锁存器394中。在状态机的控制下,编程操作包含施加至所寻址存储器单元的控制栅极的一连串编程电压脉冲。在每一编程脉冲之后进行读回(检验),以确定所述单元是否已被编程至所需存储器状态。处理器392相对于所需存储器状态来监视读回存储器状态。当所述两者一致时,处理器222设定位线锁存器214,以便致使将位线拉至指定编程禁止的状态。这禁止进一步编程耦合至所述位线的单元,即使其控制栅极上有编程脉冲出现。在其它实施例中,处理器最初加载位线锁存器382,且感测电路在检验过程期间将其设定为禁止值。
数据锁存器堆叠394含有对应于感测模块的一堆叠数据锁存器。在一个实施例中,每个感测模块380有三个数据锁存器。在一些实施方案中(但并非必须),数据锁存器经实施为移位寄存器,使得存储于其中的并行数据被转换成用于数据总线320的串行数据,反之亦然。在优选实施例中,对应于m个存储器单元的读取/写入区块的所有数据锁存器可链接在一起以形成区块移位寄存器,使得可通过串行传送来输入或输出数据区块。明确地说,含r个读取/写入模块的存储器组经调适以使得其所述组数据锁存器的每一者将把数据循序移入或移出数据总线,犹如其是用于整个读取/写入区块的移位寄存器的部分。
关于非易失性存储装置的各种实施例的结构和/或操作的额外信息可参阅:(1)2004年3月25日公开的题为“具有减少的源极线偏置错误的非易失性存储器和方法(Non-Volatile Memory And Method With Reduced Source Line Bias Errors)”的第2004/0057287号美国专利申请公开案;(2)2004年6月10日公开的题为“具有改进的感测的非易失性存储器和方法(Non-Volatile Memory And Method with ImprovedSensing)”的第2004/0109357号美国专利申请公开案;(3)发明人劳尔-阿德里安·塞尼(Raul-Adrian Cernea)于2004年12月16日申请的题为“用于低电压操作的改进的存储器感测电路和方法(Improved Memory Sensing Circuit And Method For Low VoltageOperation)”的第11/015,199号美国专利申请案;(4)发明人陈键(Jian Chen)于2005年4月5日申请的题为“补偿非易失性存储器的读取操作期间的耦合(Compensating forCoupling During Read Operations of Non-Volatile Memory)”的第11/099,133号美国专利申请案;以及(5)发明人张小龙(Siu Lung Chan)和劳尔-阿德里安·塞尼(Raul-AdrianCernea)于2005年12月28日申请的题为“用于非易失性存储器的参考读出放大器(Reference Sense Amplifier For Non-Volatile Memory)”的第11/321,953号美国专利申请案。以上列出的五份专利文献的全文均以引用的方式并入本文中。
图8是描述用于编程非易失性存储器的方法的一个实施例的流程图。在一个实施方案中,在编程之前先擦除存储器单元(以区块为单位或其它单位)。在图8的步骤400中,由控制器发布“数据加载”命令且由控制电路310接收输入。在步骤402中,从控制器或主机将指定页地址的地址数据输入至解码器314。在步骤404中,将用于所寻址页的一页编程数据输入至数据缓冲器以进行编程。所述数据被锁存在适当组的锁存器中。在步骤406中,由控制器向状态机312发布“编程”命令。
通过“编程”命令的触发,将使用图9所示的施加至适当字线的步进式脉冲将在步骤404中所锁存的数据编程至由状态机312控制的选定存储器单元中。在步骤408中,将编程电压Vpgm初始化为开始脉冲(例如,12伏或其它值),且将状态机312所维持的编程计数器PC初始化为0。在步骤410中,施加第一Vpgm脉冲至选定字线。如果在特定数据锁存器中存储指示应编程相应存储器单元的逻辑“0”,则将相应位线接地。另一方面,如果在特定锁存器中存储指示相应存储器单元应保持其当前数据状态的逻辑“1”,则将相应位线连接至Vdd以禁止编程。
在步骤412中,检验选定存储器单元的状态。如果检测到选定单元的目标阈值电压已达到适当电平,则将相应数据锁存器中所存储的数据改变为逻辑“1”。如果检测到阈值电压尚未达到适当电平,则不改变相应数据锁存器中所存储的数据。以此方式,在其相应数据锁存器中存储逻辑“1”的位线不需要编程。当所有数据锁存器均正存储逻辑“1”时,状态机(经由上文所述的线“或”型机制)知道已编程所有选定单元。在步骤414中,检查是否所有数据锁存器均正存储逻辑“1”。如果是,则编程过程完成且成功,因为所有选定存储器单元均已经编程且检验。在步骤416中报告“通过”状态。在一个实施例中,步骤412的检验包括将不同于提供至其它非选定存储器单元的电压的一个或一个以上电压提供至相邻于正被编程的存储器单元的存储器单元。举例来说,如果正在编程位于字线WLn上的存储器单元,则施加至字线WLn+1上的存储器单元的电压将不同于施加至其它非选定字线的电压。下文将相对于图10更详细论述此补偿。
如果在步骤414中确定并非所有数据锁存器均正存储逻辑“1”,则编程过程继续进行。在步骤418中,对照编程限制值PCMAX来检查所述编程计数器PC。编程限制值的一个实例为20;但是,也可使用其它数值。如果编程计数器PC不小于20,则编程过程已失败且在步骤420中报告“失败”状态。如果编程计数器PC小于20,则在步骤422中将Vpgm电平增加步长大小且递增所述编程计数器PC。在步骤422之后,过程循环回到步骤410,以施加下一Vpgm脉冲。
图9展示施加至经选择用以编程的字线的一连串编程脉冲。在编程脉冲之间是一组检验脉冲(图中未描绘)。在一些实施例中,对于正在将数据编程至其中的每一状态可能有一检验脉冲。在其它实施例中,可能有更多或更少的检验脉冲。
在一个实施例中,沿着共用字线将数目编程至存储器单元。因此,在施加图9的编程脉冲之前,选择所述字线中的一者以进行编程。此字线将称为选定字线。区块的其余字线称为非选定字线。选定字线可具有一个或两个邻近字线。如果选定字线具有两个邻近字线,则位于漏极侧的邻近字线称为漏极侧邻近字线,且位于源极侧的邻近字线称为源极侧邻近字线。举例来说,如果图2的WL2是选定字线,则WL1是源极侧邻近字线且WL3是漏极侧邻近字线。
每一存储器单元区块包括形成若干列的一组位线和形成若干行的一组字线。在一个实施例中,位线被划分成奇数位线和偶数位线。在一个时间处对沿着共用字线且连接至奇数位线的存储器单元进行编程,而在另一时间处对沿着共用字线且连接至偶数位线的存储器单元进行编程(“奇数/偶数编程”)。在另一实施例中,针对所述区块中的所有位线沿着一字线编程存储器单元(“所有位线编程”)。在其它实施例中,可将位线或区块细分成其它群组(例如,左与右、两个以上群组等等)。
图10是描绘在读取或检验过程的一个迭代期间各种信号的行为的时序图。举例来说,如果存储器单元是二元存储器单元,则在步骤412的迭代期间,针对每一存储器单元执行图10的过程一次。如果存储器单元是具有四种状态(例如,E、A、B和C)的多状态存储器单元,则在步骤412的迭代期间,可针对每一存储器单元执行图10的过程三次。
一般来说,在读取和检验操作期间,将选定字线连接至一电压,针对每一读取和检验操作指定所述电压的电平,以便确定所关注的存储器单元的阈值电压是否已达到此电平。在施加字线电压之后,测量存储器单元的传导电流,以确定存储器单元是否响应于经施加至字线的电压而接通。如果测量出传导电流大于某一值,则假设存储器单元接通,且经施加至字线的电压大于存储器单元的阈值电压。如果未测量出传导电流大于所述某一值,则假设存储器单元未接通,且经施加至字线的电压不大于存储器单元的阈值电压。
存在许多方式用以在读取或检验操作期间测量存储器单元的传导电流。在一个实例中,以读出放大器中的专用电容器的放电速率来测量存储器单元的传导电流。在一个实施例中,使用所有位线编程的存储器阵列可以读出放大器中的专用电容器的放电速率来测量存储器单元的传导电流。在另一实例中,选定存储器单元的传导电流允许(或无法允许)包括所述存储器单元的NAND串将位线放电。在一段时期之后测量位线上的电荷,以查看其是否已被放电。在一个实施例中,使用奇数/偶数编程的存储器阵列可通过确定位线是否已经放电来测量存储器单元的传导电流。图10解释这两个实例。
图10展示开始于Vss(大约0伏)的信号SGD、WL_非选定、WLn+1、WLn、SGS、选定BL、BLCLAMP和源极。SGD表示漏极侧选择栅极的栅极。SGS是源极侧选择栅极的栅极。WLn是经选择用于读取/检验的字线。WLn+1是WLn的漏极侧邻近字线的非选定字线。WL_非选定表示除漏极侧邻近字线外的非选定字线。选定BL是经选择用于读取/检验的位线。源极是用于存储器单元的源极线(请参阅图4)。BLCLAMP是当从读出放大器进行充电时设定位线的值的模拟信号。请注意,图中描绘两种版本的SGS、选定BL和BLCLAMP。一组这些信号SGS(B)、选定BL(B)和BLCLAMP(B)描绘通过确定位线是否已经放电来测量存储器单元的传导电流的存储器单元阵列的读取/检验操作。另一组这些信号SGS(C)、选定BL(C)和BLCLAMP(C)描绘以读出放大器中的专用电容器的放电速率来测量存储器单元的传导电流的存储器单元阵列的读取/检验操作。
首先,将相对于SGS(B)、选定BL(B)和BLCLAMP(B)来论述通过确定位线是否已经放电来测量存储器单元的传导电流中所涉及的感测电路和存储器单元阵列的行为。在图10的时间t1处,SGD上升至Vdd(例如,大约3.5伏),非选定字线(WL_非选定)上升至Vread(例如,大约5.5伏),漏极侧邻近字线(WLn+1)上升至VreadX,选定字线WLn上升至用于读取操作的Vcgr(例如,图11的Vra、Vrb或Vrc)或用于检验操作的检验电平(例如,图11的Vva、Vvb或Vvc),且BLCLAMP(B)上升至预充电电压以预充电选定位线选定BL(B)(例如,大约0.7伏)。电压Vread和VreadX充当通过电压,因为其致使非选定存储器单元接通且充当通过门。在时间t2处,BLCLAMP(B)降低至Vss,所以NAND串可控制位线。而且在时间t2处,通过使SGS(B)上升至Vdd而使源极侧选择栅极接通。这提供用以耗散位线上的电荷的路径。如果经选择用于读取的存储器单元的阈值电压大于Vcgr或施加至选定字线WLn的检验电平,则将使选定存储器单元不接通且位线将不放电,如信号线450所描绘。如果经选择用于读取的存储器单元的阈值电压低于Vcgr或低于施加至选定字线WLn的检验电平,则将使经选择用于读取的存储器单元接通(传导)且位线电压将耗散,如曲线452所描绘。在时间t2之后且在时间t3之前的某点(由特定实施方案确定)处,读出放大器将确定位线是否已耗散足够量。在t2与t3之间,BLCLAMP(B)上升以使读出放大器测量所评估的BL电压,且接着降低,如图10所描绘。在时间t3处,所描绘的信号将降低至Vss(或用于待机或恢复的另一值)。请注意,在其它实施例中,可改变一些信号的时序(例如,使施加至邻近者的信号移位)。
接下来,将相对于SGS(C)、选定BL(C)和BLCLAMP(C)来论述以读出放大器中的专用电容器的放电速率来测量存储器单元的传导电流的感测电路和存储器单元阵列的行为。在图10的时间t1处,SGD上升至Vdd(例如,大约3.5伏),非选定字线(WL_非选定)上升至Vread(例如,大约5.5伏),漏极侧邻近字线(WLn+1)上升至VreadX,选定字线WLn上升至用于读取操作的Vcgr(例如,图11的Vra、Vrb或Vrc)或用于检验操作的检验电平(例如,图11的Vva、Vvb或Vvc),且BLCLAMP(C)上升。在此情况中,读出放大器使位线电压保持恒定,而不管NAND串正在进行的操作,所以读出放大器在位线“箝位”于所述电压的情况下测量电流流动。因此,BLCLAMP(C)在t1处上升且从t1至t3不变。在时间t1之后且在时间t3之前的某点(由特定实施方案确定)处,读出放大器将确定读出放大器中的电容器是否已耗散足够量。在时间t3处,所描绘的信号将降低至Vss(或用于待机或恢复的另一值)。请注意,在其它实施例中,可改变一些信号的时序。
如上文所论述,从控制栅极测量到的非易失性存储器单元的浮动栅极(或其它电荷存储元件)的表观阈值电压的移位可能由于基于相邻浮动栅极(或其它相邻电荷存储元件)中所存储的电荷的电场的耦合而发生。所述问题最显著发生于已在不同时间处编程的若干组相邻存储器单元之间。为了解决此耦合,针对特定存储器单元的读取过程将向相邻存储器单元提供补偿,以便减小所述相邻存储器单元对所述特定存储器单元的耦合效应。一个实施例还包括在检验过程期间设置对于稍后向所述相邻存储器单元施加补偿的必要条件。在此实施例中,施加至WLn+1的过驱动/旁路电压(或称为VREAD)从典型值(例如)6伏下降至(例如)3伏。补偿将由以下项组成:在对WLn执行读取操作期间,施加较高电压(相较于在编程/检验操作的检验阶段期间所使用的电压)至WLn+1。换句话说,补偿由变化/差量组成:ΔVREAD={[VREAD(读取WLn期间的WLn+1)]-[VREAD(检验WLn期间的WLn+1)]}。在检验期间使用较低VREAD值的优点在于,其允许稍后在读取操作期间施加VREAD的标称值,同时维持所要求的ΔVREAD。如果在检验期间未使用小于VREAD的标称值的值,那么在读取期间将允许施加足够ΔVREAD的VREAD的必要值将为(例如)6+3=9V,这将成为过高的电压,因为如此高的VREAD电压导致读取干扰状况。图10中将用于稍后补偿的此设置的一个实例描绘为施加VreadX至漏极侧邻近字线,同时其它非选定字线接收Vread。在许多现有技术装置中,所有非选定字线将接收Vread。在图10的实施例中,除漏极侧邻近字线外的所有非选定字线均接收Vread;同时漏极侧邻近字线接收VreadX。
对于从源极侧向漏极侧编程存储器单元的检验过程,保证(在一个实施例中)当写入至字线WLn时,字线WLn+1上的所有存储器单元均处于经擦除状态(例如,状态E)(请注意:对于全序列来说确实如此,且对于LM模式则并非如此。请参阅以上解释)。字线WLn+1将接收电压电平VreadX,其中VreadX=Vread4(在下文论述)。在一个实施例中,Vread4等于3.7伏。在另一实施例中,VreadX=Vread。在其它实施例中,也可使用其它值。在不同实施方案中,可基于装置表征、实验和/或模拟来确定Vread4或VreadX的不同值。
在成功编程过程的末端处,存储器单元的阈值电压应在经编程存储器单元的一个或一个以上阈值电压分布内或在经擦除存储器单元的阈值电压分布内(根据恰当情况)。图11说明当每一存储器单元存储两位数据时存储器单元阵列的示范性阈值电压分布。图11展示经擦除存储器单元的第一阈值电压分布E。还描绘经编程存储器单元的三种阈值电压分布A、B和C。在一个实施例中,E分布中的阈值电压是负值,A、B和C分布中的阈值电压是正值。
图11的每一相异阈值电压范围对应于用于所述组数据位的预定值。在编程至存储器单元中的数据与所述单元的阈值电压电平之间的具体关系取决于所述单元所采用的数据编码方案。举例来说,第6,222,762号美国专利和2003年6月13日申请的题为“跟踪存储器系统的单元(Tracking Cells For A Memory System)”的第10/461,244号美国专利申请案(所述两者的全文均以引用的方式并入本文中)描述用于多状态快闪存储器单元的各种数据编码方案。在一个实施例中,使用格雷码指派将数据值指派给所述阈值电压范围,使得如果浮动栅极的阈值电压错误地移位至其邻近物理状态,则只有一个位将受到影响。一个实例指派“11”给阈值电压范围E(状态E),指派“10”给阈值电压范围A(状态A),指派“00”给阈值电压范围B(状态B),且指派“01”给阈值电压范围C(状态C)。然而,在其它实施例中,不使用格雷码。虽然图11展示四种状态,但是也可配合其它多状态结构(包括具有四种以上或四种以下状态的多状态结构)使用本发明。
图11还展示用于从存储器单元读取数据的三个读取参考电压Vra、Vrb和Vrc。通过测试给定存储器单元的阈值电压高于还是低于Vra、Vrb和Vrc,系统可确定所述存储器单元所处的状态。
图11还展示三个检验参考电压Vva、Vvb和Vvc。当将存储器单元编程至状态A时,系统将测试那些存储器单元是否具有大于或等于Vva的阈值电压。当将存储器单元编程至状态B时,系统将测试存储器单元是否具有大于或等于Vvb的阈值电压。当将存储器单元编程至状态C时,系统将确定存储器单元是否具有大于或等于Vvc的阈值电压。
在一个实施例中,称为全序列编程,可将存储器单元从擦除状态E直接编程至所述经编程状态A、B或C中的任一者。举例来说,可首先擦除待编程的一群体存储器单元,使得所述群体中的所有存储器单元均处于经擦除状态E。接着,通过使用图9所描绘的控制栅极电压序列,将使用图18所描绘的过程来将存储器单元直接编程至状态A、B或C。在一些存储器单元正被从状态E编程至状态A的同时,其它存储器单元正被从状态E编程至状态B和/或从状态E编程至状态C。当在WLn上从状态E编程至状态C时,在WLn-1下的相邻浮动栅极的寄生耦合量最大,因为与当从状态E编程至状态A或从状态E编程至状态B时的电压变化相比,在WLn下的浮动栅极上的电荷量变化最大。当从状态E编程至状态B时,至相邻浮动栅极的耦合量减小,但仍然相当大。当从状态E编程至状态A时,耦合量更进一步减小。因此,随后读取WLn-1的每一状态所需的校正量将依据WLn上的相邻存储器单元的状态而变化。
图12说明编程多状态存储器单元的两进程技术的实例,所述多状态存储器单元存储两个不同页(下部页和上部页)的数据。描绘四种状态:状态E(11)、状态A(10)、状态B(00)和状态C(01)。对于状态E,所述两个页均存储“1”。对于状态A,下部页存储“0”且上部页存储“1”。对于状态B,所述两个页均存储“0”。对于状态C,下部页存储“1”且上部页存储“0”。请注意,虽然已将特定位模式指派给每一状态,但是也可指派不同的位模式。
在第一编程进程中,根据待编程至下部逻辑页中的位来设定单元的阈值电压电平。如果所述位是逻辑“1”,则阈值电压不改变,因为其由于早先已被擦除而处于适当状态。然而,如果待编程的位是逻辑“0”,则单元的阈值电平增加至状态A,如箭头530所示。这使第一编程进程终止。
在第二编程进程中,根据正被编程至上部逻辑页中的位来设定单元的阈值电压电平。如果所述上部逻辑页位将存储逻辑“1”,则不发生任何编程,因为所述单元依据下部页位的编程而处于状态E或A中的一者,所述两种状态均携载上部页位“1”。如果上部页位将为逻辑“0”,则使阈值电压移位。如果第一进程导致所述单元保持在经擦除状态E,则在第二阶段中编程所述单元,使得阈值电压增加至处于状态C内,如箭头534所描绘。如果第一编程进程导致所述单元已被编程为状态A,则在第二进程中进一步编程所述存储器单元,使得阈值电压增加至处于状态B内,如箭头532所描绘。第二进程的结果是将所述单元编程为经指定以针对上部页存储逻辑“0”的状态,而不改变下部页的数据。在图11和图12两者中,至相邻字线上的浮动栅极的耦合量取决于最终状态。
在一个实施例中,可将系统设置为如果写入足以填满整页的数据,则执行全序列写入。如果未针对全页写入足够数据,则编程过程可用所接收的数据来编程下部页。当接收到后续数据时,系统将接着编程上部页。在又一实施例中,系统可开始以编程下部页的模式进行写入,且如果随后接收到足以填满整个(或大部分)字线的存储器单元的数据,则转换至全序列编程模式。此实施例的更多细节请参阅发明人塞吉·阿纳托利耶维奇·戈罗别茨(Sergy Anatolievich Gorobets)和李严(Yan Li)于2004年12月14日申请的标题为“使用早期数据对非易失性存储器进行管线式编程(Pipelined Programming ofNon-Volatile Memories Using Early Data)”的第11/013,125号美国专利申请案,所述专利申请案的全文以引用的方式并入本文中。
图13A至C揭示另一种用于编程非易失性存储器的过程,其通过以下方式减小浮动栅极至浮动栅极耦合的效应:对于任何特定存储器单元,继针对先前页写入至相邻存储器单元之后,相对于特定页写入至所述特定存储器单元。在图13A至C所教示的过程的实施方案的一个实例中,非易失性存储器单元使用四种数据状态来每存储器单元存储两位数据。举例来说,假设状态E是经擦除状态,且状态A、B和C是经编程状态。状态E存储数据11。状态A存储数据01。状态B存储数据10。状态C存储数据00。这是非格雷编码的实例,因为所述两个位在相邻状态A与B之间改变。也可使用其它的将数据编程至物理数据状态的方法。每一存储器单元存储两页数据。出于参考用途,这些数据页将称为上部页和下部页;然而,也可给予它们其它称号。参看图13A至C的过程的状态A,上部页存储位0且下部页存储位1。参看状态B,上部页存储位1且下部页存储位0。参看状态C,所述两个页均存储位数据0。
图13A至C的编程过程是两步骤式过程。在第一步骤中,编程下部页。如果下部页将保持数据1,则存储器单元状态保持在状态E。如果数据将被编程为0,则使存储器单元的电压阈值上升,使得将所述存储器单元编程至状态B′。因此,图13A展示将存储器单元从状态E编程至状态B′。图13A中所描绘的状态B′是中间状态B;因此,检验点被描绘为Vvb′,其低于Vvb。
在一个实施例中,在将存储器单元从状态E编程为状态B′之后,接着将相对于其下部页来编程NAND串中的邻近存储器单元(WLn+1)。举例来说,回头参看图2,在编程存储器单元106的下部页之后,将编程存储器单元104的下部页。在编程存储器单元104之后,如果存储器单元104的阈值电压从状态E上升至状态B′,则浮动栅极至浮动栅极耦合效应将使存储器单元106的表观阈值电压上升。这将具有使状态B′的阈值电压分布加宽至描绘为图13B的阈值电压分布550的分布的效应。当编程上部页时,将补救阈值电压分布的此表观加宽。
图13C描绘编程上部页的过程。如果存储器单元处于经擦除状态E且上部页将保持在1,则存储器单元将保持在状态E。如果存储器单元处于状态E且其上部页数据将编程至0,则存储器单元的阈值电压将上升,使得存储器单元处于状态A。如果存储器单元处于中间阈值电压分布550中且上部页数据将保持在1,则存储器单元将被编程至最终状态B。如果存储器单元处于中间阈值电压分布550中且上部页数据将变成数据0,则存储器单元的阈值电压将上升,使得存储器单元处于状态C。图13A至C所描绘的过程减小浮动栅极至浮动栅极耦合效应,因为只有邻近存储器单元的上部页编程将影响给定存储器单元的表观阈值电压。替代性状态编码的实例是当上部页数据为1时,从分布550移动至状态C,且当上部页数据为0时,移动至状态B。
虽然图13A至C相对于四种数据状态和两页数据提供实例,但是图13A至C所教示的概念可应用于具有多于或少于四种数据状态和不同于两页的其它实施方案。
图14A至F描绘各种表格,其描述针对图11、12和13A至C所述的方法根据各种实施例的编程次序。
图14A是描述针对所有位线编程沿着位线编程存储器单元的次序的表格。在此实施例中,具有四个字线的区块包括四个页(页0至3)。首先写入页0,接着写入页1,接着写入页2,且接着写入页3。页0中的数据包括连接至字线WL0的所有存储器单元所存储的数据。页1中的数据包括连接至字线WL1的存储器单元所存储的数据。页2中的数据包括连接至字线WL2的存储器单元所存储的数据。页3中的数据包括连接至字线WL3的存储器单元所存储的数据。图14A的实施例采用全序列编程,如上文相对于图11所描述。
图14B描绘当使用上文相对于图11所描述的全序列编程方法时在奇数/偶数编程期间的编程次序。在此实施例中,具有四个字线的区块包括八页数据。连接至字线WL0的偶数位线上的存储器单元存储用于页0的数据。连接至字线WL0的奇数位线上的存储器单元存储用于页1的数据。连接至字线WL1的偶数位线上的存储器单元存储用于页2的数据。连接至字线WL1的奇数位线上的存储器单元存储用于页3的数据。连接至字线WL2的偶数位线上的存储器单元存储用于页4的数据。连接至字线WL2的奇数位线上的存储器单元存储用于页5的数据。连接至字线WL3的偶数位线上的存储器单元存储用于页6的数据。连接至字线WL3的奇数位线上的存储器单元存储用于页7的数据。根据页数以数字次序(从页0至页7)来编程数据。
图14C的表格描述针对执行所有位线编程的存储器阵列根据图12的两阶段编程过程的编程次序。将具有四个字线的区块描绘为包括八个页。对于连接至字线WL0的存储器单元,下部页数据形成页0且上部页数据形成页1。对于连接至字线WL1的存储器单元,下部页数据形成页2且上部页数据形成页3。对于连接至字线WL2的存储器单元,下部页数据形成页4且上部页数据形成页5。对于连接至字线WL3的存储器单元,下部页数据形成页6且上部页数据形成页7。根据页数以数字次序(从页0至页7)来编程数据。
图14D提供描述针对执行奇数/偶数编程的存储器结构编程图12的两阶段编程过程的次序的表格。具有四个字线的区块包括16个页,其中根据页数以数字次序(从页0至页15)编程所述页。对于连接至字线WL0的偶数位线上的存储器单元,下部页数据形成页0且上部页数据形成页2。对于连接至字线WL0的奇数位线上的存储器单元,下部页数据形成页1且上部页数据形成页3。对于连接至字线WL1的偶数位线上的存储器单元,下部页形成页4且上部页形成页6。对于连接至字线WL1的奇数位线上的存储器单元,下部页形成页5且上部页形成页7。对于连接至字线WL2的偶数位线上的存储器单元,下部页形成页8且上部页形成页10。对于连接至字线WL2的奇数位线上的存储器单元,下部页形成页9且上部页形成页11。对于连接至字线WL3的偶数位线上的存储器单元,下部页形成页12且上部页形成页14。对于连接至字线WL3的奇数位线上的存储器单元,下部页形成页13且上部页形成页15。替代地,如在图14E中,先编程偶数位线的每一字线下的下部页和上部页两者,其后才编程用于同一字线的奇数位线的两个页。
图14F和14G描述用于利用图13A至C的编程方法来编程存储器单元的次序。图14F关于执行所有位线编程的结构。对于连接至字线WL0的存储器单元,下部页形成页0且上部页形成页2。对于连接至字线WL1的存储器单元,下部页形成页1且上部页形成页4。对于连接至字线WL2的存储器单元,下部页形成页3且上部页形成页6。对于连接至字线WL3的存储器单元,下部页形成页5且上部页形成页7。根据页数以数字次序(从页0至页7)来编程存储器单元。
图14F的表格关于执行奇数/偶数编程的结构。对于连接至字线WL0的偶数位线上的存储器单元,下部页形成页0且上部页形成页4。对于连接至字线WL0的奇数位线上的存储器单元,下部页形成页1且上部页形成页5。对于连接至字线WL1的偶数位线上的存储器单元,下部页形成页2且上部页形成页8。对于连接至字线WL1的奇数位线上的存储器单元,下部页形成页3且上部页形成页9。对于连接至字线WL2的偶数位线上的存储器单元,下部页形成页6且上部页形成页12。对于连接至字线WL2的奇数位线上的存储器单元,下部页形成页7且上部页形成页13。对于连接至字线WL3的偶数位线上的存储器单元,下部页形成页10且上部页形成页14。对于连接至字线WL3的奇数位线上的存储器单元,下部页形成页11且上部页形成页15。根据页数以数字次序(从页0至页15)来编程存储器单元。最后,具有偶数和奇数位线两者的每一结构均可以下列方式实施:使所有偶数位线在物理上一起位于(例如)芯片左侧,且使所有奇数位线一起位于(例如)芯片右侧。
请注意,在图14A至G的实施例中,沿着NAND串从源极侧向漏极侧编程存储器单元。而且,表格仅描绘具有四个字线的实施例。表格内所描述的各种方法可应用于具有四个以上或以下字线的系统。使用奇数/偶数编程的结构的实例请参阅第6,522,580号美国专利和第6,643,188号美国专利,所述两份专利的全文均以引用的方式并入本文中。关于使用所有位线编程的结构的更多信息请参阅下列美国专利文献,所述文献的全文均以引用的方式并入本文中:第US2004/0057283号美国专利申请公开案;第US2004/0060031号美国专利申请公开案;第US2004/0057285号美国专利申请公开案;第US2004/0057287号美国专利申请公开案;第US2004/0057318号美国专利申请公开案;第6,771,536号美国专利;第6,781,877号美国专利。
一般来说,一起编程所有位线的结构将一起从所有位线读取数据。同样地,分开编程奇数和偶数位线的结构将通常分开读取奇数和偶数位线。然而,此些限制并不是所要求的。本文描述的用于读取数据的技术可配合所有位线编程或奇数/偶数位线编程来使用。本文描述的用于读取数据的技术也可用于图17至19的任何编程方案,以及其它编程方案。
图15是描述用于从非易失性存储器单元读取数据的一个实施例的流程图。图15提供系统级别的读取过程。在步骤598中,接收对读取数据的请求。在步骤600中,响应于所述对读取数据的请求(步骤598),针对特定页执行读取操作。在一个实施例中,当编程用于一页的数据时,系统还将创建用于错误校正码(ECC)的额外位,且连同所述页数据一起写入那些ECC位。ECC技术是此项技术中众所周知的。所使用的ECC过程可包括此项技术已知的任何适合ECC过程。当从一页读取数据时,将使用ECC位来确定所述数据中是否存在任何错误(步骤602)。可由控制器、状态机或在系统中的其它位置处执行ECC过程。如果所述数据中没有错误,则在步骤604处将所述数据报告给用户。举例来说,将经由数据I/O线路320将数据传送至控制器或主机。如果在步骤602处发现错误,则确定所述错误是否可校正(步骤606)。所述错误可能是归因于浮动栅极至浮动栅极耦合效应或其它原因。各种ECC方法具有校正一组数据中的预定数目错误的能力。如果ECC过程可校正所述数据,则在步骤608中使用ECC过程来校正所述数据,且在步骤610中将经校正的所述数据报告给用户。如果不可通过ECC过程来校正所述数据,则在步骤620中执行数据恢复过程。在一些实施例中,将在步骤620之后执行ECC过程。下文中描述关于数据恢复过程的更多细节。在恢复所述数据之后,在步骤622处报告所述数据。请注意,图15的过程可用于使用所有位线编程或奇数/偶数位线编程来编程的数据。
图16是描述用于执行针对页的读取操作的过程(请参阅图15的步骤600)的一个实施例的流程图。可针对页执行图16的过程,其中所述页涵盖区块的所有位线、区块的仅奇数位线、区块的仅偶数位线或区块的其它位线子组。在步骤640中,施加读取参考电压Vra至与所述页相关联的适当字线。在步骤642中,感测与所述页相关联的位线,以基于施加Vra至所寻址存储器单元的控制栅极来确定所寻址的存储器单元接通还是不接通。传导的位线指示存储器单元已被接通;因此,那些存储器单元的阈值电压低于Vra(例如,在状态E中)。在步骤644中,针对那些位线而将位线的感测结果存储在适当锁存器中。在步骤646中,施加读取参考电压Vrb至与正被读取的页相关联的字线。在步骤648中,感测位线,如上文所述。在步骤650中,针对所述位线而将结果存储在适当锁存器中。在步骤652中,施加读取参考电压Vrc至与所述页相关联的字线。在步骤654中,感测位线以确定哪些存储器单元接通,如上文所述。在步骤656中,针对所述位线而将来自感测步骤的结果存储在适当锁存器中。在步骤658中,确定每一位线的数据值。举例来说,如果存储器单元以Vra传导,则所述存储器单元处于状态E。如果存储器单元以Vrb和Vrc(而非Vra)传导,则所述存储器单元处于状态A。如果存储器单元以Vrc(而非Vra和Vrb)传导,则所述存储器单元处于状态B。如果存储器单元未以Vra、Vrb或Vrc传导,则所述存储器单元处于状态C。在一个实施例中,由处理器392确定数据值。在步骤660中,处理器392针对每一位线而将所确定的数据值存储在适当锁存器中。在其它实施例中,感测各种电平(Vra、Vrb和Vrc)可以不同次序发生。
步骤640至644包括以Vcgr=Vra且VreadX=Vread来执行图10所描绘的操作。步骤646至650包括以Vcgr=Vrb且VreadX=Vread来执行图10所描绘的操作。步骤652至656包括以Vcgr=Vrc且VreadX=Vread来执行图10所描绘的操作。因此,图16的过程的一个实施例不包括执行对浮动栅极至浮动栅极耦合的任何补偿。在另一实施例中,以VreadX=Vread4(或另一值)施加至漏极侧邻近WL(即,WLn+1)来执行步骤640、646和652。
图17包括描述用于恢复数据的过程(步骤620)的一个实施例的流程图。数据可包括归因于浮动栅极至浮动栅极耦合效应(或另一原因)的错误。图17的过程尝试读取所述数据,同时补偿浮动栅极至浮动栅极耦合效应(或另一错误原因)。所述补偿包括查看邻近字线,且确定邻近字线的编程已如何造成浮动栅极至浮动栅极耦合效应。举例来说,当读取字线WLn(例如,图2的WL2)上的数据时,过程还将读取字线WLn+1(例如,图2的WL3)的数据。如果字线WLn+1上的数据已造成WLn上的数据的表观变化,则读取过程将补偿所述非刻意的变化。
图17所描述的过程适用于上文相对于图11所描述的全序列编程,其中一个逻辑页的两个位存储在每一单元中且将一起读出并报告。如果邻近字线上的存储器单元处于状态E,则将没有浮动栅极至浮动栅极耦合效应。如果邻近字线上的存储器单元处于状态A,则将存在较小耦合效应。如果邻近字线上的存储器单元处于状态B,则将存在中等浮动栅极至浮动栅极耦合效应。如果邻近字线上的存储器单元处于状态C,则将存在较大浮动栅极至浮动栅极耦合效应。归因于邻近字线的确切耦合效应将因阵列实施方案而异且可通过特征化装置来确定。
图17的步骤670包括对邻近字线WLn+1执行读取操作。这包括对邻近字线执行图16的过程。举例来说,如果正在读取字线WL1中的页,则步骤670包括对字线WL2执行图16的过程。在步骤672中,将步骤670的结果存储在适当锁存器中。在一些实施例中,对WLn+1执行的读取操作导致确定WLn+1上所存储的实际数据。在其它实施例中,对WLn+1执行的读取操作导致确定WLn+1上的电荷电平,所述电荷电平可能精确反映或不能精确反映WLn+1上所存储的数据。
当目标旨在读取WLn上的数据时,可能不需要对WLn+1的读取进行ECC校正,因为错误读取的位最可能是位于分布结尾处的位,且将其误解为属于另一数据状态不会在确定用于读取WLn上的相应单元的所需补偿量的过程中造成重大错误。举例来说,当在未进行耦合补偿以作为WLn的读取过程的一部分的情况下读取WLn+1(图17的步骤670)时,WLn+1上原本希望编程至状态B的经稍微过度编程的单元(其随后在WLn+2的编程期间经历电容性耦合效应)现在可能被误读为处于状态C。此误读不是问题,原因如下:1)目标不是读取WLn+1上的数据;2)基于WLn+1上的单元的表观状态处于C状态来对WLn上的相应单元的读取所应用的校正实际上优于将基于WLn+1上的单元的正确读取(即,状态B)所具有的校正。这是因为将WLn+1上的单元误读为处于状态C(无论其是首先被过度编程还是随后从WLn+2单元耦合)的所有原因目前均起作用以引起WLn+1单元所引起且WLn单元所经历的较强耦合效应。面对WLn上的单元所经历的此较强耦合,可能实际上最好应用对应于正处于状态C(而非状态B)的WLn+1单元的校正。替代性实施例包括在图17的步骤670的读取期间,为读取电压加边限。此为步骤670的读取加边限将以对步骤670的读取进行耦合校正为目的来进行。但是,此实施例可能不如在步骤670的读取期间不进行耦合校正,如下文解释。
在步骤674中,针对所关注的字线WLn执行读取过程。这包括以VreadX=Vread1来执行图16的过程。在一个实施例中,Vreadl=Vread。因此,所有非选定字线请参阅图10的WL_非选定和WLn+1)均接收Vread。这提供了最大补偿,因为由现在读取操作期间WLn+1上所使用的Vread值与早先在编程/检验的检验阶段期间所使用的Vread值之间的差值确定补偿。补偿值compC可定义为如下:compC=Vreadl-Vreadp=5.5-3=2.5伏,其中Vreadp是编程/检验期间所使用的Vread值。对于具有邻近单元WLn+1已被确定(在步骤670中)为处于状态C的存储器单元的位线,将步骤674的结果存储在适当锁存器中。因此,使得漏极侧邻近者已通过从状态E编程至状态C而经历最高阈值电压变化的单元受到最大补偿CompC。请注意,这些漏极侧邻近者已在WLn的编程/检验期间处于状态E,但是现在处于状态C。在所有情况下必须予以补偿的是在WLn的写入时间与WLn的当前读取时间之间所经历的在WLn+1上的漏极侧邻近者的状态变化。对于漏极侧邻近者当前未被检测为处于状态C的其它位线,WLn的此读取的数据(在WLn+1上使用Vread1)将被忽视。
在步骤678中,对WLn执行读取过程。在所述读取过程期间,漏极侧邻近字线WLn+1将接收Vread2。也就是说,VreadX=Vread2,其中与Vreadl相比,Vread2在值上较接近在编程期间所使用的Vreadp。这产生适用于漏极侧邻近者现在处于状态B的单元的较小补偿量。补偿量的一个实例是compB=Vread2-Vreadp=4.9-3=1.9伏。因此,Vread2与Vreadp相差compB。在步骤680中,将针对具有邻近存储器单元(例如,WLn+1)处于状态B的存储器单元的位线而存储步骤678的结果。用于其它位线的数据将被忽视。
在步骤682中,对WLn执行读取过程。在所述读取过程期间,漏极侧邻近字线WLn+1将接收Vread3。也就是说,VreadX=Vread3,其中与Vread2相比,Vread3在值上较接近在编程期间所使用的Vreadp。这产生适用于漏极侧邻近者现在处于状态A的单元的更小补偿量。补偿量的一个实例是compA=Vread3-Vreadp=4.3-3=1.3伏。因此,Vread3与Vreadp相差compA。在步骤684中,将针对具有邻近存储器单元(例如,WLn+1)处于状态A的存储器单元的位线而存储步骤682的结果。用于其它位线的数据将被忽视。
在步骤686中,对WLn执行读取过程。在所述读取过程期间,漏极侧邻近字线WLn+1将接收Vread4。也就是说,VreadX=Vread4,其中Vread4在值上等于在编程期间所使用的Vreadp。这产生适用于漏极侧邻近者现在处于状态E(其在编程/检验时也是)的单元的无补偿量。此补偿量是compE=Vread4-Vreadp=3-3=0.0伏,邻近字线WLn+1将接收Vread4。也就是说,VreadX=Vread4=Vread。在步骤688中,将针对具有邻近存储器单元(例如,WLn+1)处于状态E的存储器单元的位线而存储步骤686的结果。用于其它位线的数据将被忽视。在图17的过程期间,邻近位线将接收四个电压;然而,正被读取的每一选定存储器单元将仅利用一个适当电压。
在不同的实施方案中,可基于装置表征、实验和/或模拟来确定Vreadl、Vread2、Vread3和Vread4的不同值。
在以上论述中,图17的过程执行作为图15的数据恢复步骤620的部分。在另一实施例中,可使用图17的过程作为响应于对读取数据的请求而执行的初始读取过程。举例来说,在图15的步骤598中接收到对读取数据的请求之后,系统将在步骤600中执行读取操作。在此实施例中,通过执行图17的过程来实施步骤600。使用图17的过程来实施步骤600的实施例可能不具有额外的数据恢复步骤620,所以如果错误是不可校正的,则系统将报告所述错误。
图18是指示可针对区块的所有字线(除待编程的最后一个字线以外)执行数据恢复过程(图17的方法)的流程图。举例来说,如果存在x+1个字线,则可针对字线WL0至WLx-1使用所述恢复过程。将不需要针对字线WLx(例如,最接近漏极的字线)执行所述恢复过程,因为所述字线不具有在其之后编程的将造成浮动栅极至浮动栅极耦合效应的邻近者。虽然图18展示针对所有字线循序地执行恢复过程的实施例,但在上文相对于图15所描述的一个实施例中,可在单独时间处且只有在存在不可校正的ECC错误时,对字线执行恢复过程。
相对于存储图11的一个逻辑页的两个位的全序列编程来论述上文所述的图16和17的方法。当对根据存储来自两个逻辑页的每一者的一个位的图12的两步骤过程所编程的数据进行读取时,可以稍微修改这些过程。举例来说,当执行标准读取操作(图15的步骤600)时,读取下部页将需要施加Vra和Vrc至存储器单元的控制栅极,且在那些读取点处进行感测以确定下部页的数据处于状态E/C(数据1)还是状态A/B(数据0)。因此,将通过针对下部页读取仅执行步骤640、642、644和步骤652至660来修改图16。对于执行上部页的读取,将使用读取比较点Vrb以确定上部页数据处于状态E/A(数据1)还是状态B/C(数据0)。因此,对于上部页读取,将修改图16的过程以仅执行步骤646、648、650、658和660。此外,当恢复数据(步骤620)时,过程将执行图19的方法以恢复用于下部页的数据,且执行图20的过程以恢复用于上部页的数据。
在图19的步骤730中,根据图16的方法对邻近字线WLn+1执行读取操作。在一些实施例中,对WLn+1执行的读取操作导致确定WLn+1上所存储的实际数据。在其它实施例中,对WLn+1执行的读取操作导致确定WLn+1上的电荷电平(或另一状况),其可能精确反映或可能不能精确反映WLn+1上所存储的数据。在步骤732中,将所述读取操作的结果存储在适当锁存器中。在步骤734中,针对所关注的字线WLn执行读取过程,其包括以施加Vra至WLn且VreadX=Vread4来执行图10的过程。在步骤736中,感测位线的数据。在步骤738中,将结果存储在适当锁存器中。在步骤734的另一实施例中,将以VreadX=Vreadl来执行读取过程。在一个实施例中,步骤734中的VreadX值应与检验过程期间所使用的值相同。
在步骤740中,施加读取参考电压Vrc至字线WLn,且针对所关注的字线WLn以VreadX=Vreadl来执行读取操作。在步骤742中,感测数据,如上文所述。在步骤744中,将针对与在状态C中存储数据的邻近单元相关联的位线而存储感测步骤742的结果。
在步骤746中,施加读取参考电压Vrc至字线WLn,且针对所关注的字线WLn以VreadX=Vread2用于WLn+1来执行读取操作。在步骤948中,将感测数据,如上文论述。在步骤950中,将针对与在状态B中存储数据的邻近单元相关联的位线而存储步骤948的结果。用于其它位线的数据将被丢弃。
在步骡752中,施加读取参考电压Vrc至字线WLn,且针对WLn以VreadX=Vread3用于WLn+1来执行读取操作。在步骤754中,将感测数据,如上文论述。在步骤756中,将针对与在状态A中存储数据的邻近单元相关联的位线而存储步骤754的结果。用于其它位线的数据将被丢弃。
在步骤758中,施加读取参考电压Vrc至字线WLn,且针对WLn以VreadX=Vread4用于WLn+1来执行读取操作。在步骤760中,将感测数据,如上文论述。在步骤762中,针对与在状态E中存储数据的邻近单元相关联的位线而存储步骤760的结果。用于其它位线的数据将被丢弃。
在步骤764中,处理器392将基于从感测步骤存储的数据来确定数据值。在步骤766中,将把从步骤764所确定的数据值存储在锁存器中,用于最终传送至正请求数据读取的用户。在另一实施例中,可在步骤762与764之间执行与状态A相关联的步骤734至738。还可使用用于执行图19的步骤的其它次序以及其它流程图的步骤。
请注意,在图19所描述的过程中,补偿仅应用于Vrc以便区别状态B与状态C。假设当以Vra进行读取时不需要补偿,因为擦除状态的通常负阈值虽然受到WLn+1影响,但充分地远离状态A,以致不需要校正。尽管这是对当代存储器的实践假设,但是在未来代存储器中可能未必如此,且相对于Vrc所描述的补偿过程可用于Vra。
当在步骤764中确定数据值时,如果存储器单元响应于Vra而传导,则下部页数据是“1”。如果存储器单元响应于Vra而未传导且响应于Vrc而未传导,则下部页数据也是“1”。如果存储器单元响应于Vra而未传导但响应于Vrc而传导,则下部页数据是“0”。
图20的过程用于读取或恢复上部页的数据。在步骤800中,使用图16的方法而对邻近字线WLn+1执行读取操作。在一些实施例中,对WLn+1执行的读取操作导致确定WLn+1上所存储的实际数据。在其它实施例中,对WLn+1执行的读取操作导致确定WLn+1上的电荷电平,其可能精确反映或不能精确反映WLn+1上所存储的数据。在步骤802中,针对每一位线而将步骤800的结果存储在适当锁存器中。
在步骤804中,施加读取参考电压Vrb至字线WLn,且针对WLn以VreadX=Vreadl用于WLn+1来执行读取操作。在步骤806中,将感测数据,如上文论述。在步骤808中,将针对与在状态C中存储数据的邻近单元相关联的位线而存储步骤806的结果。用于其它位线的数据将被丢弃。
在步骤810中,施加读取参考电压Vrb至字线WLn,且针对WLn以VreadX=Vread2用于WLn+1来执行读取操作。在步骤812中,将感测数据,如上文论述。在步骤814中,将针对与在状态B中存储数据的邻近单元相关联的位线而存储步骤812的结果。用于其它位线的数据将被丢弃。
在步骤816中,施加读取参考电压Vrb至字线WLn,且针对WLn以VreadX=Vread3用于WLn+1来执行读取操作。在步骤818中,将感测数据,如上文论述。在步骤820中,将针对与在状态A中存储数据的邻近单元相关联的位线而存储步骤818的结果。用于其它位线的数据将被丢弃。
在步骤822中,施加读取参考电压Vrb至字线WLn,且针对WLn以VreadX=Vread4用于WLn+1来执行读取操作。在步骤824中,将感测数据,如上文论述。在步骤826中,将针对与在状态E中存储数据的邻近单元相关联的位线而存储步骤824的结果。用于其它位线的数据将被丢弃。
在步骤828中,处理器392基于所存储的感测数据而确定数据值。如果存储器单元响应于Vrb而接通,则上部页数据是“1”。如果存储器单元响应于Vrb而未接通,则上部页数据是“0”。在步骤830中,将处理器392所确定的数据值存储在数据锁存器中,用于传送至用户。
在另一实施例中,并非使用图19和20的方法来恢复数据,而是可使用图19和20的方法来用于响应于对读取数据的请求而执行的初始数据读取。举例来说,在图15的步骤598中接收到对读取数据的请求之后,系统将在步骤600中执行读取操作。在此实施例中,通过执行图19和/或20的过程来实施步骤600。使用图19和/或20的过程来实施步骤600的实施例可能不具有额外的数据恢复步骤620,所以如果错误是不可校正的,则系统将报告所述错误。
图19和20用于读取使用图12的上部页和下部页过程所编程的数据。可使用图19和20的这两种方法来读取通过所有位线编程或奇数/偶数位线编程所编程的数据。当配合所有位线编程使用时,通常同时读取所有位线。当配合奇数/偶数位线编程使用时,通常在第一时间处同时读取偶数位线,且通常可能在不同时间处同时读取奇数位线。
图21至26描述用于读取根据与图13A至C相关联的方法所编程的数据的过程。可将图21的过程实施作为用于读取数据的整个过程,其是响应于对特定一页或一页以上(或其它群组)数据的读取请求而在使用ECC之前、与使用ECC分开和/或结合使用ECC来执行的。在其它实施例中,可将图21的过程执行作为图15的数据恢复步骤620的部分。当读取根据图13A至C的过程所编程的数据时,在编程所考虑的存储器单元的上部页时应校正来自由编程邻近单元的下部页引起的浮动栅极至浮动栅极耦合的任何扰乱。因此,当尝试补偿来自邻近单元的浮动栅极至浮动栅极耦合效应时,所述过程的一个实施例仅需要考虑由编程邻近单元的上部页引起的耦合效应。因此,在图21的步骤1060中,所述过程读取邻近字线的上部页数据。如果邻近字线的上部页尚未被编程(步骤1062),则可读取所考虑的页而不必补偿浮动栅极至浮动栅极耦合效应(步骤1064)。如果邻近字线的上部页已被编程(步骤1062),则在步骤1066中应使用对浮动栅极至浮动栅极耦合效应的某种补偿来读取所考虑的页。在一些实施例中,对邻近字线执行的读取操作导致确定所述邻近字线上的电荷电平,其可能精确反映或不能精确反映其上所存储的数据。而且,请注意,待读取的选定字线(即,WLn)本身可能仅具有下部页数据。这可在整个区块尚未被编程时发生。在此情形中,始终保证WLn+1上的单元仍然被擦除,且因此,WLn单元尚未遭受到耦合效应。这意味着不需要补偿。因而,上部页尚待编程的字线的下部页读取可照常进行而不需要任何补偿技术。
在一个实施例中,实施图13A至C的编程过程的存储器阵列将保留一组存储器单元以存储一个或一个以上旗标。举例来说,可使用一列存储器单元来存储指示相应行存储器单元的下部页是否已被编程的旗标,且可使用另一列存储器单元来存储指示相应行存储器单元的上部页是否已被编程的旗标。在一些实施例中,可使用冗余单元来存储旗标的拷贝。通过检查适当旗标,可确定邻近字线的上部页是否已被编程。关于此旗标和编程过程的更多细节可参阅柴田(Shibata)等人的题为“用于存储多值数据的半导体存储器装置(Semiconductor Memory Device For Storing Multi-Valued Data)”的第6,657,891号美国专利,所述专利的全文以引用的方式并入本文中。
图22描述用于读取邻近字线(例如漏极侧邻近者)的上部页数据的过程(图21的步骤1060)的一个实施例。在步骤1100中,施加读取参考电压Vrc至与正被读取的页相关联的字线。在步骤1102中,感测位线,如上文所述。在步骤1104中,将步骤1102的结果存储在适当锁存器中。在步骤1106中,系统检查指示与正被读取的页相关联的上部页编程的旗标。在一个实施例中,存储旗标的存储器单元将在所述旗标未被设定的情况下以状态E存储数据且在所述旗标被设定的情况下以状态C存储数据。因此,当在步骤1102处感测所述特定存储器单元时,如果所述存储器单元传导(接通),则所述存储器单元不是以状态C存储数据且所述旗标未被设定。如果所述存储器单元不传导,则在步骤1106中假设所述存储器单元正指示上部页己被编程。
在另一实施例中,可将旗标存储在字节中。并非以状态C存储所有位,字节将包括表示所述旗标且状态机312已知的唯一8位代码,使得所述8位代码具有下列状态的位:至少一个位处于状态E;至少一个位处于状态A;至少一个位处于状态B;和至少一个位处于状态C。如果上部页尚未被编程,则存储器单元的字节将全部处于状态E。如果上部页已被编程,则存储器单元的字节将存储所述代码。在一个实施例中,通过检查存储所述代码的字节的任何存储器单元是否未响应于Vrc而接通来执行步骤1106。在另一实施例中,步骤1106包括寻址和读取存储所述旗标的存储器单元的字节,且将数据发送至状态机,所述状态机将检验存储在存储器单元中的代码是否匹配所述状态机所预期的代码。如果是的话,则所述状态机推断出上部页已被编程。
如果所述旗标尚未被设定(步骤1108),则图22的过程以推断出上部页尚未被编程而终止。如果所述旗标已被设定(步骤1108),则假设上部页已被编程,且在步骤1120处,施加电压Vrb至与正被读取的页相关联的字线。在步骤1122中,感测位线,如上文论述。在步骤1124中,将步骤1122的结果存储在适当锁存器中。在步骤1126中,施加电压Vra至与正被读取的页相关联的字线。在步骤1128中,感测位线。在步骤1130中,将步骤1128的结果存储在适当锁存器中。在步骤1132中,处理器392基于三个感测步骤1102、1122和1128的结果而确定正被读取的存储器单元的每一者所存储的数据值。在步骤1134处,将在步骤1132中所确定的数据值存储在数据锁存器中,用于最终传送至用户。在步骤1132中,处理器392依据所选择的具体状态编码而使用众所周知的简单逻辑技术来确定上部页和下部页数据的值。举例来说,对于图13所描述的编码,下部页数据是Vrb*(当以Vrb进行读取时所存储的值的补数),且上部页数据是Vra*OR(Vrb AND Vrc*)。
在一个实施例中,图22的过程包括施加Vread至漏极侧邻近字线。因此,对于图22的过程,VreadX=Vread。在图22的过程的另一实施例中,VreadX=Vread4。
图23是描述在系统不需要补偿来自邻近字线的浮动栅极至浮动栅极耦合时用于读取所考虑字线的数据的过程(请参阅图21的步骤1064)的一个实施例的流程图。在步骤1150中,确定对与所考虑的字线相关联的上部页还是下部页进行读取。如果对下部页进行读取,则在步骤1152中,施加电压Vrb至与正被读取的页相关联的字线。在步骤1154中,感测位线。在步骤1156中,将感测步骤1154的结果存储在适当锁存器中。在步骤1158中,检查旗标以确定所述页是否含有上部页数据。如果没有任何旗标,则任何存在的数据将处于中间状态且所使用的Vrb是不正确的比较电压,并且过程在步骤1160处继续。在步骤1160中施加Vra至字线,在步骤1162中重新感测位线,且在步骤1164中存储结果。在步骤1166中(在步骤1164之后,或如果所述旗标已设定,则在步骤1158之后),处理器392确定待存储的数据值。在一个实施例中,当读取下部页时,如果存储器单元响应于正施加至字线的Vrb(或Vra)而接通,则下部页数据是“1”;否则,下部页数据是“0”。
如果确定页地址对应于上部页(步骤1150),则在步骤1170处执行上部页读取过程。在一个实施例中,步骤1170的上部页读取过程包括图22所描述的相同方法,其包括读取所述旗标和所有三种状态,因为未经写入的上部页可经寻址以用于读取,或另一原因。
在一个实施例中,图23的过程包括施加Vread至漏极侧邻近字线。因此,对于图23的过程,VreadX=Vread。在图22的过程的另一实施例中,VreadX=Vread4。
图24描绘描述用于在补偿浮动栅极至浮动栅极耦合效应的同时读取数据的过程(请参阅图21的步骤1066)的一个实施例的流程图。在图24的步骤1200中,系统确定是否使用对浮动栅极至浮动栅极耦合的补偿。这是针对每一位线分开执行的。适当的处理器392将基于来自邻近字线的数据来确定哪些位线需要使用补偿。如果邻近字线处于状态E或B(或具有表观指示状态E或B的电荷),则正被读取的特定字线不需要补偿浮动栅极至浮动栅极耦合效应。假设如果其处于状态E,则其尚未作用于任何耦合,因为自从当前字线被写入以来阈值尚未移动。如果其处于状态B,则其从B′转变而来,且从B′至B的移动是小幅的且可忽略。在另一实施例中,可通过施加相称较小的AVREAD来补偿此小幅移动。
在一个实施例中,可与步骤1060同时执行步骤1200的过程。举例来说,图25提供解释用以执行确定是否对特定位线使用偏移量的步骤的图表。第一步骤是在字线上使用Vra来执行读取过程。第二步骤是使用Vrb来执行读取。当以Vra进行读取时,如果存储器单元处于状态E,则锁存器存储“1”,且如果存储器单元处于状态A、B或C,则锁存器存储“0”。当以Vrb进行读取时,锁存器将针对状态E和A而存储“1”,且针对状态B和C而存储“0”。图25的第三步骤包括对来自第二步骤的经反转结果与来自步骤1的结果执行“异或”运算。在第四步骤中,在字线处使用Vrc来执行读取。锁存器针对状态E、A和B而存储“1”,且针对状态C而存储“0”。在第五步骤中,对步骤4与步骤3的结果执行逻辑“与”运算。请注意,步骤1、2和4可作为图22的部分来执行。可通过专用硬件或通过处理器392来执行图25的步骤3和5。将步骤5的结果存储在锁存器中,其中如果不需要补偿,则存储“1”,且如果需要补偿,则存储“0”。因此,对具有在WLn+1上处于A或C状态的邻近存储器单元的在WLn上被读取的那些单元需要进行补偿。与存储来自WLn+1的全部数据从而需要两个或两个以上锁存器的一些先前方法相对比,此途径仅需要一个锁存器来确定是否要校正WLn。
回头参看图24的步骤1202,确定正被读取的页是上部页还是下部页。如果正被读取的页是下部页,则在步骤1204中的读取过程期间,施加Vrb至与正被读取的页相关联的字线WLn且施加Vread4至漏极侧邻近字线WLn+1。请注意,对于图13中所描述的状态编码,以Vrb进行读取足以确定下部页数据。在步骤1208中,将步骤1206的结果存储在与位线相关联的适当锁存器中。在步骤1210中,在读取过程期间将施加Vrb至用于正被读取的页的字线WLn且施加Vread3至漏极侧邻近字线WLn+1(例如,请参阅图10)。在步骤1212中,感测位线。在步骤1214中,针对在步骤1200处经确定将使用补偿的位线,使用步骤1212的感测结果来覆写在步骤1208中存储的结果。如果确定特定位线不必使用补偿,则不存储来自步骤1212的数据。在步骤1216中,处理器392将确定下部页的数据是1还是0。如果存储器单元响应于Vrb而接通,则下部页数据是“1”;否则,下部页数据是“0”。在步骤1218处,将下部页数据存储在适当锁存器中,用于传送至用户。
如果在步骤1202处确定正被读取的页是上部页,则在步骤1220处执行上部页校正过程。图26提供描述上部页校正过程的流程图。在图26的步骤1250中,施加读取参考电压Vrc至与正被读取的页相关联的字线且施加Vread4至漏极侧邻近字线WLn+1作为读取过程的部分。在步骤1252中,感测位线。在步骤1254中,将感测步骤的结果存储在适当锁存器中。在步骤1256中,施加Vrc至与正被读取的页相关联的字线且施加Vread3至漏极侧邻近字线WLn+1作为读取过程的部分。在步骤1258中,感测位线。在步骤1260中,针对需要补偿的任何位线(请参阅步骤1200),使用感测步骤1258的结果来覆写在步骤1254中存储的结果。
在步骤1270处,在读取过程期间施加Vrb至字线且施加Vread4至漏极侧邻近字线WLn+1。在步骤1272中,感测位线。在步骤1274中,存储感测步骤1272的结果。在步骤1276中,在读取过程期间施加Vrb至与正被读取的页相关联的字线且施加Vread3至漏极侧邻近字线WLn+1。在步骤1278中,感测位线。在步骤1280中,针对需要补偿的那些位线(请参阅步骤1200)而使用步骤1278的结果来覆写在步骤1274处所存储的结果。
在步骤1282中,施加Vra至与正被读取的页相关联的字线且施加Vread4至漏极侧邻近字线WLn+1作为读取过程的部分。在步骤1284中,感测位线。在步骤1286中,将感测步骤1284的结果存储在适当锁存器中。在步骤1288中,施加Vra至与正被读取的页相关联的字线且施加Vread3至漏极侧邻近字线WLn+1作为读取过程的部分。在步骤1290中,感测位线。在步骤1292中,针对需要补偿的那些位线(请参阅步骤1200)而使用步骤1290的结果来覆写在步骤1286中所存储的结果。在步骤1294中,处理器392以与先前描述的此项技术中已知的另一方法相同的方式来确定数据值。在步骤1296中,将处理器392所确定的数据值存储在适当数据锁存器中,用于传送至用户。在其它实施例中,可改变读取次序(Vrc、Vrb、Vra)。
在上文相对于图21的论述中,论述了涉及读取一页数据的实例。很有可能(但并非必要)对读取数据的请求将需要读取多页数据。在一个实施例中,为了加速读取多页数据的过程,将对读取过程进行管线式处理,使得状态机将在用户正传送出前页数据的同时执行下一页感测。在此实施方案中,旗标取出过程可能中断管线式读取过程。为了避免此中断,一个实施例预期当读取给定页时读取所述页的旗标,且使用线“或”检测过程来检查所述旗标(而非读取所述旗标并将其发送至状态机)。举例来说,在图21的步骤1060期间(读取邻近字线),所述过程首先使用Vrc作为参考电压来读取数据。此刻,如果线“或”线路指示每一状态存储数据“1”,则上部页尚未被编程;因此,不需要补偿,且系统将在不补偿浮动栅极至浮动栅极耦合的情况下进行读取(步骤1064)。如果旗标是包括处于每一状态的数据的单字节代码,则如果所述旗标已设定,那么至少旗标存储器单元将具有处于状态C的数据。如果线“或”线路指示任何存储器单元均不具有处于状态C的数据,则状态机推断出所述旗标尚未被设定;因此,邻近字线的上部页尚未被编程,且不需要对浮动栅极耦合进行补偿。关于执行管线式读取的更多信息可参阅发明人陈键(Jian Chen)于2005年4月5日申请的题为“非易失性存储器的读取操作期间的耦合补偿(Compensating for Coupling During Read Operations of Non-VolatileMemory)”的第11/099,133号美国专利申请案,所述申请案的全文以引用的方式并入本文中。
上文所述的技术有助于抵销浮动栅极至浮动栅极耦合的效应。图27以图形方式解释浮动栅极至浮动栅极耦合的概念。图27描绘在同一NAND串上的邻近浮动栅极1302和1304。浮动栅极1302和1304位于具有源极/漏极区1308、1310和1312的NAND沟道/衬底1306上方。在浮动栅极1302上方是连接至字线WLn且作为字线WLn的部分的控制栅极1314。在浮动栅极1304上方是连接至字线WLn+1且作为字线WLn+1的部分的控制栅极1316。虽然浮动栅极1302将很可能遭受到来自多个其它浮动栅极的耦合,但是为了简化起见,图27仅展示来自一个邻近存储器单元的效应。具体地说,图27展示从邻近者提供至浮动栅极1302的三个耦合分量:r1、r2和Cr。分量r1是邻近浮动栅极(1302与1304)之间的耦合率,且计算为邻近浮动栅极的电容除以浮动栅极1302至其周围的所有其它电极的所有电容性耦合的总和。分量r2是浮动栅极1302与漏极侧邻近控制栅极1316之间的耦合率,且计算为浮动栅极1302与控制栅极1316的电容除以浮动栅极1302至其周围的所有其它电极的所有电容性耦合的总和。分量Cr是控制栅极耦合率,且计算为浮动栅极1304与其相应控制栅极1316之间的电容除以浮动栅极1302至其周围的所有其它电极的所有电容性耦合的总和。
在一个实施例中,可按如下方式来计算所需的补偿量ΔVread:
其中ΔVTn+1是在WLn的编程/检验时间与当前时间之间漏极侧邻近存储器单元的阈值电压变化。ΔVTn+1和r1是字线至字线寄生耦合效应的根本原因,所述寄生耦合效应通过本发明方法而减轻。ΔVread是为了对付此效应而所需的补偿。
通过利用在邻近浮动栅极之间的相同寄生电容以及在浮动栅极与邻近控制栅极之间的电容,可实现本文所述的耦合补偿。由于控制栅极/浮动栅极堆叠通常在一个步骤中蚀刻,所以补偿跟踪存储器单元之间的间距变化。因此,当两个邻近者相距越远时,耦合越小,且对于此效应的所需补偿也将越小。当两个邻近者越接近时,耦合越大,且补偿也越大。这构成按比例的补偿。
上文所述的补偿还减小了回蚀深度变化的效应。在一些装置中,控制栅极部分地包围浮动栅极。重叠量称为“回蚀”。回蚀深度的变化可影响耦合量。通过上文所述的补偿方案,补偿效应同样将随回蚀深度而变化。
由于减小浮动栅极至浮动栅极耦合效应的能力,可使阈值电压分布之间的边限较小,或存储器系统可较快地编程。
本发明方法的另一重要优点是,与通过改变施加至选定字线WLn的电压来实现补偿的某种现有技术相比,对于本发明来说,驱动WLn和/或WLn+1上的电压的数字到模拟转换器的分辨率不必如此精细。当对选定字线施加补偿时对补偿所需的改变必须比本发明精确得多,在本发明中所述改变通过寄生耦合而间接作用,且因此Vread的更粗略分辨率将转化为WLn边限电压的更精细等效分辨率。
已经出于说明和描述的目的而呈现前文对本发明的详细描述。其并不希望为详尽的或将本发明限于所揭示的确切形式。鉴于以上教示,能够作出许多修改和变化。选择所述实施例是为了最佳地解释本发明的原理和其实际应用,进而使得所属领域的其他技术人员能够以各种实施例且以适合所预期的特定使用的各种修改来最佳地利用本发明。希望本发明的范围由随附的权利要求书来界定。