(57)【特許請求の範囲】
【請求項１】
集積回路により構成された不揮発性メモリデバイスであって、
エラー許容区分（１１）及びヘッダ区分（１２）を含む、前記集積回路上の浮遊ゲートメモリセルのアレイ（１０）と、
入力データストリーム（２４）を受信するデータインバッファ（２２）と、
前記データインバッファ（２２）に結合され、前記データインバッファ（２２）からデータを受取り、受取ったデータをプログラムするため前記アレイ（１０）に与えるプログラムバッファ（１４、１０３）と、
前記アレイ（１０）の読出し、プログラミング、消去、及び検査を制御するとともに、デバイス全体に分布している論理機能を制御する状態マシン（１９）と、を備え、
前記プログラムバッファ（１４、１０３）は、ページバッファ（１４ａ、１０３ａ）及び主バッファ（１４ｂ、１０３ｂ）からなり、
前記受取ったデータの所定のバイト数のビット列は、前記ページバッファ（１４ａ、１０３ａ）内に格納され、この格納されたデータのビット列によって前記エラー許容区分（１１）及びヘッダ区分（１２）内の前記浮遊ゲートメモリセルにプログラムが行われ、
前記ページバッファ（１４ａ、１０３ａ）内に格納されたデータのビット列の内、プログラム検査に合格したデータのビットはリセットされて再度のプログラムには利用されないように制御される、不揮発性メモリのデバイスにおいて、
前記ページバッファ（１４ａ、１０３ａ）内に格納されたデータを前記エラー許容区分（１１）及びヘッダ区分（１２）内の前記浮遊ゲートメモリセルにプログラムした後に、このページのプログラムが合格したか否かを判定するページ検査を行い、
前記ページ検査に合格しない前記アレイ（１０）内のエラー許容区分（１１）及びヘッダ区分（１２）内の浮遊ゲートメモリセルのビットに対して、第１の最大再実行カウントに到達するまでプログラムするプログラム動作を再実行し、
次いで、前記ページ検査に合格しないページの前記アレイ（１０）内のヘッダ区分（１２）のプログラムが合格したか否かを判定するヘッダ検査を行い、
前記ヘッダ検査に合格しない前記アレイ（１０）内のヘッダ区分（１２）の浮遊ゲートメモリセルのビットのみに対して、第２の最大再実行カウントに到達するまでプログラムするプログラム動作を再実行する手段を有する、
ことを特徴とする不揮発性メモリデバイス。
【請求項２】
集積回路により構成された、エラー許容データを格納するための不揮発性メモリデバイスであって、
エラー許容区分（１１）及びヘッダ区分（１２）を含む、前記集積回路上の浮遊ゲートメモリセルのアレイ（１０）と、
入力データストリーム（２４）を受信するデータインバッファ（２２）と、
前記データインバッファ（２２）に結合され、前記データインバッファ（２２）からデータを受取り、受取ったデータをプログラムするため前記アレイ（１０）に与えるプログラムバッファ（１４、１０３）と、
状態マシン（１９）に接続された、前記アレイ（１０）の消去、プログラム、及び検査のモード制御論理（３０）と、検査動作中に決定された欠陥情報を格納する状態レジスタ（３８）と、を備え、
前記プログラムバッファ（１４、１０３）は、ページバッファ（１４ａ、１０３ａ）及び主バッファ（１４ｂ、１０３ｂ）からなり、
前記受取ったデータの所定のバイト数のビット列は、前記ページバッファ（１４ａ、１０３ａ）内に格納され、この格納されたデータのビット列によって前記エラー許容区分（１１）及びヘッダ区分（１２）内の前記浮遊ゲートメモリセルにプログラムが行われ、
前記ページバッファ（１４ａ、１０３ａ）内に格納されたデータのビット列の内、プログラム検査に合格したデータのビットはリセットされて再度のプログラムには利用されないように制御される、不揮発性メモリのデバイスにおいて、
前記モード制御論理（３０）は、前記ページバッファ（１４ａ、１０３ａ）内に格納されたデータを前記エラー許容区分（１１）及びヘッダ区分（１２）内の前記浮遊ゲートメモリセルにプログラムした後に、このページのプログラムが合格したか否かを判定するページ検査を行い、
前記ページ検査に合格しない前記アレイ（１０）内のエラー許容区分（１１）及びヘッダ区分（１２）内の浮遊ゲートメモリセルのビットに対して、第１の最大再実行カウントに到達するまでプログラムするプログラム動作を再実行し、
次いで、前記ページ検査に合格しないページの前記アレイ（１０）内のヘッダ区分（１２）のプログラムが合格したか否かを判定するヘッダ検査を行い、
前記ヘッダ検査に合格しない前記アレイ（１０）内のヘッダ区分（１２）の浮遊ゲートメモリセルのビットのみに対して、第２の最大再実行カウントに到達するまでプログラムするプログラム動作を再実行する手段を有する、
ことを特徴とする不揮発性メモリデバイス。
【請求項３】
集積回路により構成された、リアルタイムでエラー許容データを格納するための不揮発性メモリデバイスであって、
エラー許容区分（１１）及びヘッダ区分（１２）を含む、前記集積回路上の浮遊ゲートメモリセルのアレイ（１０）と、
入力データストリーム（２４）を受信するデータインバッファ（２２）と、
前記データインバッファ（２２）に結合され、前記データインバッファ（２２）からデータを受取り、前記入力データストリーム（２４）を含むページをプログラムするための、前記アレイ（１０）に並列に与えるプログラムバッファ（１４、１０３）と、
状態マシン（１９）に接続された、前記アレイ（１０）の消去、プログラム、及び検査のモード制御論理（３０）と、検査動作中に決定された欠陥情報を格納する状態レジスタ（３８）と、を備え、
前記プログラムバッファ（１４、１０３）は、ページバッファ（１４ａ、１０３ａ）及び主バッファ（１４ｂ、１０３ｂ）からなり、
前記受取ったデータの所定のバイト数のビット列は、前記ページバッファ（１４ａ、１０３ａ）内に格納され、この格納されたデータのビット列によって前記エラー許容区分（１１）及びヘッダ区分（１２）内の前記浮遊ゲートメモリセルにプログラムが行われ、
前記ページバッファ（１４ａ、１０３ａ）内に格納されたデータのビット列の内、プログラム検査に合格したデータのビットはリセットされて再度のプログラムには利用されないように制御される、不揮発性メモリのデバイスにおいて、
前記モード制御論理（３０）は、前記ページバッファ（１４ａ、１０３ａ）内に格納されたデータを前記エラー許容区分（１１）及びヘッダ区分（１２）内の前記浮遊ゲートメモリセルにプログラムした後に、このページのプログラムが合格したか否かを判定するページ検査を行い、
前記ページ検査に合格しない前記アレイ（１０）内のエラー許容区分（１１）及びヘッダ区分（１２）内の浮遊ゲートメモリセルのビットに対して、第１の最大再実行カウントに到達するまでプログラムするプログラム動作を再実行し、
次いで、前記ページ検査に合格しないページの前記アレイ（１０）内のヘッダ区分（１２）のプログラムが合格したか否かを判定するヘッダ検査を行い、
前記ヘッダ検査に合格しない前記アレイ（１０）内のヘッダ区分（１２）の浮遊ゲートメモリセルのビットのみに対して、第２の最大再実行カウントに到達するまでプログラムするプログラム動作を再実行する手段を有する、
ことを特徴とする不揮発性メモリデバイス。
【発明の詳細な説明】
継続出願データ
本出願は、1994年９月13日付YiuらのＰＣＴ出願ＵＳ 94/10331、現在は1994年10月26日付米国特許出願第08/325,467号“FLASH EPROM INTEGRATED ARCHITECTURE”の部分継続である。
発明の背景
発明の分野
本発明は、浮遊ゲートメモリセルをベースとする不揮発性メモリ（非揮発性メモリともいう。）デバイスに関し、より詳しく述べれば、エラー許容（フォールトトレラント）データを格納するのに適するフラッシュＥＰＲＯＭまたはＥＥＰＲＯＭ集積回路に関する。
関連技術の説明
浮遊ゲートトランジスタをベースとする非揮発性集積回路メモリデバイスは、電気的にプログラム可能な読出し専用メモリ（ＥＰＲＯＭ）、電気的に消去可能・プログラム可能な読出し専用メモリ（ＥＥＰＲＯＭ）、及び最近のいわゆるフラッシュメモリとして知られるデバイスを含む。浮遊ゲートデバイスの密度が増加するにつれてそれらは益々費用有効になり、またプログラミング及び消去速度が増加するにつれてこの型の非揮発性メモリは広く使用されるようになってきている。しかしながら、浮遊ゲートをベースとする非揮発性メモリデバイス内にデータをプログラムするプロセスは、未だに比較的遅いプロセスである。このプロセスは、アレイ内にデータパターンを確立するために、メモリセルの浮遊ゲート内へ、または浮遊ゲートから電荷を移動させることを含んでいる。任意のセルの浮遊ゲートを電子の母集団で充電すると、メモリセルのターンオンしきい値は読出しゲート電圧よりも高くなる。浮遊ゲートから電子を放電させると、ターンオンしきい値は読出しゲート電圧よりも低く移動する。従って、浮遊ゲートを充電及び放電するプロセスによって、非揮発性メモリアレイ内にデータを書込むことが可能になる。
これらのデバイス内の浮遊ゲートを充電及び放電させるメカニズムは、いわゆる熱い電子注入及びいわゆるファウラ・ノルトハイムトンネリングを含む。熱い電子注入は、ゲート及びドレインに比較的高い電圧を印加し、またソースに比較的低い電圧を印加することによって、浮遊ゲート内の電荷を増加させるのに使用される。その結果得られたチャネル電流内の熱い電子は、浮遊ゲートをチャネルから分離している薄い酸化物を横切って注入される。これにより、浮遊ゲート内の電荷が増加する。代替として、いわゆるファウラ・ノルトハイムトンネリングを使用してセルをプログラムまたは消去することができる。このトンネリングメカニズムは、ゲートと、ドレイン、ソース、またはチャネルとの間に比較的大きい電位を与えることによって動作する。ファウラ・ノルトハイムトンネリング効果は、浮遊ゲートを絶縁している薄い酸化物を通して電荷をトンネルさせる。ファウラ・ノルトハイムトンネリングプロセスは、熱い電子注入プロセスに比して比較的遅い。しかしながら熱い電子注入は大きい電流を使用する。更に、熱い電子注入は浮遊ゲートを放電させるために使用することができない。そのため、放電プロセスには殆どトンネリングメカニズムが使用されている。
浮遊ゲートデバイス内のセルのプログラミング及び消去に使用されるトンネリング及び熱い電子注入メカニズムが、アレイ内の各セルに与える影響は同一ではない。従って近代的な浮遊ゲートデバイス上のプログラミング及び消去機能は、消去及びプログラム検査アルゴリズムを含んでいる。プログラミングまたは消去動作の後に、動作を受けたメモリが検査される。もし何れかのセルが検査プロセスに合格しなければ、再プログラムまたは再消去プロセスが実行される。このプロセスは多数回（若干のデバイスにおいては、1000回またはそれ以上も）にわたって繰り返し試みられる。これは、アレイ内の全てのデータが正確に格納されていることを保証し、それにより、満足に動作する（セルのプログラムまたは消去に必要な再実行回数を除いて）であろう浮遊ゲートデバイスを破棄してしまうのを防ぐためである。
これらのデバイスに含まれるプログラム及び消去検査手順は、比較的時間がかかる。従って、実時間格納（記憶）応用にフラッシュメモリまたは他の浮遊ゲートメモリデバイスを使用することは制限されていた。実時間応用においては、フラッシュメモリデバイスがオーバランせずに格納できるよりも多くのデータを入力ストリームが供給する。従って、従来の実時間応用は、ダイナミックＲＡＭ、ＳＲＡＭ、または他の信頼できる高速メモリ技術に頼っていた。しかしながら、これらの従来のメモリ技術は非揮発性ではなく、もし停電すればデータが失われる恐れがある。
Grossらの米国特許第5,200,959号に開示されているような、従来の順次データのためのフラッシュメモリシステムは、欠陥をバイト毎に浮遊ゲートアレイ内にマップし、欠陥マップを浮遊ゲートアレイ自体の中に格納していた。欠陥マップを使用すると、デバイス内の欠陥領域に対するさらなる動作を回避することができ、性能及びデバイスの耐久性が改善される（前記Grossらの明細書の第８列第62行乃至第９列第16行参照）。これは、時間クリティカルではなく、またエラーを許容しない応用に対しては有用である。しかしながら、時間クリティカルな動作、または十分なバッファメモリが存在しないような動作では、欠陥マップを生成し、格納するために要する余分な時間のために、デバイスは高速順次データストリームに対して非実用的になってしまう。
従って、時間クリティカルなデータストリームを格納することができ、低価格であり、そしてエラー許容の、高密度フラッシュメモリのような浮遊ゲートメモリデバイスアーキテクチャを提供することが望まれている。
発明の概要
本発明は、アレイ内の欠陥を許容する浮遊ゲートメモリセルのアレイを基礎とする非揮発性メモリデバイスを提供する。このアレイは、アレイのための読出し、消去、プログラム、及び検査の制御論理回路（制御論理ともいう。）を含む。制御論理には状態レジスタが接続されていて、データの複数のバイトを含む検査動作中に決定された統計を格納する。この統計は、消去及びプログラム動作の少なくとも一方について検出された欠陥を特徴付けている。例えば、制御論理は消去検査資源及びプログラム検査資源を含み、統計は、消去またはプログラム検査に合格しなかった複数のメモリセルを含む複数のバイト数のような欠陥の数を表している。代替として統計は、プログラム検査に合格しなかったか否かをメモリ内の順次バイトのしきい値数によって表すことができ、また検査中に欠陥を有していることが決定されたバイトのアドレスを表すこともできる。状態レジスタを使用すると、そのデバイスについてプログラム及び消去を再実行する回数を大幅に減少させることができ、デバイスを実時間格納システムへ応用することが可能になる。
多くの実時間格納問題はエラー許容である。つまり、大量のデータ内に複数のエラーがあっても重大ではない。従って、データのユーザは、ある動作を受けた複数のバイト内にどれ程多くのエラーが検出されたかを表している状態レジスタに頼ることができる。その動作に対してしきい値数よりも多くのエラーが検出された場合に限って、そのデータは破棄されるか、またはアレイ内の他の場所に再プログラムされる。エラー許容のアプリケーションの場合には、デバイスはかなりの量のデータを格納し、そのデータの使用に実質的な影響を与えないような僅かなエラーは許容する。
例えば多くのオーディオ応用においては、大量のディジタル化されたオーディオデータを格納する。これらの応用では、任意のオーディオデータストリーム内に１つまたは２つのエラーデータが存在していても、そのデータによってオーディオ出力の質が重大な影響を受けることはない。しかしながら、そのデータ内にどれ程多くのエラーが存在しているのか、及び複数の順次エラーのような若干の種類のエラーが発生したか否かを知ることは重要である。もし、エラーが多過ぎるか、または望ましくない種類のエラーが検出されれば、そのメモリアレイのエラーを生じたセグメントは不良セクタとして識別することができ、再び使用されることはない。代替として、そのエラーを生じたセグメントのための欠陥マップを生成し、その後の動作に使用することができる。
従って、本発明は、浮遊ゲートメモリセルのアレイ内にデータのバイトのシーケンスを格納するためのプロセスとして特徴付けることができる。このプロセスは、データのセグメントをアレイ内にプログラムする段階と、このセグメントについて検査動作を遂行する段階と、プログラムされたセグメント内の欠陥に関する統計を検査動作中に決定する段階とを備えている。これらの統計はメモリ内に格納され、プログラム動作の後に読出される。これらの統計はその動作についての複数の欠陥を含むことができ、この面によるプロセスは、もし統計がそのセグメントにしきい値数よりも多い欠陥が見出されていることを表していれば、そのデータをアレイの別の領域へ再プログラムするか、または代替として、欠陥セグメントからそのデータを破棄することを含んでいる。
統計は状態レジスタ内に格納することができ、状態レジスタは、先行プログラムまたは消去検査動作において欠陥が検出されたか否かを表すビットを含むメモリ構成に関する情報、または他の情報を格納するための第１のフィールドを含んでいる。状態レジスタの第２のフィールドは、先行動作中に検出された欠陥のカウントを格納している。この面によれば、状態を読出すプロセスは、欠陥が検出されたか否かを決定するために、第１のフィールドの第１の読出しを含む。もし欠陥が検出されたことを第１のフィールドが表していれば、第２のフィールドが読出されてしきい値を超えたか否かを決定する。更に、欠陥バイトの１または複数のアドレスを状態レジスタ内に格納し、デバイスの性能をオンザフライで最適化するのに使用することができる。
本発明の別の面によれば、メモリは、エラー許容ではないデータを格納する第１の区分と、エラー許容であるデータを格納する第２の区分とに区分化することができる。例えば、第１の区分は順次データのセグメントに関するヘッダ情報を格納することができる。ヘッダ情報は、正確であらねばならない処理の場合に頼りになるものである。エラーを許容しない第１の区分を変更してその信頼性（例えば、ビット当たり複数のメモリセルを用いる）を改善することができる。代替として、制御論理は、プログラム検査を通らなかったセルについて、ある再実行カウントまで、プログラム動作を再実行する回路を含むことができる。この再実行カウントは、第１の区分のためのカウントを、エラーを許容する第２の区分のためのカウントより大きくすることができる。もし第１の区分内の何れかのセルが検査に不合格ならば、その選択は不良である。もし第２の区分内の１つのセルが検査に不合格ならば、そのエラーが解析され、ホストシステムが解析するためにそのエラーに関する統計が状態レジスタ内に格納され、そのデータは正常に動作し続ける。
本発明は、上述したような浮遊ゲートメモリセルのアレイを含むエラー許容データ格納のための非揮発性メモリデータとして特徴付けることもできる。この面においては、実時間入力データストリームを受信する入力バッファが設けられている。入力バッファに接続されているページプログラムバッファが、入力バッファからデータを受信し、受信したページデータをプログラミングのためにアレイへ供給する。プログラム制御論理が入力バッファ及びプログラムバッファに接続され、ページプログラムバッファからのデータでアレイを並列にプログラムする資源を含んでいる。状態レジスタが制御論理に接続され、上述したようにプログラム動作に関する統計を格納する。
典型的な浮遊ゲートアーキテクチャでは、アレイの任意セクタが（最も遅いセルの速度にデバイスの速度を制限する）１つまたは２つの「スロー」（slow）バイトを有していることが多い。本発明によれば、これらの「スロー」バイトは状態レジスタ内の統計として現れるが、デバイスのワーストケースプログラミング速度をもたらすことはない。これは、時間クリティカルな、エラー許容のアプリケーションにおけるデバイスの有用性を大いに改善することになる。
以上のように、実時間エラー許容のアプリケーションのための非揮発性メモリデバイスが提供される。本デバイスは、記録の質に大きい影響を与えることなく、かなりな数のエラーデータを許容できる低価格記録応用のオーディオまたはビデオデータを格納するのに特に適している。他の多くの実時間データ収集のアプリケーションもエラー許容であり、本発明は非揮発性集積回路メモリデバイスに重要な前進をもたらす。
本発明の他の面及び長所は、添付図面、以下の詳細な説明、及び請求の範囲から明白になるであろう。
【図面の簡単な説明】
図１は、エラー許容データ格納のための集積回路非揮発性メモリデバイスのブロック線図である。
図２は、本発明による集積回路メモリデバイスの代替アーキテクチャのブロック線図である。
図３は、本発明によるプログラム及びプログラム検査動作の流れ図である。
図４は、本発明による消去及び消去検査動作の流れ図である。
図５は、本発明の一実施例による上述したページプログラミングプロセスに適するアレイアーキテクチャの概要図である。
図６は、図５のアーキテクチャのための自動ページプログラミング及び検査に使用するページバッファ及びビットラッチの論理図である。
図７は、図６のシステムに使用されるページプログラム及び自動検査回路の回路図である。
図８は、図６及び７の自動検査回路内の制御信号のタイミング図である。
詳細な説明
図１−４を参照して本発明を詳細に説明する。図１に本発明による集積回路アーキテクチャを示す。図１に示すように、本発明による非揮発性集積回路メモリは、全体を１０で示すＥＥＰＲＯＭアレイを含む。アレイ１０は、全体を１１で示すエラー許容区分と、全体を１２で示すヘッダ区分とを含んでいる。勿論ヘッダ区分及びエラー許容区分のレイアウトは、ＥＥＰＲＯＭアレイのどのような特定の装置にも適合させることができる。アレイ１０に結合されているのは、行デコーダ（ＸＤＥＣ）１３、及び２段プログラムバッファ１４である。プログラムバッファ１４は、ページバッファ１４ａ及び主バッファ１４ｂを含む。ページバッファ１４ａ及び主バッファ１４ｂは独立した組のＹパストランジスタ１５に接続され、これらのトランジスタは分離した列デコーダ（ＹＤＥＣ）１６によって制御される。行デコーダ１３及び列デコーダ１６は、アドレスバッファ／ジェネレータ１８からライン１７Ｒ及び１７Ｃを通してアドレス受信する。ランダムアクセスモード及び開始アドレスのために、チップ外からアドレスを受信するように、アドレスバッファ／ジェネレータ１８はデータインバッファ２２に接続されており、またページアドレスジェネレータ（図示してないラインによって列デコーダ１６に接続されている）を含む状態マシン１９の制御の下に、内部的にアドレスを生成する。矢印２０で示してあるように、プログラム及び消去電圧発生器２１がアレイ１０に接続されており、公知のようにアレイ１０内の浮遊ゲートセルをプログラム及び消去するために使用される高いプログラミング電位及び消去電位を印加する。これらの電圧は、アレイのワードライン、ビットライン、及び接地端子を、ＥＥＰＲＯＭアレイにおける熱い電子注入及び／またはファウラ・ノルトハイムトンネリング用のプログラミング電位で駆動することができる。
主バッファのためのＹパストランジスタ１５はデータインバッファ２２に接続され、ページバッファ及びアレイのためのＹパストランジスタは１組のセンス増幅器２３に接続されている。データインバッファ２２は、列デコーダ１６に応答してデータを主バッファ１４ｂ内へ供給する。データインバッファ２２は、チップ外からライン２４を通して入力データを受信する。一つの面によれば、データライン２４は１本のピンに接続され、直列データをデータインバッファ２２へ供給する。データインバッファ２２はデータのバイトを、ライン２５を通してＹパストランジスタ１５へ並列に供給する。Ｙパストランジスタ１５はライン１７上のアドレスに応答し、入力データを主バッファ１４ｂへロードするのに使用される。この例によれば、主バッファ１４ｂ及びページバッファ１４ａは、アレイ１０を並列にプログラミングするための、例えば132バイトのデータを格納する（128バイトがアレイ１１内に、４バイトがヘッダ内に格納される）。列デコーダ１６も読出し動作中に動作し、以下に説明するページバッファ１４ａを通る８ビットラインをライン２６を通してセンス増幅器２３に接続する。センス増幅器２３の出力は、ライン２７を通して出力バッファ２８へ印加される。出力バッファ２８は、ライン２９上に直列出力ストリームを供給するための並列・直列変換器を含むことができる。代替として、ライン２９上の出力ストリームは８または16ビット幅の出力バスであることができる。
更に、チップは、データインライン２４、チップ選択入力ライン３１、及び保護信号入力ライン３２に接続されているモード制御論理３０を含んでいる。モード制御論理３０はライン３３を通して状態マシン１９に接続されている。クロック入力３４がクロック発振器３５に接続されている。クロック発振器３５は、ライン３６を通してモード制御論理に、またライン３７を通して状態マシン１９に接続されており、入力及び出力データストリームをクロックし、状態マシン１９及びモード制御論理３０のための内部クロックを生成するのに使用される。また矢印４５で示してあるように、クロック発振器３５はデバイス内のいろいろなブロックに接続されている。
状態マシン１９は、アレイ１０の読出し、プログラミング、消去、及び検査を制御する資源を含んでいる。矢印４６で示してあるように、状態マシンは、公知のようにデバイス全体に分布している論理機能を制御する。図３及び４を参照して後述するように、状態マシン１９は消去及びプログラム動作のための検査論理を含んでいる。
図１に示す例によれば、ページプログラミングのためのアーキテクチャが設けられており、132バイトのページが並列にプログラムされる。基本的にこの動作は、プログラミングの前に消去検査を伴うセクタ消去を含み、次いでページプログラミング動作が実行される。更に、検査動作中に検査に合格したページバッファ内のビットをリセットするのに使用されるタイミング制御回路５０、及びパストランジスタ５１を使用して、自動プログラム検査再実行動作が実行される。ページバッファ内の全てのビットがリセットされれば、プログラムが成功裏に完了したのである。もし全てのビットがリセットされる前に最大再実行カウントを超えれば、詳細を後述するように、欠陥が状態レジスタにログされる。
また本発明によれば、集積回路は、普通は本質的に揮発性で、アレイから分離しているフリップフロップ、スタティックＲＡＭセル、または他の記憶装置技術を使用して実現された１または複数の状態レジスタ３８を含んでいる。これらのレジスタは、ライン３９を通して状態マシン１９に接続され、アレイ内で実行されるプログラミング及び消去動作に関するデータを格納する。状態レジスタ３８は、ライン４０を通して出力バッファ２８に接続され、デバイスのユーザが読取ることができる。
モード制御論理３０は、直列データ入力ライン２４に基づいてコマンド定義を実現する。アレイ１０はセクタ消去アーキテクチャを含み、各セクタは複数のページを含む。例えばアレイがセクタ当たり８ページの場合には、各セクタは132×８バイトを含み、各ベージは132バイトを含む。
ライン３２上の保護信号は、アレイの頂部または底部の何れかの区分におけるプログラム及び消去の両動作を不能にしたり、または可能にしたりするのに使用される。これは、各々の保護状態を表す２つの非揮発性メモリビットを、アレイの頂部及び底部区分に結合することによって実現されている。チップ選択反転ＣＳが高レベルから低レベルへ移行中にライン３２上の保護入力が高レベルになると、次の入力コマンドが指定された区分の保護／非保護コマンドについて調べる。保護／非保護モードの実行中に、選択された頂部または底部区分（それぞれ４８、４９）に関連する非揮発性メモリビットがプログラムまたは消去される。
プログラムまたは消去コマンドが発行された後、指定されたセクタまたはページ位置のための検査ルーチンを含む自動プログラムまたは消去アルゴリズムが実行される。これらのルーチンに関しては、図３及び４を参照して後述する。プログラムコマンドは132バイトのページ上で実行され、消去コマンドは1,056バイトのセクタ上で実行される。自己時間定めされた高電圧動作を中断させることができるようにするために、延期及びプログラム、または消去打切りコマンドが追加される。また延期動作の後に消去を再開できるようにするために、消去再開コマンドが供給される。
状態レジスタ３８は、チップの状態及び構成を表すようになっている。プログラム及び／または消去動作の完了及びエラーフラグ状態、エラー延期状態、打切りビット状態、詳細なエラー報告、及び頂部及び底部保護フラグの状態を決定するために、状態レジスタコマンドを発行することができる。
以下の表は、デバイスの一例のためのコマンドを定義するものであり、ＳＡ２は第２セクタアドレスバイトであり、ＳＡ１は第１セクタアドレスバイトであり、ＰＮはセクタ内のページ数であり、ＰＡはページアドレスであり、Ｘはドントケア（don’t care）を表し、そしてデバイスは16進数で表されている。保護入力及びデータのシーケンス（第１乃至第７バイト）はコマンドを指定する。
例えば、２バイトのセクタアドレスが、行デコーダ１３においてデコードされて８ページのセクタを指定する。ページ数は行デコーダにおいてデコードされた３ビットの値であり、あるセクタを有するページを指定する。ページアドレスはあるページ内のバイトを表し、列デコーダ１６においてデコードされる。勿論、他のセクタサイズ及びデコーディング方式も使用することができる。
0004148990.tif 000002
0004148990.tif 000003
0004148990.tif 000004
上記コマンド構造によるデバイスの動作は以下のように記述することができる。何れかのコマンドを発行する前に、本発明によれば、デバイスがその意図した動作の準備を整えているように、状態レジスタを調べるべきである。
１）アレイ読出し１
このコマンドを受信するとクロック入力の立ち下がり縁において、デバイスは指定されたアドレスから１バイトのアレイデータを出力する。
２）アレイ読出し２
クロック入力の立ち下がり縁において、デバイスは指定されたアドレスからアレイ内のデータを順次に出力する。また、反転ＣＳが高レベルになるまでデバイスはデータを連続的に出力する。もし読出し動作がそのページの終わりに到達すれば、デバイスはラップアラウンドしてそのページの始まりを読出す。
３）メモリアレイからバッファへ
デバイスはメモリアレイの内容を読出して、（ａ）順次に出力し、（ｂ）反転ＣＳが高レベルになるまで、指定されたアドレスから開始して対応する主バッファ位置にデータを順次に書込む。もしページアドレスの終わりに到達すれば、デバイスはラップアラウンドして主バッファの始まりに書込む。
４）バッファ読出し
反転ＣＳが高レベルになるまで、クロック入力の立ち下がり縁において、デバイスは指定されたページアドレスから開始して主バッファのデータを出力する。もしページアドレスの終わりに到達すれば、デバイスは主バッファの始まりへラップアラウンドする。
５）バッファ書込み
反転ＣＳが高レベルになるまで、クロックの立ち上がり縁において、デバイスは入力からのデータを、指定されたページアドレスから開始して主バッファ内へ書込む。バッファ書込み中のクロックの各立ち下がり縁において、デバイスは第１の状態レジスタの内容を出力ピンへ出力する。もし書込み転送動作が主バッファの終わりに到達すれば、デバイスは主バッファの始まりへラップアラウンドする。
６）状態レジスタ読出し１
状態レジスタ読出しコマンドは、デバイスがデバイスの状態を決定するために稼働中であっても任意の時点に発行することができる。第１の状態レジスタは次のように配列されている。
0004148990.tif 000005
７）状態レジスタ２読出し
第２の状態レジスタは次のように配列されている。
0004148990.tif 000006
ビット６乃至ビット０は、最後のプログラム／消去動作中のエラーを生じたバイトの数を限定する。高電圧動作の後に、ユーザは先ず第１の状態レジスタを読出してデバイスが作動可であるか否か、及び何等かのエラーが発生したか否かを決定すべきである。もしエラーが発生していれば、ユーザは第２の状態レジスタを読出してエラーを生じた位置の数を決定すべきである。ページプログラムまたはセクタ消去の最大エラーカウントは、128バイトである。
８）状態レジスタクリヤ
第１の状態レジスタの場合、このコマンドは欠陥検出ビット（ビット１及びビット０）、及び打切りビット（ビット３）をリセットすることだけしかできない。これらの３つのビットは動作中にオンチップ状態マシンによってセットされ、リセットするには状態レジスタクリヤコマンドを発行する（またはＶCC給電を停止する）しかない。第１の状態レジスタの他の全てのビットの場合、デバイスがプログラム／消去動作を完了するとＲ／Ｂビット（ビット７）は自動的にリセットされ、対応する保護非揮発性ビットが消去されると頂部及び底部保護ビット（ビット６及びビット５）は“１”にリセットされ、デバイスがスリープモードから脱するとスリープビットは自動的にリセットされ、そして消去再開コマンドが発行されると消去延期ビット（ビット２）はリセットされる。
第２の状態レジスタの場合、クリヤコマンドが発行されると、エラーカウンタ（ビット６乃至ビット０）が“０”にリセットされる。出力極性ビット（７）の状態は、出力極性非揮発性ビットの状態に依存する。
９）セクタ消去
消去高電圧動作は反転ＣＳの立ち上がり縁において始まり、デバイスは稼働状態に入る。自己時間定め動作は、データが全て消去されるか、または時間切れになるまで自動的にデータを検査する。作動可信号を検出した後に、ユーザは消去欠陥検出ビット（ビット１及びビット０）をチェックして消去中にエラーが発生しなかったことを確かめるべきである。
10）プログラム
プログラムデータが出力バッファ内へロードされた後の反転ＣＳの立ち上がり縁においてプログラム高電圧動作が始まり、デバイスは稼働状態に入り10μｓ以内に状態読出し可になる。プログラミング動作の始まりに主バッファがデータをページバッファへ転送するので、デバイスがプログラミング中でも主バッファは新しいデータを入力から受入れ可能になる。作動可信号を検出した後に、ユーザは欠陥検出ビット（ビット１及びビット０）をチェックしてプログラム中にエラーが発生しなかったことを確かめるべきである。
11）消去延期
デバイスは、消去状態にある時だけこのコマンドに応答する。このコマンドが発行されてから、デバイスが消去延期状態に入ってＲ／Ｂビット（ビット７）が高レベルになるまでの0.5ｍｓの間がワーストケースになる。ユーザは別のコマンドを発行する前に、状態レジスタ１を読取ってデバイスの状態をチェックすべきである。消去延期状態ではデバイスは、スリープ、セクタ消去、ページプログラム、消去延期、保護、及び非保護及び極性書込みモードを除く全てのコマンドに応答する。
12）消去再開
このコマンドが発行されると、デバイスは消去延期ビット（ビット２）をクリヤして稼働状態に入り、消去動作をそれが完了するまで再実行する。
13）打切り
打切りコマンドが発行されると、デバイスは打切りビット（ビット３）をセットしてスリープモードに入る。プログラムまたは消去動作が完全ではないために、副ページバッファ内のデータ及びアレイデータは最早有効ではないので、エラービット（ビット１及び／またはビット０）がセットされる。打切り状態では、デバイスカウントがスリープモードにおけるカウントと同一レベルまで減らされ、スリープビット（ビット４）がセットされ、そしてＲ／Ｂビット（ビット７）が作動可状態にある。打切り及びエラービットがセットされているので、プログラムまたは消去コマンドを発行する前に、状態レジスタクリヤコマンドが必要である。
14）保護モード
保護コマンドが発行されると、反転ＣＳの立ち上がり縁において自動プログラム動作が始まる。デバイスは自動的にプログラムし、アドレス入力によって指定された非揮発性ビットを検査する（検査に合格するまで）。完了すると状態ビットは作動可状態にリセットされ、対応する保護ビット（ビット５またはビット６）は保護状態に変えられる。保護状態においては、デバイスは読出しだけが可能になる。
15）非保護モード
非保護コマンドが発行されると、反転ＣＳの立ち上がり縁において自動消去動作が始まる。デバイスは自動的に消去し、アドレス入力によって指定された非揮発性ビットを検査する（検査に合格するまで）。完了すると状態ビットは作動可状態にリセットされ、対応するビット（ビット５またはビット６）は非保護状態に変えられる。デバイスは、工場から出荷される時には非保護状態にある。
16）スリープモード
スリープコマンドによってデバイスは、スリープモードへ入る前に現在の動作を完了させることができる。現在の動作を完了してしまうと、Ｒ／Ｂビット（ビット７）は作動可状態へ戻り、スリープビットがセットされる。スリープモード中は状態レジスタはリセットされないから、エラービット（ビット０及びビット１）は最後の動作でセットされていることがあり得る。他の何等かのコマンドを書込むと、デバイスはスリープモードから目覚める。典型的なスリープ電流は１μＡ以下である。
17）極性消去出力
このコマンドが発行されると、直列データ出力のクロック極性を限定する非揮発性ビットは消去され、直列データは、読出し中にクロックの立ち下がり縁においてシフトアウトする。極性ビットの状態は、第２の状態レジスタのビット“７”から読出すことができる。
状態レジスタは、プログラミング及び／または消去検査に合格しなかった複数の順次バイトに関するより多くの情報を含むようにすることもできる。若干の応用は、データ内に分布しているエラーは許容できるが、順次に発生するエラーは許容しない。従って、所定数の順次エラーを表す状態フラグを状態レジスタに追加することができる。
状態レジスタは、アレイの各セクタ、またはアレイの各セグメントに関する情報を含むように拡張することもできる。例えば、以下に説明するように、アレイはヘッダ区分１２とエラー許容区分１１とに分割することができる。統計レジスタは、ヘッダ区分の有効セグメントに関する情報、及びエラー許容区分１１内のエラーの数に関する情報を格納することができる。検査ルーチン中に検出されたエラーの解析は、状態マシン１９を使用してエラーを分類し、エラーを探知する等、極めて精緻なものにすることができる。
状態レジスタは、さまざまなアーキテクチャを用いることができる。例えば、上述したように（第１のレジスタを読出して消去またはプログラム動作におけるエラーを表す）ビット０またはビット１がセットされているか否かを決定することを含む、２段階読出しプログラムを必要とする２つの状態レジスタを使用することもがきる。第２の段階は、第２のレジスタを読出してエラーの数を決定することを含む。代替システムでは、第１のレジスタを削除し、第２のレジスタの読出しだけを含む。もし何等かのエラーが検出されれば、そのレジスタ内にエラーの数が見出される。２段階動作は必要としない。
更に、レジスタは、単一のアドレス可能な位置のフィールド内に欠陥情報のレベルが見出されるように拡張することもできる。例えば、単一のアドレス可能な位置は、エラーの数を表す１つのフィールドと、第１のエラーの位置を表す第２のフィールドとを含むことができる。
ヘッダ区分１２は、エラーを許容しないセグメントであることができる。例えばプログラム検査論理は、エラー許容区分の場合よりも多くの試みをヘッダ区分に対して実行するか、または他の変更をヘッダ区分１２に対して施すことができる。例えば、ビット当たり２以上のセルを使用し、複数のセルが単一ビットに関して一致しない場合には、多数決ルールまたは欠陥傾向を認識するルールを適用してデータ値を制御することができる。これにより、区分１２はより信頼できるものになる。ヘッダ区分は、エラー許容区分内の対応するセグメントに関するデータ（例えば、そのセグメント内のエラーの数、エラーの位置、アレイ内の他のセグメントに対するそのセグメントのシーケンス番号、データ処理アルゴリズムによって使用されるがエラーを含まない他の情報）を格納することができる。例えば、ヘッダ区分１２は132バイトのページの最初の４バイトとして実現することができる。
図２に、本発明による代替アーキテクチャを示す。この例は、アレイ内の欠陥バイトのアドレスを格納するための付加的な状態レジスタを含んでいる。即ち、図２のシステムは、ヘッダ区分１０１を含むエラー許容アレイ（全体を１００で示す）を含んでいる。行デコーダ１０２がアレイに結合されている。また図１を参照して説明したように、ページバッファ１０３ａ及び主バッファ１０３ｂを含むプログラムバッファ１０３も含まれている。２組のＹパストランジスタ１３４がページバッファ１０３ａ及び主バッファ１０３ｂにそれぞれ接続され、また独立した列デコーダ１０４にも接続されている。主バッファ１０３ｂ及びページバッファ１０３ａへの独立した経路によって、ユーザが供給するアドレスの制御の下にデータを主バッファ内へロードすることが可能になり、また内部ページアドレスジェネレータ１０７を使用して検査及び統計解析論理は別個にページバッファ１０３ａにアクセスすることができる。明瞭化のために、アドレス論理、消去及びプログラム電圧発生器、及びアーキテクチャの他の標準構成要素は図２には示されていない。基本的にシステムはオンチップクロック１０６に接続されている検査制御論理１０５を含んでいる。ページアドレスジェネレータ１０７が含まれており、本発明による検査動作中に使用される。
図１を参照して説明したように、検査動作中にページアドレスジェネレータからライン１０９を通して列デコーダ１０４へ供給されるページアドレスに応答して、データがＹパストランジスタ１３４を通してライン１０８上に読出される。このデータは、一度に８ビットバイトずつセンス増幅器１１０へ供給される。センス増幅器の出力はタイミング制御システム１１１へ供給される。タイミング制御システム１１１は、プルダウントランジスタ１１２を使用して、検査に合格したページバッファ内のビットをリセットするのに使用される。
このようにしてページバッファが全て０を含むようになると、その状態を表す出力がライン１１３上に供給される。本発明によれば、ページバッファはエラー許容アレイ１００と、ヘッダアレイ１０１とに区分化することができる。この面によれば、ライン１１３上の信号は、エラー許容セグメントの内容が全て０であるか否か、またはヘッダセグメントの内容が全て０であるか否かをそれぞれ表している第１のビットＦ．ＡＬＬ“０”及び第２のビットＨ．ＡＬＬ“０”を含んでいる。これらの信号は、マックスアウト（maxout）カウンタ１１４へ印加される。ライン１１３からのＦ．ＡＬＬ“０”信号が高レベルになる前に第１のマックスアウトしきい値を超えると、マックスアウトカウンタ１１４はライン１１５上に第１のマックスアウト信号を生成する。もしライン１１３からのＨ．ＡＬＬ“０”信号が高レベルになる前に第１のしきい値に到達すれば、マックスアウトカウンタ１１４はライン１１６上に第２のマックスアウト信号を生成する。
検査動作の後に、ライン１１５上の第１のマックスアウト信号が高レベルになると、ページアドレスジェネレータ（状態マシンの一部であってよい）は、Ｈ“００”検出器１２０（アドレスバイトが16進の００になったことを検出する）を通してページバッファを読出させる。検出器１２０の出力は、合格ビット及び不合格ビットを含み、これらはライン１２１を通してページアドレスジェネレータへ供給される。もしページのバイトが合格であればページアドレスジェネレータ１０７は、そのページの次のバイトへインクリメントする。もし不合格が検出されれば、後述するように、ページアドレスジェネレータ１０７からのアドレスが欠陥アドレスレジスタ１２２−１乃至１２２−Ｍの１つの中へロードされる。次いでページアドレスジェネレータは、そのページの次の８ビットバイトへインクリメントする。ページが終了すると、ユーザは状態レジスタを読むことができる。
デバイス内の状態レジスタは、図１を参照して説明したように構成されている状態レジスタ１  １２３及び状態レジスタ２  １２４を含む。第１の状態レジスタ１２３は、マックスアウトカウンタ１１４からマックスアウト１及びマックスアウト２信号を受信して、エラー許容アレイ１００の最後のページプログラム動作中にエラーが発生したか否か、及びその最後の動作中にヘッダ区分１０１内においてエラーが発生したか否かを表すビット０及び１を格納する。もしエラー許容アレイ内にエラーが発生すれば、ライン１２１からの不合格ビットを使用して状態レジスタ２  １２４内のカウントをインクリメントさせる。また状態レジスタ２内に格納されているカウントをアドレスとして使用し、ライン１２５を通してページアドレスジェネレータからの欠陥アドレスを格納するために欠陥アドレスレジスタ１２２−１乃至１２２−Ｍを選択させる。
レジスタ１２２−１乃至１２２−Ｍ、及び１２３及び１２４は全て、図２には簡易化した形状で示されているデータアウトバッファ１２６を通して、ホストシステムによって読出すことができる。欠陥アドレス読出しに関して上述したコマンド内にセットアップされた付加的なコマンドが存在しよう。データアウトバッファ１２６は、センス増幅器１１０と共用することも、またはセンス増幅器とは関係なく設けることもできる。
図３及び４に、図１または２のシステムと共に使用するプログラム及び消去アルゴリズムを示す。図３のアルゴリズムは、プログラムコマンドの検出を待機することから始まる（ブロック２００）。もしコマンドが検出されれば、データが主バッファへロードされる（ブロック２０１）。次いでアルゴリズムは、データを主バッファに格納した状態で、チップ選択信号が低レベルから高レベルへ移行するのを待機する（ブロック２０２）。チップ選択信号の移行を検出すると、データのＮバイトをページバッファへ転送する（ブロック２０３）。次いでプログラム再実行カウンタをリセットする（ブロック２０４）。ブロック２０４から、ページバッファ内のデータのプログラム動作が実行される（ブロック２０５）。これは元のページからのデータ、またはこのループを通るその後のパスだけのための不合格バイト内のデータを含むであろう。ページのプログラミングの後、検査動作が実行され、合格したビットをリセットする（ブロック２０６）。もしページが検査に合格すれば、アルゴリズムは完了する（ブロック２０７）。もしページが検査に不合格であれば、アルゴリズムは第１のカウントがマックスアウトであるか否かを決定する（ブロック２０８）。もしマックスアウトであれば、不合格であったバイトが解析され（ブロック２０９）、統計を状態レジスタ内に格納する（ブロック２１０）。もしカウントがマックスアウトを超えていなければ、第１の再実行カウンタがインクリメントされ（ブロック２１１）、アルゴリズムはブロック２０５へループバックしてプログラムを再実行する。
第１のマックスアウトを超えている場合には、アレイのエラー許容セグメントに関する統計が（ブロック２０９及び２１０に関して上述したように）格納される。次にアルゴリズムは、ヘッダ検査に合格したか否かを試験する（ブロック２１２）。もし合格していればアルゴリズムは完了する（ブロック２１３）。もし不合格であればヘッダのプログラミングが再実行される（ブロック２１４）。これは、プログラムに成功しなかった、そしてアレイのエラー許容セグメントに印加されるページバッファ内の全てのビットをリセットすることを含む。次にヘッダ内の不合格であったビットだけが再度実行される。次にアルゴリズムは、ヘッダが検査に合格したか否かを決定する（ブロック２１５）。もし合格であればアルゴリズムはブロック２１３へ分岐して完了する。もし検査に合格しなければ、第２の再実行カウントが試験される（ブロック２１６）。もし第２のカウントがマックスアウトを超えていればヘッダは不良であり、第１の状態レジスタのビット０がセットされる（ブロック２１７）。もし再実行カウントがマックスアウトに到達していなければ、第２のカウンタがインクリメントされ（ブロック２１８）、アルゴリズムはブロック２１４へループバックしてヘッダのプログラミングを再実行させる。
図４は、本発明による消去動作のための流れ図である。このアルゴリズムは、消去コマンドを待機することから始まる（ブロック３００）。消去コマンドを検出すると、消去すべきセクタアドレスがロードされる（ブロック３０１）。セクタアドレスをロードした後、アルゴリズムはチップ選択信号の移行を待機する（ブロック３０２）。移行を検出すると、消去再実行カウンタをリセットする（ブロック３０３）。次いで、セクタを消去する（ブロック３０４）。次に、そのセクタに対する検査動作が実行される（ブロック３０５）。もし検査に合格すれば消去動作は完了する（ブロック３０６）。もし検査に合格しなければ、第１の再実行カウントが試験される（ブロック３０７）。もし第１の再実行カウントがマックスアウトを超えていれば、不合格であったバイトが解析され（ブロック３０８）、セクタ消去に関する統計が格納される（ブロック３０９）。もし第１の再実行カウントがマックスアウトを超えていなければ、再実行カウンタがインクリメントされ（ブロック３１０）、アルゴリズムはブロック３０４へループバックしてそのセクタの消去を再実行する。
またブロック３０７において、もし第１の再実行カウントがマックスアウトであると決定された場合には、オプションとしてもし消去に関してヘッダ領域がエラー許容領域から分離可能であれば、アルゴリズムはヘッダ区分が消去に成功したか否かをチェックする（ブロック３１１）。もし成功していれば、アルゴリズムは完了する（ブロック３１２）。もし成功していなければ、ヘッダは再消去される（段階３１３）。次いでヘッダ領域の検査動作が実行される（ブロック３１４）。もし合格すれば、アルゴリズムは完了する。もし合格しなければ、第２の再実行カウントが試験される（ブロック３１５）。もし第２のカウントがマックスアウトであれば、ヘッダは不良であり（ブロック３１６）、それを表すために状態レジスタ１のビット０がセットされる。もし第２の再実行カウントがマックスアウトを超えていなければ、カウンタがインクリメントされ（ブロック３１７）、アルゴリズムはブロック３１３へループバックしてヘッダの消去を再実行する。
図４は、本発明による消去アルゴリズムのための一般化した流れ図である。本発明の一実施例は、1993年８月31日付で同時出願されたLinらの米国特許出願第08/108,662号“FLASH EPROM WITH BLOCK ERASE FLAGS FOR OVER ERASE PROTECTION”に開示されている消去及び消去検査プロセス（またはその変形バージョン）で実現することができる。この出願は、消去に関してヘッダ領域をセグメント化することができるアーキテクチャをも開示している。
図５乃至８を参照して本発明の集積回路と共に使用するためのページプログラミングアーキテクチャの例を説明する。
図５にフラッシュＥＥＰＲＯＭアレイアーキテクチャを示す。アレイは、アレイの各ブロック毎にワードラインＷＬ０−ＷＬ６３と、アレイの各ブロック毎にブロック選択トランジスタＢＬＴＲ１及びＢＬＴＲ０とを含んでいることに注目されたい。上述したセクタ及びページ番号アドレス指定を使用してセクタアドレスに従ってワードラインをデコードし、ページ番号と上記セクタアドレスデコーディングとをブロック選択トランジスタＢＬＴＲ１及びＢＬＴＲ０のために使用し、そしてページアドレスに従って列をデコードする。ワードラインドライバ当たり４本のワードラインを共用し、行当たり２ページを使用するものとすれば、１本のワードラインアドレスによって８ページが駆動される。選択されるページは、ブロック選択トランジスタＢＬＴＲ１及びＢＬＴＲ０を使用してデコードされるページによって決定される。
図５に示す本発明によるフラッシュＥＥＰＲＯＭアレイのアーキテクチャにおいては、２列のフラッシュＥＥＰＲＯＭセルが単一の金属ビットラインを共用している。図５はアレイの４対の列を示しており、各列の対はドレイン・ソース・ドレイン構成のフラッシュＥＥＰＲＯＭセルを含んでいる。
例えば、第１の列対４２０は、第１のドレイン拡散ライン４２１と、ソース拡散ライン４２２と、第２のドレイン拡散ライン４２３とを含んでいる。ワードラインＷＬ０−ＷＬ６３はそれぞれ、列対の第１の列内のセルの浮遊ゲートと、列対の第２の列内のセルの浮遊ゲートとに重なって位置決めされている。図５に示すように、対４２０の第１の列は、セル４２４、セル４２５、セル４２６、及びセル４２７を含む１つの列を含んでいる。図示してないセルがワードラインＷＬ２−ＷＬ６１に接続されている。対４２０の第２の列は、セル４２８、セル４２９、セル４３０、及びセル４３１を含む。アレイの同一の列に沿って第２の列対４３５が示されている。この第２の対は、それが第１の列対の鏡像状に配列されていることを除いて、列対４２０と同じアーキテクチャを有している。
図から分かるように、列対の第１の列内のトランジスタ（例えば、セル４２５）は、ドレイン拡散ライン４２１内にドレインを、またソース拡散ライン４２２内にソースを含んでいる。浮遊ゲートは、第１のドレイン拡散ライン４２１とソース拡散ライン４２２との間の領域に重なって位置している。ワードラインＷＬ１は、セル４２５の浮遊ゲートに重なって位置し、フラッシュＥＥＰＲＯＭセルを確立している。
列対４２０及び列対４３５は、アレイ仮想接地拡散４３６（ＡＲＶＳＳ）を共用する。即ち、列対４２０のソース拡散ライン４２２は接地拡散４３６に接続されている。同様に、列対４３５のソース拡散ライン４３７は接地拡散４３６に接続されている。
前述したように、セルの各列対４２０は単一の金属ラインを共用する。そのため、ブロック右選択トランジスタ４３８及びブロック左選択トランジスタ４３９が含まれている。トランジスタ４３９は、ドレイン拡散ライン４２１内のドレインと、金属接点４４０に接続されているソースと、ライン４４１上の制御信号ＢＬＴＲ１が印加されるゲートとを含んでいる。同様に、右選択トランジスタ４３８は、ドレイン拡散ライン４２３内のソースと、金属接点４４０に接続されているドレインと、ライン４４２上の制御信号ＢＬＴＲ０が印加されるゲートとを含んでいる。従って、トランジスタ４３８及び４３９を含む選択回路は、第１のドレイン拡散ライン４２１及び第２のドレイン拡散ライン４２３を、金属接点４４０を通して金属ライン４４３（ＭＴＢＬ０）に選択的に接続する。図示のように列対４３５は、金属接点４４６に同じように接続されている左選択トランジスタ４４４及び右選択トランジスタ４４５を含んでいる。列対４２０に接続されている接点４４０が接続されているのと同じ金属ライン４４３に、接点４４６が接続されている。この金属ラインは、付加的な選択回路を用いて３以上のセルの列によって共用することができる。
図５には、４つの列対４２０、４３５、４５０、及び４５１だけが２つの金属ビットライン４４３及び４５２（ＭＴＢＬ０、ＭＴＢＬ１）に接続されているように示してあるが、アレイは大規模なフラッシュＥＥＰＲＯＭメモリアレイを確立するために、必要に応じて列対を水平及び垂直方向に拡張することができる。例えば、１つのワードラインを共用する列対４２０及び４５０を水平方向に繰り返してアレイのセグメントを構成する。これらのセグメントを垂直方向にも繰り返す。共用ワードラインドライバに接続されているそれぞれのワードラインを有するセグメントのグループ（例えば、８セグメント）を、アレイのセクタと考えることができる。
図６は２つのビットラインＭＴＢＬ０  １４３及びＭＴＢＬ１  １５２に関連しているページプログラム及び自動検査回路の１つの区分の回路図である。図６の金属ライン１４３（ＭＴＢＬ０）は図５の金属ライン４４３（ＭＴＢＬ０）に対応している。金属ライン１５２（ＭＴＢＬ１）は図５の金属ライン４５２（ＭＴＢＬ１）に対応している。図６のアレイ仮想接地１３６（ＡＲＶＳＳ）は、図４のアレイ仮想接地４３６（ＡＲＶＳＳ）に対応している。ライン５０１上の信号ＰＷ１は、トランジスタ５０２、５０４、５０６、及び５０８のｐウェルに印加される。アレイ内の各ビットライン対は、それに結合されている類似の構造を有している。
図６において、トランジスタ５０２のドレイン及びトランジスタ５０４のドレインは、金属ライン１４３（ＭＴＢＬ０）に接続されている。トランジスタ５０６のドレイン及びトランジスタ５０８のドレインは、金属ライン１５２（ＭＴＢＬ１）に接続されている。トランジスタ５０４のソース及びトランジスタ５０６のソースは、アレイ仮想接地１３６（ＡＲＶＳＳ）に接続されている。ライン５７０上の信号ＤＭＷＬＸは、トランジスタ５０４のゲート及びトランジスタ５０６のゲートに印加される。信号ＤＭＷＬＸが活動に（アクティブに）なると、アレイ仮想接地ライン１３６（ＡＲＶＳＳ）は、トランジスタ５０４及びトランジスタ５０６を通してそれぞれ金属ライン１４３（ＭＴＢＬ０）及び金属ライン１５２（ＭＴＢＬ１）に接続される。
データＩ／Ｏライン５７４がトランジスタ５０２のソースに接続され、データＩ／Ｏライン５７６がトランジスタ５０８のソースに接続されている。ライン５７２上の信号ＢＬＩＳＯＢは、トランジスタ５０２のゲート及びトランジスタ５０８のゲートに印加される。信号ＢＬＩＳＯＢが高レベルになると金属ライン１４３がトランジスタ５０２を通してデータＩ／Ｏライン５７４に接続され、金属ライン１５２はトランジスタ５０８を通してデータＩ／Ｏライン５７６に接続される。
データＩ／Ｏライン５７４は、トランジスタ５４２のドレインに接続されている。トランジスタ５４２のソースは接地され、ゲートにはライン５８８上の信号ＤＭＷＬが印加されている。データＩ／Ｏライン５７４は、信号ＤＭＷＬが高レベルになるとプルダウンされる。
データＩ／Ｏライン５７４は、列選択トランジスタ５４４のドレインにも接続されている。トランジスタ５４４のソースは、ノード５５１に接続されている。トランジスタ５４４のゲートには、ライン５９０上の信号Ｙ０が印加される。
主バッファ位置５５０が、パスゲート５５２のソースに接続されている。パスゲート５５２のドレインは、ノード５５１に接続されている。パスゲート５５２は、ライン５９２上の信号ＤＩＮＬによって制御される。
センス増幅器（ＳＡ）５５４も、ノード５５１に接続されている。センス増幅器５５４は、ライン５９４上の信号ＳＡＥＢによって制御される。センス増幅器５５４の出力は、パスゲート５５６のドレインに印加される。パスゲート５５６のソースは、ラッチ回路５５７に接続されている。パスゲート５５６は、ライン５９６上の信号ＳＡＲＤによって制御される。
ノード５５１は、図２のＨ“００”検出器１２０にも接続されている。
ラッチ回路５５７は、インバータ５５８及び５６０を含む。インバータ５５８の入力はパスゲート５５６のソースに接続されている。インバータ５５８の出力はインバータ５６０の入力に接続され、インバータ５６０の出力はパスゲート５５６のソースに接続されている。ラッチ回路５５７の出力は、ＮＯＲゲート５６２の第１の入力にも接続されている。ＮＯＲゲート５６２の第２の入力には、ライン５９８上の信号ＲＥＳＬＡＴＢが印加されている。ＮＯＲゲート５６２の出力は、トランジスタ５６４のゲートに印加される。トランジスタ５６４のドレインはノード５５１に接続され、ソースは接地されている。
トランジスタ５０８を通してビットライン１５２に接続されているデータＩ／Ｏライン５７６も、同じように接続されている。即ち、ライン５７６が、トランジスタ５４８のドレインに接続されている。トランジスタ５４８のソースは接地され、ゲートにはライン５８８上の信号ＤＭＷＬが印加されている。トランジスタ５４６のドレインも、データＩ／Ｏライン５７６に接続されている。信号Ｙ０が、トランジスタ５４６のゲートに印加されている。トランジスタ５４６のソースはノードＤＡＴＡ１  ５９１（他の側のノード５５１に対応）に接続されている。簡易化のために、主バッファ位置５５０、センス増幅器５５４、ラッチ回路５５７、及びノードＤＡＴＡ１  ５９１に接続されている関連回路は図示してない。ＤＩＮバッファ５５０、パスゲート５５２、センス増幅器５５４、パスゲート５５６、ラッチ回路５５７、ＮＯＲゲート５６２、及びトランジスタ５６４に類似の回路が、動作にとって同じように構成され、ノードＤＡＴＡ１  ５９１に接続されている。
各データＩ／Ｏライン５７４、５７６には、ビットラッチ／検査論理回路が接続されている。この回路は、データＩ／Ｏライン５７４についてはＮＡＮＤゲート５２４及びインバータ５２６を、データＩ／Ｏライン５７６についてはＮＡＮＤゲート５３４及びインバータ５３６を含んでいる。データＩ／Ｏライン５７４の場合には、パスゲート５２２のドレインがデータＩ／Ｏライン５７４に接続され、パスゲート５２２のソースはＮＡＮＤゲート５２４の第１の入力に接続されている。ＮＡＮＤゲート５２４の第２の入力には、ライン５８２上の信号ＢＬＡＴＥＮが印加されている。ＮＡＮＤゲート５２４の出力は、インバータ５２６の入力に接続されている。ＮＡＮＤゲート５２４及びインバータ５２６のための入力電力はライン５８０上の信号ＬＡＴＣＨＰＷＲから供給される。ライン５７８上の信号ＬＡＴＣＨＢが、パスゲート５２２のゲートに印加されている。インバータ５２６の出力は、ＮＡＮＤゲート５２４の第１の入力、トランジスタ５１０のゲート、及びトランジスタ５３０のゲートに接続されている。トランジスタ５１０のドレインには、ライン５７７上の信号ＡＢＬＲＥＳ１が印加されている。トランジスタ５１０のソースは接地されている。トランジスタ５３０のドレインには、ライン５８６上の信号ＤＬＰＷＲが印加されている。トランジスタ５３０のソースは、トランジスタ５２８のドレインに接続されている。トランジスタ５２８のゲートには、ライン５８４上の信号ＤＬＣＴＬが印加されており、トランジスタ５２８のソースは、データＩ／Ｏライン５７４に接続されている。
ラッチ回路５２４及び５２６内にラッチされたデータ＝１状態は、ライン５７７上の信号ＡＢＬＲＥＳ１をプルダウンする。即ち、この論理高レベルがトランジスタ５１０を導通させ、トランジスタ５１０はライン５７７を論理低レベルにする。このようにして、トランジスタ５１０が導通するとライン５７７が接地され、それにより信号ＡＢＬＲＥＳ１が論理低レベルにされるのである。トランジスタ５１４及び５１６はインバータを構成しており、トランジスタ５１０及び５１２と一緒になってＮＯＲ論理機能を与える。トランジスタ５１４はｐチャネルトランジスタであって、そのソースはＶCCに接続され、ドレインはｎチャネルトランジスタ５１６のドレインに接続されている。ライン５７７は、トランジスタ５１４及び５１６のドレインに接続されている。ｎチャネルトランジスタ５１６のソースは接地されており、トランジスタ５１４及び５１６のゲートには、ライン５９９上の信号ＰＧＰＶＢが印加されている。インバータ５１８及び５２０は直列に接続されている。ライン５７７はインバータ５１８への入力を供給する。インバータ５１８の出力はインバータ５２０の入力であり、インバータ５２０の出力はライン５７９上の信号ＡＢＬＲＥＳである。従って、ラッチ回路５２４及び５２６が論理高レベルを記憶すると、信号ＡＢＬＲＥＳは論理低レベルにされる。トランジスタ５１４はライン５７７をプルアップするようになっているが、トランジスタ５１０またはトランジスタ５１２の何れかを可能化することによって論理低レベルに駆動することができる。トランジスタ５１６の目的は、ライン５９９上の省略時状態ＰＧＰＶＢが「高」レベルであり、トランジスタ５１０、５１２、・・・のゲートの全てが低レベルであれば、このトランジスタ５１６が存在しない場合にはライン５７７上のＡＢＬＲＥＳ１が浮いてしまうのを防ぐことである。トランジスタ５１６は、この場合にライン５７７を低レベルに引っ張るのを助けるために追加されているのである。ページプログラムモード中の活動モード（プログラム検査期間）の間、ライン５９９上のＰＧＰＶＢは活動の「低」レベルであり、トランジスタ５１６はオフにされ、トランジスタ５１４がライン５７７をプルアップする。
ライン５７９上のＡＢＬＲＥＳ信号は、図２のライン１１３上のＦ．ＡＬＬ“０”信号またはＨ．ＡＬＬ“０”信号に対応する。図２に示すように、一方の信号をエラー許容領域に供給し、他方の信号をヘッダ領域に供給するためには、ヘッダ領域及びエラー許容領域が独立出力を駆動するように論理を構成する必要がある。そこで、図６のラインＡＢＬＲＥＳ１  ５７７をエラー許容領域に対応させることができる。ＡＢＬＲＥＳ１  ５７７のような独立ライン及びインバータは、ヘッダ領域のための出力を駆動するのに使用されよう。
データＩ／Ｏライン５７６まわりの鏡影状配列の回路も、信号ＬＡＴＣＨＢ、ＬＡＴＣＨＰＷＲ、ＢＬＡＴＥＮ、及びＤＬＣＴＲによって制御される。パスゲート５３２のゲートには、ライン５７８上の信号ＬＡＴＣＨＢが印加されている。パスゲート５３２のソースは、ＮＡＮＤゲート５３４への第１の入力である。ＮＡＮＤゲート５３４への第２の入力は、ライン５８２上の信号ＢＬＡＴＥＮである。ＮＡＮＤゲート５３４の出力は、インバータ５３６の入力に接続されている。ライン５８０上の信号ＬＡＴＣＨＰＷＲは、ＮＡＮＤゲート５３４及びインバータ５３６への入力電力を供給する。インバータ５３６の出力はＮＡＮＤゲート５３４の第１の入力、トランジスタ５１２のゲート、及びトランジスタ５３８のゲートに接続されている。ライン５８６上の信号ＤＬＰＷＲが、トランジスタ５３８のドレインに印加される。トランジスタ５３８のソースは、トランジスタ５４０のドレインに接続されている。トランジスタ５４０のゲートにはライン５８４上の信号ＤＬＣＴＲが印加され、トランジスタ５４０のソースはデータＩ／Ｏライン５７６に接続されている。トランジスタ５１２のソースは接地され、ドレインはライン５７７に接続されている。
図７は、図６の金属ライン１４３（ＭＴＢＬ０）に対応するラインのような、メモリアレイ内のビットライン６０２の１つのビットラッチの回路図である。図６におけると同様に、トランジスタ５０２のドレインはライン６０２に接続されている。トランジスタ５０２のソースはデータＩ／Ｏライン５７４に接続されている。トランジスタ５０２のゲートにはライン５７２上の信号ＢＬＩＳＯＢが印加されている。トランジスタ５０２の幅は20μｍ、長さは1.2μｍである。トランジスタ５２２のドレインはデータＩ／Ｏライン５７４に接続され、ソースはＮＡＮＤゲート５２４の第１の入力に接続されている。ライン５７８上の信号ＬＡＴＣＨＢがトランジスタ５２２のゲートに印加されている。トランジスタ５２２の幅は６μｍ、長さは1.2μｍである。
トランジスタ６２０、６２１、６２２、及び６２３がＮＡＮＤゲート５２４を構成している。ライン５７８上の信号ＬＡＴＣＨＰＷＲが、ＮＡＮＤゲート５２４及びインバータ５２６への電力を供給する。例えば、ｐチャネルトランジスタ６２０のソース、ｐチャネルトランジスタ６２１のソース、及びｐチャネルトランジスタ６２４のソースにはライン５７８上の信号ＬＡＴＣＨＰＷＲが印加されている。トランジスタ６２０、トランジスタ６２１、及びトランジスタ６２４のサブストレートにもライン５７８上の信号ＬＡＴＣＨＰＷＲが印加されている。トランジスタ６２０のゲートは、ＮＡＮＤゲート５２４の第１の入力を供給するノード６３０に接続されている。トランジスタ６２２のゲートもノード６３０に接続されている。トランジスタ６２２のドレイン及びトランジスタ６２１のドレインはトランジスタ６２０のドレインに接続されている。トランジスタ６２１のゲート及びトランジスタ６２３のゲートにはライン５８２上の信号ＢＬＡＴＥＮが印加されている。ライン５８２上の信号ＢＬＡＴＥＮが、ＮＡＮＤゲート５２４の第２の入力である。トランジスタ６２３のドレインはトランジスタ６２２のソースに接続され、トランジスタ６２３のソースは接地されている。
トランジスタ６２１のドレインがＮＡＮＤゲート５２４の出力になっており、インバータ５２６の入力に接続されている。トランジスタ６２４のゲート及びトランジスタ６２５のゲートがインバータ５２６への入力である。トランジスタ６２４のソースは、インバータ５２６へ電力を供給するライン５７８上の信号ＬＡＴＣＨＰＷＲに接続されている。トランジスタ６２４及びトランジスタ６２５のドレインはノード６３０に接続されて、インバータ５２６の出力になっている。トランジスタ６２５のソースは接地されている。トランジスタ６２４のサブストレートはライン５７８上の信号ＬＡＴＣＨＰＷＲに接続されている。
トランジスタ６２１及び６２４の幅は３μｍ、長さは1.4μｍである。トランジスタ６２０の長さは1.6μｍ、幅は３μｍである。トランジスタ６２２及びトランジスタ６２３の幅は３μｍ、長さは1.2μｍである。トランジスタ６２５の幅は３μｍ、長さは２μｍである。
ラッチ回路５２４及び５２６の出力は、トランジスタ５３０のゲートとトランジスタ５２２のソースとに接続されている。ライン５８６上の信号ＤＬＰＷＲがトランジスタ５３０のソースに印加されている。トランジスタ５２８のゲートにはライン５８４上の信号ＤＬＣＴＬが印加されている。トランジスタ５２８のドレインはデータＩ／Ｏライン５７４に接続されている。トランジスタ５３０及びトランジスタ５２８の幅は６μｍ、長さは1.2μｍである。
トランジスタ５１０のドレインはライン５７７上に出力信号ＡＢＬＲＥＳ１を供給する。トランジスタ５１０のソースは接地されており、ゲートはノード６３０に接続されている。従って、ビットラッチの状態に依存して、信号ＡＢＬＲＥＳ１は接地に短絡されるか、またはトランジスタ５１４（図６）によってプルアップされる。トランジスタ５１０の幅は３μｍ、長さは0.8μｍである。
トランジスタ５４４のドレインはデータＩ／Ｏライン５７４に接続され、ソースはデータライン６５０に接続されている。ライン５７０上の信号Ｙ−ＳＥＬがトランジスタ５４４のゲートに印加されている。出力バッファ位置５５０がデータライン６５０に接続されている。センス増幅器５５４はデータライン６５０に接続されていて、ラッチ５５７を通して制御信号をトランジスタ５６４のゲートへ供給する。また、図２のＨ“００”検出器１２０もライン６５０に接続されている。トランジスタ５６４のドレインはデータラインに接続され、ソースは接地されている。従って、センス増幅器５５４の出力に依存して、トランジスタ５６４はデータライン６５０を接地する。
動作中、図６及び７に示すフラッシュＥＥＰＲＯＭアレイのページプログラム及び自動検査回路は、ページプログラム及びプログラム検査を一連の段階で実行する。これらの段階は、（１）データローディング段階、（２）データプログラム段階、（３）アレイデータ読出し段階、（４）ビットラッチリセット段階、及び（５）再実行段階、に要約することができる。フラッシュＥＥＰＲＯＭアレイのページプログラム及び自動検査の動作を、データＩ／Ｏライン５７４に関して説明する。ページプログラム及び自動検査は、他方のメモリセルに結合されているデータＩ／Ｏライン５７６に関しても同様に遂行される。更に、ページプログラム及び自動検査回路は、フラッシュＥＥＰＲＯＭアレイ内のメモリセルのページをプログラムするのに必要な全てのデータＩ／Ｏラインのためにも類似回路が含まれている。
データローディング段階では、ライン５８０上の信号ＬＡＴＣＨＰＷＲ、ライン５７８上の信号ＬＡＴＣＨＢ、ライン５８２上の信号ＢＬＡＴＥＮが５Ｖで供給され、データラッチ回路５２４及び５２６を付勢して動作させる。ライン５８０上の信号ＬＡＴＣＨＰＷＲは、ＮＡＮＤゲート５２４及びインバータ５２６へ電圧を供給して動作させる。ライン５８２上の信号ＢＬＡＴＥＮは、ラッチ回路５２４及び５２６を可能化して入力を受信させる。ライン５７８上の信号ＬＡＴＣＨＢは、パスゲート５２２を可能化してデータＩ／Ｏライン５７４とＮＡＮＤゲート５２４の第１の入力とを結合させる。ライン５７２上の信号ＢＬＩＳＯＢは論理低レベルにあって、トランジスタ５０２を不能化している。トランジスタ５０２が不能化されているので、データＩ／Ｏライン５７４は金属ライン１４３（ＭＴＢＬ０）から切り離される。ライン５８４上の信号ＤＬＣＴＬは低論理レベルにあり、パスゲート５２８を不能化している。信号ＤＬＰＷＲは、約５ＶのＶCCの電圧を有する論理高レベルにある。ライン５８８上の信号ＤＭＷＬは論理低レベルにあって、トランジスタ５４２がデータＩ／Ｏライン５７４が接地されるのを阻止している。ライン５９０上の信号Ｙ０は論理高レベルにあって、トランジスタ５４４を可能化して導通させる。信号Ｙ０はデコードされた信号であって、データローディング段階中にデータＩ／Ｏライン５７４が16のＤＩＮバッファの対応する１つ（例えば、バッファ５５０）にアクセスするこをを可能にする。ライン５９２上の信号ＤＩＮＬは論理高レベルであって、パスゲート５５２を可能化している。ＤＩＮバッファ５５０からの入力データは、パスゲート５５２を通してデータＩ／Ｏライン５７４へ転送される。
入力データがデータＩ／Ｏライン５７４へ転送させると、ＤＩＮバッファ５５０からの入力データは、ＮＡＮＤゲート５２４の第１の入力へ転送される。もしＤＩＮバッファ５５０からの入力データが論理高レベルであれば、ＮＡＮＤゲート５２４の第１の入力において受信されたこの論理高レベルが出力を論理低レベルにする。ＮＡＮＤゲート５２４の論理低出力はインバータ５２６への入力として印加され、インバータ５２６は論理高出力を発生する。ＮＡＮＤゲート５２４及びインバータ５２６はビットラッチ回路５２４及び５２６を構成しており、ＮＡＮＤゲート５２４の第１の入力に受信したデータをラッチする。インバータ５２６の出力の論理高レベルはパスゲート５３０を可能化し、ライン５８６上の信号ＤＬＰＷＲをパスゲート５２８へ転送させる。しかしながら、データローディング段階中は、ライン５８４上の信号ＤＬＣＴＬが論理低レベルにあり、パスゲート５２８を不能化して信号ＤＬＰＷＲをデータＩ／Ｏライン５７４へ通過させないようにしている。
一方、ＤＩＮバッファ５５０からのデータが論理低レベルになると、ＮＡＮＤゲート５２４の第１の入力で受信されたこの論理低レベルがその出力を論理高レベルにする。ＮＡＮＤゲート５２４の論理高出力はインバータ５２６の入力として供給され、インバータ５２６が供給する論理低出力はラッチ回路５２４及び５２６内に格納される。インバータ５２６の論理低出力はパスゲート５３０を不能化し、ライン５８６上の信号ＤＬＰＷＲがパスゲート５２８を通してデータＩ／Ｏライン５７４へ転送させるのを阻止する。従って、ＮＡＮＤゲート５２４及びインバータ５２６からなるビットラッチ回路は、ＤＩＮバッファ５５０から転送されたデータに対応する入力データの論理高レベル、または論理低レベルの何れかを記憶する。
1024ビットの全ページのためのビットラッチは、一時に16ビットずつロードされる。ＤＩＮバッファ５５０からの入力データがビットラッチ回路５２４及び５２６内にロードされると、全てのビットラインのためのデータローディング段階が実施された後に検査シーケンスが実行され、その後にデータ書込み段階が続く。予備書込み検査ループ（後述するシーケンスによる）が、あたかもユーザがそのページを同一データで２回プログラムするかのように、セルを不足にするようなオーバプログラミングを防止する。データ書込みは、ラッチ回路５２４及び５２６内に論理高レベルが格納されると発生する。論理高レベル（データ＝１）状態をＤＩＮバッファ５５０から受信すると、この論理高レベルはデータ書込み段階中にフラッシュＥＥＰＲＯＭアレイの１つのセルにプログラムされる。もし論理低レベル（データ＝０）をＤＩＮバッファ５５０から受信してラッチ回路５２４及び５２６内に格納すれば、データ書込み段階はフラッシュＥＥＰＲＯＭのメモリセルをプログラムしない。
この実施例では、論理高レベル（データ＝１）は、ＤＩＮバッファ５５０から転送されてビットラッチ回路５２４及び５２６内に格納される。データ書込み段階の実行中、ライン５７８上の信号ＬＡＴＣＨＢは不能化される。ライン５７８上の信号ＬＡＴＣＨＢは論理低レベルにセットされ、ラッチ回路５２４及び５２６への入力を不能化している。信号ＬＡＴＣＨＰＷＲは高電圧にセットされており、ラッチ回路５２４及び５２６へ電力を供給する。ライン５８２上の信号ＢＬＡＴＥＮは高電圧にセットされ、ラッチ回路５２４及び５２６の出力を可能化している。トランジスタ５０２は、データＩ／Ｏライン５７４を金属ライン１４３へ結合する。ライン５８４上の信号ＤＬＣＴＬは高電圧レベルにセットされていて、パスゲート５２８を可能化している。ライン５８６上の信号ＤＬＰＷＲは高電圧にセットされている。ライン５９０上の信号Ｙ０は論理低レベルであってトランジスタ５４４を不能化させている。信号ＤＩＮＬは論理低レベルにあって、ＤＩＮバッファ５５０からの入力データをデータＩ／Ｏライン５７４から切り離している。信号ＳＡＥＢは論理低レベルであって、センス増幅器５５４を不能化している。
制御信号が、データプログラム段階を遂行するのに適切に初期化されると、ライン５８６上の信号ＤＬＰＷＲがデータＩ／Ｏライン５７４に転送される。信号ＤＬＰＷＲは、フラッシュＥＥＰＲＯＭアレイ内のメモリセルをプログラムするためのプログラミング電力を供給する。従って、もしラッチ回路５２４及び５２６がデータ＝１状態でラッチされていればパスゲート５３０が可能化され、信号ＤＬＰＷＲがパスゲート５２８を通過できるようになる。ライン５７２上の信号ＢＬＩＳＯＢはトランジスタ５０２を可能化し、信号ＤＬＰＷＲを金属ライン１４３（ＭＴＢＬ０）に結合する。
図５を参照する。ライン４４１上の可能化信号ＢＬＴＲ１、またはライン４４２上のＢＬＴＲ０はセルの列を金属ライン４４３に結合し、信号ＤＬＰＷＲからのプログラミング電圧を供給してワードライン上（−８Ｖに変化している）の特定のメモリセル４２５または４２９をプログラムする。例えば、もしライン４４１上のＢＬＴＲ１が選択され、またワードラインＷＬ１が選択されれば、信号ＤＬＰＷＲからのプログラミング電圧はメモリセル４２５へ導かれる。
ラッチ回路５２４及び５２６からのデータがメモリセルにプログラムされた後に、回路は、データ書込み段階においてそのデータが適切にプログラムされたことを自動的に検査する準備を整える。ビットラッチをリセットするか否かを決定するために、これは以下のような５段階シーケンス（Ａ乃至Ｅ、図８のタイミング図参照）を含む。
段階Ａ
「読出し」：関連センス増幅器を通して非揮発性ビットからデータを読出す（16のセンス増幅器の全てが同時に作動させられる、即ち16ビットが同時に読出される）。センシングの結果は図６のラッチ５５７内に格納される。例えば、図６において、指定されたワードラインＢＬＩＳＯＢ（５７２）から選択されたセルが高レベル（オン）でなければならないことを検査するために、選択されたＹ（５４４、５４６、及び14個のさらなるこのようなデバイス）がオンになってセンス増幅器（ＳＡ）５５４（及び他の15個のＳＡ）を作動させ、ＳＡＲＤ（５９６）が高レベルになってセンシングの結果をラッチ（５５７）へ通過させ得るようにし、ＬＡＴＣＨＢ（５７８）、ＤＬＣＴＬ（５８４）が低電圧（「オフ」）になるので、「読出し」段階中には、５２４及び５２６からなるビットラッチは乱されなくなる。選択されたセルしきい値電圧は、デバイスライン５７４を通してＳＡ（５５４）によって感知され、ＳＡ（５５４）がセンシングを行うのに十分に長いある時間の後にラッチ５５７内に格納される。もし、プログラミングの後に、セルのしきい値電圧（ＶＴ）が十分に（セルが低ＶＴ状態にあることをＳＡ  ５５４が告げることができる点まで）低ければ、インバータの出力（５６０、または５５８の入力）はその低レベルを反映し、ＳＡＲＤ（５９６）がオフになり、次いでＳＡ（５４４）が不能にされる。再び新し位置を読出すことが必要になるまでは、シーケンスの次の４段階中に何が起ころうとも、この低レベルがラッチ（５５７）内に格納される。もしプログラミングの後に、選択されたセルＶＴが未だに高レベルにあると読まれれば、インバータ５６０の出力は高レベルにあり、この論理高レベルがラッチ５５７内にラッチされる。この段階においては、ＲＥＳＬＡＴＢ（５９８）は「高」レベルにあってデバイス（５６４）を「オフ」にしているから、高または低レベルをラッチしたラッチ５５７がデバイス（５６４）に影響を与えることがないことに注目されたい。
段階Ｂ
「データラインの放電」（選択されたライン及び選択されていないラインを含む全て）：この段階の目的は「段階Ｄ）」において説明する。データライン５７４を放電させるには、ＤＭＷＬ（５５８）を高レベルにし、ＬＡＴＣＨＢを低レベルにし、ＤＬＣＴＬを低レベルにし、全てのセンス増幅器を不能化し、５６４及び５５２をオフにする。トランジスタ５４２がデータライン５７４に蓄積された電荷を放電させる。ＢＬＩＳＯＢ（５７２）を低レベル（図８のＢＬＩＳＯを高レベル）にして長い金属ビットライン（ＭＴＢＬ０）をデータライン（５７４）から絶縁させると、放電シーケンスを高速で達成することができる。
段階Ｃ
「データラインの予備放電」（関連ビットラッチに従って、選択的に）：この段階の目的は「段階Ｄ）」において説明する。この段階中、ＤＭＷＬは低レベルであり、ＢＬＩＳＯＢは未だに低レベル（図８のＢＬＩＳＯが高レベル）であり、同一ワードの選択された16のデータライン及び他の選択されなかったデータラインを高電圧レベルに予備充電すべきか否かは、ビットラッチ内に格納されているデータによって決定される。例えば、図６において、この段階中、ＬＡＴＣＨＢ（５７８）は未だにオフであり、ＤＬＣＴＬ（５８４）は低レベルから高レベルへスイッチし、そしてもしインバータ５２６の出力（トランジスタ５３０のゲート）が「高」レベルにラッチされていれば、ＤＬＰＷＲ（この場合には、ＶCCレベルの電源）がデバイス５３０及び５２８を介してデータライン（５７４）に接続されるためにデータライン５７４は高レベルに予備充電される。もしインバータ５２６の出力が「高」レベルにラッチされていなければ、ＤＬＰＷＲはデータライン５７４を高レベルに予備充電することはできず、データライン５７４は段階Ｂによって未だに低電圧レベルのままである。
段階Ｄ
「ビットラッチをリセットするか否か？」：この段階中、もしインバータ５６０の出力が段階Ａ）によって低レベルであれば（低レベルにラッチされていれば）、デバイス５６４をターンオンさせることによってビットラッチ（インバータ５２４及び５２６からなる）をリセットするために、ＬＡＴＣＨＢ（５７８）を低レベルから高レベルにスイッチさせ、ＲＥＳＬＡＴＢ（５９８）を高レベルから低レベルへスイッチさせる。選択されたセルは既に低ＶＴであるから、次の高電圧パルスシーケンスをプログラミングするために（低ＶＴにあるセルが再び低ＶＴにプログラムされないように）、ビットラッチの内容をリセットすべきである。ビットラッチが、先行検査ループ段階Ｄ）によってリセットされているか、または最初のプログラムシーケンスの前であってもリセット状態となる機会がある。これらの場合、その後のビットラッチリセット段階は、前者の場合にはビットラッチに何等の影響をも与えず、後者の場合には選択されたセグメントが高ＶＴであるか否かによってビットラッチが影響を受ける。何故ならば、もしセルが高ＶＴであれば、ビットラッチのリセットは存在せず（段階Ａ及びＤによってデバイス５６４は「オフ」にされているる）、ビットラッチはリセット状態にあるからである。もしセルが低ＶＴであれば、ビットラッチを再びリセットしても、ビットラッチの内容に変化は生じない。この例では比較回路を必要としない。
ＬＡＴＣＨＢは「フラッシュ」ＥＥＰＲＯＭ設計内の全てのビットラッチへのグローバルな信号であり、パスゲート５２２、５３２、・・・のゲートを高レベルにすると全てのビットラッチが関連データラインに語りかけるようになる（これは、インバータ５２６の出力のノードが関連データライン（例えば、５７４）と電荷を共有することを意味する）。インバータ５２６の駆動能力は、適切なデータを（インバータ５２６と戦って）ビットラッチ内へセットできるようにするために、弱いデバイスに設計されている。従って、ＬＡＴＣＨＢ（５２８）が「高」レベルである場合、弱いインバータ（５２６）は電荷共有問題を生じてビットラッチの完全性が不確実になる。
段階Ｂ）及びＣ）の目的は、たとえ回路が前述したようにそれらなしでも適切に動作するように設計できるとしても、段階Ｄ）に入る前に、即ちＬＡＴＩＣＢ（５７８）が低レベルから高レベルになる前に、データラインを適切な電圧レベルにして「電荷共有問題」を回避することである。段階Ｂ）の間は全てのデータラインは低レベルに放電され、関連ビットラッチが高レベルを「格納」しているデータラインだけを段階Ｃ）において高レベルに予備充電する。従って段階Ｂ）及びＣ）は、ここでは設計の安全性のために挿入されたオプショナルな段階である。
段階Ｅ
「全てのデータラインの再度の放電」：この時点までに、プログラミング検査のために次のワードへ移動する（より正確に言えば、新しいワードに変わって段階Ａ）乃至Ｄ）を繰り返す）前にプログラム検査活動は殆ど行われており、論理制御は全てのデータラインから残留電荷を除去して、新しいワードへスイッチする。例えば、この段階中に、ＬＡＴＣＨＢ（５７８）は「低」レベルにあり、ＲＥＳＬＡＴＢ（５９８）は「高」レベルにあり、ＤＭＷＬ（５８８）は「高」レベルにあり、そしてＢＬＩＳＯＢ（５７２）は「高」レベル（図８のＢＬＩＳＯが「低」レベル）にある。
従って、図６のページプログラム及び自動検査回路は、プログラムされたメモリセルを自動的に検査する独特な特色を提供している。ラッチ回路５２４及び５２６は、ＤＩＮバッファ５５０から受信した入力データを格納する。ラッチ回路５２４及び５２６内に格納されたデータは、もし１または２以上のセルをプログラムする必要があれば論理低レベルにセットされるＡＢＬＲＥＳ１を制御する。信号ＡＢＬＲＥＳ１は、プログラム検査シーケンス中にメモリセルが検査されるまで論理低レベルに維持される（プログラム検査シーケンスは、ラッチ回路５２４及び５２６を論理低レベルにリセットし、信号ＡＢＬＲＥＳ１を論理高レベルにリセットして適切にプログラムされたメモリセルを表す）。プログラム検査シーケンスは自動である。
自動検査シーケンス中はライン５９９上の信号ＰＧＰＶＢは論理低レベルであって、電荷をライン５７７に供給する。ラッチ回路５２６及び５２４がリセットされるとトランジスタ５１０は不能化され、ライン５７７上の電荷が接地へ放電されることはない。ライン５７７上の信号ＡＢＬＲＥＳ１は、論理高レベルになる。この論理高レベルがインバータ５１８へ入力され、インバータ５１８は高出力をインバータ５２０へ供給し、インバータ５２０はライン５７９上の信号ＡＢＬＲＥＳを論理高レベルにする。ライン５７９上の信号ＡＢＬＲＥＳの論理高レベルが、メモリセルのページがプログラム検査に合格したことを表すページプログラム済検査信号である。
アレイ内のメモリセルのあるページ内の各メモリセルは、トランジスタ５１０を動作させてライン５７７上の信号ＡＢＬＲＥＳ１を論理低レベルにすることができる。従って、アレイ内のメモリセルのあるページ内の、プログラム検査に合格しないどのメモリセルも、出力ＡＢＬＲＥＳを論理低レベルにすることができる。ライン５７９上の信号ＡＢＬＲＥＳの論理低レベルは、アレイ内のメモリセルのそのページ内の少なくとも１つのメモリセルが適切にプログラムされておらず、検査に合格しなかったことを表している。従って、合格しないどのメモリセルも、ライン５７９上の信号ＡＢＬＲＥＳを論理低レベルにすることができる。全てのメモリセルが適切にプログラムされ、検査に合格すると、ライン５７９上の信号ＡＢＬＲＥＳは論理高レベルになる。
以上のように、本発明は、プログラム及び消去サイクルの完了、消去延期状態、プログラム及び消去打切り状態、自動プログラム及び消去エラー報告、及びセクタ保護状態を検出する状態レジスタを含むフラッシュメモリ集積回路アーキテクチャを提供する。更に、ユーザがページを管理するために、各ページに４つの特別バイトが設けられている。チップ上には統計レジスタを使用する欠陥管理回路が存在している。更に、先に受信したデータをプログラムしていてチップが稼働中である場合に、バッファへ書込むためにデュアルバッファが設けられている。本デバイスは、簡単な３ラインバスアーキテクチャ、直列入力ライン、直列出力ライン、及びクロックを使用する実時間データ応用に特に適している。
従って、本発明は、データがエラー許容であるような実時間データ格納応用に適したフラッシュメモリアーキテクチャを提供する。これは、大きい非揮発性メモリアレイを必要とするような、オーディオ記憶装置等に特に適している。
本発明の好ましい実施例の以上の説明は、単なる例示のために過ぎない。以上の説明が、開示した精密な形状に本発明を限定するものではない。当業者ならば多くの変更及び変化は明白であろう。本発明の範囲は請求の範囲によって限定されるものであることを理解されたい。
【図１】
0004148990.tif 000007
【図２】
0004148990.tif 000008
【図３】
0004148990.tif 000009
【図４】
0004148990.tif 000010
【図５】
0004148990.tif 000011
【図６】
0004148990.tif 000012
【図７】
0004148990.tif 000013
【図８】
0004148990.tif 000014