(57)【特許請求の範囲】
【請求項１】
複数のフラッシュメモリセルから構成されるメモリセクタと、
外部からの書き込みデータ入力命令を受け書き込みデータ入力命令信号を発生し、外部からの書き込み命令を受け書き込み命令信号を発生するコマンドインターフェイスと、
外部から入力される第１の信号を受け取る第１の信号バッファと、
前記書き込み命令信号によって活性化され、制御信号を発生する制御信号発生回路と、
前記書き込みデータ入力命令信号によって活性化され、外部から入力される書き込みデータを前記第１の信号に同期して受け取るデータ入力バッファと、
前記書き込みデータ入力命令信号によって活性化され、前記第１の信号に同期して前記書き込みデータを受け取り、前記書き込み命令によって活性化され、前記制御信号に同期して誤り訂正のための検査データを発生する誤り訂正回路と、
外部から入力されるアドレスデータを受け取るアドレスバッファと、
前記書き込みデータ入力命令信号によって活性化され、前記第１の信号に同期して前記アドレスデータに基づいて予め決められた順にアドレス信号を発生し、前記書き込み命令信号によって活性化され、前記制御信号に同期して予め決められた順にアドレス信号を発生するアドレス信号発生回路と、
各々が各々のメモリセルに対して設けられ、各々は割り付けられたアドレス信号を受けて前記書き込みデータあるいは検査データを取り込み一時記憶する複数のデータ記憶回路と、
前記書き込み命令によって活性化され、前記複数のデータ記憶回路に一時記憶されている書き込みデータと検査データを前記メモリセクタに書き込む手段
とを具備することを特徴とするフラッシュメモリ。
【請求項２】
前記書き込み命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路をさらに具備することを特徴とする請求項１記載のフラシュメモリ。
【請求項３】
複数のフラッシュメモリセルから構成されるメモリセクタと、
複数の前記メモリセクタから構成されるメモリセルアレイと、
制御信号を発生する制御信号発生回路と、
外部から入力される第１の信号を受け取る第１の信号バッファと、
外部から入力されるアドレスデータを受け取るアドレスバッファと、
前記制御信号に同期して予め決められた順にアドレス信号を発生し、前記第１の信号に同期して前記アドレスデータに基づいて予め決められた順にアドレス信号を発生するアドレス信号発生回路と、
前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、
各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、各々は割り付けられたアドレス信号を受けて一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、
前記第１の信号に同期して、前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、
前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記データ出力バッファから出力されるデータが誤りであるか否かを前記第１の信号に同期して判断して訂正する誤り訂正回路
とを具備することを特徴とするフラッシュメモリ。
【請求項４】
外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生するコマンドインターフェイスと、前記ステータス読み出し命令信号によって活性化されメモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段
とをさらに具備することを特徴とする請求項３記載のフラッシュメモリ。
【請求項５】
前記誤り訂正回路は、メモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能であることを特徴とする請求項４記載のフラッシュメモリ。
【請求項６】
前記誤り訂正回路は、メモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能であることを特徴とする請求項４記載のフラッシュメモリ。
【請求項７】
前記メモリセルからのデータの読み出しおよびメモリセルから読み出されたデータを前記誤り訂正回路が受け取る期間にわたって連続してビジー信号を外部へ出力するビジー信号出力回路をさらに具備することを特徴とする請求項３記載のフラッシュメモリ。
【請求項８】
複数のフラッシュメモリセルから構成されるメモリセクタと、
複数の前記メモリセクタから構成されるメモリセルアレイと、
外部からの訂正読み出し命令を受け訂正読み出し命令信号を発生するコマンドインターフェイスと、
前記訂正読み出し命令信号によって活性化され制御信号を発生する制御信号発生回路と、
外部から入力される第１の信号を受け取る第１の信号バッファと、
外部から入力されるアドレスデータを受け取るアドレスバッファと、
前記第１の信号に同期して前記アドレスデータに基づいて予め決められた順にアドレス信号を発生し、前記訂正読み出し命令信号によって活性化され前記制御信号に同期して予め決められた順にアドレス信号を発生するアドレス信号発生回路と、
前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、
各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、各々は割り付けられたアドレス信号を受けて一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、
前記第１の信号に同期して、前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、
前記第１の信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、メモリセルから読み出したデータに誤りがあるか否かを判断し、誤りがある場合はそのデータを特定する誤り訂正回路
とを具備することを特徴とするフラッシュメモリ。
【請求項９】
前記コマンドインターフェイスは、外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生し、
前記ステータス読み出し命令信号によって活性化されメモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段をさらに具備することを特徴とする請求項８記載のフラッシュメモリ。
【請求項１０】
前記誤り訂正回路は、メモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能であることを特徴とする請求項９記載のフラッシュメモリ。
【請求項１１】
前記誤り訂正回路は、メモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能であることを特徴とする請求項９記載のフラッシュメモリ。
【請求項１２】
前記メモリセルからのデータの読み出し期間にビジー信号を外部へ出力し、かつ、前記訂正読み出し命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路をさらに具備することを特徴とする請求項８記載のフラッシュメモリ。
【請求項１３】
複数のフラッシュメモリセルから構成されるメモリセクタと、
外部からの書き込みデータ入力命令を受け書き込みデータ入力命令信号を発生し、外部からの書き込み命令を受け書き込み命令信号を発生するコマンドインターフェイスと、
外部から入力される第１の信号を受け取る第１の信号バッファと、
前記書き込み命令信号によって活性化され、制御信号を発生する制御信号発生回路と、
前記書き込みデータ入力命令信号によって活性化され、外部から入力される書き込みデータを前記第１の信号に同期して受け取るデータ入力バッファと、
前記書き込みデータ入力命令信号によって活性化され前記第１の信号に同期して前記書き込みデータを受け取り、前記書き込み命令によって活性化され前記制御信号に同期して誤り訂正のための検査データを発生する誤り訂正回路と、
各々が各々のメモリセルに対して設けられ、前記第１の信号および前記制御信号に同期して前記書き込みデータあるいは検査データを取り込み一時記憶する複数のデータ記憶回路と、
前記書き込み命令によって活性化され、前記複数のデータ記憶回路に一時記憶されている書き込みデータと検査データを前記メモリセクタに書き込む手段
とを具備することを特徴とするフラッシュメモリ。
【請求項１４】
前記書き込み命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路をさらに具備することを特徴とする請求項１３記載のフラッシュメモリ。
【請求項１５】
複数のフラッシュメモリセルから構成されるメモリセクタと、
複数の前記メモリセクタから構成されるメモリセルアレイと、
制御信号を発生する制御信号発生回路と、
外部から入力される第１の信号を受け取る第１の信号バッファと、
外部から入力されるアドレスデータを受け取るアドレスバッファと、
前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、
各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、前記制御信号および前記第１の信号に同期して一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、
前記第１の信号に同期して、前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、
前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記データ出力バッファから出力されるデータが誤りであるか否かを前記第１の信号に同期して判断して訂正する誤り訂正回路
とを具備することを特徴とするフラッシュメモリ。
【請求項１６】
外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生するコマンドインターフェイスと、前記ステータス読み出し命令信号によって活性化されメモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段とをさらに具備することを特徴とする請求項１５記載のフラッシュメモリ。
【請求項１７】
前記誤り訂正回路は、メモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能であることを特徴とする請求項１６記載のフラッシュメモリ。
【請求項１８】
前記誤り訂正回路は、メモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能であることを特徴とする請求項１６記載のフラッシュメモリ。
【請求項１９】
前記メモリセルからのデータの読み出しおよびメモリセルから読み出されたデータを前記誤り訂正回路が受け取る期間にわたって連続してビジー信号を外部へ出力するビジー信号出力回路をさらに具備することを特徴とする請求項１５記載のフラシュメモリ。
【請求項２０】
複数のフラッシュメモリセルから構成されるメモリセクタと、
複数の前記メモリセクタから構成されるメモリセルアレイと、
外部からの訂正読み出し命令を受け訂正読み出し命令信号を発生するコマンドインターフェイスと、
前記訂正読み出し命令信号によって活性化され制御信号を発生する制御信号発生回路と、
外部から入力される第１の信号を受け取る第１の信号バッファと、
外部から入力されるアドレスデータを受け取るアドレスバッファと、
前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、
各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、前記第１の信号および前記制御信号に同期して一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、
前記第１の信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、
前記第１の信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、メモリセルから読み出したデータに誤りがあるか否かを判断し、誤りがある場合はそのデータを特定する誤り訂正回路
とを具備することを特徴とするフラッシュメモリ。
【請求項２１】
前記コマンドインターフェイスは、外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生し、
前記ステータス読み出し命令信号によって活性化されメモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段をさらに具備することを特徴とする請求項２０記載のフラッシュメモリ。
【請求項２２】
前記誤り訂正回路は、メモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能であることを特徴とする請求項２１記載のフラッシュメモリ。
【請求項２３】
前記誤り訂正回路は、メモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能であることを特徴とする請求項２１記載のフラッシュメモリ。
【請求項２４】
前記メモリセルからのデータの読み出し期間にビジー信号を外部へ出力し、かつ、前記訂正読み出し命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路をさらに具備することを特徴とする請求項２０記載のフラッシュメモリ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリに係り、特に誤り訂正回路を搭載した高信頼性のフラッシュメモリに関するもので、ＮＡＮＤ型フラッシュメモリ、ＮＯＲ型フラッシュメモリなどに使用されるものである。
【０００２】
【従来の技術】
ところで、不揮発性の半導体メモリのうち、フラッシュメモリは、電気的に比較的大きな単位でデータの消去・書き換えが可能であり、ハードディスクの代替、コンピュータシステムではＢＩＯＳ（基本入出力システム）の記憶、携帯電話では通信規約などの記憶、デジタルカメラなどで画像の記憶などに応用されている。したがって、フラッシュメモリに記憶されているデータに１ビットでも誤りが生じれば、コンピュータシステムのダウン、携帯電話の通信不能、データ破壊などを引き起こすことになる。
【０００３】
そこで、フラッシュメモリの応用システムが高信頼性を要求する場合には、フラッシュメモリを管理するシステムの機能として、記憶させたい情報データに対して誤り検出・訂正が可能なように検査データを付加してフラッシュメモリに書き込み、また、情報データと検査データを読み出して情報データに誤りが無いかチェックし、誤りがある場合には誤りを訂正する機能を持たせる。
【０００４】
ところが、フラッシュメモリを管理するシステム毎に誤り訂正の方法が異なる場合が多く、例えば検査データが異なったり、そのデータ長が異なると、問題が生じる。即ち、あるシステムＡで書き込まれたデータを別のシステムＢで読み出すと、データに誤りが無いにもかかわらず、誤りがあるとして正しいデータを間違ったデータに変えてしまったり、訂正不可能な誤りが生じたと誤検出されてしまい、これによってシステム上のデータの破壊が起こる。
【０００５】
一方、フラッシュメモリに誤り訂正回路を搭載してしまう方法があり、これはシステムに依存せずにフラッシュメモリ内で誤り訂正を行うので有効である。
【０００６】
しかし、誤り訂正回路は複雑で回路面積が大きく、フラッシュメモリのチップサイズが大きくなりコスト高を招く。これに対して、本願出願人の出願に係る例えば特願平７−８３４５９「誤り訂正回路と半導体記憶装置」では、読み出し・書き込みのためのデータ記憶回路と誤り訂正回路の一部を共用して回路面積の増大を抑えている。
【０００７】
また、近年のフラッシュメモリには、１つのメモリセルに１ビット以上のデータを記憶させる多値記憶式のものが見られる。しかし、多値記憶式のフラッシュメモリは、１つのメモリセルが破壊した場合に複数ビットのデータに誤りが生じる（つまり、バースト誤りが生じる）。
【０００８】
このようなバースト誤りを短い検査データで効率よく訂正するために、リード・ソロモン符号に基づく誤り訂正方法があるが、誤りの特定に複雑な回路が必要であり、回路面積が大きくなり、フラッシュメモリのチップサイズが大きくなり、コスト高を招く。これに対して、本願出願人の出願に係る例えば特願平６−３２６３４４では、多値記憶式フラッシュメモリの誤り訂正をビット単位の誤り訂正方法により行い、１つのメモリセルに同時に書き込みされる複数ビットのデータを複数の検査データで救済するようにしている。
【０００９】
上述したように、フラッシュメモリに誤り訂正回路を搭載するという技術は従来から存在するが、従来の誤り訂正回路を搭載しないフラッシュメモリとの互換性、誤りの検出やその誤りの特定を行うための所要時間を短くする点、検査データを発生させるための所要時間を短くする点、製品テストなどで不良解析を行う場合に誤り訂正回路による支障が発生しないようにする点、フラッシュメモリの応用システム側で誤り訂正を行う場合にメモリ内部の誤り訂正回路による支障が発生しないようにする点などの実用上の利便性を考慮した誤り訂正回路を搭載したフラッシュメモリは見当たらない。
【００１０】
【発明が解決しようとする課題】
本発明は上記の事情に鑑みてなされたもので、従来の誤り訂正回路を搭載しないフラッシュメモリとの互換性を確保し得るフラッシュメモリを提供することを目的とする。
【００２２】
【課題を解決するための手段】
本発明の第１のフラッシュメモリは、複数のフラッシュメモリセルから構成されるメモリセクタと、外部からの書き込みデータ入力命令を受け書き込みデータ入力命令信号を発生し、外部からの書き込み命令を受け書き込み命令信号を発生するコマンドインターフェイスと、外部から入力される第１の信号を受け取る第１の信号バッファと、前記書き込み命令信号によって活性化され、制御信号を発生する制御信号発生回路と、前記書き込みデータ入力命令信号によって活性化され、外部から入力される書き込みデータを前記第１の信号に同期して受け取るデータ入力バッファと、前記書き込みデータ入力命令信号によって活性化され、前記第１の信号に同期して前記書き込みデータを受け取り、前記書き込み命令によって活性化され、前記制御信号に同期して誤り訂正のための検査データを発生する誤り訂正回路と、外部から入力されるアドレスデータを受け取るアドレスバッファと、前記書き込みデータ入力命令信号によって活性化され、前記第１の信号に同期して前記アドレスデータに基づいてあらかじめ決められた順にアドレス信号を発生し、前記書き込み命令信号によって活性化され、前記制御信号に同期してあらかじめ決められた順にアドレス信号を発生するアドレス信号発生回路と、各々が各々のメモリセルに対して設けられ、各々は割り付けられたアドレス信号を受けて前記書き込みデータあるいは検査データを取り込み一時記憶する複数のデータ記憶回路と、前記書き込み命令によって活性化され、前記複数のデータ記憶回路に一時記憶されている書き込みデータと検査データを前記メモリセクタに書き込む手段とを備えたことを特徴とする。
【００２３】
さらに、第１のフラッシュメモリの望ましい実施態様として、（１）前記書き込み命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路を備えるようにしてもよい。
【００２４】
本発明の第２のフラッシュメモリは、複数のフラッシュメモリセルから構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイと、制御信号を発生する制御信号発生回路と、外部から入力される第１の信号を受け取る第１の信号バッファと、外部から入力されるアドレスデータを受け取るアドレスバッファと、前記制御信号に同期してあらかじめ決められた順にアドレス信号を発生し、前記第１の信号に同期して前記アドレスデータに基づいてあらかじめ決められた順にアドレス信号を発生するアドレス信号発生回路と、前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、各々は割り付けられたアドレス信号を受けて一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、前記第１の信号に同期して、前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記データ出力バッファから出力されるデータが誤りであるか否かを前記第１の信号に同期して判断して訂正する誤り訂正回路とを備えたことを特徴とする。
【００２５】
さらに、第２のフラッシュメモリの望ましい実施態様を、以下の（１）〜（４）のようにしてもよい。
【００２６】
（１）外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生するコマンドインターフェイスと、前記ステータス読み出し命令信号によって活性化され、メモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段とをさらに備える。
【００２７】
（２）前記誤り訂正回路はメモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能である。
【００２８】
（３）前記誤り訂正回路はメモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能である。
【００２９】
（４）メモリセルからのデータの読み出しおよびメモリセルから読み出されたデータを前記誤り訂正回路が受け取る期間にわたって連続してビジー信号を外部へ出力するビジー信号出力回路をさらに備える。
【００３０】
本発明の第３のフラッシュメモリは、複数のフラッシュメモリセルから構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイと、外部からの訂正読み出し命令を受け訂正読み出し命令信号を発生するコマンドインターフェイスと、前記訂正読み出し命令信号によって活性化され、制御信号を発生する制御信号発生回路と、外部から入力される第１の信号を受け取る第１の信号バッファと、外部から入力されるアドレスデータを受け取るアドレスバッファと、前記第１の信号に同期して前記アドレスデータに基づいて予め決められた順にアドレス信号を発生し、前記訂正読み出し命令信号によって活性化され、前記制御信号に同期して予め決められた順にアドレス信号を発生するアドレス信号発生回路と、前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、各々は割り付けられたアドレス信号を受けて一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、前記第１の信号に同期して、前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、前記第１の信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、メモリセルから読み出したデータに誤りがあるか否かを判断し、誤りがある場合はそのデータを特定する誤り訂正回路とを備えたことを特徴とする。
【００３１】
さらに、第３のフラッシュメモリの望ましい実施態様を、以下の（１）〜（４）にしてもよい。
【００３２】
（１）前記コマンドインターフェイスは、外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生し、さらに、前記ステータス読み出し命令信号によって活性化され、メモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段と、を備える。
【００３３】
（２）前記誤り訂正回路はメモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能である。
【００３４】
（３）前記誤り訂正回路はメモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能である。
【００３５】
（４）メモリセルからのデータの読み出し期間にビジー信号を外部へ出力し、かつ、前記訂正読み出し命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路をさらに備える。
【００３６】
本発明の第４のフラッシュメモリは、複数のフラッシュメモリセルから構成されるメモリセクタと、外部からの書き込みデータ入力命令を受け書き込みデータ入力命令信号を発生し、外部からの書き込み命令を受け書き込み命令信号を発生するコマンドインターフェイスと、外部から入力される第１の信号を受け取る第１の信号バッファと、前記書き込み命令信号によって活性化され、制御信号を発生する制御信号発生回路と、前記書き込みデータ入力命令信号によって活性化され、外部から入力される書き込みデータを前記第１の信号に同期して受け取るデータ入力バッファと、前記書き込みデータ入力命令信号によって活性化され、前記第１の信号に同期して前記書き込みデータを受け取り、前記書き込み命令によって活性化され、前記制御信号に同期して誤り訂正のための検査データを発生する誤り訂正回路と、各々が各々のメモリセルに対して設けられ、前記第１の信号および前記制御信号に同期して前記書き込みデータあるいは検査データを取り込み一時記憶する複数のデータ記憶回路と、前記書き込み命令によって活性化され、前記複数のデータ記憶回路に一時記憶されている書き込みデータと検査データを前記メモリセクタに書き込む手段とを備えることを特徴とする。
【００３７】
さらに、第４のフラッシュメモリの望ましい実施態様として、（１）前記書き込み命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路をさらに備えるようにしてもよい。
【００３８】
本発明の第５のフラッシュメモリは、複数のフラッシュメモリセルから構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイと、制御信号を発生する制御信号発生回路と、外部から入力される第１の信号を受け取る第１の信号バッファと、外部から入力されるアドレスデータを受け取るアドレスバッファと、前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、前記制御信号および前記第１の信号に同期して一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、前記第１の信号に同期して、前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記データ出力バッファから出力されるデータが誤りであるか否かを前記第１の信号に同期して判断して訂正する誤り訂正回路と、を備えることを特徴とする。
【００３９】
さらに、第５のフラッシュメモリの望ましい実施態様として、以下の（１）〜（４）のようにしてもよい。
【００４０】
（１）外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生するコマンドインターフェイスと、前記ステータス読み出し命令信号によって活性化され、メモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段とをさらに備える。
【００４１】
（２）前記誤り訂正回路はメモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能である。
【００４２】
（３）前記誤り訂正回路はメモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能である。
【００４３】
（４）メモリセルからのデータの読み出しおよびメモリセルから読み出されたデータを前記誤り訂正回路が受け取る期間にわたって連続してビジー信号を外部へ出力するビジー信号出力回路をさらに備える。
【００４４】
本発明の第６のフラッシュメモリは、複数のフラッシュメモリセルから構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイと、外部からの訂正読み出し命令を受け訂正読み出し命令信号を発生するコマンドインターフェイスと、前記訂正読み出し命令信号によって活性化され、制御信号を発生する制御信号発生回路と、外部から入力される第１の信号を受け取る第１の信号バッファと、外部から入力されるアドレスデータを受け取るアドレスバッファと、前記アドレスデータに基づいて前記メモリセルアレイ中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルからデータを読み出す読み出し手段と、各々が各々のメモリセルに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルから読み出されたデータを一時記憶し、前記第１の信号および前記制御信号に同期して一時記憶しているメモリセルから読み出されたデータを出力する複数のデータ記憶回路と、前記第１の信号に同期して、前記複数のデータ記憶回路から出力されるメモリセルから読み出されたデータを外部へ出力するデータ出力バッファと、前記第１の信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、前記制御信号に同期して前記複数のデータ記憶回路から出力されるメモリセルから読み出したデータを受け取り、メモリセルから読み出したデータに誤りがあるか否かを判断し、誤りがある場合はそのデータを特定する誤り訂正回路とを備えることを特徴とする。
【００４５】
さらに、第６のフラッシュメモリの望ましい実施態様として、以下の（１）〜（４）のようにしてもよい。
【００４６】
（１）前記コマンドインターフェイスは、外部からのステータス読み出し命令を受けステータス読み出し命令信号を発生し、さらに、前記ステータス読み出し命令信号によって活性化され、メモリセルから読み出されたデータに誤りがあったか否かを前記データ出力バッファを介して出力するステータス出力手段とを備える。
【００４７】
（２）前記誤り訂正回路はメモリセルから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段は誤りの数を出力可能である。
【００４８】
（３）前記誤り訂正回路はメモリセルから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段は誤り訂正可能か否かを出力可能である。
【００４９】
（４）メモリセルからのデータの読み出し期間にビジー信号を外部へ出力し、かつ、前記訂正読み出し命令信号に従ってビジー信号を外部へ出力するビジー信号出力回路をさらに備える。
【００７８】
【発明の実施の形態】
以下、図面を参照して本発明の実施の形態を詳細に説明する。
【００７９】
＜第１の実施の形態＞
図１は、本発明の第１の実施の形態に係るフラッシュメモリの構成を示すブロック図である。
【００８０】
複数の端子１は、外部からの電源や信号を受けたり、あるいは信号を外部へ出力するためのものである。これらの端子１のうち、ＶCC端子は電源電圧ＶCCを受け、VSS 端子は接地され、nCE 端子はチップ・イネーブル信号nCE を受け、nWE 端子はライト・イネーブル信号nWE を受け、CLE 端子はコマンド・ラッチ・イネーブル信号CLE 号を受け、ALE 端子はアドレス・ラッチ・イネーブル信号ALE を受け、nRE 端子はリード・イネーブル信号nRE を受け、ECCENB端子は誤り訂正回路活性化信号ECCENBを受ける。
【００８１】
nBUSY 端子はビジー信号nBUSY を出力し、D0端子〜D7端子は、書き込みデータ、コマンドデータ、アドレスデータなどの入力データD0〜D7を受け、読み出しデータ、ステータスデータなどの出力データD0〜D7を出力する。
【００８２】
前記ライト・イネーブル信号nWE 、コマンド・ラッチ・イネーブル信号CLE 、アドレス・ラッチ・イネーブル信号ALE 、リード・イネーブル信号nRE 、入力データDO〜D7は、チップ・イネーブル信号nCE が"L" の場合に受け付けられ、出力データD0〜D7は、チップ・イネーブル信号nCE が"L" の時に出力される。
【００８３】
なお、前記ＶCC端子から各内部回路に供給される電源線や前記VSS 端子から各内部回路に供給される接地線は、表示が煩雑になるので図示を省略した。
【００８４】
パワーオン検出回路２は、電源電圧ＶCCが十分に高い電圧レベルであるかを検出し、十分なレベルであればパワーオン検出信号PON を"H" にする。
【００８５】
コマンドインターフェイス３は、チップ・イネーブル信号nCE="L" 、コマンド・ラッチ・イネーブル信号CLE="H" の時、ライト・イネーブル信号nWE が"L" から"H" に遷移するタイミングで入力されるデータD0〜D7をコマンドデータとして受け取り、読み出し命令信号READ、データラッチ読み出し命令信号DLREAD、計算命令信号CALC、データ出力命令信号OUTPUT、ステータス読み出し命令信号STATUS、倍速書き込み命令DOUBLE信号、データ入力命令信号INPUT 、検査データ発生命令信号CHKGEN、書き込み命令信号PRO 、消去命令信号ERASE などを出力する。また、読み出し、書き込みなどを内部で処理していることを外部へ伝えるために、前記ビジー信号nBUSY をnBUSY 端子から出力する。
【００８６】
アドレスバッファ４は、チップ・イネーブル信号nCE="L" 、アドレス・ラッチ・イネーブル信号ALE="H" の時、ライト・イネーブル信号nWE が"L" から"H" に遷移するタイミングで入力されるデータD0〜D7をアドレスデータとして受け取り、ロウアドレスデータAddX_0-12 とAddZ、カラムアドレス初期データAddY_init_0-9 を出力する。
【００８７】
データ入出力バッファ５は、データ入力命令信号INPUT を受けて、チップ・イネーブル信号nCE="L" 、アドレス・ラッチ・イネーブル信号ALE="L" 、コマンド・ラッチ・イネーブルCLE="L" の時、ライト・イネーブル信号nWE が"L" から"H" に遷移するタイミングで入力されるデータD0〜D7を書き込みデータとして受け取る。
【００８８】
また、データ入出力バッファ５は、データ出力命令信号OUTPUTを受けて、チップ・イネーブル信号nCE="L" の時、リード・イネーブル信号nRE が"H" から"L" に遷移するタイミングで読み出しデータD0〜D7の出力を開始する。さらに、ステータス読み出し命令信号STATUSを受けて、信号nCE="L" の時、信号nRE が"H" から"L" に遷移するタイミングでステータスデータD0〜D7の出力を開始する。
【００８９】
D0端子〜D7端子から入力する書き込みデータは、データ入出力バッファ５で反転させられて、さらに信号線DL_0-7を介しIOバッファ６で再度反転させられて信号線IO_0-7を介してカラム制御回路１５に入力される。
【００９０】
読み出しデータは、信号線IO_0-7を介してIOバッファ６で反転させられて信号線DL_0-7に出力され、データ入出力バッファ５で再度反転させられてD0端子〜D7端子から出力される。なお、前記信号線DL_0-7は誤り訂正回路１１に接続されている。
【００９１】
誤り訂正制御信号発生回路７は、カラムアドレス初期データAddY_init_0-9 、データラッチ読み出し命令信号DLREAD、計算命令信号CALCなどで制御され、誤り訂正制御信号ECCLK を発生する機能を有する。
【００９２】
出力制御信号発生回路８は、リード・イネーブル信号nRE とデータ出力命令信号OUTPUTなどで制御され、このリード・イネーブル信号nRE に同期して出力制御信号OUTCLKを出力する機能を有する。
【００９３】
検査データ発生制御信号発生回路９は、カラムアドレス信号CSLa_527、CSL_b527や検査データ発生命令信号CHKGENなどで制御され、検査データ発生制御信号CGCLK を発生する機能を有する。
【００９４】
入力制御信号発生回路１０は、データ入力命令信号INPUT やライト・イネーブル信号nWE などで制御され、この信号nWE に同期して入力制御信号INCLK を発生する機能を有する。
【００９５】
誤り訂正回路１１は、データ入力命令信号INPUT を受けて入力制御信号INCLK に同期して信号線DL_0-7から書き込みデータを取り込み、検査データ発生命令信号CHKGENを受けて検査データ発生制御信号CGCLK に同期して検査データとパリティデータを信号線DL_0-7に出力する機能を有する。
【００９６】
また、誤り訂正回路１１は、データラッチ読み出し命令信号DLREADを受けて誤り訂正制御信号ECCLK に同期して信号線DL_0-7から読み出しデータを取り込み、さらに計算命令信号CALCを受けて誤り訂正制御信号ECCLK に同期して読み出しデータの誤り検出を行う機能を有する。
【００９７】
また、誤り訂正回路１１は、データ出力命令信号OUTPUTを受けて出力制御信号OUTCLKに同期して誤ったデータを訂正する機能を有し、ステータス読み出し命令信号STATUSを受けて誤り訂正回路のステータスを信号線DL_0-7に出力する機能を有する。
【００９８】
この誤り訂正回路１１は、カラムアドレス信号CSLa_527、CSLb_527、CSLa_516、CSLb_516、カラムアドレス初期データAddY_init_0-9 などでも制御される。
【００９９】
そして、メモリセルアレイ１２およびそれに対応してソース・ウェル制御回路１３、ロウ制御回路１４、カラム制御回路１５、カラムアドレス発生回路１６が設けられている。
【０１００】
ここで、ソース・ウェル制御回路１３は、メモリセルアレイ１２のソース線SRC とメモリセルアレイ１２が形成されるウェルCWELL を制御するものである。
【０１０１】
また、ロウ制御回路１４は、メモリセルアレイ１２のワード線WLと選択ゲート線SGを制御するものである。また、カラム制御回路１５は、メモリセルアレイ１２のビット線BLを制御するのである。また、カラムアドレス発生回路１６は、アドレス信号AddZやAddY_init_0-9 と誤り訂正制御信号ECCLK 、出力制御信号OUTCLK、検査データ発生制御信号CGCLK、入力制御信号INCLK などで制御され、これらの制御信号に同期して予め決められた順にカラムアドレス信号CSL を発生するものである。
【０１０２】
本例では、前記メモリセルアレイ１２と前記各回路１３、１４、１５、１６は２個づつが設けられており、この２組のうちの一方がアドレス信号AddZで選択される。例えばアドレス信号AddZ="L"でメモリセルアレイＡおよびそれに対応する回路１３、１４、１５、１６が選択され、アドレス信号AddZ="H"でメモリセルアレイＢおよびそれに対応する回路１３、１４、１５、１６が選択される。
【０１０３】
図２は、図１中のメモリセルアレイ１２の１個分（メモリセルアレイＡ）とそれに対応するカラム制御回路１５の１個分を取り出してより詳細な構成を示している。
【０１０４】
このメモリセルアレイ１２は、同一ウェルCWELLaに形成されたＮＡＮＤ型メモリセルユニットのアレイを用いている。ＮＡＮＤ型メモリセルユニットは、フローティングゲートと制御ゲートが積層された形を有するセルトランジスタＭが例えば４個直列に接続され、その両端に選択トランジスタＳが接続されてなり、このＮＡＮＤセルユニットの一端はビット線BLa_8j〜BLa_8j+7のいずれか１本に接続され、他端は共通ソース線ＳＲＣａに接続される。
【０１０５】
ここで、同一行のセルトランジスタＭの集まりを１ページと称し、連続する４ページの集まりを１ブロックと称する。そして、ある１ブロックにおける４個のセルトランジスタＭに対応するワード線をＷＬa_0 〜ＷＬa_3 、ＳＧ1a_0はＮＡＮＤセルユニットの一端側の選択トランジスタＳの選択ゲート線をＳＧ1a_0、ＮＡＮＤセルユニットの他端側の選択トランジスタＳの選択ゲート線をＳＧ2a_0で示している。
【０１０６】
カラム制御回路１５は、上記メモリセルアレイ１２のビット線BLa_8j〜BLa_8j+7に接続されるデータ記憶回路１７を含む。このデータ記憶回路１７は、カラムアドレス信号CSLa_jで選択された時、それぞれが接続される信号線IO_0-7と電気的に接続され、選択されたメモリセルＭに書き込むためのデータを一時記憶したり、選択されたメモリセルＭから読み出された読み出しデータを一時記憶したりするものである。
【０１０７】
なお、図２のメモリセルアレイ１２において、ビット線BLa_8j〜BLa_8j+7、カラム選択線CSLa_jの添え字ｊは０から５４８である。よって、ビット線BLa はBLa_0 からBLa_4391まであり、カラム信号CSLaはCSLa_0 からCSLa_548まである。なお、メモリセルアレイＢも同様な構成である。
【０１０８】
次に、図２のメモリセルアレイ１２の動作を簡単に説明する。
【０１０９】
（ａ）データの消去はブロック単位で行われ、選択されたブロックの全ワード線（例えばＷＬa_0 〜ＷＬa_3 ）は０Ｖ、非選択ブロックのワード線は全て20V にされる。この時、ウェルCWELLaは20V とされ、メモリセルの閾値は０Ｖ以下となってデータは"11"にリセットされる。
【０１１０】
（ｂ）データの書き込みはページ単位で行われる。ここでは、１つのメモリセルＭが４値記憶するものとすると、ロウアドレスデータAddX_0が"L" であるメモリセルＭが選択され、書き込みデータ"0" か"1" が記憶され、メモリセルのデータは"10"か"11"となる。
【０１１１】
ロウアドレスデータAddX_1〜AddX_12 が同じなら、同一のメモリセルＭが選択され、もともと"10"を記憶しているメモリセルに"0" を書くと"00"となる。もともと"10"を記憶しているメモリセルに"1" を書くと"10"となる。もともと"11"を記憶しているメモリセルに"0" を書くと"01"となる。もともと"11"を記憶しているメモリセルに"1" を書くと"11"となる。
【０１１２】
なお、書き込みの時は、選択ワード線が20V にされ、非選択ワード線は10V にされる。書き込みデータ"1" を書く時は、ビット線をＶCCにし、"0" を書く時はビット線を０Ｖにする。選択ゲート線SG1 はＶCC、選択ゲート線SG2 は０Ｖである。非選択ブロックのワード線、選択ゲート線はすべて０Ｖである。なお、書き込み動作と書き込みベリファイ動作を繰り返しながら書き込みを行うことにより、メモリセルの閾値の制御は良くなる。
【０１１３】
表１は、データとメモリセルＭの閾値の関係を示す。
【０１１４】
【表１】
0004074029.tif 000002
【０１１５】
（ｃ）データの読み出しは、ページ単位で行われ、全選択ゲート線を4V、選択ワード線を０Ｖあるいは０．９Ｖあるいは１．８Ｖ、非選択ワード線を４Ｖにする。非選択ブロックの全選択ゲート、全ワード線は０Ｖである。
【０１１６】
選択ワード線を０Ｖにしてセル電流が流れれば、ビット線電圧レベルが"L" となり"11"が読める。同様に、選択ワード線を０．９Ｖにして"10"を読み出すことができ、選択ワード線を１．８Ｖにして"01"と"00"を読み出すことができる。
【０１１７】
表２は、選択ブロックの各動作の電圧関係を示す。
【０１１８】
【表２】
0004074029.tif 000003
【０１１９】
ここで、ページとは、図２に示された同一行の４３９２個のメモリセルＭの集まりを示す物理的な単位であり、論理的な書き込み・読み出し単位は、４３９２ビットのメモリセクタである。この例では、物理的な１ページに論理的な２メモリセクタのデータが書き込まれる、あるいは物理的な１ページから論理的な２メモリセクタのデータが読み出される。つまり、ロウアドレスデータAddx_0〜AddX_12 とロウアドレスデータAddZで指定するのは、メモリセクタのアドレスである。よって、消去の物理的な単位はブロックであって、物理的な４ページで構成され、論理的な８メモリセクタで構成される。
【０１２０】
図３は、図１に示したような構成のフラッシュメモリが用いられているシステムの構成図である。
【０１２１】
フラッシュメモリ２０は、ＣＰＵ（中央演算装置）２１によって制御される。ＣＰＵ２１は、キャッシュメモリ２２やその他キーボード、ディスプレイなどの制御をする。フラッシュメモリ２０、ＣＰＵ２１、キャッシュメモリ２２には共通に電源電圧ＶCCが供給される。
【０１２２】
このシステムでは、システム全体を制御するためのプログラムがフラッシュメモリ２０に格納されている。このシステムの電源投入による電源電圧ＶCCの立ち上がり時に、フラッシュメモリ２０は自動的に所定の番地のデータを読み出す。ＣＰＵ２１は、電源立ち上がり時にフラッシュメモリ２０からデータを読み出すが、この読み出したデータにはフラッシュメモリ２０を制御するためのコードが入っている。
【０１２３】
ＣＰＵ２１は、上記コードをキャッシュメモリ２２に格納し、フラッシュメモリ２０を制御してシステム全体を制御するプログラムを読み出し、システムを制御する。フラッシュメモリ２０は自動的に誤り訂正をするので、ＣＰＵ２１はフラッシュメモリ２０からデータを読み出すだけでよい。もし、フラッシュメモリ２０が自動的に誤り訂正できないと、ＣＰＵ２１が誤り訂正するしかないが、フラッシュメモリ２０を制御するためのコードはフラッシュメモリ２０に格納されているので、このコードだけは誤り訂正できない。
【０１２４】
図４は、図１中の誤り訂正回路１１において、情報データ（外部入力である書き込みデータ）から検査データを発生する部分（検査データ発生回路）を示す。この回路は、主に、D0〜D19 、P で示した２１個のシフトレジスタ１８と９個の論理演算回路１９から構成される。
【０１２５】
図５(a) は、図４中のシフトレジスタ１８の１個分（D で示されている）を取り出して構成を示している。
【０１２６】
このシフトレジスタは、クロック信号Φとその反転信号ｎΦからなる相補的な信号で駆動され、クロック信号Φが"L" →"H" →"L" となる（クロック信号Φを1 サイクル回す）ことでラッチデータを出力し、また入力信号を取り込みラッチする。このクロック信号Φは、検査データ発生制御信号CGCLK や入力制御信号INCLK に同期した信号である。
【０１２７】
図５(b) は、図４中の論理演算回路１９の１個分の構成を示している。
【０１２８】
この論理演算回路は、２つの入力IN1 とIN2 を演算してOUT を出力する。
【０１２９】
図１中のD0端子〜D7端子から入力された書き込みデータは、データ入出力バッファ５で論理が反転させられて信号線DL_0〜DL_7に出力される。この各信号線DL_0〜DL_7に対応して図４の検査データ発生回路が図１中の誤り訂正回路に設けられている。
【０１３０】
クロック信号Φを1 サイクル回すとともに1 ビットの書き込みデータを図４の検査データ発生回路に取り込み、クロック信号Φの528 サイクル後にD0〜D19 で示したシフトレジスタ１８に２０ビットの検査データを発生させる。また、P で示したシフトレジスタ１８にはパリティデータが発生する。
【０１３１】
D0〜D19 で示したシフトレジスタ１８に発生した検査データは、スイッチSW3 をオンにしてクロック信号Φを1 サイクル回す度に各信号線DL_0〜DL_7に1 ビットづつ発生する。
【０１３２】
検査データを20ビット発生した後、スイッチSW5 をオンにしてクロック信号Φを1 サイクル回すと、各信号線DL_0〜DL_7にパリティデータが1 ビット発生する。よって、クロック信号Φを５４９サイクル回すことで、D0端子〜D7端子に入力された528 ビットのデータから20ビットの検査データと１ビットのパリティデータを発生する。このように発生した検査データとパリティデータは、信号線DL_0〜DL_7に出力され、図２に示したカラム制御回路１５中のデータ記憶回路１７に送られ、書き込みデータとともに選択されたメモリセクタに書き込まれる。
【０１３３】
全て“１”の書き込みデータ（信号線DL_0〜DL_7上では“０”の書き込みデータ）から発生させられる検査データとパリティデータは全て”１”である。よって、消去した状態は、全て”１”の書き込みデータと、それから発生した検査データとパリティデータを書き込んだ状態と等価である。
【０１３４】
上記検査データ発生回路では、２重誤り訂正ＢＣＨ(1023,1003) 符号に基づいて検査データを発生するものであり、いわゆる生成多項式G(x)は、
G(x) =x20+x12+x11+x6 +x5 +x4 +x2 +x+1
である。
【０１３５】
１つのメモリセルに2 ビットのデータが書き込まれるので、１つのメモリセルが破壊した場合に2 ビットかたまりの誤りが生じる可能性が高い。しかし、この実施例では、それぞれのビットデータはそれぞれの検査データによって独立に訂正されるので、ＢＣＨ符号のようなビット単位訂正方式で救済確率を落とすことがない。反対に、1 ビット単位で不良を起こすメモリデバイスでは、リード・ソロモン符号のようなバースト不良訂正方式は、誤り訂正回路が複雑になるので好ましくない。
【０１３６】
図６は、図１中の誤り訂正回路１１での検査データとパリティデータの発生のアルゴリズムを示している。
【０１３７】
まず、ステップS1で、コマンドインターフェイス３にデータ入力命令（コマンド）として例えば１６進コード"80H" が入力される。ステップS2で、アドレスバッファ４にアドレスデータが入力されて書き込みデータの入力が始まる。ステップS3で、データ入力開始カラムアドレスAddY_init_0 〜9 をカラムアドレス発生回路１６にある変数カラムアドレスレジスタAdd_col にセットし、この変数カラムアドレスレジスタAdd_col の内容にしたがってカラムアドレス信号CSL を発生する。
【０１３８】
ステップS4で、D0〜D19 、P で示したレジスタを"0" に、データ記憶回路１７の書き込みデータを"1" にリセットする。ステップS5で、スイッチSW1 をオンにし、スイッチSW3 とSW5 をオフにする。
【０１３９】
次に、ステップS6で、D0端子〜D7端子に入力された書き込みデータを取り込む。ステップS7で、変数カラムアドレスレジスタAdd_col の内容が516 であると判定されれば、ステップS9でスイッチSW2 とSW4 をオフにし、変数カラムアドレスレジスタAdd_col の内容が516 でないと判定されれば、ステップS8でスイッチSW2 とSW4 をオンにする。
【０１４０】
これによって、変数カラムアドレスレジスタAdd_col の内容が516 の時は、誤り訂正回路１１に書き込みデータ"1" が取り込まれることになる(DL_i のデータは反転データであるから）。つまり、カラムアドレス５１６のデータは誤り訂正から除外されることになる。
【０１４１】
このことによって次のような利点がある。つまり、５１６番地のデータを後から追加で書き込むことができ、フラッシュメモリ２０に記憶されているデータの管理上必要なフラグデータ（例えば不良セクタフラグなど）を後から追加で書き込むことができる。
【０１４２】
次に、ステップS10 で、書き込みデータを誤り訂正回路１１に取り込んで検査データとパリティデータの演算を行う。つまり、クロック信号Φを1 サイクル回す。この時、書き込みデータはカラムアドレス信号CSL が出力されてデータ記憶回路１７にも記憶される。そして、ステップS11 で、変数カラムアドレスレジスタAdd_col の内容を１づつ増加させて、カラムアドレスの順に書き込みデータを取り込む。ステップS12 で、書き込み命令である例えば１６進コード"10"H の入力が判定されるまで、ステップS6〜S12 の動作が繰り返される。
【０１４３】
上記したステップS6〜S12 は、ライト・イネーブル信号nWE に同期して行われる。入力制御信号発生回路１０でライト・イネーブル信号nWE に同期して入力制御信号INCLK が発生する。ライト・イネーブル信号nWE に同期して入力される書き込みデータは、誤り訂正回路１１で入力制御信号INCLK に同期して発生させられるクロック信号Φにしたがって誤り訂正回路１１に取り込まれ、同時に入力制御信号INCLK に同期して変数カラムアドレスレジスタAdd_col の内容にしたがって発生させられるカラムアドレス信号CSL の指示で選択されたデータ記憶回路１７に一時記憶される。
【０１４４】
前記ステップS12 で、前記書き込み命令である１６進コード"10"H の入力が判定されると、ステップS13 で変数カラムアドレスレジスタAdd_col の内容が527 より大きいか判定する。この判定の結果、もし、変数カラムアドレスレジスタAdd_col の内容≦527 なら、ステップS14 でスイッチSW2 とSW4 をオフにし、ステップS15 で仮想的に"1" 書き込みデータが入力されたとして検査データとパリティの演算を行い、ステップS16 で変数カラムアドレスレジスタAdd_col の内容を１増加させて、ステップS13 で再度変数カラムアドレスレジスタAdd_col の内容が５２７より大きいか判定する。
【０１４５】
この判定の結果、変数カラムアドレスレジスタAdd_col の内容≧528 であれば、さらに、ステップS17 で変数カラムアドレスレジスタAdd_colの内容=548 であるか否かが判定される。この判定の結果、もし、変数カラムアドレスレジスタAdd_colの内容=548 でなければ、ステップS18 で、スイッチSW1 とSW5 をオフ、スイッチSW3 とSW4 をオンにして、ステップS19 で検査データの出力とパリティ演算を行う。この時、変数カラムアドレスレジスタAdd_colの内容にしたがって検査データはデータ記憶回路１７に一時記憶される。そして、ステップS20 で、変数カラムアドレスレジスタAdd_colの内容を１つ増加させて、ステップS17 で再度変数カラムアドレスレジスタAdd_colの内容=548 か判断する。
【０１４６】
この判定の結果、変数カラムアドレスレジスタAdd_colの内容=548 となったら、ステップS21 でスイッチSW3 をオフ、スイッチSW5 をオンにして、ステップS22 でパリティデータを出力する。この時、変数カラムアドレスレジスタAdd_colの内容にしたがって検査データがデータ記憶回路１７に一時記憶される。この後、ステップS23 では、基本的にはデータ記憶回路１７に記憶されている書き込みデータと検査データとパリティデータをメモリセクタに一括して書き込む。
【０１４７】
なお、上記したようなステップS13 〜S22 は検査データ発生制御信号CGCLK に同期して行われる。書き込み命令信号PRO によって検査データ発生命令CHKGENが発生し、この検査データ発生命令CHKGENによって検査データ発生制御信号発生回路９で検査データ発生制御信号CGCLK が自動的に発生する。この検査データ発生制御信号CGCLK に同期して誤り訂正回路１１から発生する検査データとパリティデータは、同時に検査データ発生制御信号CGCLK に同期して変数カラムアドレスレジスタAdd_colの内容にしたがって発生させられるカラムアドレス信号CSL の指示で選択されたデータ記憶回路１７に一時記憶させられる。
【０１４８】
図７は、メモリセルアレイ１２の各アレイＡ、Ｂから１つづつメモリセクタを選択して同時に２つのセクタにデータを書き込む動作のタイミングの一例を示している。
【０１４９】
図８は、メモリセルアレイ１２の各アレイＡ、Ｂから１つづつメモリセクタを選択して１セクタだけデータを書き込む動作のタイミングの一例を示している。
【０１５０】
まず、図７の動作タイミングについて説明する。コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、倍速書き込み命令として例えば１６進コード"D0"H が入力される。続いて、コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、図６のステップS1で述べたようにデータ入力命令として１６進コード"80"H が入力される。
【０１５１】
続いて、アドレス・ラッチ・イネーブル信号ALE が"H" の期間に、図６のステップS2〜S5で述べたように３回のアドレスデータが取り込まれる。ここでは、メモリセルアレイ１２のセルアレイＡのアドレスが入力される。続いて、データ入力命令信号INPUT が"H" となり、図６のステップS6〜S12 で述べたように書き込みデータh0〜h527が入力される。ライト・イネーブル信号nWE に同期して書き込みデータｈが入力され、誤り訂正回路１１で入力制御信号INCLK に同期して発生させられるクロック信号Φにしたがって誤り訂正回路１１に取り込まれ、同時にINCLK に同期して変数カラムアドレスレジスタAdd_colの内容にしたがって発生させられるカラムアドレス信号CSL の指示で選択されたデータ記憶回路１７に一時記憶される。
【０１５２】
書き込み命令である１６進コード"10"H が入力されると、図６のステップS13 〜S22 で述べたように書き込み命令信号PRO が"H" となり、この書き込み命令信号PRO によって検査データ発生命令信号CHKGENも"H" となる。この検査データ発生命令信号CHKGENによって検査データ発生制御信号CGCLK が発生し、この検査データ発生制御信号CGCLK に同期して誤り訂正回路１１から発生する検査データとパリティデータは、同時にCGCLK に同期して変数カラムアドレスレジスタAdd_colの内容にしたがって発生させられるカラムアドレス信号CSL の指示で選択されたデータ記憶回路１７に一時記憶される。
【０１５３】
倍速書き込み命令である１６進コード"D0"H によって、実効的な書き込み（図６のステップS23 ）の書き込み動作は行われず、パリティデータがデータ記憶回路１７に記憶されると、書き込み命令信号PRO と検査データ発生命令信号CHKGENは"L" となって書き込み終了となる。書き込み命令信号PRO と検査データ発生命令信号CHKGENが"H" の期間は、nBUSY が"L" となって外部にビジー状態（内部処理中）であることを伝える。
【０１５４】
次に、図８の動作タイミングについて説明する。コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、図６のステップS1で述べたようにデータ入力命令である１６進コード"80"H が入力される。
【０１５５】
続いて、アドレス・ラッチ・イネーブル信号ALE が"H" の期間に、図６のステップS2〜S5で述べたように３回のアドレスデータが取り込まれる。ここでは、メモリセルアレイ１２のセルアレイＢのアドレスが入力される。
【０１５６】
続いて、データ入力命令信号INPUT が"H" となり、図６のステップS6〜S12 で述べたように書き込みデータh3〜h520が入力される。ライト・イネーブル信号nWE に同期して書き込みデータｈが入力され、誤り訂正回路１１でINCLK に同期して発生させられるクロック信号Φにしたがって誤り訂正回路１１に取り込まれ、同時に入力制御信号INCLK に同期して変数カラムアドレスレジスタAdd_colの内容にしたがって発生させられるカラムアドレス信号CSL の指示で選択されたデータ記憶回路１７に一時記憶させられる。
【０１５７】
書き込みデータh0〜h2は入力されないが、データ記憶回路１７の書き込みデータは"1" にリセットされており、また、誤り訂正回路１１では書き込みデータh0〜h2が"1" であるとすると、D0〜D19 で示したレジスタおよびP で示したレジスタの内容は、h2までの演算で変化しないので問題はない。つまり、実効的に書き込みデータh0〜h2を"1" としている。
【０１５８】
書き込み命令である１６進コード"10"H が入力されると、図６のステップS13 〜S22 で述べたように書き込み命令信号PRO が"H" となり、この書き込み命令信号PRO によって検査データ発生命令信号CHKGENも"H" となる。この検査データ発生命令信号CHKGENによって検査データ発生制御信号CGCLK が発生し、外部から入力されなかった書き込みデータh521〜h527の代わりにダミー書き込みデータ"1" を内部でCGCLK に同期して発生する。また、上記検査データ発生制御信号CGCLK に同期して誤り訂正回路１１から発生する検査データとパリティデータは、同時にCGCLK に同期して変数カラムアドレスレジスタAdd_col の内容にしたがって発生させられるカラムアドレス信号CSL の指示で選択されたデータ記憶回路１７に一時記憶させられる。
【０１５９】
パリティデータがデータ記憶回路１７に記憶されると、検査データ発生命令信号CHKGENは"L" となって書き込み動作になる。この例では、メモリセルアレイ１２のセルアレイＡとＢの選択された２つのメモリセクタに同時に書き込みが行われる。書き込み命令信号PRO が"H" の期間は、nBUSY が"L" となって外部にビジー状態（内部処理中）であることを伝える。
【０１６０】
図９は、誤り訂正回路１１を非活性化したときのデータ書き込み動作のタイミングの一例を示している。まず、コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、誤り訂正非活性化命令として例えば１６進コード"A0"H が入力される。続いて、コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、データ入力命令として１６進コード"80"H が入力される。
【０１６１】
続いて、アドレス・ラッチ・イネーブル信号ALE が"H" の期間に、３回のアドレスデータが取り込まれる。続いて、データ入力命令信号INPUT が"H" となり、書き込みデータh0〜h548が入力される。書き込み命令である１６進コード"10"H が入力されると、書き込み命令信号PRO が"H" となるが、検査データ発生命令信号CHKGENは"L" のままである。書き込み命令である１６進コード"10"の投入後、直ぐに書き込み動作になる。
【０１６２】
コマンドインターフェイス３は、誤り訂正回路１１を活性化するか非活性化するかスイッチするのである。図１中のECCENB端子に入力される誤り訂正回路活性化信号ECCENBを"L" とすると、コマンドインターフェイス３は誤り訂正回路１１を非活性化するようにスイッチされる。
【０１６３】
図１０は、誤り訂正回路活性化信号ECCENBを"L" とした時のデータ書き込み動作のタイミングの一例を示している。コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、データ入力命令として１６進コード"80"H が入力される。続いて、アドレス・ラッチ・イネーブル信号ALE が"H" の期間に、３回のアドレスデータが取り込まれる。続いて、データ入力命令信号INPUT が"H" となり、書き込みデータh0〜h548が入力される。書き込み命令である１６進コード"10"H が入力されると、書き込み命令信号PRO が"H" となるが、検査データ発生命令信号CHKGENは"L" のままである。書き込み命令である１６進コード"10"の投入後、直ぐに書き込み動作になる。
【０１６４】
なお、図８に示した動作タイミングでは、誤り訂正回路活性化信号ECCENBが"H" を示しており、図１０に示した動作タイミングと同様に、データ入力命令"80"→アドレス入力→データ入力→書き込み命令"10"の流れで自動的に検査データが発生される。誤り訂正回路活性化信号ECCENBが"L" を示していると、図１０に示した動作タイミングのように検査データは発生されない。
【０１６５】
図１１乃至図１７は、図１中の誤り訂正回路１１において、メモリセルから読み出されたデータから誤りの生じたデータを訂正・検出する部分を示している。
【０１６６】
即ち、図１１は、シンドロームS1、S3計算器の１個分を示しており、図１２は、シンドロームS3の変換器の１個分を示しており、図１３は、σ1(= S1×S1) 計算器の１個分を示しており、図１４は、σ2(= S1×S1×S1＋S3) 計算器の１個分を示しており、図１５は、σ1 →λ1 変換器の１個分を取り出して示しており、図１６は、σ2 →λ2 変換器の１個分を取り出して示しており、図１７は、誤り位置検出器の１個分を示している。
【０１６７】
これらの回路は、主に、D0〜D19 、P 、A0〜A9、B0〜B9、C0〜C9で示した５１個のシフトレジスタ１８と複数個の論理演算回路１９から構成されており、各信号線DL_0〜DL_7に対応してそれぞれ設けられている。
【０１６８】
これらの回路は、メモリセルから読み出されたデータに対して２重誤り訂正ＢＨＣ(1023,1003) 符号に基づいて誤り訂正するものであり、いわゆる２つの最小多項式M1とM3は、
M1(x) = x 10 + x 3 + 1
M3(x) = x 10 + x 3 +x 2 + x +1
である。
【０１６９】
また、誤り訂正回路１１の動作は、ａとｂとを”足して”ｃにすると、ａ，ｂ，ｃはそれぞれ“０”か“１”であり、全ての演算結果は、下記に示すような演算である。
【０１７０】
【表３】
0004074029.tif 000004
【０１７１】
なお、誤り位置検出の準備が整うまで、誤り訂正制御信号発生回路７で発生させられる誤り訂正制御信号ECCLK に同期して動作が行われる。
【０１７２】
図１１に示すシンドロームS1、S3計算器は、主に、D0〜D19 、P 、A0〜A9で示した３１個のシフトレジスタ１８と複数の論理演算回路１９から構成される。
【０１７３】
データ記憶回路１７へメモリセクタから読み出された読み出しデータは、IOバッファ６で論理が反転させられて信号線DL_0〜DL_7に出力される。
【０１７４】
D0〜D19 、P で示したレジスタは、計算前に全て“０”にリセットされる、つまり初期値が“０”にされる。クロック信号Φの548 サイクル後にD0〜D19 で示したシフトレジスタ１８に２０ビットのシンドロームS1とS3を発生させる。また、P で示したレジスタには、読み出しデータのパリティ計算結果が生じる。
【０１７５】
誤り訂正制御信号ECCLK に同期してカラムアドレス信号CSL が発生させられ、クロック信号Φの１サイクル目にカラムアドレス０番地の読み出しデータが取り込まれ、以下、順に2 サイクル目のにカラムアドレス１番地、．．．、５４８サイクル目にカラムアドレス５４７番地の読み出しデータが取り込まれる。
【０１７６】
カラムアドレス５１６番地のサイクルでは、スイッチSW4 とSW6 とSW7 がオフとなり、ダミーデータ“０”が取り込まれる。これは、検査データ発生時に５１６番地の書き込みデータをダミーデータ“０”として計算しているからである。
【０１７７】
シンドロームS1はA0〜A9で示したレジスタに記憶される。ここまでの計算で、D0〜D9で示したレジスタにシンドロームS1、D10 〜D19 で示したレジスタにシンドロームS3、A0〜A9で示したレジスタにシンドロームS1、P で示したレジスタに読み出しデータのパリティが記憶されている。
【０１７８】
なお、図１１に示したシンドロームS1、S3計算器で得られたシンドロームS3は、シンドロームS1と多項式表現の次数が異なっているので、図１２に示すシンドロームS3の変換器により整合させる。
【０１７９】
図１２に示すシンドロームS3の変換器は、主に、B0〜B9、C0〜C9で示した２０個のシフトレジスタ１８と複数の論理演算回路１９から構成されており、シンドロームS3をシンドロームS1に整合させるものである。
【０１８０】
まず、STEP１では、C で示したレジスタを全て“０”にリセットし、STEP2 の演算を10回繰り返した時、C で示したレジスタにS3の変換値が生じる。これを、D10 〜D19 で示したレジスタに記憶させる。
【０１８１】
ここまでの計算で、D0〜D9で示したレジスタにシンドロームS1、D10 〜D19 で示したレジスタにシンドロームS3、A0〜A9で示したレジスタにシンドロームS1、P で示したレジスタに読み出しデータのパリティが記憶されている。
【０１８２】
図１３に示すシンドロームS1×S1の計算器は、主に、B0〜B9、C0〜C9で示した２０個のシフトレジスタ１８と複数の論理演算回路１９から構成されており、シンドロームS1×S1を計算させるものである。
【０１８３】
まず、STEP１では、C で示したレジスタを全て“０”にリセットし、STEP2 の演算を10回繰り返した時、C で示したレジスタにS1×S1が生じる。これを、D0〜D9で示したレジスタに記憶させる。
【０１８４】
ここまでの計算で、D0〜D9で示したレジスタにS1×S1、D10 〜D19 で示したレジスタにシンドロームS3、A0〜A9で示したレジスタにシンドロームS1、P で示したレジスタに読み出しデータのパリティが記憶されている。
【０１８５】
図１４に示すシンドロームS1×S1×S1＋S3の計算器は、主に、B0〜B9、C0〜C9で示した２０個のシフトレジスタ１８と複数の論理演算回路１９から構成されており、シンドロームS1×S1×S1＋S3を計算させるものである。
【０１８６】
まず、STEP１では、C で示したレジスタを全て“０”にリセットし、STEP2 の演算を10回繰り返した時、C で示したレジスタにS1×S1×S1(=S1^3) が生じる。これを、それぞれD10 〜D19 で示したレジスタのデータに足し込み、記憶させる。
【０１８７】
ここまでの計算で、D0〜D9で示したレジスタにS1×S1(=σ1)、D10 〜D19 で示したレジスタにシンドロームS1^3+S3(= σ2)、A0〜A9で示したレジスタにシンドロームS1、P で示したレジスタに読み出しデータのパリティが記憶されている。
【０１８８】
なお、図１４に示したシンドロームS1×S1×S1＋S3の計算器で得られたσ1 のままでも誤り位置検出器を動作させることができるが、頭出しに時間がかかるので、頭出しを高速に行うために、図１５に示すσ1 →λ1 変換器によりσ1 をλ1 に変換する。
【０１８９】
図１５に示すσ1 →λ1 変換器は、主に、B0〜B9、C0〜C9で示した２０個のシフトレジスタ１８と複数の論理演算回路１９から構成されており、σ1 をλ1 に変換するものである。
【０１９０】
まず、STEP１では、C で示したレジスタを全て“０”にリセットし、STEP2 の演算を10回繰り返した時、C で示したレジスタにλ1 が生じる。これを、D0〜D9で示したレジスタに記憶させる。
【０１９１】
ここまでの計算で、D0〜D9で示したレジスタにλ1 、D10 〜D19 で示したレジスタにσ2 、A0〜A9で示したレジスタにシンドロームS1、P で示したレジスタに読み出しデータのパリティが記憶されている。
【０１９２】
なお、図１５に示したσ1 →λ1 変換器で得られたσ2 のままでも誤り位置検出器を動作させることができるが、頭出しに時間がかかるので、頭出しを高速に行うために、図１６に示すσ2 →λ2 変換器によりσ2 をλ2 に変換する。
【０１９３】
図１６に示すσ2 →λ2 変換器は、主に、B0〜B9、C0〜C9で示した２０個のシフトレジスタ１８と複数の論理演算回路１９から構成されており、σ2 をλ2 に変換するものである。
【０１９４】
まず、STEP１では、C で示したレジスタを全て“０”にリセットし、STEP2 の演算を10回繰り返した時、C で示したC レジスタにλ2 が生じる。これを、D10 〜D19 で示したレジスタに記憶させる。
【０１９５】
ここまでの計算で、D0〜D9で示したレジスタにλ1 、D10 〜D19 で示したレジスタにλ2 、A0〜A9で示したレジスタにシンドロームS1、P で示したレジスタに読み出しデータのパリティが記憶されている。
【０１９６】
図１７に示す誤り位置検出器は、主に、D0〜D19 、A0〜A9で示した３０個のシフトレジスタ１８と複数の論理演算回路１９から構成されている。
【０１９７】
この誤り位置検出器は、D0〜D9で示したレジスタに記憶されているλ1 とD10 〜D19 で示したレジスタに記憶されているλ2 とA0〜A9で示したレジスタに記憶されているシンドロームS1を用いて誤り位置を検出するものであり、出力制御信号発生回路８で発生させられる出力制御信号OUTCLKに同期して発生するクロック信号Φによって動作する。この場合、下記の条件式、
A0  ＝ D0 + D10
A1  ＝ D1 + D11
A2  ＝ D2 + D12
A3  ＝ D3 + D13
A4  ＝ D4 + D14
A5  ＝ D5 + D15
A6  ＝ D6 + D16
A7  ＝ D7 + D17
A8  ＝ D8 + D18
A9  ＝ D9 + D19
が成立する時に、データ記憶回路１７から各信号線DL_0〜DL_7を介してD0端子〜D7へ出力される読み出しデータを反転させて誤り訂正する。
【０１９８】
クロック信号Φの1 サイクル（誤り位置演算の1 サイクル）後に条件式が成立すれば、カラムアドレス０番地の読み出しデータが誤っている。詳しい例では、例えば、信号線DL_3の誤り位置検出回路がクロック信号Φの２００サイクル目（誤り位置演算の２００サイクル目）で条件式を満たすと、カラムアドレス１９９番地が誤っていることが検出される。
【０１９９】
図１８は、図１中の誤り訂正回路１１で読み出しデータから誤り位置検出・訂正を行うアルゴリズムの一例を示している。
【０２００】
まず、ステップS101で、メモリセクタと読み出し開始する先頭のカラムアドレスデータが入力される。次に、ステップS102で、メモリセクタからデータ記憶回路１７にデータが読み出される。次いで、ステップS103で、D0〜D19 で示したレジスタ、P で示したレジスタが"0" にリセットされる。次いで、ステップS104で、変数カラムアドレスレジスタAdd_col の内容を０にセットする。この変数カラムアドレスレジスタAdd_col はカラムアドレス発生回路１６にあり、この変数カラムアドレスレジスタAdd_col の内容にしたがってカラムアドレス信号CSL を発生する。
【０２０１】
次に、ステップS105で、カラムアドレスによって選択されたデータ記憶回路１７から読み出しデータを出力する。そして、ステップS106で、変数カラムアドレスレジスタAdd_col の内容が516 か否かを判定し、変数カラムアドレスレジスタAdd_col の内容が516 の場合には、ステップS108で、スイッチSW4 、SW6 、SW7 をオフにし、変数カラムアドレスレジスタAdd_col の内容が516 以外なら、ステップS107で、スイッチSW4 、SW6 、SW7 をオンにする。
【０２０２】
次いで、ステップS109で、誤り訂正制御信号ECCLK に同期して発生させられるクロック信号Φによってシンドロームとパリティの演算を行う。そして、ステップS110で、変数カラムアドレスレジスタAdd_col の内容＝547 か否かを判定し、547 以外ならステップS111に移り、変数カラムアドレスレジスタAdd_col の内容を１つ進めて前記ステップS105に戻る。このようにして、変数カラムアドレスレジスタAdd_col の内容＝547 になるまで１づつ増加させながら、シンドロームとパリティの演算を繰り返す。なお、上記ステップS105〜S111の動作は誤り訂正制御信号ECCLK に同期して行われる。
【０２０３】
そして、前記ステップS110で変数カラムアドレスレジスタAdd_col の内容＝547 と判定されたら、ステップS112で、シンドロームS1が０か否かを判定する。この判定の結果、もし、S1=0ならば、ステップS113でS3=0か否かを判定する。この判定の結果がS3=0ならば、誤りなしと判定して、ステップS114でステータスを”正常”にセットする。
【０２０４】
これに対して、前記ステップS112での判定の結果がS1=0であり、前記ステップS113での判定の結果がS3≠0 ならば、３ビット以上の誤りが生じたと判定して、ステップS115でステータスを”訂正不能”にセットする。
【０２０５】
これに対して、前記ステップS112での判定の結果がS1≠０ならば、ステップS116でS3=0か否かを判定する。この判定の結果がS3=0ならば、３ビット以上の誤りが生じたと判定して、ステップS122でステータスを”訂正不能”にセットする。また、ステップS116での判定の結果がS3≠0 ならば、ステップS117で、S3の変換、σ1 の計算、σ2 の計算、λ1 の計算、λ2 の計算を行う。
【０２０６】
次に、ステップS118でλ2 が０か否かを判定する。この判定の結果がλ2=0 ならば、1 ビット誤りが生じたと判定して、ステップS119でステータスに"1ビット誤り”をセットする。
【０２０７】
これに対して、前記ステップS118での判定の結果がλ2 ≠0 ならば、ステップS120で、書き込みデータから発生したパリティと読み出しデータから発生したパリティとが一致しているか否かを判定する。この判定の結果、パリティ一致なら、２ビット誤りが生じたと判定して、ステップS121でステータスに" ２ビット誤り”をセットする。また、前記ステップS120での判定の結果、パリティ不一致なら、３ビット以上の誤りが生じたと判定して、ステップS122でステータスに" 訂正不能”をセットする。そして、ステータスが確定したら、ステップS123で再び変数カラムアドレスレジスタAdd_col の内容を０にセットする。なお、上記ステップS112〜S123S105〜S111の動作は誤り訂正制御信号ECCLK に同期して行われる。
【０２０８】
次に、ステップS124で誤り位置演算を1 サイクル行い、ステップS125で変数カラムアドレスレジスタAdd_col の内容がデータ出力開始のカラムアドレスと一致するか否かを判定する。この判定の結果、一致しなければ、ステップS126に移り、変数カラムアドレスレジスタAdd_col の内容を１つ進めて前記ステップS124に戻る。このようにして、変数カラムアドレスレジスタAdd_col の内容がデータ出力開始のカラムアドレスと一致するなるまで１づつ増加させて、ステップS124〜S126を繰り返す。なお、上記ステップS124〜S126の動作は誤り訂正制御信号ECCLK に同期して発生するクロック信号Φに同期して行われる。
【０２０９】
前記ステップS125で変数カラムアドレスレジスタAdd_col の内容がデータ出力開始のカラムアドレスと一致したと判定されたら、ステップS127で、リード・イネーブル信号nRE に同期して発生するOUTCLKに同期して、誤り位置演算を行い、変数カラムアドレスレジスタAdd_col の内容にしたがってデータの外部への出力を行う。
【０２１０】
なお、誤り位置演算とデータ出力は、リード・イネーブル信号nRE によって外部から要求されただけ繰り返される。このように出力データを訂正するべきか否かを1 サイクル前に調べておくことで高速に出力ができる。むろん高速に出力することを考えなければ、出力と訂正すべきかを同一サイクルで処理してよい。
【０２１１】
図１９は、図１８に示したアルゴリズムにおけるデータ読み出し動作のタイミングの一例を示している。
【０２１２】
即ち、図１９において、まず、アドレス・ラッチ・イネーブル信号ALE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、メモリセクタの選択とデータ出力開始カラムアドレスの指定を行うアドレスデータad0 〜ad2 が入力される（図１８のステップS101) 。
【０２１３】
アドレスデータad2 を取り込むと、自動的に読み出し命令信号READが"H" となり、選択されたメモリセクタからデータ記憶回路１７へメモリセルのデータが読み出される（図１８のステップS102) 。また、この間に、D0〜D19 で示したレジスタ、P で示したレジスタが"0" にリセットされ（図１８のステップS103) 、変数カラムアドレスレジスタAdd_col の内容が０にセットされる（図１８のステップS104) 。
【０２１４】
変数カラムアドレスレジスタAdd_colはカラムアドレス発生回路１６にあり、この変数カラムアドレスレジスタAdd_col の内容にしたがってカラムアドレス信号CSL を発生する。
【０２１５】
データ記憶回路１７へのデータ読み出しが終了すると、データラッチ読み出し命令信号DLREADが"H" となり、これによって誤り訂正制御信号ECCLK が出力される。誤り訂正制御信号ECCLK に同期して、カラムアドレス０番地から５４７番地まで順に、カラムアドレスによって選択されたデータ記憶回路１７から読み出しデータが誤り訂正回路１１に出力され、シンドロームとパリティの計算が行われる（図１８のステップS105〜S111) 。
【０２１６】
続いて、計算命令信号CALCが"H" となり、再度誤り訂正制御信号ECCLK が出力される。誤り訂正制御信号ECCLK に同期して読み出しデータの誤り検出を行う（図１８のステップS112〜S122) 。
【０２１７】
CALCが"L" となると、データ出力命令信号OUTPUTが"H" となって、出力制御信号OUTCLKが出力され、外部への出力準備を行う（図１８のステップS123〜S126) 。図１９の例では、データ出力開始カラムアドレスが“１”番地であるので、誤り位置演算（図１８のステップS124) が２回行われる。
【０２１８】
この後、読み出し命令信号READが"L" となって、外部へ出力可能となる。この読み出し命令信号READが"H" の間、ビジー信号nBUSY を"L" にして、外部へ出力準備中であることを伝える。
【０２１９】
リード・イネーブル信号nRE が"H" から"L" に遷移するタイミングで、出力制御信号OUTCLKが"L" から"H" となりカラムアドレス信号CSL が出力され、読み出しデータD0〜D7に対応するD0端子〜D7端子から出力を開始する。同時に、次のカラムアドレスの出力データが誤りであるかを検出するため、誤り位置演算が行われる（図１８のステップS127）。
【０２２０】
コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、ステータス読み出し命令である１６進コード"70"H が入力されると、図１８のステップS114、S115、S119、S121、S122で述べたようにセットしたステータスを出力する。また、上記ステータス読み出し命令"70"H が入力されると、ステータス読み出し命令信号STATUSが"H" となる。このステータス読み出し命令信号STATUSを受けて、nCE="L" の時、リード・イネーブル信号nRE が"H" から"L" に遷移するタイミングでステータスの端子D0〜端子D7から出力を開始する。例えば端子D0〜端子D2からの出力を用いて、下記の表４のように出力する。
【０２２１】
【表４】
0004074029.tif 000005
【０２２２】
D0で示したレジスタのステータスデータは、誤り訂正も含めて読み出しに成功したかを意味している(0="PASS" / 1="FAIL") 。書き込み／消去後にステータス読み出しを行うと、成功していれば０、成功しなければ１を出す。
【０２２３】
D0で示したレジスタのステータスデータは、読み出し／書き込み／消去のステータスデータとして共通にされている。D1で示したレジスタとD2で示したは最大誤り数を示している。
【０２２４】
図１１〜１７の回路は、各信号線DL_0〜DL_7に対応して設けられており、同時に動作するので、それぞれから誤り数が得られる。ステータスとしては、最大の誤り数を出力する。
【０２２５】
図２０は、図１８に示したアルゴリズムにおける誤り訂正をせずに読み出しデータを出力する動作のタイミングの一例を示している。
【０２２６】
ここの例では、検査データとパリティデータも出力する。これによって、誤り訂正回路１１の動作を外部でチェックすることができる。
【０２２７】
即ち、図２０において、まず、コマンド・ラッチ・イネーブル信号CLE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、誤り訂正非活性化命令である１６進コード"B0"H が入力される。なお、この誤り訂正非活性化命令は、書き込み時の誤り訂正非活性化命令"A0"H と同じコマンドを用いてもよい。
【０２２８】
図２０に示した動作のタイミングは、図１９に示した動作のタイミングとほぼ同じである。違いは、（１）"B0"H コマンドを投入すること、（２）誤りデータを検出しても訂正しないで出力すること、（３）検査データとパリティデータも出力することである。
【０２２９】
図２１は、図１中のECCENB端子に入力される誤り訂正回路活性化信号ECCENBを"L" とした時のデータ読み出し動作のタイミングの一例を示している。
【０２３０】
誤り訂正回路活性化信号ECCENBを"L" とすると、図１中のコマンドインターフェイス３で誤り訂正回路１１を非活性化するようにスイッチされる。
【０２３１】
即ち、図２１において、アドレス・ラッチ・イネーブル信号ALE が"H" の期間内のライト・イネーブル信号nWE の立ち上がりで、メモリセクタの選択とデータ出力開始カラムアドレスの指定を行うアドレスデータad0 〜ad2 が入力される。
【０２３２】
アドレスデータad2 を取り込むと、自動的に読み出し命令信号READが"H" となり、選択されたメモリセクタからデータ記憶回路１７へメモリセルのデータが読み出される。この後、読み出し命令信号READが"L" となって、外部へ出力可能となる。また、データ出力命令信号OUTPUTが"H" となって、出力制御信号OUTCLKが出力可能となる。読み出し命令信号READが"H" の間、ビジー信号nBUSY を"L" にして、外部へ出力準備中であることを伝える。
【０２３３】
リード・イネーブル信号nRE が"H" から"L" に遷移するタイミングで、出力制御信号OUTCLKが"L" から"H" となりカラムアドレス信号CSL が出力され、読み出しデータD0〜D7がD0端子〜D7端子から出力を開始する。
【０２３４】
図２２は、図３に示したシステムにおいて電源立ち上がり時に自動的に所定番地のメモリセクタの読み出しを行う動作のタイミングの一例を示している。
【０２３５】
即ち、図２２において、電源電圧ＶCCが０Ｖから立ち上がり、所定の電圧値に達したらパワーオン検出回路２がパワーオン検出信号PON を"H" にする。コマンドインターフェイス３は、上記パワーオン検出信号PON の"L" から"H" への遷移を受けて、自動的に読み出し命令信号READを"H" にして、読み出しを開始する。アドレスバッファ４も、前記パワーオン検出信号PON の"L" から"H" への遷移を受けて、自動的にアドレスデータを所定の値にセットする。この例では、データ出力開始カラムアドレスが”０”番地にセットされている。
【０２３６】
図２２に示した動作のタイミングは、図１９に示した動作のタイミングとほぼ同じであり、違いはパワーオン検出信号PON によって起動されることである。
【０２３７】
＜第２の実施の形態＞
第２の実施の形態は、前記第１の実施の形態と読み出し動作だけが異なる。
【０２３８】
第２の実施の形態に係る誤り訂正回路を搭載したフラッシュメモリの回路構成は、図１に示した回路構成とほぼ同様であって、さらに外部からの誤り訂正命令を受けてコマンドインターフェイス３から誤り訂正読み出し命令信号ECREADが出力される点が異なる。
【０２３９】
図２３は、第２の実施の形態において図１中の誤り訂正回路１１で読み出しデータから誤り位置検出・訂正を行うアルゴリズムの一例を示しており、図１８を参照して前述した第１の実施の形態において図１中の誤り訂正回路１１で読み出しデータから誤り位置検出・訂正を行うアルゴリズムとは異なる。
【０２４０】
即ち、まず、ステップS201で、メモリセクタと読み出し開始する先頭のカラムアドレスデータが入力される。次に、ステップS202で、メモリセクタからデータ記憶回路１７にデータが読み出される。次いで、ステップS203で、D0〜D19 で示したレジスタ、P で示したレジスタが"0" にリセットされる。次いで、ステップS204で、変数カラムアドレスレジスタAdd_col の内容を０にセットする。この変数カラムアドレスレジスタAdd_col はカラムアドレス発生回路１６にあり、この内容にしたがってカラムアドレス信号CSL を発生する。
【０２４１】
次に、ステップS205で、カラムアドレスによって選択されたデータ記憶回路１７から読み出しデータを外部へ出力する。そして、ステップS206で、変数カラムアドレスレジスタAdd_col の内容が516 か否かを判定し、516 の場合には、ステップS208で、スイッチSW4 、SW6 、SW7 をオフにし、516 以外なら、ステップS207で、スイッチSW4 、SW6 、SW7 をオンにする。
【０２４２】
次いで、ステップS209で、外部からのリード・イネーブル信号nRE に同期した出力制御信号OUTCLKに同期して発生させられるクロック信号Φによってシンドロームとパリティの演算を行う。そして、ステップS210で、変数カラムアドレスレジスタAdd_col の内容を１つ進めて前記ステップS205に戻る。このようにして、変数カラムアドレスレジスタAdd_col の内容＝527 になるまで１づつ増加させながら、シンドロームとパリティの演算を繰り返す。なお、上記ステップS205〜S210の動作は出力制御信号OUTCLKに同期して行われる。
【０２４３】
次に、ステップS211で、コマンドインターフェイス３に訂正読み出し命令として例えば１６進コード"20"H が入力されると、訂正読み出し命令信号ECREADによって誤り訂正動作になる。そして、ステップS212で、スイッチSW4 、SW6 、SW7 をオンにする。さらに、ステップS213で、誤り訂正制御信号ECCLK に同期して発生させられるクロック信号Φによってシンドロームとパリティの演算を行う。
【０２４４】
そして、ステップS214で、変数カラムアドレスレジスタAdd_col の内容547 か否かを判定し、547 以外ならステップS215に移り、１つ進めて前記ステップS213に戻る。このようにして、変数カラムアドレスレジスタAdd_col の内容＝547 になるまでを１づつ増加させながら、シンドロームとパリティの演算を繰り返す。なお、上記ステップS213〜S215の動作は誤り訂正制御信号ECCLK に同期して行われる。
【０２４５】
そして、前記ステップS214で変数カラムアドレスレジスタAdd_col の内容＝547 と判定されたら、ステップS216で、シンドロームS1が０か否かを判定する。この判定の結果、もし、S1=0ならば、ステップS217でS3=0か否かを判定する。この判定の結果がS3=0ならば、誤りなしと判定して、ステップS218でステータスを”正常”にセットする。
【０２４６】
これに対して、前記ステップS216での判定の結果がS1=0であり、前記ステップS217での判定の結果がS3≠0 ならば、３ビット以上の誤りが生じたと判定して、ステップS219でステータスを”訂正不能”にセットする。
【０２４７】
これに対して、前記ステップS216での判定の結果がS1≠０ならば、ステップS220でS3=0か否かを判定する。この判定の結果がS3=0ならば、３ビット以上の誤りが生じたと判定して、ステップS226でステータスを”訂正不能”にセットする。また、前記ステップS220での判定の結果がS3≠0 ならば、ステップS221で、S3の変換、σ1 の計算、σ2 の計算、λ1 の計算、λ2 の計算を行う。
【０２４８】
次に、ステップS222で、λ2 が０か否かを判定する。この判定の結果がλ2=0 ならば、1 ビット誤りが生じたと判定して、ステップS223でステータスに"1ビット誤り”をセットする。
【０２４９】
これに対して、前記ステップS222での判定の結果がλ2 ≠0 ならば、ステップS224で、書き込みデータから発生したパリティと読み出しデータから発生したパリティとが一致しているか否かを判定する。この判定の結果がパリティ一致なら、２ビット誤りが生じたと判定して、ステップS225でステータスに" ２ビット誤り”をセットする。
【０２５０】
これに対して、前記ステップS224での判定の結果がパリティ不一致なら、３ビット以上の誤りが生じたと判定して、ステップS226でステータスに" 訂正不能”をセットする。ステータスが確定したら、ステップS227で変数カラムアドレスレジスタAdd_col の内容を再び０にセットし、ステップS228で誤り位置演算を1 サイクル行う。なお、上記ステップS216〜S228の動作は誤り訂正制御信号ECCLK に同期して行われる。
【０２５１】
次に、ステップS229で、コマンド・ラッチ・イネーブル信号CLE が"H" でライト・イネーブル信号nWE の立ち上がりでステータス読み出し命令として１６進コード"70"H が入力されると、前記ステップS218、S219、S223、S225、S226でそれぞれセットしたステータスをステップS230で出力する。
【０２５２】
即ち、ステータス読み出し命令"70"H が入力されると、ステータス読み出し命令信号STATUSが"H" となる。ステータス読み出し命令信号STATUSを受けてチップ・イネーブル信号nCE="L" の時にリード・イネーブル信号nRE が"H" から"L" に遷移するタイミングで、前記ステップS230で、例えば表４に示したようにD0端子〜D2端子からステータスを出力する。
【０２５３】
通常は、誤りが無いのでステータスとして”正常”が出力されて、読み出し終了である。もし、1bit誤りあるいは2bit誤りがステータスとして出力されると、再度読み出しデータを出力する。この時、訂正して出力される。もし、”訂正不能”のステータスが出力されると、読み出し終了となり、訂正不能となったメモリセクタは破壊されたものとＣＰＵ２１が認識する。
【０２５４】
図２４は、図２３に示したアルゴリズムにおけるデータ読み出し動作のタイミングの一例を示している。
【０２５５】
アドレス・ラッチ・イネーブル信号ALE が"H" の期間にライト・イネーブル信号nWE の立ち上がりでメモリセクタの選択とデータ出力開始カラムアドレスの指定を行うアドレスデータad0 〜ad2 が入力される（図２３のステップS201) 。
【０２５６】
アドレスデータad2 を取り込むと、自動的に読み出し命令信号READが"H" となり、選択されたメモリセクタからデータ記憶回路１７へメモリセルのデータが読み出される（図２３のステップS202) 。また、この間に、D0〜D19 で示したレジスタ、P で示したレジスタが"0" にリセットされ（図２３のステップS203) 、変数カラムアドレスレジスタAdd_col の内容が０にセットされる（図２３のステップS204) 。変数カラムアドレスレジスタAdd_colはカラムアドレス発生回路１６にあり、この変数カラムアドレスレジスタAdd_col の内容にしたがってカラムアドレス信号CSL を発生する。読み出し命令信号READが"H" の間、ビジー信号nBUSY を"L" にして、外部へ出力準備中であることを伝える。
【０２５７】
データ記憶回路１７へのデータ読み出しが終了すると、データ出力命令信号OUTPUTが"H" となり、これによってリード・イネーブル信号nRE に同期して出力制御信号OUTCLK出力される。出力制御信号OUTCLKに同期して、カラムアドレス０番地から５２７番地まで順に、カラムアドレスによって選択されたデータ記憶回路１７から読み出しデータが誤り訂正回路１１に出力され、シンドロームとパリティの計算が行われる（図２３のステップS205〜S210) 。
【０２５８】
訂正読み出し命令"20"H が入力されると（図２３のステップS211) 、誤り訂正読み出し命令信号ECREADが"H" となり、これを受けてデータラッチ読み出し命令信号DLREADが"H" となり、これによって誤り訂正制御信号ECCLK が出力される。誤り訂正制御信号ECCLK に同期して、カラムアドレス５２８番地から５４７番地まで順に、カラムアドレスによって選択されたデータ記憶回路１７から読み出しデータが誤り訂正回路１１に出力され、シンドロームとパリティの計算が行われる（図２３のステップS212〜S215) 。
【０２５９】
続いて、計算命令信号CALCが"H" となり、誤り訂正制御信号ECCLK が再度出力される。誤り訂正制御信号ECCLK に同期して読み出しデータの誤り検出を行う（図２３のステップS216〜S226) 。
【０２６０】
計算命令信号CALCが"L" となると、データ出力命令信号OUTPUTが"H" となって、出力制御信号OUTCLKが出力され、外部への出力準備を行う（図２３のステップS227、S228) 。誤り訂正読み出し命令信号ECREADが"L" となって訂正読み出し動作は終了する。誤り訂正読み出し命令信号ECREADが"H" の間、ビジー信号nBUSY を"L" にして、外部へ出力準備中であることを伝える。
【０２６１】
コマンド・ラッチ・イネーブル信号CLE が"H" の期間にライト・イネーブル信号nWE の立ち上がりでステータス読み出し命令"70"H が入力されると（図２３のステップS229) 、図２３のステップS218、S219、S223、S225、S226でセットしたステータスを図２３のステップS230で出力する。この場合、ステータス読み出し命令"70"H が入力されると、ステータス読み出し命令信号STATUSが"H" となる。ステータス読み出し命令信号STATUSを受けてnCE="L" の時にnRE が"H" から"L" に遷移するタイミングで、例えば表４に示したようにD0端子〜D2端子からステータスを出力する。
【０２６２】
もし、1bit誤りあるいは2bit誤りのステータスであれば、リード・イネーブル信号nRE が"H" から"L" に遷移するタイミングで、出力制御信号OUTCLKが"L" から"H" となり、カラムアドレス信号CSL が出力され、D0端子〜D7端子から読み出しデータの出力を開始する。同時に、次のカラムアドレスの出力データが誤りであるか否かを検出するため、誤り位置演算が行われる。このように、出力データを訂正するべきか否かを、1 サイクル前に調べておくことにより高速に出力することができる。むろん高速に出力することを考えなければ、出力と訂正すべきか否かの検出を同一サイクルで処理して良い。
【０２６３】
上記第２の実施の形態においても、前記第１の実施の形態で述べたように、誤り訂正回路を活性化したり非活性化したりすることが容易に可能である。また、検査データやパリティデータの出力も容易に可能である。
【０２６４】
図２５は、第１の実施の形態および第２の実施の形態に係るフラッシュメモリにおけるデータ消去動作のタイミングの一例を示している。
【０２６５】
ここでは、メモリセルアレイ１２の各アレイＡ、Ｂから１つづつメモリブロックを選択して同時に２つのブロックを消去する場合を示している。
【０２６６】
コマンド・ラッチ・イネーブル信号CLE が"H" の期間にライト・イネーブル信号nWE の立ち上がりで消去アドレス入力命令として１６進コード"60"H が入力される。続いてアドレス・ラッチ・イネーブル信号ALE が"H" の期間に２回のアドレスデータが取り込まれる。再度、コマンド・ラッチ・イネーブル信号CLE が"H" の期間にライト・イネーブル信号nWE の立ち上がりで消去アドレス入力命令"60"H が入力され、続いてアドレス・ラッチ・イネーブル信号ALE が"H" の期間に２回のアドレスデータが取り込まれる。なお、1 ブロックだけ消去する場合は、2 回目の消去アドレス入力命令"60"H の入力とアドレスの入力は行わない。
【０２６７】
コマンド・ラッチ・イネーブル信号CLE が"H" の期間にライト・イネーブル信号nWE の立ち上がりで消去命令として１６進コード"90"H が入力され、消去命令信号ERASE が"H" となり、選択されたブロックが消去される。消去命令信号ERASE が"H" の間、ビジー信号nBUSY が"L" となって内部処理中であることを外部へ伝える。
【０２６８】
以上の説明の中で、検査データとパリティデータを分かり易くするために別々に扱ってきたが、パリティデータも誤りの程度を検査するための検査データの１つである。
【０２６９】
前記した実施の態様から理解できるように、本発明は、以下に述べるような特徴を有するフラッシュメモリをそれぞれ提供するものである。
【０２７０】
即ち、本発明に係る第１のフラッシュメモリは、複数のフラッシュメモリセルM から構成されるメモリセクタと、外部からの書き込みデータ入力命令"80"を受けて書き込みデータ入力命令信号INPUT を発生し、外部からの書き込み命令"10"H を受けて書き込み命令信号PRO を発生するコマンドインターフェイス3 と、外部から入力される第１の信号nWE を受け取る第１の信号バッファ10と、前記書き込み命令信号PRO によって活性化され、制御信号CGCLK を発生する制御信号発生回路9 と、前記書き込みデータ入力命令信号INPUT によって活性化され、外部から入力される書き込みデータを前記第１の信号nWE に同期して受け取るデータ入力バッファ5 と、前記書き込みデータ入力命令信号INPUT によって活性化され、前記第１の信号nWE に同期して前記書き込みデータを受け取り、前記書き込み命令PRO によって活性化され、前記制御信号CGCLK に同期して誤り訂正のための検査データを発生する誤り訂正回路11と、外部から入力されるアドレスデータを受け取るアドレスバッファ4 と、前記書き込みデータ入力命令信号INPUT によって活性化され、前記第１の信号nWE に同期して前記アドレスデータに基づいて予め決められた順にアドレス信号CSL を発生し、前記書き込み命令信号PRO によって活性化され、前記制御信号CSL に同期して予め決められた順にアドレス信号を発生するアドレス信号発生回路16と、各々が各々のメモリセルM に対して設けられ、各々は割り付けられたアドレス信号CSL を受けて前記書き込みデータあるいは検査データを取り込み一時記憶する複数のデータ記憶回路17と、前記書き込み命令PRO によって活性化され、前記複数のデータ記憶回路17に一時記憶されている書き込みデータと検査データを前記メモリセクタに書き込む手段(13,14,15)とを備えたことを特徴とする。
【０２７１】
さらに、望ましい実施態様として、前記書き込み命令信号PRO にしたがってビジー信号nBUSY を外部へ出力するビジー信号出力回路３を備えている。
【０２７２】
上記第１のフラッシュメモリによれば、書き込み回路への情報データの入力は、外部から制御される信号nWE に同期して行わせるが、誤り訂正回路は２つの期間において２つの制御信号に同期させて動作させる、つまり、１つめの期間は外部制御信号nWE に同期させ、２つめの期間においては自動的に内部制御信号CGCLK を発生させ、これに同期させる。
【０２７３】
これにより、外部制御信号が入力されない期間でも、誤り訂正のために検査データを内部誤り訂正回路で発生させる、検査データを書き込み回路へ入力させるなどの処理は、フラッシュメモリの内部で自動的に処理できる。したがって、従来の誤り訂正回路を搭載しないフラッシュメモリと互換性のあるフラッシュメモリを提供することができる。
【０２７４】
また、本発明に係る第２のフラッシュメモリは、複数のフラッシュメモリセルM から構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイ１２と、制御信号ECCLK を発生する制御信号発生回路７と、外部から入力される第１の信号nRE を受け取る第１の信号バッファ８と、外部から入力されるアドレスデータを受け取るアドレスバッファ４と、前記制御信号ECCLK に同期して予め決められた順にアドレス信号CSLを発生し、前記第１の信号nRE に同期して前記アドレスデータに基づいてあらかじめ決められた順にアドレス信号CSL を発生するアドレス信号発生回路１６と、前記アドレスデータに基づいて前記メモリセルアレイ１２中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルｍからデータを読み出す読み出し手段（１３，１４，１５）と、各々が各々のメモリセルＭに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルＭから読み出されたデータを一時記憶し、各々は割り付けられたアドレス信号CSLを受けて一時記憶しているメモリセルＭから読み出されたデータを出力する複数のデータ記憶回路１７と、前記第１の信号nRE に同期して、前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出されたデータを外部へ出力するデータ出力バッファ５と、前記制御信号ECCLKに同期して前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出したデータを受け取り、前記データ出力バッファ５から出力されるデータが誤りであるか否かを前記第１の信号nRE に同期して判断して訂正する誤り訂正回路１１とを備えたことを特徴とする。
【０２７５】
さらに、望ましい実施態様として、
（１）外部からのステータス読み出し命令"70"H を受けステータス読み出し命令信号STATUSを発生するコマンドインターフェイス３と、前記ステータス読み出し命令信号STATUSによって活性化されメモリセルＭから読み出されたデータに誤りがあったか否かを前記データ出力バッファ５を介して出力するステータス出力手段（５，１１）とを備える。
【０２７６】
（２）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段（５，１１）は誤りの数を出力可能である。
【０２７７】
（３）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で、（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段（５，１１）は誤り訂正可能か否かを出力可能である。
【０２７８】
（４）前記メモリセルＭからのデータの読み出しおよびメモリセルＭから読み出されたデータを前記誤り訂正回路１１が受け取る期間にわたって連続してビジー信号nBUSY を外部へ出力するビジー信号出力回路３を備える。
【０２７９】
上記第２のフラッシュメモリによれば、読み出し回路からの情報データの出力は、外部から制御される信号nRE に同期して行わせるが、誤り訂正回路は、２つの期間において２つの制御信号に同期させて動作させる、つまり、１つめの期間は外部制御信号nRE に同期させ、２つめの期間においては自動的に内部制御信号ECCLK を発生させ、これに同期させる。
【０２８０】
これにより、外部制御信号が入力されない期間でも、誤り訂正のために検査データを内部誤り訂正回路で発生させる、誤り訂正のための読み出し回路から読み出しデータ（情報データと検査データ）を誤り訂正回路へ読み出すなどの処理は、フラッシュメモリの内部で自動的に処理できる。したがって、従来の誤り訂正回路を搭載しないフラッシュメモリと互換性のあるフラッシュメモリを提供することができる。
【０２８１】
また、本発明に係る第３のフラッシュメモリは、複数のフラッシュメモリセルＭから構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイ１２と、外部からの訂正読み出し命令"20"H を受け訂正読み出し命令信号ECREADを発生するコマンドインターフェイス３と、前記訂正読み出し命令信号ECREADによって活性化され、制御信号ECCLK を発生する制御信号発生回路７と、外部から入力される第１の信号nRE を受け取る第１の信号バッファ８と、外部から入力されるアドレスデータを受け取るアドレスバッファ４と、前記第１の信号nRE に同期して前記アドレスデータに基づいて予め決められた順にアドレス信号CSLを発生し、前記訂正読み出し命令信号ECREADによって活性化され、前記制御信号ECCLKに同期して予め決められた順にアドレス信号CSLを発生するアドレス信号発生回路１６と、前記アドレスデータに基づいて前記メモリセルアレイ１２中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルＭからデータを読み出す読み出し手段（１３，１４，１５）と、各々が各々のメモリセルＭに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルＭから読み出されたデータを一時記憶し、各々は割り付けられたアドレス信号CSLを受けて一時記憶しているメモリセルＭから読み出されたデータを出力する複数のデータ記憶回路１７と、前記第１の信号nREに同期して、前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出されたデータを外部へ出力するデータ出力バッファ５と、前記第１の信号nREに同期して前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出したデータを受け取り、前記制御信号ECCLKに同期して前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出したデータを受け取り、メモリセルＭから読み出したデータに誤りがあるか否かを判断し、誤りがある場合はそのデータを特定する誤り訂正回路１１とを備えたことを特徴とする。
【０２８２】
さらに、望ましい実施態様として、
（１）前記コマンドインターフェイス３は、外部からのステータス読み出し命令"70"を受けステータス読み出し命令信号STATUSを発生し、さらに、前記ステータス読み出し命令信号STATUSによって活性化されメモリセルＭから読み出されたデータに誤りがあったか否かを前記データ出力バッファ５を介して出力するステータス出力手段（５，１１）とを備える。
【０２８３】
（２）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段（５，１１）は誤りの数を出力可能である。
【０２８４】
（３）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段（５，１１）は誤り訂正可能か否かを出力可能である。
【０２８５】
（４）前記メモリセルＭからのデータの読み出し期間にビジー信号nBUSY を外部へ出力し、かつ、前記訂正読み出し命令信号ECREADにしたがってビジー信号nBUSY を外部へ出力するビジー信号出力回路３を備える。
【０２８６】
上記第３のフラッシュメモリによれば、２つの期間において２つの制御信号に同期させて誤り訂正回路を動作させる、つまり、１つめの期間は外部制御信号nRE に同期させ、２つ目の期間においては自動的に内部制御信号ECCLK を発生させ、これに同期させる。これにより、外部制御信号が入力されない期間でも、誤り訂正のために検査データを内部誤り訂正回路で発生させ、誤りがある場合はそのデータを特定するなどの処理は、フラッシュメモリの内部で自動的に処理できる。したがって、従来の誤り訂正回路を搭載しないフラッシュメモリと互換性のあるフラッシュメモリを提供することができる。
【０２８７】
また、本発明に係る第４のフラッシュメモリは、複数のフラッシュメモリセルＭから構成されるメモリセクタと、外部からの書き込みデータ入力命令"80"H を受けて書き込みデータ入力命令信号INPUTを発生し、外部からの書き込み命令"10"H を受けて書き込み命令信号PRO を発生するコマンドインターフェイス３と、外部から入力される第１の信号nWE を受け取る第１の信号バッファ１０と、前記書き込み命令信号PROによって活性化され、制御信号CGCLKを発生する制御信号発生回路９と、前記書き込みデータ入力命令信号INPUTによって活性化され、外部から入力される書き込みデータを前記第１の信号nWEに同期して受け取るデータ入力バッファ５と、前記書き込みデータ入力命令信号INPUTによって活性化され、前記第１の信号nWEに同期して前記書き込みデータを受け取り、前記書き込み命令PROによって活性化され、前記制御信号CGCLKに同期して誤り訂正のための検査データを発生する誤り訂正回路１１と、各々が各々のメモリセルＭに対して設けられ、前記第１の信号nWEおよび前記制御信号CGCLKに同期して前記書き込みデータあるいは検査データを取り込み一時記憶する複数のデータ記憶回路１７と、前記書き込み命令PROによって活性化され、前記複数のデータ記憶回路１７に一時記憶されている書き込みデータと検査データを前記メモリセクタに書き込む手段（１３，１４，１５）とを備えることを特徴とする。
【０２８８】
さらに、望ましい実施態様として、前記書き込み命令信号PROにしたがってビジー信号nBUSYを外部へ出力するビジー信号出力回路３を備える。
【０２８９】
上記第４のフラッシュメモリによれば、前記第１のフラッシュメモリと比べて、データ記憶回路１７に書き込みデータあるいは検査データを取り込み一時記憶する際に、割り付けられたアドレス信号ではなく、外部制御信号nWEおよび内部制御信号CGCLKに同期して取り込む点が異なるが、前述した第１のフラッシュメモリと基本的に同様の効果が得られる。
【０２９０】
また、本発明に係る第５のフラッシュメモリは、複数のフラッシュメモリセルＭから構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイ１２と、制御信号ECCLKを発生する制御信号発生回路７と、外部から入力される第１の信号nREを受け取る第１の信号バッファ８と、外部から入力されるアドレスデータを受け取るアドレスバッファ４と、前記アドレスデータに基づいて前記メモリセルアレイ１２中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルＭからデータを読み出す読み出し手段（１３，１４，１５）と、各々が各々のメモリセルＭに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルＭから読み出されたデータを一時記憶し、前記制御信号ECCLKおよび前記第１の信号nREに同期して一時記憶しているメモリセルＭから読み出されたデータを出力する複数のデータ記憶回路１７と、前記第１の信号nREに同期して、前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出されたデータを外部へ出力するデータ出力バッファ５と、前記制御信号ECCLKに同期して前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出したデータを受け取り、前記データ出力バッファ５から出力されるデータが誤りであるか否かを前記第１の信号nREに同期して判断して訂正する誤り訂正回路１１とを備えることを特徴とする。
【０２９１】
さらに、望ましい実施態様として、
（１）外部からのステータス読み出し命令"70"を受けステータス読み出し命令信号STATUSを発生するコマンドインターフェイス３と、前記ステータス読み出し命令信号STATUSによって活性化されメモリセルＭから読み出されたデータに誤りがあったか否かを前記データ出力バッファ５を介して出力するステータス出力手段（５，１１）とを備える。
【０２９２】
（２）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段（５，１１）は誤りの数を出力可能である。
【０２９３】
（３）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段（５，１１）は誤り訂正可能か否かを出力可能である。
【０２９４】
（４）メモリセルＭからのデータの読み出しおよびメモリセルＭから読み出されたデータを前記誤り訂正回路１１が受け取る期間にわたって連続してビジー信号nBUSYを外部へ出力するビジー信号出力回路３を備える。
【０２９５】
上記第５のフラッシュメモリによれば、前記第２のフラッシュメモリと比べて、データ記憶回路１７からデータを出力する際に、割り付けられたアドレス信号ではなく、内部制御信号ECCLKおよび外部制御信号nREに同期させる点が異なるが、前述した第２のフラッシュメモリと基本的に同様の効果が得られる。
【０２９６】
また、本発明に係る第６のフラッシュメモリは、複数のフラッシュメモリセルＭから構成されるメモリセクタと、複数の前記メモリセクタから構成されるメモリセルアレイ１２と、外部からの訂正読み出し命令"20"H を受け訂正読み出し命令信号ECREADを発生するコマンドインターフェイス３と、前記訂正読み出し命令信号ECREADによって活性化されて制御信号ECCLKを発生する制御信号発生回路７と、外部から入力される第１の信号nREを受け取る第１の信号バッファ８と、外部から入力されるアドレスデータを受け取るアドレスバッファ４と、前記アドレスデータに基づいて前記メモリセルアレイ１２中のメモリセクタを選択し、選択されたメモリセクタの各々のメモリセルＭからデータを読み出す読み出し手段（１３，１４，１５）と、各々が各々のメモリセルＭに対して設けられ、各々は選択されたメモリセクタの対応するメモリセルＭから読み出されたデータを一時記憶し、前記第１の信号nREおよび前記制御信号ECCLKに同期して一時記憶しているメモリセルＭから読み出されたデータを出力する複数のデータ記憶回路１７と、前記第１の信号nREに同期して、前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出されたデータを外部へ出力するデータ出力バッファ５と、前記第１の信号nREに同期して前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出したデータを受け取り、前記制御信号ECCLKに同期して前記複数のデータ記憶回路１７から出力されるメモリセルＭから読み出したデータを受け取り、メモリセルＭから読み出したデータに誤りがあるか否かを判断し、誤りがある場合はそのデータを特定する誤り訂正回路１１とを備えることを特徴とする。
【０２９７】
さらに、望ましい実施態様として、
（１）前記コマンドインターフェイス３は、外部からのステータス読み出し命令"70"H を受けステータス読み出し命令信号STATUSを発生し、さらに、前記ステータス読み出し命令信号STATUSによって活性化され、メモリセルＭから読み出されたデータに誤りがあったか否かを前記データ出力バッファ５を介して出力するステータス出力手段（５，１１）とを備える。
【０２９８】
（２）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうち複数個のデータを訂正可能であり、前記ステータス出力手段（５，１１）は誤りの数を出力可能である。
【０２９９】
（３）前記誤り訂正回路１１は、メモリセルＭから読み出したデータのうちｎ個（ｎ≧１）のデータを訂正可能で（ｎ＋１）個の誤りの存在を検出可能であって、前記ステータス出力手段（５，１１）は誤り訂正可能か否かを出力可能である。
【０３００】
（４）メモリセルＭからのデータの読み出し期間にビジー信号nBUSYを外部へ出力し、かつ、前記訂正読み出し命令信号ECREADにしたがってビジー信号nBUSYを外部へ出力するビジー信号出力回路３を備える。
【０３０１】
上記第６のフラッシュメモリによれば、前記第３のフラッシュメモリと比べて、データ記憶回路１７からデータを出力する際に、割り付けられたアドレス信号ではなく、外部制御信号nREおよび内部制御信号ECCLKに同期させる点が異なるが、前述した第３のフラッシュメモリと基本的に同様の効果が得られる。
【０３５０】
なお、本発明は上述した実施形態に限定されるものではない。フラッシュメモリセルとしては、上述した実施形態のＮＡＮＤ型メモリセル以外にも、ＮＯＲ型メモリセル、仮想グランドメモリセルなど、メモリセルの形態は選ばない。また、クラスタのサイズは、上述した実施形態では４セクタであったが、８セクタ、９セクタ、１６セクタなどシステムの特性に応じて選ぶことが可能である。また、クラスタとセクタの数を同じにしてもよい。
【０３５１】
また、上述した実施形態では１つのメモリセルに２ビットのデータを書いたが、１つのメモリセルに１ビット、３ビット、４ビットなどでもよい。その他、本発明の要旨を逸脱しない範囲で種々変形して実施することができる。
【０３５２】
【発明の効果】
上述したように本発明のフラッシュメモリは、２つの期間において２つの制御信号に同期させて誤り訂正回路を動作させ、１つ目の期間は外部制御信号に同期させ、２つ目の期間においては自動的に内部制御信号を発生させ、これに同期させることにより、外部制御信号が入力されない期間でも、誤り訂正のために検査データを内部誤り訂正回路で発生させる、検査データを書き込み回路へ入力させる、誤り訂正のための読み出し回路から誤り訂正回路へ読み出しデータ（情報データと検査データ）を読み出す、などは内部で自動的に処理できる。したがって、従来の誤り訂正回路を搭載しないフラッシュメモリと互換性のあるフラッシュメモリを提供することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施の形態に係るフラッシュメモリの構成を示すブロック図。
【図２】図１中のメモリセルアレイの１個分を取り出して示す回路図。
【図３】図１のフラッシュメモリを適用したシステムの構成を示すブロック図。
【図４】図１中の誤り訂正回路における検査データ発生部を示す回路図。
【図５】図１中の誤り訂正回路におけるシフトレジスタと論理演算回路を示す回路図。
【図６】第１の実施の形態における書き込みアルゴリズムの一例を示す図。
【図７】図６の書き込みアルゴリズムにおいて同時に２つのメモリセクタにデータを書き込む動作のタイミングの一例を示す図。
【図８】図６の書き込みアルゴリズムにおいて１つのメモリセクタにだけデータを書き込む動作のタイミングの一例を示す図。
【図９】実施例に係る書き込みタイミングを示す図。
【図１０】実施例に係る書き込みタイミングを示す図。
【図１１】図１中の誤り訂正回路におけるシンドロームS1、S3発生部を示す図。
【図１２】図１中の誤り訂正回路におけるシンドロームS3の変換回路を示す図。
【図１３】図１中の誤り訂正回路におけるσ1=S1×S1計算回路を示す図。
【図１４】図１中の誤り訂正回路におけるσ2=S1×S1×S1+S3 計算回路を示す図。
【図１５】図１中の誤り訂正回路におけるσ1 →λ1 変換器を示す図。
【図１６】図１中の誤り訂正回路におけるσ2 →λ2 変換器を示す図。
【図１７】図１中の誤り訂正回路における誤り位置検出回路を示す図。
【図１８】第１の実施の形態における読み出しアルゴリズムの一例を示す図。
【図１９】図１８の読み出しアルゴリズムにおける読み出し動作のタイミングの一例を示す図。
【図２０】図１８の読み出しアルゴリズムにおいて誤り訂正をせずに読み出しデータを出力する動作の一例を示す図。
【図２１】図１８の読み出しアルゴリズムにおいて誤り訂正活性化信号ECCENBを"L" とした時のデータ読み出し動作のタイミングの一例を示す図。
【図２２】図３に示したシステムにおいて電源立ち上がり時に自動的に所定番地のメモリセクタの読み出しを行う動作のタイミングの一例を示す図。
【図２３】第２の実施の形態における読み出しアルゴリズムの一例を示す図。
【図２４】図２３の読み出しアルゴリズムにおけ読み出し動作のタイミングの一例を示す図。
【図２５】本発明のフラッシュメモリにおける消去動作のタイミングの一例を示す図。
【符号の説明】
１…外部端子、
２…パワーオン検出回路、
３…コマンドインターフェイス、
４…アドレスバッファ、
５…データ入出力バッファ、
６…IOバッファ、
７…誤り訂正制御信号発生回路、
８…出力制御信号発生回路、
９…検査データ発生制御信号発生回路、
１０…入力制御信号発生回路、
１１…誤り訂正回路、
１２…メモリセルアレイ、
１３…ソース・ウェル制御回路、
１４…ロウ制御回路、
１５…カラム制御回路、
１６…カラムアドレス発生回路、
１７…データ記憶回路、
１８…シフトレジスタ、
１９…論理演算回路、
２０…フラッシュメモリ、
２１…ＣＰＵ、
２２…キャッシュメモリ。
【図１】
0004074029.tif 000006
【図２】
0004074029.tif 000007
【図３】
0004074029.tif 000008
【図４】
0004074029.tif 000009
【図５】
0004074029.tif 000010
【図６】
0004074029.tif 000011
【図７】
0004074029.tif 000012
【図８】
0004074029.tif 000013
【図９】
0004074029.tif 000014
【図１０】
0004074029.tif 000015
【図１１】
0004074029.tif 000016
【図１２】
0004074029.tif 000017
【図１３】
0004074029.tif 000018
【図１４】
0004074029.tif 000019
【図１５】
0004074029.tif 000020
【図１６】
0004074029.tif 000021
【図１７】
0004074029.tif 000022
【図１８】
0004074029.tif 000023
【図１９】
0004074029.tif 000024
【図２０】
0004074029.tif 000025
【図２１】
0004074029.tif 000026
【図２２】
0004074029.tif 000027
【図２３】
0004074029.tif 000028
【図２４】
0004074029.tif 000029
【図２５】
0004074029.tif 000030