Nand存储器的多比特编程方法及装置的制造方法_2

文档序号:9930309阅读:来源:国知局
程图。在一些实施例中,方法500可以包括图5所示的一些或全部的步骤(例如,步骤S502、S504、S506、S508、S510、S512、S514、S516、S518、S520 以及 S522 中的一部分或全部)。当然,方法500也可以包括其他未在图5中示出的步骤。在下面的描述中,将结合图2的灵敏放大器110的结构对方法500进行详细的说明。
[0042]首先,在步骤S502,将被编程的多比特数据写入到数据锁存器组中,其中,所述多比特数据为格雷码码字。在一些实施例中,在对存储阵列108的一行存储单元进行编程时,将被编程的各多比特数据分别写入到与该行的存储单元一一对应的数据锁存器组203中。例如,通过输入/输出接口 112将被编程的各多比特数据写入缓存锁存器202,然后缓存锁存器202将被编程的各多比特数据分别写入对应的各数据锁存器组203中。
[0043]在步骤504,预处理所述多比特数据以将各所述多比特数据从格雷码码字转换为加速编码码字。在一些实施例中,在执行步骤504之前,可以建立多比特数据的格雷码码表、加速编码码表以及所述格雷码码表与所述加速编码码表的转换关系。格雷码转换为加速编码的过程可以满足以下两个条件:(I)将码字按照“O”的数量重新进行排列,用包含较多“O”的码字来表示较低的电压等级(即,低电压等级对应的加速编码码字中包括的“O”的数目不少于高电压等级对应的加速编码码字中包括的“O”的数目);以及(2)对于包括相等“O”数目的电压等级,通过转换与所述电压等级对应的格雷码码字的最少数目的数据锁存器来得到所述电压等级的加速编码码字(即,对于含“O”数目相等的电压等级,在从格雷码转换为加速编码的过程中,尽可能使得需要变化的数据锁存器的数目最少)。根据格雷码码表与加速编码码表的转换关系,在步骤504中,可以将各所述多比特数据从格雷码码字转换为相应的加速编码码字。
[0044]例如,图9示出了四比特数据的格雷码码表900、加速编码码表950以及所述格雷码码表900与所述加速编码码表950的转换关系。图9中填充阴影的部分示出了当格雷码码表900转换为加速编码码表950时,需要改变的数据锁存器的数值。例如,电压等级LI的格雷码码字“1110”对应于加速编码码字“0000” ;当把电压等级LI对应的四比特数据从格雷码码字“1110”转换为加速编码码字“0000”时,需要将第一数据锁存器204存储的“I”变为“O,”将第二数据锁存器206存储的“I”变为“O”,以及将第三数据锁存器208存储的“I”变为“O”。需要说明的是,加速编码码表950只是满足上述条件(I)和(2)的示例性加速编码码表,其他类似的加速编码码表也可以满足条件(I)和(2),本公开对此不作限定。
[0045]在步骤S506,扫描所述数据锁存器组来确定存储信息为擦除(erase)状态的数据锁存器组和存储信息不是擦除状态的数据锁存器组。例如,当数据锁存器组存储的信息为“1111”时,该数据锁存器组存储的信息为擦除状态的信息;当数据锁存器组存储的信息不是“1111”时,该数据锁存器组存储的信息不是擦除状态的信息。
[0046]在步骤S508,对于存储信息为擦除状态的数据锁存器组,将与所述数据锁存器组对应的存储单元设置为不编程状态;对于存储信息不是擦除状态的数据锁存器组,将与所述数据锁存器组对应的存储单元设置为编程状态。即,当数据锁存器组存储的信息为“1111”时,不对该数据锁存器组对应的存储单元进行编程;当数据锁存器组存储的信息不是“1111”时,可以对该数据锁存器组对应的存储单元进行编程。
[0047]在步骤S510,对存储阵列108中需要被编程的各存储单元进行编程。例如,在对存储阵列108的一行存储单元进行编程时,可以将需要被编程的存储单元的沟道漏端接地,而将不需要编程的存储单元的沟道漏端接电源电压。在一些实施例中,需要被编程的存储单元可以为在步骤S508中被设置为编程状态的存储单元,不需要被编程的存储单元可以为在步骤S508中被设置为不编程状态的存储单元。
[0048]在一些实施例中,可以使用标准的增量台阶脉冲编程(ISPP)序列对存储阵列108的存储单元进行编程。在每一步的编程之后,如下面的步骤S512和S514所示,可以使用一个或多个验证电压来执行编程验证以及锁存扫描操作。通过阶梯形状的编程脉冲电压将需要编程的存储单元的电压从擦除状态移动到目标阈值电压,需要的编程脉冲的数目以及每步编程之后的验证电压数目均依据具体的编程情况而定。每个编程脉冲施加过后,都需要使用验证电压来验证当前编程是否成功地将存储单元的电压成功地移动到了该存储单元的目标阈值电压。如果该存储单元的电压已成功地被移动到目标阈值电压(即该存储单元的编程成功),则需要将与该存储单元对应的数据锁存器组锁存(如下面的步骤S514所示),并进行相应的标记(如下面的步骤S516所示),以防止该存储单元再被编程。
[0049]例如,参见图6C,在四比特数据的每个编程脉冲之后,可以使用多个验证电压进行验证,并且在使用每个验证电压验证后均有相应的锁存操作。例如,在使用编程脉冲PGiUi行编程后,可以首先使用验证电压VFYl进行验证并进行锁存操作671,然后使用验证电压VFY2进行验证并进行锁存操作672,依此类推,直至使用下一个编程脉冲PGMn+1进行下一次编程并进行相应的验证操作和锁存操作。
[0050]在步骤512,执行编程验证操作。例如,在步骤512,可以选择验证电压,并且验证已编入各所述存储单元的电压是否达到所述验证电压。对于电压已达到所述验证电压的存储单元,可以将与其对应的电压验证锁存器标记为通过状态;对于电压尚未达到所述验证电压的存储单元,可以将与其对应的电压验证锁存器标记为未通过状态。该存储单元对应的感应锁存器216或者与该存储单元对应的临时数据锁存器212均可以作为该存储单元的电压验证锁存器来使用。
[0051]在步骤514,执行锁存扫描操作。例如,在步骤514,将通过所述验证电压的编程验证并且目标阈值电压为所述验证电压的存储单元的数据锁存器组设置为锁存状态;以及将未通过编程验证的存储单元和/或目标阈值电压不是所述验证电压的存储单元的数据锁存器组的状态保持不变。
[0052]在一些实施例中,在步骤514,可以检测所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置是否与所述验证电压对应的加速编码码字中“O”的数量和位置相一致,并且检测与所述存储单元对应的电压验证锁存器是否为通过状态。如果所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置与所述第一验证电压对应的加速编码码字中“O”的数量和位置相一致,且所述存储单元对应的电压验证锁存器为通过状态,设置与所述存储单元对应的数据锁存器组为锁存状态。然而,如果所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置与所述第一验证电压对应的加速编码码字中“O”的数量和位置不一致,和/或所述存储单元对应的电压验证锁存器为不通过状态,保持所述存储单元对应的数据锁存器组的状态不变。
[0053]例如,当所述存储单元对应的电压验证锁存器为不通过状态时,所述电压验证锁存器的值为“I”;当所述电压验证锁存器为通过状态时,所述电压验证锁存器的值为“O”。上述操作“检测所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置是否与所述第一验证电压对应的加速编码码字中“O”的数量和位置相一致,并且检测所述存储单元对应的电压验证锁存器是否为通过状态”可以包括:对总线进行充电;读取所述存储单元的、并且与所述验证电压对应的加速编码码字中“O”的位置相对应的数据锁存器的值,以及读取与所述存储单元对应的电压验证锁存器的值;然后拉高被读取的所述数据锁存器。如果被读取的所述数据锁存器的值以及所述电压验证锁存器的值均为“O”,与所述存储单元对应的数据锁存器组被设置为锁存状态(即,与所述存储单元对应的数据锁存器组被成功地拉高为锁存状态“1111”);如果被读取的所述数据锁存器的值和/或所述电压验证锁存器的值中至少一个不为“O”(即,与所述存储单元对应的数据锁存器组没有被成功地拉高为锁存状态“1111”),与所述存储单元对应的数据锁存器组的状态保持不变。
[0054]在步骤S516,执行确认扫描操作。例如,对于数据锁存器组被锁存为锁存状态的存储单元,设置所述存储单元的判断锁存器为锁存成功状态,以防止所述存储单元被继续编程;对于数据锁存器组没有被锁存为锁存状态的存储单元,设置所述存储单元的判断锁存器为锁存不成功状态。所述存储单元对应的感应锁存器216或者所述存储单元对应的临时数据锁存器212均可作为所述判断锁存器来使用。
[0055]在步骤S518,确定是否选取下一个验证电压来进行编程验证。例如,如果所有的验证电压均已被用来验证本次编程,或者所有被编程的存储单元的电压均未达到步骤S512中的验证电压,方法500将不再选取下一个验证电压来进行编程验证而是接着执行下一个步骤S520;否则,方法500可以选取下一个验证电压来进行编程验证,并返回步骤S512。
[0056]在步骤S520,确定是否已完成全部所述需要被编程的存储单元的编程。例如,在步骤S520,确定所述需要被编程的存储单元中是否还有一个或多个存储单元在本次编程中尚未达到各自的目标阈值电压。如果还有一个或多个存储单元在本次编程中尚未达到各自的目标阈值电压,方法500可以返回步骤S510进行下一次编程。如果所有的存储单元在本次编程中都已达到各自的目标阈值电压,方法500可以移至步骤S522。
[0057]在步骤S522,由于所有的存储单元经过编程均已达到各自的目标阈值电压,方法500完成对所述多比特数据的编程。
[0058]图6A为本公开实施例提供的一种在一次编程之后进行编程验证以及锁存操作的方法600的示意性流程图。方法600对图5中的方法500的步骤S512、S514、S516以及S518进行示例性的说明。在图5的步骤S510中对存储阵列中需要被编程的各存储单元进行编程之后,可以执行方法600的以下步骤来进行编程验证以及锁存操作。
[0059]首先,在步骤S602,选择验证电压LI,并且验证已编入各所述存储单元的电压是否达到所述验证电压LI。
[0060]在步骤S604,对于通过验证电压LI的编程验证并且目标阈值电压为验证电压LI的存储单元,设置与所述存储单元相对应的数据锁存器组为锁存状态(例如,可以设置所述数据锁存器组存储的信息为“1111”);并且在步骤S606,设置所述存储单元的判断锁存器为锁存成功状态,以防止所述存储单元被继续编程。
[0061 ] 在步骤S608,对于未通过验证电压LI的编程验证的存储单元和/或目标阈值电压不是验证电压LI的存储单元,保持与所述存储单元相对应的数据锁存器组的状态不变;并且在步骤S610,设置所述存储单元的判断锁存器为锁存不成功状态。
[0062]在步骤S612,选择验证电压L2,并且验证已编入各所述存储单元的电压是否达到验证电压L2。
[0063]在步骤S614,对于通过验证电压L2的编程验证并且目标阈值电压为验证电压L2的存储单元,设置与所述存储单元相对应的数据锁存器为锁存状态(例如,可以设置所述数据锁存器组存储的信息为“1111”);并且在步骤S616,设置所述存储单元的判断锁存器为锁存成功状态。
[0064]在步骤S618,对于未通过验证电压L2的编程验证的存储单元和/或目标阈值电压不是验证电压L2的存储单元,保持与所述存储单元相对应的数据锁存器的状态不变;并且在步骤S620,设置所述存储单元的判断锁存器为锁存不成功状态。
[0065]在步骤S622,选择验证电压L3,并且验证已编入各所述存储单元的电压是否达到验证电压L3。相似地,方法600还可以包括对验证电压L3的锁存扫描操作和确认扫描操作,以及使用其他验证电压进行编程验证、锁存扫描以及确认扫描的操作,本公开在此不再赘述。
[0066]图7A-7M为本公开实施例提供的四比特数据的示例性的编程过程。如图7A所示,表格700示出了:需要被编程的存储单元1、存储单元2、存储单元3以及存储单元4的目标阈值电压分别为L1、L2、L3以及L3;以及存储单元1、存储单元2、存储单元3以及存储单元4对应的数据锁存器组存储的码字分别为与LI对应的加速编码码字“0000”、与L2对应的加速编码码字“0100”、与L3对应的加速编码码字“1000”以及与L3对应的加速编码码字“1000”。
[0067]图7B示出了各存储单元在第一次编程后的电压,其中,存储单元I被编程到电压LI,存储单元2被编程到电压L2,存储单元3被编程到电压L3以及存储单元4被编程到电压Ll0
[0068]图7C示出了使用验证电压LI对各存储单元进行编程验证,其验证结果示出在表格715中。结合图表710以及表格715可知,各存储单元的电压均已达到验证电压LI,所以与各存储单元对应的验证电压锁存器均被设置为通过状态。
[0069]图7D示出了锁存目标阈值电压为验证电压Ll(加速编码码字“0000”)的存储单元的过程。表格720示出了各存储单元的电压验证结果以及对应的数据锁存器组存储的码字。由于存储单元I被编程到的电压通过了电压LI的验证,并且存储单元I的目标阈值电压等于验证电压LI(例如,存储单元I的数据锁存器组存储的加速编码码字与验证电压LI的加速编码码字相同,均为“0000”),所以存储单元I的数据锁存器组从“0000”被锁存为锁存状态“1111”(如箭头721所示),并且存储单元I的判断锁存器的状态被设置为锁存成功。然而,SP使存储单元2、存储单元3以及存储单元4被编程到的电压均通过了电压LI的验证,但是由于存储单元2、存储单元3以及存储单元4的目标阈值电压均不等于验证电压LI(例如,存储单元2、存储单元3以及存储单元4的数据锁存器组存储的加速编码码字都与验证电压LI的加速编码码字不相同),所以存储单元2、存储单元3以及存储单元4的数据锁存器组的状态均保持不变,并且存储单元2、存储单元3以及存储单元4的判断锁存器的状态被设置为锁存不成功。表格722示出了上述的锁存目标阈值电压为验证电压LI的结果。
[0070]由于(I)存储单元2、存储单元3以及存储单元4均没有被锁存为各自的目标阈值电压,并且(2)存储单元2、存储单元3以及存储单元4的电压均通过上一次电压LI的编程验证,所以还需要选取下一个验证电压L2进行编码验证。图7E示出了使用验证电压L2对各存储单元进行编程验证,其验证结果示出在表格727中。结合图表725以及表格727可知,存储单元2以及存储单元3的电压均已达到验证电压L2,所以与存储单元2以及存储单元3对应的验证电压锁存器均被设置为通过状态;存储单元I以及存储单元4的电压未达到验证电压L2,所以与存储单元I以及存储单元4对应的验证电压锁存器均被设置为不通过状态。
[0071]图7F示出了锁存目标阈值电压为验证电压L2(加速编码码字“0100”)的存储单元的过程。表格730示出了各存储单元的电压验证结果以及对应的数据锁存器组存储的码字。由于存储单元I已成功达到其目标阈值电压LI且其数据锁存器组也已被成功锁存,所以存储单元I没有通过验证电压L2的验证并不会对存储单元I造成影响。由于存储单元2的编程电压已通过电压L2的验证,并且存储单元2的目标阈值电压等于验证电压L2(例如,存储单元2的数据锁存器组存储的加速编码码字与验证电压L2的加速编码码字相同,均为“0100”),所以存储单元2的数据锁存器组从“0100”被锁存为锁存状态“1111”(如箭头731所示),并且存储单元2的判断锁存器的状态被设置为锁存成功。由于存储单元3以及存储单元4的目标阈值电压均不等于验证电压LI (例如,存储单元3以及存储单元4的数据锁存器组存储的加速编码码字与验证电压L2的加速编码码字均不相同),而且存储单元4并没有通过验证电压L2的编程验证,所以存储单元3以及存储单元4的数据锁存器组的状态均保持不变,并且存储单元3以及存储单元4的判断锁存器的状态被设置为锁存不成功。表格732示出了上述的锁存目标阈值电压为验证电压L2的结果。
[0072]由于(I)存储单元3以及存储单元4均没有被锁存为各自的目标阈值电压且(2)存储单元3的电压通过上一次电压L2的编程验证,所以还需要选取下一个验证电压L3进行编码验证。图7G示出了使用验证电压L3对各存储单元进行编程验证,其验证结果示出在表格742中。结合图表740以及表格742可知,存储单元3的电压已达到验证电压L3,所以与存储单元3对应的验证电压锁存器被设置为通过状态;存储单元1、存储单元2以及存储单元4的电压未达到验证电压L3,所以与存储单元1、存储单元2以及存储单元4对应的验证电压锁存器均被设置为不通过状态。
[0073]图7F示出了锁存目标阈值电压为验证电压L3(加速编码码字“1000”)的存储单元的过程。表格745示出了各存
当前第2页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1