(57)【要約】【課題】データ列のうち任意のアドレスのビットを、誤り訂正を行って外部に高速に出力することができる誤り検出訂正回路、及びメモリ装置を提供する。【解決手段】データ列を格納するデータ格納部（ページバッファ１２）と、データ列からシンドロームを計算するシンドローム計算部３１と、シンドロームからエラー位置探索方程式の係数を算出する誤り係数計算部３２と、係数を記憶するラッチ部３５と、データ列の位置を示すアドレスと、ラッチ部３５が記憶する係数とを用いてエラー位置探索方程式に代入する代入値を算出する代入値計算部３６と、データ列の出力時に、代入値のエラー位置探索方程式への代入結果に応じて、データ列のビット毎に誤りが有るか否かを示すエラー検出信号を出力するチェン探索部３３と、エラー検出信号によりデータ列におけるビットのデータの誤りを訂正して出力する誤り訂正部３４と、を備える。【選択図】図２
2014033364.tif 000002
【特許請求の範囲】
【請求項１】
データ列を格納するデータ格納部と、
前記データ列からシンドロームを計算するシンドローム計算部と、
前記シンドロームからエラー位置探索方程式の係数を算出する誤り係数計算部と、
前記係数を記憶するラッチ部と、
前記データ列の位置を示すアドレスと、前記ラッチ部が記憶する係数とを用いて前記エラー位置探索方程式に代入する代入値を算出する代入値計算部と、
前記データ列の出力時に、前記代入値の前記エラー位置探索方程式への代入結果に応じて、前記データ列のビット毎に誤りが有るか否かを示すエラー検出信号を出力するチェン探索部と、
前記エラー検出信号により前記データ列におけるビットのデータの誤りを訂正して出力する誤り訂正部と、を備えることを特徴とする誤り検出訂正回路。
【請求項２】
前記データ列が複数のデータ列から構成され、
前記ラッチ部が、前記複数のデータ列の各々に対応して設けられることを特徴とする請求項１に記載の誤り検出訂正回路。
【請求項３】
請求項１または請求項２に記載の誤り検出訂正回路を備えたメモリ装置であって、
前記データ格納部は記憶素子から読み出したデータ列を格納する回路であり、
前記アドレスは前記記憶素子のメモリにおける列の位置を示すカラムアドレスであることを特徴とするメモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り検出訂正回路、及びメモリ装置に関する。
【背景技術】
【０００２】
電気的書き換え可能な不揮発性半導体記憶装置（ＥＥＰＲＯＭ；Electrically  Erasable  and  Programmable  Read  Only  Memory）の一つとして、ＮＡＮＤ型フラッシュメモリが知られている。ＮＡＮＤ型フラッシュメモリは、複数のメモリセルを直列接続したＮＡＮＤセルユニット（ＮＡＮＤストリング）を用いることにより、小さいチップ面積での大容量記憶を可能としている。
【０００３】
ＮＡＮＤ型フラッシュメモリでは、多数回の書き換えに伴うトンネル酸化膜の劣化等に起因して、データ保持中に記憶素子（メモリセル）の保持特性が失われ、エラービットの発生率（エラー率）が大きくなる傾向がある。特に、ＮＡＮＤ型フラッシュメモリでは、メモリセルの大容量化、すなわち製造プロセスにおける微細化が進むとエラー率は上昇してしまう傾向にある。そのため、記憶すべきデータに誤り訂正符号（Ｅｒｒｏｒ  Ｃｏｒｒｅｃｔｉｎｇ  Ｃｏｄｅ）の冗長データを付加してデータ列としてフラッシュメモリに書込むと共に、読出し時には誤り訂正符号の冗長データを基にしてデータの訂正を行うことで、エラービットが発生したときのデータの補償を行っている。
【０００４】
例えば、特許文献１には、誤り検出訂正回路（ＥＣＣ回路）を備えたＮＡＮＤ型フラッシュメモリが開示されている。特許文献１記載の誤り検出訂正回路では、チェン探索部において、受信情報（データ列）のうちのビットの位置をエラー位置探索方程式に代入し、当該ビットに誤りがあるか否かを検出する。データ列の出力時には、チェン探索部にアドレスを最下位から最上位まで全て代入する。そして、誤り訂正回路（誤り訂正部）では、各ビットに誤りがある場合はビットのデータを訂正して訂正後のデータを出力し、誤りがない場合は訂正しないでビットのデータをそのまま出力する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００９−１００３６９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述した特許文献１に記載された構成では、データ列のうち任意のアドレスのビットを読み出そうとする場合、誤り訂正回路の出力するビットを一端バッファメモリ等に記憶させ、その後、読み出すべきビットのアドレスをバッファメモリに対して供給しなければならない。つまり、従来においては、誤り検出訂正回路において、読み出すべきビットが含まれるデータ列の全てのビットに対するエラービットのデータの訂正処理が終了するまで、任意のアドレスのビットのデータの誤り訂正を行って誤り訂正後のデータを高速に読み出すことができないという問題があった。
【０００７】
そこで本発明が解決しようとする課題は、データ列のうち任意のアドレスのビットのデータの誤り訂正を行って、誤り訂正後のデータを外部に高速に出力することができる誤り検出訂正回路、及びメモリ装置を提供することにある。
【課題を解決するための手段】
【０００８】
本発明の誤り検出訂正回路は、データ列を格納するデータ格納部と、前記データ列からシンドロームを計算するシンドローム計算部と、前記シンドロームからエラー位置探索方程式の係数を算出する誤り係数計算部と、前記係数を記憶するラッチ部と、前記データ列の位置を示すアドレスと、前記ラッチ部が記憶する係数とを用いて前記エラー位置探索方程式に代入する代入値を算出する代入値計算部と、前記データ列の出力時に、前記代入値の前記エラー位置探索方程式への代入結果に応じて、前記データ列のビット毎に誤りが有るか否かを示すエラー検出信号を出力するチェン探索部と、前記エラー検出信号により前記データ列におけるビットのデータの誤りを訂正して出力する誤り訂正部と、を備えることを特徴とする。
【０００９】
また、本発明の誤り検出訂正回路において、前記データ列が複数のデータ列から構成され、前記ラッチ部が、前記複数のデータ列の各々に対応して設けられることを特徴とする。
【００１０】
また、本発明のメモリ装置は、上記誤り検出訂正回路を備えたメモリ装置であって、前記データ格納部は記憶素子から読み出したデータ列を格納する回路であり、前記アドレスは前記記憶素子のメモリにおける列の位置を示すカラムアドレスであることを特徴とする。
【発明の効果】
【００１１】
本発明の誤り検出訂正回路は、エラー位置探索方程式の係数を記憶するラッチ部と、この係数とビットの位置とからエラー位置探索方程式への代入値を計算する代入値計算部とを設けた。そのため、データの読み出し時に、代入値計算部に読み出すべきビットのアドレスを入力すれば、チェン探索部が当該ビットのデータに誤りが有るか否かを検出する。誤り訂正部は、当該ビットのデータに誤りがあればビットのデータを訂正して訂正後のビットのデータを出力し、誤りがない場合はビットのデータをそのまま出力する。よって、データ列のうち任意のアドレスのビットのデータについて、誤り訂正を行って訂正後のデータを高速に読み出すことができる誤り検出訂正回路、及びメモリ装置を提供することができる。
【図面の簡単な説明】
【００１２】
【図１】不揮発性半導体記憶装置１０であるＮＡＮＤ型フラッシュメモリの構成例を示す概略ブロック図である。
【図２】誤り検出訂正回路１３の詳細な構成例を示す図である。
【図３】チェン探索部３３の詳細な構成の一例を示す図である。
【図４】代入値計算部３６の詳細な構成の一例を示す図である。
【図５】誤り検出訂正回路１３ａの詳細な構成例を示す図である。
【図６】誤り検出訂正回路１３と誤り検出訂正回路１３ａとの比較を説明するための図である。
【発明を実施するための形態】
【００１３】
以下、図面を参照して、本発明の実施の形態について説明する。図１は、不揮発性半導体記憶装置１０であるＮＡＮＤ型フラッシュメモリの構成例を示す概略ブロック図である。
不揮発性半導体記憶装置１０は、メモリセルアレイ１１、ページバッファ１２、誤り検出訂正回路１３、バッファ１４、Ｉ／Ｏパッド１５、制御回路１６、アドレスデコーダ１７、及びロウ及びブロックデコーダ１８を含んで構成される。
【００１４】
メモリセルアレイ１１は、複数のスタックゲート構造のトランジスタ、すなわち電気的書き換え可能な不揮発性メモリセル（記憶素子）をカラム方向（列方向）に直列接続して、ビット線毎に設けられたＮＡＮＤセルストリングを、行方向（ビット線の配列方向）に複数個配置したブロックから構成される。このブロックは、ビット線の配線方向に複数個配置される。また、このブロックは、メモリセルのデータの消去単位で設けられている。各ブロックにおいては、同一行に配置された不揮発性メモリ各々のゲートには、ビット線に直行したワード線が接続される。
１本のワード線により選択される不揮発性メモリセルの範囲がプログラム及び読み出しの単位となる１ページである。
【００１５】
ページバッファ１２は、ページ単位のデータのプログラム及び読み出しを行うため、ビット線毎に設けられたページバッファ回路から構成されている。このページバッファ１２におけるページバッファ回路各々は、それぞれのビット線に接続され、接続されたビット線の電位を増幅して判定するセンスアンプ回路として用いるラッチ回路を有する。
ページバッファ１２（データ格納部）は、不揮発性半導体記憶装置１０のデータ読み出し動作において、メモリセルアレイ１１の１ページ分のメモリセルが記憶するデータ（データ列）からなるセルデータＣｅｌｌ  Ｄａｔａが入力され、このデータを増幅して誤り検出訂正回路１３に対して出力する。一方、ページバッファ１２は、不揮発性半導体記憶装置１０のデータ書込み（プログラム）動作において、誤り検出訂正回路１３から供給されるデータを内部のラッチ回路に格納し、ベリファイ動作を行いつつ、全てのデータを符号データＣｏｄｅ  Ｄａｔａとして１ページ内のメモリセルに書き込む。
この符号データＣｏｄｅ  Ｄａｔａには、誤り検出訂正回路１３が生成するパリティデータＰａｒｉｔｙが含まれる。なお、本実施形態において、例えば情報長５１２Ｂｙｔｅ （バイト）に対しＢＣＨ符号を用いて４Ｂｉｔ（ビット）訂正を行う誤り訂正システムを例に取るとき、１ページは、２Ｋ（＝２０４８）バイト、すなわち、１６ｋ（＝１７６３８４）ビットの通常データを各々記憶するメモリセルと、２０８ビットのパリティデータを各々記憶するメモリセルから構成される。すなわち、セルデータＣｅｌｌ  Ｄａｔａ、及び符号データＣｏｄｅ  Ｄａｔａは、（１６ｋ＋２０８）ビットから構成される。また、１ページは、誤り検出訂正回路１３の訂正の単位として、例えば４つのセクタに分割されている。つまり、１セクタに対応するデータは、５１２バイト（＝４０９６ビット）の通常データ、５２ビットのパリティデータから構成される。
また、本実施形態において、メモリ外部よりのアクセスは、通常メモリに対して対応するカラムアドレスＹ［１３：０］を入力することにより行われる。パリティデータは、通常データの訂正用に付加される内部データであり、外部からは直接アクセスされることはない。
【００１６】
誤り検出訂正回路１３は、詳細については後述するが、不揮発性半導体記憶装置１０のデータ読み出し動作において、ページバッファ１２から読み出されたデータを、セクタ毎に処理して、エラー位置探索方程式の係数を算出し、内部のラッチに保持する。また、誤り検出訂正回路１３は、読み出し動作において、カラムアドレスにより位置が示されるビットのデータの誤りを訂正し、Ｉ／Ｏパッド１５を介して訂正済データＣｏｒｒｅｃｔｅｄ  Ｄａｔａとして外部へ出力する。なお、Ｉ／Ｏパッド１５と誤り検出訂正回路１３との間に入出力回路を設けて、この入出力回路を介して外部へデータを出力してもよい。
また、誤り検出訂正回路１３は、不揮発性半導体記憶装置１０のデータ書き込み動作において、Ｉ／Ｏパッド１５から入力される情報データＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａを、バッファ１４を介して受け取る。誤り検出訂正回路１３は、受け取った情報データＩｎｆｏｒｍａｔｉｏｎ  ＤａｔａからパリティデータＰａｒｉｔｙを生成するとともに、受け取った情報データＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａ、及びパリティデータＰａｒｉｔｙをページバッファ１２に対して出力する。ページバッファ１２は、これらのデータを符号データＣｏｄｅ  Ｄａｔａとして、選択されているページに接続されるメモリセルに書き込む。
【００１７】
制御回路１６は、各種制御信号が入力され、不揮発性メモリセルに対するデータのプログラム、読み出し、消去などの動作、及びベリファイの動作の制御を行う。
例えば、制御信号は、外部クロック信号、チップイネーブル信号／ＣＥ、読み出しイネーブル信号／ＲＥ、プログラムイネーブル信号／ＷＥ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトプロテクト信号／ＷＰなどである。制御回路１６は、これらの制御信号と、Ｉ／Ｏパッド１５から入力されるコマンドデータとが示す動作モードに応じて、各回路に対して内部制御信号を出力する。
例えば、制御回路１６は、プログラムイネーブル信号／ＷＥの立ち上がり時にコマンドラッチイネーブル信号ＣＬＥがロウ（Ｌ）レベルからハイ（Ｈ）レベルになることにより、Ｉ／Ｏパッド１５からコマンドデータを取り込み、内部のレジスタに保持する。
【００１８】
アドレスデコーダ１７は、Ｉ／Ｏパッド１５から入力されるアドレス（ロウアドレス、ブロックアドレス、カラムアドレス）を制御回路１６からの内部制御信号に基づいて保持する。また、アドレスデコーダ１７は、保持したアドレスを、制御回路１６からの内部制御信号に基づいて、ロウ及びブロックデコーダ１８、ページバッファ１２、及び誤り検出訂正回路１３へ出力する。
例えば、制御回路１６は、プログラムイネーブル信号／ＷＥの立ち上がり時にアドレスラッチイネーブル信号ＡＬＥがロウ（Ｌ）レベルからハイ（Ｈ）レベルになることにより、Ｉ／Ｏパッド１５からアドレスを取り込み、アドレスデコーダ１７の内部レジスタに保持する。
【００１９】
ロウ及びブロックデコーダ１８は、アドレスデコーダ１７が保持し、出力するロウアドレス、及びブロックアドレスに応じて、メモリセルアレイ１１のブロック、及びワード線の選択を行い、１ページ上のメモリセルを選択する。
また、アドレスデコーダ１７は、内部に保持するカラムアドレスに応じて、メモリセルアレイ１１のビット線及びページバッファ１２の選択を行う。
【００２０】
本実施形態において、データ読み出し動作においては、ページバッファ１２内のセルデータＣｅｌｌ  Ｄａｔａが誤り検出訂正回路１３に読み出され、エラー位置探索方程式の係数がセクタ毎に計算される。そして、セクタ毎に計算された係数とカラムアドレスとに応じて、カラムアドレスにより位置が示されるビットのデータ、すなわちメモリセルのデータ（１６ビット）に誤りがあるか否かが検出され、誤りがある場合は訂正されて、訂正済データＣｏｒｒｅｃｔｅｄ  ＤａｔａとしてＩ／Ｏパッド１５から出力される（詳細後述）。
【００２１】
また、データ書き込み動作においては、バッファ１４にいったんページバッファ１２内に格納されたセルデータＣｅｌｌ  Ｄａｔａが読み出される。バッファ１４は、例えばＳＲＡM（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）により構成される。
バッファ１４では、セルデータＣｅｌｌ  Ｄａｔａのうち、入力されるカラムアドレスに対応する部分のデータが、Ｉ／Ｏパッド１５からのデータＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａに書き換えられる。また、誤り検出訂正回路１３では、バッファ１４の書き換え後のデータを含む１セクタ分のデータに対応したパリティデータが算出される。そして、これらのパリティデータを含む４セクタ分のデータが、符号データＣｏｄｅ  Ｄａｔａとして、ページバッファ１２を介して選択されているページに書き込まれる。
【００２２】
次に、図２は、誤り検出訂正回路１３の詳細な構成例を示す図である。
本実施形態においては、誤り検出訂正回路（以下、ＥＣＣ回路とも称する）１３として、ＢＣＨ符号（Ｂｏｓｅ−Ｃｈａｕｄｈｕｒｉ  Ｈｏｃｑｕｅｎｇｈｅｍ ｃｏｄｅ）を用いたＥＣＣ回路を例にとって説明する。ＥＣＣ回路は、ＢＣＨ符号で代表されるガロア体演算を利用したブロック符号である。なお、ＢＣＨ符号の替りに、例えばＨａｍｍｉｎｇ符号（Ｈａｍｍｉｎｇ  ｃｏｄｅ）、リードソロモン符号（Ｒｅｅｄ−Ｓｏｌｏｍｏｎ  ｃｏｄｅ）を用いることも可能である。なお、以下の説明では、情報データ長５１２バイト（＝４０９６ビット）を訂正単位、すなわち１ページの１／４のセルのデータを訂正の単位とし、それぞれの訂正単位のうちの４ビットのデータの訂正が可能なＢＣＨ符号を用いたＥＣＣ回路について説明する。
【００２３】
誤り検出訂正回路１３は、データの復号を司るデコーダ部３０と、訂正用パリティデータＰａｒｉｔｙを生成し、訂正用パリティデータＰａｒｉｔｙをセルへの書き込みデータに付加するエンコーダ部４０とを含んで構成される。
このうち、エンコーダ部４０は、パリティ生成回路４１を有する。パリティ生成回路４１は、バッファ１４に書き込まれた情報データＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａを生成多項式で除算して得られるパリティデータＰａｒｉｔｙを生成する。また、パリティ生成回路４１は、情報データＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａに、生成したパリティデータＰａｒｉｔｙを付加して、ページバッファ１２に対して出力する。これらのデータは、不揮発性半導体記憶装置１０のデータ書き込み時において、選択された１ページに書き込まれる符号データＣｏｄｅ  Ｄａｔａとなる。なお、本実施形態では、不揮発性半導体記憶装置１０からのデータ読み出し時において、誤り検出訂正回路１３が高速にデータ訂正処理を行うことに特徴を有するものであり、以下ではデコーダ部３０について詳細に説明する。
【００２４】
デコーダ部３０は、シンドローム計算部３１、誤り係数計算部３２、チェン探索部３３、誤り訂正部３４、ラッチ部３５、及び代入値計算部３６を含んで構成される。
シンドローム計算部３１は、不揮発性半導体記憶装置１０のデータ読み出し時に、ページバッファ１２に読み出されたセルデータＣｅｌｌ  Ｄａｔａが、符号データとしてセクタ毎に入力され、この符号データを独立な最小多項式で除算することによりシンドロームを計算する。４ビットのデータの誤り訂正が可能なＢＣＨ符号で使用される独立な最小多項式は、４つである。シンドローム計算部３１は、これら４つの最小多項式に対応して、４つのシンドローム算出回路３１＿１〜３１＿４を備えている。これらのシンドローム算出回路３１＿１〜３１＿４は、それぞれシンドロームＳ１、Ｓ３、Ｓ５、Ｓ７を計算する。
【００２５】
誤り係数計算部３２は、これらのシンドロームＳ１、Ｓ３、Ｓ５、Ｓ７を使用して、セクタ毎のエラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０を計算する。係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０は、チェン探索部３３が、エラー位置探索方程式Λ（ｘ）＝ｅ４ｘ４＋ｅ３ｘ３＋ｅ２ｘ２＋ｅ１ｘ１＋ｅ０の係数である。エラー位置探索方程式Λ（ｘ）は、ページバッファ１２からセクタ毎に読み出されたビットに誤りがあるか否かを探索する際にチェン探索部３３において用いられる。
【００２６】
ここで、エラー位置探索方程式について説明するため、チェン探索部３３の構成、及び動作について説明する。
図３は、チェン探索部３３の詳細な構成の一例を示す図である。
チェン探索部３３は、４台のセレクタ、５台のフリップフロップ、６４台の定数乗算回路、１６台の排他的論理和演算回路、及び１６台の論理反転回路を含んで構成される。
図３に示すように、４台のセレクタはセレクタ３０１、３０２、３０３、３０４であり、５台のフリップフロップはフリップフロップ３１０、３１１、３１２、３１３、３１４、である。また、６４台の定数乗算回路は、定数乗算回路３２１＿１、３２１＿２、・・・、３２１＿１６、定数乗算回路３２２＿１、３２２＿２、・・・、３２２＿１６、定数乗算回路３２３＿１、３２３＿２、・・・、３２３＿１６、定数乗算回路３２４＿１、３２４＿２、・・・、３２４＿１６である。また、１６台の排他的論理和演算回路は、排他的論理和演算回路３３０＿１、３３０＿２、・・・、３３０＿１５、３３０＿１６であり、１６台の論理反転回路は、論理反転回路３４０＿１、３４０＿２、・・・、３４０＿１５、３４０＿１６である。
【００２７】
セレクタ３０１〜セレクタ３０４にそれぞれ入力されるｅ１ｘ、ｅ１ｘ２、ｅ１ｘ３、ｅ１ｘ４におけるｘは、符号データ、つまりページバッファに格納されたセルデータＣｅｌｌ  Ｄａｔａの位置を示す値が入力される。このセルデータＣｅｌｌ  Ｄｅｔａには、パリティビット（５２ビット）がカラム最下位に付加されている。具体的には、ｘとして次の値が入力される。すなわち、１ページに１６ｋビットのデータ（パリティデータを除く）が含まれるので、ビット線の位置を示すカラムアドレスは１４ビットのカラムアドレスＹ［１３：０］である。このうち、上位１０ビットのカラムアドレスＹ［１３：４］を、Ｙ＝ａ１３×２１３＋ａ１２×２１２＋・・・＋ａ５×２５＋ａ４×２４と十進数で表わすと、本実施形態では１６ビット単位でビットのデータの誤り訂正を行うので、ｘとして、パリティビット（５２ビット）分ずらしたａ１３×２１３＋ａ１２×２１２＋・・・＋ａ５×２５＋ａ４×２４＋５２（＝αｊとする）が入力される。
【００２８】
ここで、ｉ＝０〜１５（整数）として、αｉ＋ｊは、ガロア有限体ＧＦ（２ｍ）の元であり、カラムアドレスＹ［１３：０］の最小値、すなわちカラムアドレスのビットがオール０の場合から数えて何番目のカラムアドレスに位置するかを示す値、すなわち（ｊ×１６＋ｉ＋１）番目のビット線の位置を示す値である。
αｉ＋ｊ＝αｉ×αｊであるから、エラー位置探索方程式Λ（ｘ）＝ｅ４ｘ４＋ｅ３ｘ３＋ｅ２ｘ２＋ｅ１ｘ１＋ｅ０にｘ＝αｉ＋ｊを代入すると、Λ（ｘ）は、
Λ（αｉ＋ｊ）
＝ｅ４（αｉ＋ｊ）４＋ｅ３（αｉ＋ｊ）３＋ｅ２（αｉ＋ｊ）２＋ｅ１（αｉ＋ｊ）１＋ｅ０
＝ｅ４（α４）ｉ・（α４）ｊ＋ｅ３（α３）ｉ・（α３）ｊ＋ｅ２（α２）ｉ・（α２）ｊ＋ｅ１（α１）ｉ・（α１）ｊ＋ｅ０（α０）ｉ・（α０）ｊ
となる。
【００２９】
そこで、セレクタ３０１では、ｅ１（αｊ）を取り込み、これらをｉ＝０〜１５の範囲で、（α１）ｉ倍だけ定数倍すれば、エラー位置探索方程式Λ（ｘ）のｘ１に代入するｘ＝αｉ＋ｊ、すなわち（ｊ×１６＋ｉ）番目のビット線の位置を示すｘが得られる。同様に、セレクタ３０２では、ｅ２（αｊ）を取り込み、これらをｉ＝０〜１５の範囲で、（α２）ｉ倍だけ定数倍すれば、エラー位置探索方程式Λ（ｘ）のｘ２に代入するｘ＝αｉ＋ｊ、すなわち（ｊ×１６＋ｉ）番目のビット線の位置を示すｘが得られる。また、同様に、セレクタ３０３では、ｅ３（αｊ）を取り込み、これらをｉ＝０〜１５の範囲で、（α３）ｉ倍だけ定数倍すれば、エラー位置探索方程式Λ（ｘ）のｘ３に代入するｘ＝αｉ＋ｊ、すなわち（ｊ×１６＋ｉ）番目のビット線の位置を示すｘが得られる。また、同様に、セレクタ３０４では、ｅ４（αｊ）を取り込み、これらをｉ＝０〜１５の範囲で、（α４）ｉ倍だけ定数倍すれば、エラー位置探索方程式Λ（ｘ）のｘ４に代入するｘ＝αｉ＋ｊ、すなわち（ｊ×１６＋ｉ）番目のビット線の位置を示すｘが得られる。
【００３０】
そのため、セレクタ３０１〜セレクタ３０４各々には、セレクタの入力を切り替える制御信号ＳＥＬが制御回路１６から入力される。この制御信号ＳＥＬは、不揮発性半導体記憶装置１０からのデータ読み出し時に、アドレスデコーダ１７がカラムアドレスをラッチした後、制御回路１６が、例えばＬレベルからＨレベルに変化させる制御信号である。セレクタ３０１〜セレクタ３０４において、制御信号ＳＥＬがＨレベルとなると、それぞれのセレクタにおいてｅ１ｘ、ｅ１ｘ２、ｅ１ｘ３、ｅ１ｘ４が取り込まれ、取り込まれた値はそれぞれの後段に接続されたフリップフロップ３１１〜３１４に記憶される。なお、係数ｅ０は、フリップフロップ３１０に記憶される。
【００３１】
また、フリップフロップ３１１〜３１４の後段には、それぞれ定数乗算回路が１６台ずつ直列に接続される。フリップフロップ３１１の後段には、入力される値に定数αを乗じて出力する定数乗算回路３２１＿１〜３２１＿１６が直列接続される。また、フリップフロップ３１２の後段には、入力される値に定数α２を乗じて出力する定数乗算回路３２２＿１〜３２２＿１６が直列接続される。また、フリップフロップ３１３の後段には、入力される値に定数α３を乗じて出力する定数乗算回路３２３＿１〜３２３＿１６が直列接続される。また、フリップフロップ３１４の後段には、入力される値に定数α４を乗じて出力する定数乗算回路３２４＿１〜３２４＿１６が直列接続される。
【００３２】
排他的論理和回路３３０＿１は、フリップフロップ３１０〜３１４の出力の排他的論理和を演算し、後段の論理反転回路３４０＿１に対して出力する。論理反転回路３４０＿１は、排他的論理和回路３３０＿１の演算結果を論理反転して、エラー検出信号Ｅｒｒｏｒ＜０＞を、誤り訂正部３４に対して出力する。すなわち、排他的論理和回路３３０＿１において、エラー位置探索方程式Λ（ｘ）＝ｅ４ｘ４＋ｅ３ｘ３＋ｅ２ｘ２＋ｅ１ｘ１＋ｅ０にｘ＝αｉ＋ｊ（ｉ＝０）を代入したときに、Λ（ｘ）の値が０である場合、エラー検出信号Ｅｒｒｏｒ＜０＞はＨレベルとなる。一方、Λ（ｘ）の値が０でない場合、エラー検出信号Ｅｒｒｏｒ＜０＞はＬレベルとなる。
誤り訂正部３４は、本実施形態において、１６台の排他的論理和演算回路３４＿ｉ（図２参照、ｉ＝０〜１５）により構成される。排他的論理和演算回路３４＿ｉのうち、排他的論理和演算回路３４＿０は、エラー検出信号Ｅｒｒｏｒ＜０＞と、ページバッファ１２に読み出し動作において格納されたセルデータＣｅｌｌ  Ｄａｔａのうち、（ｊ×１６＋０）番目のビット線の位置のビットとが入力される。つまり、排他的論理和演算回路３４＿０は、エラー検出信号Ｅｒｒｏｒ＜０＞がＨレベルであれば、（ｊ×１６＋０）番目のビット線の位置のビットのデータの論理（０または１）を反転して、訂正済データＣｏｒｒｅｃｔｅｄ  Ｄａｔａの１ビットとして出力する。一方、排他的論理和演算回路３４＿０は、エラー検出信号Ｅｒｒｏｒ＜０＞がＬレベルであれば、（ｊ×１６＋０）番目のビット線の位置のビットのデータの論理をそのまま、つまり訂正しないで訂正済データＣｏｒｒｅｃｔｅｄ  Ｄａｔａの１ビットとして出力する。
【００３３】
同様に、ｉ＝１〜１５として、排他的論理和回路３３０＿ｉは、定数乗算回路３２１＿ｉ、定数乗算回路３２２＿ｉ、定数乗算回路３２３＿ｉ、定数乗算回路３２３＿ｉそれぞれの出力の排他的論理和を演算し、後段の論理反転回路３４０＿ｉに対して出力する。論理反転回路３４０＿ｉは、排他的論理和回路３３０＿ｉの演算結果を論理反転して、エラー検出信号Ｅｒｒｏｒ＜ｉ＞を、誤り訂正部３４に対して出力する。すなわち、排他的論理和回路３３０＿ｉにおいて、エラー位置探索方程式Λ（ｘ）＝ｅ４ｘ４＋ｅ３ｘ３＋ｅ２ｘ２＋ｅ１ｘ１＋ｅ０にｘ＝αｉ＋ｊ（ｉ＝１〜１５）をそれぞれ代入したときに、Λ（ｘ）の値が０である場合、エラー検出信号Ｅｒｒｏｒ＜ｉ＞はＨレベルとなる。一方、Λ（ｘ）の値が０でない場合、エラー検出信号Ｅｒｒｏｒ＜ｉ＞はＬレベルとなる。
誤り訂正部３４における排他的論理和演算回路３４＿ｉは、エラー検出信号Ｅｒｒｏｒ＜ｉ＞と、ページバッファ１２に読み出し動作において格納されたセルデータＣｅｌｌ  Ｄａｔａのうち、（ｊ×１６＋ｉ）番目のビット線の位置のビットとが入力される。つまり、排他的論理和演算回路３４＿ｉ（ｉ＝１〜１５）各々は、エラー検出信号Ｅｒｒｏｒ＜ｉ＞がＨレベルであれば、（ｊ×１６＋ｉ）番目のビット線の位置のビットのデータの論理を反転して、訂正済データＣｏｒｒｅｃｔｅｄ  Ｄａｔａの１ビットとして出力する。一方、排他的論理和演算回路３４＿０は、エラー検出信号Ｅｒｒｏｒ＜ｉ＞がＬレベルであれば、（ｊ×１６＋ｉ）番目のビット線の位置のビットのデータの論理をそのまま、訂正しないで訂正済データＣｏｒｒｅｃｔｅｄ  Ｄａｔａの１ビットとして出力する。
【００３４】
ところで、ＥＣＣ回路を内蔵しないＮＡＮＤ型フラッシュメモリでは、１回の読み出し命令、すなわちデータ読み出しを指示するコマンドが入力されれば、１ページに相当するデータがメモリセルからページバッファ１２に読みだされる。そして、最初のカラムアドレスに続いて、読み出しイネーブル信号／ＲＥと同期してページバッファ１２に格納されたデータを連続読み出しすることが可能となっている。
【００３５】
ＥＣＣ回路を内蔵した不揮発性半導体記憶装置１０においても、同様な読み出しを可能にしようとすると、以下のような処理が必要となる。すなわち、メモリセルから読み出されたデータ（ページバッファ１２に格納されたデータ）より、シンドローム計算部３１においてシンドロームを計算し、係数計算部３２において誤り係数を求める。そして、上述したようにチェン探索部３３におけるセレクタの入力のカラムアドレスを、例えば最下位から変化させて、エラー位置探索方程式Λ（Ｘ）が０になるか否かをチェックする。このチェック結果によって、ページバッファ１２から読み出されたデータに誤りが有れば誤りを訂正し、訂正後のデータを出力すれば良い。
【００３６】
しかしながら、ＥＣＣ回路を内蔵しないＮＡＮＤ型メモリでは、任意のカラムアドレスを入力し、アクセスするモードも存在する。そのため、不揮発性半導体記憶装置１０が、この任意のカラムアドレスを入力することによりアクセスするモードを備える場合、メモリセルからページバッファへのデータ読み出しに続いて、１ページ分のデータの誤り訂正処理を完了させておき、更に処理後の訂正データを記憶する処理が必要となる。
不揮発性半導体記憶装置１０では、ページバッファ１２とは別にバッファ１４（例えばＳＲＡＭ；Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ)を備えているので、このバッファ１４に訂正後のデータを全て書きこみ、書込み後に任意のカラムアドレスを与えて、訂正後のデータをＩ／Ｏパッド１５から出力することもできる。或いは、回路的な工夫により、訂正後のデータをバッファ１４ではなく、ページバッファ１２に書き戻した後に、ページバッファ１２からデータを読み出す方式も考えられる。
【００３７】
このように、ＥＣＣ回路を内蔵する不揮発性半導体記憶装置１０において、任意のカラムアドレスを入力することによりアクセスするモードを備えようとする場合、１ページ分のデータの誤り訂正処理を完了させる必要があり、この任意のカラムアドレスを入力して、その位置のメモリセルのデータを読み出すまでの時間（以下、１ｓｔ  Ａｃｃｅｓｓ  Ｏｖｅｒｈｅａｄと称する）が長くなってしまう。
【００３８】
そこで、不揮発性半導体記憶装置１０では、この１ｓｔ  Ａｃｃｅｓｓ  Ｏｖｅｒｈｅａｄを短縮し、ＥＣＣ回路を内蔵しないＮＡＮＤ型フラッシュメモリと同等のランダムアクアクセスを可能とするため、ラッチ部３５と、代入値計算部３６とを備えている。
ラッチ部３５は、１ページ分のＥＣＣ処理の単位となるセクタごとに、エラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０をラッチする。係数ラッチ３５＿０は、セクタ＜０＞のデータ（５１２バイトのデータ）と、このセクタ＜０＞に対応するパリティデータから算出されるエラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０をラッチする。なお、セクタ＜０＞のデータを保持するメモリセルの位置を示すカラムアドレスＹ［１３：０］のうち上位の２ビットのカラムアドレスＹ［１３：１２］は、カラムアドレスＹ［１３：１２］＝（０、０）で表わされる。
【００３９】
また、係数ラッチ３５＿１は、セクタ＜１＞のデータ（同じく５１２バイトのデータ）と、このセクタ＜１＞に対応するパリティデータから算出されるエラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０をラッチする。なお、セクタ＜１＞のデータを保持するメモリセルの位置を示すカラムアドレスＹ［１３：０］のうち上位２ビットのカラムアドレスＹ［１３：１２］は、カラムアドレスＹ［１３：１２］＝（０、１）で表わされる。また、係数ラッチ３５＿２は、セクタ＜２＞のデータ（同じく５１２バイトのデータ）と、このセクタ＜１＞に対応するパリティデータから算出されるエラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０をラッチする。なお、セクタ＜２＞のデータを保持するメモリセルの位置を示すカラムアドレスＹ［１３：０］のうち上位２ビットのカラムアドレスＹ［１３：１２］は、カラムアドレスＹ［１３：１２］＝（１、０）で表わされる。また、係数ラッチ３５＿３は、セクタ＜３＞のデータ（同じく５１２バイトのデータ）と、このセクタ＜３＞に対応するパリティデータから算出されるエラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０をラッチする。なお、セクタ＜３＞のデータを保持するメモリセルの位置を示すカラムアドレスＹ［１３：０］のうち上位２ビットのカラムアドレスＹ［１３：１２］は、カラムアドレスＹ［１３：１２］＝（１、１）で表わされる。
【００４０】
図４は、代入値計算部３６の詳細な構成の一例を示す図である。
代入値計算部３６は、８台のセレクタ、１３台の乗算回路、及び２台の自乗演算回路を含んで構成される。
図４に示すように、８台のセレクタは、セレクタ４０１、４０２、４０３、４０４，４０５、４０６、４０７、４０８である。１３台の乗算回路は、乗算回路４１１、４１２、４１３、４１４、４２１、４２２、４３１、４４１、４４２、４６１、４６２、４６３、４６４である。また、２台の自乗演算回路は、自乗演算回路４５１、４５２である。
【００４１】
各セレクタは、ｊ＝４〜１２として、αの２ｊ乗の値と１とが入力され、カラムアドレス信号Ｙｊによりこれらのうちの一方の値が選択され、選択した値を後段の乗算回路に対して出力する。
このαの２ｊ乗の値は、上述したエラー位置探索方程式Λ（ｘ）に代入する、符号データの（２ｊ＋５２）番目の位置を表わす。符号データの（２ｊ＋５２）番目の値とは、パリティビットに対応するビット線を含んだビット線のうち、（２ｊ＋５２）番目のビット線の位置を表わす。また、カラムアドレス信号Ｙｊとは、カラムアドレスＹ［１３：０］のうち１ビットのＹ［ｊ］である。
各セレクタは、入力されるカラムアドレス信号ＹｊがＨレベルのとき、つまりＹ［ｊ］＝１のとき、αの２ｊ乗の値を選択する。一方、各セレクタは、入力されるカラムアドレス信号ＹｊがＬレベルのとき、つまりＹ［ｊ］＝０のとき、１を選択する。
例えば、上位１０ビットのカラムアドレス［１３：４］のうち、１ビットのＹ［４］が１で、残りの９ビットのＹ［１３：５］が全て０のとき、セレクタ４０１はα１６を選択し、他のセレクタ４０２〜４０８は１を選択する。以下、代入値計算部３６における他の回路の接続、動作について説明しつつ、符号データの（２４＋５２）番目の位置を表わすｘ＝α（１６＋５２）をチェン探索部３３に入力する例について説明する。
【００４２】
乗算回路４１１は、セレクタ４０１の出力端子とセレクタ４０２の出力端子とに接続され、各セレクタの出力値を乗算し、乗算結果を後段の乗算回路４２１の第１の入力端子に対して出力する。上述の例であれば、乗算結果は、α１６であり、乗算回路４２１の第１の入力端子にはα１６が入力される。
乗算回路４１２は、セレクタ４０３の出力端子とセレクタ４０４の出力端子とに接続され、各セレクタの出力値を乗算し、乗算結果を後段の乗算回路４２１の第２の入力端子に対して出力する。上述の例であれば、乗算結果は、１であり、乗算回路４２１の第２の入力端子には１が入力される。
乗算回路４１３は、セレクタ４０５の出力端子とセレクタ４０６の出力端子とに接続され、各セレクタの出力値を乗算し、乗算結果を後段の乗算回路４２２の第１の入力端子に対して出力する。上述の例であれば、乗算結果は、１であり、乗算回路４２２の第１の入力端子には１が入力される。
乗算回路４１４は、セレクタ４０７の出力端子とセレクタ４０８の出力端子とに接続され、各セレクタの出力値を乗算し、乗算結果を後段の乗算回路４２２の第２の入力端子に対して出力する。上述の例であれば、乗算結果は、１であり、乗算回路４２２の第２の入力端子には１が入力される。
【００４３】
乗算回路４２１は、乗算回路４１１の出力端子と乗算回路４１２の出力端子とに接続され、各乗算回路の出力値を乗算し、乗算結果を後段の乗算回路４３１の第１の入力端子に対して出力する。上述の例であれば、乗算結果は、α１６であり、乗算回路４３１の第１の入力端子にはα１６が入力される。
乗算回路４２２は、乗算回路４１３の出力端子と乗算回路４１４の出力端子とに接続され、各乗算回路の出力値を乗算し、乗算結果を後段の乗算回路４３１の第２の入力端子に対して出力する。上述の例であれば、乗算結果は、１であり、乗算回路４３１の第２の入力端子には１が入力される。
乗算回路４３１は、乗算回路４２１の出力端子と乗算回路４２２の出力端子とに接続され、各乗算回路の出力値を乗算し、乗算結果を後段の乗算回路４４１の第１の入力端子に対して出力する。上述の例であれば、乗算結果は、α１６であり、乗算回路４４１の第１の入力端子にはα１６が入力される。
【００４４】
乗算回路４４１は、第１の入力端子が乗算回路４３１の出力端子に接続されて乗算回路４３１の出力値が入力され、第２の入力端子には固定値であるα５２が入力される。このα５２は、符号データ、つまりページバッファに格納されたセルデータＣｅｌｌ  Ｄａｔａのうち、パリティビット５２ビットの次に位置する通常データが読み出されるビット線の位置を、すなわちカラムアドレスＹ[１３：０]＝０により通常データが読み出されるビット線の位置を示す値である。
乗算回路４４１は、乗算回路４３１の出力値、及びα５２を乗算し、乗算結果を後段の自乗演算回路４５１の入力端子、乗算回路４４２の第１の入力端子、及び乗算回路４６１の第１の入力端子に対して出力する。上述の例であれば、乗算結果は、α（１６＋５２）であり、自乗演算回路４５１の入力端子、乗算回路４４２の第１の入力端子、及び乗算回路４６１の第１の入力端子にはα（１６＋５２）が入力される。
自乗演算回路４５１は、乗算回路４４１の出力端子に接続され、乗算回路４４１の出力値を自乗し、自乗結果を後段の自乗演算回路４５２の入力端子、乗算回路４４２の第２の入力端子、及び乗算回路４６２の第１の入力端子に対して出力する。上述の例であれば、自乗結果は、α（１６＋５２）×２であり、自乗演算回路４５２の入力端子、乗算回路４４２の第２の入力端子、及び乗算回路４６２の第１の入力端子にはα（１６＋５２）×２が入力される。
【００４５】
乗算回路４４２は、乗算回路４４１の出力端子と自乗演算回路４５１の出力端子とに接続され、乗算回路４４１、及び自乗演算回路４５１の各出力値を乗算し、乗算結果を後段の乗算回路４６３の第１の入力端子に対して出力する。上述の例であれば、乗算結果は、α（１６＋５２）×３であり、乗算回路４６３の第１の入力端子にはα（１６＋５２）×３が入力される。
自乗演算回路４５２は、自乗演算回路４５１の出力端子に接続され、自乗演算回路４５１の出力値を自乗し、自乗結果を後段の乗算回路４６４の第１の入力端子に対して出力する。上述の例であれば、自乗結果は、α（１６＋５２）×４であり、乗算回路４６４の第１の入力端子にはα（１６＋５２）×４が入力される。
【００４６】
乗算回路４６１は、ラッチ部３５における係数ラッチの出力端子と乗算回路４４１の出力端子とに接続され、係数ラッチ、及び乗算回路４４１の各出力値を乗算し、乗算結果をｅ１ｘとしてチェン探索部３３に対して出力する。上述の例であれば、係数ラッチは係数ラッチ３５＿０であり、乗算回路４６１の第２の入力端子には誤り係数ｅ１が入力され、乗算回路４６１の乗算結果は、ｅ１（α（１６＋５２））である。これにより、チェン探索部３３のセレクタ３０１にはｅ１（α（１６＋５２））が、すなわちｘとして（α（１６＋５２））が入力される。
【００４７】
乗算回路４６２は、ラッチ部３５における係数ラッチの出力端子と自乗演算回路４５１の出力端子とに接続され、係数ラッチ、及び自乗演算回路４５１の各出力値を乗算し、乗算結果をｅ２ｘとしてチェン探索部３３に対して出力する。上述の例であれば、係数ラッチは係数ラッチ３５＿０であり、乗算回路４６２の第２の入力端子には誤り係数ｅ２が入力され、乗算回路４６２の乗算結果は、ｅ２（α（１６＋５２）×２）である。これにより、チェン探索部３３のセレクタ３０２にはｅ２（α（１６＋５２））２が、すなわちｘとして（α（１６＋５２））が入力される。
【００４８】
乗算回路４６３は、ラッチ部３５における係数ラッチの出力端子と乗算回路４４２の出力端子とに接続され、係数ラッチ、及び乗算回路４４２の各出力値を乗算し、乗算結果をｅ３ｘとしてチェン探索部３３に対して出力する。上述の例であれば、係数ラッチは係数ラッチ３５＿０であり、乗算回路４６３の第２の入力端子には誤り係数ｅ３が入力され、乗算回路４６３の乗算結果は、ｅ３（α（１６＋５２）×３）である。これにより、チェン探索部３３のセレクタ３０３にはｅ３（α（１６＋５２））３が、すなわちｘとして（α（１６＋５２））が入力される。
【００４９】
乗算回路４６４は、ラッチ部３５における係数ラッチの出力端子と自乗演算回路４５２の出力端子とに接続され、係数ラッチ、及び自乗演算回路４５２の各出力値を乗算し、乗算結果をｅ４ｘとしてチェン探索部３３に対して出力する。上述の例であれば、係数ラッチは係数ラッチ３５＿０であり、乗算回路４６３の第２の入力端子には誤り係数ｅ４が入力され、乗算回路４６４の乗算結果は、ｅ４（α（１６＋５２）×４）である。これにより、チェン探索部３３のセレクタ３０４にはｅ４（α（１６＋５２））４が、すなわちｘとして（α（１６＋５２））が入力される。
【００５０】
以上説明したように、代入値計算部３６では、データ列の位置を示すアドレス（カラムアドレスＹ）と、ラッチ部３５が記憶する係数（エラー位置探索方程式の係数ｅ１〜ｅ４）とを用いてエラー位置探索方程式Λ（ｘ）に代入する代入値ｘ（上記例ではｘ＝α（１６＋５２））を算出する。
これによって、メモリセルからのデータ読み出し時にページバッファ１２に格納される１ページ分のデータと、パリティデータを基に、セクタ毎の誤り係数をラッチ部３５にラッチしておけば、この係数とカラムアドレスＹ［１３：４］とに基づいてエラー位置探索方程式Λ（ｘ）に代入する代入値ｘを求めることができる。
チェン探索部３３では、代入値ｘが入力されると、上述した様に、この代入値を初期値とする１６ビット分（上記例ではｘ＝α（１６＋５２）、α（１７＋５２）、α（１８＋５２）、・・・、α（３０＋５２）、α（３１＋５２）の１６ビット）に対して、エラー位置探索方程式Λ（ｘ）が０になるか否かがチェックされる。また、チェン探索部３３は、このチェック結果に応じてエラー検出信号ＥＲＲ＜０＞〜ＥＲＲ（１５＞を出力する。誤り訂正部３４には、アドレスデコーダ１７がページバッファ１２にカラムアドレスを入力することにより、このカラムアドレスが示す位置のメモリセルのデータが入力される。誤り訂正部は、この入力されたデータを、チェン探索部３３が出力するエラー検出信号に応じて、エラーデータである場合は誤り訂正され、訂正されたデータを、エラーデータでない場合はそのままのデータを出力する。
【００５１】
次に、上述したラッチ部３５と、代入値計算部３６とを有する誤り検出訂正回路１３を備えた不揮発性半導体記憶装置１０について、ＥＣＣ処理における遅延時間（１ｓｔ  Ａｃｃｅｓｓ  Ｏｖｅｒｈｅａｄ）の短縮に関する効果について、図面を参照しつつ説明する。図５は、誤り検出訂正回路１３ａの詳細な構成例を示す図である。また、図６は、誤り検出訂正回路１３と誤り検出訂正回路１３ａとの比較を説明するための図である。
図５において、図２と同一の部分には同一の符号を付しており、その説明は省略する。図５に示す誤り検出訂正回路１３ａは、図２に示す誤り検出訂正回路１３と相違し、ラッチ部３５、及び代入値計算部３６を備えていない。また、誤り検出訂正回路１３ａでは、誤り訂正部３４の出力結果がバッファ１４を介して、訂正済データＣｏｒｒｅｃｔｅｄ  ＤａｔａとしてＩ／Ｏパッド１５に出力される構成となっている点が誤り検出訂正回路１３とは相違する。
【００５２】
以下、図６を参照しつつ、誤り検出訂正回路１３、及び誤り検出訂正回路１３ａ各々での１ｓｔ  Ａｃｃｅｓｓ  Ｏｖｅｒｈｅａｄについて説明する。
誤り検出訂正回路１３ａでは、１セクタにおける復号データのビット数は、４０９６ビット（＝５１２ｋバイト）とパリディビット５２ビット（＝カラムアドレス  １３ビット×４）の合計ビットである。これらのデータを一括で計算することは回路規模が大きくなるという点から現実的ではないので、シンドローム計算部３１では、６４ビット単位で計算を実行する。
演算のために基準となるクロック信号の周期を４０ｎｓとすると、シンドローム計算部３１のシンドローム算出回路各々における計算時間は、クロック数ｃｌｋが（４０９６＋５２）／６４≒６５ｃｌｋ必要となり、４０ｎｓ×６５ｃｌｋ＝２．６μｓ（μ秒）となる。また、シンドローム計算部３１におけるシンドローム算出回路各々においては、４次方程式の解（エラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０）を求めるため、４０ｎｓ×２０ｃｌｋ＝０．８μｓとなる。さらに、チェン探索部３３においては、上述の様に１６ビットを一括して誤りの有無を判定する。この判定に要する計算時間は、クロック数ｃｌｋが（４０９６＋５２）／１６≒２６０ｃｌｋ必要となり、４０ｎｓ×２６０ｃｌｋ＝１０．４μｓとなる。誤り訂正部３４では、入力されるデータの訂正を、チェン探索部３３での判定と同時に、すなわちエラー検出信号を用いて行うので、計算時間を要しない。
【００５３】
つまり、ＥＣＣ処理に要する時間は、以上の計算時間を合計して、１セクタの５１２バイトあたりについて、２．６μｓ＋０．８μｓ＋１０．４μｓ＝１３．８μｓとなる。
図６（ａ）は、時刻ｔ０からセクタ０（Ｓｅｃｔｏｒ＜０＞）、セクタ１（Ｓｅｃｔｏｒ＜１＞）、セクタ２（Ｓｅｃｔｏｒ＜２＞）、セクタ３（Ｓｅｃｔｏｒ＜３＞）の順番に、ＥＣＣ処理が進むことを示している。シンドローム計算部３１におけるシンドローム算出回路３１＿１では、シンドロームＳ１（Ｐａｒｔｉａｌ  Ｓｙｎｄｏｒｏｍｅ）の計算に２．６μｓを要する。そして、次段の誤り係数計算部３２では、エラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０の計算に０．８μｓを要する。次段のチェン探索部３３では、入力されるデータの訂正に１０．４μｓを要する、なお、バッファ１４の書き込みに要する時間（ＳＲＡＭへのＤａｔａ  Ｏｕｔ）の時間は、短いものとし、この１０．４μｓに含まれるものとする。
以上のＥＣＣ処理が、セクタ２、セクタ３、及びセクタ４についても実行され、ＥＣＣ処理開始から５５．２μｓの時間を要して、時刻ｔ１において終了する。つまり、任意のカラムアドレスを入力して、そのカラムアドレスが位置を示すビットのデータの外部への読み出しは、バッファ１４に１ページ全てのセルの訂正後のデータが書き込まれるまでの時間待たなければ可能とならない。このバッファ１４に１ページ全てのセルの訂正後のデータが書き込まれるまでの時間が、１ｓｔ  Ａｃｃｅｓｓ  Ｏｖｅｒｈｅａｄの５５．２μｓであり、この時間はＥＣＣ回路を搭載しないＮＡＮＤ型フラッシュメモリのほぼ２倍に達してしまう。
【００５４】
これに対して、誤り検出訂正回路１３では、メモリセルからページバッファ１２へのセルデータＣｅｌｌ  Ｄａｔａの読み出しに引き続いて、１ページ分のデータに基づいて、シンドローム計算部３１のシンドローム算出回路各々において、セクタ毎に順次行う。また、誤り係数計算部３２では、４次方程式の解（エラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０）を求める計算を、セクタ毎に順次行う。図６（ｂ）は、時刻ｔ０からセクタ０（Ｓｅｃｔｏｒ＜０＞）、セクタ１（Ｓｅｃｔｏｒ＜１＞）、セクタ２（Ｓｅｃｔｏｒ＜２＞）、セクタ３（Ｓｅｃｔｏｒ＜３＞）について、順次、シンドローム（Ｐａｒｔｉａｌ  Ｓｙｎｄｏｒｏｍｅ）、エラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０の計算処理が進むことを示している。これらの計算処理は、ＥＣＣ処理開始から１３．６μｓの時間を要して、時刻ｔ２において終了する。なお、各計算の処理時間は、誤り検出訂正回路１３ａと同じ時間としている。
【００５５】
この時刻ｔ２において、ラッチ部３５の係数ラッチ各々には、セクタ１〜セクタ４におけるエラー位置探索方程式の係数ｅ４、ｅ３、ｅ２、ｅ１、及びｅ０がラッチされる。つまり、時刻ｔ２以降において、代入値計算部３６に任意のカラムアドレスを入力すれば、そのカラムアドレスが位置を示すビットのデータの誤り判定をチェン探索部３３において行うことができる。また、誤り訂正部３４では、カラムアドレスにより位置が示されるセルのデータの誤りを検出し、訂正してＩ／Ｏパッド１５から外部へ出力することができる。つまり、誤り検出訂正回路１３ａと比較して、バッファ１４に１ページ全てのセルの訂正後のデータを書き込む処理を不要とし、１ｓｔ  Ａｃｃｅｓｓ  Ｏｖｅｒｈｅａｄを１３．６μｓまで短縮することができる。なお、図６（ｂ）において、データの外部への読み出しを、ページバッファ１２内のビットのデータの配置順（カラムアドレス順）、すなわちセクタの順番に示している。しかしながら、時刻ｔ２以降は、ランダムアクセスが可能であり、どのセクタにおける任意の位置のビットを誤り訂正して直ちに出力することができる。つまり、データ出力前に必要な計算時間として、訂正用係数の計算時間（代入値計算部３６とチェン探索部３３による計算時間であり、４０ｎｓ程度）要するだけであり、誤り検出訂正回路１３ａと比較して、１ｓｔ  Ａｃｃｅｓｓ  Ｏｖｅｒｈｅａｄの大幅な短縮を実現できる。
【００５６】
このように、本発明の誤り検出訂正回路１３は、データ列を格納するデータ格納部（ページバッファ１２）と、データ列からシンドロームを計算するシンドローム計算部３１と、シンドロームからエラー位置探索方程式の係数を算出する誤り係数計算部３２と、係数を記憶するラッチ部３５と、データ列の位置を示すアドレス（カラムアドレス）と、ラッチ部３５が記憶する係数とを用いてエラー位置探索方程式Λ（ｘ）に代入する代入値ｘを算出する代入値計算部３６と、データ列の出力時に、代入値ｘのエラー位置探索方程式Λ（ｘ）への代入結果に応じて、データ列のビット毎に誤りが有るか否かを示すエラー検出信号ＥＲＲ＜ｉ＞を出力するチェン探索部３３と、エラー検出信号ＥＲＲ＜ｉ＞によりデータ列におけるビットのデータの誤りを訂正して出力する誤り訂正部３４と、を備える。
【００５７】
本発明の誤り検出訂正回路１３は、エラー位置探索方程式の係数を記憶するラッチ部３５と、この係数とビットの位置とからエラー位置探索方程式への代入値を計算する代入値計算部３６とを設けた。そのため、データの読み出し時に、代入値計算部３６に読み出すべきビットのアドレス（カラムアドレス）を入力すれば、チェン探索部３３が当該ビットのデータに誤りが有るか否かを検出する。誤り訂正部３４は、当該ビットのデータに誤りがあればビットのデータを訂正して訂正後のビットのデータを出力し、誤りがない場合はビットのデータをそのまま出力する。よって、データ列（セルデータＣｅｌｌ  Ｄａｔａ）のうち任意のアドレスのビットのデータについて、誤り訂正を行って訂正後のデータを高速に読み出すことができる誤り検出訂正回路、及びメモリ装置を提供することができる。
【００５８】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。
【符号の説明】
【００５９】
１０…不揮発性半導体記憶装置、１１…メモリセルアレイ、１２…ページバッファ、１３，１３ａ…誤り検出訂正回路、１４…バッファ、１５…Ｉ／Ｏパッド、１６…制御回路、１７…アドレスデコーダ、１８…ロウ及びブロックデコーダ、３０…デコーダ部、３１…シンドローム計算部、３１＿１，３１＿２，３１＿３，３１＿４…シンドローム算出回路、３２…誤り係数計算部、３３…チェン探索部、３４…誤り訂正部、３４＿ｉ，３３０＿１，３３０＿２，３３０＿１５，３３０＿１６…排他的論理和演算回路、３５…ラッチ部、３５＿１，３５＿２，３５＿３，３５＿４…係数ラッチ、３６…代入値計算部、４０…エンコーダ部、４１…パリティ生成回路、３０１，３０２，３０３，３０４，４０１，４０２，４０３，４０４，４０５，４０６，４０７，４０８…セレクタ、３２１＿１，３２１＿２，３２１＿１６，３２２＿１，３２２＿２，３２２＿１６，３２３＿１，３２３＿２，３２３＿１６，３２４＿１，３２４＿２，３２４＿１６…定数乗算回路、３１０，３１１，３１２，３１３，３１４…フリップフロップ、３４０＿１，３４０＿２，３４０＿１５，３４０＿１６…論理反転回路、４１１，４１２，４１３，４１４，４２１，４２２，４３１，４４１，４４２，４６１，４６２，４６３，４６４…乗算回路、４５１，４５２…自乗演算回路
【図１】
2014033364.tif 000003
【図２】
2014033364.tif 000004
【図３】
2014033364.tif 000005
【図４】
2014033364.tif 000006
【図５】
2014033364.tif 000007
【図６】
2014033364.tif 000008