(57)【要約】【課題】システムの回路規模を増大させずに、符号化処理の時間を短縮することが可能となる、誤り検出訂正回路、及び誤り検出訂正回路を備えた半導体記憶装置を提供する。【解決手段】誤り検出訂正回路１３における偶数パリティ生成回路１０２は、生成した加工データＱ（ｘ）が０または１のうち一方の場合、ガロア体ＧＦ（２ｍ）上において、第１の符号データＲ（ｘ）の各ビットを用いて表される｛（２＾ｍ−１）−（２＾（ｍ−１）＋第１の符号データＲ（ｘ）のビット数×ｍ＋加工データのビット数）｝個のデータのうちから、０または１のうち他方のデータを選択して第１の符号データＲ（ｘ）に加算して第２の符号データＲ’（ｘ）を生成する。一方、偶数パリティ生成回路１０２は、生成した加工データＱ（ｘ）が０または１のうちの他方の場合、第１の符号データＲ（ｘ）を第２の符号データＲ’（ｘ）とする。【選択図】図２
2014116659.tif 000002
【特許請求の範囲】
【請求項１】
符号化時に、情報長が２＾（ｍ−１）ビットの情報データを生成多項式により除算し、複数ビットの第１の符号データを算出する符号化回路と、
前記情報データと前記第１の符号データとから加工データを生成し、
生成した前記加工データが０または１のうち一方の場合、ガロア体ＧＦ（２ｍ）上において、前記第１の符号データの各ビットを用いて表される｛（２＾ｍ−１）−（２＾（ｍ−１）＋前記第１の符号データのビット数×ｍ＋加工データのビット数）｝個のデータのうちから、０または１のうち他方のデータを選択して前記第１の符号データに加算して第２の符号データを生成し、
一方、生成した前記加工データが０または１のうちの他方の場合、前記第１の符号データを前記第２の符号データとするデータ加工回路と、
を備えることを特徴とする誤り検出訂正回路。
【請求項２】
前記加工データは偶数パリティであって、
前記第１の符号データに加算されるデータは、１の個数が偶数個のデータである、
ことを特徴とする請求項１に記載の誤り検出訂正回路。
【請求項３】
前記符号化回路は、復号化時に、前記情報データと、前記第２の符号データと、前記加工データとを前記生成多項式により除算し、第３の符号データを算出し、
前記第３の符号データを最小多項式により除算し、シンドロームを算出するシンドローム生成回路と、
前記シンドロームからエラー位置探索方程式の係数を算出する係数計算回路と、
前記エラー位置探索方程式に、前記情報データ、前記第２の符号データ、及び前記加工データの各ビットの位置を示すアドレス値を代入して、各ビットに誤りがあるか否かを検出する誤り位置探索回路と、を更に有する、
ことを特徴とする請求項１または請求項２いずれか１項に記載の誤り検出訂正回路。
【請求項４】
請求項３に記載の誤り検出訂正回路を備え、
外部から書き込まれる前記情報データ、前記符号化回路が生成する前記第２の符号データ、及び前記データ加工回路が加工する前記加工データがそれぞれセクタデータとして１ページに書き込まれる不揮発性半導体記憶装置であって、
復号化時における前記情報データを前記誤り検出訂正回路の検出結果に基づいて誤り訂正して出力する、
ことを特徴とする半導体記憶装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、誤り検出訂正回路、及び誤り検出訂正回路を備えた半導体記憶装置に関する。
【背景技術】
【０００２】
データ転送の際、データ転送の信頼性を向上させるため、送信側で情報データに検査データ（パリティデータ）を付加して送り、受信側で検査データをもとに誤りビットを訂正する方式が採られている。このような誤り訂正の方式のうち、ＢＣＨ符号にパリティデータが付加された誤り訂正符号を用いる誤り訂正方式が、例えば下記特許文献１に開示されている。
【０００３】
ＢＣＨ符号を用いた誤り訂正では、訂正可能ビット数以上の誤りビットが発生する場合、ビット訂正が正しく行なわれず誤った訂正をしてしまうことがある。この誤った訂正を少なくするため、送信側では、ＢＣＨ符号に、更に例えば１ビットのパリティを付加し、受信側では、訂正後のデータとパリティビットとのパリティチェックを行い、正しく訂正できたか否かを判定している。このようにして、パリティビットを用いない誤り訂正に比べ、誤った訂正を少なくできる。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平３−８８４３１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、送信側では、情報データ（以下、情報データＰ（ｘ）とする）に検査データ（以下、第１の符号データＲ（ｘ）とする）を付加した符号語（情報データＰ（ｘ）＋第１の符号データＲ（ｘ））をもとに加工したデータ（上記説明ではパリティビット；以下加工データＱ（ｘ）とする）を再度訂正対象とする。そのため、送信側では、加工データＱ（ｘ）を算出後に、再度、（情報データＰ（ｘ）＋第１の符号データＲ（ｘ）＋加工データＱ（ｘ））の符号化の計算処理を行う必要が生じてしまう。
【０００６】
図６は、符号化後の加工データを再度訂正対象とする場合のＢＣＨ符号を利用したシステムの従来例を示す図である。
図６（ａ）に示すシステムは、符号化回路（Ｅｎｃｏｄｅｒ）９１ｅ（以下、符号化回路９１ｅとする）と、Ｅｖｅｎ（Ｏｄｄ） Ｐａｒｉｔｙ生成回路９２（以下偶数パリティ生成回路９２とする）から構成される。
符号化回路９１ｅは、情報データＰ（ｘ）に対して符号化計算を行い、第１の符号データＲ（ｘ）を生成する。
偶数パリティ生成回路９２は、情報データＰ（ｘ）に第１の符号データＲ（ｘ）を付加した符号語Ｐ（ｘ）＋Ｒ（ｘ）から、偶数パリティである加工データＱ（ｘ）を生成する。なお、Ｑ（ｘ）は奇数パリティであってもよいので、偶数パリティ生成回路９２をＥｖｅｎ（Ｏｄｄ） Ｐａｒｉｔｙ生成回路９２としているが、以下では、符号語Ｐ（ｘ）＋Ｒ（ｘ）から生成するパリティは偶数パリティであるものとする。
【０００７】
図６（ａ）に示すシステムでは、この偶数パリティである加工データＱ（ｘ）を、更に訂正の対象とするため、符号化回路９１ｅに、情報データＰ（ｘ）＋第１の符号データＲ（ｘ）＋加工データＱ（ｘ）が入力され、符号化計算が行われる。符号化回路９１ｅは、符号化計算を再度行ない、情報データＰ（ｘ）＋第１の符号データＲ（ｘ）＋加工データＱ（ｘ）＋第２の符号データＲ’（ｘ）を生成する。
このように、図６（ａ）に示すシステムでは、回路規模はそれほど増大しないが、符号化処理のための処理時間がほぼ２倍となり、システムが複雑となる。
【０００８】
この符号化処理時間の増大を抑制するため、図６（ｂ）に示すシステムでは、符号化回路９１ｅを２個備えている。図６（ｂ）に示すシステムでは、偶数パリティ生成回路９２の後段に符号化回路９１ｅが設けられる。
この符号化回路９１ｅは、図６（ａ）に示すシステムと同様に、情報データＰ（ｘ）＋第１の符号データＲ（ｘ）＋加工データＱ（ｘ）が入力され、符号化計算を行ない、情報データＰ（ｘ）＋第１の符号データＲ（ｘ）＋加工データＱ（ｘ）＋第２の符号データＲ’（ｘ）を生成する。
このように、図６（ｂ）に示すシステムでは、符号化処理のための処理時間の増大を抑制できるものの、符号化処理のための符号化回路を２個用意する必要が生じ、システムを構成する回路の規模が増大するという問題がある。
【０００９】
そこで本発明が解決しようとする課題は、システムの回路規模を増大させずに、符号化処理の時間を短縮することが可能となる、誤り検出訂正回路、及び誤り検出訂正回路を備えた半導体記憶装置を提供することにある。
【課題を解決するための手段】
【００１０】
本発明の誤り検出訂正回路は、符号化時に、情報長が２＾（ｍ−１）ビットの情報データを生成多項式により除算し、複数ビットの第１の符号データを算出する符号化回路と、前記情報データと前記第１の符号データとから加工データを生成し、生成した前記加工データが０または１のうち一方の場合、ガロア体ＧＦ（２ｍ）上において、前記第１の符号データの各ビットを用いて表される｛（２＾ｍ−１）−（２＾（ｍ−１）＋前記第１の符号データのビット数×ｍ＋加工データのビット数）｝個のデータのうちから、０または１のうち他方のデータを選択して前記第１の符号データに加算して第２の符号データを生成し、一方、生成した前記加工データが０または１のうちの他方の場合、前記第１の符号データを前記第２の符号データとするデータ加工回路と、を備えることを特徴とする。
【００１１】
また、本発明の誤り検出訂正回路において、前記加工データは偶数パリティであって、前記第１の符号データに加算されるデータは、１の個数が偶数個のデータである、ことを特徴とする。
【００１２】
また、本発明の誤り検出訂正回路において、前記符号化回路は、復号化時に、前記情報データと、前記第２の符号データと、前記加工データとを前記生成多項式により除算し、第３の符号データを算出し、前記第３の符号データを最小多項式により除算し、シンドロームを算出するシンドローム生成回路と、前記シンドロームからエラー位置探索方程式の係数を算出する係数計算回路と、前記エラー位置探索方程式に、前記情報データ、前記第２の符号データ、及び前記加工データの各ビットの位置を示すアドレス値を代入して、各ビットに誤りがあるか否かを検出する誤り位置探索回路と、を更に有する、ことを特徴とする。
【００１３】
また、本発明の半導体記憶装置は、上記に記載の誤り検出訂正回路を備え、外部から書き込まれる前記情報データ、前記符号化回路が生成する前記第２の符号データ、及び前記データ加工回路が加工する前記加工データがそれぞれセクタデータとして１ページに書き込まれる不揮発性半導体記憶装置であって、復号化時における前記情報データを前記誤り検出訂正回路の検出結果に基づいて誤り訂正して出力する、ことを特徴とする。
【発明の効果】
【００１４】
本発明の誤り検出訂正回路では、データ加工回路において、情報データと第１の符号データとから生成した加工データの論理（０または１のうち一方の場合）に応じて、第１の符号データを第２の符号データへと変換している。そのため、情報データ、第２の符号データ、及び加工データを、再度符号化回路に入力する必要がなくなり、加工データを再度符号化することなく、情報データ、第２の符号データ、及び加工データを復号化する際の訂正対象とすることができる。これにより、本発明によれば、システムの回路規模を増大させずに、符号化処理の時間を短縮することが可能となる、誤り検出訂正回路、及び誤り検出訂正回路を備えた半導体記憶装置を提供することができる。
【図面の簡単な説明】
【００１５】
【図１】不揮発性半導体記憶装置１０であるＮＡＮＤ型フラッシュメモリの構成例を示す概略ブロック図である。
【図２】本実施形態における誤り訂正回路１３のブロック構成を示す図である。
【図３】符号化後の加工データを再度訂正対象とする場合のＢＣＨ符号を利用したシステムの実施例を示す図である。
【図４】符号化回路１０１の回路構成を説明するための図である。
【図５】偶数パリティ生成回路１０２の回路構成を説明するための図である。
【図６】符号化後の加工データを再度訂正対象とする場合のＢＣＨ符号を利用したシステムの従来例を示す図である。
【発明を実施するための形態】
【００１６】
以下、図面を参照して、本発明の実施の形態について説明する。まず、本発明の誤り検出訂正回路を備える半導体記憶装置の概略構成について説明し、それから、誤り検出訂正回路の構成について説明する。
【００１７】
［メモリ装置の構成］
図１は、不揮発性半導体記憶装置１０であるＮＡＮＤ型フラッシュメモリの構成例を示す概略ブロック図である。
不揮発性半導体記憶装置１０は、メモリセルアレイ１１、ページバッファ１２、誤り検出訂正回路１３、バッファ１４、Ｉ／Ｏパッド１５、制御回路１６、アドレスデコーダ１７、及びロウ及びブロックデコーダ１８を含んで構成される。
【００１８】
メモリセルアレイ１１は、複数のスタックゲート構造のトランジスタ、すなわち電気的書き換え可能な不揮発性メモリセル（記憶素子）をカラム方向（列方向）に直列接続して、ビット線毎に設けられたＮＡＮＤセルストリングを、行方向（ビット線の配列方向）に複数個配置したブロックから構成される。このブロックは、ビット線の配線方向に複数個配置される。また、このブロックは、不揮発性メモリセル（以下、メモリセルと呼ぶ）のデータの消去単位で設けられている。各ブロックにおいては、同一行に配置されたメモリセル各々のゲートには、ビット線に直行したワード線が接続される。
１本のワード線により選択されるメモリセルの範囲がプログラム及び読み出しの単位となる１ページである。
【００１９】
ページバッファ１２は、ページ単位のデータのプログラム及び読み出しを行うため、ビット線毎に設けられたページバッファ回路から構成されている。このページバッファ１２におけるページバッファ回路各々は、それぞれのビット線に接続され、接続されたビット線の電位を増幅して判定するセンスアンプ回路として用いるラッチ回路を有する。
ページバッファ１２（データ格納部）は、不揮発性半導体記憶装置１０のデータ読み出し動作において、メモリセルアレイ１１の１ページ分のメモリセルが記憶するデータ（データ列）からなるセルデータＣｅｌｌ  Ｄａｔａが入力され、このデータを増幅して誤り検出訂正回路１３に対して出力する。一方、ページバッファ１２は、不揮発性半導体記憶装置１０のデータ書込み（プログラム）動作において、誤り検出訂正回路１３から供給されるデータを内部のラッチ回路に格納し、ベリファイ動作を行いつつ、全てのデータを符号データＣｏｄｅ  Ｄａｔａとして１ページ内のメモリセルに書き込む。
【００２０】
この符号データＣｏｄｅ  Ｄａｔａには、誤り検出訂正回路１３が生成するパリティデータＰａｒｉｔｙ、及び偶数パリティが含まれる。なお、本実施形態において、例えば情報長３２Ｂｙｔｅ （バイト）に対しＢＣＨ符号を用いて４Ｂｉｔ（ビット）訂正を行う誤り訂正システムを例に取るとき、１ページは、２Ｋ（＝２０４８）バイト、すなわち、１６ｋ（＝１６３８４）ビットの通常データを各々記憶するメモリセルと、２３０４ビットのパリティデータを各々記憶するメモリセルと、後述する偶数パリティを各々記憶するメモリセルを含んで構成される。すなわち、セルデータＣｅｌｌ  Ｄａｔａ、及び符号データＣｏｄｅ  Ｄａｔａは、（１６ｋ＋２３０４＋６４）ビットから構成される。
【００２１】
また、１ページは、誤り検出訂正回路１３の訂正の単位として、例えば６４個のセクタに分割されている。つまり、１セクタに対応するデータは、３２バイト（＝２５６ビット）の通常データ、３６ビットのパリティデータ、及び１ビットの偶数パリティを含んで構成される。
また、本実施形態において、メモリ外部よりのアクセスは、通常メモリに対して対応するカラムアドレスＹ［１３：０］を入力することにより行われる。パリティデータ、偶数パリティは、不揮発性半導体記憶装置１０の内部において通常データの訂正用に付加される内部データであり、外部からは直接アクセスされることはない。
【００２２】
誤り検出訂正回路１３は、詳細については後述するが、不揮発性半導体記憶装置１０のデータ読み出し動作において、ページバッファ１２から読み出されたデータを、セクタ毎に処理して、エラー位置探索方程式の係数を算出し、内部のラッチに保持する。また、誤り検出訂正回路１３は、読み出し動作において、カラムアドレスにより位置が示されるビットのデータの誤りを訂正し、バッファ１４に書き込む。このバッファ１４に書き込まれた訂正後のデータは、書き込み後において再びバッファ１４をアクセスすることにより、Ｉ／Ｏパッド１５を介して訂正済データＣｏｒｒｅｃｔｅｄ  Ｄａｔａとして外部へ出力される。なお、Ｉ／Ｏパッド１５と誤り検出訂正回路１３との間に入出力回路を設けて、この入出力回路を介して外部へデータを出力してもよい。
【００２３】
また、誤り検出訂正回路１３は、不揮発性半導体記憶装置１０のデータ書き込み動作において、Ｉ／Ｏパッド１５から入力される情報データＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａを、バッファ１４を介して受け取る。誤り検出訂正回路１３は、受け取った情報データＩｎｆｏｒｍａｔｉｏｎ  ＤａｔａからパリティデータＰａｒｉｔｙを生成するとともに、受け取った情報データＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａ、パリティデータＰａｒｉｔｙ、及び偶数パリティをページバッファ１２に対して出力する。ページバッファ１２は、これらのデータを符号データＣｏｄｅ  Ｄａｔａとして、選択されているページに接続されるメモリセルに書き込む。
【００２４】
なお、詳細は後述するが、誤り検出訂正回路１３からページバッファ１２を介してメモリセルアレイ１１に書き込まれるセクタデータ（１セクタに対応するデータ）は、誤り検出訂正回路１３では、下記のデータに対応する。不揮発性半導体記憶装置１０のデータ書き込み動作においては、セクタデータは、以下のデータを含んで構成される。すなわち、セクタデータは、メモリセルへの書き込みデータである情報データＰ（ｘ）を含んで構成される。また、セクタデータは、加工データＱ（ｘ）を含んで構成される。ここで、加工データＱ（ｘ）とは、情報データＰ（ｘ）と誤り検出訂正回路１３において情報データＰ（ｘ）に基づいて符号化（Ｅｎｃｏｄｅ）されたパリティデータである第１の符号データＲ（ｘ）とから加工された偶数パリティである。また、セクタデータは、誤り検出訂正回路１３が、加工データＱ（ｘ）の０または１に応じて、第１の符号データＲ（ｘ）から生成する第２の符号データＲ’（ｘ）を含んで構成される。
【００２５】
一方、不揮発性半導体記憶装置１０のデータ読み出し動作においては、セクタデータは、メモリセルからの読み出されたデータである、情報データＰ（ｘ）、第２の符号データＲ’（ｘ）、加工データＱ（ｘ）を含んで構成される。そして、誤り検出訂正回路１３においては、このセクタデータから、このセクタデータのうちに誤りビットがあるか否かを示す第３の符号データＲ’’（ｘ）が生成される。
【００２６】
制御回路１６は、各種制御信号が入力され、メモリセルに対するデータのプログラム、読み出し、消去などの動作、及びベリファイの動作の制御を行う。
例えば、制御信号は、外部クロック信号、チップイネーブル信号／ＣＥ、読み出しイネーブル信号／ＲＥ、プログラムイネーブル信号／ＷＥ、コマンドラッチイネーブル信号ＣＬＥ、アドレスラッチイネーブル信号ＡＬＥ、ライトプロテクト信号／ＷＰなどである。制御回路１６は、これらの制御信号と、Ｉ／Ｏパッド１５から入力されるコマンドデータとが示す動作モードに応じて、各回路に対して内部制御信号を出力する。
例えば、制御回路１６は、プログラムイネーブル信号／ＷＥの立ち上がり時にコマンドラッチイネーブル信号ＣＬＥがロウ（Ｌ）レベルからハイ（Ｈ）レベルになることにより、Ｉ／Ｏパッド１５からコマンドデータを取り込み、内部のレジスタに保持する。
【００２７】
アドレスデコーダ１７は、Ｉ／Ｏパッド１５から入力されるアドレス（ロウアドレス、ブロックアドレス、カラムアドレス）を制御回路１６からの内部制御信号に基づいて保持する。また、アドレスデコーダ１７は、保持したアドレスを、制御回路１６からの内部制御信号に基づいて、ロウ及びブロックデコーダ１８、ページバッファ１２、及び誤り検出訂正回路１３へ出力する。
例えば、制御回路１６は、プログラムイネーブル信号／ＷＥの立ち上がり時にアドレスラッチイネーブル信号ＡＬＥがロウ（Ｌ）レベルからハイ（Ｈ）レベルになることにより、Ｉ／Ｏパッド１５からアドレスを取り込み、アドレスデコーダ１７の内部レジスタに保持する。
【００２８】
ロウ及びブロックデコーダ１８は、アドレスデコーダ１７が保持し、出力するロウアドレス、及びブロックアドレスに応じて、メモリセルアレイ１１のブロック、及びワード線の選択を行い、１ページ上のメモリセルを選択する。
また、アドレスデコーダ１７は、内部に保持するカラムアドレスに応じて、メモリセルアレイ１１のビット線及びページバッファ１２の選択を行う。
【００２９】
本実施形態において、データ読み出し動作においては、ページバッファ１２内のセルデータＣｅｌｌ  Ｄａｔａが誤り検出訂正回路１３に読み出され、エラー位置探索方程式の係数がセクタ毎に計算される。そして、セクタ毎に計算された係数とカラムアドレスとに応じて、カラムアドレスにより位置が示されるビットのデータ、すなわちメモリセルのデータ（１６ｋビット）に誤りがあるか否かが検出され、誤りがある場合は訂正されて、バッファ１４に書き込まれる。このバッファ１４に書き込まれた訂正後のデータは、書き込み後において再びバッファ１４をアクセスすることにより、訂正済データＣｏｒｒｅｃｔｅｄ  ＤａｔａとしてＩ／Ｏパッド１５から出力される。
【００３０】
また、データ書き込み動作においては、バッファ１４にいったんページバッファ１２内に格納されたセルデータＣｅｌｌ  Ｄａｔａが読み出される。バッファ１４は、例えばＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）により構成される。
バッファ１４では、セルデータＣｅｌｌ  Ｄａｔａのうち、入力されるカラムアドレスに対応する部分のデータが、Ｉ／Ｏパッド１５からのデータＩｎｆｏｒｍａｔｉｏｎ  Ｄａｔａに書き換えられる。また、誤り検出訂正回路１３では、バッファ１４の書き換え後のデータを含む１セクタ分のデータに対応したパリティデータが算出される。そして、これらのパリティデータを含む６４セクタ分のデータが、符号データＣｏｄｅ  Ｄａｔａとして、ページバッファ１２を介して選択されているページに書き込まれる。
【００３１】
次に、図２は、本実施形態における誤り検出訂正回路１３のブロック構成を示す図である。本実施形態では、ＧＦ（２ｍ）のガロア体（ｍ＝９）を利用し、４ビットの誤りが訂正可能なＢＣＨ符号を用いた誤り検出、及び誤りの訂正が可能な誤り検出訂正回路を例にとって説明する。また、本実施形態では、この誤り検出訂正回路を不揮発性半導体記憶装置１０に応用した場合を想定しており、この場合、セクタサイズ（セクタデータのサイズ）は２９３ビット（内訳はデータ長が２５６ビット、ＢＣＨパリティが３６ビット、偶数または奇数パリティが１ビット）である。
【００３２】
図２に示す誤り検出訂正回路１３は、符号化回路Ｄｉｖｉｄｅ ｂｙ Ｇ（ｘ）１０１（以下、符号化回路１０１とする）、Ｅｖｅｎ（Ｏｄｄ） Ｐａｒｉｔｙ生成回路１０２、シンドローム生成回路１０３、係数計算回路１０４、及び誤り位置探索回路（Ｃｈｉｅｎ Ｓｅａｒｃｈ）１０５（以下、誤り位置探索回路１０５とする）から構成される。
符号化回路１０１は、情報データＰ（ｘ）の符号化、（情報データＰ（ｘ）＋第２の符号データＲ’（ｘ）＋加工データＱ（ｘ））の復号化を行なう。符号化回路１０１は、符号化、及び復号化を共通に行なう回路であり、排他的論理和（Ｅｘｃｌｕｓｉｖｅ−Ｏｒ）回路（以下、ＥＸＯＲ回路という）の組合せにより、生成多項式Ｇ（ｘ）の除算を実現する回路である（詳細後述）。なお、生成多項式Ｇ（ｘ）は、最小多項式Ｍ１（ｘ）、Ｍ３（ｘ）、Ｍ５（ｘ）、Ｍ７（ｘ）を用いて、積算を「＊」で表わすものとすると、Ｇ（ｘ）＝Ｍ１（ｘ）＊Ｍ３（ｘ）＊Ｍ５（ｘ）＊Ｍ７（ｘ）と表される。
【００３３】
図２に示す符号化回路１０１は、符号化時において、２５６ビットの情報データＰ（ｘ）の符号化を行い、第１の符号データＲ（ｘ）を生成し、（情報データＰ（ｘ）＋第１の符号データＲ（ｘ））をＥｖｅｎ（Ｏｄｄ） Ｐａｒｉｔｙ生成回路１０２に対して出力する。また、符号化回路１０１は、復号化時において、２９３ビットのセクタデータ（情報データＰ（ｘ）＋第２の符号データＲ’（ｘ）＋加工データＱ（ｘ））の復号化を行ない、第３の符号データＲ’’（ｘ）をシンドローム生成回路１０３に対して出力する回路である。
【００３４】
Ｅｖｅｎ（Ｏｄｄ） Ｐａｒｉｔｙ生成回路１０２は、情報データＰ（ｘ）と符号化回路１０１が生成した第１の符号データＲ（ｘ）とから、本実施形態では、偶数パリティである加工データＱ（ｘ）を生成する。なお、Ｅｖｅｎ（Ｏｄｄ） Ｐａｒｉｔｙ生成回路１０２が生成する加工データＱ（ｘ）は、例えば奇数パリティであってもよい。また、加工データＱ（ｘ）は、１ビットである必要はなく、２ビット以上であってもよい。また、本実施形態では、加工データＱ（ｘ）は偶数パリティとし、Ｅｖｅｎ（Ｏｄｄ） Ｐａｒｉｔｙ生成回路１０２を、以下、偶数パリティ生成回路１０２と呼ぶものとする。
また、偶数パリティ生成回路１０２は、加工データＱ（ｘ）が０であるか１であるかに応じて、を生成する（詳細後述）。
【００３５】
そして、偶数パリティ生成回路１０２が生成した加工データＱ（ｘ）、及び第２の符号データＲ’（ｘ）は、符号化回路１０１に入力された情報データＰ（ｘ）と併せて、２９３ビットのセクタデータ（情報データＰ（ｘ）＋第２の符号データＲ’（ｘ）＋加工データＱ（ｘ））となる。このセクタデータは、上述の様に、不揮発性半導体記憶装置１０のデータ書き込み動作において、ページバッファ１２を介して、ワード線により選択されている複数のメモリセルへ書き込まれる。なお、ページバッファ１２とは、上述の様に、ビット線に接続され、ビット線を介してメモリセルからのデータをラッチして増幅し、或いはメモリセルへの書き込みデータをラッチし、ビット線を介してメモリセルへデータを書き込む回路である。
【００３６】
また、このデータ書き込み動作においてメモリセルに書き込まれたセクタデータは、不揮発性半導体記憶装置１０のデータ読み出し動作において、ページバッファ１２を介して、符号化回路１０１に入力される。符号化回路１０１は、このセクタデータから第３の符号データＲ’’（ｘ）を算出し、シンドローム生成回路１０３に対して出力する。
【００３７】
シンドローム生成回路１０３は、復号化時において符号化回路１０１が生成した第３の符号データＲ’’（ｘ）を、最小多項式で除算することにより、シンドロームを生成する。シンドローム生成回路１０３は、ｓ１ Ｄｉｖｉｄｅ ｂｙ Ｍ１（ｘ）１０３ａ（以下、シンドローム生成回路１０３ａ）、ｓ３ Ｄｉｖｉｄｅ ｂｙ Ｍ３（ｘ）１０３ｂ（以下、シンドローム生成回路１０３ｂ）、ｓ５ Ｄｉｖｉｄｅ ｂｙ Ｍ５（ｘ）１０３ｃ（以下、シンドローム生成回路１０３ｃ）、及びｓ７ Ｄｉｖｉｄｅ ｂｙ Ｍ７（ｘ）１０３ｄ（以下、シンドローム生成回路１０３ｄ）の４個のシンドローム生成回路１０３ａ〜１０３ｄを有する。
【００３８】
シンドローム生成回路１０３ａは、生成多項式Ｇ（ｘ）を最小多項式Ｍ１（ｘ）で除算してシンドロームｓ１を生成する。シンドローム生成回路１０３ｂは、生成多項式Ｇ（ｘ）を最小多項式Ｍ３（ｘ）で除算してシンドロームｓ３を生成する。シンドローム生成回路１０３ｃは、生成多項式Ｇ（ｘ）を最小多項式Ｍ５（ｘ）で除算してシンドロームｓ５を生成する。シンドローム生成回路１０３ｄは、生成多項式Ｇ（ｘ）を最小多項式Ｍ７（ｘ）で除算してシンドロームｓ７を生成する。
【００３９】
係数計算回路１０４は、シンドローム生成回路１０３が生成したシンドロームｓ１、ｓ３、ｓ５、ｓ７からエラー位置探索方程式の係数ｅ０（ｘ）、ｅ１（ｘ）、ｅ２（ｘ）、ｅ４（ｘ）を算出し、算出したエラー位置探索方程式の係数を後段の誤り位置探索回路１０５に対して出力する。
【００４０】
誤り位置探索回路１０５は、エラー位置探索方程式に上記２９３ビットのセクタデータを構成する各ビットの位置を示す値（アドレス値）が入力されると、各ビットに誤りが有るか否かを判定し、つまり誤り位置の特定を行ない、検出信号Ｚを生成する。この検出信号が、図２に示す２９３ビットの検出信号Ｚ[２９２：０]である。なお、検出信号Ｚ［２９２：０］は、図２において不図示の訂正回路に入力され、情報データＰ（ｘ）のうち誤りのあるビットのデータが、この検出信号に基づいて反転され、バッファ１４に書き込まれる。
【００４１】
次に、本願の特徴的部分である加工データを再度符号化することなく訂正対象とするシステム構成について説明する。ここで、再度符号化することなく訂正対象とするとは、誤り検出訂正回路において、情報データＰ（ｘ）、第１の符号データＲ（ｘ）、及び加工データＱ（ｘ）を符号化回路１０１の符号化に係る部分に再度入力することなく、符号化回路１０１の復号化に係る部分に代入できる、すなわち誤り検出及び訂正の対象とできることを意味している。
図３は、符号化後の加工データを再度訂正対象とする場合のＢＣＨ符号を利用したシステムの実施例を示す図である。
ここでは、情報データＰ（ｘ）の符号化に係る部分について説明するので、図３においては、図２に示す符号化回路１０１を符号化回路（Ｅｎｃｏｄｅｒ）１０１ｅ（以下、符号化回路１０１ｅとする）で示している。
【００４２】
図３において、情報データＰ（ｘ）の符号化に係る部分は、符号化回路１０１ｅと、図２に示す偶数パリティ生成回路１０２と、から構成される。
符号化回路１０１ｅは、２５６ビットの情報データＰ（ｘ）が入力され、３６ビットの第１の符号データＲ（ｘ）を生成する。３６（＝４ｍ＝４×９）ビットの第１の符号データＲ（ｘ）は、ＢＣＨ符号におけるパリティデータである。
偶数パリティ生成回路１０２は、２９２（＝２５６＋３６）ビットの情報データＰ（ｘ）、及び第１の符号データＲ（ｘ）から、１ビットの偶数パリティである加工データＱ（ｘ）（以下、偶数パリティＱ（ｘ）と言うこともある）を生成する。
また、偶数パリティ生成回路１０２は、加工データＱ（ｘ）が０か１のいずれかに応じて、第１の符号データＲ（ｘ）から第２の符号データＲ’（ｘ）を生成する。
【００４３】
偶数パリティ生成回路１０２は、加工データＱ（ｘ）が１のとき、第１の符号データＲ（ｘ）に未使用データＥｚ（ｘ）を加算して、第２の符号データＲ’（ｘ）を生成する。一方、偶数パリティ生成回路１０２は、加工データＱ（ｘ）が０のとき、第１の符号データＲ（ｘ）を、そのまま第２の符号データＲ’（ｘ）とする。
ここで、未使用データＥｚ（ｘ）は、符号化回路１０１ｅにおいて、生成多項式Ｇ（ｘ）での除算をＥＸＯＲ回路の組み合わせで実現した回路が出力するデータＥ（ｘ）＝｛Ｅ０（ｘ），Ｅ１（ｘ），…，Ｅ２＾ｍ−２（ｘ），Ｅ２＾ｍ−１（ｘ）｝のうち、未使用の回路が生成するデータ（未使用項）である。
【００４４】
ＧＦ（２ｍ）のガロア体（ｍ＝９）を利用した本実施形態において、符号化回路１０１ｅにおける符号化時において訂正対象となるビットは２９３ビットであるので、Ｅ（ｘ）＝｛Ｅ０（ｘ），Ｅ１（ｘ），…，Ｅ５０９（ｘ），Ｅ５１０（ｘ）｝のうち、使用されるＥＸＯＲ回路が生成するデータは、Ｅ（ｘ）＝｛Ｅ０（ｘ），Ｅ１（ｘ），…，Ｅ２９１（ｘ），Ｅ２９２（ｘ）｝となる。つまり、Ｅ（ｘ）は、使用されるＥＸＯＲ回路が生成する、各項３６ビットで表記される｛Ｅ０（ｘ），Ｅ１（ｘ），…，Ｅ２９１（ｘ），Ｅ２９２（ｘ）｝のデータの集合体である。ここで、Ｅｚ（ｘ）としては、未使用のＥＸＯＲ回路が出力するデータ｛Ｅ２９３（ｘ），…，Ｅ５１０（ｘ）｝のうちから、ＥＯ  Ｐａｒｉｔｙ（ここでは偶数パリティ）が０の項、すなわち１の数が偶数個のＥｚ（ｘ）を選択する。
【００４５】
次に、パリティ生成回路１０２が行うＥｚ（ｘ）の選択動作について、図４、及び図５を用いて詳細に説明する。
図４は、符号化回路１０１の回路構成を説明するための図である。また、図５は、偶数パリティ生成回路１０２の回路構成を説明するための図である。
図４は、生成多項式Ｇ（ｘ）での除算を、ＥＸＯＲ回路の組み合わせで実現した符号化回路１０１をイメージした図であり、符号化（Ｅｎｃｏｄｅ）と復号化（Ｄｅｃｏｄｅ）の計算回路を共用する時の符号化回路１０１の特徴を示している。
図４では、縦方向にＢＣＨ符号におけるパリティデータである、符号化時の第１の符号データＲ（ｘ）または復号化時の第３の符号データＲ’’（ｘ）（以下、ここでは単に符号データＲ（ｘ）とする）の３６ビットを表しており、横方向に、情報データＰ（ｘ）を表している。実際には、情報データＰ（ｘ）を含むセクタデータ（復号化時に符号化回路１０１に入力されるデータ）は、２９３ビット目まで存在することになるが、ここでは省略して５７ビット目までを示している。
【００４６】
図４において値が「１」の部分が、排他的論理和（ＥＸＯＲ）の計算に寄与する箇所である。例えば、図４によりイメージした図に従って、符号化回路１０１での符号データＲ（ｘ）を生成するＥＸＯＲ回路の組合せ回路各々は、ＲＴＬ（Ｒｅｇｉｓｔｅｒ  Ｔｒａｎｓｆｅｒ  Ｌｅｖｅｌ）記述を用いて、以下の様に情報データＰ（ｘ）が割り当てられて構成される。なお、演算記号「^」は排他的論理和演算を示す。
ａｓｓｉｇｎ Ｒ（３５）＝Ｐ（３５）＾Ｐ（３６）＾Ｐ（３７）＾Ｐ（３９）＾Ｐ（４３）＾Ｐ（４６）＾Ｐ（４８）＾Ｐ（４９）＾Ｐ（５１）＾Ｐ（５４）＾…、
ａｓｓｉｇｎ Ｒ（３４）＝Ｐ（３４）＾Ｐ（３６）＾Ｐ（３７）＾Ｐ（３９）＾Ｐ（４１）＾Ｐ（４２）＾Ｐ（４６）＾Ｐ（５２）＾Ｐ（５４）＾Ｐ（５６）^…、
…、
…、
…、
ａｓｓｉｇｎ Ｒ（０）＝Ｐ（０）＾Ｐ（３７）＾Ｐ（３８）＾Ｐ（３９）＾Ｐ（４１）＾Ｐ（４８）＾Ｐ（５４）＾Ｐ（５５）＾…、
である。
【００４７】
また、図４に示すイメージ図では、符号化回路１０１の復号化時の入力データである復号化時の２９３ビット（セクタデータ）は、図４に示す”１”のビット位置に相当するパターンをＥＸＯＲ回路により排他的論理和（ＥＸＯＲ）で足し合わせていくものである。
例えば、図４の３６ビット目に相当するデータＥ３６（ｘ）は、３６ビットのバイナリ表示で、Ｅ３６（ｘ）＝３６‘ｂ１１１１１０１１０００００１１００１１００１０１１１０１１０１０００１０である。また、３７ビット目のデータＥ３７（ｘ）は、３６ビットのバイナリ表示で、Ｅ３７（ｘ）＝３６’ｂ１１００００１０１１００００００１１１０１０００００１０１０１０１０１１である。このように、符号化回路１０１では、図５に示すイメージに従い、Ｅ０（ｘ），Ｅ１（ｘ），…，Ｅ５０９（ｘ），Ｅ５１０（ｘ）のデータが生成される。これらのデータそれぞれは、ビット位置特有のデータを成しており、このデータとビット位置とを紐づけることで、図２に示す誤り位置探索回路１０５において、各ビットの誤りを特定することができる。本実施形態の誤り訂正回路、及び半導体メモリに使用する場合、Ｅ（ｘ）は各項３６ビットで表記される｛Ｅ０（ｘ），Ｅ１（ｘ），…，Ｅ２９１（ｘ），Ｅ２９２（ｘ）｝のデータの集合体は、セクタデータを演算するＥＸＯＲ回路が生成するデータの集合体である。一方、｛Ｅ２９３（ｘ），…，Ｅ５１０（ｘ）｝は、セクタデータの演算に係らない、つまり未使用のＥＸＯＲ回路が生成するデータの集合体となる。
【００４８】
本実施形態では、符号化回路１０１ｅでの符号化後に、偶数パリティ生成回路１０２において加工した加工データＱ（ｘ）、すなわち偶数パリティを未使用のデータの集合体｛Ｅ２９３（ｘ），…，Ｅ５１０（ｘ）｝と紐づけることにより訂正対象とする。
そのため、偶数パリティ生成回路１０２に、図５において論理演算を示す回路を組み込む。図５において、Ｒ[３５：０]は第１の符号データ（ｘ）を、Ｒ＿Ｐｒｅ[３５：０]は第２の符号データＲ’（ｘ）を、ＥＯＰａｒｉｔｙは加工データＱ（ｘ）をそれぞれ示す。図５に示す様に、偶数パリティが１の場合、未使用項であるＥ２９３（ｘ）をＢＣＨ符号のパリティデータ（第１の符号データＲ（ｘ））に付加して、第２の符号データＲ’（ｘ）を生成する。一方、偶数パリティが０の場合、第１の符号データＲ（ｘ）をそのまま、第２の符号データＲ’（ｘ）とする。
【００４９】
ここで、本実施形態の様に、符号化後の加工データＱ（ｘ）が偶数パリティの場合、偶数パリティが０（１の個数が偶数個）のパターンを選ぶ必要がある。なお、奇数パリティの場合、奇数パリティが１（１の個数が奇数個）のパターンを選べばよい。本実施形態では、Ｅ２９３（ｘ）は、偶数パリティが０のパターンであるが、もし異なる場合（１である場合）、｛Ｅ２９３（ｘ），・・・，Ｅ５１０（ｘ）｝の集合体の中から、１の個数が偶数個である、すなわち０であるという条件に当てはまるデータを選択する必要がある。
【００５０】
これにより、符号化回路１０１ｅの符号化後のデータ（入力データである情報データＰ（ｘ）＋ＢＣＨ符号のパリティデータである第１の符号データＲ（ｘ））を加工した加工データＱ（ｘ）（本実施形態では偶数パリティ）を再度符号化することなく、情報データＰ（ｘ）、第２の符号データＲ’（ｘ）、及び加工データＱ（ｘ）を誤り訂正対象とすることが出来る。すなわち、加工データをＱ（ｘ）と情報データＰ（ｘ）、第１の符号データＲ（ｘ）とを、符号化（Ｅｎｃｏｄｅ）時に、再度符号化回路１０１ｅに入力する必要がない。これにより、符号化時間を半分にすることが出来る。
【００５１】
例えば、ＧＦ（２９）のガロア体を利用し、４ビットの誤りが訂正可能なＢＣＨ符号を用いた誤り検出訂正回路を搭載したページサイズ２ｋバイトの半導体メモリについて考察を行う。この半導体メモリでのセクタサイズが２５６ビットであるとすると、２ｋバイトでは６４回の繰り返し処理が符号化処理において必要とある。例えば、クロック周波数４０ｎｓｅｃ（ナノ秒）で動作させる場合、再度符号化を行うと、２．５６μｓｅｃ（マイクロ秒）の時間だけ符号化処理の時間が延びてしまう。これに対して、本発明の誤り訂正回路では２．５６μｓｅｃが短縮できる。また、処理時間の短縮に際して、上述したように、従来技術の様に符号化回路を２個にする必要はないため、回路規模の増大を抑制できる。
【００５２】
このように、本発明の誤り検出訂正回路１３は、符号化時に、情報長が２＾（ｍ−１）ビット（本実施形態ではｍ＝９）の情報データを生成多項式Ｇ（ｘ）により除算し、複数ビット（＝ｍ×４ビット）の第１の符号データＲ（ｘ）を算出する符号化回路１０１を有する。また、誤り検出訂正回路１３は、情報データＰ（ｘ）と第１の符号データＲ（ｘ）とから加工データＱ（ｘ）を生成する偶数パリティ生成回路１０２（データ加工回路）を備える。偶数パリティ生成回路１０２は、生成した加工データＱ（ｘ）が０または１のうち一方の場合（本実施形態では偶数パリティが１の場合）、ガロア体ＧＦ（２ｍ）上において、第１の符号データＲ（ｘ）の各ビットを用いて表される｛（２＾ｍ−１）−（２＾（ｍ−１）＋第１の符号データのビット数×ｍ＋加工データのビット数）｝個のデータ（５１１−（２５６＋４×９＋１）＝５１１−２９３個のデータ｛Ｅ２９３（ｘ）、…、Ｅ５１０（ｘ）｝）のうちから、０または１のうち他方のデータ（本実施形態では０、すなわち１が偶数個データＥｚ（ｘ）＝Ｅ２９３）を選択して第１の符号データＲ（ｘ）に加算して第２の符号データＲ’（ｘ）を生成する。一方、偶数パリティ生成回路１０２は、生成した加工データＱ（ｘ）が０または１のうちの他方の場合（本実施形態では０の場合）、第１の符号データＲ（ｘ）を第２の符号データＲ’（ｘ）とする。
【００５３】
また、上記説明において、誤り検出訂正回路１３において、加工データＱ（ｘ）は偶数パリティであって、第１の符号データＲ（ｘ）に加算されるデータは、１の個数が偶数個のデータである。
【００５４】
また、符号化回路１０１は、復号化時に、情報データＰ（ｘ）と、第２の符号データＲ’（ｘ）と、加工データＱ（ｘ）とを生成多項式Ｇ（ｘ）により除算し、第３の符号データＲ’’（ｘ）を算出し、第３の符号データＲ’’（ｘ）を最小多項式Ｍ１（ｘ）、Ｍ３（ｘ）、Ｍ５（ｘ）、Ｍ７（ｘ）により除算し、それぞれシンドロームｓ１、ｓ３、ｓ５、ｓ７を算出するシンドローム生成回路１０３と、シンドロームｓ１、ｓ３、ｓ５、ｓ７からエラー位置探索方程式の係数を算出する係数計算回路１０４と、エラー位置探索方程式に、情報データＰ（ｘ）、第２の符号データＲ’（ｘ）、及び加工データＱ（ｘ）の各ビットの位置を示すアドレス値を代入して、各ビットに誤りがあるか否かを検出する誤り位置探索回路１０５と、を更に有する。
【００５５】
また、本発明の半導体記憶装置は、誤り検出訂正回路１３を備え、セクタデータ（外部から書き込まれる情報データＰ（ｘ）、符号化回路が生成する第１の符号データＲ（ｘ）、及び偶数パリティ生成回路１０２（データ加工回路）が加工する加工データＱ（ｘ））が１ページに書き込まれる不揮発性半導体記憶装置であって、復号化時における情報データＰ（ｘ）を誤り検出訂正回路１３の検出結果に基づいて誤り訂正して出力する。
【００５６】
本発明によれば、システムの回路規模を増大させずに、符号化処理の時間を短縮することが可能となる、誤り検出訂正回路、及び誤り検出訂正回路を備えた半導体記憶装置を提供することができる。
【００５７】
以上、この発明の実施形態を、図面を参照して詳述してきたが、具体的な構成はこの実施形態に限られるものではなく、この発明の要旨を逸脱しない範囲の設計等も含まれる。例えば、本実施形態の説明では、ＧＦ（２９）のガロア体を利用し、４ビットの誤りが訂正可能なＢＣＨ符号を例にとって説明したが、本発明は、ガロア体の種類、及び訂正すべきエラーのビット数に依存しない。また、実施形態の説明では、情報データと第１の符号データとから偶数パリティを加工する例について説明したが、これは一例であって、加工データは特に偶数パリティに限られるものではなく、その他の検出用のデータであってもよい。
【符号の説明】
【００５８】
１０…不揮発性半導体記憶装置、１１…メモリセルアレイ、１２…ページバッファ、１３…誤り検出訂正回路、１４…バッファ、１５…Ｉ／Ｏパッド、１６…制御回路、１７…アドレスデコーダ、１８…ロウ及びブロックデコーダ、１０１，１０１ｅ，９１ｅ…符号化回路、１０２，９２…偶数パリティ生成回路、１０３，１０３ａ，１０３ｂ，１０３ｃ，１０３ｄ…シンドローム生成回路、１０４…係数計算回路、１０５…誤り位置探索回路
【図１】
2014116659.tif 000003
【図２】
2014116659.tif 000004
【図３】
2014116659.tif 000005
【図４】
2014116659.tif 000006
【図５】
2014116659.tif 000007
【図６】
2014116659.tif 000008