半导体存储装置的制作方法

文档序号:6761178阅读:156来源:国知局
专利名称:半导体存储装置的制作方法
技术领域
本发明涉及可存储例如2位以上的数据的非易失性半导体存储装置。
背景技术
例如,专利文献1提出了一种可存储多值数据的非易失性半导体存储装置,所述装置是使用EEPROM的NAND型闪速存储器。
NAND型闪速存储器同时选择配置成矩阵状的多个单元中在行方向上并列的所有单元或半数单元。对所选择的多个单元一并进行数据的写入或读出。即,所选择的多个单元分别与对应的位线连接,保持写入和读出用数据的锁存电路与各位线连接。利用该锁存电路执行数据的写入或读出。
专利文献1特开2000-195280号公报但是,这种非易失性半导体存储装置正在显著地细微化。因此,在行方向和列方向上邻接单元的相互间隔非常狭小。随着邻接单元的相互间隔变短,邻接单元相互的浮栅间的电容(FG-FG间电容)变大。因此,就会出现这样的问题由于FG-FG间电容,先写入的单元的阈值电压Vth随着后写入的邻接单元的数据变动。具体地,在一个单元中存储多个数据(k位)的多值存储器具有多个阈值电压。因此,需要将每个数据的阈值电压的分布控制得非常窄,阈值电压根据邻接单元的数据变动的问题就变得更显著了。

发明内容
为了解决上述问题,本发明的目的是提供一种可防止由于邻接单元的数据而使阈值电压变动的非易失性半导体存储装置。
为了解决上述问题,本发明的半导体存储装置具有存储单元阵列,其中存储n值(n是2以上的自然数)的多个存储单元被配置成矩阵状;写入电路,在存储上述存储单元阵列的j值(j<n)的数据的第一存储单元中,在存储下一个至少1值的数据之前,将j值以下的数据写入与上述第一存储单元邻接的至少一个存储单元中。
本发明的半导体存储装置具有存储单元阵列,包括至少一个第一存储单元,用于存储n值(n是2以上的自然数)的数据,并配置成矩阵状;以及和上述第一存储单元同时选择的至少一个第二存储单元;写入电路,在存储上述存储单元阵列的j值(j<n)的数据的第一存储单元中,在写入下一个至少1值的数据时,写入将上述第二存储单元的逻辑电平从第一逻辑电平变为第二逻辑电平的数据。
此外,本发明的半导体存储装置包括存储单元阵列,具有至少一个第一存储单元,存储k(k是2以上的自然数)位的数据,并配置成矩阵状;以及和上述第一存储单元同时选择的至少一个第二存储单元;写入电路,在存储上述存储单元阵列的i位(i<k)的数据的第一存储单元中,在写入下一个至少1位的数据时,写入将上述第二存储单元的逻辑电平从第一逻辑电平变为第二逻辑电平的数据。
本发明的半导体存储装置具有存储单元,存储k(k是2以上的自然数)位;第一存储电路,存储从外部输入的数据;第二存储电路,存储从上述存储单元读出的数据或从外部输入的数据;控制电路,用于在写入操作时,根据上述存储单元中存储的数据保持或变更上述第一存储电路的数据,保持或变更上述第二存储电路的数据,在写入操作的过程中,在写入操作中不需要上述第一存储电路存储的数据时,从外部将下一个写入的数据输入到上述第一存储电路中。
此外,本发明的半导体存储装置包括存储单元阵列,具有至少一个第一存储单元,配置成矩阵状,且存储k(k是2以上的自然数)位的数据;以及和上述第一存储单元同时选择的至少一个第二存储单元;写入电路,在存储上述存储单元阵列的i位(i<k)的数据的第一存储单元中,在存储下一个至少1位的数据之前,在邻接上述第一存储单元的至少一个存储单元中写入i位以下的数据,当在上述第一存储单元中写入1位的数据时,在上述第二存储单元中写入数据;读出电路,当输出从上述第一存储单元读出的数据时,根据上述第二存储单元中存储的数据,控制输出数据的逻辑电平。
本发明的半导体存储装置的特征在于,具有通过多个阈值电压存储多个数据的存储元件以及第一数据存储电路和第二数据存储电路,所述第一数据存储电路和第二数据存储电路与上述位线连接,根据从外部提供的数据和从上述存储元件中读出的数据,存储第一或第二逻辑电平数据。在上述第一数据存储电路的数据为第一逻辑电平时,进行使存储单元的阈值电压变化的第一写入操作;在上述第一数据存储电路的数据为第二逻辑电平的情况下,上述第二数据存储电路的数据为第一逻辑电平时,进行使阈值电压变化的第二写入操作;在上述第一数据存储电路的数据为第二逻辑电平的情况下,上述第二数据存储电路的数据为第二逻辑电平时,不改变阈值电压。在第一验证操作中,上述第一数据存储电路的数据为第一逻辑电平,上述第二数据存储电路的数据为第一逻辑电平,上述存储单元的阈值电压达到第一验证电位时,使上述第一数据存储电路的数据变化为第二逻辑电平,当上述存储单元的阈值电压未达到上述第一验证电位时,不改变上述第一数据存储电路的数据,上述第一数据存储电路的数据为第一逻辑电平,上述第二数据存储电路的数据为第二逻辑电平时,不改变上述第一数据存储电路的数据,上述第一数据存储电路的数据为第二逻辑电平时,不改变上述第一数据存储电路的数据而使之保持在第二逻辑电平。在第二验证操作中,上述第二数据存储电路的数据为第一逻辑电平、上述存储单元的阈值电压达到第二验证电位的阈值电压时,使上述第二数据存储电路的数据变化为第二逻辑电平,在上述存储单元的阈值电压未达到上述第二验证电位的情况下,上述第二数据存储电路的数据不变化,原样保持在第一逻辑电平,上述第一数据存储电路的数据变为第二逻辑电平,进行写入动作直至上述第二数据存储电路的数据变成第二逻辑电平。


图1示出了根据本发明第1实施例的存储单元的数据和存储单元的阈值电压的关系;图2是本发明的非易失性半导体存储装置的概要结构图;图3是图2所示的存储单元阵列和位线控制电路的结构电路图;图4(a)(b)是存储单元和选择晶体管的截面图;图5是存储单元阵列的一个NAND单元的截面图;图6是图3所示的一例数据存储电路的电路图;图7示出了对NAND单元的写入顺序;图8示出了第一页的编程操作的方框图;图9示出了第二页的编程操作的方框图;图10示出了各数据高速缓存和存储单元的数据的关系;图11示出了数据高速缓存的设定顺序;图12示出了数据高速缓存的设定顺序;图13示出了第一页的读出操作;图14示出了第二页的读出操作;图15示出了第二页的读出操作的变形例;图16示出了根据本发明第2实施例的第一页的读出操作;图17示出了根据本发明第3实施例的编程操作;图18具体示出了图17的第4次写入操作;图19具体示出了图17的第5次写入操作;图20具体示出了图17的第6次写入操作;图21示出了根据本发明第4实施例的写入操作;图22示出了图21的一部分操作;图23示出了现有通过写入(パスラィ卜)方式的写入顺序;图24示出了适用本发明第5实施例的数据“1”的写入操作;图25示出了根据本发明第5实施例的各数据高速缓存和存储单元的数据的关系;图26示出了根据本发明的第6实施例的第二页的写入顺序;图27示出了根据本发明第6实施例的各数据高速缓存和存储单元的数据的关系;图28示出了根据本发明的第7实施例的第二页的写入顺序;图29示出了根据本发明第7实施例的各数据高速缓存和存储单元的数据的关系;图30示出了根据本发明第7实施例的各数据高速缓存和存储单元的数据的关系;图31示出了根据本发明第7实施例的各数据高速缓存和存储单元的数据的关系;图32示出了根据本发明第7实施例的各数据高速缓存和存储单元的数据的关系;图33示出了根据本发明第7实施例的各数据高速缓存和存储单元的数据的关系;图34示出了根据本发明第8实施例的存储单元阵列和位线控制电路的电路图;图35示出了根据本发明第8实施例的存储单元的数据和存储单元的阈值电压的关系;图36示出了根据本发明第8实施例的存储单元的数据和存储单元的阈值电压的关系;图37示出了根据本发明第8实施例的存储单元的写入顺序;图38示出了根据本发明第8实施例的第三页的编程操作;图39示出了根据本发明第8实施例的各数据高速缓存和存储单元的数据的关系;图40示出了根据本发明第8实施例的各数据高速缓存和存储单元的数据的关系;图41(a)示出了根据本发明第8实施例的第一页的读出操作,图41(b)示出了第二页的读出操作;
图42示出了根据本发明第8实施例的第三页的读出操作。
具体实施例方式
下面参考

本发明的实施例。
首先,说明本发明的原理。本发明对于例如存储i位数据的存储单元,在存储下一个数据之前,事先在邻接存储单元中写入i位以下的数据。该i位以下的数据的写入比本来的阈值电压(存储i位数据时的实际阈值电压)低。写入邻接存储单元后,进行提高存储单元的阈值电压的写入。通过FG-FG间电容提高了阈值电压的单元在该写入中阈值电压没有过度变化。阈值电压没有通过FG-FG间电容而过度上升的单元通过该写入而阈值电压升高,因此,阈值电压变成本来的值。但是,在阈值电压升高的写入前后,i位数据为本来的阈值电压,或是比本来的阈值电压低的阈值电压。为了加以区别,准备标记用的存储单元(标记单元),并进行与标记单元的数据对应的读出操作。
NAND型闪速存储器由于同时写入在行方向上并列的全部单元或半数单元,因此,最好每个写入单位都具有标记单元。
(第一实施例)图2示出了本发明的非易失性半导体存储装置的概略构成,示出了例如存储4值(2位)的NAND闪速存储器的结构。
存储单元阵列1包含多个位线、多个字线和公共源线,例如,可电改写数据的、由EEPROM单元组成的存储单元配置为矩阵状。用于控制位线的位线控制电路2和字线控制电路6与存储单元阵列1连接。
位线控制电路2包含下面所述的多个数据存储电路和标志用数据存储电路。位线控制电路2通过位线读出存储单元阵列1中存储单元的数据,或者通过位线检测存储单元阵列1中存储单元的状态,或者通过位线向存储单元阵列1中的存储单元施加写入控制电压,以对存储单元进行写入。列解码器3、数据输入输出缓冲器4与位线控制电路2连接。通过列解码器3选择位线控制电路2内的数据存储电路。在数据存储电路中读出的存储单元的数据通过上述数据输入输出缓冲器4从数据输入输出端子5输出到外部。
从外部输入到数据输入输出端子5的写入数据通过数据输入输出缓冲器4被输入到由列解码器3选择的数据存储电路中。
字线控制电路6与存储单元阵列1连接。字线控制电路6选择存储单元阵列1中的字线,在所选择的字线上施加读出、写入或删除操作所需的电压。
存储单元阵列1、位线控制电路2、列解码器3、数据输入输出缓冲器4和字线控制电路6与控制信号及控制电压发生电路7连接,并由控制信号及控制电压发生电路7进行控制。控制信号及控制电压发生电路7连接控制信号输入端子8,并由从外部经控制信号输入端子8输入的控制信号控制。
上述位线控制电路2、列解码器3、字线控制电路6、控制信号及控制电压发生电路7构成写入电路和读出电路。
图3示出了图2所示的存储单元阵列1和位线控制电路2的构成。在存储单元阵列1中配置多个NAND单元。1个NAND单元由串联连接的例如16个EEPROM组成的存储单元MC和选择栅S1、S2构成。第一选择栅S1连接位线BL0,第二选择栅S2连接源线SRC。各行中配置的存储单元的控制栅共同连接到字线WL1、WL2、WL3~WL16。第一选择栅S1公共连接到选择线SG1上,第二选择栅S2公共连接到选择线SG2上。
如虚线所示,存储单元阵列1包含多个块。各个块由多个NAND单元构成,以该块为单位删除数据。删除操作在连接数据存储电路10、标志用数据存储电路10a的2条位线上同时进行。
位线控制电路2具有多个数据存储电路10和标志用数据存储电路10a。在各数据存储电路10和标志用数据存储电路10a上分别连接有一对位线(BL0,BL1)、(BL2、BL3)……(BLi、BLi+1)、(BL、BL)。
每隔1条位线配置的、与1条字线连接的多个存储单元(被虚线包围的范围内的存储单元)构成1个扇区。在每个扇区中写入、读出数据。1个扇区中例如存储2页的数据。用于存储标志的标志单元FC与各字线连接。即,在本实施例的情况下,1个扇区包含1个标志单元FC。
此外,1个扇区中,标志单元FC不限定为1个,如虚线所示,在1个扇区中也可以连接多个标志单元。这时,如后面描述的,通过对多个标志单元中存储的数据进行多数判定,可以判定出存储在标志单元中的数据。
在读出操作、编程验证操作和编程操作中,根据由外部指定的地址信号(YA1、YA2……YAi、YAFlag),从连接到数据存储电路10的2条位线(BLi、BLi+1)中选择1条位线。此外,根据外部地址,选择1条字线,选择1个扇区(2页)。通过该地址来切换这两个页。
图4(a)(b)示出了存储单元和选择晶体管的截面图。图4(a)示出了存储单元。在基板41中形成作为存储单元的源极、漏极的n型扩散层42。通过栅极绝缘膜43在基板41上形成浮栅(FG)44。通过绝缘膜45在该浮栅44上形成控制栅(CG)46。图4(b)示出了选择栅。在基板41中形成作为源极、漏极的n型扩散层47。通过栅极绝缘膜48在基板41上形成控制栅49。
图5示出了存储单元阵列的1个NAND单元的截面。在本例中,1个NAND单元由16个具有图4(a)所示结构的存储单元MC串联连接而成。在NAND单元的漏极侧、源极侧设置图4(b)所示结构的第一选择栅S1和第二选择栅S2。
图6示出了图3所示的数据存储电路10的一个例子电路图。标志用数据存储电路10a的结构和数据存储电路10一样。
数据存储电路10具有主要数据高速缓存(PDC)、次要数据高速缓存(SDC)、动态数据高速缓存(DDC)、临时数据高速缓存(TDC)。DC、PDC、DDC在写入时保存输入数据,在读出时保存读出数据,在验证时临时保存数据,在存储多值数据时用于内部数据操作。TDC在读出数据时放大位线的数据,并临时保存,同时,在存储多值数据时用于内部数据操作。
SDC由构成锁存电路的时钟去反相(クロツクFィソバ一タ)电路61a、61b和晶体管61c、61d构成。晶体管61c连接在时钟去反相电路61a的输入端和时钟去反相电路61b的输入端之间。向晶体管61c的栅极提供信号EQ2。晶体管61d连接在时钟去反相电路61b的输出端和接地之间。向晶体管61d的栅极提供信号PRST。SDC的节点N2a通过列选择晶体管61e连接到输入输出数据线IOn,节点N2b通过列选择晶体管61f连接到输入输出数据线IO。向这些晶体管61e、61f的栅极提供列选信号CSLi。SDC的节点N2a通过晶体管61g、61h连接到PDC的节点N1a。向晶体管61g的栅极提供信号BLC2,向晶体管61h的栅极提供信号BLC1。
PDC由由时钟去反相电路61i、61j和晶体管61k构成。晶体管61k连接在时钟去反相电路61i的输入端和时钟去反相电路61i的输入端之间。信号EQ1被提供给该晶体管的栅极。PDC的节点N1b连接到晶体管61l的栅极。晶体管61l的电流通路的一端经晶体管61m接地。信号CHK1被提供给该晶体管的栅极。晶体管61l的电流通路的另一端连接到构成传输门的晶体管61n、61l的电流通路一端。信号CHK2 n被提供给晶体管61n的栅极。晶体管61o的栅极连接到上述晶体管61g和61h的连接节点。信号COMi被提供给晶体管61n、61o的电流通路的另一端。信号COMi是所有数据存储电路10中的公共信号,是表示所有数据存储电路10的验证是否已经结束的信号。即,如后面描述的,当验证结束时,PDC的节点N1b变成低电平。在这种状态下,信号CHK1、CHK2为高电平时,如果验证结束,则信号COMi变成高电平。
上述TDC例如由MOS电容器61p构成。电容器61p连接在上述晶体管61g、61h的连接节点N3和地之间。DDC通过晶体管61q连接到连接节点N3。信号REG被提供给晶体管61q的栅极。
DDC由晶体管61r、61s构成。信号VREG被提供给晶体管61r的电流通路的一端,其另一端连接到上述晶体管61q的电流通路。晶体管61r的栅极通过晶体管61s连接到上述PDC的节点N1a。信号DTG被提供给晶体管61s的栅极。
而且,晶体管61t、61u的电流通路的一端连接到上述连接节点N3上。信号VPRE被提供给晶体管61u的电流通路的另一端,BLPRE被提供给栅极。信号BLCLAMP被提供给上述晶体管61t的栅极。晶体管61t的电流通路的另一端通过晶体管61v连接到位线BLo的一端,通过晶体管61w连接到位线BLe的一端。位线BLo的另一端连接到晶体管61x的电流通路的一端。信号BlASo被提供给晶体管61x的栅极。位线BLe的另一端连接到晶体管61y的电流通路的一端。信号BLASe被提供给晶体管61y的栅极。信号BLCRL被提供给这些晶体管61x、61y的电流通路的另一端。晶体管61x、61y根据信号BlASo、BlASe与晶体管61v、61w互补地被接通,并向未选择的位线提供信号BLCRL的电位。
上述各信号和电压由图2所示的控制信号及控制电压发生电路7生成,根据该控制信号及控制电压发生电路7的控制,控制以下操作。
本存储器是多值存储器,可以在一个单元中存储2位的数据。通过地址(第一页、第二页)进行2位的切换。
(操作说明)对在上述构成中的操作进行说明。
图1示出了存储单元的数据和存储单元的阈值电压的关系。进行删除操作时,存储单元的数据变为“0”。如图1(a)所示,写入第一页时,存储单元的数据变为数据“0”和数据“2”。如图1(b)所示,在写入第二页之前,在邻接单元中写入实际数据的阈值电压以下的数据。这时,通过写入该单元的数据,扩大数据“2”的阈值电压的分布。之后, 当写入第二页的数据时,如图1(c)所示,存储单元的数据变为具有本来阈值电压的数据“0”~“3”。在本实施例中,按阈值电压从低到高的顺序定义存储单元的数据。
图7示出了对NAND单元的写入顺序。在块内,进行从靠近源线的存储单元向每个页写入的操作。为了便于说明,图7中的字线为4条。
第1次写入是在存储单元1的第一页中写入1位的数据。
第2次写入是在字方向与存储单元1邻接的存储单元2的第一页中写入1位的数据。
第3次写入是在位方向与存储单元1邻接的存储单元3的第一页中写入1位的数据。
第4次写入是在对角方向上与存储单元1邻接的存储单元4的第一页中写入1位的数据。
第5次写入是在存储单元1的第二页中写入1位的数据。
第6次写入是在字方向与存储单元1邻接的存储单元2的第二页中写入1位的数据。
第7次写入是在位方向与存储单元3邻接的存储单元5的第一页中写入1位的数据。
第8次写入是在对角方向上与存储单元3邻接的存储单元6的第一页中写入1位的数据。
第9次写入是在存储单元3的第二页中写入1位的数据。
第10次写入是在字方向上与存储单元3邻接的存储单元4的第二页中写入1位的数据。
第11次写入是在位方向与存储单元5邻接的存储单元7的第一页中写入1位的数据。
第12次写入是在对角方向上与存储单元5邻接的存储单元8的第一页中写入1位的数据。
第13次写入是在存储单元5的第二页中写入1位的数据。
第14次写入是在字方向上与存储单元5邻接的存储单元6的第二页中写入1位的数据。
第15次写入是在存储单元7的第二页中写入1位的数据。
第16次写入是在字方向上与存储单元7邻接的存储单元8的第二页中写入1位的数据。
(编程及编程验证)(第一页编程)图8示出了第一页编程的方框图。编程操作首先指定地址,并选择图3所示的2页(1个扇区)。本存储器只能按2页中第一页、第二页的顺序进行编程操作。因此,首先,通过地址选择第一页。
接着,从外部输入写入数据,并存储在所有数据存储电路10内的SDC(图6所示)中(ST1)。当输入写入命令时,所有数据存储电路10内的SDC的数据被传送给PDC(ST2)。即,使信号BLC1、BLC2为规定电压,例如Vdd+Vth(Vdd电源电压(例如3V或1.8V,但是不限于所述电压),VthN沟道MOS晶体管的阈值电压),晶体管61h、61g导通。这时,节点N2a的数据通过晶体管61g、61h传送给PDC。因此,如果从外部输入数据“1”(不进行写入),则PDC的节点N1a变为高电平,如果输入数据“0”(进行写入),则PDC的节点N1a变为低电平。此后,PDC的数据为节点N1a的电位、SDC的数据为节点N2a的电位。
在第一页的编程中,数据不写入标志单元。因此,标志用数据存储电路10a内的PDC为数据“1”。
(编程操作)(ST13)图6所示的信号BLC1、BLCLAMP、BLSo或BLSe的电位为Vdd+Vth。这时,晶体管61h、61t、61v或61w导通,保存在PDC中的数据被提供给位线。在PDC中存储数据“1”(不进行写入)时,位线变成Vdd,而在PDC中存储数据“0”(进行写入)时,位线变成Vss(接地电位)。连接到选择字线的非选择页的(位线是非选择的)单元必须进行写入。因此,也向连接到这些单元的位线提供Vdd,使得和数据“1”相同。这里,向所选块的选择线SG1施加Vdd,向选择字线施加电位VPGM(20V),给非选择字线施加电位VPASS(10V)。这时,如果位线变为Vss,由于单元沟道变为Vss,字线变为VPGM,因此进行写入。另一方面,如果位线变成Vdd,单元沟道不为Vss,通过升高VPGM, 由于耦合而变为VPGM/2。因此,该单元不被编程。
写入数据“0”时,如图1所示,存储单元的数据为“2”。写入数据“1”时,存储单元的数据仍为“0”。
(第一页验证(S14))在编程验证操作中,为所选的字线提供稍高于读出时电位的电位。以后,带“’”的电位表示验证电位,其比读出电位值稍高。
在第一页的验证操作中,如图1(a)所示,提供比本来的验证时的字线电位“b’”(图1(c)所示)低的电位“b*’”来进行验证。以后,“*”表示比本来值低的电位,“*’”表示比低于本来值的验证电位还低的验证电位。
首先,向所选块内的非选择字线和选择线SG1提供读出时的电位Vread,向图6所示的数据存储电路10的信号BLPRE提供例如Vdd+Vth、向BLCLAMP提供规定电压例如1V+Vth,信号VPRE为Vdd,将位线预充电为1V。
接着,单元源极侧的选择线SG2变为高电平。阈值电压高于电位“b*’”的单元关断,因此,位线仍为高电平。阈值电压低于电位“b*’”的单元导通,因此,位线变为Vss。在位线放电过程中,VPRE=VSS、BLPRE=高电平,TDC变为VSS后,信号REG变为Vdd+Vth、VREG变为Vdd,晶体管61q导通,且DDC的数据传送给TDC。
接着,信号DTG变成Vdd+Vth后,晶体管61s暂时导通,PDC的数据被传送到DDC。即,传送的数据作为晶体管61r的栅极电位被保存。
之后,信号BLC1例如变成Vdd+Vth后,晶体管61h导通,TDC的数据移至PDC中。
接着,给信号BLPRE提供规定电压例如Vdd+Vth,使VPRE=Vdd,从而在将TDC的节点N3预充电到Vdd之后,信号BLCLAMP变成规定电压例如0.9V+Vth,晶体管61t截止。在位线为低电平时,TDC的节点N3变成低电平,而在位线为高电平时,TDC的节点N3变成高电平。
这里,如果进行写入,则在图6的DDC中存储低电平,如果不进行写入,则在DDC中存储高电平。因此,在信号VREG为Vdd、信号REG为高电平时,仅在不进行写入时将TDC的节点N3强制变成高电平。该操作之后,PDC的数据移至DDC中,将TDC的电位传送给PDC。在PDC中锁存高电平信号的情形仅包括不在单元中进行写入的情形和在单元中写入数据“2”时,单元的阈值电压达到验证电位“b*”的情形。在PDC中锁存低电平信号的情形是单元的阈值电压达不到“b*”的情形。
PDC为低电平时,再次进行写入操作,反复进行该编程操作和验证操作(S15-S13),直至所有数据存储电路10的数据变为高电平。上述操作和2值时的情况完全相同。
(邻接单元编程)如图7所示,在存储单元1的第一页中写入1位数据之后,顺次进行对和存储单元1在字方向上邻接的存储单元2的第一页的写入、对和存储单元1在位方向上邻接的存储单元3的第一页的写入、对与存储单元1在对角方向上邻接的存储单元4的第一页的写入。当进行这些写入操作时,依据写入数据,通过FG-FG间电容提高存储单元1的阈值电压。因此,如图1(b)所示,存储单元1的数据“0”和数据“2”的阈值电压分布的电位扩展成比较高。
之后,在第5次写入时,在存储单元1的第二项中写入1位数据。
(第二页编程)图9示出了第二页的编程(写入)操作的方框图。第二页编程操作也是首先根据地址选择图3所示的2页。
接着,从外部输入写入数据,并存储在全部数据存储电路内的SDC中(S21)。如果从外部输入数据“1”(不进行写入),则数据存储电路10的SDC的节点N2a变成高电平,如果输入数据“0”(进行写入),则变成低电平。
此后,当输入写入命令时,因为是第二页的编程,所以为了向标志单元写入数据,在标志单元用的数据存储电路10a内的SDC中输入数据“0”(S22)。如上所述,为了提高可靠性,也可以准备多个标志单元。这时,在第二页中,在该多个标志单元中输入数据“0”。
如图1(c)所示,在第二页的编程中,在存储单元的数据为“0”的情况下,如果从外部输入的数据是“1”,则存储单元的数据仍为“0”,如果从外部输入的数据为“0”,则使存储单元的数据为“1”。
在存储单元的数据为“2”的情况下,如果从外部输入的数据为“0”,则存储单元的数据仍为“2”。但是,在第一页的写入之后,在验证存储单元的数据是否已经达到了“2”时,验证电位是比通常低的“b*’”。因此,可以对该存储单元进行写入,直至达到作为本来的验证电位的“b’”电位。
在存储单元的数据为“2”的情况下,如果从外部输入的数据为“1”,则存储单元的数据变为“3”。
(内部数据读出)首先,在写入单元之前,为了判断第一页的存储单元的数据是“0”还是“2”,进行内部读出操作(S23)。内部数据读出和读出操作完全相同。通常,在判断存储单元的数据是“0”还是“2”时,向选择字线提供读出时的电位“b”。但是,在第一页的编程操作中,只在验证电位达到比通常低的“b*’”之前进行写入,因此有时比“b”的电位低。因此,通过内部数据装载,向字线提供“a”电位并进行读出操作。
即,向所选块内的非选择字线和选择线SG1施加电位Vread。与此同时,使数据存储电路10的信号VPRE为Vdd,信号BLPRE、BLCLAMP为规定电压例如1V+Vth,在位线被预充电到Vdd之后,单元源极侧的选择线SG2变为高电平。因为阈值电压高于电位“a”的单元被关断,所以位线仍为高电平。此外,因为阈值电压低于电位“a”的单元导通,从而位线被放电,变成接地电位Vss。
接着,使数据存储电路10的信号VPRE为Vdd,信号BLPRE为Vdd+Vth,并将TDC的节点N3预充电到Vdd。之后,使信号BLCLAMP为0.9V+Vth。在位线为低电平时,使TDC的节点N3为低电平,而在位线为高电平时,使TDC的节点N3为高电平。之后,将TDC的电位传送给PDC。结果,在存储单元的数据为“2”时,在PDC中锁存高电平信号,而在存储单元的数据为“0”时,在PDC中锁存低电平信号。图10(a)示出了数据装载、内部读出后的SDC、PDC和存储单元数据的关系。
(数据高速缓存的设定)(S24)之后,按照图11、图12所示的数据高速缓存设定顺序操作存储在各数据高速缓存中的数据。
通过这种操作,存储在各数据高速缓存中的数据如图10(b)所示。
即,在存储单元的数据为“0”时(第一页的数据为“1”,第二页的数据为“1”),将PDC设定为高电平,DDC设定为低电平,SDC设定为高电平。
在存储单元的数据为“1”时(第一页的数据是“1”,第二页的数据是“0”),将PDC设定为低电平,DDC设定为高电平,SDC设定为高电平。
在存储单元的数据为“2”时(第一页的数据是“0”,第二页的数据是“0”),将PDC设定为低电平,DDC设定为高电平,SDC设定为低电平。
在存储单元的数据为“3”时(第一页的数据是“0”,第二页的数据是“1”),将PDC设定为低电平,DDC设定为低电平,SDC设定为低电平。
(第二页验证存储单元数据“2”的验证)(S25)写入数据“2”的单元在第一页中以低于本来的验证电位“b’”的验证电位“b*’”进行写入。之后,存在阈值电压随邻接单元的写入而上升的情况,也存在达到本来的验证电位“b’”的单元。因此,首先,进行数据“2”的验证。在该编程验证操作中,向所选字线施加稍高于读出时电位“b”的电位“b’”。
首先,给所选块内的非选择字线和选择线SG1提供电位Vread,使图6所示的数据存储电路10的信号BLCLAMP为1V+Vth,使REG为Vdd+Vth,对位线预充电。如图10(b)所示,在存储单元中写入数据“0”、“3”时,DDC被设定为低电平,因此,不对位线进行预充电。在存储单元中写入数据“1”、“2”时,DDC被设定为高电平,因此,对位线预充电。
接着,使NAND单元源极侧的选择线SG2变为高电平。单元的阈值电压比“b’”高时,单元关断。因此,位线仍为高电平。单元的阈值电压比“b’”低的单元导通。因此,位线变成Vss。在位线放电过程中,使TDC的节点N3一度变为Vss。之后,使信号REG变为高电平,晶体管61q导通,将DDC的数据传送给TDC。
接着,使信号DTG变为Vdd+Vth,晶体管61s一度导通,PDC的数据移至DDC中。之后,TDC的数据移至PDC中。
接着,通过使信号VPRE变为Vdd、使信号BLPRE变为Vdd+Vth,将TDC的节点N3预充电为Vdd。之后,使信号BLCLAMP变为0.9V+Vth,晶体管61t导通。在位线为低电平时,TDC的节点N3为低电平,而在位线为高电平时,TDC的节点N3为高电平。
这里,如果进行写入,则在DDC中存储低电平信号,如果不进行写入,则在DDC中存储高电平信号。因此,在使信号VREG为Vdd、信号REG为Vdd+Vth时,仅在不进行写入时将TDC的节点N3强制变成高电平。
之后,PDC的数据移至DDC中,将TDC的电位读入PDC。在PDC中锁存高电平信号的情况只包括不进行写入的情况,和在存储单元中写入数据“2”、且单元的阈值电压达到验证电位“b’”的情况。在PDC中锁存低电平信号的情况是指单元的阈值电压达不到“b’”的情况,和在存储单元中写入数据“1”、“3”的情况。
(编程操作)(S26)编程操作和第一页的编程操作完全相同。如果在PDC中存储数据“1”,则不进行写入,如果存储数据“0”,则进行写入。
(第二页验证存储单元数据“1”的验证)(S27)在编程验证操作中,如图1(c)所示,给所选字线提供稍高于读出时电位“a”的电位“a’”。
首先,给所选块内的非选择字线和选择线SG1提供读出时的电位Vread。使数据存储电路10的信号BLCLAMP为1V+Vth,ELC2为Vdd+Vth后,对位线预充电。在向存储单元写入数据“2”、“3”时,SDC的存储数据是“0”。因此,不对位线预充电,而仅在向存储单元写入数据“0”、“1”时,才对位线预充电。
接着,使单元源极侧的选择线SG2变为高电平。由于阈值电压高于“a’”的单元关断,故位线仍为高电平。而阈值电压低于“a’”的单元导通,因此,位线变成Vss。在该位线放电的过程中,一旦TDC的节点N3变为Vss,信号REG变为高电平后,晶体管61q导通,DDC的数据移至TDC中。
接着,使信号DTG变为Vdd+Vth后,晶体管61s暂时导通,PDC的数据移至DDC中。之后,TDC的数据移至PDC中。接着,使数据存储电路的信号BLPRE变为Vdd+Vth,晶体管61u导通,将TDC的节点N3预充电为Vdd。之后,使信号BLCLAMP变为0.9V+Vth,晶体管61t导通。这时,若位线为低电平,则TDC的节点N3为低电平,若位线为高电平,则TDC的节点N3为高电平。
这里,如果进行写入,则在DDC中存储低电平信号,如果不进行写入,则在DDC中存储高电平信号。因此,在使信号VREG为Vdd、信号REG为高电平时,仅在不进行写入时将TDC的节点N3强制变成高电平。所述操作之后,PDC的数据移至DDC中,将TDC的电位读入PDC。在PDC中锁存高电平信号的情况只包括不进行写入的情况,和在存储单元中写入数据“1”、且单元的阈值电压达到验证电位“a’”的情况。在PDC中锁存低电平信号的情况是指单元的阈值电压达不到“a’”的情况,和在存储单元中写入数据“2”、“3”的情况。(第二页验证存储单元数据“2”的验证)(S28)与编程之前进行的存储单元数据“2”的验证一样,进行存储单元数据“2”的验证。
(第二页验证存储单元数据“3”的验证)(S29)在该编程验证操作中,如图1(c)所示,给所选字线提供稍高于读出时电位“c”的电位“c’”。在这种状态下,首先,给所选块内的非选择字线和选择线SG1提供Vread,使信号BLCLAMP为1V+Vth,BLPRE为Vdd+Vth,晶体管61t、61u导通,对位线预充电。
接着,单元源极侧的选择线SG2变为高电平。阈值电压高于电位“c’”的单元关断,因此,位线仍为高电平。阈值电压低于电位“c’”的单元导通,因此,位线变为Vss。在该位线放电的过程中,使TDC的节点N3变为Vss,信号REG为高电平后,晶体管61q导通,DDC的数据移至TDC中。
接着,使信号DTG为高电平,晶体管61s导通,PDC的数据移至DDC中。之后,TDC的数据移至PDC中。接着,使信号BLPRE为Vdd+Vth,晶体管61u导通,将TDC的节点N3预充电到Vdd。之后,使信号BLCLAMP变为0.9V+Vth,晶体管61t导通。在位线为低电平时,TDC的节点N3为低电平,而在位线为高电平时,TDC的节点N3为高电平。
这里,如果进行写入,则在DDC中存储低电平,如果不进行写入,则在DDC中存储高电平。因此,使信号VREG为Vdd、信号REG为高电平后,晶体管61q导通。这时,仅在不进行写入时将TDC的节点N3强制变成高电平。所述操作之后,PDC的数据移至DDC中,将TDC的电位读入PDC。在PDC中锁存高电平信号的情况只包括不进行写入的情况,和在存储单元中写入数据“3”、且单元的阈值电压达到验证电位“c’”的情况。在PDC中锁存低电平信号的情况是指单元的阈值电压达不到“c’”的情况,和在存储单元中写入数据“1”、“2”的情况。
PDC为低电平时,再次进行写入操作,反复进行该编程操作和验证操作,直至所有数据存储电路的数据变为高电平(S30)。
在上述第一实施例中,1次编程之后,进行3个验证。但是,在初始的编程循环中,阈值电压不上升。因此,可省略存储单元数据“3”的验证或存储单元数据“3”的验证和存储单元数据“2”的验证。在接近结束的编程循环中,结束存储单元数据“1”写入的或者存储单元数据“2”以及存储单元数据“1”的写入。因此,能省略这些验证操作。如果不需要验证存储单元数据“1”,则不需要保持SDC中存储的数据。因此,可从外部读入用于写入下一个数据的数据。
在标志单元中,在第一页不写入数据,而仅在第二页写入数据。因此,标志单元的数据变为“1”。
(第一页读出)图13示出了第一页读出的图。首先,指定地址,选择图3所示的2页。如图1(b)(c)所示,在写入第二页之前和之后,阈值电压的分布发生变化。因此,首先,使字线电位为“a”,进行读出操作,判断标志单元的数据是“0”还是“1”(S31、S32)。在所述判断中,如果标志单元为多个单元,则通过对这些单元进行多数判定,来判断是“0”还是1”。
如果从标志单元读出的数据为“1”(存储单元的数据为“0”),则不进行第二页的写入。因此,单元的阈值电压分布为图1(a)或(b)。在判断这种单元的数据的过程中,可以进行使字线电位为“a”的读出操作。但是,在步骤S31中,以字线电位“a”进行读出操作的结果已经被读出到数据存储电路中。因此,也可以将存储在数据存储电路中数据输出到外部(S33)。
另一方面,如果从标志单元读出的数据为“0”(存储单元的数据为“1”),则进行第二页的写入,因此,单元的阈值电压分布变为图1(c)所示。在判断这些存储器的数据时,必须在字线电位为“b”的情况下进行读出操作。因此,以字线电位为“b”进行读出操作(S34),之后,将在数据存储电路中读出的数据输出到外部(S33)。
(读出操作第一页读出)如上所述,第一页的读出操作是向选择线提供读出电位“a”或“b”来执行读出操作。
首先,给所选块内的非选择字线和选择线SG1提供电位Vread,使图6所示的数据存储电路的信号BLPRE为1V+Vth,BLCLAMP为Vdd+Vth,对位线预充电。之后,单元源极侧的选择线SG2变为高电平。阈值电压高于电位“a”或“b”的单元关断,因此,位线仍为高电平。因为阈值电压低于电位“a”或“b”的单元导通,所以位线变为Vss。
接着,数据存储电路的信号BLPRE变为Vdd+Vth,晶体管61u导通,从而,将TDC的节点N3预充电到Vdd。之后,信号BLCLAMP变为0.9V+Vth,晶体管61t导通。在位线为低电平时,TDC的节点N3为低电平,而在位线为高电平时,TDC的节点N3为高电平。之后,将PDC的数据移至SDC中。
(第二页读出)图14示出了第二页读出的图。在第二页读出中,首先指定地址,选择图3所示的2页。如图1(b)(c)所示,在写入第二页之前和之后,阈值电压的分布发生变化。但是,在写入第二页之后,变为图1(c)所示的分布。因此,首先,使字线电位为“c”,进行读出(S35)。之后,使字线电位为“a”,进行读出操作(S36)。在单元的阈值电压低于字线电位“a”或者高于字线电位“c”时,数据变为“1”, 而在单元的阈值电压比字线电位“a”高、比字线电位“c”低时,数据变为“0”。在写入第二页之前,第二页的数据可输出“1”。但是,阈值电压分布变为图1(a)所示。因此,当进行和写入第二页之后相同的读出操作时,输出数据变为“0”。因此,判断标志单元的数据是“0”还是“1”(S37)。结果,在标志单元的数据为“1”、不进行第二页的写入时,将输出数据固定为“1”(S38)。为了使输出为“1”,将数据存储电路的信号PRST变为高电平,将SDC设定为“1”。或者,从图2所示的数据输入输出缓冲器中仅输出数据“1”。标志单元的数据为“0”时,输出读出的数据(S39)。
图15示出了第二页读出的变形例。这时,首先,使字线电位为“a”,读出标志单元的数据,判断标志单元的数据(S40,S41)。标志单元的数据为“1”时,不进行第二页的写入。因此,将输出数据固定为“1”(S42)。标志单元的数据为“0”时,进行第二页的写入。因此,使字线电位为“c”,进行读出操作,输出读出的数据(S43、S44)。即使这种结构也能进行第二页的读出操作。
但是,在第一实施例中,如图14所示,首先,使字线电位变为“c”,进行读出操作。之后,使字线电位成为“a”,进行读出操作,在标志单元的数据为“0”时,将在数据存储电路中读出的数据输出到外部。在标志单元的数据为“1”时,因为不进行第二页的写入,所以当将数据输出到外部时,不输出数据存储电路的数据,而总是输出数据“1”。
具体地说,第二页读出执行下面的操作。
(读出操作第二页第1次读出)第二页的第1次读出操作是向选择字线提供读出电位“c”,进行读出操作(S35)。读出操作和上述第一页读出完全相同,将读出的单元数据存储在PDC中。
(读出操作第二页的第2次读出)第二页的第2次读出是向选择字线提供读出电位“a”,进行读出操作(S36)。
首先,给所选块内的非选择字线和选择线SG1提供电位Vread。在这种状态下,数据存储电路的信号BLPRE、BLCLAMP为1V+Vth,对位线预充电。之后,单元源极侧的选择线SG2变为高电平。阈值电压比电位“a”高的单元关断,因此,位线仍为高电平。而且,因为阈值电压比电位“a”低的单元导通,所以位线变为Vss。
接着,通过使数据存储电路的信号BLPRE变为Vdd+Vth,在将TDC的节点N3预充电到Vdd之后,信号BLCLAMP变为Vdd+Vth,晶体管61t导通。位线为低电平时,TDC的节点N3为低电平,位线为高电平时,TDC的节点N3为高电平。之后,DTG=高电平、REG=高电平、VREG=低电平。这时,仅在PDC变成高电平时将TDC的节点N3变为低电平。所述操作之后,将PDC的数据移至SDC中。结果,在单元的阈值电压比电位“a”低或比电位“c”高时,输出数据变为“1”, 而在阈值电压比电位“a”高、比电位“c”低时,输出数据变为“0”。
(删除)删除操作首先指定地址,选择图3虚线所示的方框。当进行删除操作时,存储单元的数据变为“0”,不管在第一页、第二页、第三页中哪个页中进行读出,都输出数据“1”。
根据上述第1实施例,利用比本来的阈值电压低的电位将第一页的数据写入存储单元,在写入第二页的数据之前,在邻接的存储单元中写入第一页的数据,在写入邻接的存储单元之后,将第二页的数据写入存储单元中,设定为与存储数据对应的本来的阈值电压。因此,因为考虑到邻接存储单元的FG-FG间电容的影响而将第一页的数据写入存储单元中,所以可正确地设定与多值数据对应的阈值电压。
写入第二页的数据时,在标志单元中写入数据,读出各页的数据时,根据存储在标志单元中的数据来控制输出到外部的数据。因此,能可靠地输出各页的数据。
(第2实施例)图16示出了对第1实施例变形后的第2实施例。在第1实施例中,写入第二页时,将标志单元的存储单元数据从“0”变为“1”。但是,可以将标志单元的存储单元数据从“0”变为“2”。在这种结构的情况下,可将第一页的读出操作变形为如图16所示。
即,首先,将字线电位设定为“b”并进行读出操作,判断标志单元的数据(S45、S46)。在标志单元中写入数据时,将在数据存储电路中读出的数据原样输出(S47)。在标志单元中不写入数据时,将字线电位设定为“a”,进行读出操作(S48)。输出由此读出的数据(S47)。
根据上述第2实施例,在第二页的写入中,通过在标志单元中写入存储单元数据“2”,在读出与写入存储单元数据“2”的标志单元同时选择的存储单元的第一页数据时,可在1个周期中读出数据。因此,可减少读出次数,并可高速读出。
(第3实施例)图17示出了第3实施例的编程操作。
在上述第1、第2实施例中,第二页的写入是对存储单元同时写入数据“1”、“2”、“3”。与此相对,第3实施例是在存储单元中仅先写入数据“1”,写入结束后,在存储单元中同时写入数据“1”、“3”。如下执行第3实施例的写入操作。
第1次写入在第一存储单元中写入第一页(S51)。
第2次写入在第二存储单元中写入第一页(S52)。
第3次写入在第三存储单元中写入第一页(S53)。
第4次写入在第四存储单元中写入第一页(S54)。之后,在装载用于第5次写入的数据之前,以本来的阈值电压将数据“2”顺次写入第一存储单元和第二存储单元中(S55、S56)。
第5次写入在第一存储单元中写入第二页(S57)。
第6次写入在第二存储单元中写入第二页(S58)。
第7次写入在第五存储单元中写入第一页(S59)。
第8次写入在第六存储单元中写入第一页(S60)。之后,在装载用于第9次写入的数据之前,以本来的阈值电压将数据“2”写入第三存储单元和第四存储单元中(S61、S62)。
图18具体示出了上述第4次写入操作。图19具体示出了上述第5次写入操作,图20具体示出了上述第6次写入操作。
图18中,在第四存储单元中写入第一页的操作和图8所示的操作相同。之后,以本来的阈值电压将数据“2”写入第一存储单元。即,首先,使字线的电压为“a”,从存储单元中读出数据(S55-1),根据所述读出的数据,设定TDC、DDC、PDC(S55-2)。之后,为字线提供数据“2”的本来的阈值电压“b’”,并进行验证(S55-3)。之后,改变进行编程操作的存储单元的阈值电压(S55-4)。接着,利用阈值电压“b’”验证存储单元的阈值电压(S55-5),反复上述编程、验证(S55-6~S55-4)操作直至所有PDC变为“1”。
之后,和对上述第一存储单元的上述写入一样,以本来的阈值电压在第二存储单元中写入数据“2”(S56-1~S56-6)。
在图19所示的第一存储单元中写入第二页的操作(S57-1~S57-8)和图9所示第1实施例中的第二页写入操作的不同点如下。图9中,设定数据高速缓存后,利用阈值电压“b’”验证存储单元的数据。与此相对,在图19所示的写入操作中,由于已经写入了数据“2”, 因此省略了利用阈值电压“b’”进行的验证。因此,在设定数据高速缓存之后,在第一存储单元中进行第二页的编程(S57-4,S57-5)。即使在编程后的验证中,也省略了利用阈值电压“b’”的验证。因此,仅通过阈值电压“a’”、 “c’”进行验证(S57-6、S57-7)。
因为图20所示的在第二存储单元中写入第二页的操作和图19所示的在第一存储单元中写入第二页的操作是一样的,所以,说明从略。
根据上述第3实施例,在写入第一页后,在写入第二页之前,以本来的阈值电压写入数据“2”。因此,在第1实施例中,第二页的编程时间比第一页的编程时间长,但在第三实施例的情况下,第一页和第二页的编程时间可以基本相同。
(第4实施例)图21、图22示出了对第3实施例变形后的本发明第4实施例。如图21所示执行第4实施例的写入操作。
第1次写入在第一存储单元中写入第一页(S71)。
第2次写入在第二存储单元中写入第一页(S72)。
第3次写入在第三存储单元中写入第一页(S73)。之后,以本来的阈值电压在第一存储器中写入数据“2”(S74)。
第4次写入在第四存储单元中写入第一页(S75)。之后,以本来的阈值电压在第二存储器中写入数据“2”(S76)。
第5次写入在第一存储单元中写入第二页(S77)。
第6次写入在第二存储单元中写入第二页(S78)。
第7次写入在第五存储单元中写入第一页(S79)。之后,以本来的阈值电压在第三存储器中写入数据“2”(S80)。
第8次写入在第六存储单元中写入第一页(S81)。之后,以本来的阈值电压在第四存储器中写入数据“2”(S82)。
图22具体示出了上述第3次写入操作。
因为图22所示的在第三存储单元中写入第一页的操作(S73)和以本来的阈值电压在第一存储单元中写入数据“2”的操作(S74)与图18所示的在第四存储单元中写入第一页的操作(S54)和以本来的阈值电压在第一存储单元中写入数据“2”的操作(S55)是一样的,所以,说明从略。
在上述第一存储单元中写入第二页的操作(S77)和图19所示的写入操作相同。
根据上述第4实施例,在写入第一页之后,在写入第二页之前,以本来的阈值电压写入数据“2”。因此,和第3实施例相同,第一页和第二页的编程时间可以基本相同。
(第5实施例)近年来,在存储多个位的多值高速缓存的写入操作中,为了使阈值电压的分布变窄,所以提出了通过写入(バスラィト)方式。
图23示出了现有通过写入方式的写入顺序。
该通过写入方式是在第一页写入(图23(a))和第二页写入(图23(b))的第一编程顺序中,将存储单元的阈值电压作为比本来的阈值电压低的验证电位“a*’”、“b*’”,进行第一页的写入和验证操作。通过该编程验证后,在第一页写入和第二页写入的第二页的编程顺序中,将验证电位作为本来的阈值电压“a’”、“b’”、“c’”,进行写入和验证操作。这种通过写入方式是在进行了一次写入的单元的阈值电压达到稍高一点的阈值电压之前再次进行写入。再次写入时的阈值电压的变化率变小。因此,阈值电压分布变小。
通常,在NAND型闪速存储器的情况下,一次写入连接同一字线的多个单元中的半数单元。因此,在进行写入验证循环中的最初验证时,阈值电压低的单元多,流入源线的电流多,因此源线是浮动的状态,最早结束写入的单元在该状态下确定阈值电压。之后,当其他单元的写入结束时,源线的电位从浮动状态返回。因此,存在最早结束写入的单元的阈值电压变低、阈值电压分布扩大的问题。但是,在通过写入方式的情况下,可防止阈值电压的分布扩大。
通常,每进行一次编程验证,就使写入电压Vpgm增加ΔVpgm。通过通过写入方式,将第一次写入的写入电压ΔVpgm增大为例如0.4V阶跃(step)。第一次写入顺序结束后,写入电压Vpgm返回初始电压值,在第二次写入中,也是每进行一次编程验证,写入电压Vpgm就增加ΔVpgm。但是,第二次写入电压是以比第一次写入电压ΔVpgm小的电压例如0.2V阶跃,进行写入操作。通过如此设定写入电压,可高速地进行写入。
在上述第1至第4实施例中,在存储单元中写入数据“2”、“3”时,在写入第一页时,向存储单元写入数据“2”是以比本来的阈值电压“b’”低的阈值电压“b*’”进行的,之后,在写入第二页时,以阈值电压“b’”、阈值电压“c’”写入。因此,也是进行上述通过写入。
图23所示的现有通过写入方式的情况下,在第一页的写入中具有在阈值电压“a*’”下进行第一次写入验证和在阈值电压“a’”下进行第二次写入验证这2个顺序。而且,在第二页写入过程中具有在阈值电压“b*”下进行的第一次写入验证和在阈值电压“b*’”、“c*’”下进行的第二次写入验证这2次顺序。
与此相对,第1至第4实施例的情况下,在第一页的写入过程中只具有在阈值电压“b*’”下进行的写入验证,而在第二页的写入过程中只具有在阈值电压“b’”、“c’”下进行的写入验证。因此,当在存储单元中写入数据“1”时,不进行上述通过写入。因此,在第5实施例中,第二页以下面这样的算法写入。
图24示出了适用于第5实施例的数据“1”的写入算法。
首先,如图25所示,设置数据高速缓存SDC、DDC、TDC。在这种状态下,设定比本来的阈值电压低的验证电位“a*’”,利用PDC的数据执行写入操作(S90~S95)。反复编程和验证,直至全部PDC变为高电平(S94~S96)。之后,如图10(b)所示,设置数据高速缓存(S97),进行验证电位为本来的阈值电压“a’”的写入操作。该第二次写入操作和阈值电压“b’”、阈值电压“c’”下的写入同时进行。反复编程和验证,直至全部PDC变为高电平(S98~S104)。
根据上述第5实施例,因为在写入存储单元数据“1”时也能适用于通过写入方式,所以可通过总线方式写入全部数据。
(第6实施例)图26示出了第5实施例变形后的本发明第6实施例。即,第6实施例改变了第二页的写入顺序。如图27(a)所示,在设置数据高速缓存之后,同时进行低于本来的阈值电压的验证电位“a*’”下和阈值电压“b’”、阈值电压“c’”下的写入操作。反复编程和验证,直至全部PDC变为高电平(S110~S119)。之后,如图27(b)所示,翻转SDC的数据并传送到PDC中(S120)。之后,仅将数据“1”的单元的验证电位作为本来的阈值电压“a”写入,反复编程和验证,直至全部PDC变为高电平(S121~S124)。
根据上述第6实施例,可以得到和第5实施例同样的效果。
(第7实施例)图28、图29示出了第5实施例变形后的第7实施例。在上述第5实施例中,写入第二页时,首先在达到验证电位“a*’”之前进行写入,之后,同时进行验证电位“a’”下的和阈值电压“b’”及阈值电压“c’”下的写入操作。
与此相对,在第7实施例中,对于阈值电压超过验证电位“a*’”的单元,在写入时,向位线提供中间电位进行写入。从而,通过减小写入时阈值电压的变化率,可以减小阈值电压的分布。
图28示出了第7实施例中的写入顺序,图29(a)至33(b)示出了数据高速缓存的动作。
(a)从外部输入的数据存储在SDC中,通过内部数据读取读出的数据存储在PDC中(S131~S134,图29(a))。
(b)如图29(b)所示,设定数据高速缓存。
(c)如果VREG=Vdd,REG=Vsg,则在DDC为“1”时,将位线预充电到Vdd,而在DDC为“0”时,不进行预充电(图30(a))。
(d)如果BLC1=中间电位+Vth(=2V+Vth)(Vclamp),则在PDC为“0”时,位线为Vss。在PDC为“1”时,如果进行预充电,则位线仍为Vdd,如果不进行预充电,则位线为中间电位(2V) (图30(b))。
这里,如果选择字线为Vpgm、非选择字线为Vpass,则当位线为Vdd时,不进行写入。当位线为Vss时,开始写入,而在位线为中间电位(2V)时,很少写入(S135)。
(e)写入操作结束后,在字线下降期间,向DDC传送PDC的数据,翻转DDC的数据并传送到PDC中(图30(c))(f) 如图31(a)所示,验证电位“a’”的操作(S136)是在BLC1=高电平(例如Vdd+Vth))、为BLCLAMP提供规定电位例如1V+Vth时,仅在PDC为“1”的情况下(即在存储单元中写入数据“1”的情况下),对位线预充电,而在PDC变为“0”时,不对位线预充电(仍为Vss)。接着,将字线电位作为验证电位“a*’”,对位线进行放电。在位线的放电过程中,使PDC的数据翻转。
(g)使VPRE=Vdd、BLPRE=Vsg后,将TDC充电为Vdd。之后,信号BLCLAMP变为0。9V+Vth,晶体管61t工作。在位线为Vss时,TDC变为Vss,而在位线中剩下预充电电位时,TDC变为Vdd。TDC变为Vdd之时就是在存储单元中写入数据“1”、阈值电压达到验证电位“a*’”之时。在存储单元中没有写入数据“1”时,因为不对位线预充电,所以TDC为Vss。在存储单元中写入了数据“1”但阈值电压未达到验证电位“a*’”时,TDC也是Vss。
这里,如果VREG=高电平,REG=高电平,则当DDC的数据为“1”时,强制性地将TDC变为高电平。因此,TDC变为Vdd之时就是在存储单元中写入数据“1”、阈值电压达到验证电位“a*’”之时和写入非选择的情况。之后,DTG=Vsg,PDC的数据拷贝到DDC中之后,使BLC1=Vsg,将TDC的电位取入PDC中(图31(b))。
(h)接着,稍微升高字线电位,作为验证电位“a’”,对位线进行放电(图32(a))。
之后,使VPRE=Vdd、BLPRE=Vsg,再次将TDC充电到Vdd。接着,信号BLCLAMP变成0.9V+Vth,晶体管61t工作。在位线为Vss时,TDC变为Vss,而在位线中剩下预充电电位时,TDC变为Vdd。TDC变为Vdd之时就是在存储单元中写入数据“1”且达到验证电位“a’”之时。没有在存储单元中写入数据“1”的情况下,不对位线预充电。因此,TDC变为Vss、在存储单元中写入数据“1”、但阈值电压未达到验证电位“a’”时,TDC也为Vss。
这里,如果VREG=高电平,REG=高电平,则当DDC的数据为“1”时(没有在存储单元中写入数据“1”时),强制性地将TDC变为高电平。因此,TDC变为Vdd之时是指在存储单元中未写入数据“1”之时和在存储单元中写入了数据“1”且阈值电压达到验证电位“a’”之时。
之后,使DTG=Vsg,在将PDC的数据拷贝到DDC中之后,使BLC1=Vsg,并将TDC的电位取入PDC中。
(i)DDC的数据向PDC移动,将PDC的数据移至DDC中(图32(b))。
(i)作为在存储单元中写入了数据“1”的单元,当验证电位“a*’”下的写入全部结束时,PDC的数据变为“1”(图33(a))。
(k)作为在存储单元中写入了数据“1”的单元,当验证电位“a’”下的写入全部结束时,DDC的数据全部变为“1”(图33(b))。
(l)验证电位“b’”下的操作(图28,S137)和第1实施例相同,使BLC2=高电平(例如Vdd+Vth)、向BLCLAMP提供规定电位例如1V+Vth。这时,仅在SDC变为“1”时(即,在存储单元中写入数据“1”或“2”时),对位线预充电。当SDC变为“0”时,不对位线预充电(仍为Vss)。
接着,给字线提供验证电位“b’”,使位线放电。在位线放电过程中,DDC的数据移至TDC中。接着,PDC的数据移至DDC中,TDC的数据移至PDC中。之后,将TDC充电为Vdd之后,向BLCLAMP提供规定电位例如0.9V+Vth。这时,TDC变为高电平仅指在存储单元中写入了数据“2”、且阈值电压达到了验证电压“b’”的时候。如果VREG=高电平、REG=Vsg,在DDC的数据为高电平时,强制性地使TDC变为高电平。因此,TDC变为Vdd之时就是在存储单元中写入了数据“2”、阈值电压达到验证电压“b’”的时候,和写入非选择的情况。使DTG=Vsg,在将PDC的数据拷贝到DDC中之后,使BLC1=Vsg,并将TDC的电位取入PDC中。
(m)验证电位“c’”的操作(图28、S138)也和第1实施例一样,使BLPRE=高电平(例如Vdd+Vth)、向BLCLAMP提供规定电位例如1V+Vth并对位线预充电。接着,向字线提供验证电位“c’”,并使位线放电。在位线的放电过程中,DDC的数据移至TDC中。接着,PDC的数据移至DDC中,TDC的数据移至PDC中。之后,在将TDC充电为Vdd之后,给BLCLAMP提供规定电位例如0.9V=Vth。这时,TDC变为高电平之时仅指存储单元的阈值电压达到验证电位“c’”的时候。如果VREG=高电平、REG=Vsg,则在DDC的数据为高电平时,强制性地将TDC变为高电平。因此,TDC变为Vdd之时就是在存储单元中写入了数据“3”、阈值电压达到验证电压“c’”的时候,和写入非选择的情况。接着,使DTG=Vsg,在PDC的数据拷贝到DDC中之后,使BLC1=Vsg,并将TDC的电位取入PDC中。
这样,反复编程和验证操作,直至全部PDC和DDC的数据变为“1”(S139)。
根据第7实施例,对于阈值电压超过验证电位“a*’”的单元,在写入时,向位线提供中间电位进行写入。因此,可减小写入时阈值电压的变化率,可以缩小阈值电压的分布。因此,可高速地进行写入操作。
(第8实施例)图34示出了第8实施例,示出了存储8值(3位)数据的NAND闪速存储器的存储单元阵列1和位线控制电路2。图34所示的构成和图3所示的4值(2位)的构成几乎是相同的,因此,仅对区别之处加以说明。
图34中,通过外部地址选择1条字线时,如虚线所示,选择1个扇区。1个扇区由3个页构成。所述3个页通过地址进行切换。即,因为可以在1个存储单元中存储3位的数据,所以通过地址(第一页、第二页、第三页)进行3位的切换。另外,1个扇区具有2个标志单元FC1、FC2。因此,当选择1条字线时,同时选择2个标志单元FC1、FC2。各标志单元FC1、FC2通过位线与标志用数据存储电路10a、10b连接。标志单元FC1存储进行第二页写入的情况,标志单元FC2存储进行第三页写入的情况。
但是,因为能在1个存储单元中存储3位的数据,所以不用2个标志单元,而只利用1个标志单元,也能存储进行第二页和第三页写入的情况。
为了提高可靠性,分别具有多个标志单元FC1和FC2,在这多个单元中存储相同的数据,读出时,可以利用多数判定原则来决定从多个标志单元中读出的数据。
下面对第8实施例的操作进行说明。
删除操作和4值的情况一样。
图35、图36示出了存储单元的数据和存储单元的阈值电压的关系。如图35(a)所示,进行删除操作时,存储单元的数据为“0”。通过写入第一页,存储单元的数据变为数据“0”和“4”(图35(b))。写入第二页之后,存储单元的数据变为数据“0”、“2”、“4”、“6”(图35(c)、图36(a))。写入第三页之后,存储单元的数据变为数据“0”~“7”(图36(b))。在本实施例中,存储单元的数据是按阈值电压由低到高的方向定义的。
图37(a)(b)示出了本实施例中的2个写入顺序的例子。在方块内,进行从靠近源线的存储单元开始逐页写入的操作。在图37(a)(b)中,为了便于说明,字线为4条。图37(a)所示的写入顺序和图7所示的写入顺序类似。与此相对,图37(b)所示的写入顺序和图37(a)有些不同。即,在写入第一页之后,不是开始向邻接的单元写入第二页,而是在同一单元中写入第二页,之后,在写入第三页之前,进行在邻接单元的第二页写入,然后进行第三页的写入。这样,可考虑第三页的邻接单元的影响后进行写入。
使第三页字线的读出电位为本来的“a”、“b”、“c”、“d”、“e”、“f”、“g”,验证电位为“a’”、“b’”、 “c’”、“d’”、“e’”、“f’”、“g’”。使第二页的读出电位为比本来的读出电位低的值“b*”(=“a”),“d*”,“f*”,第二页中的验证电位为比其稍高的值“b*’”,“d*’”,“f*’”。使第一页的读出电位为比本来的读出电位低的电位“d**”(=“a”),第一页中的验证电位为比其稍高的电位“d**’”。
(编程和编程验证)编程操作首先指定地址,选择图34所示的3个页。本存储器只能按3页中的第一页、第二页、第三页的顺序进行编程操作。第一页和第二页的编程和4值的情况相同。
图35(a)~(c)所示的4值存储单元的数据和存储单元的阈值电压对应于图1(a)~(c)。编程和编程验证的方框图和图8、图9相同,故省略了。但是,存储单元的数据定义和字线电位在4值情况下是“0”、“1”、“2、“3”以及“a”、“b”、“c”,而在8值情况下则是“0”、“2”、“4”、“6”以及“b”、“a”、“r”。
(第一页编程)第一页的编程方框图和图8是一样的。但是,如上所述,改变了字线电位的定义。
(邻接单元编程)如图37(a)所示,在存储单元1的第一页中写入1位的数据之后,进行对和存储单元1在字方向上邻接的存储单元2的第一页写入。接着,进行对和存储单元1在位方向上邻接的存储单元3的第一页写入、对和存储单元1在对角方向上邻接的存储单元4的第一页的写入。当进行这些写入操作时,根据写入数据,通过FG-FG间电容提高存储单元1的阈值电压。因此,存储单元1的数据“0”和数据“4”的阈值电压分布如图35(b)所示,向着阈值电压高的方向扩展。
之后,在存储单元1的第二页中再次写入1位的数据。
(第二页编程)第二页的编程方框图是通过写入方式的写入,和图9是一样的,但如上所述,字线电位的定义被改变了。数据装载、内部读出后数据高速缓存内的数据以及数据高速缓存设定后的数据高速缓存内的数据和图10(a)(b)相同。
(邻接单元编程)如图37(a)所示,在存储单元1的第一页和第二页中写入数据后,在存储单元2的第二页、存储单元5、6的第一页和存储单元3、4的第二页中写入数据。当进行这些写入操作时,根据写入数据,通过FG-FG间电容提高存储单元1的阈值电压。因此,存储单元1的数据“2”、数据“4”、数据“6”的阈值电压分布扩展成图36(a)所示。
之后,再次在存储单元1的第三页中写入1位的数据。
(第三页编程)图38示出了第三页的编程方框图。第三页的编程操作也是首先指定地址,选择图34所示的3个页。
接着,从外部输入写入数据并存储在所有数据存储电路内的SDC中(S141)。如果从外部输入数据“1”(不进行写入),则图6所示的数据存储电路10的SDC变为高电平,如果输入数据“0”(进行写入),则SDC变为低电平。之后,当输入写入命令时,由于是第三页的编程,因此为了在标志单元FC1、FC2中写入数据,将数据“0”输入到标志用数据存储电路10a、10b内。
如图36(b)所示,第三页的编程在存储单元的数据为“0”的情况下,如果从外部输入的数据是“1”,则存储单元的数据仍保持“0”,如果从外部输入的数据为“0”,则存储单元的数据变为“1”。
在存储单元的数据为“2”的情况下,如果从外部输入的数据是“0”,则存储单元的数据仍为“2”。但是,在进行第二页的写入时,使用比通常值低的验证电位“b*’”来验证存储单元的数据是否已经达到“2”。
因此,存储数据“2”的存储单元进行写入直至变成作为本来的验证电位的电位“b’”。在存储单元的数据为“2”的情况下,如果从外部输入的数据是“1”, 则存储单元的数据变为“3”。
在存储单元的数据为“4”的情况,如果从外部输入的数据是“1”,则存储单元的数据仍为“4”。但是,在进行第二页的写入时,使用比通常值低的验证电位“d*’”来验证存储单元的数据是否已经达到“4”。因此,存储数据“4”的存储单元进行写入直至变成作为本来的验证电位的电位“d’”。在存储单元的数据为“4”的情况下,如果从外部输入的数据是“0”,则存储单元的数据变为“5”。
在存储单元的数据为“6”的情况下,如果从外部输入的数据是“0”,则存储单元的数据仍为“6”。但是,在进行第二页的写入时,使用比通常值低的验证电位“f*’”来验证存储单元的数据是否已经达到“6”。因此,存储数据“6”的存储单元进行写入直至变成作为本来的验证电位的电位“f’”。在存储单元的数据为“6”的情况下,如果从外部输入的数据是“1”,则存储单元的数据变为“7”。
(第三页的第一次编程)第三页的编程是在存储单元中写入数据“1”~“7”。尽管可同时对这些数据进行编程,但在本实施例中,首先,在存储单元中写入数据“4”~“7”这4个数据。在以通过写入方式编程的情况下,在写入了数据“1”的存储单元中完全不进行写入。为此,粗略地进行对写入了数据“1”的存储单元的写入。之后,进行存储单元数据“1”~“3”的写入。以下,进行具体说明。
(内部数据读出1和数据高速缓存设定1)(S142~S144)首先,在向单元进行写入之前,判断第二页的存储单元的数据是“4”或“6”还是“0”或“2”是指判断存储单元的数据是“6“还是数据“0”、“2”、“4”中的任一个。因此,将字线电位顺次设定为“d*”、“f*”,并进行内部读出操作(S142、S143)。
图39(a)示出了内部读出后的数据高速缓存的状态。之后,通过操作数据高速缓存,如图39(b)所示地设定数据高速缓存(S144)。
在图39(b)中,存储单元的数据是“0”~“3”时,PDC是高电平。存储单元的数据是“4”时,PDC被设定为低电平,DDC被设定为低电平,SDC被设定为高电平。存储单元的数据是“5”时,PDC被设定为低电平,DDC被设定为高电平,SDC被设定为高电平。存储单元的数据是“6”时,PDC被设定为低电平,DDC被设定为高电平,SDC被设定为低电平。存储单元的数据是“7”时,PDC、DDC、SDC都被设定为低电平。
(第三页验证数据“4”的验证)(S145)在存储单元中写入数据“4”的单元在第二页中进行写入直至达到比本来的验证电位“d’”低的验证电位“d*’”。之后,存在通过写入邻接单元而提高写入了数据“4”的单元的阈值电压的情况,也有达到本来的验证电位“d’”的单元。因此,首先,进行数据“4”的验证。
用于判断存储单元的阈值电压是否已经达到数据“4”的编程验证操作向所选字线提供比读出时电位“d”稍高的电位“d’”。
首先,给所选块内的非选择字线和选择线SG1提供读出时的电位Vread,使图6所示的数据存储电路10的信号BLPRE为例如1V+Vth,BLC2为规定电压例如Vdd+Vth,并对位线预充电。这时,在存储单元中写入数据“7”、“6”时,不对位线预充电,仅在存储单元中写入数据“0”~“5”时对位线预充电。
接着,如果信号VREG=Vss、信号REG=高电平,则在存储单元中写入数据“6”、“5”时,预充电的电位变为Vss。即,对位线预充电之时仅是在存储单元中写入数据“0”、“3”、“4”的时刻。接着,单元源极侧的选择线SG2变为高电平。由于阈值电压比“d’”高的单元关断,所以位线仍为高电平,由于阈值电压比“d’”低的单元导通,所以位线变成Vss。在位线放电过程中,一旦TDC的节点N3变成Vss,信号REG变为高电平,晶体管61Q导通,DDC的数据移至TDC中。接着,一旦DTG导通,PDC的数据移至DDC中。之后,TDC的数据移至PDC中。
接着,通过使信号BLPRE为规定电压例如Vdd+Vth,将TDC的节点N3预充电为Vdd。之后,信号BLCLAMP变为0.9V+Vth,晶体管61t工作。位线为低电平时,TDC的节点N3变成低电平,位线为高电平时,TDC的节点N3变成高电平。这里,如果进行写入,则将低电平存储在DDC中,如果不进行写入,则在DDC中存储高电平。因此,当信号VREG为Vdd、信号REG为电平时,仅在不进行写入时将TDC的节点强制性地变为高电平。该操作之后,PDC的数据移至DDC中,将TDC的电位读入PDC。在PDC中锁存高电平的情况仅是指不进行写入的时候、和在存储单元中写入数据“4”且单元的阈值电压达到验证电位“d’”的时候。在PDC中锁存低电平的情况是在单元的阈值电压未达到“d’”时和在存储单元中写入数据“7”、“6”、“5”时。
(第三页验证存储单元数据“6”的验证)(S146)在第二页的写入中,写入了数据“6”的单元进行写入,直至达到比本来的验证电位“f’”低的验证电位“f*’”。之后,存在由于写入邻接单元而提高阈值电压的情况,也存在达到本来的验证电位“f’”的单元。为此,接着进行存储单元数据“6”的验证。
数据“6”的验证操作和第二页写入中的数据“4”(在第1至第7的实施例中第二页写入中的数据“2”)的验证完全相同。但是,验证电位是“f’”。
(编程操作)(S147)编程操作和第一页、第二页的编程操作完全相同。即,在PDC中存储数据“1”时,不进行写入,而在存储数据“0”时,进行写入。之后,验证数据“4”~“7”。数据“4”、“6”的验证操作(S148、S150)和上述S145、S146是相同的,因此省略掉了。
(第三页验证存储单元数据“5”的验证)(S149)数据“5”的验证操作和第二页写入中的数据“2”(在第1至第7的实施例中第二页写入中的数据“1”)的验证完全相同。但是,验证电位是“e’”。
(第三页验证存储单元数据“7”的验证)(S151)数据“7”的验证操作和第二页写入中的数据“6”(在第1至第7的实施例中第二页写入中的数据“3”)的验证完全相同。但是,验证电位是“g’”。
PDC为低电平时,再次进行写入操作,反复该编程操作和验证操作(S152),直至全部数据存储电路的PDC的数据变为高电平。
在上述说明中,1次编程之后,进行4次验证。但是,在编程的初始循环中,存储单元的阈值电压不上升。因此,可省略数据“7”的验证、数据“7”、“6”的验证、数据“7”、“6”、“5”的验证。
在接近编程结束的循环中,可以省略数据“44”的验证、数据“4”、“5”的验证、数据“4”、“5”、“6”的验证。
(第二次编程)(S153~S158)在以通过写入方式编程的情况下,在写入了数据“1”的存储单元中,完全不进行写入。因此,如上所述,可以粗略地对该存储单元进行写入。不进行通过写入方式的编程时,可省略第二次编程。
在第二次编程中,在标志用数据存储电路10b中存储数据“0”(S153)。
(内部数据读出2及数据高速缓存设定2)(S154、S155)接着,在向存储单元进行写入之前,为了判断第二页的存储单元的数据是“0”还是“2”、“4”、“6”,使字线电位为“a”,进行内部读出操作(S154)。之后,通过操作数据高速缓存,如图40(a)所示,设定数据高速缓存(S155)。
即,存储单元的数据为“1”时,PDC被设定为低电平。存储单元的数据不是“1”时,PDC被设定为高电平。
在这种状态下,进行编程操作(S156)。
(第三页验证存储单元数据“1”的验证)(S157)数据“1”的验证操作和第三页写入中的数据“5”及第二页写入中的数据“2”(在第1至第7的实施例中第二页写入中的数据“1”)的验证完全相同。但是,验证电位是“a*’”。
在PDC为低电平时,再次进行写入操作,反复编程操作和验证操作(S158),直至全部的数据存储电路的PDC的数据变为高电平。
(第三次编程)最后,如下面描述的,在存储单元中写入数据“1”、“2”、“3”。
(内部数据读出3和数据高速缓存设定3)(S159、S160)首先,在存储单元中写入数据之前,为了判断写入第二页的存储单元的数据是“0”、“2”还是“4”、“6”,使字线电位为“d*’”,进行内部读出操作(S159)。
之后,如图40(b)所示,通过操作数据高速缓存,设定数据高速缓存(S160)。即,存储单元的数据为“0”时,PDC设定为高电平,DDC设定为高电平,SDC设定为高电平。存储单元的数据为“1”时,PDC设定为低电平,DDC设定为高电平,SDC设定为高电平。存储单元的数据为“2”时,PDC设定为低电平,DDC设定为高电平,SDC设定为低电平。存储单元的数据为“3”时,PDC设定为低电平,DDC设定为低电平,SDC设定为低电平。存储单元的数据为“4”~“7”时,PDC全部设定为高电平。
(第三页验证存储单元数据“1”的验证)(S161)在以通过写入方式编程的情况下,在第二次编程中,写入了数据“1”的存储单元进行写入,直至达到比本来的验证电位“a’”低的验证电位“a*’”。
由此,也包括达到本来的验证电位“a’”的单元。因此,首先,验证数据“1”。数据“1”的验证操作和第三页写入中的数据“5”及第二页写入中的数据“2”(在第1至第7的实施例中第二页写入中的数据“1”)的验证完全相同。但是,验证电位是“a’”。
(第三页验证存储单元数据“2”的验证)(S162)在第二页写入中,写入了数据“2”的存储单元进行写入,直至达到比本来的验证电位“b’”低的验证电位“b*’”。之后,存在由于写入邻接单元而提高了阈值电压的情况,也存在达到本来的验证电位“b’”的单元。为此,首先,验证数据“2”。
数据“2”的验证操作和第三页写入中的数据“6”的验证及第二页写入中的数据“2”(在第1至第7的实施例中第二页写入中的数据“1”)的验证完全相同。但是,验证电位是“b’”。
(编程操作)(S163)编程操作和第一页、第二页及第三页的第一次和第二次编程操作完全相同。在PDC中存储数据“1”时,存储单元不进行写入。而在存储数据“0”时,存储单元进行写入。
之后,顺次设定验证电位“a’”、““b’”并进行数据“1”、“2”的验证(S164、S165),同时,进行以下数据“3”的验证。
(第三页验证数据“3”的验证)(S166)数据“3”的验证操作和第三页写入中的数据“7”的验证及第二页写入中的数据“6”(在第1至第7的实施例中第二页写入中的数据“3”)的验证完全相同。但是,验证电位是“c’”。
在PDC为低电平时,再次进行写入操作,反复编程操作和验证操作(S167),直至全部的数据存储电路的PDC的数据变为高电平。
在上述说明中,1次编程之后,进行4次验证。但是,在编程的初始循环中,因为阈值电压不提高,所以可以省略数据“3”的验证、数据“3”、“2”的验证。
而且,在接近编程结束的循环中,结束数据“1”的写入或数据“2”及数据“1”的写入。因此,可以省略这些验证操作。如果不需要验证数据“1”,则不需要在SDC中保存数据。因此,从外部读入下一个用于写入的数据,可存储在SDC中。根据这种构成,可以更高速地操作。
标志单元FC1、FC2在第一页和第二页中不写入数据,仅在第三页中写入数据。因此,标志单元FC1、FC2的数据变为“1”。
(第一页读出)图41(a)示出了第一页的读出操作。
首先,指定地址,选择图34所示的3个页。如图35(a)~35(c)、图36(a)(b)所示,在写入第二页之前和之后以及在写入第三页之前和之后,阈值电压的分布发生变化。因此,首先,使字线电位为“a”,进行读出操作,判断的标志单元是否进行了写入(S171、S172)。在存在多个标志单元时,通过多数判定原则来进行判断。
在从标志单元FC1、FC2读出的数据都为“1”(标志单元FC1、FC2不同时写入)时,不进行第二页和第三页的写入。因此,存储单元的阈值电压分布变成图35(a)或图35(b)所示。为了判断这些存储单元的数据,可以使字线电位为“a”,进行读出操作,在字线电位“a”下进行读出操作的结果已经读出到数据存储电路中。因此,可以将这些数据输出到外部(S173)。
标志单元FC1的数据为“0”、标志单元FC2的数据为“1”(在标志单元FC1中写入、不在标志单元FC2中写入)时,写入第二页的数据,而不写入第三页的数据。因此,单元的阈值电压分布变成图35(c)或图36(a)所示。为了判断这些存储单元的第一页的数据,可以将字线电位设定为“d*”,进行读出操作,在以字线电位“d*”进行读出操作之后,可以将数据输出到外部(S174、S175、S173)。
标志单元FC1、FC2的数据都为“0”(标志单元FC1、FC2同时写入)时,写入第二页和第三页的数据。因此,单元的阈值电压分布变为图36(b)。为了判断这些存储单元的第一页的数据,将字线电位设定为“d”,进行读出操作,可以将由此读出的数据输出到外部(S172、S174、S176、S173)。
(第二页读出)图41(b)示出了第二页的读出操作。第二页的读出操作首先指定地址,选择图34所示的3个页。之后,使字线电位为“a”,进行读出操作(S181),判断是否在标志单元FC1、FC2中写入数据(S182)。在存在多个标志单元时,通过多数决定原则进行判断。
在从标志单元FC1、FC2读出的数据都为“1”(标志单元FC1、FC2不同时写入)时,不写入第二页和第三页的数据,因此,输出数据固定为“1”(S183)。
标志单元FC1的数据为“0”、标志单元FC2的数据为“1”(标志单元FC1写入、标志单元FC2不写入)时,写入第二页的数据,而不写入第三页的数据。因此,单元的阈值电压分布变成图35(c)或图36(a)的状态。为了判断这些存储单元的第一页的数据,可以使字线电位为“a”和“f*”,进行读出操作。在字线电位为“a”时的读出结果已经取入数据存储电路中。因此,可以将字线电位设定为 “f*”,进行读出操作,将该读出的数据输出到外部(S185、S186)。
在标志单元FC1、FC2的数据都为“0”(标志单元FC1、FC2同时写入)时,写入第二页和第三页的数据。因此,单元的阈值电压分布变为图36(b)。为了判断这些存储单元的第一页的数据,可以将字线电位设定为“b”、“f”,进行读出操作。即,在将字线电位设定为“b”进行读出操作之后,将字线电位设定为“f”进行读出操作,将读出的数据输出到外部(S187、S188、S186)。
(第三页读出)图42示出了第三页的读出操作。这时,首先指定地址,选择图34所示的3个页。在第三页写入前后,阈值电压的分布发生变化,因此,首先使字线电位为“a”,进行读出操作,判断标志单元FC1、FC2中是否写入数据(S191、S192)。
在标志单元FC1、FC2的数据都为“1”(标志单元FC1、FC2不同时写入)时, 不写入第三页, 因此,输出数据固定为“1”(S193)。
标志单元FC1的数据为“0”、标志单元FC2的数据为“1”(在标志单元FC1中写入数据、在标志单元FC2中不写入数据)时,不写入第三页的数据。因此,输出数据固定为“1”(S194、S193)。
标志单元FC1、FC2的数据都为“0”(同时写入标志单元FC1、FC2)时,写入第二页和第三页的数据。因此,单元的阈值电压分布变为图36(b)。为了判断这些存储单元的第一页的数据,可以使字线电位为“a”、“c”、“e”、“g”,进行读出操作。将字线电位设定为“a”后的读出结果已经取入数据存储电路中。因此,接着,将字线电位顺次设定为“c”、“e”、“g”进行读出操作,将读出的数据输出到外部(S195、S196、S197、S198)。
(删除)删除操作和第1至第7实施例相同,说明从略。
根据上述第8实施例,能可靠且高速地写入、读出8值(3位)的数据。
第8实施例所示的8值(3位)NAND型闪速存储器在写入第三页时,在第一次写入中写入数据“4”~“7”,在第二次写入中粗略地写入数据“1”,在第三次写入中写入数据“1”~“3”。但是,不限于此,也可以首先写入数据“2”、“4”、“6”,之后,写入数据“1”、“3”、“5”、“7”。
这种写入可以得到和第8实施例相同的效果。
当然,可以在本发明的精神的范围内对本发明进行各种变形。
发明效果以上,根据详细描述的本发明,提供一种可通过邻接单元的数据防止阈值电压变化的非易失性半导体存储装置。
权利要求
1.一种半导体存储装置,其特征在于,具有存储单元阵列,由用于存储n值(n是2以上的自然数)的多个存储单元配置成矩阵状;写入电路,用于在存储有上述存储单元阵列的j值(j<n)的数据的第一存储单元中,在存储下一个至少1值的数据之前,将j值以下的数据写入与上述第一存储单元邻接的至少一个存储单元中。
2.根据权利要求1所述的半导体存储装置,其特征在于,上述写入电路在将j值以下的数据写入上述邻接的至少一个存储单元中时,以低于本来数据的第一阈值电压写入数据,在完成对上述邻接的至少一个存储单元的写入之后,以高于上述第一阈值电压的第二阈值电压进行写入。
3.根据权利要求2所述的半导体存储装置,其特征在于,上述写入电路同时进行以高于上述第一阈值电压的第二阈值电压写入上述第一存储单元的j值数据的写入操作和上述第一存储单元的下一个至少1值数据的写入操作。
4.根据权利要求1所述的半导体存储装置,其特征在于,上述存储单元阵列还具备至少具有第一和第二逻辑电平的第二存储单元,在上述第一存储单元读出时,若上述第二存储单元为第一逻辑电平,则进行适应于上述第一阈值电压的读出操作,若上述第二存储单元为第二逻辑电平,则进行适应于上述第二阈值电压的读出操作。
5.根据权利要求4所述的半导体存储装置,其特征在于,上述写入电路在以上述第二阈值电压写入上述第一存储单元的j值数据时,在上述第二存储单元中写入数据,将上述第二存储单元设定为第一或第二逻辑电平。
6.根据权利要求4所述的半导体存储装置,其特征在于,上述写入电路在上述第一存储单元中写入(j+1)值的数据时,在上述第二存储单元中写入数据,将第二存储单元从第一逻辑电平设定为第二逻辑电平。
7.根据权利要求4所述的半导体存储装置,其特征在于,上述写入电路在以第二阈值电压写入上述第一存储单元的j值数据的操作、和在上述第一存储单元中写入(j+1)值的数据的写入操作中,在上述第二存储单元中写入数据,从第一逻辑电平设定为第二逻辑电平。
8.根据权利要求4所述的半导体存储装置,其特征在于,上述存储单元阵列具备与第一存储单元同时被选定的多个第二存储单元,在写入操作时,各第二存储单元存储同一逻辑电平的数据,读出操作时,通过对从上述多个第二存储单元读出的数据进行多数判定,来判定上述第一和第二逻辑电平。
9.根据权利要求1所述的半导体存储装置,其特征在于,上述邻接的存储单元是和第一存储单元在字方向上邻接的存储单元。
10.根据权利要求1所述的半导体存储装置,其特征在于,上述邻接的存储单元是和第一存储单元在位方向上邻接的存储单元。
11.一种半导体存储装置,其特征在于,具有存储单元阵列,具有至少一个第一存储单元,其存储n值(n是2以上的自然数)的数据,并配置成矩阵状;和与上述第一存储单元被同时选定的至少一个第二存储单元;写入电路,在存储有上述存储单元阵列的j值(j<n)的数据的第一存储单元中,在写入下一个至少1值的数据时,写入使上述第二存储单元的逻辑电平从第一逻辑电平变为第二逻辑电平的数据。
12.根据权利要求11所述的半导体存储装置,其特征在于,还具有读出电路,用于在从上述第一存储单元读出数据时,若上述第二存储单元的数据是第一逻辑电平,则进行适应于上述第一存储单元的j值数据的读出操作,若上述第二存储单元的数据是第二逻辑电平,则进行适应于上述第一存储单元的(j+1)值以上的数据的读出操作。
13.根据权利要求11所述的半导体存储装置,其特征在于,上述写入电路具有数据存储电路,用于在存储有上述j值(j<n)数据的第一存储单元中,写入下一个至少1值的数据时,将从外部输入的数据存储在上述数据存储电路中,利用从上述第一存储单元读出的数据,变更或保持存储在上述数据存储电路中的上述数据的逻辑电平,并根据存储在上述数据存储电路中的数据,变化或维持上述第一存储单元的数据。
14.根据权利要求11所述的半导体存储装置,其特征在于,还具有读出电路,用于在读出上述第一存储单元的(i+1)值以上的数据时,若上述第二存储单元是第一逻辑电平,则将输出数据变为一个恒定值。
15.一种半导体存储装置,其特征在于,具有存储单元阵列,具有至少一个第一存储单元,其存储k(k是2以上的自然数)位的数据,并配置成矩阵状;和与上述第一存储单元被同时选定的至少一个第二存储单元;写入电路,在存储有上述存储单元阵列的i位(i<k)数据的第一存储单元中,在写入下一个至少1位数据时,写入将上述第二存储单元的逻辑电平从第一逻辑电平变为第二逻辑电平的数据。
16.根据权利要求15所述的半导体存储装置,其特征在于,还具有读出电路,用于在从上述第一存储单元读出数据时,若上述第二存储单元的数据是第一逻辑电平,则进行适应于上述第一存储单元的i位数据的读出操作,如果上述第二存储单元的数据是第二逻辑电平,则进行适应于上述第一存储单元的(i+1)位以上的数据的读出操作。
17.根据权利要求15所述的半导体存储装置,其特征在于,上述写入电路具有数据存储电路,用于在存储有上述i位(i<k)数据的第一存储单元中,写入下一个至少1位数据时,将从外部输入的数据存储在上述数据存储电路中,利用从上述第一存储单元读出的数据,变更或保持存储在上述数据存储电路中的上述数据的逻辑电平,并根据存储在上述数据存储电路中的数据,变化或维持上述第一存储单元的数据。
18.根据权利要求15所述的半导体存储装置,其特征在于,还具有读出电路,用于在读出上述第一存储单元的(i+1)位以上的数据时,若上述第二存储单元是第一逻辑电平,则将输出数据变为一个恒定值。
19.根据权利要求15所述的半导体存储装置,其特征在于,上述存储单元阵列具有与上述第一存储单元被同时选择的多个第二存储单元,写入操作时,各第二存储单元存储同一逻辑电平的数据,读出操作时,通过对从上述多个第二存储单元读出的数据进行多数判定,来判定上述第一和第二逻辑电平。
20.根据权利要求15所述的半导体存储装置,其特征在于,上述存储单元阵列具有和上述第一存储单元同时选择的第二存储单元和第三存储单元,还具有写入电路,上述写入电路在上述第一存储单元中写入下面的1位时,在上述第二存储单元中写入数据,在上述第一存储单元中写入再下面的1位数据时,在上述第三存储单元中写入数据。
21.根据权利要求20所述的半导体存储装置,其特征在于,还具有读出电路,用于在从上述第一存储单元读出数据时,如果上述第二存储单元的数据是第一逻辑电平,则进行适应于上述第一存储单元的i位数据的读出操作;上述第二存储单元的数据是第二逻辑电平、上述第三存储单元的数据是第一逻辑电平时,进行适应于上述第一存储单元的(i+1)位数据的读出操作;上述第二存储单元的数据是第二逻辑电平、上述第三存储单元的数据是第二逻辑电平时,进行适应于上述第一存储单元的(i+2)位数据的读出操作。
22.根据权利要求20所述的半导体存储装置,其特征在于,上述存储单元阵列具有和上述第一存储单元同时选择的第二存储单元和第三存储单元,上述写入电路在上述第一存储单元中写入下面的1位时,在上述多个第二存储单元中写入同一逻辑电平的数据,在上述第一存储单元中写入再下面的1位数据时,在上述第三存储单元中写入同一逻辑电平的数据,上述读出电路在从上述第一存储单元读出数据时,通过对从上述多个上述第二存储单元读出的数据进行多数判定来决定第一及第二逻辑电平,通过对从上述多个第三存储单元读出的数据进行多数判定来决定第一及第二逻辑电平。
23.一种半导体存储装置具有存储单元,用于存储k(k是2以上的自然数)位;第一存储电路,用于存储从外部输入的数据;第二存储电路,用于存储从上述存储单元读出的数据或从外部输入的数据;控制电路,用于在写入操作时,根据上述存储单元中存储的数据,保持或变更上述第一存储电路的数据,保持或变更上述第二存储电路的数据,在写入操作的过程中,若在写入操作中不需要上述第一存储电路存储的数据,则将下一个写入数据从外部输入到上述第一存储电路中。
24.一种半导体存储装置,其特征在于具有存储单元阵列,具有至少一个第一存储单元,配置成矩阵状,用于存储k(k是2以上的自然数)位数据;和与上述第一存储单元同时选定的至少一个第二存储单元;写入电路,在存储有上述存储单元阵列的i位(i<k)数据的第一存储单元中,在存储下面至少1位的数据之前,在与上述第一存储单元邻接的至少一个存储单元中写入i位以下的数据,当在上述第一存储单元中写入1位数据时,在上述第二存储单元中写入数据;读出电路,当输出从上述第一存储单元读出的数据时,根据上述第二存储单元中存储的数据,控制输出数据的逻辑电平。
25.根据权利要求24所述的半导体存储装置,其特征在于,还具有与上述至少一个第一存储单元同时选定的至少一个第三存储单元。
26.根据权利要求25所述的半导体存储装置,其特征在于,上述写入电路在于上述第一存储单元中写入i+1位数据的同时,在上述第二存储单元中写入数据,在于上述存储单元中写入i+2位数据的同时,在上述第三存储单元中写入数据,上述读出电路根据上述第二、第三存储单元的数据,控制从上述第一存储单元读出的数据的输出。
27.一种半导体存储装置,其特征在于,具有通过多个阈值电压存储多个数据的存储元件,第一数据存储电路和第二数据存储电路,与位线连接,用于根据从外部提供的数据和从上述存储元件中读出的数据,存储第一或第二逻辑电平的数据,上述第一数据存储电路的数据为第一逻辑电平时,进行使存储单元的阈值电压变化的第一写入操作,在上述第一数据存储电路的数据为第二逻辑电平时,如果上述第二数据存储电路的数据为第一逻辑电平,进行使阈值电压变化的第二写入操作,在上述第一数据存储电路的数据为第二逻辑电平时,如果上述第二数据存储电路的数据为第二逻辑电平,则不改变阈值电压,在第一验证操作中,上述第一数据存储电路的数据为第一逻辑电平,上述第二数据存储电路的数据为第一逻辑电平,上述存储单元的阈值电压达到第一验证电位时,使上述第一数据存储电路的数据变化为第二逻辑电平,当上述存储单元的阈值电压未达到上述第一验证电位时,不改变上述第一数据存储电路的数据,上述第一数据存储电路的数据为第一逻辑电平,上述第二数据存储电路的数据为第二逻辑电平时,不改变上述第一数据存储电路的数据,上述第一数据存储电路的数据为第二逻辑电平时,不改变上述第一数据存储电路的数据而使之保持在第二逻辑电平,在第二验证操作中,上述第二数据存储电路的数据为第一逻辑电平、上述存储单元的阈值电压达到第二验证电位的阈值电压时,使上述第二数据存储电路的数据变化为第二逻辑电平,上述存储单元的阈值电压未达到上述第二验证电位的情况下,上述第二数据存储电路的数据不变化,仍保持第一逻辑电平,进行写入动作直至上述第一数据存储电路的数据变为第二逻辑电平、上述第二数据存储电路的数据变成第二逻辑电平。
28.根据权利要求27所述的半导体存储装置,其特征在于,上述第二写入操作中的阈值电压的变化小于上述第一写入操作中的阈值电压的变化。
29.根据权利要求28所述的半导体存储装置,其特征在于,上述第二验证电位高于上述第一验证电位。
全文摘要
在存储i位数据的存储单元1中存储下一个数据时,事先在邻接的存储单元1中写入i位以下的数据。i位以下数据的写入比本来的阈值电压(存储i位数据时的实际阈值电压)低。写入邻接的存储单元2之后,提升存储单元1的阈值电压进行写入。在提升阈值电压进行写入前后,i位数据或是本来的阈值电压,或是比它低的阈值电压。为了加以区别,准备标志用的存储单元(标志单元),进行对应该标志单元的数据的读出操作。
文档编号G11C16/12GK1505153SQ20031011867
公开日2004年6月16日 申请日期2003年11月28日 优先权日2002年11月29日
发明者柴田昇, 田中智晴, 晴, 柴田 申请人:株式会社东芝
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1