存储器装置的编程方法与流程

文档序号:19379354发布日期:2019-12-11 00:12阅读:210来源:国知局
存储器装置的编程方法与流程

本发明是有关于一种存储器装置的编程方法。



背景技术:

闪存是非易失性存储器装置的一种。施加编程电压脉冲至存储器单元,可将数据存储至存储器单元内。

为让存储器单元的阈值电压分布紧缩,在增阶脉冲编程(incrementalsteppulseprogramming,ispp)过程中,可执行一个编程(program)步骤与一个或多个验证(verify)步骤,其中,各编程脉冲可增加存储器单元的阈值电压。而且,在ispp的各编程脉冲之间,更可以施加编程验证(programverify,pv)脉冲,以验证存储器单元的阈值电压是否超过验证电压,以检查是否编程成功。藉此,ispp可用于达成阈值电压分布紧缩。

此外,闪存可能具有时间相关漂移(timedependentrelaxation)特性。此特性使得存储器单元的阈值电压有可能向下或向上漂移,导致该存储器单元的阈值电压变得无法通过验证且使得阈值电压分布较为宽广。

故而,需要有一种存储器装置的编程方法可紧缩存储器单元的阈值电压分布。



技术实现要素:

本案一实例提出一种存储器装置的编程方法,包括:以一编程电压与一编程码来编程一目标存储器单元;施加一第一验证电压与一第二验证电压于该目标存储器单元,并得到一第一读取数据与一第二读取数据;以及根据该编程码、该第一读取数据与该第二读取数据来判断该目标存储器单元是否通过一真正编程验证及/或一虚拟编程验证。

本案另一实例提出一种存储器装置的编程方法,包括:执行一编程操作与一编程-验证操作于一目标存储器单元,该编程操作与该编程-验证操作包括:施加多个编程电压、多个第一验证电压与多个第二验证电压于该目标存储器单元,其中,各该些第一验证电压与各该些第二验证电压之间的一电压差有关于一时间相关漂移特性;以及决定该目标存储器单元的一阈值电压是否超过各该些第一验证电压及/或各该些第二验证电压,以决定该目标存储器单元是否被编程成功。

为了对本发明的上述及其他方面有更佳的了解,下文特举实施例,并配合附图详细说明如下:

附图说明

图1显示根据本案第一实施例的存储器装置的编程方法流程图。

图2显示根据本案第一实施例的编程顺序的示意图。

图3显示slc存储器单元的阈值电压分布图。

图4显示根据本案第二实施例的存储器装置的编程方法流程图。

图5显示根据本案第二实施例的编程顺序的示意图。

图6显示mlc的阈值电压分布图。

图7显示根据本案第三实施例的存储器装置的编程方法流程图。

图8显示根据本案第三实施例的编程顺序的示意图。

图9显示tlc的阈值电压分布图。

【符号说明】

105-130、405-450、705-740:步骤

p(0)~p(n+2):编程电压

vr1、vr2、vr1_a、vr2_a、…、vr1_g、vr2_g:验证电压

l1-l8:曲线

605-620、905-940:范围

具体实施方式

本说明书的技术用语是参照本技术领域的习惯用语,如本说明书对部分用语有加以说明或定义,该部分用语的解释是以本说明书的说明或定义为准。本揭露的各个实施例分别具有一或多个技术特征。在可能实施的前提下,本技术领域普通技术人员可选择性地实施任一实施例中部分或全部的技术特征,或者选择性地将这些实施例中部分或全部的技术特征加以组合。

现请参考图1,其显示根据本案第一实施例的存储器装置的编程方法流程图。图1可适用单层单元(slc,single-levelcell)。

如图1所示,于步骤105中,输入数据至待编程的多个存储器单元的一目标存储器单元。例如,要编程一个页的所有存储器单元的话,则该页的所有存储器单元乃是同步编程,但该页的所有存储器单元是根据各自位线上的电位来决定是否执行编程操作,其中,位线的电位是0v则执行编程操作,如果位线的电位是vcc电位则不执行编程操作(vcc即为系统提供的电源)。

于步骤110中,以编程电压p(n)与编程码pgmcode(n)来编程该目标存储器单元,其中,n为正整数,n的初始值比如但不受限于为0。编程电压p(n)请参考图2。

图2显示根据本案第一实施例的编程顺序(programsequence)的示意图。图3则显示slc存储器单元的阈值电压分布图,其中,曲线l1-l8分别代表施加不同的编程电压后所得到的阈值电压分布。如图2与图3所示,由于本案第一实施例使用ispp,故而,该些编程电压乃是渐增,例如但不受限于,以固定步阶来增加。举例来说,在ispp所用的编程电压范围内,各编程电压以0.5v来增加。亦即,假设编程电压p(n)是17v,则编程电压p(n+1)则是17.5v。如图2所示,于本案第一实施例中,于施加一次编程电压p(n)后,施加2次验证电压vr2与vr1(亦即本案第一实施例属于1p2v)。其中,如上述般,编程电压p(n)是渐增,而验证电压vr2与vr1则是固定的。

至于如何决定要写入的码则将于底下说明。例如但不受限于,第1次的编程时,以初始编程电压p(0)(n=0)与初始编程码pgmcode(0)来编程该目标存储器单元,其中,编程码pgmcode(0)乃是由步骤105所输入的数据来决定。

接着,于步骤115中,施加验证电压vr2与vr1于该目标存储器单元来读取该目标存储器单元,以得到两笔读取数据。

于步骤120中,以下列等式来得到下一编程码pgmcode(n+1)=inv(r1)|inv(r2)|pgmcode(n)(亦即,pgmcode(n+1)={inv(r1)orinv(r2)orpgmcode(n)},其中,r1与r2分别代表以验证电压vr1与vr2所读取到的数据,而inv(r1)与inv(r2)分别代表以验证电压vr1与vr2所读取到的数据的反相。如果pgmcode(n+1)为逻辑1的话,则代表该目标存储器单元已通过虚拟编程验证(pseudoprogramverify)。详细而言,当pgmcode(n)为逻辑0时,如果inv(r1)或inv(r2)中的至少一者为逻辑1的话。亦即,验证电压vr1与vr2对该目标存储器单元所读取到的数据其中至少一者为逻辑0,则代表该目标存储器单元已通过虚拟编程验证。也就是说,经过ispp后,如果该目标存储器单元的阈值电压已超过验证电压vr1与vr2中的较小者,则代表该目标存储器单元已通过虚拟编程验证。

此外,在本案第一实施例中,可以先用验证电压vr2来验证/读取该目标存储器单元,再用验证电压vr1来验证/读取该目标存储器单元(如图2的编程顺序所示),其中,验证电压vr2亦可称为真正验证电压,而验证电压vr1亦可称为虚拟验证电压。

在本案第一实施例中,于施加编程电压于该目标存储器单元后,如果该目标存储器单元的阈值电压已超过验证电压vr2(真正验证电压),则代表该目标存储器单元已通过真正编程验证。如果该目标存储器单元已通过真正编程验证,则在本案第一实施例中,可以停止对该目标存储器单元的编程操作。

此外,于施加编程电压于该目标存储器单元后,如果该目标存储器单元的阈值电压未超过验证电压vr2(真正验证电压)但却超过验证电压vr1(虚拟验证电压),则代表该目标存储器单元虽未通过真正编程验证但已通过虚拟编程验证。在本案第一实施例中,在施加编程电压于目标存储器单元后,如果该目标存储器单元的阈值电压超过验证电压vr1(虚拟验证电压),则该目标存储器单元的阈值电压可能会因为时间相关漂移特性,导致在之后的时间点,该目标存储器单元的阈值电压向上漂移而导致该目标存储器单元的阈值电压从低于验证电压vr2(真正验证电压)变成高于验证电压vr2(真正验证电压)。故而,在本案第一实施例中,当决定该目标存储器单元的阈值电压超过验证电压vr1(虚拟验证电压)的话,则视为该目标存储器单元已通过虚拟编程验证。如果该目标存储器单元已通过虚拟编程验证,则在本案第一实施例中,可以停止对该目标存储器单元的编程操作。

如上述般,在本案第一实施例中,对于已经通过真正编程验证或者已通过虚拟编程验证的目标存储器单元,则不再继续施加编程电压。

于步骤125中,决定所施加的编程电压是否已达最大编程电压,或者,决定所有待编程的存储器单元皆已通过编程验证。如果步骤125为是,则流程结束。如果步骤125为否,则流程接至步骤130,增加编程电压p(n)为编程电压p(n+1)(例如,以固定步阶来增加),且将编程码pgmcode(n)更新为编程码pgmcode(n+1)。之后,流程回至步骤110,以编程电压p(n+1)与编程码pgmcode(n+1)来编程该目标存储器单元。

详细来说,于步骤125中,决定是否已达最大编程电压是指,所施加的编程电压是否已达到在该编程电压范围内的最大编程电压。

此外,于步骤125中,「决定是否所有待编程的存储器单元皆已通过编程验证」是指,例如,对一个页的所有存储器单元进行编程,则决定该页的所有存储器单元的各别阈值电压是否皆已高于vr2或vr1的任一者。如果该页的所有存储器单元的各别阈值电压皆已高于vr2或vr1的任一者,则代表该页的所有存储器单元皆已通过编程验证,所以流程结束。如果该页仍有至少一存储器单元的各别阈值电压仍低于vr2与vr1,则该至少一存储器单元未通过编程验证,所以流程继续,以针对未通过编程验证的存储器单元进行编程与验证。

此外,在图2与图3,真正验证电压vr2大于虚拟验证电压vr1,然而,于本案其他可能实施例中,真正验证电压vr2可以小于或等于虚拟验证电压vr1。此亦在本案精神范围内。

此外,在图1的流程的步骤115中,先用真正验证电压vr2读取,之后,才以虚拟验证电压vr1读取。然而,于本案其他可能实施例中,亦可以先用虚拟验证电压vr1读取,之后,才以真正验证电压vr2读取,此亦在本案精神范围内。

此外,在本案第一实施例中,验证电压vr2与vr1之间的差值可能相关于由于时间相关漂移特性所导致的阈值电压漂移量。

如上所述,为解决闪存的时间相关漂移特性,本案第一实施例可以图1至图3的方式来解决。故而,此实施容易与现有的电路整合。

在本案第一实施例中,通过1p2v的编程操作,可使得存储器单元的阈值电压分布更加紧缩。

第二实施例

现请参考图4,其显示根据本案第二实施例的存储器装置的编程方法流程图。图4可适用双层单元(mlc,multi-levelcell)。步骤405与410类似于图1的步骤105与110,故其描述省略。

图5显示根据本案第二实施例的编程顺序的示意图。图6则显示mlc的阈值电压分布图。在图6中,范围605代表擦除状态(erasedstate)。如果存储器单元的阈值电压落于范围605内,则代表该存储器单元被编程为擦除状态(存储逻辑11)。范围610代表第一编程状态(programmedstate),如果存储器单元的阈值电压落于范围610内,则代表该存储器单元被编程为第一编程状态(存储逻辑10)。范围615代表第二编程状态,如果存储器单元的阈值电压落于范围615内,则代表该存储器单元被编程为第二编程状态(存储逻辑00)。范围620代表第三编程状态,如果存储器单元的阈值电压落于范围620内,则代表该存储器单元被编程为第三编程状态(存储逻辑01)。

图5与图6所示,于本案第二实施例中,于施加一次编程电压p(n)后,施加验证电压vr2_a、vr1_a、vr2_b、vr1_b、vr2_c与vr1_c(亦即本案第二实施例亦属于1p2v)。验证电压vr2_a、vr1_a例如可用于验证存储器单元的阈值电压是否落于范围610中。验证电压vr2_b、vr1_b例如可用于验证存储器单元的阈值电压是否落于范围615中。验证电压vr2_c、vr1_c例如可用于验证存储器单元的阈值电压是否落于范围620中。

当然,编程电压p(n)是渐增,而验证电压vr2_a、vr1_a、vr2_b、vr1_b、vr2_c与vr1_c则是固定的。

至于如何决定要写入的码则将于底下说明。例如但不受限于,第1次的编程时,以初始编程电压p(0)(n=0)与初始编程码pgmcode(0)来编程该些存储器单元,其中,编程码pgmcode(0)乃是由步骤405所输入的数据来决定。

接着,于步骤415中,施加验证电压vr2_a与vr1_a于该目标存储器单元来读取该目标存储器单元,以得到读取数据r2_a与r1_a。

于步骤420中,以下列等式来得到下一编程码pgmcode(n+1)=inv(r1_a)|inv(r2_a)|pgmcode(n)(亦即,pgmcode(n+1)={inv(r1_a)orinv(r2_a)orpgmcode(n)},其中,r1_a与r2a分别代表以验证电压vr1_a与vr2_a所读取到的数据,而inv(r1_a)与inv(r2_a)分别代表以验证电压vr1_a与vr2_a所读取到的数据的反相。如果pgmcode(n+1)为逻辑1的话,则代表该目标存储器单元已通过虚拟编程验证。r1_b、r2_b、inv(r1_b)、inv(r2_b)、r1_c、r2_c、inv(r1_c)与inv(r2_c)代表相同意思。

此外,在本案第二实施例中,根据步骤405所输入的用户数据,来决定步骤420所得到的pgmcode(n+1)是否要被使用。亦即,如果用户数据为10,代表该存储器单元应该要被编程为10(图6的范围610),则步骤420所得到的pgmcode(n+1)可用于决定该存储器单元的下一个编程码pgmcode(n+1)。相反地,如果用户数据不是10,则步骤420所得到的pgmcode(n+1)不用于决定该存储器单元的下一个编程码pgmcode(n+1)(亦即,步骤420所得到的pgmcode(n+1)被跳过)。

相似地,步骤425、430、435与440相似于步骤415与420。类似地,根据步骤405所输入的用户数据,来决定步骤430所得到的pgmcode(n+1)是否要被使用。亦即,如果用户数据为00,代表该存储器单元应该要被编程为00(图6的范围615),则步骤430所得到的pgmcode(n+1)可用于决定该存储器单元的下一个编程码pgmcode(n+1)。相反地,如果用户数据不是00,则步骤430所得到的pgmcode(n+1)不用于决定该存储器单元的下一个编程码pgmcode(n+1)(亦即,步骤430所得到的pgmcode(n+1)被跳过)。

类似地,根据步骤405所输入的用户数据,来决定步骤440所得到的pgmcode(n+1)是否要被使用。亦即,如果用户数据为01,代表该存储器单元应该要被编程为01(图6的范围620),则步骤440所得到的pgmcode(n+1)可用于决定该存储器单元的下一个编程码pgmcode(n+1)。相反地,如果用户数据不是01,则步骤440所得到的pgmcode(n+1)不用于决定该存储器单元的下一个编程码pgmcode(n+1)(亦即,步骤440所得到的pgmcode(n+1)被跳过)。

步骤445与450相似于图1的步骤125与130。

相同的,在图5与图6中,真正验证电压vr2_a/vr2_b/vr2_c大于虚拟验证电压vr1_a/vr1_b/vr1_c,然而,于本案其他可能实施例中,真正验证电压vr2_a/vr2_b/vr2_c可以小于或等于虚拟验证电压vr1_a/vr1_b/vr1_c。此亦在本案精神范围内。

此外,在图4的流程的步骤415、425与435中,先用真正验证电压vr2_a/vr2_b/vr2_c读取,之后,才以虚拟验证电压vr1_a/vr1_b/vr1_c读取。然而,于本案其他可能实施例中,亦可以先用虚拟验证电压vr1_a/vr1_b/vr1_c读取,之后,才以真正验证电压vr2_a/vr2_b/vr2_c读取,此亦在本案精神范围内。

在本案第二实施例中,通过1p2v的编程操作,可使得多个存储器单元的阈值电压分布更加紧缩。

第三实施例

现请参考图7,其显示根据本案第三实施例的存储器装置的编程方法流程图。图7可适用三层单元(tlc,triple-levelcell)。步骤705与710类似于图1的步骤105与110,故其描述省略。

图8显示根据本案第三实施例的编程顺序的示意图。图9则显示tlc的阈值电压分布图。在图9中,范围905-940分别代表不同状态。例如,如果存储器单元的阈值电压落于范围915内,则代表该存储器单元被编程为逻辑101,其余可依类推。

如图8与图9所示,于本案第三实施例中,于施加一次编程电压p(n)后,施加多验证电压vr2_a、vr1_a、...、vr2_g与vr1_g(亦即本案第三实施例亦属于1p2v)。验证电压vr2_a、vr1_a例如可用于验证存储器单元的阈值电压是否落于范围910中,其余可依此类推。

当然,编程电压p(n)是渐增,而验证电压vr2_a、vr1_a、...、vr2_g与vr1_g则是固定的。

至于如何决定要写入的码则将于底下说明。例如但不受限于,第1次的编程时,以初始编程电压p(0)(n=0)与初始编程码pgmcode(0)来编程该些存储器单元,其中,编程码pgmcode(0)乃是由步骤705所输入的数据来决定。

接着,于步骤715中,施加验证电压vr2_i与vr1_i(i=a-g)于该目标存储器单元来读取该目标存储器单元,以得到读取数据r2_i与r1_i。

于步骤720中,以下列等式来得到下一编程码pgmcode(n+1)=inv(r1_i)|inv(r2_i)|pgmcode(n)(亦即,pgmcode(n+1)={inv(r1_i)orinv(r2_i)orpgmcode(n)},其中,r1_i与r2_i分别代表以验证电压vr1_i与vr2_i所读取到的数据,而inv(r1_i)与inv(r2_i)分别代表以验证电压vr1_i与vr2_i所读取到的数据的反相。如果pgmcode(n+1)为逻辑1的话,则代表该目标存储器单元已通过虚拟编程验证。

此外,在本案第三实施例中,同样地,根据输入资料,来决定步骤720所得到的pgmcode(n+1)(i=a到g)是否要被使用,其细节如第二实施例所述,于此不重述。亦即,如果用户数据为110,代表该存储器单元应该要被编程为110(图9的范围910),则步骤720所得到的pgmcode(n+1)(i=a)可用于决定该存储器单元的下一个编程码pgmcode(n+1),而其余的pgmcode(n+1)(i=b到g)则不用于决定该存储器单元的下一个编程码pgmcode(n+1,)。

于步骤725中,判断i是否达上限(上限为g)。如果步骤725为否,则于步骤730中更新i(亦即,如果前一个i是a,则更新为b,依此类推)。如果步骤725为是,则流程接续至步骤735。步骤735与740相似于图1的步骤125与130。

相同的,在图8与图9中,真正验证电压vr2_i大于虚拟验证电压vr1_i,然而,于本案其他可能实施例中,真正验证电压vr2_i可以小于或等于虚拟验证电压vr1_i。此亦在本案精神范围内。

此外,在图7的流程的步骤715中,先用真正验证电压vr2_i读取,之后,才以虚拟验证电压vr1_i读取。然而,于本案其他可能实施例中,亦可以先用虚拟验证电压vr1_i读取,之后,才以真正验证电压vr2_i读取,此亦在本案精神范围内。

在本案第三实施例中,通过1p2v的编程操作,可使得多个存储器单元的阈值电压分布更加紧缩。

另外,上述数个实施例亦提出:执行一编程操作与一编程-验证操作于目标存储器单元,该编程操作与该编程-验证操作包括:施加多个编程电压p(n)、多个第一验证电压(如vr1、vr1_a...vr1_g等)与多个第二验证电压(如vr2、vr2_a...vr2_g等)于该目标存储器单元,其细节如上述,于此不重述。

综上所述,虽然本发明已以实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中普通技术人员,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当以权利要求所界定的为准。

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