JP4282558B2 - 低密度パリティチェック符号復号器及び方法 - Google Patents

低密度パリティチェック符号復号器及び方法 Download PDF

Info

Publication number
JP4282558B2
JP4282558B2 JP2004193767A JP2004193767A JP4282558B2 JP 4282558 B2 JP4282558 B2 JP 4282558B2 JP 2004193767 A JP2004193767 A JP 2004193767A JP 2004193767 A JP2004193767 A JP 2004193767A JP 4282558 B2 JP4282558 B2 JP 4282558B2
Authority
JP
Japan
Prior art keywords
parity
bit
row
check matrix
parity check
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.)
Expired - Fee Related
Application number
JP2004193767A
Other languages
English (en)
Other versions
JP2006019889A (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 JP2004193767A priority Critical patent/JP4282558B2/ja
Priority to TW094120025A priority patent/TWI261973B/zh
Priority to EP05105370A priority patent/EP1612948B1/en
Priority to DE602005010150T priority patent/DE602005010150D1/de
Priority to US11/168,329 priority patent/US7500168B2/en
Priority to CNA2005100818425A priority patent/CN1716786A/zh
Priority to KR1020050057667A priority patent/KR100738864B1/ko
Publication of JP2006019889A publication Critical patent/JP2006019889A/ja
Application granted granted Critical
Publication of JP4282558B2 publication Critical patent/JP4282558B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

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/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
    • 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
    • H03M13/1168Quasi-cyclic LDPC [QC-LDPC] codes, i.e. the parity-check matrix being composed of permutation or circulant sub-matrices wherein the sub-matrices have column and row weights greater than one, e.g. multi-diagonal 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/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
    • 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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/1137Partly parallel processing, i.e. sub-blocks or sub-groups of nodes being processed in parallel
    • 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/1105Decoding
    • H03M13/1131Scheduling of bit node or check node processing
    • H03M13/114Shuffled, staggered, layered or turbo decoding schedules
    • 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

Landscapes

  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Mathematical Physics (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Detection And Correction Of Errors (AREA)

Description

本発明は、低密度パリティチェック(Low Density Parity Check)符号を復号するための低密度パリティチェック符号復号器及び方法に関する。
最近、誤り検査訂正符号として、低密度パリティチェック符号(以下、LDPC符号と称する)が注目されている。LDPC符号を復号する技術として、メッセージパッシングアルゴリズム(Message-Passing Algorithm)が知られている(例えば、非特許文献1参照)。メッセージパッシングアルゴリズムでは、LDPC符号を復号するために、当該LDPC符号における検査行列(パリティ検査行列)の行毎のビット更新と、列毎のパリティ更新とが反復実行される。
アンドリュー・ジェイ・ブランクスビー(Andrew J. Blanksby),クリス・ジェイ・ホーランド(Chris J. Howland),「A 690-mW 1-Gb/s 1024-b, rate-1/2 低密度パリティチェック符号復号器(A 690-mW 1-Gb/s 1024-b, Rate-1/2 Low-Density Parity-Check Code Decoder)」,IEEE Journal of Solid-State Circuits, Vol. 37, No. 3, March 2002 p.404-412」
メッセージパッシングアルゴリズムによりLDPC符号を復号する場合に、ビット更新とパリティ更新とは相互に依存している。このため従来技術においては、ビット更新が終了するまでパリティ更新を開始できないし、パリティ更新が終了するまでビット更新を開始できない。
本発明は上記事情を考慮してなされたものでその目的は、ビット更新とパリティ更新とをパイプラインで処理することができる低密度パリティチェック符号復号器及び方法を提供することにある。
本発明の1つの観点によれば、m×mの順列行列がr×sに配列された構造のパリティ検査行列を持つLDPC符号(低密度パリティチェック符号)を復号するLDPC符号復号器が提供される。このLDPC符号復号器は、上記パリティ検査行列の各行に対応して設けられ、当該行内の値が“1”の各列位置に対応するビット情報を順次更新するためのビット更新処理を実行するrm個のビット処理ユニットと、上記r×sに配列されたrs個の順列行列に共通に、且つ当該順列行列の各列に対応して設けられ、当該列が属する上記パリティ検査行列の列内の値が“1”の各行位置に対応するパリティ情報を更新するためのパリティ更新処理を実行するm個のパリティ処理ユニットと、上記rm個のビット処理ユニットによるビット更新処理が上記パリティ検査行列の対応する行内のm個の列位置について終了する毎に、そのm個の列位置が属するパリティ検査行列のm列に対応するパリティ更新処理を上記m個のパリティ処理ユニットにより実行させ、上記m個のパリティ処理ユニットによるパリティ更新処理が上記パリティ検査行列の最初のm列について終了した場合に、上記rm個のビット処理ユニットによる新たなビット更新処理を開始させるコントローラとを備えることを特徴とする。
このように、上記LDPC符号復号器は、LDPC符号のパリティ検査行列が、m×mの順列行列をr×sに配列した構造を適用していることを前提として構成されている。上記の構成のLDPC符号復号器においては、パリティ検査行列の各行に対応して設けられたrm個のビット処理ユニットにより、当該行内の値が“1”の各列位置に対応するビット情報を順次更新するためのビット更新処理が並行して行われる。このrm個のビット処理ユニットによるビット更新処理がパリティ検査行列の対応する行内のm個の列位置について終了すると、m個のパリティ処理ユニットによる、そのm個の列位置が属するパリティ検査行列のm列に対応するパリティ更新処理を実行することが可能となる。つまり、従来のように、ビット更新処理がパリティ検査行列の各行の全ての列位置について終了するのを待つことなく、パリティ検査行列のm個の列位置についてのビット更新が終了する毎に、更新されたビット情報を用いて、そのm個の列位置が属するパリティ検査行列のm列に対応するパリティ更新処理を実行できる。また、上記m個のパリティ処理ユニットによるパリティ更新処理がパリティ検査行列の最初のm列について終了した場合に、上記rm個のビット処理ユニットによる次のビット更新処理を開始させることが可能となる。つまり、従来のように、パリティ更新処理がパリティ検査行列の全ての列について終了するのを待つことなく、パリティ検査行列の最初のm列についてのパリティ更新が終了した段階で、更新されたパリティ情報を用いて、次の新たなビット更新処理を開始できる。換言するならば、ビット更新処理とパリティ更新処理とをパイプラインで反復させることができる。
ここで、上記rm個のビット処理ユニットの各々が、上記パリティ検査行列の対応する行内の値が“1”の各列位置に対応する対数表現されたパリティ情報の値を順次加算する加算処理により、そのパリティ情報の値の総和を計算する加算回路と、この加算回路によって計算された総和から上記パリティ検査行列の対応する行内の値が“1”の各列位置に対応する対数表現されたパリティ情報の値を減じる減算処理を実行する減算回路とを含む構成とすると良い。
この場合、減算処理による減算処理の途中(減算処理による減算処理がパリティ検査行列のm個の列位置について終了した段階)で、パリティ更新処理を開始できる。また、減算処理による減算処理中でも、パリティ検査行列の最初のm列についてのパリティ更新処理が終了した場合に、そのパリティ更新処理で更新されたパリティ情報を用いて、次のビット更新処理における加算処理を開始できる。
また、上記rm個のビット処理ユニットの各々が、上記減算回路の出力を確率演算のための特定の関数の演算値に変換する第1のルックアップテーブルを含み、上記m個のパリティ処理ユニットの各々が、その出力側に、更新されたパリティ情報の値を上記特定の関数の演算値に変換する第2のルックアップテーブルを含む構成とすると良い。このような構成においては、rm個のビット処理ユニットの各々の入力側にルックアップテーブルを設けるのに比べて、LDPC符号復号器全体で必要とするルックアップテーブルの個数を減らすことができる。
また、上記パリティ検査行列内の上記rs個の順列行列の配列r×sがr<sの関係にある場合に、上記m個のパリティ処理ユニットの各々が、上記パリティ検査行列の対応する列内の値が“1”のr個の行位置に対応するビット情報を同時に入力し、当該r個の行位置に対応するビット情報をもとに当該r個の行位置に対応するパリティ情報を同時に更新する構成とすると良い。この場合、各パリティ処理ユニットによるパリティ更新処理を短時間で実行できる。しかも、r<sであることから、各ビット処理回路を同様の構成とする場合に比べて、回路構成の大幅な複雑化を招かずに済む。
本発明によれば、ビット更新とパリティ更新とをパイプラインで処理することができ、これによりLDPC符号の復号に要する時間を大幅に短縮することができる。
以下、本発明の一実施形態につき図面を参照して説明する。
まず、本実施形態で適用される、LDPC符号のパリティ検査行列Hについて説明する。この検査行列Hは、図1に示すように、r×sの順列行列(Permuted Matrix)Ig,h(g=1,2,…r,h=1,2,…,s)のアレイ構成として表される。各順列行列Ig,hは検査行列Hのサブマトリクスであり、m×mの単位行列Iの異なる2つの行の交換、もしくは異なる2つの列の交換を、複数回数繰り返すことにより得られる行列である。この場合、検査行列Hの行数Mはrmであり、列数Nはsmである。図1の例では、r=3、s=5である。検査行列Hは、M(=rm)個のパリティノードと、N(=sm)個のビットノードを含む。この検査行列Hは、LDPC符号がN(=sm)ビットである場合を前提としている。このLDPC符号のj番目(j=1,2,…,N)のビットをxjと表現する。検査行列Hの各行は、周知のように、それぞれ1つのパリティチェック方程式であると見なすことができる。検査行列Hの第i行に対応するパリティチェック方程式は、第iパリティチェック方程式と呼ばれる。NビットのLDPC符号は、検査行列H内の全てのパリティチェック方程式、つまり第1乃至第Mパリティチェック方程式を満足しなければならない。
図1中の各順列行列Ig,hにおける斜めの線は、値が“1”のビットの位置の軌跡を表す。図1から明らかなように、検査行列Hを構成する3(r)×5(s)個の各順列行列Ig,hの各行及び各列内の“1”の個数はいずれも1である。したがって、検査行列Hの各行及び各列内の“1”の個数は、それぞれs個及びr個である。rとsはr<sを満たすように設定される。このため検査行列Hの1行内の“1”の個数は、1列内の1の個数に比べて多い。
メッセージパッシングアルゴリズムによりLDPC符号を復号するには、一般にビット更新とパリティ更新とを反復する必要がある。
通常、ビット更新は次式で表現される。
Figure 0004282558
ここで、ri,j,M(i),M(i)\j,j'∈M(i)\j,qi,j',sgn(qi,j'),Ψ( )は次の通りである。
i,jは、パリティノードからビットノードに、検査行列Hの第i行の各ビット(但し、第i行のj番目の位置のビットを除く)に対応するパリティ情報(信頼性情報)qi,j'を受け渡すことにより求められる。ri,jは、検査行列Hの第i行内のj番目の位置に対応する符号ビットxjに関する信頼性を表すビット情報(信頼性情報)である。ここでは、ri,jは、ビットxjが0または1である確率それ自体ではなくて、その確率の対数値を表すものとする。ここで対数値を用いるのは、乗除算を加減算に置き換えることを可能とするためである。
M(i)は、検査行列Hの第i行内で“1”となるビットの位置の集合を表す。
M(i)\jは、jを除くM(i)を表す。
j'∈M(i)\jは、jを除くM(i)に含まれている任意の行位置を表す。
i,j'は、検査行列Hの第i行内のj番目の位置に対応する符号ビットxj'に関する信頼性を表すパリティ情報(信頼性情報)である。qi,j'は、ビットxj'が0または1である確率それ自体ではなくて、その確率の対数値を表すものとする。
sgn(qi,j')は、qi,j'の符号を表す。qi,j'の符号は当該qi,j'の最上位ビットMSBで示される。もし、qi,j'が負であるなら、sgn(qi,j')=−1となり、MSB(qi,j')=1である。また、qi,j'が負でないなら、つまり零または正であるなら、sgn(qi,j')=+1となり、MSB(qi,j')=0である。
Ψ( )は、確率演算のための関数(以下、Ψ関数と称する)である。
また、パリティ更新は次式で表現される
Figure 0004282558
ここで、qi,j,pj,N(j),N(j)\i,i'∈N(j)\i,ri',jは次の通りである。
i,jは、ビットノードからパリティノードに、検査行列Hの第j行の各ビット(但し、第j列のi番目の位置のビットを除く)に対応するビット情報(信頼性情報)ri',jを受け渡すことにより求められる。qi,jは、検査行列Hの第i行内のj番目の位置のビットxjに関する信頼性を表すパリティ情報(信頼性情報)である。このqi,jが上記qi,j'として上記式(1)に従うビット更新に用いられる。
jは、LDPC符号が通信チャネルを通って出力された際に、その出力から推定される当該符号中のj番目のビットxjが1または0である確率(初期確率)の対数値を表す。検査行列Hにおいて値が“1”の各ビットに対応するqi,jの初期値はpjに一致する。
N(j)は、検査行列Hの第j列で“1”となるビットの位置の集合を表す。
N(j)\iは、iを除くN(j)を表す。
i'∈N(j)\iは、iを除くN(j)に含まれている任意の位置を表す。
i',jは、検査行列Hの第i行内のj番目の位置のビットxjに関する信頼性を表すビット情報(信頼性情報)である。このri',jには、上記式(1)に従う計算で更新されたri,jが用いられる。
図2は本発明の一実施形態に係るLDPC符号復号器の構成を示すブロック図である。同図に示すように、LDPC符号復号器は、M個(M=rm=3m)のビット処理ユニット10-1乃至10-Mと、m個のパリティ処理ユニット20-1乃至20-mと、メモリ30と、コントローラ40とから構成される。
ビット処理ユニット10-1乃至10-Mは、それぞれ検査行列Hの第1行乃至第M行に対応して設けられる。ビット処理ユニット10-i(i=1,2,…M)は、上記式(1)で示される、検査行列Hの第i行におけるビット更新の処理を実行する。
パリティ処理ユニット20-1乃至20-mは、検査行列Hにおける全ての順列行列Ig,hに共通に、それぞれ当該順列行列Ig,h内の第1列乃至第m列に対応して設けられる。パリティ処理ユニット20-k(k=1,2,…,m)は、全てのh(h=1,2,…,s、但し、s=5)について、順列行列Ig,h内の第k列が属する検査行列H内の第((h−1)m+k)列のパリティ更新を行うのに用いられる。つまり、パリティ処理ユニット20-kは、s=5の本実施形態では、検査行列Hにおける第k列、第(m+k)列、第(2m+k)列、第(3m+k)列及び第(4m+k)列のパリティ更新を行うのに用いられる。例えば、パリティ処理ユニット20-1は、検査行列Hにおける第1列、第(m+1)列、第(2m+1)列、第(3m+1)列及び第(4m+1)列のパリティ更新を行うのに用いられる。同様に、パリティ処理ユニット20-mは、検査行列Hにおける第m列、第2m列、第3m列、第4m列及び第5m列(第N列)のパリティ更新を行うのに用いられる。
メモリ30は、ビット処理ユニット10-1乃至10-Mによって算出されるビット情報及びパリティ処理ユニット20-1乃至20-mによって算出されるパリティ情報を記憶するのに用いられる。ここでは、メモリ30は、検査行列Hを構成する3×5個(r×s個)の順列行列I1,1,I2,1,I3,1,I1,2,I2,2,I3,2,I1,3,I2,3,I3,3,I1,4,I2,4,I3,4,I1,5,I2,5及びI3,5にそれぞれ対応する3×5個(r×s個)のメモリユニットから構成されているものとする。この3×5個(r×s個)のメモリユニットは同時にアクセス可能である。ここで、順列行列Ig,hに対応するメモリ30内の記憶領域の状態を、Qg,hまたはRg,hで表す。Qg,hはメモリ30内の対応する記憶領域にパリティ情報が格納されている状態を表し、Rg,hはメモリ30内の対応する記憶領域にビット情報が格納されている状態を表す。
コントローラ40は、LDPC符号復号器に入力されるLDPC符号の復号処理を制御する。具体的には、コントローラ40は、ビット処理ユニット10-1乃至10-M及びパリティ処理ユニット20-1乃至20-mの動作を制御するシーケンサとして機能する。
図3は図2中のビット処理ユニット10-i(i=1,2,…,M)の構成を示すブロック図である。上記式(1)で示されるビット更新の処理は、Π操作の部分と、Ψ関数を用いた操作の部分と、Σ操作の部分とに大別される。Ψ( )の操作はルックアップテーブルを用いて実現可能である。そこで、ビット処理ユニット10-iは、Σ操作の部分に相当する総和計算回路110と、Ψ関数を用いた操作の部分に相当するルックアップテーブル(LUT)120と、Π操作の部分に対応する符号計算回路130とから構成される。
さて、Σ操作の部分は、検査行列Hの第i行内の値が“1”の各位置jにそれぞれ対応するΨ(qi,j)の総和を算出するための加算処理の部分と、その総和から当該第i行内の値が“1”の各位置jに対応するΨ(qi,j)を減じる減算処理の部分とに分解できる。そこで本実施形態では、総和計算回路110は、加算回路111と、減算回路112とから構成される。
加算回路111は、1対のレジスタ111aと、マルチプレクサ(MUX)111b及び111cと、加算器111dとから構成される。1対のレジスタ111aは、Ψ(qi,j)の総和を算出するための加算処理の中間結果(または最終結果)を保持するのに用いられる。ここで、Ψ(qi,j)の総和を算出するための加算処理の最後の中間結果は、当該加算処理の最終結果であり、Ψ(qi,j)の総和を示す。1対のレジスタ111aの一方にΨ(qi,j)の総和が保持されると、他方のレジスタが、新たなΨ(qi,j)の総和を算出するための加算処理の中間結果を保持するのに用いられる。このように、1対のレジスタ111aは、Ψ(qi,j)の総和の中間結果を保持するためのレジスタとして、Ψ(qi,j)の総和が求められる毎に切り替えて使用される。
マルチプレクサ111bは、検査行列Hの第i行内の値が“1”の各位置(列位置)jに対応するΨ(qi,j)を順次選択する。検査行列Hの第i行内で“1”となる位置jは、行毎に一意に定められる。したがって、第i行内で“1”となる位置jに対応するΨ(qi,j)は、一意に特定できる。マルチプレクサ111cは、1対のレジスタ111aの一方に保持されている中間結果(前回までの加算処理の結果)の出力を選択する。加算器111dは、マルチプレクサ111bによって選択されたΨ(qi,j)と、マルチプレクサ111cによって選択された中間結果とを加算する。この加算器111dの加算結果は、Ψ(qi,j)の総和を算出するための加算処理の新たな中間結果を表す。加算器111dの加算に用いられた、レジスタ111a内の中間結果は、加算器111dの加算結果、つまりΨ(qi,j)の総和を算出するための加算処理の新たな中間結果に更新される。
このようにして加算回路111においては、検査行列Hの第i行内の値が“1”の各位置jに対応するΨ(qi,j)がマルチプレクサ111bによって順次選択される毎に、その選択されたΨ(qi,j)とその時点において1対のレジスタ111aの一方に保持されている中間結果(マルチプレクサ111cによって選択された中間結果)とを加算する動作が実行される。また、加算の都度、その加算に用いられたレジスタ111a内の中間結果が、その加算の結果である新たな中間結果に更新される。やがて、第i行内の値が“1”の最後の位置jに対応するΨ(qi,j)と、その時点においてレジスタ111aに保持されている中間結果とが加算されたものとする。明らかなように、この加算の結果は、Ψ(qi,j)の総和、即ちM(i)に含まれている全てのjにそれぞれ対応するΨ(qi,j)の総和を表す。
上述した加算回路111においてΨ(qi,j)の総和を算出する動作は、順列行列Ig,hの1行の処理、つまり1回の加算処理が1サイクルで実行できるものとすると、s(=5)サイクルで実行できる。ここで、1サイクルの時間をTcycとすると、Ψ(qi,j)の総和はsTcyc(=5Tcyc)で算出される。
減算回路112は、マルチプレクサ(MUX)112a及び112bと、減算器112cとから構成される。マルチプレクサ112aは、検査行列Hの第i行内の値が“1”の各位置jに対応するΨ(qi,j)の総和が1対のレジスタ111aの一方に保持されたサイクルの次のサイクルから、検査行列Hの第i行内の値が“1”の各位置jに対応するΨ(qi,j)を順次選択する。一方、マルチプレクサ112bは、上記総和が保持されているレジスタ111aの出力、つまり上記総和を選択する。減算器112cは、マルチプレクサ112bによって選択された総和からマルチプレクサ111aによって選択されたΨ(qi,j)を減算する。これにより、M(i)\jを満足する全ての位置j'に対応するΨ(qi,j')の総和が算出される。この減算器112cによる、上記総和(一方のレジスタ111aに保持されている総和)からΨ(qi,j)を減算する動作は、検査行列Hの第i行内の値が“1”の全ての位置jに対応するΨ(qi,j)について実行される。よって減算回路112においては、検査行列Hの第i行内の値が“1”の各位置jについて、M(i)\jを満足する全ての位置j'に対応するΨ(qi,j')の総和が順次算出される。この検査行列Hの第i行内の値が“1”の各位置jについて、M(i)\jを満足する全ての位置j'に対応するΨ(qi,j')の総和を算出する動作は、s(=5)サイクルで実行できる。この減算回路112における減算処理の期間、加算回路111における次の加算処理を実行することが可能である。この場合、マルチプレクサ111cは、先の加算処理の場合と異なって、1対のレジスタ111aのうちの他方のレジスタ(つまり、減算回路112における減算処理でマルチプレクサ112bによって選択されていない方のレジスタ)の出力を選択する。この他方のレジスタの内容が、加算回路111内の加算器111dの加算結果に更新される。但し、加算回路111における次の加算処理は、パリティ処理ユニット20-kによって、検査行列Hの第1乃至第m列内の値が“1”の各位置iに対応する新たなΨ(qi,j)が求められた後に開始される。
ルックアップテーブル120は、減算器112の減算結果(つまり総和計算回路110の計算結果)をΨ関数の演算値、即ちΨ(減算結果)に変換するのに用いられる。ルックアップテーブル120は、減算器112の減算結果で参照される。この減算結果の示す値をxとすると、そのxで特定されるルックアップテーブル120のエントリには、そのxに固有のΨ(x)が予め格納されている。このため、減算器112の減算結果xでルックアップテーブル120を参照するだけで、当該テーブル120からΨ(x)を取得することができる。本実施形態では、xで指定されるルックアップテーブル120のエントリには、Ψ(x)として、Ψ(x)=−log(tanh(x/2))が格納されている。
符号計算回路130は、1対のレジスタ131と、マルチプレクサ(MUX)132及び133と、排他的論理和回路134と、マルチプレクサ(MUX)135及び136と、排他的論理和回路137と、マルチプレクサ(MUX)138とから構成される。1対のレジスタ131は、符号計算の中間結果(または最終結果)を保持するのに用いられる例えば1ビットのレジスタである。1対のレジスタ131内の一方に符号計算の最終結果が保持されると、他方のレジスタが、新たな符号計算の中間結果を保持するのに用いられる。
マルチプレクサ132は、検査行列Hの第i行内の値が“1”の各位置jに対応するqi,jのMSB、つまり符号を順次選択する。qi,jのMSBを、MSB(qi,j)と表現することもある。マルチプレクサ133は、1対のレジスタ111aの一方に保持されている前回までの符号計算の中間結果(符号)を選択する。排他的論理和回路134は、マルチプレクサ132によって選択された符号と、マルチプレクサ133によって選択された前回までの符号計算の中間結果(符号)との排他的論理和を取る。この排他的論理和回路134の排他的論理和結果は、符号計算の新たな中間結果を表す。排他的論理和回路134の演算に用いられた、レジスタ131内の中間結果は、排他的論理和回路134の排他的論理和結果、つまり符号計算の新たな中間結果に更新される。
このようにして符号計算回路130においては、検査行列Hの第i行内の値が“1”の各位置jに対応するMSB(qi,j)がマルチプレクサ132によって順次選択される毎に、その選択されたMSB(qi,j)とその時点においてレジスタ131に保持されている符号計算の中間結果との排他的論理和を取る演算が実行される。また、排他的論理和演算の都度、その演算に用いられたレジスタ131内の中間結果が、その排他的論理和演算の結果である新たな中間結果に更新される。やがて、第i行内の値が“1”の最後の位置jに対応するMSB(qi,j)と、その時点においてレジスタ131に保持されている中間結果との排他的論理和が取られたものとする。明らかなように、この排他的論理和演算の結果は、第i行内の値が“1”の全ての位置jに対応するqi,jの符号の乗積、即ちM(i)に含まれている全てのjにそれぞれ対応するqi,jの符号の乗積を表す。上述した符号計算回路130においてMSB(qi,j)の排他的論理和を算出する動作、つまり符号計算動作は、加算回路111による加算処理と同期して行われ、s(=5)サイクルで実行できる。
マルチプレクサ135は、M(i)に含まれている全てのjにそれぞれ対応するMSB(qi,j)の排他的論理和が、1対のレジスタ131の一方に保持されたサイクルの次のサイクルから、検査行列Hの第i行内の値が“1”の各位置jに対応するMSB(qi,j)を順次選択する。一方、マルチプレクサ136は、上記排他的論理和が保持されているレジスタ131の出力、つまり上記排他的論理和を選択する。排他的論理和回路137は、マルチプレクサ136によって選択された排他的論理和とマルチプレクサ135によって選択されたMSB(qi,j)との排他的論理和を取る。これにより、M(i)\jを満足する全ての位置j'に対応するqi,j'の符号の乗積が求められる。この排他的論理和回路137による、上記乗積(一方のレジスタ131に保持されている乗積)とMSB(qi,j)との排他的論理和を取る演算は、検査行列Hの第i行内の値が“1”の全ての位置jに対応するMSB(qi,j)について実行される。よって符号計算回路130においては、検査行列Hの第i行内の値が“1”の各位置jについて、M(i)\jを満足する全ての位置j'に対応する i,j' の符号の乗積が順次算出される。マルチプレクサ138は、ルックアップテーブル120の出力または当該出力の符号を反転した値を、排他的論理和回路137の出力に応じてri,jとして選択する。
図4は図2中のパリティ処理ユニット20-k(k=1,2,…,m)の構成を示すブロック図である。このパリティ処理ユニット20-kは、検査行列Hの1列内の“1”の個数が、当該検査行列Hの1行内の“1”の個数に比べて少ない(r=3の本実施形態では3個)ことに着目して構成されている。つまりパリティ処理ユニット20-kは、検査行列Hの列j内の“1”の位置(行位置i)に対応するri,jを用いて、当該列j内の全てのパリティ更新を同時に行うように構成されている。そのため、パリティ処理ユニット20-kは、図4に示すように、3つの加算器201,202及び203と、3つの減算器204,205及び206と、3つのルックアップテーブル(LUT)207,208及び209とから構成される。
加算器201はri1,jとri2,jとを加算し、加算器202はri3,jとpjとを加算する。ここで、ri1,j,ri2,j及びri3,jは、検査行列Hの第j列(列j)内で“1”となるビット位置i1,i2,i3に対応するビット情報を表す。今、検査行列Hの第j列が3つの順列行列I1,h,I2,h及びI3,h内に位置しているものとすると、第j列内の“1”となる位置は順列行列I1,h,I2,h及びI3,h内にそれぞれ1箇所ずつ存在する。つまり、ri1,j,ri2,j及びri3,jは、検査行列Hの第j列内で“1”となる、順列行列I1,h,I2,h及びI3,h内のビット位置に対応するビット情報を表す。検査行列Hの第j列内で“1”となるビット位置i1,i2,i3は、行毎に一意に定められる。したがって、第j列内で“1”となるビット位置i1,i2,i3に対応するri1,j,ri2,j及びri3,jは、一意に特定できる。
加算器203は、加算器201及び202の加算結果を加算する。つまり加算器203は、ri1,j,ri2,j及びri3,jの総和とpjとの和を算出する。このように、加算器201乃至203は、ri1,j,ri2,j及びri3,jの総和とpjとの和を算出するための加算回路を構成している。この加算器203の加算結果は、LDPC符号中のビットxjが1または0である、現時点において推定される確率qjを表す。
減算器204は、加算器203の加算結果からri1,jを減じる。この減算器204の減算結果は、更新されたパリティ情報qi1,jを表す。減算器205は、加算器203の加算結果からri2,jを減じる。この減算器205の減算結果は、更新されたパリティ情報qi2,jを表す。減算器206は、加算器203の加算結果からri3,jを減じる。この減算器206の減算結果は、更新されたパリティ情報qi3,jを表す。つまりパリティ処理ユニット20-kにおいては、検査行列Hの第j列(j=k,m+k,2m+k,3m+k,4m+k)内で“1”のビットに対応する3つのqi1,j,qi2,j及びqi3,jiを同時に得ることができる。これによりMSB(qi1,j),MSB(qi2,j)及びMSB(qi3,ji)も得られる。更に、減算器204,205及び206の減算結果であるqi1,j,qi2,j及びqi3,jiで、それぞれルックアップテーブル207,208及び209を同時に参照することにより、Ψ(qi1,j),Ψ(qi2,j)及びΨ(qi3,ji)を同時に得ることができる。Ψ(qi1,j),Ψ(qi2,j)及びΨ(qi3,j)は、それぞれΨ(qi,j)として、ビット処理ユニット10-iにおけるビット更新に用いられる。
さて本実施形態の特徴の1つは、上記したように、パリティ処理ユニット20-kの出力側にルックアップテーブル207,208及び209を備えた点にある。パリティ処理ユニット20-kの出力側にルックアップテーブル207,208及び209を備える代わりに、ビット処理ユニット10-i内のマルチプレクサ132及び135の出力側にそれぞれルックアップテーブルを設けることも可能である。この場合、パリティ処理ユニットのルックアップテーブル数は0となるものの、1つのビット処理ユニットにつき(つまり1行の処理当たり)、3つのルックアップテーブルを必要とする。したがって、LDPC符号復号器全体では、3×rm(=9m)個のルックアップテーブルを必要とする。これに対して本実施形態では、1つのビット処理ユニット10-iにつき1つのルックアップテーブルを必要とすると共に、1つパリティ処理ユニット20-kにつきr個のルックアップテーブルを必要とする。この場合、LDPC符号復号器全体では、1×rm+r×m=2rm(=6m)個のルックアップテーブルだけで済む。つまり、本実施形態においては、パリティ処理ユニット20-kの出力側にルックアップテーブルを備えることにより、LDPC符号復号器全体では、ルックアップテーブルの個数を9m個から6m個に削減できる。
次に、図2のLDPC符号復号器内のコントローラ40によって制御される、ビット処理ユニット10-1乃至10-M及びパリティ処理ユニット20-1乃至20-mにおける計算の流れについて、図5及び図6を参照して説明する。図5は、ビット処理ユニット10-1乃至10-Mによるビット更新処理(水平計算処理HCALC)及びパリティ処理ユニット20-1乃至20-mによるパリティ更新処理(垂直計算処理VCALC)における、サイクル毎の入出力情報を示す。図6は、検査行列Hを構成する3×5個(r×s個)の順列行列にそれぞれ対応するメモリ30内の領域の状態の遷移を示す。図5及び図6では、検査行列Hにおける順列行列Ig,h(g=1,2,3,h=1,2,…,5)内の値が“1”の各ビットに対応するΨ(qi,j)及びri,jの集合が、それぞれQg,h及びRg,hで表されている。Qg,hは、MSB(qi,j)も含む。
<初期化>
まずコントローラ40は、初期化作業として、メモリ30内の各メモリユニットに、通信チャネルの出力により求められた確率の対数値であるpjを、Ψ(pj)及びsgn(pj)として格納する。即ち本実施形態においては、全てのjについて、Ψ(qi1,j),Ψ(qi2,j)及びΨ(qi3,j)として、共にΨ(pj)の値がセットされる。qi1,j,qi2,j及びqi3,jは、検査行列Hの第j列内で“1”となるビット位置i1,i2及びi3にそれぞれ対応するパリティ情報qi,j(i=i1,i2,i3)を表す。また、MSB(qi1,j),MSB(qi2,j)及びMSB(qi3,j)として、共にsgn(pj)の値がセットされる。またコントローラ40は、M個のビット処理ユニット10-1乃至10-M内のレジスタ131及び111aを、いずれもゼロに初期化する。
<第1サイクル>
まず、第1サイクルでは、M個のビット処理ユニット10-1乃至10-Mによって加算処理が開始される。即ち、ビット処理ユニット10-1乃至10-M内のレジスタ131にMSB(qi,j1)が格納され、レジスタ111aにΨ(qi,j1)が格納される。qi,j1は、検査行列Hの第i行内で“1”となる5つのビット位置j1,j2,j3,j4,j5のうちのj1に対応するパリティ情報qi,j(j=j1)を表す。つまり、ビット処理ユニット10-1乃至10-M内のレジスタ131及び111aにそれぞれ格納される情報MSB(qi,j1)及びΨ(qi,j1)は、検査行列Hの各行内で“1”となる位置のうちの最左端に対応するものであり、メモリ30に格納されているQ1,1,Q2,1及びQ3,1に相当する。
<第2サイクル>
第2サイクルでは、ビット処理ユニット10-1乃至10-Mの加算回路111内のマルチプレクサ111bによってΨ(qi,j2)が選択される。そして第2サイクルでは、このΨ(qi,j2)を用いて加算回路111による加算処理が行われる。即ち、第1サイクルにおいてレジスタ111aに格納されていた値と、マルチプレクサ111bによって選択されたΨ(qi,j2)とが、加算回路111内の加算器111dによって加算される。加算器111dの加算結果、つまりレジスタ111aに格納されていた値とΨ(qi,j2)との和は、当該レジスタ111aに格納される。一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、当該符号計算回路130内のマルチプレクサ132によってMSB(qi,j2)が選択される。第2サイクルでは、このMSB(qi,j2)を用いて符号計算回路130内の排他的論理和回路134による排他的論理和演算が行われる。即ち、排他的論理和回路134では、第1サイクルにおいてレジスタ131に格納されていた値と、マルチプレクサ132によって選択されたMSB(qi,j2)との排他的論理和が計算される。排他的論理和回路134の演算結果、つまりレジスタ131に格納されていた値とMSB(qi,j2)との排他的論理和演算結果は、当該レジスタ131に格納される。なお、Ψ(qi,j2)及びMSB(qi,j2)は、検査行列Hの第i行内で“1”となるビット位置j1,j2,j3,j4,j5のうちの2番目のビット位置j2(j=j2)に対応するものであり、メモリ30格納されているQ1,2,Q2,2及びQ3,2に相当する。
<第3サイクル>
第3サイクルでは、ビット処理ユニット10-1乃至10-Mの加算回路111内のマルチプレクサ111bによってΨ(qi,j3)が選択される。そして第3サイクルでは、このΨ(qi,j3)を用いて加算回路111による加算処理が行われる。即ち、第2サイクルにおいてレジスタ111aに格納されていた値と、マルチプレクサ111bによって選択されたΨ(qi,j3)とが、加算回路111内の加算器111dによって加算される。加算器111dの加算結果、つまりレジスタ111aに格納されていた値とΨ(qi,j3)との和は、当該レジスタ111aに格納される。一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、当該符号計算回路130内のマルチプレクサ132によってMSB(qi,j3)が選択される。第3サイクルでは、このMSB(qi,j3)を用いて符号計算回路130内の排他的論理和回路134による排他的論理和演算が行われる。即ち、排他的論理和回路134では、第2サイクルにおいてレジスタ131に格納されていた値と、マルチプレクサ132によって選択されたMSB(qi,j3)との排他的論理和が計算される。排他的論理和回路134の演算結果、つまりレジスタ131に格納されていた値とMSB(qi,j3)との排他的論理和演算結果は、当該レジスタ131に格納される。なお、Ψ(qi,j3)及びMSB(qi,j3)は、検査行列Hの第i行内で“1”となるビット位置j1,j2,j3,j4,j5のうちの3番目のビット位置j3(j=j3)に対応するものであり、メモリ30に格納されているQ1,3,Q2,3及びQ3,3に相当する。
<第4サイクル>
第4サイクルでは、ビット処理ユニット10-1乃至10-Mの加算回路111内のマルチプレクサ111bによってΨ(qi,j4)が選択される。そして第4サイクルでは、このΨ(qi,j4)を用いて加算回路111による加算処理が行われる。即ち、第3サイクルにおいてレジスタ111aに格納されていた値と、マルチプレクサ111bによって選択されたΨ(qi,j4)とが、加算回路111内の加算器111dによって加算される。加算器111dの加算結果、つまりレジスタ111aに格納されていた値とΨ(qi,j4)との和は、当該レジスタ111aに格納される。一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、当該符号計算回路130内のマルチプレクサ132によってMSB(qi,j4)が選択される。第4サイクルでは、このMSB(qi,j4)を用いて符号計算回路130内の排他的論理和回路134による排他的論理和演算が行われる。即ち、排他的論理和回路134では、第3サイクルにおいてレジスタ131に格納されていた値と、マルチプレクサ132によって選択されたMSB(qi,j4)との排他的論理和が計算される。排他的論理和回路134の演算結果、つまりレジスタ131に格納されていた値とMSB(qi,j4)との排他的論理和演算結果は、当該レジスタ131に格納される。なお、Ψ(qi,j4)及びMSB(qi,j4)は、検査行列Hの第i行内で“1”となるビット位置j1,j2,j3,j4,j5のうちの4番目のビット位置j4(j=j4)に対応するものであり、メモリ30に格納されているQ1,4,Q2,4及びQ3,4に相当する。
<第5サイクル>
第5サイクルでは、ビット処理ユニット10-1乃至10-Mの加算回路111内のマルチプレクサ111bによってΨ(qi,j5)が選択される。そして第5サイクルでは、このΨ(qi,j5)を用いて加算回路111による加算処理が行われる。即ち、第4サイクルにおいてレジスタ111aに格納されていた値と、マルチプレクサ111bによって選択されたΨ(qi,j5)とが、加算回路111内の加算器111dによって加算される。加算器111dの加算結果、つまりレジスタ111aに格納されていた値とΨ(qi,j5)との和は、当該レジスタ111aに格納される。一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、当該符号計算回路130内のマルチプレクサ132によってMSB(qi,j5)が選択される。第5サイクルでは、このMSB(qi,j5)を用いて符号計算回路130内の排他的論理和回路134による排他的論理和演算が行われる。即ち、排他的論理和回路134では、第4サイクルにおいてレジスタ131に格納されていた値と、マルチプレクサ132によって選択されたMSB(qi,j5)との排他的論理和が計算される。排他的論理和回路134の演算結果、つまりレジスタ131に格納されていた値とMSB(qi,j5)との排他的論理和演算結果は、当該レジスタ131に格納される。なお、Ψ(qi,j5)及びMSB(qi,j5)は、検査行列Hの第i行内で“1”となるビット位置j1,j2,j3,j4,j5のうちの最右端のビット位置j5(j=j5)に対応するものであり、メモリ30に格納されているQ1,5,Q2,5及びQ3,5に相当する。
<第6サイクル>
第6サイクルでは、ビット処理ユニット10-1乃至10-M内の減算回路112による減算処理が開始される。この減算処理には、各ビット処理ユニット10-i(i=1,2,…M)内の上記一方のレジスタ111aに保持されている加算処理の最終結果(つまりビット処理ユニット10-iにおいては、検査行列Hの第i行内で値が“1”となる位置に対応するΨ(qi,j)の総和)と、メモリ30に格納されているQ1,1,Q2,1及びQ3,1とが用いられる。この減算処理では、上記加算処理の最終結果からΨ(qi,j1)が減じられる。そのため、減算回路112内のマルチプレクサ112bでは、1対のレジスタ111aのうち、加算処理の最終結果を保持しているものが選択される。また、減算回路112内のマルチプレクサ112aでは、Ψ(qi,j1)が選択される。そして、マルチプレクサ112bによって選択された加算処理の最終結果から、マルチプレクサ112aによって選択されたΨ(qi,j1)が、減算回路112内の減算器112cによって減じられる。
一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、排他的論理和の総和からMSB(qi,j1)を除外する演算が行われる。そのため、符号計算回路130内のマルチプレクサ136では、1対のレジスタ131のうち、排他的論理和の総和を保持しているものが選択される。また、符号計算回路130内のマルチプレクサ135では、MSB(qi,j1)が選択される。そして、マルチプレクサ136によって選択された排他的論理和の総和とマルチプレクサ135によって選択されたMSB(qi,j1)との排他的論理和演算が、符号計算回路130内の排他的論理和回路137によって行われる。この排他的論理和回路137の演算結果に従って、マルチプレクサ138において出力される情報の符号が決定され、ビット情報ri,jが求められる。このビット情報ri,jは、対応する行i及び列jの位置で決まるメモリ30の位置に格納される。ここで、検査行列Hの第1列乃至第m列に対応する順列行列I1,1,I2,1,及びI3,1内の値が“1”の各ビット位置に対応するri,jの集合を、それぞれR1,1,R2,1,及びR3,1で表す。この場合、第6サイクルでは、R1,1,R2,1,及びR3,1が生成されて、メモリ30に格納されることになる。
<第7イクル>
第7サイクルでは、ビット処理ユニット10-1乃至10-M内の減算回路112による減算処理が行われる。この減算処理には、各ビット処理ユニット10-i(i=1,2,…M)内の上記一方のレジスタ111aに保持されている加算処理の最終結果(検査行列Hの第i行内で値が“1”となる位置に対応するΨ(qi,j)の総和)と、メモリ30に格納されているQ1,2,Q2,2及びQ3,2とが用いられる。この減算処理では、上記加算処理の最終結果からΨ(qi,j2)が減じられる。そのため、減算回路112内のマルチプレクサ112bでは、1対のレジスタ111aのうち、加算処理の最終結果を保持しているものが選択される。また、減算回路112内のマルチプレクサ112aでは、Ψ(qi,j2)が選択される。そして、マルチプレクサ112bによって選択された加算処理の最終結果から、マルチプレクサ112aによって選択されたΨ(qi,j2)が、減算回路112内の減算器112cによって減じられる。
一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、排他的論理和の総和からMSB(qi,j2)を除外する演算が行われる。そのため、符号計算回路130内のマルチプレクサ136では、1対のレジスタ131のうち、排他的論理和の総和を保持しているものが選択される。また、符号計算回路130内のマルチプレクサ135では、MSB(qi,j2)が選択される。そして、マルチプレクサ136によって選択された排他的論理和の総和とマルチプレクサ135によって選択されたMSB(qi,j2)との排他的論理和演算が、符号計算回路130内の排他的論理和回路137によって行われる。この排他的論理和回路137の演算結果に従って、マルチプレクサ138において出力される情報の符号が決定され、ビット情報ri,jが求められる。このビット情報ri,jは、対応する行i及び列jの位置で決まるメモリ30の位置に格納される。ここで、検査行列Hの第(m+1)列乃至第2m列に対応する順列行列I1,2,I2,2,及びI3,2内の値が“1”の各ビット位置に対応するri,jの集合を、それぞれR1,2,R2,2,及びR3,2で表す。この場合、第7サイクルでは、R1,2,R2,2,及びR3,2が生成されて、メモリ30に格納されることになる。
さて、第7サイクルでは、第6サイクルでメモリ30に格納されたR1,1,R2,1,及びR3,1内の各要素ri,jを利用することができる。このため第7サイクルでは、コントローラ40の制御によって、パリティ処理ユニット20-1乃至20-mによるパリティ更新処理が開始される。即ち第7サイクルでは、R1,1,R2,1,及びR3,1内の各要素ri,jを利用したパリティ更新が、パリティ処理ユニット20-1乃至20-mによって行われる。これにより、検査行列Hにおける第1列乃至第m列の各列毎に、Ψ(qi1,j),Ψ(qi2,j)及びΨ(qi3,ji)と、MSB(qi1,j),MSB(qi2,j)及びMSB(qi3,ji)と、qjとが求められる。この第1列乃至第m列の各列毎のΨ(qi1,j),Ψ(qi2,j)及びΨ(qi3,ji)とMSB(qi1,j),MSB(qi2,j)及びMSB(qi3,ji)とqjとによって、メモリ30に格納されているQ1,1,Q2,1及びQ3,1がそれぞれQ'1,1,Q'2,1及びQ'3,1に更新される。
このように本実施形態では、パリティ更新処理を、検査行列Hにおける第1行乃至第M行の各行内の全ビットに対応するビット更新処理が完了する前に開始できる。即ち本実施形態では、検査行列H内の順列行列I1,1,I2,1,及びI3,1内の値が“1”の各ビット位置に対応するビット更新のみが終了した段階でパリティ更新処理を開始できる。換言するならば、本実施形態によれば、ビット更新とパリティ更新とをパイプラインで処理することができる。
<第8サイクル>
第8サイクルでは、更新されたQ'1,1,Q'2,1及びQ'3,1内の各要素qi,jを利用することができる。このため第8サイクルでは、コントローラ40の制御によって、ビット処理ユニット10-1乃至10-Mによる次のビット更新処理が開始され、上記第1サイクルと同様の加算処理が行われる。但し、この加算処理の結果は、上記第1サイクル(乃至第5サイクル)における加算処理の結果を保持するのに用いられた上記一方のレジスタではなく、1対のレジスタ111aのうちの他方のレジスタに保持される。
このように本実施形態では、ビット更新処理を、検査行列Hにおける第1列乃至第N列の各列内の全ビットに対応するパリティ更新処理が完了する前に開始できる。即ち本実施形態では、検査行列H内の順列行列I1,1,I2,1,及びI3,1内の各ビット位置に対応するパリティ更新のみが終了した段階で次のビット更新処理を開始できる。換言するならば、ビット更新処理とパリティ更新処理との対をパイプラインで反復することができる。
また、第8サイクルでは、上記加算処理と並行して、ビット処理ユニット10-1乃至10-Mによる減算処理が行われる。この減算処理には、各ビット処理ユニット10-i(i=1,2,…M)内の上記一方のレジスタ111aに保持されている加算処理の最終結果(検査行列Hの第i行内で値が“1”となる位置に対応するΨ(qi,j)の総和)と、メモリ30に格納されているQ1,3,Q2,3及びQ3,3とが用いられる。この減算処理では、上記加算処理の最終結果からΨ(qi,j3)が減じられる。そのため、減算回路112内のマルチプレクサ112bでは、1対のレジスタ111aのうち、加算処理の最終結果を保持しているものが選択される。また、減算回路112内のマルチプレクサ112aでは、Ψ(qi,j3)が選択される。そして、マルチプレクサ112bによって選択された加算処理の最終結果から、マルチプレクサ112aによって選択されたΨ(qi,j3)が、減算回路112内の減算器112cによって減じられる。
一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、排他的論理和の総和からMSB(qi,j3)を除外する演算が行われる。そのため、符号計算回路130内のマルチプレクサ136では、1対のレジスタ131のうち、排他的論理和の総和を保持しているものが選択される。また、符号計算回路130内のマルチプレクサ135では、MSB(qi,j3)が選択される。そして、マルチプレクサ136によって選択された排他的論理和の総和とマルチプレクサ135によって選択されたMSB(qi,j3)との排他的論理和演算が、符号計算回路130内の排他的論理和回路137によって行われる。この排他的論理和回路137の演算結果に従って、マルチプレクサ138において出力される情報の符号が決定され、ビット情報ri,jが求められる。このビット情報ri,jは、対応する行i及び列jの位置で決まるメモリ30の位置に格納される。ここで、検査行列Hの第(2m+1)列乃至第3m列に対応する順列行列I1,3,I2,3,及びI3,3内の値が“1”の各ビット位置に対応するri,jの集合を、それぞれR1,3,R2,3,及びR3,3で表す。この場合、第8サイクルでは、R1,3,R2,3,及びR3,3が生成されて、メモリ30に格納されることになる。
また、第8サイクルでは、第7サイクルでメモリ30に格納されたR1,2,R2,2,及びR3,2内の各要素ri,jを利用したパリティ更新が、パリティ処理ユニット20-1乃至20-mによって行われる。これにより、メモリ30に格納されているQ1,2,Q2,2及びQ3,2がそれぞれQ'1,2,Q'2,2及びQ'3,2に更新される。
<第9サイクル>
第9サイクルでは、更新されたQ'1,2,Q'2,2及びQ'3,2を用いて、上記第2サイクルと同様の加算処理がビット処理ユニット10-1乃至10-Mによって行われる。
また、第9サイクルでは、上記加算処理と並行して、ビット処理ユニット10-1乃至10-Mによる減算処理が行われる。この減算処理には、各ビット処理ユニット10-i(i=1,2,…M)内の上記一方のレジスタ111aに保持されている加算処理の最終結果(検査行列Hの第i行内で値が“1”となる位置に対応するΨ(qi,j)の総和)と、メモリ30に格納されているQ1,4,Q2,4及びQ3,4とが用いられる。この減算処理では、上記加算処理の最終結果からΨ(qi,j4)が減じられる。そのため、減算回路112内のマルチプレクサ112bでは、1対のレジスタ111aのうち、加算処理の最終結果を保持しているものが選択される。また、減算回路112内のマルチプレクサ112aでは、Ψ(qi,j4)が選択される。そして、マルチプレクサ112bによって選択された加算処理の最終結果から、マルチプレクサ112aによって選択されたΨ(qi,j4)が、減算回路112内の減算器112cによって減じられる。
一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、排他的論理和の総和からMSB(qi,j4)を除外する演算が行われる。そのため、符号計算回路130内のマルチプレクサ136では、1対のレジスタ131のうち、排他的論理和の総和を保持しているものが選択される。また、符号計算回路130内のマルチプレクサ135では、MSB(qi,j4)が選択される。そして、マルチプレクサ136によって選択された排他的論理和の総和とマルチプレクサ135によって選択されたMSB(qi,j4)との排他的論理和演算が、符号計算回路130内の排他的論理和回路137によって行われる。この排他的論理和回路137の演算結果に従って、マルチプレクサ138において出力される情報の符号が決定され、ビット情報ri,jが求められる。このビット情報ri,jは、対応する行i及び列jの位置で決まるメモリ30の位置に格納される。ここで、検査行列Hの第(3m+1)列乃至第4m列に対応する順列行列I1,4,I2,4,及びI3,4内の値が“1”の各ビット位置に対応するri,jの集合を、それぞれR1,4,R2,4,及びR3,4で表す。この場合、第9サイクルでは、R1,4,R2,4,及びR3,4が生成されて、メモリ30に格納されることになる。
また、第9サイクルでは、第8サイクルでメモリ30に格納されたR1,3,R2,3,及びR3,3内の各要素ri,jを利用したパリティ更新が、パリティ処理ユニット20-1乃至20-mによって行われる。これにより、メモリ30に格納されているQ1,3,Q2,3及びQ3,3がそれぞれQ'1,3,Q'2,3及びQ'3,3に更新される。
<第10サイクル>
第10サイクルでは、更新されたQ'1,3,Q'2,3及びQ'3,3を用いて、上記第3サイクルと同様の加算処理がビット処理ユニット10-1乃至10-Mによって行われる。
また、第10サイクルでは、上記加算処理と並行して、ビット処理ユニット10-1乃至10-Mによる減算処理が行われる。この減算処理には、各ビット処理ユニット10-i(i=1,2,…M)内の上記一方のレジスタ111aに保持されている加算処理の最終結果(検査行列Hの第i行内で値が“1”となる位置に対応するΨ(qi,j)の総和)と、メモリ30に格納されているQ1,5,Q2,5及びQ3,5とが用いられる。この減算処理では、上記加算処理の最終結果からΨ(qi,j5)が減じられる。そのため、減算回路112内のマルチプレクサ112bでは、1対のレジスタ111aのうち、加算処理の最終結果を保持しているものが選択される。また、減算回路112内のマルチプレクサ112aでは、Ψ(qi,j5)が選択される。そして、マルチプレクサ112bによって選択された加算処理の最終結果から、マルチプレクサ112aによって選択されたΨ(qi,j5)が、減算回路112内の減算器112cによって減じられる。
一方、ビット処理ユニット10-1乃至10-Mの符号計算回路130では、排他的論理和の総和からMSB(qi,j5)を除外する演算が行われる。そのため、符号計算回路130内のマルチプレクサ136では、1対のレジスタ131のうち、排他的論理和の総和を保持しているものが選択される。また、符号計算回路130内のマルチプレクサ135では、MSB(qi,j5)が選択される。そして、マルチプレクサ136によって選択された排他的論理和の総和とマルチプレクサ135によって選択されたMSB(qi,j5)との排他的論理和演算が、符号計算回路130内の排他的論理和回路137によって行われる。この排他的論理和回路137の演算結果に従って、マルチプレクサ138において出力される情報の符号が決定され、ビット情報ri,jが求められる。このビット情報ri,jは、対応する行i及び列jの位置で決まるメモリ30の位置に格納される。ここで、検査行列Hの第(4m+1)列乃至第N列に対応する順列行列I1,5,I2,5,及びI3,5内の値が“1”の各ビット位置に対応するri,jの集合を、それぞれR1,5,R2,5,及びR3,5で表す。この場合、第10サイクルでは、R1,5,R2,5,及びR3,5が生成されて、メモリ30に格納されることになる。
このように本実施形態では、検査行列Hにおける第1行乃至第M行の各行内の値が“1”のビットに対応するビット更新を、10サイクル、つまり2sサイクルで実行できる。
また、第10サイクルでは、第9サイクルでメモリ30に格納されたR1,4,R2,4,及びR3,4内の各要素ri,jを利用したパリティ更新が、パリティ処理ユニット20-1乃至20-mによって行われる。これにより、メモリ30に格納されているQ1,4,Q2,4及びQ3,4がそれぞれQ'1,4,Q'2,4及びQ'3,4に更新される。
<第11サイクル>
第11サイクルでは、更新されたQ'1,4,Q'2,4及びQ'3,4を用いて、上記第4サイクルと同様の加算処理がビット処理ユニット10-1乃至10-Mによって行われる。
また、第11サイクルでは、第10サイクルでメモリ30に格納されたR1,5,R2,5,及びR3,5内の各要素ri,jを利用したパリティ更新が、パリティ処理ユニット20-1乃至20-mによって行われる。これにより、メモリ30に格納されているQ1,5,Q2,5及びQ3,5がそれぞれQ'1,5,Q'2,5及びQ'3,5に更新され、ビット更新処理とパリティ更新処理とからなる1回目の反復動作が完了する。但し、次の2回目の反復動作におけるビット更新処理は、既に第8サイクル(つまり先行する1回目の反復動作におけるパリティ更新処理が開始されたサイクルの次のサイクル)から開始されている。
第12サイクル以降も上記第5サイクル以降と同様の動作が行われる。上述のLDPC符号復号器におけるLDPC符号の復号スケジュールを図7に整理して示す。なお、ビット更新処理とパリティ更新処理との反復動作は、検査行列Hの全ての列j(j=1,2,…,N)について、その列jに対応するr(=3)個のqjに基づいて判定される硬判定値が第jパリティチェック方程式を満足するようになるまで行われる。但し、一定回数の反復動作を実行しても、パリティチェック方程式を満足しない列が1つでも存在する場合には、LDPC符号の復号に失敗したとして、復号動作は強制終了される。
上記実施形態では、パリティ処理ユニット20-kは、検査行列Hの列j内の“1”の位置(行位置i)に対応するri,jを用いて、当該列j内の全てのパリティ更新を同時に行うように構成されている。しかし、パリティ処理ユニット20-kに代えて、ビット処理ユニット10-iと同様の構成を有するパリティ処理ユニットを用いても良い。つまり、加算処理と減算処理とにより、2サイクルで、検査行列Hの列j内の各行位置iに対応するパリティ情報qi,jを順次更新する構成とすることも可能である。この場合、パリティ処理ユニットの出力側に1つのルックアップテーブルを設けるだけで済む。但し、パリティ更新処理に必要なサイクル数が、パリティ処理ユニット20-kを用いる場合の2倍となる。また、次のビット更新処理の開始時期が1サイクル遅くなる。
また上記実施形態では、検査行列Hが3×5の順列行列のアレイ構成である場合を想定している。しかし、検査行列H内の順列行列の配列は上記実施形態に限らない。即ち、検査行列Hは、r×sの順列行列のアレイ構成であれば良い。但し、r<sとする。
なお、本発明は、上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合せにより種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。
本発明の一実施形態で適用されるパリティ検査行列Hの構造を示す図。 本発明の一実施形態に係るLDPC符号復号器の構成を示すブロック図。 図2中のビット処理ユニット10-i(i=1,2,…,M)の構成を示すブロック図。 図2中のパリティ処理ユニット20-k(k=1,2,…,m)の構成を示すブロック図。 ビット処理ユニット10-1乃至10-Mによるビット更新処理及びパリティ処理ユニット20-1乃至20-mによるパリティ更新処理における、サイクル毎の入出力情報を示す図。 検査行列Hを構成する3×5個(r×s個)の順列行列にそれぞれ対応するメモリ30内の領域の状態の遷移を示す図。 同実施形態におけるLDPC符号の復号スケジュールを示す図。
符号の説明
10-1〜10-M,10-i…ビット処理ユニット、20-1〜20-N,20-k…パリティ処理ユニット、30…メモリ、40…コントローラ、110…総和計算回路、111…加算回路、112…減算回路、120…ルックアップテーブル(第1のルックアップテーブル)、130…符号計算回路、207〜209…ルックアップテーブル(第2のルックアップテーブル)。

Claims (13)

  1. m×mの順列行列がr×sに配列された構造のパリティ検査行列を持つ低密度パリティチェック符号を復号する低密度パリティチェック符号復号器であって、
    前記パリティ検査行列の各行に対応して設けられ、当該行内の値が“1”の各列位置に対応するビット情報を順次更新するためのビット更新処理を実行するrm個のビット処理ユニットと、
    前記r×sに配列されたrs個の前記順列行列に共通に、且つ当該順列行列の各列に対応して設けられ、当該列が属する前記パリティ検査行列の列内の値が“1”の各行位置に対応するパリティ情報を更新するためのパリティ更新処理を実行するm個のパリティ処理ユニットと、
    前記rm個のビット処理ユニットによるビット更新処理が前記パリティ検査行列の対応する行内のm個の列位置について終了する毎に、そのm個の列位置が属する前記パリティ検査行列のm列に対応するパリティ更新処理を前記m個のパリティ処理ユニットにより実行させ、前記m個のパリティ処理ユニットによるパリティ更新処理が前記パリティ検査行列の最初のm列について終了する毎に、前記rm個のビット処理ユニットによる次のビット更新処理を開始させるコントローラと
    を具備することを特徴とする低密度パリティチェック符号復号器。
  2. 前記rm個のビット処理ユニットの各々は、
    前記パリティ検査行列の対応する行内の値が“1”の各列位置に対応する対数表現されたパリティ情報の値を順次加算する加算処理により、そのパリティ情報の値の総和を計算する加算回路と、
    前記加算回路によって計算された総和から前記パリティ検査行列の対応する行内の値が“1”の各列位置に対応する対数表現されたパリティ情報の値を減じる減算処理を実行する減算回路とを含む
    ことを特徴とする請求項1記載の低密度パリティチェック符号復号器。
  3. 前記コントローラは、前記rm個のビット処理ユニットにそれぞれ含まれている前記減算回路による減算処理が前記パリティ検査行列の対応する行内のm個の列位置について終了する毎に、前記ビット更新処理が当該m個の列位置について終了したとして、そのm個の列位置が属するm列に対応するパリティ更新処理を前記m個のパリティ処理ユニットにより実行させることを特徴とする請求項2記載の低密度パリティチェック符号復号器。
  4. 前記rm個のビット処理ユニットの各々は、前記減算回路の出力を確率演算のための特定の関数の演算値に変換する第1のルックアップテーブルを含み、
    前記m個のパリティ処理ユニットの各々は、その出力側に、更新されたパリティ情報の値を前記特定の関数の演算値に変換する第2のルックアップテーブルを含む
    ことを特徴とする請求項2記載の低密度パリティチェック符号復号器。
  5. 前記パリティ検査行列内の前記rs個の順列行列の配列r×sはr<sの関係があり、
    前記m個のパリティ処理ユニットの各々は、前記パリティ検査行列の対応する列内の値が“1”のr個の行位置に対応するビット情報を同時に入力し、当該r個の行位置に対応するビット情報をもとに当該r個の行位置に対応するパリティ情報を同時に更新する
    ことを特徴とする請求項2記載の低密度パリティチェック符号復号器。
  6. 前記rm個のビット処理ユニットの各々は、前記減算回路の出力を確率演算のための特定の関数の演算値に変換する第1のルックアップテーブルを含み、
    前記m個のパリティ処理ユニットの各々は、その出力側に、更新されたr個のパリティ情報の値を前記特定の関数の演算値に変換するr個の第2のルックアップテーブルを含む
    ことを特徴とする請求項5記載の低密度パリティチェック符号復号器。
  7. 前記ビット情報及び前記パリティ情報を格納するメモリを更に具備し、
    前記rm個のビット処理ユニットの各々は、前記メモリから読み出されるパリティ情報であって、前記パリティ検査行列の前記対応する行内の値が“1”の各列位置に対応するパリティ情報の値を順次加算することにより、そのパリティ情報の値の総和を計算する加算処理を実行する加算回路と、前記計算されたパリティ情報の値の総和から、前記メモリから読み出される、前記加算処理で用いられた前記値が“1”の各列位置に対応するパリティ情報の値を減じることにより、それぞれ新たなビット情報を取得する減算処理を実行する減算回路とを含み、
    前記rm個のビット処理ユニットの各々は、対応する前記減算回路の減算処理で新たなビット情報が取得される毎に、前記ビット更新処理で用いられた、前記値が“1”の列位置に対応して前記メモリに格納されているそれぞれのパリティ情報を、当該取得された新たなビット情報に置き換え、
    前記m個のパリティ処理ユニットの各々は、前記メモリから読み出されるビット情報であって、前記ビット更新処理が終了した前記パリティ検査行列のm列内の値が“1”の各行位置に対応するビット情報の値に基づいて前記パリティ更新処理を実行することにより、前記各行位置に対応する新たなパリティ情報を取得して、前記パリティ更新処理で用いられた、前記各行位置に対応して前記メモリに格納されているビット情報を、当該取得された新たなパリティ情報に置き換える、
    ことを特徴とする請求項1記載の低密度パリティチェック符号復号器。
  8. m×mの順列行列がr×sに配列された構造のパリティ検査行列を持つ低密度パリティチェック符号を復号する低密度パリティチェック符号復号方法であって、
    前記パリティ検査行列の各行毎に、当該行内の値が“1”の各列位置に対応するビット情報を順次更新するためのビット更新処理を並行して実行するビット更新ステップと、
    前記パリティ検査行列のm列を単位に、その列内の値が“1”の各行位置に対応するパリティ情報を更新するためのパリティ更新処理を並行して実行するパリティ更新ステップと、
    前記ビット更新ステップによるビット更新処理が前記パリティ検査行列の各行内のm個の列位置について終了する毎に、そのm個の列位置が属する前記パリティ検査行列のm列に対応する前記パリティ更新ステップによるパリティ更新処理を実行させるステップと、
    前記パリティ更新ステップによるパリティ更新処理が前記パリティ検査行列の最初のm列について終了する毎に、前記ビット処理ステップによる次のビット更新処理を開始させるステップと
    を具備することを特徴とする低密度パリティチェック符号復号方法。
  9. 前記ビット更新ステップは、
    前記パリティ検査行列の各行毎に、当該行内の値が“1”の各列位置に対応する対数表現されたパリティ情報の値を順次加算する加算処理を並行して実行することにより、前記パリティ検査行列の各行毎にパリティ情報の値の総和を計算する加算ステップと、
    前記加算ステップによって計算された前記パリティ検査行列の各行毎の総和から、それぞれ前記パリティ検査行列の対応する行内の値が“1”の各列位置に対応する対数表現されたパリティ情報の値を減じる減算処理を並行して実行する減算ステップとを含む
    ことを特徴とする請求項記載の低密度パリティチェック符号復号方法。
  10. 前記ビット更新ステップは、前記減算ステップにおける前記各行毎の減算処理の結果を、当該各行毎に設けられた第1のルックアップテーブルにより確率演算のための特定の関数の演算値に変換するステップを含み、
    前記パリティ更新ステップは、前記パリティ検査行列のm列を単位とするパリティ更新処理により、その列内の値が“1”の各行位置に対応するパリティ情報が更新される都度、その更新されたパリティ情報の値を、当該m列の各列毎に設けられた第2のルックアップテーブルにより前記特定の関数の演算値に変換するステップを含む
    ことを特徴とする請求項記載の低密度パリティチェック符号復号方法。
  11. 前記パリティ検査行列内の前記rs個の順列行列の配列r×sはr<sの関係があり、
    前記パリティ更新ステップは、前記パリティ検査行列のm列を単位に、その列内の値が“1”のr個の行位置に対応するビット情報を同時に入力するステップと、当該r個の行位置に対応するビット情報をもとに当該r個の行位置に対応するパリティ情報を同時に更新するステップと含む
    ことを特徴とする請求項記載の低密度パリティチェック符号復号方法
  12. 前記ビット更新ステップは、前記減算ステップにおける前記各行毎の減算処理の結果を、当該各行毎に設けられた第1のルックアップテーブルにより確率演算のための特定の関数の演算値に変換するステップを含み、
    前記パリティ更新ステップは、前記パリティ検査行列のm列を単位とするパリティ更新処理により、そのm列の各列毎に、その列内の値が“1”のr個の行位置に対応するパリティ情報が更新される都度、そのm列の各列毎に更新されたr個のパリティ情報の値を、当該m列の各列毎に設けられたr個の第2のルックアップテーブルにより前記特定の関数の演算値に同時に変換するステップを含む
    ことを特徴とする請求項11記載の低密度パリティチェック符号復号方法。
  13. 前記ビット更新ステップは、
    ビット情報及びパリティ情報を格納するメモリから、前記パリティ検査行列の各行毎に、前記パリティ検査行列の対応する行内の値が“1”の各列位置に対応するパリティ情報の値を順に読み出す第1の読み出しステップと、
    前記パリティ検査行列の各行毎に前記順に読み出される、前記パリティ検査行列の前記対応する行内の値が“1”の各列位置に対応するパリティ情報の値を加算することにより、前記パリティ検査行列の各行毎に、そのパリティ情報の値の総和を計算する加算処理を実行するステップと、
    前記パリティ検査行列の各行毎に、前記加算処理で用いられた前記値が“1”の各列位置に対応するパリティ情報の値を前記メモリから順に読み出す第2の読み出しステップと、
    前記パリティ検査行列の各行毎に取得されたパリティ情報の値の総和から、前記第2の読み出しステップで読み出された前記パリティ情報の値を減じることにより、前記パリティ検査行列の各行毎に新たなビット情報を順次取得する減算ステップと、
    前記減算ステップで新たなビット情報が取得される毎に、前記ビット更新処理で用いられた、前記値が“1”の列位置に対応して前記メモリに格納されているそれぞれのパリティ情報を、当該取得された新たなビット情報に置き換えるステップとを含み、
    前記パリティ更新ステップは、
    前記パリティ検査行列のm列を単位に、前記ビット更新処理が終了した前記パリティ検査行列のm列内の値が“1”の各行位置に対応するビット情報を前記メモリから順に読み出すステップと、
    前記パリティ検査行列のm列を単位に、前記メモリから順に読み出される、前記ビット更新処理が終了した前記パリティ検査行列のm列内の値が“1”の各行位置に対応するビット情報の値に基づいて前記パリティ更新処理を実行することにより、前記各行位置に対応する新たなパリティ情報を取得するステップと、
    前記パリティ検査行列のm列に対応する前記パリティ更新処理で用いられた、前記各行位置に対応して前記メモリに格納されているビット情報を、前記取得された新たなパリティ情報に置き換えるステップとを含む、
    ことを特徴とする請求項8記載の低密度パリティチェック符号復号方法。
JP2004193767A 2004-06-30 2004-06-30 低密度パリティチェック符号復号器及び方法 Expired - Fee Related JP4282558B2 (ja)

Priority Applications (7)

Application Number Priority Date Filing Date Title
JP2004193767A JP4282558B2 (ja) 2004-06-30 2004-06-30 低密度パリティチェック符号復号器及び方法
TW094120025A TWI261973B (en) 2004-06-30 2005-06-16 Decoder and decoding method for decoding low-density parity-check codes with parity check matrix
DE602005010150T DE602005010150D1 (de) 2004-06-30 2005-06-17 Message-Passing Decodierung für Low-Density Parity-Check (LDPC) Codes mittels einer Pipeline-Verarbeitung der Knotenberechnung
EP05105370A EP1612948B1 (en) 2004-06-30 2005-06-17 Message-passing decoding of low-density parity-check (LDPC) codes using pipeline node processing
US11/168,329 US7500168B2 (en) 2004-06-30 2005-06-29 Decoder and decoding method for decoding low-density parity-check codes with parity check matrix
CNA2005100818425A CN1716786A (zh) 2004-06-30 2005-06-30 用奇偶校验矩阵对低密度奇偶校验码解码的解码器和方法
KR1020050057667A KR100738864B1 (ko) 2004-06-30 2005-06-30 패리티 체크 행렬을 갖는 저밀도 패리티 체크 코드를디코딩하는 디코더 및 디코딩 방법

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2004193767A JP4282558B2 (ja) 2004-06-30 2004-06-30 低密度パリティチェック符号復号器及び方法

Publications (2)

Publication Number Publication Date
JP2006019889A JP2006019889A (ja) 2006-01-19
JP4282558B2 true JP4282558B2 (ja) 2009-06-24

Family

ID=34978836

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004193767A Expired - Fee Related JP4282558B2 (ja) 2004-06-30 2004-06-30 低密度パリティチェック符号復号器及び方法

Country Status (7)

Country Link
US (1) US7500168B2 (ja)
EP (1) EP1612948B1 (ja)
JP (1) JP4282558B2 (ja)
KR (1) KR100738864B1 (ja)
CN (1) CN1716786A (ja)
DE (1) DE602005010150D1 (ja)
TW (1) TWI261973B (ja)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2008526164A (ja) * 2004-12-29 2008-07-17 インテル・コーポレーション 3ストライプ・ギルバート低密度パリティ検査符号
JP4492352B2 (ja) * 2005-01-05 2010-06-30 日本電気株式会社 復号装置及びその方法並びにプログラム
US7634710B2 (en) * 2005-03-25 2009-12-15 Teranetics, Inc. Efficient decoding
JP4519694B2 (ja) * 2005-03-29 2010-08-04 財団法人北九州産業学術推進機構 Ldpc符号検出装置及びldpc符号検出方法
JP2006339799A (ja) * 2005-05-31 2006-12-14 Toshiba Corp イレギュラー低密度パリティチェック符号復号器及び方法
US8832326B1 (en) * 2005-11-01 2014-09-09 Xilinx, Inc. Circuit and method for ordering data words
US8819518B2 (en) 2005-12-01 2014-08-26 Thomson Licensing Apparatus and method for decoding low density parity check coded signals
JP4807063B2 (ja) 2005-12-20 2011-11-02 ソニー株式会社 復号装置、制御方法、およびプログラム
US8271850B2 (en) * 2005-12-29 2012-09-18 Intel Corporation Fast low-density parity-check code encoder
US7783951B2 (en) * 2006-02-09 2010-08-24 NEC Laboratories, America, Inc. Multiplexed coding for user cooperation
JP5215537B2 (ja) * 2006-06-28 2013-06-19 三星電子株式会社 情報符号化装置、情報復号装置、情報符号化方法、および情報復号方法
US7647548B2 (en) * 2006-07-31 2010-01-12 Agere Systems Inc. Methods and apparatus for low-density parity check decoding using hardware-sharing and serial sum-product architecture
US8020508B2 (en) * 2006-09-19 2011-09-20 The Board Of Regents Of The University Of Oklahoma Methods and apparatus for depositing nanoparticles on a substrate
US7644339B2 (en) 2006-10-02 2010-01-05 Broadcom Corporation Overlapping sub-matrix based LDPC (low density parity check) decoder
JP4780027B2 (ja) * 2007-04-27 2011-09-28 ソニー株式会社 復号装置、制御方法、及びプログラム
US8359522B2 (en) 2007-05-01 2013-01-22 Texas A&M University System Low density parity check decoder for regular LDPC codes
JP4760769B2 (ja) * 2007-05-15 2011-08-31 住友電気工業株式会社 復号回路及び部分処理回路
US20090100313A1 (en) * 2007-10-11 2009-04-16 The Royal Institution For The Advancement Of Learning/Mcgill University Methods and apparatuses of mathematical processing
US8161348B2 (en) * 2008-02-05 2012-04-17 Agere Systems Inc. Systems and methods for low cost LDPC decoding
WO2009123728A1 (en) * 2008-03-31 2009-10-08 Sirius Xm Radio Inc. Efficient, programmable and scalable low density parity check decoder
CN101262231B (zh) * 2008-04-25 2011-09-28 浙江大学 一种块状低密度校验码的译码方法及可重构多模式译码器
WO2009156935A1 (en) * 2008-06-23 2009-12-30 Ramot At Tel Aviv University Ltd. Using damping factors to overcome ldpc trapping sets
US8370711B2 (en) 2008-06-23 2013-02-05 Ramot At Tel Aviv University Ltd. Interruption criteria for block decoding
US20090319860A1 (en) * 2008-06-23 2009-12-24 Ramot At Tel Aviv University Ltd. Overcoming ldpc trapping sets by decoder reset
US8201068B2 (en) * 2009-01-06 2012-06-12 Mediatek Inc. Method for generating parity-check matrix
JP5316096B2 (ja) * 2009-03-05 2013-10-16 日本電気株式会社 エラー検出機能付き演算回路、および演算回路のエラー検出方法
JP4799637B2 (ja) * 2009-04-15 2011-10-26 株式会社モバイルテクノ 低密度パリティチェック符号復号装置及び方法
JP4660605B2 (ja) 2009-05-28 2011-03-30 株式会社東芝 復号装置、復号方法及び磁気ディスク装置
KR20110124659A (ko) 2010-05-11 2011-11-17 삼성전자주식회사 저밀도 패리티 검사 부호를 사용하는 통신 시스템에서 계층적 복호 장치 및 방법
JP5171997B2 (ja) * 2011-06-20 2013-03-27 パナソニック株式会社 復号方法及び復号装置
KR102254102B1 (ko) * 2015-01-23 2021-05-20 삼성전자주식회사 메모리 시스템 및 메모리 시스템의 동작 방법

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2799592B1 (fr) 1999-10-12 2003-09-26 Thomson Csf Procede de construction et de codage simple et systematique de codes ldpc
US6539367B1 (en) 2000-05-26 2003-03-25 Agere Systems Inc. Methods and apparatus for decoding of general codes on probability dependency graphs
US6938196B2 (en) * 2001-06-15 2005-08-30 Flarion Technologies, Inc. Node processors for use in parity check decoders
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
AU2003249708A1 (en) 2002-07-03 2004-01-23 Hughes Electronics Corporation Method and system for memory management in low density parity check (ldpc) decoders
US6829308B2 (en) 2002-07-03 2004-12-07 Hughes Electronics Corporation Satellite communication system utilizing low density parity check codes
US20040019845A1 (en) 2002-07-26 2004-01-29 Hughes Electronics Method and system for generating low density parity check codes
US7222289B2 (en) 2002-09-30 2007-05-22 Certance Llc Channel processor using reduced complexity LDPC decoder
KR100502609B1 (ko) * 2002-11-21 2005-07-20 한국전자통신연구원 Ldpc 코드를 이용한 부호화기 및 부호화 방법
JP4062435B2 (ja) 2002-12-03 2008-03-19 日本電気株式会社 誤り訂正符号復号装置
KR100502608B1 (ko) * 2002-12-24 2005-07-20 한국전자통신연구원 계산이 간단한 저밀도 패리티 검사 부호를 위한 메시지 전달 복호기
KR100996029B1 (ko) * 2003-04-29 2010-11-22 삼성전자주식회사 저밀도 패리티 검사 코드의 부호화 장치 및 방법
KR20040101743A (ko) * 2003-05-26 2004-12-03 삼성전자주식회사 통신 시스템에서 저밀도 패리티 검사 코드의 복호 장치 및방법
KR100594818B1 (ko) * 2004-04-13 2006-07-03 한국전자통신연구원 순차적 복호를 이용한 저밀도 패리티 검사 부호의 복호장치 및 그 방법
US7178880B2 (en) * 2004-06-15 2007-02-20 Andersen James H Wheel centering pin, kit and method
US7181676B2 (en) * 2004-07-19 2007-02-20 Texas Instruments Incorporated Layered decoding approach for low density parity check (LDPC) codes

Also Published As

Publication number Publication date
US7500168B2 (en) 2009-03-03
EP1612948A1 (en) 2006-01-04
KR100738864B1 (ko) 2007-07-16
DE602005010150D1 (de) 2008-11-20
TW200607248A (en) 2006-02-16
JP2006019889A (ja) 2006-01-19
TWI261973B (en) 2006-09-11
KR20060048750A (ko) 2006-05-18
EP1612948B1 (en) 2008-10-08
CN1716786A (zh) 2006-01-04
US20060005105A1 (en) 2006-01-05

Similar Documents

Publication Publication Date Title
JP4282558B2 (ja) 低密度パリティチェック符号復号器及び方法
JP2006339799A (ja) イレギュラー低密度パリティチェック符号復号器及び方法
US7373581B2 (en) Device, program, and method for decoding LDPC codes
US7127659B2 (en) Memory efficient LDPC decoding methods and apparatus
JP4519694B2 (ja) Ldpc符号検出装置及びldpc符号検出方法
JP5483875B2 (ja) Ldpc符号のブロックおよびレートに独立な復号の方法および装置
EP3092717B1 (en) Decoding of non-binary ldpc codes
JP4320418B2 (ja) 復号装置および受信装置
JP4651600B2 (ja) 低密度パリティ検査復号器における検査ノード更新方法
JP2006148937A (ja) 統合ノード処理を用いる低密度パリティ検査符号の復号方法及び装置
JPWO2007007801A1 (ja) 通信装置および復号方法
CN114499541A (zh) 分层译码方法、装置、终端设备及介质
JP4551740B2 (ja) 低密度パリティチェック符号復号器及び方法
JP5148586B2 (ja) 復号装置および復号方法
US11201629B2 (en) Low latency sequential list decoding of polar codes
CN102696176B (zh) 译码装置
JP2006340016A (ja) 誤り訂正符号復号装置及びそれを用いた復号方法
JP2007281771A (ja) 誤り訂正復号装置および誤り訂正復号方法
Kim Improved trellis-based decoder for non-binary LDPC codes
CN110832783B (zh) 多内核极化码解码
KR101221062B1 (ko) 가변 usc 부호를 이용한 부호화 및 복호화 방법
Xin et al. Efficient check node update implementation for normalized min-sum algorithm
KR20180010535A (ko) Ldpc 복호화기의 슬라이스 절감 장치 및 그 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20060531

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20081118

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090116

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: 20090303

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20090317

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120327

Year of fee payment: 3

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20130327

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20140327

Year of fee payment: 5

LAPS Cancellation because of no payment of annual fees