(57)【特許請求の範囲】
【請求項１】
生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、入力データに前記生成多項式を適用して線形符号化データを得る線形符号化部と、
ＬＤＰＣ符号のパリティ検査行列に対応する生成行列を前記線形符号化データに適用し、出力データを得るＬＤＰＣ符号化部と
を具備し、
前記パリティ検査行列は、数式：
【数１】
0005509165.tif 000009
を満たす、
誤り訂正符号化装置。
【請求項２】
ＬＤＰＣ符号のパリティ検査行列を用いて入力データを復号し、ＬＤＰＣ復号データを得るＬＤＰＣ復号部と、
生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、前記ＬＤＰＣ復号データに前記生成多項式を適用して誤りを検査し、出力データを得る誤り検査部と
を具備し、
前記パリティ検査行列は、数式：
【数２】
0005509165.tif 000010
を満たす、
誤り訂正復号装置。
【請求項３】
生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、第１のデータに前記生成多項式を適用して第２のデータを得る線形符号化部と、
ＬＤＰＣ符号のパリティ検査行列に対応する生成行列を前記第２のデータに適用し、第３のデータを得るＬＤＰＣ符号化部と、
前記第３のデータが記憶される不揮発性半導体メモリと、
前記パリティ検査行列を用いて、前記不揮発性半導体メモリから前記第３のデータを読み出すことによって得られた第４のデータを復号し、第５のデータを得るＬＤＰＣ復号部と、
前記線形符号方式をサポートし、前記第５のデータに前記生成多項式を適用して誤りを検査し、第６のデータを得る検査部と
を具備し、
前記パリティ検査行列は、数式：
【数３】
0005509165.tif 000011
を満たす、
不揮発性半導体記憶システム。
【請求項４】
第１の誤り訂正符号方式に基づいて入力データを符号化して前記第１のデータを得る第１の誤り訂正符号化部と、
前記第１の誤り訂正符号方式に基づいて前記第６のデータを復号して出力データを得る第１の誤り訂正復号部と
を更に具備する、
請求項３の不揮発性半導体記憶システム。
【請求項５】
前記パリティ検査行列は、設計時において前記数式を満足することが確認されている、請求項３の不揮発性半導体記憶システム。
【請求項６】
生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式と組み合わせて利用されるＬＤＰＣ符号のパリティ検査行列の候補を作成することと、
前記パリティ検査行列の候補が、数式：
【数４】
0005509165.tif 000012
を満足するか否かを判定することと、
前記パリティ検査行列の候補が前記数式を満足するならば、当該パリティ検査行列の候補をパリティ検査行列と決定することと
を具備し、
前記パリティ検査行列の候補が前記数式を満足するまで、前記パリティ検査行列の候補を作成することと、前記パリティ検査行列の候補が前記数式を満足するか否かを判定することとが繰り返される、
パリティ検査行列生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
実施形態は、誤り訂正符号に関する。
【背景技術】
【０００２】
誤り訂正符号の一種として、ＬＤＰＣ（Ｌｏｗ  Ｄｅｎｓｉｔｙ  Ｐａｒｉｔｙ  Ｃｈｅｃｋ）符号が知られている。ＬＤＰＣ符号は、強力な誤り訂正能力を持つ。ところが、ＬＤＰＣ符号は、その符号語間の最小距離が比較的小さい。従って、復号される符号データに含まれる誤りが少量であっても、ある程度の確率で誤訂正が生じるおそれがある。誤訂正とは、符号データに含まれる誤りが正しく検出されず、結果的に誤った符号語に訂正されることを意味する。このように、ＬＤＰＣ復号器から出力される復号データは、誤りを含む可能性がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００７−２８８７２１号公報
【非特許文献】
【０００４】
【非特許文献１】Ｒ．  Ｓｍａｒａｎｄａｃｈｅ  ｅｔ  ａｌ．  “Ｑｕａｓｉ−Ｃｙｃｌｉｃ  ＬＤＰＣ  Ｃｏｄｅｓ：  Ｉｎｆｌｕｅｎｃｅ  ｏｆ  Ｐｒｏｔｏ−  ａｎｄ  Ｔａｎｎｅｒ−Ｇｒａｐｈ  Ｓｔｒｕｃｔｕｒｅ  ｏｎ  Ｍｉｎｉｍｕｍ  Ｈａｍｍｉｎｇ  Ｄｉｓｔａｎｃｅ  Ｕｐｐｅｒ  Ｂｏｕｎｄｓ，”  ａｒＸｉｖ：０９０１．４１２９ｖ１
【非特許文献２】Ｄ．  Ａｒｎｏｌｄ  ｅｔ  ａｌ．  “Ｐｒｏｇｒｅｓｓｉｖｅ  ｅｄｇｅ−ｇｒｏｗｔｈ  Ｔａｎｎｅｒ  ｇｒａｐｈｓ，”  ＧＬＯＢＥＣＯＭ  ２００１．
【発明の概要】
【発明が解決しようとする課題】
【０００５】
実施形態は、誤り検出率の向上を目的とする。
【課題を解決するための手段】
【０００６】
実施形態によれば、誤り訂正符号化装置は、線形符号化部と、ＬＤＰＣ符号化部とを含む。線形符号化部は、生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、入力データに生成多項式を適用して線形符号化データを得る。ＬＤＰＣ符号化部は、ＬＤＰＣ符号のパリティ検査行列に対応する生成行列を線形符号化データに適用し、出力データを得る。パリティ検査行列は、明細書中の数式（１）を満たす。
【図面の簡単な説明】
【０００７】
【図１】第１の実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置を含む不揮発性半導体記憶システムを例示するブロック図。
【図２】第１の実施形態に係る誤り訂正符号化装置内の各機能部において生成されるデータの説明図。
【図３】ＬＤＰＣ符号のパリティ検査行列及び符号語についてのバイナリ表現及び多項式表現の説明図。
【図４】第１の実施形態に係るパリティ検査行列の生成方法を例示するフローチャート。
【発明を実施するための形態】
【０００８】
以下、図面を参照しながら実施形態の説明が述べられる。尚、以降の説明において、「復号」及び「訂正」という用語がしばしば使用されるが、両者は概ね同じ意味である。具体的には、いずれも、正しい符号フレーム（符号データ）を推定すること、即ち、誤り訂正と概ね同じ意味である。
【０００９】
（第１の実施形態）  
第１の実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、例えば記憶システム、通信システムなどに組み込まれる。以降の説明は、簡単化のために、本実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置が、不揮発性半導体記憶システムに組み込まれることを前提に述べられる。但し、本実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、通信システム、光記録システム、磁気記録システムなど、誤り訂正符号を利用可能なあらゆるシステムに適用されてよい。
【００１０】
本実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、例えば図１に示される不揮発性半導体記憶システム１００に組み込まれる。図１の不揮発性半導体記憶システム１００は、第１の誤り訂正符号化部１０１と、ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）符号化部１０２と、ＬＤＰＣ符号化部１０３と、不揮発性半導体メモリ１０４と、ＬＤＰＣ復号部１０５と、ＣＲＣ検査部１０６と、制御部１０７と、バッファメモリ１０８と、第１の誤り訂正復号部１０９とを含む。
【００１１】
ここで、本実施形態に係る誤り訂正符号化装置は、例えば、第１の誤り訂正符号化部１０１と、ＣＲＣ符号化部１０２と、ＬＤＰＣ符号化部１０３とを含む。また、本実施形態に係る誤り訂正復号装置は、ＬＤＰＣ復号部１０５と、ＣＲＣ検査部１０６と、制御部１０７と、バッファメモリ１０８と、第１の誤り訂正復号部１０９とを含む。
【００１２】
第１の誤り訂正符号化部１０１は、図２に示されるように、不揮発性半導体記憶システム１００の入力データに第１の誤り訂正符号に基づくパリティデータを付加し、第１のデータを得る。第１の誤り訂正符号化部１０１は、第１のデータをＣＲＣ符号化部１０２へと出力する。
【００１３】
尚、第１の誤り訂正符号は、任意の方式の誤り訂正符号であってよい。第１の誤り訂正符号は、後述されるＬＤＰＣ復号部１０５の復号失敗時（例えばエラーフロア発生時）、或いは、ＣＲＣ検査部１０６による誤り検出時に、正しいデータを復号するために利用される。但し、第１の誤り訂正符号は必須でなく、必要に応じて第１の誤り訂正符号化部１０１及び第１の誤り訂正復号部１０９が除去されてよい。
【００１４】
ＣＲＣ符号化部１０２は、図２に示されるように、第１のデータを分割し、Ｍ組の第１のサブデータ１，・・・，Ｍを得る。尚、図２はＭ＝２である場合を示しているが、分割は必須でない。即ち、Ｍ＝１も許容されるので、Ｍ≧１である。また、図２において、第１のデータのうちデータ部及びパリティデータ部の両方が等分割されているが、これらの一方または両方が不等分割されてもよい。或いは、データ部及びパリティデータ部を区別することなく、第１のデータが先頭から順番に等分割または不等分割されてもよい。以降の説明は、簡単化のために、図２の分割方式を前提とする。係る分割方式は、一般的な不揮発性半導体システムにおける分割方式に合致している。
【００１５】
更に、ＣＲＣ符号化部１０２は、図２に示されるように、Ｍ組の第１のサブデータ１，・・・，ＭにＭ組のＣＲＣパリティデータ１，・・・，Ｍを夫々付加し、Ｍ組の第２のデータ１，・・・，Ｍを得る。ＣＲＣ符号化部１０２は、典型的には、第１のサブデータを生成多項式によって除算し、その剰余をパリティデータとして付加する。ＣＲＣ符号化部１０２は、Ｍ組の第２のデータ１，・・・，ＭをＬＤＰＣ符号化部１０３へと出力する。
【００１６】
尚、ＣＲＣ符号化部１０２は、生成多項式を用いた除算によってパリティ検査を実施可能な任意の線形符号方式をサポートする線形符号化部に置き換えられてよい。この線形符号方式は、少なくとも誤り検出能力を持つが、更に誤り訂正能力を持ってもよい。具体的には、この線形符号方式は、ハミング符号、ＢＣＨ符号、Ｒｅｅｄ−Ｓｏｌｏｍｏｎ符号などであってよい。
【００１７】
ＬＤＰＣ符号化部１０３は、図２に示されるように、Ｍ組の第２のデータ１，・・・，ＭにＭ組のＬＤＰＣ符号のパリティデータ１，・・・，Ｍを夫々付加し、Ｍ組の第３のデータ１，・・・，Ｍを得る。ＬＤＰＣ符号化部１０３は、典型的には、後述されるパリティ検査行列に対応するＬＤＰＣ生成行列を第２のデータに乗算し、第３のデータを得る。パリティ検査行列の詳細は後述される。ＬＤＰＣ符号化部１０３は、Ｍ組の第３のデータ１，・・・，Ｍを不揮発性半導体メモリ１０４へと出力する。
【００１８】
不揮発性半導体メモリ１０４は、例えば複数のメモリセルがＮＡＮＤ型に接続されたアレイ構造を有するフラッシュメモリによって実現される。不揮発性半導体メモリ１０４は、メモリセルにＭ組の第３のデータ１，・・・，Ｍを記録する。具体的には、不揮発性半導体メモリ１０４は、ページデータ単位でデータを読み書きできる。ページデータの容量は、フラッシュメモリの構成に依存するものの、概ね数ＫＢ程度である。１単位のページデータは、図２に示されるように、Ｍ組の第３のデータ１，・・・，Ｍの少なくとも全てを包含する。尚、図１において不揮発性半導体記憶システム１００の構成が簡略化されて描かれているが、不揮発性半導体記憶システム１００はフラッシュメモリへのデータの書き込み、読み込みに必要な種々の機能部（図示されない）を当然に備える。
【００１９】
各メモリセルには少なくとも２以上の閾値電圧が設定されており、この書き込み閾値電圧の数に応じて１ビット以上のデータを記憶することができる。例えば、１つのメモリセルに２ビットが記憶される場合には、２ビット値：「１１」，「１０」，「０１」，「００」が４つの閾値電圧に夫々マッピングされる。尚、メモリセルの閾値電圧は、隣接セルとの容量結合などの理由により、揺らぐことがある。そして、この閾値電圧の揺らぎは、読み出しデータの誤りを引き起こす一因となる。
【００２０】
以上、データの書き込みに関する構成要素とその動作が説明された。以下、データの読み出しに関する構成要素とその動作が説明される。
【００２１】
不揮発性半導体メモリ１０４からＭ組の第４のデータ１，・・・，Ｍが読み出され、ＬＤＰＣ復号部１０５へと出力される。前述の通り、Ｍ組の第４のデータ１，・・・，Ｍは誤りを含み得る。即ち、Ｍ組の第４のデータ１，・・・，Ｍは、Ｍ組の第３のデータ１，・・・，Ｍと必ずしも一致しない。
【００２２】
ＬＤＰＣ復号部１０５は、Ｍ組の第４のデータ１，・・・，Ｍに対してＬＤＰＣ復号処理を実施する。具体的には、ＬＤＰＣ復号部１０５は、後述されるパリティ検査行列を用いた繰り返し復号アルゴリズムを実施する。繰り返し復号アルゴリズムは、例えば、ｓｕｍ−ｐｒｏｄｕｃｔアルゴリズム、ｍｉｎ−ｓｕｍアルゴリズムなどである。ＬＤＰＣ復号部１０５は、繰り返し復号の各試行において、第４のデータの一時推定語にパリティ検査行列を乗算してパリティ検査を実施する。繰り返し復号の過程においてＬＤＰＣ符号語が得られた場合（即ち、復号が成功した場合）に、当該ＬＤＰＣ符号語からＬＤＰＣ符号のパリティデータを除去したＭ組の第５のデータ１，・・・，ＭをＣＲＣ検査部１０６へと出力する。Ｍ組の第５のデータ１，・・・，Ｍは、ＬＤＰＣ符号語のデータ部に相当するが、当該ＬＤＰＣ符号語は正しく訂正されたＬＤＰＣ符号語であるかもしれないし、誤訂正されたＬＤＰＣ符号語であるかもしれない。
【００２３】
一方、ＬＤＰＣ復号部１０５は、繰り返し復号の試行回数が最大値に達してもＬＤＰＣ符号語を得られない（即ち、復号に失敗する）こともある。係る場合の扱いは、特に制限されないが、例えばＣＲＣ検査を省略して第１の誤り訂正符号に基づく復号を実施することが想定できる。
【００２４】
ＣＲＣ検査部１０６は、Ｍ組の第５のデータ１，・・・，ＭのＣＲＣ検査を行う。具体的には、ＣＲＣ検査部１０６は、第５のデータを生成多項式で除算し、剰余が零であるか否かを検査する。剰余が零であれば第５のデータから誤りが検出されず、剰余が非零であれば第５のデータから誤りが検出される。ＣＲＣ検査部１０６は、Ｍ組の第５のデータ１，・・・，Ｍの各々の検査結果（即ち、誤りが検出されたか否か）１，・・・，Ｍを制御部１０７に通知する。また、ＣＲＣ検査部１０６は、Ｍ組の第５のデータ１，・・・，ＭからＣＲＣパリティデータを除去し、Ｍ組の第６のデータ１，・・・，Ｍを得る。ＣＲＣ検査部１０６は、Ｍ組の第６のデータ１，・・・，Ｍをバッファメモリ１０８に保存する。更に、ＣＲＣ検査部１０６は、誤りが検出されなかった第６のデータについて、第１の誤り訂正符号のパリティサブデータを除去して直接外部に出力してもよい。係る措置によれば、誤りのない第６のデータについて、第１の誤り訂正復号部１０９による復号処理を省略できるので、データ出力のスループットが向上する。
【００２５】
制御部１０７は、ＣＲＣ検査部１０６からの検査結果１，・・・，Ｍを参照し、少なくとも１つの第６のデータについて誤りが検出されたか否かを確認する。少なくとも１つの第６のデータについて誤りが検出されているならば、制御部１０７はバッファメモリ１０８にＭ組の第６のデータ１，・・・，Ｍの出力指示を与えると共に、第１の誤り訂正復号部１０９に復号処理の実施指示を与える。更に、制御部１０７は、ＣＲＣ検査部１０６からの検査結果１，・・・，Ｍを第１の誤り訂正復号部１０９に通知してもよい。係る措置によれば、第１の誤り訂正復号部１０９は誤りが含まれない第６のデータを識別できるので、不必要な復号処理を省略できる。即ち、第６のデータ１，・・・，Ｍの全体を対象とする場合に比べて、第１の誤り訂正復号部１０９による復号処理を高速化できる。
【００２６】
バッファメモリ１０８は、ＣＲＣ検査部１０６からのＭ組の第６のデータ１，・・・，Ｍを保存する。バッファメモリ１０８は、制御部１０７から出力指示を与えられると、これらＭ組の第６のデータ１，・・・，Ｍを結合した第７のデータを第１の誤り訂正復号部１０９へと出力する。
【００２７】
第１の誤り訂正復号部１０９は、制御部１０７から復号処理の実施指示を受けると、バッファメモリからの第７のデータに第１の誤り訂正符号に基づく復号処理を行う。尚、前述の通り、第１の誤り訂正復号部１０９は、制御部１０７から通知されるＣＲＣ検査結果１，・・・，Ｍを利用して効率的な復号処理を行ってよい。第１の誤り訂正復号部１０９は、第７のデータの復号処理において符号語を得る（即ち、誤りが訂正される）と、当該符号語から第１の誤り訂正符号のパリティデータを除去し、それから外部に出力する。他方、復号処理の結果、符号語が得られなかった（誤りが訂正されなかった）場合の扱いは特に制限されない。例えば、誤りを含むデータが外部に出力されてもよいし、されなくてもよい。いずれにせよ、誤りが訂正されなったことを確認可能な情報が外部に出力されることが望ましい。
【００２８】
以上説明されたように、不揮発性半導体記憶システム１００において、ＬＤＰＣ復号部１０５及びＣＲＣ検査部１０６によって２重の誤り検出が実施される。即ち、誤訂正されたＬＤＰＣ符号語を検出するために、ＬＤＰＣ符号にＣＲＣ符号（或いはその他の外符号であってもよい）が組み合わせられている。ＣＲＣ符号を利用すれば、誤訂正されたＬＤＰＣ復号データに含まれる誤りを検出できる可能性がある。
【００２９】
しかしながら、ＬＤＰＣ符号の設計次第では、誤訂正に基づくＬＤＰＣ復号データが偶然にもＣＲＣ符号語に一致するおそれがある。この場合に、外符号が機能せず、誤りは検出されない。即ち、ＣＲＣ符号をＬＤＰＣ符号と単純に組み合わせたとしても、システム（例えば、ＬＤＰＣ符号を利用する記憶システム、通信システムなど）全体の誤り検出率を向上させることは容易でない。例えば、ＬＤＰＣ復号部１０５によって誤訂正された符号語に基づく第５のデータがＣＲＣ符号語に一致していれば、ＣＲＣ検査部１０６は機能しないので当該第５のデータに含まれる誤りを検出できない。
【００３０】
そこで、本実施形態に係る誤り訂正復号装置は、後述される数式（１）を満たすＬＤＰＣ符号のパリティ検査行列を使用する。また、本実施形態に係る誤り訂正符号化装置は、このパリティ検査行列に対応するＬＤＰＣ符号生成行列を使用する。
【００３１】
一般に、正しいＬＤＰＣ符号語（便宜的に、第１のＬＤＰＣ符号語と称される）と誤訂正されたＬＤＰＣ符号語（便宜的に、第２のＬＤＰＣ符号語と称される）との間の（ハミング）距離は小さくなり易い傾向にある。また、ＬＤＰＣ符号は線形符号であるから、符号語間の距離もまたＬＤＰＣ符号語（便宜的に、第３のＬＤＰＣ符号語と称される）の１つである。符号語間の距離が小さいほど誤訂正は生じ易いといえるので、第３のＬＤＰＣ符号語が少数の「１」及び多数の「０」によって構成される低重み語になり易い傾向にあることは明らかである。ここで、第１のＬＤＰＣ符号語が「０」のみで構成されると仮定すると、第２のＬＤＰＣ符号語及び第３のＬＤＰＣ符号語は一致する。即ち、係る仮定の下では第２のＬＤＰＣ符号語は低重み語になり易い傾向にある。この低重み語からＬＤＰＣ符号のパリティデータを除去して得られる第５のデータ（これは、低重みの符号系列であるといえる）がＣＲＣ符号語と一致しない（ＣＲＣ検査を満たさない）ようにＬＤＰＣ符号を設計しておけば、ＣＲＣ検査部１０６は「０」のみで構成されるＬＤＰＣ符号語の誤訂正に基づく第５のデータの誤りを検出できる。
【００３２】
更に、ＣＲＣ符号もまた線形符号である。即ち、任意の２つのＣＲＣ符号語間の距離もまたＣＲＣ符号語の１つに一致する。故に、係る低重みの符号系列がＣＲＣ符号語と一致しないようにすることは、任意のＣＲＣ符号語（第１のＬＤＰＣ符号語からＬＤＰＣのパリティデータを除去して得られる符号系列）からの距離が当該低重みの符号系列に等しい符号系列（第２の符号語からＬＤＰＣのパリティデータを除去して得られる符号系列）がＣＲＣ符号語と一致しないようにすることを意味する。従って、低重みのＬＤＰＣ符号語からＬＤＰＣ符号のパリティデータを除去して得られる第５のデータをＣＲＣ符号語と一致しないようにＬＤＰＣ符号を設計しておけば、ＣＲＣ検査部１０６はＬＤＰＣ復号部１０５の誤訂正を高精度に検出可能である。そして、係る条件を満足するためには、ＬＤＰＣ符号のパリティ検査行列は下記数式（１）を満足する必要がある。
【数１】
0005509165.tif 000002
【００３３】
上記数式（１）は、ＬＤＰＣ符号のパリティ検査行列（＝Ｈ）に基づいて定義される低重みＬＤＰＣ符号語のうちのデータ部（＝ｄ（ｘ））がＣＲＣ検査部１０６においてＣＲＣエラーとなる条件を表している。即ち、ＬＤＰＣ符号のパリティ検査行列（＝Ｈ）が上記数式（１）を満たすならば、誤訂正されたＬＤＰＣ符号語に含まれる誤りはＣＲＣ検査部１０６によって高確率に検出される。
【００３４】
パリティ検査行列（＝Ｈ）は、より詳細には、複数のｑ行ｑ列のブロックを組み合わせて形成される。各ブロックは、ｑ行ｑ列の巡回シフト行列（単位行列を巡回シフトすることによって得られる行列）またはｑ行ｑ列の零行列である。係るパリティ検査行列（＝Ｈ）に基づくＬＤＰＣ符号は、準巡回ＬＤＰＣ符号と呼ばれる。各ブロックは、バイナリ表現に限られず、ｑ−１次の多項式で表現することも可能である。例えば、各ブロックの第１行第１列の要素をｘ０＝１の係数とし、第ｑ行第１列の要素をｘｑ−１の係数とすれば多項式表現が可能である。従って、パリティ検査行列（＝Ｈ）は、下記の数式（２）に示されるように、ｑ−１次多項式を要素として持つＪ行Ｋ列の行列として表現できる。
【数２】
0005509165.tif 000003
【００３５】
更に、符号語（＝ｃ）も同様に、ｑ列単位でｑ−１次の多項式で表現できる。具体的には、ｑ列ごとに列インデックスの小さい要素から順にｘ０，・・・，ｘｑ−１の係数に割り当てることによって多項式表現は可能である。従って、符号語（＝ｃ）は、下記の数式（３）に示されるように、Ｋ個のｑ−１次多項式を要素として持つ行ベクトルとして表現できる。
【数３】
0005509165.tif 000004
【００３６】
一例として、ｑ＝３、Ｊ＝２、Ｋ＝３の場合における符号語（＝ｃ）及びパリティ検査行列（＝Ｈ）の多項式表現及びバイナリ表現が図３に示されている。尚、符号語の多項式表現は、図３の例に限られず、例えば多項式の順序を反転させてｄ’（ｘ）＝ｘｎｄ（ｘ−１）とすることも可能である。
【００３７】
更に、下記の数式（４）に示されるように、ＬＤＰＣ符号のパリティ検査を多項式で表現することもできる。下記の数式（４）は、第ｊ行のパリティ検査を示す。
【数４】
0005509165.tif 000005
【００３８】
多項式ベクトル（＝ｃ）は、パリティ検査行列（＝Ｈ）によって定義される符号語であるので、ｓｊ（ｘ）は全て（ｊ＝１，・・・，Ｊ）零となる。即ち、上記数式（４）においてｃｉ（ｘ）として一時推定語の各要素の多項式表現を与えた場合に全てのｊについてｓｊ（ｘ）＝０であれば、当該一時推定語はＬＤＰＣ符号語と判定される。一方、少なくとも１つのｊについてｓｊ（ｘ）＝０でなければ、当該一時推定語はＬＤＰＣ符号語でないと判定される。
【００３９】
低重みの符号系列は、下記数式（５）によって定義できる。尚、下記数式（５）によって低重み語を定義できることは、非特許文献１を参照すれば理解可能であるので、その詳細は省略される。
【数５】
0005509165.tif 000006
【００４０】
この低重み符号系列は、以下に証明されるように、ＬＤＰＣ復号部１０５におけるパリティ検査を満たす低重みＬＤＰＣ符号である。上記数式（４）及び数式（５）に基づいて、この低重み符号系列のパリティ検査は下記数式（６）によって表現できる。
【数６】
0005509165.tif 000007
【００４１】
ここで、関数ｐｅｒｍ（）は、前述の通り行列式の計算を意味するので、上記数式（６）は、下記の行列の余因子展開とみなすことができる。
【数７】
0005509165.tif 000008
【００４２】
上記行列は、その第１行と第ｊ＋１行とが必ず一致するので、明らかにフルランクでない。即ち、行列式は必ず零となり、全てのｊについてｓｊ（ｘ）＝０である。従って、上記数式（５）に示される低重み符号系列は、ＬＤＰＣ復号部１０５におけるパリティ検査を満たす低重みＬＤＰＣ符号語である。そして、前述の通り、この低重みＬＤＰＣ符号語のうちのデータ部から、ＣＲＣ検査部１０６は誤りを検出できる。
【００４３】
以下、図４を用いて数式（１）を満足するＬＤＰＣ符号のパリティ検査行列の生成方法が説明される。誤り符号化装置及び誤り復号装置の設計時に係るアルゴリズムを適用することによって、ＬＤＰＣ符号のパリティ検査行列が数式（１）を満足することを保証できる。尚、図４のアルゴリズムにおいて、簡単化のために、列インデックスが小さいほど列次数が大きい（換言すれば、列インデックスが大きいほど列次数が小さい）パリティ検査行列（＝Ｈ）が生成対象とされる。
【００４４】
まず、種々のパラメータが入力される。具体的には、パリティ検査行列（＝Ｈ）の行数（＝Ｊ）及び列数（＝Ｋ）と、第ｋ列に含まれる非零ブロックの総数を表す非零ブロック分布（＝Ｄ（ｋ））とが入力される。更に、初期化処理として変数ｉにＫが代入される。更に、変数ｅに１が代入される。初期化処理の後に、処理はステップＳ２０１に進む。
【００４５】
ステップＳ２０１において、ｉが正値であるか否かが判定される。ｉが正値であれば処理はステップＳ２０２に進み、そうでなければ処理はステップＳ２０５に進む。ステップＳ２０５において、数式（１）を満たすことが確認済みのパリティ検査行列Ｈが生成されているので、これが出力され、処理は終了する。
【００４６】
ステップＳ２０２において、ｅがＤ（i）未満であるか否かが判定される。ｅがＤ（i）未満であれば処理はステップＳ２０３に進み、そうでなければ処理はステップＳ２０４に進む。
【００４７】
ステップＳ２０３において、ＰＥＧ（Ｐｒｏｇｒｅｓｓｉｖｅ  Ｅｄｇｅ  Ｇｒｏｗｔｈ）などのアルゴリズムを用いて多項式ｈｊ，ｉ（ｘ）が決定される。ＰＥＧの詳細は非特許文献２に記載されているので、その詳細は省略される。更に、ｅが１だけインクリメント（ｅ＝ｅ＋１）され、処理はステップＳ２０２に戻る。
【００４８】
ステップＳ２０４において、パリティ検査行列の（第ｉ列から第Ｋ列までの）候補であるＨ｛ｉ，・・・，Ｋ｝が数式（１）を満足するか否かが判定される。Ｈ｛ｉ，・・・，Ｋ｝が数式（１）を満足すれば処理はステップＳ２０６に進み、そうでなければ処理はステップＳ２０７に進む。
【００４９】
ステップＳ２０６において、ｉが１だけデクリメント（ｉ＝ｉ−１）され、処理はステップＳ２０１に戻る。ステップＳ２０７において、ｅに１が代入され、処理はステップＳ２０３に戻る。
【００５０】
図４のアルゴリズムによれば、パリティ検査行列（＝Ｈ）の第Ｋ列から第１列まで順番に、対象列（第ｉ列）の多項式要素の候補が作成され、当該候補に基づくパリティ検査行列が数式（１）を満足するか否かが確認され、数式（１）が満足される場合には対象列（第ｉ列）の多項式要素が確定し、そうでない場合には対象列の多項式要素の候補が改めて作成される。尚、パリティ検査行列（＝Ｈ）の生成方法は、図４の例に限られず、生成されるパリティ検査行列（＝Ｈ）が数式（１）を満足することを確認できるものであればよい。
【００５１】
以上説明したように、第１の実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、ＣＲＣ符号と組み合わせて、数式（１）を満足するＬＤＰＣ符号のパリティ検査行列に基づいてＬＤＰＣ符号化及びＬＤＰＣ復号を実施する。従って、この誤り訂正符号化装置及び誤り訂正復号装置によれば、低重みＬＤＰＣ符号語のデータ部がＣＲＣ符号語に一致しないので、ＬＤＰＣ復号において誤訂正が生じたとしてもＣＲＣ検査によって高確率に誤り検出できる。
【００５２】
上記各実施形態の処理は、汎用のコンピュータを基本ハードウェアとして用いることで実現可能である。上記各実施形態の処理を実現するプログラムは、コンピュータで読み取り可能な記憶媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記憶媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスク（ＣＤ−ＲＯＭ、ＣＤ−Ｒ、ＤＶＤ等）、光磁気ディスク（ＭＯ等）、半導体メモリなどである。記憶媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ（サーバ）上に格納し、ネットワーク経由でコンピュータ（クライアント）にダウンロードさせてもよい。
【００５３】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【００５４】
１００・・・不揮発性半導体記憶システム
１０１・・・第１の誤り訂正符号化部
１０２・・・ＣＲＣ符号化部
１０３・・・ＬＤＰＣ符号化部
１０４・・・不揮発性半導体メモリ
１０５・・・ＬＤＰＣ復号部
１０６・・・ＣＲＣ検査部
１０７・・・制御部
１０８・・・バッファメモリ
１０９・・・第１の誤り訂正復号部
【図１】
0005509165.tif 000013
【図２】
0005509165.tif 000014
【図３】
0005509165.tif 000015
【図４】
0005509165.tif 000016