背景技术
在诸如MLC(多电平单元)闪存装置之类包括每个存储单元都至少存储1比特数据的多个存储单元的半导体存储装置中,指示其中数据的存储单元阈值电压是不同的。因此,为了向存储单元中写入数据以及从存储单元中读出数据,需要以一种或者另一种方法执行数据转换。
通常在MLC闪存中,每个存储单元可以有三个或更多的阈值电压(或者可以处于三个或者更多的状态)。与仅有一个阈值电压的二值存储器相比,为了写入和读出数据,需要对应于每一个阈值电压进行更加复杂的控制操作。
在下文中将会描述包含多个设置成阵列形式的存储单元的MLC闪存半导体存储装置的数据写入操作。
首先将会通过与在传统的二值闪存中存储MLC数据的方法相比较,描述一种用于在传统的MLC闪存中存储MLC数据的方法。
MLC闪存是一种非易失性半导体存储装置,它包含多个通常由MOSFET组成的存储单元。数据是利用每个存储单元的阈值电压依照在对应的MOSFET的浮栅中聚集的电荷数量不同而改变这一现象进行存储的。
图10示出了在一个通常的二值闪存中提供的多个存储单元的阈值电压的分布状况。横轴表示阈值电压,纵轴表示存储单元的数量,位于横轴中心的参考阈值电压表示进行数据读取的电平。
通常,在存储单元的浮栅没有聚集电荷的时,代表性的二值NOR闪存处于数据擦除状态。该状态由数据“1”来表示。在存储单元的浮置栅极中注入负电荷(电子)的时,二值NOR闪存处于数据写入状态,该状态由数据“0”来表示。
图10中低于参考阈值电压的区域示出了处于数据擦除状态的阈值电压分布状况,高于参考阈值电压的区域示出了处于数据写入状态的阈值电压分布状况。
处于数据擦除状态的存储单元的阈值电压低于处于数据写入状态的存储单元的阈值电压。因此,只要应用于存储单元的控制栅的电平在相同的电平上,处于数据擦除状态的存储单元中电流的幅度比处于数据写入状态的存储单元要高,也就是说,在处于数据擦除状态的存储单元中电流的幅度与数据写入状态不同。通过使用电流幅度的不同,对存储单元中是否有数据(“数据存储状态”)进行检测。这就称为用于校验的数据读取操作(下面描述的数据校验操作基本上与用于校验的数据读取操作相同)。
通过检测在设置了上面提到的参考阈值电压的参考单元中电流的幅度,以及将要从中读取数据的存储单元中电流的幅度,随后将这两个电流幅度进行比较的方法来执行数据读取操作。
通过由读出放大器检测在连接到感兴趣的存储单元的位线上电流的幅度和在连接到参考单元的位线上电流的幅度来比较电流幅度。
图11示出了在一个通常的四值闪存中提供的多个存储单元的阈值电压的分布状态。在这个例子中,四值闪存的每个存储单元存储2比特的数据。横轴表示阈值电压,纵轴表示存储单元的数量。沿着横轴的参考阈值电压1、2和3分别表示进行数据读取的电平。
四值闪存中的每个存储单元可以处于四种状态,也就是:数据擦除状态和三个数据写入状态。处于数据擦除状态中的存储单元的阈值电压是最低的,处于三个数据写入状态的阈值电压是不同的。为了在可选择的处于四种状态的存储单元中执行数据读取操作,如图11所示设置三个参考电压1、2和3。
在图11中示出的写入闪存的存储单元的2比特数据被定义为“11”、“10”、“01”或“00”。存储数据“11”的存储单元有最低的阈值电压,存储数据“00”的存储单元有最高的阈值电压。数据“11”对应于数据擦除状态,在对应于数据“10”、“01”和“00”的数据写入状态中,参考阈值电压被设置为使多个存储单元中阈值电压分布的差别尽可能的小。
数据写入诸如图11中示出的四值闪存之类的MLC闪存的控制操作具有下面这些问题。
需要执行数据写入操作以保证与多个存储单元中的数据相对应的阈值电压的分布处于一个相当小的范围内。(也就是说,分布的差别相当小)。
更特别的是,在为了进行复制而从存储单元中读取数据的时候,与多个存储单元中的数据相对应的阈值电压的分布范围相对于在数据写入操作中的阈值电压的分布范围而被扩大,因此为了数据写入,最小可能阈值电压和最大可能阈值电压相对于参考电压的范围减小了。
另外,为了有效地复制,需要从设置了三个参考电压的存储单元中读取数据。
图12示出了一个用于向四值闪存中写入数据的例子算法,在图12中所示的算法中,通过三个步骤执行数据写入,它们分别是步骤1到3。
在步骤1到3的每个步骤中,对将要被存储到存储单元中的目标数据和当前在存储单元中存储的数据进行检查,以确定是否执行向存储单元写入数据。在数据写入操作中,对阈值电压设置了比用于数据读取操作的参考阈值电压更加严格的条件,以确定在数据写入之后的超时数据恶化的余量,这也是数据读取的余量。阈值电压还被用于数据校验操作。
在步骤1到3中,向每个存储单元的控制栅和漏极应用了指定的写入数据脉冲。随后执行数据校验操作(也就是改变阈值电压,并执行数据读取操作),以检查是否存储单元的阈值电压达到了期望的电平。当阈值电压到达了期望电平的时候,停止应用写入数据脉冲;当阈值电压还没有到达期望电平的时候,继续应用写入数据脉冲,写入数据脉冲的应用和校验操作将以这种方式重复地进行,从而保证在存储单元中设置了期望的阈值电压。
尤其特别的是,数据写入是依照图12中右边表格中所示的是否需要向存储单元中写入数据而执行的。
在步骤1中,向存储单元中进行数据写入操作,该存储单元的当前数据是“11”(数据擦除状态)而且目标数据是“10”、“01”和“00”。
数据写入操作将会继续,直到所有将要被写入数据的存储单元的阈值电压变为参考电压1’,它等于或者高于目标数据“10”的最小可能值,(参考阈值电压1’是用于校验的值,它被设置了比用于数据读取的数据“10”(图11)的最小可能值的参考阈值电压1更为严格的条件。与之相似,参考阈值电压2’和2”被设置了比参考阈值电压2更为严格的条件,参考阈值电压3’和3”被设置了比参考阈值电压3更为严格的条件。)
参考阈值电压1’被设置为高于用于读取数据的参考阈值电压1,以确保获得用于读取数据的检测电流的检测精确性的余量,以及由存储在存储单元中的数据超时恶化而导致的阈值电压改变的余量。为了同样的目的,作为目标数据“10”的最高可能值的参考阈值电压2’被设置为低于用于读取数据的参考阈值电压2。
例如,当存储单元在数据写入操作中获得了超过参考阈值电压2’的阈值电压的时候,存储单元处于过程序(over-program)状态,这一状态处于可以保证读取目标数据“10”的阈值电压范围之外,因此当在MLC闪存中执行数据写入操作的时候,通过例如控制数据写入电压的方式来阻止存储单元进入过程序状态是非常重要的。
在步骤2中,向存储单元执行了数据写入操作,该存储单元中的目标数据是“01”或者“00”,而且当前的数据小于“01”。数据写入操作的详细过程与步骤1基本相同。
在步骤2中,目标数据“01”的最小可能值的参考阈值电压2”被设置为高于作为数据读取的数据“01”的最小可能值的参考阈值电压2(图11);目标数据“01”的最大可能值的参考阈值电压3’被设置为低于用于数据读取的数据“01”的最大可能值的参考阈值电压3(图11)。
执行数据写入操作,以保证所有将要被写入数据的存储单元从参考阈值电压2”(目标数据“01”的最小可能值)到参考阈值电压3’(目标数据“01”的最大可能值)的范围中获得阈值电压。
在步骤3中,对其中的目标数据是“00”而且当前数据小于“00”的存储单元执行数据写入操作。数据写入操作的详细过程与步骤1基本相同。
在步骤3中,目标数据“00”的最小可能值的参考阈值电压3”被设置为高于用于数据读取的数据“00”的最小可能值的参考阈值电压3(图11)。
执行数据写入操作,以保证所有的将要向其中写入数据的存储单元获得一个高于或者等于参考阈值电压3”(目标数据“00”的最小可能值)的阈值电压。
如上所述,数据可以通过在图12中示出的算法被写入四值闪存中。
接下来将会描述一种称为“阵列噪音”的现象,“阵列噪音”导致数据写入操作中如过程序状态之类的严重问题。
阵列噪音是下面的这种现象。例如,它假定存储阵列中一个指定的存储单元和另一个存储单元被连接到一条指定的字线。当数据被写入指定的存储单元,而且指定的存储单元的阈值电压被改变的时候,另一个没有被写入数据的存储单元的阈值电压也被明显地改变。
图13示出了一个MLC NOR闪存的存储阵列的一部分。图13示出了四条字线WL1到WL4、四条位线BL1到BL4、一条源极线SRC、以及存储单元CELL11到CELL44。
所有存储单元的源极通常都连接到源极线SRC上。字线WL和位线BL彼此互相垂直。
字线WL1到WL4通常连接到被连接的每个存储单元的控制栅。位线BL1到BL4通常连接到被连接的每个存储单元的漏极。这样,存储单元被排列为一个阵列。
连接到位线BL1到BL4中任何一个的两个相邻的存储单元的漏极彼此相连,两个相邻的存储单元的源极彼此相连。例如,存储单元CELL11到CELL21被彼此连接,而且漏极被连接到位线BL1;存储单元CELL21到CELL31的源极被彼此连接,而且源极被连接到源极线SRC;存储单元CELL31到CELL41的漏极被彼此连接,而且漏极被连接到位线BL1。
下面将描述在所有存储单元中的数据都被擦除的状态下向连接到字线WL2的存储单元CELL21到CELL23写入任意数据的操作。没有数据被写入连接到字线WL2的存储单元CELL24,而且存储单元CELL24保持在数据擦除状态。
在执行数据写入操作以前,所有的存储单元都处于数据擦除状态,所有存储单元的阈值电压都是最低的。同样,当在存储单元CELL21到CELL24中执行用于校验的数据读取操作的时候,存储单元CELL21到CELL24中存在着相对较高幅度的电流。
这样,由于源极线SRC的寄生电阻,驱动电路和类似电路中的输出晶体管的输出电阻增加,源极线SRC电压从原始的电压(例如接地电压)显著地发生了相对漂移。
随着向存储单元CELL21到CELL23的写入操作的进行,存储单元CELL21到CELL23的阈值电压升高了。这就减少了存储单元CELL21到CELL23中电流的幅度,从而导致源极线SRC的电压从地电压的浮动电平逐渐地减少。
当源极线SRC的电压的浮动电平降低时,存储单元CELL21到CELL23的漏极电压增加,并且因此为了校验而进行的数据读取操作引起的电流的幅度增加。因此,读出放大器不正确地检测到存储单元CELL21到CELL23的阈值电压已经降低。
没有进行数据写入,从而也不会有改变的阈值电压的存储单元CELL24被连接到源极线SRC和存储单元CELL21到CELL23。因此,在存储单元CELL24中,作为用于校验而进行数据读取操作的结果将会产生一个增加的幅度的电流,而且读出放大器将不正确地检测到存储单元CELL24阈值电压已经降低。
这一现象被称为“阵列噪音”,当阵列噪音发生的时候,一个已经完成了数据写入操作和校验操作的存储单元可能会被错误地确定有一个作为随后的用于校验的数据读取操作的结果的减少的阈值电压,这样数据被再次写入存储单元。
这种由阵列噪音产生的错误导致了MLC闪存中的一个严重的问题。在MLC闪存中每个存储单元的阈值电压需要被精确地控制,以减少阈值电压分布的差异。
由于下面的原因在二值闪存中并没有导致非常严重的问题。在二值闪存中,当数据被再次写入的时候,存储单元的阈值电压与通常的数据写入状态的阈值电压相比较也会增加,但是在二值闪存中,相对于参考电压的最小可能阈值电压和最大可能阈值电压的余量比在图10中示出的MLC闪存的余量要大,因此在为了复制而进行数据读取的时候,二值闪存基本上没有导致错误的危险。
相反,在MLC闪存中,对应于参考电压的最小可能阈值电压和最大可能阈值电压的余量较小。因此,当对应于数据“10”和“01”(图11)的阈值电压变得过高的时候(“过程序”),被写入的数据实际上可能与目标数据不同。
另外,即使在数据以同样的条件不变地写入的时候,相对于原始电压的阈值电压的浮动电平也可能逐渐的降低。
为了解决这些问题,需要对被写入存储单元的数据脉冲的幅度(电压值)和周期(应用时间)进行调整。然而,即使在执行了这种调整的时候,一个数据可以相对较容易地写入的存储单元在它曾经被确定已经在数据写入操作的早期阶段处理完了数据写入以后仍可能被错误地确定为还没有处理完数据写入。在这种情况下,拥有高电压的数据脉冲被应用一段较长的时间,从而有较高的导致过程序状态的可能性。
还可能通过例如改变读出放大器的检测特征而导致电源电压的改变而发生类似的现象。
接下来将会通过参考图14描述向另一个MLC闪存写入数据的操作。
在MLC闪存中需要存储单元的阈值电压被精确控制的数据写入操作通常比在二值闪存中需要更长的时间。
为了缩短数据写入操作需要的时间,MLC闪存通常包含一个页缓冲电路,用于暂时性地存储将被写入存储单元中的数据。图14示出了包含页缓冲电路的MLC闪存400的一部分。
MLC闪存400包含用户接口电路(在后文中称为“UI电路”)410、控制总线401、地址总线402和数据总线403。通过与UI电路410连接的控制总线401、地址总线402和数据总线403在外部对MLC闪存400进行操作。
UI电路410通过控制总线401、地址总线402和数据总线403从外部接收信号,并分析信号以控制在MLC闪存400中的操作。UI电路410通过控制总线411、地址总线412和数据总线413与页缓冲电路420连接,并且通过控制总线414连接到写状态机电路(在后文中称为“WSM电路”)430。
页缓冲电路420暂时存储将被写入存储单元的数据,而且UI电路410通过控制总线411、地址总线412和数据总线413控制数据写入。
WSM电路430控制例如存储阵列460在接收例如向存储单元重写数据的指令时的操作。WSM电路430通过控制总线414接收来自UI电路410中的控制信号的指令,并通过信号431向UI电路410通知它的状态。WSM电路430通过控制总线434、435和436分别连接到读取电路(读出放大器)440、写入电路(程序电路)450和存储阵列460。读取电路440、写入电路450和存储阵列460通过读取总线461彼此连接。
当UI电路410指示WSM电路430写入数据的时候,它分别通过控制总线432和地址总线433向页缓冲电路420输出控制信号和地址信号,以指示页缓冲电路420输出将被写入存储单元的特定数据。页缓冲电路420通过数据总线421向WSM电路430输出被指示的特定的数据。
读取电路440通过控制总线434从WSM电路430接收控制信号,这样就从存储阵列460中的存储单元读取了数据。根据WSM电路430通过控制总线436和地址总线433分别输出的控制信号和地址信号,选择将被读取数据的存储单元。被选择的存储单元由WSM电路430激活。
被选择的存储单元的漏极连接到读取总线461,读取电路440通过读取总线461确定每个被选择的存储单元的阈值电压(表现为数据存储状态),随后通过数据总线441向WSM电路430输出从被选择的存储单元中读出的数据。
WSM电路430通过数据总线421从页缓冲电路420中接收特定的将被写入的数据,而且也通过数据总线441从读取电路440中接收数据。WSM电路430根据每个被选择的存储单元的当前阈值电压,确定是否向每个被选择的存储单元写入数据。作为确定的结果,一个写入数据脉冲通过数据总线437被输出到写入电路450。
WSM电路430通过控制总线436向存储阵列460输出控制信号,从而允许存储阵列460接收数据。随后,WSM电路430通过控制总线435向写入电路450输出控制信号,从而向存储阵列460应用写入数据脉冲。写入电路450随后以通过读取总线461向连接到每个被选择存储单元的位线应用高电平信号的方式向被选择的存储单元写入对应于写入数据脉冲的数据。
图15示出了另一个MLC闪存500的一部分,它实现了比图14中的MLC闪存400更有效的数据写入操作。
MLC闪存500拥有页模式读取功能,它可以同时读取由多个地址指示的数据,并且可以从读取的数据中选择需要的数据。
和图14中所示的MLC闪存相似,MLC闪存500包括UI电路510、控制总线501、地址总线502和数据总线503。通过连接到UI电路510的控制总线501、地址总线502和数据总线503在外部对MLC闪存500进行操作。
UI电路510通过控制总线501、地址总线502和数据总线503从外部接收信号,并分析信号以控制在MLC闪存500中的操作。UI电路501通过控制总线511、地址总线512和数据总线513连接到页缓冲电路520,同时也通过控制总线514连接到WSM电路530。
页缓冲电路520暂时地存储将要向存储单元写入的数据,而且由UI电路510通过控制总线511、地址总线512和数据总线513控制页缓冲电路520的数据写入。
WSM电路530控制例如存储阵列560在接收例如向存储单元重写数据的指令时的操作。WSM电路530通过控制总线514接收来自UI电路510的控制信号的指令,并通过信号531向UI电路510通知它的状态。WSM电路530通过控制总线533、534、535和536分别连接到MLC逻辑电路580、读取电路(读出放大器)540、写入电路(程序电路)550和存储阵列560。读取电路540、写入电路550和存储阵列560通过读取总线561彼此连接。
地址生成电路(地址控制器)570通过控制总线538和地址总线539分别接收来自WSM电路530的控制信号和地址信号,从而生成内部地址。在向地址总线539输出了将被写入数据的起始地址的情况下,地址生成电路570根据从控制总线538接收的初始化信号将输出到地址总线571的地址设置为起始地址。随后,地址生成电路570根据从控制总线538接收的时钟信号增加地址,并将已经增加的地址输出到地址总线571。
读取电路540通过控制总线534从WSM电路530接收控制信号,这样就从存储阵列560中的存储单元读取了数据。分别根据由WSM电路530通过控制总线536输出的控制信号和由地址生成电路570通过地址总线571输出的地址信号来选择被读取数据的存储单元。被选择的存储单元由WSM电路530来激活。
被选择的存储单元的漏极连接到读取总线561,读取电路540通过读取总线561确定每个被选择的存储单元的阈值电压(表现为数据存储状态),随后通过数据总线541向数据复用电路(后文称为“MUX电路”)545输出从被选择的存储单元中读取的数据。
MUX电路545通过地址总线571从地址生成电路570中接收地址信号,MUX电路545根据地址信号在从读取电路540中接收的数据中选择将被输出的数据,并通过数据总线546向MLC逻辑电路580输出被选择的数据。
MLC逻辑电路580接收通过控制总线533从WSM电路530输出的控制信号、通过数据总线521从页缓冲电路520输出的目标数据、和通过数据总线546从MUX电路545输出的被选择的数据。按照每个被选择的存储单元的当前阈值电压,MLC逻辑电路580确定是否向每个被选择的存储单元写入数据。作为确定的结果,通过数据总线581向WSM电路530输出写入数据脉冲。WSM电路530根据写入数据脉冲通过数据总线537向写入电路550输出数据,指示是否向每个被选择的存储单元写入数据。
WSM电路530通过控制总线536向存储阵列560输出控制信号,从而允许存储阵列560接收数据。随后,WSM电路530通过控制总线535向写入电路550输出控制信号,从而向存储阵列560应用写入数据脉冲。写入电路550随后以通过读取总线561向连接到每个被选择存储单元的漏极的位线应用高电平信号的方式向被选择的存储单元写入对应于写入数据脉冲的数据。
图15中示出的MLC闪存500的页缓冲电路520拥有下面所说的反馈功能。根据通过控制总线532从WSM电路530输出的控制信号,页缓冲电路520可以通过地址总线571更新由从地址生成电路570输出的地址信号指示的数据,以反馈由MLC逻辑电路580生成的数据。反馈数据通过数据总线582从MLC逻辑电路580输出到页缓冲电路520。
图16示出了一个真值表,它举例示出了用于四值闪存数据写入操作中的MLC逻辑电路580的操作。
图16示出了一个由MLC逻辑电路580使用的每个存储单元的逻辑。这些逻辑与在图12中示出的三阶段数据写入操作中使用的逻辑相同。图16中的步骤1、2和3分别对应于前面图12中所述的步骤1、2和3。在图16中,“目标”代表目标数据、“写入”表示数据是否被写入每个存储单元、“L”表示没有数据被写入、“H”表示数据被写入。
图17举例示出了用于实现在图16的真值表中示出的逻辑的逻辑电路。图17中示出的逻辑电路包含NAND电路、NOR电路、AND电路和OR电路。图17中示出的逻辑电路的信号输入和输出被设置如下:
STP[1:0]是表示当前步骤(图16)的信号,在当前步骤是步骤1的时候,STP[1:0]是01。在当前步骤是步骤2的时候,STP[1:0]是10。在当前步骤是步骤3时候,STP[1:0]是11。STP1对应于较高的比特、STP0对应于较低的比特。例如,在当前步骤是步骤1的时候,STP[1:0]是01,因此,STP1是0而STP0是1。
TGH和TGL分别对应于目标数据(图16中的“目标”)的高位和低位。例如,当目标数据是01的时候,TGH是0而TGL是1。
RDH和RDL分别对应于当前数据(图16中的“当前”)的高位和低位。例如,在当前数据是01的时候,RDH是0而RDL是1。
PROG代表输出数据,对应于图16中的“写入”。当PROG是L的时候,没有数据写入,而当PROG是H的时候,数据被写入。
图14中示出的MLC闪存400和图15中示出的MLC闪存500彼此之间的不同主要有下面四点:
(1)在MLC闪存400中,由WSM电路430执行用于确定是否向存储单元写入数据的操作,但是在MLC闪存500中,是由MLC逻辑电路580执行的;
(2)在MLC闪存400中,由WSM电路430控制用来选择数据将被写入的存储单元的地址总线,而在MLC闪存500中,是由MLC逻辑电路580控制的;
(3)MLC闪存500拥有用于在页缓冲电路520中重写数据的反馈功能,而MLC闪存400没有这一功能;
(4)MLC闪存500拥有用于选择需要的数据的页模式读取功能,而MLC闪存400没有这一功能。
下面将对不同点(1)进行详细地说明:在前面的参考图16和17的描述中,用于确定是否向存储单元写入数据的操作需要一个复杂的逻辑和用于执行这些逻辑的逻辑操作电路。即使在包含多用途操作电路的MLC闪存400的WSM电路430中,一般操作的综合(例如AND、OR、NOR和NAND)也需要非常长的处理时间来确定是否写入数据。在这种情况下,MLC闪存500通过专门为这一目的提供的MLC逻辑电路580来执行用于确定的操作,并且使WSM电路530处理MLC逻辑电路580操作的结果。
下面将对不同点(2)进行详细地说明:为了写入存储在对应于多个地址的多个存储单元中的数据,存储阵列中的内部地址需要由控制总线和地址总线进行控制,这种控制是通过例如增加起始地址的方式执行的。为了使用WSM电路430执行对地址总线的这种控制(例如为了增加地址),MLC闪存400要求WSM电路430应该包含附加的电路和控制附加电路的方法。MLC闪存500通过专门为这一目的提供的地址生成电路570执行这种控制。
下面将对不同点(3)进行详细地说明:在MLC闪存500中,页缓冲电路520拥有上面提到的反馈功能,这就阻止了在用于校验的数据读取操作中由于存储单元阈值电压的改变而导致的过程序状态。因为上面所述的阵列噪音,即使曾经被确定为已经到达了作为数据写入操作结果的参考阈值电压的存储单元也可能被确定为还没有到达随后的用于校验的数据读取操作的参考阈值电压。为了数据被再次写入曾经被确定为已经到达了参考阈值电压的存储单元,存储在页缓冲电路520中的数据被重写。
根据图16所清晰阐述的内容,在MLC闪存500中,没有数据被写入目标数据是“11”的存储单元。
因此,举例来说,与被确定为已经完全进行了数据写入处理的存储单元相对应的页缓冲电路520中的数据被重写为“11”,由于这一重写,没有写入数据脉冲被附加地应用到在随后的用于校验的数据写入操作中的存储单元,这样可以减少由阵列噪音引起的过程序状态的生成。
如上所述,MLC闪存500拥有更新存储在页缓冲电路520中的数据的功能,由MLC逻辑电路580生成被更新的数据(反馈数据)。
被更新的数据由MLC逻辑电路580生成是因为用于生成被更新数据的信号与用于确定是否写入数据的信号是相同的。被更新的数据可能由不同的电路生成。
下面将对不同点(4)进行详细地说明:通常在一个MLC闪存中,数据读取操作是相当慢的。为了防止整个操作变得很慢,提供了一个用于向外部电路输出数据的数据输出部分,具有作为诸如页模式读取功能、同步猝发功能或者类似功能的附加功能。有了这种规定,一次从中读取了数据的存储单元的数目大于按照通常的规定从中读取了数据的存储单元的数目。使用用于控制数据写入操作的页模式读取功能、同步猝发功能,增加了数据写入操作的速度。
图18示出了一个真值表,它举例示出了用于四值闪存的数据写入操作中的MLC逻辑电路580的操作,尤其是使用反馈功能生成被更新数据的操作。图19举例示出了用于实现图18中所示逻辑的逻辑电路。
在图18中示出的逻辑结构中,在必要的时候,存储在页缓冲电路520中的数据被重写为“11”,其代表没有数据被写入的状态。
在向存储单元中写入数据的操作已经完成的情况下,即在步骤1中,目标数据是“10”而对应于“10”或者更多的数据已经被写入;在步骤2中,目标数据是“01”而对应于“01”或者更多的数据已经被写入;或者在步骤3中,目标数据是“00”而对应于“00”的数据已经被写入的情况下,存储在页缓冲电路520中的数据可能被重写为“11”。
这种状态的存储单元中已经到达目标阈值电压,而且不必进行附加的数据写入。
因此,在重新将存储于页缓冲电路520中的数据写为“11”的时候不会出现问题,这样的重写减少了产生过程序状态的危险。
图19中示出的逻辑电路包含NAND电路、NOR电路、AND电路和OR电路。除了从逻辑电路中输出的反馈信号FBK1和FBK0以外,图19中示出的对逻辑电路的信号输入和输出是按照前面描述的内容参考图16和17设置的。
在已经执行了将数据重写为“11”的条件下,数据重写(更新)以后的FBK[1:0]是“11”。在其他的条件下,FBK[1:0]不发生改变。FBK1对应于高位而FBK0对应于低位。
下面将通过参考图20和21对由MLC闪存400(图14)的WSM电路430和由MLC闪存500(图15)的WSM电路530执行的数据写入操作进行描述。
首先将参考图20对由MLC闪存400(图14)的WSM电路430执行的数据写入操作进行描述。
在MLC闪存400中,用于数据写入的元件非常简单,这样WSM电路430在用于数据写入的控制操作中的作用就相当重要。
图20是一个流程图,它示出了对应一个字的数据写入操作。在图20中仅仅示出了将由MLC闪存500和依照本发明的MLC闪存执行的操作进行比较所需要的处理。实际上,WSM电路430还执行了其他的处理,操作的一部分是不需要在图20中示出的。
在步骤S4000中,WSM电路430处理将被写入数据的存储单元的地址,依照最简单的过程,在将被写入数据的存储单元中第一个存储单元的地址被设置为操作的第一个循环中的起始地址,而且随后该地址被增加。
在步骤S4001中,WSM电路430向存储阵列460输出作为内部地址的结果地址。随后,存储阵列460被设置为数据可以被读取(步骤S4002)的状态。在存储阵列460中,由内部地址指示的存储单元被激活,而且从那里读出数据(步骤S4003)。
当需要一个用于读取存储于页缓冲电路420的数据的特定控制时候,执行这种控制。在图20中的例子里,假定页缓冲电路420为了简化的目的而输出对应于内部地址的数据。这些也同样应用于图21(下部)。
在步骤S4004中,WSM电路430根据从页缓冲电路420读取的数据的结果和从存储单元读取的数据的结果确定是否通过执行一个基于如图16中所示的真值表的操作来写入数据。
尽管这一操作相当的复杂,但是由于MLC闪存400不包括专门针对这一目的而提供的电路(例如在MLC闪存500中的地址生成电路570),所以它必须执行这一操作。
在步骤S4005中,WSM电路430向写入电路450输出基于在步骤S4004中确定的结果而生成的将被写入的数据。存储阵列460被置于数据可以被写入(步骤S4006)的状态,而且写入控制450被控制向存储单元写入数据(步骤S4007)。
这样,数据被写入存储阵列460中的存储单元。按照需要被写入的数据的数量通过重复这种处理写入所有的数据。
下面将通过参考图21描述MLC闪存的WDM电路530执行的数据写入操作。图21是一个流程图,它示出了对应于一个页的数据写入操作。
在步骤S5000中,WSM电路530将一个内部地址设置为页地址的起始地址。
在步骤S5001中,WSM电路530将存储阵列560置于数据可以被读取的状态。在步骤S5002中,由于是页模式读取,可以同时读取对应于页中的所有地址的数据。因此,在这一步骤以后,从MUX电路545输出与在所有的地址中由地址生成电路570指示的地址相对应的数据。
在步骤S5003中,WSM电路530将存储阵列560置于数据可以被写入的状态。随后读取由MLC逻辑电路580生成的将被写入的数据(步骤S5004),并输出到写入电路550(步骤S5005)。这样,数据被写入到存储阵列560的存储单元中(步骤S5006),在步骤S5007中确定了是否对应于一个被写入的页的所有数据都已经被写入。当所有的数据都已经被写入的时候,地址被更新(步骤S5008)。当不需要对同一页进行重复的数据读取操作的时候,在地址更新以后,流程返回到步骤S5004,而且重复进行数据写入操作。
这样,对应于一页的数据被写入存储阵列560中的存储单元,按照需要被写入的数据的数量通过重复地进行这一处理来写入所有的数据。
比较图20和21中的流程图,MLC闪存500不需要确定是否由WSM电路530写入数据。因此,操作就变得非常简单。
在存储阵列560中,在数据可以被读取的状态和数据可以被写入的状态之间切换的次数比在存储阵列460中要小。因此,可以减少诸如切换应用于MLC闪存500的存储阵列560的电压之类相当耗时的处理。这样,可以增加数据写入操作的速度。
涉及地址的处理主要是简单地增加地址,因此可以通过专门为这一目的提供的电路(例如地址生成电路570)来完成。
如上所述,与图14中所示的MLC闪存400相比,图15所示的MLC闪存500允许增加数据写入操作的速度,而且WSM电路530的结构被简化了。
根据上面的描述,传统的MLC闪存允许增加数据写入操作的速度,而且在某种程度上简化了WSM电路的结构。
然而,在传统的MLC闪存中的数据写入操作需要生成内部地址和对需要的数据的输入/输出控制。因此,WSM电路仍旧非常大并且非常复杂,这样,就不能显著地提高数据写入操作的速度。并没有完全消除产生阵列噪音的危险。
具体实施方式
下面将参考附图以示例的方式详细地对本发明进行描述。
图1是一个表明MIC闪存100是符合本发明的例子的半导体存储装置的方框图。图1示出了包含数据写入操作的MLC闪存100的单元。
MLC闪存100包含数据寄存器电路190。其余的结构基本上与图15所示的MLC闪存500的结构相同;MLC闪存100包含存储阵列160,它基本上与图13中所示的存储阵列相同。存储阵列160包含多个存储单元,每个存储单元拥有存储对应于至少1比特的数据的能力。
在MLC闪存100中,页缓冲电路120拥有页缓冲写入功能,而且读取电路(读出放大器)140拥有页模式读取功能。
下面将对MLC闪存100的结构和数据写入操作进行描述。
MLC闪存100包含用户接口电路(后文中称为“UI电路”)110、控制总线101、地址总线102和数据总线103。通过连接到UI电路110的控制总线101、地址总线102和数据总线103从外部对MLC闪存100进行操作。
UI电路110通过控制总线101、地址总线102和数据总线103接收外部信号,并分析信号以控制在MLC闪存100中的操作。UI电路110通过控制总线111、地址总线112和数据总线113连接到页缓冲电路120,而且通过控制总线114连接到写入状态机电路(后文称为“WSM电路”)130。
页缓冲电路120暂时地向存储单元存储将被写入的数据,而且UI电路110通过控制总线111、地址总线112和数据总线113控制相关的数据写入。
WSM电路130作为数据写入控制部分用来控制数据向多个存储单元的写入。例如,WSM电路130在接收例如向存储单元重写数据的指示的时候控制存储阵列160的操作。WSM电路130通过控制总线114从UI电路110接收控制信号的指令,并通过信号131向UI电路110通知它的状态。
WSM电路130通过控制总线133、134、135、136和137分别连接到MLC逻辑电路180、读取电路(读出放大器)140、写入电路(程序电路)150、存储阵列160和数据寄存器电路190。读取电路140、写入电路150和存储阵列160通过读取总线161彼此互相连接。
地址生成电路(地址控制器)170通过控制总线138和地址总线139从WSM电路130分别接收控制信号和地址信号,以生成内部地址。地址生成电路170向地址总线171输出数据将被写入的起始地址。随后地址生成电路170通过从控制总线138接收的控制时钟信号CLK(地址控制信号)对地址进行增加,并将被增加的地址输出到地址总线171。地址信号代表了数据将被写入的存储单元的地址。
读取电路140拥有页模式读取功能。读取电路140通过控制总线134从WSM电路130接收控制信号,这样就从存储阵列160的存储单元中读取了数据。被读出数据的存储单元是基于通过控制总线136由WSM电路130输出的控制信号和通过地址总线171由地址生成电路170输出的地址信号而选择的。被选择的存储单元由WSM电路130激活。在存储阵列160中,存储单元、参考单元、虚设单元以及类似的单元被排列在一个阵列中。
选择的存储单元的漏极被连接到读取总线161。读取电路140通过读取总线161确定每个被选择的存储单元的阈值电压(代表了数据存储状态),随后通过数据总线141向数据复用电路(后文称为“MUX电路”)145输出从被选择的存储单元读出的数据。
MUX电路145通过地址总线171从地址生成电路170接收地址信号。基于这一地址信号,MUX电路145从接收自读取电路140的数据中选择(处理)将被输出的数据,并通过数据总线146向MLC逻辑电路180输出被选择的数据。
MLC逻辑电路180(确定部分)通过控制总线133接收从WSM电路130输出的控制信号、通过数据总线121接收从页缓冲电路120输出的目标数据、通过数据总线146接收由MUX电路145选择和输出的数据。MLC逻辑电路180基于每个被选择的存储单元当前的阈值电压确定是否向每个被选择的存储单元写入数据。作为确定的结果,写入数据脉冲PRG通过数据总线181被输出到数据寄存器电路190。
WSM电路130 由控制总线137输出的(发出的)写入控制信号WRT向数据寄存器电路190发出指令,以便锁存写入脉冲PRG。此时,经过控制总线138从WSM电路130输出的用于控制地址生成电路170的控制时钟信号CLK也被输入到数据寄存器电路190。基于控制时钟信号CLK,数据寄存器电路190,把从MLC逻辑电路180接收的写入数据脉冲PRG存储在,经过地址总线171从地址生成电路170输出的地址信号ADD指示的数据寄存器电路190中的寄存器单元中。
数据寄存器电路190通过数据总线191向写入电路150输出包含存储在寄存器单元中的写入数据脉冲PRG的内容的数据信号PLS。
WSM电路130通过控制总线136向存储阵列160输出控制信号,从而允许存储阵列160接收数据。随后,WSM电路130通过控制总线135向写入电路150输出控制信号,从而向存储阵列160应用写入数据脉冲。写入电路150随后以通过读取总线161向连接到每一个被选择的存储单元的漏极的位线应用高电平信号的方式,向被选择的存储单元写入对应于写入数据脉冲的数据。
图1中示出的MLC闪存100的页缓冲电路120拥有下面所述的反馈功能。当通过控制总线132从WSM电路130输出的控制信号指示页缓冲电路120执行反馈的时候,页缓冲电路120可以按照通过控制总线138从WSM电路130输出的控制时钟信号CLK,通过地址总线171将由从地址生成电路170输出的地址信号指示的数据更新为由MLC逻辑电路180生成的反馈数据。反馈数据通过数据总线182从MLC逻辑电路180输出到页缓冲电路120。在不需要向地址信号指示的存储单元写入数据的时候,页缓冲电路120可以将被存储的数据更新为指定的值,以阻止数据被写入存储单元。
数据寄存器电路190按照控制时钟信号CLK在由地址信号ADD指示的寄存器单元中存储写入数据脉冲PRG。随后,包含被存储的写入数据脉冲PRG内容的数据PLS被直接输出到写入电路150。
如上所述,可以在MLC逻辑电路180、数据寄存器电路190和写入电路150之间执行用于数据写入操作的数据处理,而不涉及WSM电路130。这样,可以简化WSM电路130的结构,而且可以缩短数据处理的时间。
图2举例示出了数据寄存器电路190的结构,在这个例子中,四个存储单元被分配了一个地址,而且四个地址对应一页。
如图2所示,数据寄存器电路190包含寄存器控制电路192、寄存器单元Reg和用于反相并输出数据的反相器193。
寄存器控制电路192接收从地址生成电路170输出的地址信号ADD、从WSM电路130输出的写入控制信号WRT和同样从WSM电路130输出的时钟信号CLK,并向对应的寄存器单元Reg输出写入控制信号WR0到WR3和读取控制信号RD0到RD3。每个寄存器单元Reg由例如触发器电路这样的锁存电路组成。
每个由对应的写入控制信号WR0到WR3激活的寄存器单元Reg通过数据总线181接收由MLC逻辑电路180输出的写入数据脉冲PRG0到PRG3中相应的一个,并锁存接收的写入数据脉冲。
每个寄存器单元Reg还被读取控制信号RD0到RD3中相应的一个所激活,并反相和输出被锁存的写入数据脉冲(对应于写入数据脉冲PRG0到PRG3中的一个)。每个反相器193进一步反相接收的写入数据脉冲(对应于写入数据脉冲PRG0到PRG3中的一个),并将被反相的写入数据脉冲作为数据信号PLS0到PLS3中的一个向数据总线191(图1)输出。数据信号PLS0到PLS3分别对应于输入到数据寄存器电路190的写入数据脉冲PRG0到PRG3。
如上所述,寄存器控制电路192按照输入到数据寄存器电路190的三个控制信号生成写入控制信号WR0到WR3和读取控制信号RD0到RD3,这三个控制信号为地址信号ADD、写入控制信号WRT和时钟控制信号CLK。寄存器控制电路192向每个寄存器单元提供这些信号,每个寄存器单元Reg按照写入控制信号WR0到WR3和读取控制信号RD0到RD3进行操作。输入到数据寄存器电路190的写入控制信号WR0到WR3按照对每个寄存器单元Reg和每个反相器193的指示进行转换,以便从反相器193输出数据信号PLS0到PLS3。
图3是一个电路图,它举例示出了图2中示出的寄存器单元Reg的结构。
图3中示出的寄存器单元Reg是一个包含NAND电路和反相器的锁存电路。按照读取控制信号RD和写入控制信号WR对作为输入信号的写入数据脉冲PRG进行反相,反相后的数据被作为数据信号PLS#输出。
读取控制信号RD是一个可以使能数据输出的读取激活信号。这样,通过反相被锁存的写入数据脉冲PRG而获得的信号被作为数据信号PLS#输出。数据信号PLS#对应于图2中的寄存器单元Reg输出的每一个数据信号PLS0到PLS3。
写入控制信号WR是一个可以使能数据写入的写入激活信号。这样,由数据脉冲PRG指示的数据被触发器电路锁存。
图4是一个电路图,它举例示出了图2所示的寄存器控制电路192的结构。
寄存器控制电路192包括反相器和AND电路。寄存器控制电路192对输入的2比特地址信号ADD0和ADD1进行解码,并输出读取控制信号RD0到RD3中的一个。
当写入控制电路WRT被使能的时候,寄存器控制电路192按照控制时钟信号CLK向每个寄存器单元Reg输出写入控制信号WR0到WR3中的一个。
图5是一个时序图,它举例示出了MLC闪存100(图1)的数据写入操作的定时。
图5的时序图示出了数据写入操作的过程,但是并没有正确示出每个操作步骤需要的实际时间区间。在这个例子中,一个页包含两个地址,页缓冲电路120和数据寄存器电路190可以存储对应于四个或者更多地址的数据。
在t0时刻,输出到地址总线171的地址信号(地址)被从WSM电路130向控制总线139输出的初始化信号(地址初始化)设置为将被写入数据的第一个存储单元的地址。在这种情况下,地址信号被设置为地址信号ADD0。
在t1时刻,基于由WSM电路130向控制总线134输出的检测使能信号,从由两个地址指示的存储单元中读取对应于一个页的数据。
存储在由地址信号ADD0指示的存储阵列160的存储单元中的数据RDAT0和在同一页中存储在由地址信号ADD1指示的存储单元中的数据RDAT1被读取电路140读取,并输出到数据总线141。
MUX电路145通过数据总线141接收从读取电路140中输出的两个地址的数据,并通过数据总线146向MLC逻辑电路180输出对应于地址信号ADD0的数据。
页缓冲电路120通过数据总线121向MLC逻辑电路180输出将被写入由地址信号ADD0指示的存储单元的数据。
MLC逻辑电路180接收存储在页缓冲电路120中的被读取数据RDAT0和数据PB0,确定是否写入数据,随后通过数据总线181向数据寄存器电路190输出作为确定的结果的写入数据脉冲PRG0。
MLC逻辑电路180还通过数据总线182向页缓冲电路120输出反馈数据FBK0。
接下来在t2时刻,用于控制地址生成电路170的地址控制信号(地址控制)被输出。
在图5中,地址在地址控制信号的下降沿被更新,在与之相邻的前一个地址控制信号为HIGH期间,数据寄存器电路190按照数据寄存器控制信号锁存写入数据脉冲PRG。按照反馈信号执行存储在页缓冲电路120中数据的反馈。当地址控制信号变为HIGH时候,数据寄存器电路190锁存对应于地址信号ADD0的写入数据脉冲PRG0(数据寄存器0)。
对应于地址信号ADD0的反馈信号FBK0被页缓冲电路120(页缓冲器0)锁存。此时,页缓冲电路120可能会按照反馈信号FBK0将存储于其中的数据PB0更新为与数据RDAT0有相同内容的数据。
在t3时刻,在地址控制信号的下降沿,地址信号ADD0被改变为代表了同一页中另一个地址的地址信号ADD1。根据这一情况,MUX电路145通过数据总线146向MLC逻辑电路180输出从地址信号ADD1指示的存储单元中读取的数据RDAT1。
页缓冲电路120向地址信号ADD1指示的存储单元输出将被写入的数据PB1。MLC逻辑电路180接收数据RDAT1和数据PB1,输出一个新的写入数据脉冲PRG1和新的反馈数据FBK1。当地址信号为地址信号ADD1的时候,MLC闪存100的操作基本上与地址信号为地址信号ADD0的时候相同。
当在不同页中的地址变为处理的目标的时候,就需要进行数据读取操作,在这种情况下,还需要使用与上面所述基本相同的方式执行地址更新、存储位于数据寄存器电路190中的数据,并反馈存储于页缓冲电路120中的数据。
图6是一个流程图,它示出了在MLC闪存100(图1)的数据写入操作中由WSM电路130执行的控制操作。
图6中的步骤S1000到S1004分别对应于参考图5在前面描述的控制操作。
在图6中仅仅示出了在与传统技术执行的操作相比较的时候需要的处理。实际上,WSM电路130还执行了其他的处理,但处理的顺序可能与图6所示的不同。
在步骤S1000中,WSM电路130将内部地址设置为页地址的起始地址,在步骤S1001中,WSM电路130将存储阵列160置于数据可以被读取的状态。
在步骤S1002中,从存储阵列160的存储单元中读出数据,由于是页模式读取,可以同时读出对应于页中所有地址的数据。
在步骤S1003中,内部地址被更新,数据被存储到数据寄存器电路190中,而且依照内部地址的更新对存储在页缓冲电路120中的数据执行了反馈。
内部地址的更新依照一页中包含的地址的数量重复地执行。在步骤S1004中,对所有的将被写入数据的页同时执行从存储单元中读取数据和更新地址。如果在步骤S1004中对所有的将被写入数据的页执行从存储单元中读取数据和更新地址不是同时的,在步骤S1002和步骤S1003中的处理将在下一页执行。一旦对步骤S1004中的所有页都执行了从存储单元中读取数据和更新地址(也就是完成了数据写入的准备的时候),将执行步骤S1005的处理。
在完成了数据写入的准备的时候,把存储阵列160置于数据可以被写入的状态(步骤S1005),随后数据被写入存储阵列160(步骤S1006)。
如上所述,依照本发明的MLC闪存100允许WSM电路130执行比传统的数据写入操作控制简单的多的控制。
MLC闪存100中的WSM电路130需要控制的信号数量较少,因此数据写入操作的速度也很容易提高,电路的规模也减小了。
在上面的例子中,依照本发明的MLC闪存100拥有页模式读取功能。即使没有页模式读取功能,在内部地址171每次改变的时候通过执行数据读取操作也可以提供基本相同的效果。
按照地址信号来控制在数据寄存器电路190中的写入数据脉冲的锁存和存储在页缓冲电路120中的数据的反馈。这里并不需要按照地址信号对两个操作都进行控制,通过按照地址信号对两个操作中的任何一个进行控制就可以提供基本相同的效果。
即使在仅有一个操作的情况下,即由于数据寄存器电路190或者页缓冲电路120的特定结构,或者由于数据总线或者控制总线的特定布线方式的缘故,可以对锁存或者反馈进行控制,基本上可以提供相同的效果。
图7是一个电路图,它举例示出了可以包含在图2中示出的数据寄存器电路190中的寄存器单元Reg的另一结构。在图7中,寄存器单元Reg是包含NANK电路和反相器的锁存电路。图7中的电路除了从WSM电路130接收复位信号RETB以外,与图3中的电路完全相同。
图7中的寄存器单元Reg(锁存电路)的结构抑制了存储单元的过程序状态。这种状态是由例如用于校验的数据读取操作导致的阵列噪音这样的存储单元阈值电压的显著改变而引起的。
图7中由WSM电路130控制的寄存器单元Reg锁存了将被写入的数据。寄存器单元Reg拥有这样一种操作模式,可以复位但是不能设置要写入的锁存数据。
在这种模式下,作为控制信号的复位信号RSTB被设置为LOW。
在这种情况下,由触发器电路组成的锁存电路可以复位数据,但是不可以设置数据。当复位信号RSTB为HIGH的时候,由触发器电路组成的锁存电路既可以设置数据又可以复位数据,而且在操作方式上与图3所示的锁存电路基本相同。
当数据被第一次存储到数据寄存器电路190中的时候,复位信号RSTB被设置为HIGH,在此之后复位信号RSTB被设置为LOW,这样为了阻止数据被写入不需要进行数据写入的存储单元,固定存储在对应寄存器单元Reg中的数据,以便具有一个确定的值。图7中的锁存电路的操作除了向数据寄存器电路190中存储数据的操作以外与图3中的锁存电路的操作完全相同。
如上所述,当数据被第一次存储到数据寄存器电路190中的时候,复位信号RSTB被设置为HIGH。此时,设置与数据将被写入的存储单元相对应的寄存器单元Reg。复位与数据将不被写入的存储单元相对应的寄存器单元Reg。
因此当复位信号RSTB为HIGH的时候,图7中包含锁存电路的数据寄存器电路190可以设置成是否一个存储单元一个存储单元地进行数据写入,就像图3中包含锁存电路的数据寄存器电路190一样。
在图7的包含锁存电路的数据寄存器电路190中,复位信号RSTB被设置为LOW,使得在同一个写入循环中没有数据被聚集在数据已经被写入的寄存器单元Reg中。
在图7的包含锁存电路的数据寄存器电路190中,设置与在数据读取操作的第一个循环中被确定为没有到达参考阈值电压的存储单元相对应的寄存器单元Reg。当所有曾经被设置的寄存器单元Reg都被复位的时候,就可以确定在一个写入循环中的操作已经完成。
曾经被复位的寄存器单元Reg被再次设置的现象是由阵列噪音的影响和电源电压的改变而引起的读出放大器检测结果的改变而造成的。这就导致在MLC闪存中的过程序状态,这样是不可取的。
在图7的包含锁存电路的数据寄存器电路190除了数据写入操作的第一个循环以外,不会对寄存器单元Reg中的数据进行设置。这样,消除了由阵列噪音或者类似现象造成的不正确的写入操作,同时也防止了存储单元的过程序状态。
存储在MLC闪存100的页缓冲电路120中的数据的反馈功能被用来减少在用于校验的数据读取操作中存储单元阈值电压的显著改变。当使用了在图7的包含锁存电路的数据寄存器电路190的时候,可以去掉反馈功能。
MLC闪存100(图1)可以通过与在二值闪存中在数据寄存器电路190中提供如图3或者图7中所示的锁存电路并改变部分电路(例如MLC逻辑电路)的方式二值对数据进行处理。
通常在闪存中,向存储单元进行数据写入操作是在单方向上执行的。在通常的二值闪存中,数据写入仅仅从较低的阈值电压向较高的阈值电压执行,例如数据写入仅仅从数据“1”到数据“0”执行,例如在反方向上的数据重写需要一块一块地进行数据擦除。
对于重写存储在存储单元中的数据,二值闪存可以将数据“0”重写为数据“1”。因此,写入以后的数据是写入之前数据和指示写入的数据的AND(逻辑和)。
图8举例示出了一个真值表,它示出了在数据写入操作中MLC闪存和二值闪存的数据之间的兼容性。
如图8所示,MLC闪存可以将数据“10”重写为数据“01”,这样可以较灵活地进行数据重写。为了允许用户使用和二值闪存同样的方式处理MLC闪存,我们期望写入以后的数据是写入之前的数据和指示写入的数据的AND(逻辑和),就像在二值闪存中一样。
如上所述,依照本发明的MLC闪存可以将存储在页缓冲电路中的数据更新为存储在存储单元中的数据。
使用这一功能,很容易进行数据重写,从而使数据逻辑的重写与在二值闪存中相似。
前面提到的图19举例示出了用于生成反馈数据的逻辑电路。除了在图19中示出的逻辑电路结构之外,图9还示出了用来生成用于数据重写逻辑的逻辑电路。
图9中示出的逻辑电路包含NAND电路、NOR电路、AND电路、OR电路和反相器。输出信号FBK1和FBK0、输入信号和类似的信号与在图19中示出的逻辑电路相同。
为了在图9中示出的逻辑电路中生成用于数据重写的逻辑,设置STP1=STP0=L(L:低电平或者0),以致生成用于数据重写逻辑的步骤就和用于数据写入的其他步骤区别开了。
图9中示出的逻辑电路与图19中示出的逻辑电路的不同之处在于:前者可以通过在最终阶段提供的AND电路(与门)将输出数据FBK[1:0]修正为低电平。
因此,在图9中示出的逻辑电路中,当STP1=STP0=L,而且从当前存储单元读取的数据表现为低电平的时候,可以获得输出信号。
通过参考图8到9进行的描述,图1中示出的用于MLC闪存100的数据写入控制的电路配置也可以被用来重写数据。
依照本发明的半导体存储装置,数据写入控制部分输出第一控制信号,以指示数据寄存器部分存储第一写入信号。数据寄存器部分按照由从数据写入控制部分输出的第二控制信号表示的定时在由地址信号指定的特定寄存器单元中存储第一写入信号。数据寄存器部分直接向数据写入部分输出基于被存储的第一写入信号生成的第二写入信号。由于这样的结构,在执行MLC逻辑电路、数据寄存器部分和数据写入部分之间用于数据写入操作的数据处理时,可以不涉及WSM电路(数据写入控制部分),这样可以简化WSM电路的结构,而且可以缩短数据处理的时间。
各种各样的其他的修改是很显然的,而且在本领域有熟练技能的人士可以很容易地进行这些修改,这都不会超出本发明的范围和本质。因此这里并非要将后附的权利要求的范围限制在这里进行的描述中,而是可以更广泛推广的权利要求范围。