(57)【要約】【課題】多値化しても、アクセスタイムを２値メモリのそれと同程度に保つ。【解決手段】４値メモリに関し、選択された１本のビット線に対し、１個のサブデータ回路ＲＥＧＲが設けられる。サブデータ回路ＲＥＧＲは、シリアルアクセスのための２個のラッチ回路ＤＳ４，ＤＳ５を有する。リード時、上位ビットは、センスラッチＤＳ３を経由して、ラッチ回路ＤＳ４にラッチされる。下位ビットのリード動作は、ラッチ回路ＤＳ４にラッチされた上位ビットの値に制御される。プログラム時、上位ビットは、ラッチ回路ＤＳ４にラッチされる。下位ビットのプログラム動作は、ラッチ回路ＤＳ４にラッチされた上位ビットの値に制御される。【選択図】    図１１
2004206833.tif 000002
【特許請求の範囲】
【請求項１】
ｎ（ｎは、２以上の自然数）ビットを記憶するメモリセルと、第１リード動作時に、前記ｎビットのうちの１ビットを一時的に記憶する第１記憶部と、前記１ビットが第１値を有するときは、第２リード動作時に、前記ｎビットのうちの他の１ビットを一時的に記憶し、前記１ビットが第２値を有するときは、第３リード動作時に、前記他の１ビットを一時的に記憶する第２記憶部とを具備することを特徴とする不揮発性半導体メモリ。
【請求項２】
前記第１、第２及び第３リード動作は、それぞれ異なる時期に実行されることを特徴とする請求項１に記載の不揮発性半導体メモリ。
【請求項３】
前記第１リード動作で選択されたワード線に与える第１リード電位、前記第２リード動作で前記選択されたワード線に与える第２リード電位及び前記第３リード動作で前記選択されたワード線に与える第３リード電位は、それぞれ異なる値を有することを特徴とする請求項１に記載の不揮発性半導体メモリ。
【請求項４】
前記１ビットが前記第１値を有するときは、前記第２リード動作時に、前記メモリセルと前記第２記憶部とを電気的に接続する第１スイッチと、前記１ビットが前記第２値を有するときは、前記第３リード動作時に、前記メモリセルと前記第２記憶部とを電気的に接続する第２スイッチとを具備することを特徴とする請求項１に記載の不揮発性半導体メモリ。
【請求項５】
前記１ビットは、前記他の１ビットよりも上位のビットであることを特徴とする請求項１に記載の不揮発性半導体メモリ。
【請求項６】
２ビットを記憶するメモリセルと、第１リード動作時に、前記２ビットのうちの１ビットを一時的に記憶する第１記憶部と、前記１ビットが第１値を有するときは、第２リード動作時に、前記２ビットのうちの他の１ビットを一時的に記憶し、前記１ビットが第２値を有するときは、第３リード動作時に、前記他の１ビットを一時的に記憶する第２記憶部とを具備することを特徴とする不揮発性半導体メモリ。
【請求項７】
前記メモリセルは、第０、第１、第２及び第３閾値レベルを有し、前記第０及び第１閾値レベルは、前記１ビットが前記第１値であることを意味し、前記第２及び第３閾値レベルは、前記１ビットが前記第２値であることを意味していることを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項８】
前記メモリセルは、第０、第１、第２及び第３閾値レベルを有し、前記第０及び第２閾値レベルは、前記他の１ビットが前記第１値であることを意味し、前記第１及び第３閾値レベルは、前記他の１ビットが前記第２値であることを意味していることを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項９】
前記第１、第２及び第３リード動作は、それぞれ異なる時期に実行されることを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項１０】
前記第１リード動作で選択されたワード線に与える第１リード電位、前記第２リード動作で前記選択されたワード線に与える第２リード電位及び前記第３リード動作で前記選択されたワード線に与える第３リード電位は、それぞれ異なる値を有することを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項１１】
前記１ビットが前記第１値を有するときは、前記第２リード動作時に、前記メモリセルと前記第２記憶部とを電気的に接続する第１スイッチと、前記１ビットが前記第２値を有するときは、前記第３リード動作時に、前記メモリセルと前記第２記憶部とを電気的に接続する第２スイッチとを具備することを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項１２】
前記１ビットは、上位ビットであり、前記他の１ビットは、下位ビットであることを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項１３】
前記１ビットをセンスした後、前記１ビットを前記第１記憶部に転送し、前記他の１ビットをセンスした後、前記他の１ビットを前記第２記憶部に転送する第３記憶部を具備することを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項１４】
前記第１記憶部とリードデータ線との間に接続される第１ゲートと、前記第２記憶部と前記リードデータ線との間に接続される第２ゲートとを具備することを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項１５】
前記第２及び第３リード動作の最中に、前記１ビットは、前記第１記憶部から前記リードデータ線に転送され、前記第１リード動作の最中に、前記他の１ビットは、前記第２記憶部から前記リードデータ線に転送されることを特徴とする請求項１４に記載の不揮発性半導体メモリ。
【請求項１６】
前記メモリセルは、ＮＡＮＤセル型フラッシュメモリを構成していることを特徴とする請求項６に記載の不揮発性半導体メモリ。
【請求項１７】
ｎ（ｎは、２以上の自然数）ビットを記憶するメモリセルと、第１ライト動作時に、前記ｎビットのうちの１ビットを一時的に記憶する第１記憶部と、第２及び第３ライト動作時に、前記ｎビットのうちの他の１ビットを一時的に記憶する第２記憶部と、前記１ビットが第１値を有するときは、前記第２ライト動作時に、前記他の１ビットを記憶し、前記１ビットが第２値を有するときは、前記第３ライト動作時に、前記他の１ビットを記憶する第３記憶部とを具備することを特徴とする不揮発性半導体メモリ。
【請求項１８】
前記第１、第２及び第３ライト動作は、それぞれ異なる時期に実行されることを特徴とする請求項１７に記載の不揮発性半導体メモリ。
【請求項１９】
前記第１ライト動作後に、第１ベリファイリード電位を選択されたワード線に与えて第１ベリファイ動作を行い、前記第２ライト動作後に、第２ベリファイリード電位を前記選択されたワード線に与えて第２ベリファイ動作を行い、前記第３ライト動作後に、第３ベリファイリード電位を前記選択されたワード線に与えて第３ベリファイ動作を行うことを特徴とする請求項１７に記載の不揮発性半導体メモリ。
【請求項２０】
前記第１、第２及び第３ベリファイリード電位は、互いに異なる値を有することを特徴とする請求項１９に記載の不揮発性半導体メモリ。
【請求項２１】
前記１ビットが前記第１値を有するときは、前記第２ライト動作時に、前記第２記憶部と前記第３記憶部とを電気的に接続する第１スイッチと、前記１ビットが前記第２値を有するときは、前記第３ライト動作時に、前記第２記憶部と前記第３記憶部とを電気的に接続する第２スイッチとを具備することを特徴とする請求項１７に記載の不揮発性半導体メモリ。
【請求項２２】
前記１ビットは、前記他の１ビットよりも上位のビットであることを特徴とする請求項１７に記載の不揮発性半導体メモリ。
【請求項２３】
２ビットを記憶するメモリセルと、第１ライト動作時に、前記２ビットのうちの１ビットを一時的に記憶する第１記憶部と、第２及び第３ライト動作時に、前記２ビットのうちの他の１ビットを一時的に記憶する第２記憶部と、前記１ビットが第１値を有するときは、前記第２ライト動作時に、前記他の１ビットを記憶し、前記１ビットが第２値を有するときは、前記第３ライト動作時に、前記他の１ビットを記憶する第３記憶部とを具備することを特徴とする不揮発性半導体メモリ。
【請求項２４】
前記メモリセルは、第０、第１、第２及び第３閾値レベルを有し、前記第０及び第１閾値レベルは、前記１ビットが前記第１値であることを意味し、前記第２及び第３閾値レベルは、前記１ビットが前記第２値であることを意味していることを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項２５】
前記メモリセルは、第０、第１、第２及び第３閾値レベルを有し、前記第０及び第２閾値レベルは、前記他の１ビットが前記第１値であることを意味し、前記第１及び第３閾値レベルは、前記他の１ビットが前記第２値であることを意味していることを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項２６】
前記第１、第２及び第３ライト動作は、それぞれ異なる時期に実行されることを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項２７】
前記第１ライト動作後に、第１ベリファイリード電位を選択されたワード線に与えて第１ベリファイ動作を行い、前記第２ライト動作後に、第２ベリファイリード電位を前記選択されたワード線に与えて第２ベリファイ動作を行い、前記第３ライト動作後に、第３ベリファイリード電位を前記選択されたワード線に与えて第３ベリファイ動作を行うことを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項２８】
前記第１、第２及び第３ベリファイリード電位は、互いに異なる値を有することを特徴とする請求項２７に記載の不揮発性半導体メモリ。
【請求項２９】
前記１ビットが前記第１値を有するときは、前記第２ライト動作時に、前記第２記憶部と前記第３記憶部とを電気的に接続する第１スイッチと、前記１ビットが前記第２値を有するときは、前記第３ライト動作時に、前記第２記憶部と前記第３記憶部とを電気的に接続する第２スイッチとを具備することを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項３０】
前記１ビットは、上位ビットであり、前記他の１ビットは、下位ビットであることを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項３１】
前記第１、第２及び第３ライト動作は、前記第３記憶部に記憶されるデータの値に基づいて実行され、前記第３記憶部に記憶されるデータの値は、前記第１、第２及び第３ベリファイ動作の結果に応じて変化することを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項３２】
前記１ビット又は前記他の１ビットを記憶し、前記１ビット又は前記他の１ビットが前記第１値を有するときは、前記第１、第２及び第３ベリファイ動作の結果にかかわらず、前記第３記憶部に記憶されるデータを前記第１値に設定する再充電回路を具備することを特徴とする請求項３１に記載の不揮発性半導体メモリ。
【請求項３３】
前記第１記憶部とライトデータ線との間に接続される第１ゲートと、前記第２記憶部と前記ライトデータ線との間に接続される第２ゲートとを具備することを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項３４】
前記第１ライト動作の最中に、前記他の１ビットは、前記ライトデータ線から前記第２記憶部に転送され、前記第２ライト動作の最中に、前記１ビットは、前記ライトデータ線から前記第１記憶部に転送されることを特徴とする請求項３３に記載の不揮発性半導体メモリ。
【請求項３５】
前記メモリセルは、ＮＡＮＤセル型フラッシュメモリを構成していることを特徴とする請求項２３に記載の不揮発性半導体メモリ。
【請求項３６】
ｎ（ｎは、２以上の自然数）ビットを記憶する複数のメモリセルと、前記複数のメモリセル対するリード／ライト動作を実行するために、前記複数のメモリセルに対応して設けられる複数のサブデータ回路と、前記複数のサブデータ回路を、１つずつ、順次、選択するための第１シフトレジスタとを具備し、前記複数のサブデータ回路の各々は、前記ｎビットのうちの１ビットを一時的に記憶する第１記憶部を有し、前記第１シフトレジスタにより選択されたサブデータ回路の前記第１記憶部から前記１ビットがシリアルに出力されることを特徴とする不揮発性半導体メモリ。
【請求項３７】
前記複数のサブデータ回路を、１つずつ、順次、選択するための第２シフトレジスタをさらに具備し、前記複数のサブデータ回路の各々は、前記ｎビットのうちの他の１ビットを一時的に記憶する第２記憶部を有し、前記第２シフトレジスタにより選択されたサブデータ回路の前記第２記憶部から前記他の１ビットがシリアルに出力されることを特徴とする請求項３６に記載の不揮発性半導体メモリ。
【請求項３８】
前記第１シフトレジスタにより選択されたサブデータ回路の前記第１記憶部から前記１ビットをシリアルに出力した後、続けて、前記第２シフトレジスタにより選択されたサブデータ回路の前記第２記憶部から前記他の１ビットをシリアルに出力することを特徴とする請求項３６に記載の不揮発性半導体メモリ。
【請求項３９】
第０、第１、第２及び第３閾値レベル（第０閾値レベル＜第１閾値レベル＜第２閾値レベル＜第３閾値レベル）により、２ビットを記憶するメモリセルに対するリード方法において、
前記第１閾値レベルと前記第２閾値レベルの間の第１リード電位を選択されたワード線に与えて、前記メモリセルに対する第１リード動作を実行し、前記メモリセルの閾値が前記第０若しくは第１閾値レベルのときは、前記２ビットのうちの１ビットは、第１値を有すると判定し、前記メモリセルの閾値が前記第２若しくは第３閾値レベルのときは、前記１ビットは、第２値を有すると判定し、
この後、▲１▼  前記第１ビットが前記第１値を有する場合において、前記第０閾値レベルと前記第１閾値レベルの間の第２リード電位を前記選択されたワード線に与えて、前記メモリセルに対する第２リード動作を実行し、前記メモリセルの閾値が前記第０閾値レベルのときは、前記２ビットのうちの他の１ビットは、第１値を有すると判定し、前記メモリセルの閾値が前記第１閾値レベルのときは、前記他の１ビットは、第２値を有すると判定し、
▲２▼  前記第１ビットが前記第２値を有する場合において、前記第２閾値レベルと前記第３閾値レベルの間の第３リード電位を前記選択されたワード線に与えて、前記メモリセルに対する第３リード動作を実行し、前記メモリセルの閾値が前記第２閾値レベルのときは、前記他の１ビットは、第１値を有すると判定し、前記メモリセルの閾値が前記第３閾値レベルのときは、前記他の１ビットは、第２値を有すると判定する
（但し、▲１▼と▲２▼の順序は、逆でもよい。）
ことを特徴とする不揮発性半導体メモリのリード方法。
【請求項４０】
前記１ビットは、上位ビットであり、前記他の１ビットは、下位ビットであることを特徴とする請求項３９に記載の不揮発性半導体メモリのリード方法。
【請求項４１】
前記１値は、“１”−データであり、前記第２値は、“０”−データであることを特徴とする請求項３９に記載の不揮発性半導体メモリのリード方法。
【請求項４２】
前記１ビットが前記第１値である場合には、前記第３リード動作では、前記他の１ビットの値を判定せず、前記１ビットが前記第２値である場合には、前記第２リード動作では、前記他の１ビットの値を判定しないことを特徴とする請求項３９に記載の不揮発性半導体メモリのリード方法。
【請求項４３】
前記第２及び第３リード動作の最中に、前記１ビットをリードデータとして出力することを特徴とする請求項３９に記載の不揮発性半導体メモリのリード方法。
【請求項４４】
前記第１ビットが、シリアルアクセス動作により出力された後、前記他の１ビットが、前記シリアルアクセス動作により出力されることを特徴とする請求項４３に記載の不揮発性半導体メモリのリード方法。
【請求項４５】
第０、第１、第２及び第３閾値レベル（第０閾値レベル＜第１閾値レベル＜第２閾値レベル＜第３閾値レベル）により、２ビットを記憶するメモリセルに対するプログラム方法において、
前記メモリセルの閾値を前記第０閾値レベルに設定し、
この後、前記メモリセルに対する第１ライト動作を実行し、前記２ビットのうちの１ビットに対するプログラムデータが第１値のときは、前記メモリセルの閾値を前記第０閾値レベルのままとし、前記１ビットに対するプログラムデータが第２値のときは、前記メモリセルの閾値を前記第２閾値レベルに変化させ、
この後、▲１▼  前記メモリセルに対する第２ライト動作を実行し、前記１ビットに対するプログラムデータが前記第１値である場合において、前記２ビットのうちの他の１ビットに対するプログラムデータが前記第１値のときは、前記メモリセルの閾値を前記第０閾値レベルのままとし、前記他の１ビットに対するプログラムデータが前記第２値の場合には、前記メモリセルの閾値を前記第１閾値レベルに変化させ、
▲２▼  前記メモリセルに対する第３ライト動作を実行し、前記１ビットに対するプログラムデータが前記第２値である場合において、前記他の１ビットに対するプログラムデータが前記第１値のときは、前記メモリセルの閾値を前記第２閾値レベルのままとし、前記他の１ビットに対するプログラムデータが前記第２値の場合には、前記メモリセルの閾値を前記第３閾値レベルに変化させる
（但し、▲１▼と▲２▼の順序は、逆でもよい。）
ことを特徴とする不揮発性半導体メモリのプログラム方法。
【請求項４６】
前記１ビットは、上位ビットであり、前記他の１ビットは、下位ビットであることを特徴とする請求項４５に記載の不揮発性半導体メモリのプログラム方法。
【請求項４７】
前記１値は、“１”−データであり、前記第２値は、“０”−データであることを特徴とする請求項４５に記載の不揮発性半導体メモリのプログラム方法。
【請求項４８】
前記１ビットに対するプログラムデータが前記第１値である場合には、前記第３ライト動作では、前記メモリセルの閾値を変化させず、前記１ビットに対するプログラムデータが前記第２値である場合には、前記第２ライト動作では、前記メモリセルの閾値を変化させないことを特徴とする請求項４５に記載の不揮発性半導体メモリのプログラム方法。
【請求項４９】
前記第１ライト動作の最中に、前記他の１ビットに対するプログラムデータを取り込むことを特徴とする請求項４５に記載の不揮発性半導体メモリのプログラム方法。
【請求項５０】
前記第１ビットが、シリアルアクセス動作により取り込まれた後、前記他の１ビットが、前記シリアルアクセス動作により取り込まれることを特徴とする請求項４９に記載の不揮発性半導体メモリのプログラム方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、不揮発性半導体メモリに関し、特に、多値ＮＡＮＤセル型フラッシュメモリ（Multi-level NAND cell type flash memory）、例えば、４値ＮＡＮＤセル型フラッシュメモリに使用される。
【０００２】
【従来の技術】
多値ＮＡＮＤセル型フラッシュメモリでは、リード動作時、例えば、メモリセルアレイから同時に読み出した１ページ分のデータをラッチ回路にラッチした後、このデータを、１ビットずつ、シリアルアクセスし、チップ外部にシリアルに出力する。また、プログラム動作時には、例えば、チップ内部にシリアルに入力された１ページ分のデータを、シリアルアクセスにより、１ビットずつ、ラッチ回路にラッチし、この後、このデータをメモリセルアレイに同時にプログラムする（特許文献１参照）。
【０００３】
以下では、「シリアルアクセス」というときは、このシリアルアクセスを意味し、「シリアルアクセスタイム」というときは、このシリアルアクセス動作に要する時間を意味するものとする。
【０００４】
【特許文献１】
米国特許第６，３３１，９４５Ｂ１明細書
【０００５】
【発明が解決しようとする課題】
メモリセルアレイを構成するメモリセル数が一定であるとすると、１つのメモリセルにｎ（ｎは、２以上の自然数）ビット、即ち、２ｎ値を記憶させる場合は、１つのメモリセルに１ビット、即ち、２値を記憶させる場合に比べて、メモリ容量をｎ倍にすることができる。
【０００６】
しかし、従来の多値ＮＡＮＤセル型フラッシュメモリでは、１つのメモリセルに記憶されるｎビットのうちの１ビットをランダムにリード／ライトする場合には、その１ビットと他のビットとのロジックをとる必要がある。この時間は、ｎに比例して増加する。
【０００７】
従って、１つのメモリセルにｎビットを記憶させる場合は、１つのメモリセルに１ビットを記憶させる場合に比べて、リード／ライトに要する時間、具体的には、リード／ライトコマンドを検出してからシリアルアクセスを開始するまでの時間（１ページデータの最初の１ビットをアクセスするまでの時間を意味することから、「1st アクセスタイム」と呼ばれる。）がｎに比例して長くなる。
【０００８】
このような1st アクセスタイムの長期化は、多値ＮＡＮＤセル型フラッシュメモリをファイルメモリとして使用するときには大きな問題とならない。大量のデータを同時に扱う用途においては、1st アクセスタイムを短縮させることよりも、メモリ容量の増大を図ることの方が重要だからである。
【０００９】
しかし、多値ＮＡＮＤセル型フラッシュメモリを、大きなメモリ容量を必要としない混載メモリ（ロジックＬＳＩなどに混載されたメモリのこと）として使用するときには、高速リード／ライトが要求されるため、シリアルアクセスタイムの高速化と共に、この1st アクセスタイムの高速化が非常に重要となる。
【００１０】
なぜなら、例えば、高速リード／ライトを実現するため、シリアルアクセスとリード／ライト動作とを並行して実施するようにしても、多値化により、1st アクセスタイムがシリアルアクセスタイムよりも長くなると、例えば、シリアルアクセスの期間中に、リード／ライト動作を終了できなくなり、リード／ライト速度が、1st アクセスタイムにより制限されてしまうからである。
【００１１】
このようなことから、高速リード／ライトを実現するためには、シリアルアクセスタイムの高速化と共に、この1st アクセスタイムの高速化が重要となる。
【００１２】
本発明の目的は、多値メモリの1st アクセスタイムを、２値フラッシュメモリのそれと同程度とすることができるデータ回路（リード／ライト回路）及びそれを用いたリード／ライト手法を提案することにある。
【００１３】
【課題を解決するための手段】
本発明の第１例に関わる不揮発性半導体メモリは、ｎ（ｎは、２以上の自然数）ビットを記憶するメモリセルと、第１リード動作時に、前記ｎビットのうちの１ビットを一時的に記憶する第１記憶部と、前記１ビットが第１値を有するときは、第２リード動作時に、前記ｎビットのうちの他の１ビットを一時的に記憶し、前記１ビットが第２値を有するときは、第３リード動作時に、前記他の１ビットを一時的に記憶する第２記憶部とを備える。
【００１４】
本発明の第２例に関わる不揮発性半導体メモリは、２ビットを記憶するメモリセルと、第１リード動作時に、前記２ビットのうちの１ビットを一時的に記憶する第１記憶部と、前記１ビットが第１値を有するときは、第２リード動作時に、前記２ビットのうちの他の１ビットを一時的に記憶し、前記１ビットが第２値を有するときは、第３リード動作時に、前記他の１ビットを一時的に記憶する第２記憶部とを備える。
【００１５】
本発明の第３例に関わる不揮発性半導体メモリは、ｎ（ｎは、２以上の自然数）ビットを記憶するメモリセルと、第１ライト動作時に、前記ｎビットのうちの１ビットを一時的に記憶する第１記憶部と、第２及び第３ライト動作時に、前記ｎビットのうちの他の１ビットを一時的に記憶する第２記憶部と、前記１ビットが第１値を有するときは、前記第２ライト動作時に、前記他の１ビットを記憶し、前記１ビットが第２値を有するときは、前記第３ライト動作時に、前記他の１ビットを記憶する第３記憶部とを備える。
【００１６】
本発明の第４例に関わる不揮発性半導体メモリは、２ビットを記憶するメモリセルと、第１ライト動作時に、前記２ビットのうちの１ビットを一時的に記憶する第１記憶部と、第２及び第３ライト動作時に、前記２ビットのうちの他の１ビットを一時的に記憶する第２記憶部と、前記１ビットが第１値を有するときは、前記第２ライト動作時に、前記他の１ビットを記憶し、前記１ビットが第２値を有するときは、前記第３ライト動作時に、前記他の１ビットを記憶する第３記憶部とを備える。
【００１７】
本発明の第５例に関わる不揮発性半導体メモリは、ｎ（ｎは、２以上の自然数）ビットを記憶する複数のメモリセルと、前記複数のメモリセル対するリード／ライト動作を実行するために、前記複数のメモリセルに対応して設けられる複数のサブデータ回路と、前記複数のサブデータ回路を、１つずつ、順次、選択するための第１シフトレジスタとを備え、前記複数のサブデータ回路の各々は、前記ｎビットのうちの１ビットを一時的に記憶する第１記憶部を有し、前記第１シフトレジスタにより選択されたサブデータ回路の前記第１記憶部から前記１ビットがシリアルに出力される。
【００１８】
本発明の第６例に関わる不揮発性半導体メモリのリード方法は、第０、第１、第２及び第３閾値レベル（第０閾値レベル＜第１閾値レベル＜第２閾値レベル＜第３閾値レベル）により、２ビットを記憶するメモリセルに対して適用される。また、その方法は、前記第１閾値レベルと前記第２閾値レベルの間の第１リード電位を用いて、前記メモリセルに対する第１リード動作を実行し、前記メモリセルの閾値が前記第０若しくは第１閾値レベルのときは、前記２ビットのうちの１ビットは、第１値を有すると判定し、前記メモリセルの閾値が前記第２若しくは第３閾値レベルのときは、前記１ビットは、第２値を有すると判定し、この後、▲１▼  前記第１ビットが前記第１値を有する場合において、前記第０閾値レベルと前記第１閾値レベルの間の第２リード電位を用いて、前記メモリセルに対する第２リード動作を実行し、前記メモリセルの閾値が前記第０閾値レベルのときは、前記２ビットのうちの他の１ビットは、第１値を有すると判定し、前記メモリセルの閾値が前記第１閾値レベルのときは、前記他の１ビットは、第２値を有すると判定し、▲２▼  前記第１ビットが前記第２値を有する場合において、前記第２閾値レベルと前記第３閾値レベルの間の第３リード電位を用いて、前記メモリセルに対する第３リード動作を実行し、前記メモリセルの閾値が前記第２閾値レベルのときは、前記他の１ビットは、第１値を有すると判定し、前記メモリセルの閾値が前記第３閾値レベルのときは、前記他の１ビットは、第２値を有すると判定する（但し、▲１▼と▲２▼の順序は、逆でもよい。）というステップを備える。
【００１９】
本発明の第７例に関わる不揮発性半導体メモリのプログラム方法は、第０、第１、第２及び第３閾値レベル（第０閾値レベル＜第１閾値レベル＜第２閾値レベル＜第３閾値レベル）により、２ビットを記憶するメモリセルに対して適用される。また、その方法は、前記メモリセルの閾値を前記第０閾値レベルに設定し、この後、前記メモリセルに対する第１ライト動作を実行し、前記２ビットのうちの１ビットに対するプログラムデータが第１値のときは、前記メモリセルの閾値を前記第０閾値レベルのままとし、前記１ビットに対するプログラムデータが第２値のときは、前記メモリセルの閾値を前記第２閾値レベルに変化させ、この後、▲１▼  前記メモリセルに対する第２ライト動作を実行し、前記１ビットに対するプログラムデータが前記第１値である場合において、前記２ビットのうちの他の１ビットに対するプログラムデータが前記第１値のときは、前記メモリセルの閾値を前記第０閾値レベルのままとし、前記他の１ビットに対するプログラムデータが前記第２値の場合には、前記メモリセルの閾値を前記第１閾値レベルに変化させ、▲２▼  前記メモリセルに対する第３ライト動作を実行し、前記１ビットに対するプログラムデータが前記第２値である場合において、前記他の１ビットに対するプログラムデータが前記第１値のときは、前記メモリセルの閾値を前記第２閾値レベルのままとし、前記他の１ビットに対するプログラムデータが前記第２値の場合には、前記メモリセルの閾値を前記第３閾値レベルに変化させる（但し、▲１▼と▲２▼の順序は、逆でもよい。）というステップを備える。
【００２０】
【発明の実施の形態】
以下、図面を参照しながら、本発明の例に関わる不揮発性半導体メモリについて詳細に説明する。
【００２１】
１．  前提
まず、以下の説明を分かり易くするため、前提条件について次のように規定する。但し、この前提条件は、本発明を分かり易く説明するために設定するものであり、本発明がこの前提条件に限定されるというものではない。
【００２２】
本発明の例に関わる不揮発性半導体メモリは、１つのメモリセルに、ｎ（ｎは、２以上の自然数）ビット、即ち、２ｎ値が記憶される多値フラッシュメモリを対象とする。ここで、１つのメモリセルにｎビットを記憶させる場合、そのメモリセルは、２ｎ通りの状態（２ｎの閾値帯）を持つことになる。
【００２３】
以下では、多値フラッシュメモリの代表例として、４値ＮＡＮＤセル型フラッシュメモリについて説明する。この場合、そのメモリセルは、４つの閾値帯、即ち、閾値レベル０、閾値レベル１、閾値レベル２、閾値レベル３を有することになる。
【００２４】
閾値レベル０は、メモリセルの閾値電圧が最も低い状態、例えば、閾値電圧が負の状態であり、この状態を、“１１”状態とする。また、閾値レベル１は、メモリセルの閾値電圧が２番目に低い状態、例えば、閾値電圧が正の状態であり、この状態を、“１０”状態とする。閾値レベル２は、メモリセルの閾値電圧が３番目に低い状態、例えば、閾値電圧が正の状態であり、この状態を、“０１”状態とする。閾値レベル３は、メモリセルの閾値電圧が最も高い状態、例えば、閾値電圧が正の状態であり、この状態を、“００”状態とする。
【００２５】
ここで、“＊＊”は、１つのメモリセルに記憶される２ビットデータを表している。“＊＊”に関して、右側の＊は、下位ビット（論理下位ページデータ）ＬＢとし、左側の＊は、上位ビット（論理上位ページデータ）ＨＢとする。例えば、リード／ライト動作は、下位ビットＬＢ、上位ビットＨＢ、又は、これら２ビットに対して実行される。
【００２６】
また、メモリセルに関しては、“１１”状態を、イレーズ状態とし、“１０”状態、“０１”状態、“００”状態を、ライト状態とする。
【００２７】
２．  概要
(1)   発明の概要
本発明の例に関わる不揮発性半導体メモリは、リード／ライト動作を実行するためのデータ回路の構成、さらに、例えば、１つのメモリセルが４つの閾値帯（閾値レベル０＜閾値レベル１＜閾値レベル２＜閾値レベル３）を有する場合におけるリード／ライト動作に特徴を有する。
【００２８】
本発明の例に関わる多値ＮＡＮＤセル型フラッシュメモリでは、１つのメモリセルにｎ（ｎは、２以上の自然数）ビットが記憶される場合、１本のリード／ライトデータ線（又はＩ／Ｏ線）と１つの選択セルとの間には、リードデータの出力又はライトデータの受け取りを行うためのｎ個のラッチ回路が接続される。例えば、４値ＮＡＮＤセル型フラッシュメモリでは、１本のリード／ライトデータ線と１つの選択セルとの間には、リードデータの出力又はライトデータの受け取りを行うための２個のラッチ回路ＨＢＬ，ＬＢＬが接続される。
【００２９】
そして、例えば、データプログラムに関しては、以下の手順で、メモリセルの状態を、“１１”状態（閾値レベル０）からプログラムデータに応じた所定の状態に変化させる。
【００３０】
まず、第１ステップとして、上位ビットＨＢのプログラムを実行する。上位ビットＨＢに対するプログラムデータが“１”のときは、メモリセルの状態を変化させず、“１１”状態（閾値レベル０）のままとし、上位ビットＨＢに対するプログラムデータが“０”のときは、メモリセルの状態を、“１１”状態から“０１”状態（閾値レベル２）に変化させる。
【００３１】
次に、第２ステップとして、上位ビットＨＢが“１”のメモリセルに対して、下位ビットＬＢのプログラムを実行する。下位ビットＬＢに対するプログラムデータが“１”のときは、メモリセルの状態を変化させず、“１１”状態（閾値レベル０）のままとし、下位ビットＬＢに対するプログラムデータが“０”のときは、メモリセルの状態を、“１１”状態から“１０”状態（閾値レベル１）に変化させる。
【００３２】
最後に、第３ステップとして、上位ビットＨＢが“０”のメモリセルに対して、下位ビットＬＢのプログラムを実行する。下位ビットＬＢに対するプログラムデータが“１”のときは、メモリセルの状態を変化させず、“０１”状態（閾値レベル２）のままとし、下位ビットＬＢに対するプログラムデータが“０”のときは、メモリセルの状態を、“０１”状態から“００”状態（閾値レベル３）に変化させる。
【００３３】
本発明の例によれば、上位ビットＨＢのプログラムは、第１ステップに示すように、１回のプログラム（ベリファイも含む）動作で完了させることができる。また、下位ビットＬＢのプログラムは、第２及び第３ステップに示すように、２回のプログラム（ベリファイも含む）動作を必要とするが、プログラム動作のためのデータリード（ Internal data read と称される）や、リードデータとプログラムデータとのロジックをとる動作などを行う必要がない。
【００３４】
従って、プログラム動作の時間を短縮でき、 1st アクセスタイムを２値フラッシュメモリのそれと同程度とすることができる。
【００３５】
なお、第１ステップを実行している間に、第２及び第３ステップのための下位ビットＬＢのラッチ回路ＬＢＬへの取り込み（シリアルアクセス）を実行し、第２及び第３ステップを実行している間に、次のサイクルにおける第１ステップのための上位ビットＨＢのラッチ回路ＨＢＬへの取り込み（シリアルアクセス）を実行することもできる。
【００３６】
このプログラム動作において、第２ステップと第３ステップは、順序を入れ替えても構わない。
【００３７】
このように、本発明の例によれば、 1st アクセスタイムを、２値フラッシュメモリのそれと同程度にすることができる。つまり、1st アクセスタイムは、シリアルアクセスタイムと同程度にすることができるため、上述のように、第１ステップとシリアルアクセスとを並行して実施し、かつ、第２及び第３ステップとシリアルアクセスとを並行して実施することで、高速ライトを実現できる。
【００３８】
また、上位ビットＨＢのリードは、以下のようにして行う。
選択されたメモリセルのコントロールゲート電極に、閾値レベル０，１と閾値レベル２，３とを区別するためのリード電位Ｖｃｇｒ０１を与える。選択されたブロック（ＮＡＮＤストリング）内の非選択のメモリセルは、オン状態に設定される。上位ビットＨＢが“１”のときは、ビット線の電位は、低下し、上位ビットＨＢが“０”のときは、ビット線の電位は、プリチャージ電位を維持する。ビット線の電位変化をセンスすることにより、上位ビットＨＢの値を特定できる。上位ビットＨＢは、上位ビットラッチ回路ＨＢＬにラッチされる。
【００３９】
下位ビットＬＢのリードは、以下の手順により行う。
まず、第１ステップとして、上位ビットＨＢのリードを実行する。
【００４０】
次に、第２ステップとして、上位ビットＨＢが“１”のメモリセルに対して、下位ビットＬＢのリードを実行する。
【００４１】
選択されたメモリセルのコントロールゲート電極に、閾値レベル０と閾値レベル１，２，３とを区別するためのリード電位Ｖｃｇｒ１０を与える。選択されたブロック（ＮＡＮＤストリング）内の非選択のメモリセルは、オン状態に設定される。下位ビットＬＢが“１”のときは、ビット線の電位は、低下し、下位ビットＬＢが“０”のときは、ビット線の電位は、プリチャージ電位を維持する。ビット線の電位変化をセンスすることにより、下位ビットＬＢの値を特定できる。下位ビットＬＢは、下位ビットラッチ回路ＬＢＬにラッチされる。
【００４２】
最後に、第３ステップとして、上位ビットＨＢが“０”のメモリセルに対して、下位ビットＬＢのリードを実行する。
【００４３】
選択されたメモリセルのコントロールゲート電極に、閾値レベル０，１，２と閾値レベル３とを区別するためのリード電位Ｖｃｇｒ００を与える。選択されたブロック（ＮＡＮＤストリング）内の非選択のメモリセルは、オン状態に設定される。下位ビットＬＢが“１”のときは、ビット線の電位は、低下し、下位ビットＬＢが“０”のときは、ビット線の電位は、プリチャージ電位を維持する。ビット線の電位変化をセンスすることにより、下位ビットＬＢの値を特定できる。下位ビットＬＢは、下位ビットラッチ回路ＬＢＬにラッチされる。
【００４４】
本発明の例によれば、上位ビットＨＢのリードは、第１ステップに示すように、１回のリード動作で完了させることができる。また、下位ビットＬＢのリードは、第２及び第３ステップに示すように、２回のリード動作を必要とするが、リードデータ同士のロジックをとる動作などを行う必要がない。
【００４５】
従って、リード動作の時間を短縮でき、 1st アクセスタイムを２値フラッシュメモリのそれと同程度とすることができる。
【００４６】
なお、第１ステップを実行している間に、前のサイクルの第２及び第３ステップによりラッチ回路ＬＢＬにラッチされた下位ビットＬＢのチップ外部への出力（シリアルアクセス）を実行し、第２及び第３ステップを実行している間に、第１ステップによりラッチ回路ＨＢＬにラッチされた上位ビットＨＢのチップ外部への出力（シリアルアクセス）を実行してもよい。
【００４７】
このリード動作において、第２ステップと第３ステップは、順序を入れ替えても構わない。
【００４８】
このように、本発明の例によれば、 1st アクセスタイムを、２値フラッシュメモリのそれと同程度にすることができる。つまり、1st アクセスタイムは、シリアルアクセスタイムと同程度にすることができるため、上述のように、第１ステップとシリアルアクセスとを並行して実施し、かつ、第２及び第３ステップとシリアルアクセスとを並行して実施することで、高速リードを実現できる。
【００４９】
本発明の例に関わるリード／ライト動作によれば、後述するように、リード／ライトデータに対するシリアルアクセス動作が、少ない信号数で簡単に行えるため、低消費電力のシステムを構築できる。本発明の例は、特に、メモリセルアレイに対するアクセス制御を簡単にしたいという要求があるフラッシュメモリ混載ロジックＬＳＩに最適である。
【００５０】
(2)   全体図
図１は、本発明の例に関わる４値ＮＡＮＤセル型フラッシュメモリの主要部を示している。
【００５１】
１は、メモリセルアレイである。メモリセルアレイ１は、例えば、直列接続された複数のメモリセルとその両端に１つずつ接続された２つのセレクトゲートトランジスタとから構成されるＮＡＮＤセルユニットを有する。メモリセルアレイ１の回路例及び構造例については、後述する。
【００５２】
データ回路２は、複数のデータ記憶部を含んでいる。データ回路２の回路例については、後述する。ここでは、データ回路２の機能について簡単に述べる。
【００５３】
データ回路２は、プログラム時に、２ビット（４値）のプログラムデータを、選択されたメモリセルにプログラムするために、そのプログラムデータを一時的に記憶する機能を有する。また、データ回路２は、リード時に、選択されたメモリセルから読み出された２ビット（４値）のリードデータを、それぞれ、一時的に記憶する機能を有する。
【００５４】
本例では、データ回路２は、少なくとも、上位ビット（論理上位ページデータ）ＨＢを記憶する上位ビットラッチ回路ＨＢＬ、下位ビット（論理下位ページデータ）ＬＢを記憶する下位ビットラッチ回路ＬＢＬ、及び、リード時にセンスアンプとして機能し、プログラム時にライトの有無を判断するデータを記憶するラッチ回路Ｓ／Ａを有している。
【００５５】
ワード線制御回路３は、ロウアドレスデコーダ及びワード線ドライバを含んでいる。ワード線制御回路３は、動作モード（ライト、イレーズ、リードなど）とロウアドレス信号が指定するアドレスとに基づいて、メモリセルアレイ１内の複数のワード線の電位を制御する。
【００５６】
カラムデコーダ４は、カラムアドレス信号に基づいて、メモリセルアレイ１のカラムを選択する。
【００５７】
プログラム時、プログラムデータは、データ入出力バッファ７及びＩ／Ｏセンスアンプ６を経由して、データ回路２内に、１ビットずつ、シリアルに入力される。同時に、シリアルアクセス動作により、１ページ分のプログラムデータ（上位ビットＨＢに対するプログラムデータ）が、データ回路２内のラッチ回路ＨＢＬにラッチされ、シリアルアクセス動作により、１ページ分のプログラムデータ（下位ビットＬＢに対するプログラムデータ）が、データ回路２内のラッチ回路ＬＢＬにラッチされる。
【００５８】
また、リード時、１ページ分のリードデータ（上位ビットＨＢ）は、同時に、データ回路２内のラッチ回路ＨＢＬ内に一時的に記憶される。この後、１ページ分のリードデータは、シリアルアクセス動作により、１ビットずつ、Ｉ／Ｏセンスアンプ６及びデータ入出力バッファ７を経由して、メモリチップ１１の外部へシリアルに出力される。
【００５９】
同様に、リード時、１ページ分のリードデータ（下位ビットＬＢ）は、同時に、データ回路２内のラッチ回路ＬＢＬ内に一時的に記憶される。この後、１ページ分のリードデータは、シリアルアクセス動作により、１ビットずつ、Ｉ／Ｏセンスアンプ６及びデータ入出力バッファ７を経由して、メモリチップ１１の外部へシリアルに出力される。
【００６０】
ロウアドレス信号は、アドレスバッファ５を経由してワード線制御回路３に入力される。カラムアドレス信号は、アドレスバッファ５を経由して、カラムデコーダ４に入力される。
【００６１】
ウェル／ソース線電位制御回路８は、動作モード（ライト、イレーズ、リードなど）に基づいて、メモリセルアレイ１を構成する複数のブロックに対応する複数のウェル領域（例えば、ｎウェルとｐウェルからなるダブルウェル領域）の電位、並びに、ソース線の電位を、それぞれ制御する。
【００６２】
電位発生回路（昇圧回路）９Ａは、例えば、プログラム時に、プログラム電位（例えば、約２０Ｖ）Ｖｐｇｍや、転送電位（例えば、約１０Ｖ）Ｖｐａｓｓなどを発生する。これらの電位Ｖｐｇｍ，Ｖｐａｓｓは、切替回路９Ｂにより、例えば、メモリセルアレイ１を構成する複数のブロックのうち、選択されたブロック内の複数本のワード線に振り分けられる。
【００６３】
また、電位発生回路９Ａは、例えば、イレーズ時に、イレーズ電位（例えば、約２０Ｖ）Ｖｅｒａを発生し、この電位Ｖｅｒａを、メモリセルアレイ１を構成する複数のブロックのうち、１つ又は２つ以上の選択されたブロックに対応する１つ又は２つ以上のウェル領域（ｎウェルとｐウェルの双方）に与える。
【００６４】
一括検知回路 (batch detection circuit) １０は、プログラム時に、データ回路２から出力される検知信号ＰＣＤ、具体的には、ラッチ回路Ｓ／Ａにラッチされたライトの有無を判断するデータに基づいて、選択されたメモリセルに正確に所定のデータが書き込まれたか否かを検証する。同様に、一括検知回路１０は、イレーズ時に、データ回路２から出力される検知信号ＰＣＤに基づいて、メモリセルのデータがきちんと消去されたか否かを検証する。
【００６５】
コマンドインターフェイス回路１２は、メモリチップ１１とは別のチップ（例えば、ホストマイコン）により生成される制御信号に基づいて、データ入出力バッファ７に入力されるデータがホストマイコンから提供されたコマンドデータであるか否かを判断する。データ入出力バッファ７に入力されるデータがコマンドデータである場合、コマンドインターフェイス回路１２は、コマンドデータをステートマシーン（制御回路）１３に転送する。
【００６６】
ステートマシーン１３は、コマンドデータに基づいて、フラッシュメモリの動作モード（ライト、イレーズ、リードなど）を決定し、かつ、その動作モードに応じて、フラッシュメモリの全体の動作、具体的には、データ回路２、ワード線制御回路３、カラムデコーダ４、アドレスバッファ５、Ｉ／Ｏセンスアンプ６、データ入出力バッファ７、ウェル／ソース線電位制御回路８、電位生成回路９Ａ、切替回路９Ｂ及び一括検知回路１０の動作を制御する。
【００６７】
(3)   メモリセルアレイの構成例
図２は、メモリセルアレイの構成例を示している。図３は、図２に示される複数のブロックのうちの１つＢＬＯＣＫｉの回路例である。
メモリセルアレイ１は、複数（本例では、ｉ個）のブロックＢＬＯＣＫ０〜ＢＬＯＣＫｉから構成される。複数のブロックＢＬＯＣＫ０〜ＢＬＯＣＫｉは、Ｙ方向に並んで配置される。ブロックとは、イレーズの最小単位、即ち、一度に消去できる最小のメモリセル数を意味する。
【００６８】
ブロックＢＬＯＣＫｉは、Ｘ方向に並んだ複数（本例では、ｍ個）のＮＡＮＤセルユニットＵから構成される。ＮＡＮＤセルユニットＵは、直列接続される１６個のメモリセルＭ０，Ｍ１，・・・Ｍ１４，Ｍ１５からなるＮＡＮＤ列と、ＮＡＮＤ列の一端に接続されるセレクトゲートトランジスタＳ１と、ＮＡＮＤ列の他端に接続されるセレクトゲートトランジスタＳ２とから構成される。
【００６９】
本例では、ＮＡＮＤ列は、１６個のメモリセルＭ０，Ｍ１，・・・Ｍ１４，Ｍ１５から構成されるが、１つ又は２つ以上のメモリセルから構成されていればよく、特に、１６個に限定されるものではない。
【００７０】
セレクトゲートトランジスタＳ１は、ビット線ＢＬｑに接続され（ｑ＝０，１，・・・ｍ−２，ｍ−１）、セレクトゲートトランジスタＳ２は、ソース線Ｃ−ｓｏｕｒｃｅに接続される。
【００７１】
ワード線（コントロールゲート線）ＷＬ０−ｉ，ＷＬ１−ｉ，・・・ＷＬ１４−ｉ，ＷＬ１５−ｉは、Ｘ方向に延び、Ｘ方向の複数のメモリセルに共通に接続される。セレクトゲート線ＳＧＤ−ｉは、Ｘ方向に延び、Ｘ方向の複数のセレクトゲートトランジスタＳ１に共通に接続される。セレクトゲート線ＳＧＳ−ｉも、Ｘ方向に延び、Ｘ方向の複数のセレクトゲートトランジスタＳ２に共通に接続される。
【００７２】
１メモリセルが１ビットデータを記憶する場合、１本のワード線、例えば、ワード線ＷＬ０−ｉと複数のビット線ＢＬ０，ＢＬ１，・・・ＢＬｍ−２，ＢＬｍ−１との交点に位置するｍ個のメモリセルは、ページと呼ばれる単位を構成する。また、本例のように、１メモリセルが２ビットデータを記憶する場合、１本のワード線と複数のビット線ＢＬ０，ＢＬ１，・・・ＢＬｍ−２，ＢＬｍ−１との交点に位置するｍ個のメモリセルは、２ページ分のデータを記憶する。
【００７３】
(4)   デバイス構造例
▲１▼  ウェル構造例
図４は、ＮＡＮＤセル型フラッシュメモリのウェル構造の例を示している。
【００７４】
ｐ型シリコン基板（ｐ−ｓｕｂ）１１−１内には、ｎ型ウェル領域（Ｃｅｌｌｎ−ｗｅｌｌ）１１−２及びｐ型ウェル領域（Ｃｅｌｌ  ｐ−ｗｅｌｌ）１１−３から構成されるいわゆるダブルウェル領域、ｎ型ウェル領域（ｎ−ｗｅｌｌ）１１−４、並びに、ｐ型ウェル領域（ｐ−ｗｅｌｌ）１１−５が形成される。
【００７５】
ダブルウェル領域は、メモリセルアレイ部に形成され、ｎ型ウェル領域１１−４及びｐ型ウェル領域１１−５は、周辺回路部に形成される。
【００７６】
メモリセルは、ｎチャネルＭＯＳトランジスタから構成され、ｐ型ウェル領域１１−３内に配置される。ｎ型ウェル領域１１−２及びｐ型ウェル領域１１−３は、同電位に設定される。
【００７７】
電源電圧よりも高い電圧が印加される高電圧ｎチャネルＭＯＳトランジスタは、Ｐ型シリコン基板（ｐ−ｓｕｂ）１１−１内に形成される。電源電圧が印加される低電圧ｐチャネルＭＯＳトランジスタは、ｎ型ウェル領域（ｎ−ｗｅｌｌ）１１−４内に形成され、電源電圧が印加される低電圧ｎチャネルＭＯＳトランジスタは、ｐ型ウェル領域（ｐ−ｗｅｌｌ）１１−５内に形成される。
【００７８】
▲２▼  セルアレイ構造例
図５は、ＮＡＮＤセル型フラッシュメモリのメモリセルアレイ部のＹ方向の断面構造の例を示している。
【００７９】
ｐ型シリコン基板１１−１内には、ｎ型ウェル領域１１−２及びｐ型ウェル領域１１−３から構成されるダブルウェル領域が形成される。
【００８０】
直列接続された１６個のメモリセルＭ０，Ｍ１，・・・Ｍ１４，Ｍ１５は、ｐ型ウェル領域１１−３内に配置される。１６個のメモリセルＭ０，Ｍ１，・・・Ｍ１４，Ｍ１５は、それぞれ、ＮチャネルＭＯＳトランジスタから構成され、かつ、例えば、フローティングゲート電極ＦＧとコントロールゲート電極ＷＬ０−０，ＷＬ１−０，・・・ＷＬ１４−０，ＷＬ１５−０からなるスタックゲート構造を有する。
【００８１】
直列接続されたメモリセルＭ０，Ｍ１，・・・Ｍ１４，Ｍ１５からなるＮＡＮＤ列の一端には、セレクトゲートトランジスタＳ１が接続され、その他端には、セレクトゲートトランジスタＳ２が接続される。セレクトゲートトランジスタＳ１，Ｓ２は、ＮチャネルＭＯＳトランジスタから構成され、メモリセルＭ０，Ｍ１，・・・Ｍ１４，Ｍ１５に近似する構造、即ち、スタックゲート構造のセレクトゲート線ＳＧＳ−０，ＳＧＤ−０を有する。
【００８２】
ＮＡＮＤセルユニットの一端、即ち、セレクトゲートトランジスタＳ１の拡散層（ドレイン拡散層）１４は、コンタクトプラグＣＢ１を経由して、第１メタル配線層ＭＥ０に接続される。また、第１メタル配線層ＭＥ０は、ビアプラグＶ１を経由して、ビット線ＢＬとしての第２メタル配線層ＭＥ１に接続される。ビット線ＢＬは、データ回路に接続される。
【００８３】
ＮＡＮＤセルユニットの他端、即ち、セレクトゲートトランジスタＳ２の拡散層（ソース拡散層）１５は、コンタクトプラグＣＢ２を経由して、ソース線Ｃ−ｓｏｕｒｃｅとしての第１メタル配線層ＭＥ０に接続される。ソース線Ｃ−ｓｏｕｒｃｅは、ソース電位制御回路に接続される。
【００８４】
ｎ型ウェル領域（Ｃｅｌｌ  ｎ−ｗｅｌｌ）１１−２は、ｎ型拡散層１６を経由して、Ｃ−ｐ−ｗｅｌｌ電位設定線１８に接続され、ｐ型ウェル領域（Ｃｅｌｌ  ｐ−ｗｅｌｌ）１１−３は、ｐ型拡散層１７を経由して、Ｃ−ｐ−ｗｅｌｌ電位設定線１８に接続される。つまり、ｎ型ウェル領域１１−２とｐ型ウェル領域１１−３は、同電位に設定される。Ｃ−ｐ−ｗｅｌｌ電位設定線１８は、ウェル電位制御回路に接続される。
【００８５】
なお、フローティングゲート電極ＦＧ、コントロールゲート電極ＷＬ０−ｊ，ＷＬ１−ｊ，・・・ＷＬ１４−ｊ，ＷＬ１５−ｊ及びセレクトゲート線ＳＧＳ−ｊ，ＳＧＤ−ｊ（ｊ＝０，１、・・・ｉ）は、例えば、不純物を含む導電性ポリシリコンから構成される。また、第１及び第２メタル配線層ＭＥ０，ＭＥ１は、例えば、アルミニウム、銅、これらの合金などから構成される。
【００８６】
図６は、メモリセルのＸ方向の断面構造の例を示し、図７は、セレクトゲートトランジスタのＸ方向の断面構造の例を示している。
【００８７】
Ｘ方向の複数のメモリセル（ＦＧ＋ＷＬ）は、ＳＴＩ (Shallow Trench Isolation) 構造の素子分離層１９によって、互いに電気的に分離されている。Ｐ型ウェル領域１１−３上には、非常に薄いトンネル酸化膜２０を経由して、フローティングゲート電極ＦＧが配置される。フローティングゲート電極ＦＧ上には、ＯＮＯ (oxide/nitride/oxide) 膜２１を経由して、コントロールゲート電極ＷＬが配置される。
【００８８】
セレクトゲート線ＳＧＳ／ＳＧＤは、スタックゲート構造になっている。下側のセレクトゲート線ＳＧＳ／ＳＧＤと上側のセレクトゲート線ＳＧＳ／ＳＧＤとは、例えば、メモリセルアレイの端部において互いに電気的に接続されると共に、メモリセルアレイ内においても、一定間隔、例えば、５１２本のビット線ごとに、互いに電気的に接続される。
【００８９】
(5)   データ回路の構成例
▲１▼  データ回路の概要
図８は、データ回路の構成例を示している。
データ回路２は、ｍ個のサブデータ回路・・・ＲＥＧＲｑ−１，ＲＥＧＲｑ，ＲＥＧＲｑ＋１，・・・から構成される。ｍ個のサブデータ回路・・・ＲＥＧＲｑ−１，ＲＥＧＲｑ，ＲＥＧＲｑ＋１，・・・は、ｍ本のビット線ＢＬ０，ＢＬ１，・・・ＢＬｍ−２，ＢＬｍ−１に対応している。
【００９０】
サブデータ回路ＲＥＧＲｑは、５個のデータ記憶部ＤＳ１，ＤＳ２，ＤＳ３，ＤＳ４，ＤＳ５を有している。これらデータ記憶部ＤＳ１，ＤＳ２，ＤＳ３，ＤＳ４，ＤＳ５を使用して、選択された１つのメモリセルに対して、２ビットデータのリード／ライトを実行する。サブデータ回路ＲＥＧＲｑは、ＮチャネルＭＯＳトランジスタＱｎ１，Ｑｎ５を経由して、ビット線ＢＬｑに接続される。
【００９１】
データ記憶部ＤＳ３は、プログラム時に、ライト動作を実行するか否かを決定するデータを一時的に記憶する機能を有し、リード時に、リードデータをセンスするセンスアンプＳ／Ａとして機能する。データ記憶部ＤＳ４は、リード／ライト時に、上位ビットＨＢを一時的に記憶する機能を有し、データ記憶部ＤＳ５は、リード／ライト時に、下位ビットＬＢを一時的に記憶する機能を有する。
【００９２】
▲２▼  サブデータ回路
図９は、サブデータ回路の主要部を示している。
サブデータ回路ＲＥＧＲｑの主要部は、データ記憶部ＤＳ３，ＤＳ４，ＤＳ５、ロジック回路ＬＧ、スイッチ回路ＳＷ１，ＳＷ２及びトランスファゲートトランジスタＴＧ１，ＴＧ２からなる。
【００９３】
データ記憶部（Ｓ／Ａ）ＤＳ３は、ビット線ＢＬｊに接続される。データ記憶部ＤＳ３は、上述のように、プログラム時において、ビット線ＢＬｊに接続される選択セルに対してライト動作を実行するか否かを決定するデータを一時的に記憶する。また、データ記憶部ＤＳ３は、リード時に、リードデータをセンスする。
【００９４】
データ記憶部ＤＳ３とリード／ライトデータ線（又はＩ／Ｏ線）ＲＤ，ｂＷＤとの間には、スイッチ回路ＳＷ１、データ記憶部ＤＳ４及びトランスファゲートトランジスタＴＧ１が直列接続されると共に、これらに並列して、スイッチ回路ＳＷ２、データ記憶部ＤＳ５及びトランスファゲートトランジスタＴＧ２が直列接続される。
【００９５】
データ記憶部ＤＳ４は、リード／ライト時において、シリアルアクセス動作によりトランスファゲートトランジスタＴＧ１がオン状態になると、リード／ライトデータ線ＲＤ，ｂＷＤに電気的に接続される。データ記憶部ＤＳ４は、上位ビット（リード／ライトデータ）ＨＢを一時的に記憶する。
【００９６】
データ記憶部ＤＳ５は、リード／ライト時において、シリアルアクセス動作によりトランスファゲートトランジスタＴＧ２がオン状態になると、リード／ライトデータ線ＲＤ，ｂＷＤに電気的に接続される。データ記憶部ＤＳ５は、下位ビット（リード／ライトデータ）ＬＢを一時的に記憶する。
【００９７】
スイッチ回路ＳＷ１のオン／オフは、制御信号ｔ１により制御され、スイッチ回路ＳＷ２のオン／オフは、例えば、ロジック回路ＬＧの出力信号ｓｈ２により制御される。ロジック回路ＬＧは、例えば、図１０に示すように、アンドゲート回路ＡＤ１，ＡＤ２及びノアゲート回路ＮＲ１から構成される。ロジック回路ＬＧは、上位ビットＨＢの値ｓｈ１及び制御信号ｔ２，ｔ３に基づいて、出力信号ｓｈ２を生成する。
【００９８】
制御信号ｔ１は、上位ビットＨＢに対するリード／ライト動作時に“Ｈ”となり、スイッチＳＷ１をオン状態にする。例えば、上述した「本発明の概要」におけるプログラム動作の第１ステップ及びリード動作の第１ステップにおいて、制御信号ｔ１は、“Ｈ”になる。
【００９９】
制御信号ｓｈ２は、下位ビットＬＢに対するリード／ライト動作時に“Ｈ”となる。
【０１００】
例えば、プログラム動作時において、上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢに対するプログラムデータの値が“１”（Ｎ３＝“Ｈ”）のときは、上述した「本発明の概要」における第２ステップにおいて、制御信号ｔ２が“Ｈ”になり、制御信号ｓｈ２が“Ｈ”になる。その結果、スイッチＳＷ２は、オン状態になる。上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢに対するプログラムデータの値が“０”（Ｎ３＝“Ｌ”）のときは、第２ステップにおいて、制御信号ｔ２が“Ｈ”になっても、制御信号ｓｈ２は、“Ｌ”を維持し続けるため、スイッチ回路ＳＷ２がオン状態になることはない。
【０１０１】
また、プログラム動作時において、上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢに対するプログラムデータの値が“０”（Ｎ３＝“Ｌ”）のときは、上述した「本発明の概要」における第３ステップにおいて、制御信号ｔ３が“Ｈ”になり、制御信号ｓｈ２が“Ｈ”になる。その結果、スイッチＳＷ２は、オン状態になる。上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢに対するプログラムデータの値が“１”（Ｎ３＝“Ｈ”）のときは、第３ステップにおいて、制御信号ｔ３が“Ｈ”になっても、制御信号ｓｈ２は、“Ｌ”を維持し続けるため、スイッチ回路ＳＷ２がオン状態になることはない。
【０１０２】
また、リード動作時において、上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢの値が“１”（Ｎ３＝“Ｌ”）のときは、上述した「本発明の概要」における第２ステップにおいて、制御信号ｔ３が“Ｈ”になり、制御信号ｓｈ２が“Ｈ”になる。その結果、スイッチＳＷ２は、オン状態になる。上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢの値が“０”（Ｎ３＝“Ｈ”）のときは、第２ステップにおいて、制御信号ｔ３が“Ｈ”になっても、制御信号ｓｈ２は、“Ｌ”を維持し続けるため、スイッチ回路ＳＷ２がオン状態になることはない。
【０１０３】
また、リード動作時において、上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢの値が“０”（Ｎ３＝“Ｈ”）のときは、上述した「本発明の概要」における第３ステップにおいて、制御信号ｔ２が“Ｈ”になり、制御信号ｓｈ２が“Ｈ”になる。その結果、スイッチＳＷ２は、オン状態になる。上位ビットラッチ回路ＨＢＬにラッチされた上位ビットＨＢの値が“１”（Ｎ３＝“Ｌ”）のときは、第３ステップにおいて、制御信号ｔ２が“Ｈ”になっても、制御信号ｓｈ２は、“Ｌ”を維持し続けるため、スイッチ回路ＳＷ２がオン状態になることはない。
【０１０４】
なお、同一ノード、例えば、Ｎ３又はＮ４（Ｎ５）に関し、プログラム時のロジックとリード時のロジックとが逆になっているので注意する。
【０１０５】
即ち、プログラムデータが“１”のときは、ｂＷＤ＝“０”、Ｎ３（又はＮ４（Ｎ５））＝“１”となり、プログラムデータが“０”のときは、ｂＷＤ＝“１”、Ｎ３（又はＮ４（Ｎ５））＝“０”となる。
【０１０６】
これに対し、リードデータが“１”のときは、Ｎ３（又はＮ４（Ｎ５））＝“０”、ＲＤ＝“１”となり、リードデータが“０”のときは、Ｎ３（又はＮ４（Ｎ５））＝“１”、ＲＤ＝“０”となる。
【０１０７】
プログラム動作時には、上位ビットＨＢに対するプログラムデータは、制御信号ＳＳＨｑによるシリアルアクセスにより、上位ビットラッチ回路（ＨＢＬ）ＤＳ４にラッチされ、下位ビットＬＢに対するプログラムデータは、制御信号ＳＳＬｑによるシリアルアクセスにより、下位ビットラッチ回路（ＬＢＬ）ＤＳ５にラッチされる。
【０１０８】
リード動作時には、上位ビットラッチ回路（ＨＢＬ）ＤＳ４にラッチされた上位ビット（リードデータ）ＨＢは、制御信号ＳＳＨｑによるシリアルアクセスにより、リード／ライトデータ線ＲＤ，ｂＷＤに出力され、下位ビットラッチ回路（ＬＢＬ）ＤＳ５にラッチされた下位ビット（リードデータ）ＬＢは、制御信号ＳＳＬｑによるシリアルアクセスにより、リード／ライトデータ線ＲＤ，ｂＷＤに出力される。
【０１０９】
▲３▼  サブデータ回路の回路例
図１１は、サブデータ回路の回路例を示している。
サブデータ回路ＲＥＧＲｑは、５つのデータ記憶部ＤＳ１，ＤＳ２，ＤＳ３，ＤＳ４，ＤＳ５を有している。
【０１１０】
データ記憶部ＤＳ１，ＤＳ２は、例えば、ディプレッションタイプＮチャネルＭＯＳキャパシタＣ１，Ｃ２から構成される。もちろん、データ記憶部ＤＳ１，ＤＳ２は、他のタイプのキャパシタであってもよいし、また、配線の浮遊容量で記憶部としての機能を十分に持たせることができるならば、積極的に容量素子（キャパシタ）を配線に付ける必要もない。
【０１１１】
データ記憶部ＤＳ１は、リード／ライトデータを保持する。ここで、本例では、上述のように、リードデータのロジックとライトデータのロジックが逆になっている点に注意する。
【０１１２】
即ち、リードデータが“１”のとき、ノードＮ２は、“０”となり、リードデータが“０”のとき、ノードＮ２は、“１”となる。プログラムデータが“１”のとき、ノードＮ２は、“１”となり、プログラムデータが“０”のとき、ノードＮ２は、“０”となる。
【０１１３】
このようなロジックの逆転に起因して、データ記憶部ＤＳ２が設けられている。即ち、“１”−プログラミング（閾値を変動させないプログラム）のときは、データ記憶部ＤＳ３は、“１”を記憶する（Ｎ２＝“１”）。しかし、“１”−プログラミングの場合、ベリファイリードは、Ｎ２＝“０”となる。このため、データ記憶部ＤＳ２は、ベリファイリード時に、ノードＮ２を、強制的に、“１”にし、再び、データ記憶部ＤＳ３に“１”を記憶させる再充電回路としての機能を有する。
【０１１４】
データ記憶部（Ｓ／Ａ）ＤＳ３は、ラッチ回路から構成される。このラッチ回路は、制御信号ＳＥＮ，ＳＥＮ’により電源電位の供給が制御されたクロスカップルフリップフロップ回路である。制御信号ＳＥＮ’は、制御信号ＳＥＮよりも少しだけ遅れた信号である。このようなタイミングのずれを設けることで、センス動作とラッチ動作とを確実に行うことができる。
【０１１５】
データ記憶部（ＨＢＬ）ＤＳ４は、制御信号ＬＡＴ１，ＬＡＴ１’により電源電位の供給が制御されたクロスカップルフリップフロップ回路から構成される。制御信号ＬＡＴ１’は、制御信号ＬＡＴ１よりも少しだけ遅れた信号であり、これにより、上位ビットＨＢのセンス動作とラッチ動作とを確実に行う。
【０１１６】
データ記憶部（ＬＢＬ）ＤＳ５は、制御信号ＬＡＴ２，ＬＡＴ２’により電源電位の供給が制御されたクロスカップルフリップフロップ回路から構成される。制御信号ＬＡＴ２’は、制御信号ＬＡＴ２よりも少しだけ遅れた信号であり、これにより、下位ビットＬＢのセンス動作とラッチ動作とを確実に行う。
【０１１７】
クロスカップルフリップフロップ回路の具体例は、図１２に示すようになる。
【０１１８】
ＭＯＳキャパシタＣ１の一端は、ＮチャネルＭＯＳトランジスタＱｎ５，Ｑｎ１を経由して、ビット線ＢＬｑに接続され、その他端は、接地点Ｖｓｓに接続される。
【０１１９】
ＭＯＳトランジスタＱｎ１は、イレーズ時に、イレーズ電位を遮断するためのトランジスタである。即ち、イレーズ時には、フローティングゲート電極から電子を放出させるため、メモリセルのチャネルが高電位（イレーズ電位）に設定される。この高電位がサブデータ回路ＲＥＧＲｑに転送されると、サブデータ回路ＲＥＧＲｑを構成する素子が破壊されるため、イレーズ時には、このＭＯＳトランジスタＱｎ１をオフ状態にして、高電位がサブデータ回路ＲＥＧＲｑに転送されることを防止する。リード／ライト時には、ＭＯＳトランジスタＱｎ１は、オン状態となる。
【０１２０】
ＭＯＳトランジスタＱｎ５は、リード時に、ビット線ＢＬｑのプリチャージレベルを決定するクランプトランジスタである。即ち、ＭＯＳトランジスタＱｎ５は、ビット線ＢＬｑのプリチャージレベルを、ＢＬＣＬＡＭＰからその閾値電圧分だけ下げた値に抑えて、ビット線ＢＬｑの電荷を放電させるスピードを速くしたり、ビット線ＢＬｑからデータ記憶部（Ｓ／Ａ）ＤＳ３への電荷転送の効率を向上させたり、電位状況によっては電荷転送を遮断したりする。
【０１２１】
本例では、ＭＯＳトランジスタＱｎ１，Ｑｎ２の間に１本のビット線ＢＬｑが接続された回路構成となっているが、ＭＯＳトランジスタＱｎ１，Ｑｎ２及びビット線ＢＬｑからなるユニットを、ｐ（ｐは、複数）個用意し、これらｐ個のユニットを、１つのサブデータ回路ＲＥＧＲｑに接続してもよい。この場合、後述するように、ｐ個のカラムバンクが形成される。カラムバンクの選択は、ＭＯＳトランジスタＱｎ１により行う。
【０１２２】
選択されたカラムバンク内におけるＭＯＳトランジスタＱｎ２は、制御信号ＢＩＡＳが“Ｌ”となるのを受けて、オフ状態となるのに対し、非選択のカラムバンク内におけるＭＯＳトランジスタＱｎ２は、制御信号ＢＩＡＳが“Ｈ”となり、オン状態となる。非選択のカラムバンク内におけるビット線ＢＬｑには、リードを高速に行うためのバイアス電位（シールド電位）が与えられる。
【０１２３】
ＮチャネルＭＯＳトランジスタＱｎ６は、ＭＯＳキャパシタＣ１の一端に接続される。ＭＯＳトランジスタＱｎ６は、ＭＯＳキャパシタＣ１の一端を、プリチャージ電位ＶＰＲＥに充電するための素子である。制御信号ＢＬＰＲＥが“Ｈ”のとき、ＭＯＳキャパシタＣ１の一端は、プリチャージ電位ＶＰＲＥに充電される。プリチャージ電位ＶＰＲＥは、電源電位Ｖｄｄよりも大きい。
【０１２４】
ＮチャネルＭＯＳトランジスタＱｎ７，Ｑｎ８は、直列接続され、その一端は、ＭＯＳキャパシタＣ１の一端に接続される。ＭＯＳトランジスタＱｎ７のゲートには、制御信号ＲＥＧが与えられる。ＭＯＳトランジスタＱｎ８のゲートは、ＭＯＳキャパシタＣ２の一端に接続され、そのソースには、ＶＲＥＧが与えられる。
【０１２５】
制御信号ＲＥＧが“Ｈ”、即ち、ＭＯＳトランジスタＱｎ７がオン状態のとき、ＭＯＳトランジスタＱｎ８は、データ記憶部ＤＳ２に記憶されたデータの値に応じて、オン状態又はオフ状態となる。つまり、ＭＯＳキャパシタＣ１の一端の電位は、データ記憶部ＤＳ２に記憶されたデータの値が“１”のときは、ベリファイリードによるリードデータの値にかかわらず、強制的に、ＶＲＥＧ（＝“Ｈ”）、即ち、“１”に設定される。
【０１２６】
例えば、データ記憶部ＤＳ２に記憶されたデータが“１”、即ち、ＭＯＳトランジスタＱｎ８のゲートレベルが“Ｈ”のときは、ＭＯＳトランジスタＱｎ８がオンになる。このため、制御信号ＲＥＧが“Ｈ”になると、ＭＯＳキャパシタＣ１の一端が強制的にＶＲＥＧに設定される。また、データ記憶部ＤＳ２に記憶されたデータが“０”、即ち、ＭＯＳトランジスタＱｎ８のゲートレベルが“Ｌ”のときは、ＭＯＳトランジスタＱｎ８は、オフである。このため、ＭＯＳキャパシタＣ１の一端の電位は、ＶＲＥＧに影響されることはない。
【０１２７】
データ記憶部（Ｓ／Ａ）ＤＳ３は、上述のように、クロスカップルフリップフロップ回路から構成される。データ記憶部ＤＳ３の出力ノードＮ７は、ＮチャネルＭＯＳトランジスタＱｎ１７のゲートに接続される。
【０１２８】
ＮチャネルＭＯＳトランジスタＱｎ１７は、データ記憶部ＤＳ３に記憶されたデータに基づいて、共通ノードＰＣＤのレベルを決定するための素子である。ここで、共通ノードＰＣＤとは、複数又は全てのサブデータ回路・・・，ＲＥＧＲｑ，・・・内のＭＯＳトランジスタＱｎ１７のドレインを共通接続したノードのことである。図１の一括検知回路１０は、共通ノードＰＣＤの電位に基づいて、ベリファイ判定を行う。
【０１２９】
例えば、“０”−プログラミング時、プログラムデータ（“０”−データ）は、データ記憶部ＤＳ３に記憶される。つまり、ノードＮ７は、“Ｈ”となるため、ＮチャネルＭＯＳトランジスタＱｎ１７は、オン状態となり、共通ノードＰＣＤのレベルを“Ｌ”にする。ベリファイリード時、メモリセルにきちんと“０”−データがライトされていれば、リードデータは、“１”になるため、データ記憶部ＤＳ３には、“１”−データが記憶される。つまり、ノードＮ７は、“Ｌ”になるため、ＮチャネルＭＯＳトランジスタＱｎ１７は、オフ状態となる。
【０１３０】
共通ノードＰＣＤの電位は、ベリファイ動作の度に、プリチャージされる。共通ノードＰＣＤに接続される複数のサブデータ回路・・・，ＲＥＧＲｑ，・・・内のＭＯＳトランジスタＱｎ１７の全てがオフ状態のとき、そのプリチャージが維持される。この場合、ライト動作を終了する（ステータス＝Ｐａｓｓ）。共通ノードＰＣＤに接続される複数のサブデータ回路・・・，ＲＥＧＲｑ，・・・内のＭＯＳトランジスタＱｎ１７の少なくとも１つがオン状態のとき、共通ノードＰＣＤの電位は、低下する。この場合、ライト動作を継続する。
【０１３１】
データ記憶部ＤＳ２とデータ記憶部ＤＳ３との間には、スイッチ素子としてのＮチャネルＭＯＳトランジスタＱｎ９が接続される。ＭＯＳトランジスタＱｎ９は、制御信号ＤＴＧにより制御され、データ記憶部ＤＳ３に記憶されたデータを、データ記憶部ＤＳ２に転送するために使用される。
【０１３２】
データ記憶部ＤＳ１とデータ記憶部（ＨＢＬ）ＤＳ４との間には、スイッチ素子としてのＮチャネルＭＯＳトランジスタＱ１が接続される。ＭＯＳトランジスタＱ１は、制御信号ｔ１により制御され、データ記憶部ＤＳ１とデータ記憶部ＤＳ４との間におけるデータの転送を実行するために使用される。ＭＯＳトランジスタＱ１は、図９のスイッチ回路ＳＷ１に相当する。
【０１３３】
データ記憶部ＤＳ１とデータ記憶部（ＬＢＬ）ＤＳ５のノードＮ４（＝Ｎ５）との間には、スイッチ素子としてのＮチャネルＭＯＳトランジスタＱ２，Ｑ４が接続される。ＭＯＳトランジスタＱ２は、制御信号ｔ２により制御される。ＭＯＳトランジスタＱ４は、データ記憶部ＤＳ４にラッチされたデータ、即ち、ノードＮ３の電位レベルによって制御される。
【０１３４】
データ記憶部ＤＳ１とデータ記憶部ＤＳ５のノードＮ５（＝Ｎ４）との間には、スイッチ素子としてのＮチャネルＭＯＳトランジスタＱ３，Ｑ５が接続される。ＭＯＳトランジスタＱ３は、制御信号ｔ３により制御される。ＭＯＳトランジスタＱ５は、データ記憶部ＤＳ４にラッチされたデータの値を反転させたデータ、即ち、ノードＮ６の電位レベルによって制御される。
【０１３５】
ＭＯＳトランジスタＱ２，Ｑ３，Ｑ４，Ｑ５は、図９のロジック回路ＬＧ及びスイッチ回路ＳＷ２に相当する。
【０１３６】
データ記憶部ＤＳ４は、トランスファゲートトランジスタとしてのＮチャネルＭＯＳトランジスタＴＧ１を経由して、リード／ライトデータ線（Ｉ／Ｏ線）ＲＤ，ｂＷＤに接続される。制御信号ＳＳＨｑは、上位ビット（論理上位ページデータ）ＨＢのシリアルアクセスを制御する信号である。
【０１３７】
また、データ記憶部ＤＳ５は、トランスファゲートトランジスタとしてのＮチャネルＭＯＳトランジスタＴＧ２を経由して、リード／ライトデータ線（Ｉ／Ｏ線）ＲＤ，ｂＷＤに接続される。制御信号ＳＳＬｑは、下位ビット（論理下位ページデータ）ＬＢのシリアルアクセスを制御する信号である。
【０１３８】
上述の説明においては、データに関しては、“０”と“１”が存在し、ノードのレベルに関しては、“Ｌ”と“Ｈ”が存在するが、両者の関係は、“０”が“Ｌ”に相当し、“１”が“Ｈ”に相当する。
【０１３９】
３．  基本動作の説明
以下では、リード、プログラムなどの各動作モードにおける４値ＮＡＮＤセル型フラッシュメモリ（図１）の主要部、特に、データ回路（図１１）の動作について詳細に説明する。
【０１４０】
動作の説明を行う前に、まず、メモリセルの閾値電圧の一例について簡単に説明する。
【０１４１】
(1)   メモリセルの閾値電圧
▲１▼  メモリセルの閾値帯
図１３は、４値ＮＡＮＤセル型フラッシュメモリのメモリセルの閾値帯を示している。
【０１４２】
１つのメモリセルには、２ビットデータ（４値データ）が記憶される。本例では、上述したように、２ビットデータを、“１１”、“１０”、“０１”、“００”とする。２ビットデータのうちの１ビットは、上位ビット（論理上位ページデータ）ＨＢとして、また、他の１ビットは、下位ビット（論理下位ページデータ）ＬＢとして、同一のメモリセルに記憶される。
【０１４３】
２ビットデータ（“１１”、“１０”、“０１”、“００”）とメモリセルの閾値電圧との関係は、図１３に示す関係になる。
【０１４４】
“１１”は、イレーズ状態である。イレーズ状態では、上位ビットＨＢの値及び下位ビットＬＢの値が、共に、“１”となっている。イレーズ状態のメモリセルは、負の閾値電圧Ｖｔｈを有する。
【０１４５】
“１０”、“０１”、“００”は、ライト状態である。ライト状態のメモリセルは、正の閾値電圧Ｖｔｈを有する。また、ライト状態のうち、“１０”状態は、最も低い閾値電圧を有し、“００”状態は、最も高い閾値電圧を有し、“０１”状態は、“１０”状態と“００”状態の間の閾値電圧を有する。
【０１４６】
Ｖｃｇｒ１０（＝Ｒ１）、Ｖｃｇｒ０１（＝Ｒ２）及びＶｃｇｒ００（＝Ｒ３）は、ノーマルリード時に、選択されたブロック内の選択されたワード線に与える電位であり、Ｖｒｅａｄ（＝Ｒ４）は、ノーマルリード時に、選択されたブロック内の非選択のワード線に与える電位である。
【０１４７】
メモリセルの閾値電圧がＶｃｇｒ１０未満であれば、メモリセルのデータは、“１１”であり、メモリセルの閾値電圧が、Ｖｃｇｒ１０を超え、Ｖｃｇｒ０１を下回る場合には、メモリセルのデータは、“１０”であり、メモリセルの閾値電圧が、Ｖｃｇｒ０１を超え、Ｖｃｇｒ００を下回る場合には、メモリセルのデータは、“０１”であり、メモリセルの閾値電圧がＶｃｇｒ００を超える場合には、メモリセルのデータは、“００”となる。
【０１４８】
Ｖｃｇｖ１０（＝Ｐ１）、Ｖｃｇｖ０１（＝Ｐ２）及びＶｃｇｖ００（＝Ｐ３）は、ベリファイリード時に、選択されたブロック内の選択されたワード線に与える電位であり、Ｖｒｅａｄ（＝Ｒ４）は、ベリファイリード時に、選択されたブロック内の非選択のワード線に与える電位である。
【０１４９】
例えば、Ｖｃｇｒ１０は、約０Ｖ、Ｖｃｇｒ０１は、約１Ｖ、Ｖｃｇｒ００は、約２Ｖに設定され、Ｖｃｇｖ１０は、約０．４Ｖ、Ｖｃｇｖ０１は、約１．４Ｖ、Ｖｃｇｖ００は、約２．４Ｖに設定される。
【０１５０】
２ビットデータは、上述のように、上位ビットＨＢと下位ビットＬＢとからなる。２ビットデータは、上位ビットＨＢに対するプログラム動作と下位ビットＬＢに対するプログラム動作とによって、メモリセルに書き込まれる。
【０１５１】
▲２▼  上位ビット（論理上位ページデータ）のプログラミング
当初、全てのメモリセルは、イレーズ状態、即ち、“１１”状態にあるものとする。この後、図１４に示すように、論理上位ページデータのプログラミングを行うと、メモリセルの閾値電圧Ｖｔｈの分布は、プログラムデータ（上位ビットＨＢ）の値（“１”又は“０”）に応じて、２つに分けられる。
【０１５２】
即ち、上位ビットＨＢに対するプログラムデータが“１”の場合には、ビット線を“Ｈ”にすることで（選択されたワード線は、プログラム電位Ｖｐｇｍ）、メモリセルのトンネル酸化膜に高電界がかからないようにし、メモリセルの閾値電圧Ｖｔｈの上昇を防止する。その結果、メモリセルは、イレーズ状態（“１１”状態）、即ち、閾値レベル０を維持する（上位ビットＨＢ＝“１”のプログラミング）。
【０１５３】
一方、上位ビットＨＢに対するプログラムデータが“０”の場合には、ビット線を“Ｌ”にすることで（選択されたワード線は、プログラム電位Ｖｐｇｍ）、メモリセルのトンネル酸化膜に高電界を印加し、フローティングゲート電極に電子を注入して、メモリセルの閾値電圧Ｖｔｈを所定量だけ上昇させる。その結果、メモリセルは、ライト状態（“０１”状態）、即ち、閾値レベル２に変化する（上位ビットＨＢ＝“０”のプログラミング）。
【０１５４】
▲３▼  下位ビット（論理下位ページデータ）のプログラミング
上位ビットＨＢのプログラミングを行った後、下位ビットＬＢのプログラミングが行われる。下位ビットＬＢのプログラミングは、２回のプログラム動作により実行される。
【０１５５】
まず、上位ビットＨＢが“１”のメモリセルに対してのみ、下位ビットＬＢに対するプログラミングを実行する。
【０１５６】
上位ビットＨＢが“１”のときには、プログラムデータを、例えば、図１１のデータ記憶部ＤＳ５からデータ記憶部ＤＳ３に転送する。上位ビットＨＢが“０”のときには、プログラムデータの値にかかわらず、データ記憶部ＤＳ３は、“１”を記憶した状態に設定される。
【０１５７】
図１５に示すように、上位ビットＨＢが“１”のメモリセルに対して、下位ビットＬＢとして、“１”をプログラミングする場合には、選択されたワード線がプログラム電位Ｖｐｇｍに設定されているため、ビット線を“Ｈ”に設定し、選択されたメモリセルのトンネル酸化膜に高電界がかからないようにする。その結果、選択されたメモリセルの閾値電圧Ｖｔｈの上昇を防止できる。
【０１５８】
従って、上位ビットＨＢが“１”であるメモリセル、即ち、“１１”状態（イレーズ状態）のメモリセルは、“１１”状態をそのまま維持する（下位ビットＬＢに対する“１”−プログラミング）。
【０１５９】
また、上位ビットＨＢが“１”のメモリセルに対して、下位ビットＬＢとして、“０”をプログラミングする場合には、選択されたワード線がプログラム電位Ｖｐｇｍに設定されているため、ビット線を“Ｌ”に設定し、選択されたメモリセルのトンネル酸化膜に高電界がかかるようにする。その結果、選択されたメモリセルの閾値電圧Ｖｔｈは、上昇する。
【０１６０】
従って、上位ビットＨＢが“１”であるメモリセル、即ち、“１１”状態（イレーズ状態）のメモリセルは、“１１”状態から“１０”状態に変化する（下位ビットＬＢに対する“０”−プログラミング）。
【０１６１】
次に、上位ビットＨＢが“０”のメモリセルに対してのみ、下位ビットＬＢに対するプログラミングを実行する。
【０１６２】
上位ビットＨＢが“０”のときには、プログラムデータを、例えば、図１１のデータ記憶部ＤＳ５からデータ記憶部ＤＳ３に転送する。上位ビットＨＢが“１”のときには、プログラムデータの値にかかわらず、データ記憶部ＤＳ３は、“１”を記憶した状態に設定される。
【０１６３】
図１６に示すように、上位ビットＨＢが“０”のメモリセルに対して、下位ビットＬＢとして、“１”をプログラミングする場合には、選択されたワード線がプログラム電位Ｖｐｇｍに設定されているため、ビット線を“Ｈ”に設定し、選択されたメモリセルのトンネル酸化膜に高電界がかからないようにする。その結果、選択されたメモリセルの閾値電圧Ｖｔｈの上昇を防止できる。
【０１６４】
従って、上位ビットＨＢが“０”であるメモリセル、即ち、“０１”状態のメモリセルは、“０１”状態をそのまま維持する（下位ビットＬＢに対する“１”−プログラミング）。
【０１６５】
また、上位ビットＨＢが“０”のメモリセルに対して、下位ビットＬＢとして、“０”をプログラミングする場合には、選択されたワード線がプログラム電位Ｖｐｇｍに設定されているため、ビット線を“Ｌ”に設定し、選択されたメモリセルのトンネル酸化膜に高電界がかかるようにする。その結果、選択されたメモリセルの閾値電圧Ｖｔｈは、上昇する。
【０１６６】
従って、上位ビットＨＢが“０”であるメモリセル、即ち、“０１”状態のメモリセルは、“０１”状態から“００”状態に変化する（下位ビットＬＢに対する“０”−プログラミング）。
【０１６７】
このように、２回のプログラミング動作により、メモリセルの閾値電圧Ｖｔｈの分布は、４つの状態（“１１”，“１０”，“０１”，“００”）に分けられる。上位ビットＨＢのプログラムは、１回のプログラム（ベリファイも含む）動作で完了させることができる。また、下位ビットＬＢのプログラムは、２回のプログラム（ベリファイも含む）動作を必要とするが、プログラム動作のためのデータリードや、リードデータとプログラムデータとのロジックをとる動作などを行う必要がない。従って、プログラム動作の時間を短縮でき、 1st アクセスタイムを２値フラッシュメモリのそれと同程度とすることができる。
【０１６８】
▲４▼  ライト動作時の電位関係
図１７は、ライト動作時に、メモリセル及びセレクトゲートトランジスタに与えられる電位の例を示している。
【０１６９】
ブロックＢＬＯＣＫｉが選択され、かつ、ブロックＢＬＯＣＫｉ内のワード線ＷＬ１−ｉに接続された各メモリセルに対して、プログラムデータをプログラムするものとする。
【０１７０】
ビット線ＢＬｍ−１，ＢＬｍ＋１は、非選択（Ｖｄｄ）となっているが、これは、ビット線ＢＬｍ−１，ＢＬｍ＋１に接続される選択されたメモリセルの閾値を上昇させない（“０”−プログラミングを行わない）ことを意味している。また、ビット線ＢＬｍは、選択（０Ｖ）となっているが、これは、ビット線ＢＬｍに接続される選択されたメモリセルの閾値を上昇させる（“０”−プログラミングを行う）ことを意味している。
【０１７１】
非選択のブロック内に属するワード線ＷＬ０−（ｉ−１），ＷＬ１５−（ｉ＋１）の全ては、フローティング状態に設定される。非選択のブロック内に属するセレクトゲート線ＳＧＤ−（ｉ−１），ＳＧＳ−（ｉ＋１）の全ては、０Ｖに設定される。
【０１７２】
選択されたブロックＢＬＯＣＫｉ内の選択されたワード線ＷＬ１−ｉには、プログラム電位Ｖｐｇｍが与えられ、選択されたブロックＢＬＯＣＫｉ内の非選択のワード線ＷＬ０−ｉ，ＷＬ２−ｉ，・・・ＷＬ１５−ｉには、転送電位Ｖｐａｓｓが与えられる。
【０１７３】
選択されたブロックＢＬＯＣＫｉ内のソース側セレクトゲート線ＳＧＳ−ｉは、０Ｖに設定され、選択されたブロックＢＬＯＣＫｉ内のドレイン側セレクトゲート線ＳＧＤ−ｉは、Ｖｄｄに設定される。
【０１７４】
ビット線ＢＬｍに接続されるメモリセルＡのチャネルは、０Ｖである。メモリセルＡのチャネルとワード線（コントロールゲート電極）ＷＬ１−ｉとの間には、高電界が発生するため、ＦＮトンネル現象により、メモリセルＡのフローティングゲート電極には、電子が注入される。その結果、メモリセルＡの閾値は、上昇する。
【０１７５】
ビット線ＢＬｍ−１，ＢＬｍ＋１に接続されるメモリセルＢ，Ｃのチャネルは、Ｖｄｄ−Ｖｔｈ（Ｖｔｈは、セレクトゲートトランジスタの閾値電圧）に充電された後、ドレイン側セレクトゲートトランジスタＳＧＤ−ｉがオフ状態となるため、フローティング状態となる。このため、メモリセルＢ，Ｃのチャネルとワード線（コントロールゲート電極）ＷＬ１−ｉとの間には、高電界が発生しない。従って、メモリセルＢ，Ｃのフローティングゲート電極には、電子が注入されず、メモリセルＢ，Ｃの閾値は、上昇しない。
【０１７６】
▲５▼  ベリファイ技術
フラッシュメモリを多値化するに当たって注意すべき点は、閾値分布の幅を十分に狭くして、閾値帯同士が近接し過ぎないようにすることにある。閾値分布の幅を狭くすることは、電源電位の低下や、リード動作の高速化などを実現するに当たって、重要となるからである。
【０１７７】
例えば、閾値分布の幅を狭くすると、リード時に、２つの閾値レベルの閾値差を大きくすることができるため、結果として、メモリセルの閾値とリファレンス電位との差を十分に確保できる。これは、メモリセルのセル電流を大きくできることを意味しており、リード動作の高速化に貢献できる。
【０１７８】
ここで、多値フラッシュメモリにおいて、閾値分布の幅を狭くし、閾値分布をシャープにする技術が、ベリファイ技術である。
【０１７９】
図１８は、ベリファイ技術の概要を示している。
【０１８０】
イレーズ後のメモリセルの閾値分布は、そのイレーズ特性を反映して、幅広（ブロード）な分布となっている（（ａ）参照）。この状態から、ライト動作を行い、メモリセルの閾値を少し上昇させると、その分布は、閾値の高い側へ平行移動するだけで、その分布の形状は、ほとんど変わらない。結果として、プログラム動作が終了した後のメモリセルの閾値分布も、幅広（ブロード）な分布となってしまう（（ｆ）のＡ参照）。
【０１８１】
そこで、ベリファイ技術を適用する。
ベリファイ技術の概要は、ＦＮトンネル電流によるフローティングゲート電極に対する電子の注入を複数回のライト動作により実行し、ライト動作が終了する度に、閾値が所定のレベル（ベリファイ電位）に達したか否かを確認し、閾値が所定のレベルに達したメモリセルについては、その後のライト動作を行わない、というものである。全てのメモリセルの閾値が所定のレベルに達したときに、プログラム動作を終了する。
【０１８２】
ベリファイ技術によれば、１回のライト動作によりフローティングゲート電極に注入される電子の量（閾値のシフト量）が少なく設定されるため、メモリセルの閾値は、少しずつ上昇する（（ｂ）〜（ｅ）参照）。
【０１８３】
また、閾値が所定のレベル（ベリファイ電位）に達したメモリセルについては、その後のライト動作を行わないため、全てのメモリセルに対してデータプログラムが完了した後の閾値分布は、幅の狭いシャープな分布となる（（ｆ）のＢ参照）。
【０１８４】
従って、多値フラッシュメモリにおいても、ベリファイ技術を適用すれば、例えば、図１３に示すように、複数の閾値帯の各閾値分布の幅を狭くすることができ、電源電位の低下や、リード動作の高速化などを実現できる。
【０１８５】
(2)   リード動作
リード動作について説明する。
【０１８６】
▲１▼  アルゴリズム
図１９は、リード動作のアルゴリズムを示している。
【０１８７】
まず、コマンドインターフェイス回路が、ホストマイコンから提供されるリードコマンドを確認すると、これを受けて、リードコマンドが、ステートマシン（制御回路）内に設定される（ステップＳ１）。
【０１８８】
また、アドレス信号が、ホストマイコンからメモリチップ内に供給されると、これを受けて、リードページを選択するためのアドレスが、ステートマシン内に設定される（ステップＳ２）。
【０１８９】
ステートマシン内に、リードコマンド及びアドレス信号が設定されると、ステートマシンによる制御の下で、ステップＳ３からステップＳ７までの動作が、自動的に実行される。
【０１９０】
上位ビット（論理上位ページデータ）ＨＢのリードを行う場合には、上述のように、１回のリード動作“ＲＥＡＤ０１”が実行される（ステップＳ３，Ｓ７）。ＲＥＡＤ０１では、選択されたブロック内において、選択されたワード線の電位は、Ｖｃｇｒ０１に設定され、非選択のワード線の電位は、Ｖｒｅａｄに設定される。
【０１９１】
選択されたメモリセルの上位ビットＨＢが“１”のときは、そのメモリセルの閾値は、Ｖｃｇｒ０１よりも低い。このため、選択されたメモリセルは、オン状態、非選択のメモリセルも、オン状態となり、ビット線の電位は、“Ｌ”となる。リードデータ（上位ビットＨＢ）は、上位ビットラッチ回路ＨＢＬにラッチされる。
【０１９２】
また、選択されたメモリセルの上位ビットＨＢが“０”のときは、そのメモリセルの閾値は、Ｖｃｇｒ０１よりも高い。このため、非選択のメモリセルは、オン状態であるが、選択されたメモリセルは、オフ状態であり、ビット線の電位は、“Ｈ”となる。リードデータ（上位ビットＨＢ）は、上位ビットラッチ回路ＨＢＬにラッチされる。
【０１９３】
ラッチ回路ＨＢＬにラッチされたリードデータは、例えば、下位ビット（論理下位ページデータ）ＬＢのリード動作の最中に、シリアルアクセスにより、リードデータ線ＲＤに転送される。
【０１９４】
下位ビット（論理下位ページデータ）ＬＢのリードを行う場合には、上述のように、上位ビットＨＢのリード“ＲＥＡＤ０１”が前提となると共に、さらに、２回のリード動作“ＲＥＡＤ１０”，“ＲＥＡＤ００”が実行される（ステップＳ３〜Ｓ６）。
【０１９５】
まず、上位ビットＨＢが“１”のメモリセルのみを対象としたリードＲＥＡＤ１０が行われる（ステップＳ５）。ＲＥＡＤ１０では、選択されたブロック内において、選択されたワード線の電位は、Ｖｃｇｒ１０に設定され、非選択のワード線の電位は、Ｖｒｅａｄに設定される。
【０１９６】
選択されたメモリセルの下位ビットＬＢが“１”のときは、そのメモリセルの閾値は、Ｖｃｇｒ１０よりも低い。このため、選択されたメモリセルは、オン状態、非選択のメモリセルも、オン状態となり、ビット線の電位は、“Ｌ”となる。リードデータ（下位ビットＬＢ）は、下位ビットラッチ回路ＬＢＬにラッチされる。
【０１９７】
また、選択されたメモリセルの下位ビットＬＢが“０”のときは、そのメモリセルの閾値は、Ｖｃｇｒ１０よりも高い。このため、非選択のメモリセルは、オン状態であるが、選択されたメモリセルは、オフ状態であり、ビット線の電位は、“Ｈ”となる。リードデータ（下位ビットＬＢ）は、下位ビットラッチ回路ＬＢＬにラッチされる。
【０１９８】
次に、上位ビットＨＢが“０”のメモリセルのみを対象としたリードＲＥＡＤ００が行われる（ステップＳ６）。ＲＥＡＤ００では、選択されたブロック内において、選択されたワード線の電位は、Ｖｃｇｒ００に設定され、非選択のワード線の電位は、Ｖｒｅａｄに設定される。
【０１９９】
選択されたメモリセルの下位ビットＬＢが“１”のときは、そのメモリセルの閾値は、Ｖｃｇｒ００よりも低い。このため、選択されたメモリセルは、オン状態、非選択のメモリセルも、オン状態となり、ビット線の電位は、“Ｌ”となる。リードデータ（下位ビットＬＢ）は、下位ビットラッチ回路ＬＢＬにラッチされる。
【０２００】
また、選択されたメモリセルの下位ビットＬＢが“０”のときは、そのメモリセルの閾値は、Ｖｃｇｒ００よりも高い。このため、非選択のメモリセルは、オン状態であるが、選択されたメモリセルは、オフ状態であり、ビット線の電位は、“Ｈ”となる。リードデータ（下位ビットＬＢ）は、下位ビットラッチ回路ＬＢＬにラッチされる。
【０２０１】
ラッチ回路ＬＢＬにラッチされたリードデータは、例えば、上位ビット（論理上位ページデータ）ＨＢのリード動作の最中に、シリアルアクセスにより、リードデータ線ＲＤに転送される。
【０２０２】
▲２▼  動作波形による動作説明
以下、図２０の動作タイミング図を用いて、具体的な動作説明を行う。
【０２０３】
リード動作には、上位ビット（論理上位ページデータ）のリード動作、下位ビット（論理下位ページデータ）のリード動作及びこれら両者のリード動作がある。上位ビットと下位ビットを続けて読み出す両者のリード動作は、下位ビットのリード動作と同じとなる。そこで、以下では、上位ビットのリード動作と下位ビットのリード動作について説明する。
【０２０４】
[1]   上位ビット（論理上位ページデータ）のリード動作
上位ビット（論理上位ページデータ）のリード動作は、１回のリード動作、即ち、“ＲＥＡＤ０１”からなる。
【０２０５】
[1]-1   “ＲＥＡＤ０１”
“ＲＥＡＤ０１”動作は、図２０及び図２１に示すように、リード電位（選択されたワード線ＷＬの電位）をＶｃｇｒ０１（例えば、１Ｖ）に設定し、メモリセルのデータが“１１”，“１０”であるか、又は、それ以外のデータ“０１”，“００”であるかを認識する動作である。
【０２０６】
[1]-1-1   データリード（期間Ｔ１）
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となる。また、制御信号ＢＬＣＬＡＭＰが、Ｖｃｌａｍｐ（例えば、２Ｖ）となり、制御信号ＢＬＳが、Ｖｓｇｈｈ（例えば、４．５Ｖ）となることで、ビット線ＢＬｑが、所定電位（例えば、１Ｖ程度）にプリチャージされる。
【０２０７】
この時、制御信号ＢＩＡＳは、“Ｌ”となっている。また、データ記憶部（センスラッチ）ＤＳ３の入力ノードも、同時に、プリチャージされる。
【０２０８】
制御信号ｔ１が“Ｈ”となるため、ＭＯＳトランジスタＱ１がオン状態となり、データ記憶部ＤＳ４のデータ記憶部ＤＳ３側のノードＮ３もプリチャージされる。ここで、データ記憶部ＤＳ４では、制御信号ＬＡＴ１，ＬＡＴ１’が“Ｌ”に設定されるため、非動作状態となっている。このため、プリチャージ電位がデータ記憶部ＤＳ４にラッチされることはない。
【０２０９】
プリチャージが終了すると、制御信号ｔ１が“Ｌ”になり、データ記憶部ＤＳ３とデータ記憶部ＤＳ４とが切り離される。
【０２１０】
この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｓ（例えば、０Ｖ）、制御信号ＢＬＰＲＥが“Ｌ”となり、ビット線ＢＬｑは、フローティング状態となる。また、ビット線側のセレクトゲート線及び非選択のワード線に、それぞれ、転送電位Ｖｒｅａｄ（例えば、４．５Ｖ）が与えられ、選択されたワード線ＷＬに、リード電位Ｖｃｇｒ０１が与えられる。
【０２１１】
そして、ソース線側のセレクトゲート線の電位が、転送電位Ｖｒｅａｄに設定されると、選択されたメモリセルの状態、即ち、そのメモリセルに記憶されたデータの値に応じて、ビット線ＢＬｑの電位に影響が表れる。
【０２１２】
即ち、選択されたメモリセルのデータが、“１１”、“１０”の場合には、リード電位Ｖｃｇｒ０１により、この選択されたメモリセルは、オン状態になる。このため、ビット線ＢＬｑの電荷が放電され、ビット線ＢＬｑの電位は、０．８Ｖ以下に低下する。
【０２１３】
一方、選択されたメモリセルのデータが、“０１”、“００”の場合には、リード電位Ｖｃｇｒ０１によっては、この選択されたメモリセルは、オン状態にならない。このため、ビット線ＢＬｑの電荷が放電されることはなく、ビット線ＢＬｑは、プリチャージ電位（約１Ｖ）を維持する。
【０２１４】
この後、制御信号ＳＥＮを“Ｈ”にし、その後、少ししてから制御信号ＳＥＮ’を“Ｈ”にすることで、上述のビット線ＢＬｑの電位変化を、データ記憶部（センスラッチ）ＤＳ３にラッチする。
【０２１５】
ビット線ＢＬｑの電位変化をデータ記憶部ＤＳ３にラッチする手法の一例としては、以下のようになる。
【０２１６】
まず、制御信号ＢＬＰＲＥを、４．５Ｖ程度、制御信号ＶＰＲＥを、Ｖｄｄ（例えば、３Ｖ）に設定することによって、データ記憶部ＤＳ１のキャパシタＣ１の一端、即ち、ノードＮ２を、Ｖｄｄに充電する。なお、図２０では、このステップを省略している。
【０２１７】
この後、制御信号ＢＬＣＬＡＭＰを、Ｖｓｅｎｓｅ（例えば、１．８Ｖ）にすると、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、次のように変化する。
【０２１８】
即ち、ビット線ＢＬｑの電位がプリチャージ電位（約１Ｖ）のままである場合（メモリセルのデータが“０１”，“００”の場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オフ状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、Ｖｄｄ（“Ｈ”）に維持される。
【０２１９】
一方、ビット線ＢＬｑの電位が０．８Ｖ以下である場合（メモリセルのデータが“１１”，“１０”の場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オン状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電荷は、ビット線ＢＬｑに放電され、その電位は、Ｖｄｄよりも低い値（“Ｌ”）に低下する。
【０２２０】
その結果、データ記憶部ＤＳ１（キャパシタＣ１の一端）には、リード電位Ｖｃｇｒ０１によるリードデータが記憶される。即ち、メモリセルのデータが“１１”，“１０”（上位ビットＨＢが“１”）の場合には、ノードＮ２は、“Ｌ”になり、このデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。また、メモリセルのデータが“０１”，“００”（上位ビットＨＢが“０”）の場合には、ノードＮ２は、“Ｈ”になり、このデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。
【０２２１】
この後、制御信号ｔ１が“Ｈ”になり、制御信号ＬＡＴ１が“Ｈ”になると、データ記憶部ＤＳ３のデータは、データ記憶部（ＨＢＬ）ＤＳ４に転送される。即ち、図２１に示すように、メモリセルのデータが“１１”，“１０”（上位ビットＨＢが“１”）の場合には、ノードＮ３は、“Ｌ”になり、メモリセルのデータが“１１”，“１０”（上位ビットＨＢが“１”）の場合には、ノードＮ３は、“Ｈ”になる。
【０２２２】
そして、制御信号ＬＡＴ１が“Ｈ”になった後、少ししてから制御信号ＬＡＴ１’が“Ｈ”になると、リードデータ（上位ビットＨＢ）がデータ記憶部ＤＳ４にラッチされる。
【０２２３】
[1]-2   シリアルアクセス
“ＲＥＡＤ０１”動作が終了し、１ページ分のリードデータ（上位ビットＨＢ）がデータ記憶部ＤＳ４にラッチされると、それ以降（図２０のＡ点以降）、シリアルアクセスによる上位ビットＨＢの出力、即ち、リードデータ線ＲＤへの転送が可能になる。
【０２２４】
シリアルアクセスは、図１１の制御信号ＳＳＨｑ（ｑ＝０，１，２，・・・）の値を、順次、“Ｈ”にすることにより実行する。
【０２２５】
なお、上位ビットＨＢに続けて下位ビットＬＢを読み出す場合には、例えば、上位ビット（論理上位ページデータ）ＨＢに対するシリアルアクセスを行っている最中に、以下に説明する下位ビット（論理下位ページデータ）ＬＢのリード動作（“ＲＥＡＤ１０”及び“ＲＥＡＤ００”）を実行する。
【０２２６】
[1]-3   まとめ
図２１は、上位ビット（論理上位ページデータ）ＨＢのリード動作におけるリードデータの流れを簡単に示したものである。
【０２２７】
上位ビットＨＢのリード動作は、“ＲＥＡＤ０１”を実行し、これによりメモリセルから読み出されたリードデータをデータ記憶部ＤＳ４にラッチすることにより容易に行える。
【０２２８】
即ち、４値フラッシュメモリにおける上位ビットＨＢのリード動作に関しては、２値フラッシュメモリにおけるリード動作と同じとなる。結果として、４値フラッシュメモリにおける 1st アクセスタイムは、２値フラッシュメモリにおけるそれと同程度となり、多値フラッシュメモリにおけるリード／ライトの高速化を実現できる。
【０２２９】
[2]   下位ビット（論理下位ページデータ）のリード動作
下位ビット（論理下位ページデータ）のリード動作は、上位ビットのリード動作“ＲＥＡＤ０１”を前提とし、さらに、２回のリード動作“ＲＥＡＤ１０”，“ＲＥＡＤ００”を必要とする。
【０２３０】
[2]-1   “ＲＥＡＤ０１”
“ＲＥＡＤ０１”動作については、既に、「上位ビットのリード動作」で説明したので、ここでは、省略する。
上位ビット（論理上位ページデータ）ＨＢは、図２２の▲１▼に示すように、データ記憶部（ＨＢＬ）ＤＳ４に記憶される。
【０２３１】
[1]-2   “ＲＥＡＤ１０”
“ＲＥＡＤ１０”動作は、図２０及び図２２の▲２▼に示すように、リード電位（選択されたワード線ＷＬの電位）をＶｃｇｒ１０（例えば、０Ｖ）に設定し、メモリセルのデータが“１１”であるか、又は、それ以外のデータ“１０”，“０１”，“００”であるかを認識する動作である。
【０２３２】
[2]-2-1   データリード（期間Ｔ２）
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となる。また、制御信号ＢＬＣＬＡＭＰが、Ｖｃｌａｍｐ（例えば、２Ｖ）となり、制御信号ＢＬＳが、Ｖｓｇｈｈ（例えば、４．５Ｖ）となることで、ビット線ＢＬｑが、所定電位（例えば、１Ｖ程度）にプリチャージされる。
【０２３３】
この時、制御信号ＢＩＡＳは、“Ｌ”となっている。また、データ記憶部（センスラッチ）ＤＳ３の入力ノードも、同時に、プリチャージされる。
【０２３４】
ここで、ＲＥＡＤ１０では、制御信号ｔ３が“Ｈ”となるため、ＭＯＳトランジスタＱ３がオン状態となる。
【０２３５】
この時、ＲＥＡＤ０１により読み出された上位ビットＨＢの値が“１”、即ち、データ記憶部ＤＳ４にラッチされたデータが“１”（ノードＮ３＝“Ｌ”、ノードＮ６＝“Ｈ”）であると、ＭＯＳトランジスタＱ５がオン状態となるため、データ記憶部ＤＳ５のデータ記憶部ＤＳ３側のノードＮ４（Ｎ５）もプリチャージされる。
【０２３６】
ここで、データ記憶部ＤＳ５では、制御信号ＬＡＴ１，ＬＡＴ１’が“Ｌ”に設定されるため、非動作状態となっている。このため、プリチャージ電位がデータ記憶部ＤＳ５にラッチされることはない。
【０２３７】
一方、ＲＥＡＤ０１により読み出された上位ビットＨＢの値が“０”、即ち、データ記憶部ＤＳ４にラッチされたデータが“０”（ノードＮ３＝“Ｈ”、ノードＮ６＝“Ｌ”）であると、ＭＯＳトランジスタＱ５がオフ状態となるため、データ記憶部ＤＳ５のノードＮ４（Ｎ５）は、データ記憶部ＤＳ３（ノードＮ２）から切り離された状態となり、プリチャージされない。
【０２３８】
プリチャージ期間が終了すると、制御信号ｔ３が“Ｌ”になり、データ記憶部ＤＳ３とデータ記憶部ＤＳ５とが切り離される。
【０２３９】
この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｓ（例えば、０Ｖ）、制御信号ＢＬＰＲＥが“Ｌ”となり、ビット線ＢＬｑは、フローティング状態となる。また、ビット線側のセレクトゲート線及び非選択のワード線に、それぞれ、転送電位Ｖｒｅａｄ（例えば、４．５Ｖ）が与えられ、選択されたワード線ＷＬに、リード電位Ｖｃｇｒ１０が与えられる。
【０２４０】
そして、ソース線側のセレクトゲート線の電位が、転送電位Ｖｒｅａｄに設定されると、選択されたメモリセルの状態、即ち、そのメモリセルに記憶されたデータの値に応じて、ビット線ＢＬｑの電位に影響が表れる。
【０２４１】
即ち、選択されたメモリセルのデータが、“１１”の場合には、リード電位Ｖｃｇｒ１０により、この選択されたメモリセルは、オン状態になる。このため、ビット線ＢＬｑの電荷が放電され、ビット線ＢＬｑの電位は、０．８Ｖ以下に低下する。
【０２４２】
一方、選択されたメモリセルのデータが、“１０”、“０１”、“００”の場合には、リード電位Ｖｃｇｒ１０によっては、この選択されたメモリセルは、オン状態にならない。このため、ビット線ＢＬｑの電荷が放電されることはなく、ビット線ＢＬｑは、プリチャージ電位（約１Ｖ）を維持する。
【０２４３】
この後、制御信号ＳＥＮを“Ｈ”にし、その後、少ししてから制御信号ＳＥＮ’を“Ｈ”にすることで、上述のビット線ＢＬｑの電位変化を、データ記憶部（センスラッチ）ＤＳ３にラッチする。ビット線ＢＬｑの電位変化をデータ記憶部ＤＳ３にラッチする手法としては、例えば、“ＲＥＡＤ０１”動作で説明した手法を用いる。
【０２４４】
メモリセルのデータが“１１”（下位ビットＬＢが“１”）の場合には、ノードＮ２は、“Ｌ”になり、このデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。また、メモリセルのデータが“１０”，“００”（下位ビットＬＢが“０”）の場合及びメモリセルのデータが“０１”（下位ビットＬＢが“１”）の場合には、ノードＮ２は、“Ｈ”になり、このデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。
【０２４５】
この後、制御信号ｔ３が“Ｈ”になり、制御信号ＬＡＴ２が“Ｈ”になると、データ記憶部ＤＳ３のデータは、上位ビットＨＢの値が“１”の場合（ノードＮ３＝“Ｌ”、ノードＮ６＝“Ｈ”）には、データ記憶部（ＬＢＬ）ＤＳ５に転送される。
【０２４６】
即ち、図２２の▲２▼に示すように、上位ビットＨＢの値が“１”の場合とは、メモリセルのデータが、“１１”，“１０”の場合のことである。メモリセルのデータが“１１”（下位ビットＬＢが“１”）の場合には、ノードＮ２が“Ｌ”であるため、ノードＮ４（Ｎ５）は、“Ｌ”になる。メモリセルのデータが“１０”（下位ビットＬＢが“０”）の場合には、ノードＮ２は、“Ｈ”であるため、ノードＮ４（Ｎ５）は、“Ｈ”になる。
【０２４７】
そして、制御信号ＬＡＴ２が“Ｈ”になった後、少ししてから制御信号ＬＡＴ２’が“Ｈ”になると、リードデータ（下位ビットＬＢ）がデータ記憶部ＤＳ５にラッチされる。
【０２４８】
なお、制御信号ｔ３が“Ｈ”になり、制御信号ＬＡＴ２が“Ｈ”になっても、上位ビットＨＢの値が“０”（“０１”，“００”）の場合（ノードＮ３＝“Ｈ”、ノードＮ６＝“Ｌ”）には、データ記憶部ＤＳ３のデータは、データ記憶部（ＬＢＬ）ＤＳ５に転送されることはない。ＭＯＳトランジスタＱ５がオフ状態だからである。
【０２４９】
[2]-3   “ＲＥＡＤ００”
“ＲＥＡＤ１０”動作を終えた後、続けて、“ＲＥＡＤ００”動作が実行される。“ＲＥＡＤ００”動作は、図２０及び図２２の▲３▼に示すように、リード電位（選択されたワード線ＷＬの電位）をＶｃｇｒ００（例えば、２Ｖ）に設定し、メモリセルのデータが“１１”，“１０”，“０１”であるか、又は、それ以外のデータ“００”であるかを認識する動作である。
【０２５０】
[2]-3-1   データリード（期間Ｔ３）
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となる。また、制御信号ＢＬＣＬＡＭＰが、Ｖｃｌａｍｐ（例えば、２Ｖ）となり、制御信号ＢＬＳが、Ｖｓｇｈｈ（例えば、４．５Ｖ）となることで、ビット線ＢＬｑが、所定電位（例えば、１Ｖ程度）にプリチャージされる。
【０２５１】
この時、制御信号ＢＩＡＳは、“Ｌ”となっている。また、データ記憶部（センスラッチ）ＤＳ３の入力ノードも、同時に、プリチャージされる。
【０２５２】
ここで、ＲＥＡＤ００では、制御信号ｔ２が“Ｈ”となるため、ＭＯＳトランジスタＱ２がオン状態となる。
【０２５３】
この時、ＲＥＡＤ０１により読み出された上位ビットＨＢの値が“０”、即ち、データ記憶部ＤＳ４にラッチされたデータが“０”（ノードＮ３＝“Ｈ”、ノードＮ６＝“Ｌ”）であると、ＭＯＳトランジスタＱ４がオン状態となるため、データ記憶部ＤＳ５のデータ記憶部ＤＳ３側のノードＮ４（Ｎ５）もプリチャージされる。
【０２５４】
ここで、データ記憶部ＤＳ５では、制御信号ＬＡＴ１，ＬＡＴ１’が“Ｌ”に設定されるため、非動作状態となっている。このため、プリチャージ電位がデータ記憶部ＤＳ５にラッチされることはない。
【０２５５】
一方、ＲＥＡＤ０１により読み出された上位ビットＨＢの値が“１”、即ち、データ記憶部ＤＳ４にラッチされたデータが“１”（ノードＮ３＝“Ｌ”、ノードＮ６＝“Ｈ”）であると、ＭＯＳトランジスタＱ４がオフ状態となるため、データ記憶部ＤＳ５のノードＮ４（Ｎ５）は、データ記憶部ＤＳ３（ノードＮ２）から切り離された状態となり、プリチャージされない。
【０２５６】
プリチャージ期間が終了すると、制御信号ｔ２が“Ｌ”になり、データ記憶部ＤＳ３とデータ記憶部ＤＳ５とが切り離される。
【０２５７】
この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｓ（例えば、０Ｖ）、制御信号ＢＬＰＲＥが“Ｌ”となり、ビット線ＢＬｑは、フローティング状態となる。また、ビット線側のセレクトゲート線及び非選択のワード線に、それぞれ、転送電位Ｖｒｅａｄ（例えば、４．５Ｖ）が与えられ、選択されたワード線ＷＬに、リード電位Ｖｃｇｒ００が与えられる。
【０２５８】
そして、ソース線側のセレクトゲート線の電位が、転送電位Ｖｒｅａｄに設定されると、選択されたメモリセルの状態、即ち、そのメモリセルに記憶されたデータの値に応じて、ビット線ＢＬｑの電位に影響が表れる。
【０２５９】
即ち、選択されたメモリセルのデータが、“１１”、“１０”、“０１”の場合には、リード電位Ｖｃｇｒ００により、この選択されたメモリセルは、オン状態になる。このため、ビット線ＢＬｑの電荷が放電され、ビット線ＢＬｑの電位は、０．８Ｖ以下に低下する。
【０２６０】
一方、選択されたメモリセルのデータが、“００”の場合には、リード電位Ｖｃｇｒ００によっては、この選択されたメモリセルは、オン状態にならない。このため、ビット線ＢＬｑの電荷が放電されることはなく、ビット線ＢＬｑは、プリチャージ電位（約１Ｖ）を維持する。
【０２６１】
この後、制御信号ＳＥＮを“Ｈ”にし、その後、少ししてから制御信号ＳＥＮ’を“Ｈ”にすることで、上述のビット線ＢＬｑの電位変化を、データ記憶部（センスラッチ）ＤＳ３にラッチする。ビット線ＢＬｑの電位変化をデータ記憶部ＤＳ３にラッチする手法としては、例えば、“ＲＥＡＤ０１”動作で説明した手法を用いる。
【０２６２】
メモリセルのデータが“１１”，“０１”（下位ビットＬＢが“１”）の場合及びメモリセルのデータが“１０”（下位ビットＬＢが“０”）の場合には、ノードＮ２は、“Ｌ”になり、このデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。また、メモリセルのデータが“００”（下位ビットＬＢが“０”）の場合には、ノードＮ２は、“Ｈ”になり、このデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。
【０２６３】
この後、制御信号ｔ２が“Ｈ”になり、制御信号ＬＡＴ２が“Ｈ”になると、データ記憶部ＤＳ３のデータは、上位ビットＨＢの値が“０”の場合（ノードＮ３＝“Ｈ”、ノードＮ６＝“Ｌ”）には、データ記憶部（ＬＢＬ）ＤＳ５に転送される。
【０２６４】
即ち、図２２の▲３▼に示すように、上位ビットＨＢの値が“０”の場合とは、メモリセルのデータが、“０１”，“００”の場合のことである。メモリセルのデータが“０１”（下位ビットＬＢが“１”）の場合には、ノードＮ２が“Ｌ”であるため、ノードＮ４（Ｎ５）は、“Ｌ”になる。メモリセルのデータが“００”（下位ビットＬＢが“０”）の場合には、ノードＮ２は、“Ｈ”であるため、ノードＮ４（Ｎ５）は、“Ｈ”になる。
【０２６５】
そして、制御信号ＬＡＴ２が“Ｈ”になった後、少ししてから制御信号ＬＡＴ２’が“Ｈ”になると、リードデータ（下位ビットＬＢ）がデータ記憶部ＤＳ５にラッチされる。
【０２６６】
なお、制御信号ｔ２が“Ｈ”になり、制御信号ＬＡＴ２が“Ｈ”になっても、上位ビットＨＢの値が“１”（“１１”，“１０”）の場合（ノードＮ３＝“Ｌ”、ノードＮ６＝“Ｈ”）には、データ記憶部ＤＳ３のデータは、データ記憶部（ＬＢＬ）ＤＳ５に転送されることはない。ＭＯＳトランジスタＱ４がオフ状態だからである。
【０２６７】
[2]-4   シリアルアクセス
“ＲＥＡＤ１０”及び“ＲＥＡＤ００”動作が終了し、１ページ分のリードデータ（下位ビットＬＢ）がデータ記憶部ＤＳ５にラッチされると、それ以降（図２０のＢ点以降）、シリアルアクセスによる下位ビットＬＢの出力、即ち、リードデータ線ＲＤへの転送が可能になる。
【０２６８】
シリアルアクセスは、図１１の制御信号ＳＳＬｑ（ｑ＝０，１，２，・・・）の値を、順次、“Ｈ”にすることにより実行する。
【０２６９】
なお、上位ビットＨＢのリードと下位ビットＬＢのリードとを複数回繰り返し行う場合には、例えば、下位ビット（論理下位ページデータ）ＬＢに対するシリアルアクセスを行っている最中に、上述した上位ビット（論理上位ページデータ）ＨＢのリード動作（“ＲＥＡＤ０１”）を実行する。
【０２７０】
[2]-5   まとめ
図２２は、下位ビット（論理下位ページデータ）ＬＢのリード動作におけるリードデータの流れを簡単に示したものである。
【０２７１】
下位ビットＬＢのリード動作は、まず、上位ビットＨＢに対するリード動作、即ち、“ＲＥＡＤ０１”を実行し、このリードデータをデータ記憶部（Higher Bit Latch) ＤＳ４に記憶する（▲１▼）。この後、上位ビットＨＢの値に依存する２回のリード動作“ＲＥＡＤ１０”，“ＲＥＡＤ００”を実行し、このリードデータをデータ記憶部（Lower Bit Latch) ＤＳ５に記憶する。
【０２７２】
４値フラッシュメモリにおける下位ビットＬＢのリード動作に関しては、上述のように、少ない信号数により、かつ、簡単な動作手法により、行うことができる。結果として、４値フラッシュメモリにおける 1st アクセスタイムの短縮によるリード／ライトの高速化を実現できる。
【０２７３】
(3)   プログラム動作
次に、プログラム動作について説明する。
プログラム動作は、上位ビットＨＢに対するプログラム動作と下位ビットＬＢに対するプログラム動作とから構成される。まず、上位ビットＨＢに対するプログラム動作を行い、この後、上位ビットＨＢの値を考慮しながら、下位ビットＬＢに対するプログラム動作を行う。
【０２７４】
▲１▼  上位ビットＨＢに対するプログラム
[1]   アルゴリズム
図２３は、上位ビットＨＢに対するプログラム動作のアルゴリズムの一例を示している。
まず、コマンドインターフェイス回路が、ホストマイコンから提供されるデータ入力コマンドを受け取り、これを受けて、データ入力コマンドが、ステートマシン（制御回路）内に設定される（ステップＳ１）。
【０２７５】
また、アドレス信号が、ホストマイコンからメモリチップ内に供給されると、これを受けて、プログラムの対象となるページを選択するためのアドレスが、ステートマシン内に設定される（ステップＳ２）。
【０２７６】
そして、上位ビットに対する１ページ分のプログラムデータが、データ入出力バッファを経由して、メモリチップ内に入力される。これら１ページ分のプログラムデータは、シリアルアクセスにより、データ記憶部（Higher Bit Latch）ＤＳ４に記憶される（ステップＳ３）。
【０２７７】
この後、コマンドインターフェイス回路が、ホストマイコンから提供されるライトコマンドを確認すると、これを受けて、ライトコマンドが、ステートマシン内に設定される（ステップＳ４）。
【０２７８】
その結果、ステートマシンによる制御の下で、図２３におけるステップＳ５からステップＳ１２までの動作及び図３３におけるステップＳ１４からステップＳ２３までの動作が、自動的に実行される。
【０２７９】
まず、データ記憶部ＤＳ４に記憶されているプログラムデータが、データ記憶部ＤＳ２，ＤＳ３にそれぞれコピーされる（ステップＳ５）。即ち、プログラムデータが“１”の場合には、ノードＮ２，Ｎ８は、“Ｈ”になり、プログラムデータが“０”の場合には、ノードＮ２，Ｎ８は、“Ｌ”になる。
【０２８０】
この後、ライト電圧Ｖｐｇｍが、例えば、１２Ｖ程度に設定され、ステートマシーン内のプログラムカウンタの値ＰＣが０に設定される。なお、プログラムカウンタの値ＰＣは、ライト動作の回数を表している。
【０２８１】
次に、ライト動作を実行する（ステップＳ６）。
データ記憶部ＤＳ３に記憶されたプログラムデータが“０”の場合には、例えば、基板とフローティングゲート電極との間に高電圧を与え、フローティングゲート電極に電子を注入し、メモリセルの閾値電圧を上げる (“0”-programming)。データ記憶部ＤＳ３に記憶されたプログラムデータが“１”の場合には、例えば、基板とフローティングゲート電極との間に高電圧が与えられないようにし、フローティングゲート電極に対する電子の注入を防止し、メモリセルの閾値電圧を変化させない (“1”-programming)。
【０２８２】
このライト動作を行った後に、プログラムカウンタの値ＰＣに“１”を加える（ステップＳ６）。
【０２８３】
この後、データ記憶部ＤＳ３に記憶されたデータに基づいて、プログラムベリファイが Pass の状態（プログラムが完了している状態）になっているか、又は、NGの状態（プログラムが完了していない状態）になっているかを判定する（ステップＳ７）。
【０２８４】
ここで、最初のライト動作の直後においては、“Ｖｅｒｉｆｙ０１”は、一度も行われていないため、データ記憶部ＤＳ３は、プログラムデータそのものを記憶している。
【０２８５】
全てのカラム内のデータ記憶部ＤＳ３が“１”を記憶している場合、即ち、上位ビットＨＢに対するプログラムデータが全て“１”の場合には、全てのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オフ状態であり、図１１のＰＣＤは、“Ｈ”を維持する。
【０２８６】
従って、プログラムベリファイが Pass の状態（プログラムが完了している状態）になっていると判断される（ステップＳ１１）。
【０２８７】
これに対して、少なくとも１つのカラム内のデータ記憶部ＤＳ３が“０”を記憶している場合、即ち、上位ビットＨＢに対するプログラムデータの少なくとも１つが“０”の場合には、“０”を記憶するデータ記憶部ＤＳ３に接続されるＮチャネルＭＯＳトランジスタＱｎ１７（図１１）は、オン状態であり、例えば、図１１のＰＣＤのレベルは、“Ｌ”になる。
【０２８８】
従って、プログラムベリファイが NG の状態（プログラムが完了していない状態）になっていると判断され、“Ｖｅｒｉｆｙ０１”へ移行する（ステップＳ８）。
【０２８９】
“Ｖｅｒｉｆｙ０１”とは、プログラムの対象となる選択されたメモリセルに対して、リード電位Ｖｃｇｖ０１（図１３参照）を用いてリード動作を実行し、このリード動作により得られるリードデータとデータ記憶部ＤＳ２のデータ（プログラムデータ）とに基づいて、データ記憶部ＤＳ３に新たに記憶するデータの値を決定する動作のことである。
【０２９０】
上位ビットＨＢに対するプログラムの場合、当初は、プログラムの対象となる選択された全てのメモリセルは、“１１”状態になっている。このため、 “1”-programming の対象となるメモリセル（“１”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関しては、閾値電圧の変動はないため、“Ｖｅｒｉｆｙ０１”により読み出されるリードデータは、常に、“０”である。
【０２９１】
従って、データ記憶部ＤＳ１には、“０”が記憶される。しかし、後述するように、データ記憶部ＤＳ２に“１”が記憶されている場合には、データ記憶部ＤＳ１のデータは、リードデータにかかわらず、強制的に、“１”に変更させられる。つまり、この“１”−データが、データ記憶部ＤＳ１から、再び、データ記憶部ＤＳ３に記憶される。
【０２９２】
一方、“0”-programming の対象となるメモリセル（“０”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関しては、ライト動作（ステップＳ６）により十分に閾値電圧が上昇（プログラムが完了）している場合には、“Ｖｅｒｉｆｙ０１”により読み出されるリードデータは、“１”となる。
【０２９３】
従って、データ記憶部ＤＳ１には、“１”が記憶される。この“１”−データは、データ記憶部ＤＳ１からデータ記憶部ＤＳ３に転送される。つまり、データ記憶部ＤＳ３のデータは、“０”から“１”に変わる。
【０２９４】
データ記憶部ＤＳ３のデータが“１”になった以降は、“0”-programming の対象となるメモリセルであっても、ライト動作による閾値の上昇が行われないため、結果として、 “0”-programming が不十分なメモリセルのみが、 “0”-programming の対象となり、幅狭（シャープ）な閾値分布を実現できる。
【０２９５】
また、 “0”-programming の対象となるメモリセル（“０”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関し、ライト動作（ステップＳ６）により十分に閾値電圧が上昇していない（プログラムが完了していない）場合には、“Ｖｅｒｉｆｙ０１”により読み出されるリードデータは、“０”となる。
【０２９６】
従って、データ記憶部ＤＳ１には、“０”が記憶される。この“０”−データは、データ記憶部ＤＳ１からデータ記憶部ＤＳ３に転送される。つまり、データ記憶部ＤＳ３のデータは、“０”を維持する。
【０２９７】
データ記憶部ＤＳ３のデータが“０”を維持する限り、原則として、ライト動作による “0”-programming が継続される。
【０２９８】
この後、もし、プログラムカウンタの値ＰＣが、予め設定された最大ライト回数 ＰＣ ｍａｘ に達したならば、ステートマシーン内のステータスレジスタに、 Fail （プログラム不良）を設定し、プログラム動作を終了する（ステップＳ９，Ｓ１２）。
【０２９９】
また、もし、プログラムカウンタの値ＰＣが、予め設定された最大ライト回数ＰＣ ｍａｘ よりも小さいならば、ライト電圧Ｖｐｇｍを、例えば、０．２Ｖ程度上昇（ステップアップ）させた後、再度、ライト動作を実行する（ステップＳ９，Ｓ１０，Ｓ６）。
【０３００】
この後、プログラムベリファイが行われるが（ステップＳ７）、上述したように、“1”-programming の場合には、データ記憶部ＤＳ３のデータは、常に、“１”となっている。また、“0”-programming の場合には、“0”-programming が完了している場合には、データ記憶部ＤＳ３のデータは、“０”から“１”に変更され、“0”-programming が完了していない場合のみに、データ記憶部ＤＳ３のデータは、“０”を維持する。
【０３０１】
従って、プログラムの対象となる選択された全てのメモリセルに対して、プログラミング（“1”-programming 又は “0”-programming ）が完了している場合には、全てのデータ記憶部ＤＳ３が“１”−データを記憶することになる。つまり、全てのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オフ状態であり、図１１のＰＣＤが“Ｈ”（プログラムベリファイが Pass の状態）となる（ステップＳ１１）。
【０３０２】
また、プログラムの対象となる選択されたメモリセルの少なくとも１つに対して、プログラミング（“0”-programming ）が完了していない場合には、少なくとも１つのデータ記憶部ＤＳ３が“０”−データを記憶していることになる。つまり、少なくとも１つのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オン状態となり、図１１のＰＣＤが“Ｌ”（プログラムベリファイが NG の状態）となって、再び、ベリファイリードとライト動作が繰り返される（ステップＳ６〜Ｓ１０）。
【０３０３】
このように、データ記憶部ＤＳ３に記憶されたデータに基づいて、プログラムが完了したか否かを判断する。
【０３０４】
[2]   動作波形による動作説明
以下、動作タイミング図を用いて、具体的な動作説明を行う。
【０３０５】
[2]-1   シリアルアクセス動作
まず、上位ビットに対する１ページ分のプログラムデータが、データ入出力バッファを経由して、メモリチップ内にシリアルに入力される。これら１ページ分のプログラムデータは、シリアルアクセスにより、データ記憶部（Higher Bit Latch）ＤＳ４に記憶される。
【０３０６】
このシリアルアクセス動作は、後述するデータ記憶部（センスラッチ）ＤＳ３の入力ノードのプリチャージが完了する前に終了させる。
【０３０７】
なお、本例では、データ記憶部ＤＳ４に入力される前のライトデータ線ｂＷＤ上のデータは、プログラムデータの値を反転させた値を有する。但し、データ記憶部ＤＳ４から出力されるデータの値は、プログラムデータの値に等しい。
【０３０８】
[2]-2   ＤＳ４からＤＳ２，ＤＳ３へのコピー動作：  期間Ｔ１前半
図２５は、データ記憶部ＤＳ４からデータ記憶部ＤＳ２，ＤＳ３へのプログラムデータのコピー動作におけるデータの流れを示している。
【０３０９】
このコピー動作は、図２３のステップＳ５に相当する。
【０３１０】
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となることで、データ記憶部（センスラッチ）ＤＳ３の入力ノードがプリチャージされる。このプリチャージは、データ記憶部ＤＳ４に記憶されたプログラムデータを、データ記憶部ＤＳ２，ＤＳ３に転送するための準備動作としての意味を有する。
【０３１１】
プリチャージが終了した後、制御信号ｔ１が“Ｈ”に設定される。この時、ＮチャネルＭＯＳトランジスタＱ１は、オン状態となり、データ記憶部ＤＳ３とデータ記憶部ＤＳ４が電気的に接続される。
【０３１２】
そして、もし、データ記憶部ＤＳ４（ノードＮ３）が、プログラムデータとして“１”（＝“Ｈ”）を記憶していれば、データ記憶部ＤＳ３の入力ノードは、“Ｈ”を維持する。また、もし、データ記憶部ＤＳ４（ノードＮ３）が、プログラムデータとして“０”（＝“Ｌ”）を記憶していれば、データ記憶部ＤＳ３の入力ノードは、“Ｈ”から“Ｌ”に変化する（▲１▼）。
【０３１３】
この後、制御信号ＳＥＮを“Ｈ”にし、かつ、これに少し遅れてから制御信号ＳＥＮ’を“Ｈ”にすることで、データ記憶部ＤＳ４のプログラムデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。また、制御信号ＤＴＧを“Ｈ”に設定することで、データ記憶部ＤＳ４のプログラムデータは、データ記憶部ＤＳ２にも記憶される（▲２▼）。
【０３１４】
この時点では、データ記憶部ＤＳ２，ＤＳ３には、それぞれ同じデータ、即ち、上位ビットＨＢに対するプログラムデータが記憶される。この後、制御信号ｔ１が“Ｌ”になり、制御信号ＤＴＧが“Ｌ”になることで、データ記憶部ＤＳ２，ＤＳ３，ＤＳ４は、それぞれ電気的に切り離される。
【０３１５】
なお、ＤＳ４からＤＳ２，ＤＳ３へのコピー動作は、全てのカラムのデータ回路において同時に行われる。
【０３１６】
[2]-3   ライト動作 (Write)  ：期間Ｔ１後半
図２６は、ライト動作におけるデータの流れを示している。
【０３１７】
ライト動作は、図２３のステップＳ６に相当する。
【０３１８】
まず、制御信号ＢＬＣＬＡＭＰが、４．５Ｖ程度に設定される。また、制御信号ＢＬＳが４．５Ｖになると、ビット線ＢＬｑとデータ記憶部ＤＳ３とが電気的に接続される。
【０３１９】
データ記憶部ＤＳ３（ノードＮ２）のデータが“１”の場合、ビット線ＢＬｑは、Ｖｄｄに充電される。また、データ記憶部ＤＳ３（ノードＮ２）のデータが“０”の場合、ビット線ＢＬｑは、Ｖｓｓ（０Ｖ）に充電される。
【０３２０】
この後、非選択のワード線に、Ｖｐａｓｓ、例えば、１０Ｖが与えられ、選択されたワード線に、Ｖｐｇｍ（例えば、最初は、１２Ｖ程度。ライト回数に応じて、例えば、０．２Ｖずつ上昇させる。）が与えられる。その結果、メモリセルに対するプログラミングが実行される。
【０３２１】
例えば、データ記憶部ＤＳ３に記憶されているデータが“１”の場合、ビット線ＢＬｑは、Ｖｄｄであり、メモリセルのチャネルは、例えば、Ｖｄｄ−Ｖｔｈ（セレクトゲートトランジスタの閾値電圧）で、かつ、フローティング状態となる。その結果、選択されたワード線（コントロールゲート電極）とメモリセルのチャネルとの間の電位差は、メモリセルのフローティングゲート電極に電子を注入するのに十分な値とはならない。
【０３２２】
これに対し、データ記憶部ＤＳ３に記憶されているデータが“０”の場合、ビット線ＢＬｑは、０Ｖであり、メモリセルのチャネルも、０Ｖとなる。その結果、選択されたワード線（コントロールゲート電極）とメモリセルのチャネルとの間の電位差は、メモリセルのフローティングゲート電極に電子を注入するのに十分な値となる。
【０３２３】
従って、データ記憶部ＤＳ３に記憶されているデータが“１”の場合には、メモリセルの閾値電圧は、上昇することなく、また、データ記憶部ＤＳ３に記憶されているデータが“０”の場合には、メモリセルの閾値電圧は、上昇する。
【０３２４】
ライト動作が終了すると、制御信号ＳＥＮ，ＳＥＮ’は、“Ｌ”に設定されるため、データ記憶部ＤＳ３の状態は、リセットされる。
【０３２５】
[2]-4   ベリファイ動作 (Verify 01)  ：期間Ｔ２
図２７は、ベリファイリードにおけるデータの流れを示している。
【０３２６】
ベリファイ動作は、ベリファイリードと Completion Detection とからなる。Completion Detection とは、ベリファイリードにより読み出されたデータに基づいて、選択された全てのメモリセルに対してデータプログラムが完了したか否かを検出する動作のことである。
【０３２７】
ベリファイリードは、図２３のステップＳ８に相当し、 Completion Detection は、図２３のステップＳ７に相当する。
【０３２８】
ベリファイリードは、ライト動作後に行われ、メモリセルの閾値電圧が所定のレベルに達したか否かを判断する (Completion Detection) ためのデータを、メモリセルから読み出す動作のことである。
【０３２９】
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となる。また、制御信号ＢＬＣＬＡＭＰが、Ｖｃｌａｍｐ（例えば、２Ｖ）となり、制御信号ＢＬＳが、Ｖｓｇｈｈ（例えば、４．５Ｖ）となることで、ビット線ＢＬｑは、ＶＰＲＥ（＝Ｖｄｄ）に電気的に接続される。
【０３３０】
その結果、ビット線ＢＬｑは、ＮチャネルＭＯＳトランジスタＱｎ５の閾値電圧で制限される所定の電位、例えば、１Ｖ程度にプリチャージされる。
【０３３１】
この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｓ（例えば、０Ｖ）、制御信号ＢＬＰＲＥが“Ｌ”となり、ビット線ＢＬｑは、フローティング状態となる。
【０３３２】
なお、この時、データ記憶部ＤＳ３の入力ノード、即ち、ノードＮ２は、ＶＰＲＥ（＝Ｖｄｄ）にプリチャージされる。
【０３３３】
ビット線側のセレクトゲート線及び非選択のワード線に、それぞれ、転送電位Ｖｒｅａｄ（例えば、４．５Ｖ）が与えられ、選択されたワード線に、ベリファイリード電位Ｖｃｇｖ０１（図１３参照）が与えられる。ソース線側のセレクトゲート線の電位が、転送電位Ｖｒｅａｄに設定されると、選択されたメモリセルの状態、即ち、そのメモリセルの現在の閾値電圧に応じて、ビット線ＢＬｑの電位に影響が表れる。
【０３３４】
即ち、選択されたメモリセルの閾値電圧が、選択されたワード線の電位（ベリファイリード電位）Ｖｃｇｖ０１よりも低い場合には、このベリファイリード電位Ｖｃｇｖ０１により、選択されたメモリセルは、オン状態になる。このため、ビット線ＢＬｑの電荷が放電され、ビット線ＢＬｑの電位は、０．８Ｖ以下に低下する（選択ブロック内の非選択のメモリセルは、Ｖｒｅａｄにより、オン状態である。）。
【０３３５】
一方、選択されたメモリセルの閾値電圧が、ベリファイリード電位Ｖｃｇｖ０１よりも高い場合には、このベリファイリード電位Ｖｃｇｖ０１により、選択されたメモリセルは、オン状態になることがない。このため、このため、ビット線ＢＬｑの電荷が放電されることはなく、ビット線ＢＬｑは、プリチャージ電位（約１Ｖ）を維持する。
【０３３６】
制御信号ＢＬＰＲＥが、４．５Ｖ程度になり、制御信号ＶＰＲＥが、Ｖｄｄ（例えば、３Ｖ）になることによって、データ記憶部ＤＳ１のキャパシタＣ１の一端、即ち、ノードＮ２は、Ｖｄｄに充電される。この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｅｎｓｅ（例えば、１．８Ｖ）になると、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、以下のように変化する。
【０３３７】
即ち、ビット線ＢＬｑの電位がプリチャージ電位（約１Ｖ）のままである場合（メモリセルの閾値電圧がＶｃｇｖ０１よりも高い場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オフ状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、Ｖｄｄ（“Ｈ”）に維持される。
【０３３８】
一方、ビット線ＢＬｑの電位が０．８Ｖ以下である場合（メモリセルの閾値電圧がＶｃｇｖ０１よりも低い場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オン状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電荷は、ビット線ＢＬｑに放電され、その電位は、Ｖｄｄよりも低い値（“Ｌ”）に低下する。
【０３３９】
その結果、データ記憶部ＤＳ１（キャパシタＣ１の一端）には、ベリファイリード電位Ｖｃｇｖ０１によるリードデータが記憶される。即ち、メモリセルの閾値電圧がＶｃｇｖ０１よりも低い場合（ ”1”-programming 又は ”0”-programming未完了 ）には、“Ｌ”、つまり、“０”が、データ記憶部ＤＳ１に記憶され、メモリセルの閾値電圧がＶｃｇｖ０１よりも高い場合（ ”0”-programming完了 ）には、“Ｈ”、つまり、“１”が、データ記憶部ＤＳ１に記憶される。
【０３４０】
そして、制御信号ＳＥＮを“Ｈ”にし、かつ、これに少し遅れてから制御信号ＳＥＮ’を“Ｈ”にすることで、データ記憶部ＤＳ１のデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。
【０３４１】
ここで、データ記憶部ＤＳ３は、上述のライト動作が終了した後に、制御信号ＳＥＮ，ＳＥＮ’が“Ｌ”になることで、その状態がリセットされている。このため、ベリファイリード後に、データ記憶部ＤＳ３には、ベリファイリードの結果に応じたデータが再び記憶される。
【０３４２】
この後、制御信号ＶＲＥＧが“Ｈ”になる。また、制御信号ＲＥＧが、例えば、４．５Ｖになると、ＮチャネルＭＯＳトランジスタＱｎ７がオン状態になるため、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）の電位は、データ記憶部ＤＳ２に記憶されたデータに影響を受ける。
【０３４３】
例えば、データ記憶部ＤＳ２に記憶されたデータ（プログラムデータ）が“１”である場合には、ＮチャネルＭＯＳトランジスタＱｎ８は、オン状態であり、ＶＲＥＧ（＝Ｖｄｄ）が、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）に転送される。
【０３４４】
この場合、上述のベリファイリードにより読み出されたデータの値にかかわらず、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）の電位は、強制的に、“Ｈ”、即ち、“１”に設定される。このため、データ記憶部ＤＳ３に記憶されるデータ（ノードＮ２）も、強制的に、“１”に設定される。
【０３４５】
また、データ記憶部ＤＳ２に記憶されたデータ（プログラムデータ）が“０”である場合には、ＮチャネルＭＯＳトランジスタＱｎ８は、オフ状態であり、ＶＲＥＧ（＝Ｖｄｄ）が、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）に転送されることはない。つまり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、変化しない。
【０３４６】
つまり、データ記憶部ＤＳ３に記憶されるデータ（ノードＮ２）は、ベリファイリードの結果に応じたデータとなる。
【０３４７】
この後、データ記憶部ＤＳ３に記憶されたデータに基づいて、Completion Detection が実行される。即ち、データ記憶部ＤＳ３に記憶されたデータ（１ページ分）の全てが、“１”となっている場合（ ”1”-programming 又は ”0”-programming完了 ）には、全てのカラムにおいて、ノードＮ７は、“Ｌ”であり、ＭＯＳトランジスタＱｎ１７は、オフ状態である。
【０３４８】
従って、図１１のＰＣＤは、“Ｈ”を維持し、ステータスがＰａｓｓとなるため、プログラム動作を終了する。
【０３４９】
データ記憶部ＤＳ３に記憶されたデータ（１ページ分）の少なくとも１つが、“０”となっている場合（”0”-programming未完了 ）には、少なくとも１つのカラムにおいて、ノードＮ７は、“Ｈ”であり、ＭＯＳトランジスタＱｎ１７は、オン状態である。
【０３５０】
従って、図１１のＰＣＤは、“Ｌ”となるため、ベリファイ結果のステータスがＰａｓｓとなるまで、ライト動作とベリファイ動作を繰り返す。但し、ライト動作の回数が所定回数ＰＣｍａｘを越えたら、ステータスＮＧとして、プログラム動作を終了する。
【０３５１】
ここで、ライト動作とベリファイ動作とを繰り返す場合において、”0”-programming動作は、”0”-programmingが未完了のメモリセルに対してのみ実行される。即ち、”0”-programmingが完了したメモリセルに対しては、その後、”0”-programmingが実行されることはない。
【０３５２】
また、ライト動作（期間Ｔ１）とベリファイ動作（期間Ｔ２）とを繰り返す場合において、２回目のライト動作以降については、ライト動作の直前のプリチャージ動作（期間Ｔ１前半に相当）は、行わない。
【０３５３】
なぜなら、１回目のライト動作では、プログラムデータを、ＤＳ４からＤＳ２，ＤＳ３へ転送するために、ノードＮ２をプリチャージしておく必要があるのに対し、２回目以降のライト動作では、その直前に行われるベリファイ動作時に、ノードＮ２がプリチャージされ、ベリファイリードによるリードデータがデータ記憶部ＤＳ３に転送されるからである。
【０３５４】
そして、この後のライト動作は、このデータ記憶部ＤＳ３に記憶されたデータに基づいて行われるため、２回目のライト動作以降については、ライト動作の直前に、プリチャージ動作を行う必要がない。
【０３５５】
▲２▼  下位ビットＬＢに対するプログラム
下位ビットＬＢに対するプログラムは、上位ビットＨＢに対するプログラムが終了した後に行われ、かつ、上位ビットＨＢの値に対応して２回のプログラム動作からなる。
【０３５６】
即ち、１回目のプログラム動作は、上位ビットＨＢが“１”のメモリセルに対するプログラム動作であり、２回目のプログラム動作は、上位ビットＨＢが“０”のメモリセルに対するプログラム動作である。但し、この順序は、当然に、入れ替えても構わない。
【０３５７】
[1]   上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作のアルゴリズム
図２８は、上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作のアルゴリズムの一例を示している。
但し、２回のライト動作に関し、ステップＳ１〜Ｓ４は、共通部分であり、１回だけ行われる。
【０３５８】
まず、コマンドインターフェイス回路が、ホストマイコンから提供されるデータ入力コマンドを受け取り、これを受けて、データ入力コマンドが、ステートマシン（制御回路）内に設定される（ステップＳ１）。
【０３５９】
また、アドレス信号が、ホストマイコンからメモリチップ内に供給されると、これを受けて、プログラムの対象となるページを選択するためのアドレスが、ステートマシン内に設定される（ステップＳ２）。
【０３６０】
そして、下位ビットに対する１ページ分のプログラムデータが、データ入出力バッファを経由して、メモリチップ内に入力される。これら１ページ分のプログラムデータは、シリアルアクセスにより、データ記憶部（Lower Bit Latch）ＤＳ５に記憶される（ステップＳ３）。
【０３６１】
この後、コマンドインターフェイス回路が、ホストマイコンから提供されるライトコマンドを確認すると、これを受けて、ライトコマンドが、ステートマシン内に設定される（ステップＳ４）。
【０３６２】
その結果、ステートマシンによる制御の下で、図２８におけるステップＳ５からステップＳ１２までの動作（上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作）、さらに、図３３におけるステップＳ１４からステップＳ２３までの動作（上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラム動作）が、自動的に実行される。
【０３６３】
まず、選択されたメモリセルの上位ビットＨＢの値が“１”であるか否かを確認し、“１”である場合には、データ記憶部ＤＳ５に記憶されているプログラムデータを、データ記憶部ＤＳ２，ＤＳ３にそれぞれコピーする（ステップＳ５〜Ｓ６）。
【０３６４】
即ち、選択されたメモリセルの上位ビットＨＢの値が“１”である場合、即ち、既に行われた上位ビットＨＢに対するプログラム動作において、上位ビットＨＢに対するプログラムデータが“１”であった場合には、下位ビットＬＢに対するプログラムデータが“１”のときは、ノードＮ２，Ｎ８を“Ｈ”に設定し、下位ビットＬＢに対するプログラムデータが“０”のときは、ノードＮ２，Ｎ８を“Ｌ”に設定する。
【０３６５】
また、選択されたメモリセルの上位ビットＨＢの値が“０”である場合、即ち、既に行われた上位ビットＨＢに対するプログラム動作において、上位ビットＨＢに対するプログラムデータが“０”であった場合には、データ記憶部ＤＳ２，ＤＳ３の値は、データ記憶部ＤＳ５に記憶されているプログラムデータの値にかかわらず、“１”に設定される（ステップＳ７）。
【０３６６】
この後、ライト電圧Ｖｐｇｍが、例えば、１２Ｖ程度に設定され、ステートマシーン内のプログラムカウンタの値ＰＣが０に設定される。なお、プログラムカウンタの値ＰＣは、ライト動作の回数を表している。
【０３６７】
次に、ライト動作を実行する（ステップＳ８）。
データ記憶部ＤＳ３に記憶されたプログラムデータが“０”の場合には、例えば、基板とフローティングゲート電極との間に高電圧を与え、フローティングゲート電極に電子を注入し、メモリセルの閾値電圧を上げる (“0”-programming)。データ記憶部ＤＳ３に記憶されたプログラムデータが“１”の場合には、例えば、基板とフローティングゲート電極との間に高電圧が与えられないようにし、フローティングゲート電極に対する電子の注入を防止し、メモリセルの閾値電圧を変化させない (“1”-programming)。
【０３６８】
このライト動作を行った後に、プログラムカウンタの値ＰＣに“１”を加える（ステップＳ８）。
【０３６９】
この後、データ記憶部ＤＳ３に記憶されたデータに基づいて、プログラムベリファイが Pass の状態（プログラムが完了している状態）になっているか、又は、NGの状態（プログラムが完了していない状態）になっているかを判定する（ステップＳ９）。
【０３７０】
ここで、最初のライト動作の直後においては、“Ｖｅｒｉｆｙ１０”は、一度も行われていないため、データ記憶部ＤＳ３は、プログラムデータそのものを記憶している。
【０３７１】
全てのカラム内のデータ記憶部ＤＳ３が“１”を記憶している場合、即ち、下位ビットＬＢに対するプログラムデータが全て“１”の場合には、全てのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オフ状態であり、図１１のＰＣＤは、“Ｈ”を維持する。
【０３７２】
従って、プログラムベリファイが Pass の状態（プログラムが完了している状態）になっていると判断されるため、後述する２回目のライト動作に進むことができる（ステップＳ９）。
【０３７３】
これに対して、少なくとも１つのカラム内のデータ記憶部ＤＳ３が“０”を記憶している場合、即ち、下位ビットＬＢに対するプログラムデータの少なくとも１つが“０”の場合には、“０”を記憶するデータ記憶部ＤＳ３に接続されるＮチャネルＭＯＳトランジスタＱｎ１７（図１１）は、オン状態であり、例えば、図１１のＰＣＤのレベルは、“Ｌ”になる。
【０３７４】
従って、プログラムベリファイが NG の状態（プログラムが完了していない状態）になっていると判断され、“Ｖｅｒｉｆｙ１０”へ移行する（ステップＳ９〜Ｓ１０）。
【０３７５】
“Ｖｅｒｉｆｙ１０”とは、プログラムの対象となる選択されたメモリセルに対して、リード電位Ｖｃｇｖ１０（図１３参照）を用いてリード動作を実行し、このリード動作により得られるリードデータとデータ記憶部ＤＳ２のデータ（プログラムデータ）とに基づいて、データ記憶部ＤＳ３に新たに記憶するデータの値を決定する動作のことである。
【０３７６】
上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラムの場合、全ての選択されたメモリセルのうち、下位ビットＬＢのプログラムの対象となるメモリセルは、“１１”状態になっている（上位ビットＨＢに対するプログラムが終了した時点では、メモリセルの状態は、“１１”状態か、又は、“０１”状態である。）。
【０３７７】
このため、 “1”-programming の対象となるメモリセル（“１”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関しては、閾値電圧の変動はないため、“１１”状態を維持し、“Ｖｅｒｉｆｙ１０”により読み出されるリードデータは、常に、“０”である。
【０３７８】
従って、データ記憶部ＤＳ１には、“０”が記憶される。しかし、後述するように、データ記憶部ＤＳ２に“１”が記憶されている場合には、データ記憶部ＤＳ１のデータは、リードデータにかかわらず、強制的に、“１”に変更させられる。つまり、この“１”−データが、データ記憶部ＤＳ１から、再び、データ記憶部ＤＳ３に記憶される。
【０３７９】
一方、“0”-programming の対象となるメモリセル（“０”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関しては、ライト動作（ステップＳ８）により十分に閾値電圧が上昇（プログラムが完了）している場合、即ち、“１１”状態（閾値レベル０）から“１０”状態（閾値レベル１）に移行した場合には、“Ｖｅｒｉｆｙ１０”により読み出されるリードデータは、“１”となる。
【０３８０】
従って、データ記憶部ＤＳ１には、“１”が記憶される。この“１”−データは、データ記憶部ＤＳ１からデータ記憶部ＤＳ３に転送される。つまり、データ記憶部ＤＳ３のデータは、“０”から“１”に変わる。
【０３８１】
また、“0”-programming の対象となるメモリセル（“０”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関し、ライト動作（ステップＳ８）により十分に閾値電圧が上昇していない（プログラムが完了していない）場合、即ち、“１１”状態（閾値レベル０）から“１０”状態（閾値レベル１）に移行していない場合には、“Ｖｅｒｉｆｙ１０”により読み出されるリードデータは、“０”となる。
【０３８２】
従って、データ記憶部ＤＳ１には、“０”が記憶される。この“０”−データは、データ記憶部ＤＳ１からデータ記憶部ＤＳ３に転送される。つまり、データ記憶部ＤＳ３のデータは、“０”を維持する。
【０３８３】
この後、もし、プログラムカウンタの値ＰＣが、予め設定された最大ライト回数 ＰＣ ｍａｘ に達したならば、ステートマシーン内のステータスレジスタに、 Fail （プログラム不良）を設定し、プログラム動作を終了する（ステップＳ１１，Ｓ１３）。
【０３８４】
また、もし、プログラムカウンタの値ＰＣが、予め設定された最大ライト回数ＰＣ ｍａｘ よりも小さいならば、ライト電圧Ｖｐｇｍを、例えば、０．２Ｖ程度上昇（ステップアップ）させた後、再度、ライト動作を実行する（ステップＳ８，Ｓ１１，Ｓ１２）。
【０３８５】
この後、プログラムベリファイが行われるが（ステップＳ９）、上述したように、“1”-programming の場合（この時点では、上位ビットＨＢが“０”のメモリセルに対しては、全て、“1”-programming となる。）には、データ記憶部ＤＳ３のデータは、常に、“１”となっている。また、“0”-programming の場合には、“0”-programming が完了している場合には、データ記憶部ＤＳ３のデータは、“０”から“１”に変更され、“0”-programming が完了していない場合のみに、データ記憶部ＤＳ３のデータは、“０”を維持する。
【０３８６】
従って、上位ビットＨＢが“１”のメモリセルに対して、プログラミング（“1”-programming 又は “0”-programming ）が完了している場合には、全てのデータ記憶部ＤＳ３が“１”−データを記憶することになる。つまり、全てのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オフ状態であり、図１１のＰＣＤが“Ｈ”（プログラムベリファイが Pass の状態）となる（ステップＳ９）。
【０３８７】
この場合、後述する上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラム動作が実行される（図３３）。
【０３８８】
また、上位ビットＨＢが“１”のメモリセルの少なくとも１つに対して、プログラミング（“0”-programming ）が完了していない場合には、その少なくとも１つのデータ記憶部ＤＳ３が“０”−データを記憶していることになる。つまり、少なくとも１つのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オン状態となり、図１１のＰＣＤが“Ｌ”（プログラムベリファイがNG の状態）となって、再び、ベリファイリードとライト動作が繰り返される（ステップＳ８〜Ｓ１２）。
【０３８９】
このように、１回目のプログラム動作では、上位ビットＨＢが“１”のメモリセルのみに対して下位ビットＬＢのプログラムが実行され、この時、上位ビットＨＢが“０”のメモリセルに対しては、下位ビットＬＢのプログラムが実行されることはない。
【０３９０】
[2]   動作波形による動作説明
以下、動作タイミング図を用いて、具体的な動作説明を行う。
【０３９１】
[2]-1   シリアルアクセス動作
まず、下位ビットに対する１ページ分のプログラムデータが、データ入出力バッファを経由して、メモリチップ内にシリアルに入力される。これら１ページ分のプログラムデータは、シリアルアクセスにより、データ記憶部（Lower Bit Latch）ＤＳ５に記憶される。
【０３９２】
このシリアルアクセス動作は、後述するデータ記憶部（センスラッチ）ＤＳ３の入力ノードのプリチャージが完了する前に終了させる。例えば、このシリアルアクセス動作は、上述の上位ビット（論理上位ページデータ）ＨＢに対するプログラム動作の最中に行っておく。
【０３９３】
なお、本例では、データ記憶部ＤＳ５に入力される前のライトデータ線ｂＷＤ上のデータは、プログラムデータの値を反転させた値を有する。但し、データ記憶部ＤＳ５から出力されるデータの値は、プログラムデータの値に等しい。
【０３９４】
[2]-2   ＤＳ５からＤＳ２，ＤＳ３へのコピー動作：  期間Ｔ１前半
図３０は、データ記憶部ＤＳ５からデータ記憶部ＤＳ２，ＤＳ３へのプログラムデータのコピー動作におけるデータの流れを示している。
【０３９５】
このコピー動作は、図２８のステップＳ６に相当する。
【０３９６】
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となることで、データ記憶部（センスラッチ）ＤＳ３の入力ノードがプリチャージされる。このプリチャージは、データ記憶部ＤＳ５に記憶されたプログラムデータを、データ記憶部ＤＳ２，ＤＳ３に転送するための準備動作としての意味を有する。
【０３９７】
プリチャージが終了した後、制御信号ｔ２が“Ｈ”に設定される。この時、ＮチャネルＭＯＳトランジスタＱ２がオン状態となる。
【０３９８】
このため、上述した上位ビットＨＢに対するプログラム動作において、プログラムデータの値が“１”の場合、即ち、データ記憶部 (Higher Bit Latch) ＤＳ４の出力ノードＮ３が“Ｈ”の場合（Ａ）には、ＭＯＳトランジスタＱ４がオン状態となり、データ記憶部ＤＳ３とデータ記憶部ＤＳ５が電気的に接続される。
【０３９９】
そして、もし、データ記憶部ＤＳ５（ノードＮ４，Ｎ５）が、プログラムデータとして“１”（＝“Ｈ”）を記憶していれば、データ記憶部ＤＳ３の入力ノードは、“Ｈ”を維持する。また、もし、データ記憶部ＤＳ５（ノードＮ４，Ｎ５）が、プログラムデータとして“０”（＝“Ｌ”）を記憶していれば、データ記憶部ＤＳ３の入力ノードは、“Ｈ”から“Ｌ”に変化する（▲１▼）。
【０４００】
なお、上述した上位ビットＨＢに対するプログラム動作において、プログラムデータの値が“０”の場合、即ち、データ記憶部 (Higher Bit Latch) ＤＳ４の出力ノードＮ３が“Ｌ”の場合（Ｂ）には、ＭＯＳトランジスタＱ４がオフ状態となるため、データ記憶部ＤＳ３とデータ記憶部ＤＳ５が電気的に接続されることはない。
【０４０１】
従って、上位ビットＨＢが“０”のメモリセルに対応するデータ記憶部ＤＳ３の入力ノードは、プリチャージ電位、即ち、“Ｈ”を維持する。
【０４０２】
この後、制御信号ＳＥＮを“Ｈ”にし、かつ、これに少し遅れてから制御信号ＳＥＮ’を“Ｈ”にすることで、データ記憶部ＤＳ５のプログラムデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。また、制御信号ＤＴＧを“Ｈ”に設定することで、データ記憶部ＤＳ５のプログラムデータは、データ記憶部ＤＳ２にも記憶される（▲２▼）。
【０４０３】
この時点では、データ記憶部ＤＳ２，ＤＳ３には、それぞれ同じデータ、即ち、下位ビットＬＢに対するプログラムデータが記憶される。この後、制御信号ｔ２が“Ｌ”になり、制御信号ＤＴＧが“Ｌ”になることで、データ記憶部ＤＳ２，ＤＳ３，ＤＳ５は、それぞれ電気的に切り離される。
【０４０４】
なお、ＤＳ５からＤＳ２，ＤＳ３へのコピー動作は、全てのカラムのデータ回路において同時に行われる。
【０４０５】
[2]-3   ライト動作 (Write)  ：期間Ｔ１後半
図３１は、ライト動作におけるデータの流れを示している。
【０４０６】
ライト動作は、図２８のステップＳ８に相当する。
【０４０７】
まず、制御信号ＢＬＣＬＡＭＰが、４．５Ｖ程度に設定される。また、制御信号ＢＬＳが４．５Ｖになると、ビット線ＢＬｑとデータ記憶部ＤＳ３とが電気的に接続される。
【０４０８】
データ記憶部ＤＳ３（ノードＮ２）のデータが“１”の場合、ビット線ＢＬｑは、Ｖｄｄに充電される。また、データ記憶部ＤＳ３（ノードＮ２）のデータが“０”の場合、ビット線ＢＬｑは、Ｖｓｓ（０Ｖ）に充電される。
【０４０９】
この後、非選択のワード線に、Ｖｐａｓｓ、例えば、１０Ｖが与えられ、選択されたワード線に、Ｖｐｇｍ（例えば、最初は、１２Ｖ程度。ライト回数に応じて、例えば、０．２Ｖずつ上昇させる。）が与えられる。その結果、メモリセルに対するプログラミングが実行される。
【０４１０】
例えば、データ記憶部ＤＳ３に記憶されているデータが“１”の場合、ビット線ＢＬｑは、Ｖｄｄであり、メモリセルのチャネルは、例えば、Ｖｄｄ−Ｖｔｈ（セレクトゲートトランジスタの閾値電圧）で、かつ、フローティング状態となる。その結果、選択されたワード線（コントロールゲート電極）とメモリセルのチャネルとの間の電位差は、メモリセルのフローティングゲート電極に電子を注入するのに十分な値とはならない。
【０４１１】
これに対し、データ記憶部ＤＳ３に記憶されているデータが“０”の場合、ビット線ＢＬｑは、０Ｖであり、メモリセルのチャネルも、０Ｖとなる。その結果、選択されたワード線（コントロールゲート電極）とメモリセルのチャネルとの間の電位差は、メモリセルのフローティングゲート電極に電子を注入するのに十分な値となる。
【０４１２】
従って、データ記憶部ＤＳ３に記憶されているデータが“１”の場合には、メモリセルの閾値電圧は、上昇することなく、また、データ記憶部ＤＳ３に記憶されているデータが“０”の場合には、メモリセルの閾値電圧は、上昇する。
【０４１３】
ライト動作が終了すると、制御信号ＳＥＮ，ＳＥＮ’は、“Ｌ”に設定されるため、データ記憶部ＤＳ３の状態は、リセットされる。
【０４１４】
[2]-4   ベリファイ動作 (Verify 10)  ：期間Ｔ２
図３２は、ベリファイリードにおけるデータの流れを示している。
【０４１５】
ベリファイ動作は、ベリファイリードと Completion Detection とからなる。
【０４１６】
ベリファイリードは、図２８のステップＳ１０に相当し、 Completion Detection は、図２８のステップＳ９に相当する。
【０４１７】
ベリファイリードでは、ライト動作後に、メモリセルの閾値電圧が所定のレベルに達したか否かを判断する (Completion Detection) ためのデータを、メモリセルから読み出す。
【０４１８】
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となる。また、制御信号ＢＬＣＬＡＭＰが、Ｖｃｌａｍｐ（例えば、２Ｖ）となり、制御信号ＢＬＳが、Ｖｓｇｈｈ（例えば、４．５Ｖ）となることで、ビット線ＢＬｑは、ＶＰＲＥ（＝Ｖｄｄ）に電気的に接続される。
【０４１９】
その結果、ビット線ＢＬｑは、ＮチャネルＭＯＳトランジスタＱｎ５の閾値電圧で制限される所定の電位、例えば、１Ｖ程度にプリチャージされる。
【０４２０】
この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｓ（例えば、０Ｖ）、制御信号ＢＬＰＲＥが“Ｌ”となり、ビット線ＢＬｑは、フローティング状態となる。
【０４２１】
なお、この時、データ記憶部ＤＳ３の入力ノード、即ち、ノードＮ２は、ＶＰＲＥ（＝Ｖｄｄ）にプリチャージされる。
【０４２２】
ビット線側のセレクトゲート線及び非選択のワード線に、それぞれ、転送電位Ｖｒｅａｄ（例えば、４．５Ｖ）が与えられ、選択されたワード線に、ベリファイリード電位Ｖｃｇｖ１０（図１３参照）が与えられる。ソース線側のセレクトゲート線の電位が、転送電位Ｖｒｅａｄに設定されると、選択されたメモリセルの状態、即ち、そのメモリセルの現在の閾値電圧に応じて、ビット線ＢＬｑの電位に影響が表れる。
【０４２３】
即ち、選択されたメモリセルの閾値電圧が、選択されたワード線の電位（ベリファイリード電位）Ｖｃｇｖ１０よりも低い場合には、このベリファイリード電位Ｖｃｇｖ１０により、選択されたメモリセルは、オン状態になる。このため、ビット線ＢＬｑの電荷が放電され、ビット線ＢＬｑの電位は、０．８Ｖ以下に低下する（選択ブロック内の非選択のメモリセルは、Ｖｒｅａｄにより、オン状態である。）。
【０４２４】
一方、選択されたメモリセルの閾値電圧が、ベリファイリード電位Ｖｃｇｖ１０よりも高い場合には、このベリファイリード電位Ｖｃｇｖ１０により、選択されたメモリセルは、オン状態になることがない。このため、このため、ビット線ＢＬｑの電荷が放電されることはなく、ビット線ＢＬｑは、プリチャージ電位（約１Ｖ）を維持する。
【０４２５】
制御信号ＢＬＰＲＥが、４．５Ｖ程度になり、制御信号ＶＰＲＥが、Ｖｄｄ（例えば、３Ｖ）になることによって、データ記憶部ＤＳ１のキャパシタＣ１の一端、即ち、ノードＮ２は、Ｖｄｄに充電される。この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｅｎｓｅ（例えば、１．８Ｖ）になると、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、以下のように変化する。
【０４２６】
即ち、ビット線ＢＬｑの電位がプリチャージ電位（約１Ｖ）のままである場合（メモリセルの閾値電圧がＶｃｇｖ１０よりも高い場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オフ状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、Ｖｄｄ（“Ｈ”）に維持される。
【０４２７】
一方、ビット線ＢＬｑの電位が０．８Ｖ以下である場合（メモリセルの閾値電圧がＶｃｇｖ１０よりも低い場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オン状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電荷は、ビット線ＢＬｑに放電され、その電位は、Ｖｄｄよりも低い値（“Ｌ”）に低下する。
【０４２８】
その結果、データ記憶部ＤＳ１（キャパシタＣ１の一端）には、ベリファイリード電位Ｖｃｇｖ１０によるリードデータが記憶される。
【０４２９】
即ち、メモリセルの閾値電圧がＶｃｇｖ１０よりも低い場合（ ”1”-programming 又は ”0”-programming未完了 ）には、“Ｌ”、つまり、“０”が、データ記憶部ＤＳ１に記憶され、メモリセルの閾値電圧がＶｃｇｖ１０よりも高い場合（ ”0”-programming完了 ）には、“Ｈ”、つまり、“１”が、データ記憶部ＤＳ１に記憶される。
【０４３０】
なお、上位ビットＨＢが“０”のメモリセル（“０１”状態）に対しては、この段階では、プログラムを行わないため、全て、 ”1”-programming に設定されている。
【０４３１】
そして、制御信号ＳＥＮを“Ｈ”にし、かつ、これに少し遅れてから制御信号ＳＥＮ’を“Ｈ”にすることで、データ記憶部ＤＳ１のデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。
【０４３２】
ここで、データ記憶部ＤＳ３は、上述のライト動作が終了した後に、制御信号ＳＥＮ，ＳＥＮ’が“Ｌ”になることで、その状態がリセットされている。このため、ベリファイリード後に、データ記憶部ＤＳ３には、ベリファイリードの結果に応じたデータが再び記憶される。
【０４３３】
この後、制御信号ＶＲＥＧが“Ｈ”になる。また、制御信号ＲＥＧが、例えば、４．５Ｖになると、ＮチャネルＭＯＳトランジスタＱｎ７がオン状態になるため、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）の電位は、データ記憶部ＤＳ２に記憶されたデータに影響を受ける。
【０４３４】
例えば、データ記憶部ＤＳ２に記憶されたデータ（プログラムデータ）が“１”である場合には、ＮチャネルＭＯＳトランジスタＱｎ８は、オン状態であり、ＶＲＥＧ（＝Ｖｄｄ）が、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）に転送される。
【０４３５】
この場合、上述のベリファイリードにより読み出されたデータの値にかかわらず、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）の電位は、強制的に、“Ｈ”、即ち、“１”に設定される。このため、データ記憶部ＤＳ３に記憶されるデータ（ノードＮ２）も、強制的に、“１”に設定される。
【０４３６】
また、データ記憶部ＤＳ２に記憶されたデータ（プログラムデータ）が“０”である場合には、ＮチャネルＭＯＳトランジスタＱｎ８は、オフ状態であり、ＶＲＥＧ（＝Ｖｄｄ）が、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）に転送されることはない。つまり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、変化しない。
【０４３７】
つまり、データ記憶部ＤＳ３に記憶されるデータ（ノードＮ２）は、ベリファイリードの結果に応じたデータとなる。
【０４３８】
この後、データ記憶部ＤＳ３に記憶されたデータに基づいて、Completion Detection が実行される。即ち、データ記憶部ＤＳ３に記憶されたデータ（１ページ分）の全てが、“１”となっている場合（ ”1”-programming 又は ”0”-programming完了 ）には、全てのカラムにおいて、ノードＮ７は、“Ｌ”であり、ＭＯＳトランジスタＱｎ１７は、オフ状態である。
【０４３９】
従って、図１１のＰＣＤは、“Ｈ”を維持し、ステータスがＰａｓｓとなるため、後述する上位ビットＨＢが“０”のメモリセルに対する下位ビットのプログラム動作に移行する。
【０４４０】
データ記憶部ＤＳ３に記憶されたデータ（１ページ分）の少なくとも１つが、“０”となっている場合（”0”-programming未完了 ）には、少なくとも１つのカラムにおいて、ノードＮ７は、“Ｈ”であり、ＭＯＳトランジスタＱｎ１７は、オン状態である。
【０４４１】
従って、図１１のＰＣＤは、“Ｌ”となるため、ベリファイ結果のステータスがＰａｓｓとなるまで、ライト動作とベリファイ動作を繰り返す。但し、ライト動作の回数が所定回数ＰＣｍａｘを越えたら、ステータスＮＧとして、プログラム動作を終了する。
【０４４２】
ここで、ライト動作とベリファイ動作とを繰り返す場合において、”0”-programming動作は、”0”-programmingが未完了のメモリセルに対してのみ実行される。即ち、”0”-programmingが完了したメモリセルに対しては、その後、”0”-programmingが実行されることはない。
【０４４３】
また、ライト動作（期間Ｔ１）とベリファイ動作（期間Ｔ２）とを繰り返す場合において、２回目のライト動作以降については、ライト動作の直前のプリチャージ動作（期間Ｔ１前半に相当）は、行わない。
【０４４４】
なぜなら、１回目のライト動作では、プログラムデータを、ＤＳ５からＤＳ２，ＤＳ３へ転送するために、ノードＮ２をプリチャージしておく必要があるのに対し、２回目以降のライト動作では、その直前に行われるベリファイ動作時に、ノードＮ２がプリチャージされ、ベリファイリードによるリードデータがデータ記憶部ＤＳ３に転送されるからである。
【０４４５】
そして、この後のライト動作は、このデータ記憶部ＤＳ３に記憶されたデータに基づいて行われるため、２回目のライト動作以降については、ライト動作の直前に、プリチャージ動作を行う必要がない。
【０４４６】
[3]   上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラム動作のアルゴリズム
図３３は、上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラム動作のアルゴリズムの一例を示している。
本例では、上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作を行った後に、上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラム動作を行うことを前提とする。
【０４４７】
従って、このフローチャートでは、上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作のベリファイ（図２８）がＰａｓｓしたチップに対して、上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラム動作が行われる。
【０４４８】
なお、上述したように、上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作と、上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラム動作との順序を入れ替えることも、当然に、可能である。
【０４４９】
まず、選択されたメモリセルの上位ビットＨＢの値が“０”であるか否かを確認し、“０”である場合には、データ記憶部ＤＳ５に記憶されているプログラムデータを、データ記憶部ＤＳ２，ＤＳ３にそれぞれコピーする（ステップＳ１４〜Ｓ１５）。
【０４５０】
即ち、選択されたメモリセルの上位ビットＨＢの値が“０”である場合、即ち、既に行われた上位ビットＨＢに対するプログラム動作において、上位ビットＨＢに対するプログラムデータが“０”であった場合には、下位ビットＬＢに対するプログラムデータが“１”のときは、ノードＮ２，Ｎ８を“Ｈ”に設定し、下位ビットＬＢに対するプログラムデータが“０”のときは、ノードＮ２，Ｎ８を“Ｌ”に設定する。
【０４５１】
また、選択されたメモリセルの上位ビットＨＢの値が“１”である場合、即ち、既に行われた上位ビットＨＢに対するプログラム動作において、上位ビットＨＢに対するプログラムデータが“１”であった場合には、データ記憶部ＤＳ２，ＤＳ３の値は、データ記憶部ＤＳ５に記憶されているプログラムデータの値にかかわらず、“１”に設定される（ステップＳ１６）。
【０４５２】
この後、ライト電圧Ｖｐｇｍが、例えば、１２Ｖ程度に設定され、ステートマシーン内のプログラムカウンタの値ＰＣが０に設定される。なお、プログラムカウンタの値ＰＣは、ライト動作の回数を表している。
【０４５３】
次に、ライト動作を実行する（ステップＳ１７）。
データ記憶部ＤＳ３に記憶されたプログラムデータが“０”の場合には、例えば、基板とフローティングゲート電極との間に高電圧を与え、フローティングゲート電極に電子を注入し、メモリセルの閾値電圧を上げる (“0”-programming)。データ記憶部ＤＳ３に記憶されたプログラムデータが“１”の場合には、例えば、基板とフローティングゲート電極との間に高電圧が与えられないようにし、フローティングゲート電極に対する電子の注入を防止し、メモリセルの閾値電圧を変化させない (“1”-programming)。
【０４５４】
このライト動作を行った後に、プログラムカウンタの値ＰＣに“１”を加える（ステップＳ１７）。
【０４５５】
この後、データ記憶部ＤＳ３に記憶されたデータに基づいて、プログラムベリファイが Pass の状態（プログラムが完了している状態）になっているか、又は、NGの状態（プログラムが完了していない状態）になっているかを判定する（ステップＳ１８）。
【０４５６】
ここで、最初のライト動作の直後においては、“Ｖｅｒｉｆｙ００”は、一度も行われていないため、データ記憶部ＤＳ３は、プログラムデータそのものを記憶している。
【０４５７】
全てのカラム内のデータ記憶部ＤＳ３が“１”を記憶している場合、即ち、下位ビットＬＢに対するプログラムデータが全て“１”の場合には、全てのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オフ状態であり、図１１のＰＣＤは、“Ｈ”を維持する。
【０４５８】
従って、プログラムベリファイが Pass の状態（プログラムが完了している状態）になっていると判断されるため、ステータスＰａｓｓと判断され、プログラム動作が終了する（ステップＳ２２）。
【０４５９】
これに対して、少なくとも１つのカラム内のデータ記憶部ＤＳ３が“０”を記憶している場合、即ち、下位ビットＬＢに対するプログラムデータの少なくとも１つが“０”の場合には、“０”を記憶するデータ記憶部ＤＳ３に接続されるＮチャネルＭＯＳトランジスタＱｎ１７（図１１）は、オン状態であり、例えば、図１１のＰＣＤのレベルは、“Ｌ”になる。
【０４６０】
従って、プログラムベリファイが NG の状態（プログラムが完了していない状態）になっていると判断され、“Ｖｅｒｉｆｙ００”へ移行する（ステップＳ１８〜Ｓ１９）。
【０４６１】
“Ｖｅｒｉｆｙ００”とは、プログラムの対象となる選択されたメモリセルに対して、リード電位Ｖｃｇｖ００（図１３参照）を用いてリード動作を実行し、このリード動作により得られるリードデータとデータ記憶部ＤＳ２のデータ（プログラムデータ）とに基づいて、データ記憶部ＤＳ３に新たに記憶するデータの値を決定する動作のことである。
【０４６２】
上位ビットＨＢが“０”のメモリセルに対する下位ビットＬＢのプログラムの場合、全ての選択されたメモリセルのうち、下位ビットＬＢのプログラムの対象となるメモリセルは、“０１”状態になっている。
【０４６３】
なぜなら、上位ビットＨＢに対するプログラムが終了した時点では、メモリセルの状態は、“１１”状態か、又は、“０１”状態であり、また、上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作では、“０１”状態のメモリセルの閾値は、変動しないからである。
【０４６４】
このため、 “1”-programming の対象となるメモリセル（“１”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関しては、閾値電圧の変動はないため、“０１”状態を維持し、“Ｖｅｒｉｆｙ００”により読み出されるリードデータは、常に、“０”である。
【０４６５】
従って、データ記憶部ＤＳ１には、“０”が記憶される。しかし、後述するように、データ記憶部ＤＳ２に“１”が記憶されている場合には、データ記憶部ＤＳ１のデータは、リードデータにかかわらず、強制的に、“１”に変更させられる。つまり、この“１”−データが、データ記憶部ＤＳ１から、再び、データ記憶部ＤＳ３に記憶される。
【０４６６】
一方、“0”-programming の対象となるメモリセル（“０”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関しては、ライト動作（ステップＳ１７）により十分に閾値電圧が上昇（プログラムが完了）している場合、即ち、“０１”状態（閾値レベル２）から“００”状態（閾値レベル３）に移行した場合には、“Ｖｅｒｉｆｙ００”により読み出されるリードデータは、“１”となる。
【０４６７】
従って、データ記憶部ＤＳ１には、“１”が記憶される。この“１”−データは、データ記憶部ＤＳ１からデータ記憶部ＤＳ３に転送される。つまり、データ記憶部ＤＳ３のデータは、“０”から“１”に変わる。
【０４６８】
また、“0”-programming の対象となるメモリセル（“０”−データを記憶するデータ記憶部ＤＳ３に対応するメモリセル）に関し、ライト動作（ステップＳ１７）により十分に閾値電圧が上昇していない（プログラムが完了していない）場合、即ち、“０１”状態（閾値レベル２）から“００”状態（閾値レベル３）に移行していない場合には、“Ｖｅｒｉｆｙ００”により読み出されるリードデータは、“０”となる。
【０４６９】
従って、データ記憶部ＤＳ１には、“０”が記憶される。この“０”−データは、データ記憶部ＤＳ１からデータ記憶部ＤＳ３に転送される。つまり、データ記憶部ＤＳ３のデータは、“０”を維持する。
【０４７０】
この後、もし、プログラムカウンタの値ＰＣが、予め設定された最大ライト回数 ＰＣ ｍａｘ に達したならば、ステートマシーン内のステータスレジスタに、 Fail （プログラム不良）を設定し、プログラム動作を終了する（ステップＳ２０，Ｓ２３）。
【０４７１】
また、もし、プログラムカウンタの値ＰＣが、予め設定された最大ライト回数ＰＣ ｍａｘ よりも小さいならば、ライト電圧Ｖｐｇｍを、例えば、０．２Ｖ程度上昇（ステップアップ）させた後、再度、ライト動作を実行する（ステップＳ１７，Ｓ２０，Ｓ２１）。
【０４７２】
この後、プログラムベリファイが行われるが（ステップＳ１８）、上述したように、“1”-programming の場合（上位ビットＨＢが“１”のメモリセルに対しては、全て、“1”-programming となる。）には、データ記憶部ＤＳ３のデータは、常に、“１”となっている。また、“0”-programming の場合には、“0”-programming が完了している場合には、データ記憶部ＤＳ３のデータは、“０”から“１”に変更され、“0”-programming が完了していない場合のみに、データ記憶部ＤＳ３のデータは、“０”を維持する。
【０４７３】
従って、上位ビットＨＢが“０”のメモリセルに対して、プログラミング（“1”-programming 又は “0”-programming ）が完了している場合には、全てのデータ記憶部ＤＳ３が“１”−データを記憶することになる。つまり、全てのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オフ状態であり、図１１のＰＣＤが“Ｈ”（プログラムベリファイが Pass の状態）となる（ステップＳ２２）。
【０４７４】
また、上位ビットＨＢが“０”のメモリセルの少なくとも１つに対して、プログラミング（“0”-programming ）が完了していない場合には、その少なくとも１つのデータ記憶部ＤＳ３が“０”−データを記憶していることになる。つまり、少なくとも１つのカラムにおいて、図１１のＮチャネルＭＯＳトランジスタＱｎ１７は、オン状態となり、図１１のＰＣＤが“Ｌ”（プログラムベリファイがNG の状態）となって、再び、ベリファイリードとライト動作が繰り返される（ステップＳ１７〜Ｓ２１）。
【０４７５】
このように、２回目のプログラム動作では、上位ビットＨＢが“０”のメモリセルのみに対して下位ビットＬＢのプログラムが実行され、この時、上位ビットＨＢが“１”のメモリセルに対しては、下位ビットＬＢのプログラムが実行されることはない。
【０４７６】
[4]   動作波形による動作説明
以下、動作タイミング図を用いて、具体的な動作説明を行う。
【０４７７】
[4]-1   シリアルアクセス動作
下位ビットに対する１ページ分のプログラムデータは、上位ビットＨＢが“１”のメモリセルに対する下位ビットＬＢのプログラム動作の前に、既に、シリアルアクセスにより、メモリチップ内のデータ記憶部（Lower Bit Latch）ＤＳ５に記憶されている（図２８のステップＳ３）。
【０４７８】
[4]-2   ＤＳ５からＤＳ２，ＤＳ３へのコピー動作：  期間Ｔ１前半
図３５は、データ記憶部ＤＳ５からデータ記憶部ＤＳ２，ＤＳ３へのプログラムデータのコピー動作におけるデータの流れを示している。
【０４７９】
このコピー動作は、図３３のステップＳ１５に相当する。
【０４８０】
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となることで、データ記憶部（センスラッチ）ＤＳ３の入力ノードがプリチャージされる。このプリチャージは、データ記憶部ＤＳ５に記憶されたプログラムデータを、データ記憶部ＤＳ２，ＤＳ３に転送するための準備動作としての意味を有する。
【０４８１】
プリチャージが終了した後、今度は、制御信号ｔ３が“Ｈ”に設定される。この時、ＮチャネルＭＯＳトランジスタＱ３がオン状態となる。
【０４８２】
このため、上述した上位ビットＨＢに対するプログラム動作において、プログラムデータの値が“０”の場合、即ち、データ記憶部 (Higher Bit Latch) ＤＳ４のノードＮ６が“Ｈ”の場合（Ｂ）には、ＭＯＳトランジスタＱ５がオン状態となり、データ記憶部ＤＳ３とデータ記憶部ＤＳ５が電気的に接続される。
【０４８３】
そして、もし、データ記憶部ＤＳ５（ノードＮ４，Ｎ５）が、プログラムデータとして“１”（＝“Ｈ”）を記憶していれば、データ記憶部ＤＳ３の入力ノードは、“Ｈ”を維持する。また、もし、データ記憶部ＤＳ５（ノードＮ４，Ｎ５）が、プログラムデータとして“０”（＝“Ｌ”）を記憶していれば、データ記憶部ＤＳ３の入力ノードは、“Ｈ”から“Ｌ”に変化する（▲１▼）。
【０４８４】
なお、上述した上位ビットＨＢに対するプログラム動作において、プログラムデータの値が“１”の場合、即ち、データ記憶部 (Higher Bit Latch) ＤＳ４のノードＮ６が“Ｌ”の場合（Ａ）には、ＭＯＳトランジスタＱ５がオフ状態となるため、データ記憶部ＤＳ３とデータ記憶部ＤＳ５が電気的に接続されることはない。
【０４８５】
従って、上位ビットＨＢが“１”のメモリセルに対応するデータ記憶部ＤＳ３の入力ノードは、プリチャージ電位、即ち、“Ｈ”を維持する。
【０４８６】
この後、制御信号ＳＥＮを“Ｈ”にし、かつ、これに少し遅れてから制御信号ＳＥＮ’を“Ｈ”にすることで、データ記憶部ＤＳ５のプログラムデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。また、制御信号ＤＴＧを“Ｈ”に設定することで、データ記憶部ＤＳ５のプログラムデータは、データ記憶部ＤＳ２にも記憶される（▲２▼）。
【０４８７】
この時点では、データ記憶部ＤＳ２，ＤＳ３には、それぞれ同じデータ、即ち、下位ビットＬＢに対するプログラムデータが記憶される。この後、制御信号ｔ３が“Ｌ”になり、制御信号ＤＴＧが“Ｌ”になることで、データ記憶部ＤＳ２，ＤＳ３，ＤＳ５は、それぞれ電気的に切り離される。
【０４８８】
なお、ＤＳ５からＤＳ２，ＤＳ３へのコピー動作は、全てのカラムのデータ回路において同時に行われる。
【０４８９】
[4]-3   ライト動作 (Write)  ：期間Ｔ１後半
図３６は、ライト動作におけるデータの流れを示している。
【０４９０】
ライト動作は、図３３のステップＳ１７に相当する。
【０４９１】
まず、制御信号ＢＬＣＬＡＭＰが、４．５Ｖ程度に設定される。また、制御信号ＢＬＳが４．５Ｖになると、ビット線ＢＬｑとデータ記憶部ＤＳ３とが電気的に接続される。
【０４９２】
データ記憶部ＤＳ３（ノードＮ２）のデータが“１”の場合、ビット線ＢＬｑは、Ｖｄｄに充電される。また、データ記憶部ＤＳ３（ノードＮ２）のデータが“０”の場合、ビット線ＢＬｑは、Ｖｓｓ（０Ｖ）に充電される。
【０４９３】
この後、非選択のワード線に、Ｖｐａｓｓ、例えば、１０Ｖが与えられ、選択されたワード線に、Ｖｐｇｍ（例えば、最初は、１２Ｖ程度。ライト回数に応じて、例えば、０．２Ｖずつ上昇させる。）が与えられる。その結果、メモリセルに対するプログラミングが実行される。
【０４９４】
例えば、データ記憶部ＤＳ３に記憶されているデータが“１”の場合、ビット線ＢＬｑは、Ｖｄｄであり、メモリセルのチャネルは、例えば、Ｖｄｄ−Ｖｔｈ（セレクトゲートトランジスタの閾値電圧）で、かつ、フローティング状態となる。その結果、選択されたワード線（コントロールゲート電極）とメモリセルのチャネルとの間の電位差は、メモリセルのフローティングゲート電極に電子を注入するのに十分な値とはならない。
【０４９５】
これに対し、データ記憶部ＤＳ３に記憶されているデータが“０”の場合、ビット線ＢＬｑは、０Ｖであり、メモリセルのチャネルも、０Ｖとなる。その結果、選択されたワード線（コントロールゲート電極）とメモリセルのチャネルとの間の電位差は、メモリセルのフローティングゲート電極に電子を注入するのに十分な値となる。
【０４９６】
従って、データ記憶部ＤＳ３に記憶されているデータが“１”の場合には、メモリセルの閾値電圧は、上昇することなく、また、データ記憶部ＤＳ３に記憶されているデータが“０”の場合には、メモリセルの閾値電圧は、上昇する。
【０４９７】
ライト動作が終了すると、制御信号ＳＥＮ，ＳＥＮ’は、“Ｌ”に設定されるため、データ記憶部ＤＳ３の状態は、リセットされる。
【０４９８】
[4]-4   ベリファイ動作 (Verify 00)  ：期間Ｔ２
図３７は、ベリファイリードにおけるデータの流れを示している。
【０４９９】
ベリファイ動作は、ベリファイリードと Completion Detection とからなる。
【０５００】
ベリファイリードは、図３３のステップＳ１９に相当し、 Completion Detection は、図３３のステップＳ１８に相当する。
【０５０１】
ベリファイリードでは、ライト動作後に、メモリセルの閾値電圧が所定のレベルに達したか否かを判断する (Completion Detection) ためのデータを、メモリセルから読み出す。
【０５０２】
まず、制御信号ＢＬＰＲＥが“Ｈ”となり、ＮチャネルＭＯＳトランジスタＱｎ６（図１１）がオン状態となる。また、制御信号ＢＬＣＬＡＭＰが、Ｖｃｌａｍｐ（例えば、２Ｖ）となり、制御信号ＢＬＳが、Ｖｓｇｈｈ（例えば、４．５Ｖ）となることで、ビット線ＢＬｑは、ＶＰＲＥ（＝Ｖｄｄ）に電気的に接続される。
【０５０３】
その結果、ビット線ＢＬｑは、ＮチャネルＭＯＳトランジスタＱｎ５の閾値電圧で制限される所定の電位、例えば、１Ｖ程度にプリチャージされる。
【０５０４】
この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｓ（例えば、０Ｖ）、制御信号ＢＬＰＲＥが“Ｌ”となり、ビット線ＢＬｑは、フローティング状態となる。
【０５０５】
なお、この時、データ記憶部ＤＳ３の入力ノード、即ち、ノードＮ２は、ＶＰＲＥ（＝Ｖｄｄ）にプリチャージされる。
【０５０６】
ビット線側のセレクトゲート線及び非選択のワード線に、それぞれ、転送電位Ｖｒｅａｄ（例えば、４．５Ｖ）が与えられ、選択されたワード線に、ベリファイリード電位Ｖｃｇｖ００（図１３参照）が与えられる。ソース線側のセレクトゲート線の電位が、転送電位Ｖｒｅａｄに設定されると、選択されたメモリセルの状態、即ち、そのメモリセルの現在の閾値電圧に応じて、ビット線ＢＬｑの電位に影響が表れる。
【０５０７】
即ち、選択されたメモリセルの閾値電圧が、選択されたワード線の電位（ベリファイリード電位）Ｖｃｇｖ００よりも低い場合には、このベリファイリード電位Ｖｃｇｖ００により、選択されたメモリセルは、オン状態になる。このため、ビット線ＢＬｑの電荷が放電され、ビット線ＢＬｑの電位は、０．８Ｖ以下に低下する（選択ブロック内の非選択のメモリセルは、Ｖｒｅａｄにより、オン状態である。）。
【０５０８】
一方、選択されたメモリセルの閾値電圧が、ベリファイリード電位Ｖｃｇｖ００よりも高い場合には、このベリファイリード電位Ｖｃｇｖ００により、選択されたメモリセルは、オン状態になることがない。このため、このため、ビット線ＢＬｑの電荷が放電されることはなく、ビット線ＢＬｑは、プリチャージ電位（約１Ｖ）を維持する。
【０５０９】
制御信号ＢＬＰＲＥが、４．５Ｖ程度になり、制御信号ＶＰＲＥが、Ｖｄｄ（例えば、３Ｖ）になることによって、データ記憶部ＤＳ１のキャパシタＣ１の一端、即ち、ノードＮ２は、Ｖｄｄに充電される。この後、制御信号ＢＬＣＬＡＭＰが、Ｖｓｅｎｓｅ（例えば、１．８Ｖ）になると、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、以下のように変化する。
【０５１０】
即ち、ビット線ＢＬｑの電位がプリチャージ電位（約１Ｖ）のままである場合（メモリセルの閾値電圧がＶｃｇｖ００よりも高い場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オフ状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、Ｖｄｄ（“Ｈ”）に維持される。
【０５１１】
一方、ビット線ＢＬｑの電位が０．８Ｖ以下である場合（メモリセルの閾値電圧がＶｃｇｖ００よりも低い場合）には、ＮチャネルＭＯＳトランジスタ（クランプトランジスタ）Ｑｎ５（図１１）は、オン状態であり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電荷は、ビット線ＢＬｑに放電され、その電位は、Ｖｄｄよりも低い値（“Ｌ”）に低下する。
【０５１２】
その結果、データ記憶部ＤＳ１（キャパシタＣ１の一端）には、ベリファイリード電位Ｖｃｇｖ００によるリードデータが記憶される。
【０５１３】
即ち、メモリセルの閾値電圧がＶｃｇｖ００よりも低い場合（ ”1”-programming 又は ”0”-programming未完了 ）には、“Ｌ”、つまり、“０”が、データ記憶部ＤＳ１に記憶され、メモリセルの閾値電圧がＶｃｇｖ００よりも高い場合（ ”0”-programming完了 ）には、“Ｈ”、つまり、“１”が、データ記憶部ＤＳ１に記憶される。
【０５１４】
なお、上位ビットＨＢが“１”のメモリセル（“１１”又は“１０”状態）に対しては、この段階でのプログラムを禁止するため、全て、 ”1”-programmingに設定されている。
【０５１５】
そして、制御信号ＳＥＮを“Ｈ”にし、かつ、これに少し遅れてから制御信号ＳＥＮ’を“Ｈ”にすることで、データ記憶部ＤＳ１のデータは、データ記憶部（センスラッチ）ＤＳ３に記憶される。
【０５１６】
ここで、データ記憶部ＤＳ３は、上述のライト動作が終了した後に、制御信号ＳＥＮ，ＳＥＮ’が“Ｌ”になることで、その状態がリセットされている。このため、ベリファイリード後に、データ記憶部ＤＳ３には、ベリファイリードの結果に応じたデータが再び記憶される。
【０５１７】
この後、制御信号ＶＲＥＧが“Ｈ”になる。また、制御信号ＲＥＧが、例えば、４．５Ｖになると、ＮチャネルＭＯＳトランジスタＱｎ７がオン状態になるため、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）の電位は、データ記憶部ＤＳ２に記憶されたデータに影響を受ける。
【０５１８】
例えば、データ記憶部ＤＳ２に記憶されたデータ（プログラムデータ）が“１”である場合には、ＮチャネルＭＯＳトランジスタＱｎ８は、オン状態であり、ＶＲＥＧ（＝Ｖｄｄ）が、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）に転送される。
【０５１９】
この場合、上述のベリファイリードにより読み出されたデータの値にかかわらず、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）の電位は、強制的に、“Ｈ”、即ち、“１”に設定される。このため、データ記憶部ＤＳ３に記憶されるデータ（ノードＮ２）も、強制的に、“１”に設定される。
【０５２０】
また、データ記憶部ＤＳ２に記憶されたデータ（プログラムデータ）が“０”である場合には、ＮチャネルＭＯＳトランジスタＱｎ８は、オフ状態であり、ＶＲＥＧ（＝Ｖｄｄ）が、データ記憶部ＤＳ１のキャパシタＣ１の一端（ノードＮ２）に転送されることはない。つまり、データ記憶部ＤＳ１のキャパシタＣ１の一端の電位は、変化しない。
【０５２１】
つまり、データ記憶部ＤＳ３に記憶されるデータ（ノードＮ２）は、ベリファイリードの結果に応じたデータとなる。
【０５２２】
この後、データ記憶部ＤＳ３に記憶されたデータに基づいて、Completion Detection が実行される。即ち、データ記憶部ＤＳ３に記憶されたデータ（１ページ分）の全てが、“１”となっている場合（ ”1”-programming 又は ”0”-programming完了 ）には、全てのカラムにおいて、ノードＮ７は、“Ｌ”であり、ＭＯＳトランジスタＱｎ１７は、オフ状態である。
【０５２３】
従って、図１１のＰＣＤは、“Ｈ”を維持し、ステータスがＰａｓｓとなるため、プログラム動作を終了する。
【０５２４】
データ記憶部ＤＳ３に記憶されたデータ（１ページ分）の少なくとも１つが、“０”となっている場合（”0”-programming未完了 ）には、少なくとも１つのカラムにおいて、ノードＮ７は、“Ｈ”であり、ＭＯＳトランジスタＱｎ１７は、オン状態である。
【０５２５】
従って、図１１のＰＣＤは、“Ｌ”となるため、ベリファイ結果のステータスがＰａｓｓとなるまで、ライト動作とベリファイ動作を繰り返す。但し、ライト動作の回数が所定回数ＰＣｍａｘを越えたら、ステータスＮＧとして、プログラム動作を終了する。
【０５２６】
ここで、ライト動作とベリファイ動作とを繰り返す場合において、”0”-programming動作は、”0”-programmingが未完了のメモリセルに対してのみ実行される。即ち、”0”-programmingが完了したメモリセルに対しては、その後、”0”-programmingが実行されることはない。
【０５２７】
また、ライト動作（期間Ｔ１）とベリファイ動作（期間Ｔ２）とを繰り返す場合において、２回目のライト動作以降については、ライト動作の直前のプリチャージ動作（期間Ｔ１前半に相当）は、行わない。
【０５２８】
なぜなら、１回目のライト動作では、プログラムデータを、ＤＳ５からＤＳ２，ＤＳ３へ転送するために、ノードＮ２をプリチャージしておく必要があるのに対し、２回目以降のライト動作では、その直前に行われるベリファイ動作時に、ノードＮ２がプリチャージされ、ベリファイリードによるリードデータがデータ記憶部ＤＳ３に転送されるからである。
【０５２９】
そして、この後のライト動作は、このデータ記憶部ＤＳ３に記憶されたデータに基づいて行われるため、２回目のライト動作以降については、ライト動作の直前に、プリチャージ動作を行う必要がない。
【０５３０】
▲３▼  まとめ
以上、本発明の例によるプログラム動作では、まず、上位ビットＨＢに対するプログラミングを行う。この後、上位ビットＨＢが“１”（又は“０”）のメモリセルに対して下位ビットのプログラミングを実行し、さらに、上位ビットＨＢが“０”（又は“１”）のメモリセルに対して下位ビットのプログラミングを実行する。
【０５３１】
上位ビットＨＢのプログラミングと下位ビットＬＢのプログラミングを繰り返して行う場合には、下位ビットＬＢに対するプログラムデータのシリアルアクセスは、上位ビットＨＢのプログラミングの最中に行い、上位ビットＨＢに対するプログラムデータのシリアルアクセスは、下位ビットＬＢのプログラミングの最中に行う。
【０５３２】
これにより、多値フラッシュメモリの1st アクセスタイムを、２値フラッシュメモリのそれと同程度とすることができ、リード／ライト動作の高速化に貢献できる。
【０５３３】
(4)   シリアルアクセス方法
次に、本発明の例に関わる多値フラッシュメモリのシリアルアクセス方法について説明する。
【０５３４】
図３８は、本発明の例に関わるシリアルアクセス方法の対象となる多値ＮＡＮＤセル型フラッシュメモリの主要部を示している。
【０５３５】
通常、チップ内において、ビット線は、最小ピッチでレイアウトされるのに対し、センスラッチのサイズは、この最小ピッチよりも十分に大きくなる。このため、１本のビット線に対して、１個のセンスラッチを設けることはできず、一般には、複数本のビット線に対して、１個のセンスラッチを設けている。
【０５３６】
本例では、１個のデータ記憶部（センスラッチ）ＤＳ３に、８本のビット線ＢＬ０−ｑ，ＢＬ１−ｑ，・・・ＢＬ７−ｑ（ｑ＝０，１，・・・ｋ−１）が接続される。この場合、メモリセルアレイは、８個のカラムバンク０〜７から構成される。１個のカラムバンクは、ｋ本のビット線ＢＬｉ−０，ＢＬｉ−１，・・・ＢＬｉ−（ｋ−１）からなる。なお、ｉは、カラムバンクの番号に相当する。
【０５３７】
カラムバンクの選択は、バンク選択線ＢＳＬ０，ＢＳＬ１，・・・ＢＳＬ７により行われる。選択されたカラムバンク内のビット線は、データ記憶部（センスラッチ）ＤＳ３に電気的に接続される。１つのロウ、即ち、１本のワード線に接続されるメモリセルが２ビットデータを記憶し、かつ、カラムバンクの数が８個の場合、１本のワード線に接続されるメモリセルによって、１６（２ビット×８バンク）ページ分のデータが記憶される。
【０５３８】
１つのメモリセルが２ビットデータを記憶する場合、１つのデータ記憶部ＤＳ３に対して、シリアルアクセスのためのデータ記憶部（ラッチ回路）は、２個ＤＳ４，ＤＳ５だけ必要になる。当然、１つのメモリセルがｎ（ｎは、２以上の自然数）ビットデータを記憶する場合には、１つのデータ記憶部ＤＳ３に対して、シリアルアクセスのためのデータ記憶部（ラッチ回路）は、ｎ個必要になる。
【０５３９】
データ記憶部（ＨＢＬ）ＤＳ４は、上位ビットＨＢに対するリード／ライトデータを一時記憶する。上位ビットＨＢに対するリード／ライトデータのシリアルアクセスは、シフトレジスタＳＲ１の出力信号Ａ０，Ａ１，・・・Ａｋ−１により制御される。
【０５４０】
データ記憶部（ＬＢＬ）ＤＳ５は、下位ビットＬＢに対するリード／ライトデータを一時記憶する。下位ビットＬＢに対するリード／ライトデータのシリアルアクセスは、シフトレジスタＳＲ２の出力信号Ｂ０，Ｂ１，・・・Ｂｋ−１により制御される。
【０５４１】
シリアルアクセス回数は、シリアルアクセスのためのデータ記憶部ＤＳ４，ＤＳ５の数に比例する。１つのメモリセルに記憶するビット数が増えれば、シリアルアクセスのためのデータ記憶部の数も増え、これに比例して、シリアルアクセス回数も、増加する。
【０５４２】
リード／ライト動作におけるシリアルアクセス動作は、まず、上位ビット（論理上位ページデータ）ＨＢから実行される。
【０５４３】
例えば、リード動作の場合、シフトレジスタＳＲ１の出力信号Ａ０，Ａ１，・・・Ａｋ−１を、１つずつ、順次、“Ｈ”（他は、全て“Ｌ”）にしていくことにより（シリアルアクセス動作）、リードデータ（上位ビット）は、シリアルに、データ記憶部ＤＳ４からリードデータ線ＲＤに転送される。
【０５４４】
なお、このシリアルアクセス動作は、下位ビット（論理下位ページデータ）ＬＢに対するリード動作と並行して実施することができる。
【０５４５】
また、プログラム動作の場合、シフトレジスタＳＲ１の出力信号Ａ０，Ａ１，・・・Ａｋ−１を、１つずつ、順次、“Ｈ”（他は、全て“Ｌ”）にしていくことにより（シリアルアクセス動作）、プログラムデータ（上位ビット）は、シリアルに、ライトデータ線ｂＷＤからデータ記憶部ＤＳ４に転送される。
【０５４６】
上位ビット（論理上位ページデータ）ＨＢのシリアルアクセス動作を終了した後に、下位ビット（論理下位ページデータ）ＬＢのシリアルアクセス動作が実行される。
【０５４７】
例えば、リード動作の場合、シフトレジスタＳＲ２の出力信号Ｂ０，Ｂ１，・・・Ｂｋ−１を、１つずつ、順次、“Ｈ”（他は、全て“Ｌ”）にしていくことにより（シリアルアクセス動作）、リードデータ（下位ビット）は、シリアルに、データ記憶部ＤＳ５からリードデータ線ＲＤに転送される。
【０５４８】
また、プログラム動作の場合、シフトレジスタＳＲ２の出力信号Ｂ０，Ｂ１，・・・Ｂｋ−１を、１つずつ、順次、“Ｈ”（他は、全て“Ｌ”）にしていくことにより（シリアルアクセス動作）、プログラムデータ（下位ビット）は、シリアルに、ライトデータ線ｂＷＤからデータ記憶部ＤＳ５に転送される。
【０５４９】
なお、このシリアルアクセス動作は、上位ビット（論理上位ページデータ）ＨＢに対するプログラム動作と並行して実施することができる。
【０５５０】
リード／ライト動作が繰り返して行われる場合、上位ビットＨＢに対するシリアルアクセス動作と下位ビットＬＢに対するシリアルアクセス動作とが、繰り返して行われる。
【０５５１】
そこで、図３８に示すように、シフトレジスタＳＲ１，ＳＲ２をリング状に接続し、このシフトレジスタＳＲ１，ＳＲ２内を、順次、“Ｈ”がシフトするような構成とすれば、上位ビットＨＢに対するシリアルアクセス動作と下位ビットＬＢに対するシリアルアクセス動作とを連続して行える。
【０５５２】
なお、シフトレジスタＳＲ１からシフトレジスタＳＲ２に、また、シフトレジスタＳＲ２からシフトレジスタＳＲ１に、“Ｈ”をスムーズに移動させるには、例えば、シフトレジスタＳＲ１，ＳＲ２の出力ポインタを使用する。この出力ポインタにより、シリアルアクセスの先頭を決定することができる。
【０５５３】
図３９は、リード動作におけるカラムバンクの選択、リード動作及びシリアルアクセスのタイミング例を示している。
【０５５４】
メモリセルからデータを読み出すには、まず、カラムバンクを選択し、この後、上位ビットＨＢに対するリード動作及び下位ビットＬＢに対するリード動作を実行し、最後に、リードデータの転送（シリアルアクセス動作）を行う。
【０５５５】
同図に示すように、シリアルアクセス動作は、シフトレジスタＳＲ１，ＳＲ２の出力信号Ａ０，Ａ１，・・・Ａｋ−１，Ｂ０，Ｂ１，・・・Ｂｋ−１を、１つずつ、順次、“１”にすることで、容易に行える。
【０５５６】
本例では、下位ビットＬＢのリード動作の最中に、次に選択するカラムバンクの選択動作及びデータ記憶部ＤＳ４にラッチされた上位ビットＨＢの転送動作（シリアルアクセス動作）を実行する。
【０５５７】
また、カラムバンクの選択動作により選択されたカラムバンクに対して、上位ビットＨＢのリード動作を行っている最中に、データ記憶部ＤＳ５にラッチされた下位ビットＬＢの転送動作（シリアルアクセス動作）を実行する。
【０５５８】
図４０は、プログラム動作におけるカラムバンクの選択、プログラム動作及びシリアルアクセスのタイミング例を示している。
【０５５９】
メモリセルにデータをプログラムするには、まず、カラムバンクを選択し、この後、プログラムデータの取り込み（シリアルアクセス動作）を行い、最後に、上位ビットＨＢに対するプログラム動作及び下位ビットＬＢに対するプログラム動作を実行する。
【０５６０】
同図に示すように、シリアルアクセス動作は、シフトレジスタＳＲ１，ＳＲ２の出力信号Ａ０，Ａ１，・・・Ａｋ−１，Ｂ０，Ｂ１，・・・Ｂｋ−１を、１つずつ、順次、“１”にすることで、容易に行える。
【０５６１】
本例では、上位ビットＨＢのプログラム動作の最中に、データ記憶部ＤＳ５に対する下位ビットＬＢの取り込み動作（シリアルアクセス動作）を実行する。また、下位ビットＬＢのプログラム動作の最中に、データ記憶部ＤＳ４に対する上位ビットＨＢの取り込み動作（シリアルアクセス動作）を実行する。カラムバンクの選択動作は、下位ビットＬＢに対するプログラム動作の最中に行う。
【０５６２】
このような構成によれば、例えば、メモリ外部のカウンタで発生したアドレスデータを、アドレスバスを経由して、データ回路に与える多値ＮＡＮＤ型フラッシュメモリに比べ、シリアルアクセス動作において駆動することが必要な信号線の数と負荷容量とを減らすことができ、リード／ライト動作の高速化及び低消費電力化を実現できる。
【０５６３】
４．  その他
本実施の形態では、多値ＮＡＮＤセル型フラッシュメモリを例として説明したが、本発明は、当然に、他のタイプの多値メモリに適用が可能である。例えば、メモリセルアレイとしては、ＮＯＲ型、ＡＮＤ型(A.Nozoe : ISSCC, Digest of Technichal Papers,1995)、ＤＩＮＯＲ型(S.Kobayashi : ISSCC, Digest of Technichal Papers,1995)、Virtual Ground Array型(Lee, et al. : Symposium on VLSI Circuits, Digest of Technichal Papers,1994)、３−ｔｒ ＮＡＮＤ型、４−ｔｒ ＮＡＮＤ型などであってもよい。
【０５６４】
また、本発明は、フラッシュメモリ（Flash memory）に限られず、例えば、マスクＲＯＭ、ＥＰＲＯＭなどの不揮発性半導体メモリにも適用できる。
【０５６５】
【発明の効果】
以上、説明したように、本発明によれば、メモリセルに記憶するデータを多値化しても、１つのメモリセルに対して、少ない信号数及び簡単な方法で、各ビットをリード／ライトすることができる。特に、最上位ビットのリード／ライト時間は、２値メモリのそれとほぼ同じとなる。これにより、多値メモリの1st アクセスタイムを、２値メモリのそれと同程度とすることができる。また、シリアスアクセス動作に関しても、シフトレジスタを用いることで、少ない信号数で簡単に行うことができ、高速かつ低消費電力のシステムを構築できる。本発明の例は、特に、セルアレイ部のアクセス制御を簡単にしたいメモリ混載ＬＳＩに最適である。
【図面の簡単な説明】
【図１】本発明の例に関わる多値フラッシュメモリを示すブロック図。
【図２】メモリセルアレイの例を示す図。
【図３】メモリセルアレイの例を示す図。
【図４】チップ内の素子の構造例を示す断面図。
【図５】メモリセルアレイの構造例を示す断面図。
【図６】メモリセルアレイの構造例を示す断面図。
【図７】メモリセルアレイの構造例を示す断面図。
【図８】データ回路の例を示す図。
【図９】データ回路の例を示す図。
【図１０】ロジック回路の例を示す図。
【図１１】データ回路内のサブデータ回路の具体例を示す回路図。
【図１２】インバータ回路の例を示す回路図。
【図１３】メモリセルのデータと閾値電圧分布との関係を示す図。
【図１４】論理上位ページデータのプログラム時の閾値電圧の変化の様子を示す図。
【図１５】論理下位ページデータのプログラム時の閾値電圧の変化の様子を示す図。
【図１６】論理下位ページデータのプログラム時の閾値電圧の変化の様子を示す図。
【図１７】プログラム時にワード線及びビット線に与える電位の例を示す図。
【図１８】ベリファイを適用した場合の閾値電圧の変化の様子を示す図。
【図１９】リード動作のアルゴリズムを示す図。
【図２０】リード動作の動作波形の例を示す図。
【図２１】論理上位ページデータの読み出し時のデータの流れを示す図。
【図２２】論理下位ページデータの読み出し時のデータの流れを示す図。
【図２３】論理上位ページデータのプログラム動作のアルゴリズムを示す図。
【図２４】論理上位ページデータのプログラム動作の動作波形の例を示す図。
【図２５】データコピー時のデータの流れを示す図。
【図２６】プログラム時のデータの流れを示す図。
【図２７】ベリファイ時のデータの流れを示す図。
【図２８】論理下位ページデータのプログラム動作のアルゴリズムを示す図。
【図２９】論理下位ページデータのプログラム動作の動作波形の例を示す図。
【図３０】データコピー時のデータの流れを示す図。
【図３１】プログラム時のデータの流れを示す図。
【図３２】ベリファイ時のデータの流れを示す図。
【図３３】論理下位ページデータのプログラム動作のアルゴリズムを示す図。
【図３４】論理下位ページデータのプログラム動作の動作波形の例を示す図。
【図３５】データコピー時のデータの流れを示す図。
【図３６】プログラム時のデータの流れを示す図。
【図３７】ベリファイ時のデータの流れを示す図。
【図３８】複数のカラムバンクを有する多値メモリの例を示す図。
【図３９】リード時のパイプライン動作の概要を示す図。
【図４０】プログラム時のパイプライン動作の概要を示す図。
【符号の説明】
１  ：メモリセルアレイ、  ２  ：データ回路、  ３  ：ワード線制御回路、  ４  ：カラムデコーダ、  ５  ：アドレスバッファ、  ６：  Ｉ／Ｏセンスアンプ、  ７  ：データ入出力バッファ、  ８  ：ウェル／ソース線電位制御回路、  ９Ａ  ：電位生成回路、  ９Ｂ  ：切替回路、  １０  ：一括検知回路、１１  ：メモリチップ、  １１−１  ：ｐ型シリコン基板、  １１−２，１１−４  ：ｎ型ウェル領域、  １１−３，１１−５  ：  ｐ型ウェル領域、  １２：コマンドインターフェイス回路、  １３  ：ステートマシーン、  １４  ：ドレイン拡散層、  １５  ：ソース拡散層、  １６  ：ｎ型拡散層、  １７  ：ｐ型拡散層、  １８  ：電位設定線、  １９  ：素子分離層、  ２０，２１  ：絶縁層、  ＤＳ１，ＤＳ２  ：データ記憶部（キャパシタ）、  ＤＳ３  ：データ記憶部（センスラッチ）、  ＤＳ４，ＤＳ５  ：データ記憶部（インターフェイスラッチ）、  Ｑｎ１，〜Ｑｎ１９，Ｑ１〜Ｑ５  ：ｎチャネルＭＯＳトランジスタ、  ＴＧ１，ＴＧ２  ：トランスファゲート、  Ｍ０〜Ｍ１５  ：メモリセル、  Ｓ１，Ｓ２  ：セレクトゲートトランジスタ、  Ｕ  ：ＮＡＮＤセルユニット。
【図１】
2004206833.tif 000003
【図２】
2004206833.tif 000004
【図３】
2004206833.tif 000005
【図４】
2004206833.tif 000006
【図５】
2004206833.tif 000007
【図６】
2004206833.tif 000008
【図７】
2004206833.tif 000009
【図８】
2004206833.tif 000010
【図９】
2004206833.tif 000011
【図１０】
2004206833.tif 000012
【図１１】
2004206833.tif 000013
【図１２】
2004206833.tif 000014
【図１３】
2004206833.tif 000015
【図１４】
2004206833.tif 000016
【図１５】
2004206833.tif 000017
【図１６】
2004206833.tif 000018
【図１７】
2004206833.tif 000019
【図１８】
2004206833.tif 000020
【図１９】
2004206833.tif 000021
【図２０】
2004206833.tif 000022
【図２１】
2004206833.tif 000023
【図２２】
2004206833.tif 000024
【図２３】
2004206833.tif 000025
【図２４】
2004206833.tif 000026
【図２５】
2004206833.tif 000027
【図２６】
2004206833.tif 000028
【図２７】
2004206833.tif 000029
【図２８】
2004206833.tif 000030
【図２９】
2004206833.tif 000031
【図３０】
2004206833.tif 000032
【図３１】
2004206833.tif 000033
【図３２】
2004206833.tif 000034
【図３３】
2004206833.tif 000035
【図３４】
2004206833.tif 000036
【図３５】
2004206833.tif 000037
【図３６】
2004206833.tif 000038
【図３７】
2004206833.tif 000039
【図３８】
2004206833.tif 000040
【図３９】
2004206833.tif 000041
【図４０】
2004206833.tif 000042