CN111951870A - 一种非易失性存储器的编程方法及控制装置 - Google Patents
一种非易失性存储器的编程方法及控制装置 Download PDFInfo
- Publication number
- CN111951870A CN111951870A CN201910406216.0A CN201910406216A CN111951870A CN 111951870 A CN111951870 A CN 111951870A CN 201910406216 A CN201910406216 A CN 201910406216A CN 111951870 A CN111951870 A CN 111951870A
- Authority
- CN
- China
- Prior art keywords
- programming
- data
- programmed
- address
- current
- 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/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
- 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/3468—Prevention of overerasure or overprogramming, e.g. by verifying whilst erasing or writing
- G11C16/3481—Circuits or methods to verify correct programming of nonvolatile memory cells whilst programming is in progress, e.g. by detecting onset or cessation of current flow in cells and using the detector output to terminate programming
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Read Only Memory (AREA)
Abstract
本发明公开了一种非易失性存储器的编程方法及控制装置。所述方法包括:获取待编程数据,其中所述待编程数据的位数小于目标编程数量;对待编程数据进行编程校验;如果编程失败,则根据编程次数选取对应的编程模式进行编程。利用该方法,能够提升非易失性存储器的编程效率。
Description
技术领域
本发明实施例涉及时序电路技术领域,尤其涉及一种非易失性存储器的编程方法及控制装置。
背景技术
随着时序电路技术的飞速发展,非易失性存储器得到了广泛的应用。非易失性存储器可多次进行数据的读取、擦除和编程等操作,且存入非易失性存储器的数据在断电后不会丢失。
现有非易失性存储器的编程过程为:编程校验、编程、编程校验……,直至编程成功。在编程过程中每次编程脉冲所对应的最大编程位数是固定的,比如1byte或2byte等。
这样存在的问题是:如果一次编程位数较少,则非易失性存储器的编程效率较低,影响编程时间;如果一次编程位数较多,则位线方向的电压泵提供电流的能力可能不够,需要很多的循环才能编程成功,同样编程效率很低。
发明内容
本发明实施例提供了一种非易失性存储器的编程方法及控制装置,以提升非易失性存储器的编程效率。
第一方面,本发明实施例提供了一种非易失性存储器的编程方法,包括:
获取待编程数据,其中所述待编程数据的位数小于目标编程数量;
对待编程数据进行编程校验;
如果编程失败,则根据编程次数选取对应的编程模式进行编程。
可选的,根据编程次数选取对应的编程模式进行编程,包括:
如果当前为首次编程,则对所述待编程数据编程第一时长;
编程结束后,返回编程校验的操作。
可选的,根据编程次数选取对应的编程模式进行编程,包括:
如果当前为非首次编程,则将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据;
对所述目标待编程数据编程第二时长;
编程结束后,对所述目标待编程数据进行编程校验,并执行编程失败判断操作。
可选的,在将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据之前,还包括:
从编程数据中根据各编程数据的编程地址读取下一待编程数据,其中,下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。
可选的,该方法还包括:
如果编程成功,则获取当前编程地址;
若所述当前编程地址不为结束编程地址,则根据所述当前编程地址从所述编程数据中读取新的待编程数据,并继续进行编程校验操作直至编写到所述结束编程地址。
第二方面,本发明实施例提供了一种控制装置,包括:
获取模块,用于获取待编程数据,其中所述待编程数据的位数小于目标编程数量;
校验模块,用于对待编程数据进行编程校验;
编程模块,用于如果编程失败,则根据编程次数选取对应的编程模式进行编程。
可选的,所述编程模块,具体用于:
当编程失败时,判断当前是否为首次编程;
如果当前为首次编程,则对所述待编程数据编程第一时长;
编程结束后,返回编程校验的操作。
可选的,所述编程模块,具体用于:
当编程失败时,判断当前是否为首次编程;
如果当前为非首次编程,则将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据;
对所述目标待编程数据编程第二时长;
编程结束后,对所述目标待编程数据进行编程校验,并执行编程失败判断操作。
可选的,该控制装置,还包括:
读取模块,用于在将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据之前,从编程数据中根据各编程数据的编程地址读取下一待编程数据,其中,下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。
可选的,该控制装置,还包括:
重读模块,用于如果编程成功,则获取当前编程地址;
若所述当前编程地址不为结束编程地址,则根据所述当前编程地址从所述编程数据中读取新的待编程数据,并继续进行编程校验操作直至编写到所述结束编程地址。
本发明实施例提供了一种非易失性存储器的编程方法及控制装置,利用上述技术方案,能够对获取的小于目标编程数量的待编程数据进行编程校验,若编程失败,则可以根据编程次数选取对应的编程模式进行编程,避免了在编程过程中,每次编程脉冲对应的最大编程位数固定所导致的编程效率低的技术问题,提高了编程效率。
附图说明
图1a为本发明实施例一提供的一种非易失性存储器的编程方法的流程示意图;
图1b示出了一种常见的MOSFET结构图;
图2a为本发明实施例二提供的一种非易失性存储器的编程方法的流程示意图;
图2b示出了本发明实施例二提供的编程模式示意图;
图3为本发明实施例三提供的一种控制装置的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
实施例一
图1a为本发明实施例一提供的一种非易失性存储器的编程方法的流程示意图,该方法可适用于提升非易失性存储器编程效率的情况,该方法可以由控制装置来执行,其中该装置可由软件和/或硬件实现,并一般配置在非易失性存储器上,在本实施例中非易失性存储器包括但不限于:Nor Flash或Nand Flash等。
Nor Flash和Nand Flash都是使用浮栅场效应管(Floating Gate FET)作为基本存储单元来存储数据的。Flash技术是采用特殊的浮栅场效应管作为存储单元。这种场效应管的结构与普通场效应管有很大区别。它具有两个栅极,一个如普通场管栅极一样,用导线引出,称为“选择栅”;另一个则处于二氧化硅的包围之中不与任何部分相连,这个不与任何部分相连的栅极称为“浮栅”。
通常情况下,浮栅不带电荷,则场效应管处于不导通状态,场效应管的漏极电平为高,则表示数据1。编程时,场效应管的漏极和选择栅都加上较高的编程电压,源极则接地。这样大量电子从源极流向漏极,形成相当大的电流,产生大量热电子,并从衬底的二氧化硅层俘获电子,由于电子的密度大,有的电子就到达了衬底与浮栅之间的二氧化硅层,这时由于选择栅加有高电压,在电场作用下,这些电子又通过二氧化硅层到达浮栅,并在浮栅上形成电子团。浮栅上的电子团即使在掉电的情况下,仍然会存留在浮栅上,所以信息能够长期保存。由于浮栅为负,所以选择栅为正,在存储器电路中,源极接地,所以相当于场效应管导通,漏极电平为低,即数据0被写入。擦除时,源极加上较高的编程电压,选择栅接地,漏极开路。
以Nand Flash为例进行场景的说明,Nand Flash由存储单元阵列、字线选择单元、位线选择单元、电压泵、以及整个Nand Flash芯片的控制单元组成,其中,存储单元阵列包括存储单元,存储单元阵列基于每个存储单元的字线和位线排列而成。具体的,存储单元首先分别以字线、位线连接组成页,又由多个页组成块,最终由多个块组成一个Nand Flash的存储单元阵列。对Nand Flash的操作包括三部分:擦除操作、编程(写操作)以及读操作,其中,以块为单位进行擦除操作,以页为单位进行编程和读操作。
在Nand Flash中,一个存储单元可看作为一个金属氧化物半导体场效晶体管(Metal-Oxide-Semiconductor Field-Effect Transistor,MOSFET)。图1b示出了一种常见的MOSFET结构图,包括栅极10、源极11、漏极12、P型硅半导体衬底13、以及隧穿氧化层14。其相互间的连接为:P型硅半导体衬底13扩散出两个N型区,P型硅半导体衬底13上方覆盖一层隧穿氧化层14,最后在N型区上方用腐蚀的方法做成两个孔,用金属化的方法分别在绝缘层上及两个孔内做成三个电极:栅极10、源极11和漏极12,源极11和漏极12分别对应两个N型区且栅极10为存储单元的字线,漏极12为存储单元的位线。
进一步的,栅极10又包括控制栅极101、多晶硅层间电介质102(Inter PolyDielectric,IPD)、浮动栅极103,且浮动栅极103存储电荷。在一个存储单元中,如果控制栅极101的设定电压(如读电压)大于浮动栅极103中存储电荷阈值电压,则表明存储单元处于导通状态,此时存储单元状态为1;如果控制栅极101的设定电压(如读电压)小于浮动栅极103中存储电荷阈值电压,则表明存储单元处于不导通状态,此时存储单元状态为0。
在Nand Flash中,对Nand Flash的擦除以及编程操作均是通过向擦除块或编程页施加相应电压改变存储单元浮动栅极203的阈值电压实现的。存储单元浮动栅极203的阈值电压改变可影响存储单元状态的改变。
现有的编程操作方法,一次编程过程施加的编程脉冲是固定不变的。一次编程脉冲对应的最大编程位数也是固定的,若一次编程位数选择不合理,则会影响编程效率。本实施例提供的非易失性存储器的编程方法有效的提升了非易失性存储器编程时的编程效率。
本实施例中的非易失性存储器的编程方法可以由控制单元,即本发明所述的控制装置执行,将待编程数据存储至存储单元阵列对应的地址处。
如图1a所示,本发明实施例一提供的一种非易失性存储器的编程方法,包括如下步骤:
S101、获取待编程数据,其中所述待编程数据的位数小于目标编程数量。
在本实施例中,待编程数据可以理解为非易失性存储器一次编程脉冲对应的待进行编程的数据。目标编程数量可以理解为每次编程时编程脉冲对应的最大编程位数。
非易失性存储器在进行编程时,本步骤可以首先获取待编程数据,以供非易失性存储器的控制单元进行编程。本实施例中的待编程数据的个数即位数小于目标编程数量,以先使电子打到浮栅上。
此处不对本步骤获取待编程数据的具体方式进行限定,只要能够得到待编程数据即可。示例性的,本步骤可以从非易失性存储器中的时序器件中读取待编程数据。时序器件可以理解为易失性器件,即当断电时,时序器件中的数据丢失。时序器件中可以存储有非易失性存储器需要进行编程的编程数据,可以理解的是,时序器件中的编程数据可以为开发人员写入。非易失性存储器对编程数据进行编程时,可以首先从时序器件中读取小于目标编程数量的待编程数据进行一次编程,当所读取出的待编程数据编程成功后,本步骤可以继续从编程数据中获取下一个待编程数据,直至将编程数据均编写成功。读取的下一待编程数据的个数小于目标编程数量。
需要注意的是,本步骤不对获取的待编程数据在编程数据中的位置进行限定。时序器件中可以按位顺序存储编程数据,然后本步骤可以按照编程地址的顺序依次从编程数据中获取待编程数据,直至获取到最大编程地址;或本步骤可以不限定获取顺序,只要保证编程数据均编写成功即可。
S102、对待编程数据进行编程校验。
在本实施例中,编程校验可以理解为对非易失性存储器的存储单元中所存储的数据进行校验的操作。编程校验中所指存储单元可以用于存储当前参与校验的数据,如待编程数据。
在获取小于目标编程数量的待编程数据后,本步骤可以首先对待编程数据进行编程校验,以验证当前非易失性存储器的存储单元中是否已经存储有该待编程数据。
一般的,非易失性存储器所进行的常见操作有:擦除操作、编程操作以及读操作。示例性的,所述擦除操作可理解为将非易失性存储器中存储单元的状态由“0”变为“1”的操作;所述编程操作可理解为将非易失性存储器中存储单元的状态由“1”变为“0”的操作;所述读操作可理解为对非易失性存储器中的存储单元状态进行的读取操作,上述各种操作一般通过向非易失性存储器施加不同的电压来实现。故,本步骤可以通过存储单元的状态进行编程校验。
此处不对编程校验的具体手段进行限定,本领域技术人员可以根据实际情况选取对应的编程校验的手段。
示例性的,本步骤可以从非易失性存储器的存储单元中读取待校验数据,该存储单元可以理解为待编程数据在非易失性存储器中待存储的位置,该存储单元中存储的数据在断电时数据不丢失,即具有非易失性的特点。读取待校验数据后,可以将待校验数据和待编程数据进行比较,以确定是否编程成功。确定的手段不作限定,如当待校验数据中为0的数据位与待编程数据中为0的数据位对应即可认为编程成功。
S103、如果编程失败,则根据编程次数选取对应的编程模式进行编程。
在本实施例中,编程失败可以理解为在对待编程数据进行编程时,未编写成功。如可以通过对比非易失性存储器存储单元中所存储的待校验数据和待编程数据进行确定。若待校验数据中为0的数据位与待编程数据中为0的数据位不对应,可以认为编程失败。
编程次数可以理解为对待编程数据进行编程的次数。编程模式可以理解为针对编程次数设定的编程策略。不同的编程次数可以对应不同的编程模式。不同的编程模式对应的最大编程位数可以不同。
对待编程数据进行编程校验后,本步骤可以对编程结果进行判断。如果编程失败,则需要对待编程数据进行编程。在对待编程数据进行编程时,可以基于该待编程数据对应的编程次数选取对应的编程模式进行编程,以避免每次编程时最大编程位数固定所引起的编程效率低的技术问题。不同的编程模式参与编程的数据的个数可以不同。
示例性的,当待编程数据为首次编程时,可以对待编程数据进行编程,该待编程数据的个数小于目标编程数量,先使电子打到浮栅上,以保证后续编程时,位线方向的电压泵pump能够有足够强度提供电流,从而提高编程效率,缩短整体的编程时间。当待编程数据为非首次编程时,说明当前位线方向的电压泵能够有足够强度提供电流,则可以基于待编程数据的编程结果继续选取新的编程数据进行编程,从而实现每次编程脉冲对应的最大编程位数是动态的。
本发明实施例一提供的一种非易失性存储器的编程方法,利用上述方法,能够对获取的小于目标编程数量的待编程数据进行编程校验,若编程失败,则可以根据编程次数选取对应的编程模式进行编程,避免了在编程过程中,每次编程脉冲对应的最大编程位数固定所导致的编程效率低的技术问题,提高了编程效率。
实施例二
图2a为本发明实施例二提供的一种非易失性存储器的编程方法的流程示意图,本实施例二在上述各实施例的基础上进行优化。在本实施例中,将根据编程次数选取对应的编程模式进行编程,优化包括:
如果当前为首次编程,则对所述待编程数据编程第一时长;
编程结束后,返回编程校验的操作。
进一步的,本实施例将根据编程次数选取对应的编程模式进行编程,优化包括:
如果当前为非首次编程,则将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据;
对所述目标待编程数据编程第二时长;
编程结束后,对所述目标待编程数据进行编程校验,并执行编程失败判断操作。
进一步的,本实施例在将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据之前,还包括:
从编程数据中根据各编程数据的编程地址读取下一待编程数据,其中,下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。
进一步的,本实施例还将该方法优化包括:
如果编程成功,则获取当前编程地址;
若所述当前编程地址不为结束编程地址,则根据所述当前编程地址从所述编程数据中读取新的待编程数据,并继续进行编程校验操作直至编写到所述结束编程地址。
本实施例尚未详尽之处可参见实施例一,此处不作赘述。
如图2a所示,本发明实施例二提供的一种非易失性存储器的编程方法,包括如下步骤:
S201、获取待编程数据,其中所述待编程数据的位数小于目标编程数量。
在本实施例中,获取待编程数据的操作可以为从编程数据中根据编程数据的编程地址读取小于目标编程数量的待编程数据。
编程数据可以理解为时序器件中所存储的所有待编程数据。编程地址可以理解为各编程数据在时序器件中存放的地址。
本步骤在获取小于目标编程数量的待编程数据时,可以从编程数据中根据各编程数据的编程地址读取待编程数据。其中,编程数据的存储位置不作限定,可以存储在非易失性存储的时序器件中。在读取待编程数据时,本步骤可以采用寻址的手段读取小于目标编程数量的待编程数据。
示例性的,若目标编程数量为M位,则本步骤可以从编程数据中根据编程地址的顺序依次读取小于M位数据作为待编程数据。
S202、对待编程数据进行编程校验。
在读取待编程数据后,可以首先对待编程数据进行编程校验,以验证非易失性存储器相应存储单元中是否存储有待编程数据。
S203、判断编程是否失败,若是,则执行S204;若否,则执行S211。
当对待编程数据直接进行编程校验后,确定出非易失性存储器中未存储有待编程数据,则可以认为编程失败。本步骤则可以对待编程数据进行编程,相应的,执行S204;否则,可以说明编程成功,相应的,可以执行S211。
S204、判断当前是否为首次编程,若是,则执行S205;若否,则执行S207。
在本实施例中,首次编程可以理解为当前编程操作中的待编程数据未进行过编程。
在编程失败后,本步骤可以首先确定当前待编程数据是否为首次编程,从而基于编程次数选取对应的编程模式进行编程。此处不限定如何确定当前编程是否为首次编程,如可以在每次对待编程数据编程时记录编程次数,从而基于编程次数确定待编程数据是否为首次编程。
如果当前为首次编程,则可以执行首次编程对应的编程模式,即可以执行S205;若当前不是首次编程,则可以执行非首次编程对应的编程操作,即可以执行S207。
S205、对所述待编程数据编程第一时长。
当确定当前为首次编程后,本步骤可以直接对待编程数据编程第一时长,此处第一时长的时长可调,本领域技术人员可以根据不同时长对应的编程成功率选取合适的第一时长。
本步骤对待编程数据编程第一时长后,一部分电子打到浮栅上,以便于后续编程时位线方向的电压泵pump能够有足够的强度提供电流。
S206、判断编程是否结束,若是,则执行S202;若否,则执行S206。
执行完对待编程数据编程第一时长的操作后,本步骤可以验证当前编程是否结束,此处可以不限定验证编程结束的具体手段。如可以通过时间表征编程是否结束。如当前已经经过了第一时长,则可以认为当前编程结束。
示例性的,对待编程数据编程1us,则在1us后可以认为编程结束。
如果编程结束,则可以对待编程数据进行编程校验,以验证待编程数据是否编程失败,即可以执行S202;若编程未结束,则可以继续监测编程是否结束,即可以执行S206。
进行编程校验后可以继续基于校验结果执行相应的操作。示例性的,若编程失败,则继续根据编程次数选取对应的编程模式进行编程。
S207、从编程数据中根据各编程数据的编程地址读取下一待编程数据,其中,下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。
在本实施例中,下一待编程数据可以理解为重新从编程数据中读取的新的待编程数据。失败编程数据可以理解为截止到目前为止,参与编程的数据中编程失败的数据位对应的数据。失败编程数据的确定可以在进行编程校验时确定。
如果当前为非首次编程,即当前不是首次编程,则本步骤可以从编程数据中读取下一待编程数据进行编程。
本步骤读取下一待编程数据时,可以首先确定当前编程的各数据中对应的最大编程地址,然后从各编程数据的编程地址中从该最大编程地址开始读取下一待编程数据。此处仅对顺序读取数据时获取下一待编程数据的技术手段进行了说明。若不限定从编程数据中读取数据的顺序,则可以从编程数据中读取未被读取过的数据作为下一待编程数据。可以理解的是,读取的下一待编程数据和待编程数据中可以携带有各数据对应的编程地址。
需要注意的是,在读取下一待编程数据时,要保证下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。若总和等于目标编程数量,则在后续进行编程时,可以一直保证总和等于目标编程数量。
S208、将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据,对所述目标待编程数据编程第二时长。
在本实施例中,目标待编程数据可以理解为非首次编程时,需要进行编程的数据。
获取下一待编程数据后,本步骤可以将下一待编程数据和失败编程数据作为目标待编程数据,以对目标编程数据编程第二时长。本实施例每次编程失败后,若不是首次编程都可以将失败编程数据和重新获取的下一待编程数据作为目标待编程数据,然后对目标编程数据编程第二时长。可以理解的是,不同阶段的目标待编程数据可以对应有不同编程数量的数据,进行编程的第二时长可以不同。
S209、判断编程是否结束,若是,则执行S210;若否,则执行S209。
在执行完对目标待编程数据编程第二时长的操作后,本步骤可以判断该编程是否结束。此处不限定判断编程结束的具体手段,如通过编程时间确定。
示例性的,如果当前经过了第二时长,则可以认为编程结束。
如果编程结束,则可以继续进行编程校验,以确定本次编程是否失败,即执行S210;若编程未结束,则可以继续监测编程是否结束,即可以执行S209。
S210、对所述目标待编程数据进行编程校验,返回执行S203。
当对目标待编程数据编程结束后,可以对目标待编程数据进行编程校验,以验证编程结果。校验结束后,可以返回执行S203继续执行编程失败的判断操作。
S211、获取当前编程地址。
如果编程未失败,可以认为当前编程成功,则可以获取当前编程地址。
当前编程地址的具体内容及获取手段可以不作限定,若本实施例中按照编程地址的顺序依次从编程数据中选取数据,当前编程地址可以理解为目前已经参与编程的数据中的最大编程地址。
S212、判断当前编程地址是否不为结束编程地址,若是,则执行S213;若否,则执行S214。
在本实施例中,结束编程地址可以理解编程数据对应的最大编程地址。
在获取当前编程地址后,本步骤可以将当前编程地址与结束编程地址进行比对,确定当前编程地址是否不为结束编程地址。结束编程地址的获取方式不作限定,如在时序器件存储完编程数据后,非易失性存储器的控制单元可以读取时序器件中存储各编程数据时对应的最大编程地址作为结束编程地址。
如果当前编程地址不为结束编程地址,可以说明当前并未将全部编程数据编写成功,则可以执行S213;如果当前编程地址等于结束编程地址,则可以说明编程数据均已编写成功,则可以执行S214。
S213、根据所述当前编程地址从所述编程数据中读取新的待编程数据,并继续进行编程校验操作直至编写到所述结束编程地址。
在本实施例中,新的待编程数据可以理解为编程成功后重新从编程数据中获取的数据。
在当前编程地址不为结束编程地址时,则可以说明编程数据中还存在数据未被编程,则本步骤可以从编程数据中以当前编程地址为起点读取新的待编程数据。新的待编程数据的个数小于目标编程数量。读取完新的待编程数据后可以继续对新的待编程数据进行编程校验,编程校验的具体手段可以参见对待编程数据进行编程校验的手段,此处不作限定。编程校验结束后,可以继续执行编程失败判断操作,即可以继续执行S203。
S214、结束。
如果当前编程地址为结束编程地址,可以说明当前编程数据均已编写成功,则可以结束编程操作。
为了便于理解,以下对本实施例提供的非易失性存储器的编程方法进行实例描述:
为了解决每次编程脉冲对应的最大编程位数固定导致的如果一次编程位数较少,编程效率低;如果一次编程位数较多,BL方向的pump提供电流的能力可能不够,需要很多的循环才能编程成功或者达到最大编程次数,同样编程效率很低的技术问题。本实施例提供了一种新的编程方法,图2b示出了本发明实施例二提供的编程模式示意图。如图2b所示,本实施例提供的非易失性存储器的编程方法主要编程过程为:编程校验—>开启编程模式1—>编程校验—>开启编程模式2—>编程校验—>开启编程模式3……,直至编程成功。图2b中横坐标为时间T,纵坐标为电压V。
其中,编程模式1:释放部分的需要编程的位进行编程,编程数量为N0。(N0<M)。最大编程模式可以为释放编程脉冲对应的最大编程位数的需要编程的位进行编程,编程数量计为M。
编程模式2:再编程模式1的基础上,再释放重新获取的编程数据中未获取过的一定数量的编程位进行编程,编程数量为N01+N1。((N01+N1)<M),N01可以表示编程模式1编程后编程失败的数据位的总数。
编程模式3:再编程模式1和编程模式2的基础上,再释放一定数量的编程位进行编程,编程数量为N011+N11+N2,((N011+N11+N2)<M),N011可以表示编程模式2编程后,编程模式1编程后编程失败的数据位在编程模式2下再次编程失败的数据位对应的总数。N11可以表示编程模式2编程结束后重新释放的编程位中编程失败的数据位的总数。
可见,每次编程脉冲对应的最大编程位数是动态的,先开启编程模式1,这样一部分大量电子已经打到floating gate上了,这样再开启编程模式2时,BL方向的pump就会有相对足够的强度提供电流,后面每次选取不同的编程模式,大大提高了编程效率,缩短了整体的编程时间。
具体执行步骤可以如下:
步骤1:把需要编程的数据存放到时序器件中。
步骤2:从时序器件中读取数据,如果需要编程,产生编程脉冲,开启编程模式1,经过时间T1,结束本次编程。
步骤3:再次进行编程校验,如果发现编程失败,继续进行编程操作,开启编程模式2,持续时间为T2,结束本次编程。
步骤4:再次进行编程校验,如果发现编程失败,继续进行编程操作,开启编程模式3,持续时间为T3。结束本次编程。
后面增加一次循环就开启不同的编程模式或最大编程模式。
即,如果校验失败,执行编程操作;如果校验成功,则判断当前是否为最后的编程地址,即结束编程地址,若不是最后的编程地址,则地址递增获取下一待编程数据。若当前是最后的编程地址,则结束操作。
其中,编程操作包括:如果当前为首次编程,则开启模式1,如果为第二次编程开启模式2,如果第n次编程,开启模式n。第n次编程对应的目标待编程数据包括第n-1次编程时对应的失败编程数据和重新选取的下一待编程数据。
本发明实施例二提供的一种非易失性存储器的编程方法,利用上述方法,能够基于编程次数,调整每次编程时的编程数量,使得每次编程脉冲对应的最大编程位数是动态的,在首次编程时,使一部分电子打到浮栅上。在后续编程时,位线方向的电压泵有足够的强度提供电流,提高了编程效率,缩短了整体的编程时间。
实施例三
图3为本发明实施例三提供的一种控制装置的结构示意图,该控制装置可适用于提升非易失性存储器编程效率的情况,其中,该控制装置可由软件和/或硬件实现,并一般配置于非易失性存储器上。
如图3所示,该控制装置包括:获取模块31、校验模块32和编程模块33;
其中,获取模块31,用于获取待编程数据,其中所述待编程数据的位数小于目标编程数量;
校验模块32,用于对待编程数据进行编程校验;
编程模块33,用于如果编程失败,则根据编程次数选取对应的编程模式进行编程。
在本实施例中,该控制装置首先通过获取模块31获取待编程数据,其中所述待编程数据的位数小于目标编程数量;然后通过校验模块32对待编程数据进行编程校验;最后通过编程模块33当编程失败时,根据编程次数选取对应的编程模式进行编程。
本实施例提供了一种控制装置,能够对获取的小于目标编程数量的待编程数据进行编程校验,若编程失败,则可以根据编程次数选取对应的编程模式进行编程,避免了在编程过程中,每次编程脉冲对应的最大编程位数固定所导致的编程效率低的技术问题,提高了编程效率。
可选的,编程模块33,具体用于:
当编程失败时,判断当前是否为首次编程;
如果当前为首次编程,则对所述待编程数据编程第一时长;
编程结束后,返回编程校验的操作。
可选的,编程模块33,具体用于:
当编程失败时,判断当前是否为首次编程;
如果当前为非首次编程,则将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据;
对所述目标待编程数据编程第二时长;
编程结束后,对所述目标待编程数据进行编程校验,并执行编程失败判断操作。
可选的,该控制装置,还包括:
读取模块,用于在将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据之前,从编程数据中根据各编程数据的编程地址读取下一待编程数据,其中,下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。
可选的,该控制装置,还包括:
重读模块,用于如果编程成功,则获取当前编程地址;
若所述当前编程地址不为结束编程地址,则根据所述当前编程地址从所述编程数据中读取新的待编程数据,并继续进行编程校验操作直至编写到所述结束编程地址。
上述控制装置可执行本发明任意实施例所提供的非易失性存储器的编程方法,具备执行方法相应的功能模块和有益效果。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (10)
1.一种非易失性存储器的编程方法,其特征在于,包括:
获取待编程数据,其中所述待编程数据的位数小于目标编程数量;
对待编程数据进行编程校验;
如果编程失败,则根据编程次数选取对应的编程模式进行编程。
2.根据权利要求1所述的方法,其特征在于,根据编程次数选取对应的编程模式进行编程,包括:
如果当前为首次编程,则对所述待编程数据编程第一时长;
编程结束后,返回编程校验的操作。
3.根据权利要求1所述的方法,其特征在于,根据编程次数选取对应的编程模式进行编程,包括:
如果当前为非首次编程,则将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据;
对所述目标待编程数据编程第二时长;
编程结束后,对所述目标待编程数据进行编程校验,并执行编程失败判断操作。
4.根据权利要求3所述的方法,其特征在于,在将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据之前,还包括:
从编程数据中根据各编程数据的编程地址读取下一待编程数据,其中,下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。
5.根据权利要求4所述的方法,其特征在于,还包括:
如果编程成功,则获取当前编程地址;
若所述当前编程地址不为结束编程地址,则根据所述当前编程地址从所述编程数据中读取新的待编程数据,并继续进行编程校验操作直至编写到所述结束编程地址。
6.一种控制装置,其特征在于,包括:
获取模块,用于获取待编程数据,其中所述待编程数据的位数小于目标编程数量;
校验模块,用于对待编程数据进行编程校验;
编程模块,用于如果编程失败,则根据编程次数选取对应的编程模式进行编程。
7.根据权利要求6所述的控制装置,其特征在于,所述编程模块,具体用于:
当编程失败时,判断当前是否为首次编程;
如果当前为首次编程,则对所述待编程数据编程第一时长;
编程结束后,返回编程校验的操作。
8.根据权利要求6所述的控制装置,其特征在于,所述编程模块,具体用于:
当编程失败时,判断当前是否为首次编程;
如果当前为非首次编程,则将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据;
对所述目标待编程数据编程第二时长;
编程结束后,对所述目标待编程数据进行编程校验,并执行编程失败判断操作。
9.根据权利要求8所述的控制装置,其特征在于,还包括:
读取模块,用于在将本次编程前编程失败数据位对应的失败编程数据和下一待编程数据作为目标待编程数据之前,从编程数据中根据各编程数据的编程地址读取下一待编程数据,其中,下一待编程数据的个数与失败编程数据的个数的和小于或等于目标编程数量。
10.根据权利要求9所述的控制装置,其特征在于,还包括:
重读模块,用于如果编程成功,则获取当前编程地址;
若所述当前编程地址不为结束编程地址,则根据所述当前编程地址从所述编程数据中读取新的待编程数据,并继续进行编程校验操作直至编写到所述结束编程地址。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910406216.0A CN111951870B (zh) | 2019-05-15 | 2019-05-15 | 一种非易失性存储器的编程方法及控制装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910406216.0A CN111951870B (zh) | 2019-05-15 | 2019-05-15 | 一种非易失性存储器的编程方法及控制装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111951870A true CN111951870A (zh) | 2020-11-17 |
CN111951870B CN111951870B (zh) | 2023-06-20 |
Family
ID=73336437
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910406216.0A Active CN111951870B (zh) | 2019-05-15 | 2019-05-15 | 一种非易失性存储器的编程方法及控制装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111951870B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112634976A (zh) * | 2020-12-17 | 2021-04-09 | 苏州兆方微电子科技有限公司 | 芯片校准方法、装置、存储介质和芯片 |
CN113409850A (zh) * | 2021-06-17 | 2021-09-17 | 芯天下技术股份有限公司 | 一种提高编程效率的方法、装置、存储介质和终端 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060067131A1 (en) * | 2004-09-30 | 2006-03-30 | Jae-Woo Im | Non-volatile memory device and program method thereof |
US20080192540A1 (en) * | 2007-02-08 | 2008-08-14 | Samsung Electronics Co. Ltd | Nonvolatile memory devices capable of reducing data programming time and methods of driving the same |
CN101268520A (zh) * | 2005-06-17 | 2008-09-17 | 美光科技公司 | 用于快闪存储器的具有依据经检测未通过编程的位数目的优化电压电平的编程方法 |
US20100302860A1 (en) * | 2009-05-29 | 2010-12-02 | Seung Min Oh | Nonvolatile memory device and method of programming the same |
US20140173184A1 (en) * | 2012-12-18 | 2014-06-19 | SK Hynix Inc. | Data storage device and operating method thereof |
CN103971739A (zh) * | 2013-02-04 | 2014-08-06 | 三星电子株式会社 | 包括非易失性存储设备的存储系统及其编程方法 |
US20140254264A1 (en) * | 2013-03-08 | 2014-09-11 | Sandisk Technologies Inc. | Defect Or Program Disturb Detection With Full Data Recovery Capability |
CN106205721A (zh) * | 2016-07-06 | 2016-12-07 | 北京兆易创新科技股份有限公司 | 一种存储单元的编程方法 |
-
2019
- 2019-05-15 CN CN201910406216.0A patent/CN111951870B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20060067131A1 (en) * | 2004-09-30 | 2006-03-30 | Jae-Woo Im | Non-volatile memory device and program method thereof |
CN101268520A (zh) * | 2005-06-17 | 2008-09-17 | 美光科技公司 | 用于快闪存储器的具有依据经检测未通过编程的位数目的优化电压电平的编程方法 |
US20080192540A1 (en) * | 2007-02-08 | 2008-08-14 | Samsung Electronics Co. Ltd | Nonvolatile memory devices capable of reducing data programming time and methods of driving the same |
US20100302860A1 (en) * | 2009-05-29 | 2010-12-02 | Seung Min Oh | Nonvolatile memory device and method of programming the same |
US20140173184A1 (en) * | 2012-12-18 | 2014-06-19 | SK Hynix Inc. | Data storage device and operating method thereof |
CN103971739A (zh) * | 2013-02-04 | 2014-08-06 | 三星电子株式会社 | 包括非易失性存储设备的存储系统及其编程方法 |
US20140254264A1 (en) * | 2013-03-08 | 2014-09-11 | Sandisk Technologies Inc. | Defect Or Program Disturb Detection With Full Data Recovery Capability |
CN106205721A (zh) * | 2016-07-06 | 2016-12-07 | 北京兆易创新科技股份有限公司 | 一种存储单元的编程方法 |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112634976A (zh) * | 2020-12-17 | 2021-04-09 | 苏州兆方微电子科技有限公司 | 芯片校准方法、装置、存储介质和芯片 |
CN113409850A (zh) * | 2021-06-17 | 2021-09-17 | 芯天下技术股份有限公司 | 一种提高编程效率的方法、装置、存储介质和终端 |
Also Published As
Publication number | Publication date |
---|---|
CN111951870B (zh) | 2023-06-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11756627B2 (en) | Semiconductor memory device | |
TWI286758B (en) | A system and method for erase voltage control during multiple sector erase of a flash memory device | |
JP4170682B2 (ja) | 不揮発性半導体メモリ装置 | |
US7009878B2 (en) | Data reprogramming/retrieval circuit for temporarily storing programmed/retrieved data for caching and multilevel logical functions in an EEPROM | |
US8737131B2 (en) | Programming memory cells using smaller step voltages for higher program levels | |
US20050078522A1 (en) | Memory block erasing in a flash memory device | |
CN101923899B (zh) | 一种非易失存储器的擦除方法及装置 | |
US20090238006A1 (en) | Adjusting programming or erase voltage pulses in response to the number of programming or erase failures | |
US8213233B2 (en) | Reduction of quick charge loss effect in a memory device | |
US9378823B2 (en) | Programming a memory cell to a voltage to indicate a data value and after a relaxation time programming the memory cell to a second voltage to indicate the data value | |
US9183070B2 (en) | Resting blocks of memory cells in response to the blocks being deemed to fail | |
JP2005527061A (ja) | 予備消去ステップを用いてフラッシュメモリを消去する方法 | |
US20150348621A1 (en) | Nonvolatile semiconductor memory device and read method thereof | |
JPH05182479A (ja) | 電気的に書き込み一括消去可能な不揮発性半導体記憶装置 | |
CN106558342B (zh) | 非易失性半导体存储装置及其擦除方法 | |
TW200418027A (en) | Non-volatile semiconductor memory device and the data erasing method | |
CN111951870B (zh) | 一种非易失性存储器的编程方法及控制装置 | |
US6259625B1 (en) | Method and apparatus for reducing high current chip erase in flash memories | |
US8139421B2 (en) | Erase degradation reduction in non-volatile memory | |
CN111951857B (zh) | 一种非易失性存储器的编程方法及控制装置 | |
US6469934B2 (en) | Soft programming method for non-volatile memory cells | |
US20240071533A1 (en) | Adaptive gidl voltage for erasing non-volatile memory | |
US20220013184A1 (en) | Memory device with conditional skip of verify operation during write and operating method thereof | |
JPH11176179A (ja) | 不揮発性半導体記憶装置 | |
KR101075996B1 (ko) | 비휘발성 메모리장치, 그의 프로그램 및 이레이즈 방법 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB02 | Change of applicant information |
Address after: Room 101, Floor 1-5, Building 8, Yard 9, Fenghao East Road, Haidian District, Beijing 100094 Applicant after: Zhaoyi Innovation Technology Group Co.,Ltd. Address before: 100083 12 Floors, Block A, Tiangong Building, Science and Technology University, 30 College Road, Haidian District, Beijing Applicant before: GIGADEVICE SEMICONDUCTOR(BEIJING) Inc. |
|
CB02 | Change of applicant information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |