(57)【特許請求の範囲】
【請求項１】
不揮発性メモリセルを複数配置したメモリセルアレイと、
前記メモリセルアレイにプログラムすべきデータを分割した分割データの書き込むビットの総数を検出し、前記ビットの総数を所定のビットの数と比較する検出回路と、
前記ビットの総数を前記所定のビットの数と比較した結果に応じ前記分割データを反転または非反転したデータである反転データを保持するラッチ回路と、
前記ラッチ回路と接続し、前記反転データを前記メモリセルアレイにプログラムするライト回路と、
前記検出回路、前記ラッチ回路および前記ライト回路に接続し、前記ライト回路に前記反転データを前記メモリセルアレイにプログラムさせる間に、前記検出回路に次の分割データの書き込むビットの総数を検出させ、前記ビットの総数を前記所定のビットの数と比較させる制御回路と、を具備する半導体装置。
【請求項２】
前記反転データが反転または非反転かを示す指標データを保持する指標ラッチ回路を具備し、
前記検出回路は、前記ビットの総数を前記所定のビットの数と比較した結果に応じ、前記指標データを前記指標ラッチ回路に出力し、
前記ライト回路は、前記反転データを前記メモリセルアレイにプログラムする際に、前記指標データを前記指標ラッチ回路から前記メモリセルアレイにプログラムする請求項１記載の半導体装置。
【請求項３】
前記分割データを前記ラッチ回路に転送するためのスイッチ回路を有し、
前記検出回路が前記分割データの書き込むビットの総数を検出し、前記ビットの総数を所定のビットの数と比較する間は、前記スイッチ回路はオフし、前記ラッチ回路に前記反転データを転送する間は、前記スイッチ回路はオンする請求項１または２記載の半導体装置。
【請求項４】
外部回路より入力された前記プログラムすべきデータを記憶し、前記検出回路および前記ラッチ回路に前記分割データを出力する記憶装置を具備する請求項１から３のいずれか一項記載の半導体装置。
【請求項５】
前記ライト回路は、前記反転データを前記メモリセルアレイにプログラムする前に、前記メモリセルアレイ内の前記反転データをプログラムすべきメモリセルに接続するビットラインをプリチャージし、
前記制御回路は、前記ライト回路が前記プリチャージしているの間に、前記検出回路に次の分割データの書き込むビットの総数を検出させ、前記ビットの総数を前記所定のビットの数と比較させる請求項１から４のいずれか一項記載の半導体装置。
【請求項６】
不揮発性メモリセルを複数配置したメモリセルアレイと、
前記メモリセルアレイから読み出すべきデータを分割した分割データを前記メモリセルから読み出すリード回路と、
前記分割データがプログラムされた際に反転または非反転されたかを示す指標データが反転または非反転を示すかを判断する制御回路と、
前記リード回路が読み出した分割データを保持し、前記制御回路の反転または非反転の判断結果に応じ、前記分割データを反転または非反転したデータである反転データを出力するラッチ回路と、を具備し、
前記制御回路が、前記指標データが反転または非反転を示すかを判断する間に、リード回路は次の分割データを前記メモリセルアレイから読み出す半導体装置。
【請求項７】
前記ラッチ回路が前記分割データを保持する際に前記指標データを保持する指標ラッチ回路を具備し、
前記リード回路は、前記分割データを前記メモリセルアレイから読み出す際に前記指標データを読み出し、
前記制御回路は、前記指標ラッチ回路から前記指標データを読み出し、前記指標データを用い、前記分割データが書き込みの際反転または非反転されたかを判断する請求項６記載の半導体装置。
【請求項８】
前記分割データを前記ラッチ回路に転送するためのスイッチ回路を有し、
前記制御回路が、前記分割データが書き込みの際反転または非反転されたかを判断する間は、前記スイッチ回路はオフし、前記リード回路から前記ラッチ回路に前記分割データを転送する間は、前記スイッチ回路はオンする請求項７記載の半導体装置。
【請求項９】
前記ラッチ回路の出力した前記反転データを記憶し、前記メモリセルアレイから前記反転データを含む前記読み出すべきデータを外部回路に出力する記憶装置を具備する請求項６から８いずれか一項記載の半導体装置。
【請求項１０】
不揮発性メモリセルを複数配置したメモリセルアレイを具備する半導体装置の制御方法において、
前記メモリセルアレイにプログラムすべきデータを分割した分割データの書き込むビットの総数を検出するステップと、
前記ビットの総数を所定のビットの数と比較するステップと、
前記ビットの総数を前記所定のビットの数との比較結果に応じ前記分割データを反転または非反転し反転データとするステップと、
前記反転データを前記メモリセルアレイにプログラムするステップと、を有し、
前記反転データをプログラムするステップを行う間に、次の分割データの書き込むビットの総数を検出するステップと前記ビットの総数を所定のビットの数と比較するステップとを行う半導体装置の制御方法。
【請求項１１】
不揮発性メモリセルを複数配置したメモリセルアレイを具備する半導体装置において、
前記メモリセルアレイから読み出すべきデータを分割した分割データを前記メモリセルから読み出すステップと、
前記分割データがプログラムされた際に反転または非反転されたかを判断するステップと、
前記反転または非反転の判断結果に応じ、前記分割データを反転または非反転するステップと、を有し、
前記反転または非反転を示すかを判断するステップを行う間に、次の分割データを前記メモリセルアレイから読み出すステップを行う半導体装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は半導体装置およびその制御方法に関し、特に不揮発性メモリセルを有する半導体装置およびその制御方法に関する。
【背景技術】
【０００２】
近年、データの書換えが可能な半導体装置である不揮発性メモリが広く利用されている。代表的な不揮発性メモリであるフラッシュメモリにおいては、メモリセルを構成するトランジスタが電荷蓄積層と呼ばれるフローティングゲートまたは絶縁膜を有している。そして、電荷蓄積層に電荷を蓄積させることにより、データを記憶する。【０００３】
ＮＡＮＤ型フラッシュメモリは、ページ単位（例えば２ｋＢｙｔｅ）でプログラムと読み出しを一括で行う。そのため、１ページ分のデータを保持するラッチ回路を有しており、ラッチ回路からメモリセルアレイに１ページ分のデータを同時にプログラムする。ＮＡＮＤ型フラッシュメモリは、フローティングゲートを電荷蓄積層とするメモリセルが一般的である。メモリセルの書き込みは、フローティングゲート上のコントロールゲートと基板間に電圧を印加することにより行う。これにより、電荷蓄積層とチャネル層との間のトンネル酸化膜をＦＮトンネル電流が流れ、電荷蓄積層に電荷（電子）が蓄積される。【０００４】
一方、高記憶容量化のため窒化シリコン層からなるトラップ層に電荷を蓄積させるＳＯＮＯＳ（Silicon Oxide Nitride Oxide Silicon）型フラッシュメモリがある。さらに、その中に、１つのトランジスタの電荷蓄積層内に２つの電荷蓄積領域を有するフラッシュメモリが開発されている。例えば、特許文献１には、ゲート電極と半導体基板の間に２つの電荷蓄積領域を有するメモリセル（トランジスタ）が開示されている。このメモリセルはソースとドレインを入れ替えて対称的に動作させる仮想接地型メモリセルである。そして、１つのメモリセルに２ビットを記憶することができる。このフラッシュメモリは、外部とのインターフェースはＮＯＲ型フラッシュメモリと同じである。メモリセルの書き込みは、ドレインとコントロールゲートに高電圧を印加することにより行う。これにより、ホットエレクトロンが電荷蓄積層に注入され、電荷（電子）が電荷蓄積層に蓄積される。【０００５】
また、高速プログラムのため、入力データの内、データ“０”（書き込み状態）のビット数が所定数よりも多い場合、その入力データを反転させたデータと、それを示すフラグデータをメモリセルにプログラムするという技術が、特許文献２および特許文献３に提案されている。【０００６】
【特許文献１】米国特許第６０１１７２５号明細書
【特許文献２】特開平５−２９８８９４号公報
【特許文献３】特開昭６２−１６２２９９号公報
【発明の開示】
【発明が解決しようとする課題】
【０００７】
不揮発性メモリにおいては、メモリセルへの書き込みは電荷蓄積層に電荷を注入し蓄積させることにより行う。そのため、メモリセルアレイへのデータのプログラム時間が長くなってしまう。例えば、近年仮想接地型のフラッシュメモリにおいて、ＮＡＮＤ型のインターフェースを有するフラッシュメモリが検討されている。本来のＮＡＮＤ型フラッシュメモリはＦＮトンネル現象を用いるため一度に１ページ分の多数のデータをプログラムすることができる。一方、仮想接地型のフラッシュメモリはホットエレクトロン現象を用いデータ書き込みを行うため、書き込みに必要な電流が大きく同時に書き込めるデータ数が少ない。このため、仮想接地型フラッシュメモリをＮＡＮＤ型のインターフェースで動作させる場合、１ページ分のデータのプログラムを短時間で行うことが難しい。また、フラッシュメモリにおいて、データの読み出しを短時間で行うことが求められている。【０００８】
本発明は、上記課題に鑑み、メモリセルアレイへのプログラム時間の短縮または読み出し時間の短縮が可能な半導体装置およびその制御方法を提供することを目的とする。
【課題を解決するための手段】
【０００９】
本発明は、不揮発性メモリセルを複数配置したメモリセルアレイと、前記メモリセルアレイにプログラムすべきデータを分割した分割データの書き込むビットの総数を検出し、前記ビットの総数を所定のビットの数と比較する検出回路と、前記ビットの総数を前記所定のビットの数と比較した結果に応じ前記分割データを反転または非反転したデータである反転データを保持するラッチ回路と、前記ラッチ回路と接続し、前記反転データを前記メモリセルアレイにプログラムするライト回路と、前記検出回路、前記ラッチ回路および前記ライト回路と接続し、前記ライト回路に前記反転データを前記メモリセルアレイにプログラムさせる間に、前記検出回路に次の分割データの書き込むビットの総数を検出し、前記ビットの総数を前記所定のビットの数と比較させる制御回路と、を具備する半導体装置である。本発明によれば、プログラム時間の長い書き込むビットの総数により分割データを反転し分割データをプログラムするため、プログラム時間を短縮させることができる。また、ライト回路が、反転データをラッチ回路からメモリセルアレイにプログラムする間に、検出回路に次の分割データの書き込むビットの総数を検出させ、総数を所定のビットの数と比較するため、メモリセルアレイへのデータのプログラム時間をさらに短縮させることができる。【００１０】
上記構成において、前記反転データが反転または非反転かを示す指標データを保持する指標ラッチ回路を具備し、前記検出回路は、前記ビットの総数を前記所定のビットの数と比較した結果に応じ、前記指標データを前記指標ラッチ回路に出力し、前記ライト回路は、前記反転データを前記メモリセルアレイにプログラムする際に、前記指標データを前記指標ラッチ回路から前記メモリセルアレイにプログラムする構成とすることができる。この構成によれば、データをメモリセルアレイに書き込む際に指標データがメモリセルアレイにプログラムされることにより、例えばメモリセルアレイからデータを読み出す際、指標データを用い分割データが反転または非反転かを判断することができる。【００１１】
上記構成において、前記分割データを前記ラッチ回路に転送するためのスイッチ回路を有し、前記検出回路が前記分割データの書き込むビットの総数を検出し、前記ビットの総数を所定のビットの数と比較する間は、前記スイッチ回路はオフし、前記ラッチ回路に前記反転データを転送する間は、前記スイッチ回路はオンする構成とすることができる。この構成によれば、ラッチ回路の反転データをラッチ回路からメモリセルアレイにプログラムする間はスイッチ回路がオフするため、検出回路に次の分割データの書き込むビットの総数を所定のビットの数と比較させることができる。【００１２】
上記構成において、外部回路より入力された前記プログラムすべきデータを記憶し、前記検知回路および前記ラッチ回路に前記分割データを出力する記憶装置を具備する構成とすることができる。この構成によれば、外部回路からの入力はプログラムすべきデータの単位で行い、メモリセルアレイへのプログラムは分割データ単位で行うことができる。【００１３】
上記構成において、前記ライト回路は、前記反転データを前記メモリセルアレイにプログラムする前に、前記メモリセルアレイ内の前記反転データをプログラムするメモリセルに接続するビットラインをプリチャージし、前記制御回路は、前記ライト回路が前記プリチャージしている間に前記検出回路に次の分割データの書き込むビットの総数を検出させ、前記ビットの総数を前記所定のビットの数と比較させる構成とすることができる。この構成によれば、ライト回路が、プリチャージしている間に、検出回路に次の分割データの書き込むビットの総数を検出させ、総数を所定のビットの数と比較するため、メモリセルアレイへのデータのプログラム時間をさらに短縮させることができる。【００１４】
本発明は、不揮発性メモリセルを複数配置したメモリセルアレイと、前記メモリセルアレイにプログラムすべきデータを分割した分割データの書き込むビットの総数を検出し、前記ビットの総数を所定のビットの数と比較する検出回路と、前記ビットの総数を前記所定のビットの数と比較した結果に応じ前記分割データを反転または非反転したデータである反転データを保持するラッチ回路と、前記ラッチ回路と接続し、前記反転データを前記メモリセルアレイにプログラムするライト回路と、を具備し、前記ラッチ回路は、相補的な２つのノードを有し、前記検出回路の前記ビットの総数と前記所定のビットの数との比較結果に応じ、前記２つのノードのいずれかに前記分割データが入力されることにより、前記分割データを反転または非反転した前記反転データを保持する半導体装置である。本発明によれば、相補的な２つのノードにデータを入力することにより、分割データを反転するための回路が不要となり、回路面積を縮小することができる。【００１５】
上記構成において、前記ラッチ回路は、インバータを２つ環状に接続した回路を有し、前記２つのノードは前記インバータの間の異なるノードである構成とすることができる。この構成によれば、簡単な構成により、分割データを反転または非反転した反転データをラッチ回路に保持することがきる。【００１６】
本発明は、不揮発性メモリセルを複数配置したメモリセルアレイと、前記メモリセルアレイから読み出すべきデータを分割した分割データを前記メモリセルから読み出すリード回路と、前記分割データがプログラムされた際に反転または非反転されたかを示す指標データが反転または非反転を示すかを判断する制御回路と、前記リード回路が読み出した分割データを保持し、前記制御回路の反転または非反転の判断結果に応じ、前記分割データを反転または非反転したデータである反転データを出力するラッチ回路と、を具備し、前記制御回路が、前記指標データが反転または非反転を示すかを判断する間に、リード回路は次の分割データを前記メモリセルアレイから読み出す半導体装置である。本発明によれば、分割データをプログラムする際、分割データが反転または非反転されているかを判断し、反転している場合は、元に戻し出力することができる。また、制御回路が分割データがプログラムされた際に反転または非反転されたかを判断する間に、リード回路が次の分割データをメモリセルアレイから読み出すため、メモリセルアレイからのデータの読み出し時間を短縮させることができる。【００１７】
上記構成において、前記ラッチ回路が前記分割データを保持する際に前記指標データを保持する指標ラッチ回路を具備し、前記リード回路は、前記分割データを前記メモリセルアレイから読み出す際に前記指標データを読み出し、前記制御回路は、前記指標ラッチ回路から前記指標データを読み出し、前記指標データを用い、前記分割データが書き込みの際反転または非反転されたかを判断する構成とすることができる。この構成によれば、指標データにより、分割データが反転または非反転しているかを判断することができる。また、指標データを分割データと別に読み出す必要がなく、読み出し時間を短縮できる。【００１８】
上記構成において、前記分割データを前記ラッチ回路に転送するためのスイッチ回路を有し、前記制御回路が、前記分割データが書き込みの際反転または非反転されたかを判断する間は、前記スイッチ回路はオフし、前記リード回路から前記ラッチ回路に前記分割データを転送する間は、前記スイッチ回路はオンする構成とすることができる。この構成によれば、制御回路が分割データがプログラムされた際に反転または非反転されたかを判断する間は、スイッチ回路がオフするため、リード回路は次の分割データをメモリセルアレイから読み出すことができる。【００１９】
上記構成において、前記ラッチ回路の出力した前記反転データを記憶し、前記メモリセルアレイから前記反転データを含む前記読み出すべきデータを外部回路に出力する記憶装置を具備する構成とすることができる。この構成によれば、外部回路への出力は読み出すべきデータ単位で行い、メモリセルアレイからの読み出しは分割データ単位で行うことができる。【００２０】
本発明は、不揮発性メモリセルを複数配置したメモリセルアレイと、前記メモリセルアレイから読み出すべきデータを分割した分割データを前記メモリセルから読み出すリード回路と、前記分割データがプログラムされた際に反転または非反転されたかを示す指標データが反転または非反転を示すかを判断する制御回路と、前記リード回路が読み出した分割データを保持し、前記制御回路の反転または非反転の判断結果に応じ、前記分割データを反転または非反転したデータである反転データを出力するラッチ回路と、を具備し、前記ラッチ回路は、相補的な２つのノードを有し、前記指標データに応じ、前記２つのノードのいずれかから前記分割データを出力することにより、前記分割データを反転または非反転した前記反転データを出力する半導体装置である。この構成によれば、相補的な２つのノードから分割データを出力することにより、分割データを反転するための回路が不要となり、回路面積を縮小することができる。【００２１】
上記構成において、前記ラッチ回路は、インバータを２つ環状に接続した回路を有し、前記２つのノードは前記インバータの間の異なるノードである構成とすることができる。この構成によれば、簡単な構成により、分割データを反転または非反転した反転データをラッチ回路から出力することができる。【００２２】
本発明は、不揮発性メモリセルを複数配置したメモリセルアレイを具備する半導体装置の制御方法において、前記メモリセルアレイにプログラムすべきデータを分割した分割データの書き込むビットの総数を検出するステップと、前記ビットの総数を所定のビットの数と比較するステップと、前記ビットの総数を前記所定のビットの数との比較結果に応じ前記分割データを反転または非反転し反転データとするステップと、前記反転データを前記メモリセルアレイにプログラムするステップと、を有し、前記反転データをプログラムするステップを行う間に、次の分割データの書き込むビットの総数を検出するステップと前記ビットの総数を所定のビットの数と比較するステップとを行う半導体装置の制御方法である。本発明によれば、メモリセルアレイへのデータのプログラム時間を短縮させることができる。【００２３】
本発明は、不揮発性メモリセルを複数配置したメモリセルアレイを具備する半導体装置において、前記メモリセルアレイから読み出すべきデータを分割した分割データを前記メモリセルから読み出すステップと、前記分割データがプログラムされた際に反転または非反転されたかを判断するステップと、前記反転または非反転の判断結果に応じ、前記分割データを反転または非反転するステップと、を有し、前記反転または非反転を示すかを判断するステップを行う間に、次の分割データを前記メモリセルアレイから読み出すステップを行う半導体装置の制御方法である。本発明によれば、メモリセルアレイからのデータの読み出し時間を短縮させることができる。
【発明の効果】
【００２４】
本発明によれば、メモリセルアレイへのプログラム時間を短縮することが可能な半導体装置およびその制御方法を提供することができる。
【図面の簡単な説明】
【００２５】
【図１】図１は実施例１に係るフラッシュメモリのメモリセルアレイ周辺のブロック図である。
【図２】図２はメモリセルの接続を説明するための回路図である。
【図３】図３はビットディテクタのブロック図である。
【図４】図４はＷＲラッチ回路図である。
【図５】図５はメモリセルアレイにデータを書き込む際のフローチャートである。
【図６】図６はメモリセルアレイにデータを書き込む際のタイミングチャートである。
【図７】図７はメモリセルアレイからデータを読み出す際のフローチャートである。
【図８】図８はメモリセルアレイからデータを読み出す際のタイミングチャートである。
【発明を実施するための最良の形態】
【００２６】
以下、図面を用い本発明に係る実施例について説明する。
【実施例１】
【００２７】
実施例１は、ＮＡＮＤ型のインターフェースを有する仮想接地型のフラッシュメモリの例である。メモリセルは仮想設置型の不揮発性メモリセルである。すなわち、窒化シリコン膜を電荷蓄積層とするＳＯＮＯＳ型フラッシュメモリセルである。そして、電荷蓄積層内の異なる電荷蓄積領域に、２ビットを書き込むことができる。以下、メモリセルの電荷蓄積領域に電荷(電子)を蓄積した状態を“０”、蓄積していない状態を“１”と表す。メモリセルを“０”とすることを書き込みといい、メモリセルを“０”または“１”とすることをプログラムという。【００２８】
実施例１に係るフラッシュメモリは、外部との入出力はＮＡＮＤ型のインターフェースであり、データのプログラム、読み出しは１ページ単位で行う。実施例１では、１ページ分のデータは２ｋＢｙｔｅである。しかし、メモリセルアレイへのプログラム、読み出しを行う際は、１ページのデータを３２に分割した分割データ単位で行う。プログラムおよび読み出しに必要な電流が大きく同時に書き込み読み出しできるデータ数が少ないためである。さらにメモリセルアレイへのデータのプログラムは、プログラム時の消費電流を削減するため、さらに分割データを分割した書き込み分割データ単位で行う。なお、プログラム時の消費電流を削減しなくとも良い場合は、メモリセルアレイ１０にデータを書き込む際に分割データを書き込み分割データに分割しなくとも良い。【００２９】
以下の説明では、外部回路からメモリセルアレイ１０に書き込むべきデータを通常データ、後述するデータを反転してプログラムしたか否かを示すフラグを指標データという。分割データは１ページの通常データを分割したデータであり、分割データと同時にプログラムまたは読み出される指標データを対応する指標データという。実施例１では、分割データのサイズは５１２ｂｉｔであり、対応する指標データは４ｂｉｔ、書き込み分割データのサイズは１２８ｂｉｔで、対応する指標データは１ｂｉｔである。なお、これらのデータサイズはこの長さに限られるものではない。【００３０】
図１は実施例１に係るフラッシュメモリのメモリセルアレイ１０周辺のブロック図であり、図２はメモリセルの接続を説明するための図である。図１を参照に、メモリセルアレイ１０には、横方向に伸びる複数のワードライン（図示せず）および縦方向に伸びる複数のビットライン（図示せず）に沿ってメモリセル（図示せず）がマトリックス状に複数配置されている。図２のように、メモリセル１２を構成するトランジスタのコントロールゲートにワードラインＷＬが、ソース・ドレインにビットラインＢＬが接続している。同じワードライン（実際は後述するように２つのワードライン）に接続した領域が、１ページ分のデータを記憶するページに相当する。【００３１】
図１に戻り、縦方向に複数のページ分の領域が配置されている。このように、メモリセルアレイ１０は複数のページを含む。１ページ分の領域として、通常メモリ領域、指標データ領域を有している。通常メモリ領域は、通常データを記憶する領域である。指標データ領域は、指標データを記憶する領域である。１ページ分の領域には、データ読み出し時のレファレンスとして使用するセルを有するレファレンスセル領域、ファイル管理データなどを格納するセルを有するスペア領域も含まれるが、以下の説明では省略する。【００３２】
Ｘ−ｄｅｃ＿ｃ１８は、Ｘデコーダであり、メモリセルアレイ１０のワードラインＷＬを選択する回路である。Ｙ−ｓｅｌ＿ｃ１６は、ビットラインＢＬを介してメモリセルアレイ１０に接続され、ページデータのうち分割データ（５１２ｂｉｔ）および対応する指標データ（４ｂｉｔ）単位のメモリセル１２を選択する回路である。Ｙ−ｄｅｃ＿ｃ１７はＹデコーダであり、Ｙ−ｓｅｌ＿ｃ１６にビットラインを選択するように制御する。アドレスシーケンサ６２はＸ−ｄｅｃ＿ｃ１８、Ｙ−ｄｅｃ＿ｃ１７および制御回路６０にアドレスを指示する回路である。【００３３】
ライト回路リード回路２０はＹ−ｓｅｌ＿ｃ１６とデータ線ＤＡＴＡＢで接続され、ＷＲラッチ回路３０に保持されたデータをメモリセルアレイ１０にプログラムし、メモリセルアレイ１０に記憶されたデータのうち分割データおよび対応する指標データをＷＲラッチ回路３０に出力する回路である。ライト回路リード回路２０は、分割データ用の通常メモリ領域２０ａおよび対応する指標データ用の指標データ領域２０ｂを有する。ＷＲラッチ回路３０は、メモリセルアレイ１０にプログラムまたは読み出す分割データおよび対応する指標データを一時保持する回路である。また、指標データに対応し、分割データを反転させる回路である。ＷＲラッチ回路３０は、分割データを保持する通常メモリ領域３０ａおよび対応する指標データを保持する指標ビット領域３０ｂを有する。ライト回路リード回路２０およびＷＲラッチ回路３０は１つの分割データ（５１２ｂｉｔ）および対応する指標データ（４ｂｉｔ）分の回路を有する。【００３４】
ＳＲＡＭアレイ５０は、揮発性メモリセルアレイであり、ＷＲラッチ回路３０とＲＡＭＤＡＴで接続され、Ｙ−ｓｅｌ＿ｓ５６を介しＩＯ＿ＳＡ（１５：０）５２と接続している。ＳＲＡＭアレイ５０は、ＳＲＡＭセルがアレイ状に配置されている。同じワードラインに接続された（同じ行の）ＳＲＡＭセルは分割データおよび対応する指標データ分に相当する。すなわち、１行に通常データ５１２ビット分のＳＲＡＭセルと指標データ４ｂｉｔ分のＳＲＡＭセルが配置され、図中縦方向に３２行分配置されている。これにより、ＳＲＡＭアレイ５０に１ページ分２ｋＢｙｔｅのＳＲＡＭセルが配置されている。ＳＲＡＭアレイ５０には、メモリセルアレイ１０に対応して通常メモリ領域５０ａ、指標データ領域５０ｂを有する。Ｘ−ｄｅｃ＿ｓ５８はＳＲＡＭアレイ５０のＸデコーダであり、ＳＲＡＭアレイ５０のワードラインＷＬ０＿ｓ〜ＷＬ３１＿ｓを選択する。Ｙ−ｓｅｌ＿ｓ５６はＹ−ｄｅｃ＿ｓ５４の指示により、ＳＲＡＭアレイ５０のビットラインを選択し、ＩＯ＿ＳＡ（１５：０）５２にデータを転送する。ＳＲＡＭアレイアドレスシーケンサ６４はＳＲＡＭアレイのアドレスをＸ−ｄｅｃ＿ｓ５８およびＹ−ｄｅｃ＿ｓ５４に指示する回路である。【００３５】
ビットディテクタ４０はＲＡＭＤＡＴに接続しており、ＳＲＡＭアレイ５０から出力されたＲＡＭＤＡＴ上の分割データの“０”の総数を検出し（すなわち計数し）、ビット“０”の総数を所定ビットの数と比較し、比較結果を対応する指標データとしてＷＲラッチ回路３０に出力する回路である。制御回路６０はビットディテクタ４０、ＷＲラッチ回路３０、ライト回路リード回路２０およびＳＲＡＭアレイアドレスシーケンサ６４を制御する回路である。【００３６】
図２を参照に、メモリセル１２は８セルで最小デコード単位であるセルブロックを構成する。１セルには左右２ビットのデータを記憶することができる。セルブロック０内のメモリセル１２には、それぞれ左側のビットには０〜７、右側のビットには８〜１５のアドレスが割り当てられる。隣接するセルブロック１内のメモリセル１２には、それぞれ右側のビットに０〜７、左側のビットに８〜１５のアドレスが割り当てられる。このように、隣接するセルブロックでアドレスを対称にしているのは、隣接するセルブロック間のリーク電流を抑えるためである。１つのワードラインＷＬに接続されるセルブロックは５１６個（つまり分割データおよび対応する指標データ分）である。２つのワードラインＷＬに接続されるセルブロック１０３２個×１６ｂｉｔが１ページ分約２ＫＢｙｔｅに相当する。各セルブロックの同じアドレス、例えばアドレス２のデータ５１６個が５１６ｂｉｔの分割データおよび対応する指標データを構成する。各セルブロック内のアドレスはＹ−ｓｅｌ＿ｃ１６により選択されＤＡＴＡＢを介しライト回路リード回路２０であるライト回路２２およびリード回路２４に接続される。【００３７】
リード回路２４はカスコード回路２６およびセンスアンプ２８を有している。カスコード回路２６は、メモリセル１２からデータを読み出す際、メモリセル１２を流れる電流を電圧に変換する回路である。センスアンプ２８はメモリセル１２の電流に対応する電圧とレファレンスセルの電圧を比較し“０”、“１”を出力する回路である。センスアンプ２８の出力はＷＲラッチ回路３０に保持され、ＲＡＭＤＡＴを介しＳＲＡＭアレイ５０に出力される。メモリセル１２にデータをプログラムする際、ＳＲＡＭアレイ５０から出力されたＲＡＭＤＡＴ上のデータはＷＲラッチ回路３０に保持される。ＷＲラッチ回路３０に保持されたデータはライト回路２２に出力される。ライト回路２２はメモリセル１２にデータをプログラムする回路であり、ＷＲラッチ回路３０の出力をＤＡＴＡＢを介しメモリセル１２にプログラムする。ＤＡＴＡＢ、ライト回路２２、リード回路２４、ＷＲラッチ回路３０、ＲＡＭＤＡＴは各セルブロックに対し１個配置されている。すなわち、それぞれ５１６個配置されている。【００３８】
図３はビットディテクタ４０のブロック図である。ビットディテクタ４０は、ＲＡＭＤＡＴ上のデータ(分割データ)のうち、電荷をメモリセルの電荷蓄積層に書き込むデータ“０”のビット総数を計数する回路であり、その結果をもとにＷＲラッチ回路３０を制御する。図３を参照に、ビットディテクタ４０は、分割データを書き込み分割データに分割するＭＵＸ４２、書き込み分割データのうち電荷蓄積層に電荷を書き込むデータ“０”を検出する加算器４４、加算器４４が検出したビットの総数を所定のビットの数と比較する比較部４６および比較部４６の比較結果に応じて、データを反転するかどうかを示すフラグを出力する出力部４８を有する。データを反転する場合、指標データＩＮＤは書き込まれて“０”に設定される。【００３９】
メモリセルアレイ１０にデータをプログラムする際、書き込み分割データ１２８ｂｉｔのうち“０”の数が６４ｂｉｔより多い場合、その書き込み分割データ１２８ｂｉｔを反転する。例えば、ＲＡＭＤＡＴ上の書き込み分割データの１２８ｂｉｔのうち “０”が７０ｂｉｔ分あるとする。この場合、“０”の数を加算器４４が計数し、比較部４６において６４ｂｉｔより多いかを比較する。この例では６４ｂｉｔより多いため、出力部４８の出力である指標データＩＮＤは“０”となる。ＲＡＭＤＡＴ上の７０個のデータ“０”は後述するように反転されてＷＲラッチ回路３０に保持される。これにより、これらのビットはメモリセル内の電荷蓄積層に電荷が書き込まれないこととなる。【００４０】
一方、残りの５８個のデータ“１”は同様に反転されＷＲラッチ回路３０に保持される。これらのビットはメモリセル内の電荷蓄積層に電荷を書き込むこととなる。また、指標データＩＮＤは“０”が出力される。この結果、メモリセルの電荷蓄積層に電荷を書き込む“０”のビット数は、５９ｂｉｔ＝５８ｂｉｔ（通常データ）＋１ｂｉｔ（指標データ）である。仮に、上記反転処理を行わなかった場合、メモリセルの電荷蓄積層に電荷を書き込む“０”のビット数は、７０ｂｉｔ＝７０ｂｉｔ＋０ｂｉｔとなる。このように、データの反転処理を行うことにより、データをプログラムする際、書き込みを行う“０”のビット数を減らし、のプログラム時間、書き込み電流が削減できる。なお、実施例１ではデータを反転処理するかの判定基準を、書き込み分割データの半分６４ｂｉｔとしたが、データをプログラムする際のプログラム時間、書き込み電流を考慮して決めることができる。【００４１】
図４はＷＲラッチ回路３０の回路図である。センスアンプ２８からの出力はノードＡに接続され、Ｎ−ＦＥＴ３１を介しラッチ３５のノードＣに入力する。ＦＥＴ３１はセンスアンプ２８の出力をラッチ３５に接続し、分割データをラッチ３５に転送するスイッチである。ラッチ３５はＰ−ＦＥＴ７０とＮ−ＦＥＴ７１からなるインバータ３２と、Ｐ−ＦＥＴ７２とＮ−ＦＥＴ７３からなるインバータ３４とからなる。ラッチ３５のノードＢとノードＣは相補性を有する。すなわち、ノードＢがハイレベルのときはノードＣはローレベルであり、ノードＢがローレベルのときはノードＣはハイレベルである。ノードＢはライト回路２２に接続される。ラッチ３５の面積を縮小させるためインバータ３２および３４を構成するＰ−ＦＥＴ７０および７２とＮ−ＦＥＴ７１および７３とはトランジスタの幅Ｗを同程度としている。Ｎ−ＦＥＴとＰ−ＦＥＴの電荷移動度の違いからＰ−ＦＥＴの電流は小さくなる。そのため、ラッチ３５のノードＣにデータを入力したときに、ノードＣをローレベルからハイレベルにセットすることが難しい。また同様に、ラッチ３５のノードＢにデータを入力したときに、ノードＢをローレベルからハイレベルにセットすることが難しい。そこで、事前にＮ−ＦＥＴ３８のゲートに接続されるノードＧまたはＮ−ＦＥＴ３９のゲートに接続されるノードＨをハイレベルにしノードＣまたはＢをハイレベルにしたのちラッチ３５にデータを入力する。【００４２】
ノードＢはＮ−ＦＥＴ７４とＰ−ＦＥＴ７５からなるトランスファーゲート３６を介しＲＡＭＤＡＴに接続される。ノードＣはＮ−ＦＥＴ７６とＰ−ＦＥＴ７８からなるトランスファーゲート３７を介しＲＡＭＤＡＴに接続される。トランスファーゲート３６および３７はそれぞれノードＤおよびＥがハイレベルになると開きローレベルになると閉じる。このように、トランスファーゲート３６および３７はＳＲＡＭアレイ５０の出力ＲＡＭＤＡＴとラッチ３５とを接続し、分割データをラッチ３５に転送するためのスイッチである。なお、Ｐ−ＦＥＴ３３はノードＦをローレベルにすることによりＷＲラッチ回路３０を活性化させるスイッチである。【００４３】
次に、メモリセルアレイ１０に１ページ分のデータをプログラムする際のフローを説明する。図５はデータをプログラムする際のフローチャート、図６はタイミングチャートである。図４のノードＤおよびＥはローレベルのまま、つまりトランスファーゲート３６および３７は閉じた（オフ）状態で以下のフローが行われる。図１を参照に、外部回路からメモリセルアレイにプログラムすべき１ページ分のデータが、入出力バス幅１６ｂｉｔ毎にデータＩＯ  ＤＡＴＡ（１５：０）としてＩ＿ＳＡ（１５：０）５２に入力し、Ｓ（１５：０）としてＳＲＡＭアレイ５０に保持される。制御回路６０はＳＲＡＭアレイアドレスシーケンサ６４に指示し、ＳＲＡＭアレイ５０の最初のアドレスの分割データをＲＡＭＤＡＴ上に出力する。【００４４】
図５を参照に、ビットディテクタ４０はＲＡＭＤＡＴ上の分割データ（５１２ｂｉｔ）のうち１つの書き込み分割データ（１２８ｂｉｔ）の“０”の総数を検出（ステップＳ１０）し、“０”が６４ｂｉｔより多いか判断する。ビットディテクタ４０は書き込み分割データの“０”の数が６４より大きければ、書き込み分割データを反転するため対応する指標データを“０”、６４ｂｉｔ以下であれば書き込み分割データを反転しないため対応する指標データを“１”とする。つまり、ビットディテクタ４０は、書き込み分割データを反転するか非反転か判断する（ステップＳ１２）。【００４５】
反転の場合、つまり指標データが“０”の場合、ＷＲラッチ回路３０は書き込み分割データを反転しＷＲラッチ回路３０に保持する（ステップＳ１４）。図４を参照に、書き込み分割データを反転しＷＲラッチ回路３０に保持する場合は以下のように動作する。ノードＧをハイレベルにし、ノードＢをローレベル、ノードＣをハイレベルとする。その後、ノードＧをローレベルとし、ＦＥＴ３８をオフする。次に、ノードＤはローレベルのまま、すなわちトランスファーゲート３６は閉じた状態のまま、ノードＥをハイレベルにしトランスファーゲート３７を開ける（オンにする）。これにより、ＲＡＭＤＡＴのデータがノードＣに入力し、ラッチ３５に保持される。ノードＢとノードＣとは相補的なレベルになるから、後のステップでノードＢをライト回路２２に接続すれば、ライト回路２２に反転したデータが出力される。このようにして、書き込み分割データを反転しＷＲラッチ回路３０に保持する。ノードＥをローレベルとし、トランスファーゲート３７を閉じる（オフする）。【００４６】
図５に戻り、ステップＳ１２で非反転の場合、つまり指標データが“１”の場合、ＷＲラッチ回路３０は書き込み分割データを反転せずＷＲラッチ回路３０に保持する（ステップＳ１５）。図４を参照に、書き込み分割データを反転せずＷＲラッチ回路３０に保持する場合は以下のように動作する。ノードＨをハイレベルにし、ノードＣをローレベル、ノードＢをハイレベルとする。その後、ノードＨをローレベルとし、ＦＥＴ３９をオフする。次に、ノードＥはローレベルのまま、つまりトランスファーゲート３７は閉じた（オフの）まま、ノードＤをハイレベルにしトランスファーゲート３６を開ける（オンする）。これにより、ＲＡＭＤＡＴのデータがノードＢに入力し、ラッチ３５に保持される。後のステップでノードＢをライト回路２２に接続すれば、ライト回路２２に反転しないデータが出力される。ノードＤをローレベルにし、トランスファーゲート３６を閉じる（オフする）。【００４７】
このように、分割データの反転または非反転は通常ビット１２８ｂｉｔの書き込み分割データ単位で行われる。書き込み分割データを反転または非反転したかを示すフラグは１ビットの対応する指標データに記憶される。５１２ｂｉｔ分の分割データはステップＳ１０からＳ１５を４回行うことによりＷＲラッチ回路３０に保持される。図５では、簡単のため書き込み分割データ毎のステップは省略した。なお、ビットディテクタ４０は、すべての分割データ５１２ｂｉｔに対して一度に“０”の総数を検出する構成としても良い。その場合は、各々の書き込み分割データに対応する指標データをステップＳ１０ですべて生成しておき、後の各々の書き込み分割データのプログラム動作のたびに参照される。図６を参照に、ビットディテクタ４０は、最初のアドレスの分割データの“０”の数を検出し、分割データを反転または非反転するかを判断し、ＷＲラッチ回路３０は分割データを反転または非反転しラッチ３５に保持する（Ｓ１０〜Ｓ１５：検出、判断）。以下、分割データを反転または非反転したデータを反転データという。【００４８】
図５および図６を参照に、ＷＲラッチ回路３０は、ラッチ３５に保持した反転データおよび対応する指標データをライト回路２２に出力する。ライト回路２２は反転データおよび対応する指標データをプログラムするべきメモリセルに接続するビットラインをプリチャージする（ステップＳ１６：プリチャージ）。プリチャージとは、プログラム時にビットラインに高電圧を供給する前にビットラインを電源電圧に予め充電しておくことでプログラム動作をより高速化するステップである。よって、簡単のためプリチャージを省略しても良い。次に、ステップＳ１８を実行する間にステップＳ２０からステップＳ２５を実行する。すなわち、ライト回路２２は、最初のアドレスの反転データおよび対応する指標データをメモリセルアレイ１０のメモリセルにプログラムする（ステップＳ１８：プログラム）。その間に、制御回路６０はＳＲＡＭアレイアドレスシーケンサ６４に指示し、ＳＲＡＭアレイ５０の次のアドレスの分割データをＲＡＭＤＡＴ上に出力する。ビットディテクタ４０は次の分割データの“０”の数を検出する（ステップＳ２０）。ビットディテクタ４０は、分割データを反転または非反転するか判断する（ステップＳ２２）。反転と判断した場合、ＷＲラッチ回路３０は分割データを反転し反転データとして保持する（ステップＳ２４）。非反転と判断した場合、ＷＲラッチ回路３０は分割データを反転せず反転データとして保持する（ステップＳ２５）。以上、ステップＳ２０〜Ｓ２５は図６の検出、判断に相当する。制御回路６０は、次の分割データが最後の分割データか判断する（ステップＳ２６）。Ｎｏの場合、制御回路６０は、アドレスインクルメントし（ステップＳ２８）、ステップＳ１６に進む。Ｙｅｓの場合、ライト回路２２は、最後の分割データ（反転データ）をプログラムするべきメモリセルに接続するビットラインをプリチャージし、最後の分割データ（反転データ）をメモリセルアレイ１０のメモリセルにプログラムする（ステップＳ２９）。このようにして、１ページ分のデータをメモリセルアレイ１０にプログラムする。【００４９】
次に、メモリセルアレイ１０から１ページ分のデータを読み出す際のフローを説明する。図７はデータを読み出す際のフローチャート、図８はタイミングチャートである。図４のノードＲＴはローレベルであり、ＦＥＴ３１は閉じている（オフしている）。図７および図８を参照に、リード回路２４は、１ページ分のデータのうち最初のアドレスの分割データおよび指標データをセンシングする（ステップＳ３０）。図４を参照に、ノードＧをハイレベルとし、ノードＢをローレベルノードＣをハイレベルとする。図７および図８を参照に、これにより、ＷＲラッチ回路３０はラッチ３５をリセットする（ステップＳ３２：ＷＲリセット）。その後、ノードＧをローレベルとする。図４を参照に、ノードＲＴをハイレベルにしセンスアンプ２８の出力をラッチ３５のノードＣに転送する。これにより、ラッチ３５に分割データおよび対応する指標データが保持される。図７および図８を参照に、ＷＲラッチ回路３０は分割データを保持する（ステップＳ３４：ＲＴオープン）。ノードＲＴをローレベルにし、ＦＥＴ３１を閉じ（オフし）センスアンプ２８とラッチ３５を非接続とする。【００５０】
図７および図８を参照に、次に、ステップＳ３６からステップＳ４２を実行している間に、ステップＳ４４を実行する。すなわち、ＷＲラッチ回路３０は指標データを制御回路６０に転送する（ステップＳ３６：ＩＮＤロード）。制御回路６０は、指標データを用い、分割データが反転されているか非反転かを判断する（ステップＳ３８：ＩＮＤロード）。反転と判断した場合、ＷＲラッチ回路３０は、分割データを反転しＲＡＭＤＡＴに出力する（ステップＳ４０：ＳＲＡＭにロード）。つまり、図４を参照に、ノードＤをハイレベル、ノードＥをローレベルとし、トランスファーゲート３６を開く。これによりノードＣの相補的なノードＢがＲＡＭＤＡＴに接続する。これにより、分割データは反転されＲＡＭＤＡＴに出力される。図７および図８を参照に、非反転と判断した場合、ＷＲラッチ回路３０は、分割データを反転せずＲＡＭＤＡＴに出力する（ステップＳ４１：ＳＲＡＭロード）。つまり、図４を参照に、ノードＥをハイレベル、ノードＤをローレベルとし、トランスファーゲート３７を開く。これによりノードＣがＲＡＭＤＡＴに接続する。よって、分割データは非反転のままＲＡＭＤＡＴに出力される。図７および図８を参照に、ＲＡＭＤＡＴ上の分割データ（すなわち分割データを反転または非反転されたデータであり、これを反転データともいう）をＳＲＡＭアレイ５０に記憶させる（ステップＳ４２：ＳＲＡＭにロード）。図７および図８を参照に、制御回路６０およびＷＲラッチ回路３０がステップＳ３６からステップＳ４２を行っている間に、リード回路２４は次のアドレスの分割データを読み出す（ステップＳ４４：センシング）。【００５１】
次に、制御回路６０は、次の分割データが最後の分割データか判断する（ステップＳ４６）。Ｎｏの場合、アドレスシーケンサ６２は次の分割データにアドレスインクリメントする（ステップＳ４８）。ステップＳ３２に戻る。ステップＳ４６においてＹｅｓの場合、最後の分割データに対し、ステップＳ３６からステップＳ４２と同様のステップを行う（ステップＳ４９）。以上により、ＳＲＡＭアレイ５０に１ページ分のデータが記憶される。ＳＲＡＭアレイ５０から１ページ分のデータをＩＯ＿ＳＡ（１５：０）５２を経由し外部に出力する。このようにして、１ページ分のデータをメモリセルアレイ１０から読み出す。【００５２】
実施例１に係るフラッシュメモリは、メモリセルアレイ１０にプログラムすべきデータを分割した分割データの書き込むビット“０”の総数を検出し、“０”の総数を所定のビットの数と比較するビットディテクタ４０（検出回路）を有している。ビットディテクタ４０の比較結果に応じ分割データを反転または非反転したデータ（これを反転データという）を保持するＷＲラッチ回路３０（ラッチ回路）を有している。ＷＲラッチ回路３０に接続し、反転データをメモリセルアレイ１０にプログラムするライト回路２２を有している。そして、ビットディテクタ４０、ＷＲラッチ回路３０およびライト回路２２に接続する制御回路６０は、ステップＳ１８のように、反転データをＷＲラッチ回路３０からメモリセルアレイ１０にプログラムする間に、ステップＳ２０のようにビットディテクタ４０に次の分割データ（すなわち次にメモリセルアレイ１０にプログラムすべき分割データ）の書き込むビットの総数を検出し、そのビットの総数を所定のビットの数と比較させる。これにより、プログラム時間の長い書き込むビットの総数が多い場合、分割データを反転し分割データをプログラムするため、プログラム時間を短縮させることができる。また、図６のように、ステップＳ１８の間に、次の分割データのステップＳ２０〜Ｓ２５を行っているため、メモリセルアレイ１０へのデータのプログラム時間をさらに短縮させることができる。なお、図５のステップＳ１６の前からステップＳ２０への破線のように、反転データをメモリセルアレイ１０にプログラムする（ステップＳ１８）前に、ライト回路２２がプログラムすべきメモリセルに接続するビットラインをプリチャージしている（ステップＳ１６）間に、次の分割データのステップＳ２０〜Ｓ２５を行っても良い。これにより、プログラム時間をさらに短縮することができる。【００５３】
また、実施例１に係るフラッシュメモリは、反転データが反転または非反転かを示す指標データを保持するＷＲラッチ回路３０の指標データ領域３０ｂ（指標ラッチ回路）を有し、ビットディテクタ４０は、ビット“０”の総数を所定のビットの数と比較した結果に応じ、指標データをＷＲラッチ回路３０の指標データ領域３０ｂに出力する。ライト回路２２は、反転データをメモリセルアレイ１０にプログラムする際に、同時に指標データをＷＲラッチ回路３０の指標データ領域３０ｂからメモリセルアレイ１０にプログラムする。このように、データをメモリセルアレイ１０に書き込む際に指標データがメモリセルアレイ１０にプログラムされることにより、メモリセルアレイ１０からデータを読み出す際、分割データが反転または非反転かを判断することができる。【００５４】
さらに、実施例１に係るフラッシュメモリは、図４のように、反転データをＷＲラッチ回路３０に転送するスイッチ回路であるトランスファーゲート３６および３７を有する。ステップＳ２０のように、ビットディテクタ４０が分割データの書き込むビット“０”の総数を検出し、ビット“０”の総数を所定のビットの数と比較する間は、トランスファーゲート３６および３７はオフしている。また、ステップＳ２４またはＳ２５のように、ＷＲラッチ回路３０に反転データを転送する間は、トランスファーゲート３６および３７のいずれかはオンしている。このように、ビットディテクタ４０が分割データの書き込むビットの総数を検出し、そのビットの総数を所定のビットの数と比較する際に、トランスファーゲート３６および３７はオフしている。このため、ＷＲラッチ回路３０の反転データをラッチ３５からメモリセルアレイ１０にプログラムする間に、ビットディテクタ４０は次の分割データの書き込むビットの総数を検出し、そのビットの総数を所定のビットの数と比較することができる。【００５５】
図４のように、ＷＲラッチ回路３０は、相補的な２つのノードＢおよびＣを有し、ビットディテクタ４０の比較結果に応じ、２つのノードＢおよびＣのいずれかに分割データを入力することのより、分割データを反転または非反転し、反転データとして保持する。このように、相補的な２つのノードＢおよびＣにデータを入力することにより、分割データを反転するための回路が不要となる。よって、チップ面積を縮小することができる。【００５６】
ＷＲラッチ回路３０は、２つのインバータ３４および３６を環状に接続したラッチ３５（回路）を有し、相補的な２つのノードはインバータの間の異なるノードＢおよびＣである。このように簡単な構成により、分割データを反転または非反転した反転データをＷＲラッチ回路３０に保持することがきる。【００５７】
さらに、実施例１に係るフラッシュメモリは、外部回路より入力されたプログラムすべきデータを記憶し、ビットディテクタ４０およびＷＲラッチ回路３０に接続するＲＡＭＤＡＴに分割データを出力するＳＲＡＭアレイ５０（記憶装置）を有する。このように、ＳＲＡＭアレイ５０に１ページ分のデータを保持することにより、外部回路からの入力は１ページ単位で行い、メモリセルへのプログラムは分割データ単位で行うことができる。【００５８】
実施例１に係るフラッシュメモリは、メモリセルアレイ１０から読み出すべきデータを分割した分割データをメモリセルアレイ１０から読み出すリード回路２４と、分割データがプログラムされた際に反転または非反転されたかを示す指標データが反転または非反転を示すかを判断する制御回路６０と、リード回路２４が読み出した分割データを保持し、制御回路６０の反転または非反転の判断結果に応じ、分割データを反転または非反転したデータ（これを反転データという）を出力するＷＲラッチ回路３０と、を有している。制御回路６０は、指標データが反転または非反転を示すかを判断する間に、リード回路は次の分割データを前記メモリセルアレイから読み出している。これにより、分割データをプログラムする際、分割データが反転または非反転されているかを判断し、反転している場合は、元に戻し出力することができる。また、図８のように、ステップＳ３６〜Ｓ４２を行う間に次の分割データのステップＳ４４を行っているため、メモリセルアレイ１０からのデータの読み出し時間を短縮させることができる。【００５９】
さらに、実施例１に係るフラッシュメモリは、ＷＲラッチ回路３０が分割データを保持する際に指標デ−タを保持するＷＲラッチ回路の指標データ領域３０ｂ（指標ラッチ回路）を有している。ステップＳ３０、Ｓ４４のように、リード回路２４は、分割データをメモリセルアレイ１０から読み出す際に指標データを読み出している。ステップＳ３６のように、制御回路６０は、ＷＲラッチ回路の指標データ領域３０ｂ（指標ラッチ回路）から指標データを読み出し、ステップＳ３８のように、指標データを用い、分割データが書き込みの際反転または非反転されたかを判断している。このように、指標データにより、分割データが反転または非反転しているかを判断することができる。また、指標データを分割データと同時にメモリセルアレイ１０から読み出すことにより、指標データを分割データと別に読み出す必要がなく、読み出し時間を短縮できる。【００６０】
さらに、実施例１に係るフラッシュメモリは、分割データをＷＲラッチ回路３０のラッチ３５に転送するためのスイッチ回路としてＦＥＴ３１を有している。ステップＳ３８のように、制御回路６０が分割データが書き込みの際反転または非反転されたかを判断する間は、ＦＥＴ３１はオフしている。ステップＳ３４のように、リード回路２４からＷＲラッチ回路３０に反転データを転送する間は、ＦＥＴ３１はオンしている。このように、制御回路６０が分割データが書き込みの際反転または非反転されたかを判断する間に、ＦＥＴ３１はオフしている。このため、制御回路６０が、分割データがプログラムされた際に反転または非反転されたかを判断する間に、リード回路２４は次の分割データをメモリセルアレイ１０から読み出すことができる。【００６１】
さらに、ＷＲラッチ回路３０は、相補的な２つのノードＢおよびＣを有し、指標データに応じ、２つのノードＢおよびＣのいずれかから分割データを出力することにより、分割データを反転または非反転した反転データを出力する。このように、相補的な２つのノードＢおよびＣからデータを出力することにより、分割データを反転するための回路が不要となる。よって、チップ面積を縮小することができる。【００６２】
さらに、ＷＲラッチ回路３０は、インバータ３２および３４を２つ環状に接続したラッチ３５（回路）を有し、２つのノードＢおよびＣはインバータ３４および３６の間の異なるノードである。このように簡単な構成により、ＷＲラッチ回路３０は、保持した分割データを反転または非反転し出力することがきる。【００６３】
さらに、実施例１に係るフラッシュメモリは、ＷＲラッチ回路３０の出力した反転データを記憶し、メモリセルアレイ１０から読み出すべきデータを外部回路に出力するＳＲＡＭアレイ５０を有する。このように、ＳＲＡＭアレイ５０に１ページ分のデータを保持することにより、外部回路への出力は１ページ単位で行い、メモリセルからの読み出しは分割データ単位で行うことができる。【００６４】
実施例１は仮想接地型フラッシュメモリの例であったが、本発明は、その他のＳＯＮＯＳ型フラッシュメモリ、フローティングゲート型フラッシュメモリ、その他の不揮発性メモリにも適用することができる。しかし、特に仮想設置型フラッシュメモリをＮＡＮＤ型インターフェースで使用した場合、１ページ分のデータのログラムを短時間で行うことが難しい。よって、この場合に本発明を適用することにより、プログラム時間を短縮させることができる。また、外部回路とは、実施例１に係るフラッシュメモリを有する半導体装置内のＣＰＵ等の演算回路またはフラッシュメモリを有する半導体装置外のＣＰＵ等の演算回路のいずれであっても良い。【００６５】
以上、本発明の好ましい実施例について詳述したが、本発明は係る特定の実施例に限定されるものではなく、特許請求の範囲に記載された本発明の要旨の範囲内において、種々の変形・変更が可能である
【図１】
0004804479.tif 000002
【図２】
0004804479.tif 000003
【図３】
0004804479.tif 000004
【図４】
0004804479.tif 000005
【図５】
0004804479.tif 000006
【図６】
0004804479.tif 000007
【図７】
0004804479.tif 000008
【図８】
0004804479.tif 000009