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

文档序号:9930310阅读:263来源:国知局
Nand存储器的多比特编程方法及装置的制造方法
【技术领域】
[0001]本公开总地涉及一种NAND(与非门)存储器的多比特编程方法及其装置。
【背景技术】
[0002]NAND闪存的每个存储单元可以存储多比特数据,即每个存储单元可以存储与相应的多比特(bi t)数据对应的电压等级。例如,NAND闪存的每个存储单元可以存储4比特的数据,即每个存储单元存储24= 16个电压等级中的一个电压等级。在NAND闪存存储单元进行存储时,需要对被存储的多比特数据进行编码,而为了减少错误率通常可以使用格雷码。在格雷码中,任意两个相邻的代码只有一位二进制数不同,而且最大数与最小数之间也仅有一位二进制数不同。然而,在NAND闪存存储器的编程过程中,格雷码并不适应电路结构,因而使得编码过程中的操作变得复杂繁琐。例如,在实现编码过程中,由于格雷码并没有根据编码的电路结构进行优化,所以使用格雷码表直接进行编程将导致大量冗余的操作,增加功耗和编程时间。而且,随着每个存储单元存储的比特数的增加,直接使用格雷码进行编程将会使得编码过程中的操作变得更加复杂繁琐以及增加更多的功耗和编程时间。

【发明内容】

[0003]本公开的实施例提供了一种NAND存储器的多比特编程方法及装置,可以在编程之前将编码做重新映射,从而优化编程过程。
[0004]本公开的至少一个实施例提供了一种NAND存储器的多比特编程方法,包括:将被编程的多比特数据写入数据锁存器组,所述多比特数据为格雷码码字;将所述多比特数据从所述格雷码码字转换为加速编码码字;确定存储阵列中需要被编程的存储单元,需要被编程的所述存储单元包括目标阈值电压大于预定电压的存储单元和目标阈值电压不大于所述预定电压的存储单元;将目标阈值电压大于所述预定电压的各所述存储单元预编程到中间态电压;对目标阈值电压不大于所述预定电压的各所述存储单元进行编程;对目标阈值电压不大于所述预定电压的各所述存储单元:执行编程验证操作,执行锁存扫描操作以及执行确认扫描操作;对目标阈值电压大于所述预定电压的各所述存储单元进行编程;以及对目标阈值电压大于所述预定电压的各所述存储单元:执行编程验证操作,执行锁存扫描操作以及执行确认扫描操作。
[0005]本公开的至少一个实施例还提供了一种NAND存储器的多比特编程装置,包括:写入模块,用于将被编程的多比特数据写入到数据锁存器组中,所述多比特数据为格雷码码字;编码转换模块,用于将所述多比特数据从所述格雷码码字转换为加速编码码字;数据扫描模块,用于确定存储阵列中需要被编程的存储单元,需要被编程的所述存储单元包括目标阈值电压大于预定电压的存储单元和目标阈值电压不大于所述预定电压的存储单元;预编程及验证模块,用于将目标阈值电压大于所述预定电压的所述存储单元预编程到中间态电压;编程模块,用于分别对目标阈值电压不大于所述预定电压的所述存储单元和目标阈值电压大于所述预定电压的所述存储单元来进行编程;编程验证模块,用于分别对目标阈值电压不大于所述预定电压的所述存储单元和目标阈值电压大于所述预定电压的所述存储单元来执行编程验证操作;锁存扫描模块,用于分别对目标阈值电压不大于所述预定电压的所述存储单元和目标阈值电压大于所述预定电压的所述存储单元来执行锁存扫描操作;以及确认扫描模块,用于分别对目标阈值电压不大于所述预定电压的所述存储单元和目标阈值电压大于所述预定电压的所述存储单元来执行确认扫描操作。
[0006]例如,目标阈值电压大于所述预定电压的所述存储单元为加速编码码字的最高位为O的存储单元,目标阈值电压不大于所述预定电压的所述存储单元为加速编码码字的最高位为I的存储单元。
[0007]例如,对目标阈值电压不大于所述预定电压的各所述存储单元,编程验证模块执行编程验证操作包括:选择第一验证电压,并且验证已编入各所述存储单元的电压是否达到所述第一验证电压。对目标阈值电压不大于所述预定电压的各所述存储单元,锁存扫描模块执行锁存扫描操作包括:将通过所述第一验证电压的编程验证并且目标阈值电压为所述第一验证电压的存储单元的数据锁存器组设置为锁存状态,以及将未通过所述第一验证电压的编程验证和/或目标阈值电压不是所述第一验证电压的存储单元的数据锁存器组的状态保持不变。对目标阈值电压不大于所述预定电压的各所述存储单元,确认扫描模块执行确认扫描操作包括:对于数据锁存器组为锁存状态的存储单元,将其判断锁存器设置为成功锁存状态,以及对于数据锁存器组不是锁存状态的存储单元,将其判断锁存器设置为锁存不成功状态。
[0008]例如,锁存扫描模块将通过所述第一验证电压的编程验证并且目标阈值电压为所述第一验证电压的存储单元的数据锁存器组设置为锁存状态,以及将未通过所述第一验证电压的编程验证和/或目标阈值电压不是所述第一验证电压的存储单元的数据锁存器组的状态保持不变,包括:检测所述存储单元对应的数据锁存器组存储的加速编码码字的最高位是否为“I”,检测所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置是否与所述第一验证电压对应的加速编码码字中“O”的数量和位置相一致,并且检测所述存储单元对应的电压验证锁存器是否为通过状态;如果所述存储单元对应的数据锁存器组存储的加速编码码字的最高位为“I”,所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置与所述第一验证电压对应的加速编码码字中“O”的数量和位置相一致,且所述存储单元对应的电压验证锁存器为通过状态,设置与所述存储单元对应的数据锁存器组为锁存状态;以及如果所述存储单元对应的数据锁存器组存储的加速编码码字的最高位不为“I”,和/或所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置与所述第一验证电压对应的加速编码码字中“O”的数量和位置不一致,和/或所述存储单元对应的电压验证锁存器为不通过状态,保持与所述存储单元对应的数据锁存器组的状态不变。
[0009]例如,对目标阈值电压大于所述预定电压的各所述存储单元,编程验证模块执行编程验证操作包括:选择第二验证电压,并且验证已编入各所述存储单元的电压是否达到所述第二验证电压,所述第二验证电压大于所述中间态电压。对目标阈值电压大于所述预定电压的各所述存储单元,锁存扫描模块执行锁存扫描操作包括:将通过所述第二验证电压的编程验证并且目标阈值电压为所述第二验证电压的存储单元的数据锁存器组设置为锁存状态,以及将未通过所述第二验证电压的编程验证和/或目标阈值电压不是所述第二验证电压的存储单元的数据锁存器组的状态保持不变。对目标阈值电压大于所述预定电压的各所述存储单元,确认扫描模块执行确认扫描操作包括:对于数据锁存器组为锁存状态的存储单元,将其判断锁存器设置为成功锁存状态,以及对于数据锁存器组不是锁存状态的存储单元,将其判断锁存器设置为锁存不成功状态。
[0010]例如,锁存扫描模块将通过所述第二验证电压的编程验证并且目标阈值电压为所述第二验证电压的存储单元的数据锁存器组设置为锁存状态,以及将未通过所述第二验证电压的编程验证和/或目标阈值电压不是所述第二验证电压的存储单元的数据锁存器组的状态保持不变,包括:检测所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置是否与所述第二验证电压对应的加速编码码字中“O”的数量和位置相一致,并且检测所述存储单元对应的电压验证锁存器是否为通过状态;如果所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置与所述第二验证电压对应的加速编码码字中“O”的数量和位置相一致,且所述存储单元对应的电压验证锁存器为通过状态,设置与所述存储单元对应的数据锁存器组为锁存状态;以及如果所述存储单元对应的数据锁存器组存储的加速编码码字中“O”的数量和位置与所述第二验证电压对应的加速编码码字中“O”的数量和位置不一致,和/或所述存储单元对应的电压验证锁存器为不通过状态,保持与所述存储单元对应的数据锁存器组的状态不变。
[0011 ]例如,数据扫描模块确定存储阵列中需要被编程的存储单元,包括:扫描所述数据锁存器组来确定存储信息为擦除状态的数据锁存器组和存储信息不是擦除状态的数据锁存器组;将与存储信息为擦除状态的数据锁存器组相对应的存储单元设置为不编程状态;以及将与存储信息不是擦除状态的数据锁存器组相对应的存储单元设置为编程状态,其中,需要被编程的所述存储单元为被设置为编程状态的存储单元。
[0012]本公开的至少一个实施例还提供了一种存储介质,在所述存储介质上存储了程序指令,在所述程序指令被计算机或处理器运行时用于执行本公开的实施例的NAND存储器的多比特编程方法,并且用于实现根据本公开的实施例的NAND存储器的多比特编程装置。
[0013]本公开实施例提供的NAND存储器的多比特编程方法及装置,根据锁存器的结构重新设计编码,减少了编程过程中复杂的冗余操作的数量,因而可以加快编程的速度,降低功耗。
【附图说明】
[0014]通过结合附图对本公开的实施例进行更详细的描述,本公开的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本公开实施例的进一步理解,并且构成说明书的一部分,与本公开的实施例一起用于解释本公开,并不构成对本公开的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
[0015]图1为本公开实施例提供的多比特单元存储阵列的示意性框图;
[0016]图2为本公开实施例提供的灵敏放大器的示意性框图;
[0017]图3为本公开实施例提供的锁存器的示例性结构;
[0018]图4为本公开实施例提供的控制电路的示意性框图;
[0019]图5A为本公开实施例提供的一种NAND存储器的多比特编程方法的示意性流程图之一;
[0020]图5B和5C为本公开实施例提供的一种NAND存储器的多比特编程方法的示意性流程图之二;
[0021]图6A为本公开实施例提供的一种编程验证以及锁存的方法的示意性流程图之一;
[0022]图6B为本公开实施例提供的一种编程验证以及锁存的方法的示意性流程图之二;
[0023]图6C为本公开实施例提供的四比特单元阈值电压的示例性分布图;
[0024]图6D为本公开实施例提供的四比特数据的编程脉冲和验证电压的示例性分布图;
[0025]图7A-7P为本公开实施例提供的四比特数据的示例性的编程过程;
[0026]图8A-8H为本公开实施例提供的一种四比特数据的加速编码的编程验证以及锁存的方法的示意性流程图;
[0027]图9为本公开实施例提供的示例性的四比特加速编码码表;以及
[0028]图10为本公开实施例提供的一种NAND存储器的多比特编程装置的示意性框图。
【具体实施方式】
[0029]为了使得本公开的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本公开的示例实施例。显然,所描述的实施例仅仅是本公开的一部分实施例,而不是本公开的全部实施例,应理解,本公开不受这里描述的示例实施例的限制。基于本公开中描述的本公开实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本公开的保护范围之内。
[0030]本公开的实施例提供了一种NAND存储器的多比特编程方法及装置,可以在编程之前将编码做重新映射,从而优化编程过程。本公开实施例提供的NAND存储器的多比特编程方法及装置,根据锁存器的结构重新设计编码,将多比特数据从格雷码码字转换为相应的加速编码码字,减少了编程过程中复杂的冗余操作的数量,因而可以加快编程的速度,降低功耗。本公开实施例提供的NAND存储器的多比特编程方法及装置,可以应用于大于或等于两比特数据的编程,例如,四比特数据、五比特数据和/或六比特数据等多比特数据的编程。
[0031]在本公开实施例中,NAND存储器可以是二维NAND存储器,也可以是三维NAND存储器,本公开对此不做限定。三维NAND存储器改进了平面NAND存储器在多比特存储方面的过窄的阈值分布、严重的浮栅耦合等诸多问题,使得三维NAND存储器增加每个存储单元的存储能力成为可能。
[0032]图1为本公开实施例提供的一种包括多比特单元存储阵列的系统100的示意性框图。如图1所示,系统100可以包括外围电路101、行译码器104、列译码器106、存储阵列108、灵敏放大器110以及输入/输出接口 112。在一些实施例中,系统100也可以包括其他未示出的部件,例如,稳压器(voltage regulator)、逻辑电路(logic circuits)等。
[0033]外围电路101为处于存储阵列108外部的电路结构。外围电路101可以包括控制电路102。控制电路102可以控制存储阵列108的地址选择。例如,控制电路102可以控制行译码器104,使得行译码器104通过字线114来选择存储阵列108的行地址;控制电路102还可以控制列译码器106,使得列译码器106通过位线116来选择存储阵列的列地址。控制电路102还可以控制存储阵列108的编程过程。例如,如下所述,控制电路102可以控制图5A的方法500、图5B和5C的方法550、图6A的方法600、图6B的方法630以及图8A-8H的方法800和8000的执行。
[0034]参见图4,控制电路102可以包括处理器402、存储器404以及其他未示出的部件。控制电路102的各部件之间可以直接或间接地互相通信,例如,控制电路102的各部件可以互相发送和接收数据和/或信号。又例如,控制电路102的各部件之间可以通过总线连接。在一些实施例中,控制电路102可以包括一个或多个处理器402和一个或多个存储器404。
[0035]处理器402可以处理数据信号,可以包括各种计算结构,例如复杂指令集计算机(CISC)结构、结构精简指令集计算机(RISC)结构或者一种实行多种指令集组合的结构。在一些实施例中,处理器402也可以是微处理器,例如X86处理器或ARM处理器,或者可以是数字处理器(DSP)等。处理器402可以控制控制电路102中的其它组件以执行期望的功能。
[0036]存储器404可以保存处理器402执行的指令和/或数据。例如,存储器404可以包括一个或多个计算机程序产品,所述计算机程序产品可以包括各种形式的计算机可读存储介质,例如易失性存储器和/或非易失性存储器。所述易失性存储器例如可以包括随机存取存储器(RAM)和/或高速缓冲存储器(cache)等。所述非易失性存储器例如可以包括只读存储器(R0M)、硬盘、闪存等。在所述计算机可读存储介质上可以存储一个或多个计算机程序指令,处理器402可以运行所述程序指令,以实现下文所述的本公开实施例中(由处理器实现)的多比特编程功能以及/或者其它期望的功能。在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
[0037]参见图1,存储阵列108可以使用电压状态来确定存储的多比特数据的大小。例如,存储阵列108的每个存储单元可以存储一个多比特数据,即每个存储单元可以存储与该多比特数据对应的电压等级。又例如,图6C示出了四比特存储单元的阈值电压Vth的分布图655,其包括擦除状态(erase ,ER)以及L1-L15共24=16个电压等级。根据被存储的多比特数据的数值大小,每个存储单元可以存储电压等级中的一个。
[0038]输入/输出接口112可以向灵敏放大器110提供输入数据(例如,提供需要被编程到存储阵列108的多比特数据),以及接收灵敏放大器110的输出数据(例如,接收从存储阵列108中读出的数据)。输入/输出接口 112可以为通用串行总线(universal serial bus,USB)接口、雷电(thunderbolt)接口或其他可行的接口类型,本公开对此不作限定。在一些实施例中,输入/输出接口 112也可以作为外围电路101的一个部件。
[0039]在一些实施例中,在存储阵列108的存储单元中存储的电流值与该存储单元的阈值电压等级对应,灵敏放大器110可以将该存储单元存储的电流值转换为数字数值(例如,多比特数值)。灵敏放大器110可以与一个或多个位线116相连接。
[0040]图2示出了灵敏放大器110的示例性结构框图200。灵敏放大器110可以包括缓存锁存器202、数据锁存器组203、感应电路214以及感应锁存器216。灵敏放大器110的各部件可以通过总线218相互连接。在一些实施例中,灵敏放大器110中的各数据锁存器组203的数据锁存器的数目与各存储单元存储的数值的比特数目相同;或者,灵敏放大器110中的各数据锁存器组203中的数据锁存器的数目大于各存储单元存储的数值的比特数目。例如,存储阵列108的各存储单元可以存储四比特的数值,灵敏放大器110的各数据锁存器组203至少可以包括四个数据锁存器,即如图2所示的第一数据锁存器204、第二数据锁存器206、第三数据锁存器208以及第四锁存器210。或者,灵敏放大器110的各数据锁存器组203还可以包括其他数据锁存器,例如,如图2中虚线所示的临时数据锁存器212。如图2所示,灵敏放大器110的各锁存器的总线连接在一起。[0041 ]在一些实施例中,存储阵列108是以“行”为单位进行编程的;即,按行对存储阵列108的存储单元进行编程,并且在每行的编程中,同一行的所有需要编程的存储单元将同时被编程。因此,包括在灵敏放大器110中的感应锁存器216的数目与包括在存储阵列108的一行中的存储单元的数目相同;即,各感应锁存器216与一行中的各存储单元为一一对应的关系。另外,包括在灵敏放大器110中的数据锁存器组203的数目也与包括在存储阵列108的一行中的存储单元的数目相同;即,各数据锁存器组203与一行中的各存储单元为一一对应的关系。
[0042]图3示出了锁存器300的示例性电路图。在图3的锁存器300中,“X”代表锁存器300存储的数据,“INVX”代表存储的数据的反,“SETX”代表存储数据置“I”信号,“RETX”代表存储数据置“O”信号,VDD代表电源电压,READ代表读信号以及“BUS”代表总线。图2中的缓存锁存器202、灵敏锁存器216、第一数据锁存器204、第二数据锁存器206、第三数据锁存器208、第四锁存器210以及临时锁存器212的结构均可以与锁存器300的结构相同或相似,在此不再赘述。
[0043]图5A为本公开实施例提供的一种NAND存储器的多比特编程方法500的示意性流程图之一。在一些实施例中,方法500可以包括图5A所示的一些或全部的步骤。当然,方法500也可以包括其他未在图5A中示出的步骤。在下面的描述中,将结合图2的灵敏放大器110的结构对方法500进行详细的说明。
[0044]首先,在步骤S502,将被编程的多比特数据写入到数据锁存器组中,其中,所述多比特数据为格雷码码字。在一些实施例中,在对存储阵列108的一行存储单元进行编程时,将被编程的各多比特数据分别写入到与该行的存储单元一一对应的数据锁存器组203中。例如,通过输入/输出接口 112将被编程的各多比特数据写入缓存锁存器202,然后缓存锁存器202将被编程的各多比特数据分别写入对应的各数据锁存器组203中。
[0045]在步骤S504,将所述多比特数据从格雷码码字转换为加速编码码字。在一些实施例中,在执行步骤S504之前,可以建立多比特数据的格雷码码表、加速编码码表以及所述格雷码码表与所述加速编码码表的转换关系。例如,格雷码转换为加速编码的过程可以满足以下三个条件(1)-(3):
[0046](I)保持各格雷码码字的最高位不变(例如,对于最高位为“I”的格雷码码字,其相应的加速编码码字的最高位仍为“I”;对于最高位为“O”的格雷码码字,其相应的加速编码码字的最高位仍为“O”);
[0047](2)对于最高位为“I”的码字:将码字按照“O”的数量重新进行排列,用包含较多“O”的码字来表示较低的电压等级(S卩,对于最高位为“I”的码字,低电压等级对应的加速编码码字中包括的“O”的数目不少于高电压等级对应的加速编码码字中包括的“O”的数目);以及对于包括相等“O”数目的电压等级,通过转换与所述电压等级对应的格雷码码字的最少数目的数据锁存器来得到所述电压等级的加速编码码字(即,在最高位为“I”的码字中,对于含“O”数目相等的电压等级,在从格雷码转换为加速编码的过程中,尽可能使得需要变化的数据锁存器的数目最少);以及
[0048](3)相似地,对于最高位为“O”的码字:将码字按照“O”的数量重新进行排列,用包含较多“O”的码字来表示较低的电压等级(S卩,对于最高位为“O”的码字,低电压等级对应的加速编码码字中包括的“O”的数目不少于高电压等级对应的加速编码码字中包括的“O”的数目);以及对于包括相等“O”数目的电压等级,通过转换与所述电压等级对应的格雷码码字的最少数目的数据锁存器来得到所述电压等级的加速编码码字(即,在最高位为“O”的码字中,对于含“O”数目相等的电压等级,在从格雷码转换为加速编码的过程中,尽可能使得需要变化的数据锁存器的数目最少)。
[0049]根据格雷码码表与加速编码码表的转换关系,在步骤S504中,可以将各所述多比特数据从格雷码码字转换为相应的加速编码码字。
[0050]例如,图9示出了四比特数据的格雷码码表900、加速编码码表950以及所述格雷码码表900与所述加速编码码表950的转换关系。图9中填充阴影
当前第1页1 2 3 4 5 6 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1