JP5509165B2 - 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法 - Google Patents

誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法 Download PDF

Info

Publication number
JP5509165B2
JP5509165B2 JP2011182633A JP2011182633A JP5509165B2 JP 5509165 B2 JP5509165 B2 JP 5509165B2 JP 2011182633 A JP2011182633 A JP 2011182633A JP 2011182633 A JP2011182633 A JP 2011182633A JP 5509165 B2 JP5509165 B2 JP 5509165B2
Authority
JP
Japan
Prior art keywords
data
parity check
check matrix
error correction
ldpc
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
JP2011182633A
Other languages
English (en)
Other versions
JP2013046222A (ja
Inventor
浩典 内川
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Toshiba Corp
Original Assignee
Toshiba Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Toshiba Corp filed Critical Toshiba Corp
Priority to JP2011182633A priority Critical patent/JP5509165B2/ja
Priority to US13/406,808 priority patent/US8739005B2/en
Publication of JP2013046222A publication Critical patent/JP2013046222A/ja
Application granted granted Critical
Publication of JP5509165B2 publication Critical patent/JP5509165B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/033Theoretical methods to calculate these checking codes
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1148Structural properties of the code parity-check or generator matrix
    • H03M13/116Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2906Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes using block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Physics & Mathematics (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Probability & Statistics with Applications (AREA)
  • Mathematical Physics (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Error Detection And Correction (AREA)

Description

実施形態は、誤り訂正符号に関する。
誤り訂正符号の一種として、LDPC(Low Density Parity Check)符号が知られている。LDPC符号は、強力な誤り訂正能力を持つ。ところが、LDPC符号は、その符号語間の最小距離が比較的小さい。従って、復号される符号データに含まれる誤りが少量であっても、ある程度の確率で誤訂正が生じるおそれがある。誤訂正とは、符号データに含まれる誤りが正しく検出されず、結果的に誤った符号語に訂正されることを意味する。このように、LDPC復号器から出力される復号データは、誤りを含む可能性がある。
実施形態は、誤り検出率の向上を目的とする。
実施形態によれば、誤り訂正符号化装置は、線形符号化部と、LDPC符号化部とを含む。線形符号化部は、生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、入力データに生成多項式を適用して線形符号化データを得る。LDPC符号化部は、LDPC符号のパリティ検査行列に対応する生成行列を線形符号化データに適用し、出力データを得る。パリティ検査行列は、明細書中の数式(1)を満たす。
第1の実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置を含む不揮発性半導体記憶システムを例示するブロック図。 第1の実施形態に係る誤り訂正符号化装置内の各機能部において生成されるデータの説明図。 LDPC符号のパリティ検査行列及び符号語についてのバイナリ表現及び多項式表現の説明図。 第1の実施形態に係るパリティ検査行列の生成方法を例示するフローチャート。
以下、図面を参照しながら実施形態の説明が述べられる。尚、以降の説明において、「復号」及び「訂正」という用語がしばしば使用されるが、両者は概ね同じ意味である。具体的には、いずれも、正しい符号フレーム(符号データ)を推定すること、即ち、誤り訂正と概ね同じ意味である。
(第1の実施形態)
第1の実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、例えば記憶システム、通信システムなどに組み込まれる。以降の説明は、簡単化のために、本実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置が、不揮発性半導体記憶システムに組み込まれることを前提に述べられる。但し、本実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、通信システム、光記録システム、磁気記録システムなど、誤り訂正符号を利用可能なあらゆるシステムに適用されてよい。
本実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、例えば図1に示される不揮発性半導体記憶システム100に組み込まれる。図1の不揮発性半導体記憶システム100は、第1の誤り訂正符号化部101と、CRC(Cyclic Redundancy Check)符号化部102と、LDPC符号化部103と、不揮発性半導体メモリ104と、LDPC復号部105と、CRC検査部106と、制御部107と、バッファメモリ108と、第1の誤り訂正復号部109とを含む。
ここで、本実施形態に係る誤り訂正符号化装置は、例えば、第1の誤り訂正符号化部101と、CRC符号化部102と、LDPC符号化部103とを含む。また、本実施形態に係る誤り訂正復号装置は、LDPC復号部105と、CRC検査部106と、制御部107と、バッファメモリ108と、第1の誤り訂正復号部109とを含む。
第1の誤り訂正符号化部101は、図2に示されるように、不揮発性半導体記憶システム100の入力データに第1の誤り訂正符号に基づくパリティデータを付加し、第1のデータを得る。第1の誤り訂正符号化部101は、第1のデータをCRC符号化部102へと出力する。
尚、第1の誤り訂正符号は、任意の方式の誤り訂正符号であってよい。第1の誤り訂正符号は、後述されるLDPC復号部105の復号失敗時(例えばエラーフロア発生時)、或いは、CRC検査部106による誤り検出時に、正しいデータを復号するために利用される。但し、第1の誤り訂正符号は必須でなく、必要に応じて第1の誤り訂正符号化部101及び第1の誤り訂正復号部109が除去されてよい。
CRC符号化部102は、図2に示されるように、第1のデータを分割し、M組の第1のサブデータ1,・・・,Mを得る。尚、図2はM=2である場合を示しているが、分割は必須でない。即ち、M=1も許容されるので、M≧1である。また、図2において、第1のデータのうちデータ部及びパリティデータ部の両方が等分割されているが、これらの一方または両方が不等分割されてもよい。或いは、データ部及びパリティデータ部を区別することなく、第1のデータが先頭から順番に等分割または不等分割されてもよい。以降の説明は、簡単化のために、図2の分割方式を前提とする。係る分割方式は、一般的な不揮発性半導体システムにおける分割方式に合致している。
更に、CRC符号化部102は、図2に示されるように、M組の第1のサブデータ1,・・・,MにM組のCRCパリティデータ1,・・・,Mを夫々付加し、M組の第2のデータ1,・・・,Mを得る。CRC符号化部102は、典型的には、第1のサブデータを生成多項式によって除算し、その剰余をパリティデータとして付加する。CRC符号化部102は、M組の第2のデータ1,・・・,MをLDPC符号化部103へと出力する。
尚、CRC符号化部102は、生成多項式を用いた除算によってパリティ検査を実施可能な任意の線形符号方式をサポートする線形符号化部に置き換えられてよい。この線形符号方式は、少なくとも誤り検出能力を持つが、更に誤り訂正能力を持ってもよい。具体的には、この線形符号方式は、ハミング符号、BCH符号、Reed−Solomon符号などであってよい。
LDPC符号化部103は、図2に示されるように、M組の第2のデータ1,・・・,MにM組のLDPC符号のパリティデータ1,・・・,Mを夫々付加し、M組の第3のデータ1,・・・,Mを得る。LDPC符号化部103は、典型的には、後述されるパリティ検査行列に対応するLDPC生成行列を第2のデータに乗算し、第3のデータを得る。パリティ検査行列の詳細は後述される。LDPC符号化部103は、M組の第3のデータ1,・・・,Mを不揮発性半導体メモリ104へと出力する。
不揮発性半導体メモリ104は、例えば複数のメモリセルがNAND型に接続されたアレイ構造を有するフラッシュメモリによって実現される。不揮発性半導体メモリ104は、メモリセルにM組の第3のデータ1,・・・,Mを記録する。具体的には、不揮発性半導体メモリ104は、ページデータ単位でデータを読み書きできる。ページデータの容量は、フラッシュメモリの構成に依存するものの、概ね数KB程度である。1単位のページデータは、図2に示されるように、M組の第3のデータ1,・・・,Mの少なくとも全てを包含する。尚、図1において不揮発性半導体記憶システム100の構成が簡略化されて描かれているが、不揮発性半導体記憶システム100はフラッシュメモリへのデータの書き込み、読み込みに必要な種々の機能部(図示されない)を当然に備える。
各メモリセルには少なくとも2以上の閾値電圧が設定されており、この書き込み閾値電圧の数に応じて1ビット以上のデータを記憶することができる。例えば、1つのメモリセルに2ビットが記憶される場合には、2ビット値:「11」,「10」,「01」,「00」が4つの閾値電圧に夫々マッピングされる。尚、メモリセルの閾値電圧は、隣接セルとの容量結合などの理由により、揺らぐことがある。そして、この閾値電圧の揺らぎは、読み出しデータの誤りを引き起こす一因となる。
以上、データの書き込みに関する構成要素とその動作が説明された。以下、データの読み出しに関する構成要素とその動作が説明される。
不揮発性半導体メモリ104からM組の第4のデータ1,・・・,Mが読み出され、LDPC復号部105へと出力される。前述の通り、M組の第4のデータ1,・・・,Mは誤りを含み得る。即ち、M組の第4のデータ1,・・・,Mは、M組の第3のデータ1,・・・,Mと必ずしも一致しない。
LDPC復号部105は、M組の第4のデータ1,・・・,Mに対してLDPC復号処理を実施する。具体的には、LDPC復号部105は、後述されるパリティ検査行列を用いた繰り返し復号アルゴリズムを実施する。繰り返し復号アルゴリズムは、例えば、sum−productアルゴリズム、min−sumアルゴリズムなどである。LDPC復号部105は、繰り返し復号の各試行において、第4のデータの一時推定語にパリティ検査行列を乗算してパリティ検査を実施する。繰り返し復号の過程においてLDPC符号語が得られた場合(即ち、復号が成功した場合)に、当該LDPC符号語からLDPC符号のパリティデータを除去したM組の第5のデータ1,・・・,MをCRC検査部106へと出力する。M組の第5のデータ1,・・・,Mは、LDPC符号語のデータ部に相当するが、当該LDPC符号語は正しく訂正されたLDPC符号語であるかもしれないし、誤訂正されたLDPC符号語であるかもしれない。
一方、LDPC復号部105は、繰り返し復号の試行回数が最大値に達してもLDPC符号語を得られない(即ち、復号に失敗する)こともある。係る場合の扱いは、特に制限されないが、例えばCRC検査を省略して第1の誤り訂正符号に基づく復号を実施することが想定できる。
CRC検査部106は、M組の第5のデータ1,・・・,MのCRC検査を行う。具体的には、CRC検査部106は、第5のデータを生成多項式で除算し、剰余が零であるか否かを検査する。剰余が零であれば第5のデータから誤りが検出されず、剰余が非零であれば第5のデータから誤りが検出される。CRC検査部106は、M組の第5のデータ1,・・・,Mの各々の検査結果(即ち、誤りが検出されたか否か)1,・・・,Mを制御部107に通知する。また、CRC検査部106は、M組の第5のデータ1,・・・,MからCRCパリティデータを除去し、M組の第6のデータ1,・・・,Mを得る。CRC検査部106は、M組の第6のデータ1,・・・,Mをバッファメモリ108に保存する。更に、CRC検査部106は、誤りが検出されなかった第6のデータについて、第1の誤り訂正符号のパリティサブデータを除去して直接外部に出力してもよい。係る措置によれば、誤りのない第6のデータについて、第1の誤り訂正復号部109による復号処理を省略できるので、データ出力のスループットが向上する。
制御部107は、CRC検査部106からの検査結果1,・・・,Mを参照し、少なくとも1つの第6のデータについて誤りが検出されたか否かを確認する。少なくとも1つの第6のデータについて誤りが検出されているならば、制御部107はバッファメモリ108にM組の第6のデータ1,・・・,Mの出力指示を与えると共に、第1の誤り訂正復号部109に復号処理の実施指示を与える。更に、制御部107は、CRC検査部106からの検査結果1,・・・,Mを第1の誤り訂正復号部109に通知してもよい。係る措置によれば、第1の誤り訂正復号部109は誤りが含まれない第6のデータを識別できるので、不必要な復号処理を省略できる。即ち、第6のデータ1,・・・,Mの全体を対象とする場合に比べて、第1の誤り訂正復号部109による復号処理を高速化できる。
バッファメモリ108は、CRC検査部106からのM組の第6のデータ1,・・・,Mを保存する。バッファメモリ108は、制御部107から出力指示を与えられると、これらM組の第6のデータ1,・・・,Mを結合した第7のデータを第1の誤り訂正復号部109へと出力する。
第1の誤り訂正復号部109は、制御部107から復号処理の実施指示を受けると、バッファメモリからの第7のデータに第1の誤り訂正符号に基づく復号処理を行う。尚、前述の通り、第1の誤り訂正復号部109は、制御部107から通知されるCRC検査結果1,・・・,Mを利用して効率的な復号処理を行ってよい。第1の誤り訂正復号部109は、第7のデータの復号処理において符号語を得る(即ち、誤りが訂正される)と、当該符号語から第1の誤り訂正符号のパリティデータを除去し、それから外部に出力する。他方、復号処理の結果、符号語が得られなかった(誤りが訂正されなかった)場合の扱いは特に制限されない。例えば、誤りを含むデータが外部に出力されてもよいし、されなくてもよい。いずれにせよ、誤りが訂正されなったことを確認可能な情報が外部に出力されることが望ましい。
以上説明されたように、不揮発性半導体記憶システム100において、LDPC復号部105及びCRC検査部106によって2重の誤り検出が実施される。即ち、誤訂正されたLDPC符号語を検出するために、LDPC符号にCRC符号(或いはその他の外符号であってもよい)が組み合わせられている。CRC符号を利用すれば、誤訂正されたLDPC復号データに含まれる誤りを検出できる可能性がある。
しかしながら、LDPC符号の設計次第では、誤訂正に基づくLDPC復号データが偶然にもCRC符号語に一致するおそれがある。この場合に、外符号が機能せず、誤りは検出されない。即ち、CRC符号をLDPC符号と単純に組み合わせたとしても、システム(例えば、LDPC符号を利用する記憶システム、通信システムなど)全体の誤り検出率を向上させることは容易でない。例えば、LDPC復号部105によって誤訂正された符号語に基づく第5のデータがCRC符号語に一致していれば、CRC検査部106は機能しないので当該第5のデータに含まれる誤りを検出できない。
そこで、本実施形態に係る誤り訂正復号装置は、後述される数式(1)を満たすLDPC符号のパリティ検査行列を使用する。また、本実施形態に係る誤り訂正符号化装置は、このパリティ検査行列に対応するLDPC符号生成行列を使用する。
一般に、正しいLDPC符号語(便宜的に、第1のLDPC符号語と称される)と誤訂正されたLDPC符号語(便宜的に、第2のLDPC符号語と称される)との間の(ハミング)距離は小さくなり易い傾向にある。また、LDPC符号は線形符号であるから、符号語間の距離もまたLDPC符号語(便宜的に、第3のLDPC符号語と称される)の1つである。符号語間の距離が小さいほど誤訂正は生じ易いといえるので、第3のLDPC符号語が少数の「1」及び多数の「0」によって構成される低重み語になり易い傾向にあることは明らかである。ここで、第1のLDPC符号語が「0」のみで構成されると仮定すると、第2のLDPC符号語及び第3のLDPC符号語は一致する。即ち、係る仮定の下では第2のLDPC符号語は低重み語になり易い傾向にある。この低重み語からLDPC符号のパリティデータを除去して得られる第5のデータ(これは、低重みの符号系列であるといえる)がCRC符号語と一致しない(CRC検査を満たさない)ようにLDPC符号を設計しておけば、CRC検査部106は「0」のみで構成されるLDPC符号語の誤訂正に基づく第5のデータの誤りを検出できる。
更に、CRC符号もまた線形符号である。即ち、任意の2つのCRC符号語間の距離もまたCRC符号語の1つに一致する。故に、係る低重みの符号系列がCRC符号語と一致しないようにすることは、任意のCRC符号語(第1のLDPC符号語からLDPCのパリティデータを除去して得られる符号系列)からの距離が当該低重みの符号系列に等しい符号系列(第2の符号語からLDPCのパリティデータを除去して得られる符号系列)がCRC符号語と一致しないようにすることを意味する。従って、低重みのLDPC符号語からLDPC符号のパリティデータを除去して得られる第5のデータをCRC符号語と一致しないようにLDPC符号を設計しておけば、CRC検査部106はLDPC復号部105の誤訂正を高精度に検出可能である。そして、係る条件を満足するためには、LDPC符号のパリティ検査行列は下記数式(1)を満足する必要がある。
Figure 0005509165
上記数式(1)は、LDPC符号のパリティ検査行列(=H)に基づいて定義される低重みLDPC符号語のうちのデータ部(=d(x))がCRC検査部106においてCRCエラーとなる条件を表している。即ち、LDPC符号のパリティ検査行列(=H)が上記数式(1)を満たすならば、誤訂正されたLDPC符号語に含まれる誤りはCRC検査部106によって高確率に検出される。
パリティ検査行列(=H)は、より詳細には、複数のq行q列のブロックを組み合わせて形成される。各ブロックは、q行q列の巡回シフト行列(単位行列を巡回シフトすることによって得られる行列)またはq行q列の零行列である。係るパリティ検査行列(=H)に基づくLDPC符号は、準巡回LDPC符号と呼ばれる。各ブロックは、バイナリ表現に限られず、q−1次の多項式で表現することも可能である。例えば、各ブロックの第1行第1列の要素をx=1の係数とし、第q行第1列の要素をxq−1の係数とすれば多項式表現が可能である。従って、パリティ検査行列(=H)は、下記の数式(2)に示されるように、q−1次多項式を要素として持つJ行K列の行列として表現できる。
Figure 0005509165
更に、符号語(=c)も同様に、q列単位でq−1次の多項式で表現できる。具体的には、q列ごとに列インデックスの小さい要素から順にx,・・・,xq−1の係数に割り当てることによって多項式表現は可能である。従って、符号語(=c)は、下記の数式(3)に示されるように、K個のq−1次多項式を要素として持つ行ベクトルとして表現できる。
Figure 0005509165
一例として、q=3、J=2、K=3の場合における符号語(=c)及びパリティ検査行列(=H)の多項式表現及びバイナリ表現が図3に示されている。尚、符号語の多項式表現は、図3の例に限られず、例えば多項式の順序を反転させてd’(x)=xd(x−1)とすることも可能である。
更に、下記の数式(4)に示されるように、LDPC符号のパリティ検査を多項式で表現することもできる。下記の数式(4)は、第j行のパリティ検査を示す。
Figure 0005509165
多項式ベクトル(=c)は、パリティ検査行列(=H)によって定義される符号語であるので、s(x)は全て(j=1,・・・,J)零となる。即ち、上記数式(4)においてc(x)として一時推定語の各要素の多項式表現を与えた場合に全てのjについてs(x)=0であれば、当該一時推定語はLDPC符号語と判定される。一方、少なくとも1つのjについてs(x)=0でなければ、当該一時推定語はLDPC符号語でないと判定される。
低重みの符号系列は、下記数式(5)によって定義できる。尚、下記数式(5)によって低重み語を定義できることは、非特許文献1を参照すれば理解可能であるので、その詳細は省略される。
Figure 0005509165
この低重み符号系列は、以下に証明されるように、LDPC復号部105におけるパリティ検査を満たす低重みLDPC符号である。上記数式(4)及び数式(5)に基づいて、この低重み符号系列のパリティ検査は下記数式(6)によって表現できる。
Figure 0005509165
ここで、関数perm()は、前述の通り行列式の計算を意味するので、上記数式(6)は、下記の行列の余因子展開とみなすことができる。
Figure 0005509165
上記行列は、その第1行と第j+1行とが必ず一致するので、明らかにフルランクでない。即ち、行列式は必ず零となり、全てのjについてs(x)=0である。従って、上記数式(5)に示される低重み符号系列は、LDPC復号部105におけるパリティ検査を満たす低重みLDPC符号語である。そして、前述の通り、この低重みLDPC符号語のうちのデータ部から、CRC検査部106は誤りを検出できる。
以下、図4を用いて数式(1)を満足するLDPC符号のパリティ検査行列の生成方法が説明される。誤り符号化装置及び誤り復号装置の設計時に係るアルゴリズムを適用することによって、LDPC符号のパリティ検査行列が数式(1)を満足することを保証できる。尚、図4のアルゴリズムにおいて、簡単化のために、列インデックスが小さいほど列次数が大きい(換言すれば、列インデックスが大きいほど列次数が小さい)パリティ検査行列(=H)が生成対象とされる。
まず、種々のパラメータが入力される。具体的には、パリティ検査行列(=H)の行数(=J)及び列数(=K)と、第k列に含まれる非零ブロックの総数を表す非零ブロック分布(=D(k))とが入力される。更に、初期化処理として変数iにKが代入される。更に、変数eに1が代入される。初期化処理の後に、処理はステップS201に進む。
ステップS201において、iが正値であるか否かが判定される。iが正値であれば処理はステップS202に進み、そうでなければ処理はステップS205に進む。ステップS205において、数式(1)を満たすことが確認済みのパリティ検査行列Hが生成されているので、これが出力され、処理は終了する。
ステップS202において、eがD(i)未満であるか否かが判定される。eがD(i)未満であれば処理はステップS203に進み、そうでなければ処理はステップS204に進む。
ステップS203において、PEG(Progressive Edge Growth)などのアルゴリズムを用いて多項式hj,i(x)が決定される。PEGの詳細は非特許文献2に記載されているので、その詳細は省略される。更に、eが1だけインクリメント(e=e+1)され、処理はステップS202に戻る。
ステップS204において、パリティ検査行列の(第i列から第K列までの)候補であるH{i,・・・,K}が数式(1)を満足するか否かが判定される。H{i,・・・,K}が数式(1)を満足すれば処理はステップS206に進み、そうでなければ処理はステップS207に進む。
ステップS206において、iが1だけデクリメント(i=i−1)され、処理はステップS201に戻る。ステップS207において、eに1が代入され、処理はステップS203に戻る。
図4のアルゴリズムによれば、パリティ検査行列(=H)の第K列から第1列まで順番に、対象列(第i列)の多項式要素の候補が作成され、当該候補に基づくパリティ検査行列が数式(1)を満足するか否かが確認され、数式(1)が満足される場合には対象列(第i列)の多項式要素が確定し、そうでない場合には対象列の多項式要素の候補が改めて作成される。尚、パリティ検査行列(=H)の生成方法は、図4の例に限られず、生成されるパリティ検査行列(=H)が数式(1)を満足することを確認できるものであればよい。
以上説明したように、第1の実施形態に係る誤り訂正符号化装置及び誤り訂正復号装置は、CRC符号と組み合わせて、数式(1)を満足するLDPC符号のパリティ検査行列に基づいてLDPC符号化及びLDPC復号を実施する。従って、この誤り訂正符号化装置及び誤り訂正復号装置によれば、低重みLDPC符号語のデータ部がCRC符号語に一致しないので、LDPC復号において誤訂正が生じたとしてもCRC検査によって高確率に誤り検出できる。
上記各実施形態の処理は、汎用のコンピュータを基本ハードウェアとして用いることで実現可能である。上記各実施形態の処理を実現するプログラムは、コンピュータで読み取り可能な記憶媒体に格納して提供されてもよい。プログラムは、インストール可能な形式のファイルまたは実行可能な形式のファイルとして記憶媒体に記憶される。記憶媒体としては、磁気ディスク、光ディスク(CD−ROM、CD−R、DVD等)、光磁気ディスク(MO等)、半導体メモリなどである。記憶媒体は、プログラムを記憶でき、かつ、コンピュータが読み取り可能であれば、何れであってもよい。また、上記各実施形態の処理を実現するプログラムを、インターネットなどのネットワークに接続されたコンピュータ(サーバ)上に格納し、ネットワーク経由でコンピュータ(クライアント)にダウンロードさせてもよい。
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
100・・・不揮発性半導体記憶システム
101・・・第1の誤り訂正符号化部
102・・・CRC符号化部
103・・・LDPC符号化部
104・・・不揮発性半導体メモリ
105・・・LDPC復号部
106・・・CRC検査部
107・・・制御部
108・・・バッファメモリ
109・・・第1の誤り訂正復号部

Claims (6)

  1. 生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、入力データに前記生成多項式を適用して線形符号化データを得る線形符号化部と、
    LDPC符号のパリティ検査行列に対応する生成行列を前記線形符号化データに適用し、出力データを得るLDPC符号化部と
    を具備し、
    前記パリティ検査行列は、数式:
    Figure 0005509165
    を満たす、
    誤り訂正符号化装置。
  2. LDPC符号のパリティ検査行列を用いて入力データを復号し、LDPC復号データを得るLDPC復号部と、
    生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、前記LDPC復号データに前記生成多項式を適用して誤りを検査し、出力データを得る誤り検査部と
    を具備し、
    前記パリティ検査行列は、数式:
    Figure 0005509165
    を満たす、
    誤り訂正復号装置。
  3. 生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式をサポートし、第1のデータに前記生成多項式を適用して第2のデータを得る線形符号化部と、
    LDPC符号のパリティ検査行列に対応する生成行列を前記第2のデータに適用し、第3のデータを得るLDPC符号化部と、
    前記第3のデータが記憶される不揮発性半導体メモリと、
    前記パリティ検査行列を用いて、前記不揮発性半導体メモリから前記第3のデータを読み出すことによって得られた第4のデータを復号し、第5のデータを得るLDPC復号部と、
    前記線形符号方式をサポートし、前記第5のデータに前記生成多項式を適用して誤りを検査し、第6のデータを得る検査部と
    を具備し、
    前記パリティ検査行列は、数式:
    Figure 0005509165
    を満たす、
    不揮発性半導体記憶システム。
  4. 第1の誤り訂正符号方式に基づいて入力データを符号化して前記第1のデータを得る第1の誤り訂正符号化部と、
    前記第1の誤り訂正符号方式に基づいて前記第6のデータを復号して出力データを得る第1の誤り訂正復号部と
    を更に具備する、
    請求項3の不揮発性半導体記憶システム。
  5. 前記パリティ検査行列は、設計時において前記数式を満足することが確認されている、請求項3の不揮発性半導体記憶システム。
  6. 生成多項式を用いた除算によってパリティ検査を実施可能な線形符号方式と組み合わせて利用されるLDPC符号のパリティ検査行列の候補を作成することと、
    前記パリティ検査行列の候補が、数式:
    Figure 0005509165
    を満足するか否かを判定することと、
    前記パリティ検査行列の候補が前記数式を満足するならば、当該パリティ検査行列の候補をパリティ検査行列と決定することと
    を具備し、
    前記パリティ検査行列の候補が前記数式を満足するまで、前記パリティ検査行列の候補を作成することと、前記パリティ検査行列の候補が前記数式を満足するか否かを判定することとが繰り返される、
    パリティ検査行列生成方法。
JP2011182633A 2011-08-24 2011-08-24 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法 Active JP5509165B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2011182633A JP5509165B2 (ja) 2011-08-24 2011-08-24 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法
US13/406,808 US8739005B2 (en) 2011-08-24 2012-02-28 Error correction encoding apparatus, error correction decoding apparatus, nonvolatile semiconductor memory system, and parity check matrix generation method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011182633A JP5509165B2 (ja) 2011-08-24 2011-08-24 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法

Publications (2)

Publication Number Publication Date
JP2013046222A JP2013046222A (ja) 2013-03-04
JP5509165B2 true JP5509165B2 (ja) 2014-06-04

Family

ID=47745461

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011182633A Active JP5509165B2 (ja) 2011-08-24 2011-08-24 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法

Country Status (2)

Country Link
US (1) US8739005B2 (ja)
JP (1) JP5509165B2 (ja)

Families Citing this family (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8566684B1 (en) * 2011-05-26 2013-10-22 Sandia Corporation Decoding and optimized implementation of SECDED codes over GF(q)
US8898539B2 (en) * 2012-09-12 2014-11-25 Lsi Corporation Correcting errors in miscorrected codewords using list decoding
TWI536749B (zh) * 2013-12-09 2016-06-01 群聯電子股份有限公司 解碼方法、記憶體儲存裝置與記憶體控制電路單元
JP2016126813A (ja) * 2015-01-08 2016-07-11 マイクロン テクノロジー, インク. 半導体装置
CN105227189B (zh) * 2015-09-24 2019-01-01 电子科技大学 分段crc辅助的极化码编译码方法
CN106788456B (zh) * 2016-12-14 2019-09-03 电子科技大学 一种极化码编译码方法
EP3596830A4 (en) * 2017-03-15 2020-11-18 Nokia Technologies Oy EARLY TERMINATION WITH DISTRIBUTED CRC POLAR CODES
CN108170556A (zh) * 2018-01-18 2018-06-15 江苏华存电子科技有限公司 纠错码生成与校验矩阵的保护方法及矩阵存储/产生装置
CN109981112B (zh) * 2018-09-26 2022-11-18 东南大学 一种部分循环冗余校验辅助的排序统计译码方法
CN109729105A (zh) * 2019-03-26 2019-05-07 黄策 一种数据包装方法
CN112865809A (zh) * 2019-11-27 2021-05-28 量子芯云(北京)微电子科技有限公司 Ecc超强数据纠错方法
WO2021184246A1 (zh) * 2020-03-18 2021-09-23 黄策 一种数据包装方法
EP4128594A1 (en) * 2020-03-23 2023-02-08 Telefonaktiebolaget LM ERICSSON (PUBL) Verifying data integrity in a receiver
CN115118287A (zh) * 2021-03-18 2022-09-27 华为技术有限公司 用于编解码的方法、设备和系统
CN115037414B (zh) * 2022-05-31 2023-12-22 江苏屹信航天科技有限公司 基于crc的纠错解码的方法、装置、终端
US11881871B1 (en) * 2022-09-14 2024-01-23 SK Hynix Inc. On-the-fly scaling factor change for irregular LDPC codes

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
ES2282671T3 (es) * 2002-07-03 2007-10-16 The Directv Group, Inc. Codificacion de codigos de comprobacion de paridad de baja densidad (ldpc) utilizando una matriz de comprobacion de paridad estructurada.
JP2007288721A (ja) 2006-04-20 2007-11-01 Mitsubishi Electric Corp 通信装置および誤り検出方法
US8108758B2 (en) * 2006-09-22 2012-01-31 Mcgill University Stochastic decoding of LDPC codes
US7971127B2 (en) * 2007-03-31 2011-06-28 Sandisk Technologies Inc. Guided simulated annealing in non-volatile memory error correction control
US7966550B2 (en) * 2007-03-31 2011-06-21 Sandisk Technologies Inc. Soft bit data transmission for error correction control in non-volatile memory
JP2009271956A (ja) * 2008-04-30 2009-11-19 Toshiba Corp データ復号装置,データ再生装置,およびデータ復号方法

Also Published As

Publication number Publication date
US8739005B2 (en) 2014-05-27
JP2013046222A (ja) 2013-03-04
US20130055050A1 (en) 2013-02-28

Similar Documents

Publication Publication Date Title
JP5509165B2 (ja) 誤り訂正符号化装置、誤り訂正復号装置、不揮発性半導体記憶システム及びパリティ検査行列生成方法
TWI525634B (zh) Controller
KR101264476B1 (ko) 증가된 용량의 이종의 스토리지 엘리먼트들
KR102274328B1 (ko) 체크 노드 계산유닛을 관리하는 방법, 장치, 및 상기 방법을 실행하기 위한 소프트웨어
US9391641B2 (en) Syndrome tables for decoding turbo-product codes
EP1798861B1 (en) LDPC encoding through decoding algorithm
US8751895B2 (en) Semiconductor memory device and decoding method
US10090860B2 (en) Memory system using integrated parallel interleaved concatenation
US10574272B2 (en) Memory system
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
JP6046403B2 (ja) 誤り訂正符号の符号化方法及び復号方法
Kim et al. Quasi-primitive block-wise concatenated BCH codes with collaborative decoding for NAND flash memories
US9015548B2 (en) Error detection correction method and semiconductor memory apparatus
JP2009271852A (ja) 半導体記憶装置
JP7237674B2 (ja) メモリシステム
Spinner et al. Soft input decoder for high‐rate generalised concatenated codes
JP2019160014A (ja) メモリシステム
Gopalan et al. List decoding tensor products and interleaved codes
JP2021047712A (ja) メモリシステム
JP5665725B2 (ja) 符号化装置及びこれを用いた半導体メモリシステム
KR20100042589A (ko) 이진 데이터의 오류 정정 및 오류 검출 방법
JP2020046823A (ja) メモリシステム
KR101496052B1 (ko) 블록 단위 연접 bch 부호 성능 개선 및 오류마루 경감을 위해 순환 자리 이동을 활용하는 복호 기법 및 회로
JP2021141369A (ja) メモリシステム
KR101154923B1 (ko) 비씨에이치 디코더, 이를 포함하는 메모리 시스템 및 비씨에이치 디코딩 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20130911

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131205

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131212

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131219

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20131226

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20140109

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140220

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20140225

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140324

R151 Written notification of patent or utility model registration

Ref document number: 5509165

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313111

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350