保持非挥发性存储器存储单元电流检测窗口的方法及系统与流程

文档序号:14186965阅读:101来源:国知局

本发明涉及存储器领域,特别是涉及一种在对非挥发性存储器的编程擦除操作之后对存储单元电流检测窗口的持久保持的长期保持非挥发性存储器存储单元电流检测窗口的方法及系统。



背景技术:

非挥发性存储单元在其编程状态期间可具有比在其擦除状态期间更高的电流。这些状态期间的单元电流的差异可对应于最大检测窗口,在该最大检测窗口内,可通过用作包括非挥发性存储单元的存储器电路的一部分的检测放大器将编程状态与擦除状态区分开,非挥发性存储单元的电流可以是与存储器电路相关联的因素的函数,例如数据保持时间、耐久性、信号噪声和检测放大器偏移。这可以导致实际检测窗口小于最大检测窗口的宽度。



技术实现要素:

本发明的目的在于克服现有技术的不足,提供一种保持非挥发性存储器存储单元电流检测窗口的方法及系统。

本发明的目的是通过以下技术方案来实现的:一种保持非挥发性存储器存储单元电流检测窗口的方法,包括以下步骤:

在状态机中实现编程循环计数器;

预设非挥发性存储器存储单元的电流阈值、所实现的编程循环计数器的时间步长和最大值;

复位所实现的编程循环计数器;

在所述非挥发性存储器的预设的一组存储器位置的每个存储器位置编程,其包括以下步骤:

基于其寻址从每个存储器位置读取数据;

确定来自所寻址的每个存储器位置的读取数据与要被编程到其的数据不匹配;

在确定所述读取数据与要编程的数据之间的失配之后,产生编程脉冲以在所述预设时间步长寻址的每个存储器位置处将所述非挥发性存储器编程;以及

在产生与所寻址的每个存储器位置的编程相关的编程脉冲之后递增编程循环计数器;

确定递增后的编程循环计数器达到其预设的最大值;

基于所述编程循环计数器已经达到其预设最大值的确定结束对所述非挥发性存储器的编程操作;以及

在所述编程操作终止之后,基于所述编程循环计数器结合每个被寻址的存储器位置和编程循环计数器的预设最大值实现所述编程的预设时间步长,在高于所述预设阈值的水平处保持所述非挥发性存储器的每个编程的存储单元的电流。

所述方法还包括以下步骤:

预设所述非挥发性存储器存储单元的电流的另一阈值;以及

在对所述非挥发性存储器存储单元执行擦除操作之后,将所述每个存储单元的电流保持在低于预设的另一阈值的水平。

所述方法还包括以下步骤:

基于在高于所述预设阈值的水平的存储单元编程状态中的电流的维持以及在所述存储器的擦除状态下的电流的维持,所述非挥发性存储器的检测放大模块的电流检测窗口的宽度处于所述非挥发性存储器的期望水平。

所述方法还包括使用定序器和一组控制寄存器来实现所述状态机。

所述方法还包括用脉冲发生器电路和逻辑门和触发器中的至少一个来实现所述定序器。

所述方法还包括以下步骤:

将所述编程循环计数器实施为所述控制寄存器中的位计数器;以及

实现编程循环计数器的最大值作为所述控制寄存器中的寄存器。

所述方法还包括通过所述非挥发性存储器的处理器和存储控制器中的至少一个来实现所述状态机。

一种保持非挥发性存储器存储单元电流检测窗口的方法,包括以下步骤:

在状态机中实施擦除循环计数器;

预设非挥发性存储器存储单元的电流的阈值、所实施的擦除循环计数器的时间步长和最大值;

复位所实施的擦除循环计数器;

在预设的一组存储器位置的每个存储器位置对所述非挥发性存储器执行擦除操作,所述预设的每个存储器位置处的擦除操作包括:

基于每个存储器位置的寻址从所述每个存储器位置读取数据位;

确定来自所寻址的每个存储器位置的读取数据位与仅包括极性等于0和1之一的位的数据字不匹配;

在确定所述读取数据位与所述数据字之间的不匹配的情况下产生擦除脉冲以擦除在寻址所述预设时间步长的每一存储器位置处的所述非挥发性存储器的所述读取数据位,所述数据字仅包含极性等于0和1之一;以及

在产生与所寻址的每个存储器位置的读取数据位擦除相关的擦除脉冲之后递增所述擦除循环计数器;

确定递增的擦除循环计数器达到其预设的最大值;

基于所述擦除循环计数器已经达到其预设最大值的确定结束所述非挥发性存储器上的擦除操作;以及

在所述擦除操作结束之后,基于所述擦除循环计数器实施方式结合从所寻址的每个存储器位置和擦除循环计数器的预设最大值擦除读取数据位的预设时间步长,将所述非挥发性存储器的每个擦除存储单元的电流保持在低于所述预设电流阈值。

所述方法还包括以下步骤:

预设所述非挥发性存储器存储单元的电流的另一阈值;以及

在对所述非挥发性存储器存储单元进行编程操作之后,将所述每个存储单元的电流保持在高于所述预设的另一电流阈值。

所述方法还包括以下步骤:

基于在低于预设电流阈值的存储单元的擦除状态下的电流的维持以及在存储器的编程状态中的电流的维持,所述非挥发性存储器的检测放大模块的电流检测窗口的宽度处于所述非挥发性存储器的期望电流。

所述方法还包括使用定序器和一组控制寄存器来实现所述状态机。

所述方法还包括用脉冲发生器电路以及逻辑门和触发器中的至少一个来实现所述定序器。

所述方法还包括以下步骤:

将所述擦除循环计数器实施为所述控制寄存器中的位计数器;以及

实现擦除循环计数器的最大值作为控制寄存器集合中的寄存器。

所述方法还包括通过所述非挥发性存储器的处理器和存储控制器中的至少一个来实现所述状态机。

一种保持非挥发性存储器存储单元电流检测窗口的系统,包括存储单元的非挥发性存储器以及状态机,所述状态机与所述非挥发性存储器耦合,所述状态机被配置为执行其中的指令序列,所述指令序列与在所述非挥发性存储器上执行的编程操作和擦除操作中的至少一个相关,其中,基于在所述编程操作期间执行所述指令序列时,所述状态机还被配置为:

在其中实现编程循环计数器,预设用于所述非挥发性存储器存储单元的电流的第一阈值、所实现的编程循环计数器的第一时间步长和最大值,复位已实现的编程循环计数器,在所述预设的存储器位置的每个存储器位置编程所述非挥发性存储器,在所述预设的每个存储器位置处的所述编程包括:

基于每个存储器位置的寻址从所述每个存储器位置读取数据,确定来自所寻址的每个存储器位置的读取数据与要被编程到其的数据不匹配,在确定读取数据和要编程的数据之间的失配之后,产生编程脉冲以在寻址于预设的第一时间步长的每个存储器位置处对所述非挥发性存储器编程,以及在产生与所寻址的每个存储器位置的编程相关的编程脉冲之后递增所述编程循环计数器,确定递增后的编程循环计数器达到其预设的最大值,基于所述编程循环计数器已经达到其预设最大值的确定结束对所述非挥发性存储器的编程操作,以及

在所述编程操作终止之后,基于所述编程循环计数器结合编程所寻址的每个存储器位置和编程循环计数器的预设最大值实现预设的第一时间步长,将所述非挥发性存储器的每个编程的存储单元的电流保持在高于所述预设的第一电流阈值处;

且其中,基于在所述擦除操作期间执行所述指令序列时,所述状态机还被配置为:

在其中实现擦除循环计数器,预设非挥发性存储器的存储单元的电流的第二阈值,第二时间步长和所实现的擦除循环计数器的最大值,复位实现的擦除循环计数器,在所述预设的存储器位置的每个存储器位置对所述非挥发性存储器执行擦除操作,所述预设的每个存储器位置处的擦除操作包括:

基于其寻址从每个存储器位置读取数据位,确定来自所寻址的每个存储器位置的读取数据位与仅包括极性等于0和1之一的位的数据字不匹配;在确定读取数据位和仅包括极性相等的数据字之间的失配之后,产生擦除脉冲以擦除在寻址所述预设第二时间步长的每个存储器位置处的非挥发性存储器的读取数据位至0和1,和在产生与所寻址的每个存储器位置的读取数据位的擦除相关的擦除脉冲之后递增擦除循环计数器,确定递增的擦除循环计数器达到其预设的最大值,基于所述擦除循环计数器已经达到其预设最大值的确定结束对所述非挥发性存储器的擦除操作,在所述擦除操作终止之后,基于所述擦除循环计数器实施方式结合所述从所寻址的每个存储器位置和擦除循环计数器的预设最大值擦除读取数据位预设的第二时间步长,维持所述非挥发性存储器的每个被擦除存储单元的电流在低于所述预设第二电流阈值。

所述系统还包括耦合到所述非挥发性存储器的检测放大模块,其中所述状态机还被配置为基于在高于预设的第一电流阈值的存储单元的编程状态中的电流的维持和在低于预设的第二电流阈值的存储单元的擦除状态下的电流的维持,将所述检测放大模块的电流检测窗口的宽度维持在其期望电流阈值。

所述状态机用定序器和一组控制寄存器来实现。

所述序列使用脉冲发生器电路以及逻辑门和触发器中的至少一个来实现。

所述系统包括以下至少一个:

编程循环计数器被实现为所述控制寄存器中的位计数器,并且编程循环计数器的最大值被实现为所述控制寄存器中的寄存器,以及

擦除循环计数器还被实现为所述控制寄存器中的位计数器,并且擦除循环计数器的最大值也被实现为所述控制寄存器中的寄存器。

所述状态机通过所述非挥发性存储器的处理器和存储控制器中的至少一个来实现。

所述非挥发性存储器的每个存储单元包括浮置多晶硅栅极和单层多晶硅。

本发明的有益效果是:本发明所公开的方法及系统可以用于实现各个方面的任何装置来实现,并且可以体现一组指令的非暂时性可机读介质的形式来执行,当由机器执行时,使得机器执行本发明公开的任何操作。

附图说明

图1为本发明保持非挥发性存储器存储单元电流检测窗口的方法及系统中包括多行和多列存储单元的非挥发性存储器中的示例性电流分布的曲线图;

图2为本发明根据一个或多个实施例的非挥发性存储器系统的示意图;

图3为本发明两行和两列的示例性存储器阵列的示意图。

图4为本发明对图2的非挥发性存储器系统的读取存取操作的时序波形。

图5为本发明中详细描述根据一个或多个实施例的在执行具有在图2的非挥发性存储器系统上的验证的程序和读指令序列期间所涉及的操作的流程图。

图6为对图2的非挥发性存储器系统的程序存取操作的时序波形。

图7为程序状态机的示例实现的示意图,其是图2的非挥发性存储器系统的状态机的一部分。

图8为详细描述根据一个或多个实施例的在执行具有在图2的非挥发性存储器系统上的验证的擦除和读取指令序列期间所涉及的操作的流程图。

图9为对图2的非挥发性存储器系统的擦除存取操作的时序波形。

图10为擦除状态机的示例实现的示意图,擦除状态机是图2的非挥发性存储器系统的状态机的一部分。

图11为图2的非挥发性存储器系统的示例存储单元电流分布的曲线图。

图12为图2的非挥发性存储器系统的状态机的示例替代实现的示意图。

图13为详细描述图2的非挥发性存储器系统的状态机中所执行的操作的过程流程图,其执行与其非挥发性存储器上执行的编程操作有关的指令序列,根据一个或多个实施例。

图14为详细描述图2的非挥发性存储器系统的状态机中所执行的操作的过程流程图。

具体实施方式

下面结合附图进一步详细描述本发明的技术方案,但本发明的保护范围不局限于以下所述。

如下所述的实施例可以用于提供在对非挥发性存储器的编程擦除操作之后对存储单元电流检测窗口进行持久维护的方法,器件和/或系统。虽然已经参照具体示例实施例描述了本实施例,但是显然,在不脱离各种实施例的更广泛的精神和范围的情况下,可以对这些实施例进行各种修改和改变。

在其编程状态期间的非挥发性存储单元(例如,如共同拥有的美国专利no.7,983,081中所描述的)的电流可以比在其擦除状态期间的电流高得多。在编程和擦除状态期间单元电流的差异可对应于最大检测窗口,在该最大检测窗口内,可通过用作包括非挥发性存储单元的存储器电路的一部分的检测放大器将编程状态与擦除状态区分开。检测放大器可检测表示存储在存储单元中的数据位(′1′或′0′)的信号。在一个或多个实施例中,数据极性“0”可以与存储单元的擦除状态相关联,数据极性“1”可以与存储单元的编程状态相关联。

应注意,在一个或一个以上替代实施例中,数据极性′0′可与存储单元的编程状态相关联,且数据极性′1′可与存储单元的擦除状态相关联。在本发明的其余部分中,擦除状态被指派数据位′0′,且编程状态被指派数据位′1′。当执行对存储单元的写入时,所述存储单元可首先被擦除,然后被所需数据编程。当要写入数据位“0”时,可以禁止对存储单元的编程操作,并且存储单元可以保持在其擦除状态。当要写入数据位“1”时,可能发生存储单元的实际编程,并且存储单元可以在编程操作之后转变到编程状态。在一个或多个实施例中,由于上述存储单元电流分布的分布是与其存储器电路相关联的因素(例如数据保持时间、耐久性、信号噪声和检测放大器偏移)的函数,实际检测窗口可以小于最大检测窗口的宽度。

图1示出了包括多行和多列存储单元(例如,共同拥有的美国专利no.7,983,081中描述的存储单元)的非挥发性存储器中的示例电流分布。图1(a)示出了非挥发性存储单元在其编程30μs之后的电流分布;电流显示为μa/单元;在制造非挥发性存储器的硅芯片之后,非挥发性存储单元首先被擦除80ms。应当注意,向存储单元写入数据可以首先涉及擦除该单元,然后用要存储的数据对该单元编程。

图1(a)示出了被分成两组的单元电流分布:(i)左侧的单元电流(icell)小于7μa/单元的组代表非挥发性存储器擦除之后的单元电流分布;ier表示擦除状态下的单元电流的最大值,右侧的单元电流(icell)高于18μa/单元的组表示非挥发性存储器的编程后的单元电流分布;ipg表示编程状态下的单元电流的最小值。ier和ipg之间的差/间隙可以是最大检测窗口(msw),其中编程状态可以通过检测放大器与擦除状态区分开。在图1(a)所示的该示例中,msw为11μa/单元。

在一个或多个实施例中,通过将参考电流(例如,10μa/单元)设置在msw内,处于擦除状态的所有存储单元可具有小于参考电流的电流,且处于编程状态中的所有存储单元可具有大于参考电流的电流。在一个或多个实施例中,将单元电流与参考电流进行比较的检测放大器因此可以对处于擦除状态的存储单元和处于编程状态的存储单元产生正确的数据极性。

在一个或一个以上实施例中,存储单元的耐久性是所述存储单元在其单元电流落入检测窗口之前可经历的写入(编程擦除)循环的数目,以导致错误数据位在数据检测之后读取极性。图1示出了在(a)1个写循环,(b)1000个写循环和(c)5000个写循环之后非挥发性存储器的单元电流分布。再次,如上所述,当以80ms的固定时间擦除非挥发性存储器并且对于每个编程和擦除操作以30μs的固定时间编程时,获得结果。

图1(a),1(b)和1(c)中的msw分别为11μa/单元,8μa/单元和6μa/单元。因此,随着非挥发性存储器的写入循环的数目增加,检测窗口减小。检测窗口宽度(sww)的减小可以由在擦除状态中单元电流分布的扩展引起,其通过在擦除状态下单元电流的总值的增加而实现。上述增加指示擦除操作可能对编程操作失去接地。在一个或多个实施例中,随着编程和擦除操作的数量增加,越来越多的电子可以被捕获在存储单元的一个或多个浮栅中,并且不能通过擦除操作被抽空。在一个或多个实施例中,被俘获的电子可以降低存储单元的一个或多个隧穿晶体管的整体阈值电压,这导致擦除状态存储单元中的非挥发性存储单元的单元电流分布的增加。

如果参考电流保持在10μa/单元,则在擦除状态中的一些存储单元的上述检测的失败可能发生在5000个循环的耐久期间或之前。这可能是由于过度编程或欠擦除非挥发性存储器造成的,随后,随着到存储单元的写入循环的数目增加,其影响可能累积,导致数据读取失败。整个检测窗口也可以随着经过存储单元的循环的数目的增加而减小。这种效应可以由在与存储单元相关联的隧道氧化物和/或氧化物-硅界面中捕获的陷阱和电荷的数量的增加引起。

在一个或多个实施例中,可以通过使用编程和擦除算法来减轻检测窗口的移位和变窄,该编程和擦除算法确保处于编程状态的所有存储单元具有高于ipg的单元电流,并且擦除状态具有低于ier的单元电流。这可以确保在每个擦除和/或编程循环之后保持检测窗口的宽度。

图2示出根据一个或多个实施例的非挥发性存储器系统200。在示例实施例中,非挥发性存储器系统200可以包括1000位单多晶硅双晶体管单电容非挥发性存储单元。存储单元可以各自包括浮置多晶硅栅极和单层多晶硅(参见共同拥有的美国专利no.7,983,081)。其它类型的存储单元在本文所讨论的示例性实施例的范围内。

非挥发性存储器系统200可以被配置为具有64个字,每个字具有16位的大小。显然,上述字和位的大小仅仅是为了说明的目的,并且其它大小在这里讨论的示例性实施例的范围内。非挥发性存储器系统200可以包括6位的地址(ad)总线,16位的数据(d)总线,程序(pg)控制信号,擦除(er)控制信号,读取信号和时钟(clk)信号作为输入。非挥发性存储器系统200的输出可以包括16位的读数据总线(q)和编程擦除结束(peend)信号。pg,er和rd在clk的上升沿检测到高时可以分别指示当前存储器访问是相应的编程周期,擦除周期和读取周期。在程序访问期间,可以从d输入程序数据。在读访问期间,读数据可以输出到q。

如图2所示,非挥发性存储器系统200可以包括存储模块210、状态机220、存取接口240、数据寄存器260、检测放大模块270、数据比较模块280和检测参考发生器290。在一个或多个实施例中,存储模块210可以包括一个或多个存储器阵列212,行译码器/字线(wl)/控制栅极(cg)驱动模块214和列译码器/公共(com)位线(bl)驱动模块216。图3示出了两行和两列的示例存储器阵列300;所述示例性存储器阵列300可以是存储器阵列212的一部分。显然,基于图2-3中的示例性存储器阵列300/存储器阵列212的示意图,非挥发性存储器设计领域可以包括更多行和列的存储器阵列。

此外,存储单元可以类似于共同拥有的美国专利no.7,983,081中描述的存储单元。回到图3,存储单元可以通过控制栅极信号cg0和cg1、字线wl0和wl1、公共信号com0和com1、位线bl0和bl1以及深n-井信号dnw来存取。图3以适当顺序(晶体管302-324)示出存储单元(326-332)的组成晶体管元件。前述存储单元信号可在存储器存取循环期间被驱动到不同电压:擦除,编程和读取。

参考图2-3,行解码器/wl/cg驱动模块214的行解码器可以解码来自存取接口240的行地址,并激活相应的cg信号和wl信号。cg,wl和dnw信号可以被驱动到用于不同存储器操作的特定电压。必要的电压可由并入行解码器/wl/cg驱动模块214中的不同电压发生器(未示出)产生。列解码器/com/bl驱动模块216的列解码器可以解码来自存取接口240的列地址、相应的com信号和bl信号。再次,在不同存储器操作期间可以将com和bl信号驱动到特定电压,并且由结合在列解码器/com/bl驱动模块216中的不同电压发生器(未示出)产生所需的电压。

在共同拥有的美国专利no.7,983,081中详细列出了在编程、擦除和读取操作期间不同的cg,wl,dnw,com和bl电压。状态机220可以从存取接口240接收存储器存取信号,并且输出控制信号:用于利用验证操作(将在下面讨论)控制编程操作的pgc和pgpulse,用于再次验证操作来控制擦除操作的erc和erpulse(下面将讨论)以及用于控制存储模块210的读取操作的rdc和rdv。

访问接口240可将存储模块210外部的输入控制和地址信号ad,er,pg,rd和clk锁存和缓冲到状态机220和非挥发性存储器系统200的其它功能模块。clk可以提供用于控制存储模块210的操作的同步定时。访问接口240还可以向来自状态机220的外部输出控制信号peend提供锁存和缓冲。peend的高状态的确定可以用信号通知程序的结束或擦除操作。

数据寄存器260可以包括数据寄存器,用于在编程操作期间锁存来自d的输入写入数据并将所述锁存的输入写入数据提供给列解码器/com/bl驱动模块216。检测放大模块270可使用由检测参考发生器290提供的检测参考电流irf确定从列解码器/com/bl驱动模块216输入的数据的极性。通过检测放大模块270的所得到的检测数据可输出到q用于驱动到外部输出。所述检测数据还可以被输入到数据比较模块280。

数据比较模块280可以具有两组输入:(i)来自检测放大模块270的输出的q数据,以及(ii)从数据寄存器260的输出写入数据。这两组输入数据可以在每个编程和擦除操作期间进行比较,然后可以将比较结果输出到信号match。当驱动为高时,match信号可以指示q总线中的检测数据与写数据匹配(例如,在写数据总线中)。数据比较模块280可以由在编程操作和擦除操作的验证阶段期间由状态机220生成的读取验证信号rdv激活。

检测参考发生器290可产生参考电流irf及输出irf至检测放大模块270。在检测参考发生器290内,具有不同电流输出的三个电流源可在不同存储器操作期间选择性地选通到输出irf信号。在读取操作期间,耦合在ird电流源和输出irf之间的srd开关可以被接通。同样地,在编程操作期间,可以接通耦合在ipg电流源和输出irf之间的spg开关。在擦除操作期间,耦合在ier电流源和输出irf之间的ser开关可以被导通。参考电流ipg和ier可以确定检测窗口的上限和下限。在典型情况下,ird可以选择为具有等于ipg和ier之和除以2((ipg+ier)/2)的值。这可以将ird放置在检测窗口的中间。

通常,所有输入信号可以与clk的上升沿同步。然而,应注意,涉及将输入信号同步到clk的下降沿的其它实施方案也在本文所论述的示范性实施例的范围内。输入信号pg,er,rd和ad可以在clk的上升沿由访问接口240内的数据锁存器锁存。来自d总线的输入数据也可以在clk的上升沿由数据寄存器260中的数据锁存器锁存。

图4示出了非挥发性存储器系统200中的读取存取操作的时序波形。读取操作可以从外部存储器存取代理(未示出)开始,将读取地址置于ad中,并将读取控制信号rd驱动为高。读地址(a和b)和rd的高状态可以在clk的下一个上升沿被锁存在存取接口240中。锁存的行地址可以被路由到行解码器/字线(wl)/控制门(cg)驱动模块214的行解码器的输入。行解码器可以解码行地址并激活相应的字线wl以及存储模块210的存储器阵列212中的控制栅极cg。锁存的列地址可以被路由到列解码器/com/bl驱动模块216的列解码器的输入。

列解码器可以解码列地址并激活相应的公共com和位线bl。然后可以激活由行和列地址选择的存储器阵列212的存储单元,随后可以将其单元电流流到检测放大模块270的输入。在存取接口240中,可以锁存rd的高状态,并且锁存输出可以被输入到状态机220;rdc可以从状态机220输出。然后可以将rdc路由到检测放大模块270的输入以激活其中的检测放大器。在检测参考发生器290中,rdc的高状态可致使开关srd导通;因此,读取参考电流ird可被路由到irf且输入到检测放大模块270。在检测放大模块270中,可通过将读取单元电流(例如,icc)与参考电流ird进行比较来确定输出数据极性。然后可以将检测放大模块270的输出(数据)呈现给q总线(数据)。

在程序存取操作期间,本文所论述的示范性实施例可在状态机220上(或在通用处理器(例如,微处理器)实施方案上)执行程序序列和读取指令。在一个或多个实施例中,上述指令序列可以取代通常采用的传统固定时间编程。在一个或多个实施例中,代替使用长的固定编程时间(例如,50μs),可以使用具有小的编程时间步长(例如,5μs)的编程验证循环。图5示出根据一个或多个实施例的详细描述在执行程序序列期间所涉及的操作和具有验证的读指令的流程图。在一个或多个实施例中,操作502可以涉及复位编程循环计数器(pgm_cnt)、清除编程擦除结束标志peend和编程擦除失败标志pefail。

在一个或一个以上实施例中,操作504可涉及基于其寻址而发出读取操作以从预期存储器位置读取数据。在一个或多个实施例中,操作506可以涉及将读取数据与要编程的数据进行比较。在一个或多个实施例中,如果读取数据与要编程的数据匹配,则操作508可以涉及设置peend标志和终止程序访问。在一个或多个实施例中,如果读取数据与要编程的数据不匹配,则操作510可以涉及检查编程循环计数器是否达到其最大值(pgm_cnt_max)。

在一个或一个以上实施例中,如果编程循环计数器尚未达到pgm_cnt_max,那么操作512可涉及产生编程脉冲(pgpulse)以在所寻址位置处将存储器阵列212的存储单元编程预设编程时间步长。在一个或多个实施例中,操作514可以包括递增编程循环计数器。在一个或多个实施例中,然后可以将控制传递到操作504,随后完成读取,验证和编程操作的另一循环。在一个或多个实施例中,当编程循环计数器达到pgm_cnt_max时,可以终止该过程;这里,可以在操作516中设置peend和pefail标志。在一个或多个实施例中,这可以指示编程操作不成功,并且期望的写数据不能被正确地存储在期望的存储器位置。

在一个或多个实施例中,如上所述,包括验证的上述程序和读取指令序列可以包括在每个编程步骤之后的读取操作和比较操作。这可确保存储器阵列212的存储单元未被欠编程且每一经编程的存储单元具有大于ier(上文所论述的检测窗口的上限)的单元电流。此外,这可以限制存储单元过度编程的量,因为字内的存储单元彼此非常接近并且类似地对相同的编程电压和时间做出响应。由于前述字内的存储单元的紧密接近以及随之而来的响应的相似性,在同一字中编程每个存储单元所需的编程步骤的数量可能不会变化太多。

图6示出了用于上面讨论的程序访问的非挥发性存储器系统200的时序波形。信号clk、pg、ad和d可以是非挥发性存储器系统200的外部输入。信号peend和pefail可以是来自非挥发性存储器系统200的外部输出。其他信号可以是内部信号。在一个或多个实施例中,对非挥发性存储器系统200的程序访问可以分别从驱动地址a和写数据da到输入地址总线ad和数据总线d的外部代理(未示出)开始。在一个或多个实施例中,所述外部代理还可以驱动程序访问信号pg高电平。

在一个或多个实施例中,在非挥发性存储器系统200内部,地址a可以被锁存在存取接口240中。在一个或多个实施例中,行地址可以被传递到上面讨论的行解码器,列地址被传递到上面讨论的列解码器。在一个或多个实施例中,写数据da可以被锁存在数据寄存器260中并被驱动到写数据总线。在一个或多个实施例中,pg可以被传递到状态机220。图7示出了程序状态机700的示例实现,其可以是执行程序序列和具有验证的读指令的状态机220的一部分。在一个或多个实施例中,编程状态机700还可以生成外部输出信号peend和pefail。

在一个或多个实施例中,状态机220可以包括定序器702和控制寄存器752。在一个或多个实施例中,定序器702可以包括d寄存器704、置位复位(sr)触发器706、或门708、脉冲发生器710和脉冲发生器712。在一个或多个实施例中,定序器702可以生成控制信号rdv和pgpulse,用于分别控制上述的程序和读指令序列的验证阶段和程序阶段。在一个或多个实施例中,控制寄存器752可以包括寄存器pgm_cnt_max754、位计数器(例如,4位计数器)pgm_cnt756、异或门758、sr触发器760、sr触发器762和or门。在一个或多个实施例中,控制寄存器752可以控制上面讨论的程序验证处理(基于执行程序和读取指令的序列)的终止,并且设置标志peend和pefail的状态。

在一个或一个以上实施例中,参考上文所论述的程序存取,定序器702的输入pg可在clk的上升沿(或下降沿,取决于实施方案)处由d寄存器704锁存。在一个或多个实施例中,输出信号pgl的高状态可以将sr触发器706的输出pgc设置为高。在一个或多个实施例中,pgc可以保持高,直到程序验证算法完成。在一个或多个实施例中,pgl的高状态还可将pgm_cnt756复位为0,sr触发器760,sr触发器762及其输出pefail和peend复位为0。

在一个或一个以上实施例中,pgl的高状态可致使或门708的输出变高。在一个或多个实施例中,在下一个时钟周期中,pgl变低。在脉冲发生器710的触发(t)输入处的pgl的高到低转变以及随后的高到低转变导致rdv在下一个clk上升沿中变高。在一个或多个实施例中,脉冲发生器710的t输入可以是边沿触发的,例如由在其t输入端的信号的下降沿触发。在一个或多个实施例中,rdv可以在一个clk周期内保持高电平。在一个或多个实施例中,rdv的高状态可以使得由行和列地址选择的存储单元导通,并且将其单元电流路由到检测放大模块270。

在一个或一个以上实施例中,pgc的高状态可选择编程参考电流ipg作为到检测放大模块270的输入。在一个或一个以上实施例中,如果选定的编程单元电流在检测放大模块270中超过ipg,那么q总线中的对应读取数据位可具有1的数据极性。在一个或一个以上实施例中,可将读取数据与数据比较模块280中的写入数据进行比较。在一个或一个以上实施例中,如果比较指示匹配,则可以将match信号驱动为高以将图7中的输出sr触发器762设置为高状态。在一个或多个实施例中,peend可以被驱动为高,并且程序访问终止,脉冲发生器710和脉冲发生器712都复位。

在一个或多个实施例中,如果q总线中的读取数据与写入数据不匹配,则脉冲发生器712可以在rdv变低之后在clk的下一个上升沿驱动pgpulse为高。在一个或多个实施例中,pgpulse的高状态可以使得行解码器和列解码器中的高电压发生器能够产生在由行和列地址选择的存储单元中引起热沟道电子隧穿所需的不同电压。在一个或多个实施例中,pgpulse的持续时间可以确定编程的持续时间。在一个或多个实施例中,时间/clk周期pgpulse的量可以等于图5所示的流程图的程序时间步长。

在示例中,程序时间步长可以被设置为5μs。在示例中,可以使用对预定数量的clk周期进行计数的二进制计数器来构造脉冲发生器。一旦达到预定数量的clk周期,pgpulse可被驱动为低,这又导致脉冲发生器710将驱动rdv高达一个clk周期。pgm_cnt756可以通过pgpulse递增。如图6的时序图所示,可交替地产生rdv和pgpulse,直到match信号变高或pgm_cnt756中的值等于pgm_cnt_max758中的预设值。在match信号变高之前达到预设值的情况下,sr触发器760和sr触发器762都可以被置位,从而使peend和pefail变高。

在擦除访问期间,本文所讨论的示例性实施例可以根据图8所示的流程图执行擦除和读取指令序列。再次,类似于与图5相关的讨论,擦除与验证算法可以用于替代常用的简单固定时间擦除操作。在一个或多个实施例中,代替使用长且固定的擦除时间(例如,50ms),可以采用具有小的擦除时间步长(例如5ms)的擦除验证循环。

参考图8的流程图,操作802可以涉及复位擦除循环计数器(ers_cnt)并清除peend标志和pefail标志。在一个或多个实施例中,操作804可以涉及基于其寻址来执行读取操作以从期望的擦除位置(存储器位置)读取数据。在快闪存储器的情况下,每一擦除存取可擦除跨越多个地址位置的存储单元的块或页。块中的地址数量可以从1到存储器中的所有地址位置变化。在这里讨论的示例性实施例的示例实现中,擦除块或页大小是每个16位的4个字。

然而,在一个或多个实施例中,可以一次执行一个地址位置的读取验证操作(将要讨论的806,808)。在一个或多个实施例中,操作806可以涉及将读取数据字与数据“全0”进行比较,其中字的每个位具有值/极性为0(或1,在替代实现中在此讨论的示例性实施例)。在一个或多个实施例中,如果比较产生所有读取数据位为0,则可重复操作804和806,直到比较失败或访问的存储器页中的每个字被验证为“全0”。在一个或更多实施例中,如果被访问页中的每个字都具有“全0”数据,则操作808可以涉及设置peend标志并终止擦除访问。

在一个或多个实施例中,如果操作806中的比较的结果是失配,则操作810可以涉及检查擦除循环计数ers_cnt是否已经达到其最大计数值ers_cnt_max。在一个或多个实施例中,如果ers_cnt尚未达到ers_cnt_max,则操作812可以涉及生成擦除脉冲以擦除预设擦除时间步长所访问页面中的所有存储单元。在一个或多个实施例中,操作814可以涉及增加ers_cnt。在一个或多个实施例中,可以将控制传递到操作804和806的集合,之后完成读,验证和擦除操作的另一循环。

在一个或多个实施例中,如果ers_cnt达到ers_cnt_max,则可以终止擦除访问过程;这里,在操作816中设置peend和pefail标志,从而指示擦除操作不成功,并且所访问页面中的一些或全部存储单元具有大于检测窗口的下限(ipg)的单元电流。

在一个或多个实施例中,具有验证的上述擦除和读取指令序列可以确保存储单元未被欠擦除。此外,上述擦除和读取指令的序列可以限制过擦除的量,因为页内的存储单元彼此非常接近并且类似地响应于擦除电压;由于接近和响应的相似性,擦除同一页中的每个存储单元所需的擦除步骤的数量可能不会变化很多。

图9示出了用于上述擦除存取的非挥发性存储器系统200的时序波形。信号clk、er和ad可以是非挥发性存储器系统200的外部输入。信号peend和pefail可以是来自非挥发性存储器系统200的外部输出。再次,其它信号可以是内部信号。应当注意,擦除存取的时序图与图6所示的程序存取的时序图非常相似。在一个或多个实施例中,对非挥发性存储器系统200的擦除存取可以从外部代理(未示出)分别驱动页地址a到输入地址总线ad和数据总线d。

在一个或多个实施例中,外部代理还可以将擦除访问信号er驱动为高。在一个或多个实施例中,地址a可以被锁存在非挥发性存储器系统200内部的处理接口240中。在示例中,存储器阵列212可以被布置为使得每行包含4个字的一页。然后可以将行地址传递到行解码器。然而,当整个页被擦除时,coladdr总线中的列地址可能被忽略。列地址可以由列解码器中的二进制计数器(未示出)产生。

可以通过peend的高状态来复位地址计数器。当erc信号为高时,可以选择地址计数器的输出以在擦除存取期间驱动列解码器。列地址计数器可以由rdv和erc信号的高状态使能,并且通过clk信号的触发而增加。数据寄存器260可以被复位,使得写数据总线中的所有数据位具有0值/极性。然后,信号er可以被传递到状态机200。

图10示出擦除状态机1000的示例,擦除状态机1000可以是生成用于验证擦除操作的控制信号的状态机220的一部分。应注意,用于擦除操作的状态机220可类似于用于上文所论述的编程操作的状态机220。唯一的区别可能在于类似于图7的脉冲发生器710和脉冲发生器712的脉冲发生器的构造。这里,可能需要模拟脉冲发生器710产生高达四个时钟周期的高输出周期,以使用于所处理页面的4个字的连续读取验证周期。模拟到脉冲发生器712的输出脉冲宽度可能需要等于5ms的擦除步进持续时间。

同样,状态机220可以包括定序器1002和控制寄存器1052。定序器1002可以包括d寄存器1004、sr触发器1006、or门1008、or门1010、and门1012、脉冲发生器1014(类似于脉冲发生器710)和脉冲发生器1016(类似于脉冲发生器712)。定序器1002可以分别为算法的验证阶段和编程阶段生成控制信号rdv和erpulse。控制寄存器1052可以包括寄存器ers_cnt_max1054、位计数器(例如,4位计数器)ers_cnt1056、异或门1058、sr触发器1060、sr触发器1062、或门1064和与门1066。控制寄存器1052可以控制擦除验证执行的结束以及标志peend和pefail的状态的设置。

在一个或多个实施例中,关于擦除处理,输入er可以在clk的上升沿(或下降沿,取决于其实现)被d寄存器1004锁存。输出信号erl的高状态可以将sr触发器1006、erc、高电平和擦除循环计数器ers_cnt1056的输出设置为0。erc可以保持高,直到编程验证算法完成。erl的高状态还可以复位sr触发器1060和sr触发器1062及其输出、pefail和peend为0,从而开始执行程序验证算法/指令序列。

在下一个时钟周期之前,er可以变低。这可能导致erl在下一个时钟周期开始时变为低电平。erl的高到低转变可导致脉冲发生器1014的t输入经历高到低转变,并且其输出rdv在下一个clk上升沿中变为高。脉冲发生器1014可以是边沿触发的;脉冲发生器1014可以由其t输入端处的信号的下降沿触发。rdv的高状态可以使得由行地址所选择的存储单元和地址计数器中的列地址导通,并且其单元电流被路由到检测放大模块270。

erc的高状态可选择编程参考电流ier作为到检测放大模块270的输入。在检测放大模块270中,如果选定单元电流小于ier,则q总线中的对应读取数据位具有数据极性0。可以将读取数据与数据比较模块280中的“全0”数据进行比较,如果比较是不匹配,则与门1012的输出可以变高,这导致或门1010变为高,从而复位脉冲发生器1014将其rdv输出到低。如果比较是匹配,则可以将match信号驱动为高。match的高状态可以导致与门1012的输出变低。

当peend保持低时,或门1010的输出可保持低,并且脉冲发生器1014可不复位;脉冲发生器1014的输出可以继续驱动rdv高。列解码器中的地址计数器可在clk的下一个上升沿递增1。然后,可以开始读取和比较第二个字。如果第二字数据比较结果匹配,则读取和比较操作可以继续到第三字。读取和比较操作可以继续,直到发生不匹配或者将第四个字与匹配进行比较。如果在任何数据比较中发生不匹配,则与门1012和或门1010的输出可以变高,由此复位脉冲发生器1014并使rdv变低。

rdv的高到低转变可致使脉冲产生器1016在clk的下一上升沿中将其输出erpulse驱动为高。高状态的erp脉冲可以使得行解码器和列解码器中的高电压发生器能够产生在由行和列地址选择的存储单元中引起fowler-nordheim(fn)隧穿所必需的不同电压。erp脉冲的持续时间可以确定擦除操作的持续时间。erp脉冲可以被设计为保持高达多个clk周期,使得erp脉冲高电平时间等于图8所示的流程图的擦除时间步长。在一个示例中,擦除时间步长可以被设置为5ms。

然后,脉冲发生器1016的输出可以变低。ers_cnt1056可以通过erp脉冲的切换而增加。如图9的时序图所示,可以交替地产生rdv和erp脉冲,直到match信号变高并且在所有四个读取和比较周期中保持高,或者ers_cnt1056中的值等于ers_cnt_max1054中的预设值。在页面中的所有4个字在等于“全0”的数据之前达到预设值,异或门1058的输出变为高,从而将sr触发器1060和sr触发器1062、pefail和peend的输出设置为高。这可以发信号通知擦除处理的终止;所处理的存储单元中的一些或全部不能在检测窗口的下限ier以下被擦除。

当脉冲发生器1014在第四clk周期驱动rdv为高时,脉冲发生器1014也可以驱动其输出up高。在所有4个字等于“全0”的数据的情况下,up和match可以为高,导致与门1066和或门1064的输出变高;这可以将sr触发器1062的输出peend设置为高,并且在脉冲发生器1014和脉冲发生器1016都复位的情况下终止擦除处理。peend的高状态和pefail的低状态可以指示擦除操作成功地将所处理的页中的所有存储单元的电流降低到低于ier(检测窗口的下限)的值。

图11示出使用类似于本文所讨论的示例性实施例的方案实现的非挥发性存储器系统200的存储单元电流分布,其中ier设置为2μa/单元,ipg设置为21μa/单元。这里,对存储器的不同数量的耐久性进行单元电流分布循环测量并绘制。如图11所示,即使在10k编程-擦除循环之后,检测窗口(sw)也被良好地维持,从而指示高耐久性。

图12示出通过处理器1202和/或存储控制器1204的状态机220的实例性替代实施方案。在此,处理器1202和/或存储控制器1204可执行具有验证的编程擦除指令(例如,显示为具有验证的程序擦除指令1206)。

图13示出了详细描述状态机220的方法中涉及的操作的过程流程图,状态机220被配置为根据状态机220执行与在非挥发性存储器(例如,存储器阵列212)上执行的编程操作相关的指令序列。在一个或多个实施例中,操作1302可以涉及在状态机220中实现编程循环计数器(例如,pgm_cnt756)。在一个或多个实施例中,操作1304可以涉及为非挥发性存储器的存储单元的电流预设阈值(例如,ipg)、时间步长(5μs)和所实现的编程循环计数器的最大值(例如,pgm_cnt_max754)。在一个或多个实施例中,操作1306可以涉及复位所实现的编程循环计数器。

在一个或多个实施例中,操作1308可以涉及在预期的一组存储器位置的每个存储器位置对非挥发性存储器编程。在一个或多个实施例中,操作1308的子操作可以涉及基于对每个存储器位置的寻址来读取来自每个存储器位置的数据,确定来自被寻址的每个存储器位置的读取数据与要被编程到其的数据不匹配,产生脉冲(例如,pgpulse),以在确定读取数据和要编程的数据之间的不匹配之后,在寻址了预设时间步长的每个存储器位置处对非挥发性存储器进行编程,以及在生成与所寻址的每个存储器位置的编程相关的编程脉冲之后递增编程循环计数器。

在一个或多个实施例中,操作1310可以包括确定递增后的编程循环计数器达到其预设的最大值。在一个或多个实施例中,操作1312可以包括基于编程循环计数器已经达到其预设最大值的确定结束对非挥发性存储器的编程操作。在一个或多个实施例中,操作1314可以涉及在编程操作终止之后,基于编程循环计数器将非挥发性存储器的每个编程的存储单元的电流维持在高于预设阈值的水平,结合编程所寻址的每个存储器位置的预设时间步长和编程循环计数器的预设最大值来实现。

图14示出详细描述状态机220的方法中涉及的操作的过程流程图,状态机220被配置为根据状态机220执行与在非挥发性存储器(例如,存储器阵列212)上执行的擦除操作相关的指令序列。在一个或多个实施例中,操作1402可以涉及实现擦除循环计数器(例如,ers_cnt1056)。在一个或多个实施例中,操作1404可以涉及预设非挥发性存储器的存储单元的电流的阈值(例如,ier)、时间步长(例如5ms)和最大值(例如,ers_cnt_max1058)的擦除循环计数器。在一个或多个实施例中,操作1406可以涉及复位所实现的擦除循环计数器。

在一个或多个实施例中,操作1408可以涉及在存储器位置的预期集合的每个存储器位置处对非挥发性存储器执行擦除操作。在一个或多个实施例中,操作1408的子操作可以包括基于对每个存储器位置的寻址来从每个存储器位置读取数据位,确定来自每个被寻址的存储器位置的读取数据位与仅包括极性等于0或1的位的数据工作不匹配,在确定读取数据位之间的失配之后,产生擦除脉冲(例如,erp脉冲)以在寻址预设时间步长的每个存储器位置擦除非挥发性存储器的读取数据位,并且所述数据字仅包括具有等于0或1的极性的位,以及在产生与所寻址的每个存储器位置的读取数据位的擦除相关的擦除脉冲之后递增擦除循环计数器。

在一个或多个实施例中,操作1410可以包括确定递增的擦除循环计数器达到其预设的最大值。在一个或多个实施例中,操作1412可以包括基于擦除循环计数器已经达到其预设最大值的确定结束在非挥发性存储器上的擦除操作。在一个或多个实施例中,操作1414可以包括在擦除操作终止之后,基于擦除循环计数器将处于低于预设电流阈值水平的非挥发性存储器的每个擦除存储单元的电流保持,结合从所寻址的每个存储器位置擦除读取数据位的预设时间步长和擦除循环计数器的预设最大值来实现。

应注意,上文所论述的所有电流、位极性和clk边缘触发仅用于说明性目的,且替代实施方案在本文中所论述的示范性实施例的范围内。

虽然已经参考具体示例实施例描述了本实施例,但是将显而易见的是,在不脱离各种实施例的更广泛的精神和范围的情况下,可以对这些实施例进行各种修改和改变。例如,本文所描述的各种设备和模块可以使用硬件电路(例如,基于cmos的逻辑电路)、固件、软件或硬件、固件和软件的任何组合来实现和操作(例如,体现在非暂时性可机读介质)。例如,各种电气结构和方法可以使用晶体管、逻辑门和电路(例如,专用集成(asic)电路和/或数字信号处理器(dsp)电路)来实现。

另外,应当理解,本文公开的各种操作,过程和方法可以体现在与数据处理系统(例如,处理器1202和/或处理器)兼容的可机读介质和/或机器可处理介质中,或实现状态机220的存储控制器1204)。因此,说明书和附图被认为是说明性的而不是限制性的。

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