700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > 存储器编程方法 装置 电子设备及可读存储介质与流程

存储器编程方法 装置 电子设备及可读存储介质与流程

时间:2023-01-13 08:25:31

相关推荐

存储器编程方法 装置 电子设备及可读存储介质与流程

本发明涉及半导体存储器

技术领域:

:,特别是涉及一种存储器编程方法、装置、电子设备及可读存储介质。

背景技术:

::nand闪存是一种非易失性储存器,具有成本低、功耗小及存储容量大的优点。nand闪存的存储单元(memorycell)通过设置不同的阈值电压以区分存储状态。而不同的阈值电压区间之间如间隔较小,就会降低各个存储状态的区分度,易于使存储数据出现错误。这就要求在改写nand闪存的编程(programming)过程中,尽可能使各存储状态的阈值电压落在较窄的区间范围内,以增加各个阈值电压区间之间的间隔。目前,对于nand闪存,普遍采用步增脉冲编程(ispp,incrementalsteppulseprogramming)的方法进行编程以获得较窄的阈值电压区间范围。即,依次使用多个逐步增量的脉冲编程电压对存储单元进行编程,并在每次编程后验证存储单元是否通过验证,屏蔽已通过验证的存储单元,对于未通过验证的存储单元继续使用增量后的脉冲编程电压进行编程并验证,直至通过验证的存储单元的数量达到设定值。该方法通过逐步增加脉冲编程电压,在一定程度上缓解了采用单次高电压编程时阈值电压分布范围过宽的现象。然而,随着nand技术的不断增加发展,为了增加存储容量,单个存储单元中所设置的存储状态的数目也不断增加。相比在单层存储单元(slc,singlelevelcell)中仅区分“1”或“0”两种存储状态,在多层存储单元(mlc,multi-levelcell)中可以区分“11”、“10”、“01”和“00”四种存储状态。而在存储容量更高的tlc或qlc中,存储状态还会相应成倍增加。这就需要在编程时进一步缩减各存储状态的阈值电压区间范围,以在增加存储容量的同时,确保nand闪存的可靠性。因此,有必要提出一种新的存储器编程方法、装置、电子设备及可读存储介质,解决上述问题。技术实现要素:鉴于以上所述现有技术的缺点,本发明的目的在于提供一种存储器编程方法、装置、电子设备及可读存储介质,用于解决现有技术中在进行存储器编程时,阈值电压区间范围过宽的问题。为实现上述目的及其它相关目的,本发明提供了一种存储器编程方法,其特征在于,包括如下步骤:1)采用初始编程电压对所述存储器中待编程的存储单元进行编程;2)验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;3)采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。作为本发明的一种可选方案,在步骤2)中,验证所述存储单元是否完成编程,对未通过验证的所述存储单元按照编程速度快慢进行分类的方法包括:对编程后的所述存储单元采用编程通过验证电压和至少一种编程速度验证电压进行验证;将通过所述编程通过验证电压验证的所述存储单元判定为通过验证的所述存储单元,将未通过所述编程通过验证电压验证的所述存储单元判定为未通过验证的所述存储单元;按照是否通过所述编程速度验证电压验证,对未通过验证的所述存储单元的编程速度快慢进行分类。作为本发明的一种可选方案,所述编程速度验证电压为一种,将通过所述编程速度验证电压验证的未通过验证的所述存储单元判定为快速单元,将未通过所述编程速度验证电压验证的未通过验证的所述存储单元判定为慢速单元。作为本发明的一种可选方案,不同的所述编程电压包括具有不同电压值和/或持续时间的所述编程电压。作为本发明的一种可选方案,不同的所述编程电压包括第一编程电压和第二编程电压,所述第一编程电压的持续时间小于所述第二编程电压;采用所述第一编程电压对所述快速单元进行再次编程,采用所述第二编程电压对所述慢速单元进行再次编程。作为本发明的一种可选方案,产生所述第一编程电压和所述第二编程电压的方法包括:对所述快速单元和所述慢速单元的字线施加字线电压脉冲,所述字线电压脉冲在持续时间上分为前后连接的第一时间区间和第二时间区间,所述快速单元的位线在所述第一时间区间内施加高电平,在所述第二时间区间内接地,所述慢速单元的位线在所述第一时间区间和所述第二时间区间内接地。作为本发明的一种可选方案,不同的所述编程电压包括第三编程电压和第四编程电压,所述第三编程电压的持续时间小于所述第四编程电压,且所述第三编程电压的电压值小于所述第四编程电压的电压值;采用所述第三编程电压对所述快速单元进行再次编程,采用所述第四编程电压对所述慢速单元进行再次编程。作为本发明的一种可选方案,产生所述第三编程电压和所述第四编程电压的方法包括:对所述快速单元和所述慢速单元的字线施加字线电压脉冲,所述字线电压脉冲在持续时间上分为前后连接的第一时间区间和第二时间区间,所述字线电压脉冲在所述第一时间区间内的电压值高于所述字线电压脉冲在所述第二时间区间内的电压值,所述快速单元的位线在所述第一时间区间内施加高电平,在所述第二时间区间内接地,所述慢速单元的位线在所述第一时间区间和所述第二时间区间内接地。作为本发明的一种可选方案,在采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程后,还包括如下步骤:4)再次验证所述存储单元是否完成编程;5)采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程;6)循环执行步骤4)至步骤5)直至通过验证的所述存储单元的计数大于设定值。作为本发明的一种可选方案,在步骤4)中,还包括对未通过验证的所述存储单元按照编程速度快慢进行再次分类的过程。作为本发明的一种可选方案,在步骤3)中,所述编程电压的电压值高于所述初始编程电压的电压值;在步骤6)中,每次循环执行步骤4)至步骤5)时,步骤5)中的所述编程电压的电压值高于前一次循环中步骤5)中的所述编程电压的电压值。作为本发明的一种可选方案,在步骤6)中,每次循环执行步骤4)至步骤5)时,步骤5)中的所述编程电压的电压值与所述编程电压的持续时间的比值为固定值。作为本发明的一种可选方案,在步骤2)中,在对未通过验证的所述存储单元按照编程速度快慢进行分类之前,还包括对未通过验证的所述存储单元执行指定次数的编程及验证过程的步骤。作为本发明的一种可选方案,所述存储器包括nand闪存存储器。本发明还提供了一种存储器编程装置,其特征在于:包括:初始编程模块,用于采用初始编程电压对所述存储器中待编程的存储单元进行编程;验证模块,用于验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;再次编程模块,用于采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。作为本发明的一种可选方案,所述验证模块包括编程通过验证单元和编程速度验证单元,所述编程通过验证单元采用编程通过验证电压验证所述存储单元,将通过所述编程通过验证电压验证的所述存储单元判定为通过验证的所述存储单元,将未通过所述编程通过验证电压验证的所述存储单元判定为未通过验证的所述存储单元;所述编程速度验证单元采用至少一种编程速度验证电压,对未通过验证的所述存储单元的编程速度快慢进行分类。作为本发明的一种可选方案,所述再次编程模块包括:再次验证单元,所述再次验证单元用于再次验证所述存储单元是否完成编程;再次编程单元,所述再次编程单元用于采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程;循环判断单元,所述循环判断单元用于控制所述再次编程单元和所述再次验证单元循环执行再次编程和再次验证过程,直至通过验证的所述存储单元的计数大于设定值。本发明还提供了一种电子设备,其特征在于:包括:处理器,用于实现如本发明所述的存储器编程方法;指令存储器,所述指令存储器连接所述处理器,用于存储所述处理器可执行的指令。本发明还提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如本发明所述的存储器编程方法。如上所述,本发明提供一种存储器编程方法、装置、电子设备及可读存储介质,具有以下有益效果:本发明通过引入一种新的存储器编程方法、装置、电子设备及可读存储介质,在编程后的验证过程中对存储单元编程速度的快慢进行分类,在再次编程时,对编程速度快慢不同的存储单元施加不同的编程电压,进一步缩减了阈值电压的区间范围,确保了存储器的可靠性。附图说明图1显示为本发明实施例一中提供的一种存储器编程方法的步骤流程图。图2显示为本发明实施例一中提供的一种存储器编程方法的执行流程图。图3显示为本发明实施例一中提供的一种存储器编程方法中所采用的nand闪存存储器的电路结构示意图。图4显示为本发明实施例一中现有的ispp过程中存储单元计数与阈值电压的关系图。图5显示为本发明实施例一中提供的一种存储器编程方法中存储单元计数与阈值电压的关系图。图6显示为本发明实施例一中提供的一种存储器编程方法中多次编程及验证过程中字线电压随时间变化关系图。图7显示为本发明实施例一中提供的一种存储器编程方法中字线电压与各存储单元上所施加位线电压随时间变化的关系图。图8显示为本发明实施例二中提供的一种存储器编程方法中多次编程及验证过程中字线电压随时间变化关系图。图9显示为本发明实施例二中提供的一种存储器编程方法中字线电压与各存储单元上所施加位线电压随时间变化的关系图。图10显示为本发明实施例三中提供的一种存储器编程方法的执行流程图。图11显示为本发明实施例三中提供的一种存储器编程方法中多次编程及验证过程中字线电压随时间变化关系图。图12显示为本发明实施例五中提供的一种电子设备中各部件连接关系图。元件标号说明101~110步骤101~步骤110111慢速单元区间112快速单元区间113通过单元区间114编程后单元区间115对比区间201~213步骤201~步骤213301处理器302指令存储器s1~s6步骤1)~步骤6)具体实施方式以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其它优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。请参阅图1至图12。需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,虽图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的形态、数量及比例可为一种随意的改变,且其组件布局形态也可能更为复杂。实施例一请参阅图1至图7,本实施例提供了一种存储器编程方法,包括如下步骤:1)采用初始编程电压对所述存储器中待编程的存储单元进行编程;2)验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;3)采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。在步骤1)中,如图1的s1及图2所示,采用初始编程电压对所述存储器中待编程的存储单元进行编程。在图2所示的流程图中,在步骤101中开始编程过程,在步骤102中进行初始设置,载入待编程数据,确认需要编程的位置(即设置编程地址),根据trimtable(即在设置编程电压时的参考表)将所述编程电压vpgm设为初始编程电压vpgm_init,并将脉冲计数pc(pulsecount)的初始值设为0,然后在步骤103中执行第一次编程。在本实施例中,设置所述脉冲计数pc的目的在于,每执行一次编程,就将pc增加1,并且设有最大脉冲计数pcmax(pulsecountmaximum),在步骤105中判断pc是否达到设定值pcmax。当判断pc达到pcmax时,在步骤110中结束编程。初始编程电压vpgm_init为根据存储器实际情况设置的预设值,在该预设值下,可以避免单次编程电压过高而造成阈值电压分布较宽的问题,又可以确保足够的编程电压使部分存储单元能够通过验证。如图3所示,是本实施例所采用的nand闪存存储器的电路结构示意图。对存储单元的编程及验证过程包括:在对其中待编程的字线wlsel所对应的页(page)进行编程时,在字线wlsel上施加编程电压vpgm,而该页中各个存储单元则根据其对应的位线电压决定是否进行编程。例如,当位线bl1上所加电压为0v,位线bl2上所加电压为电源电压vdd时,位线bl1所对应的存储单元进行编程,而位线bl2所对应的存储单元不进行编程。在编程后的验证过程中,对字线wlsel施加验证电压以验证各个存储单元的阈值电压的大小并判断其是否通过验证。需要指出的是,本发明所述编程方法并不限定于图3所示的nand闪存电路结构,也可以用于其他任意可能的nand闪存电路结构,如一条字线连接多页的结构,或其他需要通过验证过程改变存储状态的存储器类型,如nor闪存等。在步骤2)中,如图1的s2及图2至图5所示,验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类。在图2所示的流程图中,在步骤103中完成第一次编程后,在步骤104中验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类。可选地,验证及分类的方法包括:对编程后的所述存储单元采用编程通过验证电压和至少一种编程速度验证电压进行验证;将通过所述编程通过验证电压验证的所述存储单元判定为通过验证的所述存储单元,将未通过所述编程通过验证电压验证的所述存储单元判定为未通过验证的所述存储单元;按照是否通过所述编程速度验证电压验证,对未通过验证的所述存储单元的编程速度快慢进行分类。在本实施例中,所述编程通过验证电压为vvry,而所述编程速度验证电压为一种,即vvry1。将通过所述编程速度验证电压vvry1验证的未通过验证的所述存储单元判定为快速单元,将未通过所述编程速度验证电压vvry1验证的未通过验证的所述存储单元判定为慢速单元。具体地,在步骤104中,当所述存储单元的阈值电压vth<vvry1时,将该所述存储单元判定为慢速单元;当所述存储单元的阈值电压vth>vvry1时,将该所述存储单元判定为快速单元;当所述存储单元的阈值电压vth>vvry时,将该所述存储单元判定为通过验证的通过单元。如图4所示,是现有的ispp过程中存储单元计数与阈值电压vth的关系图,其中,位于上方的是编程过程中存储单元计数与阈值电压vth的关系图,位于下方的是编程完成后存储单元计数与阈值电压vth的关系图。从图中可以看出,在ispp过程中,在一次脉冲编程电压施加后,会有部分存储单元的阈值电压vth大于所述编程通过验证电压vvry,而另一部分存储单元的阈值电压vth仍然小于所述编程通过验证电压vvry;在多次增加脉冲编程电压并进行编程后,最终所有设定内的存储单元的阈值电压vth都大于所述编程通过验证电压vvry,从而完成编程过程。ispp过程虽然一定程度上缩减了编程后阈值电压vth的区间分布范围,但在mlc乃至tlc或qlc的nand闪存的应用中,仍希望能够进一步缩减所述阈值电压vth的区间分布范围。分析上述编程过程可以发现,现有的ispp过程仅通过所述编程通过验证电压vvry区分所述存储单元是否通过验证,在后续的编程过程中,对于未通过验证的所述存储单元统一以增量后的脉冲编程电压进行编程。这就导致了所述存储单元无论其编程速度的快慢,都会在同一脉冲编程电压下编程。其中编程速度较快的所述存储单元就可能得到更高的阈值电压,从而使编程后的阈值电压vth的分布区间落在较大的范围内。对此,本发明所述编程方法的优势在于,在一次编程过程后,采用所述编程速度验证电压vvry1对未通过验证的所述存储单元按其编程速度的快慢进行分类,并在后续的编程过程中,采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。如图5所示,是本实施例的编程过程中存储单元计数与阈值电压vth的关系图,其中,位于上方的是编程过程中存储单元计数与阈值电压vth的关系图,位于下方的是编程完成后存储单元计数与阈值电压vth的关系图。从图5中可以看出,在编程过程中,通过引入所述编程速度验证电压vvry1对未通过验证的所述存储单元按其编程速度的快慢进行分类。在图5中,通过所述编程速度验证电压vvry1和所述编程通过验证电压vvry将所述存储单元的阈值电压vth分为慢速单元区间111、快速单元区间112和通过单元区间113。在后续的再编程过程中,通过对所述慢速单元区间111和所述快速单元区间112中的存储单元分别施加不同的编程电压,最终可以使编程后的阈值电压vth的分布区间得到大幅缩减。如图5所示,编程后单元区间114是本实施例的编程过程后阈值电压vth的分布区间,其分布区间范围要明显小于现有技术中ispp过程得到的对比区间115。需要指出的是,在本实施例中仅采用一种所述编程速度验证电压vvry1将未通过验证的存储单元分为快速单元和慢速单元,而在本发明的其他实施方案中,还可增加所述编程速度验证电压的数量,分设不同大小的所述编程速度验证电压,以进一步按编程速度划分未通过验证的存储单元。例如,引入vvry1和vvry2两种编程速度验证电压,将存储单元分为慢速单元、中速单元和快速单元。在后续的再编程过程中,针对慢速单元、中速单元和快速单元分别施加不同的编程电压,以进一步提高本发明缩减阈值电压vth分布区间的效果。如图6所示,是本实施例中多次编程及验证过程中字线电压随时间变化关系图。其中,vpgm是编程电压,vpass是位线导通电压。vstep是编程电压每次的增量,也即是图中δv1、δv2、δv3之间递增的差值。可选地,在本实施例中,δv1/t1、δv2/t2、δv3/t3和δv/tselwl等的比值都相等,为可设定的常数,使编程电压的持续时间随电压增大而延长,可以防止在脉冲持续时间较短时,电压上升时间影响编程电压的有效持续时间。从图6中还可以看出,在每次编程电压的脉冲过后,还会通过所述编程通过验证电压vvry对各存储单元的编程状况进行验证。其中,在第一次编程过程后,还通过所述编程速度验证电压vvry1对存储单元的编程快慢进行分类。即在图2的步骤104中,当所述存储单元的阈值电压vth<vvry1时,将该所述存储单元判定为慢速单元;当所述存储单元的阈值电压vth>vvry1时,将该所述存储单元判定为快速单元;当所述存储单元的阈值电压vth>vvry时,将该所述存储单元判定为通过单元。需要指出的是,在本实施例中,仅在第一次编程后按编程速度划分未通过验证的存储单元,而在本发明的其他实施方案中,还可以在之后的每次编程后都对存储单元的编程速度进行再次分类,并在下一次编程过程中根据新的分类结果进行编程处理。在步骤3)中,如图1的s3及图3所示,采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。作为示例,不同的所述编程电压包括具有持续时间的所述编程电压。可选地,不同的所述编程电压包括第一编程电压和第二编程电压,所述第一编程电压的持续时间小于所述第二编程电压;采用所述第一编程电压对所述快速单元进行再次编程,采用所述第二编程电压对所述慢速单元进行再次编程。作为示例,产生所述第一编程电压和所述第二编程电压的方法包括:对所述快速单元和所述慢速单元的字线施加字线电压脉冲,所述字线电压脉冲在持续时间上分为前后连接的第一时间区间和第二时间区间,所述快速单元的位线在所述第一时间区间内施加高电平,在所述第二时间区间内接地,所述慢速单元的位线在所述第一时间区间和所述第二时间区间内接地。具体地,如图7所示,是编程过程中,字线wlsel上所施加的字线电压与各存储单元上所施加位线电压随时间变化的关系图。从图7中可以看出,慢速单元与快速单元上所施加的位线电压不同。结合图2的步骤106可以看出,慢速单元在整个编程过程中始终保持0v的位线电压,这使得字线电压vi始终能够对慢速单元进行编程;而快速单元在编程过程的前δtn时间内的位线电压保持为设定值vfast_bl,这就抑制了字线电压vi在δtn时间内对快速单元的编程,即所述第一编程电压的有效持续时间为δti-δtn,小于所述第二编程电压的持续时间δti。其中,δtn及vfast_bl皆为可调参数,可以根据实际情况进行调节,以调整快速单元与慢速单元之间的编程电压的条件差异。此外,在验证过程中判定为通过验证的通过单元的位线电压在整个编程过程中设为电源电压vdd,以屏蔽编程过程对已通过验证的存储单元的影响。作为示例,如图1的s4至s6所示,在采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程后,还包括如下步骤:4)再次验证所述存储单元是否完成编程;5)采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程;6)循环执行步骤4)至步骤5)直至通过验证的所述存储单元的计数大于设定值。请参考图2的步骤107,在步骤106中完成对存储单元的判断及分类后,增加编程电压及脉冲宽度进行再次编程。在执行了编程过程后,再次使用所述编程通过验证电压vvry对各存储单元的编程状况进行验证。在步骤108中,对验证过程进行判断,如果未通过验证的存储单元的数量已小于设定的容许数量,则可结束编程;否则就需要执行步骤109,继续增加编程电压,增加脉冲计数pc,并转跳至步骤105中判断pc是否达到pcmax,以开始下一次的编程循环。由此可以看出,在本实施例中,判断编程结束有两个触发节点,一个是步骤105中判断脉冲计数pc是否达到pcmax,另一个是步骤108中判断未通过验证的存储单元的数量是否小于设定的容许数量。通过以上节点设置可以进一步防止采用过高的编程电压对存储单元进行编程,以确保编程后得到较窄阈值电压vth分布区间。实施例二请参阅图8至图9,本实施例提供了一种存储器编程方法。与实施例一中的方法相比,本实施例的不同之处在于:在本实施例中,不同的所述编程电压包括具有不同电压值和持续时间的所述编程电压。作为示例,不同的所述编程电压包括第三编程电压和第四编程电压,所述第三编程电压的持续时间小于所述第四编程电压,且所述第三编程电压的电压值小于所述第四编程电压的电压值;采用所述第三编程电压对所述快速单元进行再次编程,采用所述第四编程电压对所述慢速单元进行再次编程。在本实施例中,通过引入随时间区间变化的字线电压,并调节对应时间区间上的位线电压,使所述第三编程电压的电压值小于所述第四编程电压的电压值。作为示例,图8是本实施例中多次编程及验证过程中字线电压随时间变化关系图,图9是字线wlsel上所施加的字线电压与各存储单元上所施加位线电压随时间变化的关系图。产生所述第三编程电压和所述第四编程电压的方法包括:对所述快速单元和所述慢速单元的字线施加字线电压脉冲,所述字线电压脉冲在持续时间上分为前后连接的第一时间区间和第二时间区间,所述字线电压脉冲在所述第一时间区间内的电压值高于所述字线电压脉冲在所述第二时间区间内的电压值,所述快速单元的位线在所述第一时间区间内施加高电平,在所述第二时间区间内接地,所述慢速单元的位线在所述第一时间区间和所述第二时间区间内接地。具体地,从图8中可以看出,除了第一次编程过程中所施加的编程电压外,后续的多次脉冲编程电压都具有变化的电压值。该电压值的变化是根据所述快速单元和所述慢速单元分别施加的。从图9中可以看出,对比实施例一中的图7,在本实施例中,字线电压在δti1和δti2的不同时间区间上的电压值不同。对于快速单元而言,在其有效的编程时间δti-δtn内,字线电压为较低的vi2;而对于慢速单元而言,其在时间区间δti1内可以得到较高的字线电压vi1的编程。相比实施例一,本实施例通过引入具有不同电压值的编程电压,进一步区分了快速单元和慢速单元的编程条件,减小了快速单元在编程时受到高编程电压的影响,以确保编程后得到较窄阈值电压vth分布区间。可选地,本实施例中,字线电压持续时间δti1和δti2以及字线电压vi1和vi2的值都可以根据实际情况进行灵活调整,以对应快速单元和慢速单元各自适合的编程条件。本实施例的其他实施方案与实施例一相同,此处不再赘述。实施例三请参阅图10至图11,本实施例提供了一种存储器编程方法。与实施例二中的方法相比,本实施例的不同之处在于:在区分快速单元和慢速单元前,先执行若干次的编程及验证过程,待递增的编程电压升高到一定程度后,再将存储单元区分为快速单元和慢速单元进行编程处理,且在之后的每次验证过程中都进行编程速度的分类判断。作为示例,在步骤2)中,在对未通过验证的所述存储单元按照编程速度快慢进行分类之前,还包括对未通过验证的所述存储单元执行指定次数的编程及验证过程的步骤。本实施例中的方案的优点在于,在对存储单元的编程速度进行区分前,先执行若干次的编程及验证过程。由于编程电压在编程初始阶段较小,其对于最终阈值电压分布范围的影响有限,在本阶段不区分编程速度进行编程有助于提高编程速度。而当编程电压达到设定值后,对存储单元的编程速度进行区分,对快速单元和慢速单元分别施加不同的编程电压,以确保编程后得到较窄阈值电压分布区间。作为示例,请参阅图10中具体执行本实施例的流程图。在图10中,在步骤201处开始编程,在步骤202处进行初始设置,载入待编程数据,确认需要编程的位置(即设置编程地址),根据trimtable将所述编程电压vpgm设为初始编程电压vpgm_init,并将脉冲计数pc的初始值设为0。在步骤203中先对脉冲计数pc(pulsecount)进行判断,一旦其达到最大脉冲计数pcmax(pulsecountmaximum),则判断编程结束。反之,则进入步骤204,增加编程电压vpgm及脉冲宽度并开始编程。在编程完成后,在步骤205中,再次对pc进行判断。在本实施例中,引入了预设的判断参数pcmk(pulsecountmark),代表进行编程速度区分前的编程过程的执行次数。例如,本实施例中,将pcmk设为2,则在进行编程速度区分前,将先执行2次不进行编程速度区分的编程过程。根据步骤205的判断,如pc未达到设定的pcmk,则进入步骤206,仅通过vvry验证存储单元是否通过验证;如pc达到设定的pcmk,则进入步骤207,当所述存储单元的阈值电压vth<vvry1时,将该所述存储单元判定为慢速单元;当所述存储单元的阈值电压vth>vvry1时,将该所述存储单元判定为快速单元;当所述存储单元的阈值电压vth>vvry1时,将该所述存储单元判定为快速单元。在步骤208中,如未通过验证的存储单元计数小于设定的容许数量,则可直接结束编程,否则就进入步骤210中,进一步增加编程电压vpgm的电压值,并使pc加1。在步骤211中,再次对pc是否达到pcmk进行判断,如其未达到pcmk,则在步骤212中使用对应的不区分编程速度的编程电压进行编程;反之,则在步骤213中,针对快速单元和慢速单元施加不同的编程电压。之后转跳至步骤203处对pc进行判断,并进行下一轮循环,直至编程结束。如图11所示,是本实施例中多次编程及验证过程中字线电压随时间变化关系图。如上文所述,本实施例中,已将pcmk设为2,则在区分编程速度进行编程前,将执行2次不区分编程速度的编程。在第二次编程结束后,采用所述编程速度验证电压vvry1和所述编程通过验证电压vvry分别进行通过验证及编程速度区分,并将存储单元区分为快速单元和慢速单元后,在后续的编程过程中施加不同的编程电压。需要指出的是,本实施例中将pcmk设为2仅是为了便于示例说明本实施例的方案,pcmk的具体数值可以根据实际需要进行灵活设定。本实施例通过引入pcmk参数,在编程过程中对脉冲计数pc是否达到pcmk进行判断,在编程起始阶段,即编程电压较低时,进行不区分编程速度的编程;而当脉冲计数pc达到pcmk时,即编程电压较高时,开始进行区分编程速度的编程。这不但确保了编程后得到较窄阈值电压分布区间,也避免了不必要的编程速度区分,提高了编程过程的执行速度。本实施例的其他实施方案与实施例二相同,此处不再赘述。实施例四本实施例提供了一种存储器编程装置,包括:初始编程模块,用于采用初始编程电压对所述存储器中待编程的存储单元进行编程;验证模块,用于验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;再次编程模块,用于采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。作为示例,本实施例所提供的存储器编程装置可以用于实施例一至三中的任意一种存储器编程方法的实施。所述初始编程模块、所述验证模块和所述再次编程模块的功能还可以根据所述存储器编程方法的不同实施方案进行对应调整。作为示例,所述验证模块包括编程通过验证单元和编程速度验证单元,所述编程通过验证单元采用编程通过验证电压验证所述存储单元,将通过所述编程通过验证电压验证的所述存储单元判定为通过验证的所述存储单元,将未通过所述编程通过验证电压验证的所述存储单元判定为未通过验证的所述存储单元;所述编程速度验证单元采用至少一种编程速度验证电压,对未通过验证的所述存储单元的编程速度快慢进行分类。具体地,所述编程速度验证单元可以设定一种所述编程速度验证电压,将通过所述编程速度验证电压验证的未通过验证的所述存储单元判定为快速单元,将未通过所述编程速度验证电压验证的未通过验证的所述存储单元判定为慢速单元。通过区分快速单元和慢速单元,可以在所述再次编程模块进行再次编程时,针对不同快慢的所述存储单元施加不同的编程电压,以确保编程后得到较窄阈值电压分布区间。作为示例,所述再次编程模块包括:再次验证单元,所述再次验证单元用于再次验证所述存储单元是否完成编程;再次编程单元,所述再次编程单元用于采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程;循环判断单元,所述循环判断单元用于控制所述再次编程单元和所述再次验证单元循环执行再次编程和再次验证过程,直至通过验证的所述存储单元的计数大于设定值。所述再次编程模块在执行了一次再次编程后,还会再次对所述存储单元的编程通过情况进行验证,并采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程,反复执行以上验证和编程过程,直至通过验证的所述存储单元的计数大于设定值。实施例五如图12所示,本实施例提供了一种电子设备,该设备可以包括处理器301和指令存储器302,其中处理器301和指令存储器302可以通过总线或者其他方式通过通信接口相互连接。具体地,所述处理器301可以是任意类型可用的具有信息处理功能的器件,如中央处理器或数字信号处理器等,用于实现如实施例一至三所述的存储器编程方法;所述指令存储器302连接所述处理器301,可以是各种可用的存储介质,用于存储所述处理器301可执行的指令。实施例六本实施例提供了一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如实施例一至三所述的存储器编程方法。作为示例,领域技术人员可以理解,实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述存储介质可为磁碟、光盘、只读存储记忆体(read-onlymemory,rom)、随机存储记忆体(randomaccessmemory,ram)、快闪存储器(flashmemory)、硬盘(harddiskdrive,hdd)或固态硬盘(solid-statedrive,ssd)等;所述存储介质还可以包括上述种类的存储器的组合。综上所述,本发明提供了一种存储器编程方法、装置、电子设备及可读存储介质,所述存储器编程方法包括如下步骤:1)采用初始编程电压对所述存储器中待编程的存储单元进行编程;2)验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;3)采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。本发明通过引入一种新的存储器编程方法、装置、电子设备及可读存储介质,在编程后的验证过程中对存储单元编程速度的快慢进行分类,在再次编程时,对编程速度快慢不同的存储单元施加不同的编程电压,进一步缩减了阈值电压的区间范围,确保了存储器的可靠性。上述实施例仅例示性说明本发明的原理及其功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属

技术领域:

:中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。当前第1页1 2 3 当前第1页1 2 3 

技术特征:

1.一种存储器编程方法,其特征在于,包括如下步骤:

1)采用初始编程电压对所述存储器中待编程的存储单元进行编程;

2)验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;

3)采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。

2.根据权利要求1所述的存储器编程方法,其特征在于:在步骤2)中,验证所述存储单元是否完成编程,对未通过验证的所述存储单元按照编程速度快慢进行分类的方法包括:对编程后的所述存储单元采用编程通过验证电压和至少一种编程速度验证电压进行验证;将通过所述编程通过验证电压验证的所述存储单元判定为通过验证的所述存储单元,将未通过所述编程通过验证电压验证的所述存储单元判定为未通过验证的所述存储单元;按照是否通过所述编程速度验证电压验证,对未通过验证的所述存储单元的编程速度快慢进行分类。

3.根据权利要求2所述的存储器编程方法,其特征在于:所述编程速度验证电压为一种,将通过所述编程速度验证电压验证的未通过验证的所述存储单元判定为快速单元,将未通过所述编程速度验证电压验证的未通过验证的所述存储单元判定为慢速单元。

4.根据权利要求3所述的存储器编程方法,其特征在于:不同的所述编程电压包括具有不同电压值和/或持续时间的所述编程电压。

5.根据权利要求4所述的存储器编程方法,其特征在于:不同的所述编程电压包括第一编程电压和第二编程电压,所述第一编程电压的持续时间小于所述第二编程电压;采用所述第一编程电压对所述快速单元进行再次编程,采用所述第二编程电压对所述慢速单元进行再次编程。

6.根据权利要求5所述的存储器编程方法,其特征在于:产生所述第一编程电压和所述第二编程电压的方法包括:对所述快速单元和所述慢速单元的字线施加字线电压脉冲,所述字线电压脉冲在持续时间上分为前后连接的第一时间区间和第二时间区间,所述快速单元的位线在所述第一时间区间内施加高电平,在所述第二时间区间内接地,所述慢速单元的位线在所述第一时间区间和所述第二时间区间内接地。

7.根据权利要求4所述的存储器编程方法,其特征在于:不同的所述编程电压包括第三编程电压和第四编程电压,所述第三编程电压的持续时间小于所述第四编程电压,且所述第三编程电压的电压值小于所述第四编程电压的电压值;采用所述第三编程电压对所述快速单元进行再次编程,采用所述第四编程电压对所述慢速单元进行再次编程。

8.根据权利要求7所述的存储器编程方法,其特征在于:产生所述第三编程电压和所述第四编程电压的方法包括:对所述快速单元和所述慢速单元的字线施加字线电压脉冲,所述字线电压脉冲在持续时间上分为前后连接的第一时间区间和第二时间区间,所述字线电压脉冲在所述第一时间区间内的电压值高于所述字线电压脉冲在所述第二时间区间内的电压值,所述快速单元的位线在所述第一时间区间内施加高电平,在所述第二时间区间内接地,所述慢速单元的位线在所述第一时间区间和所述第二时间区间内接地。

9.根据权利要求1所述的存储器编程方法,其特征在于:在采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程后,还包括如下步骤:

4)再次验证所述存储单元是否完成编程;

5)采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程;

6)循环执行步骤4)至步骤5)直至通过验证的所述存储单元的计数大于设定值。

10.根据权利要求9所述的存储器编程方法,其特征在于:在步骤4)中,还包括对未通过验证的所述存储单元按照编程速度快慢进行再次分类的过程。

11.根据权利要求9所述的存储器编程方法,其特征在于:在步骤3)中,所述编程电压的电压值高于所述初始编程电压的电压值;在步骤6)中,每次循环执行步骤4)至步骤5)时,步骤5)中的所述编程电压的电压值高于前一次循环中步骤5)中的所述编程电压的电压值。

12.根据权利要求11所述的存储器编程方法,其特征在于:在步骤6)中,每次循环执行步骤4)至步骤5)时,步骤5)中的所述编程电压的电压值与所述编程电压的持续时间的比值为固定值。

13.根据权利要求1所述的存储器编程方法,其特征在于:在步骤2)中,在对未通过验证的所述存储单元按照编程速度快慢进行分类之前,还包括对未通过验证的所述存储单元执行指定次数的编程及验证过程的步骤。

14.根据权利要求1所述的存储器编程方法,其特征在于:所述存储器包括nand闪存存储器。

15.一种存储器编程装置,其特征在于:包括:

初始编程模块,用于采用初始编程电压对所述存储器中待编程的存储单元进行编程;

验证模块,用于验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;

再次编程模块,用于采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。

16.根据权利要求15所述的存储器编程装置,其特征在于:所述验证模块包括编程通过验证单元和编程速度验证单元,所述编程通过验证单元采用编程通过验证电压验证所述存储单元,将通过所述编程通过验证电压验证的所述存储单元判定为通过验证的所述存储单元,将未通过所述编程通过验证电压验证的所述存储单元判定为未通过验证的所述存储单元;所述编程速度验证单元采用至少一种编程速度验证电压,对未通过验证的所述存储单元的编程速度快慢进行分类。

17.根据权利要求15所述的存储器编程装置,其特征在于:所述再次编程模块包括:

再次验证单元,所述再次验证单元用于再次验证所述存储单元是否完成编程;

再次编程单元,所述再次编程单元用于采用不同的编程电压分别对编程速度不同的未通过验证的所述存储单元进行再次编程;

循环判断单元,所述循环判断单元用于控制所述再次编程单元和所述再次验证单元循环执行再次编程和再次验证过程,直至通过验证的所述存储单元的计数大于设定值。

18.一种电子设备,其特征在于:包括:

处理器,用于实现如权利要求1-14任一项所述的存储器编程方法;

指令存储器,所述指令存储器连接所述处理器,用于存储所述处理器可执行的指令。

19.一种计算机可读存储介质,其上存储有计算机程序,其特征在于:所述计算机程序被处理器执行时实现如权利要求1-14任一项所述的存储器编程方法。

技术总结

本发明提供了一种存储器编程方法、装置、电子设备及可读存储介质,所述存储器编程方法包括如下步骤:1)采用初始编程电压对所述存储器中待编程的存储单元进行编程;2)验证所述存储单元是否完成编程,并对未通过验证的所述存储单元按照编程速度快慢进行分类;3)采用不同的编程电压分别对编程速度快慢不同的未通过验证的所述存储单元进行再次编程。本发明通过引入一种新的存储器编程方法、装置、电子设备及可读存储介质,在编程后的验证过程中对存储单元编程速度的快慢进行分类,在再次编程时,对编程速度快慢不同的存储单元施加不同的编程电压,进一步缩减了阈值电压的区间范围,确保了存储器的可靠性。

技术研发人员:李爽;王瑜;张超;李海波;侯春源;盛悦

受保护的技术使用者:长江存储科技有限责任公司

技术研发日:.08.12

技术公布日:.12.27

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。