(57)【要約】【課題】データ読み出し動作の時に、復元、かつ訂正されたデータの読み出し時間を短縮することができる半導体記憶装置を提供する。【解決手段】データ転送部は、通常メモリセルに接続されるビット線に出力される出力データをラッチするページバッファ１０２ａと、パリティメモリセルに接続されるビット線に出力される出力データをラッチするページバッファ１０２ｃと、を含んで構成され、ＥＣＣ Ｂｕｓ＿１は、ページバッファ１０２ａ、及びページバッファ１０２ｃと接続され、ＥＣＣ Ｂｕｓ＿３に接続されるとともに、ページバッファ１０２ｃの出力データに基づき、ページバッファ１０２ａの出力データの誤りを訂正するＥＣＣ回路１０７ａと、予め設定されたシードデータに基づいて、ページバッファ１０２ａから入力されるデータをランダマイズし、ＥＣＣ回路１０７ａから入力されるデータをデランダマイズするランダマイザ１０７ｂと、を備える。【選択図】図１
2014137834.tif 000002
【特許請求の範囲】
【請求項１】
第１のデータバスと、
第１の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第１のデータバスと同じ本数のビット線と、前記第１のデータバスとを接続してデータを転送するデータ転送部と、を備え、
前記データ転送部は、
通常メモリセルに接続されるビット線に出力される出力データをラッチする第１のページバッファと、
パリティメモリセルに接続されるビット線に出力される出力データをラッチする第２のページバッファと、を含んで構成され、
前記第１のデータバスは、前記第１のページバッファ、及び前記第２のページバッファと接続され、
さらに、前記第１のデータバスに接続されるとともに、前記第２のページバッファの出力データに基づき、前記第１のページバッファの出力データの誤りを訂正するＥＣＣ回路と、
前記第１のデータバスに接続され、予め設定されたシードデータに基づいて、前記第１のページバッファから入力されるデータをランダマイズし、前記ＥＣＣ回路から入力されるデータをデランダマイズするランダマイザと、を備える、
ことを特徴とする半導体記憶装置。
【請求項２】
前記第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするページバッファ制御回路を有し、
前記ページバッファ制御回路は、メモリセルまたはビット線に不良が有る場合、前記第１のデータバスからの書き込みを許可しないことを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記第１のデータバスと異なる本数から構成され、前記第１のデータバスとは独立して設けられる第２のデータバスを備え、
前記データ転送部は、第２の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第２のデータバスと同じ本数のビット線と、前記第２のデータバスとを接続してデータを転送し、
前記第１の動作モードでは、前記第１のページバッファのうち、メモリセルまたはビット線に不良が有るページバッファと、前記第２の動作モードでの救済置換を前提として存在する第３のページバッファとの間において救済置換を行わずに、前記ＥＣＣ回路、及び前記ランダマイザの入力データとして取り扱うことを特徴とする請求項１または請求項２いずれかに記載の半導体記憶装置。
【請求項４】
前記第１の動作モードのデータ書き込み動作において、
前記ランダマイザは、前記第１のページバッファの出力データをランダマイズして前記ＥＣＣ回路に入力し、前記ＥＣＣ回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第２のページバッファにパリティデータを書き込み、
一方、前記第１の動作モードのデータ読み出し動作において、
前記ＥＣＣ回路は、前記第２のページバッファのパリティデータに基づいて、前記第１のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第１のページバッファに書き戻す、
第１のランダマイズ及びＥＣＣ処理を実行することを特徴とする請求項３に記載の半導体記憶装置。
【請求項５】
前記第１のランダマイズ及びＥＣＣ処理に替えて、
前記第１の動作モードのデータ書き込み動作において、
前記ランダマイザは、前記第１のページバッファの出力データをランダマイズして前記第１のページバッファに書き戻し、前記ＥＣＣ回路は、前記第１のページバッファに書き戻されたデータに基づいて前記第２のページバッファにパリティデータを書き込み、
一方、前記第１の動作モードのデータ読み出し動作において、
前記ＥＣＣ回路は、前記第２のページバッファのパリティデータに基づいて、前記第１のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第１のページバッファに書き戻す、
第２のランダマイズ及びＥＣＣ処理を実行することを特徴とする請求項４に記載の半導体記憶装置。
【請求項６】
前記第２のランダマイズ及びＥＣＣ処理に替えて、
前記第１の動作モードのデータ書き込み動作において、
前記ランダマイザは、ランダマイズ処理に先立って取り込んだ前記第１のページバッファの不良情報に基づいて、前記第１のページバッファの出力データのうち、前記固定されたデータを除く、前記第１のページバッファの出力データをランダマイズして前記ＥＣＣ回路に入力し、前記ＥＣＣ回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第２のページバッファにパリティデータを書き込み、
一方、前記第１の動作モードのデータ読み出し動作において、
前記ＥＣＣ回路は、前記第２のページバッファのパリティデータに基づいて、前記第１のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第１のページバッファに書き戻す、
第３のランダマイズ及びＥＣＣ処理を実行することを特徴とする請求項５に記載の半導体記憶装置。
【請求項７】
前記ビット線は、ｎ（ｎはｐとｑの公倍数であり、ｐ、及びｑはｐ＞ｑである自然数）本のビット線であり、前記第１のデータバスはｐ本であり、前記第２のデータバスはｑ本であって、
前記データ転送部は、
前記第１の動作モードでは、（ｎ／ｐ）本のアドレス信号が入力されると、ｐ本のビット線とｐ本の第１のデータバスとの接続を行い、
一方、前記第２の動作モードでは、（ｎ／ｑ）本のアドレス信号が入力されると、ｑ本ビット線と第２のデータバスとの接続を行う、
ことを特徴とする請求項３から請求項６いずれか一項に記載の半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体記憶装置に関する。
【背景技術】
【０００２】
ＮＡＮＤ型フラッシュメモリ等に代表される半導体記憶装置は、その集積度が向上するにつれ、複数のメモリセルの間の干渉（ｉｎｔｅｒｆｅｒｅｎｃｅ）が増加するため、誤ったデータ読み出し動作や、誤ったデータ書き込み動作を行う可能性が高くなってきている。そのため、例えば特許文献１記載のフラッシュメモリでは、入力データパターン（ｄａｔａ ｐａｔｔｅｒｎ）にデータ１とデータ０とが確率的に一定に保持されるように、入力データパターンを変える機能を実行するランダマイザを備えている。
【０００３】
特許文献１記載のフラッシュメモリは、データ書き込み動作においては、ランダムシード発生回路によって発生したランダムシードＲＳ（シード）と、入力バッファを通じて入力されたオリジナルデータＯＤ（入力データ）とをＸＯＲ（排他的論理和）演算する。特許文献１記載のフラッシュメモリは、ＸＯＲ演算によりランダムデータＲＤを生成し（ランダマイズ；Ｒａｎｄｏｍｉｚｅ）、このランダムデータＲＤをメモリセルアレイのメモリセルにプログラムする。また、特許文献１記載のフラッシュメモリは、データ読み出し動作においては、ランダムデータＲＤと、ランダムシードＲＳとをＸＯＲ演算して、ランダムデータＲＤをオリジナルデータＯＤに復元、すなわち、デランダマイズ（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）し、外部へ出力する。
【０００４】
一方、従来のＮＡＮＤ型フラッシュメモリでは、多数回の書き換えに伴うトンネル酸化膜の劣化等に起因して、データ保持中に記憶素子（メモリセルトランジスタ）の保持特性が失われ、エラービットの発生率（エラー率）が大きくなる傾向がある。特に、ＮＡＮＤ型フラッシュメモリでは、メモリセルの大容量化、すなわち製造プロセスにおける微細化が進むとエラー率は上昇してしまう傾向にある。そのため、記憶すべきデータに誤り訂正符号（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｎｇ Ｃｏｄｅ）の冗長データ（パリティデータ）を付加してデータ列としてフラッシュメモリに書込むと共に、読み出し時には誤り訂正符号の冗長データを基にしてデータの訂正を行うことで、エラービットが発生したときのデータの補償を行っている。
【０００５】
このデータの補償は、ＮＡＮＤ型フラッシュメモリの内部においてＥＣＣ回路により演算処理してもよく、或いは、ＮＡＮＤ型フラッシュメモリの外部、例えばメモリコントローラにおいてＥＣＣ処理を行ってもよい。特許文献１記載のフラッシュメモリでは、外部のコントローラにおいてＥＣＣ処理を行っている。
【０００６】
従って、特許文献１記載のフラッシュメモリでは、データ書き込み動作においては、外部のコントローラにおいて、ホストインターフェースを通じて入力されるデータに対してエラー訂正エンコーディング（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ Ｅｎｃｏｄｉｎｇ）を行う。これにより、外部のコントローラは、パリティビット（Ｐａｒｉｔｙ  Ｂｉｔ）が付け加われたデータ、すなわち、エンコードされたデータを形成する。このエンコードされたデータが、ＮＡＮＤ型フラッシュメモリに入力され、上述の様にランダマイズ処理された後に、メモリセルに書き込まれる。
一方、データ読み出し動作においては、ＮＡＮＤ型フラッシュメモリにおいて、上述の様にランダマイズ処理された後に、復元されたオリジナルデータが、外部のコントローラのＥＣＣデコーダに入力される。このＥＣＣデコーダは、復元されたオリジナルデータのエラーを検出し、訂正する（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ Ｄｅｃｏｄｉｎｇ）。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０１２−１８１９０９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
ところが、特許文献１記載のフラッシュメモリでは、シード（Ｓｅｅｄ）をページバッファ（Ｐａｇｅ Ｂｕｆｆｅｒ）に送り、ランダマイズ（Ｒａｎｄｏｍｉｚｅ）処理をする方式を採用している。そのため、たとえばデータ読み出し（Ｒｅａｄ）動作の時に、ＥＣＣのデコード（Ｄｅｃｏｄｅ）処理を行う時間と、デランダマイズ（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）処理を行う時間を要するため、復元、かつ訂正されたデータの読み出し時間が増大してしまうという問題がある。
【０００９】
そこで本発明が解決しようとする課題は、データ読み出し動作の時に、復元、かつ訂正されたデータの読み出し時間を短縮することにある。
【課題を解決するための手段】
【００１０】
本発明の半導体記憶装置は、第１のデータバスと、第１の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第１のデータバスと同じ本数のビット線と、前記第１のデータバスとを接続してデータを転送するデータ転送部と、を備え、前記データ転送部は、通常メモリセルに接続されるビット線に出力される出力データをラッチする第１のページバッファと、パリティメモリセルに接続されるビット線に出力される出力データをラッチする第２のページバッファと、を含んで構成され、前記第１のデータバスは、前記第１のページバッファ、及び前記第２のページバッファと接続され、さらに、前記第１のデータバスに接続されるとともに、前記第２のページバッファの出力データに基づき、前記第１のページバッファの出力データの誤りを訂正するＥＣＣ回路と、前記第１のデータバスに接続され、予め設定されたシードデータに基づいて、前記第１のページバッファから入力されるデータをランダマイズし、前記ＥＣＣ回路から入力されるデータをデランダマイズするランダマイザと、を備える、ことを特徴とする。
【００１１】
また、本発明の半導体記憶装置において、前記第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするページバッファ制御回路を有し、前記ページバッファ制御回路は、メモリセルまたはビット線に不良が有る場合、前記第１のデータバスからの書き込みを許可しないことを特徴とする。
【００１２】
また、本発明の半導体記憶装置において、前記第１のデータバスと異なる本数から構成され、前記第１のデータバスとは独立して設けられる第２のデータバスを備え、前記データ転送部は、第２の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち前記第２のデータバスと同じ本数のビット線と、前記第２のデータバスとを接続してデータを転送し、前記第１の動作モードでは、前記第１のページバッファのうち、メモリセルまたはビット線に不良が有るページバッファと、前記第２の動作モードでの救済置換を前提として存在する第３のページバッファとの間において救済置換を行わずに、前記ＥＣＣ回路、及び前記ランダマイザの入力データとして取り扱うことを特徴とする。
【００１３】
また、本発明の半導体記憶装置において、前記第１の動作モードのデータ書き込み動作において、前記ランダマイザは、前記第１のページバッファの出力データをランダマイズして前記ＥＣＣ回路に入力し、前記ＥＣＣ回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第２のページバッファにパリティデータを書き込み、一方、前記第１の動作モードのデータ読み出し動作において、前記ＥＣＣ回路は、前記第２のページバッファのパリティデータに基づいて、前記第１のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第１のページバッファに書き戻す、第１のランダマイズ及びＥＣＣ処理を実行することを特徴とする。
【００１４】
また、本発明の半導体記憶装置において、前記第１のランダマイズ及びＥＣＣ処理に替えて、前記第１の動作モードのデータ書き込み動作において、前記ランダマイザは、前記第１のページバッファの出力データをランダマイズして前記第１のページバッファに書き戻し、前記ＥＣＣ回路は、前記第１のページバッファに書き戻されたデータに基づいて前記第２のページバッファにパリティデータを書き込み、一方、前記第１の動作モードのデータ読み出し動作において、前記ＥＣＣ回路は、前記第２のページバッファのパリティデータに基づいて、前記第１のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第１のページバッファに書き戻す、第２のランダマイズ及びＥＣＣ処理を実行することを特徴とする。
【００１５】
また、本発明の半導体記憶装置において、前前記第２のランダマイズ及びＥＣＣ処理に替えて、前記第１の動作モードのデータ書き込み動作において、前記ランダマイザは、ランダマイズ処理に先立って取り込んだ前記第１のページバッファの不良情報に基づいて、前記第１のページバッファの出力データのうち、前記固定されたデータを除く、前記第１のページバッファの出力データをランダマイズして前記ＥＣＣ回路に入力し、前記ＥＣＣ回路は、前記ランダマイザから入力されるデータに基づいて、パリティデータを生成して前記第２のページバッファにパリティデータを書き込み、一方、前記第１の動作モードのデータ読み出し動作において、前記ＥＣＣ回路は、前記第２のページバッファのパリティデータに基づいて、前記第１のページバッファのデータを誤り訂正し、前記ランダマイザは訂正後のデータをデランダマイズして前記第１のページバッファに書き戻す、第３のランダマイズ及びＥＣＣ処理を実行することを特徴とする。
【００１６】
また、本発明の半導体記憶装置において、前記ビット線は、ｎ（ｎはｐとｑの公倍数であり、ｐ、及びｑはｐ＞ｑである自然数）本のビット線であり、前記第１のデータバスはｐ本であり、前記第２のデータバスはｑ本であって、前記データ転送部は、前記第１の動作モードでは、（ｎ／ｐ）本のアドレス信号が入力されると、ｐ本のビット線とｐ本の第１のデータバスとの接続を行い、一方、前記第２の動作モードでは、（ｎ／ｑ）本のアドレス信号が入力されると、ｑ本ビット線と第２のデータバスとの接続を行う、ことを特徴とする。なお、上記構成は、論理的空間においての概念を前提としており、物理的ビット線数ｎがｐとｑの公倍数でなくてもよく、余りをダミービット線として処理するなどで対応できる。
【発明の効果】
【００１７】
本発明の半導体記憶装置は、第１のデータバスと、第１の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち第１のデータバスと同じ本数のビット線と、第１のデータバスとを接続してデータを転送するデータ転送部と、を備える。半導体記憶装置は、さらに、第１のデータバスに接続されるＥＣＣ回路と、第１のデータバスに接続されるランダマイザと、を備える。
【００１８】
これにより、ページバッファの出力に接続されるＥＣＣのデータバス（第１のデータバス）を、第１動作モード（ＥＣＣモード）用に用いることができる。また、このＥＣＣのデータバスには、ランダマイザ、及びＥＣＣ回路が設けられる。そのため、本発明の半導体記憶装置によれば、ＥＣＣ回路、及びランダマイザを内蔵した半導体記憶装置において、ＥＣＣ処理におけるデコード（Ｄｅｃｏｄｅ）動作とデランダマイズ（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）動作を同時に実行でき、復元、かつ訂正されたデータの読み出し時間を短縮することができる。
【００１９】
また、半導体記憶装置は、第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするページバッファ制御回路を有する。半導体記憶装置は、第１の動作モードでは、第１のページバッファのうち、メモリセルまたはビット線に不良が有るページバッファと、第２の動作モードでの救済置換を前提として存在する第３のページバッファとの間において救済置換を行わずに、ＥＣＣ回路、及びランダマイザの入力データとして取り扱う。また、半導体記憶装置は、以下の第１のランダマイズ及びＥＣＣ処理を実行する。すなわち、半導体記憶装置では、第１の動作モードのデータ書き込み動作において、ランダマイザは、第１のページバッファの出力データをランダマイズしてＥＣＣ回路に入力し、ＥＣＣ回路は、ランダマイザから入力されるデータに基づいて、パリティデータを生成して第２のページバッファにパリティデータを書き込む。一方、第１の動作モードのデータ読み出し動作において、ＥＣＣ回路は、第２のページバッファのパリティデータに基づいて、第１のページバッファのデータを誤り訂正し、ランダマイザは訂正後のデータをデランダマイズして第１のページバッファに書き戻す。
【００２０】
これにより、第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファについては、ランダマイザ、及びＥＣＣ回路により誤りが訂正される。そのため、本発明の半導体記憶装置によれば、ＥＣＣのデコード処理とデランダマイズ処理とを高速に実行することができる。また、第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファについては、ＥＣＣ回路により誤りが訂正されるので、救済機能を省略することができる。
【００２１】
また、半導体記憶装置は、第１のランダマイズ及びＥＣＣ処理に替えて、以下の第２のランダマイズ及びＥＣＣ処理を実行する。すなわち、半導体記憶装置では、第１の動作モードのデータ書き込み動作において、ランダマイザは、第１のページバッファの出力データをランダマイズして第１のページバッファに書き戻し、ＥＣＣ回路は、第１のページバッファに書き戻されたデータに基づいて第２のページバッファにパリティデータを書き込む。一方、第１の動作モードのデータ読み出し動作において、ＥＣＣ回路は、第２のページバッファのパリティデータに基づいて、第１のページバッファのデータを誤り訂正し、ランダマイザは訂正後のデータをデランダマイズして第１のページバッファに書き戻す。
【００２２】
これにより、第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファについては、誤りが発生しないように処理される。そのため、本発明の半導体記憶装置によれば、ＥＣＣ処理の訂正処理能力を下げずに、ＥＣＣのデコード処理とデランダマイズ処理とを高速に実行することができる。
【図面の簡単な説明】
【００２３】
【図１】本実施形態におけるＮＡＮＤ型フラッシュメモリのブロック構成を示す図である。
【図２】ランダマイザ、及びＥＣＣ回路１０７の詳細な構成例を示す図である。
【図３】図１に示すページバッファ１０２、カラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８に対応する部分のデータ読み出し動作を説明するための図である。
【図４】図２に示すＰＢ ４ＩＯ ユニットの内部の構成、及びＰＢユニットの内部の構成を示す図である。
【図５】ＰＢ ユニットの内部の回路構成を示す図である。
【図６】ＰＢ ユニットの内部の他の回路構成を示す図である。
【図７】図４、及び図５に示すビット内部回路５０＿ｉ（ｉ＝０〜７の整数）の回路構成を示す図である。
【図８】図１に示すページバッファ１０２、カラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８に対応する部分のデータ書き込み動作を説明するための図である。
【図９】ページバッファ１０２を構成する各ページバッファを説明するための図である。
【図１０】ページバッファ１０２の動作を説明するためのフローチャートである。
【図１１】ＥＣＣモードにおける第１のランダマイズ及びＥＣＣ処理について説明するための図である。
【図１２】第１のランダマイズ及びＥＣＣ処理のフローチャートである。
【図１３】ＥＣＣモードにおける第２のランダマイズ及びＥＣＣ処理について説明するための図である。
【図１４】第２のランダマイズ及びＥＣＣ処理のフローチャートである。
【図１５】ランダマイザ１０７ｂ＿１の回路構成を示す図である。
【図１６】第３のランダマイズ及びＥＣＣ処理のフローチャートである。
【発明を実施するための形態】
【００２４】
以下、図面を参照して、本発明の実施の形態について説明する。なお、以下の説明において、同一の機能及び構成を有する要素については、同一符号を付し、重複説明は必要な場合にのみ行う。
【００２５】
図１は、本実施形態におけるＮＡＮＤ型フラッシュメモリのブロック構成を示す図である。図１に示すＮＡＮＤ型フラッシュメモリ１０は、メモリアレイ１０１、ＰＢ（Ｐａｇｅ Ｂｕｆｆｅｒ；ページバッファ）１０２、Ｃｏｌｕｍｎ Ｃｏｄｉｎｇ Ｃｉｒｃｕｉｔ（カラムコーディング回路）１０３、Ｍａｉｎ Ｃｏｌｕｍｎ Ｒｅｐａｉｒ ＭＵＸ（カラム救済回路）１０４を備えている。また、ＮＡＮＤ型フラッシュメモリ１０は、Ｐａｒｉｔｙ ＣＲ ＭＵＸ（パリティカラム置換回路）１０５、ＥＣＣ Ｃｏｌｕｍｎ Ｃｏｄｉｎｇ Ｃｉｒｃｕｉｔ（ＥＣＣカラムコーディング回路）１０８、Ｉ／Ｏ ＰＡＤ（Ｉ／Ｏパッド）１０６を備えている。また、ＮＡＮＤ型フラッシュメモリ１０は、ＥＣＣ Ｅｎｇｉｎｅ（ＥＣＣ回路）１０７ａ、及びＲａｎｄｏｍｉｚｅ Ｍｉｘｅｒ（ランダマイザ）１０７ｂを備えている。本実施形態においては、以下、ＥＣＣ回路１０７ａ、及びランダマイザ１０７ｂを、一体化してランダマイザ、及びＥＣＣ回路１０７と呼ぶことがある。
【００２６】
図１において、Ｄａｔａ Ｂｕｓ＿１、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿３（第２のデータバス）は、データの受け渡しをページバッファ１０２とＩ／Ｏパッド１０６との間において行なう配線であり、以下、単にＤａｔａ＿Ｂｕｓと呼ぶこともある。
Ｉ／Ｏパッド１０６（インターフェース部）は、例えばＮＡＮＤ型フラッシュメモリ１０の制御を行なうナンドコントローラとの間で上記データの受け渡しを行なう外部端子である。
また、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）は、データの受け渡しをページバッファ１０２とランダマイザ、及びＥＣＣ回路１０７との間において行なう配線であり、以下、単にＥＣＣ＿Ｂｕｓと呼ぶこともある。
【００２７】
メモリアレイ１０１は、複数のメモリセルトランジスタを含んで構成される。これらの複数のメモリセルトランジスタ各々は、１ビットのデータを記憶する。メモリアレイ１０１において、同一のワード線に接続される複数のメモリセルトランジスタがページを構成する。１つのページにおけるメモリセルトランジスタへのデータの書き込み、及びメモリセルからのデータの読み出しは、一括して実行される。
【００２８】
ＮＡＮＤ型フラッシュメモリ１０は、図１に示すように、カラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８を有する。カラムコーディング回路１０３とＥＣＣカラムコーディング回路１０８とでは、別系統のカラムアドレス（Ｃｏｄｉｎｇ）が入力される。また、カラムコーディング回路１０３とＥＣＣカラムコーディング回路１０８とは、後述するように、ページバッファ１０２のＰＢ制御回路６０に選択信号Ｓｅｌ＿Ａまたは選択信号Ｓｅｌ＿Ｂを出力する。カラムコーディング回路１０３とＥＣＣカラムコーディング回路１０８は、ページバッファ１０２に直結した部分（図４（ｂ）に示すマルチプレクサ５２＿ｂ、及びＰＢ制御回路６０の部分）から、ページバッファの出力を、ＥＣＣ Ｂｕｓ＿１とＤａｔａ Ｂｕｓ＿１とのいずれか一方のデータバスに接続する。
【００２９】
カラムコーディング回路１０３は、図１において不図示のアドレス制御回路から入力されるカラムアドレスに基づいて、カラムアドレス信号（図４（ｂ）に示すＳｕｂ ＢＬ Ｃｏｄｉｎｇ、及びＣｏｄｉｎｇ）を生成し、このカラムアドレス信号に対応するページバッファ１０２のページバッファユニットを選択する。これにより、Ｉ／Ｏパッド１０６、Ｄａｔａ Ｂｕｓ＿３、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿１、ビット回路（後述）、及びビット線を介してメモリセルトランジスタへデータが書きこまれる。また、メモリセルからのデータがビット線、ビット回路、Ｄａｔａ Ｂｕｓ＿１、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿３を介してＩ／Ｏパッド１０６の外部へ読み出される。
【００３０】
一方、ＥＣＣカラムコーディング回路１０８は、ＥＣＣ回路１０７ａからカラムアドレス（以下、カラムアドレスＡｄｄｒｅｓｓ Ｂとする）が入力される。ＥＣＣカラムコーディング回路１０８は、不図示のアドレス制御回路からカラムコーディング回路１０３に入力されるカラムアドレス（以下、カラムアドレスＡｄｄｒｅｓｓ Ａとする）とは独立して、ＰＢ制御回路６０に対して選択信号Ｓｅｌ＿Ｂを出力して、ページバッファ１０２の出力とＥＣＣ Ｂｕｓ＿１とを接続する。これにより、ページバッファ１０２の出力と、ＥＣＣ Ｂｕｓ＿１またはＤａｔａ Ｂｕｓ＿１との接続におけるアドレス制御を独立して実行することができる。
【００３１】
また、従来のＮＡＮＤ型フラッシュメモリでは、ページバッファの出力（データバスを以下、区別のためＩＯバスとする）を、第１の動作モードと第２の動作モードとにおいて共有している。これに対して、ＮＡＮＤ型フラッシュメモリ１０では、ページバッファの出力であるＩＯバスを、第１の動作モードと第２の動作モードとにおいて共有することなく、独立に設けている。
【００３２】
これにより、ページバッファの出力からランダマイザ、及びＥＣＣ回路１０７への入力までの径路において、後述するカラム置換回路１０４等の高速なデータ転送に悪影響を及ぼす回路は不要となり、データ転送を高速に行うことができる。また、第２のデータバスを、従来の救済効率に応じたバス幅にしておくことができる。これにより、カラム置換回路１０４の回路規模は増大しないので、チップサイズの増加を抑制できる。さらに、ＮＡＮＤ型フラッシュメモリ１０を、ＥＣＣ回路を内蔵しないＮＡＮＤ型フラッシュメモリに設計変更する場合であっても、ＥＣＣカラムコーディング回路１０８、パリティカラム置換回路１０５、ＥＣＣ Ｂｕｓ＿１〜ＥＣＣ Ｂｕｓ＿３、ランダマイザ、及びＥＣＣ回路１０７を削除すればよいので、容易に設計することができる。
【００３３】
ページバッファ１０２は、メモリアレイ１０１のページと同じ個数のデータを保持できるように構成されている。ページバッファ１０２は、図１に示すように、ＰＢ（Ｐａｇｅ Ｂｕｆｆｅｒ）＿Ｄａｔａ１０２ａと、ＰＢ＿ＣＲ１０２ｂと、ＰＢ＿Ｐａｒｉｔｙ１０２ｃと、ＰＢ＿ＰＣＲ１０２ｄとから構成される。以下、ＰＢ（Ｐａｇｅ Ｂｕｆｆｅｒ）＿Ｄａｔａ１０２ａをページバッファ１０２ａと、ＰＢ＿ＣＲ１０２ｂをページバッファ１０２ｂと、ＰＢ＿Ｐａｒｉｔｙ１０２ｃをページバッファ１０２ｃと、ＰＢ＿ＰＣＲ１０２ｄをページバッファ１０２ｄと、それぞれ呼ぶものとする。
ページバッファ１０２ａは、通常メモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ（第１のページバッファ）である。また、ページバッファ１０２ａは、通常モード（第２の動作モード）におけるデータ読み出し時に、カラムコーディング回路１０３から選択信号Ｓｅｌ＿Ａが入力される。ページバッファ１０２ａは、増幅結果を読み出しデータＤａｔａ＿Ｏｕｔ＿Ａとして、Ｄａｔａ Ｂｕｓ＿１、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿３（第２のデータバス）を介して、Ｉ／Ｏパッド１０６から出力する。
一方、ページバッファ１０２ａは、ＥＣＣモード（第１の動作モード）におけるデータ読み出し時に、ＥＣＣカラムコーディング回路１０８から選択信号Ｓｅｌ＿Ｂが入力される。ページバッファ１０２ａは、増幅結果を読み出しデータＤａｔａ＿Ｏｕｔ＿ＢとしてＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に対して出力する。
【００３４】
また、ページバッファ１０２ａは、通常モードにおけるデータ書込み時に、カラムコーディング回路１０３から選択信号Ｓｅｌ＿Ａが入力される。ページバッファ１０２ａは、Ｉ／Ｏパッド１０６から入力される書き込みデータがＤａｔａ Ｂｕｓ＿３、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿１を介して書き込みデータＤａｔａ＿Ｉｎ＿Ａとして入力される。一方、ページバッファ１０２ａは、ＥＣＣモードにおけるデータ書き込み時に、ＥＣＣカラムコーディング回路１０８から選択信号Ｓｅｌ＿Ｂが入力される。ページバッファ１０２ａは、ランダマイザ、及びＥＣＣ回路１０７におけるＥＣＣ回路１０７ａのＥＣＣ処理の結果がＥＣＣ Ｂｕｓ＿３、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿１を介して書き込みデータＤａｔａ＿Ｉｎ＿Ｂとして入力される。
【００３５】
ページバッファ１０２ｂは、ページバッファ１０２ａに接続される通常メモリセルまたはビット線に不良が有る場合に、通常メモリセル、及びビット線とともに置換されるページバッファ（第３のページバッファ）である。すなわち、ページバッファ１０２ａを構成するページバッファユニットの１つに不良があった場合、このページバッファユニットは、ページバッファ１０２ｂを構成するページバッファユニットの１つに置換される。なお、ページバッファ１０２ｂの動作は、上述したページバッファ１０２ａと同じ動作であるので、説明を省略する。
【００３６】
このページバッファ１０２ａからページバッファ１０２ｂへのページバッファユニットの置換を行なうのが、カラム置換回路１０４である。カラム置換回路１０４は、ページバッファ１０２ａにおける不良のページバッファユニットを選択するカラムアドレス（後述する選択信号Ｓｅｌ＿Ａ）がカラムコーディング回路１０３に入力される場合、カラムコーディング回路１０３がページバッファ１０２ｂにおけるページバッファユニットを選択するように制御を実行する。
【００３７】
ページバッファ１０２ｃは、パリティメモリセル（ＥＣＣ処理用のメモリセルトランジスタ。ただし、構成は通常メモリセルと同じ）に接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ（第２のページバッファ）である。なお、パリティメモリセルが記憶するパリティデータは、通常モードでは、Ｉ／Ｏパッド１０６を介して外部に出力されない。ページバッファ１０２ｃは、ＥＣＣモードにおけるデータ読み出し時に、ＥＣＣカラムコーディング回路１０８から選択信号Ｓｅｌ＿Ｂが入力される。ページバッファ１０２ｃは、増幅結果を読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂとして、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３を介してＥＣＣ回路１０７に対して出力する。
【００３８】
また、パリティメモリセルが記憶するパリティデータは、通常モードでは、Ｉ／Ｏパッド１０６を介して外部から入力されない。
ページバッファ１０２ｃは、ＥＣＣモードにおけるデータ書き込み時に、ＥＣＣカラムコーディング回路１０８から選択信号Ｓｅｌ＿Ｂが入力される。ページバッファ１０２ｃは、ＥＣＣ回路１０７のＥＣＣ処理の結果であるパリティデータがＥＣＣ Ｂｕｓ＿３、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿１を介して書き込みデータＤａｔａ＿Ｉｎ＿Ｂとして入力される。
【００３９】
ページバッファ１０２ｄは、ページバッファ１０２ｃに接続されるパリティメモリセルまたはビット線に不良が有る場合に、パリティメモリセル、及びビット線とともに置換されるページバッファ（第４のページバッファ）である。すなわち、ページバッファ１０２ｃを構成するページバッファユニットの１つに不良があった場合、このページバッファユニットは、ページバッファ１０２ｄを構成するページバッファユニットの１つに置換される。なお、ページバッファ１０２ｄの動作は、上述したページバッファ１０２ｃと同じ動作であるので、説明を省略する。
【００４０】
このページバッファ１０２ｃからページバッファ１０２ｄへのページバッファユニットの置換を行なうのが、パリティカラム置換回路１０５である。パリティカラム置換回路１０５は、ページバッファ１０２ｃにおける不良のページバッファユニットを選択するカラムアドレス（後述する選択信号Ｓｅｌ＿Ｂ）がＥＣＣカラムコーディング回路１０８に入力される場合、ＥＣＣカラムコーディング回路１０８がページバッファ１０２ｄにおけるページバッファユニットを選択するように制御を実行する。
【００４１】
次に、図２は、ランダマイザ、及びＥＣＣ回路１０７の詳細な構成例を示す図である。
本実施形態においては、ランダマイザ、及びＥＣＣ回路１０７として、ＢＣＨ符号（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ Ｈｏｃｑｕｅｎｇｈｅｍ ｃｏｄｅ）で代表されるガロア体演算を利用したＥＣＣ回路を例にとって説明する。なお、ＢＣＨ符号の替りに、例えばＨａｍｍｉｎｇ符号（Ｈａｍｍｉｎｇ ｃｏｄｅ）、リードソロモン符号（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ ｃｏｄｅ）を用いることも可能である。なお、以下の説明では、情報データ長５１１ビットを訂正単位とし、それぞれの訂正単位のうちの４ビットのデータの訂正が可能なＢＣＨ符号を用いたＥＣＣ回路について説明する。
ランダマイザ、及びＥＣＣ回路１０７のうち、図１に示すＥＣＣ回路１０７ａは、データの復号を司るデコーダ部と、パリティデータを生成するエンコーダ部とを含んで構成される。
【００４２】
ＥＣＣ回路１０７ａのうち、デコーダ部は、Ｓｙｎｄｒｏｍｅ Ｃａｌｃｕｌａｔｉｏｎ Ｃｉｒｃｕｉｔ（シンドローム算出回路）３１、Ｅｒｒｏｒ−Ｃｏｅｆｆｉｃｉｅｎｔ Ｃａｌｃｕｌａｔｉｏｎ Ｃｉｒｃｕｉｔ（誤り係数算出回路）３２、及びＣｈｉｅｎ Ｓｅａｒｃｈ Ｃｉｒｃｕｉｔ（チェン探索回路）３３を含んで構成される。
シンドローム算出回路３１は、ＮＡＮＤ型フラッシュメモリ１０のＥＣＣモードでのデータ読み出し時に、ページバッファ１０２に読み出されたメモリセルからのデータが、符号データＬｏａｄ Ｄａｔａ＜５１０：０＞として、例えばセクタ毎に入力される。シンドローム算出回路３１は、この符号データＬｏａｄ Ｄａｔａ＜５１０：０＞を独立な最小多項式で除算することによりシンドロームを計算する。４ビットのデータの誤り訂正が可能なＢＣＨ符号で使用される独立な最小多項式は、４つである。シンドローム算出回路３１は、これら４つの最小多項式に対応して、４つのシンドローム算出部を備えている。これらのシンドローム算出部は、それぞれシンドローム（ここではシンドロームＳ１、Ｓ３、Ｓ５、Ｓ７とする）を計算する。
【００４３】
誤り係数算出回路３２は、これらのシンドロームＳ１、Ｓ３、Ｓ５、Ｓ７を使用して、セクタ毎のエラー位置探索方程式の係数（ここでは係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０とする）を計算する。係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０は、エラー位置探索方程式Λ（ｘ）＝ｅ４ｘ４＋ｅ３ｘ３＋ｅ２ｘ２＋ｅ１ｘ１＋ｅ０の係数である。エラー位置探索方程式Λ（ｘ）は、ページバッファ１０２からセクタ毎に読み出されたビットに誤りがあるか否かを探索する際にチェン探索回路３３において用いられる。
【００４４】
チェン探索回路３３では、誤り係数算出回路３２が算出する係数（エラー位置探索方程式の係数ｅ０〜ｅ４）を用いて、エラー位置探索方程式Λ（ｘ）に、代入値ｘとして符号データＬｏａｄ Ｄａｔａ＜５１０：０＞の位置を示すアドレス（カラムアドレス）を代入して、エラー位置探索方程式Λ（ｘ）が０になるか否かをチェックされる。また、チェン探索回路３３は、このチェック結果に応じてエラー位置（Ｅｒｒｏｒ Ｐｏｓｉｔｉｏｎ）を示す信号であるエラー検出信号ＥＰ＜５１０：０＞を出力する。チェン探索回路３３は、エラー検出信号ＥＰ＜５１０：０＞において、符号データＬｏａｄ Ｄａｔａ＜５１０：０＞のビットのうち、誤りがあったビットに対してはデータ１、誤りのなかったビットに対してはデータ０とする。
【００４５】
ランダマイザ１０７ｂには、ＮＡＮＤ型フラッシュメモリ１０のＥＣＣモードでのデータ読み出し時に、ＥＣＣカラムコーディング回路１０８がページバッファ１０２に選択信号Ｓｅｌ＿Ｂ（カラムアドレス）を入力することにより、このカラムアドレスが示す位置のページバッファ１０２の符号データＬｏａｄ Ｄａｔａ＜５１０：０＞が入力される。ランダマイザ１０７ｂは、符号データＬｏａｄ Ｄａｔａ＜５１０：０＞とエラー検出信号ＥＰ＜５１０：０＞とを排他的論理和演算（ＥＸＯＲ）することにより、誤りのあったビットを反転し、誤りのなかったビットは反転されず、誤りのないデータを得ることができる。
【００４６】
また、ランダマイザ１０７ｂは、排他的論理和演算により得られた誤りのないデータと、不図示のランダムシード発生回路によって発生したランダムシードＲＳ＜５１０：０＞（シード）とを、更に排他的論理和演算することにより、すなわちデランダマイズ（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）する。ランダマイザ１０７ｂは、符号データＬｏａｄ Ｄａｔａ＜５１０：０＞をエンコード前の状態に復元する。ランダマイザ１０７ｂは、符号データＬｏａｄ Ｄａｔａ＜５１０：０＞を復元したデータである、復元済の符号データＳｔｏｒｅ Ｄａｔａ＜５１０：０＞をページバッファ１０２に書き込む。
【００４７】
以上説明したＥＣＣモードでのデータ読み出し動作（デコード、及びデランダマイズ）におけるデータの流れは、図２において、実線（Ｄｅｃｏｄｅでのデータの流れを示す）、及び一点鎖線（Ｅｎｃｏｄｅ／Ｄｅｃｏｄｅ共通のデータの流れを示す）により示される。また、ＥＣＣモードでのデータ読み出し動作における処理において、ページバッファ１０２への書き込みデータである符号データＳｔｏｒｅ Ｄａｔａは、数学的に下記の式で表される。なお、この式では、排他的論理和演算をＸＯＲで表すこととして、ページバッファ１０２からの読み出しデータである符号データＬｏａｄ Ｄａｔａ、エラー検出信号ＥＰ、及びランダムシードＲＳを用いている。
すなわち、
Ｓｔｏｒｅ Ｄａｔａ＝（Ｌｏａｄ Ｄａｔａ）ＸＯＲ（ＥＰ）ＸＯＲ（ＲＳ）
で表わされる。
なお、この符号データＳｔｏｒｅ Ｄａｔａは、通常モードのデータ読み出し動作においては、カラムコーディング回路１０３から選択信号Ｓｅｌ＿Ａ（カラムアドレス）をページバッファ１０２に与えることにより、パリティデータを除くデータを、Ｉ／Ｏパッド１０６を介して外部に出力することができる。
【００４８】
また、ＥＣＣ回路１０７ａのうち、エンコーダ部４０は、Ｐａｒｉｔｙ Ｇｅｎｅｒａｔｉｏｎ Ｃｉｒｃｕｉｔ（パリティ生成回路）４１を有する。パリティ生成回路４１は、ランダマイザ１０７ｂから入力されるランダマイズ処理後のデータを生成多項式で除算して、パリティデータを生成し、生成したパリティデータを、ページバッファ１０２（後述するページバッファ１０２ｃ）に対して出力する。
ＥＣＣモードでのデータ書込み動作（エンデコード、及びランダマイズ）では、ランダマイザ１０７ｂは、ページバッファ１０２から入力される、符号データＬｏａｄ Ｄａｔａ＜５１０：０＞をランダマイズする処理を行う。この際、ランダマイザ１０７ｂでは、エラー検出信号ＥＰ＜５１０：０＞を固定データ（オール０）とし、すなわちエラー検出信号ＥＰ＜５１０：０＞＝０とする。ランダマイザ１０７ｂは、符号データＬｏａｄ Ｄａｔａ＜５１０：０＞と、ランダムシードＲＳ＜５１０：０＞と、エラー検出信号ＥＰ＜５１０：０＞との排他的論理和演算を実行し、パリティ生成回路４１に対して出力する符号データＳｔｏｒｅ Ｄａｔａを生成する。
【００４９】
このパリティ生成回路４１への書き込みデータである符号データＳｔｏｒｅ Ｄａｔａは、数学的に下記の式で表される。なお、この式では、排他的論理和演算をＸＯＲで表すこととして、ページバッファ１０２からの読み出しデータである符号データＬｏａｄ Ｄａｔａ、エラー検出信号ＥＰ、及びランダムシードＲＳを用いている。
すなわち、デコード時と同じく、
Ｓｔｏｒｅ Ｄａｔａ＝（Ｌｏａｄ Ｄａｔａ）ＸＯＲ（ＥＰ）ＸＯＲ（ＲＳ）
で表わされる。
また、パリティ生成回路４１は、ランダマイザ１０７ｂから入力される符号データＳｔｏｒｅ Ｄａｔａからパリティデータを生成する。
ランダマイザ１０７ｂは、パリティデータを除く符号データＳｔｏｒｅ Ｄａｔａを、パリティ生成回路４１は、パリティデータを、ページバッファ１０２に対して出力する。これらの合成したデータが符号データＳｔｏｒｅ Ｄａｔａとして、ページバッファ１０２に書き込まれる。
【００５０】
このように、ＥＣＣ回路１０７ａとランダマイザ１０７ｂとを一体的に構成し、図１に示す様にＥＣＣ Ｂｕｓに設けたので、ＥＣＣのエンコード時にランダマイズ、及びエンコードを、デコード時にデコード、及びデランダマイズを、それぞれ同時に実行することができる。
【００５１】
図１に戻って、ページバッファ１０２を構成するページバッファ１０２ａ〜１０２ｄは、全て同一の回路構成からなり、以下にその回路構成について、図３〜図７を用いて詳細に説明する。図３は、図１に示すページバッファ１０２、カラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８に対応する部分の簡略的な構成を示す図である。また、図４は、図２に示すＰＢ ４ＩＯ ユニットの内部の構成、及びＰＢ ユニットの内部の構成を示す図である。また、図５は、ＰＢ ユニットの内部の回路構成を示す図である。また、図６は、ＰＢ ユニットの内部の他の回路構成を示す図である。また、図７は、図５、及び図６に示すビット内部回路５０＿ｉ（ｉ＝０〜７の整数）の回路構成を示す図である。
【００５２】
図３を参照して、図１に示すページバッファ１０２、カラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８に対応する部分は、４本分のＩＯ線からの４つのデータをラッチし、４本分のＩＯ線に対してデータを書き込むＰＢ ４ＩＯ ユニットを有する。
【００５３】
図３においては、１０個のＰＢ ４ＩＯとして、ＰＢ０ ＩＯ ０１２３、ＰＢ０ ＩＯ ４５６７、ＰＢ１ＩＯ ０１２３、ＰＢ１ ＩＯ ４５６７、ＰＢ２ ＩＯ ０１２３、ＰＢ２ ＩＯ ４５６７、ＰＢ３ ＩＯ ０１２３、ＰＢ３ ＩＯ ４５６７、ＰＢ４ ＩＯ ０１２３、ＰＢ４ ＩＯ ４５６７を示している。以下、ＰＢ０ ＩＯ ０１２３をＰＢ ４ＩＯ ユニット３０＿０、ＰＢ０ ＩＯ ４５６７をＰＢ ４ＩＯ ユニット３０＿１、ＰＢ１ＩＯ ０１２３をＰＢ ４ＩＯ ユニット３０＿２、ＰＢ１ ＩＯ ４５６７をＰＢ ４ＩＯ ユニット３０＿３、ＰＢ２ ＩＯ ０１２３をＰＢ ４ＩＯ ユニット３０＿４、と呼ぶことがある。また、ＰＢ２ ＩＯ ４５６７をＰＢ ４ＩＯ ユニット３０＿５、ＰＢ３ ＩＯ ０１２３をＰＢ ４ＩＯ ユニット３０＿６、ＰＢ３ ＩＯ ４５６７をＰＢ ４ＩＯ ユニット３０＿７、ＰＢ４ ＩＯ ０１２３をＰＢ ４ＩＯ ユニット３０＿８、ＰＢ４ ＩＯ ４５６７をＰＢ ４ＩＯ ユニット３０＿９と呼ぶことがある。
【００５４】
ここで、ＩＯ線とは、後述するＰＢユニットにおいて、マルチプレクサ５２＿ｂとＰＢ制御回路６０との間に設けられる入出力線である。このＩＯ線は、本実施形態では、マルチプレクサ５２＿ｂと８個のビット回路５１＿０ａ〜５１＿７ａとを介して、８本のビット線のいずれか一本と電気的に接続される。すなわち、ＩＯ線は、メモリセルトランジスタに書き込むデータ或いはメモリセルトランジスタから読み出されるデータが行き来する信号線である。
【００５５】
図４（ａ）を参照して、図３に示すＰＢ ４ＩＯ ユニットは、同一の構成を有している。図４（ａ）では、図３に示すＰＢ ４ＩＯ ユニット３０＿０を代表として、その構成を示している。ＰＢ ４ＩＯ ユニット３０＿０は、４個のＰＢユニット３０＿００〜３０＿０３から構成される。
ＰＢユニット３０＿００〜３０＿０３各々は、活性レベル（以下、例としてＨレベルとする）の選択信号Ｓｅｌ＿Ａ＜０＞がカラムコーディング回路１０３から供給されると、自身に接続される１本のＩＯ線とＤａｔａ Ｂｕｓ（第２のデータバス；後述するデータバスＤａｔａ＿Ａ＜７：０＞）とを接続する。これにより、図４（ａ）に示すように、４本のＩＯ線からデータバスＤａｔａ＿Ａ＜３：０＞へ、４ビットの読み出しデータＤａｔａ＿Ｏｕｔ＿Ａ＜０＞〜Ｄａｔａ＿Ｏｕｔ＿Ａ＜３＞が読み出される。
【００５６】
また、ＰＢユニット３０＿００〜３０＿０３各々は、活性レベル（以下、例としてＨレベルとする）の選択信号Ｓｅｌ＿Ｂ＜０＞がＥＣＣカラムコーディング回路１０８から供給されると、自身に接続される１本のＩＯ線とＥＣＣ Ｂｕｓ（第１のデータバス；後述するデータバスＤａｔａ＿Ｂ＜１９：０＞）とを接続する。これにより、図４（ａ）に示すように、４本のＩＯ線からデータバスＤａｔａ＿Ｂ＜３：０＞へ、４ビットの読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂ＜０＞〜Ｄａｔａ＿Ｏｕｔ＿Ｂ＜３＞が読み出される。
【００５７】
図４（ｂ）を参照して、図４（ａ）に示すＰＢユニット各々は、回路構成が同一である８個のビット回路５１＿０ａ〜５１＿７ａと、マルチプレクサ５２＿ｂと、本願に特徴的部分であるＰＢ Ｃｏｎｔｒｏｌ Ｃｉｒｕｃｕｉｔ（ページバッファ制御回路）６０とから構成される。
ＭＵＸ（マルチプレクサ）５２＿ｂは、図１に示すカラムコーディング回路１０３またはＥＣＣカラムコーディング回路１０８からカラムアドレス信号（Ｓｕｂ ＢＬ Ｃｏｄｉｎｇ）が入力される。ＭＵＸ（マルチプレクサ）５２＿ｂは、このカラムアドレス信号（図５において選択信号ＤＩＯ＜ｉ＞で示す）に基づいて、ビット回路５１＿０ａ〜ビット回路５１＿７ａのうちいずれか一つを選択する。すなわち、マルチプレクサ５２＿ｂは、８本のビット線のうちのいずれか一本のビット線を、ＰＢ Ｃｏｎｔｒｏｌ Ｃｉｒｃｕｉｔ（ＰＢ制御回路）６０と接続する。
【００５８】
まず、図５、及び図７を参照して、１つのＰＢユニットの詳細な回路構成について説明する。
図７では、図５に示すビット内部回路５０＿０〜５０＿７各々の回路における、書き込み動作におけるデータのセンシング部、及びラッチ部、読み出し動作における信号線を駆動するドライバ部の構成を、具体的にトランジスタ、及びインバータ回路を用いて記載している。なお、図４（ｂ）に示すビット回路５１＿０ａ〜５１＿７ａとマルチプレクサ５２＿ｂとを合わせた回路が、ビット内部回路５０＿０〜５０＿７に相当する。すなわち、ビット内部回路は、選択信号ＤＩＯにより選択されるので、ビット回路とマルチプレクサ５２＿ｂの一部の機能を有している。
【００５９】
図７に示すように、ビット内部回路５０＿ｉ（ｉを整数として、ｉ＝０〜７の８台は同一構成の回路である）は、インバータ回路５１１、インバータ回路５１２、トランジスタ５１３、トランジスタ５１４、トランジスタ５１５、トランジスタ５２１、及びトランジスタ５２２から構成される。ここで、トランジスタ５１３、トランジスタ５１４、トランジスタ５１５、トランジスタ５２１、及びトランジスタ５２２は、Ｎチャネル型ＭＯＳ（Ｍｅｔａｌ Ｏｘｉｄｅ Ｓｅｍｉｃｏｎｄｕｃｔｏｒ）トランジスタである。
【００６０】
ビット内部回路５０＿ｉにおいて、ラッチ部は、インバータ回路５１１とインバータ回路５１２とから構成されている。ここで、インバータ回路５１１は、出力端子が接続点Ｎ２においてインバータ回路５１２の入力端子に接続され、入力端子が接続点Ｎ１においてインバータ回路５１２の出力端子に接続されている。
この接続点Ｎ１は、不図示のメモリセルトランジスタにビット線を介して接続される。接続点Ｎ１は、読み出し動作において、メモリセルトランジスタが記憶するデータがＤａｔａ＿ｉとして現れ、書き込み動作においてはメモリセルに書き込むべきデータがＤａｔａ＿ｉとして現れる。例えば、メモリセルトランジスタがＬ（ロウ）レベル（データ０とする）を記憶するとき、Ｄａｔａ＿ｉの電位はＬレベルとなり、一方、メモリセルトランジスタがＨ（ハイ）レベル（データ１とする）を記憶するとき、Ｄａｔａ＿ｉの電位はＨレベルとなる。
【００６１】
ビット内部回路５０＿ｉにおいて、ドライバ部は、トランジスタ５１５、及びトランジスタ５２２から構成される。
トランジスタ５２２は、ドレインが読み出し信号ＲＤの配線に接続され、ゲートが選択信号ＤＩＯ＜ｉ＞の配線に接続され、ソースがトランジスタ５１５のドレインに接続されている。
トランジスタ５１５は、ドレインがトランジスタ５２２のソースに接続され、ゲートが接続点Ｎ２に接続され、ソースが接地されている。
ここで、選択信号ＤＩＯ＜ｉ＞（ｉ＝０〜７）は、図４（ｂ）に示すＳｕｂ ＢＬ Ｃｏｄｉｎｇである。例えば、カラムコーディング回路１０３は不図示のアドレス制御回路から入力される３ビットのアドレス信号に基づいて、或いはＥＣＣカラムコーディング回路１０８はＥＣＣ回路１０７から入力される３ビットのアドレス信号に基づいて、選択信号ＤＩＯ＜ｉ＞のうちの１つの信号をＨレベルとする。これにより、図５に示すビット内部回路５０＿０〜５０＿７の１つのビット内部回路が選択される。
【００６２】
以上の構成により、メモリセルトランジスタからのデータ読み出し動作において、選択信号ＤＩＯ＜ｉ＞がＨレベルになると、読み出し信号ＲＤの論理レベルはＤａｔａ＿ｉの論理レベルと同じ論理レベルとなる。つまり、例えば読み出し信号ＲＤをＨレベルにプリチャージしておくことにより、Ｄａｔａ＿ｉがＨレベルのときは、トランジスタ５１５がオフ（非導通状態）、トランジスタ５２２がオン（導通状態）であり、ビット内部回路５０＿ｉは、読み出し信号ＲＤをＨレベルに維持する。一方、Ｄａｔａ＿ｉがＬレベルのときは、トランジスタ５１５がオン、トランジスタ５２２がオンであり、ビット内部回路５０＿ｉは、読み出し信号ＲＤをＨレベルからＬレベルに変化させる。
読み出し信号ＲＤの配線は、図５に示すように、ＰＢ制御回路６０に接続される。
第１の動作モード（ＥＣＣモード）では、選択信号Ｓｅｌ＿Ｂ（ＥＣＣカラムコーディング回路１０８が出力するカラムアドレス）が入力されると、読み出し信号ＲＤの配線はＥＣＣ Ｂｕｓに接続される。これにより、ＥＣＣ Ｂｕｓには、ビット内部回路５０＿ｉのＤａｔａ＿ｉがデータ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ｂとして読み出される。
【００６３】
一方、第２の動作モード（通常モード）では、選択信号Ｓｅｌ＿Ａ（カラムコーディング回路１０３が出力するカラムアドレス）が入力されると、読み出し信号ＲＤの配線は、Ｄａｔａ Ｂｕｓに接続される。これにより、Ｄａｔａ Ｂｕｓには、ビット内部回路５０＿ｉのＤａｔａ＿ｉがデータ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ａとして読み出される。
【００６４】
図７に戻って、ビット内部回路５０＿ｉにおいて、センシング部は、トランジスタ５１３、トランジスタ５１４、トランジスタ５２１から構成される。
トランジスタ５１３は、ドレインが接続点Ｎ１に接続され、ゲートが書き込み信号ＤＩの配線に接続され、ソースがトランジスタ５２１のドレインに接続されている。
トランジスタ５１４は、ドレインが接続点Ｎ２に接続され、ゲートが書き込み信号ｎＤＩの配線に接続され、ソースがトランジスタ５２１のドレインに接続されている。
トランジスタ５２１は、ドレインがトランジスタ５１３のソース、及びトランジスタ５１４のソースに接続され、ゲートが選択信号ＤＩＯ＜ｉ＞の配線に接続され、ソースが接地されている。
【００６５】
書き込み信号ＤＩ、及び書き込み信号ｎＤＩの配線は、図５に示すように、ＰＢ制御回路６０に接続される。後述するように、第１の動作モードでは選択信号Ｓｅｌ＿ＢによりデータバスＥＣＣ Ｂｕｓに接続され、ＥＣＣ Ｂｕｓからデータ書き込み信号Ｄａｔａ＿Ｉｎ＿Ｂが入力される。これにより、ＰＢ制御回路６０では、このデータ書き込み信号Ｄａｔａ＿Ｉｎ＿Ｂのレベルに応じて書き込み信号ＤＩ、及び書き込み信号ｎＤＩのいずれか一方をＬレベルからＨレベルに変化させ、他方をＬレベルに維持する。
一方、第２の動作モードでは、選択信号Ｓｅｌ＿ＡによりＤａｔａ Ｂｕｓに接続され、Ｄａｔａ Ｂｕｓからデータ書き込み信号Ｄａｔａ＿Ｉｎ＿Ａが入力される。これにより、ＰＢ制御回路６０は、このデータ書き込み信号Ｄａｔａ＿Ｉｎ＿Ａのレベルに応じて書き込み信号ＤＩ、及び書き込み信号ｎＤＩのいずれか一方をＬレベルからＨレベルに変化させ、他方をＬレベルに維持する。
【００６６】
以上の構成により、メモリセルトランジスタへのデータ書き込み動作において、選択信号ＤＩＯ＜ｉ＞がＨレベルになると、書き込み信号ＤＩ、及び書き込み信号ｎＤＩのレベルに応じて、ビット内部回路５０＿ｉのＤａｔａ＿ｉのレベルが決定する。具体的には、データ書き込み信号Ｄａｔａ＿Ｉｎ＿Ａ，またはデータ書き込み信号Ｄａｔａ＿Ｉｎ＿ＢがＬレベル（データ０）のとき、ＰＢ制御回路６０は、書き込み信号ＤＩをＨレベル、書き込み信号ｎＤＩをＬレベルとする。これにより、ビット内部回路５０＿ｉでは、トランジスタ５１３がオンし、トランジスタ５１４がオフする。そして、接続点Ｎ１はＬレベル、接続点Ｎ２はＨレベルとなり、Ｄａｔａ＿ｉの論理は、データバスの論理と同じくＬレベル（データ０）となる。
【００６７】
一方、データ書き込み信号Ｄａｔａ＿Ｉｎ＿Ａ，またはデータ書き込み信号Ｄａｔａ＿Ｉｎ＿ＢがＨレベル（データ１）のとき、ＰＢ制御回路６０は、書き込み信号ＤＩをＬレベル、書き込み信号ｎＤＩをＨレベルとする。これにより、ビット内部回路５０＿ｉでは、トランジスタ５１３がオフし、トランジスタ５１４がオンする。そして、接続点Ｎ１はＨレベル、接続点Ｎ２はＬレベルとなり、Ｄａｔａ＿ｉの論理は、データバスの論理と同じくＨレベル（データ１）となる。
【００６８】
図７に戻って、ＰＢ制御回路６０（転送部）の構成を説明する。
ＰＢ制御回路６０は、データバスからページバッファへのデータ転送を実行する書き込み部と、ページバッファからデータバスへのデータ転送を実行する読み出し部とからなる。
このうち、ＰＢ制御回路６０の読み出し部は、トランジスタ６１ａ、及びトランジスタ６１ｂから構成される。
トランジスタ６１ａ、及びトランジスタ６１ｂは、ＮＭＯＳトランジスタである。
トランジスタ６１ａは、ドレインが読み出し信号ＲＤの配線に接続され、ゲートが選択信号Ｓｅｌ＿Ａの配線に接続され、ソースがＤａｔａ Ｂｕｓ（第２のデータバス）に接続されている。トランジスタ６１ｂは、ドレインが読み出し信号ＲＤの配線に接続され、ゲートが選択信号Ｓｅｌ＿Ｂの配線に接続され、ソースがＥＣＣ Ｂｕｓ（第１のデータバス）に接続されている。
【００６９】
ここで、選択信号Ｓｅｌ＿Ａは、カラムコーディング回路１０３が、図１において不図示のアドレス制御回路から入力されるＡｄｄｒｅｓｓ Ａ、例えば複数ビットのアドレスに基づいて生成するカラムアドレス信号である。また、選択信号Ｓｅｌ＿Ｂは、ＥＣＣカラムコーディング回路１０８が、図１に示すＥＣＣ回路１０７から入力されるＡｄｄｒｅｓｓ Ｂ、例えば上記複数ビットのうちの一部のビットのアドレスに基づいて生成するカラムアドレス信号である。
【００７０】
このように、ＰＢ制御回路６０の読み出し部は、ＥＣＣモード（第１の動作モード）のデータ読み出し時において、Ｈレベルの選択信号Ｓｅｌ＿ＢがＥＣＣコーディング回路１０８から入力されると、トランジスタ６１ｂをオンさせて読み出し信号ＲＤの配線とＥＣＣ Ｂｕｓとを接続する。これにより、ビット内部回路５０＿０〜５０＿７に格納されたメモリセルトランジスタのデータ（ビット内部回路ではＤａｔａ＿ｉ）が、ＥＣＣ Ｂｕｓにデータ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ｂとして出力される。
【００７１】
また、ＰＢ制御回路６０の読み出し部は、通常モード（第２の動作モード）のデータ読み出し時において、Ｈレベルの選択信号Ｓｅｌ＿Ａがコーディング回路１０３から入力される。ＰＢ制御回路６０の読み出し部は、トランジスタ６１ａをオンさせて読み出し信号ＲＤの配線とＤａｔａ Ｂｕｓとを接続する。これにより、ビット内部回路５０＿０〜５０＿７に格納されたメモリセルトランジスタのデータが、Ｄａｔａ Ｂｕｓにデータ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ａとして出力される。
【００７２】
また、ＰＢ制御回路６０の読み出し部は、ページバッファ１０２ａ、及びページバッファ１０２ｃにおいて、メモリセルトランジスタ、またはメモリセルトランジスタに接続されるビット線に不良がある場合、次の構成を有している。すなわち、ＥＣＣモードのデータ読み出し時において、ＥＣＣ回路１０７に入力するデータが固定データ（この場合はデータ０に固定する）となるように、ＰＢ制御回路６０の読み出し部は、図５に示すように、不良情報格納部９０ａ、及びデータ固定部９０ｂを有している。
【００７３】
不良情報格納部９０ａは、インバータ回路９２、インバータ回路９３、トランジスタ９４、トランジスタ９５、及びトランジスタ９６から構成される。ここで、トランジスタ９４、トランジスタ９５、及びトランジスタ９６は、Ｎチャネル型ＭＯＳトランジスタである。
不良情報格納部９０ａにおいて、ラッチ部は、インバータ回路９２とインバータ回路９３とから構成されている。ここで、インバータ回路９２は、出力端子が接続点Ｎ４においてインバータ回路９３の入力端子に接続され、入力端子が接続点Ｎ３においてインバータ回路９３の出力端子に接続されている。
この接続点Ｎ３は、アンド回路９１の第１入力端子に接続される。接続点Ｎ３は、ラッチ部が記憶するデータが、欠陥を示す欠陥信号ＰＢ＿Ｄｅｆｃｅｔとして現れる。また、接続点Ｎ４は、ラッチ部が記憶するデータが、欠陥を示す欠陥信号ｎＰＢ＿Ｄｅｆｃｅｔとして現れる。
【００７４】
不良情報格納部９０ａにおいて、センシング部は、トランジスタ９４、トランジスタ９５、トランジスタ９６から構成される。
トランジスタ９４は、ドレインが接続点Ｎ３に接続され、ゲートが不良情報信号ＳＤＩの配線に接続され、ソースがトランジスタ９６のドレインに接続されている。
トランジスタ９５は、ドレインが接続点Ｎ４に接続され、ゲートが不良情報信号ｎＳＤＩの配線に接続され、ソースがトランジスタ９６のドレインに接続されている。
トランジスタ９６は、ドレインがトランジスタ９４のソース、及びトランジスタ９５のソースに接続され、ゲートがパワーオンリセット信号ＰＯＲ＿Ｍｏｄｅの配線に接続され、ソースが接地されている。
【００７５】
ここで、不良情報信号ＳＤＩ、及び不良情報信号ｎＳＤＩは、ＰＢ制御回路６０に接続されるビット線、当該ビット線に接続されるメモリセルトランジスタに不良が有るか否かを示す信号である。これらの不良情報信号は、製造後のテストにおいて、ＰＢ制御回路６０に接続されるビット線等に不良が有る場合、不良情報信号ＳＤＩがデータ０（Ｌレベル）、不良情報信号ｎＳＤＩがデータ１（Ｈレベル）とされる。一方、ＰＢ制御回路６０に接続されるビット線等に不良がない場合、不良情報信号ＳＤＩがＨレベル、不良情報信号ｎＳＤＩがＬレベルとされる。そして、これらの不良情報信号は、テスト後の製品出荷前において、ＰＢ制御回路６０の位置を示す選択信号Ｓｅｌ＿Ｂに関連付けられて、ＮＡＮＤ型フラッシュメモリ１０の例えばシステム用記憶領域に格納される。
また、パワーオンリセット信号ＰＯＲ＿Ｍｏｄｅは、ＮＡＮＤ型フラッシュメモリ１０の電源投入後の所定期間（不良情報信号をシステム用記憶領域からＰＢ制御回路６０に転送する期間）、Ｈレベルを維持する信号である。
【００７６】
以上の構成により、不良情報格納部９０ａは、ＮＡＮＤ型フラッシュメモリ１０の電源投入後に、ＰＢ制御回路６０に接続されるビット線等に不良が有る場合、パワーオンリセット信号ＰＯＲ＿ＭｏｄｅがＨレベルとなることにより、トランジスタ９４がオフ、トランジスタ９５がオンする。これにより、ノードＮ３がＨレベル、ノードＮ４がＬレベルとなり、欠陥信号ＰＢ＿ＤｅｆｃｅｔがＨレベルとなる。そして、不良情報格納部９０ａは、転送期間終了後、パワーオンリセット信号ＰＯＲ＿ＭｏｄｅがＬレベルとなることにより、以降のＮＡＮＤ型フラッシュメモリ１０に電源が投入されている期間、欠陥信号ＰＢ＿ＤｅｆｃｅｔをＨレベルに維持する。
【００７７】
また、不良情報格納部９０ａは、ＮＡＮＤ型フラッシュメモリ１０の電源投入後に、ＰＢ制御回路６０に接続されるビット線等に不良がない場合、パワーオンリセット信号ＰＯＲ＿ＭｏｄｅがＨレベルとなることにより、トランジスタ９４がオン、トランジスタ９５がオフする。これにより、ノードＮ３がＬレベル、ノードＮ４がＨレベルとなり、欠陥信号ＰＢ＿ＤｅｆｃｅｔがＬレベルとなる。そして、不良情報格納部９０ａは、転送期間終了後、パワーオンリセット信号ＰＯＲ＿ＭｏｄｅがＬレベルとなることにより、以降のＮＡＮＤ型フラッシュメモリ１０に電源が投入されている期間、欠陥信号ＰＢ＿ＤｅｆｃｅｔをＬレベルに維持する。
【００７８】
また、データ固定部９０ｂは、アンド回路９１、トランジスタ６１ｃを有している。ここで、トランジスタ６１ｃは、ＮＭＯＳトランジスタである。
アンド回路９１は、２入力１出力の論理積回路であり、第１入力端子が接続点Ｎ３に接続され、第２入力端子が選択信号Ｓｅｌ＿Ａの配線に接続され、出力端子は、トランジスタ６１ｃのゲートに接続される。
トランジスタ６１ｃは、ドレインが読み出し信号ＲＤの配線に接続され、ゲートがアンド回路９１の出力端子に接続され、ソースが接地されている。
【００７９】
以上の構成により、ＰＢ制御回路６０に接続されるビット線等に不良がない場合、データ固定部９０ｂは、欠陥信号ＰＢ＿ＤｅｆｃｅｔがＬレベルであるから、アンド回路９１の出力信号は常にＬレベルであり、トランジスタ６１ｃはオフする。このため、データ固定部９０ｂは実質何の動作も行わない。
一方、ＰＢ制御回路６０に接続されるビット線等に不良が有る場合、欠陥信号ＰＢ＿ＤｅｆｃｅｔがＨレベルとなっている。ＥＣＣ使用時、すなわちＥＣＣモードではアンド回路９１にＨレベルの選択信号Ｓｅｌ＿Ｂが入力されると、アンド回路９１の出力信号がＨレベルとなり、トランジスタ６１ｃがオンするので、ＥＣＣ Ｂｕｓ＿１は接地され、読み出しデータＤａｔａ＿Ｏｕｔ＿ＢはＬレベル（ＧＮＤレベル）に固定される。つまり、ＰＢ制御回路６０に接続されるビット線等に不良がある場合、ＥＣＣモードではＰＢ制御回路は、ＥＣＣ  Ｂｕｓ＿１に固定レベル（Ｌレベル）の読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂを出力するデータ固定回路として動作する。
【００８０】
なお、通常モードでのデータ読み出し時は、ＰＢ制御回路６０は選択信号Ｓｅｌ＿Ａで選択されるので、アンド回路９１の出力はＬレベルとなり、この追加回路であるデータ固定部９０ｂは実質動作しないことになる。もっとも、このアンド回路９１を使用せず、欠陥信号ＰＢ＿Ｄｅｆｅｃｔを直接トランジスタ９１ｃのゲートに入力すれば、ＰＢ制御回路６０に接続されるビット線等に不良が有る場合、読み出し信号ＲＤはＬレベルに固定される。つまり、ＰＢ制御回路６０は、通常モードで選択信号Ｓｅｌ＿Ａが入力されると、Ｄａｔａ Ｂｕｓ＿１に固定レベル（Ｌレベル）の読み出しデータＤａｔａ＿Ｏｕｔ＿Ａを出力し、ＥＣＣモードで選択信号Ｓｅｌ＿Ｂが入力されると、Ｌレベルの読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂを出力するデータ固定回路として動作する。
【００８１】
なお、図５に示す不良情報格納部９０ａ、及びデータ固定部９０ｂの構成は、図６に示す構成であってもよい。図６は、ＰＢ ユニットの内部の他の回路構成を示す図である。
なお、図６において図５と同一の部分には同一の符号を付し、その説明を省略する。
図６において、不良情報格納部９０ａついては図５に示すものと同じ構成だが、データ固定部９０ｂについては、データ固定部９０ｂ’としている。なお、不良情報格納部９０ａついて、接続点Ｎ４に現れる信号を欠陥信号ｎＰＢ＿Ｄｅｆｅｃｔとしている。
データ固定部９０ｂ’は、トランジスタ６１ｃのみから構成される。トランジスタ６１ｃは、ソースがＥＣＣ Ｂｕｓ（第１のデータバス）に接続されている。また、これにより、トランジスタ６１ｂは、ドレインが読み出し信号ＲＤの配線に接続され、ゲートが選択信号Ｓｅｌ＿Ｂの配線に接続され、ソースがトランジスタ６１ｃのドレインに接続されている。
【００８２】
この構成により、ＰＢ制御回路６０に接続されるビット線等に不良が有る場合、欠陥信号ｎＰＢ＿ＤｅｆｅｃｔがＬレベルとなるので、トランジスタ６１ｃがオフとなり、読み出し信号ＲＤのＥＣＣ Ｂｕｓ＿１への伝送パスが断たれることになる。このため、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂは、Ｐｕｌｌ Ｕｐ回路によりＨレベルに固定される。一方、ＰＢ制御回路６０に接続されるビット線等に不良がない場合、欠陥信号ｎＰＢ＿ＤｅｆｅｃｔはＨレベルとなり、トランジスタ６１ｃが常時オンとなる。これにより、読み出し信号ＲＤ、つまりメモリセルトランジスタのデータを、ＥＣＣ Ｂｕｓ＿１へ読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂとして読み出すことができる。
データ固定部９０ｂ’は、図６に示すデータ固定部９０ｂと比較して、読み出し信号ＲＤの配線とＥＣＣ Ｂｕｓ＿１との間で、トランジスタ６１ｂとトランジスタ６１ｃとが
直列回路となるが、アンド回路を不要とできるメリットがある。
【００８３】
また、図６に示すデータ固定部９０ｂ’において、例えばトランジスタ６１ｃを、読み出し信号ＲＤの配線とトランジスタ６１ａ、及びトランジスタ６１ｂのドレインとの間、すなわち読み出し信号ＲＤの配線とＰＢ制御回路６０との間に挿入する。このようにすれば、ＰＢ制御回路６０は、通常モードで選択信号Ｓｅｌ＿Ａが入力されると、Ｄａｔａ Ｂｕｓ＿１に固定レベル（Ｈレベル）の読み出しデータＤａｔａ＿Ｏｕｔ＿Ａを出力する。一方、ＰＢ制御回路６０は、ＥＣＣモードで選択信号Ｓｅｌ＿Ｂが入力されると、Ｈレベルの読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂを出力するデータ固定回路として動作する。
以上のような回路構成により、ＰＢ制御回路６０に接続されるビット線等に不良が有る場合、データＤａｔａ＿Ｏｕｔ＿ＡまたはＢデータＤａｔａ＿Ｏｕｔ＿ＢをＬレベルまたはＨレベルの固定値とすることができる。
【００８４】
図５に戻って、ＰＢ制御回路６０の書き込み部は、インバータ回路６２、インバータ回路６３、ナンド回路６４、ナンド回路６５、オア回路６６、インバータ回路６７、スイッチ６８、及びスイッチ６９から構成される。
インバータ回路６２は、論理反転回路であり、出力端子が書き込み信号ＤＩの配線に接続され、入力端子がナンド回路６４の出力端子に接続される。インバータ回路６３は、論理反転回路であり、出力端子が書き込み信号ｎＤＩの配線に接続され、入力端子がナンド回路６５の出力端子に接続される。
【００８５】
ナンド回路６４は、３入力１出力の否定的論理積回路であり、第１入力端子が書き込みイネーブル信号ｆＤｉｎＥｎａｂｌｅの配線に接続され、第２入力端子がオア回路６６の出力端子に接続され、第３入力端子がインバータ回路６７の出力端子に接続される。また、ナンド回路６４の出力端子は、インバータ回路６２の入力端子に接続される。
ナンド回路６５は、３入力１出力の否定的論理積回路であり、第１入力端子が書き込みイネーブル信号ｆＤｉｎＥｎａｂｌｅの配線に接続され、第２入力端子がオア回路６６の出力端子に接続され、第３入力端子がスイッチ６８の第１入出力端子、及びスイッチ６９の第１入出力端子に接続される。また、ナンド回路６５の出力端子は、インバータ回路６３の入力端子に接続される。
【００８６】
オア回路６６は、２入力１出力の論理和回路であり、第１入力端子がアンド回路７１の出力に接続され、第２入力端子が選択信号Ｓｅｌ＿Ａの配線に接続される。また、オア回路６６の出力端子は、ナンド回路６４の第２入力端子、及びナンド回路６５の第２入力端子に接続される。アンド回路７１は、選択信号Ｓｅｌ＿Ｂと欠陥信号ｎＰＢ＿Ｄｅｆｅｃｔとの論理積を演算する。これにより、欠陥信号ｎＰＢ＿ＤｅｆｅｃｔがＨレベルの場合（不良でない場合）は、選択信号Ｓｅｌ＿ＢがＨレベルになることにより、ナンド回路６５の第２入力端子がＨレベルとなり、書き込みの条件の１つを満たすことができる。一方、欠陥信号ｎＰＢ＿ＤｅｆｅｃｔがＬレベルの場合（不良ページバッファである）は選択信号Ｓｅｌ＿Ｂの動作モードにおいて、ナンド回路６５の第２入力端子がＨレベルになることはなく、書き込みが行われなくなる。
インバータ回路６７は、論理反転回路であり、入力端子がスイッチ６８の第１入出力端子、及びスイッチ６９の第１入出力端子に接続され、出力端子がナンド回路６４の第３入力端子に接続される。
【００８７】
スイッチ６８は、双方向に信号を伝達するスイッチであり、第１入出力端子がインバータ回路６７の入力端子、及びナンド回路６５の第３入力端子に接続され、第２入出力端子がＤａｔａ Ｂｕｓに接続される。
スイッチ６９は、双方向に信号を伝達するスイッチであり、第１入出力端子がインバータ回路６７の入力端子、及びナンド回路６５の第３入力端子に接続され、第２入出力端子がＥＣＣ Ｂｕｓに接続される。なお、上記双方向スイッチがどちらも非選択の場合にインバータ回路６７の入力が不定にならないように、インバータ回路６７の入力がＰＭＯＳトランジスタによりＰｕｌｌ Ｕｐ（プルアップ）処理される。
【００８８】
以上の構成により、ＰＢ制御回路６０の書き込み部は、ＥＣＣモード（第１の動作モード）のデータ書き込み時において、書き込みイネーブル信号ｆＤｉｎＥｎａｂｌｅがＨレベルに、選択信号Ｓｅｌ＿ＢがＨレベルになると、スイッチ６９がオンする。これにより、ＰＢ制御回路６０の書き込み部は、ＥＣＣ Ｂｕｓから入力されるデータ書き込み信号Ｄａｔａ＿Ｉｎ＿Ｂのレベルに応じて、書き込み信号ＤＩ、及び書き込み信号ｎＤＩのいずれか一方をＬレベルからＨレベルに変化させる。具体的には、データ書き込み信号Ｄａｔａ＿Ｉｎ＿ＢがＬレベル（データ０）のとき、書き込み信号ＤＩをＨレベルに変化させる。これにより、ビット内部回路５０＿０〜５０＿７のうち、いずれか１つのビット内部回路のＤａｔａ＿ｉが、Ｌレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ０が書き込まれる。
【００８９】
一方、データ書き込み信号Ｄａｔａ＿Ｉｎ＿ＢがＨレベル（データ１）のとき、書き込み信号ｎＤＩをＨレベルに変化させる。これにより、ビット内部回路５０＿０〜５０＿７のうち、いずれか１つのビット内部回路のＤａｔａ＿ｉが、Ｈレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ１が書き込まれる。
【００９０】
また、ＰＢ制御回路６０の書き込み部は、通常モード（第２の動作モード）のデータ書き込み時において、書き込みイネーブル信号ｆＤｉｎＥｎａｂｌｅがＨレベルに、選択信号Ｓｅｌ＿ＡがＨレベルになると、スイッチ６８がオンする。これにより、ＰＢ制御回路６０の書き込み部は、Ｄａｔａ Ｂｕｓから入力されるデータ書き込み信号Ｄａｔａ＿Ｉｎ＿Ａのレベルに応じて、書き込み信号ＤＩ、及び書き込み信号ｎＤＩのいずれか一方をＬレベルからＨレベルに変化させる。具体的には、データ書き込み信号Ｄａｔａ＿Ｉｎ＿ＡがＬレベル（データ０）のとき、書き込み信号ＤＩをＨレベルに変化させる。これにより、ビット内部回路５０＿０〜５０＿７のうち、いずれか１つのビット内部回路のＤａｔａ＿ｉが、Ｌレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ０が書き込まれる。
【００９１】
一方、データ書き込み信号Ｄａｔａ＿Ｉｎ＿ＡがＨレベル（データ１）のとき、書き込み信号ｎＤＩをＨレベルに変化させる。これにより、ビット内部回路５０＿０〜５０＿７のうち、いずれか１つのビット内部回路のＤａｔａ＿ｉが、Ｈレベルになり、その後のプログラム処理により、メモリセルトランジスタにデータ１が書き込まれる。
【００９２】
このように、ＰＢ制御回路６０は、ページバッファ１０２のＰＢユニットを構成するビット内部回路５０＿０〜５０＿７のうち、選択信号ＤＩＯ＜ｉ＞により選択されたビット内部回路にビット線を介して接続されるメモリセルトランジスタと、データバス（第１のデータバス、および第２のデータバス）との間のデータ転送を制御する回路である。
【００９３】
また、上述した読み出し信号ＲＤの配線、書き込み信号ＤＩの配線、及び書き込み信号ｎＤＩの配線（ＩＯ線）は、ＰＢユニットを構成するビット内部回路５０＿０〜５０＿７とＰＢ制御回路６０とを接続する配線であり、これらの配線はＰＢユニットのデータ転送用の入出力配線である。従って、本実施形態において、ＰＢ制御回路６０は、ページバッファ１０２の入出力部と、第１、及び第２のデータバス（ＥＣＣ Ｂｕｓ、Ｄａｔａ Ｂｕｓ）との間で、書き込みデータ、及び読み出しデータを転送する。
【００９４】
図４（ａ）に戻って、以上のＰＢ制御回路６０の構成により、ＰＢ ４ＩＯユニット３０＿０は次に説明する動作を実行する。
ＰＢ ４ＩＯ ユニット３０＿０は、Ｈレベルの選択信号Ｓｅｌ＿Ａ＜０＞がカラムコーディング回路１０３から入力されると、４本分のページバッファの入出力線（図５に示すデータ読み出し線ＲＤ；ＩＯ線ＩＯ＿０〜ＩＯ＿３とする）を、４ビット分のＤａｔａ Ｂｕｓ（ここではデータバスＤａｔａ＿Ａ＜３：０＞とする）にそれぞれ接続する。これにより、ＰＢ ４ＩＯ ユニット３０＿０は、データバスＤａｔａ＿Ａ＜３：０＞にデータ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ａ＜０＞〜Ａ＜３＞（以下、データ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ａ＜３：０＞とする）を出力する。
【００９５】
また、ＰＢ ４ＩＯ ユニット３０＿０は、Ｈレベルの選択信号Ｓｅｌ＿Ｂ＜０＞がＥＣＣカラムコーディング回路１０８から入力されると、４本分のページバッファの入出力線ＩＯ線ＩＯ＿０〜ＩＯ＿３を、４ビット分のＥＣＣ Ｂｕｓ（ここでは、データバスＤａｔａ＿Ｂ＜３：０＞とする）にそれぞれ接続する。これにより、ＰＢ ４ＩＯ ユニット３０＿０は、データバスＤａｔａ＿Ｂ＜３：０＞にデータ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ｂ＜０＞〜Ｂ＜３＞（以下、データ読み出し信号Ｄａｔａ＿Ｏｕｔ＿Ｂ＜３：０＞とする）を出力する。
【００９６】
図３に戻って、以上のＰＢ ４ＩＯユニット３０＿０の構成により、図３に示すデータ読み出し動作において、ページバッファ１０２、及びカラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８（ここでは、データ読み出しモデルとする）は、次に説明する動作を実行する。
なお、図３に示すＰＢ ４ＩＯユニット３０＿１〜３０＿９に接続されるページバッファの入出力線（図５、及び図６に示すデータ読み出し線ＲＤ）を、これらのＰＢ ４ＩＯユニットの順番に、それぞれ次のように呼ぶ。すなわち、ＩＯ線ＩＯ＿４〜ＩＯ＿７、ＩＯ線ＩＯ＿８〜ＩＯ＿１１、ＩＯ線ＩＯ＿１２〜ＩＯ＿１５、ＩＯ線ＩＯ＿１６〜ＩＯ＿１９、ＩＯ線ＩＯ＿２０〜ＩＯ＿２３、ＩＯ線ＩＯ＿２４〜ＩＯ＿２７、ＩＯ線ＩＯ＿２８〜ＩＯ＿３１、ＩＯ線ＩＯ＿３２〜ＩＯ＿３５、ＩＯ線ＩＯ＿３６〜ＩＯ＿３９とする。
また、Ｄａｔａ Ｂｕｓは、８ビット幅のバスであり、これらをデータバスＤａｔａ＿Ａ＜７：０＞とする。また、ＥＣＣ Ｂｕｓは、２０ビット幅のバスであり、これらをデータバスＤａｔａ＿Ｂ＜１９：０＞とする。
【００９７】
通常モード（第２の動作モード）では、カラムコーディング回路１０３は、選択信号Ｓｅｌ＿Ａ＜０＞〜Ｓｅｌ＿Ａ＜４＞の５つのカラムアドレスのうち１つのカラムアドレスをＨレベル、残りの４つのカラムアドレスをＬレベルに維持して、データ読み出しモデルに対して出力する。
例えば、通常モードにおいて、選択信号Ｓｅｌ＿Ａ＜０＞〜Ｓｅｌ＿Ａ＜４＞の順番に、選択信号を５回、データ読み出しモデルに与えると、次のようにＩＯ線ＩＯ＿０〜ＩＯ＿３９の４０ビットのデータがデータバスＤａｔａ＿Ａ＜７：０＞に順次読み出される。
【００９８】
選択信号Ｓｅｌ＿Ａ＜０＞がＨレベルになると、ＰＢ ４ＩＯユニット３０＿０、及びＰＢ ４ＩＯユニット３０＿１は、それぞれのＰＢ制御回路６０におけるトランジスタ６１ａがオンし、ＩＯ線ＩＯ＿０〜ＩＯ＿７とデータバスＤａｔａ＿Ａ＜７：０＞とを接続する。これにより、ＰＢ ４ＩＯユニット３０＿０、及びＰＢ ４ＩＯユニット３０＿１は、データバスＤａｔａ＿Ａ＜７：０＞に、読み出しデータＤａｔａ＿Ｏｕｔ＿Ａ＜７：０＞（ＩＯ線ＩＯ＿０〜ＩＯ＿７のデータ）を出力する。
【００９９】
次に、選択信号Ｓｅｌ＿Ａ＜１＞がＨレベルになると、ＰＢ ４ＩＯユニット３０＿２、及びＰＢ ４ＩＯユニット３０＿３は、それぞれのＰＢ制御回路６０におけるトランジスタ６１ａがオンし、ＩＯ線ＩＯ＿８〜ＩＯ＿１５とデータバスＤａｔａ＿Ａ＜７：０＞とを接続する。これにより、ＰＢ ４ＩＯユニット３０＿２、及びＰＢ ４ＩＯユニット３０＿３は、データバスＤａｔａ＿Ａ＜７：０＞に、読み出しデータＤａｔａ＿Ｏｕｔ＿Ａ＜７：０＞（ＩＯ線ＩＯ＿８〜ＩＯ＿１５のデータ）を出力する。
【０１００】
次に、選択信号Ｓｅｌ＿Ａ＜２＞がＨレベルになると、ＰＢ ４ＩＯユニット３０＿４、及びＰＢ ４ＩＯユニット３０＿５は、それぞれのＰＢ制御回路６０におけるトランジスタ６１ａがオンし、ＩＯ線ＩＯ＿１６〜ＩＯ＿２３とデータバスＤａｔａ＿Ａ＜７：０＞とを接続する。これにより、ＰＢ ４ＩＯユニット３０＿４、及びＰＢ ４ＩＯユニット３０＿５は、データバスＤａｔａ＿Ａ＜７：０＞に、読み出しデータＤａｔａ＿Ｏｕｔ＿Ａ＜７：０＞（ＩＯ線ＩＯ＿１６〜ＩＯ＿２３のデータ）を出力する。
【０１０１】
次に、選択信号Ｓｅｌ＿Ａ＜３＞がＨレベルになると、ＰＢ ４ＩＯユニット３０＿６、及びＰＢ ４ＩＯユニット３０＿７は、それぞれのＰＢ制御回路６０におけるトランジスタ６１ａがオンし、ＩＯ線ＩＯ＿２４〜ＩＯ＿３１とデータバスＤａｔａ＿Ａ＜７：０＞とを接続する。これにより、ＰＢ ４ＩＯユニット３０＿６、及びＰＢ ４ＩＯユニット３０＿７は、データバスＤａｔａ＿Ａ＜７：０＞に、読み出しデータＤａｔａ＿Ｏｕｔ＿Ａ＜７：０＞（ＩＯ線ＩＯ＿２４〜ＩＯ＿３１のデータ）を出力する。
【０１０２】
最後に、選択信号Ｓｅｌ＿Ａ＜４＞がＨレベルになると、ＰＢ ４ＩＯユニット３０＿８、及びＰＢ ４ＩＯユニット３０＿９は、それぞれのＰＢ制御回路６０におけるトランジスタ６１ａがオンし、ＩＯ線ＩＯ＿３２〜ＩＯ＿３９とデータバスＤａｔａ＿Ａ＜７：０＞とを接続する。これにより、ＰＢ ４ＩＯユニット３０＿８、及びＰＢ ４ＩＯユニット３０＿９は、データバスＤａｔａ＿Ａ＜７：０＞に、読み出しデータＤａｔａ＿Ｏｕｔ＿Ａ＜７：０＞（ＩＯ線ＩＯ＿３２〜ＩＯ＿３９のデータ）を出力する。
【０１０３】
このようにして、選択信号Ｓｅｌ＿Ａを５回、データ読み出しモデルに供給すると、ＰＢ ４ＩＯユニット３０＿０〜３０＿９は、ＰＢ制御回路６０により、ＩＯ線ＩＯ＿０〜ＩＯ＿３９を８本ずつ、データバスＤａｔａ＿Ａ＜７：０＞に接続する。これにより、合計４０ビットのメモリセルトランジスタの記憶するデータを、ビット線、及びＩＯ線ＩＯ＿０〜ＩＯ＿３９を介してＤａｔａ Ｂｕｓに読み出すことができる。
【０１０４】
また、ＥＣＣモード（第１の動作モード）では、ＥＣＣカラムコーディング回路１０８は、選択信号Ｓｅｌ＿Ｂ＜０＞〜Ｓｅｌ＿Ｂ＜１＞の２つのカラムアドレスのうち１つのカラムアドレスをＨレベル、残りの１つのカラムアドレスをＬレベルに維持して、データ読み出しモデルに対して出力する。
例えば、ＥＣＣモードにおいて、選択信号Ｓｅｌ＿Ｂ＜０＞〜Ｓｅｌ＿Ｂ＜１＞の順番に、選択信号を２回、データ読み出しモデルに与えると、次のようにＩＯ線ＩＯ＿０〜ＩＯ＿３９の４０ビットのデータがデータバスＤａｔａ＿Ｂ＜１９：０＞に順次読み出される。
【０１０５】
選択信号Ｓｅｌ＿Ｂ＜０＞がＨレベルになると、ＰＢ ４ＩＯユニット３０＿０、３０＿２、３０＿４、３０＿６、及び３０＿８は、それぞれのＰＢ制御回路６０におけるトランジスタ６１ｂがオンする。ＰＢ ４ＩＯユニット３０＿０、３０＿２、３０＿４、３０＿６、及び３０＿８は、それぞれＩＯ線ＩＯ＿０〜ＩＯ＿３、ＩＯ＿８〜ＩＯ＿１１、ＩＯ＿１６〜ＩＯ＿１９、ＩＯ＿２４〜ＩＯ＿２７、ＩＯ＿３２〜ＩＯ＿３５とデータバスＤａｔａ＿Ｂ＜１９：０＞とを接続する。これにより、ＰＢ ４ＩＯユニット３０＿０、３０＿２、３０＿４、３０＿６、及び３０＿８は、データバスＤａｔａ＿Ｂ＜１９：０＞に、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂ＜１９：０＞（ＩＯ線ＩＯ＿０〜ＩＯ＿３、ＩＯ＿８〜ＩＯ＿１１、ＩＯ＿１６〜ＩＯ＿１９、ＩＯ＿２４〜ＩＯ＿２７、ＩＯ＿３２〜ＩＯ＿３５のデータ）を出力する。
【０１０６】
次に、選択信号Ｓｅｌ＿Ｂ＜１＞がＨレベルになると、ＰＢ ４ＩＯユニット３０＿１、３０＿３、３０＿５、３０＿７、及び３０＿９は、それぞれのＰＢ制御回路６０におけるトランジスタ６１ａがオンする。ＰＢ ４ＩＯユニット３０＿１、３０＿３、３０＿５、３０＿７、及び３０＿９は、それぞれＩＯ線ＩＯ＿４〜ＩＯ＿７、ＩＯ＿１２〜ＩＯ＿１５、ＩＯ＿２０〜ＩＯ＿２３、ＩＯ＿２８〜ＩＯ＿３１、ＩＯ＿３６〜ＩＯ＿３９とデータバスＤａｔａ＿Ｂ＜１９：０＞とを接続する。これにより、ＰＢ ４ＩＯユニット３０＿１、３０＿３、３０＿５、３０＿７、及び３０＿９は、データバスＤａｔａ＿Ｂ＜１９：０＞に、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂ＜１９：０＞（ＩＯ線ＩＯ＿４〜ＩＯ＿７、ＩＯ＿１２〜ＩＯ＿１５、ＩＯ＿２０〜ＩＯ＿２３、ＩＯ＿２８〜ＩＯ＿３１、ＩＯ＿３６〜ＩＯ＿３９のデータ）を出力する。
【０１０７】
このようにして、選択信号Ｓｅｌ＿Ｂを２回、データ読み出しモデルに供給すると、ＰＢ ４ＩＯユニット３０＿０〜３０＿９は、ＰＢ制御回路６０により、ＩＯ線ＩＯ＿０〜ＩＯ＿３９を２０本ずつ、データバスＤａｔａ＿Ｂ＜１９：０＞に接続する。これにより、合計４０ビットのメモリセルトランジスタの記憶するデータを、ビット線、及びＩＯ線ＩＯ＿０〜ＩＯ＿３９を介してＥＣＣ Ｂｕｓに読み出すことができる。
例えば、通常モードでは、ＩＯ線ＩＯ＿０〜ＩＯ＿３、ＩＯ＿８〜ＩＯ＿１１、ＩＯ＿１６〜ＩＯ＿１９、ＩＯ＿２４〜ＩＯ＿２７、ＩＯ＿３２〜ＩＯ＿３５のデータは、選択信号を５回与えなければ、Ｄａｔａ Ｂｕｓに読み出すことができなかった。これに対して、ＥＣＣモードでは、選択信号を１回与えれば（選択信号Ｓｅｌ＿Ｂ＜０＞を与えれば）、ＩＯ線ＩＯ＿０〜ＩＯ＿３、ＩＯ＿８〜ＩＯ＿１１、ＩＯ＿１６〜ＩＯ＿１９、ＩＯ＿２４〜ＩＯ＿２７、ＩＯ＿３２〜ＩＯ＿３５のデータを、ＥＣＣ Ｂｕｓに読み出すことができる。
【０１０８】
また、図８は、図１に示すページバッファ１０２、カラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８に対応する部分のデータ書き込み動作を説明するための図である。
データ書き込み動作においても、ＰＢ ４ＩＯユニット３０＿０の動作により、ページバッファ１０２、及びカラムコーディング回路１０３、及びＥＣＣカラムコーディング回路１０８（ここでは、データ書き込みモデルとする）は、データ書き込み動作を実行する。
データ書き込みモデルでは、データの転送を図３に示す方向と逆方向に処理を行なうだけであるので、詳細な説明は省略する。
【０１０９】
データ書き込みモデルでは、例えば、通常モードでは、ＩＯ線ＩＯ＿０〜ＩＯ＿３、ＩＯ＿８〜ＩＯ＿１１、ＩＯ＿１６〜ＩＯ＿１９、ＩＯ＿２４〜ＩＯ＿２７、ＩＯ＿３２〜ＩＯ＿３５へ与えるデータは、選択信号を５回与えなければ、Ｄａｔａ Ｂｕｓから書き込むことができなかった。これに対して、ＥＣＣモードでは、選択信号を１回与えれば（選択信号Ｓｅｌ＿Ｂ＜０＞を与えれば）、ＩＯ線ＩＯ＿０〜ＩＯ＿３、ＩＯ＿８〜ＩＯ＿１１、ＩＯ＿１６〜ＩＯ＿１９、ＩＯ＿２４〜ＩＯ＿２７、ＩＯ＿３２〜ＩＯ＿３５へ与えるデータを、ＥＣＣ Ｂｕｓから書き込むことができる。
【０１１０】
このように、本実施形態のＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）は、第１のデータバス（データバスＤａｔａ＿Ｂ＜１９：０＞）と、第１のデータバスと異なる本数から構成され、第１のデータバスとは独立して設けられる第２のデータバス（データバスＤａｔａ＿Ａ＜７：０＞）と、を備える。また、ＮＡＮＤ型フラッシュメモリ１０は、データ転送部（ＰＢ ４ＩＯユニット３０＿０〜３０＿９各々におけるＰＢ制御回路６０）を備える。データ転送部は、第１の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち第１のデータバスと同じ本数のビット線と、第１のデータバスとを接続してデータを転送する。一方、データ転送部は、第２の動作モードによりメモリセルとの間でデータを転送する場合、複数のビット線のうち第２のデータバスと同じ本数のビット線と、第２のデータバスと、を接続してデータを転送する。
【０１１１】
また、ビット線を、ｎ（ｎはｐとｑの公倍数であり、ｐ、及びｑはｐ＞ｑである自然数）本のビット線とすると、次の構成となっている。すなわち、第１のデータバスはｐ本であり、第２のデータバスはｑ本であって、データ転送部は、第１の動作モードでは、（ｎ／ｐ）本のアドレス信号が入力されると、ｐ本のビット線とｐ本の第１のデータバスとの接続を行い、一方、第２の動作モードでは、（ｎ／ｑ）本のアドレス信号が入力されると、ｑ本ビット線と第２のデータバスとの接続を行う。
【０１１２】
また、ＮＡＮＤ型フラッシュメモリ１０は、メモリアレイ１０１と、メモリアレイ１０１からページ単位でデータを読み出し、メモリアレイ１０１から読み出された読み出しデータを格納するページバッファ１０２を備える。また、ＮＡＮＤ型フラッシュメモリ１０は、ページバッファ１０２から転送された読み出しデータに対して誤りを訂正し、この訂正された読み出しデータをページバッファ１０２に書き戻すＥＣＣ回路１０７（ＥＣＣ部）と、ページバッファに書き戻された読み出しデータを出力するＩ／Ｏパッド１０６（インターフェース部）と、を備える。このＥＣＣ Ｂｕｓは、ＥＣＣ回路１０７に接続され、Ｄａｔａ Ｂｕｓは、Ｉ／Ｏパッド１０６に接続される。
【０１１３】
また、ＮＡＮＤ型フラッシュメモリ１０において、ページバッファ１０２は、Ｉ／Ｏパッド１０６に入力された書き込みデータを格納し、ＥＣＣ回路１０７は、ページバッファから転送された書き込みデータに対してパリティデータを生成し、パリティデータ及び書き込みデータをページバッファに書き戻す。
【０１１４】
これにより、ページバッファ１０２から複数のデータバス（本実施形態ではＥＣＣ Ｂｕｓ、Ｄａｔａ Ｂｕｓ）を用意し、それぞれについて独立したカラムコーディング（Ｃｏｌｕｍｎ Ｃｏｄｉｎｇ）、すなわちアドレス制御を可能にすることができる。
本実施形態では、ページバッファ１０２の入出力線（上記例で言えばＩＯ＿０〜ＩＯ＿３９）から、すなわちページバッファに直結した部分から独立なデータバスの構成、および独立なアドレス制御としているところが特徴である。
そのため、本実施形態における半導体記憶装置では、以下に述べる特徴的な効果を奏することができる。
【０１１５】
（１）第１の動作モード（本実施形態ではＥＣＣモード）において、バス幅を広げ、高速化できる。
本実施形態の説明では、１回のカラムアドレス入力により、第２の動作モード（通常モード）では、Ｄａｔａ Ｂｕｓに８ビットのデータを転送し、ＥＣＣモードでは２０ビットのデータを転送する場合に説明した。このように、Ａｄｄｒｅｓｓ＿Ｂの入力（選択信号Ｓｅｌ＿ＢのＰＢ制御回路６０への入力）次第では、すなわちページバッファ１０２へのカラムコーディング次第では、簡単にバス幅を広げることができる。例えば、１０２４個のＰＢユニットでカラムアドレスを２アドレスとすれば、ＥＣＣモードではＥＣＣ Ｂｕｓを５１２bitのバス幅に広げてデータ転送できる。
また、ページバッファに直結した部分から独立なデータバスの構成、および独立なアドレス制御としている。そのため、従来のように、Ｄａｔａ Ｂｕｓの一部を共有してＥＣＣ回路へデータ転送する場合に比べて、高速なデータ転送が可能になる。
特に、不良のＰＢユニットについては、ＰＢ制御回路６０が固定データをＥＣＣ Ｂｕｓを介してＥＣＣ回路１０７へ転送するので、ＥＣＣ処理においてカラム置換回路１０４で救済処理した後のデータをＥＣＣ Ｂｕｓを介してＥＣＣ回路１０７に転送する必要はなくなる。そのため、バス幅の拡大されたＥＣＣ Ｂｕｓの径路にカラム置換回路１０４を配置する必要が無くなる。このため、カラム置換回路１０４での救済処理に要する時間だけ、ＥＣＣ処理の際のページバッファからＥＣＣ回路へのデータ転送の時間を短縮できる。また、ＥＣＣ処理に際してＤａｔａ Ｂｕｓ（第２のデータバス）のバス幅を拡大する必要はないので、カラム置換回路１０４の回路規模の増大を抑制できる。
【０１１６】
（２）アドレス制御、アドレスマップの自由度の向上
本実施形態の説明では、通常モードにおいて、１つのカラムアドレスで８ビットのデータ転送する際、例えばＰＢ ４ＩＯユニット３０＿０、と３０＿１に選択信号Ｓｅｌ＿Ａ＜０＞を供給して、ＩＯ線ＩＯ＿０〜ＩＯ＿７のデータをＤａｔａ Ｂｕｓに転送した。これに対して、ＥＣＣモードでは、ＰＢ ４ＩＯユニット３０＿０、と３０＿１に選択信号Ｓｅｌ＿Ｂ＜０＞、Ｓｅｌ＿Ｂ＜１＞と別々のアドレスを割り当てて、全アドレスについて一括でＥＣＣ回路にデータ転送をすることができる。例えば、通常データとパリティデータとが、通常モードにおいて選択信号Ｓｅｌ＿Ａの異なるアドレスに割り付けられていた場合であっても、ＥＣＣモードにおいて選択信号Ｓｅｌ＿Ｂの同じアドレスに割り付けることができ、通常データとパリティデータを一括してＥＣＣ回路に入力することができる。このように、第２の動作モードにおけるアドレス制御が第１の動作モードにおけるアドレス制御に対して独立性が非常に高く、アドレスマップの自由度を高くすることができる。
【０１１７】
また、通常モードではカラムアドレスは選択信号Ｓｅｌ＿Ａ＜０＞〜Ｓｅｌ＿Ａ＜４＞の５つに対し、ＥＣＣモードではカラムアドレスは選択信号Ｓｅｌ＿Ｂ＜０＞、Ｓｅｌ＿Ｂ＜１＞の２つとなった。このことは、通常モードにおける規格（Ｕｓｅｒ Ｓｐｅｃ）では、カラムアドレスが２のｎ乗でない（所謂きりのよくない）値で定められていたとしても、ＥＣＣモードではアドレス空間を２のｎ乗などのきりのよい単位空間へ変換可能であることを意味している。
これにより、ＥＣＣ回路１０７のコード構成、たとえばコード長をいくつにするか、積符号化する場合のコード長構成の最適化などの過程において、自由度をもって設計することができ、より最適なパフォーマンスを引き出すことができる。
【０１１８】
（３）設計変更の容易化
またＥＣＣ回路を内蔵した製品を設計する場合、仮に当該製品の派生製品であってＥＣＣ回路の内蔵が不要な製品を別途設計するような場合、データバス（ＥＣＣバス）、アドレス制御に係るカラムコーディング回路がＥＣＣモードと通常モードでは独立している。これにより、ＥＣＣモードに係る回路と通常モードに係る回路の切り分けが明確であるため、不要なＥＣＣモードに係る回路の削減が容易となり、設計変更が容易になる。
【０１１９】
続いて、図１に示すＮＡＮＤ型フラッシュメモリの第１の動作モード、及び第２の動作モードでの動作について、ページバッファ１０２の概略構成、及び動作フローチャートを参照して説明する。図９は、ページバッファ１０２を構成する各ページバッファを説明するための図である。また、図１０は、ページバッファ１０２の動作を説明するためのフローチャートである。
図９（ａ）には、ページバッファ１０２を構成するＭａｉｎ Ｄａｔａ（通常データ）用のページバッファ１０２ａ、Ｃｏｌｕｍｎ Ｒｅｐａｉｒ ｆｏｒ Ｍａｉｎ Ｄａｔａ（通常データの置換データ）用のページバッファ１０２ｂを模式的に示している。また、図９（ａ）には、ＥＣＣ Ｐａｒｉｔｙ（パリティデータ）用のページバッファ１０２ｃ、及びＰａｒｉｔｙ’ｓ Ｃｏｌｕｍｎ Ｒｅｐａｉｒ（パリティデータの置換データ）用のページバッファ１０２ｄを模式的に示している。
図９（ａ）には、これらページバッファ１０２ａ〜１０２ｄを構成するＰＢ ユニット（図５、及び図６に示すＰＢ制御回路６０、及びビット内部回路５０＿０〜５０＿７を単位とする回路）に番号を付して示している。この番号は、図４（ｂ）に示すＣｏｄｅｌｉｎｎｇ、すなわちＰＢ ユニットの位置を示す選択信号Ｓｅｌ＿Ａの番号である。
【０１２０】
すなわち、ページバッファ１０２ａは、通常データ用のＰＢ ユニットとして、２５６個のＰＢ ユニット０〜ＰＢ ユニット２５５を有し、ページバッファ１０２ｂは、通常データの置換用のＰＢ ユニットとして８個のＰＢ ユニット２５６〜ＰＢ ユニット２６３を有する。
また、ページバッファ１０２ｃは、パリティデータ用のＰＢ ユニットとして、３６個のＰＢ ユニット２６４〜ＰＢ ユニット２９９を有し、ページバッファ１０２ｄは、パリティデータの置換用のＰＢ ユニットとして８個のＰＢ ユニット３００〜ＰＢ ユニット３０７を有する。
【０１２１】
また、ここでは、図９（ｂ）に示す様に、ページバッファ１０２ａのＰＢ ユニット１に接続される８本のビット線、或いは当該８本のビット線に接続されるメモリセルトランジスタに不良があった場合に、ページバッファ１０２ｂのＰＢ ユニット２５６に置換される例を示している。また、図９（ｂ）では、ページバッファ１０２ｃのＰＢ ユニット２６５に接続される８本ビット線、或いは当該８本のビット線に接続されるメモリセルトランジスタに不良があった場合に、ページバッファ１０２ｄのＰＢ ユニット３００に置換される例を示している。
なお、図９（ｂ）において斜線を施して示しているページバッファ１０２ｂにおけるＰＢ ユニット２５７〜２６３は使用されないので、これらはカラム置換回路１０４の制御によりカラムコーディング回路１０３が選択することはなく、すなわち不活性状態となっている。また、同じく図９（ｂ）において斜線を施して示しているページバッファ１０２ｄにおけるＰＢ ユニット３０１〜３０７は使用されないので、これらはパリティカラム置換回路１０５の制御によりＥＣＣカラムコーディング回路１０８が選択することはなく、すなわち不活性状態となっている。
【０１２２】
また、ページバッファ１０２ａにおけるＰＢ ユニット１は、通常モードでは選択されず、置換先のＰＢ ユニット２５６が選択信号Ｓｅｌ＿Ａにより選択される。これにより、読み出しデータＤａｔａ＿Ｏｕｔ＿Ａ（ＰＢ ユニット１から読み出すはずのデータ）が、Ｄａｔａ Ｂｕｓ＿１、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿３（第２のデータバス）を介してＩ／Ｏパッド１０６から出力される。また、通常モードでは、書き込みデータがＩ／Ｏパッド１０６から入力されると、Ｄａｔａ Ｂｕｓ＿３、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿１を介してＰＢ ユニット２５５に、書き込みデータＤａｔａ＿Ａ＿Ｉｎ（ＰＢ ユニット１に書き込むはずのデータ）として入力される。このように、ユーザがカラムアドレスを供給して使用できるページバッファの領域はページバッファ１０２ａのＰＢ ユニット０〜２５５までである。つまり、ページバッファ１０２ｂのＰＢ ユニット２５６〜２６３、ページバッファ１０２ｃのＰＢ ユニット２６４〜２９９、及びページバッファ１０２ｄのＰＢ ユニット３００〜３０７は、ユーザがアクセスすることのできないページバッファの領域である。
【０１２３】
また、ページバッファ１０２ａにおけるＰＢ ユニット１は、ＥＣＣモードで選択信号Ｓｅｌ＿Ｂにより選択され、ＬレベルまたはＨレベルのいずれか一方に固定された読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂが、ＥＣＣ Ｂｕｓ＿１、及びＥＣＣ Ｂｕｓ＿２（第１のデータバス）を介してＥＣＣ回路１０７まで転送され、ＥＣＣ処理に用いられる。また、置換先のＰＢ ユニット２５６も選択信号Ｓｅｌ＿Ｂにより選択され、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂが、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３を介してＥＣＣ回路１０７まで転送され、ユーザから見たＰＢ ユニット１の読み出しデータとしてＥＣＣ処理に用いられる。また、ＥＣＣモードでは、ＥＣＣ処理が終了すると、ＰＢ ユニット１に書き戻すべきデータがＥＣＣ Ｂｕｓ＿３、ＥＣＣ Ｂｕｓ＿２、およびＥＣＣ Ｂｕｓ＿１（第１のデータバス）を介してＰＢ ユニット２５５に、書き込みデータＤａｔａ＿Ａ＿Ｉｎとして入力される。なお、これらのＥＣＣ処理後のデータのうちＰＢ ユニット０〜２５５のデータは、上述の様に、データバスＤａｔａ＿Ａを介して外部へ誤りのないデータ（Ｃｌｅａｒ Ｄａｔａ）として読み出される。
【０１２４】
また、ページバッファ１０２ａにおけるＰＢ ユニット２６５は、ＥＣＣモードで選択信号Ｓｅｌ＿Ｂにより選択され、ＬレベルまたはＨレベルのいずれか一方に固定された読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂが、ＥＣＣ Ｂｕｓ＿１、及びＥＣＣ Ｂｕｓ＿２（データバスＤａｔａ＿Ｂ）を介してパリティカラム置換回路１０５まで転送される。また、置換先のＰＢ ユニット３００も選択信号Ｓｅｌ＿Ｂにより選択され、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂが、ＥＣＣ Ｂｕｓ＿１、及びＥＣＣ Ｂｕｓ＿２を介してパリティカラム置換回路１０５まで転送され、置換処理が行われる。こうして、ＰＢ ユニット３００の出力するデータが、ＰＢ ユニット２６５の読み出しデータとしてＥＣＣ Ｂｕｓ＿３を介してＥＣＣ回路１０７に転送され、ＥＣＣ処理に用いられる。また、ＥＣＣモードでは、ＥＣＣ処理が終了すると、ＰＢ ユニット２６５に書き戻すべきデータがＥＣＣ Ｂｕｓ＿３を介してパリティカラム置換回路１０５まで転送され、置換処理した後、ＥＣＣ Ｂｕｓ＿２、およびＥＣＣ Ｂｕｓ＿１（第１のデータバス）を介してＰＢ ユニット３００に、書き込みデータＤａｔａ＿Ｂ＿Ｉｎとして入力される。なお、これらのＥＣＣ処理後のデータは、上述の様に、データバスＤａｔａ＿Ａを介して外部へ読み出されることはない。
【０１２５】
図１０に示すフローチャートを参照して、メモリセルトランジスタへのデータ書き込み動作、メモリセルトランジスタからのデータ読み出し動作について説明する。なお、図１０（ａ）はデータ書込み動作（Ｄａｔａ Ｉｎ）、図１０(ｂ)は、データ読み出し動作（Ｄａｔａ Ｏｕｔ）を、それぞれ示している。また、図１０（ｃ）は、図２に示すランダマイザ、及びＥＣＣ回路１０７におけるデータランダマイズ（Ｄａｔａ Ｒａｎｄｏｍｉｚｅ）、及びエンコード（Ｅｎｃｏｄｅ）処理動作を示している。また、図１０(ｄ)は、ランダマイザ、及びＥＣＣ回路１０７におけるデコード（Ｄｅｃｏｄｅ）、及びデータデランダマイズ（Ｄａｔａ Ｄｅ−Ｒａｎｄｏｍｉｚｅ）処理動作を示している。なお、以下に説明する動作において、図１０（ｃ）に示すエンコード処理、及び図１０（ｄ）に示すデコード処理は、ＥＣＣモード（第１の動作モード）における第１のランダマイズ及びＥＣＣ処理（欠陥ビットに関してＥＣＣ回路により不良救済する処理）である。本実施形態のＮＡＮＤ型フラッシュメモリ１０は、ＥＣＣモードにおいて、第１のランダマイズ及びＥＣＣ処理と、第２のランダマイズ及びＥＣＣ処理（欠陥ビットに関して誤りが発生しないように処理され、ＥＣＣ処理の訂正処理能力を下げない処理）とを切り替えて実行することが可能である。第２のランダマイズ及びＥＣＣ処理の構成、及び動作については後述することとする。ここでは、第１のランダマイズ及びＥＣＣ処理を用いるものとして、また、救済置換処理を中心に、ページバッファ１０２のＥＣＣモードにおける動作の詳細について説明する。
【０１２６】
[データ書き込み動作]
ユーザがＩ／Ｏパッド１０６を介してＮＡＮＤ型フラッシュメモリ１０に、所定のコマンド（ライトコマンド）を入力し、アドレス（ここでは、ＰＢ ユニット１を選択するカラムアドレス）入力をし、引き続いて、書き込みデータを入力する（ステップＳＴ１）。
次に、通常データの置換が実行される（ステップＳＴ２）。具体的には、カラム置換回路１０４の制御によりカラムコーディング回路１０３は、ＰＢ ユニット１を選択せず、代わりにＰＢ ユニット２５６を選択し、ＰＢ ユニット２５６には外部からのデータが格納される。
【０１２７】
次に、ユーザが所定時間経過後に、プログラム実行コマンド（Ｐｒｏｇｒａｍ Ｅｘｅｃｕｔｕｉｏｎ Ｃｏｍｍａｎｄ）を与える（Ｉｎｖｏｋｅ）と、通常モード（第２の動作モード）であれば、ステップＳＴ６に進みプログラム処理（ページバッファからビット線を介してメモリセルトランジスタへデータを与える）を実行する。ＥＣＣモード（第１の動作モード）であれば、ステップＳＴ５に進みＥＣＣのエンコード処理を実行する。（ステップＳＴ５）。具体的には次の処理を実行する。
【０１２８】
ここで、図９（ｃ）は、ＥＣＣ処理でのコード構成を示している。ＥＣＣとしてのＤａｔａ部は、ＰＢ ユニット０〜ＰＢ ユニット２６３に格納されたデータであり、パリティ部（ＥＣＣ Ｐａｒｉｔｙ）は、ＰＢ ユニット２６４〜ＰＢ ユニット２９９に格納されたデータからなる。なお、ＰＢ ユニット１に書き込むべきデータは、ＰＢ ユニット２５６に書き込まれて格納され、ＰＢ ユニット１以外のＰＢ ユニット０、ＰＢ ユニット２〜２５５には、それぞれに接続されるビット線を介してメモリセルトランジスタが記憶するデータが読み出されて格納されている。
ＰＢ ユニット０〜ＰＢ ユニット２６３に格納されたデータが、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に入力（Ｄａｔａ Ｌｏａｄ）される（ステップＳＴ３１）。
【０１２９】
なお、このとき、上述したように、ランダマイザ１０７ｂには、ＰＢ ユニット１からは固定データ（図５に示すＰＢ制御回路６０であればＬデータ、図６に示すＰＢ制御回路６０であればＨデータ）が入力される。また、ランダマイザ１０７ｂには、ＰＢ ユニット２５６からは、ＰＢ ユニット１に書き込むべきだったが実際はＰＢ ユニット２５６に書き込まれたデータが入力される。
ランダマイザ１０７ｂは、ランダマイズ（Ｄａｔａ Ｒａｎｄｏｍｉｚｅ）処理を実行し（ステップＳＴ３２ａ）、ランダマイズ処理後のデータをＥＣＣ回路１０７ａに対して出力する。
ＥＣＣ回路１０７ａは、入力されるランダマイズ処理後のデータに対してエンコード（Ｅｎｃｏｄｅ）処理を実行し、パリティデータを生成（Ｐａｒｉｔｙ Ｇｅｎｅｒａｔｉｏｎ）する（ステップＳＴ３２ｂ）。
【０１３０】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、ＰＢ ユニット０〜３０７にＥＣＣ処理後のデータを書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ３３）。ここで、図２に示すランダマイザ１０７ｂがＰＢ ユニット０〜２６３に、パリティ生成回路４１がＰＢ ユニット２６４〜３０７に、それぞれデータを書き戻す。
なお、このとき、ＥＣＣコーディング回路１０８は、パリティカラム置換回路１０５の制御により、ＰＢ ユニット２６５を非選択とし、ＰＢ ユニット３００を選択する。これにより、ＰＢ ユニット２６５に書き戻すべきパリティデータがＰＢ ユニット３００に書き戻される。また、ＰＢ ユニット０〜２６３には、ステップＳＴ３２ａでランダマイズ処理した後のデータが書き込まれ、ＰＢ ユニット２６４〜３０７にはパリティデータが書き込まれる。このように、図９（ｂ）において斜線を施して示している不活性状態ページバッファには、図５または図６に示す回路により、書き込みがされないようになっている。
【０１３１】
続いて、各ＰＢユニットにおいて、図７に示すラッチ部にメモリセルに書き込むべきデータ（Ｄａｔａ＿ｉ）がラッチされたので、メモリセルトランジスタへのデータ書込み（Ｐｒｏｇｒａｍ ｔｏ Ｍｅｍｏｒｙ Ｃｅｌｌ）処理が開始される（ステップＳＴ６）。
各ＰＢ ユニットでは、書込みが成功するまで、ラッチ部からメモリセルへのデータ印加が繰り返される（ステップＳＴ７）。書き込みが成功すれば、繰り返し処理は終了し（ステップＳＴ７−Ｙｅｓ）、書き込みが成功しなければ、書込みが成功する、まで、ステップＳＴ６に戻ってプログラム処理が実行される（ステップＳＴ７−Ｎｏ）。
【０１３２】
[データ読み出し動作]
ユーザがＩ／Ｏパッド１０６を介して所定のコマンド（リードコマンド）を入力し、アドレス（ここでは、ＰＢ ユニット１を選択するカラムアドレス）を入力する（ステップＳＴ１１）。
次に、各ＰＢ ユニットにおいて、図６に示すビット内部回路の接続点Ｎ１に、メモリセルトランジスタからのデータ（Ｄａｔａ＿ｉ）がセンシングされラッチ部へ読み出される（ステップＳＴ１２）。
また、ビット内部回路のラッチ部にＤａｔａ＿ｉがラッチされる（ステップＳＴ１３）。
その後、通常モード（第２の動作モード）であれば、ステップＳＴ１５に進みセンシング処理が終了する。ＥＣＣモード（第１の動作モード）では、ステップＳＴ１４に進み、ＥＣＣのデコード（Ｄｅｃｏｄｅ）処理を実行する。（ステップＳＴ１４）。具体的には次の処理を実行する。
【０１３３】
ＰＢ ユニット０〜ＰＢ ユニット２９９に格納されたデータが、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に入力（Ｄａｔａ Ｌｏａｄ）される（ステップＳＴ４１）。
なお、このとき、上述したように、図２に示すＥＣＣ回路１０７ａのシンドローム算出回路３１には、ＰＢ ユニット１からは固定データ（図５に示すＰＢ制御回路６０であればＬデータ、図６に示すＰＢ制御回路６０であればＨデータ）が入力される。また、ＥＣＣ回路１０７ａのシンドローム算出回路３１には、ＰＢ ユニット２５６からは、ＰＢ ユニット１に書き込むべきだったが実際はＰＢ ユニット２５６に書き込まれたデータが入力される。また、パリティカラム置換回路１０５には、ＰＢ ユニット３００からは、ＰＢ ユニット２６５に書き込むべきだったが実際はＰＢ ユニット３００に書き込まれたパリティデータがＥＣＣ Ｂｕｓ＿１、及びＥＣＣ Ｂｕｓ＿２を介して入力され、置換処理した後、ＥＣＣ Ｂｕｓ＿３を介してＥＣＣ回路１０７ａのシンドローム算出回路３１に入力する。
ランダマイザ、及びＥＣＣ回路１０７は、デコード（Ｄｅｃｏｄｅ）処理を実行し、パリティデータに基づいて、ＰＢ ユニット０〜ＰＢ ユニット２６３に格納されたデータの誤りを訂正（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ）する（ステップＳＴ４２ａ）。
ランダマイザ１０７ｂは、ＥＣＣ処理による訂正後のデータを、デランダマイズ（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）処理を実行する（ステップＳＴ４２ｂ）。
【０１３４】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、ＰＢ ユニット０〜３０７にデランダマイズ処理後のデータを書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ４３）。ここで、図２に示すランダマイザ１０７ｂがＰＢ ユニット０〜３０７にデータを書き戻す。
ＰＢ ユニット０〜２６３には、ＥＣＣ処理後のデータ（誤り訂正されたデータ）がそのまま書き戻される。ＰＢ ユニット２６４〜３０７のパリティデータ部についてはユーザーが使用しないため、ＥＣＣ処理後のデータ（誤り訂正されたデータ）を書き戻す必要はないが、書き戻してもよい。パリティカラム置換回路１０５の制御により、ＰＢ ユニット２６５を非選択とし、ＰＢ ユニット３００を選択する。これにより、ＰＢ ユニット２６５に書き戻すべき誤り訂正後のパリティデータをＰＢ ユニット３００に書き戻す。このように、図９（ｂ）において斜線を施して示している不活性状態ページバッファには図５または図６に示す回路により、書き込みがされないようになっている。
【０１３５】
続いて、各ＰＢユニットにおいて、図７に示すラッチ部にメモリセルに書き込むべきデータ（Ｄａｔａ＿ｉ）がラッチされたので、センシング（Ｓｅｎｓｉｎｇ）処理が終了すし、読み出し可能な状態へ移行する（ステップＳＴ１５）。
ＰＢ ユニット０〜ＰＢ ユニット２５５には、選択信号Ｓｅｌ＿Ａが入力され、格納されたデータが、Ｄａｔａ Ｂｕｓ＿１、Ｄａｔａ Ｂｕｓ＿２、及びＤａｔａ Ｂｕｓ＿３を介して、読み出される。このとき、カラムコーディング回路１０３は、カラム置換回路１０４の制御により、ＰＢ ユニット１を非選択とし、ＰＢ ユニット２５６を選択する。ＰＢ ユニット２５６は、ＰＢ ユニット１に書き込むべきだったが実際はＰＢ ユニット２５６に書き込まれたデータを出力する。つまり、不良を有するカラムの置換（Ｄｅｆｅｃｔ Ｃｏｌｕｍｎ Ｒｅｐａｉｒ）が実行される（ステップＳＴ１６）。
このようにして、ユーザがＰＢ ユニット１を介してメモリセルトランジスタへ書き込んだ書き込みデータが、不良救済されて他のメモリセルトランジスタに書き込まれ、更に書き込まれたデータが誤り訂正されて、Ｉ／Ｏパッド１０６から出力される（ステップＳＴ１７）。
【０１３６】
以上説明したように、本発明のＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）は、ＥＣＣ Ｂｕｓ＿１〜３（第１のデータバス）と、第１のデータバスと異なる本数から構成され、第１のデータバスとは独立して設けられるＤａｔａ Ｂｕｓ＿１〜３（第２のデータバス）と、ページバッファ１０２（データ転送部）と、を備える。ページバッファ１０２は、ＥＣＣモード（第１の動作モード）によりメモリセルとの間でデータを転送する場合、複数のビット線のうち第１のデータバスと同じ本数のビット線と、第１のデータバスとを接続してデータを転送する。一方、ページバッファ１０２は、通常モード（第２の動作モード）によりメモリセルとの間でデータを転送する場合、複数のビット線のうち第２のデータバスと同じ本数のビット線と、第２のデータバスとを接続してデータを転送する
また、データ転送部は、通常メモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ１０２ａ（第１のページバッファ）と、第１のページバッファに接続される通常メモリセルまたはビット線に不良が有る場合に、通常メモリセル、及びビット線とともに置換されるページバッファ１０２ｂ（第３のページバッファ）と、を含んで構成される。また、データ転送部は、パリティメモリセルに接続されるビット線の電位を増幅し、増幅結果をラッチするページバッファ１０２ｃ（第２のページバッファ）を含んで構成される。また、第２のデータバスは、第１のページバッファ、及び第３のページバッファと接続され、第１のデータバスは、第１のページバッファ、第３のページバッファ、及び第２のページバッファと接続される。
【０１３７】
また、半導体記憶装置は、第１のデータバスに接続され、第２のページバッファに接続されるパリティメモリセルまたはビット線に不良が有る場合に、パリティメモリセル、及びビット線とともに置換されるページバッファ１０２ｄ（第４のページバッファ）を備える。また、半導体記憶装置は、第２のデータバスに接続されるとともに、第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファを第３のページバッファに置換するカラム置換回路１０４（第１の救済置換回路）を備える。また、半導体記憶装置は、第１のデータバスに接続されるとともに、第２のページバッファのうちメモリセルまたはビット線に不良が有るページバッファを第４のページバッファに置換するパリティカラム置換回路１０５（第２の救済置換回路）を備える。また、半導体記憶装置は、第１のデータバスに接続されるとともに、第２のページバッファ、及び前記第４のページバッファの出力データに基づき、前記第１のページバッファ、及び第３のページバッファの出力データの誤りを訂正するＥＣＣ回路１０７ａ（ＥＣＣ回路）を備える。
【０１３８】
また、半導体記憶装置は、第１のページバッファのうちメモリセルまたはビット線に不良が有るページバッファの出力を固定されたデータとするＰＢ制御回路６０（ページバッファ制御回路）を有する。
【０１３９】
また、ページバッファ制御回路は、メモリセルまたはビット線に不良が有る場合、第１のデータバスからの書き込みを許可しない。
【０１４０】
また、第１の動作モードでは、第１のページバッファと、第２の動作モードでの救済置換を前提として存在する第３のページバッファとのうち、メモリセルまたはビット線に不良が有るページバッファについては救済置換を行わずに、ＥＣＣ回路の入力データとして取り扱う。
【０１４１】
また、ビット線を、ｎ（ｎはｐとｑの公倍数であり、ｐ、及びｑはｐ＞ｑである自然数）本のビット線とすると、第１のデータバスはｐ本であり、第２のデータバスはｑ本である。また、データ転送部は、第１の動作モードでは、（ｎ／ｐ）本のアドレス信号が入力されると、ｐ本のビット線とｐ本の第１のデータバスとの接続を行い、一方、第２の動作モードでは、（ｎ／ｑ）本のアドレス信号が入力されると、ｑ本ビット線と第２のデータバスとの接続を行う。なお、上記構成は、論理的空間においての概念を前提としており、物理的ビット線数ｎがｐとｑの公倍数でなくてもよく、余りをダミービット線として処理するなどで対応できる。
【０１４２】
このように、本発明によれば、ＥＣＣ回路１０７ａへのＥＣＣ Ｂｕｓ（第１のデータバス）のバス幅を広くしやすいことから（上記説明では、ＥＣＣ回路へのバス幅は３００ビット）、また、Ｍａｉｎ Ｄａｔａ部の置換回路（カラム置換回路１０４）がこのＥＣＣ Ｂｕｓの途中には不要となるため、ＥＣＣ処理でのデータ転送を高速化することができる。また、Ｍａｉｎ Ｄａｔａ部の置換回路は従来の様に増大しないことから、チップサイズの増大を抑制でき、従来に比べて製造の際のコストを低減できる効果がある。
なお、上記実施形態では、Ｍａｉｎ Ｄａｔａ部の置換回路と比較して、規模が小さいＰａｒｉｔｙ部に専用のＰＣＲ置換システム（パリティカラム置換回路１０５）を用いて説明したが、この構成は必須ではない。もっとも、パリティカラム置換回路１０５は、Ｐａｒｉｔｙ部の不良を救済する方法として有用である。パリティカラム置換回路１０５を用いない場合には、カラム１ビットあたり５０％（０か１か）の確率で１エラー分の訂正ができなくなってしまい、ＥＣＣ処理における訂正能力を損なってしまう。これに対して、上記説明の様に、パリティカラム置換回路１０５を用いてＰａｒｉｔｙ部の不良を救済すると、ＥＣＣ訂正能力を向上できる。
【０１４３】
[第１のランダマイズ及びＥＣＣ処理]
続いて、ＥＣＣモード（第１の動作モード）における第１のランダマイズ及びＥＣＣ処理（欠陥ビットに関してＥＣＣ回路により不良救済する処理）の詳細について説明する。
なお、ここでは、上述した処理フローのうち、図１０（ｃ）に対応するランダマイズ、及びエンコード処理、及び図１０（ｄ）に対応するデコード、及びデランダマイズ処理について詳述する。また、以下では、ページバッファ１０２ｃ（第２のページバッファ）におけるページバッファユニット、ページバッファユニットに接続されるビット線、及びメモリセルトランジスタには不良がないものとして、すなわち、上述したパリティカラム置換回路１０５による置換処理はないものとして説明をする。
【０１４４】
また、説明を簡単にするため、上述したページバッファ１０２ａ（第１のページバッファ）を構成するＰＢ ユニットのうち４個のＰＢ ユニット、及び、ページバッファ１０２ｃ（第２のページバッファ）を構成するＰＢ ユニットのうち１個のＰＢ ユニットを例にとって、ＥＣＣモード（第１の動作モード）における動作を説明する。以下では、この４個のＰＢ ユニットをＰＢ ユニット０〜３とし、１個のＰＢ ユニットをＰＢ ユニット４とする。
【０１４５】
ここでは、ＥＣＣモードにおける動作として、ランダマイザ、及びＥＣＣ回路１０７が、ＰＢ ユニット０〜３に格納されているデータに基づいてパリティデータを生成し、生成したパリティデータをＰＢ１ ユニット４に書き戻す処理（ランダマイズ、及びＥＣＣエンコード処理）について説明する。また、ＰＢ ユニット４に格納されたパリティデータに基づいてＰＢ ユニット０〜３に格納されているデータを、誤り訂正し、かつ、復元する処理（ＥＣＣデコード、及びデランダマイズ処理）について説明する。
図１１は、ＥＣＣモードにおける第１のランダマイズ及びＥＣＣ処理について説明するための図である。また、図１２は、第１のランダマイズ及びＥＣＣ処理のフローチャートである。なお、以下では、ユーザが、通常モード（第１の動作モード）において、ＰＢ ユニット０〜３に、Ｄａｔａ Ｄ０〜Ｄ３を書き込んだものとする。また、ＰＢ ユニット４には、これらのＤａｔａ Ｄ０〜Ｄ３の誤り訂正に使用されるパリティデータが格納されるが、このパリティデータをＰａｒｉｔｙ Ｐｘとする。
【０１４６】
図１１は、第１のランダマイズ及びＥＣＣ処理を、（１）〜（５）に示す処理により時系列に示し、各処理におけるＤａｔａ Ｄ０〜Ｄ３、及びＰａｒｉｔｙ Ｐｘの論理データ（論理値）を示している。ここで、図１１（ａ）には、Ｐａｇｅ Ｂｕｆｆｅｒ（ページバッファ１０２）に格納されるデータの（１）〜（５）における変化が示されている。また、図１１（ｂ）には、Ｒａｎｄｏｍｉｚｅｒ（ランダマイザ１０７ｂ）における演算結果の（１）〜（５）における変化が示されている。また、図１１（ｃ）には、ＥＣＣ Ｅｎｇｉｎｅ（ＥＣＣ回路１０７ａ）への入力データ、及びＥＣＣ処理後のデータの（１）〜（５）における変化が示されている。
また、図１２（ａ）は、第１のランダマイズ及びＥＣＣ処理におけるランダマイズ、及びエンコード処理のフローを、図１２（ｂ）は、デコード処理、及びデランダマイズ処理のフローを示している。
【０１４７】
ここで、ＰＢ ユニット１は、不良のユニットであり、ＰＢ ユニット自身、或いはＰＢ ユニットに接続されるビット線、またはメモリセルトランジスタのいずれかに不良のあるＰＢ ユニットであるものとする。ＰＢ ユニット１は、図５に示す回路において、欠陥信号ＰＢ＿ＤｅｃｔがＨレベル、欠陥信号ｎＰＢ＿ＤｅｆｅｃｔがＬレベルであり、Ｄａｔａ Ｄ１としてデータ０が格納されている。このため、ＰＢ ユニット１は、ＥＣＣモードのデータ読み出し動作では固定データであるデータ０を出力し、ＥＣＣモードのデータ書込み動作では、データを書き込むことはできない。以下では、このＰＢ ユニットと置換されるページバッファ１０２ｂ（第３のページバッファ）におけるＰＢ ユニット １の動作については、すなわち、上述したパリティカラム置換回路１０５の動作については、ここでの説明に直接関係しないため、省略する。
【０１４８】
なお、ＰＢ ユニット１は、通常モード（第２の動作モード）において、ページバッファ１０２ｂにおけるＰＢ ユニットに置換される。この置換先のＰＢ ユニットのデータ（本来、ユーザから見てＰＢ ユニット１に書き込むはずのデータ）はＥＣＣモード（第１の動作モード）の書き込み動作においてランダマイズ処理、及びエンコード処理され、ＰＢ ユニットに書き戻される。また、置換先のＰＢ ユニットのデータは、ＥＣＣモードの読み出し動作において、デコード処理、及びデランダマイズ処理され、ＰＢ ユニットに書き戻される。この書き戻されたデータは、通常モードにおいて、カラム置換回路１０４が、ＰＢ ユニット１に換えて置換先のＰＢ ユニットを選択することにより、Ｄａｔａ Ｂｕｓ（第２のデータバス）を介してＩ／Ｏパッド１０６に読み出される。
【０１４９】
また、ランダマイザ１０７ｂは、一般的には入力したＤａｔａをランダム（Ｒａｎｄｏｍ）に符号化する機能を有するが、ここでは説明を簡単にするため、例示として簡易的に奇数番目のビット（ここではＤａｔａ Ｄ１、及びＤａｔａ Ｄ３）の論理を反転させる機能を有するものとする。また、ＥＣＣ回路１０７ａ（ＥＣＣ Ｅｎｇｉｎｅ）は、誤り訂正機能を有するが、例示として簡易的に、エンコード（Ｅｎｃｏｄｅ）時には入力されたＤａｔａ Ｄ０〜Ｄ３に対してＰａｒｉｔｙ Ｐｘを生成し、デコード（Ｄｅｃｏｄｅ）時にはＰａｒｉｔｙ Ｐｘを基にＤａｔａ Ｄ０〜Ｄ３の誤り訂正を行うものとする。
【０１５０】
以下、図１０（ａ）、図１０（ｂ）、図１１、及び図１２を参照しつつ、第１のランダマイズ及びＥＣＣ処理について詳述する。
メモリセルトランジスタへのデータ書込み動作では、まず、ユーザがＩ／Ｏパッド１０６を介してＮＡＮＤ型フラッシュメモリ１０に、所定のコマンド（ライトコマンド）を入力し、アドレス（ここでは、ＰＢ ユニット０〜３を選択するカラムアドレス）入力をし、引き続いて、書き込みデータを入力する（図１０（ａ）に示すフローのステップＳＴ１）。これにより、図１１（ａ）における（１）Ｄａｔａ Ｉｎに示す様に、ＰＢ ユニット０〜３に格納されるＤａｔａ Ｄ０〜Ｄ３は、Ｄａｔａ“００１１”となる。
【０１５１】
ページバッファ１０２のＰＢ ユニット０〜ＰＢユニット３は、Ｄａｔａ Ｄ０〜Ｄ３（Ｄａｔａ“００１１”）を、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に入力（Ｄａｔａ Ｌｏａｄ）する（図１２（ａ）のフローに示すステップＳＴ５１）。
まず、ランダマイザ１０７ｂは、データランダマイズ（Ｄａｔａ Ｒａｎｄｏｍｉｚｅ）処理を行う（ステップＳＴ５２ａ）。ここでは、ランダマイザ１０７ｂは、図１１（ｂ）における（２）Ｒａｎｄｏｍｉｚｅ＆ＥＣＣ Ｅｎｏｃｏｄｅに示す様に、ランダマイズ処理により、Ｄａｔａ“００１１”をＤａｔａ“０１１０”へと変換する。
【０１５２】
ＥＣＣ回路１０７ａは、エンコード（Ｅｎｃｏｄｅ）処理を実行し、パリティデータを生成（Ｐａｒｉｔｙ Ｇｅｎｅｒａｔｉｏｎ）する（ステップＳＴ５２ｂ）。
ここでは、ＥＣＣ回路１０７ａは、ランダマイズ処理後の、すなわち変換後のＤａｔａ“０１１０”に基づいて、Ｄａｔａ“０１１０”に対応するＰａｒｉｔｙ Ｐｘ（Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(０１１０)”とする）を生成する。
【０１５３】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、ＰＢ ユニット０〜３に、ランダマイズ処理、及びＥＣＣ処理後のデータを書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ５３）。
ここでは、ＥＣＣ回路１０７ａは、図１１（ｃ）における（３）Ｒａｎｄｏｍｉｚｅ＆ＥＣＣ Ｅｎｏｃｏｄｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３にＤａｔａ“０１１０”を、ＰＢ ユニット４にＰａｒｉｔｙ Ｄａｔａ“Ｐ(０１１０)”を書き戻す。しかしながら、ＰＢ ユニット１は、”０”に固定しているため、データ１を書き込むことはできない。そのため、図１１（ａ）における（３）Ｒａｎｄｏｍｉｚｅ＆ＥＣＣ Ｅｎｏｃｏｄｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３が格納するデータはＤａｔａ“００１０”となる。しかしながら、ＰＢ ユニット４が格納するデータは、このＤａｔａ“０１１０”に基づいて生成されるので、Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(０１１０)”となる。
【０１５４】
以降、ＰＢ ユニット０、２〜４において、図７に示すラッチ部にメモリセルに書き込むべきデータ（Ｄａｔａ＿ｉ）がラッチされ、メモリセルトランジスタへのデータ書込み（Ｐｒｏｇｒａｍ ｔｏ Ｍｅｍｏｒｙ Ｃｅｌｌ）処理が開始される（図１０に示すフローのステップＳＴ６）。なお、ＰＢ ユニット１では、図５に示す回路のうち、オア回路６６の出力がＬレベルであり、メモリセルトランジスタにデータは書き込まれない。
【０１５５】
メモリセルトランジスタからのデータ読み出し動作では、ＰＢ ユニット０〜ＰＢ ユニット４に格納されたデータが、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に入力（Ｄａｔａ Ｌｏａｄ）される（ステップＳＴ６１）。
ここでは、図１１（ｃ）における（４）Ｄａｔａ Ｌｏａｄに示す様に、ＥＣＣ回路１０７ａには、ＰＢ ユニット０〜ＰＢ ユニット４に格納されたＤａｔａ“００１０”、Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(０１１０)”が、ランダマイザ１０７ｂを介さずに直接入力される。
【０１５６】
ＥＣＣ回路１０７ａは、デコード（Ｄｅｃｏｄｅ）処理を実行し、Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(０１１０)”に基づいて、ＰＢ ユニット０〜ＰＢ ユニット３に格納されたＤａｔａ“００１０”の誤りを訂正（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ）する（ステップＳＴ６２ａ）。
ここでは、上記ステップＳＴ５３においてＰＢユニット １にデータ１を書きこむことができなかったため、ＰＢ ユニット４に格納されたデータであるＰａｒｉｔｙ Ｄａｔａ“Ｐ(０１１０)”に基づいて、ＰＢ ユニット１のデータ０のみが誤り訂正されてデータ１となる。つまり、ＥＣＣ回路１０７ａは、図１１（ｃ）における（５）ＥＣＣ Ｄｅｃｏｄｅ、Ｄｅ−Ｒａｎｄｏｍｉｚｅ＆Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢ ユニット３の訂正後のデータをＤａｔａ“０１１０”とする。
【０１５７】
ランダマイザ１０７ｂは、訂正後のＤａｔａ“０１１０”をランダマイズ処理（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）する（ステップＳＴ６２ｂ）。ここでは、ランダマイザ１０７ｂは、図１１（ｂ）における（５）ＥＣＣ Ｄｅｃｏｄｅ、Ｄｅ−Ｒａｎｄｏｍｉｚｅ＆Ｄａｔａ Ｓｔｏｒｅに示す様に、ランダマイズ処理により、Ｄａｔａ“０１１０”の奇数番目のビットの論理を反転させて、Ｄａｔａ“００１１”へと変換する。
【０１５８】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、ＰＢ ユニット０〜４にＥＣＣ処理後のＤａｔａ“００１１”を書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ６３）。
このようにして、ランダマイザ、及びＥＣＣ回路１０７により、真のＤａｔａ“００１１”（ユーザが、図１１（ａ）における（１）Ｄａｔａ Ｉｎに示す様に、ＰＢ ユニット０〜３に書き込んだはずのデータ）がページバッファ１０２へ格納される。
【０１５９】
以降、第２の動作モードにおいて、選択信号Ｓｅｌ＿Ａを与えることにより、ユーザがＰＢ ユニット０〜３を介して各メモリセルトランジスタへ書き込んだ書き込みデータが、誤り訂正されて、Ｉ／Ｏパッド１０６から出力される（図１０に示すフローのステップＳＴ１７）。なお、この際、ＰＢ ユニット１（不良を有するカラム）の置換（Ｄｅｆｅｃｔ Ｃｏｌｕｍｎ Ｒｅｐａｉｒ）が実行される（ステップＳＴ１６）。これにより、ＰＢ ユニット１に書き込むべきであったが、実際はページバッファ１０２ｂのＰＢユニットに書き込まれたデータ（このデータも上述した第１のランダマイズ及びＥＣＣ処理により誤り訂正されてＰＢ ユニットに格納されている）が、Ｉ／Ｏパッド１０６から出力される。
【０１６０】
このように、ＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）は、第１のランダマイズ及びＥＣＣ処理を実行する。第１のランダマイズ及びＥＣＣ処理では、ＥＣＣモード（第１の動作モード）のデータ書き込み動作において、ランダマイザ１０７ｂ（ランダマイザ）は、ページバッファ１０２ａ（第１のページバッファ）の出力データをランダマイズしてＥＣＣ回路１０７ａ（ＥＣＣ回路）に入力する。ＥＣＣ回路１０７ａは、ランダマイザ１０７ｂから入力されるデータ（上記例ではＤａｔａ“００１１”）に基づいて、パリティデータ（Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(０１１０)”）を生成してページバッファ１０２ｃ（第２のページバッファ）にパリティデータを書き込む。一方、第１のランダマイズ及びＥＣＣ処理では、第１の動作モードのデータ読み出し動作において、ＥＣＣ回路１０７ａは、ページバッファ１０２ｃのパリティデータに基づいて、ページバッファ１０２ａのデータ（上記例ではＤａｔａ“００１０”）を誤り訂正する。ランダマイザ１０７ｂは訂正後のデータ（上記例ではＤａｔａ“０１１０”）をデランダマイズしてページバッファ１０２ａに書き戻す。
【０１６１】
これにより、ページバッファ１０２ａ（第１のページバッファ）のうちメモリセルまたはビット線に不良が有るＰＢ ユニット（ページバッファ）については、ランダマイザ、及びＥＣＣ回路１０７（ＥＣＣ回路）により誤りが訂正される。そのため、本発明のＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）によれば、ＥＣＣのデコード処理とデランダマイズ処理とを高速に実行することができるとともに、救済機能を省略することができる。
【０１６２】
[第２のランダマイズ及びＥＣＣ処理]
ところで、上述した第１のランダマイズ及びＥＣＣ処理では、不良のあるＰＢ ユニット１に対して、ＥＣＣの訂正処理能力を使用している。これに対して、不良のあるＰＢ ユニットに対してＥＣＣ回路１０７ａによる誤り訂正を不要とする、第２のランダマイズ及びＥＣＣ処理について、以下に詳述する。
なお、ここでは、第１のランダマイズ及びＥＣＣ処理と同様に、図１０（ｃ）に対応するランダマイズ、及びエンコード処理、及び図１０（ｄ）に対応するデコード、及びデランダマイズ処理について詳述する。また、第１のランダマイズ及びＥＣＣ処理と同様に、ページバッファ１０２ｃ（第２のページバッファ）におけるページバッファユニット、ページバッファユニットに接続されるビット線、及びメモリセルトランジスタには不良がないものとして、すなわち、上述したパリティカラム置換回路１０５による置換処理はないものとして説明をする。
【０１６３】
また、第１のランダマイズ及びＥＣＣ処理と同様に、ページバッファ１０２ａを構成するＰＢ ユニットのうち４個のＰＢ ユニット０〜ＰＢ ユニット３、及び、ページバッファ１０２ｃ（第２のページバッファ）を構成するＰＢ ユニットのうち１個のＰＢ ユニット４を例にとって、ＥＣＣモード（第１の動作モード）における動作を説明する。
図１３は、ＥＣＣモードにおける第２のランダマイズ及びＥＣＣ処理について説明するための図である。また、図１４は、第２のランダマイズ及びＥＣＣ処理のフローチャートである。なお、以下では、第１のランダマイズ及びＥＣＣ処理と同様に、ユーザが、通常モード（第１の動作モード）において、ＰＢ ユニット０〜３に、Ｄａｔａ Ｄ０〜Ｄ３を書き込んだものとする。また、ＰＢ ユニット４には、これらのＤａｔａ Ｄ０〜Ｄ３の誤り訂正に使用されるパリティデータが格納されるが、このパリティデータをＰａｒｉｔｙ Ｐｘとする。
【０１６４】
図１３は、第２のランダマイズ及びＥＣＣ処理を、（１）〜（７）に示す処理により時系列に示し、各処理におけるＤａｔａ Ｄ０〜Ｄ３、及びＰａｒｉｔｙ Ｐｘの論理データ（論理値）を示している。ここで、図１３（ａ）には、Ｐａｇｅ Ｂｕｆｆｅｒ（ページバッファ１０２）に格納されるデータの（１）〜（７）における変化が示されている。図１３（ｂ）には、Ｒａｎｄｏｍｉｚｅｒ（ランダマイザ１０７ｂ）における演算結果の（１）〜（７）における変化が示されている。また、図１３（ｃ）には、ＥＣＣ Ｅｎｇｉｎｅ（ＥＣＣ回路１０７ａ）への入力データ、及びＥＣＣ処理後のデータの（１）〜（７）における変化が示されている。
また、図１４は、第２のランダマイズ及びＥＣＣ処理におけるランダマイズ、及びエンコード処理のフローを示している。なお、デコード処理、及びデランダマイズ処理のフローについては、第１のランダマイズ及びＥＣＣ処理と同じであるので、図１２（ｂ）を用いて説明する。
【０１６５】
ここで、ＰＢ ユニット１は、第１のランダマイズ及びＥＣＣ処理と同様に、不良のユニットであり、ＰＢ ユニット自身、或いはＰＢ ユニットに接続されるビット線、またはメモリセルトランジスタのいずれかに不良のあるＰＢ ユニットであるものとする。このため、ＰＢ ユニット１は、ＥＣＣモードのデータ読み出し動作では固定データであるデータ０を出力し、ＥＣＣモードのデータ書込み動作では、データを書き込むことはできない。なお、以下では、このＰＢ ユニットと置換されるページバッファ１０２ｂ（第３のページバッファ）におけるページバッファユニットの動作については、すなわち、上述したパリティカラム置換回路１０５の動作については、第１のランダマイズ及びＥＣＣ処理と同様に、ここでの説明に直接関係しないため、省略する。
また、ランダマイザ１０７ｂ、及び、ＥＣＣ回路１０７ａの機能は、第１のランダマイズ及びＥＣＣ処理と同様の機能を有するものとする。
【０１６６】
以下、図１０（ａ）、図１０（ｂ）、図１２（ｂ）、図１３、及び図１４を参照しつつ、第２のランダマイズ及びＥＣＣ処理について詳述する。
メモリセルトランジスタへのデータ書込み動作では、まず、ユーザがＩ／Ｏパッド１０６を介してＮＡＮＤ型フラッシュメモリ１０に、所定のコマンド（ライトコマンド）を入力し、アドレス（ここでは、ＰＢ ユニット０〜３を選択するカラムアドレス）入力をし、引き続いて、書き込みデータを入力する（図１０（ａ）に示すフローのステップＳＴ１）。図１３（ａ）における（１）Ｄａｔａ Ｉｎに示す様に、ＰＢ ユニット０〜ＰＢユニット３に格納されるＤａｔａ Ｄ０〜Ｄ３は、Ｄａｔａ“００１１”となる。
【０１６７】
ページバッファ１０２のＰＢ ユニット０〜ＰＢユニット３は、Ｄａｔａ Ｄ０〜Ｄ３（Ｄａｔａ“００１１”）を、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に入力（Ｄａｔａ Ｌｏａｄ）する（ステップＳＴ７１）。
まず、ランダマイザ１０７ｂは、データランダマイズ（Ｄａｔａ Ｒａｎｄｏｍｉｚｅ）処理を行う（ステップＳＴ７２ａ）。ここでは、ランダマイザ１０７ｂは、図１３（ｂ）における（２）Ｒａｎｄｏｍｉｚｅに示す様に、ランダマイズ処理により、Ｄａｔａ“００１１”をＤａｔａ“０１１０”へと変換する。
【０１６８】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、第１のランダマイズ及びＥＣＣ処理と相違して、ＰＢ ユニット０〜３に、ランダマイズ処理後のデータを書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ８１）。
ここでは、ランダマイザ１０７ｂは、図１３（ｂ）における（３）Ｒａｎｄｏｍｉｚｅ＆Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３にＤａｔａ“０１１０”を書き戻す。しかしながら、ＰＢ ユニット１は、”０”に固定しているため、データ１を書き込むことはできない。そのため、図１３（ａ）における（３）Ｒａｎｄｏｍｉｚｅ＆ＥＣＣ Ｅｎｏｃｏｄｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３が格納するデータはＤａｔａ“００１０”となる。
【０１６９】
続いて、ページバッファ１０２のＰＢ ユニット０〜ＰＢユニット３は、Ｄａｔａ Ｄ０〜Ｄ３（Ｄａｔａ“００１０”）を、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に入力（Ｄａｔａ Ｌｏａｄ）する（ステップＳＴ８２）。
ＥＣＣ回路１０７ａは、エンコード（Ｅｎｃｏｄｅ）処理を実行し、パリティデータを生成（Ｐａｒｉｔｙ Ｇｅｎｅｒａｔｉｏｎ）する（ステップＳＴ７２ｂ）。
ここでは、ＥＣＣ回路１０７ａは、第１のランダマイズ及びＥＣＣ処理と相違して、ＰＢ ユニット０〜３に格納されたＤａｔａ“００１０”に基づいて、Ｄａｔａ“００１０”に対応するＰａｒｉｔｙ Ｐｘ（Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”とする）を生成する。
【０１７０】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、ＰＢ ユニット０〜３に、ＥＣＣ処理後のデータを書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ７３）。
ここでは、ＥＣＣ回路１０７ａは、図１３（ａ）における（５）Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３にＤａｔａ“００１０”を、ＰＢ ユニット４にＰａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”を書き戻す。ここで、ＰＢ ユニット１は、”０”に固定しているため、第１のランダマイズ及びＥＣＣ処理と相違して、ユーザが図１３（ａ）における（１）Ｄａｔａ Ｉｎにおいて書いたデータと同じデータ０が書き込まれたことと同等の状態となる。つまり、図１３（ａ）における（５）Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３が格納するデータはＤａｔａ“００１０”となる。また、ＰＢ ユニット４が格納するデータは、Ｄａｔａ“００１０”に基づいて生成されたＰａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”となる。なお、ページバッファに書き戻す際、ＰＢ ユニット４にＰａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”を書き戻し、ＰＢ ユニット０〜ＰＢユニット３にはデータを書き戻さなくてもよい。
【０１７１】
以降、第１のランダマイズ及びＥＣＣ処理と同様に、ＰＢ ユニット０、２〜４において、図７に示すラッチ部にメモリセルに書き込むべきデータ（Ｄａｔａ＿ｉ）がラッチされ、メモリセルトランジスタへのデータ書込み（Ｐｒｏｇｒａｍ ｔｏ Ｍｅｍｏｒｙ Ｃｅｌｌ）処理が開始される（図１０に示すフローのステップＳＴ６）。なお、ＰＢ ユニット１では、図５に示す回路のうち、オア回路６６の出力がＬレベルであり、メモリセルトランジスタにデータは書き込まれない。
【０１７２】
メモリセルトランジスタからのデータ読み出し動作では、ＰＢ ユニット０〜ＰＢ ユニット４に格納されたデータが、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ、及びＥＣＣ回路１０７に入力（Ｄａｔａ Ｌｏａｄ）される（図１２（ｂ）に示すフローのステップＳＴ６１）。
ここでは、図１３（ｃ）における（６）Ｄａｔａ Ｌｏａｄに示す様に、ＥＣＣ回路１０７ａには、ＰＢ ユニット０〜ＰＢ ユニット４に格納されたＤａｔａ“００１０”、Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”が、ランダマイザ１０７ｂを介さずに直接入力される。
【０１７３】
ＥＣＣ回路１０７ａは、デコード（Ｄｅｃｏｄｅ）処理を実行し、Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”に基づいて、ＰＢ ユニット０〜ＰＢ ユニット３に格納されたＤａｔａ“００１０”の誤りを訂正（Ｅｒｒｏｒ Ｃｏｒｒｅｃｔｉｏｎ）する（ステップＳＴ６２ａ）。
ここでは、上記ステップＳＴ７３においてＰＢユニット １において、データ０が書き込まれたことと同等の状態となるので、ＰＢ ユニット１のデータ０は誤り訂正されない。ＥＣＣ回路１０７ａは、図１３（ｃ）における（７）ＥＣＣ Ｄｅｃｏｄｅ、Ｄｅ−Ｒａｎｄｏｍｉｚｅ＆Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢ ユニット３のデータに誤りがないので、出力データをＤａｔａ“００１０”とする。
【０１７４】
ランダマイザ１０７ｂは、ＥＣＣ回路１０７ａの出力データであるＤａｔａ“００１０”をランダマイズ処理（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）する（ステップＳＴ６２ｂ）。ここでは、ランダマイザ１０７ｂは、図１３（ｂ）における（７）ＥＣＣ Ｄｅｃｏｄｅ、Ｄｅ−Ｒａｎｄｏｍｉｚｅ＆Ｄａｔａ Ｓｔｏｒｅに示す様に、ランダマイズ処理により、Ｄａｔａ“００１０”の奇数番目のビットの論理を反転させて、Ｄａｔａ“０１１１”へと変換する。
【０１７５】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、ＰＢ ユニット０〜４にＥＣＣ処理後のＤａｔａ“０１１１”を書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ６３）。しかしながら、ＰＢ ユニット１は、”０”に固定しているため、データ１を書き込むことはできない。そのため、図１３（ａ）における（７）ＥＣＣ Ｄｅｃｏｄｅ、Ｄｅ−Ｒａｎｄｏｍｉｚｅ＆Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３が格納するデータはＤａｔａ“００１０”となる。
このようにして、ランダマイザ、及びＥＣＣ回路１０７により、真のＤａｔａ“００１１”（ユーザが、図１３（ａ）における（１）Ｄａｔａ Ｉｎに示す様に、ＰＢ ユニット０〜３に書き込んだはずのデータ）がページバッファ１０２へ格納される。
【０１７６】
以降、第２の動作モードにおいて、選択信号Ｓｅｌ＿Ａを与えることにより、ユーザがＰＢ ユニット０〜３を介して各メモリセルトランジスタへ書き込んだ書き込みデータが、誤り訂正されて、Ｉ／Ｏパッド１０６から出力される（図１０に示すフローのステップＳＴ１７）。なお、この際、ＰＢ ユニット１（不良を有するカラム）の置換（Ｄｅｆｅｃｔ Ｃｏｌｕｍｎ Ｒｅｐａｉｒ）が実行される（ステップＳＴ１６）。これにより、ＰＢ ユニット１に書き込むべきであったが、実際はページバッファ１０２ｂのＰＢユニットに書き込まれたデータ（このデータも上述した第２のランダマイズ及びＥＣＣ処理により誤り訂正されている）が、Ｉ／Ｏパッド１０６から出力される。
【０１７７】
このように、ＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）は、第１のランダマイズ及びＥＣＣ処理に替えて、第２のランダマイズ及びＥＣＣ処理を実行する。第２のランダマイズ及びＥＣＣ処理では、ＥＣＣモード（第１の動作モード）のデータ書き込み動作において、ランダマイザ１０７ｂ（ランダマイザ）は、ページバッファ１０２ａ（第１のページバッファ）の出力データをランダマイズしてページバッファ１０２ａに書き戻す。ＥＣＣ回路１０７ａ（ＥＣＣ回路）は、ページバッファ１０２ａに書き戻されたデータに基づいてページバッファ１０２ｃ（第２のページバッファ）にパリティデータを書き込む。一方、第２のランダマイズ及びＥＣＣ処理では、第１の動作モードのデータ読み出し動作において、ＥＣＣ回路１０７ａは、ページバッファ１０２ｃのパリティデータに基づいて、ページバッファ１０２ａのデータを誤り訂正する。ランダマイザ１０７ｂは訂正後のデータをデランダマイズしてページバッファ１０２ａに書き戻す。
【０１７８】
これにより、ページバッファ１０２ａ（第１のページバッファ）のうちメモリセルまたはビット線に不良が有るＰＢ ユニット（ページバッファ）については、誤りが発生しないように処理される。そのため、本発明のＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）によれば、ＥＣＣ処理の訂正処理能力を下げずに、ＥＣＣのデコード処理とデランダマイズ処理とを高速に実行することができる。
【０１７９】
[第３のランダマイズ及びＥＣＣ処理]
なお、上述した第２のランダマイズ及びＥＣＣ処理に替えて、第３のランダマイズ及びＥＣＣ処理を実行することにより、上述した第２のランダマイズ及びＥＣＣ処理の効果に加えて、更に、エンコード処理においてページバッファへのデータ書き戻し処理（Ｄａｔａ Ｓｔｏｒｅ）を１回にでき、エンコード処理の高速化を図ることができる効果を奏する。
以下、第３のランダマイズ及びＥＣＣ処理について、図１５、及び図１６を用いて説明する。図１５は、ランダマイザ１０７ｂ＿１の回路構成を示す図であり、図１６は、第３のランダマイズ及びＥＣＣ処理のフローチャートである。
ここでは、第３のランダマイズ及びＥＣＣ処理として、前述のページバッファに格納されている不良情報をランダマイザ１０７ｂに転送し、ランダマイザ１０７ｂ側では転送された不良ビット情報をもとに、不良ビットに対してランダマイズ処理をせず、固定データとする機構について説明する。
【０１８０】
図１５に示すランダマイザ１０７ｂの１ビット分の回路（以下、ランダマイザ１０７ｂ＿１とする）は、排他的論理和回路１５１、ＤＦＦ（Ｄ型フリップフロップ）１５２、及びアンド回路１５３を含んで構成される。
排他的論理和回路１５１において、第１入力端子が、不図示のランダムシード発生回路に接続され、ランダムシードデータＲＳの１ビット分のデータが入力される。また、第２入力端子が、ＥＣＣ Ｂｕｓを介してＰＢ ユニットに接続され、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂが入力される。また、排他的論理和回路１５１は、出力端子がアンド回路１５３の第１入力端子に接続され、出力信号（ランダムシードデータＲＳの１ビット分のデータと読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂとの排他的論理和）をアンド回路１５３に対して出力する。
【０１８１】
ＤＦＦ１５２において、データ入力端子Ｄは、ＥＣＣ Ｂｕｓを介してＰＢ ユニットに接続され、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂが入力される。また、クロック端子ＣＫは、例えばＥＣＣ回路１０７ａが内蔵するクロック信号発生回路に接続され、クロック信号Ｆｌａｇ＿Ｌａｔｃｈ＿Ｃｌｏｃｋが入力される。クロック信号Ｆｌａｇ＿Ｌａｔｃｈ＿Ｃｌｏｃｋは、ランダマイズ処理期間において、選択信号Ｓｅｌ＿Ｂが切り替わる毎に発生する信号である。つまり、ＤＦＦ１５２は、クロック端子ＣＫにクロック信号Ｆｌａｇ＿Ｌａｔｃｈ＿Ｃｌｏｃｋのトグル（Ｔｏｇｇｌｅ）入力されるたびに、ＰＢ ユニットが出力する読み出しデータＤａｔａ＿Ｏｕｔ＿ＢがＤ端子に取り込まれる。
また、ＤＦＦ１５２において、データ出力端子Ｑは、アンド回路１５３の第１入力端子に接続される。
【０１８２】
また、アンド回路１５３は、第１入力端子が排他的論理和回路１５１の出力端子に接続され、第２入力端子がＤＦＦ１５２のデータ出力端子Ｑに接続され、出力端子は、ランダマイザ、及びＥＣＣ回路１０７のパリティ生成回路４１とＰＢユニットに接続される。
ここで、図５または図６に示すＰＢ制御回路６０を参照して、ＥＣＣのエンコード処理時に、選択信号ＤＩＯ＜０＞〜＜７＞をすべてＬレベルとし、ビット内部回路５０＿０〜５０＿７を非選択状態とすれば、読み出し信号ＲＤの配線から見てビット側（ビット線、及びメモリセルトランジスタ側）はハイインピーダンス状態となる。そこで、選択信号Ｓｅｌ＿ＢをＨレベルとしてＰＢ ユニットのＰＢ制御回路６０を選択すれば、不良ビット情報が（トランジスタ９０ｂを通して）、ＥＣＣ Ｂｕｓに読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂとして現れる。つまり、不良ビット情報をランダマイザ１０７ｂ＿１のＤＦＦ１５２（不良ビット情報格納部）に転送することができる。
【０１８３】
詳細に説明すると、ＰＢ ユニットが不良であれば、欠陥信号ＰＢ＿ＤｅｆｅｃｔがＨレベルであるので、トランジスタ６１ｃがオンし、読み出しデータＤａｔａ＿Ｏｕｔ＿ＢはＬレベルとなる。そこで、ランダマイザ１０７ｂ＿１において、不良ビット情報が読み出しデータＤａｔａ＿Ｏｕｔ＿ＢとしてＰＢ ユニットから出力されたら、クロック信号Ｆｌａｇ＿Ｌａｔｃｈ＿Ｃｌｏｃｋをトグル入力することにより、不良情報をＤＦＦ１５２にラッチすることができる。ＰＢ ユニットが不良であればＬレベルがＤＦＦ１５２にラッチされ、データ出力端子ＱもＬレベルとなる。これにより、アンド回路１５３の出力信号である“Ｒａｎｄｏｍｉｚｅｄ Ｄａｔａ”、ランダマイザ１０７ｂ＿１の出力は、Ｌレベルに固定される。一方、ＰＢ ユニットが不良ではない場合、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂの配線はプルアップされているため、ＨレベルがＤＦＦ１５２にラッチされる。これにより、データ出力端子ＱはＨレベルとなり、ランダムシードＲＳと読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂの排他的論理和が、アンド回路１５３から“Ｒａｎｄｏｍｉｚｅｄ Ｄａｔａ”として出力され、ランダマイザ１０７ｂ＿１がランダマイザとして機能する。
【０１８４】
続いて、図１６を用いて、第３のランダマイズ及びＥＣＣ処理について説明する。なお、ここでは、第２のランダマイズ及びＥＣＣ処理との比較を行うため、図１３を用いて説明した第２のランダマイズ及びＥＣＣ処理と同様に、ＰＢ ユニット０〜ＰＢ ユニット３のうちＰＢ ユニット１が不良ユニットであるものとして説明する。
まず、ＰＢ ユニット０〜ＰＢユニット３から不良情報（Ｄｅｆｅｃｔ Ｂｉｔ Ｉｎｆｏｒｍａｔｉｏｎ）をランダマイザ１０７ｂに転送する（ステップＳＴ９１ａ）。
具体的には、ページバッファ１０２のＰＢ ユニット０〜ＰＢユニット３に対して、選択信号ＤＩＯを全てＬレベルにし、ＰＢ ユニット０〜ＰＢユニット３各々において、読み出し信号ＲＤの配線から見てビット側をハイインピーダンス状態とする。次に、選択信号Ｓｅｌ＿ＢをＨレベルにして、読み出し信号ＲＤの配線とＥＣＣ Ｂｕｓとを接続する。ＰＢ ユニット０〜ＰＢユニット３のうち、ＰＢ ユニット１のＰＢ制御回路６０においては、トランジスタ６１ｃ、及び６１ｂがオンして、読み出しデータＤａｔａ＿Ｏｕｔ＿ＢがＬレベルとなる。一方、ＰＢ ユニット０、２、３については、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂの配線に接続されたプルアップ回路（Ｐｕｌｌ Ｕｐ）により、読み出しデータＤａｔａ＿Ｏｕｔ＿Ｂは、Ｈレベルに維持される。つまり、ランダマイザ１０７ｂのＤＦＦ１５２（ここでは、ＰＢ ユニット０〜ＰＢユニット３に対応させて４個ある）には、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、Ｄａｔａ Ｄ０〜Ｄ３としてＤａｔａ“１０１１”が格納される。
【０１８５】
次に、Ｄａｔａ Ｄ０〜Ｄ３（Ｄａｔａ“００１１”）を、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３（第１のデータバス）を介して、ランダマイザ１０７ｂに入力（Ｄａｔａ Ｌｏａｄ）する（ステップＳＴ９１ｂ）。
このとき、選択信号ＤＩＯはいずれか一本が選択されるので、ページバッファ１０２のＰＢ ユニット０〜ＰＢユニット３から、Ｄａｔａ Ｄ０〜Ｄ３（Ｄａｔａ“００１１”）が、ＥＣＣ Ｂｕｓ＿１、ＥＣＣ Ｂｕｓ＿２、及びＥＣＣ Ｂｕｓ＿３を介して、ランダマイザ１０７ｂに入力される。
【０１８６】
次に、ランダマイザ１０７ｂは、データランダマイズ（Ｄａｔａ Ｒａｎｄｏｍｉｚｅ）処理を行う（ステップＳＴ９２）。ここでは、ランダマイザ１０７ｂのＤＦＦ１５２（不良ビット情報格納部）には、Ｄａｔａ“１０１１”が格納されている。また、ここでは、ランダムシードＲＳは、第２のランダマイズ及びＥＣＣ処理と同様、奇数番目のビットを反転させるため、Ｄａｔａ Ｄ０〜Ｄ３に対応してＤａｔａ“０１０１”である。
ＰＢ ユニット０〜ＰＢユニット３のうちＰＢ ユニット１が出力するデータＤ１（“０”）は、ＤＦＦ１５２に格納されているデータが“０”であるため、排他的論理和演算の結果はアンド回路１５３から出力されず、アンド回路１５３の出力信号である“Ｒａｎｄｏｍｉｚｅｄ Ｄａｔａ”は“０”となる。
一方、ＰＢ ユニット０、２、３が出力するデータＤ０（“０”）、Ｄ２（“１”）、Ｄ３（“１”）は、それぞれランダムシードＲＳ“０”、“０”、“１”と排他的論理和演算され、すなわち、奇数番目のデータのみ反転され、“０”、“１”、“０”となる。また、データＤ０、Ｄ２、Ｄ３は、ＤＦＦ１５２に格納されているデータが全て“１”であるため、排他的論理和演算の結果がアンド回路１５３から出力され、アンド回路１５３の出力信号である“Ｒａｎｄｏｍｉｚｅｄ Ｄａｔａ”は、データＤ０、Ｄ２、Ｄ３に対応して、それぞれ“０”、“１”、“０”となる。
つまり、固定データを出力するＰＢ ユニット１のデータは、奇数番目のビットであるが、第２のランダマイズ及びＥＣＣ処理のときのように、ランダマイズ処理（ここでは論理反転処理）されて“１”となることはない。一方、固定データではない、データＤ０、Ｄ２、Ｄ３は、ランダマイズ処理される。
【０１８７】
以上のような固定データを除く、ランダマイズ処理の結果、ランダマイザ１０７ｂは、Ｄａｔａ“００１０”をＥＣＣ回路１０７ａに対して出力する。
これは、第２のランダマイズ及びＥＣＣ処理において、ページバッファ１０２のＰＢ ユニット０〜ＰＢユニット３から、Ｄａｔａ Ｄ０〜Ｄ３（Ｄａｔａ“００１０”）を、ＥＣＣ Ｂｕｓを介して、ＥＣＣ回路１０７ａに入力（Ｄａｔａ Ｌｏａｄ）する状態と同じである（図１３（ａ）における（４）Ｄａｔａ Ｌｏａｄ＆ＥＣＣ Ｅｎｃｏｄｅ参照）。
その後は、第２のランダマイズ及びＥＣＣ処理と同様、下記の処理が行われる。
すなわち、ＥＣＣ回路１０７ａは、エンコード（Ｅｎｃｏｄｅ）処理を実行し、パリティデータを生成（Ｐａｒｉｔｙ Ｇｅｎｅｒａｔｉｏｎ）する（ステップＳＴ７２ｂ）。
ここでは、ＥＣＣ回路１０７ａは、ランダマイザ１０７ｂから入力されるＤａｔａ“００１０”に基づいて、Ｄａｔａ“００１０”に対応するＰａｒｉｔｙ Ｐｘ（Ｐａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”）を生成する。
【０１８８】
続いて、ランダマイザ、及びＥＣＣ回路１０７は、ＰＢ ユニット０〜３に、ＥＣＣ処理後のデータを書き戻す（Ｄａｔａ Ｓｔｏｒｅ）処理を実行する（ステップＳＴ７３）。
ここでは、ＥＣＣ回路１０７ａは、図１３（ａ）における（５）Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３にＤａｔａ“００１０”を、ＰＢ ユニット４にＰａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”を書き戻す。ここで、ＰＢ ユニット１は、”０”に固定しているため、第２のランダマイズ及びＥＣＣ処理と同様、ユーザが図１３（ａ）における（１）Ｄａｔａ Ｉｎにおいて書いたデータと同じデータ０が書き込まれたことと同等の状態となる。つまり、図１３（ａ）における（５）Ｄａｔａ Ｓｔｏｒｅに示す様に、ＰＢ ユニット０〜ＰＢユニット３が格納するデータはＤａｔａ“００１０”となる。また、ＰＢ ユニット４が格納するデータは、Ｄａｔａ“００１０”に基づいて生成されたＰａｒｉｔｙ Ｄａｔａ“Ｐ(００１０)”となる。
【０１８９】
このように、第３のランダマイズ及びＥＣＣ処理においては、ランダマイザ（ランダマイザ１０７ｂ）は、ランダマイズ処理に先立って不良ビット情報格納部（ＤＦＦ１５２）に取り込んだ第１のページバッファ（ページバッファ１０２ａ）の不良情報に基づいて、第１のページバッファの出力データ（Ｄａｔａ Ｄ０〜Ｄ３）のうち、固定されたデータ（Ｄａｔａ Ｄ１）を除く、第１のページバッファの出力データをランダマイズしてＥＣＣ回路１０７ａに入力する。これにより、第２のランダマイズ及びＥＣＣ処理と同様に、ＥＣＣ処理の訂正処理能力を下げずに、ＥＣＣのデコード処理とデランダマイズ処理とを高速に実行することができる。また、第２のランダマイズ及びＥＣＣ処理に比べて、ページバッファにデータを書き戻すＤａｔａ Ｓｔｏｒｅ処理（図１４に示すステップＳＴ８１）、ページバッファからＥＣＣ回路へデータを入力するＤａｔａ Ｌｏａｄ処理（図１４に示すステップＳＴ８２）を不要とすることができる。そのため、第２のランダマイズ及びＥＣＣ処理に比べて、ＥＣＣ処理のエンコード処理を高速に実行することができる。
【０１９０】
また、本発明のＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）は、ＥＣＣ Ｂｕｓ＿１〜３（第１のデータバス）と、ＥＣＣモード（第１の動作モード）によりメモリセルとの間でデータを転送する場合、複数のビット線のうちＥＣＣ Ｂｕｓと同じ本数のビット線と、ＥＣＣ Ｂｕｓとを接続してデータを転送するページバッファ１０２（データ転送部）と、を備える。また、データ転送部は、通常メモリセルに接続されるビット線に出力される出力データをラッチするページバッファ１０２ａ（第１のページバッファ）と、パリティメモリセルに接続されるビット線に出力される出力データをラッチするページバッファ１０２ｃ（第２のページバッファ）と、を含んで構成される。そして、第１のデータバスは、第１のページバッファ、及び第２のページバッファと接続され、第１のデータバスに接続されるとともに、第２のページバッファの出力データに基づき、第１のページバッファの出力データの誤りを訂正するＥＣＣ回路１０７ａ（ＥＣＣ回路）を備える。また、第１のデータバスに接続され、予め設定されたシードデータに基づいて、第１のページバッファから入力されるデータをランダマイズし、ＥＣＣ回路から入力されるデータをデランダマイズするランダマイザ１０７ｂ（ランダマイザ）を備える。
【０１９１】
これにより、ページバッファ１０２の出力に接続されるＥＣＣ Ｂｕｓ（第１のデータバス）を、ＥＣＣモード（第１動作モード）用に用いることができる。また、ＥＣＣ Ｂｕｓには、ランダマイザ１０７ｂ（ランダマイザ）、及びＥＣＣ回路１０７ａ（ＥＣＣ回路）が設けられる。そのため、本発明のＮＡＮＤ型フラッシュメモリ１０によれば、ＥＣＣ回路、及びランダマイザ１０７（ＥＣＣ回路、及びランダマイザ）を内蔵したＮＡＮＤ型フラッシュメモリ１０（半導体記憶装置）において、ＥＣＣ処理におけるデコード（Ｄｅｃｏｄｅ）動作とデランダマイズ（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）動作を同時に実行でき、復元、かつ訂正されたデータの読み出し時間を短縮することができる。
【０１９２】
例えば、従来のＮＡＮＤ型フラッシュメモリにおいては、所定のデータ長のデータについてランダマイズ処理、及びＥＣＣデコード処理する場合、ページバッファにおけるデータのセットアップとセンシング処理とに２０μｓ（マイクロ秒）、デランダマイズ処理に１０μｓ、ＥＣＣのデコード処理に２０μｓ、それぞれ要しており、データの読み出し時間が５０μｓであった。これに対し、本実施形態のＮＡＮＤ型フラッシュメモリ１０では、デコード（Ｄｅｃｏｄｅ）動作とデランダマイズ（Ｄｅ−Ｒａｎｄｏｍｉｚｅ）動作をランダマイザ、及びＥＣＣ回路１０７において同時に実行できるため、ＥＣＣデコード、及びデランダマイズ処理に要する時間を２０μｓまで短縮でき、データの読み出し時間を４０μｓまで短縮することができる。
【０１９３】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【０１９４】
１０…ＮＡＮＤ型フラッシュメモリ、１０１…メモリアレイ、１０２，１０２ａ，１０２ｂ，１０２ｃ，１０２ｄ…ページバッファ、１０３，１０８…カラムコーディング回路、１０４…カラム置換回路、１０５…パリティカラム置換回路、１０７ａ…ＥＣＣ回路、１０７ｂ…ランダマイザ、１０６，１０６ｃ…Ｉ／Ｏパッド
【図１】
2014137834.tif 000003
【図２】
2014137834.tif 000004
【図３】
2014137834.tif 000005
【図４】
2014137834.tif 000006
【図５】
2014137834.tif 000007
【図６】
2014137834.tif 000008
【図７】
2014137834.tif 000009
【図８】
2014137834.tif 000010
【図９】
2014137834.tif 000011
【図１０】
2014137834.tif 000012
【図１１】
2014137834.tif 000013
【図１２】
2014137834.tif 000014
【図１３】
2014137834.tif 000015
【図１４】
2014137834.tif 000016
【図１５】
2014137834.tif 000017
【図１６】
2014137834.tif 000018