(57)【特許請求の範囲】
【請求項１】
電気的にプログラムが可能な不揮発性を有する半導体記憶装置であって、読み出し時において選択されたメモリセルから読み出された信号電圧を第１のしきい値電圧と比較する第１の比較手段を有し、比較結果をデジタル出力信号として出力する不揮発性半導体記憶装置において、
前記選択されたメモリセルから読み出された前記信号電圧を、前記第１のしきい値電圧とは異なる第２のしきい値電圧と比較する第２の比較手段と、
プログラム時に前記複数のメモリセルのうち、選択されたメモリセルに対してＮ（Ｎは２以上）ビットのデータを書き込むプログラム回路とを含み、
前記第２の比較手段は、前記第１の比較手段で比較する前記第１のしきい値電圧の最も高い値と最も低い値との間に設けられた３×（２N−１）個の電圧レベルを前記第２のしきい値電圧として前記信号電圧と比較することを特徴とする不揮発性半導体記憶装置。
【請求項２】
前記第１の比較手段の出力と前記第２の比較手段の出力とを選択的に出力する出力手段を更に含むことを特徴とする請求項１に記載の不揮発性半導体記憶装置。
【請求項３】
欠陥のあるメモリセルのデータを置き換えるための少なくとも１つの救済メモリセルを備える救済メモリセル群と、前記第２の比較手段に接続されるとともに、前記選択されたメモリセルから読み出された前記信号電圧が、前記第２のしきい値電圧を越える時に、前記選択されたメモリセルを前記救済メモリセル群から選択された救済メモリセルに置き換える救済メモリセル駆動手段を有することを特徴とする請求項１又は２に記載の不揮発性半導体記憶装置。
【発明の詳細な説明】
【０００１】
【産業上の利用分野】
本発明は、不揮発性を有する半導体記憶装置に関するものである。
【０００２】
【従来の技術】
本発明に関連する先行技術文献を以下に列記する。
【０００３】
文献１：  “Ａ  １６Ｋｂ  Ｅｌｅｃｔｒｉｃａｌｌｙ  Ｅｒａｓａｂｌｅ  Ｎｏｎｖｏｌａｔｉｌｅ  Ｍｅｍｏｒｙ”
１９８０  ＩＥＥＥＥ  ＩＳＳＣＣ    Ｄｉｇ．  Ｔｅｃｈ．  Ｐａｐ．    ｐｐ．１５２−１５３，  ２７１，  １９８０
文献２：  “Ａｎａｌｙｓｉｓ  ａｎｄ  Ｍｏｄｅｌｉｎｇ  ｏｆ  Ｆｌｏａｔｉｎｇ−Ｇａｔｅ  ＥＥＲＯＭ  Ｃｅｌｌｓ”
ＩＥＥＥ  Ｔｒａｎｓ．  Ｅｌｅｃｔｒｏｎ  Ｄｅｖｉｃｅｓ
１９８６  Ｊｕｎｅ，  ＥＤ−３３，  Ｎｏ．６，  ｐｐ．８３５−８４４
文献３：「半導体ＭＯＳメモリとその使い方」  ｐｐ．９６ー１０１
日刊工業新聞社刊  １９９０年
文献４：  “Ａ  ＮＯＶＥＬ  ＣＥＬＬ  ＳＴＲＵＣＴＵＲＥ  ＳＵＩＴＡＢＬＥ  ＦＯＲ  Ａ  ３  ＶＯＬＴ  ＯＰＥＲＡＴＩＯＮ，  ＳＥＣＴＯＲ  ＥＲＡＳＥ  ＦＬＡＳＨ  ＭＥＭＯＲＹ”
ＩＥＤＭ  ９２，  ｐｐ．５９９−６０２  （１９９２）
文献５：  “ＦＬＡＳＨ  ＥＥＰＲＯＭ  ＭＥＭＯＲＹ  ＳＹＳＴＥＭＳ  ＨＡＶＩＮＧ  ＭＵＬＴＩＳＴＡＴＥ  ＳＴＯＲＡＧＥ  ＣＥＬＬＳ”                        ＵＮＩＴＥＤ  ＳＴＡＴＥＳ  ＰＡＴＥＮＴ  ＮＯ．  ５，０４３，９４０  （１９９１）
文献６：「自己訂正機能付半導体記憶装置及びマイクロコンピュータ」
公開特許公報（Ａ）  平１ー１３３３００号（１９８９）
【０００４】
半導体装置の電源を切っても記憶情報が失われないという不揮発性を有する半導体記憶装置（以下、「ＰＲＯＭ」と称する。）は、１９７０年代初期より開発実用化されている。更に、１９８０年代より、文献１にも示されるように、電気的に書き換えができ且つ不揮発性を有する半導体記憶装置（以下、「ＥＥＰＲＯＭ」と称する。）が実用化されている。
【０００５】
ＥＥＰＲＯＭのメモリセルの記憶方法としては、文献１及び文献２に示されるように、フローティングゲートを有するトランジスタ構造のメモリセルに、薄い酸化絶縁膜を介し、ファラー−ノードハイムトンネル現象により、電荷の注入及び放出を行い、トランジスタのしきい値電圧の制御を行う。即ち、フローティングゲートに電子を注入することによりメモリセルのしきい値は高くなり、電子を放出し正孔を注入することによりメモリセルのしきい値は低くなる。
【０００６】
このＥＥＰＲＯＭの機能回路ブロックは、例えば、文献３の図２に示されているが、本発明との対比のため、図７に従来のＥＥＰＲＯＭの回路ブロックを示す。
【０００７】
図７には、列数として４本、行数として８本の３２個のメモリセルが示されており、同時に２ビットのデータの読み出し及びプログラムを行う。これら３２個のメモリセルにプログラム、消去及び読み出しを選択的に行なうためのデコーダ回路、マルチプレクサ、アドレスバッファ、チップ制御回路、高電圧発生／制御回路、プログラム回路、センス回路、データ入力バッファ、データ出力バッファが備えられている。
【０００８】
図７で、５０１、５０２、５０３、５０４はアドレス入力端子であり、列線及び行線で選択されるメモリセルの番地を入力する。また、入力端子５０５、５０６、５０７には、このＥＥＰＲＯＭの動作モードを制御する制御信号が入力され、５０５はチップ選択信号端子、５０６は出力選択信号端子、５０７はライト信号端子である。５０８、５０９は入出力端子であり、読み出しモードの時には選択されたメモリセルの記憶データが出力され、ライトモードの時にはメモリセルに記憶されるデータを入力する。５１１、５１２、５１３、５１４はアドレスバッファであり、アドレス入力をバッファして出力する機能と、パワーダウン信号を受けて入力部の消費電流を低減させる機能とを持つ。なお、文献３に示されるように、アドレスバッファに、ライトモードにおいてラッチ信号を受け、アドレス入力のラッチを行う機能を追加した従来技術もある。
【０００９】
５１５はチップ制御回路で、５０５、５０６、５０７の制御入力に応じ、読み出しモード、ライトモード、パワーダウンモード（或いはスタンバイモード）、出力非選択モードを夫々作り出す。ライトモードは、更に、消去モードとプログラムモードの２つに分けられる。消去モードとは、メモリセルの記憶データの書き換えを行うために、選択したメモリセルの属するバイト乃至列線乃至メモリブロックのメモリセルを消去状態にすることである。メモリセルの消去状態とは、メモリセルのしきい値が、読み出し時のゲート電圧よりも高く（或いは低く）なることを指す。プログラムモードとは、選択したメモリセルを、入力データに応じてプログラム状態にすることである。プログラム状態とは、メモリセルのしきい値が、読み出し時のゲート電圧より低く（或いは高く）なることを指す。メモリセルのデータを書き換える場合、まず、消去モードでメモリセルを消去状態とし、その後、入力データに応じてメモリセルをプログラム状態とする。即ち、ライトモードは消去モードとプログラムモードとを有している。チップ制御回路５１５は、消去モードやプログラムモードを内部タイマーにより自動終了させる機能をも含んでいる。
【００１０】
５１８は高電圧発生／制御回路であり、ライト時にＥＥＰＲＯＭの電源電圧を昇圧して１０〜２５Ｖ程度の高電圧を発生する回路（以下、「チャージポンプ回路」と称する。）と、消去モードやプログラムモードに応じて所望の高電圧をＥＥＰＲＯＭ内部の各回路に供給する制御回路とを有している。
【００１１】
５１６は列デコーダで、アドレスバッファ５１１、５１２の出力をデコードして、選択されたメモリセルの列線（「ワード線」とも称する。）のみにハイ（Ｈ）電圧を印加し、非選択のメモリセルの列線にはロー（Ｌ）電圧を印加するものである。選択時のハイ電圧は、読み出し時には電源電圧近傍であるが、ライト時には高電圧である。
【００１２】
５１７は行デコーダで、アドレスバッファ５１３、５１４の出力をデコードして、選択された行線にはハイ電圧、非選択の行線にはロー電圧をマルチプレクサ５２７、５２８に出力するものである。マルチプレクサ５２７、５２８は、行デコーダ５１７の信号に応じて、選択された行線（「ビット線」とも称する。）とデータ線５９７、５９８とを接続させるものである。行デコーダ５１７の出力のハイ電圧は、読み出し時には電源電圧近傍、ライト時には高電圧である。
【００１３】
５２９、５３０、５３１、５３２は列線であり、５３３、５３４、５３５、５３６、５３７、５３８、５３９、５４０は行線である。５７７、５７８、５７９、５８０はメモリセンスプログラム線である。５４５、５４６、…、５７６はメモリセルであり、文献１の図２及び図３に示される構造及び結線をしている。例えば、文献１の図３のメモリセルにおいて、列線はセレクトトランジスタのゲートに、行線はセレクトトランジスタのドレインに、メモリセンスプログラム線はメモリトランジスタのゲートに夫々接続されている。
【００１４】
５２０、５２４はデータ入力バッファであり、ライトモードにおいて、入出力端子５０８、５０９のデータ入力をバッファしてプログラム回路５１９、５２３にデータを出力する。なお、ライトモード時にラッチ信号を受け、データ入力をラッチする機能を有したデータ入力バッファもある。
【００１５】
５１９、５２３はプログラム回路であり、プログラムモードの信号及び高電圧を受けて、データ入力による高電圧乃至ロー電圧の出力をデータ線５９７、５９８に行う。この際、従来のＥＥＰＲＯＭは、１つの高電圧値と１つのロー電圧（通常、０Ｖ）しか出力できない。
【００１６】
５２１、５２５はセンス回路であり、読み出しモードにおいて、選択されたメモリセルのデータが、行線及びマルチプレクサを経由し、データ線５９７、５９８に伝達されるが、このデータ線の電圧値の大小乃至電流値の大小を検出して増幅し、データ出力バッファに出力する。
【００１７】
５２２、５２６はデータ出力バッファであり、読み出しモードにおいて、センス回路からのデータを出力端子に出力する。更に、パワーダウンモード及び出力非選択モードにおいて、出力を禁止する機能をも有している。
【００１８】
図７において、５８１は、アドレスバッファ５１１の出力で、列デコーダ５１６の入力である。５８２は、アドレスバッファ５１２の出力で、列デコーダ５１６の入力である。５８３は、アドレスバッファ５１３の出力で、行デコーダ５１７の入力である。５８４は、アドレスバッファ５１４の出力で、行デコーダ５１７の入力である。５８５〜５８８は、行デコーダ５１７の出力で、マルチプレクサ５２７、５２８の入力である。チップ制御回路５１５の出力６０３はパワーダウン信号であり、アドレスバッファ５１１、５１２、５１３、５１４の制御入力へ接続されている。同じく、５８９は読み出しイネーブル信号であり、センス回路５２１、５２５を活性化したり、非活性化したりする。５９０はプログラム信号であり、プログラムモード時に、プログラム回路５１９、５２３を活性化し、高電圧発生／制御回路５１８において、高電圧を高電圧線５９４、５９６に出力させ、メモリセンス線５９５を０Ｖにさせる。５９１は消去信号であり、消去モード時に、高電圧発生／制御回路５１８の出力５９４、５９５に高電圧を出力させる。５９２はデータ入力イネーブル信号であり、ライトモードにおいて、データ入力バッファ５２０、５２４を活性化させる。５９３はデータ出力イネーブル信号であり、読み出しモードにおいて、データ出力バッファ５２２、５２６を活性化させる。
【００１９】
５９４は第１の高電圧信号で、ライトモード時、高電圧を列デコーダ５１６と行デコーダ５１７とに供給する。５９５はメモリセンス線で、プログラム時は０Ｖ、消去時は高電圧で、読み出し時は０Ｖから電源電圧の間の電圧となっている。５９６は第２の高電圧信号線であり、プログラム時に高電圧になる。５９９はデータ入力バッファ５２０の出力で、プログラム回路５１９の入力、６０１はデータ入力バッファ５２４の出力で、プログラム回路５２３の入力である。６００はセンス回路５２１の出力で、データ入力バッファ５２４の入力、６０２はセンス回路５２５の出力で、データ出力バッファ５２６の入力である。回路５４１、５４２、５４３、５４４は、５９５の信号を、列線５２９、５３０、５３１、５３２の信号によりデコードして、メモリセンスプログラム信号５７７、５７８、５７９、５８０を作り出す回路である。
【００２０】
従来のＥＥＰＲＯＭのライト動作及び読み出し動作を簡単に説明する。
【００２１】
読み出し時においては、まず、５０５、５０６、５０７の制御信号を読み出しモードにし、５０１、５０２、５０３、５０４に、選択したアドレスを入力する。入力アドレスは、アドレスバッファ５１１、５１２、５１３、５１４においてバッファされ、列デコーダ５１６及び行デコーダ５１７でデコードされる。列デコーダ５１６の出力信号は４本であり、列線に接続されるが、選択された列線１本がハイ電圧（通常、電源電圧近傍）であり、その他の３本はロー電圧である。更に、行デコーダ５１７の出力５８５〜５８８とマルチプレクサ５２７により、行線５３３〜５３６から１本の行線が選択され、選択された行線のみがデータ線５９７とローインピーダンスで電気的に接続される。同様に、５９５〜５８８とマルチプレクサ５２８により、行線５３７〜５４０から１本の行線が選択される。この時、メモリセンス線５９５にはメモリセルのしきい値を検出する電圧、例えば２〜４Ｖが出力され、５４１〜５４４を経由し、選択されたメモリセンスプログラム線のみに２〜４Ｖが印加される。また、メモリグランド線６０４は接地状態である。選択されたメモリセルの行線には、センス回路５２１、５２５により電圧が供給されるが、メモリセルのしきい値電圧がしきい値検出電圧よりも低い場合、メモリセルトランジスタが導通状態となり、行線から、メモリグラウンド線６０４に電流が流れる。メモリセルのしきい値電圧がしきい値検出電圧よりも高い場合、メモリセルトランジスタは非導通状態であり、行線から６０４への電流は流れない。行線の電圧はセンス回路により設定され、読み出し時の行線への電流はセンス回路より供給される。この電流の有無をセンス回路が検出し、増幅することにより、６００及び６０２にはメモリセルの記憶データがハイ電圧乃至ロー電圧の２値で出力され、５２２及び５２６を経由し、外部に読み出される。例えば、メモリセルのしきい値が６Ｖと高い場合は、５０８にはハイ電圧が出力され、メモリセルのしきい値が０Ｖと低い場合には、５０８にはロー電圧が出力される。
【００２２】
ライト動作の場合、まず、メモリセルの消去から行う。この例の場合、消去は列線単位に行うようになっているが、バイト単位やブロック単位でもよい。消去モードの入力は、この例の場合、５０５、５０６、５０７の制御入力によるとしたが、制御入力に加え、データ入力バッファへの入力データにより消去モードを有効とする従来技術もある。消去モードが入力されると、５０１、５０２のアドレスにより列線が選択される。５９４が高電圧となり、選択された列線は高電圧、その他の列線は０Ｖとなる。５９５も高電圧となり、５４１〜５４４により、選択された列線のメモリセンスプログラム線も高電圧となる。５１９、５２１、５２３、５２５は、消去時、非活性化されており、５９７は０Ｖ乃至フローティングである。６０４は、消去時は、接地状態である。従って、選択された列線のメモリセルは、ゲートに高電圧（例えば２０Ｖ）が印加され、ドレイン及びソースが接地された状態になる。この時、ファラー−ノードハイムトンネリングが起き、ドレインからフローティングゲートへ電子が注入され、メモリセルトランジスタのしきい値は高く（例えば５〜８Ｖ）なる。
【００２３】
消去されたメモリセルをプログラムする場合、プログラムモードを入力し、５０１、５０２、５０３、５０４にプログラムするアドレスを入力する。プログラム時、５９４は高電圧、５９５は０Ｖ、５９６は高電圧、６０４はフローティングとなる。また、列デコーダ５１６、行デコーダ５１７、５１９、５２３、５２０、５２４は活性化されており、５２１、５２５、５２２、５２６は非活性化されている。例えば、入力端子５０８にデータ入力としてロー電圧が入力されると、プログラム回路５１９は、出力５９７に高電圧（例えば２０Ｖ）を出力し、入力端子５０８にハイ電圧が入力されると、５９７には０Ｖが出力される。５９７が高電圧の場合、行デコーダの出力５８５〜５８８のうち、選択された信号も高電圧であるので、選択された行線は高電圧（例えば２０Ｖ）となる。選択された列線も高電圧であり、メモリセンスプログラム線は０Ｖであるので、メモリセルトランジスタのゲートは０Ｖ、ドレインには高電圧（例えば２０ｖ）が印加される。この時、ファーラー−ノードハイムトンネリングにより、フローティングゲートからドレインへと電子が放出され、且つ、ドレインからフローティングゲートへと正孔が注入され、メモリセルトランジスタのしきい値電圧が下がる（例えば、０Ｖから−３Ｖ）。
【００２４】
【発明が解決しようとする課題】
従来のＥＥＰＲＯＭやフラッシュメモリにおいては、書き換え回数が増えるとゲート絶縁膜が劣化するため、メモリセルに記憶される電荷量が減少し、しきい値電圧が経時的に低下する。そして、このしきい値電圧が、２値メモリにおける“０”または“１”の判定レベルを下回ると、書き込まれたデータの正しい読み出しを行うことができなくなる。
【００２５】
ＵＳＰ４，９０１，３２０に記載されているように、ワード単位でパリティビットを設けてデータの誤り訂正を行うことはなされているが、ワード内の個々のビットのメモリセルのしきい値電圧の低下については特に考慮されてはいなかった。
【００２６】
従って、ワード内のビットを構成するメモリセルが、書き込みに適さないほどしきい値電圧が低下している場合であっても、引き続いてそのメモリセルが使用されるため、記憶装置全体の信頼性が低下するようになる。特開平３−２８８４００号公報においても、リファレンスセルのしきい値電圧の経時的な低下による影響を防止する技術が記載されているが、ワード内の個々のビットのメモリセルのしきい値電圧の低下については特に考慮されてはいなかった。
【００２７】
このような問題は、４値以上の多値を１つのメモリセルに記憶する多値メモリにおいては、各メモリセルの読み出しを行うためのしきい値の幅（電圧差）が小さいので、特に顕著となる。
【００２８】
そこで、本発明の目的は、ワード内の個々のビットのメモリセルのしきい値電圧が経時的に低下した場合に、メモリセルのしきい値電圧が読み出しを行うためのしきい値レベル以下に低下する前に、ビット単位でメモリセルのしきい値電圧の低下を検出できる不揮発性半導体記憶装置を提供することにある。
【００２９】
また、本発明の他の目的は、ワード内の個々のビットのメモリセルのしきい値電圧が経時的に低下した場合に、メモリセルのしきい値電圧がデータを保持するのに必要な電圧以下に低下する前に、ビット単位でメモリセルのしきい値電圧の低下を検出し、少なくともそのメモリセルを救済用のメモリセルに置き換えるようにした不揮発性半導体記憶装置を提供することにある。
【００３０】
また、本発明の他の目的は、記憶装置全体として書き換え回数を増加させるようにした不揮発性半導体記憶装置を提供することにある。
【００３１】
また、本発明の他の目的は、４値以上の多値を１つのメモリセルに記憶する多値メモリにおいて、記憶装置全体として書き換え回数を増加させるようにした不揮発性半導体記憶装置を提供することにある。
【００３２】
【課題を解決するための手段】
本発明の不揮発性半導体記憶装置は、電気的にプログラムが可能な不揮発性を有する半導体記憶装置であって、読み出し時において選択されたメモリセルから読み出された信号電圧を第１のしきい値電圧と比較する第１の比較手段を有し、比較結果をデジタル出力信号として出力する不揮発性半導体記憶装置において、前記選択されたメモリセルから読み出された前記信号電圧を、前記第１のしきい値電圧とは異なる第２のしきい値電圧と比較する第２の比較手段と、プログラム時に前記複数のメモリセルのうち、選択されたメモリセルに対してＮ（Ｎは２以上）ビットのデータを書き込むプログラム回路とを含み、前記第２の比較手段は、前記第１の比較手段で比較する前記第１のしきい値電圧の最も高い値と最も低い値との間に設けられた３×（２N−１）個の電圧レベルを前記第２のしきい値電圧として前記信号電圧と比較する。
【００３３】
本発明の不揮発性半導体記憶装置における他の態様は、前記第１の比較手段の出力と前記第２の比較手段の出力とを選択的に出力する出力手段を更に含む。
【００３４】
本発明の不揮発性半導体記憶装置におけるその他の態様は、欠陥のあるメモリセルのデータを置き換えるための少なくとも１つの救済メモリセルを備える救済メモリセル群と、前記第２の比較手段に接続されるとともに、前記選択されたメモリセルから読み出された前記信号電圧が、前記第２のしきい値電圧を越える時に、前記選択されたメモリセルを前記救済メモリセル群から選択された救済メモリセルに置き換える救済メモリセル駆動手段を有する。
【００４１】
【作用】
本発明の作用を、４値のデータを記憶するメモリに適用した場合を例に説明する。
【００４２】
データ入力の組み合わせ“０１”“００”“１０”“１１”に対応させる。これにより、プログラム電圧値に比例してメモリセルのしきい値を変化させる。例えば、“０１”の入力に対しプログラム電圧を２２Ｖ、“００”に対し２０Ｖ、“１０”に対し１８Ｖ、“１１”に対し１６Ｖとすると、プログラム電圧とメモリセルのしきい値には比例関係が存在するので、プログラム電圧２２Ｖに対し例えばしきい値を−３Ｖ、２０Ｖに対し０Ｖ、１８Ｖに対し３Ｖ、１６Ｖに対し６Ｖに設定することができる。また、読み出し時において、選択されたメモリセルのしきい値電圧値がプログラム時に比べ変化したかどうかの情報を得る時は、例えば、２ビットのデータを復元する時、しきい値を記憶するリファレンス用メモリセルを９個設け、リファレンス用メモリセルのしきい値電圧値を、例えば、５．５Ｖ、４．５Ｖ、３．５Ｖ、２．５Ｖ、１．５Ｖ、０．５Ｖ、−０．５Ｖ、−１．５Ｖ、−２．５Ｖとして、センス回路でメモリセルのしきい値との比較照合を行うことにより、プログラム時のデータ入力値に応じた２ビットのデータを読み出すことが可能であり、必要に応じてメモリセルのしきい値電圧値がプログラム時に比べ上昇したか下降したかを少なくとも２ビットの情報（しきい値の変化の有無の検出に少なくとも１ビット、しきい値が上昇したかしないかの検出に少なくとも１ビット）として読み出すことが可能である。
【００４３】
以上により、不揮発性半導体記憶装置の大容量化とともに、記憶されたデータの信頼性の向上が実現できる。
【００４４】
【実施例】
本発明の一実施例を図１〜図４に示す。図１は本発明の一実施例によるＥＥＰＲＯＭ、図２は図１中のプログラム回路、図３は図１中のセンス回路、図４は、本発明によるデータ読み出し及びしきい値変化の検出法を説明するための模式図である。
【００４５】
図１において、１０１、１０２、１０３、１０４、１０５はアドレス入力端子であり、１０６、１０７、１０８は制御入力端子であり、１０９、１１０はデータ入出力端子である。１１１、１１２、１１３、１１４、１１５はアドレスバッファであり、１１６はチップ制御回路、１１９は高電圧発生／制御回路、１１７は列デコーダ、１１８は行デコーダ、２４３、２４４、…、２７４はメモリセル、１３９、１４０、１４１、１４２はメモリセンスプログラム線選択回路、１２６はマルチプレクサ、１２０はプログラム回路、１２３はセンス回路、１２１、１２４はデータ入力バッファ、１２２、１２５はデータ出力バッファである。また、メモリセルは、例えば文献１に示されるように、薄い絶縁膜を介してフローティングゲートに電荷の注入を行うものであるが、形状は特に限定をしない。
【００４６】
図１の結線関係は、１４３はアドレスバッファ１１１の出力で１１７の入力、１４４はアドレスバッファ１１２の出力で１１７の入力、１４５はアドレスバッファ１１３の出力で１１８の入力、１４６はアドレスバッファ１１４の出力で１１８の入力、１４７はアドレスバッファ１１５の出力で１１８の入力、１２７、１２８、１２９、１３０は列線（ワード線）であり、列デコーダの出力であり、メモリセルの選択ゲート及びメモリセンスプログラム線選択回路に接続される。１７５〜１８２は１１８の出力でマルチプレクサ１２６の入力であり、１３１、１３２、１３３、１３４、１３５、１３６、１３７、１３８は行線（ビット線）であり、メモリセルのドレインに接続され、１２６に接続される。１８９、１９０、１９１、１９２はメモリセンスプログラム線であり、メモリセンスプログラム線選択回路及びメモリセルトランジスタのゲートに接続される。１４８はパワーダウン信号であり、チップ制御回路１１６の出力でアドレスバッファ１１１、１１２、１１３、１１４、１１５の入力であり、１４９は読み出しイネーブル信号であり、チップ制御回路１１６の出力でセンス回路１２３の入力であり、１５０はプログラムイネーブル信号であり、チップ制御回路１１６の出力でプログラム回路１２０及び高電圧発生／制御回路１１９の入力であり、１５１は消去信号であり、チップ制御回路１１６の出力で高電圧発生／制御回路１１９の入力であり、１５２はデータ入力イネーブル信号でありチップ制御回路１１６の出力でデータ入力バッファ１２１及び１２４の入力であり、１５３はデータ出力イネーブル信号であり、チップ制御回路１１６の出力でデータ出力バッファ１２２及び１２５の入力である。１９３は、メモリセルのしきい値の変化検出用の情報を読み出すための制御信号であり、チップ制御回路１１６の出力でセンス回路１２３の入力である。１８５はデータ線であり、プログラム回路１２０の出力であり、センス回路１２３の入力であり、１２６の入出力である。１８３はデータ入力バッファ１２１の出力でプログラム回路１２０の入力、１８７は１２４の出力でプログラム回路１２０の入力、１８４はセンス回路１２３の出力でデータ出力バッファ１２２の入力、１８６はセンス回路１２３の出力で１２５の入力である。１５４は高電圧線であり、高電圧発生／制御回路１１９の出力で１１７及び１１８の入力であり、１５５はメモリセンス電圧線であり、高電圧発生／制御回路１１９の出力で１３９、１４０、１４１、１４２の入力である。１５６はプログラム高電圧線であり、高電圧発生／制御回路１１９の出力でプログラム回路１２０の入力であり、１８８はメモリグランド線で、高電圧発生／制御回路１１９の出力でメモリセル２４３、…、２７４のソース端子に接続されている。また、１０１はアドレスバッファ１１１の入力、１０２はアドレスバッファ１１２の入力、１０３はアドレスバッファ１１３の入力、１０４はアドレスバッファ１１４の入力、１０５はアドレスバッファ１１５の入力、１０６、１０７、１０８はチップ制御回路１１６の入力、１０９はデータ入力バッファ１２１の入力でデータ出力バッファ１２２の出力、１１０は１２４の入力で１２５の出力に接続されている。
【００４７】
図１のＥＥＰＲＯＭは、動作モードとして、少なくとも読み出しモード（メモリセルに書き込まれたデータの読み出しモードと、メモリセルのしきい値電圧値の変化検出用の情報を読み出すモード）、ライトモード、パワーダウンモード（或いはスタンバイモード）、出力非選択モードを有する。ライトモードは消去モードとプログラムモードに分けられる。
【００４８】
メモリセルに書き込まれたデータの読み出しモードでの、このＥＥＰＲＯＭの動作は、まず、１０６、１０７、１０８の入力を読み出しモードに設定し、１０１、１０２、１０３、１０４、１０５に読み出したいアドレスを入力する。入力アドレスはアドレスバッファ１１１、１１２、１１３、１１４、１１５によりバッファされ、アドレスバッファ１１１、１１２の出力は１１７により、列線１２７、１２８、１２９、１３０の４本にデコードされ、４本中１本がハイ電圧で他の３本がロー電圧となる。アドレスバッファ１１３、１１４、１１５の出力は１１８により、１７５〜１８２の８本にデコードされ、１２６のマルチプレクサにより、１３１〜１３８の行線のうち、１本がデータ線１８５と導通状態となる。列線と行線のデコードによりメモリセルの内１個（例えば１２８と１３２の交点の２５２のメモリセル）が選択される。制御信号１４８、１４９、１５０、１５１、１５２、１５３、１９３により、高電圧発生／制御回路１１９、データ入力バッファ１２１、１２４、プログラム回路１２０は非活性化され、例えば１５４は電源電圧近傍、１５５は例えば３Ｖ、１５６は例えばロー電圧、１８８は接地電圧、１８３及び１８７はロー電圧となる。センス回路１２３は、１４９が例えばハイ電圧となることにより、活性化され、１８５に現われた行線の電圧の増幅と比較検出とデータ復元を行う。更に、１９３が例えばロウ電圧となることにより、１８４、１８６には、メモリセルにプログラムされた２ビットのデータが出力される。データ出力バッファ１２２、１２５は１８４、１８６のデータをバッファし１０９、１１０にメモリセルの記憶データを出力する。
【００４９】
メモリセルのしきい値電圧値の変化検出用の情報の読み出しモードでは、まず、１０６、１０７、１０８の入力をしきい値電圧値の変化検出用の情報の読み出しモードに設定し、１０１、１０２、１０３、１０４、１０５に読み出したいアドレスを入力する。入力アドレスはアドレスバッファ１１１、１１２、１１３、１１４、１１５によりバッファされ、アドレスバッファ１１１、１１２の出力は１１７により、列線１２７、１２８、１２９、１３０の４本にデコードされ、４本中１本がハイ電圧で他の３本がロー電圧となる。アドレスバッファ１１３、１１４、１１５の出力は、１１８により、１７５〜１８２の８本にデコードされ、１２６のマルチプレクサにより、１３１〜１３８の行線のうち、１本がデータ線１８５と導通状態となる。列線と行線のデコードによりメモリセルのうち１個（例えば、１２８と１３２の交点の２５２のメモリセル）が選択される。制御信号１４８、１４９、１５０、１５１、１５２、１５３、１９３により、高電圧発生／制御回路１１９、データ入力バッファ１２１、１２４、プログラム回路１２０は非活性化され、例えば１５４は電源電圧近傍、１５５は例えば３Ｖ、１５６は例えばロー電圧、１８８は接地電圧、１８３及び１８７はロー電圧となる。センス回路１２３は、１４９が例えばハイ電圧となることにより、活性化され、１８５に現われた行線の電圧の増幅と比較検出とデータ復元を行う。更に、１９３が例えばハイ電圧となることにより、１８４、１８６には、メモリセルのしきい値電圧値の変化検出用の情報が出力される。データ出力バッファ１２２、１２５は１８４、１８６のデータをバッファし、１０９、１１０にメモリセルのしきい値電圧値の変化検出用の情報を出力する。
【００５０】
消去モードでは、まず、１０６、１０７、１０８で消去モードを設定し、１０１、１０２に消去する列線アドレスを入力する。チップ制御回路１１６の出力信号は、例えば、１４８がロー電圧、１４９がロー電圧、１５０がロー電圧、１５１がハイ電圧、１５２がロー電圧、１５３がロー電圧となり、高電圧発生／制御回路１１９が活性化、プログラム回路１２０、センス回路１２３、データ出力バッファ１２２、１２５が非活性化される。高電圧発生／制御回路１１９の出力１５４は高電圧（例えば２０Ｖ）となり、１５５も高電圧（例えば２０Ｖ）となり、１５６はロー電圧乃至電源電圧近傍となり、１８８は接地電圧になる。この結果、１１７の出力１２７、１２８、１２９、１３０のうち１本（例えば１２８）が高電圧（例えば２０Ｖ）になる。また、１８９、１９０、１９１、１９２のうち１本（例えば１９０）も高電圧（例えば２０Ｖ）になる。従って、選択された列線のフローティングゲートを有するメモリセルトランジスタのゲートが２０Ｖ、ソースが接地電圧、ドレインも接地電圧（メモリセルトランジスタがゲート電圧により導通状態となるため）となり、ファーラー−ノードハイムトンネリングが起き、しきい値電圧は例えば５Ｖと高くなる。
【００５１】
プログラムモードでは、まず、１０６、１０７、１０８でプログラムモードを設定し、１０１、１０２、１０３、１０４、１０５にプログラムを行うアドレスを入力する。チップ制御回路１１６の出力信号は、例えば、１４８がロー電圧、１５０がハイ電圧、１５１がロー電圧、１５２がロー電圧、１５３がロー電圧となり、高電圧発生／制御回路１１９、データ入力バッファ１２１、１２４、プログラム回路１２０が活性化、データ出力バッファ１２２、センス回路１２３が非活性化される。高電圧発生／制御回路１１９の出力１５４は高電圧（例えば２３Ｖ）となり、１５５は接地電圧となり、１５６は高電圧（例えば２３Ｖ）となり、１８８はハイインピーダンス状態となる。この結果、１１７の出力１２７、１２８、１２９、１３０のうち１本（例えば１２８）が高電圧（例えば２３Ｖ）になり、１１８の出力１７５〜１８２のうち１本が高電圧（例えば２３Ｖ）となり、選択されたマルチプレクサの部分は強いオン状態となり、行線と１８５を導通させる。
【００５２】
プログラム時の入力データは、１０９、１１０からアドレスとほぼ同時に入力され、データ入力バッファ１２１、１２４でバッファされ、プログラム回路１２０に送られる。プログラム回路１２０において、入力データはプログラム電圧に変換され、１８５に所定の入力データに対応した所定のプログラム電圧が出力される。本実施例の場合、プログラム電圧値は互いに異なる４つの電圧値（例えば、２２Ｖ、２０Ｖ、１８Ｖ、１６Ｖ）のうちの１つが選択される。なお、プログラム電圧値は４つ以上あってもよい。列線として例えば１２８、行線として例えば１３２が選択された場合、１３２は１２６を経由してプログラム電圧となり、例えば２０Ｖとなる。１５５は接地電圧であり、１２８は２３Ｖであるので、１９０は１４０を経由して接地電圧となる。従って、メモリセル１５２のドレインには２０Ｖ、ゲートには接地電圧が印加されるため、消去時とは逆に、メモリセルのしきい値は低くなり、例えば−０．５Ｖとなる。文献２に示されるように、メモリセルのしきい値はプログラム電圧値と比例関係を有して変化する。
【００５３】
なお、本実施例では、消去モードとプログラムモード及び他のモードの設定の方法として、１０６、１０７、１０８の入力のみとしたが、特にこれに限定するものでない。また、消去時のメモリセルの選択単位を列線単位としたが、バイト単位やブロック単位でもよく、特に限定するものではない。
【００５４】
図２は、図１のプログラム回路についてより詳細に示したものである。
【００５５】
図２で、ＤＩ１は第１のデータ入力、ＤＩ２は第２のデータ入力、ＶＰＰＸは高電圧入力、ＰＲＧは入力でプログラムイネーブル信号、ＶＰＲＧは出力でプログラム電圧である。ＩＶ１１、ＩＶ１２はインバータ回路であり、ＡＮＤ１、ＡＮＤ２はＭＯＳトランジスタにより構成された２入力の論理積回路（ＡＮＤ回路）であり、ＯＲ１はＭＯＳトランジスタにより構成された２入力の論理和回路（ＯＲ回路）である。ＨＶＳＷは高電圧スイッチであり、Ｃ１、Ｃ２、Ｃ３、Ｃ４はキャパシタンスであり、ＭＮ２０、ＭＮ２１、ＭＮ２２、ＭＮ２３、ＭＮ２４はＭＯＳトランジスタでＮチャンネルエンハンスメント型であり、ＭＰ２０、ＭＰ２１、ＭＰ２２はＭＯＳトランジスタでＰチャンネルエンハンスメント型である。ＤＩ１はＩＶ１１及びＡＮＤ１の入力であり、ＭＰ２１とＭＮ２１のゲートに接続されている。ＤＩ２はＩＶ１２及びＡＮＤ１の入力である。Ｎ１はＩＶ１１の出力でＡＮＤ２の入力、Ｎ２はＩＶ１２の出力でＡＮＤ２の入力、Ｎ３はＡＮＤ１の出力でＯＲ１の入力、Ｎ４はＡＮＤ２の出力でＯＲ１の入力である。Ｎ０はＯＲ１の出力でＭＰ２０のゲート及びＭＮ２０のゲートに接続されている。Ｎ５は接地ノードでインバータ回路、ＡＮＤ回路、ＯＲ回路の接地電位及びＣ２の一端及びＭＮ２０のソースとＭＮ２１のソースとＭＮ２２のソースに接続され、Ｎ７はＭＰ２２、ＭＰ２１、ＭＰ２０のドレインとＭＮ２２のドレインとＮＰ２２、ＭＮ２２のゲートに接続されている。Ｎ８はＣ３の一端とＭＰ２０のソース及びＭＮ２０のドレインと接続され、Ｎ９はＣ４の一端とＭＰ２１のソース及びＭＮ２１のドレインと接続されている。Ｎ６はＣ１の一端とＣ２の他端及びＣ３の他端及びＣ４の他端及びＭＮ２４のゲートと接続されている。Ｎ１１はＭＮ２３のソースとＭＮ２４のドレインに接続されている。Ｎ１２は電源ノードでＭＰ２２のソース及びインバータ回路、ＡＮＤ回路、ＯＲ回路の電源に接続されている。Ｎ１３はＨＶＳＷの出力でＭＮ２３のゲートに接続されている。また、ＶＰＰＸはＣ１の他端及びＭＮ２３のドレイン及びＨＶＳＷの入力に、ＰＲＧはＨＶＳＷの制御入力に接続されている。
【００５６】
図２のＤＩ１は図１の１８３に、ＤＩ２は図１の１８７に、ＶＰＰＸは図１の１５６に、ＰＲＧは図１の１５０に、ＶＰＲＧは図１の１８５に対応している。
図２は、２ビットのデジタルデータからアナログデータへの変換回路であり、ＶＰＰＸに高電圧（例えば２４Ｖ）が印加され、ＰＲＧがハイ電圧となると、Ｎ６の電圧値は以下の用にキャパシタンスＣ１、Ｃ２、Ｃ３、Ｃ４及びＮ７の電圧で決定される値になる。
【００５７】
Ｎ６の電圧＝（ＶＰＰＸの電圧・Ｃ１の値＋Ｃ３の値・Ｎ８の電圧＋Ｃ４の値・Ｎ９の電圧）／ＣＴ
【００５８】
ここで、  ＣＴ＝Ｃ１＋Ｃ２＋Ｃ３＋Ｃ４
【００５９】
図２においては、Ｎ８及びＮ９の電圧を入力データ値により、接地電圧とＮ７の電圧（例えば、３Ｖ程度の定電圧）とで切り換えることにより、Ｎ６の電圧をＤＩ１、ＤＩ２の値により可変できるようにした。更に、Ｃ３とＣ４の値を異ならせる（例えば、Ｃ４の値をＣ３の２倍とする）ことによりデータの重み付けを行い、Ｎ６の電圧値は４値で比例関係を持たせることができる。ＰＲＧの電圧がハイの場合、ＨＶＳＷの出力Ｎ１３は高電圧となり、ＭＮ２３はオン状態となり、ＶＰＲＧはＮ６の電圧からＭＮ２４のしきい値を引いた値となる。Ｎ６の電圧が例えば２１Ｖの場合、ＶＰＲＧは例えば２０Ｖとなる。図２の実施例の場合、ＤＩ１がハイ電圧でＤＩ２がハイ電圧の時にＶＰＲＧが最も低く（例えば１６Ｖ）、ＤＩ１がロー電圧でＤＩ２がハイ電圧の時にＶＰＲＧが最も高く（例えば２２Ｖ）なる。ＰＲＧがロー電圧の場合、Ｎ１３もロー電圧となり、ＭＮ２３がオフとなり、ＶＰＲＧはフローティングとなる。
【００６０】
図３は図１のセンス回路についてより詳細に示したものである。
【００６１】
図３で、ＲＤは読み出しイネーブル信号であり、ＥＣＣはメモリセルのしきい値電圧値の変化検出用の情報の読み出し信号であり、ＤＯ１は第１のデータ出力、ＤＯ２は第２のデータ出力、ＤＢＵＳはメモリ読み出しデータ入力である。ＩＶ０１、ＩＶ０２、…、ＩＶ０９はＭＯＳトランジスタで構成されたインバータ回路、ＡＮＤ０１、ＡＮＤ０２、…、ＡＮＤ０７はＭＯＳトランジスタで構成された２入力の論理積回路（ＡＮＤ回路）、ＯＲ１、ＯＲ２、ＯＲ３はＭＯＳトランジスタで構成された２入力の論理和回路（ＯＲ回路）である。ＭＰ０１、ＭＰ０２、…、ＭＰ１０はＭＯＳトランジスタでＰチャンネルエンハンスメント型であり、ＭＮ０１、ＭＮ０２、…、ＭＮ１４はＭＯＳトランジスタでＮチャンネルエンハンスメント型であり、ＲＣＥＬ１、ＲＣＥＬ２、…、ＲＣＥＬ９はリファレンス用メモリセルである。
【００６２】
図３で、Ｎ２０はＭＰ０１のドレインとＭＮ０１のドレイン及びＭＮ０２のドレイン及びＭＮ０３のゲートに接続されており、Ｎ２１はＭＰ０２のドレイン及びゲートとＭＮ０３のドレインと、ＤＡＭＰ１、ＤＡＭＰ２、…、ＤＡＭＰ９のＭＮ０５のゲートに相当する部分に接続され、Ｎ２３はＭＰ０３のドレインとＭＮ０５のドレインとＩＶ０２の入力に接続されており、Ｎ２２はＭＰ０５のドレイン及びゲートとＭＮ０７のドレインとＭＮ０６のゲートに接続されており、Ｎ２４はＭＰ０４のドレイン及びＭＮ０６のドレインとＭＰ０３のゲート及びＭＮ０４のゲートに接続されており、Ｎ２５はＭＮ０５のソース及びＭＮ０６のソースとＭＮ０４のドレインに接続されており、Ｎ２６はＭＰ０６のドレインとＭＮ０９のドレイン及びＭＮ１０のドレインとＭＮ０７のゲートに接続されており、Ｎ２７はＭＮ０７のソース及びＭＮ０８のドレイン及びＭＮ０９のゲートに接続されている。ＤＡＭＰ１は、ＭＰ０３、ＭＰ０４、ＭＰ０５、ＭＰ０６、ＭＮ０５、ＭＮ０６、ＭＮ０４、ＭＮ０７、ＭＮ０８、ＭＮ０９、ＭＮ１０、ＩＶ０２の部分を含む回路であり、ＤＡＭＰ２、ＤＡＭＰ３、…、ＤＡＭＰ９はＤＡＭＰ１と同様なトタンジスタ及び結線を有している回路である。
【００６３】
図３で、ＲＤはＩＶ０１の入力及びＡＮＤ０７の入力及びＤＡＭＰ１、ＤＡＭＰ２、…、ＤＡＭＰ９においてＭＮ０４のゲートに相当する箇所に接続され、ＩＶ０１の出力ＲＤＶはＭＰ０１のゲート及びＭＮ０１のゲートと、ＤＡＭＰ１、ＤＡＭＰ２、…、ＤＡＭＰ９においてＤＡＭＰ１のＭＰ０６のゲート及びＭＮ１０のゲートに相当する箇所に接続されている。ＤＢＵＳはＭＮ０２のゲート及びＭＮ０３のソースに接続されており、ＥＣＣはＩＶ０８の入力及びＭＮ１１のゲート及びＭＮ１２のゲートに接続されている。ＥＣＣＶはＩＶ０８の出力であり、ＡＮＤ０７の入力及びＭＰ０７のゲートとＭＰ０８のゲートに接続されている。Ｎ３２はＡＮＤ０７の出力であり、ＩＶ０９の入力に接続され、ＭＮ１３のゲート及びＭＮ１４のゲートに接続されている。Ｎ３３はＩＶ０９の出力であり、ＭＰ０９のゲート及びＭＰ１０のゲートに接続されている。ＤＯ１はＭＮ１１及びＭＰ０７及びＭＮ１３及びＭＰ０９のドレインに、ＤＯ２はＭＮ１２及びＭＰ０８及びＭＮ１４及びＭＰ１０のドレインに接続されている。ＳＯ１はＤＡＭＰ１のＩＶ０２の出力であり、ＩＶ０７の入力となっており、ＳＯ２はＤＡＭＰ２でＩＶ０２に対応した出力であり、ＡＮＤ０６及びＯＲ０３の入力となっており、ＳＯ３はＤＡＭＰ３でＩＶ０２に対応した出力であり、ＡＮＤ０３の入力となっており、ＳＯ４はＤＡＭＰ４でＩＶ０２に対応した出力であり、ＩＶ０６の入力となっており、ＳＯ５はＤＡＭＰ５でＩＶ０２に対応した出力であり、ＩＶ０５及びＡＮＤ０５の入力となっており、ＳＯ６はＤＡＭＰ６でＩＶ０２に対応した出力でありＡＮＤ０２の入力となっており、ＳＯ７はＤＡＭＰ７でＩＶ０２に対応した出力であり、ＩＶ０４の入力となっており、ＳＯ８はＤＡＭＰ８でＩＶ０２に対応した出力であり、ＩＶ０３及びＡＮＤ０４の入力となっており、ＳＯ９はＤＡＭＰ９でＩＶ０２に対応した出力であり、ＡＮＤ０１の入力となっている。Ｎ３４はＩＶ０３の出力でありＯＲ０３の入力となっており、Ｎ３５はＩＶ０４の出力でありＡＮＤ０１及びＡＮＤ０４の入力となっており、Ｄ１はＩＶ０５の出力でありＭＮ１３及びＭＰ０９のソースに接続され、Ｎ３７はＩＶ０６の出力でありＡＮＤ０２及びＡＮＤ０５の入力となっており、Ｎ３８はＩＶ０７の出力でありＡＮＤ０３及びＡＮＤ０６の入力となっている。Ｎ３９、Ｎ４０、Ｎ４１は各々ＡＮＤ０１、ＡＮＤ０２、ＡＮＤ０３の出力でありＯＲ０１の入力である。Ｎ４２、Ｎ４３、Ｎ４４は各々ＡＮＤ０４、ＡＮＤ０５、ＡＮＤ０６の出力でありＯＲ０２の入力である。Ｐ１はＯＲ０１の出力であり、ＭＮ１１及びＭＰ０７のソースに接続されており、Ｐ２はＯＲ０２の出力であり、ＭＮ１２のソース及びＭＰ０８のソースに接続されており、Ｄ２はＯＲ０３の出力であり、ＭＮ１４のソース及びＭＰ１０のソースに接続されている。ＲＥＦ１はＤＡＭＰ１のＭＮ０８のソースとＲＣＥＬ１のドレイン部分に接続されている。ＲＥＦ２、ＲＥＦ３、…、ＲＥＦ９は各々ＤＡＭＰ２、ＤＡＭＰ３、…、ＤＡＭＰ９でＭＮ０８のソースに相当する部分とＲＣＥＬ２〜ＲＣＥＬ９のドレイン部分に接続されている。Ｎ３０は接地ノードであり、インバータ回路及びＡＮＤ回路及びＯＲ回路の接地ノードと、ＭＮ０１、ＭＮ０２、ＭＮ０４、ＭＮ０９、ＭＮ１０のソース端子とＲＣＥＬ１、ＲＣＥＬ２、…、ＲＣＥＬ９のソース部分に接続されている。Ｎ３１は電源ノードであり、インバータ回路及びＡＮＤ回路及びＯＲ回路の電源ノードと、ＭＰ０１、ＭＰ０２、ＭＰ０３、ＭＰ０４、ＭＰ０５、ＭＰ０６のソース及びＭＮ０８のゲートに接続されている。
【００６４】
図３のＲＤは図１の１４９に、ＤＢＵＳは図１の１８５に、ＥＣＣは図１の１９３に、ＤＯ１は図１の１８４に、ＤＯ２は図１の１８６に対応する。
【００６５】
メモリセルに書き込まれたデータの読み出しモード或いはメモリセルのしきい値電圧値の変化検出用の情報を読み出すモードになるとＲＤはハイ電圧となり、ＤＢＵＳは選択したメモリセルの行線と同一電位になる。ＲＤＶはロー電圧となるので、ＭＰ０１はオン状態となり、ＭＮ０１はオフ状態となり、Ｎ２０の電圧は０Ｖから上昇する。Ｎ２０の電圧が上昇すると、ＭＮ０３がオン状態となり、ＤＢＵＳはＮ２０からＭＮ０３のしきい値を引いた電圧となる。しかし、ＤＢＵＳの電圧がＭＮ０２のしきい値より高くなると、ＭＮ０２がオン状態となり、ＤＢＵＳの電位上昇を抑制する。従って、ＲＤがハイになることにより、ＤＢＵＳは０Ｖと電源電圧との中間値近傍、例えば２Ｖになる。この時、読み出すメモリセルがオン状態であれば、ＤＢＵＳからメモリセルのソースに向けて電流が流れ、ＤＢＵＳの電位は若干下がる（例えば１．８Ｖ）。このための電流供給は、ＭＰ０２を経由して行われるので、ＭＰ０２のトランジスタサイズを適切に選ぶことにより、Ｎ２１の電圧は、ＤＢＵＳに比べ大きく低下する（例えば、４．２Ｖから３．５Ｖ）。また、Ｎ２１の電圧は、当然、メモリセルが流す電流量の大きさにも比例するので、ＭＰ０１及びＭＮ０２及びＭＮ０３及びＭＰ０２はＤＢＵＳの電位変動を増幅していることになる。ＭＰ０３及びＭＰ０４及びＭＮ０５及びＭＮ０６及びＭＮ０４は差動増幅器であり、Ｎ２１及びＮ２２が差動入力である。ＭＰ０５、ＭＰ０６、ＭＮ０７、ＭＮ０９、ＭＮ１０はＭＰ０２、ＭＰ０１、ＭＮ０３、ＭＮ０２、ＭＮ０１と相似の回路であり、ＲＥＦ１に対しＤＢＵＳと同様な働きをする。ＭＮ０８は、ＲＥＦ１の電位をＮ２７に伝える働きをする。
【００６６】
読み出すメモリセルのしきい値が例えば３Ｖであり、リファレンスセルＲＣＥＬ１〜ＲＣＥＬ７のしきい値が、例えば、５．５Ｖ、４．５Ｖ、３．５Ｖ、２．５Ｖ、１．５Ｖ、０．５Ｖ、−０．５Ｖ、−１．５Ｖ、−２．５Ｖであるとした場合、
【００６７】
ＲＥＦ９の電圧＜…＜ＲＥＦ４の電圧＜ＤＢＵＳの電圧＜ＲＥＦ３の電圧＜…＜ＲＥＦ１の電圧
【００６８】
となり、ＳＯ１〜ＳＯ３はロー電圧、ＳＯ４〜ＳＯ９はハイ電圧となる。なお、リファレンス用のメモリセルのしきい値は予めテストモード等で設定しておくものとし、本実施例では詳述しない。この結果、Ｄ１はハイ電圧、Ｐ１、Ｐ２、Ｄ２はロー電圧となる。ＲＤがハイ電圧且つＥＣＣがロー電圧の時、センス回路はメモリセルに書き込まれたデータの読み出しモードとなり、ＤＯ１にはＤ１のデータが、ＤＯ２にはＤ２のデータが出力され、ＤＯ  １がハイ電圧、ＤＯ２がロー電圧となる。ＲＤがハイ電圧且つＥＣＣがハイ電圧の時、センス回路はメモリセルのしきい値電圧値の変化検出用の情報を読み出すモードとなり、ＤＯ１にはＰ１のデータが、ＤＯ２にはＰ２のデータが出力され、例えば、ＤＯ１がロー電圧、ＤＯ２がロー電圧となる。
【００６９】
図４は、１個のメモリセルに２ビットの情報としてプログラムされた情報を４ビットの情報として読み出す時の、メモリセルに記憶される時のしきい値電圧と、図３のノードＰ１、Ｐ２、Ｄ１、Ｄ２より読み出される４ビットのデータとの対応を示す図である。上にあるもの程しきい値が高い時、下にあるもの程しきい値が低い時に対応する。プログラム時にメモリセルに書き込まれるしきい値電圧値は○印で示される４個の異なる値である。隣の○印で示されるしきい値電圧値の間にリファレンスセルによるしきい値電圧の検出レベルを３個含んでいる理由は、メモリセルに記憶されているしきい値電圧値が隣接するしきい値電圧のレベルに変化したとき、元のしきい値電圧値を知るためである。但し、メモリセルのしきい値電圧値がＲＣＥＬ１より上昇する時或いはＲＣＥＬ９より下降する時は、しきい値電圧値が変化してもメモリセルに書き込まれたデータが読み出し時に変化することはないので、ＲＣＥＬ１より上或いはＲＣＥＬ９より下にリファレンスセルによるしきい値の検出レベルは設ける必要はない。
【００７０】
この図により、メモリセルのしきい値電圧の変化と、データのエラーの検出法について説明する。
【００７１】
例えば、プログラム時に入出力端子１０９、１１０に各々ハイ電圧、ロー電圧が入力され、選択されたメモリセルのしきい値電圧値が、リファレンスセルＲＣＥＬ３のしきい値電圧値とＲＣＥＬ４のしきい値電圧値の間の値となったとする。
【００７２】
メモリセルのしきい値電圧値がＲＣＥＬ３とＲＣＥＬ４の間の値まま変化しない時（図４の（ｃ）参照）、メモリセルに書き込まれたデータの読み出し時に読みだされるデータはＤ１がハイ電圧、Ｄ２がロー電圧であり、メモリセルのしきい値電圧値の変化検出用の情報として読み出されるデータはＰ１がロー電圧、Ｐ２がロー電圧である。メモリセルのしきい値電圧値が、例えば、電荷の抜けによりプログラム時より下降し、リファレンスセルＲＣＥＬ４のしきい値電圧値とＲＣＥＬ５のしきい値電圧値の間の値になった時（図４の（ｂ）参照）、メモリセルに書き込まれたデータの読み出し時に読み出されるデータはＤ１がハイ電圧、Ｄ２がロー電圧であり、メモリセルのしきい値電圧値の変化検出用の情報として読みだされるデータはＰ１がハイ電圧、Ｐ２がロー電圧である。メモリセルのしきい値電圧値が、例えば、電荷の注入によりプログラム時より上昇し、リファレンスセルＲＣＥＬ２のしきい値電圧値とＲＣＥＬ３のしきい値電圧値の間の値になった時（図４の（ａ）参照）、メモリセルに書き込まれたデータ読み出し時に読みだされるデータは、Ｄ１がハイ電圧、Ｄ２がロー電圧であり、メモリセルのしきい値電圧値の変化検出用の情報として読み出されるデータは、Ｐ１がハイ電圧、Ｐ２がハイ電圧である。同様に、プログラム時にメモリセルに書き込まれるしきい値電圧値がＲＣＥＬ１のしきい値電圧値より高い時及びＲＣＥＬ９のしきい値電圧値より低い時及びＲＣＥＬ６のしきい値電圧値とＲＣＥＬ７のしきい値電圧値の間の値の時、メモリセルのしきい値電圧値が隣接するしきい値電圧値のレベルに変化しても、メモリセルに書き込まれたデータの読み出し時に読み出されるデータは変化せず、メモリセルのしきい値電圧値の変化検出用の情報として読み出されるデータは、メモリセルのしきい値電圧値が上昇した時、Ｐ１がハイ電圧、Ｐ２がハイ電圧となり、下降した時、Ｐ１がハイ電圧、Ｐ２がロー電圧となり、変化しない時、Ｐ１がロー電圧、Ｐ２がロー電圧となる。
【００７３】
このように、２ビットの書き込みデータを読み出す時、リファレンスセルのしきい値電圧値のレベルを９個設けることにより、メモリセルのしきい値電圧値が隣接するしきい値電圧値のレベルに変化しても、メモリセルに書き込まれたデータの読み出し時に読み出されるデータは変化せず、メモリセルのしきい値電圧値の変化検出用の情報を読み出すことにより、書き込みデータの値が変化する以前にしきい値の変化を検出することが可能である。
【００７４】
以上、本発明の一実施例を説明したが、本発明の主旨から逸脱しない他の実施例も容易に考えうる。
【００７５】
例えば、上述の実施例においては、プログラム時のプログラム電圧値はプログラム回路において発生させたが、これを高電圧／発生制御回路やその他の回路に含ませてもよい。また、上述の実施例では、プログラム時にプログラム電圧値を変化させたが、メモリセルに入出力情報に応じたしきい値を持たせることができる手段であれば、プログラム電圧の時間幅又はプログラム電圧の印加回数等を変化させても良い。また、上述の実施例では、センス回路のリファレンス用メモリセルを含ませたが、これをメモリアレイ部分に含ませても何ら問題はない。また、上述の実施例では、メモリセルに４値のしきい値を持たせたが、これ以上であっても無論よい。
【００７６】
更に、上述の実施例のＥＥＰＲＯＭの機能は説明のために簡略化されており、これに他の機能が加わっても本発明の有効性は失われない。例えば、プログラム後のベリファイモード等を容易に追加することができよう。
【００７７】
また、上述の実施例でのメモリセルは、フローティングゲートを有するトランジスタとセレクトトランジスタを含んでいるが、これに限定されるものではなく、メモリセルのしきい値を比例関係を以って可変できる構造であればよい。例えば、文献４、文献５に示されるメモリセルでもよい。また、上述の実施例におけるメモリセルのデータの変化乃至変化の過程を検出する方法、換言すれば、しきい値電圧値の変化の検出法は、１個のメモリセルに２ビットのデータを書き込んだ場合について示したが、１個のメモリセルに１ビットのデータを書き込んだ時も、３ビット以上書き込んだ時も有効である。即ち、プログラム回路について限定するものではない。但し、１個のメモリセルにＮビットのデータを書き込んだ時、読み出し時にメモリセルしきい値電圧値が上昇したか下降したかの情報を得たい時は、しきい値変化検出用の情報は２ビット必要であり、リファレンスセルによるしきい値の検出レベルは３・（２N−１）個必要である。メモリセルのしきい値電圧値の変化する方向が、上昇或いは下降のどちらかであることが既知である時は、しきい値変化検出用の情報は１ビット必要であり、リファレンスセルによるしきい値の検出レベルは２・２N−１個必要である。
【００７８】
図５に、メモリセルに２ビットのデータを書き込んだ時、プログラムされたしきい値が高い方の２つはしきい値電圧が下がる方向しかなく、低い方の２つはしきい値電圧が上がる方向しかない場合の、メモリセルのしきい値電圧値と、読み出し時のデータ（Ｄ１、Ｄ２）及びしきい値電圧値の変化検出用の情報（Ｐ１）の関係の一例を示す。メモリセルに書き込まれた２ビットのデータを読み出す時、リファレンスセルによるしきい値の検出レベルを７本設けることにより、メモリセルのしきい値電圧が、プログラム時の値の隣のレベルに変化した時、Ｄ１及びＤ２は変化せず、Ｐ１は０から１に変化するため、Ｄ１及びＤ２が変化する前にしきい値電圧の変化を検出することができる。
【００７９】
次に、本発明の他の実施例について、図６を参照しながら説明する。
【００８０】
図６に、本発明の他の実施例における半導体記憶装置の構成を示す。なお、図１に示す半導体記憶装置の構成と同一の部分には、同一の符号を付した。
【００８１】
本実施例は、異常なメモリセルを検出した後、この異常なメモリセルを救済メモリセルに置き換えるようにしたものである。
【００８２】
図６の不揮発性半導体メモリは、図１に示す不揮発性半導体メモリに救済メモリセル群８０１と、救済メモリセル群８０１への書き込み及び読み出しを制御する救済回路８０２と、しきい値電圧の低下を検出した時のアドレスを記憶するアドレスラッチ回路８０３〜８０７を付け加えたものである。
【００８３】
アドレスラッチ回路８０３〜８０７は、データ出力バッファ１２２、１２５に接続され、センス回路１２３が特定のメモリセルにおけるしきい値電圧の低下を検出すると、センス回路１２３からの出力信号１８４、１８６が、データ出力バッファ１２２、１２５を介してアドレスラッチ回路８０３〜８０７に伝えられる。
【００８４】
そして、アドレスラッチ回路８０３〜８０７が出力信号１８４、１８６を受け取った時、アドレスバッファ１１１〜１１５に記憶されているアドレスをラッチする。
【００８５】
救済回路８０２は、しきい値の異常が検出されたアドレスのメモリセル２４３〜２７４からのデータの読み出しを行い、救済メモリセル群８０１の中から選択した救済メモリセル２７５〜２８２にデータを移し変える。なお、図６においては、１ライン分の救済メモリセル２７５〜２８２しか記載されていないが、複数ライン分の救済メモリセルを配置してもよい。
【００８６】
そして、アドレスバッファ１１１〜１１５にしきい値の異常が検出されたメモリセル２４３〜２７４のアドレスが入力されると、アドレスラッチ回路８０３〜８０７には、しきい値の異常が検出されたメモリセル２４３〜２７４のアドレスと同一のアドレスが記憶されているので、救済回路８０２によって、このアドレスに対応する救済メモリセル２７５〜２８２への書き込みまたは読み出しが行われる。
【００８７】
従って、メモリセル２４３〜２７４からの読み出し異常が発生する前に、しきい値の異常が検出されたアドレスのメモリセル２４３〜２７４の救済メモリセル２７５〜２８２への置き換えが行われるので、不揮発性半導体メモリ全体としての書き換え回数が増加し、信頼性が向上する。
【００８８】
【発明の効果】
本発明によれば、メモリセルに記憶されたデータをしきい値との比較で読み出すのみでなく、メモリセルに記憶されているデータの電圧がどの程度であるかの情報を得ることができる。これは、例えばメモリセルに書き込まれた２ビット（４値）のデータを読み出すとき、第２のしきい値の電圧レベルを９個（請求項１において、３×（２2−１）により算出される値）設けることにより、プログラム時のメモリセルのしきい値電圧値が隣接するしきい値電圧値のレベルに変化しても、メモリセルに書き込まれたデータの読み出し時に読み出されるデータは変化せず、メモリセルのしきい値電圧値の変化検出用の情報を読み出すことにより、書き込みデータの値が変化する以前にメモリセルにおけるしきい値の変化の検出を可能とする。また、本発明におけるメモリセルのしきい値変化の検出法は、エラー検出用の情報を記憶させるメモリセルを別に設ける必要がないので、半導体メモリの大容量化とデータの信頼性の向上を同時に実現できる。
【図面の簡単な説明】
【図１】本発明の一実施例によるＥＥＰＲＯＭの構成を示す回路図である。
【図２】図１のプログラム回路の構成を示す回路図である。
【図３】図１のセンス回路の構成を示す回路図である。
【図４】本発明によるデータ読み出し及びしきい値変化の検出法を説明するための模式図である。
【図５】本発明による別のデータ読み出し及びしきい値変化の検出法を説明するための模式図である。
【図６】本発明の他の実施例によるＥＥＰＲＯＭの構成を示す回路図である。
【図７】従来のＥＥＰＲＯＭの構成を示す回路図である。
【符号の説明】
１０１〜１０５  アドレス入力
１０６〜１０８  制御入力
１０９、１１０  データ入出力
１１１〜１１５  アドレスバッファ
１１６  チップ制御回路
１１７  列デコーダ
１１８  行デコーダ
１１９  高電圧発生／制御回路
１２７〜１３０  列線
１３１〜１３８  行線
２４３〜２７４  メモリセル
１２６  マルチプレクサ
１２０  プログラム回路
１２３  センス回路
１２１、１２４  データ入力バッファ
１２２、１２５  データ出力バッファ
１３９〜１４２、２８３  メモリセンスプログラム線選択回路
８０１  救済メモリセル群
８０２  救済回路
８０３〜８０７  ラッチ
【図１】
0003581393.tif 000002
【図２】
0003581393.tif 000003
【図３】
0003581393.tif 000004
【図４】
0003581393.tif 000005
【図５】
0003581393.tif 000006
【図６】
0003581393.tif 000007
【図７】
0003581393.tif 000008