CN101123118A - 用于电编程半导体存储单元的方法及电路 - Google Patents
用于电编程半导体存储单元的方法及电路 Download PDFInfo
- Publication number
- CN101123118A CN101123118A CNA2007101494278A CN200710149427A CN101123118A CN 101123118 A CN101123118 A CN 101123118A CN A2007101494278 A CNA2007101494278 A CN A2007101494278A CN 200710149427 A CN200710149427 A CN 200710149427A CN 101123118 A CN101123118 A CN 101123118A
- Authority
- CN
- China
- Prior art keywords
- storage unit
- programming
- latch
- programming pulse
- memory
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Classifications
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/04—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS
- G11C16/0483—Erasable programmable read-only memories electrically programmable using variable threshold transistors, e.g. FAMOS comprising cells having several storage transistors connected in series
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C11/00—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C11/56—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency
- G11C11/5621—Digital stores characterised by the use of particular electric or magnetic storage elements; Storage elements therefor using storage elements with more than two stable states represented by steps, e.g. of voltage, current, phase, frequency using charge storage in a floating gate
- G11C11/5628—Programming or writing circuits; Data input circuits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/34—Determination of programming status, e.g. threshold voltage, overprogramming or underprogramming, retention
- G11C16/3436—Arrangements for verifying correct programming or erasure
- G11C16/3454—Arrangements for verifying correct programming or for detecting overprogrammed cells
- G11C16/3459—Circuits or methods to verify correct programming of nonvolatile memory cells
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C2211/00—Indexing scheme relating to digital stores characterized by the use of particular electric or magnetic storage elements; Storage elements therefor
- G11C2211/56—Indexing scheme relating to G11C11/56 and sub-groups for features not covered by these groups
- G11C2211/562—Multilevel memory programming aspects
- G11C2211/5621—Multilevel programming verification
Landscapes
- Engineering & Computer Science (AREA)
- Microelectronics & Electronic Packaging (AREA)
- Computer Hardware Design (AREA)
- Read Only Memory (AREA)
Abstract
本发明涉及用于电编程半导体存储单元的方法及电路。一种电编程存储单元的方法,包括:给存储单元施加至少一个电编程脉冲;验证该存储单元达到目标编程状态;重复施加和验证动作直到确定该存储单元达到目标编程状态为止。在确定存储单元达到目标编程状态之后,对其施加至少一个另外的电编程脉冲,并在施加该另外的编程脉冲后至少再一次验证该存储单元。如果作为所述进一步验证的结果,没有确定该存储单元达到目标编程状态,则该方法提供给该存储单元施加又一编程脉冲。
Description
技术领域
本发明总体涉及固态存储器领域,尤其涉及半导体存储器,以及更具体地说涉及非易失性半导体存储器。特别地,本发明涉及电可编程的,即可电改变其信息内容的非易失性存储器类别。
背景技术
当需要或希望在即使不提供电源的情况下仍然保存存储在存储器件中的数据时,在多个应用中通常使用非易失性存储器件(简称为,非易失性存储器)。
在这类非易失性存储器中,电可改变存储器,尤其电可编程且可擦除存储器,例如快闪存储器,在要存储的数据不是不可变的,相反有时有必要存储新数据,或更新以前存储的数据(相反,用于微处理器的统一(consolidated)微代码是不希望被改变的数据实例)的那些应用中变得很流行。
诸如快闪存储器的大多数电可编程、非易失性存储器,具有由MOS晶体管形成或包括MOS晶体管的存储单元,所述MOS晶体管具有采用浮动栅电极形式的电荷存储元件,电荷可以注入其中以便改变MOS晶体管的阈值电压。
典型地,半导体存储器件包括多个半导体存储单元,其例如排列成行和列以便形成存储单元的矩阵(“存储器矩阵”)。
根据存储单元在存储器矩阵中的互连方式,可定义两类快闪存储器:一类具有所谓的NOR结构,或NOR快闪存储器,以及另一类具有所谓的NAND结构,简称为NAND快闪存储器。大约说来,在NOR结构中,相同矩阵列的存储单元并行连接相同的位线,而在NAND结构中,相同矩阵列的存储单元组串行互连以便形成相应串(string)(有时也称为“栈”);几个串彼此并行地连接到相同的位线。与NOR快闪存储器相比,NAND快闪存储器更紧凑(在存储器矩阵中需要低数量的电接触),且它们还更适合例如像数字图像的文档存储的应用。
在具有NOR结构的存储器中,读出放大器被提供用于感测即读取存储单元的内容,而编程加载电路用于编程,即将信息写入存储单元。典型地,八个或十六个读出放大器,以及一样多的编程加载电路被设置在存储器中,以能够并行感测和编程八个或十六个存储单元。
在具有NAND结构的存储器中,理想地将存储空间分成多个存储页,每页相应于一组存储单元,其在工作中同时即相互并行地被访问,即被读或被写。每组中存储单元的数量决定存储页的大小(即,比特数量)。8192(8K)个单元的存储页非常典型,但是也会遇到更大的存储页,例如16384(16K)个单元的存储页。称为“页缓冲器”的电路配置典型地提供在NAND快闪存储器中,用于管理以下操作:读取所选择存储页的存储单元中存储的信息,或改变存储页的内容,尤其是向其中写入新信息。很一般地说,页缓冲器包括缓冲寄存器,其中在取决于存储器的I/O终端的数量,在以例如八或十六比特的组块(chunk)串行输出之前,暂时地存储从选择页的存储单元中读取(并行)的数据;类似地,当将要把数据要写入存储器时,用串行收到的以所述八或十六比特组块串行接收的数据补充页缓冲器,以及在页缓冲器最终充满后,数据并行的写入所选择的存储页的存储单元中。
还根据每个存储单元可存储的信息的数量分类存储器件。每个存储单元能存储两比特信息的存储器件称作“两级”存储器,而每个存储单元能存储两个以上信息比特的存储器件称为“多级”存储器。通常,存储单元的编程状态通过包括在存储单元中的MOS晶体管的阈值电压来限定。在两级存储器中,相应于存储单元的MOS晶体管的阈值电压的两个值(或在两个不同值范围内的值),每个存储单元可被编程成两个相异编程状态中的一种。特别地,四级存储器是已知的,其存储单元可被编程成四个不同编程状态中的任何一个,每个与它们适合于存储的比特对的相应的逻辑值相关。在适合存储二比特的存储单元中,包括在一般存储单元中的MOS晶体管的阈值电压值可采用四个不同值(或在四个不同值范围内的值)中的一个。
编程所选择存储单元典型地要求给要编程的存储单元施加编程脉冲序列,其中每个编程脉冲包括在预定时间给要编程的存储单元施加预定偏压(编程电压)。写入存储单元的数据(或相应数据)首先被锁存到提供在编程加载电路中或页缓冲器中的易失性锁存元件中;锁存的数据决定存储单元是否必须接收编程脉冲。
典型地,在每个编程脉冲之后,读取选择的存储单元以确定它们是否达到了目标编程状态。存储单元一经验证编程到目标编程状态,之前锁存在各自锁存元件(编程加载电路或页缓冲器的一部分)中的信息和决定单元是否应该接收编程脉冲的信息就丢失。存储单元不再施加另外的编程脉冲,且其不再经历任何编程状态的验证操作:也就是,成功地验证存储单元永久性地排除在外,即永久性地的(就所考虑的编程操作而言)阻止对其施加另外的编程脉冲。
发明内容
本申请人已经观察到通常执行编程操作的方式可能出问题。尤其是,本申请人已经观察到问题可从如下事实中产生:存储单元在被验证正确地编程到目标编程状态之后,立即被永久地排除被施加另外的编程脉冲,且它的编程状态不再验证。
事实上,与正常读取操作相比,在单元上第一次成功验证操作后停止施加另外的编程脉冲和立刻验证存储单元强迫保证了足够高的安全系数:如果第一次宣布存储单元编程到目标编程状态,则通过在和常规读取相同的条件中读取的方式确定其为已被编程,由于在两种情形中经历的偏置条件中的不可避免的差异,最可能在正常读取操作中将存储单元确定为未被编程。为此,使用有意变得更坏的存储单元的偏置条件,即与正常读取偏置条件相比更苛刻的偏置条件来执行编程验证操作:例如,施加到包括将要被验证的存储单元的字线的电压在编程验证操作中高于正常读取操作中,和/或存储单元电流与不同的参考电流进行比较。这具有的缺点是对于正常读取操作的使用以及对于编程验证操作的使用,不同的参考电压/电流需要产生在存储器件内。需要产生的不同参考电压/电流的数目随着存储单元可容许的不同编程状态的数目的增加而增加。必须产生几个参考电流/电压是不利的,因为例如在存储器件测试期间几个参考电路结构需要被集成和调整。这增加了成本。
另外,在将存储单元被验证为被编程至目标状态后,立刻免除该存储单元经受进一步接收验证操作是危险的:由于因为剩余存储单元的编程而不可避免地发生偏压条件的变化,最初被验证为已被正确编程的该存储单元后来可能在随后的时间,例如在对剩余存储单元的编程操作完成之后,被认为是没有被编程的。如果发生上述情况,则将损坏存储器件的功能,因为其中存储了不正确的数据。
鉴于前面描述的现有技术,本申请人面临着如何改善已知编程方法以便克服上述问题的问题。
根据本发明的方面,提供如在所附权利要求1中所述的电编程存储单元的
方法。
该方法包括:
给存储单元施加至少一个电编程脉冲;
验证该存储单元达到目标编程状态;以及
重复所述施加和验证直到确定该存储单元达到目标编程状态为止。
在确定存储单元达到目标编程状态之后,给该存储单元施加至少一个另外的电编程脉冲,并在施加该另外的编程脉冲后至少再一次验证目标编程状态的到达。如果作为所述进一步验证的结果,没有确定该存储单元达到目标编程状态,则该方法提供给该存储单元施加又一编程脉冲。
由此,本发明阐述了一种电编程存储单元、尤其是非易失性存储单元的方法,与常规编程方法不同的是,该方法不禁止对已经被确定为已经达到目标编程状态的存储单元执行编程验证操作:在编程中的存储单元组中的每个存储单元继续经历编程验证操作,直到所有的存储单元都被确定为已被编程到相应目标编程状态为止,并且该编程操作结束。
特别地,根据本发明,第一次验证被编程的存储单元为已被编程到了目标编程状态,始终对其施加额外的编程脉冲;之后,假设该存储单元继续被验证为已被编程到目标编程状态,则排除施加另外的编程脉冲;然而,如果在编程操作的过程中,该存储单元碰巧没有被验证为已被编程,则再一次施加编程脉冲。
在存储单元被验证为已经达到目标编程状态后立即将额外的编程脉冲施加到被正确编程的每个存储单元确保用充分的安全系数对该存储单元编程,因此,在编程操作进行过程中该存储单元不能通过编程验证是非常不可能的。根据本发明的另一方面,提供如所附权利要求4中所述的对电可编程存储单元进行编程的电路。
附图说明
在所附权利要求中阐述了本发明的特性化特征。通过结合附图阅读下面仅借助非限制性的实例提供的其中一些实施例的详细描述,本发明的特征和优点将得到最佳理解,其中:
图1是其中本发明可被有利地实施的电可编程半导体存储器的示意性主要功能框图。
图2是四级存储器的存储单元的阈值电压的常规统计分布的简化图;
图3示意性地示出根据本发明的实施例的用于编程图1的存储器的存储单元的电路的功能块;
图4是示出根据本发明的实施例的用于编程存储单元的方法的主要操作的示意流程图;
图5是通过根据图4的编程方法编程单元获得的四级存储器件的存储单元的阈值电压的统计分布;
图6是其中可实施本发明的NAND存储器的简化电路示意图;
图7是根据本发明的实施例的图4的NAND存储器的页缓冲器的读/写单元的电路示意图;
图8示出用于读取存储在NAND存储器的存储页的存储单元中的最低有效位(LSB)的读取操作的时序;
图9示出用于读取存储在NAND存储器的存储页的存储单元中的最高有效位(MSB)的读取操作的时序;
图10示出用于编程NAND存储器的存储页的存储单元的LSB的编程操作的时序;
图11示出LSB编程验证操作的时序;
图12示出用于编程NAND存储器的存储页的存储单元的MSB的编程操作的时序;
图13示出MSB编程验证操作的时序。
具体实施方式
参照附图,在图1中示意性地示出整体用100代表的非易失性半导体存储器的主要功能框图;特别地,存储器100是电可编程的非易失性半导体存储器,例如快闪存储器。
快闪存储器100集成在半导体材料的芯片中,且包括多个适于存储数据的存储单元110;存储单元110被设置成多行和多列,且形成二维存储器矩阵105。
典型地,每个存储单元110由具有电荷存储元件的N沟道MOS晶体管构成或包括其,该电荷存储元件例如为适于通过电子充电的导电的被电绝缘的浮动栅电极。
快闪存储器100、以及尤其是存储器矩阵105可具有NOR结构或NAND结构,快闪存储器100的具体结构本身并不是本发明的限制方面。在下面的描述中,首先在整体上提供用于描述本发明的实施例、原则上对NOR存储器和NAND存储器都有效的讨论;之后,提供特别针对NAND存储器的发明实施例的详细描述。
快闪存储器100可以是多级存储器;例如四级存储器,其中每个存储单元110适于存储2比特二进位值,其由最低有效位(LSB)和最高有效位(MSB)构成。然而,应该指出可由存储器100的一般存储单元110存储的比特数本身并不是本发明的限制方面,其也可以应用两级存储器,以及更高级存储器,即其存储单元适于存储2比特以上。
如本领域技术人员所知,在擦除条件中(在本描述的上下文中,擦除条件被看作是与第一逻辑值相关联的第一编程状态),一般存储单元110具有第一、相对低的阈值电压值。通过使预定数量的电荷注入到其浮动栅电极中,四级存储单元110可被编程为三个另外不同的编程状态中的任何一个。这些另外三个编程状态中的每个特征在于高于在前编程状态的阈值电压值(或者阈值电压值范围)的相应阈值电压值(或相应阈值电压值范围)。更高的阈值电压值相应于注入到浮动栅电极中的电荷的增加量。更特别地,第二编程状态(与第二逻辑值相关联)特征在于高于第一阈值电压值、但是低于相应于第三编程状态(与第三逻辑值相关联)的第三阈值电压值(或值范围)的第二阈值电压值(或值范围)。第四编程状态(与第四逻辑值相关联)特征在于具有最高的阈值电压值(或值范围)。
图2示出四级存储单元(如存储器件的存储器矩阵的存储单元)的全体(population)的阈值电压的常规统计分布201,202,203,204,这些存储单元被编程为四种可能的编程状态。参考数字201代表在擦除条件下的存储单元的阈值电压值的统计分布,所述存储单元即根据可能的惯例与逻辑值“11”(MSB=1,LSB=1)相关联的属于第一编程状态的单元。参考数字202代表被编程到根据可能的惯例与逻辑值“10”(MSB=“1”,LSB=“0”)相关联的第二编程状态的存储单元的阈值电压值的统计分布;参考数字203代表处于根据可能的惯例与逻辑值“00”(MSB=“0”,LSB=“0”)相关联的第三编程状态的存储单元的阈值电压值的分布;以及参考数字204代表处于根据可能的惯例与逻辑值“01”(MSB=“0”,LSB=“1”)相关联的第四编程状态的存储单元的阈值电压值的分布。这些分布例如一般在形状上为高斯分布(Gaussian),且每个在中心即平均阈值电压值周围集中。
观察到,根据不同的惯例,可将逻辑值“11”、“10”、“01”和“00”与增加的阈值电压值相关联,逻辑值“11”与具有最低阈值电压值的编程状态(擦除状态)相关联,以及其它的逻辑值连续与具有增加的阈值电压值的编程状态相关联。在编程状态(即阈值电压值)和上面出现的所存储的2比特代码值之间的对应关系是不同的,且使用灰度编码(Gray coding):根据该灰度编码,邻近的(就其阈值电压值分布而言)编程状态与仅对于一比特相互不同的存储的逻辑值相对应(在极值处的两个分布201和204被认为是彼此邻近的)。灰度编码的采用在一些应用中具有优势:如将在本描述中稍后详细讨论的,在一些情况下可减少读取存储单元的内容所需的操作数目。
如图1示意性示出的,存储单元110与字线WL和位线BL相连。为了在存储器矩阵105中访问需要的存储单元,提供字线选择电路125r和位线选择电路125c用于选择字线和位线;典型地在地址码ADR的基础上进行选择,存储器件可自外部接收该地址码ADR,例如从微处理器或存储控制器(未在图中示出),并且该地址码ADR被提供给字线选择器125r和位线选择器125c。
图1中还示意性地示出了功能框图150,其预期包括读取所选存储单元的数据内容的电路155和用于编程即将数据写入选择存储单元的电路160。
通过相应的字线和位线,通过对其施加规定的偏压(读取电压)来访问存储单元以读取它们的内容;总体上,根据相比于对其施加的偏压的存储单元的阈值电压值,存储单元将导通或不导通。特别地,在这里所考虑的四级存储单元的示例性情况中,一般存储单元的编程状态可通过比较存储单元的阈值电压和分别在阈值电压统计分布201和202、202和203以及203和204之间的中间值的四个读取参考电压VREAD1、VREAD2和VREAD3来完全区分。
在快闪存储器中,典型地通过电子进入其浮动栅电极的Fowler-Nordheim(富雷一诺特海姆式)(F-N)隧穿对存储单元进行编程。编程脉冲序列施加到将被编程的存储单元,其中每个编程脉冲包括在规定的时间施加预定偏压(编程电压)到将被编程的存储单元。给存储单元施加一般编程脉冲使得其阈值电压稍有增加(例如200-300mV)。
例如从存储器外部如从微处理器接收的将被编程的数据在图中用参考符号PGM DATA代表,并被临时存储到易失性存储寄存器中,其包括编程数据锁存器165;编程数据锁存器165的内容调节编程电路160的操作;特别地,编程数据锁存器165的内容决定存储单元是否必须接收编程脉冲。
在每个编程脉冲后,执行编程验证操作:读取存储单元(用读取电路155)以确定它们是否达到目标编程状态。在这里考虑的四级存储单元的示例性情况中,通过一般存储单元达到目标编程状态可通过比较存储单元的阈值电压和按照惯例分别近似相应于阈值电压统计分布202、203和204的下限的值的三个验证参考电压VFY1、VFY2和VFY3来确定。编程验证操作的结果影响编程数据锁存器的内容。
按照惯例,存储单元一经验证被编程到目标编程状态,以前锁存在编程数据锁存器165中且决定单元是否应该接收编程脉冲的数据就丢失;不对存储单元施加另外的编程脉冲,且该存储单元不再经历任何验证操作:成功验证的存储单元由此被永久地排除,即其被永久性地(就考虑的编程操作而言)禁止施加另外的编程脉冲。正如在前面所讨论的,本申请人认为这可能是问题的根源。
在图3中,就功能框图而言示意性地示出根据本发明的实施例的编程数据锁存器165的结构,其适于克服在验证存储单元被编程到目标编程状态后立即永久性排除该存储单元进行进一步验证的问题。
如图3所示,提供三个锁存器L1、L2和L3;锁存器L3(下文也称作“数据加载锁存器”)用于接收和锁存编程数据PGM DATA。通过由信号T1控制的可选择激活的传输门TG1,将数据加载锁存器L3的输出连接到锁存器L1(下文还称作“验证锁存器”)的输入,其根据它的内容调节编程电路160的操作。通过由信号T2控制的可选择激活的传输门TGD将验证锁存器L1的输出连接到锁存器L2(下文还称作“第一验证锁存器”)的输入。验证锁存器L1和第一验证锁存器L2的输出连接到组合电路,其基于这两个锁存器的内容决定编程脉冲是否施加到所选择的存储单元上。特别地,该组合电路可以是或非逻辑电路,在图中被示为NOR门N1,其在第一输入处接收验证锁存器L1的输出A,且在第二输入处接收第一验证锁存器L2的输出B。NOR门N1的输出C的状态决定所选择的存储单元是否必须接收编程脉冲;例如,如果NOR门输出C=“0”,则存储单元必须接收编程脉冲,而如果C=“1”,则编程脉冲不必施加到所选择的存储单元上。
现在在图4的示意流程图的帮助下解释图3的编程数据锁存器165的操作。例如,下面的描述反映了编程两级存储单元的操作,或编程两级存储单元的LSB的操作。预期对一组存储单元(例如,在NAND存储器的情况下,存储页的存储单元)并行地进行编程操作。
首先,设定/复位锁存器L1、L2和L3至规定的开始条件(框405);特别地,设置第一验证锁存器L2到使得其输出B等于“0”的状态,即其不影响NOR门N1的输出C的值。
然后,将被编程到所选择的存储单元中的数据被加载到数据加载锁存器L3中(数据加载操作-框405);数据加载操作还包括将编程数据传输到验证锁存器L1中。
然后,向选择的存储单元施加编程脉冲(框410);特别地,在这里考虑的实例中,只有当验证锁存器L1的内容(相应于编程数据)是使得A=“1”时,在C=“0”的条件下,即在第一验证锁存器L2的输出B=“0”的时刻,向选择的存储单元施加编程脉冲。在下面,假设存储单元必须被编程,即加载到数据加载锁存器L3中的编程数据是“1”。
在施加编程脉冲后,且在执行编程验证操作以确定选择的存储单元是否已达到目标编程状态之前,验证锁存器L1的内容通过激活传输门TGD传输到第一验证锁存器L2中(框415)。这样,第一验证锁存器L2的输出切换为B=“1”,因此第一验证锁存器L2的内容还影响NOR门N1的输出。
然后,通过激活传输门TG1,验证锁存器L1被重新加载数据加载锁存器L3的内容,即编程数据(框420)。
现在读取选择的存储单元以确定其是否已经达到目标编程状态(编程验证操作,框425)。如果存储单元达到了目标编程状态,则复位验证锁存器L1,否则其保持在使得其输出A=“1”的状态。
然后在编程状态下向存储单元施加下一个编程脉冲(框430)。如果考虑的存储单元还没有达到目标编程状态,则验证锁存器L1的内容仍旧是使得其输出A=“1”,其迫使NOR门N1的输出是C=“0”;存储单元接收下一个编程脉冲。代替地,如果存储单元被验证为已被编程到目标编程状态,则复位验证锁存器L1,使得其输出A=“0”;然而,由于其是B=“1”,因此NOR门N1的输出C再一次是“0”,并且尽管存储单元被验证为已编程到目标状态,该存储单元仍接收下一个编程脉冲。
如果此时所有将被编程的存储单元被验证为已编程到目标编程状态,则操作结束(决定框435的出口分支Y)。代替地,假设被编程的组中存在一个或多个其它存储单元还没有达到目标编程状态(决定框435的出口分支N),那么:重复由框415到435示出的操作。在第一次重复时,验证锁存器L1的内容传输到第一验证锁存器L2中(框415);如果所考虑的存储单元以前已经被验证为编程到目标编程状态,则验证锁存器的内容是使得其输出A=“0”,因此第一验证锁存器L2的内容从相应于B=“1”的状态传送到相应于B=“0”的状态:在该状态中,第一验证锁存器L2不再影响NOR门N1的输出C。
另外,验证锁存器L1被重新加载在数据加载锁存器L3中总是可用的原始编程数据(框420);这样,在下一个编程验证操作(框425),所考虑的存储单元虽然已经被验证为在以前的重复编程操作中已被正确编程,但是仍再一次经受验证操作。如果验证操作成功(就像其本应当的那样,由于存储单元除了已经被验证外,还接收了额外的编程脉冲的事实,该脉冲进一步移动了其阈值电压),则清除验证锁存器L1(即其进入到使得A=“0”的状态);这样,所考虑的存储单元将不会接收下一个编程脉冲。
也就是说,将被编程的一般存储单元:
-在第一次成功的编程验证操作后,接收保证足够编程裕度(programmingmargin)的额外的编程脉冲;以及
-不变地接受编程验证操作,尽管其已被验证为已编程到目标编程状态的事实。
应当强调,为了确保存储单元总是接受编程验证操作直到对被并行编程的该组单元的其他存储单元的编程操作结束为止,原则上其足以提供数据加载锁存器L3和验证锁存器L1:这样,通过在任何编程验证操作之前给验证锁存器L1重新加载数据加载锁存器L3的内容,确保存储单元接受验证,即使其已经被验证为已编程到目标编程状态。在这种情况下,没有额外的编程脉冲施加到该存储单元上。然而,根据本申请人,虽然该实施方式是可以的,但在某一时间被验证为已被正确编程的存储单元可能在一定次数(例如,2或3)的重复之后没有通过验证;这可能是由于该存储单元实际经历的偏压变化导致的;这样该单元在不成功的验证操作后将接收编程脉冲;然而,编程电压随时间的演变通常使得在这种情况下存储单元经历过度的阈值电压移动,因此例如必须被带到编程状态“10”(分布202)的存储单元代替地被带到编程状态“00”(分布203)或甚至“01”(分布204)。相反,上述的解决方法要求在第一次成功验证操作后立即给每个将被编程的存储单元施加额外的编程脉冲,保证了足够的裕度,以便实际地避免存储单元在已被验证为被编程之后被验证为没被编程。
图5示出根据阈值电压分布施加额外编程脉冲的作用;可以认识到,与图2的常规分布201、202、203和204相比,相应于状态“10”、“00”和“01”的分布202、203和204朝向较高的阈值电压值轻微移动(例如,大约200-300mV的,即典型地由施加单一编程脉冲导致的阈值电压移动)。与图2描述的情形中的它们的值相比,读取电压VREAD1、VREAD2和VREAD3可被相应地移动,以便或多或少地保持在分布中心的中间。
应当指出,原则上可以将上述方法应用于任何类型的电可编程存储器,而不管其存储器矩阵的结构(NOR或NAND)和一般存储单元中可存储的比特数。
现在参考图6和7,现在描述特别开发用于NAND快闪存储器的发明实施例。在NAND结构中,在存储器矩阵105中的例如八个、十六个或可能更多(例如三十二个)存储单元110的组彼此串联连接以便形成相应的存储单元串或栈,且属于同一矩阵列的存储单元串彼此平行地连接到相同的位线BL。
属于一般串的存储单元110特别地在源极选择N沟道MOS晶体管120s和漏极选择N沟道MOS晶体管120d之间串联连接。存储单元串中的一般中间存储单元110具有与相同串中的邻近存储单元110的源极端子相连的漏极端子,以及与相同串中的另一邻近存储单元110的漏极端子相连的源极端子。位于该串的末端的两个末端存储单元110中的一个具有与漏极选择晶体管120d的源极端子相连的漏极端子;漏极选择晶体管120d的漏极端子连接到相应的位线BL,以及连接到邻近存储单元串的相应漏极选择晶体管120d的漏极端子。同样地,在该串的另一端的存储单元110具有与源极选择晶体管120s的漏极端子相连的源极端子;源极选择晶体管120s的源极端子与另一邻近存储单元串的相应的源极选择晶体管120s的源极端子相连。
在每个矩阵行中的存储单元110的控制栅极端子与相应的字线WL相连。属于矩阵105的相同行的漏极选择晶体管120d的栅极端子都与相应的漏极选择线DSL相连;类似地,属于公共行的源极选择晶体管120s的栅极端子都与相应的源极选择线SSL相连。属于矩阵105的相同列的漏极选择晶体管120d的漏极端子与相应的位线BL相连。矩阵105中的所有源极选择晶体管120s的源极端子都与公共源极线SL(典型地其保持在参考电压或接地)相连。
属于相同矩阵行的存储单元110逻辑地分成不同的组。仅仅作为实例,假设存储器矩阵105包括8192(8K)位线BL,可限定均用于每个字线WL的两组4096(4K)的存储单元;例如分配给每个位线BL相应于采用以图中最左边的位线开始的级数(progression)的整数的标引(index),例如第一组由在偶数位置的存储单元110构成(即属于具有相关的偶数标引的位线),第二组由在奇数位置的存储单元110构成(即属于具有相关的奇数标引的位线)。
为了下面描述的目的,假定存储单元110是四级存储单元,并且可由一般存储单元存储的逻辑值和存储单元的阈值电压值(或值范围)之间的对应遵照上面讨论的灰度编码。
在这里考虑的实例中,每个字线WL对应于四个不同的存储页,每个对应于特定的比特组。更特别地,第一存储页(也称作“第一LSB页”)包括在属于在偶数位置的位线BL的存储单元(即第一组存储单元)中存储的LSB;第二存储页(还称作“第一MSB页”)包括在属于在偶数位置的位线BL的存储单元中存储的MSB。第三存储页(还称作“第二LSB页”)包括在属于在奇数位置的位线BL的存储单元(即,属于第二组存储单元)中存储的LSB,而第四存储页(还称作“第二MSB页”)包括在属于在奇数位置的位线BL的存储单元中存储的MSB。结果,存储在一般存储单元110中的数据既属于LSB页(第一或第二)也属于MSB页(第一或第二)。
由于每个存储单元110能存储两个比特,因此每一组4096存储单元存储1024字节。结果,每个存储页存储512字节。这样,仍作为实例,如果存储器矩阵105包括2048字线WL,存储器100具有每页512字节的总共8192存储页。需要指出的是,在实际的实施方式中,位线和字线的数目以及一般存储页的大小可变化很大,其并不是对本发明的限制。特别地,与一般字线相关的存储页的数目可以是较高的,尤其是作为2的倍数的任何数目,例如8等。
快闪存储器100还可包括多个冗余(redundant)位线(为了清楚起见,未在图中示出),其适于在功能上代替存储器矩阵105的位线BL,在快闪存储器的制造工艺后和在其测试阶段期间,其可能被检测为有缺陷的。类似地,可提供冗余字线用来在功能上代替存储器矩阵105的有缺陷的字线。
字线选择器125r适于选择需要的字线WL以及相应的漏极选择线DSL和相应的源极选择线SSL。多路复用器/多路分解器600适于将还与存储器100的I/O终端I/O相关的输入/输出(I/O)缓冲器140与页缓冲器130连接。部分地址码ADR,在图中表示为PSEL,例如包括一个比特,用于选择(在该实例中为两个)存储页(第一/第二MSB页,即包括MSB的存储页;或第一/第二LSB页,即包括给定组的存储单元的LSB的存储页)中的哪一个被寻址;另一部分的地址码ADR被提供给多路复用器/多路分解器600。
在对所选的存储单元组的存储单元110的读取/编程操作期间,使用页缓冲器130作为临时数据存储装置。页缓冲器130具有相应于一般存储页的存储能力的存储能力。为了使快闪存储器100的内部数据并行性与最大外部数据并行性相适应,根据I/O终端I/O的数目p(例如,p等于8或16),多路复用器/多路分解器600给页缓冲器130提供将被写入选择的存储单元的数据字,或给I/O终端I/O提供从选择的存储单元读取的数据字,一次p数据比特的组块(chunk)。特别地,通过解码收到的一部分地址码ADR,多路复用器/多路分解器125c将页缓冲器130的需要部分与存储器I/O终端I/O连接。
快闪存储器100的操作通常由被示为标记成135的框的控制单元管理,例如内部微控制器或有限状态的机器。
通过选择一个字线WL和一束位线BL来选择存储页;例如,如果如前所述对于每个字线存在每页512字节的四个存储页(第一LSB页,第一MSB页,第二LSB页和第二MSB页),则该束选择的位线BL包括在偶数位置的4096位线,或在奇数位置的4096位线。字线WL的选择由字线选择器125r直接执行,而该束位线BL的选择由位线选择器125c执行。通过解码馈送至其的地址码ADR的该部分,位线选择器125c选择需要的位线束且将它们与页缓冲器130连接。
在存储页读取操作(“页读取”)期间,读出存储在选择的存储页中的数据字且将其锁存到页缓冲器130中。然后临时存储在页缓冲器130中的数据字借助多路复用器/多路分解器600通过I/O终端I/O以例如八或十六比特的组块被串行输出。
更详细地,为了访问给定的存储单元110以读取其内容,通过声明(assert)漏极选择线DSL和源极选择线SSL(例如,这两个线被带到等于存储器的电源电压Vdd的电压),导通该单元所属的存储单元串中的漏极选择晶体管120d和源极选择晶体管120s;通过位线选择器125c选择与包含将被读取的存储单元的单元串相连的位线BL。字线选择器125r偏置所选存储单元所属的字线WL至特定的读取电压,例如在图2和5中示出的读取电压VREAD1、VREAD2或VREAD3中的一个,其适于区分存储单元的编程状态;将控制相同串的其它存储单元的栅极的剩余字线WL都带到足够高以确保这些存储单元导通的电势,而与它们的编程状态无关(例如,这些字线被带到大约5-6V的电压)。与不同的存储单元串相关的所有其它字线WL例如保持接地。
由于采用灰度编码,对于读取包括在一般存储单元110中的MSB,字线选择器125r偏置所选存储单元所属的字线WL至读取电压VREAD2,其介于图2或5的分布202和203的中心阈值电压中间。如果选择的存储单元110的阈值电压低于读取电压VREAD2,则所选择的存储单元110导通并传导电流,且这表明MSB等于“1”(必须注意的是选择的存储单元是属于分布201还是属于分布202没有关系,因为这两个分布都相应于存储的具有等于“1”的MSB的数据)。相反地,如果选择的存储单元110的阈值电压高于读取电压VREAD2,则选择的存储单元110不导通且传导电流,这样表明存储的MSB等于“0”。这样,仅通过一个读取操作,就可重新获取存储在一般存储单元中的MSB的值。
代替地,为了读取LSB,需要两个读取操作。更特别地,执行第一读取操作,偏置(借助字线选择器125r)选择的存储单元所属的字线WL至介于分布201和202的中心阈值电压中间的读取电压VREAD1。如果选择的存储单元110的阈值电压低于读取电压VREAD1,则选择的存储单元110导通且传导电流,这样表明它属于分布201(第一编程状态),且存储的LSB等于“1”。在这种情况下,仅一个读取访问足够用于重新获得存储的LSB。相反地,如果选择的存储单元110的阈值电压高于读取电压VREAD1,则选择的存储单元110不传导电流,这样表明它不属于分布201。在这种情况下,需要执行第二读取操作,偏置选择的存储单元所属的字线WL至介于分布203和204的中心阈值电压中间的读取电压VREAD3。如果选择的存储单元110的阈值电压低于读取电压VREAD3,则选择的存储单元110导通,且这表明LSB等于“0”(实际上,第一读取操作已经表明阈值电压高于VREAD1)。相反地,如果选择的存储单元110的阈值电压高于读取电压VREAD3,则选择的存储单元110不导通,且这表明其阈值电压属于分布204,且LSB等于“1”。
在存储页编程操作(“页编程”)期间,从存储器外面通过I/O终端I/O收到的写入到指定存储页中的数据字被加载到页缓冲器130中。将被写入的数据字以例如八或十六比特的组块被串行接收,并且由此以一系列的步骤用数据补充页缓冲器130;当缓冲器最终被填满时,该数据被并行写入到所选页的存储单元中。
为了访问给定的存储单元110以对它编程,通过声明漏极选择线DSL(例如,将它带到存储器件的电源电压Vdd)导通该存储单元所属的存储单元串中的漏极选择晶体管120d,而通过保持源极选择线SSL被取消声明(deassert)(例如接地)来保持源极选择晶体管120s关断;通过位线选择器125c选择连接到包括要被编程的存储单元的单元串的位线BL。字线选择器125r偏置所选存储单元所属的字线WL至编程电压VPROG,其值根据存储单元110的目标编程状态随时间进展(evolve)。
如在前面提到的,一般存储单元110的编程状态相应于其阈值电压值,其又由注入到该单元的浮动栅电极中的电荷数量决定。如本领域中已知的,注入到浮动栅MOS晶体管的浮动栅电极中的电荷数量与施加到存储单元110的控制栅极的编程电压VPROG的值和增加率成比例(例如,目标阈值电压值越高,则将要施加的编程电压VPROG的值越高)。剩余的字线WL,与相同串的其它存储单元的控制栅极相连,都被引到相对高的电压(例如大约10V),其适于确保这些存储单元不被虚假编程。与不同的存储单元串相关的所有其它字线WL例如保持接地。为了编程选择的存储单元,该选择的存储单元所属的位线BL保持接地,使得漏极选择晶体管120d保持导通;地电压施加到选择的单元的位线上,通过该串中的存储单元的漏极选择晶体管和沟道传播,到达将被编程的存储单元的沟道;这里,选择的存储单元经受的控制栅极(处于编程电压VPROG)和沟道(接近地电压)之间的电压差足以使得F-N电子遂穿进入到存储单元的浮动栅极中。相反,如果以较高电势偏置位线,例如等于存储器电源电压(Vdd,例如3V),则作为漏极选择线DSL,漏极选择晶体管120d截止。这样,选择的存储单元串的存储单元的沟道保持浮动,且由于相对高的电压(例如10V)施加在不与选择的存储单元相连的该串的字线WL上,因此该串电压由于电容性耦合上升到一定值,使得在选择的存储单元处的控制栅极到沟道的电压差不足以导致明显的电子遂穿,且存储单元没有被编程。这样,通过向选择的位线施加适当的电压,将被编程的所选存储页的存储单元110进入到需要的编程状态,而其它未被编程的单元110保持不变。
类似于读取操作的情况,以更多个步骤完成编程LSB和MSB所需要的编程操作。更具体地,假设对擦除的存储单元110(即在第一编程状态的存储单元,相应于存储的“11”,具有第一分布201中的阈值电压值)执行每个编程操作,首先执行LSB编程操作:如果用于选择的存储单元110的目标编程状态相应于LSB值等于“0”,则编程脉冲序列施加到选择的存储单元上,使得它的阈值电压达到分布202(即达到第二编程状态)。否则,选择的存储单元110的阈值电压保留在第一分布201中(第一编程状态或擦除状态)。在设置LSB到目标值后,通过编程MSB完成编程操作。如果用于选择的存储单元110的目标编程状态是使得MSB值等于“1”,则存储单元的阈值电压保留在它在先前步骤中达到的值(即如果目标LSB值等于“1”则在分布201中,且如果目标LSB值等于“0”则在分布202中)。相反,如果用于选择的存储单元110的目标编程状态相应于MSB值等于“0”,则如果LSB值等于“1”(即如果在编程MSB之前的阈值电压属于分布201),那么选择的存储单元的阈值电压必须进入分布204(即达到第四编程状态),或者如果LSB等于“0”(即如果在编程MSB之前的阈值电压属于分布202),那么进入分布203(即达到第三编程状态)。
在实际的实施方式中,在每个施加到将被编程的存储单元的编程脉冲处,编程电压VPROGR增加(至少高达最大值,例如20V);在施加编程脉冲后,执行验证操作来确定存储单元是否已经达到了目标阈值电压值。
在擦除操作中,存储单元110组,即在这里考虑的实例中,相应于串的所有字线WL的存储单元110组,被带回到擦除状态(逻辑值“11”)。
为了擦除给定的存储单元110组,通过擦除控制电路(未在图中示出),包括存储器矩阵105的所有单元的半导体区域可偏置到相对高的擦除电压VERASE(例如20V),且矩阵105的所有位线BL保持浮动。字线选择器125r将相应于将被擦除的存储单元组的字线WL偏置到地电压,而存储器矩阵105的剩下的字线WL保持浮动。相应于将被擦除的存储单元组的漏极选择线DSL和源极选择线SSL保持浮动(在上述半导体区域偏置到擦除电压VERASE之前,已经被预充电到大约电源电压Vdd之后),而剩余的漏极选择线和源极选择线保持接地。这样,将被擦除的存储单元组中的每个存储单元110以这样的方式被偏置以触发可能存储在其浮动栅极中的电荷的去除(借助隧穿效应)。擦除操作在实际中还更复杂,包括擦除验证阶段和软编程(soft program)操作。
根据本发明的实施例的用于NAND存储器的页缓冲器130包括具有图3所示的结构的多个读/写单元705。每个读/写单元705在考虑的实例中与相应的(例如相邻的)位线对BLe、BLo相关(冗余位线对与相应的读/写单元相关,类似于读/写单元705)。除非有不同的说明,否则结合图7描述的信号将打算作为逻辑信号,采取两个电压值的任一个,特别是电源电压Vdd和地电压GND。
特别地,与一般读/写单元705相关的位线对包括偶数位线BLe和奇数位线BLo,其通过包括在位线选择器125c中的相应的N沟道MOS晶体管715e和715o电耦合到公共电路节点SO。晶体管715e和715o具有与相应位线BLe和BLo相连的相应漏极端子,和连接到电路节点SO的源极端子;晶体管715e和715o的栅极端子由相应的选择信号BLSe和BLSo分别控制。对于每个位线对,位线选择器125c还包括两个N沟道MOS晶体管720e和720o,根据将要执行的操作,每一个适于将相应位线BLe和BLo预充电/放电到适合的偏置电压VIRPWR。为了此目的,晶体管720e和720o具有与相应位线BLe、BLo相连的源极端子、连接到一起并连接到适于提供偏压VIRPWR的端子的漏极端子、和由相应预充电/放电信号DISCHe、DISCHo控制的栅极端子。
P沟道MOS晶体管M1被提供在读/写单元705中用于在页缓冲器操作的特定阶段期间,例如在读取/编程操作的开始,预充电电路节点SO。晶体管M1具有与电路节点SO相连的漏极端子、连接到提供电源电压Vdd的端子的源极端子、和由预充电启动信号PRE_N控制的栅极端子。
页缓冲器130的一般读/写单元705包括第一锁存器L1、第二锁存器L2、第三锁存器L3,分别对应于图3的电路的锁存器L1、L2和L3(且因此用相同的参考数字表示);还提供第四锁存器L4。四个锁存器L1、L2、L3和L4中的每个例如由一对交叉连接的(CMOS)反相器构成。
第一锁存器L1具有第一输入/输出节点OUT和第二逻辑互补的输入/输出节点OUT_N。第一输入/输出节点OUT与N沟道MOS晶体管M3的漏极相连,且第二输入/输出节点OUT_N与N沟道MOS晶体管M2的漏极相连。晶体管M2和M3通过相应的信号R1和R2控制,且具有与N沟道MOS晶体管M4的漏极相连的相应源极。晶体管M4具有与电路节点SO相连的栅极,和接地的源极。
第一锁存器L1的第一输入/输出节点OUT还连接到与由信号T1(相应于图3的信号T1)控制且具有连接到地的源极的N沟道MOS晶体管M6串联连接的N沟道MOS晶体管M5的漏极。晶体管M5由第三锁存器L3的第一输入/输出节点M控制。
第一锁存器L1的第一输入/输出节点OUT还连接到由信号T2控制且具有接地的源极的N沟道MOS晶体管M7串联连接的N沟道MOS晶体管M8的漏极。晶体管M8由第四锁存器L4的第一输入/输出节点L控制。
第一锁存器L1的第一输入/输出节点OUT还连接到N沟道MOS晶体管M10的栅极,该N沟道MOS晶体管M10具有连接到第二锁存器L2的第一输入/输出节点V1的漏极,并且与由信号TD(相应于图3的信号TD)控制且具有接地的源极的N沟道MOS晶体管M11串联连接。
第二锁存器L2的第一输入/输出节点V1连接到两输入NOR门N1的第一输入,其相应于图3的NOR门N1;NOR门N1的第二输入与第一锁存器L1的第二输入/输出节点OUT_N相连。
NOR门N1的输出连接到由信号DPGM控制且具有连接到电路节点SO的漏极的N沟道MOS晶体管M13的源极。
第二锁存器L2的第二互补输入/输出节点V1_N与由信号VSET控制且具有接地的源极的N沟道MOS晶体管M12的漏极相连;第二锁存器L2的第二输入/输出节点V1_N还连接到具有连接到电源电压Vdd的源极和连接到信号线VER_N的漏极的P沟道MOS晶体管M9的栅极。信号线VER_N连接到相当于页缓冲器130的其它读/写单元705中的晶体管M9的晶体管的漏极,以及连接到下拉元件750,以便形成有线NAND结构。
第三锁存器L3的第一输入/输出节点M还连接到N沟道MOS晶体管M15的漏极,该N沟道MOS晶体管M15由第四锁存器L4的第一输入/输出节点L控制,且串联连接到由信号T4控制且具有接地的源极的N沟道MOS晶体管M16。第三锁存器L3的第二输入/输出节点M_N连接到由信号MSET控制且具有接地的源极的N沟道MOS晶体管M17的漏极。
第四锁存器L4的第一输入/输出节点L还连接到N沟道MOS晶体管M20的漏极,该N沟道MOS晶体管M20由信号OUT控制且串联连接到具有连接到地的源极且由信号T3控制的N沟道MOS晶体管M20。第四锁存器L4的第二互补输入/输出节点L_N连接到具有接地的源极且由信号LSET控制的N沟道MOS晶体管M22的漏极。
第三锁存器L3的第一和第二输入/输出节点M和M_N连接到分别由信号D和D_N控制的N沟道MOS晶体管M18和M19的漏极。晶体管M18和M19具有连接到由信号YPASS控制、具有连接到I/O数据线BITOUT的源极的N沟道MOS晶体管M23的漏极的相应源极,该I/O数据线BITOUT又连接到多路复用器/多路分解器600。晶体管M23的漏极通过由信号DOUT控制的N沟道MOS晶体管M14进一步连接到NOR门N1的输出。
在读取和验证存储在选择的存储单元中的MSB的编程状态、读取和验证在选择的存储单元中存储的LSB的编程状态、以及验证选择的存储单元的擦除状态的操作中使用第一锁存器L1。
第二锁存器L2用于在被编程的存储单元被验证为已达到目标编程状态后,启动向该存储单元施加上述的额外编程脉冲。
第三锁存器L3用于在编程操作期间加载和保持将被编程到选择的存储单元中的数据;第三锁存器L3还用来重新加载相应于目标LSB状态的数据到第一锁存器L1中,以及用于重新加载相应于目标MSB状态的数据。
第四锁存器L4用来重新加载相应于目标MSB状态的数据到第一锁存器L1中。
NOR门N1和晶体管M13用于编程LSB和MSB到选择的存储单元中。
晶体管M18、M19和M23用来将被编程到选择的存储单元中的数据加载到页缓冲器中。
晶体管M2、M3和M4用于读取和验证选择的存储单元。
晶体管M12用于设定第二锁存器L2;晶体管M17用于设定第三锁存器L3;晶体管M22用来设定第四锁存器L4。
晶体管M1用于连接电路节点SO到电源电压Vdd。
晶体管M5和M6用于将第三锁存器L3中的内容传递到第一锁存器L1中。
晶体管M7和M8用于将第四锁存器L4的内容传递到第一锁存器L1中。
晶体管M20和M21用于将第一锁存器L1的内容传递到第四锁存器L4中。
晶体管M10和M11用于将第一锁存器L1的内容传递到第二锁存器L2中。
晶体管M9是有线NAND结构的一个上拉元件,用于确定在编程下的存储页的所有存储单元已达到目标编程状态。
晶体管M14和M23用于将读取数据传输到I/O信号线BITOUT上。
在下面,将详细描述页缓冲器130的操作。为了简明起见,仅考虑将被读取、编程和擦除的选择的存储单元110连接到偶数位线BLe的情况(即相应于偶数存储页的存储单元),属于奇数位线BLo的存储单元的情况完全相同。更具体地,下面的描述特别涉及单个读/写单元705。结果,尽管还将参考整个存储页,但是仅使用其单个存储单元110、以及其相应的串进行详细的说明。
读取操作
LSB读取操作
如前所述,由于采用灰度编码以及由于存储在每个单个存储单元中的数据属于两个存储页(即属于第一/第二LSB页和第一/第二MSB页)的事实,因此LSB读取操作需要至多两次读取访问,一次使用读取电压VREAD1,且可能另一次使用读取电压VREAD3。
正确地设定第一和第二锁存器L1和L2。
首先,设定第二锁存器L2。声明信号PRE_N为低(即为地电压GND),以便导通晶体管M1;这样电路节点SO被带到电源电压Vdd。基本上同时,声明信号R1为高(即为电压供应Vdd),以便导通晶体管M2;晶体管M4也导通,且电路节点SO处于电源电压Vdd;这样,建立从第一锁存器L1的第二输入/输出节点OUT_N到地的传导路径;这样迫使节点OUT_N为地电压。第一锁存器L1的第一输入/输出节点OUT因此切换到电源电压Vdd,这样晶体管M10导通;在该阶段中信号TD保持高,由此建立在第二锁存器L2的第一输入/输出节点V1和地之间的传导路径,且设定第二锁存器L2。第二锁存器L2的该设定确保NOR门N1用作关于出现在节点OUT_N上的逻辑信号的简单的反相器。
然后,设定第一锁存器L1:为了此目的,在取消声明信号R1之后,声明信号R2为高,以便导通晶体管M3;这样在节点OUT和地之间建立传导路径;这样迫使节点OUT为地电压。
在设定两个锁存器L1和L2后,开始读取LSB。在晶体管M1仍旧保持导通时,通过信号线BLSe给选择晶体管715e的栅极施加例如2-2.4V的规定电压V1,且位线BLe充电到等于V1-VTHN的电压,其中VTHN是选择晶体管715e的阈值电压。其间,相应于该串中的其它存储单元的所有字线被带到足够高以使得该串的其它单元用作传输晶体管(pass transistor)的电压,被寻址存储单元110属于的字线被带到电压VREAD1,且漏极选择线DSL被带到电源电压Vdd,以便导通晶体管120。
估计阶段开始:取消声明信号PRE_N,且晶体管M1截止;使信号线BSLe接地,以便截止选择晶体管715e;通过使源极选择线SSL为高,源极选择晶体管120s导通;这样,根据选择的存储单元的状态,使得该串单元能传导电流;位线BLe保持浮动:如果被寻址的存储单元具有低于施加到其字线的电压VREAD1的阈值电压,则存储单元降低电流,且由于随之发生的放电,位线BLe的电势减小;代替地如果选择的存储单元具有高于电压VREAD1的阈值电压,则它不降低电流,且位线BLe保持在电势V1-VTHN。
在估计阶段结束时,信号线BLSe被带到电压V2,且V2<V1;如果由于由选择的存储单元降低的电流,位线BLe的电势降到值V2-VTHN以下,则选择晶体管715e导通,且电路节点SO的电势变得等于位线BLe的电势;否则,节点SO保持在电源电压Vdd。
现在声明信号R1为高;如果由于由选择的存储单元降低的电流,节点SO的电势降低,则第一锁存器L1不切换(为此,晶体管M2和M4以及构成第一锁存器L1的那些被适当地定尺寸),且节点OUT_N保持在“1”。该情况表明被寻址的存储单元的阈值电压落入第一分布201中。相反如果节点SO的电势保持在电源电压Vdd,则第一锁存器L1(其被设置到使得OUT=“0”的状态)切换,且节点OUT_N从“1”变化到“0”(结果,这样节点OUT从“0”变化到“1”)。该情况表明选择的存储单元的阈值电压属于分布202、203和204中的任一个。
在这种情况下,需要第二读取操作以在三个分布202、203和204之间区分。以类似于第一读取操作的方式执行第二读取操作,除了选择的存储单元的字线现在偏置到电压VREAD3,并且声明信号R2而不是信号R1。如果电路节点SO的电势保持在电源电压Vdd(这仅发生在选择的存储单元具有落入第四分布204中的阈值电压的情况下,且由此其不降低电流),则使得节点OUT接地,且相应地节点OUT_N为“1”。代替地如果因为选择的存储单元降低电流,电路节点SO的电势从电源电压Vdd下降,则锁存器L1保持在与在第一读取操作后相同的条件,并且如果选择的存储单元具有落入第一分布201中的阈值电压则节点OUT处于“1”,如果选择的存储单元具有落入第二或第三分布202或203中的阈值电压则节点OUT处于“0”。
在读取后,这样,存储在选择的存储单元中的LSB的值相应于节点OUT的电势。可以通过激活晶体管M14(声明信号DOUT为高)和晶体管M23(声明信号YPASS为高)将读取数据传输到存储器件的输出缓冲器;由于节点V1初始设置为“0”,因此NOR门N1用作关于出现在节点OUT_N的信号的反相器,这样在NOR门N1的输出处,可获得相应于节点OUT的逻辑值的逻辑值。这样在线BITOUT上可获得读取数据,且将该读取数据从这里传输到存储器输出缓冲器。
图8的图示出在说明LSB读取操作期间包括在存储器件中的多个信号的时序。
值得注意的是,为了执行LSB读取操作,有必要对所选的存储单元进行一次或至多两次的读取访问。这可能是由于选择使用灰度编码来将逻辑值与相应的状态相关联的原因,以及由于存储到每个单个存储单元的数据属于两个存储页的事实。
MSB读取操作
类似于LSB读取操作,在MSB读取操作中初始设置第二锁存器L2以便确保NOR门N1用作关于在节点OUT_N的逻辑信号的简单的反相器。为此,执行结合LSB读取操作描述的相同操作。
而且类似于LSB读取操作,然后通过上述相同的操作设置第一锁存器L1。
MSB的读取类似于LSB的读取。通过声明信号PRE_N为低以及使信号BLSe达到电压V1,位线Ble被充电到等于V1-VTHN的电压。选择的存储单元所属的字线偏置到读取电压VREAD2。为了导通晶体管M2,声明信号R1为高。
如果选择的存储单元具有低于电压VREAD2的阈值电压,则它降低电流并使位线BLe放电;节点SO的电势从预充电值Vdd下降;节点OUT_N保持在相应于“1”的电压;相反,如果选择的存储单元具有高于电压VREAD2的阈值电压,则它不降低电流,位线不被放电,且节点SO保持在电源电压Vdd;第一锁存器L1切换,且节点OUT_N的电势降到地电压(相应于“0”)。
存储在第一锁存器L1中的读取数据可传输到线BITOUT,且由此以结合LSB读取操作描述的相同方式传输到存储器输出缓冲器。
图9的图示出在说明MSB读取操作期间包括在存储器件中的多个信号的时序。
页缓冲器130执行MSB读取操作而不是LSB读取操作(反之亦然)的事实依赖于是否已经寻址MSB存储页而不是LSB存储页。这由解码和识别寻址部分PSEL的值的控制单元135控制。取决于寻址部分PSEL的值,控制单元135产生控制LSB读取操作(如施加读取电压VREAD1和VREAD3)或MSB读取操作(例如施加读取电压VREAD2)的执行的所有信号。
编程操作
并行编程属于相同字线的存储单元。给选择的字线施加一系列的编程电压脉冲,其被施加到所有与该字线相连的存储单元上。页缓冲器130的读/写单元705决定选择的字线的哪些存储单元被编程,以及哪些不被编程。特别地,如下面将详细描述的,页缓冲器130的读/写单元705通过适当偏置相应的位线决定选择的字线的哪些存储单元被编程以及哪些不被编程。
在下面,假定存储单元最初都处于擦除状态,相应于第一分布201中的阈值电压。
LSB编程操作
最初,通过声明信号PRE_N(低)、R1(高)和VEST(高),复位一般读/写单元705的第一和第二锁存器L1和L2;这样,以节点OUT和V1被设置为“1”的方式设置锁存器L1和L2。
然后被编程到选择的存储页中的数据被加载到页缓冲器130中。特别地,加载数据到读/写单元705的第一锁存器L1中(“数据加载”阶段)。为此,首先加载数据到第三锁存器L3中。迫使线BITOUT接地,假定是列选择电路的一部分的晶体管M23导通(信号YPASS被声明为高)。然后根据加载的数据,晶体管M18或M19中的一个或另一个导通。特别地,如果加载的数据为“1”,则信号D被声明为高,且相应地信号D_N保持低;这样,使节点M接地,而使节点M_N达到电源电压Vdd。相反,如果加载的数据为“0”,则信号D保持低,且信号D_N被声明为高;这样,使节点M_N接地,且节点M保持在电源电压Vdd。应当指出,如果选择的存储单元(的LSB)必须被编程,则加载到第三锁存器L3中的数据,即节点M的逻辑状态为“1”,而如果存储单元(的LSB)不被编程,则加载到第三锁存器L3中的数据,即节点M的逻辑状态为“0”。
将目标数据加载到第三锁存器L3中后,该锁存器的内容被传输到第一锁存器L1中。该操作在下文还称为“传输T1”,其通过声明信号T1为高来实现,以便导通晶体管M6;根据节点M的逻辑状态,使节点OUT接地或保持在电源电压Vdd。在传输T1操作后,节点OUT的逻辑状态等于节点M_N的逻辑状态。
然后将第一锁存器L1的内容传输到第二锁存器L2中。该操作下文还称为“传输TD”,通过声明信号TD为高来实现。如果将要编程存储单元,则节点V1保持为“1”,否则使其为“0”。
然后开始编程阶段。如同在以前描述的读取操作中,首先位线被预充电到规定的电压。特别地,线VIRPWR被带到电源电压Vdd,且晶体管720e和720o导通,偏置它们的栅极到高于至少其阈值电压的电源电压Vdd的电压。
在给选择的字线施加编程脉冲之前,声明信号DPGM为高以便导通晶体管M13。而且,在访问的存储单元属于偶数位线BLe的假定下,通过使信号BLSe达到电源电压Vdd来导通晶体管715e。如果NOR门N1的输出为“0”,则位线BLe放电到地电压,否则其保持在预充电电压Vdd。当向选择的字线施加编程脉冲时,只有在位线电势等于地电压的时候存储单元才接收编程脉冲(即,一些电荷注入到其浮动栅极中),否则存储单元不接收编程脉冲。
如上提到的,通过在每个编程脉冲稍微增加它们的阈值电压来编程存储单元。通常,需要多个编程脉冲来将一般存储单元从初始编程状态开始带到目标编程状态中;不能先验地确定使一般存储单元进入到目标编程状态所需的编程脉冲的准确数目;而且,属于被选择以进行编程的相同组,即属于相同字线和例如属于偶数或奇数位线的存储单元典型地必须被编程到不同的目标编程状态。由于这些原因,在施加每个编程脉冲后,执行编程验证阶段,用于确定选择的字线的存储单元中的一个或多个是否达到了目标编程状态。
当验证存储单元为已被正确编程到目标编程状态时,由于存储单元被读取为已被编程,所以破坏了第一锁存器L1的内容。根据本发明,为了确保在被验证为已被编程到目标编程状态时一般存储单元被施加额外的编程脉冲且继续被验证直到对所选组的所有单元完成编程操作为止,在执行任何编程验证操作之前,执行传输TD操作,以便将第一锁存器L1的内容加载到第二锁存器L2中;然后,执行传输T1操作以给第一锁存器L1重新加载原始数据(可在第三锁存器L3中获得)。
编程验证操作类似于读取操作,除了在其之前不是通过偏置选择的字线到在本发明的实施例中稍高于读取电压VREAD1的电压VFY1执行的锁存器的任何复位的事实以外;然而,应当指出,本发明的突出优势在于,由于额外的编程脉冲总是被施加到将要被编程的存储单元的事实,因此验证电压VFY1可等于读取电压VREAD1,因为额外的编程脉冲的施加已经保证了所需的安全裕度。
如同在LSB读取操作中,验证阶段以位线BLe预充电到电压V1-VTHN开始。执行如以前描述的读取操作,偏置选择的字线到电压VFY1,预充电节点SO到电源电压Vdd且声明信号R1为高。
如果存储单元还没有被编程到目标编程状态,则它降低电流,以使节点SO被放电;节点OUT保持为“0”。
如果存储单元被正确地编程到目标编程状态,则节点SO保持在电源电压Vdd(在这种情况下存储单元不降低电流),使节点OUT_N接地,且节点OUT切换到“1”。
然后向选择的字线施加下一个编程脉冲。不管在先前的编程验证阶段所考虑的存储单元被验证为已编程到目标编程状态的事实,它将接收下一个编程脉冲。事实上,如果该单元没有被验证为已被编程,则节点OUT处于“0”,节点OUT_N处于“1”,且这迫使NOR门N1的输出为“0”;但是由于节点V1仍旧处于“1”的事实,即使该单元被验证为已编程,且节点OUT被带到“1”(且节点OUT_N被带到“0”,开启(unblock)NOR门N1),NOR门N1的输出也将再次为“0”。
在编程脉冲后,且在执行下一个编程验证操作前,执行传输TD操作,声明信号TD为高:在先前的编程验证操作成功的情况下,使得节点OUT为“1”,节点V1被带到“0”,因此锁存器L2的内容将不再影响NOR门N1的输出,其仅取决于节点OUT_N的状态,即取决于下面的编程验证操作的结果(相反,如果先前的编程验证操作不成功,则什么都没有改变:节点OUT和V1分别保持在“0”和“1”)。
然后执行传输T1操作,以将加载到页缓冲器的读/写单元中的可在第三锁存器L3中获得的原始数据重新加载到第一锁存器L1中。
然后,以上述的方式执行新的编程验证操作;如果存储单元被验证为已被编程,则节点OUT切换到“1”,因此如果存储单元先前已经被验证,且节点V1处于“0”,则在下一个编程脉冲,NOR门N1的输出保持在“1”,且位线保持充电在电源电压Vdd(这样没有编程脉冲施加到存储单元)。
这样,由于在执行编程验证操作前总是给第一锁存器L1重新加载原始数据,因此即使存储单元在先前重复的编程操作中已经被验证为被编程,该存储单元仍将继续被验证。因此,在连续的编程验证操作期间,以前验证为被编程到目标状态的存储单元可能不再被验证为已被编程:如果这种情况发生,则存储单元接收下面的编程脉冲。然而,这被认为是很不可能的,因为存储单元在被验证为被编程之后收到的额外的编程脉冲应该保证了足够的裕度。
重复上述操作直到复位页缓冲器130的所有读/写单元705中的第二锁存器L2为止,即节点V1被带到“0”:当这种情况发生时,在所有读/写单元705中的晶体管M9截止,因此作为有线NAND的输出的节点VER_N降低到地电压。这表明LSB编程操作的结束。
图10和11中的图示出在LSB编程操作期间以及在相应的编程验证操作中,包括在存储器件中的一些信号的时序。
MSB编程操作
对存储单元执行MSB编程操作,其中假定LSB先前已经被编程。
类似于LSB编程操作,还是在MSB编程操作中首先执行数据加载以把将写入的数据加载到页缓冲器130的读/写单元705中。以类似于上面关于LSB编程操作描述的方式完成以上操作。
然后,通过声明信号PRE_N为低且信号L_SET和VSET为高,复位第一、第二和第四锁存器L1、L2和L4。
在开始施加编程脉冲之前,接着执行LSB读取操作,偏置选择的字线到读取电压VREAD1,以便确定选择的存储单元的阈值电压落入两个分布201或202的哪一个中;需要该确定来决定存储单元的阈值电压将达到哪一个目标分布。
在LSB读取操作后,第一锁存器L1包括关于存储在选择的存储单元中的LSB的电流值的信息,而第三锁存器L3包括关于存储到存储单元中的MSB的目标值的信息。这两个指示相结合以获得存储单元是否必须接收编程脉冲的信息。这通过在四个锁存器L1到L4之间的多个传输操作来完成。特别地,首先通过声明信号T3为高执行传输T3操作,以便将第一锁存器L1的内容传输到第四锁存器L4中。然后通过声明信号PRE_N为低和信号R1为高来复位第一锁存器L1。传输T1操作随后进行,声明信号T1为高,以便将第三锁存器L3的内容传输到第一锁存器L1中。通过传输TD操作,声明信号TD为高,然后第一锁存器的内容传输到第二锁存器L2中。传输T3操作,声明信号T3为高,允许将第一锁存器L1的内容传输到第四锁存器L4中。最后,传输T4操作,声明信号T4,导致第三锁存器L3的内容与第四锁存器L4的内容相结合。在该系列传输操作结束时,读/写单元705的节点的状态如下:
-当且仅当存储单元的阈值电压进入第三分布203中时,节点M为“1”;
-当且仅当存储单元的阈值电压进入第四分布204中时,节点L为“1”;
-当且仅当存储单元需要接收编程脉冲时,节点L和M都是“0”;
-如果存储单元不需要接收编程脉冲,则节点OUT和V1为“1”,而如果存储单元需要接收编程脉冲,则这两个节点都为“0”。
换句话说,如果M=L=“0”,则存储单元的目标阈值电压落入第一分布201中或第二分布202中,且在这两种情况下存储单元都不需要接收编程脉冲(在LSB编程操作期间它已经达到目标编程状态);如果M=“1”且L=“0”,则存储单元的目标阈值电压落入第三分布中,且存储单元需要接收编程脉冲;如果M=“0”且L=“1”,则存储单元的目标阈值电压落入第四分布中,且存储单元需要接收编程脉冲。
现在开始编程阶段。如前所述结合LSB编程操作,预充电位线到电源电压Vdd;然后声明信号DPGM为高,使得如果NOR门N1的输出为“0”,则位线放电到地电压;如果节点OUT_N和V1中的至少一个为“1”则发生上述情况;如果两个节点都为“0”,则位线保持充电在电源电压Vdd,其防止存储单元接收编程电压。
然后向选择的字线和需要接收它的存储单元施加编程脉冲。
类似于前述的LSB编程操作,在每个编程脉冲之后执行编程验证操作,用于确定选择的存储单元是否达到了目标编程状态。根据本发明,在执行编程验证操作前,通过声明信号TD为高来完成传输TD操作,以便将第一锁存器L1的内容传输到第二锁存器L2中;然后,执行传输T1操作,声明信号T1,以便将原始数据(仍可在第三锁存器L3中获得)重新加载到第一锁存器L1中。
然后执行第一编程验证操作,偏置选择的字线到验证电压VFY2;如果在编程下的存储单元的阈值电压达到第三分布203,则该单元不降低电流,且节点OUT切换到“1”,否则节点OUT保持为“0”。然而该验证操作单独不足以确定具有在第四分布204中的目标阈值电压的存储单元已经达到了目标编程状态;然后恢复初始条件,由于存储到第四锁存器L4中的信息:通过传输T2操作,声明信号T2为高,仅当目标编程状态相应于第四阈值电压分布204时节点OUT返回为“0”(否则,节点OUT保持为“1”)。然后执行第二验证操作,以验证电压VFY3偏置选择的字线:如果存储单元达到了第四分布204,则它不降低电流,且节点OUT再次切换为“1”,否则它保持为“0”。
不管由于在电压VFY2和VFY3下的两个验证操作,节点OUT切换到“1”或没有切换的事实,由于节点V1为“1”的事实,存储单元,即使已经被验证为已被编程到目标编程状态,仍接收下一个编程脉冲,即它接收额外的编程脉冲。
在下一个编程脉冲后,传输TD操作迫使节点V1为“0”,且这样第二锁存器L2不再影响NOR门N1的输出:这样,仅连续的验证操作的结果决定了存储单元是否必须接收下一个编程脉冲。
如同在LSB编程操作的情况中,由于在执行编程验证操作之前第一锁存器L1总是被重新加载(传输T1和传输T2操作)原始数据,因此即使存储单元已经被验证为被编程到目标编程状态,该存储单元仍将继续被验证。因此,有可能以前被验证为被编程到目标状态的存储单元在连续的编程验证操作期间未被验证为已被编程:如果这种情况发生,则存储单元在失败的验证操作之后接收编程脉冲。然而,这种情况非常不可能,因为存储单元在已经被验证为已被编程之后接收的额外的编程脉冲应该保证了足够的裕度。
重复上述操作直到在所有读/写单元705中的第二锁存器L2已经复位为止,即节点V1已经达到“0”:当这种情况发生时,所有读/写单元705中的晶体管M9截止,因此作为有线NAND的输出的节点VER_N降到地电压。这表明MSB编程操作的完成。
可以认识到,除了在数据加载后的初始传输操作外,LSB编程操作和MSB编程操作间的差异在于附加的传输T2操作和在验证电压VFY3下的读取操作,该验证电压VFY3是验证其目标编程状态为“01”(第四分布204)的单元必需的。
图12和13中的图示出在LSB编程操作和相应的验证操作期间包括在存储器件中的一些信号的时序。
擦除
擦除操作打算用于从要被擦除的存储单元的浮动栅极去除电荷,以便使其阈值电压进入第一分布201(相应于状态“11”)。这通过给将被擦除的存储单元施加擦除脉冲来完成。页缓冲器130用于验证在每个擦除脉冲后单元是否达到目标擦除状态。
为了验证存储单元是否达到了擦除条件,有必要考虑位线是否在功能上已经被冗余位线代替(即,如果位线已经是“冗余的(redunded)”):由于可能发生不能擦除属于冗余位线的存储单元,因此除非在擦除验证操作中由于某种原因这些存储单元被排除在外或者不被考虑,否则将不再继续擦除验证操作。这样,必须迫使页缓冲器考虑验证属于冗余位线的存储单元。使用第二锁存器L2的目的是:在冗余位线的情况下,设定第二锁存器L2以便晶体管M9导通。
最初,复位第一锁存器L1和第三锁存器L3,使节点OUT和M为“1”。通过声明信号VSET为高来设置第二锁存器L2,并且设定第四锁存器L4。
如果选择的位线是冗余的,则节点M设置为“0”,而如果位线不是冗余的,则节点M保持为“1”:这通过数据加载操作,适当地设定信号D和D_N来完成。
位线是否冗余的信息通过传输T2操作暂时传输到第二锁存器L2中;然后,该信息通过传输TD操作从第二锁存器L2传输到第三锁存器L3中:结果,如果位线是冗余的,则晶体管M9的栅极被迫接地,否则它处于电源电压Vdd。
然后准备第一锁存器L1用于擦除验证操作,设定节点OUT为“1”(声明信号PRE_N为低且信号R1为高)。
典型地,施加擦除脉冲到包括与栈的所有字线相连的所有存储单元的整个存储单元组。
施加擦除脉冲后,执行擦除验证操作:这包括执行读取操作,执行偏置栈的所有字线到地电压。这样,该栈的所有存储单元被一次验证。
如果该栈的所有单元已经被擦除,则流过它们的电流使位线放电,并且由此使节点SO放电;节点OUT保持为“1”。如果即使该栈的存储单元的单个一个没有被擦除,则该单元不降低电流,因此位线并且由此节点SO不能被放电到地电压。节点SO保持为电源电压Vdd,且节点OUT被带到地电压。
在本发明的实施例中,连续选择位线Ble和Blo,而不用在两个读取之间将节点OUT设置到“1”;这样,仅当已经擦除连接到位线BLe和位线BLo的栈的存储单元时,节点OUT才保持为“1”。
然后执行传输TD操作,以从第一锁存器L1传输信息到第二锁存器L2;如上所述,如果位线是冗余的,则晶体管M9的栅极被设为“1”,且传输TD不改变该设置;代替地如果位线不是冗余的,则晶体管T9的栅极被设为“0”;在这种情况下,如果擦除验证成功(节点OUT为“1”),则传输TD操作使晶体管M9的栅极达到“1”,由此导通它;相反如果验证操作未成功(节点OUT为“0”),则传输TD操作使晶体管M9的栅极处于接地。当在所有读/写单元305中的晶体管M9导通时,擦除阶段成功结束,且有线NAND的输出VER_N变为接地。
获得的执行以前描述的擦除操作的阈值电压的分布可能太广,且这可能对为对属于擦除块的存储单元的随后的编程操作所需要的时间具有负面影响。例如,具有太低的阈值电压的被擦除的存储单元需要比具有较高阈值电压的被擦除的存储单元更多的编程脉冲。
为此,在擦除操作后,执行软编程或软压缩(SOC)操作,其适于使被擦除的存储单元的阈值电压的分布更紧凑。
用于执行SOC的操作类似于用于执行擦除验证操作所需的那些,但是代替施加擦除脉冲,将轻编程脉冲施加到存储单元上。类似于上述的擦除验证操作的验证操作在施加轻编程脉冲后执行,以地电压偏置所有的字线。然后通过声明信号TD执行传输TD操作。重复这些操作直到至少一个存储单元不再被验证为被擦除为止(在每个重复中,施加稍微更高的编程脉冲)。执行最终的验证操作,以稍高于地电压的电压偏置所有字线,其适于确定SOC操作没有将用于被擦除的存储单元的阈值电压的分布移动到太高的值。
这样,本发明阐述了编程电可编程存储单元、特别是非易失性存储单元的方法,其不同于传统的编程方法,不禁止对已经被确定为达到目标编程状态的存储单元执行编程验证操作:在编程下的存储单元组中的每个存储单元随着编程操作的进行而继续经历编程验证操作,直到所有存储单元被确定为编程到相应的目标编程状态为止。
特别地,根据本发明的优选实施例,第一次存储单元被验证为编程到目标编程状态,总是向其施加额外的编程脉冲;其后,假定该存储单元继续被验证为编程到目标编程状态,则其被排除在施加另外的编程脉冲以外。
施加额外的编程脉冲确保了存储单元以足够的安全裕度被编程,因此在编程操作的进行中存储单元不能通过编程验证是非常不可能的。然而,如果在随后的编程操作中发生存储单元使编程验证失败,则其被再一次施加编程脉冲。
在这里描述了本发明,考虑到了其中的一些示例性实施例。本领域技术人员将能理解,在没有脱离所附权利要求中限定的本发明的范围的情况下,例如为满足可能发生的需要,可对所描述的实施例以及其他实施例进行多种修改。
例如,在存储单元被验证为被编程之后立刻施加到该存储单元的额外的编程脉冲的数目可高于一个;这可以取决于由单个编程脉冲赋予的阈值电压移动,以及取决于对应于不同编程状态的阈值电压分布之间的分离。
Claims (9)
1.一种电编程存储单元的方法,该方法包括:
-给存储单元施加至少一个电编程脉冲;
-验证该存储单元达到目标编程状态;以及
-重复所述施加和验证直到确定该存储单元达到所述目标编程状态为止,
其特征在于进一步包括:
-在确定存储单元达到目标编程状态之后,给该存储单元施加至少一个另外的电编程脉冲;
-在施加该另外的编程脉冲后至少再一次进一步验证该存储单元达到目标编程状态,以及
-如果作为所述进一步验证的结果,没有确定该存储单元达到目标编程状态,则给该存储单元施加又一个编程脉冲。
2.权利要求1的方法,其中存储单元是被并行编程的存储单元组的一部分,且其中对将被编程的组的所有存储单元执行所述施加至少一个电编程脉冲、验证目标编程状态的达到以及重复所述施加和验证直到确定达到目标编程状态为止,所述给存储单元施加至少一个另外的电编程脉冲并且进一步验证存储单元的动作与下述操作同时执行:给该组的至少一个另外的存储单元施加至少一个电编程脉冲,以及分别验证该组的该至少一个另外的存储单元是否已经达到相应的目标编程状态。
3.权利要求2的方法,其中所述给存储单元施加又一个编程脉冲与给该组的至少一个另外的存储单元施加至少一个电编程脉冲的操作同时执行。
4.一种用于电编程存储单元的编程电路,包括:
-用于根据存储单元将达到的目标编程状态引起向存储单元选择性施加电编程脉冲的装置;以及
-用于验证存储器达到目标编程状态的装置,
其特征在于:
-引起电编程脉冲的选择性施加的所述装置适于在用于验证的所述装置已经确定存储单元达到目标编程状态之后,引起至少一个另外的编程脉冲的施加;
-用于验证的所述装置适于在该至少一个另外的编程脉冲的所述施加之后,至少再一次进一步验证存储单元达到目标编程状态,以及
用于引起电编程脉冲的选择性施加的所述装置适于在作为所述进一步验证的结果没有确定该存储单元达到目标编程状态的情况下,引起给该存储单元又一个编程脉冲。
5.权利要求4的编程电路,包括:
-第一锁存装置(L1),其适于锁存相应于目标编程状态的数据,当确定存储单元达到目标编程状态时,第一锁存装置的内容被用于验证的所述装置修改;
-用于给存储单元选择地施加电编程脉冲的电路(N1,M13,BLSe),所述电路响应于第一锁存装置的内容;
-第二锁存装置(L3),其在操作上耦合(M5,M6)到第一锁存装置,用于保存相应于目标编程状态的所述数据;以及
-第三锁存装置(L2),第一锁存装置在操作上与其耦合(M10,M11),用于存储是否已经确定存储单元达到目标编程状态的指示,用于给存储单元选择地施加电编程脉冲的所述电路进一步响应于第三锁存装置的内容。
6.权利要求5的编程电路,其中存储单元适于存储包括至少两数据比特的数据字,所述至少两数据比特包括第一数据比特组和第二数据比特组,该编程电路进一步包括:
-存储单元读取电路,其适于确定存储在存储单元中的第一数据比特组的值,以及适于在第一锁存装置中存储相应于所确定的第一数据比特组值的值;
-在操作上耦合到所述第一锁存装置和所述第二锁存装置的装置,该装置适于组合存储在第二锁存装置中的值和存储在第一锁存装置中且相应于所确定的第一数据比特组值的值,以便获得组合值,所述组合值限定存储单元的目标编程状态;
-用于传输所述组合值到所述第一锁存装置中的装置。
7.权利要求6的编程电路,其中在操作上耦合到所述第一锁存装置和所述第二锁存装置的所述装置包括第四锁存装置。
8.一种电可编程半导体存储器,包括多个存储单元,以及用于电编程所述多个的所选存储单元的编程电路,其特征在于所述编程电路根据权利要求4到7中的任何一项来实现。
9.权利要求8的电可编程半导体存储器,其中所述多个存储单元包括存储单元的NAND配置,并且这些存储单元分组成存储页,且所述编程电路被包括在用于读取/编程所述存储页的页缓冲器中。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
EP06115812A EP1870905B1 (en) | 2006-06-21 | 2006-06-21 | Method and circuit for electrically programming semiconductor memory cells |
EP06115812.7 | 2006-06-21 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101123118A true CN101123118A (zh) | 2008-02-13 |
CN101123118B CN101123118B (zh) | 2011-11-30 |
Family
ID=37431921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN2007101494278A Active CN101123118B (zh) | 2006-06-21 | 2007-06-21 | 用于电编程半导体存储单元的方法及电路 |
Country Status (4)
Country | Link |
---|---|
US (1) | US7499332B2 (zh) |
EP (1) | EP1870905B1 (zh) |
CN (1) | CN101123118B (zh) |
DE (1) | DE602006011451D1 (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103155044A (zh) * | 2010-07-21 | 2013-06-12 | 莫塞德技术公司 | 用于闪速存储器的多页编程方案 |
CN108615539A (zh) * | 2015-12-17 | 2018-10-02 | 旺宏电子股份有限公司 | 用于编程可编程电阻性存储元件的方法与设备 |
CN110275672A (zh) * | 2018-03-13 | 2019-09-24 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN110706730A (zh) * | 2015-08-06 | 2020-01-17 | 意法半导体(鲁塞)公司 | 用于管理eeprom存储器单元中的数据的写入周期的方法和系统 |
CN112447244A (zh) * | 2019-09-03 | 2021-03-05 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN113284540A (zh) * | 2020-02-19 | 2021-08-20 | 爱思开海力士有限公司 | 存储器装置及其操作方法 |
WO2023028846A1 (zh) * | 2021-08-31 | 2023-03-09 | 长江存储科技有限责任公司 | 存储器、存储器的编程方法及编程验证方法、存储器系统 |
Families Citing this family (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7393739B2 (en) * | 2006-08-30 | 2008-07-01 | International Business Machines Corporation | Demultiplexers using transistors for accessing memory cell arrays |
US7920430B2 (en) * | 2008-07-01 | 2011-04-05 | Qimonda Ag | Integrated circuits and methods for operating the same using a plurality of buffer circuits in an access operation |
KR101532754B1 (ko) | 2008-09-22 | 2015-07-02 | 삼성전자주식회사 | 비휘발성 메모리 장치의 프로그램 방법 |
KR101066686B1 (ko) * | 2009-06-29 | 2011-09-21 | 주식회사 하이닉스반도체 | 반도체 메모리 소자 및 이의 독출 방법 |
KR101616097B1 (ko) * | 2009-11-11 | 2016-04-28 | 삼성전자주식회사 | 불휘발성 메모리 장치의 프로그램 방법 |
KR101802815B1 (ko) | 2011-06-08 | 2017-12-29 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 불휘발성 메모리 장치의 프로그램 방법 |
KR101676816B1 (ko) | 2010-02-11 | 2016-11-18 | 삼성전자주식회사 | 플래시 메모리 장치 및 그것의 프로그램 방법 |
KR101193059B1 (ko) * | 2011-04-21 | 2012-10-22 | 에스케이하이닉스 주식회사 | 비휘발성 메모리 장치 및 그 동작 방법 |
JP2013196731A (ja) | 2012-03-21 | 2013-09-30 | Toshiba Corp | 不揮発性半導体記憶装置 |
KR101980676B1 (ko) * | 2012-05-25 | 2019-05-22 | 에스케이하이닉스 주식회사 | 메모리 및 그 검증 방법 |
KR102005709B1 (ko) * | 2012-10-22 | 2019-08-01 | 삼성전자 주식회사 | 메모리 장치 구동 방법 및 메모리 시스템 |
KR102090677B1 (ko) * | 2013-09-16 | 2020-03-18 | 삼성전자주식회사 | 비휘발성 메모리 장치 및 그것의 동작 방법 |
KR20150085375A (ko) * | 2014-01-15 | 2015-07-23 | 삼성전자주식회사 | 메모리 컨트롤러의 동작방법 및 메모리 컨트롤러 |
KR20160039486A (ko) * | 2014-10-01 | 2016-04-11 | 에스케이하이닉스 주식회사 | 반도체 장치 |
JP6928698B1 (ja) * | 2020-08-05 | 2021-09-01 | ウィンボンド エレクトロニクス コーポレーション | 半導体装置および読出し方法 |
KR20220039282A (ko) * | 2020-09-22 | 2022-03-29 | 에스케이하이닉스 주식회사 | 컨트롤러 및 이를 포함하는 메모리 시스템 |
CN112270947B (zh) * | 2020-10-29 | 2023-08-04 | 长江存储科技有限责任公司 | 用于存储器的编程方法和装置 |
Family Cites Families (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP3920501B2 (ja) * | 1999-04-02 | 2007-05-30 | 株式会社東芝 | 不揮発性半導体記憶装置及びそのデータ消去制御方法 |
JP4249352B2 (ja) | 1999-11-09 | 2009-04-02 | 富士通株式会社 | 不揮発性半導体記憶装置 |
US6738289B2 (en) | 2001-02-26 | 2004-05-18 | Sandisk Corporation | Non-volatile memory with improved programming and method therefor |
US6466480B2 (en) * | 2001-03-27 | 2002-10-15 | Micron Technology, Inc. | Method and apparatus for trimming non-volatile memory cells |
JP3891863B2 (ja) * | 2002-03-07 | 2007-03-14 | 松下電器産業株式会社 | 半導体装置及び半導体装置の駆動方法 |
US6937520B2 (en) * | 2004-01-21 | 2005-08-30 | Tsuyoshi Ono | Nonvolatile semiconductor memory device |
US6888758B1 (en) | 2004-01-21 | 2005-05-03 | Sandisk Corporation | Programming non-volatile memory |
US7450426B2 (en) * | 2006-10-10 | 2008-11-11 | Sandisk Corporation | Systems utilizing variable program voltage increment values in non-volatile memory program operations |
-
2006
- 2006-06-21 DE DE602006011451T patent/DE602006011451D1/de active Active
- 2006-06-21 EP EP06115812A patent/EP1870905B1/en active Active
-
2007
- 2007-06-21 CN CN2007101494278A patent/CN101123118B/zh active Active
- 2007-06-21 US US11/766,493 patent/US7499332B2/en active Active
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103155044A (zh) * | 2010-07-21 | 2013-06-12 | 莫塞德技术公司 | 用于闪速存储器的多页编程方案 |
US9484097B2 (en) | 2010-07-21 | 2016-11-01 | Conversant Intellectual Property Management Inc. | Multipage program scheme for flash memory |
CN110706730A (zh) * | 2015-08-06 | 2020-01-17 | 意法半导体(鲁塞)公司 | 用于管理eeprom存储器单元中的数据的写入周期的方法和系统 |
CN108615539A (zh) * | 2015-12-17 | 2018-10-02 | 旺宏电子股份有限公司 | 用于编程可编程电阻性存储元件的方法与设备 |
CN108615539B (zh) * | 2015-12-17 | 2021-01-05 | 旺宏电子股份有限公司 | 用于编程可编程电阻性存储元件的方法与设备 |
CN110275672A (zh) * | 2018-03-13 | 2019-09-24 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN110275672B (zh) * | 2018-03-13 | 2022-11-01 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN112447244A (zh) * | 2019-09-03 | 2021-03-05 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN112447244B (zh) * | 2019-09-03 | 2024-03-19 | 爱思开海力士有限公司 | 存储装置及其操作方法 |
CN113284540A (zh) * | 2020-02-19 | 2021-08-20 | 爱思开海力士有限公司 | 存储器装置及其操作方法 |
CN113284540B (zh) * | 2020-02-19 | 2024-01-26 | 爱思开海力士有限公司 | 存储器装置及其操作方法 |
WO2023028846A1 (zh) * | 2021-08-31 | 2023-03-09 | 长江存储科技有限责任公司 | 存储器、存储器的编程方法及编程验证方法、存储器系统 |
Also Published As
Publication number | Publication date |
---|---|
DE602006011451D1 (de) | 2010-02-11 |
US20080013378A1 (en) | 2008-01-17 |
EP1870905B1 (en) | 2009-12-30 |
EP1870905A1 (en) | 2007-12-26 |
US7499332B2 (en) | 2009-03-03 |
CN101123118B (zh) | 2011-11-30 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101123118B (zh) | 用于电编程半导体存储单元的方法及电路 | |
US7336538B2 (en) | Page buffer circuit and method for multi-level NAND programmable memories | |
US8305813B2 (en) | Nonvolatile memory device and method of operating the same | |
US6178115B1 (en) | Semiconductor memory device and storage method thereof | |
CN101127240B (zh) | 降低非易失性存储器存储元件间耦合效应的方法 | |
CN100547688C (zh) | 非易失性存储装置的编程校验方法 | |
US8174896B2 (en) | Nonvolatile memory device and method of operating the same | |
JP5150245B2 (ja) | 半導体記憶装置 | |
US7336532B2 (en) | Method for reading NAND memory device and memory cell array thereof | |
KR101160748B1 (ko) | 불휘발성 반도체 기억 장치 및 메모리 시스템 | |
CN101796591B (zh) | 使用针对改进感测的不同参考电平的非易失性存储器中的粗略/精细编程验证 | |
CN101199024B (zh) | 利用改变字线条件来补偿较慢擦除的存储器单元以擦除非易失性存储器 | |
CN107408410B (zh) | 用于非易失性存储器的多状态编程 | |
CN101584006A (zh) | 非易失性存储器中的经分割的软编程 | |
CN101595529A (zh) | 非易失性存储器软编程中的受控升压 | |
CN101689400A (zh) | 基于阈值电压分布的动态检验 | |
CN100505100C (zh) | 多级闪存设备与编程方法 | |
EP1870901A1 (en) | Page buffer for multi-level nand flash memories | |
US7952935B2 (en) | Nonvolatile memory device and program or verification method using the same | |
CN107154275B (zh) | 半导体存储装置及输入数据的验证方法 | |
KR100938044B1 (ko) | 불휘발성 메모리 장치 및 그 멀티 레벨 셀 프로그램 방법 | |
JP4029469B2 (ja) | 不揮発性半導体記憶装置およびそのデータ書き込み方法 | |
US9355714B2 (en) | Nonvolatile semiconductor memory device and method of controlling the same | |
EP1748445B1 (en) | Page buffer for multi-level NAND programmable memories | |
KR100965075B1 (ko) | 불휘발성 메모리 장치의 패스/페일 체크부 및 그를 이용한 불휘발성 메모리 장치의 프로그램 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |