JP5199463B2 - ターボldpc復号 - Google Patents

ターボldpc復号 Download PDF

Info

Publication number
JP5199463B2
JP5199463B2 JP2011512624A JP2011512624A JP5199463B2 JP 5199463 B2 JP5199463 B2 JP 5199463B2 JP 2011512624 A JP2011512624 A JP 2011512624A JP 2011512624 A JP2011512624 A JP 2011512624A JP 5199463 B2 JP5199463 B2 JP 5199463B2
Authority
JP
Japan
Prior art keywords
matrix
parity check
pcnp
bit
evaluation value
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
JP2011512624A
Other languages
English (en)
Other versions
JP2011522502A (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.)
Qualcomm Inc
Original Assignee
Qualcomm Inc
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 Qualcomm Inc filed Critical Qualcomm Inc
Publication of JP2011522502A publication Critical patent/JP2011522502A/ja
Application granted granted Critical
Publication of JP5199463B2 publication Critical patent/JP5199463B2/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/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/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/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
    • 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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • 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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • 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/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • H03M13/1122Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule storing only the first and second minimum values per check node
    • 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/118Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure
    • 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/63Joint error correction and other techniques
    • H03M13/635Error control coding in combination with rate matching
    • 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/65Purpose and implementation aspects
    • H03M13/6566Implementations concerning memory access contentions

Description

発明の技術分野
ここに記載された実施例は、低密度パリティチェック符号化および復号に関係する。
関連技術の解説
低密度パリティチェック(Low−density parity−check:LDPC)コードは、希薄な(つまり低密度)パリティチェックマトリックスを使用する線形のブロックコードである。パリティチェックマトリックスは、1と0の要素値を備え、もし、各行と列に少ししか1が存在しないならば、希薄であると考えられる。例えば、希薄なn×mパリティチェックマトリックスにおいて、w<<nおよびw<<mである、ここで、wが各列の1の数で、wが各行の中の1の数である。
タナー(Tanner)グラフは、それらは2部構成のグラフであり、LDPCコードを表わすために一般に使用される。タナーグラフはn変数ノードおよびmチェックノードを含む。また、変数ノードとチェックノードとの間の結合(すなわち、エッジ)は、n×mパリティチェックマトリックスにおける1の値に相当する。例えば、マトリックス要素hij=1は、j番目のチェックノードがi番目の変数ノードに結合されることを示す。
LDPCコードのために構成された復号アルゴリズムは、典型的に、メッセージパッシング(message−passing)アルゴリズムのような反復する手順を使用する。最初のステップは、受信データビット値に一時的に変数データビットをセットし、チェックノードにそれらの値を送ることを含む。各チェックノードが、各変数ノードに返送されるために、多数の変数ノードから受信される変数データビット値を使用して、応答メッセージを計算する第2のステップがこれに続く。
第2のステップの間、i番目のチェックノードは、それが接続され、j番目の変数ノードのデータビット値は何であるべきであるかを決めるためにパリティチェック方程式においてそれらの値を使用している他の変数ノードからの受信データビット値だけの使用により、j番目の変数ノード用の応答メッセージを計算する。i番目のチェックノードは、同様にその他の記録変数ノードのための特有の応答メッセージを計算する。i番目のチェックノードはその関係する変数ノードの各々に応答メッセージを送信する。
第3のステップの初めに、j番目の変数ノードはi番目のチェックノードから応答メッセージを受け取り、別のチェックノードから少なくとも1つの追加のチェックノードの応答メッセージを受け取る。そして、その評価されるデータビット値を更新するために、それは決定プロセスにおいてこれらの応答メッセージ(すなわち、提案)およびそのオリジナルの受信データビット値を使用する。変数ノードがそれぞれのチェックノードにそれらの更新データビット値を送るときに、後の反復が始まる。
復号は、典型的に、非常に、計算上複雑なプロセスである。計算量を軽減するための技術は、増加したメモリ必要量および相互接続の複雑さを含む他の重要な障害という結果になる。
ここに開示された実施例は、IEEE802.15.3cプロトコルによって定義されたような60GHzのミリメートル波システムにおいて使用されるシングルキャリアおよびOFDM信号を使用するシステムに有利であり得る。しかしながら、他の応用が同様の利点から利益を得るように、この発明はそのようなシステムに限定されることは意図されない。
反復する低密度パリティチェック(LDPC)復号化システムは、ビット評価値を記憶するために構成される第1のシフトレジスタ手段と、メッセージを生成するためにビット評価値を処理するために構成されるパリティチェック処理手段と、更新ビット評価値を生成するためにビット評価値とメッセージを組み合わせるために構成される結合手段、およびビット評価値の記憶とアクセスを容易にするために更新ビット評価値を置換するために構成される固定置換(fixed permutation)手段とを備える。第2のシフトレジスタ手段はメッセージを記憶し、また、減算手段は、更新ビット評価値から以前のサイクルの予め決定された数で生成されたメッセージを減算する。
第1のシフトレジスタ手段は、例という意図で、しかし限定しないで、複数のシフト段を含むシフトレジスタのような、記憶されるデータビットのシフトを実行するよう構築されたコンピュータのハードウェア要素を含み得る。
パリティチェック処理手段は、例という意図で、しかし限定しないで、複数のパリティチェックノードプロセッサ(parity−check node processor:PCNP)を含むPCNPの1つまたはそれより多いバンクを含み得る。パリティチェック処理手段は、パリティチェックサブマトリクスに対応するスーパーコードの復号のために構成され得る。パリティチェック処理手段は、単一のsビットおよび第1と第2の最小値の単一の組を生成する複数のPCNP出力で演算するために構成されたコンバータ手段を含み得る。そのようなコンバータ手段はマルチレートLDPC復号をサポートするのに有用である。
固定置換手段は、例という意図で、しかし限定しないで、複数の入力と、複数の出力と、複数のシフトされるベースマトリックス演算子とを備え、複数の出力の1つと結合されるパーミュータ(permuter)と、および複数のシフトされたベースマトリックスの演算子に複数の入力を結合する複数の固定コネクタクタとを含み得る。
第2のシフトレジスタ手段は第1のシフトレジスタ手段において使用されたものとして同様の構造を含み得る。
この発明のいくつかの実施例では、パリティチェック処理手段は圧縮された出力信号を生成するために構成され得る。例えば、パリティチェック処理手段は、sビットを生成する複数の符号ビットでXOR演算を実行し、各入力信号に対応する複数の信頼性値から第1と第2の最小値を計算し、複数の指標ビットを生成するために構成され得て、その複数の指標ビットの各々は、その複数の信頼性値の対応する一つが第1のまたは第2の最小値であるかどうかを示す。
この発明の別の実施例において、与えられたパリティチェックマトリックスについてのパリティチェックベクトルを計算する方法は、パリティチェックマトリックスを第1のマトリックスおよび第2のマトリックスに分割することを含む。第1のマトリックスは、データベクトルについて演算するために構成され、また、第2のマトリックスはパリティチェックベクトルについて演算するために構成される。第2のマトリックスは、処理を単純化する正方形マトリックスの三角形配列を使用する。データベクトルについての第1のマトリックス演算の結果である中間のベクトルは計算され、それはパリティチェックベクトルの計算を可能にする。第2のマトリックスの三角形配列は方程式のシーケンスを生成するために使用され、それらは容易に解かれる。
特有の実施例がここに記載されるが、これらの実施例の変更や置換は、発明の範囲および精神の中に入る。いくつかの利益および好ましい実施例の有利な点は言及されるが、発明の範囲は特別の利点、用途あるいは目的に限定されるようには意図されない。むしろ、発明の実施例は、異なるワイヤレス技術、システム構成、ネットワークおよび伝送プロトコルに広く適用可能になるように意図され、それらのうちのいくらかは、例という意図で、図および好ましい実施例の次の記載において例示される。詳細な記述および図面は、添付された請求項とそれの等価なものによって定義される発明の範囲を限定するよりむしろ単に発明の実例である。
本発明に従う実施例は以下の図を参照して理解される。
図1Aは、発明の実施例に従うLDPC復号器のブロック図である。 図1Bは、パリティチェックマトリックスプロセッサのコンポーネントを表す。 図2は、発明の実施例に従って動作するように構成されたシフトレジスタのブロック図である。 図3は、発明の実施例に従うLDPC復号方法のブロック図である。 図4は、発明の実施例に従う効率的なLDPC符号化方法のブロック図である。 図5は、発明の実施例に従うレート1/2の復号アーキテクチャを示す。 図6は、発明の実施例においてインプリメントされ得るLDPC復号器のブロック図である。 図7Aは、発明の実施例に従う高速ターボ−LDPC復号器のブロック図である。 図7Bは、発明の実施例に従うパリティチェックノードプロセッサのバンクのブロック図である。 図8Aは、発明の実施例に従う第1の反復中のLDPC復号器の状態を例示する。 図8Bは、発明の実施例に従う第2の反復中のLDPC復号器の状態を例示する。 図8Cは、発明の実施例に従う第3の反復中のLDPC復号器の状態を例示する。 図8Dは、発明の実施例に従う第4の反復中のLDPC復号器の状態を例示する。 図9Aは、シフトレジスタ741の第1段におけるベクトルが1つの反復中にどのように処理されるか例示する。 図9Bは、シフトレジスタ741の第1段におけるベクトルが1つの反復中にどのように処理されるか例示する。 図9Cは、シフトレジスタ741の第1段におけるベクトルが1つの反復中にどのように処理されるか例示する。 図10は、発明の実施例に従う圧縮したPCNP信号出力のためのフレームフォーマットを示す。 図11は、発明の実施例に従う第1と第2の最小値を計算する方法を示す。 図12は、発明の実施例に従う第1と第2最小値を計算するための代わりの方法を示す。 図13Aは、発明の実施例に従う固定結合を有するパーミュータのブロック図である。 図13Bは、発明の実施例に従う固定結合を有するパーミュータのブロック図である。 図13Cは、発明の実施例に従う固定結合を有するパーミュータのブロック図である。 図14は、高速処理のためのパイプライン化された構成を使用する復号器のブロック図である。 図15は、発明の実施例に従うLDPC復号方法のフロー図である。 図16は、発明の別の実施例に従うLDPC復号方法のフロー図である。
好適な実施例の説明
発明がさまざまな修正および代替の形式に影響を受けやすい一方、それの特有の実施例は図面において例によって示され、ここに詳細に記載された。しかしながら、それが発明を開示された特有の形式に限定するようには意図されないことは理解されるべきである。しかし、むしろ、発明は、請求項によって定義されるような発明の精神および範囲に入る修正、等価のもの、および代替をすべてカバーするためのものである。
発明の1つの実施例に従って、LDPC符号器は、KデータビットとM=N−Kパリティチェックビットを含むビットNの合計数を有するコードワードCNx1を生成するためにデータベクトルdKx1上で動作する生成マトリックスGNxKを使用する。
Figure 0005199463
与えられたメッセージベクトルdKx1については、符号器はパリティチェックベクトルpMx1を生成し、コードワードcNx1を生成する。Hc=0となるような
Figure 0005199463
ここでHはパリティチェックマトリックスを表す。LDPC復号器は、HKxNNx1=0によって定義されたパリティチェックマトリックスHKxNを使用する。パリティチェックマトリックスHKxNの行はそれぞれタナーグラフの特有のパリティチェックノードに相当する。
図1Aは、発明の実施例に従うLDPC復号器100のブロック図である。LDPC復号器100は、複数K個の変数ノードプロセッサ101.1−101.Kおよび複数M個のパリティチェックプロセッサ102.1−102.Mを含む。発明の1つの実施例では、特有のパリティチェックノードのパリティチェックはパリティチェックプロセッサ102.1の102.Mのうちの1つによって行なわれ得る。したがって、各パリティチェックノードは、それぞれのそれ自身のパリティチェックプロセッサ102.1の102.Mを有し得る。同様に、各変数ノードでの演算は専用の変数ノードプロセッサ101.1−101.Kによって行なわれ得る。したがって、各変数ノードはそれぞれそれ自身の変数ノードプロセッサ101.1−101.Kを有し得る。
異なる実施例は、ハードウェアとソフトウェアのさまざまな組合せを含んでいる異なる処理構成を使用し得る。例えば、単一のハードウェアコンポーネントは、全てのパリティチェックノードについてパリティチェック処理を行なうように構成され得る。そのようなハードウェアコンポーネントは、特有のパリティチェックノードのためのパリティチェック処理を行なうために各々構成され、コンピュータ読み取り可能な媒体上に存在する複数のプログラム可能なソフトウェアモジュールあるいはコンピュータプログラムを含み得る。
ソフトウェアモジュールは、ここに使用されるように、コンピュータプログラムの一部を指す。この場合、特有のソフトウェアモジュールおよび/またはそれが存在するデジタル計算機システムと結合するコンピュータプログラムは、パリティチェックプロセッサと呼ばれる。同様に、複数のソフトウェアモジュールおよび/またはコンピュータプログラムを有する単一のハードウェアコンポーネントは、複数の変数ノードで処理を行なうために構成され得る。したがって、特有のソフトウェアモジュールおよび/またはそれが存在するデジタル計算機システムと結合するコンピュータプログラムは、変数ノードプロセッサと呼ぶことができる。
発明の1つの実施例に従って、パリティチェックプロセッサ102.1−102.Mは、図1で示されるように、パリティチェックマトリックスプロセッサ110を備える。パリティチェックマトリックスプロセッサ110は、その要素がサブマトリクスであるKbase×NbaseマトリックスとしてK×NパリティチェックマトリックスHKxNを構築するように構成されており、そこでは、各サブマトリックスはNperm×Nperm正方形マトリックスである。したがって、
Figure 0005199463
である。Nperm×Nperm正方形マトリックスはそれぞれ、ベースマトリックスジェネレータ111によって構築された零マトリックスあるいは循環的にシフトされたNperm×Nperm恒等マトリックス(identity matrix)のいずれかである。
発明の1つの実施例では、Kbase×Nbaseマトリックスは、正方形サブマトリックスのマトリックス配置を含む。正方形サブマトリックスはそれぞれ、ベースマトリックスジェネレータ111によって生成される1つまたはそれより多いサイクリックシフトされたベースマトリックスを使用するサブマトリクスジェネレータ112によって生成される。例えば、正方形サブマトリクスエレメントはそれぞれ、Nperm×Npermの零マトリックス、あるいは循環的にシフトされるNperm×Npermの恒等マトリックスかもしれない。発明の代わりの実施例では、サイクリックシフトされるNperm×NpermDマトリックスあるいはQマトリックスは、サイクリックシフトされる恒等マトリックスの代わりに使用され得る。サブマトリックスの各行とサブマトリックスの各列はそれぞれたった1つの非零のNperm×Npermマトリックスのみを含む。したがって、サブマトリックスの異なる行に対応するパリティチェック方程式は、直交的である。
サブマトリックスは、ここで参照により組み込まれる2006年8月3日に出願された米国特許出願11/462,241に記載されたように、一つの組のパターンの少なくとも一つの組の入口ポイントを利用することにより、コンパニオンマトリックスおよびシフトレジスタを使用して、構成され得る。図2は、4つの段201−204、入口ポイント210、および段201−204をリンクする遷移211−214のパターンを有するシフトレジスタのブロック図である。いくつかの実施例において、シフトレジスタは、入口ポイント210および/または遷移211−214のパターンを変更するのに適合され得る。サブマトリックスジェネレータは、そのようなシフトレジスタあるいは発明の実施例に関して適したシフトレジスタの動作をシミュレートするように構成されたハードウェアおよびソフトウェアの任意の組合せも含み得る。
コンパニオンマトリックス(companion matrix)におけるマトリックス要素の値は、パリティチェックマトリックスにおいて使用された各Nperm×Nperm恒等マトリックスに適合されたサイクリックシフトの数に相当する。発明の1つの実施例において、パリティチェックマトリックスN×Nの正方形のサブマトリクスは、前もって決定されたシフトパターンおよび前もって決定された入口ポイントを有するN段のシフトレジスタに長さNベクトルを提供することにより構築される。各ベクトル要素の値は恒等マトリックスのサイクリックシフトの数字に相当する。一旦シフトレジスタがベクトルによって十分に占められると、各ベクトル要素の値は、N×Nの正方形コンパニオンサブマトリックスおける特有の列に割り当てられる。その値は、同じ列に常に割り当てられるが、それがその列において占める行は、その値がどのシフトレジスタの段(したがってパターン)にあるかに依存する。
各値はそれぞれ、コンパニオンサブマトリクスの固有の行と列に置かれる。したがって、対応するパリティチェックサブマトリクスは、各列および各行に対して単一の非零の値(例えばサイクリックシフトされる恒等マトリックス)を持っている。発明のいくつかの実施例では、シフトレジスタの十分な個数に追従する1つまたはそれより多いサイクルが使用され得る。そのような場合、特有のベクトル値が割り当てられるマトリックス行は異なるサイクルのために変化するだろう。
データのレートはKbase/Nbaseである。異なるデータのレートを達成するために、KbaseおよびNbaseの一方または両方は変更され得る。LDPC復号器は多数のデータのレートを処理するよう構成され得る。例えば、レート1/2、レート3/4、およびレート7/8が使用され得る。
図3は、発明の実施例に従うLDPC復号方法のブロック図である。初期化ステップ300は、受信されるコードワードの値r、・・・rN−1に対して変数データビットv、・・・vN−1をセットし、それらは、1つまたはそれより多いパリティチェックプロセッサ(図1Aにおいて示されるパリティチェックプロセッサ102.1−102.Mのような)へ送られ得る。パリティチェックステップ301は、受信される変数データビットからのメッセージを計算し、それらは、1またはそれより多い可変ノードプロセッサ(図1Aにおいて示される変数ノードプロセッサ101.1−101.Kのような)へ送られ得る。一つの例において、パリティチェックノード0は、それが、そこからメッセージ
Figure 0005199463
を計算する方程式c+c+c=0に対応する変数データビットv, v, vを受け取り、そこでは、E(0→b)は、パリティチェックノード0から変数ノードbまで送信されるメッセージを表す。
変数−更新ステップ302は、メッセージEを処理し、また硬および軟判定の任意の組合せによって変数データビットを更新する。例えば、変数ノード0はパリティチェックノード0および2からメッセージを受け取り、以前の変数データビット評価値
Figure 0005199463
を更新する。
Figure 0005199463
更新変数データビット評価値は、予め決定された反復回数に対して、あるいは予め決定された基準に遭遇するまで、パリティチェックステップ301にフィードバックされ得る(303)。典型的には、最終の変数の更新302は硬判定を含むだろう。
図4は、発明の実施例で用いる効率的なLDPC符号化方法のブロック図である。パリティチェックマトリックスHは2つの正方形マトリックスHおよびHに分割される(401)。
Figure 0005199463
パリティチェックマトリックスの定義Hc=0は
Figure 0005199463
を要求する。Hc=0の必要性は、
Figure 0005199463
として表され、ここでvは、パリティチェックベクトルpを計算するのに使用された中間ベクトルである。パリティチェックベクトルpは、v=Hdによって定義されるベクトルvを最初に計算する(402)によって解かれ、ここで、dとHは知られている。そして、Hp=vはpを解くために使用されるだろう。
1つの実施例において、Hは、以下の示されたように0でない値を有する正方形サブマトリックスA、B、C、D、E、F、Q、R、S、およびTの配列を備える三角形のマトリックスを含む。
Figure 0005199463
この場合、vとpはサブベクトル
Figure 0005199463
で表わされる。そして、そこでは関係Hp=vは
Figure 0005199463
によって表現され得る。パリティチェックベクトルpは、容易に解かれる方程式の単純なシーケンスを生成するためにパリティチェックマトリックスHpの三角形の構造を利用することにより計算され得る(403)。
Figure 0005199463
発明の実施例では、符号器と符号化手法は、パリティチェックマトリックスHを対応するM×KのマトリックスHとM×MのマトリックスHに分割することによってレート1/2、3/4および7/8のようなさまざまな符号化レートのうちのどれでも提供するように構成され得る。発明のさまざまな実施例は、発明の方法を実行するようにプログラムされたデジタルコンピュータシステム、および/または発明の任意の方法をインプリメントするコンピュータプログラムを記憶するコンピュータ読み取り可能な媒体を含み得る。
図5は、発明の実施例に従うレート1/2の復号アーキテクチャを示す。受信データシーケンスrからのデータビットは、複数のLDPC復号器521−524の各々に結合され、それらはサブマトリックス
Figure 0005199463
に相当する。最初のサイクル中に、受信されるデータストリームおける第1のスーパーコードc
Figure 0005199463
に対応する)に属するすべてのビットに対する外部情報は、第1のLDPC復号器521によって計算される。同様に、対応するマトリックス
Figure 0005199463
の第2、第3、第4のスーパーコード(c、c、及びc)に対する外部情報は、LDPC復号器522、523および524によってそれぞれ計算される。
第1のLDPC復号器521によって生成された外部情報は、ディインタリーバ531によってディインタリーブされ、第2、第3 第4のシグナルコンバイナ502−504によって結合され、一連のサイクルにおいて複数個のインタリーバ512、513および514によってインターリーブされるためにアプリオリ(a prior)情報として提供される。従って、第1のシグナルコンバイナ501は他のLDPC復号器522−524からのアプリオリ情報を組み合わせるように構成され、また、結合される信号は第1のLDPC復号器521によって処理される前にインタリーバ511によってインターリーブされる。第1のLDPC復号器521はその外部情報を更新する。
LDPC復号器の各々は他のLDPC復号器によって生成されたアプリオリ情報が提供される。例えば、第2のLDPC復号器522は復号器521、523および524からアプリオリ情報を受け取り、その関連する外部の信頼性の値を更新する。第3のLDPC復号器523は復号器521、522および524からアプリオリ情報を得て、その関連する外部の信頼性の値を更新する。同様に、第4のLDPC復号器524は復号器521−523からアプリオリ情報を得て、その外部の信頼性の値を更新する。第1のサイクルにおいて生成される更新外部情報は、連続するサイクルにおいて予め決定された回数、あるいは1つまたはそれより多い測定基準が満足されるまで繰り返されることができる。最後のサイクルが完了するときに、すべての復号器521−524からの外部情報はコンバイナ505に組み合わせられ、復号されるビットを生成するためにシンボルエスティメイタ(symbol estimator)515によって処理される。
図6は、発明の実施例中でインプリメントされ得るLDPC復号器のブロック図である。単一のLDPC復号器603は複数の復号動作を行なうのに使用され、また、外部情報はすべてメモリ(例えばメモリバンク601.1−601.B)に記憶される。プログラマブルリードネットワーク602は、メモリバンク601.1−601.BとLDPC復号器603の間で結合される。プログラマブルライトネットワーク604はメモリバンク601.1−601.BにLDPC復号器603を結合する。この復号器アーキテクチャのバリエーションは、M.マンスール(Mansour)らの「高処理能力のLDPC復号器(High−Throughput LDPC Decoders)」、超LSIシステム(very large scale integration system)についてのIEEEのトランザクション11巻、2003年12月6日)に示されたものように使用され得る、
図7Aは、発明の実施例に従う高速ターボ−LDPC復号器のブロック図である。ターボ−LDPC復号器は、パリティチェックサブマトリックス
Figure 0005199463
に対応するスーパーコードc、c、c3およびcに属するビットを反復して復号する。
送信されるコードワードcNx1に対応する受信される信号rNx1は、各々のサイズNperm×1であるNbaseのベクトル
Figure 0005199463
へ分割され、また、複数のシフトレジスタ741−748へ結合される。パリティチェックノードプロセッサ(PCNP)721の第1のバンクは、各シフトレジスタ741−748(例えばr(6)、r(23)…、r29(24))の第1段を含む入力を処理するように構成された複数Nperm個のPCNP(図7Bにおいて示されたPCNP751−760によって表された)を含んでいる。この場合、第1のPCNPバンク721の第1のPCNP751は、ブロックr(6)、r(23)…、r29(24)において第1の要素を処理する。第1のPCNPバンク721の第2のPCNP752は、ブロックr(6)、r(23)・・・およびr29(24)において第2の要素を処理する。第1のPCNPバンク721の第NpermのPCNP760は、ブロックr(6)、r(23)・・・およびr29(24)において第Npermの要素を処理する。これは、再整理なしで、結合の1対1のインデキシングを可能にする。
図7Bにおいて、第1のPCNPバンク721のPCNP751−760の各々は、8つの入力を含み、それは8つのブロックシフトレジスタ741−748に相当する。最初に、ブロックシフトレジスタは、図7に示されるような、受信信号rがロードされる。そのローディングが1つのクロックサイクルに生じ得る。代わりの実施例において、ローディングが、そのまま参照により組み込まれる2006年8月3日に出願された米国特許出願第11/462,241号の図10−15に示されるシフトレジスタパターンのような1つまたはそれより多い関係するシフトレジスタパターンに関して多数の(例えば4)クロックサイクルにおいて生じ得る。この位置のシフトレジスタ741−748はパリティチェックサブマトリックス
Figure 0005199463
に相当する。それは、4つの構成する復号器のうちの1つに関係する。
第1の反復(それは、図8Aにおいて例示される)において、LDPC復号器は、パリティチェックサブマトリックス
Figure 0005199463
に対応する第1のスーパーコードc1に関する受信されるデータビットを復号する。この実施例において、サブマトリックス
Figure 0005199463
はN=4によって特徴づけられる。したがって、LDPC復号器は4つのパリティチェックノードプロセッサバンク721−724を含み、また、バンク721−724はそれぞれNperm=36のPCNPを含む。第1のバンク721は、
Figure 0005199463
の第1のNperm行に相当し、第2のバンク722は、
Figure 0005199463
の第2のNperm行に相当し、第3のバンク723は、
Figure 0005199463
の第3のNperm行に相当し、第4のバンク724は、
Figure 0005199463
の第4のNperm行に相当する。
PCNPは、メッセージを生成するために入力ベクトルを処理する。例えば、第1のPCNPバンク721は、メッセージ
Figure 0005199463
を生成するためにr(6)、r(23)・・・r29(24)を処理し、それは第1のブロックシフトレジスタ711の第1段に記憶される。メッセージの要素はエキスパンダ701によって拡張され、次に、ブロックシフトレジスタ741に示されるオリジナルのソフトビットに加算される。第2のPCNPバンク722は、メッセージ
Figure 0005199463
を生成するためにr(35)、r(15)・・・r28(11)を処理し、それは第2のブロックシフトレジスタ712の第1段に記憶される。第3のPCNPバンク723は、メッセージ
Figure 0005199463
を生成するためにr(6)、r(31)・・・r31(1)を処理し、それは第3のブロックシフトレジスタ713の第1段に記憶される。第4のPCNPバンク724は、メッセージ
Figure 0005199463
を生成するためにr(3)、r(10)・・・r30(30)を処理し、それは第4のブロックシフトレジスタ714の第1段に記憶される。
第1の反復中にPCNPバンク721−724によって生成されたメッセージは拡張され、次に、更新ビット評価値を生成するために対応する第1のビット評価値で合計される。例えば、第1のビット評価値r(6)は、r(6)+E[r(6)]になるように更新される。第1のビット評価値は、固定パーミュータ(fixed permuter)731−738によって置換され、また、その結果の置換されたメッセージは、ブロックシフトレジスタ741−748へ結合される。
図9A−9Cは、シフトレジスタ741の第1段におけるベクトルが1つの反復(例えば、1つのクロックサイクル)においてどのように処理されるか例示する。図9Aにおいて、受信される構成要素は、ブロックシフトレジスタ741からPCNPバンク721に結合される。図9Bでは、PCNPバンク721はメッセージを生成し、それは更新評価値+(その後、それは固定パーミュータ731によって置換される)を生成するために加算される。図9Cで、パーミュータ731はr(6)+E[r(6)]について演算J{}を実行し、それはr(6)+E[r(6)]との結果になる。そして、この値はブロックシフトレジスタ741の第3段に結合される。
図9A−9Cで例示されたプロセスは、さらに、他のシフトレジスタコンテンツに当てはまる。第1の反復の終わりに、シフトレジスタ741−748のコンテンツはパリティチェックマトリックス
Figure 0005199463
に相当する。したがって、発明の実施例に従う単一のLDPC復号器は、複数の構成するLDPC復号器に代わり得る。
図8Bにおいて示される第2の反復において、LDPC復号器は、パリティチェックサブマトリックス
Figure 0005199463
に対応する第2のスーパーコードcに関して受信されたデータビットを復号する。第1のバンク721は、
Figure 0005199463
の第1のNperm行に相当し、第2のバンク722は、
Figure 0005199463
の第2のNperm行に相当し、第3のバンク723は
Figure 0005199463
の第3のNperm行に相当し、第4のバンク724は、
Figure 0005199463
の第4のNperm行に相当する。
第1のPCNPバンク721は、メッセージ
Figure 0005199463
を生成するためにr(6)+E[r(6)]、r(23)+E[r(23)]、・・・r29(24)+E[r29(24)]を処理し、それは最初のブロックシフトレジスタ711の第1段に記憶される。第1段に前もって存在するメッセージ
Figure 0005199463
は、レジスタ711の第2段へシフトされる。第2のPCNPバンク722は、メッセージ
Figure 0005199463
を生成するためにr(35)+E[r(35)]、r(15)+E[r(15)]、・・・r28(11)+E[r28(11)]を処理し、それは第2のブロックシフトレジスタ721の第1段に記憶される。メッセージ
Figure 0005199463
は、レジスタ712の第1段から第2段へシフトされる。
第3のPCNPバンク723は、メッセージ
Figure 0005199463
を生成するためにr(6)+E[r1(6)]、r(31)+E[r(31)]、…r31(1)+E[r31(1)]を処理し、それは第3のブロックシフトレジスタ713の第1段に格納され、メッセージ
Figure 0005199463
は第1段から第2段へシフトされる。第4のPCNPバンク724は、メッセージ
Figure 0005199463
を生成するために、r(3)+E[r(3)]、r(10)+E[r(10)]、・・・r30(30)+E[r30(30)]を処理し、それは第1段に記憶され、メッセージ
Figure 0005199463
は、第4のブロックシフトレジスタ714の第1段から第2段へシフトされる。
第2の反復中の間にPCNPバンク721−724によって生成されたメッセージは、拡張され、次に、更新ビット評価値を生成する第1の反復からの対応するビット評価値で合計された。例えば、第1の反復の間に生成された評価値r(6)+E[r(6)]からの更新ビット評価値は、r(6)+E[r(6)]+E[r(6)]である。更新ビット評価値は、固定パーミュータ731−738によって置換され、また、その結果置換されたメッセージは、ブロックシフトレジスタ741−748へ結合される。
図8Cは第3の反復中にLDPC復号器の状態を例示する。LDPC復号器はスーパーコードcに関して受信されるビットを復号し、それはパリティチェックサブマトリックス
Figure 0005199463
に相当する。第1のバンク721は、
Figure 0005199463
の第1のNperm行に相当し、第2のバンク722は、
Figure 0005199463
の第2のNperm行に相当し、第3のバンク723は、
Figure 0005199463
び第3のNperm行に相当し、第4のバンク724は、
Figure 0005199463
の第4のNperm行に相当する。
第1のPCNPバンク721は、メッセージ
Figure 0005199463
を生成するためにr(6)+E[r(6)]+E[r(6)]、r(23)+E[r(23)]+E[r(23)]、・・・、r29(24)+E[r29(24)]+E[r29(24)]を処理し、それは、第1のブロックシフトレジスタ711の第1段に記憶される。第1段に前もって存在するメッセージ
Figure 0005199463
は、第2の段へシフトされ、また、第2段に前もって存在するメッセージ
Figure 0005199463
は、レジスタ711の第3段へシフトされる。
第2のPCNPバンク722は、メッセージ
Figure 0005199463
を生成するためにr(35)+E[r3(35)]+E[r(35)]、r(15)+E[r(15)]+E[r(15)]、・・・、r28(11)+E[r28(11)]+E[r28(11)]を処理し、それは第2のブロックシフトレジスタ721の第1段に記憶される。メッセージ
Figure 0005199463
は第1段から第2段へシフトされ、また、メッセージ
Figure 0005199463
は、第2段からレジスタ712の第3段へ移される。
第3のPCNPバンク723は、メッセージ
Figure 0005199463
を生成するためにr(6)+E[r(6)]+E[r(6)]、r(31)+E[r(31)]+E[r(31)]、・・・、r31(1)+E[r31(1)]+E[r31(1)]を処理し、それは、第3のブロックシフトレジスタ713の第1段に記憶される。メッセージ
Figure 0005199463
は第1段から第2段へシフトされ、また、メッセージ
Figure 0005199463
は、シフトレジスタ713の第1段から第3段へシフトされる。
第4のPCNPバンク724は、メッセージ
Figure 0005199463
を生成するためにr(3)+E[r(3)]+E[r(3)]、r(10)+E[r(10)]+E[r(10)]、・・・、r30(30)+E[r30(30)]+E[r30(30)]を処理し、それは、第4のブロックシフトレジスタ714の第1段に記憶される。メッセージ
Figure 0005199463
は第1段から第2段へシフトされ、また、メッセージ
Figure 0005199463
は、第4のブロックシフトレジスタ714の第2段から第3段へシフトされる。
第3の反復中の間にPCNPバンク721−724によって生成されたメッセージは拡張され、次に、更新ビット評価値を生成する第2の反復からの対応するビット評価値で合計された。例えば、以前の評価値r(6)+E[r(6)+E[r(6)]に対する更新評価値は、r(6)+E[r(6)]+E[r(6)]+E[r(6)]である。更新ビット評価値は、固定パーミュータ731−738によって置換され、また、その結果の置換されたメッセージは、ブロックシフトレジスタ741−748へ結合される。
図8Dは第4の反復の間のLDPC復号器の状態を例示する。LDPC復号器は、パリティチェックサブマトリクス
Figure 0005199463
に対応するスーパーコードcに関して受信ビットを復号する。第1のバンク721は、
Figure 0005199463
の第1のNperm行に相当し、第2のバンク722は、
Figure 0005199463
の第2のNperm行に相当し、第3のバンク723は、
Figure 0005199463
の第3のNperm行に相当し、第4のバンク724は、
Figure 0005199463
の4番目のNperm行に相当する。
第1のPCNPバンク721は、メッセージ
Figure 0005199463
を生成するためにr(6)+E[r(6)]+E[r2(6)]+E[r(6)]、r(23)+E[r(23)]+E[r(23)]+E[r(23)]、・・・、r29(24)+E[r29(24)]+E[r29(24)]+E[r29(24)]を処理し、それは、第1のブロックシフトレジスタ711の第1段に記憶される。 第1段に前もって存在するメッセージ
Figure 0005199463
は、第2段へシフトされ、第2段に前もって存在するメッセージ
Figure 0005199463
は、第3段へシフトされる。
第3段に前もって存在するメッセージ
Figure 0005199463
は、レジスタ711の外で結合され、エキスパンダ702によって拡張され、次に、第4の反復において生成された置換される更新ビット評価値から減算される。例えば、前の評価値r(6)+E[r(6)]+E[r(6)]+E[r(6)]のための最初の更新評価値は、r(6)+E[r(6)]+E[r(6)]+E[r(6)]+E[r(6)]である。最初の更新ビット評価値は、固定パーミュータ731−738によって置換され、また、メッセージE[r(6)]は、最終の更新ビット評価値を生成する、その結果置換されたビット評価値から減算され、それはブロックシフトレジスタ741−748に記憶される。記憶された値は、第5の反復において、LDPC復号器によって使用され、また、これらのステップは続いて起こる反復のために繰り返される。したがって、この実施例中で表されるLDPC復号器は、PCNPバンク721−724の以前の3サイクルによって生成された外部情報(すなわち、メッセージ)を取り除く。
第2のPCNPバンク722は、メッセージ
Figure 0005199463
を生成するためにr(35)+E[r(35)]+E[r(35)]+E[r(35)]、r(15)+E[r(15)]+E[r(15)]+E[r(15)]、・・・、r28(11)+E[r28(11)]+E[r28(11)]+E[r28(11)]を処理し、それは第2のブロックシフトレジスタ721の第1段に記憶される。メッセージ
Figure 0005199463
は、第1段から第2段へシフトされ、また、メッセージ
Figure 0005199463
は、レジスタ712の第2段から第3段へシフトされる。メッセージ
Figure 0005199463
はエキスパンダ701によって拡張され、レジスタ712の外で結合され、更新ビット評価値の生成のために置換されたビット評価値が減算される。
第3のPCNPバンク723は、メッセージ
Figure 0005199463
を生成するためにr(6)+E[r(6)]+E[r(6)]+E[r(6)]、r(31)+E[r(31)]+E[r(31)]+E[r(31)]、・・・、r31(1)+E[r31(1)]+E[r31(1)]+E[r31(1)]を処理し、それは、第3のブロックシフトレジスタ713の第1段に記憶される。メッセージ
Figure 0005199463
は第1段から第2段へシフトされ、また、メッセージ
Figure 0005199463
は、ブロックシフトレジスタ713の第2段から第3段へシフトされる。メッセージ
Figure 0005199463
はエキスパンダ701によって拡張して、レジスタ713の外で結合され、更新ビット評価値を生成するために置換されたビット評価値から減算される。
第4のPCNPバンク724は、メッセージ
Figure 0005199463
を生成するためにr(3)+E[r(3)]+E[r(3)]+E[r(3)]、r(10)+E[r(10)]+E[r(10)]+E[r(10)]、・・・、r30(30)+E[r30(30)]+E[r30(30)]+E[r30(30)]を処理し、それは、第4のブロックシフトレジスタ714の第1段に記憶される。メッセージ
Figure 0005199463
は第1段から第2の段へシフトされ、また、メッセージ
Figure 0005199463
は、第4のブロックシフトレジスタ714の第2段から第3段へシフトされる。メッセージ
Figure 0005199463
はエキスパンダ701によって拡張され、レジスタ714の外で結合され、更新ビット評価値の生成のために置換されたビット評価値から減算される。
図面中で表され、ここに記載された復号器のアーキテクチャのいくつかの有利な特徴は、単純で低コストのメモリアーキテクチャおよび単純な固定結合を含む。更に、発明の実施例は複雑な読み/書きネットワークあるいは複雑なプログラム可能なパーミュータの必要を回避するように構成され得る。発明の実施例の追加の特徴および利点は当業者によって評価されるだろう。
発明の1つの実施例では、各PCNPは以下のように機能するように構成される。PCNPへの信号入力はi、i、・・・、iとして表示され、ここでは、各入力符号付き大きさ表現ik=[s]を有し、ここでは、skが符号ビット(例えば、肯定な場合0、そして、否定の場合1)であり、aは、入力の信頼性を表わす。各大きさaは、a(1:m)として書かれたmビットの2進法の表現として表現され得、ここで、a(1)が最上位ビット(msb)を表わし、a(m)が最下位ビット(lsb)を表わす。
PCNPは8個の入力i、i、・・・、iを取り、8個の出力o、o、・・・、oを生成する。
先行技術のLDPCのインプリメンテーションにおいて、8個の出力o、o、・・・、o、は記憶され、また、含まれる計算は複雑である。
図10は、発明の実施例に従って圧縮されるPCNP信号出力のためのフレームフォーマットを示す。フレームフォーマットは、入力符号ビットs1…、s8 1001のXORであるsビット1000を含んでおり、
Figure 0005199463
と表記される。フレームフォーマット、さらに、M1004およびM1005の記号を含んでおり、それらは、それぞれ、a、・・・、aの記憶されたリストの第1と第2の最小値であり、また、
Figure 0005199463
として表現される。
発明の1つの実施例において、Mは、図11に示されるように、標準の登録されたまたは登録されていない最小値ツリーを使用して計算されることができる。同様に、Mは図11に示されるプロセスを複製することにより計算され得るが、Mに対応するa入力を除外する。
図12は、必要メモリを縮小するためにMおよびM(K=8)の効率的な計算に備える発明の他の実施例を示す。この実施例はハードウェアとソフトウェアのどんな組合せも使用してインプリメントされてもよい。第1のANDゲート1201は、
Figure 0005199463
で表現される、第1の最低値M(1)を生成するために入力a(1)、a(1)・・・a(1)に関する論理AND機能を提供し、ここで、
Figure 0005199463
が論理AND機能を示す。
XORゲート1211−1218の第1の組は、ANDゲート1201の出力と入力a(1)、k=1、・・・、Kに結合される。例えば、XORゲート1211は、t(1)を生成するためにM(1)およびa(1)についての論理XOR演算を提供し、XORゲート1212は、t(1)を生成するためにM(1)およびa(1)についての論理XOR演算を提供し、XORゲート1218は、t(1)を生成するためにM(1)およびa(1)についての論理XOR演算を提供する。
Figure 0005199463
(1)の値のすべてのKは、指標ビットjを生成するために加算器1241において合計される。
最小値M(2)は、合計により生成される、複数K個の合計される値を生成するために各kについての加算器1251−1258においてt(1)およびa(2)の値を合計することにより生成され、合計された値[t(1)+a(2)]を第2のANDゲート1202へ入力することが後に続き、それは、合計された値についての論理AND機能を提供し、
Figure 0005199463
と表示される。
第2の組のXORゲート1221−1228は、ANDゲート1202の出力と入力a(2)、k=1、・・・、Kの出力に結合される。XORゲート1221は、t(2)を生成するためにM(2)およびa(2)についての論理XOR演算を行なうように構成され、XORゲート1222は、t(2)を生成するためにM(2)およびa(2)についての論理XOR演算を行ない、また、XORゲート1228は、t(2)を生成するためにM(2)およびa(2)についての論理XOR演算を行なう。XORの第2の組のXORゲート1221−1228の出力は、
Figure 0005199463
である。t(2)の値の全てKは、第2の指標ビットjを生成するために加算器1242において合計される。
複数K個の加算器1261−1268は、XORゲート1221−1228の第2の組と、XORゲート1221−1228の第1の組と、入力a(2)、k=1、・・・、Kとに結合される。加算器1261−1268([t(1)+t(2)+a(3)]によって表現された)の出力は、論理AND演算を行なうために構成された第3のANDゲート1203によって処理される。ANDゲート1203の出力は、最小値のM(3)であり、それは
Figure 0005199463
と表示される。
XORゲート1231−1238の第3の組はANDゲート1203の出力と入力a(3)、k=1、・・・、Kとに結合される。XORゲート1231は、t(2)を生成するためにM(3)およびa(3)についての論理XOR演算を行なうように構成され、XORゲート1232は、t(2)を生成するためにM(3)およびa(3)について論理XOR演算を行ない、また、XORゲート1238は、t(2)を生成するためにM(3)およびa(3)についての論理XOR演算を行なう。したがって、XORゲート1231−1238の第3の組の出力は、k=1、・・・、Kについて
Figure 0005199463
である。t(3)の値のすべてのKは、第3の指標ビットjを生成するために加算器1243において合計される。
指標ビットj、・・・、j1002の各々は、
Figure 0005199463
を使用して計算されるので、図10で示される指標ビットj1002の組は1組の信頼性値aのどれがMに相当するか(j=1)、あるいは、しないか(j=0)を示すように構成される。
Figure 0005199463
この圧縮はメモリ必要量を大幅に縮小することができる。
の計算については、関数f(.)は
Figure 0005199463
として定義される、ここで、ΣがORゲートの関数を示す。ここで、
Figure 0005199463
・・・
であり、ここで、
Figure 0005199463
であり、また、
Figure 0005199463
である。
エキスパンダ(エキスパンダ701および702のどちらかのような)は、出力信号o、o、…、oを計算するために圧縮されるPCNP出力信号を処理する。
例えば、エキスパンダは
Figure 0005199463
の演算を行なうように構成され得る。
図13Aは、発明の実施例に従って固定連結を有する、図8Aにおいて示されるパーミュータ731のような第1のパーミュータを例示する。第1のパーミュータは、シフトされた恒等マトリックスJ33、J、J32およびJのそれぞれに対応する複数個のマトリックス演算子1301、1302、1303および1304に対して固定結合を持っている複数のベクトル入力(最初の列ベクトル)を含む。第1のパーミュータの関数はマトリックスA0によって表わされ得る。ここで、
Figure 0005199463
マトリックスAの関数は、
Figure 0005199463
によって表現され、それは最終の列ベクトルを生成するために最初の列ベクトルについて演算する。
マトリックスAは、メッセージと評価値が追加される前にビットr、・・・、rの軟判定の評価によりPCNPからのメッセージを整列させるために使用される固定結合(すなわち置換)を表わす。具体的には、r(35)はr(06)を生成するためにJによってシフトされ、最初の列ベクトルの第2列から最終の列ベクトルの第1列までシフトされる。第4の行要素r(03)は、r(35)を生成するためにJ32によってシフトされ、それは最終の列ベクトルの第2行に置かれる。第1の行要素r(06)は変更を経験しないが、最初の列ベクトルの第1行から最終列ベクトルの第3行まで再配置される。3番目の行エレメントr(06)はr(03)を生産するためにJ33によって変えられる。それは最終列ベクトルの4番目の行として格納される。
図13Bは、発明の実施例に従って固定結合を有し、図8Aにおいて示されるパーミュータ732のような第2のパーミュータを例示する。第2のパーミュータは、シフトされた恒等マトリックスJ31、J、J20およびJ13に対応する複数のマトリックス演算子1311、1312、1313および1314に対する固定結合を持っている複数のベクトル入力(最初の列ベクトル)をそれぞれ含む。第2のパーミュータの関数はマトリックスAによって表わされ得る。ここで、
Figure 0005199463
マトリックスAの関数は、
Figure 0005199463
で表現され、それは最終の列ベクトルを生成するために最初の列ベクトルについて演算する。
マトリックスAは、メッセージと評価値が追加される前にビットr、・・・、rの軟判定の評価によりPCNPからのメッセージを整列させるために使用される固定連結(すなわち、置換)を表わす。具体的には、r(10)は、r(23)を生成するためにJ13によってシフトされ、最初の列ベクトルの第4行から最終の列ベクトルの第1行まで移動される。第3の行要素r(31)はr(15)を生成するためにJ20によって変えられる。それは最終の列ベクトルの第2列に置かれる。第1の行要素r(23)は、r(31)を生成するためにJによってシフトされ、最終の列ベクトルの第3行に再配置される。第2の列要素r(15)は、r(10)を生成するためにJ31によってシフトされ、それは最終の列ベクトルの第4行として記憶される。
図13Cは、発明の実施例に従って固定結合を有し、図8Aにおいて示されるパーミュータ738のような第8のパーミュータを例示する。第8のパーミュータは、シフトされた恒等マトリックスJ29、J26、J23およびJ30に対応する複数のマトリックス演算子1381、1382、1383および1384に対する固定連結を有する複数のベクトル入力(最初の列ベクトル)をそれぞれ含む。第8のパーミュータの関数はマトリックスAによって表わされ得る。ここで
Figure 0005199463
マトリックスAの関数は、
Figure 0005199463
で表現され、それは、最終の列ベクトルを生成するために最初の列ベクトルについて演算する。
マトリックスAは、メッセージと評価値が追加される前に、ビットr28、・・・、r31の軟判定の評価によりPCNPからのメッセージを整列させるために使用される固定結合(つまり置換)を表わす。具体的には、r30(30)は、r30(24)を生成するためにJ30によってシフトされ、最初の列ベクトルの第4行から最終の列ベクトルの第1行まで移動される。第1の列要素r29(24)は、r29(11)を生成するためにJ23によってシフトされ、それは最終の列ベクトルの第2行に置かれる。第2の列要素r28(11)は、r28(01)を生成するためにJ26によってシフトされ、最終の列ベクトルの第3行に再配置される。第3の行要素r31(30)は、r31(30)を生成するためにJ29によってシフトされ、それは最終の列ベクトルの第4行として記憶される。
置換マトリックス(permutation matrix)A、A、・・・、Aはある反復から別の反復まで変化せず、したがって、ビットr、・・・、r31の軟判定の評価によりPCNP721−724からのメッセージを整列させる固定結合を表わす。
これらの固定結合は、LDPCにおける相互接続を単純化し、減少された復号器の複雑さをイネーブルし、より速い復号化速度を可能にする。
図14は、高速処理のためのパイプライン化された構成を使用する復号器のブロック図である。1組の遅延素子761−764は、各PCNP721−724の出力に対するパイプライン遅れDを提供し、そこではパイプライン遅れdは任意の値を有し得る整数である。パーミュータ771および781は置換マトリックス(Aを使用し、パーミュータ772および782は置換マトリックス(Aを使用し、また、パーミュータ778および788は置換マトリックス(Aを使用する。
図14において示される復号器は、さらに、マルチレート復号(例えば、レート1/2、レート3/4、およびレート7/8、・・・)をサポートする。例えば、レート3/4用のサブマトリックス
Figure 0005199463
(あるいは指数マトリックス
Figure 0005199463
)は、
Figure 0005199463
からの各ペアのブロック行を1つのブロック行に組み合わせることによりサブマトリックス
Figure 0005199463
から構築することができる。これは、2つの異なる組のビットをチェックする
Figure 0005199463
において2つの行が全てのビットをオリジナルの2つの組に結合する一つの組をチェックする
Figure 0005199463
において単一の行に結合されることを意味する。したがって、発明の実施例は、復号器のサイズおよび複雑さを軽減するするマルチレート処理用の共通の復号アーキテクチャを含み得る。
図15は、発明の実施例に従うLDPC復号方法のフロー図である。PCNPバンクの第1のレート1/2のPCNP1501は、入力
Figure 0005199463
の第1の組を処理するために構成され、またPCNPバンクの第2のレート1/2のPCNP1502は入力
Figure 0005199463
の第2の組を処理するために構成される。第1のPCNP1501はレート1/2のパリティチェックマトリックス
Figure 0005199463
の第1行に相当するし、また、第2のPCNP1502はパリティチェックマトリックス
Figure 0005199463
の第2行に相当する。コンバータ1503は、同じレート1/2のLDPCがレート3/4の入力を処理するために使用されるように出力1511および1512を修正するよう構成される。具体的には、出力1511および1512は、コンバータ1503によって以下のように修正される。
Figure 0005199463
図16は、発明の別の実施例に従うLDPC復号方法のフロー図である。PCNPバンクの第1のレート1/2のPCNP1601は、入力
Figure 0005199463
の第1の組を処理するために構成され、PCNPバンクの第2のレート1/2のPCNP1602は、入力
Figure 0005199463
の第2の組を処理するために構成され、PCNPバンクの第3のレート1/2のPCNP1603は、入力
Figure 0005199463
の第3の組を処理するために構成され、PCNPバンクの第4のレート1/2のPCNP1604は、入力
Figure 0005199463
の第4の組を処理するために構成される。
第1のコンバータ1611は、レート3/4に相当する第1の出力
Figure 0005199463
と第2の出力
Figure 0005199463
を生成するために、フレームフォーマット
Figure 0005199463
を有する第1のPCN1601からの出力と、フレームフォーマット
Figure 0005199463
を有する第2のPCNP1602からの出力とを処理する。第2のコンバータ1612は、レート3/4に対応する、第3の出力
Figure 0005199463
と第4の出力
Figure 0005199463
を生成するために、フレームフォーマット
Figure 0005199463
を有する第3のPCNP1603からの出力と、フレームフォーマット
Figure 0005199463
を有する第4のPCNP1604からの出力を処理する。
第3のコンバータ1613は、レート7/8に対応する出力
Figure 0005199463

Figure 0005199463
を生成するために、第1と第3のレート3/4の出力を処理する。第4のコンバータ1614は、レート7/8に相当する出力
Figure 0005199463

Figure 0005199463
を生成するために第2と第4のレート3/4の出力を処理する。
発明の装置と方法の実施例がさまざまなハードウェアおよびソフトウェアを使用してインプリメントされ得ることが認識されるべきである。例えば、ここに記載された機能的なステップの1つ以上は、特定用途向け集積回路(application specific integrated circuit:ASIC)のような特定用途のハードウェア、およびゲートアレーのようなプログラマブルロジックデバイス、および/または、ソフトウェアあるいはマイクロプロセッサ、マイクロコントローラあるいはデジタル信号プロセッサ(digital signal processor:DSP)のようなコンピューティング装置上でランするソフトウェアまたはファームウェアを使用してインプリメントされ得る。LDPC復号化機能は単一のASICのような単一の装置に統合されてもよいが、さらに、それらがいくつかの装置に分配されてもよいことはさらに認識されるだろう。
その発明は、好ましい実施例に限定されることは意図されない。更に、当業者は、ここに記載された方法と装置の実施例がそれのハードウェア、ソフトウェア、ファームウェアあるいはそれらの様々な組合せにおけるインプリメンテーションを含むさまざまな方法でインプリメントされてもよいことを認識するべきである。そのようなハードウェアの例はASIC、フィールド・プログラマブル・ゲート・アレイ、汎用プロセッサ、DSPおよび/または他の回路類を含み得る。発明のソフトウェアおよび/またはファームウェアのインプリメンテーションは、Java(登録商標)、C、C++、マットラブTM(MatlabTM)、ベリログ(Verilog)、VHDLおよび/またはプロセッサに特有のマシン言語およびアセンブリ言語を含むプログラミング言語の任意の組合せによってインプリメントされ得る。
本発明の方法を実現するコンピュータプログラム(つまりソフトウェアおよび(または)ファームウェア)は、SIMカード、USBメモリインターフェースあるいは他のコンピュータ読み取り可能なメモリのような配布媒体上で存在してもよい。同様に、コンピュータプログラムはワイヤードネットワークインターフェースまたはワイヤレスネットワークインターフェースによってユーザに配布され得る。そこから、それらは、ハードディスクあるいは同様の中間の記憶媒体にしばしばコピーされるだろう。プログラムがランされる時に、それらは、この発明の方法に従って動作するために、それらの配布媒体あるいはそれらの中間記憶媒体のいずれかから、デジタルコンピュータ(例えばマイクロプロセッサ)に搭載されている実行メモリにロードされ得る。これらの演算はすべてコンピュータシステムの当業者によく知られている。
用語「コンピュータ読み取り可能媒体」は、デジタルコンピュータシステムによって本発明の方法をインプリメントするコンピュータプログラムを記憶し、後で読むことができる、分配媒体、中間記憶媒体、コンピュータの実行メモリ、および、他の媒体または装置を包含する。
さまざまなデジタルコンピュータシステム構成は、本発明の方法の実施例を実行するのも利用されることができ、また、特有のシステム構成が本発明の方法の実施例を実行することができる程度まで、それは、ここで開示された発明の代表的な実施例と等価であり、本発明の範囲および精神の範囲内にある。
一旦デジタルコンピュータシステムが、発明の方法の実施例をインプリメントするプログラムソフトウェアからの命令に準ずる特定機能を実行するようにプログラムされれば、そのようなデジタルコンピュータシステムは、有効に本発明の方法の実施例に特有の特定用途コンピュータになる。このプログラミングに必要な技術はコンピュータシステムの当業者によく知られている。
発明のさまざまな実施例は、システム構成における変動、および方法が提供されるステップの順序を含み得る。多くの場合では、多数のステップおよび/または多数のコンポーネントは統合され得る。
ここに単に記載された方法とシステムの実施例は、本発明の特有の実施例を例示する。当業者が、さまざまな仕組みを工夫することができ、それらは、明示的にここに記載されまたは示されなかいが、それは、発明の原理を具体化し、その精神と範囲の内に含まれることが認識されるべきである。更に、ここに列挙された例および条件付きの言語はすべて、読者が発明の法則を理解するのを援助する教育的目的向けのみであるように意図される。この開示およびその関連する参照は、そのような特に列挙された例および条件への制限がないこととして解釈されるべきである。さらに、それの特有の例と同様にここに列挙される、発明の原理、態様および実施例におけるすべてのステートメントは、それの構造的なおよび機能的な等価物を包含するように意図される。さらに、そのような等価物が現在よく知られている等価のものだけでなく、将来開発される等価のもの、すなわち、構造にかかわらず、同じ機能を実行する開発されるいかなる要素も含むことが意図される。
ここのブロック図が、発明の原理を具体化する実例の、回路類、アルゴリズム、および機能的なステップについての概念的な視点を表わすことは当業者によって評価されるべきである。同様に、そのようなコンピュータあるいはプロセッサが明示的に示されても示されなくても、任意のフローチャート、フロー図、信号ブロック図、システム図、コード、およびその類似のものは、コンピュータ読み取り可能媒体において本質的に表現され、したがって、コンピュータまたはプロセッサによって実行され得る様々なプロセスを表現することは認識されるべきである。
「プロセッサ」あるいは「システム」と呼ばれる機能的ブロックを含む図面中で示されるさまざまな要素の機能は、専用のハードウェアと同様に、適切なソフトウェアに関係するソフトウェアを実行することができるハードウェアの使用を通じて提供されてもよい。機能は、プロセッサによって提供された時、単一の専用プロセッサによって、共用プロセッサ、あるいは複数の個々のプロセッサによって提供されてもよく、それらのうちのいくらかが共有されてもよい。さらに、用語「プロセッサ」の明示的な使用は、ソフトウェアを実行することができるハードウェアを排他的に参照するようには解釈されず、限定なしで、デジタル信号プロセッサ(digital signal processor:DSP)ハードウェア、ソフトウェアを格納するための読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)および非揮発性の記憶装置を暗に含み得る。他のハードウェア、従来のまたは特注のものも含まれていてもよい。同様に、ここに記載された任意の構成要素あるいは装置の機能は、プログラムロジック、専用ロジック、プログラム制御と専用ロジックの相互作用を通じて、あるいは手動でさえ、実行されることができ、その特有の技術は、コンテキストからより明確に理解されるようにインプリメンタによって選択可能である。
特有の機能を実行する手段の任意の要素も、例えば、機能を実行する回路要素、または任意の形式で、したがって、機能を実行するそのソフトウェアを実行する回路類と結合したファームエア、マイクロコードまたはそれの類似のものを含むソフトウェアを含むその機能を実行する任意を含むよう意図されている。ここに記載されるような発明の実施例は、さまざまな列挙された手段によって提供される機能性が動作上の記載が要求する方法とともに組み合わせられ、もたらされるという事実に存在する。出願人は、それらの機能性を提供することができるあらゆる手段をここに示されたものと等価なものとみなす。
以下に、本願出願当初の特許請求の範囲に記載された発明を付記する。
[1]反復する低密度パリティチェック復号器であって、ビット推定の成分ベクトルを記憶するように構成される第1の複数のシフトレジスタと、前記第1の複数のシフトレジストに結合されるパリティチェックノードプロセッサ(PCNP)の複数のバンクと、複数のメッセージを生成するために成分ベクトルを処理するよう構成される前記パリティPCNPの複数バンクのそれぞれと、PCNPの前記複数のバンクに結合され、前記複数のメッセージを記憶するように構成される第2の複数のシフトレジスタと、前記更新ビット評価値を生成するための以前の反復の間に生成された複数のビット評価値により複数のメッセージを結合する複数のコンバイナと、第1の複数のシフトレジスタに記憶される更新ビット評価値を生成するために前記更新ビット評価値を置換するよう構成される複数の固定パーミュータとを含むLDC復号器。
[2]PCNPの前記複数のバンクの各々は、パリティチェックサブマトリックスに対応するスーパーコードを復号するように構成される、[1]に記載されたLDPC復号器。"
[3]前記第1の複数のシフトレジスタは、LDPC復号動作の初期化についてのビット評価値の成分ベクトルとして受信される信号を記憶するよう構成される、[1]に記載されたLDPC復号器。
[4]PCNPの前記複数のバンクは、受信信号が複数のN base 個の、サイズがN perm ×1であるベクトルに分割され、前記複数のベクトル第1の反復の初期に前記第1のシフトレジスタ記憶されるビット評価値の成分ベクトルであるN perm 個のPCNPを備える、[1]に記載されたLDPC復号器。
[5]複数のN 回の反復のそれぞれについてのn番目のパリティチェックサブマトリックスに対応するn番目のスーパーコードに対応するビットを復号するよう構成される、[1]に記載されたLDPC復号器。
[6]さらに、複数のコンバイナと複数の固定パーミュータの間で結合され、更新ビット評価値からの前もって決定された以前の反復において生成されたメッセージを減算するよう構成された減算モジュールを含む[1]に記載されたLDPC復号器。
[7]パイプライン化された構成を使用するように構成される[1]に記載されたLDPC復号器。
[8]さらに、単一の組のPCNPの前記使用をイネーブルするとともに複数のレートの処理を促進するためのコンバータであって、単一のSビットと単一の第1及び第2の最小値を生成するために複数のPCNPについて演算するよう構成されるコンバータを含む[1]に記載されたLDPC復号器。
[9]複数の固定パーミュータは、複数の入力と、複数の出力と、置換マトリックスの非零要素に対応するシフトされる複数のベースマトリックス演算子であって、各々が前記複数の出力の1つに結合される前記複数のシフトされるベースマトリックス演算子と、前記複数の入力を前記複数のシフトされるベースマトリックス演算子に結合する複数の固定コネクタとを含み、前記複数の固定コネクタが、前記置換マトリックスにおける非零要素の位置に対応する、[1]に記載されたLDPC復号器。
[10]反復する低密度パリティチェック(LDPC)復号方法であって、前記方法の各反復は、ビット評価の成分ベクトルを記憶することと、複数のメッセージを生成するために前記成分ベクトルのパリティチェック処理を実行することと、更新ビット評価値を生成し更新ビット評価値を変更するために前記ビット評価で前記複数のメッセージを組み合わせることと、前記更新ビット評価値を置換するための固定パーミュータアーキテクチャを使用することとを含む方法。
[11]パリティチェック処理を行なうことは、パリティチェックサブマトリックスに対応するスーパーコードを復号することを含む、[10]に記載された方法。
[12]さらに、ビット評価の成分ベクトルとして受信信号を記憶する最初のステップを含む[10]に記載された方法。
[13]さらに、前記受信信号を各々のサイズがN perm ×1である複数のN base 個のベクトルに分割することを含み、パリティチェック処理を実行することが、パリティチェックノードプロセッサ(PCNP)の複数のバンクを使用することを含み、各バンクがN perm 個のPCNPを含む、請求項[12]に記載された方法。
[14]複数の反復の各々についてのn番目のパリティチェックサブマトリックスに対応するn番目のスーパーコードに対応するビットを復号するよう構成された、[10]に記載された方法。
[15]さらに、前記更新ビット評価値からの前もって決定された以前の反復の間に生成されるメッセージを減算することを含む[10]に記載された方法。
[16]パイプライン化される構成を使用するように構成される[10]に記載された方法。
[17]パリティチェック処理を行なうことは、単一のsビットおよび単一の組の第1と第2の最小値を生成するために前記複数のメッセージについて演算を行うことをさらに含む、[10]に記載された方法。
[18][10]に記載された前記方法を実行するようにプログラムされるデジタルコンピュータシステム。
[19][10]に記載された前記方法をインプリメントするコンピュータプログラムを記憶するコンピュータ読み取り可能な媒体。
[20]低密度パリティチェック(LDPC)復号器において使用するパーミュータであって、複数の入力と、複数の出力と、置換マトリックスの非零要素に対応する複数のシフトされるベースマトリックス演算子であって、各々が前記複数の出力の1つに結合される複数のシフトされるベースマトリックスの演算子と、前記複数の入力を前記複数のシフトされるベースマトリックス演算子に結合する複数の固定コネクタであって、置換マトリックスにおいて非零要素の配置に対応する複数の固定コネクタとを備えるパーミュータ。
[21]圧縮したパリティチェックノードプロセッサPCNP出力信号を生成する方法であって、sビットを生成するための複数の入力についてXOR演算を行なうことと、各入力信号に対応する複数の信頼値から第1と第2最小値M1とM2を計算すること、複数の指標ビットを生成すること
を含み、前記複数の指標ビットの各々は、前記複数の信頼値の対応する1つが第1および第2の最小値であるかどうか示す複数の指標ビットである方法。
[22]さらに、符号を計算するための関数
Figure 0005199463
と大きさを計算するための関数
Figure 0005199463
、ここで
Figure 0005199463
、とを使用することによって前記圧縮されたPCNP出力信号から圧縮されていない出力信号を計算することを含む[21]に記載された方法。
[23]前記第1および第2の最小値を計算することは、加算器とANDゲートのネットワークを使用する、[21]に記載された方法。
[24]パリティチェックマトリックスを与えられたパリティチェックベクトルを計算する方法であって、前記パリティチェックマトリックスを第1のマトリックスと第2のマトリックスに分割することであって、前記第1のマトリックスは、データベクトルを演算するように構成されており、第2のマトリックスは、パリティチェックベクトルについて演算するように構成されており、第2のマトリックスは、複数の正方形マトリックスの三角形配列を備える、分割することと、データベクトルについての前記第1のマトリックス演算の結果である中間ベクトルを計算することと、一連の方程式を生成するために第2のマトリックスの三角形配列を活用し、一連の方程式のそれぞれを解くことによりパリティチェックマトリックスを計算することとを含む方法。
[25]前記第1のマトリックスはM×Kの次元を持ち、前記第2のマトリックスはM×Kの次元を持ち、ここで、Mがパリティチェックビットの数で、Kがデータビットの数である、[24]に記載された方法。

Claims (18)

  1. 反復する低密度パリティチェック(LDPC)復号器であって、
    ビット推定の成分ベクトルを記憶するように構成される第1の複数のシフトレジスタと、
    前記第1の複数のシフトレジストに結合されるパリティチェックノードプロセッサ(PCNP)の複数のバンクでであって前記パリティPCNPの複数バンクのそれぞれが、複数のメッセージを生成するために成分ベクトルを処理するよう構成される、パリティチェックノードプロセッサ(PCNP)の複数のバンクと、
    PCNPの前記複数のバンクに結合され、前記複数のメッセージを記憶するように構成される第2の複数のシフトレジスタと、
    前記更新ビット評価値を生成するための以前の反復の間に生成された複数のビット評価値により複数のメッセージを結合する複数のコンバイナと、
    第1の複数のシフトレジスタに記憶される更新ビット評価値を生成するために前記更新ビット評価値を置換するよう構成される複数の固定パーミュータと、
    複数のコンバイナと複数の固定パーミュータの間で結合され、更新ビット評価値から前もって決定された以前の反復において生成されたメッセージを減算するよう構成された減算モジュールと
    を含むLDPC復号器。
  2. PCNPの前記複数のバンクの各々は、パリティチェックサブマトリックスに対応するスーパーコードを復号するように構成される、請求項1に記載されたLDPC復号器。
  3. 前記第1の複数のシフトレジスタは、LDPC復号動作の初期化についてのビット評価値の成分ベクトルとして受信される信号を記憶するよう構成される、請求項1に記載されたLDPC復号器。
  4. PCNPの前記複数のバンクは、
    受信信号が複数のNbase個の、サイズがNperm×1であるベクトルに分割され、
    前記複数のベクトル第1の反復の初期に前記第1のシフトレジスタ記憶されるビット評価値の成分ベクトルであるNperm個のPCNPを備える、請求項1に記載されたLDPC復号器。
  5. 複数のN回の反復のそれぞれについてのn番目のパリティチェックサブマトリックスに対応するn番目のスーパーコードに対応するビットを復号するよう構成される、請求項1に記載されたLDPC復号器。
  6. パイプライン化された構成を使用するように構成される請求項1に記載されたLDPC復号器。
  7. さらに、単一の組のPCNPの前記使用をイネーブルするとともに複数のレートの処理を促進するためのコンバータであって、単一のSビットと単一の第1及び第2の最小値を生成するために複数のPCNPについて演算するよう構成されるコンバータを含む請求項1に記載されたLDPC復号器。
  8. 複数の固定パーミュータの各々は、
    複数の入力と、
    複数の出力と、
    置換マトリックスの非零要素に対応するシフトされる複数のベースマトリックス演算子であって、各々が前記複数の出力の1つに結合される前記複数のシフトされるベースマトリックス演算子と、
    前記複数の入力を前記複数のシフトされるベースマトリックス演算子に結合する複数の固定コネクタと
    を含み、
    前記複数の固定コネクタが、前記置換マトリックスにおける非零要素の位置に対応する、請求項1に記載されたLDPC復号器。
  9. 反復する低密度パリティチェック(LDPC)復号方法であって、
    前記方法の各反復は、
    ビット評価の成分ベクトルを記憶することと、
    複数のメッセージを生成するために前記成分ベクトルのパリティチェック処理を実行することと、
    更新ビット評価値を生成し更新ビット評価値を変更するために前記ビット評価で前記複数のメッセージを組み合わせることと、
    前記更新ビット評価値を置換するための固定パーミュータアーキテクチャを使用することと、
    さらに、前記更新ビット評価値から前もって決定された以前の反復の間に生成されるメッセージを減算することと
    を含む方法。
  10. パリティチェック処理を行なうことは、パリティチェックサブマトリックスに対応するスーパーコードを復号することを含む、請求項9に記載された方法。
  11. さらに、ビット評価の成分ベクトルとして受信信号を記憶する最初のステップを含む請求項9に記載された方法。
  12. さらに、前記受信信号を各々のサイズがNperm×1である複数のNbase個のベクトルに分割することを含み、パリティチェック処理を実行することが、パリティチェックノードプロセッサ(PCNP)の複数のバンクを使用することを含み、各バンクがNperm個のPCNPを含む、請求項11に記載された方法。
  13. 複数の反復の各々についてのn番目のパリティチェックサブマトリックスに対応するn番目のスーパーコードに対応するビットを復号するよう構成された、請求項9に記載された方法。
  14. パイプライン化される構成を使用するように構成される請求項9に記載された方法。
  15. パリティチェック処理を行なうことは、単一のsビットおよび単一の組の第1と第2の最小値を生成するために前記複数のメッセージについて演算を行うことをさらに含む、請求項9に記載された方法。
  16. 請求項9に記載された前記方法を実行するようにプログラムされるデジタルコンピュータシステム。
  17. 請求項9に記載された前記方法をインプリメントするコンピュータプログラムを記憶するコンピュータ読み取り可能な記憶媒体。
  18. 複数の入力と、
    複数の出力と、
    置換マトリックスの非零要素に対応する複数のシフトされるベースマトリックス演算子であって、各々が前記複数の出力の1つに結合される複数のシフトされるベースマトリックスの演算子と、
    前記複数の入力を前記複数のシフトされるベースマトリックス演算子に結合する複数の固定コネクタであって、置換マトリックスにおいて非零要素の配置に対応する複数の固定コネクタと
    を備え、
    さらに、シフトされるベースマトリックス演算子は、循環的にシフトされるD−マトリックスまたはQ−マトリックスに基づく、請求項1に記載されたLDPC復号器
JP2011512624A 2008-06-03 2009-06-03 ターボldpc復号 Active JP5199463B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US12/131,928 2008-06-03
US12/131,928 US8196025B2 (en) 2005-08-03 2008-06-03 Turbo LDPC decoding
PCT/US2009/046175 WO2009149212A1 (en) 2008-06-03 2009-06-03 Turbo ldpc decoding

Publications (2)

Publication Number Publication Date
JP2011522502A JP2011522502A (ja) 2011-07-28
JP5199463B2 true JP5199463B2 (ja) 2013-05-15

Family

ID=40848554

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011512624A Active JP5199463B2 (ja) 2008-06-03 2009-06-03 ターボldpc復号

Country Status (6)

Country Link
US (1) US8196025B2 (ja)
EP (2) EP3661063A1 (ja)
JP (1) JP5199463B2 (ja)
KR (3) KR101203226B1 (ja)
CN (1) CN102057578B (ja)
WO (1) WO2009149212A1 (ja)

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7116710B1 (en) * 2000-05-18 2006-10-03 California Institute Of Technology Serial concatenation of interleaved convolutional codes forming turbo-like codes
US7853862B2 (en) * 2005-08-03 2010-12-14 Qualcomm Incorporated Systems and methods for a turbo low-density parity-check decoder
US7934147B2 (en) * 2005-08-03 2011-04-26 Qualcomm Incorporated Turbo LDPC decoding
US8196025B2 (en) 2005-08-03 2012-06-05 Qualcomm Incorporated Turbo LDPC decoding
WO2007037713A1 (en) * 2005-09-30 2007-04-05 Intel Corporation Modified turbo-decoding message-passing algorithm for low-density parity check codes
KR20080068218A (ko) * 2007-01-18 2008-07-23 삼성전자주식회사 통신 시스템에서 데이터 수신 방법 및 장치
US11265024B1 (en) 2007-04-19 2022-03-01 Primos Storage Technology, LLC Systems, methods and computer program products including features of transforming data involving a secure format from which the data is recoverable
US10439654B1 (en) 2007-04-19 2019-10-08 Primos Storage Technology, LLC Systems, methods and computer program products including features of transforming data involving a secure format from which the data is recoverable
US9128877B1 (en) * 2007-04-19 2015-09-08 Robert E. Cousins Systems, methods and computer program products including features of transforming data involving a secure format from which the data is recoverable
US8151171B2 (en) * 2007-05-07 2012-04-03 Broadcom Corporation Operational parameter adaptable LDPC (low density parity check) decoder
US8161345B2 (en) * 2008-10-29 2012-04-17 Agere Systems Inc. LDPC decoders using fixed and adjustable permutators
US8386904B2 (en) * 2009-04-29 2013-02-26 Adeptence, Llc High speed low density parity check codes encoding and decoding
US8352846B2 (en) * 2009-05-07 2013-01-08 Adeptence, Llc Method an apparatus for low density parity check codes encoding and decoding
US9252813B2 (en) 2009-05-27 2016-02-02 Novelsat Ltd. Iterative decoding of LDPC codes with iteration scheduling
JP5523064B2 (ja) * 2009-11-13 2014-06-18 三菱電機株式会社 復号装置及び方法
US8677227B2 (en) * 2010-08-25 2014-03-18 Royal Institution for the Advancement of Learning / McGill University Method and system for decoding
US8726122B2 (en) 2011-05-11 2014-05-13 Samsung Electronics Co., Ltd. High throughput LDPC decoder
US8826096B2 (en) * 2011-12-29 2014-09-02 Korea Advanced Institute Of Science And Technology Method of decoding LDPC code for producing several different decoders using parity-check matrix of LDPC code and LDPC code system including the same
GB2505228B (en) * 2012-08-23 2014-12-03 Canon Kk Method and apparatus for controlling the decoding of codewords received by a linear block code pipelined decoder from an input buffer
US9264182B2 (en) 2012-09-13 2016-02-16 Novelsat Ltd. Iterative receiver loop
US10382069B2 (en) * 2015-08-11 2019-08-13 Apple Inc. Data encoding by efficient inversion of a parity-check sub-matrix
EP3232574A1 (en) * 2016-04-14 2017-10-18 Xieon Networks S.à r.l. A decoder for a family of rate compatible low-density parity check (ldpc) codes
CN106301390A (zh) * 2016-08-11 2017-01-04 中国计量大学 LDPC/Turbo码双模译码器
TWI602188B (zh) * 2017-01-03 2017-10-11 慧榮科技股份有限公司 用來於記憶裝置中進行資料管理之方法以及記憶裝置及其控制器
KR101924583B1 (ko) 2017-12-22 2018-12-03 고려대학교 산학협력단 Ldpc 복호화 방법 및 장치와, 최솟 값 계산 방법
US10727869B1 (en) * 2018-03-28 2020-07-28 Xilinx, Inc. Efficient method for packing low-density parity-check (LDPC) decode operations
US11108410B1 (en) 2018-08-24 2021-08-31 Xilinx, Inc. User-programmable LDPC decoder

Family Cites Families (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3703705A (en) 1970-12-31 1972-11-21 Ibm Multi-channel shift register
US3745526A (en) 1971-12-20 1973-07-10 Ibm Shift register error correcting system
US5425038A (en) 1993-07-02 1995-06-13 International Business Machines Corporation Error plus single bit error detection
FR2799592B1 (fr) 1999-10-12 2003-09-26 Thomson Csf Procede de construction et de codage simple et systematique de codes ldpc
WO2003021440A1 (en) * 2001-09-01 2003-03-13 Bermai, Inc. Decoding architecture for low density parity check codes
US7178080B2 (en) * 2002-08-15 2007-02-13 Texas Instruments Incorporated Hardware-efficient low density parity check code for digital communications
US20050193320A1 (en) * 2004-02-09 2005-09-01 President And Fellows Of Harvard College Methods and apparatus for improving performance of information coding schemes
US7415659B2 (en) * 2004-05-07 2008-08-19 Comtech Aha Corporation SISO decoder
KR20050118056A (ko) * 2004-05-12 2005-12-15 삼성전자주식회사 다양한 부호율을 갖는 Block LDPC 부호를 이용한이동 통신 시스템에서의 채널부호화 복호화 방법 및 장치
US7395490B2 (en) * 2004-07-21 2008-07-01 Qualcomm Incorporated LDPC decoding methods and apparatus
WO2006016751A2 (en) * 2004-08-09 2006-02-16 Lg Electronics Inc. Method of encoding and decoding using low density parity check matrix
KR100703271B1 (ko) * 2004-11-23 2007-04-03 삼성전자주식회사 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
US7653867B2 (en) * 2005-03-01 2010-01-26 The Texas A&M University System Multi-source data encoding, transmission and decoding using Slepian-Wolf codes based on channel code partitioning
EP1717959A1 (en) * 2005-04-29 2006-11-02 STMicroelectronics N.V. Method and device for controlling the decoding of a LDPC encoded codeword, in particular for DVB-S2 LDPC encoded codewords
US7958424B2 (en) * 2005-06-22 2011-06-07 Trident Microsystems (Far East) Ltd. Multi-channel LDPC decoder architecture
US8196025B2 (en) 2005-08-03 2012-06-05 Qualcomm Incorporated Turbo LDPC decoding
US7853862B2 (en) * 2005-08-03 2010-12-14 Qualcomm Incorporated Systems and methods for a turbo low-density parity-check decoder
KR100899738B1 (ko) * 2006-02-02 2009-05-27 삼성전자주식회사 노드 메모리 기반의 ldpc 복호기 및 복호방법

Also Published As

Publication number Publication date
JP2011522502A (ja) 2011-07-28
KR101203226B1 (ko) 2012-11-21
KR101203340B1 (ko) 2012-11-21
KR101230969B1 (ko) 2013-02-07
KR20120088880A (ko) 2012-08-08
US20080263425A1 (en) 2008-10-23
EP2311191A1 (en) 2011-04-20
KR20110027750A (ko) 2011-03-16
EP3661063A1 (en) 2020-06-03
EP2311191B1 (en) 2019-10-02
CN102057578B (zh) 2013-09-04
CN102057578A (zh) 2011-05-11
US8196025B2 (en) 2012-06-05
WO2009149212A1 (en) 2009-12-10
KR20120091416A (ko) 2012-08-17

Similar Documents

Publication Publication Date Title
JP5199463B2 (ja) ターボldpc復号
US7934147B2 (en) Turbo LDPC decoding
JP5483875B2 (ja) Ldpc符号のブロックおよびレートに独立な復号の方法および装置
KR101211433B1 (ko) 낮은 복잡도를 가지는 고속의 qc-ldpc 부호의 부호화 장치 및 방법
US8266493B1 (en) Low-density parity check decoding using combined check node and variable node
JP4320418B2 (ja) 復号装置および受信装置
CN109586732B (zh) 中短码ldpc编解码系统和方法
WO2011109084A1 (en) Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size
US10848182B2 (en) Iterative decoding with early termination criterion that permits errors in redundancy part
Theodoropoulos et al. Efficient architectures for multigigabit CCSDS LDPC encoders
US8271851B2 (en) Encoding and decoding a data signal as a function of a correcting code
KR101216075B1 (ko) 채널 코드를 이용한 복호화 및 복호화 장치
JP5148586B2 (ja) 復号装置および復号方法
CN1973440A (zh) Ldpc编码器、解码器、系统及方法
Chen et al. Accelerating FPGA-based emulation of quasi-cyclic LDPC codes with vector processing
US11075650B1 (en) Sub-matrix reduction for quasi-cyclic LDPC codes
CN111628783A (zh) 一种eg-ldpc译码器
Radosavljevic et al. Tradeoff analysis and architecture design of high throughput irregular LDPC decoders
KR101221062B1 (ko) 가변 usc 부호를 이용한 부호화 및 복호화 방법
Zaidi et al. FPGA accelerator of Algebraic Quasi Cyclic LDPC Codes for NAND flash memories
Simberg Linear-time encoding and decoding of low-density parity-check codes
Decoders Kiran Gunnam
Khan et al. A real time programmable encoder for low density parity check code targeting a reconfigurable instruction cell architecture

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110107

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110107

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20120820

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120828

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20121128

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130207

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

Free format text: PAYMENT UNTIL: 20160215

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 5199463

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250