一种存储单元的编程方法与流程

文档序号:12826884阅读:146来源:国知局
一种存储单元的编程方法与流程

本发明实施例涉及存储技术领域,具体涉及一种存储单元的编程方法。



背景技术:

非易失闪存介质(norflash/nandflash)是一种很常见的存储芯片,兼有随机存储器(randomaccessmemory,ram)和只读存储器(read-onlymemory,rom)的优点,数据掉电不会丢失,是一种可在系统进行电擦写的存储器,同时它的高集成度和低成本使它成为市场主流。flash芯片是由内部成千上万个存储单元组成的,每个储存单元存储一位数据,多个存储单元构成页,多个页组成块,正是由于该特殊的物理结构,在norflash/nandflash中是以页为单位进行读/写(编程操作)数据,以块为单位进行擦除数据的。

在flash芯片中,一个存储单元可看作为一个金属氧化物半导体场效晶体管(metal-oxide-semiconductorfield-effecttransistor,mosfet)。图1是一种常见的mosfet结构图,包括栅极20、源极21、漏极22、p型阱23、n型阱25、p型硅半导体衬底26以及隧穿氧化层24,其相互间的连接为:p型硅半导体衬底26扩散出两个n型区,p型阱23上方覆盖一层隧穿氧化层24,最后在n型区上方通过腐蚀的方法做成两个孔,通过金属化的方法分别在绝缘层上及两个孔内做成三个电极:栅极20、源极21和漏极22,源极21和漏极22分别对应两个n型区且栅极20为存储单元的字线,漏极22为存储单元的位线。进一步的,栅极20又包括控制栅极201、多晶硅层间电介质202(inter-polydielectric, ipd)、浮动栅极203,且浮动栅极203可以存储电荷。当对一个存储单元进行编程操作时,现有的方法是,给存储单元的衬底上的p阱接0v电压,分别给栅极20加大约9v的电压、源极21接0v以及漏极22加大约5v的电压,此时,会有电流从漏极22流向源极21,电子从源极21流向漏极22的途中,会有一部分流向浮动栅极203,当浮动栅极203中的电子达到一定数量时,此存储单元就被编程成功,即此存储单元被成功写0。但是,由于flash芯片制作工艺的问题,会有一些存储单元很难被编程成功,为了保证编程的正确性,现有的解决方法通常采用增加编程次数的方法,但是却以牺牲编程速度为代价。

因此,有必要设计一种新的存储单元的编程方法,以提高编程速度。



技术实现要素:

本发明提供一种存储单元的编程方法,以提高编程速度。

该方法包括:

接收编程指令;

根据编程指令向存储单元施加编程电压,并且向存储单元的p型阱上施加负电压;

检验存储单元的当前状态是否为已经编程成功,若是,则结束当前编程操作,否则改变施加到存储单元p型阱上的电压值,直至编程成功。

示例性的,根据编程指令向存储单元施加编程电压,包括:

所述向存储单元的栅极、源极和漏极施加的编程电压分别为9v、0v和5v。

示例性的,所述负电压为:-0.5v、-0.75v或者-1v。

进一步的,向存储单元的p型阱上施加负电压之前,还包括:将存储单元的源极与存储单元的p型阱短接。

示例性的,改变施加到存储单元p型阱上的电压值,包括:

将施加到存储单元p型阱上的电压值降低设定电压值。

优选的,所述设定电压值为-0.1v或者-0.05v。

示例性的,所述检验存储单元的当前状态是否为已经编程成功,具体为:

检测从存储单元的源极流向漏极的电流值是否小于预设电流值,若是,则所述存储单元的当前状态为已经编程成功。

进一步的,在改变施加到存储单元p型阱上的电压值之前,还包括:

通过编程计数器对编程失败的次数进行累计;

判断所述编程计数器中的数值是否为设定的最大值,若是,则结束此次编程操作,否则执行改变施加到存储单元p型阱上的电压值的操作。

示例性的,所述设定的最大值为小于或者等于64的正整数。

本发明实施例提供的一种存储单元的编程方法,在接收到编程指令后,根据编程指令向存储单元施加编程电压,并且向存储单元的p型阱上施加负电压,开始对存储单元进行编程操作,之后检验存储单元的当前状态是否为已经编程成功,若是,则结束当前编程操作,否则改变施加到存储单元p型阱上的电压值,直至编程成功,通过在每次对所述存储单元编程失败后,改变施加到存储单元p型阱上的电压值,提高了对所述存储单元的编程速度。

附图说明

图1是flash芯片中一种作为存储单元的金属氧化物半导体场效晶体管的结构图;

图2是本发明实施例一中的一种存储单元的编程方法流程图;

图3是本发明实施例二中的一种存储单元的编程方法流程图;

图4是本发明实施例三中的一种存储单元的编程方法流程图。

具体实施方式

下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。

实施例一

图2为本发明实施例一提供的一种存储单元的编程方法流程图,本实施例可适用于对一些很难被编程成功的存储单元进行编程操作。参加图2,本实施例提供的存储单元的编程方法具体包括如下步骤:

s110、接收编程指令。

通过编写程序代码可以控制flash存储器进行三大主要操作,分别是读操作、写操作和擦除操作,其中,写操作又被称作编程操作,即完成对存储单元的写0操作;上述步骤中接收编程指令具体是指接收对某个存储单元的写0操作指令。

s120、根据编程指令向存储单元施加编程电压,并且向存储单元的p型阱上施加负电压。

需要说明的是,对一个存储单元进行编程操作的过程是:通过向存储单元的栅极、源极以及漏极上施加相应的电压,来产生从存储单元的漏极流向源极的电流,当电子从存储单元的源极流向漏极的途中,会有一部分流向存储单元 的浮动栅极,当浮动栅极中的电子达到一定数量时,此存储单元就被编程成功,即此存储单元被成功写0。通过提高施加到存储单元的栅极和漏极上的电压,可以提高电子流向存储单元浮动栅极的速度,从而提高编程速度,但是此种方法需要同时改变施加到存储单元的栅极和漏极上的电压,操作步骤繁琐,本实施例中的技术方案是通过向存储单元的p型阱上施加负电压,因此,施加到存储单元的栅极和漏极上的有效电压值增大了,也提高了电子流向存储单元浮动栅极的速度,从而提高了编程速度,此时只需改变施加到存储单元的p型阱上的一个电压值,就可以达到提高存储单元的编程速度的目的,操作简单。

优选的,根据编程指令向存储单元施加编程电压,包括:

所述向存储单元的栅极、源极和漏极施加的编程电压分别为9v、0v和5v。本领域技术人员都知道,施加到存储单元的栅极上的电压值9v以及施加到存储单元的漏极上的电压值5v是优选的典型数值,并不限定是9v和5v,还可以是9v附近的任意数值,比如8.9v等,或者5v附近的任意数值,比如5.1v等。

示例性的,向存储单元的p型阱上施加负电压,可以是-0.5v、-0.75v或者-1v。

s130、检验存储单元的当前状态是否为已经编程成功,若是,执行步骤s140结束当前编程操作,否则执行步骤s150改变施加到存储单元p型阱上的电压值,并返回执行步骤s130,直至编程成功。

当给所述存储单元施加编程电压后,也就开始了对所述存储单元的编程操作,随后开始检验存储单元的当前状态是否为已经编程成功,即所述存储单元是否被写0,若是,则结束当前编程操作,否则改变施加到存储单元p型阱上 的电压值,目的是为了提高施加到存储单元的栅极和漏极上的有效电压值,从而提高电子流向存储单元的浮动栅极的速度,使浮动栅极中的电子尽快达到一定数量,使此存储单元尽快被编程成功。

示例性的,检验存储单元的当前状态是否为已经编程成功,具体为:

检测从存储单元的源极流向漏极的电流值是否小于预设电流值,若是,则所述存储单元的当前状态为已经编程成功。

检验存储单元的当前状态是否为已经编程成功的操作,实质上是对存储单元进行了一次读操作,当从存储单元的源极流向漏极的电流值大于预设电流值时,此时认为存储单元的浮动栅极上没有足够的电子,此时存储单元的状态为1,也就是处于可编程的状态,说明此次编程操作失败,存储单元没有被成功写0;当从存储单元的源极流向漏极的电流值小于预设电流值时,即认为编程成功,存储单元被成功写0。优选的,所述预设电流值可以为20μa或者30μa,当然还可以是其他数值,需要根据各flash芯片的制作工艺的不同而变化。

s140、结束当前编程操作。

s150、改变施加到存储单元p型阱上的电压值,并返回执行步骤s130。

示例性的,改变施加到存储单元p型阱上的电压值,包括:

将施加到存储单元p型阱上的电压值降低设定电压值。

优选的,所述设定电压值为-0.1v或者-0.05v。

例如,施加到存储单元p型阱上的初始负电压值为-0.5v,通过检验存储单元的当前状态为编程失败,则将施加到存储单元p型阱上的电压值降低设定电压值,设定电压值取-0.1v,此时施加到存储单元p型阱上的电压值为-0.6v,继续执行步骤s130,直至编程成功。需要说明的是,向存储单元的p型阱上施加 的负电压根据不同的flash芯片的制作工艺的不同而不相同。

本发明实施例提供的一种存储单元的编程方法,在接收到编程指令后,根据编程指令向存储单元施加编程电压,并且向存储单元的p型阱上施加负电压,开始对存储单元进行编程操作,之后检验存储单元的当前状态是否为已经编程成功,若是,则结束当前编程操作,否则改变施加到存储单元p型阱上的电压值,直至编程成功,通过在每次对所述存储单元编程失败后,改变施加到存储单元p型阱上的电压值,提高了对所述存储单元的编程速度。

实施例二

图3为本发明实施例二提供的一种存储单元的编程方法流程图,本实施例在实施例一的基础上进行进一步优化,在向存储单元的p型阱上施加负电压之前,增加了将存储单元的源极与存储单元的p型阱短接的操作,这样优化的好处是,可以进一步提高编程速度。参加图3,本实施例提供的存储单元的编程方法具体包括如下步骤:

s210、接收编程指令。

s220、根据编程指令向存储单元施加编程电压。

s230、将存储单元的源极与存储单元的p型阱短接。

s240、向存储单元的p型阱上施加负电压。

s250、检验存储单元的当前状态是否为已经编程成功,若是,执行步骤s260结束当前编程操作,否则执行步骤s270改变施加到存储单元p型阱上的电压值,并返回执行步骤s250,直至编程成功。

s260、结束当前编程操作。

s270、改变施加到存储单元p型阱上的电压值,并返回执行步骤s250。

本发明实施例提供的一种存储单元的编程方法,在实施例一的基础上,通过在向存储单元的p型阱上施加负电压之前,增加将存储单元的源极与存储单元的p型阱短接的操作,达到了进一步提高对所述存储单元的编程速度的目的。

实施例三

图4为本发明实施例三提供的一种存储单元的编程方法流程图,本实施例在上述实施例的基础上进行进一步优化,增加了对编程失败的次数进行累计的操作,这样优化的好处是,避免了对一些存储单元进行无限制地编程操作,使整个程序陷入死循环。参加图4,本实施例提供的存储单元的编程方法具体包括如下步骤:

s310、接收编程指令。

s320、根据编程指令向存储单元施加编程电压,并且向存储单元的p型阱上施加负电压;

s330、检验存储单元的当前状态是否为已经编程成功,若是,执行步骤s340结束当前编程操作,否则执行步骤s350。

s340、结束当前编程操作。

s350、通过编程计数器对编程失败的次数进行累计。

s360、判断所述编程计数器中的数值是否为设定的最大值,若是,则执行步骤s340结束此次编程操作,否则执行步骤s370。

优选的,所述设定的最大值为小于或者等于64的正整数,当然,本领域的技术人员都知道,所述设定值并不限于某一个或者某一些固定数值,需要根据 实际操作情况以及flash芯片的制作工艺选定合适的数值。

s370、改变施加到存储单元p型阱上的电压值,并返回执行步骤s330,直至编程成功。

由于flash芯片制作工艺的问题,会有一个或者多个存储单元很难被编程成功甚至根本就不能被编程成功,此时如果不对编程失败的次数进行累计,并设定允许的最大失败次数,那么系统会一直循环编程操作,陷入死循环的状态。

本发明实施例提供的一种存储单元的编程方法,在上述实施例的基础上,通过增加对编程失败的次数进行累计的操作,当对某一个存储单元的编程失败次数累计超过设定的最大值时,则放弃对此存储单元的编程,直接结束当前的编程操作,避免了对某些存储单元进行无限制地编程操作,使整个程序陷入死循环。

注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。

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