以下、本発明の実施の形態について、図面を参照して説明する。
(第1の実施形態)
図2は、例えば4ビット、16値のデータを記憶するNAND型フラッシュメモリの概略構成を示している。
メモリセルアレイ1は、複数のビット線と複数のワード線と共通ソース線を含み、例えばEEPROMセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ1には、ビット線を制御するためのビット制御回路2とワード線制御回路6が接続されている。
ビット線制御回路2は、ビット線を介してメモリセルアレイ1中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ1中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ1中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行なう。ビット線制御回路2には、カラムデコーダ3、データ入出力バッファ4が接続されている。ビット線制御回路2内のデータ記憶回路はカラムデコーダ3によって選択される。データ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ4を介してデータ入出力端子5から外部へ出力される。
また、外部からデータ入出力端子5に入力された書き込みデータは、データ入出力バッファ4を介して、カラムデコーダ3によって選択されたデータ記憶回路に入力される。
ワード線制御回路6は、メモリセルアレイ1に接続されている。このワード線制御回路6は、メモリセルアレイ1中のワード線を選択し、選択されたワード線に読み出し、書き込みあるいは消去に必要な電圧を印加する。
メモリセルアレイ1、ビット線制御回路2、カラムデコーダ3、データ入出力バッファ4、及びワード線制御回路6は、制御信号及び制御電圧発生回路7に接続され、この制御信号及び制御電圧発生回路7によって制御される。制御信号及び制御電圧発生回路7は、制御信号入力端子8に接続され、外部から制御信号入力端子8を介して入力される制御信号ALE(アドレス・ラッチ・イネーブル)、CLE(コマンド・ラッチ・イネーブル)、WE(ライト・イネーブル)によって制御される。
前記ビット線制御回路2、カラムデコーダ3、ワード線制御回路6、制御信号及び制御電圧発生回路7は書き込み回路、及び読み出し回路を構成している。
また、制御信号及び制御電圧発生回路7は、ダイナミックデータキャッシュ(DDC)制御回路7−1を有している。このDDC制御回路7−1は、後述するように、データ記憶回路に含まれるダイナミックラッチ回路としての複数のDRAMのリフレッシュ動作を制御する制御信号を発生する。
図3は、図2に示すメモリセルアレイ1及びビット線制御回路2の構成を示している。メモリセルアレイ1には複数のNANDセルが配置されている。1つのNANDセルは、直列接続された例えば32個のEEPROMからなるメモリセルMCと、選択ゲートS1、S2とにより構成されている。選択ゲートS2はビット線BL0eに接続され、選択ゲートS1はソース線SRCに接続されている。各ロウに配置されたメモリセルMCの制御ゲートはワード線WL0〜WL29、WL30、WL31に共通接続されている。また、選択ゲートS2はセレクト線SGDに共通接続され、選択ゲートS1はセレクト線SGSに共通接続されている。
ビット線制御回路2は複数のデータ記憶回路10を有している。各データ記憶回路10には、一対のビット線(BL0e、BL0o)、(BL1e、BL1o)…(BLie、BLio)、(BL8ke、BL8ko)が接続されている。
メモリセルアレイ1は、破線で示すように、複数のブロックを含んでいる。各ブロックは、複数のNANDセルにより構成され、例えばこのブロック単位でデータが消去される。また、イレーズ動作は、データ記憶回路10に接続されている2本のビット線について同時に行なわれる。
また、ビット線の1つおきに配置され、1つのワード線に接続された複数のメモリセル(破線で囲まれた範囲のメモリセル)は、1セクタを構成する。このセクタ毎にデータが書き込まれ、読み出される。
リード動作、プログラムベリファイ動作及びプログラム動作時において、データ記憶回路10に接続されている2本のビット線(BLie、BLio)のうち外部より供給されるアドレス信号(YA0、YA1…YAi…YA8k)に応じて1本のビット線が選択される。さらに、外部アドレスに応じて、1本のワード線が選択され、破線で示す、4ページが選択される。この4ページの切り替えはアドレスによって行われる。
図4(a)(b)はメモリセル及び選択トランジスタの断面図を示している。図4(a)はメモリセルを示している。基板51(後述するP型ウェル領域55)にはメモリセルのソース、ドレインとしてのn型拡散層42が形成されている。P型ウェル領域55の上にはゲート絶縁膜43を介して浮遊ゲート(FG)44が形成され、この浮遊ゲート44の上には絶縁膜45を介して制御ゲート(CG)46が形成されている。図4(b)は選択ゲートを示している。P型ウェル領域55にはソース、ドレインとしてのn型拡散層47が形成されている。P型ウェル領域55の上にはゲート絶縁膜48を介して制御ゲート49が形成されている。
図5は、NAND型フラッシュメモリの断面図を示している。例えばP型半導体基板51内には、N型ウェル領域52、53、54、P型ウェル領域56が形成されている。N型ウェル領域52内にはP型ウェル領域55が形成され、このP型ウェル領域55内にメモリセルアレイ1を構成する低電圧NチャネルトランジスタLVNTrが形成されている。さらに、前記N型ウェル領域53、P型ウェル領域56内に、データ記憶回路10を構成する低電圧PチャネルトランジスタLVPTr、低電圧NチャネルトランジスタLVNTrが形成されている。前記基板51内には、ビット線とデータ記憶回路10を接続する高電圧NチャネルトランジスタHVNTrが形成されている。また、前記N型ウェル領域54内には例えばワード線駆動回路等を構成する高電圧PチャネルトランジスタHVPTrが形成されている。図5に示すように、高電圧トランジスタHVNTr、HVPTrは、低電圧トランジスタLVNTr、LVPTrに比べて例えば厚いゲート絶縁膜を有している。
図6は、図5に示す各領域に供給される電圧の例を示している。消去、プログラム、リードにおいて、各領域に図6に示すような電圧が供給される。ここで、Veraはデータの消去時に基板に印加される電圧、Vssは接地電圧、Vddは電源電圧、Vpgmhはデータの書き込み時にワード線に供給される電圧Vpgm+Vth、Vfixはデータの読み出し時にメモリセルが形成されたウェルに供給される電圧、Vreadhは、データの読み出し時にワード線に供給される電圧Vread+Vthである。
図1は、図3に示すデータ記憶回路10の一例を示す回路図である。
このデータ記憶回路10は、例えば4ビット、16値のデータを書き込み、読み出す場合を示しており、プライマリデータキャッシュ(PDC)、セコンダリデータキャッシュ(SDC)、ダイナミックデータキャッシュ(DDCA、DDCB、DDCC、DDCD)、テンポラリデータキャッシュ(TDC)を有している。SDC、PDC、DDCA、DDCB、DDCC、DDCDは、書き込み時に入力データを保持し、読み出し時に読み出しデータを保持し、ベリファイ時に一時的にデータを保持し、多値データを記憶する際に内部データの操作に使用される。TDCは、データの読み出し時にビット線のデータを増幅し、一時的に保持するとともに、多値データを記憶する際に内部データの操作に使用される。
SDCは、スタティックラッチ回路を構成するクロックドインバータ回路61a、61b、及びトランジスタ61c、61dにより構成されている。トランジスタ61cはクロックドインバータ回路61aの入力端と、クロックドインバータ回路61bの入力端の間に接続されている。このトランジスタ61cのゲートには信号EQ2が供給されている。トランジスタ61dはクロックドインバータ回路61aの出力端と接地間に接続されている。このトランジスタ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の入力端とクロックドインバータ回路61jの入力端の相互間に接続されている。このトランジスタ61kのゲートには信号EQ1が供給されている。PDCのノードN1bはトランジスタ61lのゲートに接続されている。このトランジスタ61lの電流通路の一端はトランジスタ61mを介して接地されている。このトランジスタ61mのゲートには信号CHK1が供給されている。また、トランジスタ61lの電流通路の他端はトランスファーゲートを構成するトランジスタ61n、61oの電流通路の一端に接続されている。このトランジスタ61nのゲートには信号CHK2nが供給されている。また、トランジスタ61oのゲートはノードN3に接続されている。トランジスタ61n、61oの電流通路の他端は、信号線COMiに接続されている。この信号線COMiは全データ記憶回路10に共通に接続され、この信号線COMiのレベルにより、全データ記憶回路10のベリファイが完了したかどうかを判定できる。すなわち、後述するように、ベリファイが完了すると、PDCのノードN1bがローレベル(ノードN1aがハイレベル)となる。この状態において、信号CHK1、CHK2nをハイレベルとすると、ベリファイが完了している場合、信号COMiがハイレベルとなる。
さらに、前記TDCは、例えばMOSキャパシタ61pにより構成されている。このキャパシタ61pは、一端が前記トランジスタ61g、61hの接続ノードN3に接続され、他端に後述する信号BOOSTが供給されている。また、接続ノードN3には、トランジスタ61qA〜61qDを介してDDCA、DDCB、DDCC、DDCDが接続される。前記トランジスタ61qA〜61qDのゲートには、信号REGA〜REGDが供給されている。
ダイナミックラッチ回路を構成するDDCA、DDCB、DDCC、DDCDは、トランジスタ61rA〜61rDにより構成されている。トランジスタ61rA〜61rDの電流通路の一端には信号VPREが供給され、他端は前記トランジスタ61qA〜61qDの電流通路にそれぞれ接続されている。このトランジスタ61rA〜61rDのゲートはトランジスタ61sA〜61sDを介して前記PDCのノードN1aにそれぞれ接続されている。このトランジスタ61sA〜61sDのゲートには信号DTGA〜DTGDがそれぞれ供給されている。
さらに、前記接続ノードN3にはトランジスタ61t、61uの電流通路の一端が接続されている。トランジスタ61uの電流通路の他端には信号VPREが供給され、ゲートにはBLPREが供給されている。前記トランジスタ61tのゲートには信号BLCLAMPが供給されている。このトランジスタ61tの電流通路の他端はトランジスタ61vを介してビット線BLoの一端に接続され、トランジスタ61wを介してビット線BLeの一端に接続されている。ビット線BLoの一端はトランジスタ61xの電流通路の一端に接続されている。このトランジスタ61xのゲートには信号BIASoが供給されている。ビット線BLeの一端はトランジスタ61yの電流通路の一端に接続されている。このトランジスタ61yのゲートには信号BIASeが供給されている。これらトランジスタ61x、61yの電流通路の他端には、信号BLCRLが供給されている。トランジスタ61x、61yは、信号BIASo、BIASeに応じてトランジスタ61v、61wと相補的にオンとされ、非選択のビット線に信号BLCRLの電位を供給する。
尚、前記ノードN3と接地間には、例えばMOSキャパシタ61zが接続されている。このキャパシタ61zは、後述するTDCのキャパシタ61pを信号BOOSTにより昇圧する際、カップリングにより、ノードN3の電位が上昇し過ぎないように、ノードN3の電位を調整する。以後、PDCのデータはノードN1aの電位、SDCのデータはノードN2aの電位、TDCのデータはノードN3の電位とする。DDCA〜DDCDのデータは、トランジスタ61rA〜61rDのゲートの電位とする。
上記各信号及び電圧は、図2に示す制御信号及び制御電圧発生回路7により生成され、この制御信号及び制御電圧発生回路7の制御に基づき、データの書き込み、ベリファイ、読み出し動作が制御される。さらに、DDCA〜DDCDは、DDC制御回路7−1により、発生された制御信号によりリフレッシュされる。
本メモリは、1つのセルに16個の閾値電圧により、4ビットのデータを記憶する。この4ビットの切り替えはアドレス(第1ページ、第2ページ、第3ページ、第4ページ)によって制御される。
図7は、アドレス入力サイクルを示すタイミング図を示している。図7に示すコマンド・ラッチ・イネーブル信号CLEをローレベル(以下、Lレベル又はLと記す)、アドレス・ラッチ・イネーブル信号ALEをハイレベル(以下、Hレベル又はHと記す)として、ライトイネーブル信号WEnをLレベルからHレベルとした時、外部から入力されるI/O0−7がアドレスとして読み取られる。
図8は、入力サイクルとアドレスの割当てを示している。図8に示すように、第1、第2サイクルはカラムアドレス、第3サイクルのI/O0−1(A16,A17)は、ページアドレスを切り替えるMLC(Multi Level Cell)アドレスであり、(A16,A17)=(L,L)のときロワーページ、(A16,A17)=(H,L)のときアッパーページ、(A16,A17)=(L,H)のときハイアーページ、(16,A17)=(H,H)のときトップページとなる、第3サイクルのI/O3(A18)は、2本のビット線(BLie、BLio)の一方を選択し、第3サイクルのI/O3−7(A19−A23)は、NANDセル内の32本のワード線の1つを選択する。第4、5サイクルはブロックアドレスを示している。
図9は、メモリセルアレイ(プレーン0、1)とブロックの関係を示している。図9に示すように、本NAND型フラッシュメモリは、2つのプレーン0、1を有している。各プレーン0,1は、例えば図2に示すメモリセルアレイ1、ビット線制御回路2、カラムデコーダ3、ワード線制御回路6有している。制御信号及び制御電圧発生回路7、制御信号入力端子8、データ入出力バッファ4、データ入出力端子5は、各プレーンに共有される。尚、図9には、ビット線制御回路2のみを示している。
また、プレーン0にブロック0〜2047が配置され、プレーン1にブロック2048〜4095が配置されている。このように、プレーン0、1に対して複数のブロックが配置されているため、プレーンを第5サイクルのI/O3(A36)で選択する。また、各プレーン内の任意のブロックを1ずつ、合計2ブロック同時に選択して、リード、プログラム、イレーズすることが可能とされている。
通常のメモリは、図9に示すブロック0〜4095以外に、リダンダンシーブロックがあり、ブロック0〜4095に不良があると、この不良をアクセスした場合、リダンダンシーのブロックが選択される。しかし、リダンダンシーの切り替え回路が大きいため、図49に示すように、ブロックEX0〜31を追加しておき、元々のブロック数を多くする。ブロック0〜4095及びブロックEX0〜31に不良がある場合、不良ブロックは、使用しないようにする。しかし、余分にブロックを設けているため、最低限必要な良品のブロックは存在する。この場合、不良ブロックをアクセスした時、ブロック非選択となり、どのワード線も選択されない。また、例えばリードの場合、ビット線は充電されるが、放電しないため、一番高いレベルのデータが読み出されることにより不良ブロックを区別することができる。
しかし、ユーザーは、特定のブロック、例えばブロック0、ブロック2048等に、重要なデータを記憶したい。このため、これら特定ブロックは良品である必要がある。例えばブロック0が不良の場合、ブロックEX31と交換するようにし、ブロック0をアクセスした場合、ブロックEX31(良品)が選択され、ブロックEX31をアクセスした場合、ブロック0を選択しようとする。しかし、ブロック0は不良であるため、どのワード線も選択されない。また、例えばリードの場合、ビット線は充電されるが、放電しない。このため、一番高いレベルのデータが読み出されることにより不良ブロックを区別することができる。無論、特定のブロック、例えばブロック0、ブロック2048等にそれぞれ専用のリダンダンシーブロックを用意しておくことも可能である。
図10は、メモリセルのデータとメモリセルの閾値の関係を示している。イレーズ動作を行なうと、メモリセルのデータは一番左に示す閾値電圧の分布となる。この後、書き込み動作に応じて、1つのセルに4ビット(16値)のデータが記憶される。すなわち、先ず、図10に示すように、第1ステージの書き込み動作により、ロワーページ、アッパーページの2ビットのデータによって、メモリセルに“0”〜“3”の4つの閾値電圧が設定される。
次に、図11に示すように、第2ステージ、第3ステージの書き込み動作により、ロワーページ、アッパーページ、ハイアーページ及びトップページの4ビットのデータにより、メモリセルに“0”〜“F”の16個の閾値電圧が設定される。
尚、図10、図11において、R&Vレベルは、リード及びベリファイレベルを示し、VL(3)〜VL(0)は、レベル0〜Fをビットで表している。すなわち、レベル0は(0000)、レベル1は(0001)、レベル2は(0010)…レベルFは(1111)で表している。
(プログラム及びプログラムベリファイ)
(プログラム順序)
図12は、本実施形態におけるメモリセルに対する書き込み順序を示している。書き込み動作は、ブロック内において、ソース線に近いメモリセルからページ毎に行なわれる。このとき、隣接するメモリセルの書き込みにより、閾値電圧が変化することを防止する。つまり、先に書き込まれたメモリセルの閾値電圧が、後から書き込まれたメモリセルの閾値電圧の影響を低減するため、一定の順序により書き込み動作が行われる。
図13(a)〜図13(f)は、書き込み動作に伴うメモリセルの閾値電圧の遷移を示している。第1ステージ、第2ステージ、第3ステージの3回の書き込み動作により、1つのセルに4ビット(16値)のデータが書き込まれる。
まず、図12に示す第1回目の書き込み[0]において、ワード線WL0と偶数ビット線BLeによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。この結果、図13(a)に示すような閾値電圧となる。
次に、第2回目の書き込み[1]において、ワード線WL0と奇数ビット線BLoによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。
次に、第3回目の書き込み[2]において、ワード線WL1と偶数ビット線BLeによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。
次に、第4回目の書き込み[3]において、ワード線WL1と奇数ビット線BLoによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。
このように、隣接セルにデータが書き込まれると、例えばワード線WL0とビット線BLeにより選択されるメモリセルの閾値分布は、図13(b)に示すように、隣接セルの閾値電圧の変化の影響を受けて広がってしまう。
次に、第5回目の書き込み[4]において、ワード線WL0とビット線BLeによりメモリセルが選択される。このメモリセルに第2ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(16値)のデータが書き込まれる。この結果、図13(c)に示すような閾値電圧の分布となる。
次に、第6回目の書き込み[5]において、ワード線WL0とビット線BLoによりメモリセルが選択される。このメモリセルに第2ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(16値)のデータが書き込まれる。
次に、第7回目の書き込み[6]において、ワード線WL2とビット線BLeによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。
次に、第8回目の書き込み[7]において、ワード線WL2とビット線BLoによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。
次に、第9回目の書き込み[8]において、ワード線WL1とビット線BLeによりメモリセルが選択される。このメモリセルに第2ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(16値)のデータが書き込まれる。
次に、第10回目の書き込み[9]において、ワード線WL1とビット線BLoによりメモリセルが選択される。このメモリセルに第2ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(16値)のデータが書き込まれる。
すると、例えばワード線WL0とビット線BLeにより選択されるメモリセルの閾値電圧の分布は、図13(d)に示すように、隣接セルの閾値電圧が変化することにより、広がってしまう。
次に、第11回目の書き込み[10]において、ワード線WL0とビット線BLeによりメモリセルが選択される。このメモリセルに第3ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(15値)のデータが書き込まれる。すると、図13(e)に示すように、各閾値電圧の分布が狭まってくる。
次に、第12回目の書き込み[11]において、ワード線WL0とビット線BLoによりメモリセルが選択される。このメモリセルに第3ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(15値)のデータが書き込まれる。
次に、第13回目の書き込み[12]において、ワード線WL3とビット線BLeによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。
次に、第14回目の書き込み[13]において、ワード線WL3とビット線BLoによりメモリセルが選択される。このメモリセルに第1ステージの書き込み動作により、ロワーページとアッパーページの2ビット(3値)のデータが書き込まれる。
次に、第15回目の書き込み[14]において、ワード線WL2とビット線BLeによりメモリセルが選択される。このメモリセルに第2ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(16値)のデータが書き込まれる。
次に、第16回目の書き込み[15]において、ワード線WL2とビット線BLoによりメモリセルが選択される。このメモリセルに第2ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(16値)のデータが書き込まれる。
次に、第17回目の書き込み[16]において、ワード線WL1とビット線BLeによりメモリセルが選択される。このメモリセルに第3ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(15値)のデータが書き込まれる。
次に、第18回目の書き込み[17]において、ワード線WL1とビット線BLoによりメモリセルが選択される。このメモリセルに第3ステージの書き込み動作により、ロワーページとアッパーページ、ハイアーページ、トップページの4ビット(15値)のデータが書き込まれる。
すると、例えばワード線WL0とビット線BLeにより選択されるメモリセルの閾値電圧の分布は、図13(f)に示すように、隣接セルの閾値電圧が変化することにより、若干広がってしまう。
このような順番で書き込むことにより、隣接セルの閾値電圧が変化し、セルの閾値電圧が広がりを抑制でき、狭い閾値電圧の分布とすることが可能である。
図14、図15は、図12、図13の第1の変形例を示している。
図14、図15に示す第1の変形例は、第1ステージの書き込み動作において、ロワーページの1ビット(2値)のデータのみを書き込んでいる。この書き込み方法は、隣接セルとのカップリング容量が小さく、閾値電圧の変化が小さい場合に有効である。
図16、図17は、図12、図13の第2の変形例を示している。
図16、図17に示す第2の変形例は、第1ステージの書き込み動作において、ロワーページ、アッパーページ、ハイアーページの3ビット(8値)のデータを書き込んでいる。この書き込み方法は、隣接セルとのカップリング容量が大きく、閾値電圧の変化が大きい場合に有効である。
(アドレス入力及びデータ入力)
本実施形態は、図13乃至図17に示すように、先ず、第1ステージの書き込み動作で、メモリセルに2ビット(4値)、又は1ビット(2値)又は3ビット(8値)のデータを書き込み、この後、隣接セルに同様にデータを書き込む。次いで、第2ステージの書き込み動作において、4ビット(16値)のデータを本来のベリファイレベルより低いレベルまでラフに書き込む。この後、さらに、隣接セルにデータを書き込み。第3ステージの書き込み動作において、4ビット(16値)のデータを本来のベリファイレベルに書き込む。
図18は、第3ステージの書き込み動作を示すタイミング図である。先ず、図18に示すように、図2に示す制御信号入力端子8に供給される制御信号において、コマンド・ラッチ・イネーブル信号CLEをHレベルとし、アドレス・ラッチ・イネーブル信号ALEをLレベル、ライトイネーブル信号WEnをLレベルとしてデータロードコマンド(80h、hは16進を示す)を取り込む。この後、コマンド・ラッチ・イネーブル信号CLEをLレベルとし、アドレス・ラッチ・イネーブル信号ALEをHレベルとし、ライトイネーブル信号WEnをLレベルとして、前述したように、アドレスと、書き込みデータを入力する。書き込みデータは、アドレスで指定されたプレーンに対応するデータ記憶回路(図9に示す)内のSDC(図1に示す)に記憶される。この後、書き込みコマンド(15h又は10h)又は、データ転送コマンド(1Ah)が入力されると、選択されたプレーンのデータ記憶回路2内のSDCのデータがPDCに転送され、さらにDDCA〜DDCDに転送される。外部よりデータ“1”(書き込まない)が入力されると、PDCのノードN1aはHレベルとなり、データ“0”(書き込む)が入力されるとLレベルとなる。以後、PDCのデータはノードN1aの電位、SDCのデータはノードN2aの電位とする。
図19(a)〜図19(k)は、第1ステージ乃至第3ステージにおけるコマンドとデータの関係を示している。
図19(a)は、第1ステージにおいて、2ビット(4値)の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力した後、アッパーページアドレスとデータを入力し、書き込みコマンド(10h又は15h)を入力する。回路内部では、アッパーページのアドレスが入力されているため、4値の書き込みであることが分かる。
図19(b)は、第1ステージにおいて、1ビット(2値)の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、書き込みコマンド(10h又は15h)を入力する。回路内部は、ロワーページのアドレスのみが入力されているため、2値の書き込みであることが分かる。
図19(c)は、第1ステージで3ビット(8値)の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力する。この後、アッパーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力する。この後、ハイアーページアドレスとデータを入力し、書き込みコマンド(10h又は15h)を入力する。回路内部は、ハイアーページのアドレスが入力されているため、8値の書き込みであることが分かる。
図19(d)は、第1ステージで2ビット(4値)の書き込みを行う場合を示している。ロワーページとアッパーページを替えても、アッパーページが入力されているため、4値の書き込みと認識できる。すなわち、図19(e)は、第1ステージで2ビット(4値)の書き込みを行う場合を示している。先ず、図19(b)に示すように、1ビット(2値)を書き込み、図19(e)に示すように、アッパーページのみのアドレス及びデータを入力する。書き込みコマンド(10h又は15h)を入力した場合、アッパーページのアドレスが入力されているため、4値の書き込みと認識できる。この場合、ロワーページのデータが入力されていないが、回路内部で前に書き込んだロワーページのデータを、内部でリード動作により読み出す(内部データロード)することも可能である。
図19(f)は、第2ステージで4ビット(16値)の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力した後、アッパーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力した後、ハイアーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力した後、トップページのアドレスとデータを入力し、書き込みコマンド(10h又は15h)を入力する。この場合、トップページのアドレスが入力されているため、4ビット(16値)の書き込みであることを認識できる。しかし、このシーケンスは第3ステージで4ビット(16値)の書き込みを行う場合と同様となる。したがって、第2ステージと第3ステージを区別するため、例えば第2ステージの場合、書き込み前にコマンド0Dhを入力する。
図19(g)は、ハイアーページのアドレスとデータ、及びトップページのアドレスとデータのみを入力し、ロワーページとアッパーページのデータは、先に入力したデータを内部データロードする場合を示している。
図19(h)は、第3ステージにおいて、4ビット(16値)の書き込みを行う場合を示している。先ず、ロワーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力する。この後、アッパーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力する。次いで、ハイアーページのアドレスとデータを入力し、データ転送コマンド(1Ah)を入力する。この後、トップページのアドレスとデータを入力し、書き込みコマンド(15h又は10h)を入力する。トップページのアドレスが入力されているため、4ビット(16値)の書き込みであることを認識できる。第3ステージの動作は、図19(i)に示すように、入力するアドレス及びデータの順序を変えてもよい。
図19(j)は、図19(h)の場合で、2プレーン同時書き込みの場合を示している。さらに、図19(k)に示すように、任意の順序で入力することも可能である。コマンド11h入力により、短いビジーを出力するが、省くことも可能である。
尚、第2ステージの書き込みにおいて、消去されているセルにも書き込みを行いレベル0への書込へ書き込みを行う。後述するREASB(Erased Area Self Boost)の書き込みの場合、選択ワード線をVpgm(24V)に設定し、選択ワード線に対してソース側に隣接するワード線をVpass又は中間電位に設定し、さらにそのワード線に隣接するワード線の電位をVss(接地電位)に設定してセルをオフ状態とする。このようにして、誤書き込みを防止するが、消去セルの閾値電圧が低く過ぎるとオフしなくなってしまう。したがって、消去されているセルにも書き込みを行いレベル0への書込へ書き込みを行う。
図20は、図2に示すDDC制御回路7−1の一例を示している。DDC制御回路7−1は、ページアドレスと選択信号SLDDC(0:3)に応じて、図1に示す信号DTGA〜DTGD及び信号REGA〜REGDを順次生成し、DDCA、DDCB、DDCC、DDCDの動作を制御する。さらに、DDC制御回路7−1は、DDCA、DDCB、DDCC、DDCDに記憶されたデータとページアドレスとの関係を変更する。すなわち、書き込みデータは、任意の順にデータ記憶回路に供給され、SDC、PDCを介して、DDCA、DDCB、DDCC、DDCDのいずれかに記憶される。このため、DDCA、DDCB、DDCC、DDCDに記憶されているデータがどのページアドレスに対応しているかを認識する必要がある。また、DDCA〜DDCDは、ダイナミックキャッシュであり、記憶したデータを定期的にリフレッシュする必要がある。この際、DDCA〜DDCD、PDCに記憶されたデータをDDCA〜DDCD、TDC,PDCを用いて転送することにより、リフレッシュされる。このリフレッシュ動作を行う場合、DDCA〜DDCD、PDCに転送されたデータがどのデータであるかを認識する必要がある。DDC制御回路7−1は、DDCA、DDCB、DDCC、DDCD、PDCにどのページのデータが記憶されているかを記憶することにより、複数のデータの位置を正確に制御可能としている。
図20において、コンバータ7a〜7eは、それぞれDDCA、DDCB、DDCC、DDCD、PDCに対応している。これらコンバータ7a〜7dは、ロワーページ、アッパーページ、ハイアーページ、トップページ、PDCに応じて、論理的なキャッシュ名を示すデータLDDC0、LDDC1、LDDC2、LDDCQ、LDDCPを保持し、このデータをコンバータ7a〜7e間で転送可能とされている。
各コンバータ7a〜7dは、それぞれ第1乃至第5の入力端と第1、第2の出力端を有し、コンバータ7eは、入力端、及び出力端を有している。コンバータ7a〜7dの第1の入力端には、例えばデコーダ7fにより4ビットのデータに変換された、ロワーページ(L)、アッパーページ(U)、ハイアーページ(H)、トップページ(T)の何れかが供給される。デコーダ7fは、コマンドに応じて入力されたページアドレスが順次デコードする。第2の入力端には、DDCセット信号DDCSETが供給される。このDDCセット信号DDCSETは、前記デコーダ7fからページアドレスの入力を許容するDDCセットモードを設定する。コンバータ7a〜7dの第3の入力端には、前記DDCA〜DDCDを選択するための例えば4ビットの選択信号SLDDC(0:3)が供給される。コンバータ7a〜7dの第4の入力端には、モード切り替え信号MEXCが供給されている。このモード切り替え信号MEXCは、リフレッシュモードを設定する。コンバータ7a〜7dの第5の入力端は、コンバータ7eの出力端に接続されている。リフレッシュモードにおいて、コンバータ7eの出力信号は、コンバータ7a〜7dの1つに転送される。
コンバータ7a〜7dの第1の出力端は、信号REGA〜REGDを選択的に出力するアンド回路7g〜7jの一方入力端に接続されるとともに、信号DTGA〜DTGDを選択的に出力するアンド回路7k〜7nの一方入力端に接続されている。アンド回路7g〜7jの他方入力端には信号REGが供給され、アンド回路7k〜7nの他方入力端には信号DTGが供給されている。アンド回路7g〜7jは、前記DDCAからDDCDを選択するための信号SLDDCが供給され、コンバータ7a〜7dのうちの1つ乃至複数の第1の出力端から信号DDCASL〜DDCDSLが出力されたとき、これに応じた信号REGA〜REGDを出力する。アンド回路7k〜7nは、前記DDCAからDDCDを選択するための信号SLDDCが供給され、コンバータ7a〜7dのうちの1つ乃至複数の第1の出力端から信号DDCASL〜DDCDSLが出力されたとき、これに応じた信号DTGA〜DTGDを出力する。
コンバータ7a〜7dの第2の出力端は、コンバータ7eの入力端に接続されている。DDCA〜DDCDのリフレッシュ時、モード切り替え信号MEXCに応じて、コンバータ7a〜7dのうちの1つの第2の出力端から出力されたデータLDDCは、コンバータ7eの入力端に供給される。また、コンバータ7eから出力されたデータLDDCは、コンバータ7a〜7dの1つのコンバータに供給される。リフレッシュ動作の詳細は後述する。
図21は、コンバータ7aの構成を示している。コンバータ7a〜7dは、ほぼ同一構成であり、入力信号のみが相違している。したがって、コンバータ7aのみ構成を説明する。
コンバータ7aは、レジスタを構成する4つのフリップフロップ回路7a−1〜7a−4と、各フリップフロップ回路7a−1〜7a−4の入力信号を選択するセレクタ7a−5と、比較回路7a−6を有している。各フリップフロップ回路7a−1〜7a−4は、4ビットのデータの1つをそれぞれ保持する。各フリップフロップ回路7a−1〜7a−4は、デフォルトデータをプリセット可能とされている。各フリップフロップ回路7a−1〜7a−4の出力信号は、比較回路7a−6に供給されるとともに、図示せぬ出力セレクタに供給される。出力セレクタは、前記モード切り替え信号MEXCに応じて、コンバータ7a〜7dのうち、リフレッシュ動作中のDDCA〜DDCDに対応するコンバータから出力コンバータ7eにLDDC信号を供給する。
比較回路7a−6は、フリップフロップ回路7a−1〜7a−4の出力信号と選択信号SLDDC(0:3)とを比較し、両者が一致した場合、選択信号DDCASLをアクティブ状態、例えばハイレベルとする。
セレクタ7a−5は、モード切り替え信号MEXCに応じてフリップフロップ回路7a−1〜7a−4の入力信号を切り替える。すなわち、セレクタ7a−5は、DDCセット信号DDCSETがアクティブ状態、例えばハイレベルのとき、前記デコーダ7fから供給されるページアドレスを選択し、モード切り替え信号MEXCがアクティブ状態、例えばハイレベルで、比較回路7a−6の出力信号がアクティブ状態のとき、コンバータ7eから供給されるデータLDDC(0:3)を選択する。したがって、コンバータ7eから出力されたデータLDDC(0:3)が選択された1つのコンバータに供給される。
図22は、コンバータ7eの一例を示している。このコンバータ7eは、フリップフロップ回路7e−1〜7e−4により構成されている。前記モード切り替え信号MEXCに応じて、コンバータ7a〜7dのうち、リフレッシュ動作中のDDCA〜DDCDに対応するコンバータから出力されるデータLDDC(0:3)が各フリップフロップ回路7e−1〜7e−4に供給される。各フリップフロップ回路7e−1〜7e−4に記憶されているデータは、リフレッシュ動作中のDDCA〜DDCDに対応するコンバータ7a〜7dの何れかに供給される。
上記構成において、DDC制御回路7−1の動作について説明する。コンバータ7a〜7dは、DDCA〜DDCDに対応している。デフォルト状態において、コンバータ7a、7b、7c、7dは、それぞれLDDC0、LDDC1、LDDC2、LDDCQ、コンバータ7eは、LDDCPと設定されている。書き込むためのアドレス及びデータ入力時に、選択信号SLDDC(0:3)は、SLDDC2、SLDDC1、SLDDC0、SLDDCQの順にアクティブ状態となる。このため、コンパレータは7c、7b、7a、7dの順に、図21に示す比較回路7a−6の入力条件が満足される。したがって、コンパレータ7c、7b、7a、7dの比較回路7a−6から選択信号がDDCCSL、DDCBSL、DDCASL、DDCDSLの順に出力される。このとき、図20に示す信号DTGがアクティブ状態、例えばハイレベルとなっており、アンド回路は7m、7l、7k、7nの順に入力条件が満足し、信号がDTGC、DTGB、DTGA、DTGDの順に出力される。このため、データの転送コマンドに応じて、図1のSDCからPDCに転送されたデータは、DDCC、DDCB、DDCA、DDCDの順に記憶される。
この後、書き込みコマンド入力後、図20に示すDDCセット信号DDCSETがアクティブ状態、例えばハイレベルのとき、前記デコーダ7fから供給されるページアドレスがコンバータ7a〜7dに供給される。このとき、選択信号SLDDC(0:3)により、コンバータが7c、7b、7a、7dの順に選択される。このため、デコーダ7fのデータは、コンバータ7c、7b、7a、7dの順に供給される。したがって、デコーダ7fから供給されるページデータが、例えば図20に示すように、トップページ(T)、ハイアーページ(H)、アッパーページ(U)、ロワーページ(L)である場合、コンバータ7c、7b、7a、7dの各フリップフロップ回路にトップページ(T)、ハイアーページ(H)、アッパーページ(U)、ロワーページ(L)のデータが設定される。
このようにして、図1に示すDDCA〜DDCDに記憶されたデータと、ページアドレスの関係が一致される。
(リフレッシュ)
次に、リフレッシュ動作について説明する。
データ転送コマンド1Ahが入力されると、上記のように、選択されているプレーンのデータ記憶回路2内のSDCのデータがPDCに転送され、さらにDDCA〜DDCDに転送される。しかし、DDCA〜DDCDは、トランジスタのゲート容量によりデータを記憶するキャパシタンスであるためリフレッシュ動作が必要である。したがって、転送コマンド1Ahが入力された後、DDCA〜DDCDへの転送動作が済むと、次のデータの入力を待つため、チップはビジー状態からレディ状態となるが、データ記憶回路2の内部では、リフレッシュ動作が繰り返される。
例えば、図1において、DDCAのデータをリフレッシュする場合、先ず、信号VPRE=Vss(接地電圧)、信号BLPRE=Vssとしてトランジスタ61uをオンさせ、TDCのノードN3をVssとする。この後、信号VPRE=Vdd、信号REGA=Hレベルとしてトランジスタ61qDをオンさせる。すると、DDCA=Hレベルの場合、TDCはHレベルとなり、DDCA=Lレベルの場合、TDCはLレベルのままとなる。この後、信号DTGAを一旦Hレベルとして、PDCのデータをDDCAにコピーした後、BLC1=Hレベルとして、TDCのデータをPDCに移す。これらの動作によりDDCAのデータはPDCに、PDCのデータはDDCAに移動する。これらの動作をもう一度行なうことにより、DDCAのデータが元に戻る。このように、DDCAのデータをリフレッシュする場合、2回のリフレッシュ動作を必要とする。
本実施形態における16値のデータを書き込むメモリの場合、データ記憶回路2は、図1に示すように、DDCA、DDCB、DDCC、DDCDの4つのダイナミックデータラッチを有している。このため、上記の動作によりデータを移動すると、8回のリフレッシュ動作が必要となる。しかし、第1の実施形態は、リフレッシュ動作を高速化可能としている。
図23は、リフレッシュ動作の一例を示している。図23に示すように、例えばリフレッシュ前にDDCA、DDCB、DDCC、DDCD、PDCに保持されたデータが、例えばLDDC0、LDDC1、LDDC2、LDDCQ、LDDCP(それぞれ論理的なキャッシュ名を示)であると仮定した場合を考える。これらデータが図23に示すように、DDCA〜DDCD、PDCを移動した場合(図5において、LDDC0、LDDC1、LDDC2、LDDCQ、LDDCPは、単に0、1、2、P、Qで示している)、5回目のデータの移動により全てのデータが移動する。データは、1回移動することによりリフレッシュされる。このため、5回目のデータの移動により全てのデータがリフレッシュされたこことなる。しかし、5回目のデータの移動後、DDCA、DDCB、DDCC、DDCD、PDCに、LDDC0、LDDC1、LDDC2、LDDCQ、LDDCPが記憶される。つまり、LDDC0が記憶されているデータキャッシュは、リフレッシュ前はDDCAであったが、リフレッシュ後、DDCBとなる。したがって、DDCA、DDCB、DDCC、DDCD、PDCのデータの位置関係がリフレッシュ前と、リフレッシュ後では異なっている。しかし、上記リフレッシュ動作を図20、21、22に示すDDC制御回路7を用いて行なうことにより、DDCA、DDCB、DDCC、DDCD、PDCに記憶されたデータとページアドレスとの対応関係を常に一致させることができる。
すなわち、図20に示す各コンバータ7a〜7eの各レジスタに記憶されたデータが図23に示すリフレッシュ前のように、LDDC0、LDDC1、LDDC2、LDDCQ、LDDCPであると仮定する。
この状態において、図20、図21に示すモード切り替え信号MEXCをアクティブ状態とし、例えば選択信号SLDDC(0:3)により、LDDC0を選択すると、コンバータ7aの比較回路7a−6の入力条件を満足させる。このため、コンバータ7aより信号DDCASLが出力される。このとき、図20に示す信号REG、DTGがHレベルとされ、信号REGA、DTGAがHレベルとされる。
一方、DDCAのデータを転送する以前に、図1に示す信号BLPREがHレベル、信号VPREがLレベル、例えばVss(接地電位)とされ、ノードN3が接地電位にリセットされる。この後、信号VPREがHレベル、例えばVddとされる。前記信号REGAがHレベルとされるとトランジスタ61qAがオンし、DDCAのデータがTDCに転送される。すなわち、トランジスタ61rAのゲートがHレベルの場合、ノードN3がHレベルとされ、トランジスタ61rAのゲートがLレベルの場合、ノードN3はLレベルのままとされる。
また、図20に示す信号DTGAに伴い、トランジスタ61sAがオンし、PDCのデータがDDCAに転送される。この後、信号BLC1がHレベルとされ、トランジスタ61hを介してTDCのデータがPDCに転送される。
このとき、図20に示すコンバータ7eのPDCに対応するデータLDDCPがコンバータ7aに転送され、コンバータ7aに記憶されたDDCAに対応するデータLDDC0がコンバータ7eに転送される。
上記のようにして、1回目の転送動作が実行されると、図23の1回後に示すようになる。このような動作をLDDC1、LDDC2、LDDCQ、LDDCPについて順次行なうことにより、5回の転送動作により、DDCA〜DDCDのデータをリフレッシュすることができる。しかも、リフレッシュ後のデータの位置は、コンバータ7a〜7eにより保持されているため、データを正確に制御することができる。
(書き込みシーケンス、データロード、プログラム)
図24は、書き込みシーケンスを示し、図25(a)(b)(c)(d)(e)は、図24に示す書き込みシーケンスに伴う16値、8値、4値、2値における入力データと書き込みレベルの関係を示している。
図24に示すように、80h(データロードコマンド)−Add(アドレス)−D(データ)により、任意のページ(例えば2kB)のデータが外部より、データ記憶回路10のSDCに入力される(S1、図25(a))。1ページのみのデータ入力の場合は、書き込みコマンドである10h又はキャッシ書き込みコマンド15hが入力される(S2)。複数ページのデータが入力される場合、1Ahコマンドが入力される。1Ahの場合、SDCのデータは、PDCを介してDDCA〜DDCDに転送される。前述したように、本実施形態において、第1回目の1Ahのときは、SDCのデータはLDDC2(DDCC)へ転送され(S3)、第2回目の1Ahのときは、SDCのデータはLDDC1(DDCB)へ転送され(S4)、第3回目の1Ahのときは、SDCのデータはLDDC0(DDCA)へ転送する(S5)。この後、書き込みコマンドである10h又はキャッシ機能つき書き込みコマンド15hが入力されると(S6)、SDCのデータはLDDCQ(DDCD)へ転送され、ビジー状態となる(図18参照)。また、データをSDC、PDC、DDCA〜DDCDに転送するとき、書き込みレベルが16値、8値、4値、2値(16LV/8LV/4LV/2LV)のいずれであるかを判別する。
図1に示すデータ記憶回路10は、DDC制御回路7−1の出力信号に従って、SDCのデータをPDC、DDCA〜DDCDに転送する。以下、DDCA〜DDCD、PDCに記憶されるデータをLDDC0、LDDC1、LDDC2、LDDCP、LDDCQとして説明する。
SDCのデータを図20に示すDDC制御回路7−1のデータに従ってLDDCQへ転送する。この後、書き込みレベルに対してデータ入力回数が少ない場合、内部データをロードして空いているLDDCにデータを入力する(S7)。外部より入力されたデータ、及び内部データロードにより入力されたデータと入力後のデータキャッシュに記憶されるデータの関係を、図25(b)に示す。図25(b)において、L又はUで示すデータは、書き込みレベルに対してデータ入力回数が少ない場合、内部データをロードして空いているLDDCにデータを入力したことを示している。また、W、X、Y、Zは、任意の順序で入力されるデータの順番を便宜的に示している。
この後、データキャッシュDDCA〜DDCBの定義が行なわれる(S8、図25(c),25(d))。
すなわち、前述したように、DDCA〜DDCBに記憶されたデータとページアドレスとの対応関係が定義される。具体的には、16値の場合、ロワーページのデータを記憶しているDDCをLDDC2と定義し、アッパーページを記憶しているDDCをLDDC1と定義し、ハイアーページを記憶しているDDCをLDDC0と定義し、トップページを記憶しているDDCをLDDCQと定義する。また、8値の場合、ロワーページのデータを記憶しているDDCをLDDC2と定義し、アッパーページのデータを記憶しているDDCをLDDC0と定義し、ハイアーページのデータを記憶しているDDCをLDDCQと定義する。さらに、4値の場合、ロワーページのデータを記憶しているDDCをLDDC1と定義し、アッパーページのデータを記憶しているDDCをLDDCQと定義する。さらに、2値の場合、ロワーページのデータを記憶しているDDCをLDDC0と定義する。
本実施形態において、書き込み及び非書き込みの区別をPDCに記憶する。書き込みの場合、PDC=Lレベル、非書き込みの場合、PDC=Hレベルとなっている。本来のベリファイレベルの他に低めのベリファイレベルを設定し、この低めのベリファイレベルを超えた場合、以降の書き込み電圧の増分を小さくすることにより、書き込み分布を狭める方法が提案されている。この低めのベリファイレベルを超えたかどうかの区別をLDDCQとして記憶する。低めのベリファイレベルを超えていない場合、LDDCQ=Lレベル、低めのベリファイレベルを超えた場合、LDDCQ=Hレベルとする。16値の書き込みにおいて、16値を区別するために4ビットのデータが必要であり、これらのデータは、LDDC2,LDDC1,LDDC0,SDCとして記憶される。8値の書き込みの場合、8値を区別するために3ビットのデータが必要であり、これらのデータはLDDC2,LDDC1,LDDC0として記憶される。4値の書き込みの場合、4値を区別するために2ビットのデータが必要であり、これらのデータはLDDC1,LDDC0として記憶される。
図25(e)は、これら書き込みレベルとデータキャッシ内に設定されるデータを示している。図24、ステップS9、図25(c)に示すデータキャッシュDDCA、DDCBの操作により、各閾値電圧におけるデータを並び変える。このように、各閾値電圧に対するデータを設定することにより、データの書き込みが進むに従って、SDCやLDDC2等を順次書き込み動作から開放することが可能となる。従って、開放されたSDCやLDDC2等に次のデータを設定することができるため、書き込み速度を高速化することが可能となる。このような効果を得るため、図25(e)に示すようにデータを設定している。
図25(e)において、閾値電圧が低い側から高い側へ、0−レベル乃至f−レベルと定義している。イレーズ動作により、セルの閾値電圧は0−レベルとなり、書き込み動作により1−レベルからf−レベルへ上昇される。
データの書き込み中、低い閾値への書き込みは高い閾値への書き込みより早く書き込みが完了する。このため、キャッシ機能つき書き込みコマンド15hが入力された場合、16値の書き込みでは、0−レベルから7−レベルへの書き込みが完了すると、SDCのデータデータが不要になる。したがって、チップ外部にはレディ状態を示し、次の書き込みデータを入力する。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
また、1Ahコマンドの場合、8−レベルからb−レベルへの書き込みが完了すると、LDDC2のデータデータが不要となる。このため、SDCに入力されているデータをLDDC2に移した後、チップ外部にレディ状態を示し、次の書き込みデータ入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、c−レベルとd−レベルへの書き込みが完了すると、LDDC1のデータデータが不要となる。このため、SDCに入力されているデータをLDDC1に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、e−レベルへの書き込みが完了すると、LDDC0のデータデータが不要となる。このため、SDCに入力されているデータをLDDC0に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである15hコマンド又は10hコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
8値の書き込みの場合、もともとSDCは使用しないため、データキャッシュ操作後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、0−レベルから3−レベルへの書き込みが完了すると、LDDC2のデータが不要となる。このため、SDCに入力されているデータをLDDC2に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、4−レベルと5−レベルへの書き込みが完了すると、LDDC1のデータが不要となる。このため、SDCに入力されているデータをLDDC1に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、6−レベルへの書き込みが完了すると、LDDC0のデータデータが不要となるため、SDCに入力されているデータをLDDC0に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである15hコマンド又は10hコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
4値の書き込みの場合、もともとSDCは使用しない。このため、データキャッシュ操作後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、4値の書き込みにおいて、LDDC2は使用しない。このため、SDCに入力されているデータをLDDC2に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、1Ahコマンド入力によりビジー状態となる。
1Ahコマンドの場合、1−レベルへの書き込みが完了すると、LDDC1のデータデータが不要となる。このため、SDCに入力されているデータをLDDC1に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、2−レベルへの書き込みが完了すると、LDDC1のデータデータが不要となる。このため、SDCに入力されているデータをLDDC1に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである15hコマンド又は10hコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
2値の書き込みの場合、もともとSDCは使用しない。このため、データキャッシュ操作後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、”1Ah/10h/15h”コマンド入力によりビジー状態となる。
1Ahコマンドの場合、2値の書き込みにおいて、LDDC2は使用しない。このため、SDCに入力されているデータをLDDC2に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、1Ahコマンド入力によりビジー状態となる。
1Ahコマンドの場合、2値の書き込みでは、LDDC1は使用しない。このため、SDCに入力されているデータをLDDC1に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、1Ahコマンド入力によりビジー状態となる。
1Ahコマンドの場合、2値の書き込みにおいて、LDDC0は使用しない。このため、SDCに入力されているデータをLDDC0に移した後、チップ外部にレディ状態を示し、次の書き込みデータの入力を可能とする。この後、書き込みコマンドである15hコマンド又は10hコマンドによりビジー状態となり、前のページの書き込みが終了後、次のページの書き込み動作が開始される。
このような動作によれば、1Ah転送コマンドが3回続くこと、すなわち、次の書き込みデータが4ページ、16値の場合にも使用できる。しかし、例えば次の書き込みが2値の場合、1ページのデータ入力後、書き込みコマンドである10h/15hが入力される。しかし、例えば別の書き込みコマンド16hを用意し、コマンド16hが入力された後、SDCに入力されているデータをLDDCに転送する。この後、次のデータを外部から入力することも可能である。LDDCは2、1、0とSDCがあるため、4ページ先のデータまでデータをロードすることも可能である。
同様に、4値、8値の時も、次の書き込みデータだけでなく、その次の書き込みデータ若しくは、さらに、その次の書き込みデータまで、データロードすることが可能である。
(プログラム動作)
データキャッシュの操作及びデータキャッシュの定義後、プログラム動作が行なわれる(S10)。
図1において、信号BLC1をVdd+Vth(トランジスタの閾値電圧)に設定し、PDCにデータ“1”(書き込みを行なわない)が記憶されている時、ビット線はVddとなり、データ“0”(書き込みを行なう)時、ビット線はVssとなる。また、選択されたワード線に接続され、非選択ページ(ビット線が非選択)のセルは、書き込みが行なわれてはならない。このため、これらのセルに接続されているビット線にも電圧Vddを供給する。
次いで、信号BLC1=Vssとした後、データLDDCQを記憶したDDCが選択される。すなわち、図20に示すDDC制御回路7−1により、DDCA〜DDCEのうちからLDDCQを記憶したDDCに対応する信号REGA〜REGDのうちの1つがHレベルとされる。低めのベリファイレベルをパスしている場合、ビット線を中間電位とする。但し、プログラムベリファイのループ1回目は、1度もベリファイ動作を行なっていないため、ビット線を中間電位にすることは無い。
ここで、選択されているブロックのセレクト線SG1をVdd、選択ワード線にVpgm(24V)、非選択ワード線にVpass(10V)を供給する。すると、ビット線がVssである場合、セルのチャネルがVss、ワード線がVpgmとなるため、書き込みが行なわれる。一方、ビット線がVddである場合、セルのチャネルがVssではなく、Vpgmを上昇することとなり、カップリングによりVpgm/2程度となる。このため、プログラムされない。また、ビット線が中間電位になっている場合、少しのみ書き込みが行われる。
(プログラム動作、書き込みデータ検知)
図1に示す信号線COMiは全てのデータ記憶回路10に共通接続されている。書き込み動作中、信号線COMiを一旦充電し、信号CHK2n=Hレベル、信号CHK1=Hレベルとする。書き込み中のデータ記憶回路10のPDCのノードN1aがLレベルであるため、トランジスタ61lがオンし、信号線COMiの電位がLレベルとなる。一方、全てのデータ記憶回路のPDCのノードN1aがHレベルであると、信号線COMiの電位はHレベルのままである。このため、全ての書き込みが完了したことが分かる。
また、信号線COMiに電流検出回路を接続することにより、オンとなっているデータ記憶回路の数を数えることもできる。例えば書き込み未完成のデータ記憶回路が僅かである場合、この僅かなセルの書き込みは残して、書き込み終了にすることにより、書き込みスピードを向上させることができる。これらのセルは、データを読み出した時、エラーとなるが、エラー訂正回路により訂正できる。
(プログラム動作、リフレッシュ)
DDCA〜DDCDは、前述したようにキャパシタンスであるため、書き込み途中、及び書き込みリカバリー中に、リフレッシュ動作が必要である。リフレッシュ動作は、前述したように、1Ah入力後のリフレッシュ動作と同じである。
図26(a)に示すように、PDCにデータLPDC(書き込み又は非書き込みの区別)、DDCAにLDDCQ(低めのベリファイレベルを超えているどうかの区別)、DDCBにLDDC0、DDCCにLDDC1、DDCDにLDDC2がそれぞれ記憶されていると仮定する。5回目のリフレッシュ動作により、PDCにLPDC、DDCAにLDDC2、DDCBにLDDCQ、DDCCにLDDC0、DDCDにLDDC1のデータがそれぞれ記憶される。
(プログラムとプログラムベリファイリード)
図27、図28、図29は、書き込みシーケンス中のプログラムとベリファイの関係の一例を表している。
また、図36は、プログラムベリファイにおける1つのレベルでのワード線とビット線の電位を示している。図36は、本来のベリファイレベルより低いレベル(VL)のベリファイと、本来のベリファイレベル(V)でのベリファイの2つのシーケンスによりベリファイされることを示している。
図27は、第1ステージで3レベルを書き込み、図28は、第2ステージで16レベルを書き込み、図29は、第3ステージで15レベルを書き込む例を示している。
例えば図29に示す第3ステージの書き込みシーケンスは、第1回目の書き込み(ループ回数1のプログラム(P))後、閾値の低いレベルより書き込まれるため、レベル1によりベリファイする。この後、第2回目の書き込み(ループ回数2のプログラム(P))、レベル1のベリファイ、第3回目の書き込み、レベル1のベリファイを行なった後、第4回目の書き込み後、レベル1のベリファイとレベル2のベリファイを行なう。このように書き込みループ回数が増加するに従って、高いレベルのベリファイを開始する。
また、第22回目の書き込み後、レベル1からレベル8のベリファイが行なわれる。次いで、第23目の書き込み後、レベル2からレベル8のベリファイを行い、レベル1のベリファイを省略する。すなわち、レベル1への書き込みビットが存在し、書き込みが未完成の場合においても、第23回目以降は、レベル1のベリファイは行なわないこととすることもできる。このように、各レベルのベリファイにベリファイ回数の最大回数を設けた場合、最大回数に達しても書き込みが完了しないセルは、当然読み出し時にエラーとなる。しかし、このエラーは、エラー訂正回路により訂正できる。このようにすると、ベリファイ回数を削減することができ、書き込み時間を高速化することが可能である。また、SDC、DDCを開放することが可能であるため、次の書き込みデータを入力することも可能である。
また、第61回目の書き込み後、レベルEとレベルFのベリファイ後、第62回目の書き込み、及びレベルFのみのベリファイを行い、第63回目、第64回目の書き込み、及びレベルFのみのベリファイを行い終了する。書き込み中に行っている、書き込みデータ検知により、全てのデータ記憶回路10の書き込みが完了し、信号線COMiがHレベルとなった場合、つまり、書き込みセルが無くなった場合、若しくは、書き込みセルが規定値数以下となった場合、以降の書き込み及びベリファイは行なわれない。
また、各レベルのベリファイは、このレベルへの書き込みビットが存在しない場合、以降このレベルのベリファイは行なわない。この各レベルへの書き込みビットが存在するかどうかは、各レベルのベリファイ中に検知する。
図30は、プログラム(書き込み)中、又はプログラムベリファイ中に、プログラム及びプログラムベリファイ動作と並行して行なわれ、次にプログラムを行うか、ベリファイを行なうかを決める。さらに、プログラムベリファイを行なう場合、どのレベルを実行するかを決定する。
PCは、プログラムのループ回数をカウントするプログラムカウンタであり、PCVは、プログラムベリファイの開始回数を記憶するレジスタである。PCV=PCV+DPCV+DDPCV(VL)(VLはベリファイレベル)で決まる。DPCV、DDPCV(0)からDDPCV(F)は、チップ内の図示せぬROMに記憶された値であり、例えば図29において、DPCV=3、DDPCV(0)からDDPCV(F)=0、図28においてDPCV=2、DDPCV(0)=1、DDPCV(1)からDDPCV(F)=0、図27において、DPCV=4、DDPCV(1)からDDPCV(3)=0となる。
ステップS21において、先ずVL(次のベリファイレベル)=0、PCV=0とする。ステップS22において、PCがPCV以上となったかどうかが判断される。この結果達していない場合、プログラム電圧がステップアップされ、再びプログラムが実行される。
また、PCがPCV以上となった場合、ステップ23において、次のベリファイレベルが書き込み完了になっているかどうかが判断される。次のベリファイレベルの書き込みが完了していない場合、COMP(0)=Lである。このため、プログラムベリファイが実行される。このとき、ベリファイレベルはVL=0であるため、レベル0のベリファイが実行される。
次のベリファイレベルの書き込みが完了となっている場合、COMP(0)=Hである。このため、ステップS25において、VL=VL+1が実行され、その次のプログラムベリファイを行なうかどうかの判断をする(S26)。例えばレベル0のベリファイを行なうと、先ず、ステップS24において、VLがVLX(現在のベリファイレベルを示す)に移され、VLXがVLXX(前のベリファイレベルを示す)に移される。
つまり、VL=0であったら、VLX=0となる。ここで、PCがベリファイ毎に設定されている最大ループ回数に達したかどうかが判断され(PC≧DPCVMAX+PCV)、達している場合、このレベルのCOMP(VL)=Hとする。最大ループ回数は、例えば図27において8回、図28において11回、図23において22回となっている。この後、ステップS25において、VL=VL+1とされる。次いで、ステップS26において、16値の書き込みの場合、VL=0、8値の書き込みの場合、VL=8、4値の書き込みの場合、VL=4、2値の書き込みの場合、VL=2となっているかが判断され、これらの条件を満足する場合、プログラム電圧がステップアップされ、再度、プログラムが実行される。前記条件を満足しない場合、ステップS22に移行し、次のプログラムベリファイを行なうかどうかが判断される。
(プログラムベリファイ:ビット線プリチャージ)
図31(a)(b)(c)は、図29に示す第3ステージのレベル1、レベル2のベリファイを示し、図32(a)(b)は、第3ステージのレベルBのベリファイ時の書き込みレベルと各データキャッシュに記憶されたデータSDC、LDDC2〜LDDC0、PDCの関係を示している。第1回目の書き込み動作後、データキャッシュは図31(a)、図32(a)に示すようになっている。
例えば図31(a)(b)(c)に示すように、レベル1のベリファイ動作を行う場合、選択されているセルのウェル、ソース線、非選択ビット線、非選択ブロックのセレクトゲートに制御信号及び制御電圧発生回路7より、電圧Vfix(例えば1.6V)が供給される。選択ワード線にリードの時の電位レベル1より少し高い電位レベル1’が供給される。以後“’”は、リードの電位より若干高いベリファイ電位を示すものとする。したがって、リード及びベリファイ時、選択ワード線に供給される電位がVfixより低い場合、見かけ上セルのゲートに負電位が供給さているようになる。これと同時に、選択ブロックの非選択ワード線にVread(読み出し時の電位)、選択ブロックのセレクトゲートSGDに所定の電位が供給される。
次に、図1に示すデータ記憶回路10の信号VPREがVdd(例えば2.5V)、信号BLPREがVsg(Vdd+Vth)に設定され、信号BLCLAMPを例えば(0.6V+Vth)+Vfixの電位に一旦設定し、ビット線を例えば0.6V+Vfix=2.2Vにプリチャージする。この後、信号BLPRE=Vss、信号BLCLAMP=Vssとした後、セレクトゲートSGSに所定の電位が供給される。
セルの閾値が、ベリファイレベル1’より高い時は、セルがオフする。このため、ビット線はHレベル(例えば2.2V)のままである。また、ベリファイレベル1’より低い場合、セルがオンする。このため、ビット線は放電され、ソースと同電位つまりVfix(例えば1.6V)となる。
(プログラムベリファイ:データ反転、順転リフレッシュ)
前記ビット線放電時間中に、図26(b)に示すように、データキャッシをリフレッシュする。この時、例えば図31(b)に示すように、レベル1のベリファイで、レベル1に書き込んでいるデータ記憶回路のデータが0となるよう、LDDC0のデータのみが反転されるようリフレッシュ動作が実行される。また、図31(b)に示すレベル1の後に、図31(c)に示すレベル2のベリファイを行なうとき、レベル2に書き込んでいるデータ記憶回路のデータが0となるよう、LDDC1とLDDC0のデータが反転されるよう、リフレッシュ動作が実行される。したがって、図26(b)に示すように、LDDC(k)は、前のベリファイVLXX(k)と現在のベリファイVLX(k)のXOR(排他的論理和)=1の場合、反転動作によりリフレッシュ動作を実行する。
ここで、低めのベリファイレベルでベリファイを行う場合、PDCにデータLPDCが記憶され、DDCにデータLDDCQが記憶されるように操作する。また、本来のベリファイレベルでベリファイする場合、PDCにデータLDDCQが記憶され、DDCにデータLPDCが記憶されるように操作する。
(プログラムベリファイ:ビット線電位読み出し)
図26(c)に示すように、0〜7レベルのベリファイ時、SDC=Hとし、レベル0〜7に書き込んでいるデータ記憶回路のTDCのノードN3をVddにプリチャージする。レベル8〜Fのベリファイ時は、信号BLPREを一旦Vsg(Vdd+Vth)に設定し、TDCのノードN3をVddにプリチャージする。信号BOOSTをLレベルからHレベルに設定した後、信号BLCLAMPを例えば(0.45V+Vth)+Vfixに設定する。TDCのノードN3は、TDCが始めにVddにプリチャージされ、ビット線の電位が0.45V+Vfixより低い場合、Lレベル(Vfix(例えば1.6V))となり、ビット線の電位が0.45Vより高い場合、Hのまま(αVdd(例えば4.25V))となる。信号BLCLAMP=Vtr(例えば0.1V+Vth)とした後、信号BOOSTをHレベルからLレベルに設定する。
この後、信号VPREをVssに設定し、例えば図31(b)に示すレベル1(VLX=1、0001)のベリファイにおいて、LDDC2とLDDC1に対応する信号REGをHレベルとする。各データ記憶回路のデータは図31(b)に示すようになっている。このため、レベル1に書き込んでいるデータ記憶回路において、ベリファイレベルに達した場合のみ、TDCがHレベルとなる。ベリファイレベルに達していない場合、TDCはLレベルのままである。また、レベル8〜Fに書き込んでいる場合、SDCのデータが0である。このため、TDCは初めからVssになっている。さらに、レベル2〜7に書き込んでいる場合、信号REGをHレベルとすることにより、強制的にTDC=Vssとなる。例えば図32(a)(b)に示すレベルB(VLX=B、1011)のベリファイにおいて、データLDDC2に対応する信号REGをHレベルとする。各データ記憶回路のデータは図32(b)に示すようになっている。このため、レベルBに書き込んでいるデータ記憶回路において、ベリファイレベルに達した場合のみ、TDCがHレベルとなる。ベリファイレベルに達していない場合、TDCはLレベルのままである。また、レベルBより低いレベルに書き込んでいる場合、セルはオンする。このため、TDCはLレベルである。このため、レベルBに書き込んでいるデータ記憶回路において、ベリファイレベルに達した場合のみTDCはHレベルとなる。ベリファイレベルに達していない場合、TDCはLレベルのままである。また、レベルC〜Fに書き込んでいる場合、信号REGをHレベルとすることにより、強制的にTDCはVssとなる。
つまり、レベルn(VLX=VLX(3)、VLX(2)、VLX(1)、VLX(0))とすると、レベルnでのベリファイは、VLX(3)=0の場合、SDCからTDCをプリチャージし、VLX(3)=1の場合、信号BLPREを一旦Vsg(Vdd+Vth)に設定し、TDCのノードN3をVddにプリチャージする。VLX(2)、VLX(1)、VLX(0)は、LDDC2、LDDC1、LDDC0に対応し、VLX(2)=0、VLX(1)=0、VLX(0)=0のLDDCの信号REGをHレベルとし、強制的にTDC=Vssとする。
ここで、信号VREG=Hとし、低めのレベルでベリファイを行う場合、LDDCQに対応する信号REGをHレベルとし、本来のレベルでベリファイを行う場合、LPDCに対応する信号REGをHレベルとして強制的にTDCをVddに設定する。この後、信号BLC1をVsg(Vdd+Vth)に設定して、TDCの電位をPDCに読み込む。この結果、低めのレベルでベリファイを行う場合、PDCにはLDDCQのデータが記憶され、ベリファイをパスする場合、PDCはHレベルとなる。また、ベリファイレベルに未到達の場合、PDCはLレベル、本来のベリファイレベルでベリファイを行う場合、PDCにはLPDCのデータが記憶され、ベリファイをパスする場合、PDCはHレベル、ベリファイレベルに未到達の場合、PDCはLレベルとなる。
(プログラムベリファイ:Comp)
この後、このベリファイレベルによる書き込みが完了したかどうかが検証される。この動作は、本来のベリファイレベルによるベリファイシーケンスのリカバリー中に実行される。この検証によりベリファイデータの有無が検知される。
図26(d)は、検証動作のシーケンスを示している。すなわち、レベル0〜7のベリファイ時において、信号BLC2をHレベルに設定し、レベル8〜Fのベリファイ時において、信号VPREをVddに設定し、この状態において、信号BLPREをHレベルとしてTDCを充電する。TDCがHレベルとなるのは、レベル8〜Fのベリファイ時と、レベル0〜7のベリファイ時でレベル0〜7に書き込んでいるデータ記憶回路のみである。この後、信号VPREをLレベルとして、LDDC0、LDDC1、LDDC2に対応する信号REGをHレベルとする。すると、例えば図31(b)に示すレベル1のベリファイにおいて、レベル8〜Fに書き込んでいるデータ記憶回路のTDCは元々Lレベルであり、レベル0、2〜7に書き込んでいるデータ記憶回路のLDDC2からLDDC0は何れかが、Hレベルであるため、TDCはLレベルとなる。さらに、レベル1に書き込んでいるデータ記憶回路のTDCのみHレベルとなる。
例えば図32(b)に示すレベルBのベリファイの場合、レベル3、レベルBに書き込んでいるデータ記憶回路のLDDC2からLDDC0は何れかが、Hレベルである。このため、TDCはLレベルとなり、レベル3、レベルBに書き込んでいるデータ記憶回路のTDCのみがHレベルとなる。
この後、書き込み中のデータ検知と同様に、全てのデータ記憶回路に共通に接続されている信号線COMiを一旦充電し、信号CHK2nをLレベル、信号CHK1をHレベルとする。すると、書き込み中のデータ記憶回路のPDCはLレベルであり、且つ、TDCがHレベルの場合のみトランジスタ61lがオンし、信号線COMiの電位が下がる。したがって、このレベルを書き込んでいて、書き込み不完全のセルがあるかどうかを判断することができる。
しかし、図32(b)に示す場合、レベルBのベリファイの時に、レベル3で書き込み不十分のデータ記憶回路が残っていると、レベルBでのデータ検知はパスしない。
(データキャッシュ設定)
図27、28、29にそれぞれ示すように、プログラムとプログラムベリファイを何度か繰り返すと、低いレベルの書き込みが完了するはずである。しかし、たまたま数ビットの書き込みの遅いセルがある場合、このセルの書き込みが終了するまでベリファイを繰り返す。このため、ある回数以上はベリファイをしないようにする。しかし、例えば図32(b)に示す例の場合、レベルBのベリファイの時に、レベル3で書き込み不十分のデータ記憶回路が残っていると、レベルBでのデータ検知はパスとならなくなってしまう。したがって、16値の書き込みの場合、レベル0〜7の書き込みが終了するか、若しくは所定の最大ループ回数に達成した場合、SDCを開放する。但し、この前にレベル0〜7となっているデータ記憶回路をレベルFの書き込みとしてからSDCを開放する。
また、16値の書き込みの場合、レベル8〜B、8値の書き込みの場合、レベル0〜3の書き込みが終了するか、若しくは所定の最大ループ回数に達成した場合、を開放する。但し、この前にこれらの書き込み状態なっているデータ記憶回路をレベルF(16値)、レベル7(8値)の書き込みとしてからLDDC2を開放する。
また、16値の書き込みの場合、レベルCとレベルD、8値の書き込みの場合、レベル4とレベル5、4値の書き込みの場合、レベル1の書き込みが終了するか、若しくは所定の最大ループ回数に達成すると、LDDC1を開放する。しかし、この前にこれら書き込み状態となっているデータ記憶回路をレベルF(16値)、レベル7(8値)、レベル3(4値)の書き込みとしてからLDDC1開放する。
また、16値の書き込みの場合、レベルE、8値の書き込みの場合、レベル6、4値の書き込みの場合、レベル2の書き込みが終了するか、若しくは所定の最大ループ回数に達成した場合、LDDC0を開放する。但し、この前にこれら書き込み状態となっているデータ記憶回路をレベル15(16値)、レベル7(8値)、レベル3(4値)の書き込みとしてからLDDC0を開放する。
一方、レベル0の書き込みは、消去セルの深い閾値電圧を浅くすることのみ行っている。このため、レベル0の書き込みが終了するか、若しくは所定の最大ループ回数に達成した後、PDCを強制的にHレベル(非書き込み)とし、前述した書き込み未完成のデータ記憶回路が僅かであるかどうかの数の対象にしないようにすることもできる。この場合(OMITOPSPASS=Hレベル:OMITOPSPASSは、所定の最大ループ回数に達した後、PDCを強制的にHレベルとするためのパラメータである)も、レベル0の書き込みが終了するか、若しくは所定の最大ループ回数に達成した後に、PDCを強制的にHレベルとする。
図33(a)(b)(c)は、データキャッシュに対するデータ設定のシーケンスを示している。先ず、図33(a)に示すように、LDDC0,1,2のデータが反転している場合もあるため、全てのLDDC0,1,2のデータを元に戻す。しかし、LDDC2を開放する場合、LDDC2のデータは反転するようにし、LDDC1を開放す場合、LDDC1のデータは反転するようにする。
次に、図33(b)に示すように、通常のリフレッシュ動作時は、先ず、VPRE=Vss、BLPRE=HレベルとしてTDC=Vssとしていた。しかし、SDCを開放する場合、BLC2=HレベルとしてTDCを充電し、LDDC0、LDDC1、LDDC2をリフレッシュさせる。すると、SDC=Hレベル、つまりレベル0〜7への書き込みとなっているデータ記憶回路のLDDC0、LDDC1、LDDC2を“1”にする。つまり、レベルFの書き込みとすることができる。
また、LDDC2を開放する場合、LDDC2は“1”となっているため、信号VPRE=Vss、信号BLPRE=HレベルとしてTDC=Vssとした後、信号VPRE=Vdd、LDDC2の信号REG=Hレベルとする。このようにして、TDCを充電し、LDDC0、LDDC1をリフレッシュさせると、レベル15(16値)、レベル7(8値)の書き込みとすることができる。
また、LDDC1を開放する場合、LDDC1は“1”となっている。このため、信号VPRE=Vss、信号BLPRE=HレベルとしてTDC=Vssとした後、信号VPRE=Vdd、LDDC1の信号REG=Hレベルとする。このようにして、TDCを充電し、LDDC0をリフレッシュさせると、レベル15(16値)、レベル7(8値)、レベル3(4値)の書き込みとすることができる。
この後、図33(c)に示すように、OMITOPSPASSがHレベルの場合で、16レベルの場合、信号BLC2をHレベルとして、SDCのデータをTDCにコピーする。この後、信号VPREをLレベルとし、全ての信号REGをHレベルとして、レベル0に書き込んでいる場合のみTDCをHレベルにする。
OMITOPSPASSがHレベルの場合で、8レベルの場合、信号VPREをHレベル、信号BLPREをHレベルとして、TDCを一旦Vddにプリチャージした後、信号VPREをLレベルとし、全ての信号REGをHレベルとして、レベル0に書き込んでいる場合のみTDCをHレベルにする。この後、LDDCQをTDCにコピーし、PDCをDDCに転送した後、TDCをPDCに移す。再び同じようにTDCをHレベルとし、LDDCPをTDCにコピー、PDCをDDCに転送した後、TDCをPDCに移す。
このようにして、レベル0へ書き込むデータ記憶回路のPDCを、強制的に書込み非選択であるHレベルとする。図26(c)において、ベリファイのビット線のデータをTDCに取り出した後、信号REGをHレベルとする。これにより、ベリファイ対象レベル以外のデータ記憶回路を強制的にフェイルとしていた。しかし、LDDC2を開放した後、LDDC2には次のページの書込みデータなどが入力してくるはずであるため、LDDC2は動かさない。同様に、LDDC1を開放した後、LDDC1は動かさず、LDDC0を開放した後、LDDC0は動かさない。
PDCがLレベルの場合、再び書き込み動作を行ない全てのデータ記憶回路のデータがHレベルになるまで、このプログラム動作とベリファイ動作を繰り返す。
本例では、第2ステージにおいてレベル0への書き込みを行い、第3ステージにおいて、レベル0への書き込みを行わなかった。つまり、図27、図28、図29に示すように、第1ステージでレベル3を書き込み、第2ステージでレベル16を書き込み、第3ステージでレベル15を書き込んでいた。しかし、第2ステージにおいて、レベル0への書き込みを行わず、第3ステージにおいて、レベル0への書き込みを行うことも可能である。この場合、第1ステージにおいて、3値のレベルに書き込み、第2ステージにおいて15値のレベルに書き込み、第3ステージにおいて、16値のレベルに書き込む。また、第1ステージにおいてレベル0への書き込みを行うことも可能である。
各レベルでのベリファイは、それぞれのベリファイレベルより低めのベリファイレベルを設定し、この低めのレベルを超えた場合、書き込みスピードを遅くして書き込みを行うことにより、狭い閾値電圧の分布幅に書き込むことが可能である。
図13、図15、図17において、ワード線の電圧が最も低い電圧になるベリファイは、レベル0のベリファイであり、低めのベリファイのレベル0のベリファイが最も低い電圧、つまり0Vとなる。しかし、レベル0のベリファイのみ、他のベリファイレベルで行っている。低めのベリファイレベルを設けずに、レベル0のベリファイを0Vとし、低めのレベルを超えた場合、書き込みスピードを遅くして書き込みをやめることも可能である。これにより、レベル0のベリファイレベルを下げることが可能である。また、低めのレベルのベリファイ動作がなくなるため書き込み速度の高速化が可能である。
無論、レベル0のみでなく、任意の数レベルのみ、低めのベリファイレベルを超えた場合、書き込みスピードを遅くして書き込み動作を停止することも可能である。
低めのベリファイレベルを超えた場合、書き込みスピードを遅くして書き込み動作を遅くする動作を、高いレベル(例えば、レベルF、レベルFとレベルE、レベルFとレベルEとレベルDとレベルC)の書き込みの時に停止する。すると、書き込みスピードが遅くならない。このため、プログラムとプログラムベリファイのループが少なくなり、書き込み電圧を低くできる。したがって、高い書き込み電圧による誤書き込みを防止することが可能である。
また、図26(b)に示すように、PDC⇔LDDC0、PDC⇔LDDC1、PDC⇔LDDC2のリフレッシュ動作の後に、PDC⇔LDDCQ、又はPDC⇔LDDCPのリフレッシュ動作を必ず行い、PDCのデータを、LDDCQ、又はLDDCPとしていた。この理由は、読み出したビット線の電位を、DDCA乃至DDCD、及びSDCに記憶されているデータにより操作するためである。すなわち、あるレベルのベリファイ時、このレベルより上のレベルに書き込んでいるセルが、書き込み完了となってしまうことを防止するため、信号REGA〜REGDをHレベルとし、TDCに読み出されたビット線の電位を強制的にLレベル、すなわち、書き込み未完了とする必要があるためである。
これに対して、図1に破線で示すように、TDCの放電回路を接続することにより、リフレッシュ回数を削減できる。この放電回路は、例えば電源VPRE又はVssが供給されるノードとノードN3の間に直列接続されたNチャネルMOSトランジスタ62a、62bにより構成されている。トランジスタ62aのゲートはノードN1aに接続され、トランジスタ62bのゲートには、信号REGPが供給されている。PDCのノードN1aがハイレベルで、信号REGPをハイレベルとすることにより、TDCの電荷を放電させることができる。
このような構成とすることにより、LDDC0、LDDC1、LDDC2のデータがPDC内にあっても、信号REGPをHレベルとすることにより、TDCを放電させることができる。この後、信号VPREをHレベルとし、LPDC又はLDDCQの信号REGをHレベルとする。これにより、元々非書き込みの場合、TDCを強制的に“Hレベル”とし、PDCのデータをDDCA〜Bの何れかに転送した後、TDCのデータをPDCに転送する。このため、元々非書込みの場合、PDCは“Hレベル”となる。また、書き込みの場合で、ベリファイレベルより高いレベルに書き込んでいる場合、PDCは“Lレベル”となり、ベリファイが強制的に完了しないようにすることができる。したがって、PDCのデータを、LDDCQ、又はLDDCPとしなくとも信号REGPをハイレベルとすることにより、ベリファイが強制的に完了しない状態にPDCを設定できる。このため、リフレッシュ回数を減らすことができる。
尚、書き込み動作において、低めのベリファイレベルを使用しない場合、DDCA〜DDCDの内の1つを削除することができる。
さらに、本実施形態は、図12、図14、図16に示す書き込み順序で隣接セルを書き込みながら、第1ステージ、第2ステージ、第3ステージと3回のデータ入力により書き込んでいる。しかし、隣接セルのフローティングゲート間のカップリング容量が少ない場合、隣接セルを書き込まず、選択されたセルに、第1ステージ、第2ステージ、第3ステージの書き込みを続けて行うことも可能である。この場合、続けて書き込みを行うため、例えば第2ステージで16値のレベルを、本来のベリファイレベルより低めに書き込む。全てのPDCは書き込み完了状態となっているが、DDC0,DDC1,DDC2,SDCのデータを残しておくと、次回の第3ステージの書き込みデータを再生することができる。このようにすることで、第3ステージのデータロードを省略することもできる。さらに、第1ステージ又は第2ステージの書き込みを省略したり、第1ステージ及び第2ステージの書き込みを省略し、第3ステージの書き込みのみとすることも可能である。
図13(f)、図15、図17にそれぞれ示すベリファイレベルの差分を図46に示す。図47に示すように、中性閾値電圧から離れるに従い、必要なデータリテンションマージン多くなる。このため、図46に示す差分は、中性閾値電圧から離れるに従って、増加する。レベル0とレベル1の間の差分が、他のレベルとの間の差分より広いが、これはレベル0の分布は、例えば図13(c)に示すdvpgm0.3Vと大きいステップサイズの第2ステージで書き込みを行っているためである。また、レベル0の閾値電圧の分布が、他のレベルを書き込んでいる間に誤書き込みにより、広がった場合においてもレベル1の閾値電圧の分布に達しないようにマージンを設定している。
しかし、通常の書込みシーケンスにおいて、下の閾値レベルの書き込みが上の閾値レベルの書き込みより先に完了する。このため、上の閾値レベルを書いている間に、既に書き込みが完了した、下の閾値レベルの閾値分布が、誤書き込みにより、広がってしまうことがある。この閾値分布の拡大が大きい場合、図46に示すように、差分に補正値を加えて、補正後の差分とする。さらに、下の閾値レベルのほうが、誤書き込みが発生し易いため、下の閾値レベルに対応する補正値を、大きい値とすることも可能である。
また、この問題を抑えるために、本実施例では、16レベル乃至15レベルを同時に書き込んでいた。しかし、16レベル乃至15レベルの内、最初に上のレベル8〜F、又はレベルC〜F、又はレベルE,F、又はレベルFのみ書き込み、この後、残りのレベルを書き込むことも可能である。
本実施例では、図12、図14、図16に示すように、NANDセル内のソース側のセルからドレイン側セルの順で書き込んでいた。しかし、図48(a)に実線(a)で示すように、ソース側セル(例えばWL0に接続されたセル)ベリファイレベルまで書き込んだ後、ドレイン側セル(WL1〜31)が書き込まれると、ドレイン側セル(例えばWL31に接続されたセル、図48(a)に実線(c)で示す)は、ベリファイレベルまで書き込まれる。しかし、ソース側セル(例えばWL0に接続されたセル、図48(a)に破線(b)で示す)の閾値分布が高くなる。このため、次のレベルのリードレベルに近くなり、正しく読み出すことができなくなるという問題がある。
このため、ソース側のセルを書き込む場合、図48(b)に実線(a)で示すように、ベリファイレベルを図48(a)に示すベリファイレベルより予め少し下げておく。この後、ドレイン側セル(WL1〜31)が書き込まれると、ソース側セル(例えばWL0に接続されたセル、図48(b)に破線(b)で示す)の閾値分布が、次のレベルのリードレベルより低くなる。
このようにすることで、ソース側セルの閾値分布(図48(b)に破線(b)で示す)と、ドレイン側セルの閾値分布(図48(a)に実線(c)で示す)を、ほぼ同じレベルに設定することができる。ソース側セルの閾値が高くシフトするシフト量は、ソース側セルからドレイン側セルに向かって徐々に小さくなる。このため、ベリファイレベルを下げる大きさは、ソース側からドレイン側に向かって徐々に小さくするとよい。徐々に小さくするのが困難なときは、例えばWL0〜7を1セット、WL8〜15を1セット、WL16〜23を1セット、WL24〜31を1セット(ベリファイレベルは下げない)とすることも可能である。
(イレーズ動作)
イレーズ動作は、図3に破線で示すブロック単位に行なわれる。また、データ記憶回路に接続されている2本のビット線(BLie、BLio)について同時に行う。消去後、セルの閾値は、図10、図13に示すように、レベル0(負電位)となる。EASB(Erased Area Self Boost)書き込み方法の場合、消去セルの閾値電圧を浅くする必要がある。
図34(a)は、EASB書き込み方法を示している。この書き込み方法は、必ずソース側のメモリセルから書き込みを行う。先ず、ビット線を書き込みの場合Vss、非書き込みの場合Vddに設定する。次に、例えばワード線WL7に接続されたセルを書き込む場合、ワード線WL0〜WL4はVpass、ワード線WL5はVss、ワード線WL6はVdd、中間電位、又はVpass、ワード線WL7はVpgm、ワード線WL8〜31はVpassにそれぞれ設定される。このとき、書き込みの場合、ワード線WL7のゲートがVpgm、チャネルがVssとなり、書き込みが行なわれる。
しかし、一般に、非書き込みの場合、チャネルは、ブーストされて例えばVpass/2となるが、書き込まれたセルの数が多いと、チャネルはブーストされにくくなる。このため、誤書き込みが発生し易くなる。ところが、EASB書き込み方法の場合、必ずソース側から書き込まれている。したがって、ワード線WL5を0Vとしてブーストすると、ワード線WL4〜WL31に接続されたセルは消去されているため、チャネルはブーストされ、書き込まれなくなる。
このように、既に書き込まれたセルにブーストした電荷が移動しないようにしなくてはならないが、ワード線WL5に接続されたセルが消去状態の場合で、閾値電圧が深い場合、オフしなくなってしまう。したがって、消去セルの閾値電圧を浅くする必要がある。
本実施形態は、第2ステージでの書き込み時、レベル0のセルに対して書き込みを行い、閾値電圧を浅くする。このため、以下に示すように、消去後、ブロック単位で、閾値電圧が深いセルを浅くする書き込みを必要としない。しかし、第1ステージの書き込みなどにおいて、隣接セルの閾値電圧が低いレベルから高いレベルへ移動すると、閾値電圧が大きく変動する。このため、カップリング容量により既に書き込まれたメモリセルの閾値電圧が変動してしまうなどの問題がある。したがって、イレーズ動作後、ブロック内の全ワード線を選択して、プログラム及びプログラムベリファイリードを行ない、図13に示すように、各セルの消去後の閾値電圧を一定のレベルまで書き込むこともできる。この時の、プログラム及びプログラムベリファイリード動作は、全ワード線を選択状態にし、通常のプログラム及びプログラムベリファイリードと全く同じに行なえばよい。
図34(b)は、図34(a)を変形したものである。選択ワード線WL7よりソース側の2つのメモリセルのワード線WL6、WL5をVdd、中間電位、又はVpassとし、3つ目のワード線WL4をVssとしてオフとする。その他のワード線はVpass又は中間電位とする。この場合、第2ステージにおいて、レベル0のセルに対して書き込みを行なわず、第3ステージの書き込み時にレベル0のセルに対して書き込みを行なう。
(読み出し動作)
図35は、16レベル書き込み後における閾値電圧の分布と、各ページにおけるデータの割付を示している。
ロワーページのデータを読む場合、リード及びベリファイレベル(R&V Level)のレベル8で読み出し動作を行う。すると、セルがオンし、ビット線の電位がLレベルとなった場合、出力データはHレベル(“1”)、セルがオフし、ビット線の電位がHレベルとなった場合、出力データはLレベル(“0”)となる。
アッパーページのデータを読む場合、レベルCとレベル4で読み出し動作を行う。したがって、2シーケンスの読み出しが必要である。
ハイアーページのデータを読む場合、レベルE、レベルA、レベル6、レベル2で読み出し動作を行えばよい。したがって、4シーケンスの読み出しが必要である。
トップページのデータを読む場合、レベルF、レベルD、レベルB、レベル9、レベル7、レベル5レベル3、レベル1で読み出し動作を行う。したがって、8シーケンスの読み出しが必要である。
図37は、1シーケンスの読み出し動作におけるワード線とビット線の波形を示し、図38は、読み出しのアルゴリズムを示している。
第1回目のリード動作について説明する。読み出しアドレス及びリードコマンドが入力されると(S31)、選択されたメモリセルのウェル、ソース線、非選択ビット線、非選択ブロックのセレクトゲートに制御信号及び制御電圧発生回路7より、電圧Vfix(例えば1.6V)を供給する(S32)。選択ワード線には、ロワーページの場合、レベル8の電位を供給し、アッパーページ場合、レベルCの電位を与え、ハイアーページの場合、レベルEの電位を供給し、トップページの場合、レベルFの電位を供給する(S33)。これらワード線の電位がウェル、ソース線の電位Vfixより低い場合、見かけ上セルのゲートには負電位が印加されたこととなる。これと同時に、選択ブロックの非選択ワード線にVreadを供給し、選択ブロックのセレクトゲートSGDに所定の電圧を供給する。
次に、図1に示すデータ記憶回路10の信号VPREをVdd(例えば2.5V)に設定し、信号BLPREをVsg(Vdd+Vth)に設定し、信号BLCLAMPを例えば(0.6V+Vth)+Vfixに一旦設定し、ビット線を例えば0.6V+Vfix=2.2Vにプリチャージする。次に、セルのソース側のセレクト線SGSに所定の電圧を供給する。ウェル及びソースがVfixとなっているため、セルがオフする場合、ビット線の電位はHレベル(例えば2.2V)のままであり、セルがオンする場合、ビット線の電位は放電され、ソースと同電位つまりVfix(例えば1.6V)となる。
この後、信号BLPREに一旦Vsg(Vdd+Vth)を供給し、TDCのノードN3をVddにプリチャージする。この後、信号BOOSTをLレベルからHレベルとし、TDCのノードN3の電位をαVdd(例えばα=1.7、αVdd=4.25V)に設定する。
ここで、信号BLCLAMPを例えば(0.45V+Vth)+Vfixに設定する。TDCのノードN3は、ビット線の電位が0.45V+Vfixより低い場合、Lレベル(Vfix(例えば1.6V))となり、ビット線の電位が0.45Vより高い場合、Hレベルのまま(αVdd(例えば4.25V))となる。次いで、信号BLCLAMPをVtr(例えば0.1V+Vth)とした後、信号BOOSTをHレベルからLレベルとする。ここで、TDCはLレベルの場合、ノードN3の電位がVfix(例えば1.6V)から下がるが、信号BLCLAMPをVtr(例えば0.1V+Vth)に設定しているため、0.1Vよりは下がらない。TDCはHレベルの場合、ノードN3の電位が(αVdd(例えば4.25V))からVddとなる。
ここで、信号BLC1をVsg(Vdd+Vth)として、TDCの電位をPDCに読み込む。したがって、セルの閾値電圧が、8レベルより低い場合、PDCはLレベル、高い場合PDCはHレベルとなり、読み出しが行なわれる。
ロワーページの読み出し(S33)は、リードシーケンスが1回だけである。このため、リードシーケンスの後、ステップS41(dt_p2sシーケンス)に移行され、このステップ41において、PDCのデータがSDCに移動され、SDCのデータは出力バッファ近くに転送される。
アッパーページの読み出し(S34)は、リードシーケンスが2回必要であり、ハイアーページの読み出しは、リードシーケンスが4回必要である(S33〜S36)。さらに、トップページの読み出しは、リードシーケンスが8回必要である(S33〜S40)。このため、リードシーケンスの後、アッパーページの場合1回、ハイアーページの場合3回、トップページの場合7回の(後述するリードアッド)シーケンスが実行される(S34〜S40)。この後、ステップS41に移行され、ステップS41において、PDCのデータがSDCに転送され、このSDCのデータが出力バッファ近くに転送される。
(リードアッド:Read Add)
第2回目以降のリード動作も1回目のリード動作と同様であり、選択ワード線には、次のような電位が供給される。
アッパーページの2回目:レベル4の電位、
ハイアーページの2回目:レベルAの電位、
ハイアーページの3回目:レベル6の電位、
ハイアーページの4回目:レベル2の電位、
トップページの2回目:レベルDの電位、
トップページの3回目:レベルBの電位、
トップページの4回目:レベル9の電位、
トップページの5回目:レベル7の電位、
トップページの6回目:レベル5の電位、
トップページの7回目:レベル3の電位、
トップページの8回目:レベル1の電位。
上記のように選択ワード線の電位を設定した後、ビット線をプリチャージして、放電させ、ビット線の電位をTDCに転送する。1回目のリードでは信号BLC1をVsg(Vdd+Vth)に設定して、TDCの電位をPDCに読み込んだ。これに対して、2回目のリードの場合、PDCに読み込む前に、信号DTGA〜DTGDのうちの1つがHレベルに設定され、信号VPREをLレベルとされる。PDCのデータがHレベルの場合、強制的にTDCをLレベルとした後、信号BLC1をVsg(Vdd+Vth)として、TDCの電位をPDCに読み込む。リードアッドにおいて、ハイアーページは3回同じ動作を行い、トップページは7回同じ動作を行なう。図35に示すデータは、PDCに読み込まれたデータを示している。
上記第1の実施形態によれば、メモリセルに4ビット、16値のデータを記憶する場合、データ記憶回路に4つのダイナミックデータキャッシュにより構成されたDDCA、DDCB、DDCC、DDCDと、スタティックデータキャッシュにより構成されたPDC,SDCを設けることにより、これらのデータをメモリセルに書き込むことが可能となる。このため、メモリセルに設定する閾値電圧の数より少ないラッチ回路により、16値のデータを書き込むことができる。したがって、データ記憶回路の面積を削減することが可能である。
しかも、4つのデータは4つのDDCA〜DDCDにより記憶している。DDCA〜DDCDのそれぞれは、3つのトランジスタにより構成されているため、フリップフロップ回路により構成されたSDC,PDCに比べて回路構成が簡単である。したがって、ダイナミックデータキャッシュを多用することによりデータ記憶回路の面積を削減することが可能である。
さらに、書き込み途中において、閾値電圧の低い値は、書き込みが完了する。この場合、このPDC、SDC、DDCA〜DDCDの何れかを順次開放して、次のデータの入力を可能としている。したがって、入力データをプリフェッチすることができるため、高速な書き込みが可能となる。
また、複数のDDCを用いる場合、これらDDCに記憶されたデータをリフレッシュする必要があり、一般に、このリフレッシュ回数はDDCの数だけ必要である。しかも、1つのDDCに対するリフレッシュ動作は、DDC→PDC、PDC→DDCの2動作が必要であり、4つのDDCを用いたデータ記憶回路の場合、通常8回のリフレッシュ動作を必要とする。しかし、第1の実施形態の場合、DDC制御回路7−1を設け、DDCをリフレッシュする毎に、各DDCが記憶しているデータの定義を変更することにより、5回のリフレッシュ動作に抑えている。したがって、第1の実施形態によれば、書き込み時間を短縮することが可能となる。
また、DDC制御回路7−1は、任意の順序で入力されるデータを予め設定された順序でDDCA〜DDCDに転送し、この後、入力されたページアドレスに応じてDDCA〜DDCDのデータの定義を変更している。このため、任意の順序で入力されるデータとDDCA〜DDCD及びPDCの関係を確実に制御することができる。
(第2の実施形態)
上記第1の実施形態は、図36、図37に示すように、1つのレベルのベリファイ動作は2回のリードで行なった。しかし、これに限定されるものではない。
図39は、第2の実施形態を示している。図39に示すように、ビット線BLをプリチャージした後、ワード線WLに低めのベリファイ電圧VLを設定し、第1のベリファイ動作を行う。これに続いて、ワード線WLに本来のベリファイ電圧Vを設定し、第2のベリファイ動作を行なう。
第2の実施形態によれば、ビット線BLを1回プリチャージし、この状態において、低めのベリファイ電圧による第1のベリファイ動作と本来のベリファイ電圧による第2のベリファイ動作を連続して行っている。このため、ビット線の充電時間を短縮することができ、第1、第2のベリファイ動作毎にビット線をプリチャージする場合に比べてプログラム動作を高速化することができる。
図40は、第2の実施形態に係るリード動作の例を示している。図40に示すように、ビット線BLをプリチャージした後、ワード線WLに低めのリード電圧RLを供給し、ダミーリードとしての第1のリード動作を行う。これに続いて、本来のリード電圧Rをワード線WLに供給し、本来のリード電圧Rによる第2のリード動作を行なうようにしてもよい。ダミーリードを行なうのは、ベリファイと同様の動作とするためである。
(第3の実施形態)
図41は、第3の実施形態を示している。図41は、ビット線をプリチャージした後、例えば4レベルを続けて読み出す例を示している。すなわち、ビット線BLをプリチャージした後、ワード線WLに複数の異なる低めのベリファイ電圧AVL、BVL、CVL、DVLを順次供給し、これらベリファイ電圧AVL、BVL、CVL、DVLにより、連続して低めの第1乃至第4のベリファイを行なう。この後、再度、ビット線BLをプリチャージした後、ワード線WLに複数の異なる本来のベリファイ電圧AV、BV、CV、DVを順次供給し、これら本来のベリファイ電圧AV、BV、CV、DVにより、本来の第1乃至第4のベリファイを行なう。
上記第3の実施形態によれば、1回のビット線のプリチャージに対して4回のベリファイを行っている。したがって、ビット線のプリチャージ回数を削減することができ、4値のデータの書き込み速度を高速化することが可能である。
また、図42は、第3の実施形態に係るリード動作の例を示している。リード動作は、ベリファイにおいてまとめたレベルと同じレベルでまとめる。すなわち、第2ステージは、レベル0〜Fの16レベルのベリファイを行い、第3ステージは、レベル1〜Fの15レベルのベリファイを行う。このため、例えばレベル0は1レベルのみで、図39に示すように、ベリファイ及びリードし、レベル1〜3は3レベル連続的にベリファイ及びリードする。さらに、レベル4〜7は3レベル連続的にベリファイ及びリードし、レベル8〜Bは4レベル連続的にベリファイ及びリードする。さらに、レベルC〜Fは4レベル連続的にベリファイ及びリードする。
このように複数レベルをまとめてベリファイ及びリードすることにより、ベリファイ及びリード動作を高速化することが可能である。
(第4の実施形態)
上記第1乃至第3の実施形態は、プログラム時に、非書き込みのビット線に信号BLC1=Vsgを設定し、非選択ビット線に信号BLCRL=Vddとして、ビット線をVddに充電していた。しかし、信号BIASo(又はBIASe)をVLIMIT(VLIMIT≦Vdd+Vth)に設定し、信号BLSo(又はBLSe)をVLIMITに設定し、ビット線の電位をVddより低く設定することも可能である。
このようにプログラム時において、非選択ビット線の電位をVddより低く設定することにより、プログラム時におけるビット線の充電量を抑えることもができ、充電時のピーク電流を抑制でき、消費電流を削減することが可能である。
(第5の実施形態)
第1の実施形態の場合、図25(e)に示すように、16レベルの書き込みは、1つのデータ記憶回路に、合計6個のデータキャッシュが必要であった。すなわち、書き込み/非書き込みを区別するためのPDC、低めのベリファイレベルを超えているどうかを区別するためのLDDCQ、16ビットのデータを区別するためのSDC、LDDC2、LDDC1、LDDC0が必要であった。しかし、レベル0は、元々消去セルであり、このレベル0のプログラムが必要でない場合、低めのベリファイレベルを超えているどうかをPDCにより区別し、15ビットのデータをSDC、LDDC2、LDDC1、LDDC0により区別する。さらに、非書き込み時は、SDC、LDDC2、LDDC1、LDDC0を全て“0”にセットする。
図43は、第5の実施形態に係わるデータキャッシュとデータの関係を示している。
図43に示すようにデータを設定し、プログラム時、非選択ビット線に対応する信号BIASo(又はBIASe)をVdd+Vth(又は<Vdd+Vth)として、ビット線にVddを供給する。この状態において、選択されたビット線のみをフローティング状態とし、LDDC2,LDDC1,LDDC0のいずれかが“1”となっている場合、信号VPREをVssに設定し、信号REGをVddに設定し、さらにSDCがLレベルになっているとする。すると、非書き込みビット線以外に対応するビット線がVssになり書き込み状態となる。
一方、SDCがHレベルで、LDDC2,LDDC1,LDDC0の全てが“0”の場合、ビット線はフローティングのままである。しかし、非選択ビット線をVddに充電することにより、カップリングによってビット線の電位がVddに近い電位となり、書き込み非選択となる。この後、信号BLCLAMPをVssとした後、信号VPREをVssに設定し、信号BLPREをVddとし、信号TDCをVssとし、信号VPREをVdd,信号REGiをHレベルとし、LDDCi(iは0〜2のうち任意)のデータをTDCに移動し、信号DTGiをHレベルとして、PDCに記憶されているデータ(低めのベリファイレベルを超えているどうかの区別を示す)をLDDCiにコピーする。この状態において、信号BLC1をHレベルとしてTDCのデータをPDCに移動した後、信号VPREをVdd、信号REGiを中間電位とする。すると、低めのベリファイをパスしている場合、ビット線に中間電位が供給され、少しのみ書き込みを行う。
上記第5の実施形態によれば、レベル0のプログラムが必要でない場合、低めのベリファイレベルを超えているどうかをPDCにより区別し、15ビットのデータをSDC、LDDC2、LDDC1、LDDC0により区別している。このため、データキャッシュの数を1つ削減することが可能である。
図44は、第5の実施形態の変形例を示し、7レベルの書き込みの場合を示している。7レベルの場合、4つのデータキャッシュを必要とする。すなわち、低めのベリファイレベルを超えているどうかをPDCにより区別し、7ビットのデータをSDC、LDDC1、LDDC0により区別する。非書き込み時、SDCがHレベル、LDDC1、LDDC0は全て“0”に設定され、PDCは1に設定される。
図45は、第5の実施形態の別の変形例を示し、3レベルの書き込みの場合を示している。3レベルの場合、3つのデータキャッシュを必要とする。すなわち、低めのベリファイレベルを超えているどうかはPDCにより区別し、3ビットのデータはSDC、LDDC0により区別する。非書き込み時、SDCがHレベル、LDDC1、LDDC0は全て“0”に設定され、PDCは1に設定される。
さらに、低めのベリファイをパスした後、ビット線に中間電位が供給され、少しのみ書き込みを行う書き込みを行わない場合、低めのベリファイレベルを超えているどうかを区別するためのデータを記憶する必要がない。この場合、図43、図44、図45に示す例からさらに1つずつデータキャッシュを削減することが可能である。
その他、本発明は、上記各実施形態に限定されるものではなく、発明の要旨を変えない範囲において種々変形実施可能なことは勿論である。
1…メモリセルアレイ、2…ビット線制御回路、5…データ入出力端子、7…制御信号及び制御電圧発生回路、8…制御信号入力端子、7−1…ダイナミックデータキャッシュ(DDC)制御回路、7a〜7e…コンバータ、7a−1〜7a−4…フリップフロップ回路、7a−6…比較回路。