用于编程多层非易失性存储装置的方法 【相关申请的交叉引用】
本申请要求于2006年9月6日提交的韩国专利申请10-2006-0085879的优先权,通过引用的方式将其全部内容合并在此。
【技术领域】
本公开涉及非易失性存储装置,并且更特别地,涉及用于编程多层非易失性存储装置的方法。
背景技术
闪存是计算机存储器的一种形式,其能够保存数据而不需要消耗功率,因此其特征在于非易失性。可以以块对闪存进行编程和擦除。
闪存将数据存储在被称作单元(cell)的浮栅晶体管的阵列中。在单层闪存中,可以在每个单元中存储一位数据。在多层闪存中,通过在存储于单元的浮栅中的电荷的数个层之间区分,可以在每个单元中存储超过一位的数据。
图1是示出闪存的单个单元10的示意图。闪存由可以掺杂例如硼离子的p型半导体衬底11组成。通过掺杂例如磷、砷或锑离子,可以在衬底11中形成n型源极区12和n型漏极区13。可以在衬底11之上形成浮栅14,并且可以与衬底隔离。可以在浮栅14之上形成控制栅15,并且可以与浮栅14隔离。因为浮栅14被完全隔离,所以在浮栅中存储的电荷被俘获,并且从而不需要消耗电力就可以将数据保留在浮栅中。
闪存可以是或非(NOR)存储器或与非(NAND)存储器。每一种闪存具有其自身的一套特点。例如,NOR闪存利用被称作热电子注入的过程来俘获浮栅中的电荷,并依赖量子隧道来使浮栅放电。NAND闪存利用量子隧道来俘获电荷和放电。
可以将NAND闪存装置组织成串。图2示出了一串NAND闪存的示例。所示串由200A物理地描绘,而200B描绘了其类似的电子示意图。每个串是一组串连的单元。每个串可以包括例如16或32个单元。每个串可以具有带有位线触头(contact)210的位线和一个或多个用于控制所述串的栅。例如,每个串可以具有选择栅220和控制栅230。所述串还可以具有浮栅240和单元源极线250。
可以连接多个串以形成页面。字线可以连接页面的每个串中的类似单元。可以将多个页面组织成块。图3示出了闪存块的示例。闪存100具有控制字线(WL)、串选择线(SSL)和地选择线(GSL)的电压的X-译码器130。闪存100还具有用于控制位线(BL)电压的页面缓冲器电路150。将闪存100组织成由串组成的块110。在图3中,示出了串110_1、110_2和110_M,然而可以理解在110_2和110_M之间可以存在任意数目的串。这里,串110_1具有位线“BLe”,而串110_2具有位线“BLo”。也将闪存100组织成页面。将页面的示例示出为110p。
可以将每个串连接到串选择线(SSL)、地选择线(GSL)、标号为WL<N-1>到WL<0>的一连串字线(WL)、和公共源极线(Common Source Line,CSL),并且每个串可以具有串选择晶体管(SST)、地选择晶体管(GST)和标号为MCT<N-1>到MCT<0>的一连串存储单元晶体管(MCT)。
在闪存装置中,浮栅中电荷的存在和程度影响着该单元的阈值电压。可以将单元的阈值电压理解为电流开始在源极与漏极之间流动之前需要施加到控制栅上的最小电压。因此,通过向控制栅施加预定电压并确定电流是否可以在源极与漏极之间流动,可以读取所述单元。在实际应用中,放大器可以用来检测并放大所观测的电流。
在多层闪存中,可以将多个分离层的电荷存储在单元的浮栅中。例如,在2位多层闪存中,可以有存储在单元的浮栅中的四个分离层的电荷。在该情况中,单元可以依赖于在浮栅中俘获的电荷的层来展示四个独立(distinct)的阈值电压中之一。存储在单元中的电荷的层,和由此的存储的数据值可以通过向控制栅施加测试电压并确定是否有电流而确定。对于2位多层闪存,需要测试电流是否在多达3个离散的读电压流过来确定单元的状态。
多层闪存可以具有超过2位。例如,多层闪存可以具有3位或更多位。3位闪存每个单元将具有8(23)个状态,4位闪存每个单元将具有16(24)个状态,5位闪存每个单元将具有32(25)个状态等。这样的多层闪存的操作的阈值电压(level)将不得不被设定为超过可能值的范围,并且可以通过余量(margin)分离相邻的阈值范围。因此,具有更高位数的闪存必须能够在更窄范围内设定电荷电平并具有更窄的余量。为了容纳这些更窄的范围和余量,必须以提高的精度将电荷加到单元上。将电荷加到单元的处理被称作“编程”。因此,用于多层闪存的编程需要提高的精度。
当对闪存尤其是具有提高精度的多层闪存编程时,可能会中断编程操作。例如,可能失去电源或过早断开闪存装置。在这些情况下,预先写到闪存的数据可能变得不可读。因此,对闪存尤其是多层闪存编程可能携带存储损失的风险。
【发明内容】
提供了一种对包括至少一个标识单元和多个多位存储单元的多层非易失性存储器编程的方法。多个多位存储单元的每一个存储由最低有效位(LSB)和最高有效位(MSB)代表的数据。所述方法包括编程存储单元,使得编程过的存储单元具有大于VR1的阈值电压。修改编程过的存储单元的阈值电压,使得当期望存储单元存储第三或第四值时,每一个编程过的存储单元具有大于VR2的阈值电压。当期望存储单元存储第一值时,使用MSB数据编程存储单元,使得每一个存储单元具有小于电压VR1的阈值电压。当期望存储单元存储第二值时,每一个单元具有大于电压VR1且小于电压VR2的阈值电压。当期望存储单元存储第三值时,每一个单元具有大于电压VR2且小于电压VR3的阈值电压。当期望存储单元存储第四值时,每一个单元具有大于电压VR3的阈值电压。电压VR1小于电压VR2,电压VR2小于电压VR3。编程标识单元以显示是否已经编程MSB数据。
一种用于根据用于编程包括至少一个标识单元和多个多位存储单元的多层非易失性存储器的方法来控制存储器的控制器。多个多位存储单元的每一个存储由最低有效位(LSB)和最高有效位(MSB)代表的数据。所述方法包括编程存储单元的LSB数据,使得编程过的存储单元具有大于VR1的阈值电压。修改编程过的存储单元的阈值电压,使得当期望存储单元存储第三或第四值时,每一个编程过的存储单元具有大于VR2的阈值电压。当期望存储单元存储第一值时,使用MSB数据编程存储单元,使得每一个存储单元具有小于电压VR1的阈值电压。当期望存储单元存储第二值时,每一个单元具有大于电压VR1且小于电压VR2的阈值电压。当期望存储单元存储第三值时,每一个单元具有大于电压VR2且小于电压VR3的阈值电压。当期望存储单元存储第四值时,每一个单元具有大于电压VR3的阈值电压。电压VR1小于电压VR2,电压VR2小于电压VR3。编程标识单元以显示是否已经编程MSB数据。
一种用于编程包括至少一个标识单元和多个多位存储单元的多层非易失性存储器的方法。多个多位存储单元的每一个能够存储用于代表数据的不同层的电荷。数据由多个数据页面表示。所述方法包括顺序地编程多个数据页面的一个或更多个,使得每一个编程过的存储单元具有在包括第一范围和多个后续范围的多个阈值电压范围中之一内的阈值电压。将多个后续范围的每一个定义为等于或大于相应的校验电压。在相应的读取电压读取多个后续范围的每一个。对于每一个给定的后续范围,相应的读取电压比相应的校验电压小余量M。在多个数据页面的每一个的编程之间提升编程过的存储单元的阈值电压,使得将提升过的存储单元的阈值电压编程为等于或大于下一个校验电压,下一个校验电压大于已经预先编程的单元的校验电压。将至少一个标识单元编程到指示已经编程过的页面信息的阈值电压范围内的阈值电压。将标识单元阈值电压范围定义为等于或大于标识单元校验电压。在标识单元读取电压读取标识单元,并且标识单元读取电压比标识单元校验电压小增强余量MEnhanced,该增强余量MEnhanced大于余量M。
一种用于根据编程包括至少一个标识单元和多个多位存储单元的多层非易失性存储器的方法来控制存储器的控制器。多个多位存储单元的每一个能够存储用于代表数据的不同层的电荷。数据由多个数据页面表示。所述方法包括顺序地编程多个数据页面的一个或更多个,使得每一个编程过的存储单元具有在包括第一范围和多个后续范围的多个阈值电压范围中一个内的阈值电压。将多个后续范围的每一个定义为等于或大于相应的校验电压,其中在相应的读取电压读取多个后续范围的每一个。对于每一个给定的后续范围,相应的读取电压比相应的校验电压小余量M。在多个数据页面的每一个的编程之间提升编程过的存储单元的阈值电压,使得将提升过的存储单元的阈值电压编程到等于或大于下一个校验电压,下一个校验电压大于已经预先编程的单元的校验电压。将至少一个标识单元编程为指示已经编程过的页面信息的阈值电压范围内的一个阈值电压。将标识单元阈值电压范围定义为等于或大于标识单元校验电压。在标识单元读取电压读取标识单元,并且标识单元读取电压比标识单元校验电压小增强余量Menhanced,该增强余量Menhanced大于余量M。
【附图说明】
当联系附图考虑时,参考以下详细的描述,本公开的更完整的评价及其很多附带的优点将更好地理解而被更容易的掌握,其中:
图1是示出闪存的单个单元的示意图;
图2示出了一串NAND闪存的示例;
图3示出了闪存页面的示例;
图4图解根据本发明的示例性实施例的2位多层闪存的四个状态;
图5图解作为ISPP方法的一部分使用的示例性电信号;
图6图解根据本发明的另一个示例性实施例的作为ISPP方法的一部分使用的电信号;
图7图解根据本发明的示例性实施例的2位存储器的四个可能的状态;
图8图解根据本发明的示例性实施例的、用于在单元中编程数据的方法;
图9图解根据本发明的示例性实施例的、用于编程多层非易失性存储装置的方法;
图10图解根据本发明的示例性实施例的、用于编程多层非易失性存储装置的方法;
图11图解根据本发明的示例性实施例的、用于编程多层非易失性存储装置的方法;
图12图解根据本发明的一个或更多个示例性实施例的、用于编程LSB页面的详细方法;
图13图解根据本发明的一个或更多个示例性实施例的、用于编程MSB页面的详细方法;
图14A-14B示出了根据本发明的示例性实施例的3位存储装置;
图15是示出根据本发明的示例性实施例的、用于控制2位多层非易失性存储装置的偏置条件的表;和
图16示出了根据本发明的示例性实施例的包括闪存的存储器系统。
【具体实施方式】
在描述附图中所示的本公开的优选实施例中,为了清楚采用特定的术语。然而,本发明并非旨在局限于所选的特定术语,并且可以理解每一个特定元件包括所有以类似方式操作的技术等价物。
本发明的实施例可以允许在多层非易失性存储装置(例如,具有两个或更多位的闪存)中单元的高精度编程。
图4图解2位多层闪存的四个状态。在该图表400中,x轴代表阈值电压,而y轴代表对于特定的编程过的单元的阈值电压的概率分布。将单元的阈值电压表示成概率分布,并且由此将单元的电荷状态表示成曲线,该曲线示出了根据特定状态编程过的单元将具有特定阈值的可能性。
给定的单元可以具有分别代表第一状态、第二状态、第三状态和第四状态的四个可能的阈值电压概率曲线410、420、430、440中之一。在理想情况下,具有阈值电压概率曲线410的单元将不在任何测试电压VR1、VR2和VR3显示(register)电流。具有阈值电压概率曲线420的单元将在VR1而不在VR2或VR3显示电流。具有阈值电压曲线430的单元将在VR1和VR2而不在VR3显示电流。具有阈值电压曲线440的单元将在所有测试电压VR1、VR2和VR3显示电流。因此,在理想情况下,可以通过在3个电压VR1、VR2和VR3的每一个读取单元来在四个状态之间区分。
还期望分别在阈值电压范围420、430和440以及测量电压VR1、VR2和VR3之间留有余量。将这些余量表示为距离M并且从测量电压和相邻校验电压VF1、VF2和VF3延伸,该相邻校验电压指示了阈值电压范围420、430和440的开始。
当根据设计和制造约束来选择确切的阈值电压范围时,在此可以单独提供特定电压作为示例,并且预期单元的状态可以根据任何电压比例而设置。例如,第一状态410可以由具有小于大约-2伏特的阈值电压的单元代表。第二状态420可以由具有在0.3到0.7伏特范围内的阈值电压的单元代表。第三状态430可以由具有在1.3到1.7伏特范围内的阈值电压的单元代表。第四状态440可以由具有在2.3到2.7伏特范围内的阈值电压的单元代表。
如上所述,随着单元的可能的存储状态的数目增加,所以与给定状态对应的阈值电压的范围变得更窄,而从测量电压分离阈值电压的余量也更窄。因此,以高度精度编程每个单元日益重要。
用于增加编程精度的一个方法是增量步进脉冲编程(ISPP)。图5示出了可用于ISPP的示例波形。
图6示出了根据本发明的示例性实施例的用于ISPP的波形。使用图6中所示的波形有利于使单元阈值电压变化比使用图5中所示的波形的更小。这里,电信号600(Vpgm)包括一系列脉冲,其每个脉冲扩展构成程序周期620的时间长度。每个脉冲可以通过构成校验周期640的时间长度而分离。可以将每个连续的脉冲的电压增加例如电压630(ΔVpgm),该电压值可以是例如0.5V。例如,第一脉冲610的电压可以是15V。每个连续的脉冲可以增加到并包括最大电压650,该电压值可以是例如19V。可以在例如每个脉冲之间或周期性地例如每3个脉冲测试单元的阈值电压,以查看是否已经获得正确的阈值电压。如果没有获得,则可以施加另外的脉冲。
在已经编程单元之后,可以读取单元以校验是否正确地编程该单元。例如,可以测试阈值电压以查看其是否已经设置得足够高。如果不是,则施加另外的脉冲直到阈值电压足够高为止。
可以使用一组校验测试电压来校验编程过的阈值电压。校验电压(VF)可以与用于读取单元的测试电压(VR)不同。例如,校验电压VF1、VF2、VF3的每一个可以比对应的读取电压VR1、VR2、VR3大上述余量M的量。
多位存储装置的每个单元状态可以由数字代表。例如,当使用2位闪存时,四个可能的状态的每一个可以由2位二进制数表示。例如,第一个未编程状态可以表示为“11”,第二个状态可以表示为“01”,第三个状态可以表示为“10”,第四个状态可以表示为“00”。图7图解根据本发明的实施例的2位存储器的四个可能的状态。应该理解命名可以是任意的,所提供的当前的命名只是一个示例。这里,示出了对于四个状态的每一个的阈值电压概率分布700。可以理解,给定的单元可以一次只具有一个阈值电压,并且阈值电压可以在四个状态中的一个内,确切的阈值电压落在根据概率曲线的该状态的分布中。
每个2位二进制数可以被称作包括最高有效位(MSB)和最低有效位(LSB)。在第一未编程状态710中,MSB 712是“1”,LSB 718是“1”。在第二状态720中,MSB 722是“0”,LSB 728是“1”。在第三状态730中,MSB 732是“1”,LSB 738是“0”。在第四状态740中,MSB 742是“0”,LSB 748是“0”。
如上所述,通过在所需浮栅中俘获一层电荷可以将数据存储在每个单元中,以在期望范围内得到阈值电压,每个范围代表一个状态。因此,通过对单元编程可以将数据存储在单元中,并且在2位存储器的情况下,可以在每个单元中存储2位数据。当期望时,可以只用数据的单个位来编程2位存储单元。类似地,只用数据的第一位编程的单元可以随后用数据的第二位编程。当在单元中仅编程单个位数据时,单元被称作只包含LSB数据。当在单元中编程2位数据时,单元被称作包含LSB数据和MSB数据。可期望的并且在一些情况下是必需的是,在单元中首先编程(和校验)LSB数据然后在单元中编程(和校验)MSB数据。应该理解在NAND闪存中,可以一次一页地将单元编程。因此,物理页面的LSB单元可以被认为是LSB逻辑页面,而物理页面的MSB单元可以被认为是MSB逻辑页面,其中编程物理页面的过程包括首先编程(和校验)LSB逻辑页面,接着编程(和校验)MSB逻辑页面。
图8图解根据本发明的示例性实施例的、用于在单元中编程数据的方法。线800A代表已经仅编程LSB数据的单元。LSB数据的未编程状态是“1”。当期望存储“0”时,编程单元直到阈值电压被校验为处于“0”状态(大于VF2*)的正确范围内为止。这个编程步骤被图解为P1。
当在单元中只存储LSB数据时,可以在单个电压读取单元,这里所示为VR1。如果在电压VR1,可以观测到电流,则确定单元处于未编程的“1”状态。如果在电压VR1,没有观测到电流,则确定单元处于“0”状态。
至少部分地因为相邻单元的靠近,在被称作耦合效应的现象中,相邻单元的编程可能影响给定单元的阈值电压。因为在受影响的单元的阈值电压中的这个潜在的改变,概率曲线可能加宽。线800B代表只有LSB数据已经被编程且阈值电压概率曲线加宽了数量D1的单元。
当在编程LSB页面之后编程MSB页面时,作为使用本发明的一些示例性实施例的情况,线800B的“1”LSB数据状态可以保持为线800C的“11”数据状态,或者可以被编程直到阈值电压通过表示为P2的编程步骤被校验处于线800C的“01”状态(大于VF1)的正确范围内为止。类似地,可以编程线800B的“0”数据状态直到阈值电压通过表示为P3的编程步骤被校验处于线800C的“10”状态(大于VF2)的正确范围内为止,或者可以被编程直到阈值电压通过表示为P4的编程步骤被校验处于线800C的“00”数据状态(大于VF3)的正确范围内为止。每个编程步骤可以利用ISPP过程,例如上述的ISPP过程。
当从存储装置读取数据时,需要知道是否只有LSB数据已经被存储,或者是否LSB数据和MSB数据均已经被存储。存在应当知道这个信息的许多原因。例如,仅读取LSB数据只需要在一个电压(VR1)读取,而读取LSB和MSB数据需要在上述的三个电压(VR1、VR2和VR3)读取。此外,如线800B中所示,LSB数据的“0”状态可以包括在电压VR2任何一侧的阈值电压。
VF1比VR1大余量M。类似地,VF2比VR2大余量M,VF3比VR3大余量M。所有的余量M可以相等;然而,不是必须的。允许余量可以提高读取精度。
本发明的实施例可以利用称为MSB标识的单元来指示是否已经存储MSB数据。在专用存储设备的一个单元作为MSB标识单元处,其余单元可以被称为数据存储单元。在后面的点当期望读取所存储的数据时,可以读取MSB标识单元以允许所存储数据的正确解释,而不管是否只有LSB数据已经被存储或是否LSB和MSB数据都已经被存储。对于每个页面存在至少一个MSB标识单元,指示是否已经将MSB数据存储到该页面。
线800D图解处于未编程的“1”状态的MSB标识单元。该状态可以用来指示还没有被编程MSB数据。线800E图解处于“0”状态的MSB标识单元。该状态可以用来指示已经编程了MSB数据。MSB标识可以在“1”状态中开始,并且可以被编程直到阈值电压通过编程步骤P5被校验处于“0”状态(大于VF3)为止,以指示已经编程了MSB数据。
如上所述,可以编程MSB标识的“0”状态直到MSB标识单元的阈值电压大于VF3为止。当该状态的阈值电压比VR3大余量M时,从VR2读取MSB标识以提供增强的余量。该增强的余量被示例为MEnhanced。
随着电荷无意识地从单元的浮栅逃离,被称作电荷损失的现象可能发生。电荷可以由于绝缘层中的缺陷或一些其他原因而无意识地逃离。电荷的损失可能导致阈值电压变得比期望的更低的可能性。该可能性可以由在更低电压方向中的概率曲线的展宽来表示。
虽然电荷损失可能发生在任何单元,但是存储单元需要比MSB标识单元具有更多的误差校正措施。此外,在一个存储单元中的电荷损失可以只表示该受影响的单元不可读,而在MSB标识单元中的电荷损失可以表示整个页面不可读。因此在MSB标识单元中的电荷损失是特殊的问题。
至少由于这个原因,即使电荷是从MSB标识单元的浮栅丢失的,增强的余量MEnhanced也可以足够大以允许对MSB标识单元的正确读取。根据本发明的实施例,距离MEnhanced足以将MSB标识的“0”状态放置在与存储单元的“00”状态(如线800C上“00”所示)相同的分布曲线上。因此,通过定义MSB标识单元的“0”状态,即使在低于理想的状态下也可以正确地读取MSB标识单元。
图9图解根据本发明的示例性实施例的、用于编程多层非易失性存储装置的方法。首先,可以编程存储单元的LSB数据(步骤S910)。如上所述,通过使用ISPP过程,可以编程LSB逻辑页面直到阈值电压被校验为大于VF2*为止,其中期望‘0’状态。如果期望‘1’状态,则在此步骤不需要编程。然后,通过使用ISPP过程,MSB数据可以用于在期望处编程“00”状态(步骤S920A)直到阈值电压被校验为大于VF3为止。该编程步骤可以包括实现ISPP过程以增加另外的电荷到“0”LSB状态。可以将MSB标识单元从未编程的状态“1”编程到编程的状态“0”(步骤S920B)以指示已经编程了MSB数据。该编程步骤可以包括实现ISPP过程以增加另外的电荷到“1”状态来获得“0”状态。如上所述,可以编程用于MSB标识单元的“0”状态,直到阈值电压被校验大于VR3为止。可以同时执行步骤S920A和S920B,这是因为它们均可以使用同样的VR3校验电压。然后,MSB数据可以用于在期望处编程“01”和“10”状态(步骤S930)。该编程步骤可以包括通过编程直到阈值电压分别被校验为大于VF1和VF2为止,来实现ISPP处理以增加另外的电荷到“1”和“0”状态以分别获得“01”和“10”状态。“11”状态可以通过将单元留在其未编程的“1”状态而获得。
如上所述,尤其在电源中断和/或过早断开存储装置的情况下,闪存尤其是多层闪存的编程携带存储丢失的风险。本发明的实施例通过在编程处理中执行一个或更多个另外的步骤来寻求减少这种风险。
例如,如果在使用MSB数据进行“00”状态编程(步骤S920A)和MSB标识单元编程(步骤S920B)期间中断电源。在这样的情况下,当LSB数据是潜在可读的时,MSB数据将不可读,并且MSB标识单元的状态不是清楚确认的。由于MSB标识单元的不明确的状态,所以将LSB数据表示为不可读。
下述的本发明的示例性实施例同时关注编程主存储单元的方式和当编程主存储单元时编程标识单元的方式。可以理解下述编程主存储单元的方式和下述编程标识单元的方式不是相互依赖的,并且不需要以所示的形式结合特定的方式。特别地,下述编程主存储单元的方式可以与其他没有在下面描述但是本领域公知的编程标识单元的方式相结合,而下述编程标识单元的方式可以与其他没有在下面描述但是本领域公知的编程主存储单元的方式相结合。
因此,图10和11图解根据本发明的另一个示例性实施例的编程多层非易失性存储装置的替代方法。首先,以上述方式编程LSB数据(步骤S1010)(线1100A)。然后,通过编程该单元直到阈值电压被校验大于VF2为止,可以将‘0’状态提前到提前状态“A”(步骤S1020)(线1100B)。通过编程到VF2而定义的状态也被定义为‘10’状态,然而,当期望‘10’状态或‘00’状态时可以执行该步骤。MSB标识单元可以在该步骤(1110B)保持未编程。然后,如果期望的话,通过编程A状态直到阈值电压被校验为大于VF3为止,可以编程‘00’状态,或者在期望‘10’状态的地方,没有另外的编程需要发生(步骤S1030A)(线1100C)。通过编程MSB标识单元直到阈值电压被校验为大于VF3为止,可以在该点编程MSB标识(步骤S1030B)(线1110C)。可以同时或接近同时执行步骤S1030A和S1030B,这是因为它们都包括到VF3校验电压的编程。最后,通过编程“1”状态直到阈值电压被校验为大于VF1为止,可以在期望处编程“01”状态(步骤S1040)(线1100D)。
图12提供了根据本发明的一个或更多个实施例的、如何编程LSB页面的详细说明。首先,可以将LSB数据载入到页面缓冲器中(步骤S1210)。在执行该步骤时,根据LSB数据可以在页面缓冲器中设置闩锁,使得如果数据是‘0’则允许编程,而如果数据是‘1’则禁止编程。为了禁止单元,可以对正确的位线发送电压Vcc。然后可以将计数器“N”设置为“1”(步骤S1220)。通过施加编程电压Vpgm到正确的字线来编程单元(步骤S1230)。将在编程过的字线上的每个单元编程为‘0’状态,除非已经禁止了单元的位线。通过上述例如关于图6的ISPP步骤定义电压Vpgm,并且在第一次编程尝试(N=1)中,将电压设置为第一电平610(图6)。在编程步骤之后,通过在测试电压VF2*校验(步骤S1240)而执行编程。如果编程完成,例如,阈值电压被校验为处于期望电平(≥VF2*)(是,步骤S1250),则编程通过(步骤S1260)。然而,如果没有成功校验阈值电压(否,步骤S1250),则确定N是否处于与最高Vpgm电压(650,图6)对应的最大电平(步骤S1270)。如果N不是其最大值(否,步骤S1270),则将N增加1,并且将电压Vpgm增加ΔVpgm(630,图6),并且在下一个Vpgm编程单元。如果N处于其最大值(是,步骤S1270),指示在直到包括最大编程电压的所有编程电压下(650,图6)的编程都不成功,则该编程失败(步骤S1290)。
闪存装置可以包括发生编程失败的页面和/或块的表,并且可以将这些页面/块标记为坏的,并且文件系统可以避免使用这些页面/块。
图13提供了根据本发明的一个或更多个实施例的如何编程MSB页面的详细说明。首先,可以将MSB数据载入到页面缓冲器中(步骤S1310)。然后,通过编程该单元直到阈值电压被校验为大于VF2为止,可以提前(advance)编程过的LSB数据的‘0’状态(步骤S1311)。应当理解该步骤(步骤S1311)是根据本发明的一些实施例可以使用的可选步骤,诸如以上参考图10和11讨论的实施例。诸如以上参考图8和9讨论的实施例的其它实施例可以省略该步骤。
对“00”数据状态可以设置页面缓冲器(步骤S1312)。对‘0’数据状态可以载入标识单元页面缓冲器(步骤S1313)。然后可以将计数器“N”设置为“1”(步骤S1314)。通过施加编程电压Vpgm到正确的字线,可以编程包括存储单元和标识单元的单元(步骤S1315)。将每个单元编程为“00”状态,除非已经禁止了单元的位线。通过上述的ISPP步骤来定义电压Vpgm。在编程步骤之后,通过在校验电压VF3校验(步骤S1316)来执行编程。如果阈值电压被校验为处于所期望电平(≥VF3)(是,步骤S1317),则编程通过。然而,如果没有正确校验阈值电压(否,步骤S1317),则确定N是否处于上述最大值(步骤S1318)。如果N不处于其最大值(否,步骤S1318),则将N增加1,并且将电压Vpgm增加ΔVpgm,并且单元在下一个编程Vpgm(步骤S1315)。如果N处于其最大值(是,步骤S1318),指示在所有编程电压直到包括最大编程电压的编程都不成功,则该编程已经失败。
在编程已经完成(是,步骤S1317)之后,或者编程已经失败(是,步骤S1318)之后,设置页面缓冲器用来编程‘01’和‘10’状态(步骤S1320)。然后可以将N设置为1(步骤S1320b)。然后如上述编程单元(步骤S1321)。在VF1(对于‘01’状态)和在VF2(对于‘10’状态)发生校验(步骤S1322)。如果编程完成(是,步骤S1323),则编程通过(步骤S1324)。如果编程没有完成(否,步骤S1323),例如,如果没有校验正确的电压,则确定N是否处于其最大电平(步骤S1325)。如果N不处于其最大值(否,步骤S1325),则提前N,并且增加Vpgm(步骤S1326),并且编程再次进行(步骤S1321)。如果N处于最大值(是,步骤S1325),则编程失败(步骤S1327)。
虽然上述示例性实施例描述了2位多层非易失性存储装置,但是可以理解,可以将本发明的示例性实施例应用到任意位的多层非易失性存储装置。例如,可以使用3位多层非易失性存储装置。3位装置对每个单元具有8个可用的存储器状态。这些存储器状态可以分别被称为“111”、“011”、“101”、“001”、“110”、“010”、“100”和“000”。3位存储装置将不再具有LSB页面和MSB页面,而将具有第一逻辑页面、第二逻辑页面和第三逻辑页面。还可以存在指示第二页面何时已经被编程的第一标识单元,和指示第三页面何时已经被编程的第二标识单元。可替代地,可以使用具有多存储状态的单个标识单元来指示第二页面何时已经被编程和第三页面何时已经被编程。例如,可以将标识单元初始地设定为指示第二页面和第三页面都还没有被编程过的未编程的‘111’状态,可以将标识单元编程到‘010’状态以指示已经载入第二页面,并且可以将标识单元编程到‘000’状态以指示已经载入第三页面。对于使用两个标识单元的实施例,可以将第一标识单元编程到‘0’状态以指示已经编程第二数据页面,并且可以将第二标识单元编程到‘0’状态以指示已经编程第三数据页面。虽然本发明的实施例可以利用任一方式,但是为了简单本发明讨论的示例性实施例只涉及第一种方式。
对于超过3位的实施例,存在超过8个可用的存储状态和超过3个标识单元或在单个标识单元上超过3个状态。
图14A-14B示出了根据本发明的示例性实施例的3位存储装置。关于如何对不同的单元编程的许多细节可以理解为与上述的示例性实施例类似。应当理解,可以外推这些示例的特点以提供超过3位的多位存储装置。
关于图14A和14B,可以编程第一页面(线1400,步骤S1410)。标识单元可以在未写入的‘111’状态起始(线1401)。然后提前‘0’位(线1402,步骤S1411),以便在意外中断的情况下可以保护第一页面数据以免数据损坏。标识单元可以保持在‘111’状态(线1403)。然后,可以编程第二页面数据(线1404,步骤S1412),并且可以将标识单元编程到指示已经编程过第二数据页面的电平(线1405,步骤S1413)。例如,可以将标识单元编程到‘010’状态。两个步骤S1412和S1413可以同时或接近同时发生。然后提前第二页面数据状态‘01’、‘10’和‘00’(线1406,步骤S1414),以便在意外中断的情况下可以保护第二页面数据以免数据损坏。在该步骤不编程标识单元(线1407)。然后可以编程第三页面数据(线1408,步骤S1415),并且可以将标识单元编程到指示已经编程过第三数据页面的电平(线1409,步骤S1416)。例如,可以将标识单元编程到‘000’状态。两个步骤S1415和S1416可以同时或接近同时发生。
虽然多层非易失性存储装置可以使用任何可想到的、用于数据单元的编程的方案,但是图15是示出根据本发明的示例性实施例的、用于控制2位多层非易失性存储装置的偏置条件的表。该表示出了根据本发明的示例性实施例的、可以用来擦除、编程、禁止、读取和校验存储单元和标识单元的信号的示例。
图15中的表总结了根据本发明的示例性实施例的、可用于操作存储器单元阵列的电压。该表的顶行定义了一组可以执行的存储器功能。这些功能包括擦除存储器、编程存储器、禁止存储器的编程、以及读取LSB、MSB和标识单元数据。对于每个所期望的功能,第一列标注了在执行期望的功能时可以接收电压的每一条线。该表的其余行和列定义了一组将被施加到第一列中列出的每一条线以执行在顶行列出的期望的功能的电压。根据特定电压诸如0V或20V可以指定电压。根据上面详细描述的信号(如Vcc或Vpgm)可以可替代地指定电压。术语“浮动”指示该线没有设置到特定的电压。“H或L”指示向该线发送高信号或低信号。当读取数据时将Vread施加到未选择的WL,而当编程时将Vpass施加到未选择的WL。
图16示出了根据本发明的一个示例性实施例的包括闪存的存储器系统。存储系统可以包括闪存1600和存储控制器1610。存储控制器1610可以控制闪存1600的操作。
可以理解虽然许多图形示出了具有多个阈值电压曲线的单元,但是为了示例所有可能的状态的目的,示出这些多个阈值电压曲线,并且可以理解任何一个给定的单元在给定时间将仅具有一个阈值电压范围。此外,当本公开讨论编程一个状态时,可以理解仅将编程执行到期望的程度。因此,当处理步骤描述将单元编程到例如‘00’状态时,仅在期望这个状态时执行该编程步骤。可以理解一旦已经达到期望的状态,则不再将该单元编程到另一个状态。
上述特定的实施例是说明性的,并且在不背离本公开的精神或所附权利要求的范围的情况下,可以在这些实施例中引入许多变更。例如在本公开和所附权利要求的范围内,不同的说明性实施例的元件和/或特征可以彼此结合和/或彼此替换。