(57)【要約】【課題】多値データの書き込みベリファイに要する時間増大を抑えることが可能であり、多値データの読み出し時間を短縮可能とする。【解決手段】電位Ｖｂｉ’でベリファイ動作をする場合、電位Ｖａｉ＋１でセルのデータを予備リードし、この状態をラッチ回路に記憶する。ラッチ回路に記憶されているデータがローレベルの場合、セルの状態を変え、ハイレベルの場合、セルの状態を保持する。【選択図】    図１
2006127762.tif 000002
【特許請求の範囲】
【請求項１】
ｎ値の状態を有するよう構成された記憶素子を具備する記憶装置の制御方法であって、
外部から入力される第１の記憶論理レベルあるいは第２の記憶論理レベルのデータを前記装置のデータ記憶回路に記憶し、読み出しレベルに対応して前記記憶素子から読み出される第１の記憶論理レベルあるいは第２の記憶論理レベルに応じて、前記データ記憶回路に記憶されている記憶論理レベルを変更し、前記データ記憶回路に記憶されている前記変更された記憶論理レベルが第１の記憶論理レベルの場合、前記記憶素子の状態を変え、第２の記憶論理レベルの場合、前記記憶素子の状態を保持することを特徴とする記憶装置の制御方法。
【請求項２】
ｎ値の状態を有する記憶素子を具備する記憶装置の制御方法であって、
外部から入力される第１の記憶論理レベルあるいは第２の記憶論理レベルのデータを前記記憶素子に接続されるデータ記憶回路に記憶し、
前記記憶素子から読み出され素子から読み出されるデータが第１論理レベルの場合、前記データ記憶回路に記憶されている論理レベルは変えず、
前記記憶素子から読み出され素子から読み出されるデータが第２論理レベルの場合で、前記データ記憶回路に記憶されている論理レベルが第１論理レベルである場合、第２論理レベルに変更し、
前記データ記憶回路に記憶されている論理レベルが第２論理レベルである場合、第１論理レベルと変更し、
前記データ記憶回路の論理レベルが第１論理レベルの場合、前記記憶素子の状態を保持し、第２論理レベルの場合、前記記憶素子の状態を変えることを特徴とする記憶装置の制御方法。
【請求項３】
ｎ値の状態を有する記憶素子を具備する記憶装置の制御方法であって、
外部から入力される第１の記憶論理レベルあるいは第２の記憶論理レベルのデータを前記記憶素子に接続されるデータ記憶回路に記憶し、
前記記憶素子から読み出され素子から読み出されるデータが第１論理レベルの場合、前記データ記憶回路に記憶されている論理レベルは変えず、
前記記憶素子から読み出され素子から読み出されるデータが第２論理レベルの場合、前記データ記憶回路に記憶されている論理レベルを第２論理レベルに変更し、
前記データ記憶回路の論理レベルが第１論理レベルの場合、前記記憶素子の状態を保持し、第２論理レベルの場合、前記記憶素子の状態を変えることを特徴とする記憶装置の制御方法。
【請求項４】
前記外部から入力される第１の記憶論理レベルあるいは第２の記憶論理レベルのデータは、第１のデータ、第２のデータ〜第ｋのデータを含み、前記第１のデータは、前記記憶素子の状態を状態“０”と状態“ｎ／２”に設定するためのデータであり、前記第２のデータは、前記記憶素子の状態を状態“０”、状態“ｎ／４”、状態“２ｎ／４”、または状態“３ｎ／４”に設定するためのデータであり、前記第ｋのデータは、前記記憶素子の状態を状態“０”、状態“１”、〜状態“ｎ−１”に設定するためのデータであることを特徴とする請求項１、２又は３のいずれかに記載の記憶装置の制御方法。
【請求項５】
ｋビットｎ（ｎ＝２ｋ）個の状態を有するよう構成された記憶素子から1ビットのデータを読み出す記憶装置の制御方法であって、
第１の読み出しにおいて、前記記憶素子のｎ値の状態から、１回の読み出しにより記憶素子の状態を判断し、第２の読み出しにおいて、前記記憶素子のｎ値の状態から、２回の読み出しにより記憶素子の状態を判断し、第ｋ（２ｋ＝ｎ）読み出しにおいて、前記記憶素子のｎ値の状態から、ｎ／２回の読み出しにより記憶素子の状態を判断することにより、１ビットの状態を区別するように、前記記憶素子の状態を決めることを特徴とする記憶装置の制御方法。
【請求項６】
状態“０”、状態“１”、〜状態“ｎ−１”（ｎは自然数）からなるｎ個の状態を有する記憶素子から、１ビットのデータを読み出す記憶装置の制御方法であって、
第１の読み出しにより、前記記憶素子の状態が、状態“ｎ／２”以上であるかの１回の読み出しによる判断で、１ビットの状態を区別し、
第２読み出しにより、前記記憶素子の状態が、状態“３ｎ／４”以上であるかと、状態“ｎ／４”以上であるかの２回の読み出しによる判断で、１ビットの状態を区別し、
第ｋ（２ｋ＝ｎ）の読み出しにおいて、前記記憶素子の状態が、状態“ｎ−１”以上であるか、状態“ｎ−３”以上であるか、〜状態“１”以上であるかのｎ／２回の読み出しによる判断で、１ビットの状態を区別することを特徴とする記憶装置の制御方法。
【請求項７】
ｋビットｎ（＝２ｋ）個の状態を有するよう構成された記憶素子から1ビットのデータを読み出す記憶装置の制御方法であって、
各ビットの読み出しが最大でも（２ｋ−１）／ｋ以上のうちで一番小さい整数回の読出し動作により、ｎ値の状態から１ビットの状態を区別するように前記記憶素子の状態を決めることを特徴とする記憶装置の制御方法。
【請求項８】
前記ｎ個の状態は、状態“０”、状態“１”、〜状態“ｎ−１”（ｎは自然数）からなり、第１回目の書き込みで、前記記憶素子の状態を状態“０”と状態“ｎ／２”に設定し、第２回目の書き込みで、前記記憶素子の状態を状態“０”、状態“ｎ／４”、状態“２ｎ／４”、または状態“３ｎ／４”に設定し、第ｋ回目の書き込みで、前記記憶素子の状態を状態“０”、状態“１”、〜状態“ｎ−１”に設定することを特徴とする請求項５、６又は７のいずれかに記載の記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、例えば不揮発性半導体記憶装置に係わり、特に、多値データを記憶する記憶装置の制御方法に関する。
【背景技術】
【０００２】
電気的に書き換え可能な不揮発性半導体記憶としてのＥＥＰＲＯＭを用いたＮＡＮＤ型フラッシュメモリが提案されている。このＮＡＮＤ型フラッシュメモリは、隣接して配置された複数のメモリセルのソース、ドレインが直列接続され、この直列接続された複数のメモリセルが１単位としてビット線に接続される。このＮＡＮＤ型フラッシュメモリにおいて、ロウ方向に配列された複数のセルの全て、又は半数のセルに対して一括して書き込み、又は読み出し動作が行なわれる。
【０００３】
近年、このＮＡＮＤ型フラッシュメモリの１つのセルに複数のデータ（ｎビット）を書き込む多値メモリが開発されている（例えば特許文献１及び２参照）。この多値メモリの場合、１つのセルに複数のデータを書き込み、さらに１つのセルに書き込んだ複数のデータを読み出すために、１つのセルに対して少なくともｎ個の書き込み及び読み出し用のラッチ回路が必要であった。なぜならこれらラッチ回路にラッチされているデータの内容に応じて、セルの閾値が決まるからである。
【０００４】
しかし、１つのセルに記憶するデータの数ｎが大きくなるに従い、データラッチ回路の数もｎ倍となり、チップ内におけるラッチ回路の占める面積が大きくなるという問題を有していた。
【０００５】
また、セルにデータを記憶する場合、セルの閾値が書き込んだデータに対応しているかどうかをベリファイする必要がある。このベリファイの回数はセルに書き込むデータの数が増加するに従い増えるため、データの書き込み及び書き込みベリファイに要する時間が長くなるという問題を有している。
【０００６】
さらに、１つのセルに記憶するデータの数ｎが大きくなるに従い、データの読み出しに要する時間が長くなるという問題がある。
【特許文献１】特開平１０−００３７９２号公報
【特許文献２】特開平１０−１４４０８５号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
本発明は、多値データの書き込みベリファイに要する時間増大を抑えることが可能であり、多値データの読み出し時間を短縮することが可能な記憶装置の制御方法を提供しようとするものである。
【課題を解決するための手段】
【０００８】
本発明の記憶装置の制御方法の第１の態様は、ｎ値の状態を有するよう構成された記憶素子を具備する記憶装置の制御方法であって、外部から入力される第１の記憶論理レベルあるいは第２の記憶論理レベルのデータを前記装置のデータ記憶回路に記憶し、読み出しレベルに対応して前記記憶素子から読み出される第１の記憶論理レベルあるいは第２の記憶論理レベルに応じて、前記データ記憶回路に記憶されている記憶論理レベルを変更し、前記データ記憶回路に記憶されている前記変更された記憶論理レベルが第１の記憶論理レベルの場合、前記記憶素子の状態を変え、第２の記憶論理レベルの場合、前記記憶素子の状態を保持することを特徴とする。
【０００９】
本発明の記憶装置の制御方法の第２の態様は、ｎ値の状態を有する記憶素子を具備する記憶装置の制御方法であって、外部から入力される第１の記憶論理レベルあるいは第２の記憶論理レベルのデータを前記記憶素子に接続されるデータ記憶回路に記憶し、前記記憶素子から読み出され素子から読み出されるデータが第１論理レベルの場合、前記データ記憶回路に記憶されている論理レベルは変えず、前記記憶素子から読み出され素子から読み出されるデータが第２論理レベルの場合で、前記データ記憶回路に記憶されている論理レベルが第１論理レベルである場合、第２論理レベルに変更し、前記データ記憶回路に記憶されている論理レベルが第２論理レベルである場合、第１論理レベルと変更し、前記データ記憶回路の論理レベルが第１論理レベルの場合、前記記憶素子の状態を保持し、第２論理レベルの場合、前記記憶素子の状態を変えることを特徴とする。
【００１０】
本発明の記憶装置の制御方法の第３の態様は、ｎ値の状態を有する記憶素子を具備する記憶装置の制御方法であって、外部から入力される第１の記憶論理レベルあるいは第２の記憶論理レベルのデータを前記記憶素子に接続されるデータ記憶回路に記憶し、前記記憶素子から読み出され素子から読み出されるデータが第１論理レベルの場合、前記データ記憶回路に記憶されている論理レベルは変えず、前記記憶素子から読み出され素子から読み出されるデータが第２論理レベルの場合、前記データ記憶回路に記憶されている論理レベルを第２論理レベルに変更し、前記データ記憶回路の論理レベルが第１論理レベルの場合、前記記憶素子の状態を保持し、第２論理レベルの場合、前記記憶素子の状態を変えることを特徴とする。
【００１１】
本発明の記憶装置の制御方法の第４の態様は、ｋビットｎ（ｎ＝２ｋ）値の状態を有するよう構成された記憶素子から1ビットのデータを読み出す記憶装置の制御方法であって、第１の読み出しにおいて、前記記憶素子のｎ値の状態から、１回の読み出しにより記憶素子の状態を判断し、第２の読み出しにおいて、前記記憶素子のｎ値の状態から、２回の読み出しにより記憶素子の状態を判断し、第ｋ（２ｋ＝ｎ）読み出しにおいて、前記記憶素子のｎ値の状態から、ｎ／２回の読み出しにより記憶素子の状態を判断することにより、１ビットの状態を区別するように、前記記憶素子の状態を決めることを特徴とする。
【００１２】
本発明の記憶装置の制御方法の第５の態様は、状態“０”、状態“１”、〜状態“ｎ−１”（ｎは自然数）からなるｎ個の状態を有する記憶素子から、１ビットのデータを読み出す記憶装置の制御方法であって、第１の読み出しにより、前記記憶素子の状態が、状態“ｎ／２”以上であるかの１回の読み出しによる判断で、１ビットの状態を区別し、第２読み出しにより、前記記憶素子の状態が、状態“３ｎ／４”以上であるかと、状態“ｎ／４”以上であるかの２回の読み出しによる判断で、１ビットの状態を区別し、第ｋ（２ｋ＝ｎ）の読み出しにおいて、前記記憶素子の状態が、状態“ｎ−１”以上であるか、状態“ｎ−３”以上であるか、〜状態“１”以上であるかのｎ／２回の読み出しによる判断で、１ビットの状態を区別することを特徴とする。
【００１３】
本発明の記憶装置の制御方法の第６の態様は、ｋビットｎ（＝２ｋ）値の状態を有するよう構成された記憶素子から1ビットのデータを読み出す記憶装置の制御方法であって、各ビットの読み出しが最大でも（２ｋ−１）／ｋ以上のうちで一番小さい整数回の読出し動作により、ｎ値の状態から１ビットの状態を区別するように前記記憶素子の状態を決めることを特徴とする。
【発明の効果】
【００１４】
本発明によれば、多値データの書き込みベリファイに要する時間増大を抑えることが可能であり、多値データの読み出し時間を短縮することが可能な記憶装置の制御方法を提供できる。
【発明を実施するための最良の形態】
【００１５】
以下、本発明の実施の形態について図面を参照して説明する。
【００１６】
＜第１の実施の形態＞
先ず、本発明の第１の実施の形態について、概略的に説明する。
【００１７】
本発明は、１回の書き込み動作時に、１つのセルに１ビットのデータを書き込む。このセルに次の１ビットのデータを書き込む時、外部より新たにデータを入れ、書き込み動作を行なう。以後順次、１回の書き込み動作につき１ビットずつ書き込みを行なう。
【００１８】
従来、例えば初めに１ビットのデータをセルに書き込むと、セルはデータの“１”又は“０”に応じて２つの閾値の状態になる。次の１ビットのデータをセルに書き込むと、この書き込んだデータに応じて、先の２つの閾値状態それぞれに対して、１つずつ新たな閾値の状態が必要となる。このため、先の２つの閾値状態と、書き込み非選択状態の３つの閾値の状態を記憶するため、少なくとも２つのラッチ回路が必要であった。さらに、次の１ビットのデータを書き込む場合、先の４つの状態それぞれに対して、１つずつ新たな状態が必要となるため、先の４つの閾値の状態と、書き込み非選択状態の合計５つの状態を記憶する必要がある。このため、少なくとも３つのラッチ回路が必要となる。従って、１つのセルにｎビット書き込もうとするとｎ個のラッチ回路が必要となる。
【００１９】
本発明において、１つのセルにｎ−１ビットのデータが書かれている場合、セルの閾値はＭ＝２(n-1 )値、存在する。図１に示すように、Ａ１〜Ａｍまでｍ値の閾値のレベルがある場合、セルの閾値はこれらレベルの内のどれかの値になっている。次の１ビットのデータを、図１に示すＢｉのように、Ａｉ、Ａｉ＋１の間に設定し、書き込む１ビットのデータがデータ“１”（書き込みを行なわない）の時は、セルの閾値を変化させずＡｉのままとする。また、データ“０”（書き込みを行なう）の時は、書き込み動作を行ないＢｉとする。このようにすると、前に書かれている状態がＡ１〜Ａｍの何れであっても、今回書き込みを行なうデータが“１”の場合は書き込みを行なわず、“０”の場合は、書き込みを行なうことができる。つまり、セルに書かれているデータによらず書き込み動作を開始することができる。
【００２０】
次に、今回書き込んだセルの閾値がＢｉのレベルまで書き込まれたか、ベリファイ動作を行なう必要がある。この場合、セルのゲート電位をＶｂｉ’とし、この時、セルがオンするかオフするかを調べ、オフした場合、セルの閾値が電位Ｖｂｉ’より高いため書き込み終了となる。
【００２１】
しかし、初めのセルの状態がＡ１〜Ａｍのうちどこにあるか分からないため、電位Ｖｂｉ’〜Ｖｂｍ’の全ての閾値でベリファイ動作を行ない、ＡｉからＢｉに書き込み動作が行なわれているセルのみ正しく書き込まれているかどうか判断しなくてはならない。
【００２２】
電位Ｖｂｉ’でベリファイ動作をする場合、セルの閾値がＡｉ＋１より高い場合も、セルがオフ、つまりベリファイＯＫとなってしまう。従って、電位Ｖａｉ＋１でセルのデータを予備リードし、この状態をラッチ回路に記憶する。次に、電位Ｖｂｉ’でベリファイリードする。ここで、セルの状態がＡｉ＋１より高い場合は強制的にベリファイリード結果をローレベル（ベリファイＮＧ）とする。一方、このときセルの状態がＡｉ未満にある場合はセルが必ずオンするためベリファイＮＧになる。従って、ビット線のレベルは、ＢｉでのベリファイＯＫの時のみハイレベルとなる。
【００２３】
次に、書き込みデータが記憶されているラッチ回路がハイレベル（書き込みを行なわない）の場合は、ビット線を強制的にハイレベルとする。この動作によって、ビット線は、ベリファイＯＫもしくは初めからハイレベルがラッチされている（書き込みを行なわない）場合のみハイレベルとなる。この結果を、書き込むデータがラッチされているラッチ回路にラッチする。一方、書き込みＮＧの場合のみローレベルとなる。
【００２４】
このようにして、電位Ｖｂ１’〜Ｖｂｍ’の全てでベリファイ動作を行なうが、ＡｉからＢｉに書き込み動作が行われているセルで電位Ｖｂｉ’のベリファイＯＫの時のみ、データラッチ回路が書き込み非選択（データ“１”）となり、他のベリファイ電位ではデータラッチ回路の内容が変わらない。
【００２５】
以上の動作により、本発明の場合、ｎビットの情報を記憶する場合でも常に、書き込みデータを記憶するための１つのラッチ回路と、Ａｉ＋１より高いセル（ベリファイを無視するセル）かどうか予備リードを行ない、この結果を記憶するための１つのラッチ回路の、合計２つのラッチ回路のみとなる。
【００２６】
図２は、本発明の不揮発性半導体記憶装置の概略構成を示すものであり、例えば８値（３ビット）を記憶するＮＡＮＤ型フラッシュメモリの構成を示している。
【００２７】
メモリセルアレイ１は複数のビット線と複数のワード線と共通ソース線を含み、例えばＥＥＰＲＯＭセルからなる電気的にデータを書き換え可能なメモリセルがマトリクス状に配置されている。このメモリセルアレイ１には、ビット線を制御するためのビット制御回路２とワード線制御回路６が接続されている。
【００２８】
ビット線制御回路２は、後述するように複数のデータ記憶回路を含み、ビット線を介してメモリセルアレイ１中のメモリセルのデータを読み出したり、ビット線を介してメモリセルアレイ１中のメモリセルの状態を検出したり、ビット線を介してメモリセルアレイ１中のメモリセルに書き込み制御電圧を印加してメモリセルに書き込みを行う。ビット線制御回路２には、カラムデコーダ３、データ入出力バッファ４が接続されている。ビット線制御回路２内のデータ記憶回路はカラムデコーダ３によって選択され、このデータ記憶回路に読み出されたメモリセルのデータは、前記データ入出力バッファ４を介してデータ入出力端子５から外部へ出力される。
【００２９】
また、外部からデータ入出力端子５に入力された書き込みデータは、データ入出力バッファ４を介して、カラムデコーダ３によって選択されたデータ記憶回路に入力される。
【００３０】
ワード線制御回路６は、メモリセルアレイ１に接続されている。このワード線制御回路６は、メモリセルアレイ１中のワード線を選択し、読み出しあるいは書き込みあるいは消去に必要な電圧を与える。
【００３１】
メモリセルアレイ１、ビット線制御回路２、カラムデコーダ３、データ入出力バッファ４、及びワード線制御回路６は、制御信号発生回路７ａ及び制御電圧発生回路７ｂに接続され、この制御信号発生回路７ａ及び制御電圧発生回路７ｂよって制御される。制御信号発生回路７ａ及び制御電圧発生回路７ｂは、制御信号入力端子８に接続され、外部から制御信号入力端子８を介して入力される制御信号によって制御される。
【００３２】
図３は、図２に示すメモリセルアレイ１及びビット線制御回路２の構成を示している。ビット線制御回路２は複数のデータ記憶回路３１０、３１１〜３１２１１１を有している。各データ記憶回路３１０、３１１〜３１２１１１はカラムセレクトゲート３２０、３２１〜３２２１１１を介して前記データ入出力バッファ４に接続されている。これらカラムセレクトゲート３２０、３２１〜３２２１１１はカラム選択信号ＣＳＬ０、ＣＳＬ１〜ＣＳＬ２１１１により制御される。各データ記憶回路３１０、３１１〜３１２１１１には一対のビット線が接続される。すなわち、データ記憶回路３１０にはビット線ＢＬ０、ＢＬ１が接続され、データ記憶回路３１１にはビット線ＢＬ２、ＢＬ３が接続され、データ記憶回路３１２１１１にはビット線ＢＬ４２２２、ＢＬ４２２３が接続されている。
【００３３】
メモリセルアレイ１には複数のＮＡＮＤセルが配置されている。１つのＮＡＮＤセルは直列接続された例えば１６個のＥＥＰＲＯＭからなるメモリセルＭ１、Ｍ２、Ｍ３〜Ｍ１６と、このメモリセルＭ１に接続された選択ゲートＳ１と、メモリセルＭ１６に接続された選択ゲートＳ２とにより構成されている。第１の選択ゲートＳ１はビット線ＢＬ０に接続され、第２の選択ゲートＳ２はソース線ＳＲＣに接続されている。各行に配置されたメモリセルＭ１、Ｍ２、Ｍ３〜Ｍ１６の制御ゲートはワード線ＷＬ１、ＷＬ２、ＷＬ３〜ＷＬ１６に共通接続されている。また、第１の選択ゲートＳ１はセレクト線ＳＧ１に共通接続され、第２の選択ゲートＳ２はセレクト線ＳＧ２に共通接続されている。
【００３４】
１ブロックは４２２４個のＮＡＮＤセルにより構成され、このブロック単位でデータが消去される。１つのワード線に接続されたメモリセルは１セクタを構成し、このセクタ毎にデータが書き込まれ、読み出される。また、１セクタには例えば３ページ分のデータが記憶される。
【００３５】
図４（ａ）（ｂ）はメモリセル及び選択トランジスタの断面図を示している。図４（ａ）はメモリセルを示している。基板４１にはメモリセルのソース、ドレインとしてのｎ型拡散層４２が形成されている。基板４１の上にはゲート絶縁膜４３を介して浮遊ゲート４４が形成され、この浮遊ゲート４４の上には絶縁膜４５を介して制御ゲート４６が形成されている。図４（ｂ）は選択トランジスタを示している。基板４１にはソース、ドレインとしてのｎ型拡散層４７が形成されている。基板４１の上にはゲート絶縁膜４８を介して制御ゲート４９が形成されている。
【００３６】
図５は、メモリセルアレイの１つのＮＡＮＤセルの断面を示している。この例において、１つのＮＡＮＤセルは、図４（ａ）に示す構成の１６個のメモリセルＭ１〜Ｍ１６が直列接続されて構成されている。ＮＡＮＤセルのドレイン側、ソース側には、図４（ｂ）に示す構成の第１の選択ゲートＳ１及び第２の選択ゲートＳ２が設けられている。
【００３７】
図６は、図３に示すデータ記憶回路３１０を示している。データ記憶回路は全て同一構成であるため、データ記憶回路３１０についてのみ説明する。
【００３８】
ビット線ＢＬｉにはＮチャネルトランジスタ６１ａの電流通路の一端が接続されている。このトランジスタ６１ａのゲートには信号ＢＬＴＲが供給されている。このトランジスタ６１ａの電流通路の他端はトランジスタ６１ｂの電流通路の一端、およびトランジスタ６１ｃの電流通路の一端に接続されている。前記トランジスタ６１ｂの電流通路の他端は端子６２ａに接続されている。この端子６２ａには電圧ＶＢＬＡが供給されている。また、前記トランジスタ６１ｂのゲートには信号ＰＲＥＡが供給されている。前記トランジスタ６１ｃのゲートには信号ＢＬＳＡが供給されている。
【００３９】
また、ビット線ＢＬｉ＋１にはＮチャネルトランジスタ６１ｄの電流通路の一端が接続されている。このトランジスタ６１ｄのゲートには前記信号ＢＬＴＲが供給されている。このトランジスタ６１ｄの電流通路の他端はトランジスタ６１ｅの電流通路の一端、およびトランジスタ６１ｆの電流通路の一端に接続されている。前記トランジスタ６１ｅの電流通路の他端は端子６２ｂに接続されている。この端子６２ｂには電圧ＶＢＬＢが供給されている。また、前記トランジスタ６１ｅのゲートには信号ＰＲＥＢが供給されている。前記トランジスタ６１ｆのゲートには信号ＢＬＳＢが供給されている。トランジスタ６１ｂ、６１ｅは信号ＰＲＥＡ、ＰＲＥＢに応じて非選択のビット線を電位ＶＢＬＡ、ＶＢＬＢにプリチャージする。前記トランジスタ６１ｃ、６１ｆは信号ＢＬＳＡ、ＢＬＳＢに応じてビット線を選択する。
【００４０】
前記トランジスタ６１ｃ、６１ｆの電流通路の他端はトランジスタ６１ｇを介して端子６２ｃに接続されるとともに、ノードＮＥに接続されている。前記トランジスタ６１ｇのゲートには信号ＢＩＡＳが供給され、端子６２ｃには電圧ＶＣＣが供給されている。このトランジスタ６１ｇはデータ読み出し時に、信号ＢＩＡＳに応じてビット線をプリチャージする。
【００４１】
前記ノードＮＥにはトランジスタ６１ｈの電流通路の一端が接続されている。このトランジスタ６１ｈのゲートには信号ＢＬＣ１が供給され、このトランジスタ６１ｈの電流通路の他端には第１のラッチ回路ＬＡＴ（Ａ）が接続されている。この第１のラッチ回路ＬＡＴ（Ａ）は２つのクロックドインバータ回路６１ｉ、６１ｊにより構成されている。クロックドインバータ回路６１ｉは信号ＳＥＮ１、ＳＥＮ１Ｂ（Ｂは反転信号を示す）により制御され、クロックドインバータ回路６１ｊは信号ＬＡＴ１、ＬＡＴ１Ｂにより制御される。この第１のラッチ回路ＬＡＴ（Ａ）は、書き込みデータをラッチする。
【００４２】
また、前記ノードＮＥにはトランジスタ６１ｋ、６１ｌが直列接続されている。トランジスタ６１ｋのゲートは前記第１のラッチ回路ＬＡＴ（Ａ）のノードＮＣに接続され、トランジスタ６１ｌのゲートには信号ＶＲＦＹ１が供給されている。さらに、トランジスタ６１ｌの電流通路には電圧ＶＲＥＧが供給されている。これらトランジスタ６１ｋ、６１ｌは第１のラッチ回路ＬＡＴ（Ａ）にラッチされたデータに応じてビット線の電位を設定する。
【００４３】
また、前記第１のラッチ回路ＬＡＴ（Ａ）のノードＮＡは、Ｐチャネルトランジスタ６１ｍを介して端子６２ｄに接続されている。このトランジスタ６１ｍのゲートには信号ＰＲＳＴＢ１が供給され、前記端子６２ｄには電圧ＶＣＣが供給されている。このトランジスタ６１ｍはデータの書き込み時、又は読み出し時に第１のラッチ回路ＬＡＴ（Ａ）のノードＮＡをハイレベルに設定する。さらに、ノードＮＡは、キャパシタ６１ｎを介して接地されている。このキャパシタ６１ｎはデータの読み出し時に、ノードＮＡの電荷を保持する。
【００４４】
さらに、前記ノードＮＡは並列接続されたトランジスタ６１ｏとクロックドインバータ回路６１ｐを介して、図示せぬ前記カラムセレクトゲートに接続される。トランジスタ６１ｏのゲートには、信号ＳＰＢが供給され、クロックドインバータ回路６１ｐは信号Ｏｓａｃ、Ｏｓａｃｂにより制御される。トランジスタ６１ｏはデータの書き込み時に前記カラムセレクトゲートを介して供給されるデータを第１のラッチ回路ＬＡＴ（Ａ）に転送する。前記クロックドインバータ回路６１ｐは、データの読み出し時にバッファとして動作する。
【００４５】
一方、前記ノードＮＥにはトランジスタ６１ｑの電流通路の一端が接続されている。このトランジスタ６１ｑのゲートには信号ＢＬＣ２が供給され、このトランジスタ６１ｑの電流通路の他端には第２のラッチ回路ＬＡＴ（Ｂ）が接続されている。この第２のラッチ回路ＬＡＴ（Ｂ）は２つのクロックドインバータ回路６１ｒ、６１ｓにより構成されている。クロックドインバータ回路６１ｒは信号ＳＥＮ２、ＳＥＮ２Ｂにより制御され、クロックドインバータ回路６１ｓは信号ＬＡＴ２、ＬＡＴ２Ｂにより制御される。この第２のラッチ回路ＬＡＴ（Ｂ）は、メモリセルから読み出されたデータをラッチする。
【００４６】
また、前記ノードＮＥにはトランジスタ６１ｔ、６１ｕが直列接続されている。トランジスタ６１ｔのゲートは前記第２のラッチ回路ＬＡＴ（Ｂ）のノードＮＤに接続され、トランジスタ６１ｕのゲートには信号ＶＲＦＹ２が供給されている。さらに、トランジスタ６１ｕの電流通路には電圧ＶＲＥＧが供給されている。これらトランジスタ６１ｔ、６１ｕは第２のラッチ回路ＬＡＴ（Ｂ）にラッチされたデータに応じてビット線の電位を設定する。
【００４７】
また、前記第２のラッチ回路ＬＡＴ（Ｂ）のノードＮＢは、Ｐチャネルトランジスタ６１ｖを介して端子６２ｅに接続されている。このトランジスタ６１ｖのゲートには信号ＰＲＳＴＢ２が供給され、前記端子６２ｅには電圧ＶＣＣが供給されている。このトランジスタ６１ｖはベリファイリード時に第２のラッチ回路ＬＡＴ（Ｂ）のノードＮＢをハイレベルに設定する。さらに、ノードＮＢは、キャパシタ６１ｗを介して接地されている。このキャパシタ６１ｗはベリファイリード時に、ノードＮＢの電荷を保持する。
【００４８】
上記構成において動作について説明する。
【００４９】
図７、図８に示すように、メモリセルのデータとメモリセルの閾値電圧の関係を定義する。図７において、メモリセルのデータ“０”〜“７”は、メモリセルの閾値の低いほうから高い方へと定義されている。また、ａ〜ｇはリード動作時におけるワード線の電位を示し、ａ’〜ｇ’はベリファイリード動作時におけるワード線の電位を示している。
【００５０】
このメモリは、多値メモリであるため、１セルに３ビットのデータを記憶することができる。この３ビットの切り替えはアドレス（第１ページ、第２ページ、第３ページ）によって行なう。図８に示すように、例えばアドレスに第１ページを指定すると、メモリセルのデータが“０”〜“３”であるとデータ“１”、メモリセルのデータが“４”〜“７”であるとデータ“０”となる。次に、アドレスに第２ページを指定すると、メモリセルのデータが“０”，“１”，“４”，“５”であるとデータ“１”、メモリセルのデータが“２”，“３”，“６”，“７”であるとデータ“０”となる。さらに、アドレスに第３ページを指定すると、メモリセルのデータが“０”，“２”，“４”，“６”であるとデータ“１”、メモリセルのデータが“１”，“３”，“５”，“７”であるとデータ“０”となる。
【００５１】
消去動作を行なうとメモリセルのデータは“０”となり、アドレスに第１、第２、第３ページの何れを指定しても読み出されるデータは“１”となる。
【００５２】
（セル選択方法）
読み出し（リード）動作、プログラムベリファイ動作及びプログラム動作時では、データ記憶回路に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち、外部より指定されたアドレスにより１本のビット線が選択される。さらに、外部アドレスにより、１本のワード線が選択され、図３に示す、１セクタが選択される。このセクタの切り替えはアドレスによって行われる。
【００５３】
消去（イレーズ）動作は、図３に示すブロック単位で行う。また、データ記憶回路に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）について同時に行う。
【００５４】
イレーズベリファイ動作は、１回の動作で、データ記憶回路に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち１本のビット線（ＢＬｉ）についてベリファイリード動作を行い、この結果を図６に示す第１のラッチ回路ＬＡＴ（Ａ）に記憶する。次に、他方のビット線（ＢＬｉ＋１）についてベリファイ動作を行ない、この結果と前のベリファイリードの結果の論理和を第１のラッチ回路ＬＡＴ（Ａ）に記憶する。このイレーズベリファイ動作は、全ての第１のラッチ回路ＬＡＴ（Ａ）のノードＮＡがローレベルとなるまで繰り返される。
【００５５】
（プログラム及びプログラムベリファイ）
（第１ページプログラム）
プログラム動作は、先ず、アドレスを指定し、図３に示す１つのセクタを選択する。このメモリは、３ページのうち、第１ページ、第２ページ、第３ページの順でしかプログラム動作できない。したがって、初めにアドレスで第１ページを選択する。
【００５６】
次に、書き込みデータをデータ入出力バッファ４、カラムセレクトゲート、図６に示すトランジスタ６１ｏを介して、全てのデータ記憶回路内の第１のラッチ回路ＬＡＴ（Ａ）に記憶する。外部よりデータ“１”（書き込みを行なわない）が入力されると、第１のラッチ回路ＬＡＴ（Ａ）のノードＮＡはハイレベルに設定され、データ“０”（書き込みを行なう）が入力されると、ローレベルに設定される。以後、第１のラッチ回路ＬＡＴ（Ａ）のデータはデータ記憶回路のノードＮＡの電位、第２のラッチ回路ＬＡＴ（Ｂ）のデータはデータ記憶回路のノードＮＢの電位とする。
【００５７】
図６に示すトランジスタ６１ｈのゲートに信号ＢＬＣ１として電圧ＶＣＣ＋Ｖｔｈを供給すると、第１のラッチ回路ＬＡＴ（Ａ）にデータ“１”が記憶されている時、ビット線は電源電位ＶＣＣとなり、データ“０”が記憶されている時、ビット線は接地電位ＶＳＳとなる。また、選択されたワード線に接続され、非選択ページ（クラスタ）の（ビット線が非選択である）セルは書き込みが行われてはならない。このため、これらのセルに接続されているビット線もデータ“１”が記憶されている場合と同様に電源電位ＶＣＣとする。
【００５８】
図９は、プログラム時の動作シーケンスを示している。ここで、選択されているブロックのセレクト線ＳＧ１をＶＣＣ、選択ワード線にＶＰＧＭ（２０Ｖ）、非選択ワード線にＶｐａｓｓ（１０Ｖ）を与えると、ビット線がＶＳＳになっている場合、セルのチャネルがＶＳＳ、ワード線がＶＰＧＭであるためセルの浮遊ゲートに電子が注入され、書き込みが行なわれる。一方、ビット線がＶＣＣになっている場合、第１の選択ゲートＳ１がオフする。このため、セルのチャネルはＶＳＳでなくＶｐａｓｓであり、カップリングでＶｐａｓｓ／２となるためプログラムが行われない。
【００５９】
データ“０”の書き込みの場合、図８に示すように、メモリセルのデータを“４”とする。データ“１”の書き込み時の、メモリセルのデータは“０”のままである。
【００６０】
（第１ページのベリファイ）
｛最も高い閾値を持つセルのベリファイ｝
図１０、図１３（ａ）を参照して最も高い閾値を持つセルのベリファイ動作について説明する。
【００６１】
第１ページのベリファイは、選択されているワード線にリードの時の電位ｄより少し高い電位ｄ’を与える。以後“’”を付した電位はベリファイ電位を示し、リードの電位より若干高い値とする。
【００６２】
次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に電圧Ｖｒｅａｄを供給するとともに、図６に示すトランジスタ６１ｇのゲートに供給される信号ＢＩＡＳをハイレベルとし、ビット線をプリチャージする。この後、セルのソース側のセレクト線ＳＧ２をハイレベルとする。閾値電圧がｄ’より高い時は、セルがオフするためビット線はハイレベルのままであり、閾値電圧ｄ’に達していない場合、セルがオンするためビット線はＶＳＳとなる。
【００６３】
ここで、書き込みを行なう場合、図６に示す第１のラッチ回路ＬＡＴ（Ａ）にローレベルが記憶され、書き込みを行なわない場合、第１のラッチ回路ＬＡＴ（Ａ）にハイレベルが記憶されている。このため、ＶＲＥＧをＶＣＣとし、ＶＲＦＹ１をハイレベルとすると、書き込みを行なわない場合のみビット線がハイレベルになる。この動作の後、ビット線の電位を第１のラッチ回路ＬＡＴ（Ａ）に読み込む。第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、セルが閾値電圧に達した場合と、書き込みを行なわない場合である。また、第１のラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、セルが閾値電圧に達しない場合だけである。したがって、第１のラッチ回路ＬＡＴ（Ａ）がローレベルの場合は再び書き込み動作を行ない、全てのデータ記憶回路のデータがハイレベルになるまでこのプログラム動作とベリファイ動作を繰り返す。
【００６４】
以上は２値の場合と全く同じ動作である。
【００６５】
（第２ページのプログラム）
第２ページのプログラムも第１ページのプログラムと同様に、次の書き込みデータを全てのデータ記憶回路の第１のラッチ回路ＬＡＴ（Ａ）に記憶する。次に、所定の電圧を供給することにより選択されているページ全てのセルについて書き込みを行なう。
【００６６】
図８に示すように、第１ページのメモリセルのデータが“０”になっている（第１ページに書き込み動作を行なわなかった）場合、このメモリセルに対して書き込みを行なうと、このメモリセルのデータは“２”となる。また、書き込みを行なわない場合、このメモリセルのデータは“０”のままである。一方、第１ページのメモリセルのデータが“４”となっている（第１ページに書き込み動作を行なった）場合、このメモリセルに対して書き込みを行なうとメモリセルのデータは“６”となる。また、書き込みを行なわないとメモリセルのデータは“４”のままである。このように、第２ページのプログラムは、メモリセルのデータが“２”に書き込まれる場合と、“６”に書き込まれる場合がある。
【００６７】
（第２ページのベリファイ）
｛最も高い閾値を持つセルのベリファイ｝
先ず、図１０、図１３（ｂ）を参照してメモリセルのデータが“６”の場合のベリファイ動作について説明する。このベリファイは前述した第１ページベリファイと全く同じである。なぜなら、電位ｆ’より高いセルはデータ“６”のセル以外存在しないためである。第１ページのベリファイでは、メモリセルのデータが“４”になったかベリファイをするためワード線に電位ｄ’を与えていたが、今回は、メモリセルのデータが“６”になったかベリファイするため、ワード線に電位ｆ’を供給してベリファイを行なう。第１ページのベリファイと同様の動作をし、この結果、第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、セルが閾値電圧に達した場合と、書き込みを行なわない（初めから第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている）場合である。また、第１のラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、セルが閾値電圧に達しない場合、つまりメモリセルにデータ“６”が十分に書き込まれていない場合と、メモリセルにデータ“２”を書き込んでいる場合である。
【００６８】
｛中間の閾値を持つセルのベリファイ｝
次に、図１１、図１３（ｃ）を参照して中間の閾値を持つセル、例えばメモリセルのデータが“２”になる場合のベリファイ動作について説明する。このベリファイは、ワード線に電位ｂ’を与えてベリファイすれば良い。しかし、メモリセルのデータが“４”以上になっているセルも閾値電圧が高いため、このメモリセルもオフしてベリファイＯＫとなってしまう。このため、予めメモリセルのデータが“4”以上になっているか調べておく必要がある。そこで、ワード線に電位ｄを供給してリード動作を行い、この結果を図６に示すデータ記憶回路の第２のラッチ回路ＬＡＴ（Ｂ）に記憶する。メモリセルのデータが“４”以上である場合、第２のラッチ回路ＬＡＴ（Ｂ）にハイレベルが記憶される。
【００６９】
次に、ワード線に電位ｂ’を供給してリード動作を行なうと、このリード結果はビット線が閾値電圧ｂ’に達しているか、メモリセルのデータが“４”以上であるとハイレベルとなり、閾値電圧がｂ’に達していないか、メモリセルのデータが“０”の場合、ローレベルとなる。ここで、図６に示す電位ＶＲＥＧを接地電位ＶＳＳ、トランジスタ６１ｕのゲートに供給される電位ＶＲＦＹ２をハイレベルとすると、第２のラッチ回路ＬＡＴ（Ｂ）がハイレベルになっている場合、トランジスタ６１ｔがオンしてビット線がローレベルとなる。つまり、メモリセルのデータが“４”以上である場合、ビット線がローレベルになる。
【００７０】
次に、前のベリファイの操作と同様に、ＶＲＥＧをＶＣＣとし、ＶＲＦＹ１をハイレベルとすると、第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている（書き込みを行なわない場合）時、ビット線がハイレベルになる。この動作の後、ビット線の電位を第１のラッチ回路ＬＡＴ（Ａ）に読み込む。第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、データ“２”を書き込んだメモリセルが閾値電圧に達した場合と、書き込みを行なわない場合である。また、第１のラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、データ“２”の書き込みを行なっているメモリセルが閾値電圧に達しない場合と、書き込みを行なっているメモリセルのデータが“４”以上である場合である。
【００７１】
したがって、第２ページのベリファイは、メモリセルがデータ“２”に書き込まれる場合のベリファイと、データ“６”に書き込まれる場合のベリファイの２回の動作を行ない、第１のラッチ回路ＬＡＴ（Ａ）がローレベルの場合は再び書き込み動作を行ない、全てのデータ記憶回路のデータがハイレベルになるまでこのプログラム動作とベリファイ動作を繰り返す。しかし、メモリセルのデータが“６”の場合、閾値電圧が高いため、書き込みに時間を要する。このため、繰り返し行なうプログラムベリファイ動作のうち、初めの数回はメモリセルのデータが“６”になったかどうかのベリファイ動作を省略することができる。また、数回プログラムベリファイ動作を繰り返すと、閾値電圧の低いデータ“２”の書き込みは終了しているはずである。このため、この後、メモリセルのデータ“２”についてのベリファイ動作は省略することが可能である。
【００７２】
また、第２ページのベリファイでは、データ“２”を書き込むメモリセルのベリファイ動作中、メモリセルのデータが“４”以上になっているか調べておくため、ワード線にｄの電位を供給してリード動作を行い、この結果をデータ記憶回路の第２のラッチ回路ＬＡＴ（Ｂ）に記憶したが、第２のラッチ回路ＬＡＴ（Ｂ）はこの動作以外に使用しないため、繰り返し行なうプログラムとベリファイ動作のうち初めの１回のみ行なえばよい。
【００７３】
（第３ページのプログラム）
第３ページのプログラムも第１、第２ページプログラムと同様に、次の書き込みデータを全てのデータ記憶回路の第１のラッチ回路ＬＡＴ（Ａ）に記憶する。次に、ワード線に所定の電圧を供給することにより選択されているページ全てのセルについて書き込みを行なう。
【００７４】
図８に示すように、メモリセルのデータが“０”である場合、書き込みを行なうとメモリセルのデータが“１”となり、書き込みを行なわないとメモリセルのデータは“０”のままである。メモリセルのデータが“２”である場合、書き込みを行なうとメモリセルのデータが“３”となり、書き込みを行なわないとメモリセルのデータは“２”のままである。メモリセルのデータが“４”である場合、書き込みを行なうとメモリセルのデータが“５”となり、書き込みを行なわないとメモリセルのデータは“４”のままである。メモリセルのデータが“６”である場合、書き込みを行なうとメモリセルのデータが“７”となり、書き込みを行なわないとメモリセルのデータは“６”のままである。
【００７５】
（第３ページのベリファイ）
第３ページのベリファイは、メモリセルのデータが“７”、“５”、“３”、“１”の４通りに書き込まれるため４動作行なう。
【００７６】
｛最も高い閾値を持つセルのベリファイ｝
先ず、図１０、図１４（ａ）（ｂ）を参照してメモリセルのデータが“７”になる場合のベリファイについて説明する。このベリファイは前記第１ページのベリファイでメモリセルのデータが“４”になるベリファイ、あるいは第２ページのベリファイでメモリセルのデータが“６”になるベリファイと全く同じである。なぜなら、ｇの電位より高いセルはデータ“７”のセルとする以外存在しないためである。この場合、ワード線に電位ｇ’を供給してベリファイ動作を行なう。
【００７７】
この動作の結果、第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、セルが閾値電圧に達した場合と、書き込みを行なわない（初めから第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている）場合である。また、第１のラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、セルが閾値電圧に達しない場合、つまり、メモリセルにデータ“７”が十分に書き込まれていない場合と、メモリセルに“１”、“３”、“５”のデータを書き込んでいる場合である。
【００７８】
｛中間の閾値を持つセルのベリファイ｝
次に、メモリセルのデータが“５”になる場合のベリファイについて説明する。このベリファイは第２ページのベリファイのメモリセルのデータが“２”になるベリファイと同じである。
【００７９】
但し、メモリセルのデータが“５”になっているかどうかをベリファイするのであるため、前もってメモリセルのデータを読んでおく場合、ワード線は電位ｆとされ、次のベリファイリード時、ワード線は電位ｅ’とされる。図１１、図１５（ａ）（ｂ）に示す。
【００８０】
｛中間の閾値を持つセルのベリファイ｝
次に、メモリセルのデータが“３”になる場合のベリファイについて説明する。このベリファイは第２ページのベリファイのメモリセルのデータが“２”になる場合のベリファイ、第３ページのベリファイのメモリセルのデータが“５”になる場合のベリファイと同じである。
【００８１】
但し、メモリセルのデータが“３”になっているかどうかをベリファイするのであるため、前もってメモリセルのデータを読んでおく場合のワード線電位は、ｄであり、次のベリファイリード時のワード線電位はｃ’である。この動作を図１１、図１６（ａ）（ｂ）に示す。
【００８２】
｛中間の閾値を持つセルのベリファイ｝
次に、メモリセルのデータが“１”になる場合のベリファイについて説明する。このベリファイは第２ページのベリファイのメモリセルのデータが“２”になるベリファイ、第３ページのベリファイのメモリセルのデータ“５”、“３”になる場合と同じである。
【００８３】
但し、メモリセルのデータが“１”になっているかどうかをベリファイするのであるため、前もってメモリセルのデータを読んでおく場合のワード線電位は、ｂであり、次のベリファイリード時のワード線電位はａ’である。この動作を図１１、図１７（ａ）（ｂ）に示す。
【００８４】
上記のようにして、第３ページのベリファイは、メモリセルのデータが“７”、“５”、“３”、“１”に書き込まれる場合のベリファイ４回の動作を行なう。この結果、第１のラッチ回路ＬＡＴ（Ａ）がローレベルの場合は再び書き込み動作を行ない全てのデータ記憶回路のデータがハイレベルになるまでこのプログラム動作とベリファイ動作を繰り返す。しかし、第２ページのプログラムベリファイ動作と同じように、メモリセルのデータが高い閾値電圧であるほど、書き込みに要する時間が長い。このため、繰り返し行なうプログラムベリファイ動作のうち初めの数回はメモリセルのデータが“７”、“５”、“３”に対するベリファイ動作を省略し、データ“１”についてのみに行なう。この後、数回メモリセルのデータ“１”と“３”についてベリファイ動作し、次に、データ“１”と“３”と“５”でベリファイし、最後に“１”、“３”、“５”、“７”についてベリファイする。また、数回繰り返し動作を行なうと、閾値電圧の低いデータが“１”のメモリセルは、書き込みが終了しているはずである。このため、この後、“３”、“５”、“７”、次に“５”、“７”、最後に“７”のみベリファイ動作することにより、ベリファイ時間を短縮することが可能である。
【００８５】
また、予備リードはベリファイ時毎回行なう必要はなく、図６の第２のラッチ回路ＬＡＴ（Ｂ）にデータが残っている場合、この予備リードを省略することができる。
【００８６】
（リード動作）
（第１ページのリード）
｛最も高い閾値を持つセルのリード｝
第１ページのリードは、選択されているワード線にリードの時の電位ｄを与える。
【００８７】
次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に電位Ｖｒｅａｄ（４．５Ｖ）を供給し、図６のトランジスタ６１ｇのゲートに供給される電位ＢＩＡＳをハイレベルとし、ビット線をプリチャージする。この後、セルのソース側のセレクト線ＳＧ２をハイレベルとする。閾値電圧が電位ｄより高い時、セルがオフするためビット線はハイレベルのままであり、閾値電圧ｄに達していない場合セルがオンするため、ビット線がＶＳＳとなる。図８に示すように、メモリセルのデータとメモリセルの閾値電圧を定義しているため、メモリセルのデータが“０”、“１”、“２”、“３”であると、ビット線の電位はローレベル、メモリセルのデータが“４”、“５”、“６”、“７”であると、ビット線の電位はハイレベルとなる。
【００８８】
次に、これらビット線の電位を第１のラッチ回路ＬＡＴ（Ａ）に読み込むとメモリセルのデータが“０”、“１”、“２”、“３”であるとローレベル、メモリセルのデータが“４”、“５”、“６”、“７”であるとハイレベルになる。しかし、第１のラッチ回路ＬＡＴ（Ａ）に記憶されたデータを出力する時、図６に示すクロックドインバータ回路６１ｐの信号Ｏｓａｃがイネーブルとなる。このため、データ記憶回路から出力されるデータは、メモリセルのデータが、“０”、“１”、“２”、“３”であると“１”、メモリセルのデータが“４”、“５”、“６”、“７”であると“０”となる。この動作を図１２、図１８（ａ）に示す。
【００８９】
上記リード動作は、２値の場合と同様である。
【００９０】
（第２ページのリード）
第２ページのリードで出力されるデータが“０”の場合は、図８に示すように、メモリセルのデータが“２”と“３”、及び“６”と“７”との２つの離れた領域になっている。
【００９１】
したがって、最初にメモリセルのデータが“６”、“７”であるかを判断し、次にメモリセルのデータが“２”、“３”であるかを判断する。
【００９２】
｛最も高い閾値を持つセルのリード｝
先ず、メモリセルのデータが“６”、“７”にあるかを調べる。これは、前述した第１ページのリードと同じである。なぜなら、電位ｆより高いセルはデータ“６”が“７”のセル以外存在しないためである。第１ページのリードでは、メモリセルのデータが“４”、“５”、“６”、“７”であるかを調べるためにワード線に電位ｄを供給したが、今回は、メモリセルのデータが“６”か“７”であるかを調べるため電位ｆでリード動作する。
【００９３】
第１ページのリードと同様に、この動作の結果、第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“６”、“７”の場合だけである。また、第１のラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”、“１”、“２”、“３”、“４”、“５”の場合である。図１２、図１８（ｂ）に上記動作を示す。
【００９４】
｛中間の閾値を持つセルのリード｝
次に、メモリセルのデータが“２”、“３”にあるかを調べるリード動作について説明する。このリードは、ワード線に電位ｂを供給してリードすれば良いが、メモリセルのデータが“４”以上になっているセルも閾値電圧が高いため、オフしてしまう。このため、予めメモリセルのデータが“４”以上になっているか調べておく必要がある。そこで、ワード線に電位ｄを供給してリード動作を行い、この結果を図６に示す第２のラッチ回路ＬＡＴ（Ｂ）に記憶する。次に、ワード線に電位ｂを供給してリード動作を行なうと、ビット線はメモリセルのデータが“２”以上であるとハイレベル、メモリセルのデータが“０”又は“１”であるとローレベルとなる。
【００９５】
ここで、電位ＶＲＥＧを接地電位ＶＳＳ、信号ＶＲＦＹ２をハイレベルとしてトランジスタ６１Ｕをオンさせると、第２のラッチ回路ＬＡＴ（Ｂ）がハイレベルになっている場合、ビット線がローレベルになる。つまり、メモリセルのデータが“４”以上である場合、ビット線がローレベルになる。したがって、現時点では、メモリセルのデータが“２”、“３”であるときのみハイレベルとなる。このレベルを第１のラッチ回路ＬＡＴ（Ａ）に取り込むことが考えられる。しかし、メモリセルのデータが“６”、“７”であった場合、先ほど読み出し第１のラッチ回路ＬＡＴ（Ａ）に記憶した内容が無くなってしまうため、ＶＲＥＧを電源電位ＶＣＣとし、信号ＶＲＦＹ１をハイレベルとしてトランジスタ６１ｌをオンとする。第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている（メモリセルのデータが“６”、“７”）場合、ビット線がハイレベルとされる。
【００９６】
この動作の後、ビット線の電位を第１のラッチ回路ＬＡＴ（Ａ）に読み込む。第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“２”、“３”、“６”、“７”のときであり、ローレベルがラッチされるのは、メモリセルのデータが“０”、“１”、“４”、“５”のときである。第１ページのリードと同様に、第１のラッチ回路ＬＡＴ（Ａ）に記憶されたデータを出力する時は図６に示すクロックドインバータ回路６１ｐの信号Ｏｓａｃがイネーブルとなる。このため、データ記憶回路からは、メモリセルのデータが“０”、“１”、“４”、“５”であるとデータ“１”が出力され、メモリセルのデータが“２”、“３”、“６”、“７”であるとデータ“０”が出力される。図１１、図１８（ｂ）（ｃ）に上記動作を示す。
【００９７】
また、第２ページのリードでは、メモリセルのデータが“２”、“３”になる場合のリード動作中、メモリセルのデータが“４”以上になっているか調べておくため、ワード線に電位ｄを印加してリード動作を行い、この結果を図６に示す第２のラッチ回路ＬＡＴ（Ｂ）に記憶させた。しかし、第１ページのリード後に第２ページのリードを行なう場合、第１のラッチ回路ＬＡＴ（Ａ）にはメモリセルのデータが“４”以上になっている場合、ハイレベルがラッチされている。このため、この第１のラッチ回路ＬＡＴ（Ａ）の内容を第２のラッチ回路ＬＡＴ（Ｂ）に転送することにより省略することも可能である。
【００９８】
（第３ページのリード）
第３ページのリードにおいて、出力されるデータが“０”の場合、図８に示すように、メモリセルのデータが“１”、“３”、“５”、“７”である。
【００９９】
従って、初めにメモリセルのデータが“７”であるかを判断し、次にメモリセルのデータが“５”であるかを判断し、次にメモリセルのデータが“３”であるかを判断し、最後にメモリセルのデータが“１”であるかを判断するため、４回の動作を行なう。
【０１００】
｛最も高い閾値を持つセルのリード｝
先ず、メモリセルのデータが“７”であるかを調べる。これは、前記第１ページのリードと第２ページのリードのメモリセルのデータが“６”、“７”にある場合と同様である。なぜなら、電位ｇより高いセルはデータ“７”のセル以外存在しないためである。第１ページのリードでは、メモリセルのデータが４”、“５”、“６”、“７”であるかを調べるためにワード線に電位ｄを供給し、第２ページのリードでは、メモリセルのデータが“６”、“７”にあるため、ワード線に電位ｆを供給していた。しかし、今回は、メモリセルのデータが“７”にあるかを調べるため電位ｇでリード動作を行う。
【０１０１】
第１ページのリードのメモリセルのデータが“４”、“５”、“６”、“７”である場合であると、第２ページのリードのメモリセルのデータが“６”、“７”にある場合と同様に、この動作の結果、第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“７”の場合だけである。また、第１のラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”、“１”、“２”、“３”、“４”、“５”、“６”である場合である。上記動作を図１２、図１９（ａ）に示す。
【０１０２】
｛中間の閾値を持つセルのリード｝
次に、メモリセルのデータが“５”になっている場合のリード動作について説明する。このリード動作は、第２ページのリードのメモリセルのデータが“２”、“３”である場合と同じである。
【０１０３】
但し、メモリセルのデータが“５”であるかどうかを判断するため、前もってメモリセルのデータを読んでおく場合、ワード線には、電位ｆが供給され、次のリード時、ワード線には電位ｅが供給される。この動作を図１９（ｂ）に示す。
【０１０４】
｛中間の閾値を持つセルのリード｝
次に、メモリセルのデータが“３”になっている場合のリード動作について説明する。このリード動作は、第２ページのリードのメモリセルのデータが“２”、“３”である場合、第３ページのリードのメモリセルのデータが“５”になっている場合と同じである。
【０１０５】
但し、メモリセルのデータが“３”であるかどうかを判断するため、前もってメモリセルのデータを読んでおく場合、ワード線には電位ｄが供給され、次のリード時にはワード線に電位ｃが供給される。この動作を図１９（ｃ）に示す。
【０１０６】
｛中間の閾値を持つセルのリード｝
次に、メモリセルのデータが“１”になっている場合のリード動作について説明する。このリード動作は、第２ページのリードのメモリセルのデータが“２”、“３”である場合、第３ページのリードのメモリセルのデータが“５”及び“３”になっている場合と同じである。
【０１０７】
但し、メモリセルのデータが“１”であるかどうかを判断するため、前もってメモリセルのデータを読んでおく場合、ワード線には電位ｂが供給され、次のリード時、ワード線には電位ａが供給される。この動作を図１９（ｄ）に示す。
【０１０８】
以上の４つの動作により、メモリセルのデータが第１のラッチ回路ＬＡＴ（Ａ）に取り込まれる。
【０１０９】
（イレーズ及びイレーズベリファイ動作）
（イレーズ）
図２０はイレーズ動作を示している。イレーズ動作は、先ず、アドレスを指定し、図３に点線で示すブロックを選択する。イレーズ動作を行なうと、メモリセルのデータは“０”となり第１ページ、第２ページ、第３ページ何れでリードを行なってもデータ“１”が出力される。
【０１１０】
（イレーズベリファイ）
図２１はイレーズベリファイ動作を示している。イレーズベリファイ動作は、１回の動作で、データ記憶回路に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち１本のビット線（ＢＬｉ）についてリード動作を行い、この結果を図６に示す第１のラッチ回路ＬＡＴ（Ａ）に記憶させる。このイレーズベリファイ動作は、リード動作と殆ど同じであるが、ブロック全てのセルについて行なうため、選択されているブロック内の全てのワード線を選択状態、すなわち接地電位ＶＳＳとする。セレクト線ＳＧ１に電位Ｖｒｅａｄを供給し、図６に示すトランジスタ６１ｇのゲートに供給される信号ＢＩＡＳをハイレベルとし、ビット線をプリチャージする。この後、セルのソース側のセレクト線ＳＧ２をハイレベルとする。
【０１１１】
消去が十分に行なわれ、セルの閾値電圧が基準値（０Ｖ）以下であると、ビット線の電位がローレベルとなり、消去が不十分、つまりセルの閾値電圧が基準値（０Ｖ）以上であると、ビット線の電位がハイレベルになる。このデータを第１のラッチ回路ＬＡＴ（Ａ）にラッチする。消去が不十分の時第１のラッチ回路ＬＡＴ（Ａ）にはハイレベルがラッチされ、消去が十分である場合、第１のラッチ回路ＬＡＴ（Ａ）にはローレベルがラッチされる。
【０１１２】
次に、他方のビット線（ＢＬｉ＋１）についてベリファイ動作が行われる。この結果を第１のラッチ回路ＬＡＴ（Ａ）に取り込むことが考えられるが、第１のラッチ回路ＬＡＴ（Ａ）に記憶した内容が無くなってしまうため、電位ＶＲＥＧを電源電位ＶＣＣとし、信号ＶＲＦＹ１をハイレベルとしてトランジスタ６１ｌをオンとする。第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている（消去不十分）時、トランジスタ６１ｋ、６１ｌを介してビット線がハイレベルとされる。この動作の後、ビット線の電位を第１のラッチ回路ＬＡＴ（Ａ）に読み込む。第１のラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、両方のビット線（ＢＬｉ、ＢＬｉ＋１）の何れかが消去不十分である時である。
【０１１３】
このようにして、全ての第１のラッチ回路ＬＡＴ（Ａ）のデータがローレベルになるまでイレーズ、イレーズベリファイ動作が繰り返される。
【０１１４】
尚、本実施例では、１セルに８値の３ビットを記憶するメモリとしたが、１セルに１６値４ビットを記憶する場合は、第３ページで決めた８値の間に１ずつ設定値を決め、全く同じプログラム動作及びプログラムベリファイ動作を行なえば良い。したがって、本発明を用いると、データ記憶回路及びこれを制御する動作をほとんど変更すること無く１６値以降についても行なうことができる。
【０１１５】
上記第１の実施の形態によれば、１回の書き込みシーケンスで、１つのセルに１ビットのデータのみが書き込まれる。ｎ−１ビットのデータが書かれている場合、セルの閾値は２(n-1 )値、存在する。次の１ビットのデータの書き込みにより、２n 値のレベルになる。しかし、新たに設定するレベルをすでに存在する閾値と閾値の間に決めると、この新たに設定した閾値に達したかベリファイするとき、既にこの閾値より高い所にデータが書き込まれているかどうかを調べ、この結果を取り除くことで、ここで設定した閾値でのベリファイ結果のみを出すことができる。このため、前に書き込んだデータの全てをラッチ回路に読み込む必要が無い。したがって、第１の実施の形態の場合、書き込みデータを記憶するための１つの第１のラッチ回路と、ベリファイ動作時に所定の閾値より高い所にデータがあるかどうかを調べた結果を記憶するための１つの第２のラッチ回路とを有していればよい。よって、ｎの値が大きくなっても、２つのラッチ回路のみで構成できるため、チップに対するラッチ回路の占有面積の増大を防止できる。
【０１１６】
また、このラッチ回路を動かす基本シーケンスは、ワード線の電位と回数のみ変更するだけでよいため、制御を容易化できる利点を有している。
【０１１７】
さらに、図６に示すデータ記憶回路において、第１のラッチ回路ＬＡＴ（Ａ）のみがトランジスタ６１ｏとクロックドインバータ回路６１ｐ、図示せぬカラムセレクトゲートを介してデータ入出力バッファ４に接続され、第２のラッチ回路ＬＡＴ（Ｂ）はデータ入出力バッファ４に接続されない。このため、パターン面積を縮小できる。
【０１１８】
＜第２の実施の形態＞
上記第１の実施の形態では、第ｎページ時のプログラムベリファイ動作、及びリード動作の際、ワード線をハイレベルとしてセルのデータを読みラッチする動作を、２n 回行なわなくてはならない。したがって、ｎの値が大きくなるに従い、プログラムベリファイ及びリード時間が増大する。
【０１１９】
ＮＡＮＤ型セルでは、セルの閾値電圧を負とすると、この閾値電圧に対応する電圧をビット線に出力することができる。したがって、全てのデータに対応する閾値電圧を負に設定し、１回の操作でビット線にメモリセルの閾値電圧に相当する電位を出力させ、複数の差動アンプより同時にベリファイし、ＯＫかＮＧを判断したり、もしくはデータが“１”か“０”かを判別する。このようにするとプログラムベリファイ及びリード時間の増大を抑制できる。しかし、複数の差動アンプ及びこれらの出力に接続されるロジック回路は大きなパターンとなる。このため、１つの差動アンプ及びロジック回路を複数のセンスアンプに共有させ、時分割で使用する。以下、第２の実施の形態について説明する。
【０１２０】
第２の実施の形態における不揮発性半導体記憶装置の全体構成は図２と同様である。
【０１２１】
図２２は、図２に示すメモリセルアレイ１及びビット線制御回路２の構成を示すものであり、図３と同一部分には同一符号を付し、異なる部分についてのみ説明する。図２２において、ビット線制御回路２を構成するデータ記憶回路２２０、２２１〜２２２１１２が図３と異なっている。各データ記憶回路２２０、２２１〜２２２１１２は、差動アンプとロジック回路とに接続される。
【０１２２】
すなわち、図２３に示すように、２６４個の差動アンプ部２３１とロジック回路２３２は２６４個のＹセレクタ２３３を介して８個のデータ記憶回路毎に接続されている。各Ｙセレクタ２３３において、各データ記憶回路と差動アンプ部２３１とロジック回路２３２の間には一対のトランジスタが接続され、これら一対のトランジスタは信号ＹＡ０〜ＹＡ７により制御され、各データ記憶回路と差動アンプ部２３１とロジック回路２３２とを接続する。
【０１２３】
図２４は図２２、図２３に示すデータ記憶回路の構成を示している。１つのデータ記憶回路は１つのラッチ回路を含んでいる。ビット線ＢＬｉにはＮチャネルトランジスタ２４１ａの電流通路の一端が接続されている。このトランジスタ２４１ａのゲートには信号ＢＬＴＲが供給されている。このトランジスタ２４１ａの電流通路の他端はトランジスタ２４１ｂの電流通路の一端、およびトランジスタ２４１ｃの電流通路の一端に接続されている。前記トランジスタ２４１ｂの電流通路の他端は端子２４２ａに接続されている。この端子２４２ａには電圧ＶＢＬＡが供給されている。また、前記トランジスタ２４１ｂのゲートには信号ＰＲＥＡが供給されている。前記トランジスタ２４１ｃのゲートには信号ＢＬＳＡが供給されている。
【０１２４】
また、ビット線ＢＬｉ＋１にはＮチャネルトランジスタ２４１ｄの電流通路の一端が接続されている。このトランジスタ２４１ｄのゲートには前記信号ＢＬＴＲが供給されている。このトランジスタ２４１ｄの電流通路の他端はトランジスタ２４１ｅの電流通路の一端、およびトランジスタ２４１ｆの電流通路の一端に接続されている。前記トランジスタ２４１ｅの電流通路の他端は端子２４２ｂに接続されている。この端子２４２ｂには電圧ＶＢＬＢが供給されている。また、前記トランジスタ２４１ｅのゲートには信号ＰＲＥＢが供給されている。前記トランジスタ２４１ｆのゲートには信号ＢＬＳＢが供給されている。トランジスタ２４１ｂ、２４１ｅは信号ＰＲＥＡ、ＰＲＥＢに応じて非選択のビット線を電位ＶＢＬＡ、ＶＢＬＢにプリチャージする。前記トランジスタ２４１ｃ、２４１ｆは信号ＢＬＳＡ、ＢＬＳＢに応じてビット線を選択する。
【０１２５】
前記トランジスタ２４１ｃ、２４１ｆの電流通路の他端はノードＮＥに接続されている。このノードＮＥにはトランジスタ２４１ｈの電流通路の一端が接続されている。このトランジスタ２４１ｈのゲートには信号ＢＬＣ１が供給され、このトランジスタ２４１ｈの電流通路の他端にはラッチ回路ＬＡＴ（Ｃ）が接続されている。このラッチ回路ＬＡＴ（Ｃ）は２つのクロックドインバータ回路２４１ｉ、２４１ｊにより構成されている。クロックドインバータ回路２４１ｉは信号ＳＥＮ１、ＳＥＮ１Ｂ（Ｂは反転信号を示す）により制御され、クロックドインバータ回路２４１ｊは信号ＬＡＴ１、ＬＡＴ１Ｂにより制御される。このラッチ回路ＬＡＴ（Ｃ）は、書き込みデータをラッチする。
【０１２６】
また、前記ラッチ回路ＬＡＴ（Ｃ）のノードＮＡは、Ｐチャネルトランジスタ２４１ｍを介して端子２４２ｄに接続されている。このトランジスタ２４１ｍのゲートには信号ＰＲＳＴＢ１が供給され、前記端子２４２ｄには電圧ＶＣＣが供給されている。このトランジスタ２４１ｍはデータの書き込み時、又は読み出し時にラッチ回路ＬＡＴ（Ｃ）のノードＮＡをハイレベルに設定する。
【０１２７】
さらに、前記ノードＮＡは並列接続されたトランジスタ２４１ｏとクロックドインバータ回路２４１ｐを介して、図示せぬ前記ロジック回路２３２および前記カラムセレクトゲートに接続される。トランジスタ２４１ｏのゲートには、信号ＳＰＢが供給され、クロックドインバータ回路２４１ｐは信号Ｏｓａｃ、Ｏｓａｃｂにより制御される。トランジスタ２４１ｏはデータの書き込み時に前記カラムセレクトゲートを介して供給されるデータをラッチ回路ＬＡＴ（Ｃ）に転送する。前記クロックドインバータ回路２４１ｐは、データの読み出し時にバッファとして動作する。また、前記ノードＮＥは前記Ｙセレクタを介して図示せぬ前記差動アンプ部２３１に接続される。
【０１２８】
図２５は差動アンプ部２３１とロジック回路２３２を示している。差動アンプ部２３１は、７個の差動アンプＤＦＡ１〜ＤＦＡ７を有している。本実施の形態では１つのセルに８値（３ビット）記憶しているため７個必要であるが、１つのセルに２n 値（ｎビット）記憶する場合は、（２n ）−１個必要である。前記差動アンプＤＦＡ１〜ＤＦＡ７の反転入力端には、前記データ記憶回路のノードＮＥから出力された信号がそれぞれ供給され、非反転入力端には、制御電圧発生回路２５３から所定の電圧が供給される。
【０１２９】
前記差動アンプＤＦＡ３の出力端にはインバータ回路２５１ａの入力端が接続されている。このインバータ回路２５１ａの出力信号、差動アンプＤＦＡ２の出力信号、および信号ＥＮ１はノア回路２５１ｂに供給されている。前記差動アンプＤＦＡ５の出力端にはインバータ回路２５１ｃの入力端が接続されている。このインバータ回路２５１ｃの出力信号、差動アンプＤＦＡ４の出力信号、および信号ＥＮ１、ＥＮ２はノア回路２５１ｄに供給されている。前記差動アンプＤＦＡ７の出力端にはインバータ回路２５１ｅの入力端が接続されている。このインバータ回路２５１ｅの出力信号、差動アンプＤＦＡ６の出力信号、および信号ＥＮ１、ＥＮ２はノア回路２５１ｆに供給されている。
【０１３０】
前記ロジック回路２３２において、ノア回路２５２ａには前記データ記憶回路の出力信号と信号ＶｅｒｉｆｙＢが供給されている。このノア回路２５２ａの出力信号、差動アンプＤＦＡ１の出力信号、およびノア回路２５１ｂ、２５１ｄ、２５１ｆの出力信号は、ノア回路２５２ｂに供給されている。このノア回路２５２ｂの出力信号は、ラッチ回路ＬＡＴ（Ｄ）に供給される。このラッチ回路ＬＡＴ（Ｄ）はクロックドインバータ回路２５２ｃ、２５２ｄにより構成されている、これらクロックドインバータ回路２５２ｃ、２５２ｄは信号ＰＤにより制御される。このラッチ回路ＬＡＴ（Ｄ）の出力信号はインバータ回路２５２ｅ、クロックドインバータ回路２５２ｆを介して前記Ｙセレクタ、データ記憶回路に接続される。
【０１３１】
図２６は、前記制御電圧発生回路７ｂにより発生される電圧と、その電圧の差動アンプＤＦＡ１〜ＤＦＡ７への供給位置を示している。
【０１３２】
図２７、図２８に示すように、メモリセルのデータとメモリセルの閾値を定義する。全ての閾値が負であることが分かる。ここで、メモリセルのデータ“０”〜“７”は、メモリセルの閾値の低いほうから高い方へと、定義されている。また、このメモリは、多値メモリであるため、１セルに３ビットのデータを記憶することができるためこの３ビットの切り替えはアドレス（第１ページ、第２ページ、第３ページ）によって行なう。例えば、アドレスに第１ページを指定すると、メモリセルのデータが“０”〜“３”であるとデータ“１”、メモリセルのデータが“４”〜“７”であるとデータ“０”となる。アドレスに第２ページを指定すると、メモリセルのデータが“０”、“１”、“４”、“５”であるとデータ“１”、メモリセルのデータが“２”、“３”、“６”、“７”であるとデータ“０”となる。アドレスに第３ページを指定すると、メモリセルのデータが“０”、“２”、“４”、“６”であるとデータ“１”、メモリセルのデータが“１”、“３”、“５”、“７”であるとデータ“０”となる。
【０１３３】
消去動作を行なうとメモリセルのデータは“０”になり、アドレスに第１、第２、第３ページの何れを指定しても読み出されるデータは“１”となる。
【０１３４】
（セル選択方法）
セル選択方法は、第１の実施の形態と同様であり、リード動作、プログラムベリファイ動作及びプログラム動作時では、図２２に示す、１セクタ（３ページ）が選択される。この３ページはアドレスによって切り替えられる。イレーズ動作は、図２２に示すブロック単位で行われる。イレーズベリファイ動作も、初めに、１本のビット線（ＢＬｉ）についてベリファイリード動作を行い、この結果が図２４に示すラッチ回路ＬＡＴ（Ｃ）に記憶される。次に、他方のビット線（ＢＬｉ＋１）についてベリファイ動作を行ない、この結果と前のベリファイリードの結果の和がラッチ回路ＬＡＴ（Ｃ）に記憶される。
【０１３５】
（プログラム及びプログラムベリファイ）
（第１ページのプログラム）
図２９はプログラム動作のシーケンスを示しており、各部の電位をこのように設定して、プログラム動作が実行される。すなわち、第１の実施の形態と同様に、先ず、書き込むデータを外部より入力し、全てのデータ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶する。外部よりデータ“１”（書き込みを行なわない）が入力されると、図２４に示すラッチ回路ＬＡＴ（Ｃ）のノードＮＡがハイレベルとされ、データ“０”（書き込みを行なう）が入力されるとノードＮＡがローレベルとされる。この記憶されたデータに従って、選択されているページの全てのセルについて書き込みが行なわれる。
【０１３６】
データ“０”の書き込みの時は、図２８に示すように、メモリセルのデータを“４”とする。データ“１”の書き込み時、メモリセルのデータは“０”のままである。
【０１３７】
（第１ページのベリファイ）
図３０はプログラムベリファイ及びリードの動作を示している。選択されたブロック内の非選択ワード線及びセレクト線ＳＧ１を電位Ｖｒｅａｄ７（＝Ｖｒｅａｄ＋Ｖｔｈ）、ソース線ＳＲＣを電位Ｖｒｅａｄ、選択ワード線を接地電位ＶＳＳに設定した後、セルのソース側のセレクト線ＳＧ２を電位Ｖｒｅａｄ７とする。各部の電位をこのように設定すると、図２８に示すように、セルの閾値電圧に応じて、ビット線に電位が出力される。このビット線の電位はＹセレクタ２３３を介して時分割で差動アンプ部２３１、及びロジック回路２３２に供給される。
【０１３８】
第１ページのベリファイは、図２５に示す７個の差動アンプのうち、差動アンプＤＦＡ１のみが使用される。このため、信号ＥＮ１がハイレベルとされ、ノア回路２５１ｂ、２５１ｄ、２５１ｆの出力信号がローレベルに固定される。
【０１３９】
次に、図２６、図３１、図３２に示すように、差動アンプＤＦＡ１の非反転入力端に、制御電圧発生回路２５３よりリファレンス電位として、リードの時の電位ｄより少し低い電位ｄ’が供給される。以後“’”はベリファイ電位を示し、リードの電位より若干低い値とする。ここで、Ｙセレクタ２３３を介して１つのデータ記憶回路の出力信号が差動アンプ部２３１及びロジック回路２３２に供給される。また、ベリファイ中であるため、ロジック回路２３２のノア回路２５２ａに供給される信号ＶｅｒｉｆｙＢはローレベルとされ、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶されているデータがロジック回路２３２に供給される。データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“１”がラッチされている（書き込みを行なわない）場合、クロックドインバータ回路２４１ｐにより反転されたデータ“０”が、図２５に示すノア回路２５２ａに供給される。このため、ラッチ回路ＬＡＴ（Ｄ）の出力端ＮＤには、差動アンプＤＦＡ１の出力信号にかかわらず、ハイレベルがラッチされる。
【０１４０】
一方、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“０”がラッチされている（書き込みを行なう）場合の動作は、図３３（ａ）に示すようになる。
【０１４１】
すなわち、ビット線に読み出された電位がリファレンス電位ｄ’より低い時（十分に書き込まれている時）は、差動アンプＤＦＡ１の出力信号はハイレベルとなるので、ラッチ回路ＬＡＴ（Ｄ）の出力端ＮＤにはハイレベルがラッチされる。
【０１４２】
ビット線に読み出された電位がリファレンス電位ｄ’より高い時（書き込み不十分）は、差動アンプＤＦＡ１の出力信号はローレベルとなるので、ラッチ回路ＬＡＴ（Ｄ）の出力端はローレベルにラッチされる。
【０１４３】
前記ラッチ回路ＬＡＴ（Ｄ）は、図２５、図３０に示す信号ＰＤをローレベルとすることで入力信号をラッチする。このラッチ回路ＬＡＴ（Ｄ）にラッチされたデータはインバータ回路２５２ｅ、クロックドインバータ回路２５２ｆを介して前記データ記憶回路へ供給される。次に、図２４のトランジスタ２４１ｏのゲートに供給される信号ＳＰＢが、図３０に示すように、ハイレベルとされると、このトランジスタ２４１ｏを介してロジック回路２３２からのデータがデータ記憶回路のラッチ回路ＬＡＴ（Ｃ）に供給される。このため、ラッチ回路ＬＡＴ（Ｃ）のデータがロジック回路２３２のラッチ回路ＬＡＴ（Ｄ）に記憶されているデータとされる。つまり、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“１”がラッチされている（書き込みを行なわない）時、ラッチ回路ＬＡＴ（Ｃ）のデータは“１”のままであり、ラッチ回路ＬＡＴ（Ｃ）にデータ“０”がラッチされている（書き込みを行なう）時で、セルの書き込みが不十分のときはデータ“０”のまま、書き込みが十分のときはデータが“１”に変えられる。
【０１４４】
次に、Ｙセレクタ２３３を切り替え、データ記憶回路の出力信号に対して上記一連の動作を順次行なう。この時、セルのデータはビット線に読み出されているため、Ｙセレクタ２３３を切り替え、差動アンプ部２３１とロジック回路２３２を動作するだけで良い。
【０１４５】
上記動作を繰り返し、全てのデータ記憶回路のデータがハイレベルとなるまでこのプログラム動作とベリファイ動作を繰り返す。
【０１４６】
（第２ページのプログラム）
第２ページのプログラムも第１ページのプログラムと同様に、先ず、外部より供給された次の書き込みデータを全てのデータ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶する。次に、このラッチ回路ＬＡＴ（Ｃ）に記憶されたデータに応じて選択されているページの全てのセルに書き込みを行なう。
【０１４７】
図２８に示すように、メモリセルのデータが“０”になっている（第１ページに書き込み動作を行なわなかった）場合、このセルに書き込みを行なうと、このセルのデータは“２”となり、書き込みを行なわないと、このメモリセルのデータは“０”のままである。メモリセルのデータが“４”になっている（第１ページに書き込み動作を行なった）場合、このセルに対して書き込みを行なうと、このセルのデータは“６”となり、書き込みを行なわないと、このセルのデータは“４”のままである。
【０１４８】
（第２ページのベリファイ）
先ず、第１ページのベリファイと同様に、ビット線に閾値電圧に応じた電位を出力させる。図２５に示すように、第２ページのベリファイは、７個の差動アンプのうち、差動アンプＤＦＡ１〜ＤＦＡ３を使用する。このため、信号ＥＮ２をハイレベルとして、ノア回路２５１ｄ、２５１ｆの出力信号をローレベルに固定する。次に、図２６、図３１、図３２に示すように、差動アンプＤＦＡ１〜ＤＦＡ３の非反転入力端にリファレンス電位としてｆ’、ｄ、ｂ’を供給する。この後、Ｙセレクタ２３３により選択された１つのデータ記憶回路が、この差動アンプＤＦＡ１〜ＤＦＡ３及びロジック回路２３２に接続される。また、ベリファイ中であるため、信号ＶｅｒｉｆｙＢはローレベルとされ、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶されているデータもロジック回路２３２に供給される。ラッチ回路ＬＡＴ（Ｃ）にデータ“１”がラッチされている（書き込みを行なわない）場合、ロジック回路２３２のラッチ回路ＬＡＴ（Ｄ）の出力端は、差動アンプＤＦＡ１〜ＤＦＡ３の出力にかかわらず、ハイレベルにラッチされる。
【０１４９】
一方、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“０”がラッチされている（書き込みを行なう）場合は、図３３（ｂ）に示すようになる。
【０１５０】
すなわち、ビット線に読み出された電位がリファレンス電位ｆ’より低い時（書き込み十分の時）は、差動アンプＤＦＡ１の出力信号がハイレベルとなる。このため、ラッチ回路ＬＡＴ（Ｄ）出力端にはハイレベルがラッチされる。
【０１５１】
ビット線に読み出された電位がリファレンス電位ｄより低く、ｆ’より高い時（書き込み不十分）は、差動アンプＤＦＡ３はハイレベルとなるが、差動アンプＤＦＡ２の出力もハイレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１５２】
ビット線に読み出された電位がリファレンス電位ｂ’より低くｄより高い時（書き込み十分）は、差動アンプＤＦＡ３の出力信号はハイレベルとなるので、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１５３】
ビット線に読み出された電位がリファレンス電位ｂ’より高い時（書き込み不十分）は、差動アンプＤＦＡ１〜ＤＦＡ３の出力信号が全てローレベルであるので、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１５４】
尚、ロジック回路２３２のラッチ回路ＬＡＴ（Ｄ）にデータをラッチした後の動作は、第１ページのベリファイと同様である。この結果、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に“１”がラッチされている（書き込みを行なわない）時は、データ“１”のままであり、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“０”がラッチされている（書き込みを行なう）時で、書き込み不十分のときはデータ“０”のまま、書き込み十分のときはデータ“１”に変わる。次に、Ｙセレクタを順次切り替えて、上記と同様の動作が行われる。
【０１５５】
このようにして、全てのデータ記憶回路のデータがハイレベルになるまでこのプログラム動作とベリファイ動作が繰り返される。
【０１５６】
（第３ページのプログラム）
第３ページのプログラムも第１、第２ページのプログラムと同様に、先ず、外部より供給される次の書き込みデータが全てのデータ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶される。次に、これらラッチ回路ＬＡＴ（Ｃ）に記憶されたデータに従って、選択されているページの全てのセルについて書き込みが行なわれる。
【０１５７】
図２８に示すように、メモリセルのデータが“０”になっている場合、このメモリセルに対して書き込みを行なうとメモリセルのデータが“１”となり、書き込みを行なわないとメモリセルのデータは“０”のままである。メモリセルのデータが“２”になっている場合、このメモリセルに対して書き込みを行なうとメモリセルのデータが“３”となり、書き込みを行なわないとメモリセルのデータは“２”のままである。メモリセルのデータが“４”になっている場合、このメモリセルに対して書き込みを行なうとメモリセルのデータが“５”となり、書き込みを行なわないとメモリセルのデータは“４”のままである。メモリセルのデータが“６”になっている場合、このメモリセルに対して書き込みを行なうとメモリセルのデータが“７”となり、書き込みを行なわないとメモリセルのデータは“６”のままである。
【０１５８】
（第３ページのベリファイ）
第１、第２ページのベリファイと同様に、ビット線にメモリセルの閾値電圧に応じた電位を出力させる。第３ページのベリファイは、図２５に示す全ての差動アンプＤＦＡ１〜ＤＦＡ７を使用する。この場合、差動アンプＤＦＡ１〜ＤＦＡ７の非反転入力端にはリファレンス電位として、図２６、図３１、図３２に示すｇ’、ｆ’、ｅ’、ｄ、ｃ’、ｂ、ａ’が供給される。ここで、Ｙセレクタ２３３により選択された１つのデータ記憶回路が、差動アンプ部２３１及びロジック回路２３２に接続される。また、ベリファイ中であるため、ＶｅｒｉｆｙＢはローレベルとなり、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶されているデータがロジック回路２３２に供給される。データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“１”がラッチされている（書き込みを行なわない）場合、前述したように、ラッチ回路ＬＡＴ（Ｄ）の出力端には、差動アンプＤＦＡ１〜ＤＦＡ７の出力信号にかかわらず、ハイレベルがラッチされる。
【０１５９】
一方、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“０”がラッチされている（書き込みを行なう）場合は、図３３（ｃ）に示すようになる。
【０１６０】
すなわち、ビット線に読み出された電位がリファレンス電位ｇ’より低い時（書き込み十分の時）、差動アンプＤＦＡ１の出力信号がハイレベルとなる。このため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１６１】
ビット線に読み出された電位がリファレンス電位がｆより低く、ｇ’より高い時（書き込み不十分の時）、差動アンプＤＦＡ３の出力信号はハイレベルとなるが、差動アンプＤＦＡ２の出力信号もハイレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１６２】
ビット線に読み出された電位がリファレンス電位ｅ’より低く、ｆより高い時（書き込み十分の時）、差動アンプＤＦＡ３の出力信号はハイレベル、差動アンプＤＦＡ２の出力信号はローレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１６３】
ビット線に読み出された電位がリファレンス電位ｄより低く、ｅ’より高い時（書き込み不十分の時）、差動アンプＤＦＡ５の出力信号はハイレベルとなるが、差動アンプＤＦＡ４の出力信号もハイレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１６４】
ビット線に読み出された電位がリファレンス電位ｃ’より低く、ｄより高い時（書き込み十分の時）、差動アンプＤＦＡ５の出力信号はハイレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１６５】
ビット線に読み出された電位がリファレンス電位ｂより低く、ｃ’より高い時（書き込み不十分の時）、差動アンプＤＦＡ７の出力信号はハイレベルとなるが、差動アンプＤＦＡ６の出力信号もハイレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１６６】
ビット線に読み出された電位がリファレンス電位ａ’より低く、ｂより高い時（書き込み十分の時）、差動アンプＤＦＡ７の出力信号はハイレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）にはハイレベルがラッチされる。
【０１６７】
ビット線に読み出された電位がリファレンス電位ａ’より高い時（書き込み不十分の時）、差動アンプＤＦＡ１〜ＤＦＡ７の出力信号が全てローレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１６８】
尚、ロジック回路のラッチ回路ＬＴ（Ｄ）にデータをラッチした後の動作は、第１、第２ページのベリファイと同様である。この結果、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）にデータ“１”がラッチされている（書き込みを行なわない）時は、データ“１”のままであり、ラッチ回路ＬＡＴ（Ｃ）にデータ“０”がラッチされている（書き込みを行なう）時で、書き込み不十分のときはデータ“０”のまま、書き込み十分のときはラッチ回路ＬＡＴ（Ｃ）のデータが“１”に変わる。次に、Ｙセレクタ２３３を順次切り替えて、上記と同様の動作が繰り返される。
【０１６９】
このようにして、全てのデータ記憶回路のデータがハイレベルになるまでこのプログラム動作とベリファイ動作が繰り返される。
【０１７０】
（リード動作）
（第１ページのリード）
リード動作において、先ず、プログラムベリファイと同様に、ビット線にメモリセルの閾値電圧に応じた電位を出力させる。第１ページのリードは第１ページのベリファイと同様に、図２５に示す７個の差動アンプのうち、差動アンプＤＦＡ１のみを使用する。このため、信号ＥＮ１はハイレベルとされ、ノア回路２５１ｂ、２５１ｄ、２５１ｆの出力信がをローレベルに固定される。次に、図２６、図３１、図３２に示すように、差動アンプＤＦＡ１の非反転入力端にリファレンス電位としてｄを供給する。ここで、Ｙセレクタ２３３により選択された１つのデータ記憶回路が差動アンプ部２３１及びロジック回路２３２に接続される。リード中であるため、ＶｅｒｉｆｙＢはハイレベルとされ、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶されているデータ（不定）はロジック回路２３２に供給されない。
【０１７１】
図３４（ａ）は第１ページのリード動作を示している。ビット線に読み出された電位がリファレンス電位ｄより低い時（メモリセルのデータが“４”、“５”、“６”、“７”の時）、差動アンプＤＦＡ１の出力信号はハイレベルとなる。このため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１７２】
ビット線に読み出された電位がリファレンス電位ｄ’より高い時（メモリセルのデータが“０”、“１”、“２”、“３”の時）、差動アンプＤＦＡ１の出力信号はローレベルとなる。このため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１７３】
ラッチ回路ＬＡＴ（Ｄ）にラッチされたデータはデータ記憶回路へ供給される。この時、図３０に示すように、信号ＳＰＢがハイレベルとされ、図２４に示すトランジスタ２４１ｏを介して、ラッチ回路ＬＡＴ（Ｄ）からのデータがラッチ回路ＬＡＴ（Ｃ）に供給される。次に、Ｙセレクタ２３３を切り替え、上記一連の動作を順次行なう。この時、セルのデータはビット線に読み出されているため、Ｙセレクタ２３３によりデータ記憶回路を切り替え、差動アンプ部２３１とロジック回路２３２を動作するだけで良い。このようにしてＹセレクタ２３３を切り替えて同様の動作を行うことにより、全てのデータ記憶回路に第１ページ時のデータが記憶される。
【０１７４】
図２８に示すように、メモリセルのデータとメモリセルの閾値を定義しているため、ラッチ回路ＬＡＴ（Ｃ）にはメモリセルのデータが“０”、“１”、“２”、“３”であるとローレベルが記憶され、“４”、“５”、“６”、“７”であるとハイレベルが記憶される。しかし、ラッチ回路ＬＡＴ（Ｃ）に記憶されたデータはクロックドインバータ回路２４１ｐを介してデータ入出力バッファ４に出力される。このため、データ入出力バッファ４にはメモリセルのデータが“０”、“１”、“２”、“３”であるとデータ“１”が供給され、メモリセルのデータが“４”、“５”、“６”、“７”であるとデータ“０”が供給される。
【０１７５】
（第２ページのリード）
第２ページのリードは第１ページのリードと同様に、先ず、ビット線にメモリセルの閾値電圧に応じた電位を出力させる。第２ページのベリファイは、７個の差動アンプのうち、差動アンプＤＦＡ１〜ＤＦＡ３を使用する。このため、信号ＥＮ２をハイレベルとすることにより、ノア回路２５１ｂ、２５１ｄ、２５１ｆの出力信号をローレベルに固定する。次に、図２６、図３１、図３２に示すように、差動アンプの非反転入力端にリファレンスとしてｆ、ｂ、ｄを供給する。ここで、Ｙセレクタ２３３により選択された１つのデータ記憶回路が、差動アンプ部２３１及びロジック回路２３２に接続される。リード中であるため、信号ＶｅｒｉｆｙＢはハイレベルとされ、ラッチ回路ＬＡＴ（Ｃ）に記憶されたデータはロジック回路２３２に供給されない。
【０１７６】
図３４（ｂ）は第２ページのリード動作を示している。ビット線に読み出された電位がリファレンス電位ｆより低い時（メモリセルのデータが“６”、“７”の時）、差動アンプＤＦＡ１の出力信号がハイレベルとなる。このため、ロジック回路２３２のラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１７７】
ビット線に読み出された電位がリファレンス電位ｄより低く、ｆより高い時（メモリセルのデータが“４”、“５”の時）、差動アンプＤＦＡ３の出力信号はハイレベルとなる。また、差動アンプＤＦＡ２の出力信号もハイレベルであるのでラッチ回路ＬＡＴ（Ｄ）にはローレベルがラッチされる。
【０１７８】
ビット線に読み出された電位がリファレンス電位ｂより低く、ｄより高い時（メモリセルのデータが“２”、“３”の時）、差動アンプＤＦＡ３の出力信号はハイレベルとなる。このため、ラッチ回路ＬＡＴ（Ｄ）にはハイレベルがラッチされる。
【０１７９】
ビット線に読み出された電位がリファレンス電位ｂより高い時（メモリセルのデータが“０”、“１”の時）、差動アンプＤＦＡ１〜ＤＦＡ７の出力信号が全てローレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１８０】
ロジック回路２３２のラッチ回路ＬＡＴ（Ｄ）にデータをラッチした後の動作は、第１ページのリードと同様である。この結果、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）には、メモリセルのデータが“０”、“１”、“４”、“５”であると、ローレベルが記憶され、メモリセルのデータが“２”、“３”、“６”、“７”であるとハイレベルが記憶される。ラッチ回路ＬＡＴ（Ｃ）に記憶されたデータはクロックドインバータ回路２４１ｐを介してデータ入出力バッファ４に供給される。このため、データ入出力バッファ４にはメモリセルのデータが“０”、“１”、“４”、“５”であるとデータ“１”が供給され、メモリセルのデータが“２”、“３”、“６”、“７”であるとデータ“０”が供給される。
【０１８１】
（第３ページのリード）
第３ページのリードは、第１、第２ページのリードと同様に、先ず、ビット線にメモリセルの閾値電圧に応じた電位を出力させる。第３ページのベリファイは、７個の差動アンプ全てを使用する。各差動アンプＤＦＡ１〜ＤＦＡ７の非反転入力端にはリファレンス電位としてｇ、ｆ、ｅ、ｄ、ｃ、ｂ、ａを供給する。ここで、Ｙセレクタ２３３により選択された１つのデータ記憶回路が、差動アンプ部２３１及びロジック回路２３２に接続される。リード中であるため、ＶｅｒｉｆｙＢはハイレベルとされ、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶されたデータ（不定）はロジック回路２３２に供給されない。
【０１８２】
図３４（ｃ）は第３ページのリード動作を示している。ビット線に読み出された電位がリファレンス電位ｇより低い時（メモリセルのデータが“７”の時）、差動アンプＤＦＡ１の出力信号がハイレベルとなる。このため、ロジック回路２３２のラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１８３】
ビット線に読み出された電位がリファレンス電位ｆより低く、ｇより高い時（メモリセルのデータが“６”の時）、差動アンプＤＦＡ３の出力信号はハイレベルとなるが、差動アンプＤＦＡ２の出力信号もハイレベルであるのでラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１８４】
ビット線に読み出された電位がリファレンス電位ｅより低く、ｆより高い時（メモリセルのデータが“５”）、差動アンプＤＦＡ３の出力信号はハイレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１８５】
ビット線に読み出された電位がリファレンス電位ｄより低く、ｅより高い時（メモリセルのデータが“４”の時）、差動アンプＤＦＡ５の出力信号はハイレベルとなるが、差動アンプＤＦＡ４の出力信号もハイレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１８６】
ビット線に読み出された電位がリファレンス電位ｃより低く、ｄより高い時（メモリセルのデータが“３”の時）、差動アンプＤＦＡ５の出力信号はハイレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１８７】
ビット線に読み出された電位がリファレンス電位ｂより低く、ｃより高い時（メモリセルのデータが“２”の時）、差動アンプＤＦＡ７の出力信号はハイレベルとなるが、差動アンプＤＦＡ６の出力信号もハイレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１８８】
ビット線に読み出された電位がリファレンス電位ａより低く、ｂより高い時（メモリセルのデータが“１”の時）、差動アンプＤＦＡ７はハイレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１８９】
ビット線に読み出された電位がリファレンス電位ａより高い時（メモリセルのデータが“０”の時）、差動アンプＤＦＡ１〜ＤＦＡ７の出力信号が全てローレベルであるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１９０】
ロジック回路のラッチ回路ＬＡＴ（Ｄ）にデータをラッチした後の動作は、第１、第２ページのリードと同様である。この結果、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）には、メモリセルのデータが“０”、“２”、“４”、“６”であるとローレベルが記憶され、メモリセルのデータが“１”、“３”、“５”、“７”であるとハイレベルが記憶される。ラッチ回路ＬＡＴ（Ｃ）に記憶されたデータはクロックドインバータ回路２４１ｐを介してデータ入出力バッファ４に供給される。このため、データ入出力バッファ４にはメモリセルのデータが“０”、“２”、“４”、“６”であるとデータ“１”が供給され、メモリセルのデータが“１”、“３”、“５”、“７”であるとデータ“０”が供給される。
【０１９１】
（イレーズ及びイレーズベリファイ動作）
（イレーズ）
イレーズ動作は、第１の実施の形態と同様である。先ず、アドレスを指定し、図２２に示す１つのブロックを選択する。
【０１９２】
図３５に示すシーケンスに従ってイレーズ動作を行なうと、メモリセルのデータは全て“０”となり、第１ページ、第２ページ、第３ページ何れでリードを行なってもデータ“１”が出力される。
【０１９３】
（イレーズベリファイ）
イレーズベリファイ動作は、１回の動作で、データ記憶回路に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち１本のビット線（ＢＬｉ）についてイレーズベリファイ動作を行い、この結果を図２４に示す、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶する。このイレーズベリファイ動作は、リード動作と殆ど同様であるが、１つのブロック内の全てのセルについて行なうため、選択されているブロック内の全てのワード線を選択状態、すなわち、接地電位ＶＳＳとする。
【０１９４】
次に、図３０に示すように、プログラムベリファイ及びリードと同様に、ビット線にメモリセルの閾値電圧に応じた電位を出力させる。イレーズベリファイは第１ページのベリファイ及びリードと同様に、図２５に示す７個の差動アンプのうち、差動アンプＤＦＡ１のみを使用する。このため、信号ＥＮ１をハイレベルとすることにより、ノア回路２５１ｂ、２５１ｄ、２５１ｆの出力信号をローレベルに固定する。
【０１９５】
次に、図３１、図３２に示すように、差動アンプＤＦＡ１の非反転入力端にリファレンス電位としてイレーズベリファイ電位（４．０Ｖ）を供給する。ここで、Ｙセレクタにより選択された１つのデータ記憶回路が差動アンプ部２３１及びロジック回路２３２に接続される。１回目のイレーズベリファイにおいて、ＶｅｒｉｆｙＢはハイレベルとされ、データ記憶回路のラッチ回路ＬＡＴ（Ｃ）に記憶されているデータ（不定）はロジック回路２３２に供給されない。
【０１９６】
ビット線に読み出された電位がリファレンス電位より低い時（イレーズが十分に行われていない時）、差動アンプＤＦＡ１の出力信号はハイレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはハイレベルがラッチされる。
【０１９７】
ビット線に読み出された電位がリファレンス電位より高い時（イレーズが十分に行われている時）、差動アンプＤＦＡ１の出力信号はローレベルとなるため、ラッチ回路ＬＡＴ（Ｄ）の出力端にはローレベルがラッチされる。
【０１９８】
ロジック回路２３２のラッチ回路ＬＡＴ（Ｄ）にラッチされたデータは、図２４のトランジスタ２４１ｏを介してデータ記憶回路のラッチ回路ＬＡＴ（Ｃ）に転送され記憶される。次に、セレクト信号ＹＡ０〜ＹＡ７に応じてＹセレクタ２３３を切り替えて上記一連の動作を行なう。この時、セルのデータは既にビット線に読み出されているため、Ｙセレクタ２３３を切り替え、差動アンプ部２３１とロジック回路２３２を動作するだけで良い。このようにしてＹセレクタ２３３を切り替えて同じ動作を行い、全てのデータ記憶回路に第１ページのセルのデータが記憶される。
【０１９９】
図２８に示すように、メモリセルのデータとメモリセルの閾値電圧を定義しているため、ラッチ回路ＬＡＴ（Ｃ）にはイレーズが十分に行なわれているとローレベルが記憶され、イレーズが不十分だとハイレベルが記憶される。
【０２００】
上記動作の後、ビット線（ＢＬｉ＋１）について、上記と全く同じ動作を行なう。この時、ロジック回路２３２のＶｅｒｉｆｙＢをローレベルとする。このようとすると、前記１回目のイレーズベリファイにおいて、ベリファイが不良であると、ラッチ回路ＬＡＴ（Ｃ）のノードＮＡがハイレベルとなっているため、２回目のイレーズベリファイの結果にかかわらずラッチ回路ＬＡＴ（Ｃ）にはハイレベルがラッチされる。つまり、ラッチ回路ＬＡＴ（Ｃ）にハイレベルがラッチされるのは、ビット線（ＢＬｉ、ＢＬｉ＋１）の何れかがイレーズベリファイにおいて、不良である時である。したがって、全てのラッチ回路ＬＡＴ（Ｃ）のデータがローレベルになるまで、イレーズ、イレーズベリファイ動作が繰り返される。
【０２０１】
上記第２の実施の形態においても、第１の実施の形態と同様に、記憶するデータの数が増加した場合においてもラッチ回路の増加を防止できる。しかも、差動アンプ部２３１及びロジック回路２３２は、複数のデータ記憶回路につき１つずつ配置し、Ｙセレクタにより時分割で、データ記憶回路に接続している。したがって、面積の大きな差動アンプ部２３１及びロジック回路２３２の数を削減できるため、チップサイズの増大を抑制することができる。
【０２０２】
また、第１の実施の形態において、第ｎページのプログラムベリファイ及びリード動作の際、ワード線をハイレベルとしてセルのデータを読みラッチする動作を、２n 回行なわなくてはならない。しかし、第２の実施の形態の場合、差動アンプを用いて一括してメモリセルの閾値電圧を判断しているため、ｎが大きくなっても、差動アンプの数を増やすだけで、プログラムベリファイ及びリード時間が増大することを防止できる。
【０２０３】
＜第３の実施の形態＞
第１の実施の形態では、第ｎページ時のリード動作を行なう際、（２ｎ−１）回ワード線のレベルを換えてリード動作を行なう必要がある。これに対して、第３の実施の形態はリード動作回数を低減可能としている。すなわち、第３の実施の形態では、第（ｎ−１）ページ書き込み後、第ｎページ書き込みを行なう場合、外部から入力されれるデータをそのまま書き込まず、この外部より入力されるデータと内部に既に書き込まれているデータとの間で、論理を取った値を書き込む。このようにして記憶すると第ｎページ時のリード動作では、（２ｎ−１）回ワード線のレベルを換えてリード動作を行なう必要がなく、（２ｎ／２）回で読み出すことが可能となる。例えば８値の例の場合、第３ページのリードは第１の実施の形態では７回リード動作を行なっているが、第３の実施の形態では、４回で読み出しが可能となる。
【０２０４】
以下、第３の実施の形態について説明する。第３の実施の形態において、回路構成は第１の実施の形態と全く同じである。
【０２０５】
図７、図３６に示すように、メモリセルのデータとメモリセルの閾値を定義する。ここで、メモリセルのデータ“０”〜“７”は、メモリセルの閾値の低いほうから高い方へと定義されている。また、本メモリは、多値メモリであるため、１セルに３ビットのデータを記憶することができる。この３ビットの切り替えはアドレス（第１ページ、第２ページ、第３ページ）によって行なう。このように定義すると、アドレスに第１ページを指定すると、メモリセルのデータが“０”〜“３”であると“１”データ、メモリセルのデータが“４”〜“７”であると“０”データとなる。次にアドレスに第２ページを指定すると、メモリセルのデータが“０”，“１”，“６”，“７”であると“１”データ、メモリセルのデータが“２”〜“５”であると“０”データとなる。したがって、第２ページでは、メモリセルのデータが“１”以下か、“２”以上かの判断とメモリセルのデータが“５”以下か、“６”以上かの判断の２回の動作で判断することができる。アドレスに第３ページを指定すると、メモリセルのデータが“０”，“３”，“４”，“７”であると“１”データ、メモリセルのデータが“１”，“２”，“５”，“６”であると“０”データとなる。したがって、第３ページでは、メモリセルのデータが“０”以下か、“１”以上かの判断、メモリセルのデータが“２”以下か、“３”以上かの判断、メモリセルのデータが“４”以下か、“５”以上かの判断、メモリセルのデータが“６”以下か、“７”以上かの判断、の４回の動作で判断することができる。
【０２０６】
消去動作を行なうとメモリセルのデータは“０”になり、アドレスに第１、第２、第３ページの何れを指定しても読み出されるデータは“１”となる。
【０２０７】
（セル選択方法）
リード動作、プログラムベリファイ動作及びプログラム動作時では、図３に示すデータ記憶回路３１０〜３１２１１１に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち外部より指定されたアドレスにより１本のビット線が選択される。さらに、外部アドレスにより、１本のワード線が選択され、図３に点線で示す３ページが選択される。この３ページの切り替えはアドレスによって行われる。
【０２０８】
イレーズ動作は、前述したように、ブロック単位で行う。また、データ記憶回路３１０〜３１２１１１に接続されている２本のビット線（ＢＬi、ＢＬｉ＋１）について同時に行う。
【０２０９】
イレーズベリファイ動作は、１回の動作で、データ記憶回路３１０〜３１２１１１に接続されている２本のビット線（ＢＬｉ、ＢＬｉ＋１）のうち１本のビット線（ＢＬｉ）について行われ、この結果は図６のラッチ回路ＬＡＴ（Ａ）に記憶される。次に、他方のビット線（ＢＬｉ＋１）についてベリファイ動作が行なわれ、この結果と前のベリファイリードの結果の和がラッチ回路ＬＡＴ（Ａ）に記憶される。
【０２１０】
（プログラム及びプログラムベリファイ）
（第１ページのプログラム）
プログラム動作は、先ずアドレスを指定し、図３に示す３ページを選択する。このメモリは、この３ページのうち、第１ページ、第２ページ、第３ページの順でしか、プログラム動作をできない。したがって、初めにアドレスに応じて第１ページを選択する。
【０２１１】
次に、書き込むべきデータ（読み出されるデータ）を、外部より入力し全てのデータ記憶回路３１０〜３１２１１１内のラッチ回路ＬＡＴ（Ａ）に記憶する。第１ページのプログラムは第１の実施の形態と全く同じであり、ラッチ回路ＬＡＴ（Ａ）のデータが“１”であると書き込みを行なわず、メモリセルのデータを“０”のままとし、ラッチ回路ＬＡＴ（Ａ）のデータが“０”であると書き込みを行ない、メモリセルのデータを“４”にする。
【０２１２】
（第２ページのプログラム）
第２ページのプログラムも第１ページのプログラムと全く同様に、次に書き込むべきデータ（読み出されるデータ）を、外部より入力し、全てのデータ記憶回路３１０〜３１２１１１のラッチ回路ＬＡＴ（Ａ）に記憶する。次に、第１ページのプログラムでメモリセルのデータが“０”となっている場合で、外部より入力されたデータが“１”である場合は、書き込みを行なわず、外部より入力されたデータが“０”である場合、書き込みを行ないメモリセルのデータを“２”にする。第１ページのプログラムでメモリセルのデータが“４”になっている場合で、外部より入力されたデータが“１”である場合は、書き込みを行いメモリセルのデータを“６”とし、外部より入力されたデータが“０”である場合、書き込みを行なわずメモリセルのデータを“４”のままにしなくてはならない。しかし、ラッチ回路ＬＡＴ（Ａ）のデータが“０”であると書き込みが行われてしまうため、メモリセルの状態が“４”である場合、ラッチ回路ＬＡＴ（Ａ）に記憶されているデータの“１”と“０”を反転させなくてはならない。
【０２１３】
（内部入力データ変換）
第１ページのプログラムでメモリセルのデータが“０”か、メモリルのデータが“４”になっているかを調べるため、選択されているワード線に図７に示すリード時の電位ｄを印加してリード動作を行い、この結果をラッチ回路ＬＡＴ（Ｂ）に記憶させる。ここで、ラッチ回路ＬＡＴ（Ｂ）には、メモリセルのデータが“０”の場合ローレベルが記憶され、メモリセルのデータが“４”の場合、ハイレベルが記憶される。
【０２１４】
ここで、ビット線はラッチ回路ＬＡＴ（Ｂ）と同じデータのレベルである。図６に示す電圧ＶＲＥＧを接地電位ＶＳＳとし、信号ＶＲＦＹ１をハイレベルにすると、ラッチ回路ＬＡＴ（Ａ）がハイレベルになっている時、ビット線のデータがローレベルになる。次に、信号ＢＬＳＡを接地電位ＶＳＳとしてビット線からデータ記憶回路を切離す。電圧ＶＲＥＧを接地電位ＶＳＳ、信号ＶＲＦＹ２及び信号ＢＬＣ１をハイレベルにすると、ラッチ回路ＬＡＴ（Ｂ）にハイレベルが記憶されている場合、ラッチ回路ＬＡＴ（Ａ）のデータは強制的にローレベルとなる。再び信号ＢＬＳＡをハイレベルにしてビット線をデータ記憶回路に接続し、電圧ＶＲＥＧをハイレベル、信号ＶＲＦＹ１をハイレベルにすると、ラッチ回路ＬＡＴ（Ａ）がハイレベルの時、ビット線がハイレベルになる。ここで、ビット線のデータをラッチ回路ＬＡＴ（Ａ）に取り込む。この結果、図３７に示すように、メモリセルのデータが“０”であり、外部より“１”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はハイレベルとなり、外部より“０”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はローレベルとなる。メモリセルのデータが“４”であり、外部より“１”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はローレベルとなり、外部より“０”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はハイレベルとなり、この状態で書き込みを行なうとメモリセルにデータ“２”，“６”がそれぞれ書き込まれる。この後の、プログラム及びベリファイ方法は、第１の実施の形態と全く同じである。
【０２１５】
（第３ページのプログラム）
第３ページのプログラムも第１ページ、第２ページのプログラムと全く同様に、次に、書き込むべきデータ（読み出されるデータ）を、外部より入力し、全てのデータ記憶回路３１０〜３１２１１２のラッチ回路ＬＡＴ（Ａ）に記憶する。次に、第１、２ページのプログラムでメモリセルのデータが“０”になっている場合で、外部より入力されたデータが“１”である場合、書き込みを行なわず、外部より入力されたデータが“０”である場合、書き込みを行ないメモリセルのデータを“１”とする。第１、２ページのプログラムでメモリセルのデータが“２”になっている場合で、外部より入力されたデータが“１”である場合、書き込みを行いメモリセルのデータを“３”にし、外部より入力されたデータが“０”である場合、書き込みを行なわずメモリセルのデータを“２”のままにしなくてはならない。
【０２１６】
第１及び２ページのプログラムにおいて、モリセルのデータが“４”になっている場合で、外部より入力されれたデータが“１”である場合、書き込みを行なわない。また、外部より入力されたデータが“０”である場合、書き込みを行ないメモリセルのデータを“５”にする。第１及び２ページのプログラムでメモリセルのデータが“６”になっている場合で、外部より入力されたデータが“１”である場合、書き込みを行いメモリセルのデータを“７”とし、外部より入力されたデータが“０”である場合、書き込みを行なわずメモリセルのデータを“６”のままにしなくてはならない。しかし、ラッチ回路ＬＡＴ（Ａ）のデータが“０”であると書き込みが行われてしまう。このため、メモリセルの状態が“２”，“６”にある場合、ラッチ回路ＬＡＴ（Ａ）に記憶されているデータの“１”と“０”を反転させなくてはならない。
【０２１７】
（内部入力データ変換）
第１及び２ページのプログラムでメモリセルのデータがどの状態となっているかを調べるため、選択されているワード線に図７に示すリード時の電位ｆを印加してリード動作を行い。その結果をラッチ回路ＬＡＴ（Ｂ）に記憶する。ここで、ラッチ回路ＬＡＴ（Ｂ）には、メモリセルのデータが“０”，“２”，“４”の場合ローレベルが記憶され、メモリセルのデータが“６”の場合ハイレベルが記憶される。次に、ワード線にリード時の電位ｄを与えリード動作を行い、ビット線にデータを読み出す。ここで、ラッチ回路ＬＡＴ（Ｂ）がハイレベルの場合、強制的に、ビット線をローレベルとし、この結果をラッチ回路ＬＡＴ（Ｂ）に記憶させる。この場合、ラッチ回路ＬＡＴ（Ｂ）には、メモリセルのデータが“０”，“２”，“６”の場合ローレベルが記憶され、メモリセルのデータが“４”の場合ハイレベルが記憶される。次に、ワード線にリードの時の電位ｂを印加してリード動作を行い、ビット線にデータを読み出す。ここで、ラッチ回路ＬＡＴ（Ｂ）がハイレベルの場合、強制的にビット線をローレベルとし、この結果をラッチ回路ＬＡＴ（Ｂ）に記憶させる。この場合、ラッチ回路ＬＡＴ（Ｂ）には、メモリセルのデータが“０”，“４”の場合ローレベルが記憶され、メモリセルのデータが“２”，“６”の場合ハイレベルが記憶される。
【０２１８】
ここで、ビット線にはラッチ回路ＬＡＴ（Ｂ）と同じデータのレベルである。図６に示す電圧ＶＲＥＧを接地電位ＶＳＳとし、信号ＶＲＦＹ１をハイレベルにすると、ラッチ回路ＬＡＴ（Ａ）がハイレベルになっている時、ビット線のデータがローレベルとなる。次に、信号ＢＬＳＡを接地電位ＶＳＳとしてビット線からデータ記憶回路３１０〜３１２１１２を切離す。電圧ＶＲＥＧを接地電位ＶＳＳ、信号ＶＲＦＹ２をＢＬＣ１をハイレベルにするとラッチ回路ＬＡＴ（Ｂ）にハイレベルが記憶されている場合、ラッチ回路ＬＡＴ（Ａ）のデータは強制的にローレベルとなる。再び信号ＢＬＳＡをハイレベルにしてビット線をデータ記憶回路３１０〜３１２１１２に接続し、電圧ＶＲＥＧをハイレベル、信号ＶＲＦＹ１をハイレベルにすると、ラッチ回路ＬＡＴ（Ａ）がハイレベルの時、ビット線がハイレベルになる。ここで、ビット線のデータをラッチ回路ＬＡＴ（Ａ）に取り込む。
【０２１９】
この結果、図３８に示すように、メモリセルのデータが“０”であり、外部より“１”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はハイレベルとなり、外部より“０”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はローレベルとなる。メモリセルのデータが“２”にあり、外部より“１”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はローレベルとなり、外部より“０”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はハイレベルとなる。メモリセルのデータが“４”であり、外部より“１”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はハイレベルとなり、外部より“０”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はローレベルとなる。メモリセルのデータが“６”であり、外部より“１”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はローレベルとなり、外部より“０”データが入力された場合、ラッチ回路ＬＡＴ（Ａ）はハイレベルとなる。この状態で書き込みを行なうと、メモリセルのデータが“１”，“３”，“５”，“７”にそれぞれ書き込まれる。ラッチ回路ＬＡＴ（Ａ）のデータが確定した後の、プログラム及びベリファイ方法は、第１の実施の形態と全く同じである。
【０２２０】
（リード動作）
（第１ページのリード）
図３９（ａ）は第１ページのリード動作を示している。図３６に示すように、第１ページのリードで出力されるデータが“０”の場合、メモリセルのデータは“４”〜“７”の範囲にあり、出力されるデータが“１”の場合、メモリセルのデータは“０”〜“３”の範囲に存在する。このため、第１ページのリードは、選択されているワード線に、図７に示すリード時の電位ｄを印加する。
【０２２１】
次に、選択されているブロック内の非選択ワード線及びセレクト線ＳＧ１に電位Ｖｒｅａｄ（４．５Ｖ）を供給し、図６に示すデータ記憶回路の信号ｂｉａｓをハイレベルとして、ビット線をプリチャージした後、セルのソース側のセレクト線ＳＧ２をハイレベルにする。閾値が図７に示す電位ｄより高い時、セルがオフするためビット線はハイレベルのままであり、閾値が電位ｄに達していない場合セルがオンするため、ビット線は接地電位ＶＳＳとなる。
【０２２２】
図３９（ａ）に示すように、メモリセルのデータとメモリセルの閾値を定義しているため、ビット線の電位は、メモリセルのデータが“０”，“１”，“２”，“３”であるとローレベル、“４”，“５”，“６”，“７”であるとハイレベルとなる。
【０２２３】
次に、これらビット線の電位をラッチ回路ＬＡＴ（Ａ）に読み込むと、ラッチ回路ＬＡＴ（Ａ）はメモリセルのデータが“０”，“１”，“２”，“３”であるとローレベル、“４”，“５”，“６”，“７”であるとハイレベルになる。しかし、ラッチ回路ＬＡＴ（Ａ）のデータを出力する時、図６に示すクロックドインバータ回路６１ｐの信号Ｏｓａｃ、Ｏｓａｃｂがイネーブルとなるためデータ記憶回路の出力端にはメモリセルのデータが“０”，“１”，“２”，“３”であると“１”データが出力され、“４”，“５”，“６”，“７”であると“０”データが出力される。以上は２値、第１の実施の形態の場合と全く同じ動作である。
【０２２４】
（第２ページのリード）
図３９（ｂ）は第２ページのリード動作を示している。図３６に示すように、第２ページのリードで出力されるデータが“０”の場合、メモリセルのデータは“２”，“３”，“４”，“５”の範囲にあり、出力されるデータが“１”の場合、メモリセルのデータは“０”，“１”，“６”，“７”の範囲に存在する。
【０２２５】
先ず、メモリセルのデータが“０”〜“５”にあるか、“６”，“７”にあるかを調べる。このため、ワード線の電位を図７に示すｆとして、リード動作を実行し、この結果を、ラッチ回路ＬＡＴ（Ａ）に記憶させる。ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“６”，“７”の場合だけである。また、ラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”，“１”，“２”，“３”，“４”，“５”の場合である。
【０２２６】
次に、メモリセルのデータが“０”〜“３”にあるか、“４”〜“７”にあるかを調べる。このため、ワード線の電位を図７に示すｃとし、リード動作を行なう。ここで、ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている場合、ビット線を強制的にローレベルにする。この結果を、ラッチ回路ＬＡＴ（Ａ）に記憶させる。ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“２”〜“５”の場合である。また、ラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”，“１”，“６”，“７”の場合である。しかし、ラッチ回路ＬＡＴ（Ａ）のデータ出力する時、図６に示すクロックドインバータ回路６１ｐの信号Ｏｓａｃ、Ｏｓａｃｂがイネーブルとなる。このため、出力端にはメモリセルのデータが“０”，“１”，“６”，“７”であると“１”データが出力され、“２”〜“５”であると“０”データが出力される。
【０２２７】
上記第１の実施の形態では、第２ページのリード時に、リード動作を３回行なっていた。これに対して、第３の実施の形態では第２ページのリード動作が２回で終了する。したがって、第２ページのリード動作を高速化できる。
【０２２８】
（第３ページのリード）
図４０は第３ページのリード動作を示している。図３６に示すように、第３ページのリードで出力されるデータが“０”の場合、メモリセルのデータは“１”，“２”，“５”，“６”の範囲にあり、出力されるデータが“１”の場合、メモリセルのデータは“０”，“３”，“４”，“７”の範囲に存在する。
【０２２９】
先ず、メモリセルのデータが“０”〜“６”にあるか、“７”にあるかを調べる。このため、ワード線の電位を図７に示す電位ｇとしてリード動作を実行し、この結果を、ラッチ回路ＬＡＴ（Ａ）に記憶させる。ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“７”の場合だけである。また、ラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”，“１”，“２”，“３”，“４”，“５”，“６”である場合である。
【０２３０】
次に、メモリセルのデータが“０”〜“４”にあるか、“５”〜“７”にあるかを調べる。このため、ワード線の電位を図７に示す電位ｅとしてリード動作を行なう。ここで、ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている場合、ビット線を強制的にローレベルとし、この結果をラッチ回路ＬＡＴ（Ａ）に記憶させる。ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“５”，“６”の場合である。また、ラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”〜“４”，“７”である場合である。
【０２３１】
次に、メモリセルのデータが“０”〜“２”にあるか、“３”〜“７”にあるかを調べる。このため、ワード線の電位を図７に示す電位ｃとしてリード動作を行なう。ここで、ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている場合、ビット線を強制的にローレベルとし、この結果をラッチ回路ＬＡＴ（Ａ）に記憶させる。ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“３”，“４”，“７”の場合である。また、ラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”〜“２”，“５”，“６”である場合である。
【０２３２】
次に、メモリセルのデータが“０”にあるか、“１”〜“７”にあるかを調べる。このため、ワード線の電位を図７に示す電位ａとしてリード動作を行なう。ここで、ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされている場合、ビット線を強制的にローレベルとし、この結果をラッチ回路ＬＡＴ（Ａ）に記憶させる。ラッチ回路ＬＡＴ（Ａ）にハイレベルがラッチされるのは、メモリセルのデータが“１”，“２”，“５”，“６”の場合である。また、ラッチ回路ＬＡＴ（Ａ）にローレベルがラッチされる場合は、メモリセルのデータが“０”，“３”，“４”，“７”である場合である。
【０２３３】
ラッチ回路ＬＡＴ（Ａ）のデータ出力する時、図６に示すクロックドインバータ回路６１ｐの信号Ｏｓａｃ、Ｏｓａｃｂがイネーブルとなる。このため、出力端にはメモリセルのデータが“０”，“３”，“４”，“７”であると“１”データが出力され、“１”，“２”，“５”，“６”であると“０”データが出力される。
【０２３４】
上記第１の実施の形態では、第３ページのリードにおいて、リード動作を７回行なっていた。これに対して、第３の実施の形態では第３ページのリード動作が４回で終了する。このため、第３ページのリード動作を高速化できる。
【０２３５】
（イレーズ及びイレーズベリファイ）
イレーズ及びイレーズベリファイ動作は第１の実施の形態と全く同じである。すなわち、消去動作を行なうとメモリセルのデータは“０”となり、アドレスに第１、第２、第３ページの何れを指定しても読み出されるデータは“１”となる。
【０２３６】
上記第３の実施の形態によれば、第（ｎ−１）ページ書き込み後、第ｎページ書き込みを行なう場合、外部から入力されれるデータをそのまま書き込まず、この外部より入力されるデータと内部に既に書き込まれているデータとの間で、論理を取った値を書き込んでいる。このため、第ｎページ時のリード動作では、（２ｎ−１）回ワード線のレベルを換えてリード動作を行なう必要がなく、（２ｎ／２）回で読み出すことが可能となる。したがって、リード動作回数を低減でき、リード動作を高速化できる。
【０２３７】
上記第３の実施の形態では、図３６に示すように外部から入力される書き込みデータ、及び読み出されるデータを定義したため、読み出し動作において、第１ページでは１回、第２ページでは２回、第３ページでは４回の合計７回のリード動作を行なったが、これに限定されるものではない。
【０２３８】
例えば図４１に示すように、外部から入力される書き込みデータ及び読み出されるデータを定義した場合、読み出し動作において、第１ページは３回、第２ページは２回、第３ページは３回のリード動作を行なえばよい。この場合、３ページを読むトータルの回数は、図３６に示す場合の７回から８回に増加してしまう。しかし、最もアクセス時間の長い第３ページのリード動作を４回から３回とすることができるため、トータルのリード動作時間を短縮できる。
【０２３９】
尚、第１乃至第３の実施の形態において、１セルには８値、３ビットのデータを記憶したが、１セルに１６値、４ビットのデータを記憶することも可能である。この場合、第３ページで決めた８つの閾値電圧の間に１ずつ新たな閾値電圧を決め、上述したと同様のプログラム動作及びプログラムベリファイ動作を行なえば良い。したがって、本発明は、セルに記憶するビット数が増加した場合においても、データ記憶回路及びこれを制御する動作を殆ど変更する必要がない利点を有している。
【０２４０】
また、第１、第２の実施の形態は、ＮＡＮＤ型セルを用いたが、これに限定されるものではなく、ＮＯＲ型セル、ＤＩＮＯＲ型セル等を用いることも可能である。
【０２４１】
その他、この発明は上記実施例に限定されるものではなく、発明の要旨を変えない範囲で種々変形実施可能なことは勿論である。
【図面の簡単な説明】
【０２４２】
【図１】本発明の動作を概略的に示す図。
【図２】本発明の第１の実施の形態を示すものであり、不揮発性半導体記憶装置の概略構成を示す構成図。
【図３】図２に示すメモリセルアレイ及びビット線制御回路を示す回路図。
【図４】図４（ａ）（ｂ）はメモリセル及び選択トランジスタを示す断面図。
【図５】ＮＡＮＤセルの一例を示す断面。
【図６】本発明の第１の実施の形態を示すものであり、図３に示すデータ記憶回路の一例を示す回路図。
【図７】本発明の第１の実施の形態を示すものであり、メモリセルのデータとメモリセルの閾値電圧との関係を示す図。
【図８】メモリセルのデータとメモリセルの閾値電圧との関係を示す図。
【図９】プログラム時の動作を示すタイミングチャート。
【図１０】最高値を有するセルのベリファイ動作を示すタイミングチャート。
【図１１】中間の閾値を持つセルのベリファイ動作を示すタイミングチャート。
【図１２】最高値を有するセルのリード動作を示すタイミングチャート。
【図１３】図１３（ａ）は第１ページのプログラムベリファイ動作を示し、図１３（ｂ）（ｃ）は第２ページのプログラムベリファイ動作を示す図。
【図１４】図１４（ａ）（ｂ）は第３ページの最も高い閾値を持つセルのプログラムベリファイ動作を示す図。
【図１５】図１５（ａ）（ｂ）は第３ページの中間の閾値を持つセルのプログラムベリファイ動作を示す図。
【図１６】図１６（ａ）（ｂ）は第３ページの中間の閾値を持つセルのプログラムベリファイ動作を示す図。
【図１７】図１７（ａ）（ｂ）は第３ページの中間の閾値を持つセルのプログラムベリファイ動作を示す図。
【図１８】図１８（ａ）は第１ページのリード動作を示し、図１８（ｂ）（ｃ）は第２ページのリード動作を示す図。
【図１９】図１９（ａ）乃至（ｄ）は第３ページのリード動作を示す図。
【図２０】イレーズ動作を示すタイミングチャート。
【図２１】イレーズベリファイ動作を示すタイミングチャート。
【図２２】本発明の第２の実施の形態を示すものであり、メモリセルアレイ及びビット線制御回路の構成を示す回路図。
【図２３】本発明の第２の実施の形態を示すものであり、データ記憶回路と差動アンプ部及びロジック回路を示す構成図。
【図２４】本発明の第２の実施の形態を示すものであり、図２３に示すデータ記憶回路の一例を示す回路図。
【図２５】本発明の第２の実施の形態を示すものであり、図２３に示す差動アンプ部及びロジック回路を示す回路図。
【図２６】差動アンプ部とリファレンス電位の関係を示す図。
【図２７】本発明の第２の実施の形態におけるデータと閾値電圧の関係を示す図。
【図２８】本発明の第２の実施の形態におけるデータと閾値電圧の関係を示す図。
【図２９】プログラム動作を示すタイミングチャート。
【図３０】プログラムベリファイ及びリードの動作を示すタイミングチャート。
【図３１】差動アンプに供給されるレファレンス電位を示す図。
【図３２】メモリセルのデータとレファレンス電位との関係を示す図。
【図３３】図３３（ａ）（ｂ）（ｃ）はベリファイ動作を示す図。
【図３４】図３４（ａ）（ｂ）（ｃ）はリード動作を示す図。
【図３５】イレーズ動作を示すタイミングチャート。
【図３６】本発明の第３の実施例を示すものであり、メモリセルのデータとメモリセルの閾値電圧との関係を示す図。
【図３７】本発明の第３の実施例における第２ページのプログラム動作を示す図。
【図３８】本発明の第３の実施例における内部入力データ変換動作を示す図。
【図３９】図３９（ａ）（ｂ）はそれぞれ第１ページ、第２ページのリード動作を示す図。
【図４０】図４０は第３ページのリード動作を示す図。
【図４１】本発明の第３の実施例を示すものであり、メモリセルのデータとメモリセルの閾値電圧との他の関係を示す図。
【符号の説明】
【０２４３】
１…メモリセルアレイ、
２…ビット線制御回路、
３１０、３１１〜３１２１１２…データ記憶回路、
３…カラムデコーダ、
４…データ入出力バッファ、
６…ワード線制御回路、
７ａ…制御信号発生回路、
７ｂ…制御電圧発生回路、
ＢＬｉ、ＢＬｉ＋１…ビット線、
ＬＡＴ（Ａ）、ＬＡＴ（Ｂ）…第１、第２のラッチ回路、
ＬＡＴ（Ｃ）、ＬＡＴ（Ｄ）…ラッチ回路、
２３１…差動アンプ部、
２３２…ロジック回路、
２４１ｏ…トランジスタ、
２４１ｐ…クロックドインバータ回路、
２５３…制御電圧発生回路、
ＤＦＡ１〜ＤＦＡ７…差動アンプ。
【図１】
2006127762.tif 000003
【図２】
2006127762.tif 000004
【図３】
2006127762.tif 000005
【図４】
2006127762.tif 000006
【図５】
2006127762.tif 000007
【図６】
2006127762.tif 000008
【図７】
2006127762.tif 000009
【図８】
2006127762.tif 000010
【図９】
2006127762.tif 000011
【図１０】
2006127762.tif 000012
【図１１】
2006127762.tif 000013
【図１２】
2006127762.tif 000014
【図１３】
2006127762.tif 000015
【図１４】
2006127762.tif 000016
【図１５】
2006127762.tif 000017
【図１６】
2006127762.tif 000018
【図１７】
2006127762.tif 000019
【図１８】
2006127762.tif 000020
【図１９】
2006127762.tif 000021
【図２０】
2006127762.tif 000022
【図２１】
2006127762.tif 000023
【図２２】
2006127762.tif 000024
【図２３】
2006127762.tif 000025
【図２４】
2006127762.tif 000026
【図２５】
2006127762.tif 000027
【図２６】
2006127762.tif 000028
【図２７】
2006127762.tif 000029
【図２８】
2006127762.tif 000030
【図２９】
2006127762.tif 000031
【図３０】
2006127762.tif 000032
【図３１】
2006127762.tif 000033
【図３２】
2006127762.tif 000034
【図３３】
2006127762.tif 000035
【図３４】
2006127762.tif 000036
【図３５】
2006127762.tif 000037
【図３６】
2006127762.tif 000038
【図３７】
2006127762.tif 000039
【図３８】
2006127762.tif 000040
【図３９】
2006127762.tif 000041
【図４０】
2006127762.tif 000042
【図４１】
2006127762.tif 000043