以下、本発明の実施形態を図面を参照して説明する。
図1は、本発明の第1の実施形態に係わるNANDセル型EEPROMの概略構成を示すブロック図である。
メモリセルアレイ1に対して、読み出し/書き込み時のビット線を制御するためのビット線制御回路2と、ワード線電位を制御するためのワード線駆動回路7が設けられる。ビット線制御回路2,ワード線駆動回路7は、それぞれカラム・デコーダ3,ロウ・デコーダ8によって選択される。ビット線制御回路2は、データ入出力線(IO線)を介して入出力データ変換回路5と読み出しデータ/書き込みデータのやり取りを行う。入出力データ変換回路5は、読み出されたメモリセルの多値情報を外部に出力するため2値情報に変換し、外部から入力された書き込みデータの2値情報をメモリセルの多値情報に変換する。入出力データ変換回路5は、外部とのデータ入出力を制御するデータ入出力バッファ6に接続される。データ書き込み終了検知回路4はデータ書き込みが終了したか否かを検知する。
図2,図3は、メモリセルアレイ1とビット線制御回路2の具体的な構成を示している。メモリセルM1 〜M8 と選択トランジスタS1 ,S2 で、NAND型セルを構成する。NAND型セルの一端はビット線BLに接続され、他端は共通ソース線Vsと接続される。選択ゲートSG1 ,SG2 、制御ゲートCG1 〜CG8 は、複数個のNAND型セルで共有され、1本の制御ゲートを共有するメモリセルはページを構成する。メモリセルはそのしきい値Vtでデータを記憶し、Vtが0V以下である場合“0”データ、Vtが0V以上1.5V以下の場合“1”データ、Vtが1.5V以上電源電圧以下の場合“2”データとして記憶する。1つのメモリセルで3つの状態を持たせ、2つのメモリセルで9通りの組み合わせができる。この内、8通りの組み合わせを用いて、2つのメモリセルで3ビット分のデータを記憶する。この実施形態では、制御ゲートを共有する隣合う2つのメモリセルの組で3ビット分のデータを記憶する。また、メモリセルアレイ1は専用のpウェル上に形成されている。
クロック同期式インバータCI1 ,CI2 とCI3 ,CI4 でそれぞれフリップ・フロップを構成し、書き込み/読み出しデータをラッチする。また、これらはセンス・アンプとしても動作する。クロック同期式インバータCI1 ,CI2 で構成されるフリップ・フロップは、「“0”書き込みをするか、“1”又は“2”書き込みをするか」、を書き込みデータ情報としてラッチし、メモリセルが「“0”の情報を保持しているか、“1”又は“2”の情報を保持しているか」、を読み出しデータ情報としてラッチする。クロック同期式インバータCI3 ,CI4 で構成されるフリップ・フロップは、「“1”書き込みをするか、“2”書き込みをするか」、を書き込みデータ情報としてラッチし、メモリセルが「“2”の情報を保持しているか、“0”又は“1”の情報を保持しているか」、を読み出しデータ情報としてラッチする。
nチャネルMOSトランジスタの内で、Qn1 は、プリチャージ信号PREが“H”となると電圧VPRをビット線に転送する。Qn2 は、ビット線接続信号BLCが“H”となってビット線と主要なビット線制御回路を接続する。Qn3 〜Qn6 ,Qn9 〜Qn12は、上述のフリップ・フロップにラッチされているデータに応じて、電圧VBLH ,VBLM ,VBLL を選択的にビット線に転送する。Qn7 ,Qn8 はそれぞれ信号SAC2 ,SAC1 が“H”となることでフリップ・フロップとビット線を接続する。Qn13は、フリップ・フロップにラッチされている1ページ分のデータが全て同じか否かを検出するために設けられる。Qn14,Qn15とQn16,Qn17はそれぞれカラム選択信号CSL1 ,CSL2 が“H”となって、対応するフリップ・フロップとデータ入出力線IOA,IOBを選択的に接続する。
なお、図3においてインバータ部分を図19(a)に示すように省略して示しているが、これは図19(b)に示す回路構成となっている。
次に、このように構成されたEEPROMの動作を図4〜図6に従って説明する。図4は読み出し動作のタイミング、図5は書き込み動作のタイミング、図6はベリファイ読み出し動作のタイミングを示している。いずれも制御ゲートCG4が選択された場合を例に示してある。
読み出し動作は、2つの基本サイクルで実行される。読み出し第1サイクルは、まず電圧VPRが電源電圧Vccとなってビット線はプリチャージされ、プリチャージ信号PREが“L”となってビット線はフローティングにされる。続いて、選択ゲートSG1 ,SG2 、制御ゲートCG1 〜CG3 、CG5 〜CG8 はVccとされる。同時に制御ゲートCG4 は1.5Vにされる。選択されたメモリセルのVtが1.5V以上の場合のみ、つまりデータ“2”が書き込まれている場合のみ、そのビット線は“H”レベルのまま保持される。
この後、センス活性化信号SEN2 ,SEN2Bがそれぞれ“L”,“H”、ラッチ活性化信号LAT2 ,LAT2Bがそれぞれ“L”,“H”となって、クロック同期式インバータCI3 ,CI4 で構成されるフリップ・フロップはリセットされる。信号SAC2 が“H”となってクロック同期式インバータCI3 ,CI4 で構成されるフリップ・フロップとビット線は接続され、まずセンス活性化信号SEN2 ,SEN2Bがそれぞれ“H”,“L”となってビット線電位がセンスされた後、ラッチ活性化信号LAT2 ,LAT2Bがそれぞれ“H”,“L”となり、クロック同期式インバータCI3 ,CI4 で構成されるフリップ・フロップに、「“2”データか、1”又は“0”データか」の情報がラッチされる。
読み出し第2サイクルは読み出し第1サイクルと、選択制御ゲートCG4 の電圧が1.5Vでなく0Vであること、信号SEN2 ,SEN2B,LAT2 ,LAT2B,SAC2 の代わりに信号SEN1 ,SEN1B,LAT1 ,LAT1B,SAC1 が出力されることが違う。よって、読み出し第2サイクルでは、クロック同期式インバータCI1 ,CI2 で構成されるフリップ・フロップに、「“0”データか、“1”又は“2”データか」の情報がラッチされる。
以上説明した2つの読み出しサイクルによって、メモリセルに書き込まれたデータが読み出される。
データ書き込みに先だってメモリセルのデータは消去され、メモリセルのしきい値Vtは0V以下となっている。消去はpウェル、共通ソース線Vs、選択ゲートSG1 ,SG2 を20Vにし、制御ゲートCG1 〜CG8 を0Vとして行われる。
書き込み動作では、まずプリチャージ信号PREが“L”となってビット線がフローティングにされる。選択ゲートSG1 がVcc、制御ゲートCG1 〜CG8 がVccとされる。選択ゲートSG2 は書き込み動作中0Vである。同時に、信号VRFY1 ,VRFY2 ,FIM,FIHがVccとなる。“0”書き込みの場合は、クロック同期式インバータCI1 ,CI2 で構成されるフリップ・フロップに、クロック同期式インバータCI1 の出力が“H”になるようにデータがラッチされているため、ビット線はVccにより充電される。“1”又は“2”書き込みの場合は、ビット線は0Vである。
続いて、選択ゲートSG1 、制御ゲートCG1 〜CG8 、信号BLC、信号VRFY1 と電圧VSAが10V、電圧VBLH が8V、電圧VBLM が1Vとなる。“1”書き込みの場合は、クロック同期式インバータCI3 ,CI4 で構成されるフリップ・フロップに、クロック同期式インバータCI3 の出力が“H”になるようにデータがラッチされているため、ビット線BLには1Vが印加される。“2”書き込みの場合はビット線は0V、“0”書き込みの場合は8Vとなる。この後、選択された制御ゲートCG4 が20Vとされる。
“1”又は“2”書き込みの場合は、ビット線BLと制御ゲートCG4 の電位差によって電子がメモリセルの電荷蓄積層に注入され、メモリセルのしきい値は上昇する。“1”書き込みの場合は、“2”書き込みに比較してメモリセルの電荷蓄積層に注入すべき電荷量を少なくしなければならないため、ビット線BLを1Vにして制御ゲートCG4 との電位差を19Vに緩和している。但し、この電位差の緩和はなくとも実施可能である。“0”書き込み時は、ビット線電圧8Vによってメモリセルのしきい値は実効的には変わらない。
書き込み動作の終了時は、まず選択ゲートSG1 、制御ゲートCG1 〜CG8 を0Vとし、”0”書き込み時のビット線BLの電圧8Vは遅れて0Vにリセットされる。この順序が反転すると一時的に“2”又は“1”書き込み動作の状態ができて、“0”書き込み時に間違ったデータを書いてしまうからである。
書き込み動作後に、メモリセルの書き込み状態を確認し書き込み不足のメモリセルにのみ追加書き込みを行うため、ベリファイ読み出しが行われる。ベリファイ読み出し中は、電圧VBLH はVcc、VBLL は0V、FIMは0Vである。
ベリファイ読み出しは、2つの基本サイクルから実行される。この基本サイクルは読み出し第2サイクルに似ている。違うのは、選択された制御ゲートCG4 の電圧と、信号VRFY1 ,VRFY2 ,FIHが出力されることである(ベリファイ読み出し第1サイクルではVRFY1 のみ)。信号VRFY1 ,VRFY2 ,FIHは、選択ゲートSG1 ,SG2 、制御ゲートCG1 〜CG8 が0Vにリセットされた後で信号SEN1 ,SEN1B,LAT1 ,LAT1Bがそれぞれ“L”,“H”,“L”,“H”になる前に出力される。言い替えると、ビット線の電位がメモリセルのしきい値によって決定した後で、クロック同期式インバータCI1 ,CI2 で構成されるフリップ・フロップがリセットされる前である。選択された制御ゲートCG4 の電圧は、読み出し時の1.5V(第1サイクル)、0V(第2サイクル)に対応して、2V(第1サイクル)、0.5V(第2サイクル)と、0.5Vのしきい値マージンを確保するために高くしてある。
ここでは、クロック同期式インバータCI1 ,CI2 で構成されるフリップ・フロップにラッチされているデータ(data1)、クロック同期式インバータCI3 ,CI4 で構成されるフリップ・フロップにラッチされているデータ(data2)と選択されたメモリセルのしきい値によって決まるビット線BLの電圧を説明する。data1は「“0”書き込みか、“1”又は“2”書き込みか」を制御し、“0”書き込みの場合はQn3は“ON”状態、“1”又は“2”書き込みの場合はQn6が“ON”状態である。data2は「“1”書き込みか、“2”書き込みか」を制御し、“1”書き込みの場合はQn10は“ON”状態、“2”書き込みの場合はQn11が“ON”状態である。
“0”データ書き込み時(初期書き込みデータが“0”)のベリファイ読み出し第1サイクルでは、メモリセルのデータが“0”であるから、制御ゲートCG4 が2Vになるとメモリセルによってビット線電位は“L”となる。その後信号VRFY1 が“H”となることでビット線BLは“H”となる。
“1”データ書き込み時(初期書き込みデータが“1”)のベリファイ読み出し第1サイクルでは、メモリセルのデータが“1”となるはずであるからメモリセルのしきい値は1.5V以下で、制御ゲートCG4 が2Vになるとメモリセルによってビット線電位は“L”となる。その後信号VRFY1 が“H”となることで、既に“1”書き込み十分でdata1が“0”書き込みを示している場合ビット線BLは“H”(図6の(1) )、さもなくばビット線BLは“L”(図6の(2) )となる。
“2”データ書き込み時(初期書き込みデータが“2”)のベリファイ読み出し第1サイクルでは、選択メモリセルのデータが“2”となっていない(“2”書き込み不十分)場合、制御ゲートCG4 が2Vになるとメモリセルによってビット線電位は“L”となる(図6の(5) )。選択メモリセルが“2”書き込み十分になっている場合、制御ゲートCG4 が2Vになってもビット線電位は“H”のままである(図6の(3)(4))。図6の(3) は既に“2”書き込み十分でdata1が“0”書き込みを示している場合である。この場合、信号VRFY1 が“H”となることで、電圧VBHによってビット線BLは再充電される。
“0”データ書き込み時(初期書き込みデータが“0”)のベリファイ読み出し第2サイクルでは、メモリセルのデータが“0”であるから、制御ゲートCG4 が0.5Vになるとメモリセルによってビット線電位は“L”となる。その後、信号VRFY1 が“H”となることでビット線BLは“H”となる。
“1”データ書き込み時(初期書き込みデータが“1”)のベリファイ読み出し第2サイクルでは、選択メモリセルのデータが“1”となっていない(“1”書き込み不十分)場合、制御ゲートCG4 が0.5Vになるとメモリセルによってビット線電位は“L”となる(図6の(8) )。選択メモリセルが“1”書き込み十分になっている場合、制御ゲートCG4 が0.5Vになってもビット線電位は“H”のままである(図6の(6)(7))。図6の(6) は既に“1”書き込み十分でdata1が“0”書き込みを示している場合である。この場合信号VRFY1 が“H”となることで、電圧VBHによってビット線BLは再充電される。
“2”データ書き込み時(初期書き込みデータが“2”)のベリファイ読み出し第2サイクルでは、メモリセルのデータが“2”となるはずであるからメモリセルのしきい値が0.5V以上であれば“2”書き込み十分でも不十分でも、制御ゲートCG4 が0.5Vになってもビット線電位は“H”のままである(図6の(9)(10) )。“2”書き込み不十分でメモリセルのしきい値が0.5V以下の場合、ビット線は“L”になる(図6の(11))。
その後、信号VRFY1 ,VRFY2 ,FIHが“H”となることで、既に“2”書き込み十分でdata1が“0”書き込みを示している場合ビット線BLは“H”(図6の(9) )、さもなくばビット線BLは“L”(図6の(10)(11))となる。
このベリファイ読み出し動作によって、書き込みデータとメモリセルの書き込み状態から再書き込みデータが下記の(表1)のように設定される。
(表1)から分かるように、“1”書き込み不足のメモリセルのみ再度“1”書き込みが行われ、“2”書き込み不足のメモリセルにのみ再度“2”書き込みが行われるようになっている。また、全てのメモリセルでデータ書き込みが十分になると、全てのカラムのQn13が“OFF”となり、信号PENDBによってデータ書き込み終了情報が出力される。
図7はデータの入出力動作タイミングを示しており、(a)はデータ入力タイミング、(b)はデータ出力タイミングである。外部からのデータ入力3サイクルの後、入出力データ変換回路5によって、ビット線制御回路2に入力するデータが発生され入力される。外部からの3ビット分のデータ(X1 ,X2 ,X3 )は、2つのメモリセルのデータ(Y1 ,Y2 )に変換され、実効的にはビット線制御回路2のクロック同期式インバータCI1 ,CI2 で構成されるレジスタR1 とCI3 ,CI4 で構成されるレジスタR2 に、データ入出力線IOA,IOBを介して変換データが設定される。レジスタR1 ,R2 にラッチされている読み出しデータは、データ入出力線IOA,IOBを介して入出力データ変換回路5に転送され変換されて出力される。図3に見られるカラム選択信号CSL1iとCSL2iを同一信号にして、そのかわりIOA,IOBを2系統に分けて同一カラムの2つのレジスタを同時にアクセスすることも容易に可能で、アクセス時間を短くするためには効果的である。
下記の(表2)はデータ入力時の、外部からの3ビット分のデータ(X1 ,X2 ,X3 )、メモリセルの2つのデータ(Y1 ,Y2 )とY1 ,Y2 それぞれに対応するレジスタR1 ,R2 のデータの関係を示している。
レジスタのデータはデータ転送時の入出力線IOAの電圧レベルで表現してある。データ入出力線IOBはIOAの反転信号であるため省略してある。下記の(表3)は、データ出力時のそれである。
この実施形態では同じデータに対して、入力時のIOAのレベルと出力時のIOAのレベルが反転するようになっている。
メモリセルの2つデータ(Y1 ,Y2 )の9つの組み合わせのうち1つは余るため、これを例えばポインタ情報などファイル管理情報に利用することは可能である。ここではポインタ情報をセルデータ(Y1 ,Y2 )=(2,2)に対応させている。
図8は、EEPROMをコントロールするマイクロプロセッサなどから見たときの、データ書き込みの単位であるページの概念を示している。ここでは1ページをNバイトとしていて、マイクロプロセッサなどから見たときのアドレス(論理アドレス)を表示している。例えば、領域1(論理アドレス0〜n)だけしか書き込みデータが入力されないとき、n=3m+2(m=0,1,2,…)であれば常に(X1 ,X2 ,X3 )が揃うので問題ない。n=3mの場合はX1 しか入力されないので、EEPROM内部でX2 =0,X3 =0を発生して(X1 ,X2 ,X3 )を入出力データ変換回路5に入力する。n=3m+1の場合はX3 =0を内部で発生する。このnがNと等しいときも同様である。
領域1にデータ書き込みを行った(領域2の書き込みデータは全て“0”)後、追加的に領域2にデータ書き込みを行う場合、領域1の部分を読み出してそのデータに領域2の部分の書き込みデータを追加して入力すればよい。或いは、領域1の部分を読み出して、領域2の先頭アドレスn+1=3mの場合は領域1のデータを全て“0”、n+1=3m+2の場合アドレスn−1、nのデータをX1 ,X2 としてアドレスn+1のデータX3 に追加し領域1のアドレスn−2までのデータを全て“0”、n+1=3m+1の場合アドレスnのデータをX1 としてアドレスn+1、n+2のデータX2 ,X3 に追加し領域1のアドレスn−1までのデータを全て“0”、としてもよい。これらの動作は、EEPROM内部で自動的に行うことも容易である。この追加データ書き込みが可能となるよう、(表2)及び(表3)に示してあるように(X1 ,X2 ,X3 )と(Y1 ,Y2 )の関係は組まれている。(表2)及び(表3)に示してある(X1 ,X2 ,X3 )と(Y1 ,Y2 )の関係は1つの例であってこれに限るものではない。また、領域は3以上でも同様に追加データ書き込みは行える。
図9(a)は、データ書き込みアルゴリズムを示している。データロード後、書き込み、ベリファイ読み出しと書き込み終了検出動作が繰り返し行われる。点線の中はEEPROM内で自動的に行われる。
図9(b)は、追加データ書き込みアルゴリズムを示している。読み出しとデータロード後、ベリファイ読み出し、書き込み終了検出と書き込み動作が繰り返し行われる。点線の中はEEPROM内で自動的に行われる。データロード後にベリファイ読み出しが行われるのは、既に“1”或いは“2”が書き込まれているところに書き込みが行われないようにするためである。そうないと過剰書き込みされる場合が生じる。
図10は、このように構成されたEEPROMでの、メモリセルのしきい値の書き込み特性を示している。“1”データが書き込まれるメモリセルと“2”データが書き込まれるメモリセルは同時に書き込みが行われ、それぞれ独立に書き込み時間が制御される。
下記の(表4)に、消去、書き込み、読み出し、ベリファイ読み出し時のメモリセルアレイ各部の電位を示す。
図11は、本発明の第2の実施形態におけるNORセル型EEPROMの、メモリセルアレイ1とビット線制御回路2の具体的な構成を示している。メモリセルM10のみで、NOR型セルを構成する。NOR型セルの一端はビット線BLに接続され、他端は共通接地線と接続される。1本の制御ゲートWLを共有するメモリセルMはページを構成する。メモリセルMはそのしきい値Vtでデータを記憶し、VtがVcc以上である場合“0”データ、VtがVcc以下2.5V以上の場合“1”データ、Vtが2.5V以下0V以上の場合“2”データとして記憶する。1つのメモリセルで3つの状態を持たせ、2つのメモリセルで9通りの組み合わせができる。この内、8通りの組み合わせを用いて、2つのメモリセルで3ビット分のデータを記憶する。この実施形態では、制御ゲートを共有する隣合う2つのメモリセルの組で3ビット分のデータを記憶する。
クロック同期式インバータCI5 ,CI6 とCI7 ,CI8 でそれぞれフリップ・フロップを構成し、書き込み/読み出しデータをラッチする。また、センス・アンプとしても動作する。クロック同期式インバータCI5 ,CI6 で構成されるフリップ・フロップは、「“0”書き込みをするか、“1”又は“2”書き込みをするか」、を書き込みデータ情報としてラッチし、メモリセルが「“0”の情報を保持しているか、“1”又は“2”の情報を保持しているか」、を読み出しデータ情報としてラッチする。クロック同期式インバータCI7 ,CI8 で構成されるフリップ・フロップは、「“1”書き込みをするか、“2”書き込みをするか」、を書き込みデータ情報としてラッチし、メモリセルが「“2”の情報を保持しているか、“0”又は“1”の情報を保持しているか」、を読み出しデータ情報としてラッチする。
nチャネルMOSトランジスタの内、Qn18は、プリチャージ信号PREが“H”となると電圧VPRをビット線に転送する。Qn19は、ビット線接続信号BLCが“H”となってビット線と主要なビット線制御回路を接続する。Qn20〜Qn23,Qn25〜Qn28は、上述のフリップ・フロップにラッチされているデータに応じて、電圧VBLH ,VBLM ,0Vを選択的にビット線に転送する。Qn24,Q29はそれぞれ信号SAC2 ,SAC1 が“H”となることでフリップ・フロップとビット線を接続する。Qn30は、フリップ・フロップにラッチされている1ページ分のデータが全て同じか否かを検出するために設けられる。Qn31,Qn32とQn33,Qn34はそれぞれカラム選択信号CSL1 ,CSL2 が“H”となって、対応するフリップ・フロップとデータ入出力線IOA,IOBを選択的に接続する。
次に、このように構成されたEEPROMの動作を図12〜14に従って説明する。図12は読み出し動作のタイミング、図13は書き込み動作のタイミング、図14はベリファイ読み出し動作のタイミングを示している。
読み出し動作は、2つの基本サイクルで実行される。読み出し第1サイクルは、まず電圧VPRが電源電圧Vccとなってビット線はプリチャージされ、プリチャージ信号PREが“L”となってビット線はフローティングにされる。続いて、制御ゲートWLは2.5Vにされる。選択されたメモリセルのVtが2.5V以下の場合のみ、つまりデータ“2”が書き込まれている場合のみ、そのビット線は“L”レベルになる。
この後、センス活性化信号SEN2 ,SEN2Bがそれぞれ“L”,“H”、ラッチ活性化信号LAT2 ,LAT2Bがそれぞれ“L”,“H”となって、クロック同期式インバータCI7 ,CI8 で構成されるフリップ・フロップはリセットされる。信号SAC2 が“H”となってクロック同期式インバータCI7 ,CI8 で構成されるフリップ・フロップとビット線は接続され、まずセンス活性化信号SEN2 ,SEN2Bがそれぞれ“H”,“L”となってビット線電位がセンスされた後、ラッチ活性化信号LAT2 ,LAT2Bがそれぞれ“H”,“L”となり、クロック同期式インバータCI7 ,CI8 で構成されるフリップ・フロップに、「“2”データか、“1”又は“0”データか」の情報がラッチされる。
読み出し第2サイクルは読み出し第1サイクルと、選択制御ゲートWLの電圧が2.5VでなくVccであること、信号SEN2 ,SEN2B,LAT2 ,LAT2B,SAC2 の代わりに信号SEN1 ,SEN1B,LAT1 ,LAT1B,SAC1 が出力されることが違う。よって、読み出し第2サイクルでは、クロック同期式インバータCI5 ,CI6 で構成されるフリップ・フロップに、「“0”データか、“1”又は“2”データか」の情報がラッチされる。
以上説明した2つの読み出しサイクルによって、メモリセルに書き込まれたデータが読み出される。
データ書き込みに先だってメモリセルのデータは消去され、メモリセルのしきい値VtはVcc以上となっている。消去は、制御ゲートWLを20Vとしビット線を0Vにして行われる。
書き込み動作では、まずプリチャージ信号PREが“L”となってビット線がフローティングにされる。信号VRFY1 ,VRFY2 ,FIM,FILがVccとなる。“2”書き込みの場合は、クロック同期式インバータCI5 ,CI6 で構成されるフリップ・フロップに、クロック同期式インバータCI5 の出力が“H”になるようにデータがラッチされているため、ビット線は0Vである。“1”又は“2”書き込みの場合は、ビット線はVccに充電される。
続いて、信号BLC,VRFY2 ,FIM,FILと電圧VSAが10V、電圧VBLH が8V、電圧VBLM が7Vとなる。“1”書き込みの場合は、クロック同期式インバータCI7 ,CI8 で構成されるフリップ・フロップに、クロック同期式インバータCI7 の出力が“H”になるようにデータがラッチされているため、ビット線BLには7Vが印加される。“2”書き込みの場合はビット線は8V、“0”書き込みの場合は0Vとなる。この後、選択された制御ゲートWLが−12Vとされる。
“1”又は“2”書き込みの場合は、ビット線BLと制御ゲートWLの電位差によって電子がメモリセルの電荷蓄積層から放出され、メモリセルのしきい値は下降する。“1”書き込みの場合は、“2”書き込みに比較してメモリセルの電荷蓄積層から放出すべき電荷量を少なくしなければならないため、ビット線BLを7Vにして制御ゲートWLとの電位差を19Vに緩和している。“0”書き込み時は、ビット線電圧0Vによってメモリセルのしきい値は実効的には変わらない。
書き込み動作後に、メモリセルの書き込み状態を確認し書き込み不足のメモリセルにのみ追加書き込みを行うため、ベリファイ読み出しが行われる。ベリファイ読み出し中は、電圧VBLH はVcc、FIMは0Vである。
ベリファイ読み出しは、2つの基本サイクルから実行される。この基本サイクルは読み出し第1サイクルに似ている。違うのは、選択された制御ゲートWLの電圧と、信号VRFY1 ,VRFY2 ,FIHが出力されることである(ベリファイ読み出し第1サイクルではVRFY1 のみ)。信号VRFY1 ,VRFY2 ,FIHは、制御ゲートWLが0Vにリセットされた後で信号SEN1 ,SEN1B,LAT1 ,LAT1Bがそれぞれ“L”,“H”,“L”,“H”になる前に出力される。言い替えると、ビット線の電位がメモリセルのしきい値によって決定した後で、クロック同期式インバータCI5 ,CI6 で構成されるフリップ・フロップがリセットされる前である。選択された制御ゲートWLの電圧は、読み出し時の2.5V(第1サイクル)、Vcc(第2サイクル)に対応して、2V(第1サイクル)、4V(第2サイクル)と、しきい値マージンを確保するために低くしてある。
ここでは、クロック同期式インバータCI5 ,CI6 で構成されるフリップ・フロップにラッチされているデータ(data1)、クロック同期式インバータCI7 ,CI8 で構成されるフリップ・フロップにラッチされているデータ(data2)と選択されたメモリセルのしきい値によって決まるビット線BLの電圧を説明する。data1は「“0”書き込みか、“1”又は“2”書き込みか」を制御し、“0”書き込みの場合はQn20は“ON”状態、“1”又は“2”書き込みの場合はQn23が“ON”状態である。data2は「“1”書き込みか、“2”書き込みか」を制御し、“1”書き込みの場合はQn26は“ON”状態、“2”書き込みの場合はQn27が“ON”状態である。
“0”データ書き込み時(初期書き込みデータが“0”)のベリファイ読み出し第1サイクルでは、メモリセルのデータが“0”であるから、制御ゲートWLが2Vになってもビット線電位は“H”のままである。その後信号VRFY1 が“H”となることでビット線BLは“L”となる。
“1”データ書き込み時(初期書き込みデータが“1”)のベリファイ読み出し第1サイクルでは、メモリセルのデータが“1”となるはずであるからメモリセルのしきい値は2.5V以上で、制御ゲートWLが2Vになってもビット線電位は“H”のままである。その後信号VRFY1 が“H”となることで、既に“1”書き込み十分でdata1が“0”書き込みを示している場合ビット線BLは“L”(図14の(2) )、さもなくばビット線BLは“H”(図14の(1) )となる。
“2”データ書き込み時(初期書き込みデータが“2”)のベリファイ読み出し第1サイクルでは、選択メモリセルのデータが“2”となっていない(“2”書き込み不十分)場合、制御ゲートWLが2Vになってもビット線電位は“H”である(図14の(3) )。選択メモリセルが“2”書き込み十分になっている場合、制御ゲートWLが2Vになるとビット線電位はメモリセルによって“L”となる(図14の(4)(5))。図14の(5) は既に“2”書き込み十分でdata1が“0”書き込みを示している場合である。この場合、信号VRFY1 が“H”となることで、ビット線BLは接地される。
“0”データ書き込み時(初期書き込みデータが“0”)のベリファイ読み出し第2サイクルでは、メモリセルのデータが“0”であるから、制御ゲートCG4 が4Vになってもビット線電位は“H”である。その後、信号VRFY1 が“H”となることでビット線BLは“L”となる。
“1”データ書き込み時(初期書き込みデータが“1”)のベリファイ読み出し第2サイクルでは、選択メモリセルのデータが“1”となっていない(“1”書き込み不十分)場合、制御ゲートWLが4Vになってもビット線電位は“H”である(図14の(6) )。選択メモリセルが“1”書き込み十分になっている場合、制御ゲートWLが4Vになるとメモリセルによりビット線電位は“L”となる(図14の(7)(8))。図14の(8) は既に“1”書き込み十分でdata1が“0”書き込みを示している場合である。この場合、信号VRFY1 が“H”となることで、ビット線BLは接地される。
“2”データ書き込み時(初期書き込みデータが“2”)のベリファイ読み出し第2サイクルでは、メモリセルのデータが“2”となるはずであるからメモリセルのしきい値が4V以下であれば“2”書き込み十分でも不十分でも、制御ゲートWLが4Vになるとビット線電位は“L”となる(図14の(10)(11))。“2”書き込み不十分でメモリセルのしきい値が4V以上の場合、ビット線は“H”になる(図14の(9) )。
その後、信号VRFY1 ,VRFY2 ,FIHが“H”となることで、既に“2”書き込み十分でdata1が“0”書き込みを示している場合ビット線BLは“L”(図14の(11))、さもなくばビット線BLは“H”(図14の(9)(10) )となる。
このベリファイ読み出し動作によって、書き込みデータとメモリセルの書き込み状態から再書き込みデータが、第1の実施形態と同様に表1のように設定される。また、全てのメモリセルでデータ書き込みが十分になると、全てのカラムのQn30が“OFF”となり、信号PENDBによってデータ書き込み終了情報が出力される。
データの入出力動作タイミング、データ書き込みアルゴリズム、追加データ書き込みアルゴリズムなどは、図7〜9、(表2〜3)に見られるように第1の実施形態と同様である。
図15は、このように構成されたEEPROMでの、メモリセルのしきい値の書き込み特性を示している。“1”データが書き込まれるメモリセルと“2”データが書き込まれるメモリセルは同時に書き込みが行われ、それぞれ独立に書き込み時間が制御される。
下記の(表5)は、消去、書き込み、読み出し、ベリファイ読み出し時のメモリセルアレイ各部の電位を示している。
図3,11に示した回路は、例えばそれぞれ図16,17のように変形できる。図16は、図2に見られるQn3 ,Qn4 をpチャネルのMOSトランジスタQp1 ,Qp2 に置き換えてある。図17は、図11に見られるQn22,Qn23,Qn25〜Qn28をpチャネルのMOSトランジスタQp3 〜Qp8 に置き換えてある。このようにすることで、nチャネルMOSトランジスタのしきい値による転送できる電圧の降下を防ぐことができ、この例では、電圧VSAを書き込み時に8Vまで上げればよく回路を構成するトランジスタの耐圧を下げることができる。図16のVRFY1Bは図2,3のVRFY1 の反転信号、図17のVRFY2B,FILB,FIMBは図11のVRFY2 ,FIL,FIMのそれぞれ反転信号である。
図8で、追加データ書き込みについて説明したが、例えば図18のように追加データ書き込みを容易にするため、1ページを分割しておくことも1つの有効な方法である。この例では論理アドレス32番地毎にメモリセル22個で1つの領域を構成する。これによって領域単位での追加データ書き込みは容易となる。つまり領域2に追加データ書き込みをする場合、領域2以外の領域の書き込みデータを全て“0”として、図9(a)に見られるデータ書き込みアルゴリズムに従って行えばよい。1つの領域のサイズは図18に示している以外の大きさでもかまわない。