JP2010521128A - 低密度パリティ検査(ldpc)符号を符号化し復号するための方法及び装置 - Google Patents

低密度パリティ検査(ldpc)符号を符号化し復号するための方法及び装置 Download PDF

Info

Publication number
JP2010521128A
JP2010521128A JP2009553712A JP2009553712A JP2010521128A JP 2010521128 A JP2010521128 A JP 2010521128A JP 2009553712 A JP2009553712 A JP 2009553712A JP 2009553712 A JP2009553712 A JP 2009553712A JP 2010521128 A JP2010521128 A JP 2010521128A
Authority
JP
Japan
Prior art keywords
variable node
order
nodes
low
loop closing
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.)
Granted
Application number
JP2009553712A
Other languages
English (en)
Other versions
JP5231459B2 (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 JP2010521128A publication Critical patent/JP2010521128A/ja
Application granted granted Critical
Publication of JP5231459B2 publication Critical patent/JP5231459B2/ja
Expired - Fee Related 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/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
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • 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
    • H03M13/1185Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal
    • H03M13/1188Parity check matrix structured for simplifying encoding, e.g. by having a triangular or an approximate triangular structure wherein the parity-check matrix comprises a part with a double-diagonal wherein in the part with the double-diagonal at least one column has an odd column weight equal or greater than three
    • 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/6561Parallelized implementations

Landscapes

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

Abstract

二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化するための新規の装置及び方法が提供されている。データを符号化するために、複数の低い次数の変数ノードの累積チェインが生成されることができる。累積チェインは、そのとき、ループを二回形成するために閉じられることができ、なお一回は、低い次数の変数ノードを使用し、また一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。一実施形態において、複数の低い次数の変数ノードは、各エッジ上で同じ置換を有することができる。

Description

背景
(米国特許法第119条の下の優先権主張)
この特許出願は、ここでの譲受人に譲渡され、ここにおいて参照することによりここに明示的に組み込まれて、2007年3月9日に出願された「LDPC符号を符号化し、復号するための方法及び装置(Methods and Apparatus for Encoding and Decoding LDPC codes)」と題された米国仮特許出願番号60/894,183号の優先権を主張する。
(分野)
本願は、例えば低密度パリティ検査(low density parity check)(LDPC)符号のようなパリティ検査符号の使用を通じて、バイナリデータにおける誤りを検出するために及び/または訂正するために、データを符号化あるいは復号するための方法及び装置を対象としている。
(背景)
誤り訂正符号(error correcting codes)は、通信及びデータストレージのシステムにおいてユビキタスである。近年では、かなりの関心度が、低密度パリティ検査(LDPC)符号として知られる符号の部類において、増してきた。
LDPC符号は、しばしばTannerグラフと呼ばれる二部グラフ(bipartite graph)によって表示されており、そこにおいては、1セットのノードである、変数ノード(variable nodes)は、コードワードのビットに対応しており、他のセットのノードで、ときどきチェックノード(check nodes)と呼ばれる制約ノード(constraint nodes)は、符号を定義する1セットのパリティ検査制約に対応している。グラフにおけるエッジ(edges)は、変数ノードを制約ノードに接続する。変数ノードと制約ノードは、グラフにおけるエッジによって接続される場合には、隣接している(neighbours)といえる。簡略化のために、1ペアのノードは、多くても1つのエッジ(at most one edge)によって接続されているということが一般に仮定される。
各制約ノードについて、制約に隣接しているビット(変数ノードとの関連を介している)は合計すると、0モジュロー2(zero modulo two)になる、すなわちそれらは偶数のものを備えている、場合に及び場合にのみ、変数ノードを備えた、1対1で関連づけられたビットシーケンス(bit sequence associated one-to-one)は、符号のコードワードである。
いくつかのケースにおいて、コードワードは、パンクチュアリングされる(punctured)ことができる。このことは、コードワードからあるビットを取り除くことあるいはパンクチュアリング(puncturing)する動作を指しており、それらを実際に送信することは指していない。しかしながら、LDPC符号を符号化するとき、パンクチュアリングされる予定であるビットは、まだ決定されている(still determined)。したがって、パンクチュアリングは、符号化プロセスに、少しの影響をうけるあるいはまったく影響をうけない。この理由に関しては、パンクチュアリングする可能性は、本願の残り(remainder)において考慮されないであろう。
LDPCコードワードを復号するために使用されたデコーダ及び復号アルゴリズムは、エッジに沿ってグラフ内でメッセージを交換することと、入ってくるメッセージ(incoming messages)に基づいたノードにおける計算(computation)を実行することによりこれらのメッセージを更新することとによって、動作する。そのようなアルゴリズムは、一般に、メッセージパッシングアルゴリズム(message passing algorithms)と呼ばれる。グラフにおける各変数ノードは、例えば通信チャネルからの観察によって決定されるように、関連づけられたビットの値の推定値(an estimate of the associated bit’s value)を表示する受信された値と呼ばれた、ソフトビットを最初に提供される。符号化プロセスはまた、グラフのエッジに沿って部分的に動作するが、接続はあまり正確ではない。
ノード、すなわち変数ノードあるいは制約ノード、に対して取り付けられたエッジの数は、ノードの次数(degree)と呼ばれる。レギュラーグラフあるいはレギュラー符号は、すべての変数ノードが同じ次数であるjを有し、すべての制約ノードが同じ次数kを有するものである。このケースにおいては、符号は、(j,k)レギュラー符号である。これらの符号は、ギャラガー(1961)によって、初めに発明された。「レギュラー(regular)」符号と対照に、イレギュラー符号は、異なる次数の、制約ノード及び/または変数ノードを有している。例えば、いくつかの変数ノードは、次数4、その他は次数3、またさらにその他は次数2であってもよい。
イレギュラー符号は、表し、及び/またはインプリメントする(implement)ことがより複雑となりうるが、レギュラーLDPC符号と比較したときに、イレギュラーLDPC符号は、優れた誤り訂正/検出(superior error correction/detection)のパフォーマンスを提供することができるということが示されてきた。
符号化効率及び高いデータレートは、符号化システム及び/または復号システムが広範囲のデバイス、例えば消費者デバイス、の使用に実践的であるように重要であるが、エンコーダ及び/またはデコーダがリーズナブルなコストにおいてインプリメントされることができるということが重要である。したがって、誤り訂正及び/または検出の目的のために使用された符号化/復号スキームを、例えばハードウェアのコストの点において、効率的にインプリメントする必要がある。
1つの特徴は、データを符号化するための装置及び方法を提供する。特に、二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化するための方法が、提供されている。データを符号化するために、複数の低い次数の変数ノード(a plurality of low degree variable nodes)の累積チェイン(accumulate chain)が生成されることができる。累積チェインは、そのとき、ループを二回形成するために閉じられることができ、一回は、低い次数の変数ノード(a low degree variable nodes)を使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノード(a higher degree variable node)を使用しており、より高い次数の変数ノードは、ノンループクロージングエッジ(non-loop-closing edge)を備えている。一実施形態において、複数の低い次数の変数ノードは、各エッジ上で同じ置換(permutation)を有することができる。
該方法においては、複数の低い次数の変数ノードは、複数のコア次数2の変数ノード(a plurality of core degree two variable nodes)を備えることができ、より高い次数の変数ノードは、コア次数3の変数ノード(a core degree three variable node)を備えることができ、ループクロージングの低い次数の変数ノード(loop-closing low degree variable node)は、ループクロージングのコア次数2の変数ノード(a loop-closing core degree two variable node)を備えることができる。
方法は、累積チェインの複数の順序変更された複製(a plurality of permuted copies of the accumulate chain)、ループクロージングの低い次数の変数ノードの複数の順序変更された複製(a plurality of permuted copies of the loop-closing low degree variable node)、及びループクロージングのより高い次数の変数ノードの複数の順序変更された複製(a plurality of permuted copies of the loop-closing higher degree variable node)、を備えているリフトされたグラフ(a lifted graph)を使用すること、をさらに備えることができる。
方法は、巡回リフトされた低密度パリティ検査(LDPC)符号(a cyclic lifted low density parity check (LDPC) code)を使用すること、をさらに備えており、いくつかの基本変数ノード(base variable nodes)については、リフトされた変数ノードの半分(half of the lifted variable nodes)が情報ノード(information nodes)であり、半分がパリティノード(parity nodes)であってもよい。
方法は、コア次数3の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用することと(using a non-loop-closing edge permutation on a non-loop-closing edge of a core degree three encoding node)、ただし、ノンループクロージングエッジ置換は0であってもよい;そして、ループに関係しているコア次数2の変数ノードのエッジ上で、すべての他の置換を使用することと(using for all other permutations, on the edges of core degree two variable nodes participating in the loop)、なお、その値は、0あるいは−1mod2(negative one mod 2n)である;をさらに備えることができる。
同様に、通信インタフェース(communication interface)及びプロセッサ(processor)を備えている装置(apparatus)が提供されている。通信インタフェースは、データを受信し、送信するように構成されることができる。プロセッサは、(a)複数の低い次数の変数ノードの累積チェインを生成し;(b)ループを二回形成するために累積チェインを閉じる、なお一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備える;ように構成されることができる。
装置は、累積チェインの複数の順序変更された複製、ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及びループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用すること、をさらに備えることができる。
装置は、巡回リフトされた低密度パリティ検査(LDPC)符号を使用すること、をさらに備えており、いくつかの基本変数ノードについては、リフトされた変数ノードの半分が情報ノードであり、半分がパリティノードであってもよい。
装置は、コア次数3の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用することと、なお、ノンループクロージングエッジ置換は0であってもよい;そして、ループに関係しているコア次数2の変数ノードのエッジ上ですべての他の置換を使用することと、なお、その値は、0あるいは−1mod2である;をさらに備えることができる。
したがって、(a)複数の低い次数の変数ノードの累積チェインを生成するための手段と;(b)ループを二回形成するために累積チェインを閉じるための手段と、なお、一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用し、より高い次数の変数ノードは、ノンループクロージングエッジを備える;を備えている装置が提供されている。
装置は、累積チェインの複数の順序変更された複製、ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及びループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するための手段、をさらに備えることができる。
装置は、巡回リフトされた低密度パリティ検査(LDPC)符号を使用するための手段、をさらに備えることができ、いくつかの基本変数ノードについては、リフトされた変数ノードの半分が情報ノードであり、半分がパリティノードであってもよい。
装置は、コア次数3の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用するための手段と、なお、ノンループクロージングエッジ置換は0であってもよい;そして、ループに関係しているコア次数2の変数ノードのエッジ上で、すべての他の置換を使用するための手段と、値は、0あるいは−1mod 2である;をさらに備えることができる。
同様に、二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化することを達成するために、エンコーダ上で動作可能な1つまたは複数の命令(instructions)を有しているプロセッサ可読メディア(processor readable medium)が提供されており、命令は、プロセッサによって実行されるときに、プロセッサに、(a)複数の低い次数の変数ノードの累積チェインを生成させ、(b)ループを二回形成するために累積チェインを閉じさせる、なお、一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。
同様に、(a)複数の低い次数の変数ノードの累積チェインを生成することと;(b)ループを二回形成するために累積チェインを閉じることと、一回は、低い次数の変数ノードを使用し、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている;を達成するファンクションを実行するように構成されたプロセッシング回路(processing circuit)を有するプロセッサが提供されている。
図1は、長さ10のレギュラーLDPC符号の小さい二部グラフの表示を図示する。 図2は、図1においてグラフで図示された符号の行列表示(a matrix representation)である。 図3は、小さいLDPC符号のグラフ表示である。 図4は、図3においてグラフで図示された小さいLDPC符号のパリティ検査行列表示を図示する。 図5は、図3において図示されたLDPC符号を符号化するためのプレプレプロセッシング(pre-preprocessing)の一例を図示する。 図6は、プレ計算された行列(pre-computed matrices)を使用して情報ブロックを符号化するためのプロセスを図示する。 図7は、図3において示されるLDPC符号に対応する、2つの単純な命令/操作(two simple instructions/operations)のシーケンスとして符号化プロセスを図示する。 図8は、一般的なLDPCエンコーダを図示する。 図9は、長さ10のレギュラーLDPC符号の大きい二部グラフ表示を図示する。 図10は、図9において図示されたLDPCグラフのパリティ検査行列表示を図示する。 図11は、巡回置換行列(cyclic permutation matrices)で、図9で示された3x3識別情報行列(3x3 identity matrices)を置き換える効果を図示する。 図12は、どのように図11で示された符号のエッジが変数ノード側から順番に削除されることができるか、及び、どのように同じエッジが巡回置換を必要とされた後で(after being subject to a cyclic permutation)、制約ノード側から現れるであろうか、を図示する。 図13は、図11において図示されたLDPC符号を符号化するための、可能なプレプロセッシングステップを図示する。 図14は、図11で図示されたLDPC符号の例についてプレ計算された行列を与えられ、情報ブロックを符号化するためのプロセスを図示する。 図15は、操作のシーケンスとしてLDPC符号化プロセスを図示する。 図16は、図7のエンコーダをベクトル化するLDPCエンコーダを図示する。 図17は、基本グラフ(base graph)のパリティ検査行列を図示する。 図18は、基本符号化構造ベースのTannerグラフを図示する。 図19は、図17のグラフの、より多くの完全な基本グラフのパリティ検査行列表示を図示する。 図20は、次数1の変数ノード及び関連エッジを取り除いたより完全な基本グラフのパリティ検査行列表示(a parity check matrix representation of more complete base graph stripped of degree one variable nodes and associated edges)を図示する。 図21は、ループを形成するために、アキュムレータチェイン(accumulator chain)を閉じるさらなる次数2の変数ノードを備えた基本符号化構造の拡張(extension)を図示する。 図22は、図21の拡張された基本符号化構造のZ=8のリフティングを図示する。 図23は、図22のグラフの拡張を図示する。 図24は、低密度パリティ検査(LDPC)符号を使用しているデータを符号化するためのエンコーダを図示するブロック図である。 図25は、エンコーダ上で動作可能な例示的な方法を図示する。
詳細な説明
特徴、本質、及び本特徴の利点は、同様の参照文字が全体を通して相応じて識別する図面と併せて、下記で記載された詳細な説明からより明らかとなるであろう。
次の説明において、具体的な説明が、実施形態の完全な理解を提供するように、与えられている。しかしながら、実施形態がこれらの具体的な詳細なしに実行されることができるということを当業者によって理解されるであろう。例えば、回路は、不必要な詳細で(in unnecessary detail)、実施形態を不明確にしないために、ブロック図で示されることができる。他の例においては、既知の回路、構造、及び技術は、実施形態を不明確にしないために詳細に示されることができる。
また、実施形態は、フローチャート、フロー図、構造図、あるいはブロック図として図示されるプロセスとして説明されることができるということに注意してください。フローチャートは、シーケンシャルプロセス(sequential process)として操作を説明することができるが、操作の多くは、並列に(in parallel)あるいは同時に(concurrently)実行されることができる。さらに、操作の順序は、再配置されることができる(re-arranged)。プロセスは、その操作が完了したときに、終了する(terminated)。プロセスは、方法、ファンクション(function)、プロシージャ(procedure)、サブルーチン(subroutine)、サブプログラム、等に対応することができる。プロセスが関数に対応するとき、その終了は、コーリングファンクション(calling function)あるいはメインファンクション(main function)へのファンクションの戻り(a return of the function)に対応する。
さらに、ストレージメディア(storage medium)は、読み取り専用メモリ(ROM)、ランダムアクセスメモリ(RAM)、磁気ディスクストレージメディア、光学ストレージメディア、フラッシュメモリデバイス、及び/または情報を保存するための他のマシン可読メディア、を含んでいるデータを保存するための1つまたは複数のデバイスを表すことができる。用語「マシン可読媒体(machine readable medium)」は、ポータブルあるいは固定されたストレージデバイスに限定されていないが、光学ストレージデバイス、無線チャネル、及び、命令(単数または複数)及び/またはデータを保存し、含み、あるいは搬送することができる様々な他のメディア、を含む。
さらに、実施形態は、ハードウェア、ソフトウェア、ファームウェア、ミドルウェア、マイクロコード(microcode)、あるいはそれらのいずれの組み合わせによってインプリメントされることができる。ソフトウェア、ファームウェア、ミドルウェア、あるいはマイクロコードにおいてインプリメントされるとき、必要なタスクを実行するプログラム符号あるいは符号セグメントは、ストレージメディアあるいは他のストレージ(単数または複数)のようなマシン可読媒体において保存されることができる。プロセッサは、必要なタスクを実行することができる。符号セグメントは、プロシージャ、ファンクション、サブプログラム、プログラム、ルーチン、サブルーチン、モジュール、ソフトウェアパッケージ(software package)、クラス(class)、あるいは、命令、データ構造、あるいはプログラムステートメントのいずれの組み合わせ(any combination of instructions, data structures, or program statements)、を表すことができる。符号セグメントは、情報、データ、アーギュメント(arguments)、パラメータ、あるいはメモリコンテンツを受け渡すこと及び/または受信することによって、別の符号セグメントあるいはハードウェア回路に、結合されることができる。情報、アーギュメント、パラメータ、データ等は、メモリの共有(memory sharing)、メッセージの受け渡し(message passing)、トークンの受け渡し(token passing)、ネットワーク送信、等を含んでいるいずれの適切な手段を介して、受け渡され、転送され、あるいは送信されることができる。
ここに開示された例に関連して説明された様々な説明のための論理ブロック、モジュール、回路、エレメント及び/またはコンポーネントは、汎用プロセッサ、デジタル信号プロセッサ(DSP)、特定用途向け集積回路(ASIC)、フィールドプログラマブルゲートアレイ(FPGA)あるいは他のプログラマブル論理デバイス、ディスクリートゲートあるいはトランジスタロジック、ディスクリートハードウェアコンポーネント、あるいはここに説明されたファンクションを実行するように設計されたそれらの任意の組み合わせで、インプリメントあるいは実行されることができる。汎用プロセッサは、マイクロプロセッサであってもよいが、代替的には、プロセッサは、いずれの従来のプロセッサ、コントローラ、マイクロコントローラ、あるいはステートマシン(state machine)であってもよい。プロセッサはまた、コンピューティングデバイス(computing devices)の組み合わせ、例えば、DSPとマイクロプロセッサとの組み合わせ、多数のマイクロプロセッサ、DSPコアと併用しての1つ以上のマイクロプロセッサ、あるいは任意の他のそのような構成のもの、としてインプリメントされることができる。
ここにおいて開示された例に関連して説明された方法あるいはアルゴリズムは、プロセッシングユニット、プログラミング命令あるいは他の命令の形式で、ハードウェアにおいて、プロセッサによって実行されたソフトウェアモジュールにおいて、あるいはこれら2つの組み合わせにおいて、直接的に具現化されることができ、そして、単一のデバイスにおいて含まれてもよく、あるいはマルチプルデバイスにわたって分配されてもよい。ソフトウェアモジュールは、RAMメモリフラッシュメモリ、ROMメモリ、EPROMメモリ、EEPROMメモリ、レジスタ、ハードディスク、リムーバブルディスク、CD−ROMあるいは当技術分野において知られているストレージメディアの任意の他の形態において存在する(reside)ことができる。ストレージメディアは、プロセッサがストレージメディアから情報を読み取ることができ、またストレージメディアに情報を書き込むことができるように、プロセッサに結合されてもよい。あるいは、ストレージメディアは、プロセッサと一体化していてもよい。
LDPC符号(LDPC codes)
図1は、長さ10及びレート1/2の(3,6)レギュラーLDPC符号を決定する、二部グラフ100の一例を図示する。長さ10は、10の変数ノードV1−V10 102があるということを示しており、それぞれは、1ビットのコードワードX1−X10で識別されている。レート1/2は、変数ノード同様に半分のチェックノードがあり、すなわち、5つのチェックノードC1−C5 106がある、ということを示す。レート1/2は、下記で説明されているように5つの制約が線形的に独立(linearly independent)であるということをさらに示すことができる。
図1は、長さ10の符号に関連づけられたグラフを図示しており、長さ1000のコードワードについてのグラフを表すことは100倍複雑となるであろうということが理解されることができる。
図2は、パリティ検査行列表示を図示しており、図1で示されたLDPC符号の、Tannerグラフ(あるいは二部グラフ)の表示の代替であってもよい。パリティ検査行列は、送信されたビット上で、1セットの線形制約(linear constraints)から成る。この符号の表示において、パリティ検査行列と一般に呼ばれる行列H202は、関連性のあるエッジ接続、すなわち変数ノード及び制約ノード情報を含むことができる。行列H202において、各列(column)は、変数ノードのうちの1つに対応することができるが、各行(row)は、制約ノードのうちの1つに対応することができる。符号の例において、10の変数ノードと5つの制約ノードがあるので、行列Hは、10列と5行を含んでいる。特定の変数ノード及び特定の制約ノードに対応する行列のエントリ(entry)は、エッジがグラフにおいて存在する場合には、すなわち2つのノードが隣接している場合には、1に設定されることができ、もしそうでない場合には、0に設定されることができる。例えば、変数ノードV1はエッジによって制約ノードCに接続されるので、1つは、行列H202の一番上の左の端において配置されている。しかしながら、変数ノードVは、対応する変数ノードと制約ノードが接続されていないということを示している行列H202の第1行の5番目の位置において0が配置されるように、制約ノードCに接続されていない。制約は、行列H202の行がGF[2](ガロア体の順序2(a Galois field of order 2))にわたって線形依存ベクトルである場合には、線形的に依存していてもよい。
行列表示のケースにおいて、送信される予定であるコードワードXは、処理される予定であるコードワードのビットX1−Xnを含むベクトル206として表わされることができる。ビットシーケンスX1−Xnは、行列206及び202の積が0に等しい、すなわちHx=0である、場合に及び場合にのみ、コードワードであってもよい。
LDPC符号を符号化する(Encoding LDPC codes)
LDPC符号についての符号化プロセスは、入力情報ビットからLDPCコードワードへのマッピング(mapping)であることができる。このマッピングが取ることができる多くの可能な形態があってもよい。
符号化LDPC符号に対する汎用なアプローチは、2001年2月、IEEE Trans.on Information Theoryの47巻2号の頁638−656で発行された「低密度パリティ検査符号の効率的な符号化("Efficient Encoding of Low Density Parity Check Codes")」と題された、トーマスJ.リチャードソンとルーディガーL.アーバンキによる論文において、詳細に説明されている。
本願の符号化プロセスは、米国特許出願シリアル番号09/975,331(現在の米国特許番号6,633,856)において開示されたデコーダによってサポートされることができるLDPC符号のクラスの早い並列符号化を可能にする汎用目的の符号化デバイスを用いて使用されることができる。‘856特許において、LDPC符号のある構成されたクラスは、考慮され、そして、デコーダアーキテクチャは、それらのために提案される。本願において、デコーダアーキテクチャのある特徴は、エンコーダ構造の一部として再現されることができる。
本願の符号化プロセスにおいて、mxnパリティ検査行列は、m<n、ランクmを有していてもよく、すなわち、行は、線形的に独立していてもよい。m>nであるとき、冗長性のある行は、符号を変更することなく、取り除かれることができる。
第1に、エンコーダを設計するプロセスの一部である、ある操作が説明されるであろう。下記で説明されるプレプロセッシングの計算(pre-processing computation)は、コード設計の一部としてソフトウェアにおいて実行されることができ、エンコーダの実際のインプリメンテーションの一部でなくてもよい。
エンコーダの設計における第1ステップは、おおよそ下三角の形(approximate lower triangular form)に行列Hをおくために、行及び列を再配置することであってもよい。
Figure 2010521128
ただし、Aは、(m−g)×(n−m)であり、Bは(m−g)×gであり、Tは(m−g)×(m−g)であり、Cはg×(n−m)であり、Dは、g×gであり、そして、Eはg×(m−g)である。行列Tは、1に等しいすべての対角エントリを備えた下三角であることができる。左から行列Hを
Figure 2010521128
で乗算することは、
Figure 2010521128
を結果としてもたらす。次にφは、φ=(-ET−1B+D)で、単一ではないものとして、定義されることができる。行列φ−1は、そのあと、計算され、保存されることができる。φが可逆(invertible)でなくてもよいケースにおいて、Hの行は線形依存と考慮されることができ、φが可逆であるということを確実にするためにサブ行列
Figure 2010521128
の中で、列は置換されることができる。Hの行が線形依存ではない場合には、そのときには、Hの行のうちいくつかは、符号の定義を変更することなく、残りの行が線形依存することができるように、取り除かれることができる。上記計算のすべては、符号化される予定であるデータに依存していてもよく、また、符号化プロセスの一部でなくてもよいということに注意されるべきである。これらのステップは、エンコーダ設計の一部として、一度通常実行されることができ、そして、エンコーダの使用の間に繰り返されてもよいし、あるいは、繰り返されなくてもよい。
データをコードワードに符号化する(Encoding Data into a Codeword)
コードワードは、x=(s,p1,p2)として示されることができ、sは、システマチックな部分を示すことができ、結合されたp1及びp2は、パリティ部分を示すことができ、p1は、長さgを有し、p2は長さ(m−g)を有することができる。符号化問題は、p1及びp2の与えられたsを見つけることである。定義式Hx=0は、次の2つの式
Figure 2010521128
に自然に分割されることができる。
上記式から、
Figure 2010521128
ということを結論づけられることができる。(-ET−1A+C)sは、すべての行列がスパース(sparse)であるので効率的に計算されることができ、Asが与えられると、T−1Asは、zバック置き換え(z back substitution)を使用して、Tz=Asを解くことによって効率的に見つけられることができる。行列φ−1は、一般に高密であるが、gは、設計によって小さく作られてもよく、また、この行列は、プレ計算される(precomputed)ことができる。したがって、
Figure 2010521128
は、効率的に得られることができる。
Figure 2010521128
は、
Figure 2010521128
を解くことによって、簡単に且つ効率的に決定されることができる(図6及び7を参照)
上記の説明は、いずれのLDPC符号を符号化するための方法を提供している。LDPC符号の多くの構造(constructions)が他の自然符号化メカニズム、例えばRA符号、に対する高まり(rise)を与えることができるということが理解されるであろう。
本願は、上記で説明されたような、バイナリコードについての符号化方法を使用することができ、パリティ検査行列に沿ってそれらを「ベクトル化された(vectorized)」LDPC符号についての並列符号化エンジンへと「リフトする(lift)」ことができる、並列化されたエンコーダを提供する。リフティングは、小さいパリティ検査行列、例えばサイズ(n0,)、である、小さい「ベース符号(base code)」のいくつかの複製(copies)から、大きいLDPC符号を生成する技術である。大きい符号についての説明の複雑さを減らすことと同様に、並列符号化及び復号アルゴリズムのインプリメンテーションをイネーブルすることができる。
「LDPC符号を復号するための方法及び装置("Methods and Apparatus for Decoding LDPC codes")」と題された米国特許出願シリアル番号09/975,331で、今では2003年10月14日に発行された米国特許番号6,633,856において、LDPCグラフの構成された「ベクトル化された」クラスが説明され、動機付けられている。‘856特許において、動機は、高い効率のデコーダアーキテクチャを提供することである。本願は、‘856特許におけるような同じクラスの符号を符号化することに適切でありうる、対応するアーキテクチャを対象としている。しかしながら、本願は、‘856特許と異なり、効率的に且つ並列に実行されることができる符号化操作を含むことができるので、アーキテクチャが特定のLDPC符号の明細書がプログラマブルであることを可能とすることができる。
小さいLDPCグラフ(Small LDPC graph)
図3は、単純なイレギュラーLDPC(a simple irregular LDPC)のグラフ300を図示する。符号は、5つの変数ノードV1〜V5 302によって図示されているように、長さ5であることができる。4つのチェックノードC1〜C4 306は、トータル12エッジ 304による変数ノード302に結合されることができる。
図4は、行列402、404を使用しているパリティ検査行列の形式において、図3で示されたLDPC符号を図示する。エッジは、1’sを使用している置換行列H402において表されることができる。ビットxiは、変数ノードViに関連づけられることができる。
図5及び6は、図3で示されるLDPC符号についての符号化プロセスを図示する。上記で説明されているように、符号化プレプロセッシングステップは、図4で示されたパリティ検査行列H404の行及び列を、下三角の形式に再配置することを含むことができる。図5は、図4の行列の再配置の一例を図示する。行列は、行2及び列4をスワップすること(swapping)によって再配置されることができる。
図5において、行列H501は、再配置後の異なるコンポーネント(components)を示す。注釈として、サブ行列(r1,r2;c1,c2)は、オリジナル行列において、[r1,r2]における行インデクスと[c1,c2]における列インデクスで、すべてのエントリを備えている行列であるように定義づけられることができる。行列A502は、行列H501のサブ行列(1,3;1,1)として定義されることができる。行列B503は、行列Hのサブ行列(1,3;2,2)として、定義されることができる。行列T504は、行列Hのサブ行列(1,3;3,5)として定義されることができ、そしてそれは、下三角の形式である。行列C505は、行列Hのサブ行列(4,4;1,1)として定義されることができる。行列D506は、行列Hのサブ行列(4,4;2,2)として定義されることができる。行列E507は、行列Hのサブ行列(4,4;3,5)として定義されることができる。ガウス削除によるφ=(-ET−1B+D)の派生(derivation)は、φ509及びその逆数(inverse)φ−1510が得られることができる508において図示されている。
図6は、実際の符号化プロセスの与えられた情報ブロックs=[1]601と、図5で示されたプレ計算された行列と、を図示する。行列によるベクトルの標準乗算は、As 602、T−1As 603、ET−1As 604、ET−1As+Cs 605、p=φ−1(ET−1As+Cs) 606、Bp607、Bp+As 608、及びp=T−1(Bp+As) 609の計算を可能にすることができる。T−1による乗算は、バック置き換え(back substitution)を使用して実行されることができるということに注意されるべきである。最終結果において、符号化されたビットx=[p,p2,s]は、ベクトル610において示されることができる。
バイナリ行列によるバイナリベクトルの乗算は、単純な操作のシーケンスに分解されることができる。例えば、ハードウェアプロセッサにおいて、バイナリベクトルv(nx1)でバイナリ行列U(mxn)を乗算することを考えてください。乗算の前に、ベクトルvは、インデクスsで開始して、いくつかの物理ロケーション、例えばメモリ、において利用可能であることができるということが仮定されることができ、その結果は、インデクスtで開始するロケーションにおいて保存されることができる。さらに、行列Uの行
Figure 2010521128
は、非ゼロエントリ(nonzero entries)を有しているということが仮定されることができ、すなわち、
Figure 2010521128
としてインデクス化された列において、1’sである。2つの命令(1)(0 a b)及び(2)(1 a b)は、次のように定義されることができ、(0 a b)は、プロセッサがロケーションbにおいて値を読み取り、ロケーションaにそれを書き込むように命令することができ、(1 a b)は、ロケーションbにおいて値を読み取り、それを加えるように命令することができ、すなわちロケーションaにおいて現在の値で排他的論理和をとる。言い換えると、第2の操作は、ロケーションaにおいて値を累積する(accumulate)ことができ、第1は、上書きする(overwrites)。Uによるベクトルvの乗算は、それら2つの単純な操作の以下のシーケンス:
Figure 2010521128
、に分解されることができる。命令のトータル数は、行列における非ゼロエントリの数と同じであってもよい。
図7は、図3において示されるLDPC符号に対応している2つの単純な命令/操作のシーケンスとして、符号化プロセスを図示する。メモリデバイス702は、情報ビット、符号化されたビット、及び中間変数を保存することができる。メモリ702のロケーション0は、単一の情報ビット710を保存するように割り当てられることができ、ロケーション1は、パリティビットp712を保存するように割り当てられることができ、ロケーション2−4は、パリティビットp714を保存するように割り当てられることができる。追加メモリスペースは、中間値を保つために提供されることができる。メモリ902の例は、As716の値を、そのあとで、Bp+Asの値を保存するためにロケーション5−7を提供することができ、T−1As718を保存するためにロケーション8−10を提供することができ、そして、ET−1As720を保存するためにロケーション11を提供することができる。
メモリ702の上記割り付けに関して、図6で図示された符号化プロセスは、ベクトルとの行列乗算として、表704においてリストされた操作のシーケンス(0 a b)及び(1 a b)に分解されることができる。明らかにするために、表704は、1行ごとに、それらのそれぞれの行列の乗算のカウンターパート(counterparts)と一緒に、命令のシーケンスを示している。例えば乗算Asは、2つの命令:(0 7 0)が続く(0 5 0)へと分解されることができる。表706は、実行されることができる表704上の対応する行において命令が示される時間において、メモリロケーション0から11のコンテンツを示す。表704に関する命令を実行する結果は、表706の次の行において示されることができる。例えば、同じ情報ビットは、表706の第1行において図示されるように、ロケーション0へとs=[1]を保存することによって、図5のように符号化されることができる。命令(0 7 0)が続く命令(0 5 0)を実行する操作は、ブロック706の行3において示されるように、ロケーション5から7へと、結果As=(1 0 1)を与えることができる。このことは、図5におけるそのカウンターパートと同じ結果であってもよい。表706は、メモリロケーション0〜11のコンテンツの点において、完全な符号化プロセスは、表704においてエレメンタリー命令のシーケンス(sequence of elementary instructions)として、実行されるということを図示する。
表704のシーケンス命令は、ハードウェアインプリメンテーションへと容易に解釈されることができる。直接の修正(straightforward modifications)は、例えば、使用されたハードウェアのメモリ操作制約に応ずる(comply)ために、ハードインプリメンテーションの間に行われることができる。
一般的なLDPCエンコーダ(General LDPC Encoder)
図8は、一般的なLDPCエンコーダ800を図示する。ユニット操作プロセッサ(unit operation processor)808は、受信された命令によって示された3つの可能な操作のうちの1つを実行することができる。ユニット操作プロセッサ808は、sumビット(a sum bit)をクリアするか、メモリからのビット読み取りでsumビットの排他的論理和をとるか、あるいは、符号化メモリ(encoding memory)806にsumビットを出力するか、いずれかを行なうことができる。実行される予定である操作は、エンコーダ制御モジュール800において、操作制御モジュール810に関する操作によって選択され、1つまたは複数の命令の形でユニット操作プロセッサ808に指定されることができる。読み取り/書き込みの制御モジュール804、エンコーダ制御モジュール800は、符号化メモリ806がアクセスされる順序を指定することができる。操作制御モジュール810及び読み取り/書き込み制御モジュール806の両方の形のタイミングは、エンコーダ制御モジュール800において、エンコーダタイミング制御モジュール802によって制御されることができ、タイミング制御信号を通じてエンコーダのデータフローを決定する。符号化メモリ806は、SIMD読み取りあるいは書き込み命令を独立して使用して、書き込まれることができる、あるいは読み取られることができる、デュアルポートメモリブロック(dual port memory block)であってもよい。
符号化プロセスのベクトル化(Vectorization of Encoding Process)
ベクトル化されたLDPCグラフを与えられると、本願の符号化プロセスは、次のようにベクトル化されることができる。エンコーダは、同時にあるいは並列に、プロジェクトされたLDPC符号(projected LDPC code)の符号Z複製であるかのように、動作することができる。符号化プロセスの制御は、プロジェクトされたLDPCグラフに対応することができ、そして、Z複製にわたって共有されることができる。したがって、エンコーダは、ビットベクトル上で動作するものとして説明されることができ、各ベクトルは、Zエレメントを有する。Zプロジェクトされたグラフの純粋にディスジョイントパラレル符号化(purely disjoint parallel encoding of the Z projected graphs)からの1つの派生は、ビットが符号化プロセスの間にビットベクトル内で再び順序づけられる(reordered)というものであってもよい。この再び順序づける操作(reordering operation)は、回転(rotation)と呼ばれることができる。回転は、Ψによる置換操作をインプリメントすることができ、ここにおいてΨは、置換を定義するグループを表わすことができる。回転のおかげで、プロジェクトされたグラフのZ複製の処理パスは、ミックスすることができ、それによって、単一の大きいグラフを形成するためにそれらをリンクする。回転を指定する制御情報は、プロジェクトされたグラフについての制御情報に加えて、得られることができる。幸いにも、回転制御情報は、比較的小さいメモリを使用して指定されることができる。
様々な置換が回転のために使用されることができる一方で、巡回置換(cyclic permutations)の使用は、そのような置換がインプリメントされることができることが容易なため、特に興味深い。簡略のために、Ψは、巡回置換のグループを備えるということが仮定されることができる。このケースにおいて、大きなLDPCグラフは、準巡回構造(quasi-cyclic structure)を有するように、制約されることができる。この例のために、Nは、グラフにおける変数ノードの数であってもよく、Mは、グラフによる制約ノードの数であってもよい。両方のN及びMは、Z、N=nZ、及びM=mZの倍数(multiples)であるということが仮定され、ただしZは、サイクルの順序を示すことができる。
ノードは、ダブルインデクス(double index)の使用を通じて識別されることができる。したがって、変数ノードvijは、プロジェクトされたグラフのi番目の複製の、j番目の変数ノードであってもよい。Ψは、巡回置換のグループであるので、変数ノードvijは、変数ノードvi+kmodZ,jがk=1,…,Zについて制約ノードca+kmodZ,bに接続される場合に及び場合のみに、制約ノードca,bに接続されることができる。
大きいLDPCグラフ(Large LDPC graph)
より小さいグラフ表示及び回転情報を使用している大きいグラフを表示するための本願の技術は、図3のグラフ300のベクトル化に関する、図9−16を参照してさらに説明されることができる。これらの数字を参照して説明された本願の技術は、より大きいLDPCグラフに適用されることができる。
より大きなグラフは、図3で示された小さいグラフの、マルチプル複製(multiple copies)を複製すること(replicating)によって、すなわちインプリメントすることによって、そして、そのあとで、複製されたグラフの様々な複製を相互接続する回転操作を実行することによって、生成されることができる。説明(discussion)の目的のために、大きなグラフ構造内の小さいグラフは、下記で、プロジェクトされたグラフ(projected graph)と呼ばれるであろう。
図9は、図3で図示された小さいグラフの3つの並列複製(3 parallel copies)を行なうことが結果として生じる大きいグラフ900を図示する。変数ノード902’、902’’及び902’’’は、それぞれ、第1から第3のグラフに対応しており、図3のグラフの3つの複製を行なうことが結果として生じる。さらに、チェックノード906’、906’’、及び906’’’は、それぞれ、第1から第3のグラフに対応し、3つの複製を行なうことが結果として生じる。3つのグラフのうちの別の1つのノードに対して、3つのグラフのうちの1つのノードを接続しているエッジがないということが注意されるべきである。したがって、3の要因(a factor of 3)によって基本グラフを「リフトする(lifts)」この複製するプロセス(copying process)は、3つのディスジョイント同一グラフ(disjoint identical graphs)を結果としてもたらす。
図10は、行列1002及び1004を使用して上記で説明される複製するプロセスの結果を図示する。オリジナル図3のグラフの3つの複製を作るために、図4の行列402における各非ゼロエレメントは、3x3識別情報行列と置き換えられるということに注目されるべきである。したがって、行列402におけるそれぞれ1つは、対角に沿っている1’sと、行列1002を作るためにどこにでも存在する0’sと、を有している3×3行列で置き換えられる。行列1002は、図4の行列402の3倍のエッジの数を有しており、つまり、図3で示される基本グラフの3つの複製のそれぞれ1つについて12エッジを有する。ここで、変数xijは、変数ノードVijに対応することができる。
エンコーダの修正(Modification of Encoder)
図8のエンコーダ800は、上記で説明された(Z=3)パラレルグラフ((Z=3) parallel graphs)を符号化するために修正されることができる。ユニット操作プロセッサ1008は、並列で、同時に3つの同一の操作を処理することができるベクトルユニット操作プロセッサが作られることができる。ユニット操作プロセッサ1008からのすべての出力は、ベクトル化されることができ、それによって、以前に搬送されたデータの3倍を搬送する。単一のSIMD命令の指示(direction)で使用して並列で3ビットを書き込むあるいは読み取ることができる、符号化メモリ1006は、3倍幅広く作られることができる。これらのメモリからの出力は、3ビット幅ベクトル(3-bit wide vectors)であってもよい。しかしながら、ユニット操作制御1010、オーダリング(ordering)(読み取り/書き込み)制御1004及びエンコーダタイミング制御モジュール1002は、図8の同様に名づけられたエレメントと同じあるいは同様となる。
回転(rotation)
回転は、図11で示されるような3x3巡回置換行列と、図10で示された3×3識別情報行列のそれぞれを置き換えることによって導入されることができる。図11で使用される巡回置換行列について3つの可能性がありうるということに、注意されるべきである。置換行列が置換行列の第1行における第1の位置、第2の位置、あるいは第3の位置において配置された「1」を有しているかどうかを示すことによって、識別情報行列と置き換えられる予定である特定の置換行列を示すことが可能でありうる。例えば、行列1102のケースにおいて、一番上の左から始まり、下の右の端へと続行して、回転は、シーケンス(2,2,3,3,1,1,1,3,2,1,2,3)によって指定されることができる。
図12は、制約ノードの側上で巡回置換(回転)を実行する効果を図示している。置換は、制約ノード側から実行されることができるので、変数ノード側からの、エッジ間の関係、例えばオーダリングは、列1202’、1202’’、及び1202’’’において示されるように変わらないままである。しかしながら、制約側から、置換は、列内のエッジ、例えば指定ベクトルエッジ内のエッジ、をもたらし、列1204’、1204’’、1204’’’で示されているように、再び順序づけられる。このことは、プロジェクトされたグラフの異なる複製に対応するノード間の相互接続を作ることができる。
ベクトルエッジ置換、すなわち操作、の結果として、制約ノードC1,1は、エッジ(1,1)に対してエッジ(2,1)に接続されてもよく、制約ノードC2,1は、エッジ(2,1)に対してエッジ(3,1)に結合されてもよく、制約ノードC3,1は、エッジ(3,1)に対して、エッジ(1,1)に結合されてもよいということに注目されるべきである。
回転を実行するために、スイッチをメッセージパス(message paths)に導入することによって、LDPC符号は、図11において定義されるように符号化されることができる。
ベクトル符号化プロセスは、上記で説明された一般のLDPC符号化プロシージャを適用することによってさらに理解されることができる。バイナリデータに取り組む代わりに、エンコーダは、Zビットのベクトル、すなわちプロジェクトされたグラフにおける対応するZ並列複製のビット、に取り組む。パリティ検査行列H1102は、ZxZすべてのゼロ行列あるいは
Figure 2010521128
によって表されるZxZ巡回置換行列のエントリを備えることができる。Z−ビットバイナリベクトルとの巡回行列σの乗算は、kビットごとにベクトルを右シフトすることと等しくてもよい。GF(2)のフィールドにおいて、符号化プロセスは、バイナリデータケースと同じに扱われることができ、可逆(invertability)φをテストするときに行列がバイナリ表示へと最初に戻されることができるという例外を備えている。
符号化プロセスの例(Example of Encoding Process)
図13及び14は、図11で示されたLDPC符号のための符号化プロセスの一例を図示する。符号化プレプロセッシングのステップは、より下三角の形へとパリティ検査行列Hの行及び列を再配置することができる。再配置H’1301の一例は、図13において図示されている。H’1301は、オリジナル行列H’1102の行2及び4を置換することによって得られることができる。
エンコーダを構成することにおいて、プレプロセッシングは、ある情報を抽出し、保存することができる。行列A1302は、行列H’1301のサブ行列(1,3;1,1)であってもよい。行列B1303は、サブ行列(1,3;2,2)であってもよい。行列T1304は、サブ行列(1,3;3,5)であってもよく、下三角の形である。行列C1305は、サブ行列(4,4;1,1)であってもよい。行列D1306は、サブ行列(4,4;2,2)であってもよい。行列E1307は、サブ行列(4,4;3,5)であってもよい。ガウス削除による、φ=(−ET−1B+D)の派生は、1308及び1309で図示されており、その逆数φ-11310は、そのあと計算される。
オフラインでプレ計算された行列が与えられると、図14は、情報ブロックs=[100]1401の一例について、実際の符号化プロセスを図示する。ベクトルとの行列乗算は、ベクトルCs1402、As1404、T−1As1405、ET−1As1406、ET−1As+Cs1407、p=φ−1(ET−1As+Cs)1408、Bp1409、Bp+As1410、及びp=T−1(Bp+As)1411を計算する。結果として生じたコードワードは、図1412において示されている。
上記で説明された、及び図7で図示された、バイナリ行列乗算の分解と類似して、GF(2)のフィールドにおける上記の行列操作は、回転、すなわち巡回シフト(cyclic shifts)、を組み込むときに単純な操作のシーケンスに分解されることができる。2つの命令―(0 a r b)及び(1 a r b)―は、次のように定義されることができ、(0 a r b)は、プロセッサにロケーションbにおいて値を読み取り、rごとにそれを左巡回シフトし、そしてロケーションaに対して結果を書き込むように命令し、(1 a r b)は、プロセッサに、ロケーションbにおいて値を読み取り、rごとに左巡回シフトし、ロケーションaにおける値に対する結果を加えるように命令する。
乗算行列の分解(Decomposition of a Multiplication Matrix)
Z−ビットデータのベクトルv(nx1)で、ZxZ巡回行列あるいは0行列のエントリを備えている行列U(mxn)、の乗算を分解するときには、乗算の前に、ソースデータは、Z−ビットデータ幅のいくつかのメモリにおいて、ロケーションs,s+1,…,s+n−1において保持されることができるということが仮定されることができ、結果のデータは、同じメモリにおいてロケーションt,…,t+m−1において保存される予定である。行列Uの列
Figure 2010521128
は、巡回シフト値
Figure 2010521128
で、列
Figure 2010521128
において、非ゼロエントリ、すなわち
Figure 2010521128
、を有しているということがさらに仮定されることができる。これらの仮定が与えられると、vとのUの乗算は、次のシーケンスの操作:
Figure 2010521128
と等しい。命令のトータル数は、行列における非ゼロエントリの数と同じである。
符号化プロセス(Encoding Process)
15は、図11で示されたベクトルLDPC符号についての操作のシーケンス(0 a r b)及び(1 a r b)として符号化プロセスを図示する。メモリ1502は、情報ビット、符号化されたビット、及び中間変数を保存することができる。メモリ1502は、情報ビット、符号化されたビット、及び中間変数を保存することができる。メモリロケーション0’〜11’のそれぞれのコンテンツは、上記の対応するメモリロケーションの行1503で示されている。メモリは、Z−ビットデータ幅であってもよく、すなわち、単純なSIMD命令によるアクセッシングユニットは、Z−ビットベクトルであり、各メモリのロケーション0’〜11’は、Zビットを保持する。メモリ1502のロケーション0’は、単一の情報ベクトルを保存するために割り当てられることができ、ロケーション1’は、パリティベクトルpを保存するために割り当てられることができ、ロケーション2’から4’は、パリティベクトルp’を保存するために割り当てられることができる。追加メモリのスペースが、中間値を保持するために提供されることができる。メモリ1502は、ロケーション5’から7’に、Asの値を、そのあとで、Bp+Asのそれを保存するために提供することができ、T−1Asを保存するためにロケーション9’から11’に提供することができ、ET−1Asを保存するためにロケーション12’に提供することができる。
上記のメモリ1502の割り付けに関して、ベクトルとの行列乗算として図14で図示された符号化プロセスは、表1504でリストされた操作のシーケンス(0 a r b)あるいは(1 a r b)へと分解される。明らかにするために、表1504は、それらのそれぞれの行列乗算カウンターパートと一緒に、命令のシーケンスを示す。例えば、乗算Asは、2つの命令、(0 7 0 0)が続く(0 5 1 0)に分解されることができる。図14においてのように同じ情報ビットは、表706の第1行において図示されるように、ロケーション0へと、s=[100]を保存することによって、符号化されることができる。命令(0 5 1 0)及び(0 7 0 0)を実行する操作は、図14におけるそのカウンターパートと同じ、ロケーション5’から7’まで結果As=(001,000,100)を与えることができる。表1506は、命令のシーケンスが実行されているとき、メモリ1502のコンテンツの点において、完全な符号化プロセスを図示する。
表1504においてリストされる命令は、ハードウェアインプリメンテーションへと容易に解釈されることができる。命令セットの非常に多くの変更は、命令セットにおける冗長性を取り除くこと、メモリを初期化することを回避するために命令セットにおける命令を加えること、あるいは、メモリ操作の特性に合わせるために命令セットを最適化すること、を含んで、可能でありうる。そのような変更は、本願の範囲内で考慮されうる。
エンコーダ(Encoder)
図16は、エンコーダ1600を図示する。エンコーダ1600は、エンコーダ800を、回転を用いて、十分にベクトル化することができる。エンコーダ1600とエンコーダ800との間の類似点は、明らかでありうる。特に、エンコーダ制御モジュール1612及び操作制御モジュール1610は、エンコーダ800のそれらのそれぞれのカウンターパート802及び812と同じ方法であるいは同様な方法で、機能することができる。例えば、図12及び13において定義されるLDPC符号を符号化するために、これらのコンポーネントの操作は、図3の符号300の例を符号化するとき、エンコーダ800におけるそれらのカウンターパートとまさに同じであろう。符号化メモリ1606は、エンコーダ800のそのカウンターパート806のベクトル化されたバージョンであってもよい。であるがゆえに、エンコーダ800において、単一ビット保存されたメモリ、すなわちエンコーダ1600の対応するメモリは、セット、すなわちZ−ビットベクトル、を保存することができる。これらのベクトルは、SIMD命令を使用している単一ユニットとして書き込まれ、読み取られることができる。したがって、オーダリング(読み取り/書き込み)制御1604、すなわちメモリインデクスから、メモリに対して送信されるメッセージ識別子は、エンコーダ800におけるそれらと等しいあるいは同様であってもよい。読み取り/書き込み制御モジュール1604のオーダリングは、エンコーダ800のそのカウンターパート804のそれを超えて、置換、例えば回転、の情報を保存し、提供するさらなる役割を有している。
符号化の例300において、エンコーダ800は、単一ステップのシーケンス(sequence of single steps)をそのオーダリングモジュール1004において保存され、そしてそれは、行列乗算の一連(a series of matrix multiplications)を一緒に実行する。図11の符号を符号化するために、エンコーダ1600を使用することを考慮してください。オーダリングモジュール1604は、符号化の間にZ−ビットベクトルにアクセスするために、同じ上記シーケンスを保存することができ、また、Z-ビットベクトルの同じシーケンスに関連づけられた回転を記載するシーケンスを保存することができる。このシーケンスは、スイッチ1616がベクトルを回転するために、オーダリングモジュール1604によって使用されるrot信号(rot signal)を生成する基礎(basis)として役立つ。ベクトルユニット操作プロセッサ1608は、単一ビットの代わりにZ−ビットベクトル上で、動作している(クリアリングして(clearing)、蓄積して(accumulating))、あるいは出力している)ほかに、エンコーダ800のそのカウンターパート808と同じである。
上記で説明された符号化方法及び装置に関するいくつかの変更は、いくつかのインプリメンテーションのケースにおいて減らされた複雑性を結果としてもたらす。下記は、上記で説明された制御メモリ1604及び符号化メモリ1606の両方のためのメモリの必要要件を減らすことができるいくつかの変更である。インプリメンテーションは、下記で説明された1つまたは複数の変更を組み込むことができる。
第1に、命令表示は、単純化されることができる、上記で説明したように、符号化命令セットは、様々な実施形態において、2つの基本命令(0 a r b)及び(1 a r b)の順序づけられたシーケンスであり、そしてそれは、実行されるときに、実際の符号化を作る。そのような命令シーケンスは、基本命令のシーケンスへと、あるベクトルとのいくつかの行列の乗算を連続的に分解することによって、生成されることができる。分解のいくつかの例は、圧倒的な割合の次のパターンのサブシーケンス(0 a r),(1 a r),…,(1 a r)を含んでいる。このサブシーケンスにおけるaの繰り返しは、冗長であってもよい。この冗長性は、基本命令を修正することによって、容易に取り除かれることができる。したがって、2つの新しい命令、-(0 0 a)及び(1 r a)-は、次のように定義されることができ、(1 r a)は、プロセッサにロケーションaにおいて値を読み取らせ、それをrごとに左巡回シフトし、アキュムレータにおいて現在の値に対して値の排他的論理和をとるように命令することができ、(0 0 a)は、プロセッサに、ロケーションaにアキュムレータにおいて現在の値を書き込み、アキュムレータにおける値を0にリセットするように命令することができる。古い命令から新しい命令への変換は、次の通りであり、(0 a r b)は、(1 r b)、(0 0 a)に変換されることができ、(1 a r b)は、(1 0 a)、(1 r b)、(0 0 a)に変換されることができる。このルールにしたがうと、例示的なシーケンス(0 a r00),(1 a r11),…,(1 a rkk)は、(1 r00),(1 r),…,(1 r)、及び(0 0 a)に変換されてもよく、したがって、冗長性を取り除く。この方法で命令セットを変換することは、符号化メモリ1606をインプリメントするために必要とされるメモリの量を減らすことができる。
次に、命令セットの濃度(cardinality)は、減少させられることができ、LDPC符号化を行列及びベクトル乗算のシーケンス(a sequence of matrices and vectors multiplications)1600として扱うとき、符号化プロセスは、3つのステージにざっと分けられることができる。第1のステージにおいては、T−1Asは、はじめにAsを解き、そのあとでTz=Asを解くことによって得られることができ、第2のステージにおいては、
Figure 2010521128
は得られることができ、最後のステージにおいては、与えられた
Figure 2010521128
は、
Figure 2010521128
を解くことによって得られることができ、そしてそれは、バック-置き換え(back-substitution)を効率的に使用して行われることができる。オリジナルの形において、各ステージにおける行列及びベクトルの乗算は、命令サブセットに分解されることができる。それらの3つのサブセットのシーケンシャル連鎖(sequential concatenation)は、完全な命令セットであってもよく、命令セットの終わりは、符号化プロセスの終了を意味する。しかしながら、第1のステージと最後のステージとの間の命令サブセットを共有することは、可能であってもよく、したがって、命令セットの濃度を減らす可能性がある。
−1Asは、もし
Figure 2010521128
が0に初期化される場合に
Figure 2010521128
を解くことによって得られることができるということに注目されることができる。次に、命令のシーケンスは、最後のステージのために及び第2ステージのために命令サブセットの連結となるように、定義されることができる。符号化は、1)
Figure 2010521128
が0となるように初期化すること、2)最後のステージのために命令サブセットを実行すること(T−1Asを得る)、3)第2のステージのために命令サブセットを実行すること(
Figure 2010521128
を得る)、4)最後のステージのために、命令サブセットを再び実行すること(
Figure 2010521128
を得る)を備えることができる。
この命令セットの共有は、エンコーダ制御デバイス1612におけるメモリを減らすことができ、T−1As
Figure 2010521128
についてのロケーションにおいてセーブされることができるように、符号化メモリ1606を減らすこともでき、そしてそれは、セーブすることに必要がない可能性がある。
基本符号化構造ベース(Base Encoding Structure)
図17は、パリティ検査行列1700(グラフィック記号を含んでいるボックスは1を示しており、グラフィック記号を含まず、あるいは空であるボックスは0を示す)を図示し、図18は、Tannerグラフを図示しており、基本符号化構造ベースAの両方の表示は、下記で説明される。図18のグラフがリフトされるとき、四角としてここでは図示され、行列の各エントリは、置換行列あるいはゼロ行列となりうる。ゼロ行列は、空のボックスに対応し、置換行列は、グラフィックシンボルを有するボックスに対応する。巡回リフティングのケースにおいては、置換行列は、巡回置換行列であってもよい。パリティ検査行列として構造の表示において、行及び列は、置換されるように表されることができるということが理解されるべきである。同様に、Tannerグラフは、順序変更された方法で表されることができる。さらに、行列及びグラフは、より大きい構造のサブ行列及びサブグラフであってもよい。
プロジェクトされたグラフはまた、基本グラフとして知られうる。完全なグラフは、リフトされたグラフとして知られうる。リフトされたグラフは、基本グラフのZ複製を作り、複製の中で同様なエッジを置換することによって、得られることができる。簡略化のために、巡回置換に焦点をあてている。
基本グラフで有するための便利な符号化構造は、単一の次数3の変数ノードと一緒の次数2の変数ノードの累積チェインであってもよい。構造は、次数3の変数ノードVと累積チェインにおけるすべての次数2の変数ノードV−Vを通じて受け渡される単独のループ1800から主に成る。次数3の変数ノード上の2つのエッジ(1802,1804)は、ループに関係する。次数3の変数ノードV1上の第3エッジ1806は、関連づけられたパリティ検査行列を可逆のままにして、ループからの恣意的チェックノード(an arbitrary check node)に起こりやすい。(図18において、チェックノードは、C−Cを含むことができる。)この符号化構造は、基本符号化構造ベースAと呼ばれることができ、図18において示されている。いくつかの実施形態において、次数3ノードV1は、累積チェインにおけるすべての次数ノードを含むループを形成しなくてもよい。この符号化構造は、基本符号化構造ベースBと呼ばれることができる。したがって、基本符号化構造ベースAは、基本符号化構造ベースBの特別なケースであってもよい。
基本グラフのコアは、上述されたループに関係している制約ノードに接続することができるさらなる変数ノードと一緒に上記の説明された構造から成ることができる。図19で示されているように、基本グラフ1900のコアに属している変数ノードから形成されるさらなるパリティ検査ビットがあってもよい。
次数1の変数ノードの符号化は、いったんすべての他のビットが決定されると、非常に単純でありうる。したがって、符号化のために、第1の焦点は、これらのノードを取り除かれた(stripped of)構造にあってもよい。図20は、取り除かれたノード(stripped nodes)なしに、図19に対応する、例2000を与える。結果として生じる構造は、コアとよばれてもよい。コアがサブ構造として、図19の例におけるように、サブ構造として、基本符号化構造ベースAを含み、その後で、基本符号化構造ベースAを使用することは、情報ノードとして他の変数ノードを設定することを含み、システマチックノード(systematic nodes)とも呼ばれることができる。これらのノードに関連づけられたビットの値は、情報ビットから割り当てられている。基本符号化構造ベースAに関連づけられたビットは、そのあとで、符号化を完了するために、計算されることができる。いったん基本符号化構造ベースAの次数3の変数ノードの値が決定されると、そのあとで、累積チェインのビットは、単純な畳み込みのようなプロセス(simple convolution-like process)によって決定される。GF[2]にわたるコアの基本グラフにおけるすべての制約が加えられる場合、すなわち、制約から変数ノードまでの偶数のエッジが、符号化においては、0エッジと、等しいということ、及び制約から変数ノードまでの奇数のエッジは、1エッジに等しいかもしれないことに注意して、そのときには、基本符号化構造ベースAにおける次数−3ノードは、コアの基本グラフの奇数次数の情報変数ノードの単純なパリティとして書き込まれることができるということが観察されることができる。
グラフがリフトされるときに、累積チェインにおける次数2の変数ノードに関連したエッジの各ペアが同じリフティング値を与えられうる場合、そのときには、コアの基本グラフについて上記で説明されたキープロパティ(key property)は、コアでリフトされたグラフ(core lifted graph)について保存されることができる。とくに、リフトされたパリティ置換行列を加えることは、ブロックワイズ方式である以外は基本グラフの制約を加えることと類似しており、累積チェインにおける次数2ノードに関連したエッジは、情報リフトされたノードのパリティとして次数3のリフトされた変数ノードを残して、互いを効率的にキャンセルする(cancel)。次数3の変数ノードに関連づけられた結果として生じる行列は、Φ行列である。
リフティング基本符号化構造ベースBの一実施形態において、次数3ノード(degree three node)に関連づけられたエッジのうち2つに関する回転値は、第3エッジが任意の異なる値をとるけれども、形s及びs+L/4をとることができる。ここで、sは、任意の整数であり、Lは、リフティングサイズである。このケースにおいては、行列Φ−1は、多くて9つの置換行列の和だとわかるかもしれない、すなわちΦ−1による乗算は、多くて9倍のベクトルを置換することと、多くて9つの複製を加えることと、を含んでいる。この符号化構造は、リフトされた符号化構造Bと呼ばれることができる。
リフティング基本符号化構造ベースBの別の実施形態において、次数3ノードに関連づけられたループエッジのうち2つに関する回転値は、第3エッジが任意の異なる値をとるけれども、形s及びs+L/2をとることができる。このケースにおいては、行列Φ−1は、多くて3つの置換行列の和であるかもしれない、すなわちΦ−1による乗算は、多くて3倍のベクトルを置換することと、多くて3つの複製を加えることと、を含んでいる。この符号化構造は、リフトされた符号化構造Cと呼ばれることができる。
リフティング基本符号化構造ベースBの別の実施形態において、次数3ノードに関連づけられたエッジの2つに関する回転値は、第3のエッジが任意の異なる値をとるけれども、値を取ることができる。このケースにおいては、行列Φ−1は、単一置換行列であること、すなわちΦ−1による乗算は単純な置換のみを含む、が判明するかもしれない。この符号化構造は、リフトされた符号化構造Dと呼ばれることができる。
リフトされた符号化構造B、C、及びDは、すべて基本符号化構造ベースBのリフティングであってもよいということが注意されるべきである。いくつかの実施形態において、次数3ノードの2つの指定されたエッジは、基本符号化構造ベースAにおける次数3ノードの2つのループエッジであってもよい。リフトされた符号化構造B、C、及びDの中で、Bが最大の複雑さを有し、Cは、それらの間のどこかに存在しうるが、Dは、少なくとも複雑さを有しうる。対照的に、Bの利点は、リフトされたグラフにおいて、次数2ノードを通じてのループパッシング(the loop passing through the degree-2 nodes)は、また、4つの次数−3ノードを通じて受け渡すことができ、そしてそれは、グラフのパフォーマンスを、特に高い信号対雑音比において、改善することができる。対照的に、構造Cにおいて、次数−2チェインからのループは、2つの次数3ノードのみを通じて、受け渡すことができる、その一方で構造Aにおいては、1つの次数3ノードのみを通じて受け渡すことができる。したがって、符号化構造B、C、及びAは、パフォーマンスと複雑さとの間で異なるトレードオフ(trade-offs)を提供することができる。
符号化構造Bの最もリフトされたバージョンの場合、置換に関する上述された制約は累積チェインに関連づけられており、Φマトリクスは3つの置換行列の和であろう。次数3ノードのエッジのうち2つが同じ置換を有する場合、そのときには、Φ行列は、置換行列であってもよい。これは、リフトされた符号化構造Dについてのケースであってもよい。リフトされた符号化構造Dは、基本符号化構造ベースAのリフティングである場合、同じ置換を備えたエッジは、次数3ベースノードからの2つのリフトされたループエッジであり、そのあと、構造は、リフトされた符号化構造Aと呼ばれることができる。残りのキャンセルされなかったエッジに関連づけられた回転が0である場合、あるいは、Φが識別情報行列である場合、そのときには、構造は、識別を備えたリフトされた符号化構造Aと呼ばれることができる。
デコーダのパラレリズムの大きな次数の場合には、リフティングサイズZの大きな値を有することに対して利益的でありうる。対応して、小さい基本グラフを有することは望ましい可能性がある。このことは、上記で説明された符号化構造を使用することにおいて、困難さを作ることができる。具体的には、基本グラフが小さい場合には、累積チェインは、かなり短い可能性がある。構造リフトされた符号化構造Aを使用するときに、長さが基本グラフの累積チェインである、リフトされた次数3の変数ノードのうちの1つの複製と、次数2ノードのチェインと、から成るZループが作られることができる。したがって、この符号化ループはかなり短く、そして、このことは、符号の悪いパフォーマンスを結果としてもたらすことができる。
ここで提示された構造は、小さい基本グラフを保持する一方で、符号化ループLから2L+1までにおける累積チェインの効率的な増加を可能にすることができる。符号化構造Aは、2倍のサイズの基本グラフ及びリフティングサイズZ/2を備えたものとして、リフティングサイズZを備えた基本グラフを拡張した後で、表されることができる。この拡張は、グラフを変更せず、基本グラフ及びリフティングとしての解釈のみである。
拡張(Expansion)
1セットの整数{0,…,Z−1}は、セット{0,2,…,Z−2}及びセット{1,3,…,Z−1}のインターリービング(interleaving)である。{0,…,Z−1}に関する巡回置換は、Sごとに右に巡回的にシフトされる(cyclically shifting)ことによって、実行されることができ、そして、偶数エレメント{0,2,…,Z−2}及び奇数エレメント{1,3,…,Z−1}の巡回置換、及び2つのリインターリービング(reinterleaving)として均等に表されることができる。シーケンスのリインターリービングは、Sが偶数である場合には偶数のサブセットで始まり、Sが奇数である場合には奇数のサブセットで始まる。偶数シーケンスの巡回シフトは、ほとんどのS/2において(at most S/2)最大の整数であるKであってもよく、奇数シーケンスの巡回シフトはS−Kであろう。
基本グラフのサイズZのリフティングであるグラフで始まり、各基本グラフは、複製されることができ、1つは偶数ノードであり、他は、奇数ノードであり、Z/2にまでリフティングサイズを減らし、上記で説明された表示を使用して、オリジナルサイズの2倍のサイズZ/2の基本グラフのリフティングとまったく同じグラフを再現する。オリジナルグラフにおいてリフトされた変数ノードが置換Sでリフトされたチェックノードに接続される場合、そのときにはノードを複製した後で、変数ノードの偶数複製はチェックノードの偶数複製に接続され、変数ノードの奇数複製は、チェックノードの奇数複製に接続されることができ、Sが偶数である場合及びSが奇数である場合、そのときには、偶数変数ノードは、奇数チェックノードに接続されることができ、奇数変数ノードは、偶数チェックノードに接続されることができる。これら2つのエッジに関連づけられたリフティングは、K及びS−Kであってもよい。
この2倍の基本グラフのZ/2−リフトされた構造において表れるリフトされた符号化構造Aを有することが目標である。したがって、符号構造は、オリジナルZ−リフトされたより小さい基本グラフの構造において、黙示(implicit)であるべきである。
このことが生じるために、累積チェインのループを閉じるさらなる次数2ノードが基本符号化構造ベースAに加えられることができる。基本グラフにおいて、このノードは、次数3ノードからのそれらのうちの2つを並列しているそのエッジを有する。リフティングを実行するときに、このノード上のエッジは、整数値A、およびA−1をとることができ、すべての値は、モジュローZとして解釈される。この方法で、基本グラフのZ複製において表されるであろう次数2ノードを通じたZループは、単一ループZ倍長くなるであろう。符号化構造における次数3の変数ノードのループエッジ上のこの巡回置換に加えて、整数B−1とBモジュローZがあり、ただし、基本グラフにおいて、B−1置換は、リフティング値Aを有するループ次数2の変数ノード上のエッジと同じ制約ノードに接続されたエッジに関連づけられることができる。この構造が与えられると、基本グラフは、上述で説明されるように拡張されることができ、リフティングサイズは、結果として生じるグラフは、リフトされた符号化構造Aを含むように、半分にされてもよい、ただし、さらなる次数2の変数ノードの1つの複製は、符号化構造に関係している一方でその他は関係しておらず、また次数3の変数ノードの2つの複製のうちの1つは関係するがその他はしない。
いくつかの生成が、ここで可能であり得る。第1に、リフティングZは2乗であると一時的に仮定すると、基本グラフを拡張するときに、リフティング値SのLSBは、基本グラフへと動かされることができる。異なるビットが使用されうる。k番目のビットが使用される場合には、そのときには上記のA−1及びB−1の代わりに、A−2k及びB−2kが結果として生じるであろう。このケースにおいて、リフトされた蓄積構造は、単一の大きなループを形成しないかもしれないが、いくつかのループを形成する。第2に、この焦点はZについて2乗であるにもかかわらず、他の値が使用されうる。一般に、FがZの要因である限り、要因Fによるこの方法は、基本グラフを増大させることができる。
いくつかの符号設計において望ましい追加プロパティは、リフティングのスケーラビリティであり、すなわち、同じ基本グラフは、異なるリフティングサイズZで使用されることができる。さらに、異なるサイズのリフティングは、単独のリフティングからしばしば派生する。特に、焦点は、16から最高512あるいは1024である2の二乗であるZ値をサポートしていることに当てることができる。追加目的は、上記で説明されたスケーリング下で保存されたものとして、符号化構造を有することであってもよい。これは、スケーリングパラメータを妨げる(constrains)。最大のリフティングサイズのリフティングが定義され、より小さいものは、リフティング値からLSBsの適切な数を取り除くことによって派生されるスケーリングのルール(scaling rule)が提供されることができる。このスケーリング法(scaling law)は、次のように一般に表されることができる。もしSがリフティングサイズZmaxに関連するリフティングである場合には、そのときには、リフティングサイズZ1に関連するリフティングは、大きくて、S*Z1/Zmaxで、最大整数であることができる。スケーリングの下で保存される符号化構造を有することが望ましい。このタイプのスケーリングの下でいつも保持されるすなわち0及び−1 mod 2である、2つの特別なリフティング値の数字がある。したがって、符号化構造がこれらの2つの値のみを使用する場合には、そのときには、スケーリングの下で保存されるであろう。
したがって、1つのオプションは、次数−3ノードのループエッジ上でリフティング値0及び−1を、ノンループエッジ上で任意の値を、有することである。この基本グラフが2ずつ拡張されるとき、符号化構造Aをリフトする。この構造は、値0及び−1はそのようなスケーリングの下で保存されているので、すべて2の二乗によって(by all powers of two)スケーリングの下で保存されることができる。また、リフトされた符号化構造Aは、使用されることができ、Φ−1は、拡張されたグラフの置換行列であるということを意味する。
別の可能な望ましい特徴は、識別情報を備えたリフトされた符号化構造Aを有し、0となるように次数3符号化ノードのノンループエッジ上で置換を有することである。このことは、0あるいは−1の値を有する符号化構造においてすべての他の巡回置換を有することと、また、グラフにおける低い次数の変数ノードの短いループを同時に回避することと、で矛盾する(conflicts with)。
しかしながら、符号化構造の保存がいくつかの最低リフティングサイズで例えば2、16に下げている場合には、そのときには、0及び−1以外の値が使用されうる。
次数2のリフトされたループ構造及び次数3の符号化の列の主な特徴は、リフティング置換はいくつかの整数Kについて値K及びK−1を取る。K=0のみ、サイズ2に下げて、すべてのリフティングについて、このことを保存することができる。しかしながら、このプロパティが、リフティングをサイズ16に下げて保存される予定である場合には、そのときには、Kについての異なる値が選択されることができる。Kが、nが4よりも大きいあるいは等しいZ=2に対応するnビットの長さである場合、そのときには、他は任意であるが、Kのn−3 LSBsが0となるように、選択されることができる。K−1 mod2のn−3 LSBsは1であるということが続く。このケースにおいて、1ごとに異なっているリフティング値の主な特徴は保存される。例えば、もしKがnビット数であり、Jが、Kの、第1のmビットとして与えられたm−ビット数、言い換えるとmMSBs、であり、mが4あるいはそれよりも大きい場合、そのときには、J−1モジュロー2は、K−1モジュロー2のm MSBsに等しい。言い換えれば、K及びK−1のn−m LSBsがドロップされる場合には、そのときには、結果は、J及びJ−1モジュロ2のバイナリ表示である。このことは、符号化構造における次数3のノンループエッジ上で置換を設定するために使用されることができるので、拡張された符号化構造において、リフトされた符号化構造Aに関与する、符号化次数3の変数ノードの複製は置換値0でリフトされたそのノンループエッジを有する。したがっ7て、拡張された符号化構造は、識別情報を備えた符号化構造Aをリフトされる。最後のn−3ビットが0であるnビット数は、n−3 0ビット数と呼ばれる。
図21は、基本符号化構造ベースAの拡張を図示しており、変数ノードV−Vと、制約ノードC−Cを有しており、さらなる次数2の変数ノードVは、ループ2102を形成するためにアキュムレータチェインを閉じる。
図22は、図21の拡張された基本符号化構造ベースA2100のリフティングZ=8を図示する。グラフィックシンボルが、奇数及び複数の複製を区別するために使用される。この図において、0のシフトまたは−1のシフトが使用されている。次数3ノードのノンループエッジは、取り付けられて示されておらず、その置換は与えられていない。リフトされた次数3ノードのループエッジ上の置換の選択により、このことは、リフトされた符号化構造Aを表さない。変数ノードVx,zは、xがグラフの数でありzがリフティングサイズである、第1から第8のグラフに対応することができる。制約ノードCx,zは、xがグラフの数でありzがリフティングサイズである、第1から第8のグラフに対応することができる。
図23は、サイズ4のリフティング及び2倍の基本グラフとして、図22で示されたグラフの拡張を図示する。グラフは、図22のアキュムレートループを閉じた奇数の次数3s及び次数2の半分を使用して、リフトされた符号化構造Aを含むことができるということに注意してください。
パリティ検査行列(Parity Check Matrices)
上記の説明されたアプリケーションは、第3世代パートナーシッププロジェクト2(3GPP2)の無線通信システムにおいて使用されることができる。そのようなシステムは、同時係属している米国仮特許出願シリアル番号60/862,730においてある程度で説明されており、ここによって、参照によって組み込まれ、本願の一部分を形成する。さらに、これらの例についての明記された符号化(stipulated encoding)は、符号化のための基本として、リフトされた符号化構造Aを使用するためであってもよい。言い換えると、拡張されたグラフにおいて現れたリフトされた符号化構造Aは、コアのパリティビットを表している。例における列あるいは変数ノードを再び順序づけすること(reordering)は、重要な方法で例を変更しないということが理解されるべきである。同様に行あるいは制約ノードを再び順序づけすることは、例を変更しない。同様に、列におけるすべてのリフティング値に対して一定数を加えることは、重要な方法で例を変更しない。
図24は、低密度パリティ検査(LDPC)符号を使用してデータを符号化するためのエンコーダ2400を図示しているブロック図である。エンコーダは、二部グラフを備えた符号化されたデータの表示が可能とすることができる。エンコーダ2400は、データを受信し送信することができる通信インタフェース2704に結合されたプロセッシング回路2402(例、プロセッサ、プロセッシングモジュール)と、符号化されたデータを保存するメモリデバイス2406と、を含むことができる。プロセッシング回路2402は、1つまたは複数の命令をプロセッシング回路2402に提供するために制御モジュール2408に結合されることができる。命令は、限定されてはいないが、メモリデバイス2406がアクセスされる順序とデータフローのタイミングとを含むことができる。プロセッシング回路2402は、以下を達成するファンクションを実行することができる:(a)複数の低い次数の変数ノードの累積チェインを生成すること、(b)ループを2回形成するために累積チェインを閉じること、なお1回は、低い次数の変数ノードを使用し、1回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。
図25は、低密度パリティ検査(LDPC)符号を使用してデータを符号化するためのエンコーダ上で動作可能な例示的な方法を図示する。エンコーダは、2部グラフで符号化されたデータを表示することができる。エンコーダが符号化2502について低密度パリティ検査(LDPC)符号を受信するときの例示的な方法の操作。次にエンコーダは、低い次数の変数ノードの累積チェインを生成することができる2504。一構成において、複数の低い次数の変数ノードは、各エッジ上で同じ置換(permutation)を有することができる。次に、二回ループを形成するために累積チェインは閉じられることができ2506、一回は、低い次数の変数ノードを使用して、一回は、低い次数の変数ノードよりも高い次数の変数ノードを使用しており、ただしより高い次数の変数ノードは、ノンループクロージングエッジを備えることができる 2508。
別の構成にしたがって、エンコーダの回路は、二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化するために適合されることができる。同じ回路、異なる回路、あるいは同じあるいは異なる回路の第2セクションは、各エッジ上で同じ置換を有する複数の低い次数の変数ノードのループを作っている累積チェインを生成するために適用されることができる。さらに、同じ回路、異なる回路、あるいは同じあるいは異なる回路の第3セクションは、低い次数の変数ノード及び低い次数の変数ノードよりもより高い次数の変数ノードを使用してループを閉じるために適用されることができ、ただし、より高い次数の変数ノードは、ノンループクロージングエッジを備えている。同様に、同じ回路、異なる回路、第4セクションは、前記累積チェインの複数の順序変更された複製、ループの低い次数の変数ノードの複数の順序変更された複製、及びより高い次数の変数ノードの複数の順序変更された複製を備えている、リフトされたグラフ、を使用するために適用されることができる。当業者は、一般的に、本開示において説明されるプロセッシングのほとんどは、同様な方法でインプリメントされることができるということを理解するであろう。回路(単数または複数)あるいは回路セクションのいずれかは、1つまたは複数のプロセッサを備えた集積回路の一部として、単独で、あるいは、組み合わせで、インプリメントされることができる。1つまたは複数の回路は、集積回路、アドバンスRISCマシン(an Advance RISC Machine)(ARM)プロセッサ、デジタル信号プロセッサ(DSP)、汎用プロセッサ等、上でインプリメントされることができる。
概要(summary)において、本願は、限定されないが、基本グラフに関して、以下の1つまたは複数を含む多くの利益を供給することができる。
1.すべての次数2の変数ノードを備えた累積チェインは、各エッジ上で同じ置換を有することができる。
2.さらなる次数2の変数ノード、ループ次数2のノードはループを閉じ、次数3の変数ノードは、またループを閉じる。次数3の変数ノードの第3エッジは、ノンループエッジであってもよい。またリフティングに関して:
3.ループ次数2の変数ノードのエッジ上の置換は、n−3 0ビット数A及びA−1 mod 2であり、ただし2は最大のリフティングサイズである。
4.次数3の変数ノードのループエッジ上の置換は、n−3 0ビット数B及びB−1 mod 2であり、ただし、基本グラフにおいて、B−1置換は、リフティング値Aを有するループ次数2の変数ノードに関するエッジと同じ制約ノードに接続されたエッジと関連づけられる。
5.次数3の変数ノードのノンループエッジ上の置換はCである。
さらに、特別なケースは、C=0を含むことができる。構造が拡張されるときに、拡張されたグラフは、リフトされた符号化構造Aを含み、そしてそれは、識別情報を備えたリフトされた符号化構造Aを含むことができ、ただし、リフトされた符号化構造Aは、すべてのアキュムレート次数2の変数ノードから成り、ループの次数2の変数ノードの半分は、拡張された基本グラフにおいて表れる、2つの複製のループ次数2ノードのうちの1つに対応しており、次数3の変数ノードの半分は、拡張された基本グラフにおいて表れる、2つの複製の次数3ノードのうちの1つに対応している。
開示された実施形態は、次の技術:符号分割多元接続(CDMA)システム、多重キャリアCDMA(Multiple-Carrier CDMA)(MC―CDMA)、広帯域CDMA(W−CDMA)、高速ダウンリンクパケット接続(HSPDA)、時分割多元接続(TDMA)システム、周波数分割多元接続(FDMA)システム、および直交周波数分割多元接続(OFDMA)システム、のうちいずれか1つあるいは組み合わせたものに適用されることができる。
ここにおいて説明されるシグナリング送信技術は、様々な手段によってインプリメントされることができる。例えば、これらの技術は、ハードウェア、ソフトウェア、あるいはそれらの組み合わせにおいて、インプリメントされることができる。ハードウェアインプリメンテーションの場合は、シグナリングを処理する(例、圧縮し、符号化する)ために使用されたプロセッシングユニットは、1つ以上の特定用途向け集積回路(ASICs)、デジタル信号プロセッサ(DSPs)、デジタル信号処理デバイス(DSPDs)、プログラマブルロジックデバイス(PLDs)、フィールドプログラマブルゲートアレイ(FPGAs)、プロセッサ、コントローラ、マイクロコントローラ、マイクロプロセッサ、ここに説明されたファンクションを実行するように設計された他の電子ユニット、あるいはそれらの組み合わせ、の中でインプリメントされることができる。シグナリングを復号し、解凍する(decompress)ために使用されるプロセッシングユニットはまた、1つ以上のASICs、DSPsなどを使って、インプリメントされることもできる。
ソフトウェアインプリメンテーションの場合は、シグナリング送信技術は、ここにおいて説明されるファンクションを実行するモジュール(例、プロシージャ、ファンクション、等)でインプリメントされることができ、例えばコンパクトコンピュータディスのようなマシン可読メディア上で保存されることができる。ソフトウェア符号は、メモリユニットにおいて保存され、プロセッサによって実行されることができる。メモリユニットは、プロセッサ内で、あるいはプロセッサの外でインプリメントされることができる。
図8、16、24、及び25において図示されるコンポーネント、ステップ、及び/またはファンクションのうち1つまたは複数は、単一のコンポーネント、ステップ、あるいはファンクションに再配置され及び/または組み合わされることができ、あるいはいくつかのコンポーネント、ステップ、あるいはファンクションにおいて具現化されることができる。さらなるエレメント、コンポーネント、ステップ、及び/またはファンクションはまた、範囲から逸脱することなく加えられることができる。図8、16、及び/または24で図示された、装置、デバイス、及び/またはコンポーネントは、上記で説明される方法、特徴、あるいはステップの1つまたは複数を実行するように構成されることができる。ここにおいて説明される新規アルゴリズムは、ソフトウェア及び/または埋め込まれたハードウェアにおいて効率的にインプリメントされることができる。
当業者は、様々な説明のための論理ブロック、モジュール、回路、および、ここに開示された実施形態に関連して説明されたアルゴリズムステップは、電子ハードウェア、コンピュータソフトウェアあるいは両方の組合せとしてインプリメントされることができる、ということをさらに理解するであろう。ハードウェアとソフトウェアのこの互換性(interchangeability)を明瞭に説明するために、様々な説明のためのコンポーネント、ブロック、モジュール、回路およびステップが、一般に、それらの機能性という観点から、上記で説明されてきた。そのような機能性が、ハードウェアあるいはソフトウェアとしてインプリメントされるかどうかは、特定のアプリケーションと全体のシステムに課された設計制約(design constraints)に依存する。
ここにおいて説明された本願の様々な特徴は、範囲から逸脱することなく異なるシステムにおいてインプリメントされることができる。例えば、本願のいくつかのインプリメンテーションは、コンピュータ、パーソナルアシスタントデバイス(personal assistant devices)、デジタルオーガナイザ(digital organizers)等、上で実行されることができる。
前述の実施形態は、単なる例であって、範囲を限定するものとして解釈されるべきではないということに注意されるべきである。本実施形態の説明は、説明のためのものであって、特許請求項の範囲を制限するものとして意図されていない。そのため、本教示は、他のタイプの装置に容易に適用されることができ、そして、多くの代替(alternatives)、修正(modifications)、及び変更(variations)が、当業者にとって明らかであろう。

Claims (41)

  1. 二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化するための方法であって、前記方法は、
    複数の低い次数の変数ノードの累積チェインを生成することと;
    ループを二回形成するために前記累積チェインを閉じることと、なお、一回は、低い次数の変数ノードを使用し、一回は、前記の低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている;
    を備えている、方法。
  2. 前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項1に記載の方法。
  3. 前記複数の低い次数の変数ノードは、複数のコア次数2の変数ノードを備えており、
    前記のより高い次数の変数ノードは、コア次数3の変数ノードを備えており、
    ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数2の変数ノードを備えている、請求項1に記載の方法。
  4. 前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用すること、をさらに備えている請求項1に記載の方法。
  5. 前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、n−3 0ビット数A及びA+C−1 mod2によるループクロージングの低い次数の置換を備えており、ただし2は、最大のリフティングサイズであり、Cはまたn−3 0ビット数である、請求項4に記載の方法。
  6. 前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、n−3 0ビット数B及びB+C−1 mod 2によるノンループクロージング置換を備えており、ただし、Cは、n−3 0ビット数であり、また基本グラフにおいては、前記のB+C−1置換は、数字Aによる置換を有する前記ループクロージングの低い次数の変数ノード上の前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項5に記載の方法。
  7. 前記のより高い次数の変数ノードの前記ノンループクロージングエッジ上の置換は0である、請求項1に記載の方法。
  8. 巡回リフトされた低密度パリティ検査(LDPC)符号を使用すること、をさらに備えており、いくつかの基本変数ノードについては、前記のリフトされた変数ノードの半分は、情報ノードであり、半分がパリティノードである、請求項6に記載の方法。
  9. 前記LDPC符号の基本グラフの構造は、さらなる次数2の変数ノードを備えた基本符号化構造Aを有しており、前記さらなる次数2の変数ノードは、構造Aの前記累積チェインの前記ループを閉じるループクロージングの次数2の変数ノードを備えている、請求項8に記載の方法。
  10. リフトされたループクロージングの次数2の変数ノードのほかのすべてのリフトされたノードは、それらのそれぞれの基本ノードに応じるパリティノードあるいは情報ノードのいずれかである、請求項9に記載の方法。
  11. 前記ループクロージングのコア次数2の変数ノードは、置換X及びX+C−1モジュローZを有しており、ただし、Cは、n−3 0ビット数である、請求項3に記載の方法。
  12. Cは0である、請求項11に記載の方法。
  13. 前記のより高い次数の変数ノードのループクロージングエッジは、リフティング置換Y及びY+C−1モジュローZを関連づけている、請求項1に記載の方法。
  14. 置換Xで前記エッジ上の前記のループクロージングの次数2の変数ノードに取り付けられている前記制約ノードは、置換Y+C−1で前記のより高い次数の変数ノードに接続する、請求項9に記載の方法
  15. 前記基本グラフの構造が2つのうちの1つの要因によって拡張され、前記リフティングサイズは、前記基本グラフへと前記のリフティングからビットを移動させることによって2つのうちの1つの要因により減らさせられるとき、そのときには、結果として生じる符号化構造は、識別情報を備えたあるいは識別情報なしの、リフトされた符号化構造Aである、請求項9に記載の方法。
  16. コア次数3の符号化ノードのノンループクロージングエッジ上でノンループクロージングエッジ置換を使用することと、ただし、前記のノンループクロージングエッジ置換は0である;
    前記ループに関係しているコア次数2の変数ノードの前記のエッジ上で、すべての他の置換のために使用することと、なお、その値は、0あるいは−1mod2である;
    請求項1に記載の方法。
  17. 二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化するための装置であって、そのデバイスは、
    前記の符号化されたデータを保存するためのメモリデバイスと、
    制御モジュールと、
    前記メモリデバイスと前記制御モジュールとの間で結合されたプロセッシング回路と、
    を備えており、
    前記プロセッシング回路は、
    複数の低い次数の変数ノードの累積チェインを生成するように、
    ループを二回形成するために前記累積チェインを閉じるように、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている、
    装置。
  18. 前記複数の低い次数の変数ノードは、各エッジ上で、同じ置換を有する、請求項17に記載の装置。
  19. 前記複数の低い次数の変数ノードは、複数のコア次数2の変数ノードを備えており、
    前記のより高い次数の変数ノードは、コア次数3の変数ノードを備えており、
    ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数2の変数ノードを備えている、請求項17に記載の装置。
  20. 前記プロセッシング回路は、前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するようにさらに構成されている、請求項17に記載の装置。
  21. 前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、n−3 0ビット数A及びA+C−1 mod2によるループクロージングで低い次数の置換を備えており、ただし2は、最大リフティングサイズであり、Cはまた、n−3 0ビット数である、請求項20に記載の装置。
  22. 前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、n−3 0ビット数B及びB+C−1 mod2によるノンループクロージング置換を備えており、Cは、n−3 0ビット数であり、基本グラフにおいては、前記B+C−1置換は、数字Aによる置換を有する前記ループクロージングの低い次数の変数ノード上で前記エッジとして同じ制約ノードに接続されるエッジに関連づけられている、請求項21に記載の装置。
  23. 前記プロセッシング回路は、巡回リフトされた低密度パリティ検査(LDPC)符号を使用するようにさらに構成されており、いくつかの基本変数ノードについては、前記のリフトされた変数ノードの半分は情報ノードで、半分はパリティノードである、請求項17に記載の装置。
  24. 前記LDPC符号の基本グラフの構造は、さらなる次数2の変数ノードを備えた基本符号化構造ベースAを有しており、前記さらなる次数2の変数ノードは、構造Aの前記累積チェインの前記ループを閉じるループクロージングの次数2の変数ノードを備えている、請求項23に記載の装置。
  25. リフトされたループクロージングの次数2の変数ノードのほかのすべてのリフトされたノードは、それらのそれぞれの基本ノードに応答するパリティノードあるいは情報ノードのいずれかである、請求項24に記載の装置。
  26. 二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化するための装置であって、そのデバイスは、
    複数の低次変数ノードの累積チェインを生成するための手段と、
    ループを二回形成するために前記累積チェインを閉じるための手段と、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている、
    装置。
  27. 前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項26に記載の装置。
  28. 前記複数の低い次数の変数ノードは、複数のコア次数2の変数ノードを備えており、
    前記のより高い次数の変数ノードは、コア次数3の変数ノードを備えており、
    ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数2の変数ノードを備えている、請求項26に記載の装置。
  29. 前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するための手段、をさらに備えている請求項26に記載の装置。
  30. 前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、n−3 0ビット数A及びA+C−1 mod 2によるループクロージングで低い次数の置換を備えており、ただし、2は、最大のリフティングサイズであり、Cはまたn−3 0ビット数である、請求項29に記載の装置。
  31. 前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、n−3 0ビット数B及びB+C−1 mod2によるノンループクロージング置換を備えており、ただし、Cはn−3 0ビット数であり、また、基本グラフにおいては、前記B+C−1置換は、数字Aによる置換を有する前記ループクロージングの低い次数の変数ノード上で前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項30に記載の装置。
  32. プロセッサ可読メディアであって、プロセッサによって実行されるときに、前記プロセッサに、
    複数の低い次数の変数ノードの累積チェインを生成させ;
    ループを二回形成するために前記累積チェインを閉じさせる、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている;
    二部グラフによる表示が可能である低密度パリティ検査(LDPC)符号を使用してデータを符号化することを達成するための、エンコーダ上で動作可能な1つまたは複数の命令、
    を有する、プロセッサ可読メディア。
  33. 前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項32に記載のプロセッサ可読メディア。
  34. 前記複数の低い次数の変数ノードは、複数のコア次数2の変数ノードを備えており、
    前記のより高い次数の変数ノードは、コア次数3の変数ノードを備えており、
    前記ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数2の変数ノードを備えている、請求項32に記載のプロセッサ可読メディア。
  35. プロセッサによって実行されるときに、前記プロセッサに、
    前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用させる、
    1つまたは複数の命令、
    をさらに有する、請求項32に記載のプロセッサ可読メディア。
  36. 前記ループクロージングの低い次数の変数ノードの前記複数の順序変更された複製は、n−3 0ビット数 A及びA+C−1 mod2によるループクロージングの低い次数の置換を備えており、ただし、2は、最大のリフティングサイズであり、Cはまたn−3 0ビット数である、請求項35に記載のプロセッサ可読メディア。
  37. 前記のループクロージングのより高い次数の変数ノードの前記複数の順序変更された複製の、複数の順序変更されたノンループクロージングエッジは、n−3 0ビット数 B 及びB+C−1 mod 2によるノンループクロージング置換を備えており、ただし、Cは、n−3 0ビット数であり、また基本グラフにおいて、前記B+C−1の置換は、数字Aによる置換を有する前記ループクロージングの低い次数の変数ノード上の前記エッジと同じ制約ノードに接続されたエッジに関連づけられている、請求項36に記載のプロセッサ可読メディア。
  38. 複数の低い次数の変数ノードの累積チェインを生成することと;
    ループを二回形成するために前記累積チェインを閉じることと、なお、一回は、低い次数の変数ノードを使用し、一回は、前記低い次数の変数ノードよりも高い次数の変数ノードを使用しており、前記のより高い次数の変数ノードは、ノンループクロージングエッジを備えている;
    を達成するためにファンクションを実行するように構成されたプロセッシング回路、
    を備えているプロセッサ。
  39. 前記複数の低い次数の変数ノードは、各エッジ上で同じ置換を有する、請求項38に記載のプロセッサ。
  40. 前記複数の低い次数の変数ノードは、複数のコア次数2の変数ノードを備えており、
    前記のより高い次数の変数ノードは、コア次数3の変数ノードを備えており、
    前記ループクロージングの低い次数の変数ノードは、ループクロージングのコア次数2の変数ノードを備えている、請求項38に記載のプロセッサ。
  41. 前記プロセッシング回路は、前記累積チェインの複数の順序変更された複製、前記ループクロージングの低い次数の変数ノードの複数の順序変更された複製、及び前記のループクロージングのより高い次数の変数ノードの複数の順序変更された複製、を備えているリフトされたグラフ、を使用するようにさらに構成されている、請求項38に記載のプロセッサ。
JP2009553712A 2007-03-09 2008-03-10 低密度パリティ検査(ldpc)符号を符号化し復号するための方法及び装置 Expired - Fee Related JP5231459B2 (ja)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US89418307P 2007-03-09 2007-03-09
US60/894,183 2007-03-09
US12/044,962 US8261155B2 (en) 2007-03-09 2008-03-08 Methods and apparatus for encoding and decoding low density parity check (LDPC) codes
US12/044,962 2008-03-08
PCT/US2008/056390 WO2008112625A1 (en) 2007-03-09 2008-03-10 Encoding and decoding of low density parity check (ldpc ) codes

Publications (2)

Publication Number Publication Date
JP2010521128A true JP2010521128A (ja) 2010-06-17
JP5231459B2 JP5231459B2 (ja) 2013-07-10

Family

ID=39742876

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2009553712A Expired - Fee Related JP5231459B2 (ja) 2007-03-09 2008-03-10 低密度パリティ検査(ldpc)符号を符号化し復号するための方法及び装置

Country Status (7)

Country Link
US (1) US8261155B2 (ja)
EP (1) EP2132878A1 (ja)
JP (1) JP5231459B2 (ja)
KR (1) KR101198536B1 (ja)
CN (1) CN101632230B (ja)
TW (1) TW200849834A (ja)
WO (1) WO2008112625A1 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8117523B2 (en) * 2007-05-23 2012-02-14 California Institute Of Technology Rate-compatible protograph LDPC code families with linear minimum distance
KR100949519B1 (ko) * 2007-12-18 2010-03-24 한국전자통신연구원 낮은 복잡도 및 고속 복호를 위한 패리티 검사행렬 생성방법과, 그를 이용한 저밀도 패리티 검사 부호의 부호화장치 및 그 방법
ES2386449B1 (es) * 2010-01-20 2013-08-23 Marvell Hispania, S.L. (Sociedad Unipersonal) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos mejorado.
EP2395667B1 (en) * 2009-02-06 2015-12-16 Marvell Hispania S.L. Quasi-cyclic ldpc coding
ES2363846B1 (es) * 2009-02-06 2012-06-06 Marvell Hispania, S.L. (Sociedad Unipersonal) Procedimiento y dispositivo de comunicación de datos a través de medios ruidosos.
JP5440836B2 (ja) * 2009-03-24 2014-03-12 ソニー株式会社 受信装置及び方法、プログラム、並びに受信システム
US8407555B2 (en) * 2009-03-30 2013-03-26 Broadcom Corporation LDPC codes robust to non-stationary narrowband ingress noise
TWI427936B (zh) * 2009-05-29 2014-02-21 Sony Corp 接收設備,接收方法,程式,及接收系統
CN101902227B (zh) * 2009-05-31 2012-11-28 中兴通讯股份有限公司 一种ldpc码的分层编码方法和装置
US9397699B2 (en) * 2009-07-21 2016-07-19 Ramot At Tel Aviv University Ltd. Compact decoding of punctured codes
US8516351B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8375278B2 (en) * 2009-07-21 2013-02-12 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
US8516352B2 (en) * 2009-07-21 2013-08-20 Ramot At Tel Aviv University Ltd. Compact decoding of punctured block codes
FR2951339B1 (fr) * 2009-10-09 2011-12-09 Commissariat Energie Atomique Procede de decodage de codes non binaires
US8553686B2 (en) * 2010-04-28 2013-10-08 Broadcom Corporation Performing actions on frame entries in response to receiving bulk instruction
WO2012039798A2 (en) * 2010-06-15 2012-03-29 California Institute Of Technology Rate-compatible protograph ldpc codes
JP5269936B2 (ja) * 2011-03-17 2013-08-21 株式会社東芝 符号化器及び記憶装置
US8839069B2 (en) * 2011-04-08 2014-09-16 Micron Technology, Inc. Encoding and decoding techniques using low-density parity check codes
US8832520B2 (en) 2011-11-29 2014-09-09 California Institute Of Technology High order modulation protograph codes
US9154261B2 (en) * 2013-01-16 2015-10-06 Broadcom Corporation Low density parity check (LDPC) coding in communication systems
WO2014127129A1 (en) * 2013-02-13 2014-08-21 Qualcomm Incorporated Ldpc design using quasi-cyclic constructions and puncturing for high rate, high parallelism, and low error floor
CN105429645B (zh) * 2014-09-17 2019-03-08 上海数字电视国家工程研究中心有限公司 针对低码率ldpc码的校验矩阵、ldpc码字及编码方法
KR101776273B1 (ko) 2015-02-25 2017-09-07 삼성전자주식회사 송신 장치 및 그의 부가 패리티 생성 방법
US10411737B2 (en) 2015-02-25 2019-09-10 Samsung Electronics Co., Ltd. Transmitter and method for generating additional parity thereof
US10784901B2 (en) 2015-11-12 2020-09-22 Qualcomm Incorporated Puncturing for structured low density parity check (LDPC) codes
US10291354B2 (en) 2016-06-14 2019-05-14 Qualcomm Incorporated High performance, flexible, and compact low-density parity-check (LDPC) code
US10275243B2 (en) * 2016-07-02 2019-04-30 Intel Corporation Interruptible and restartable matrix multiplication instructions, processors, methods, and systems
WO2018029616A1 (en) * 2016-08-12 2018-02-15 Telefonaktiebolaget Lm Ericsson (Publ) Determining elements of base matrices for quasi-cyclic ldpc codes having variable code lengths
CN107959501B (zh) * 2016-10-17 2021-06-29 上海数字电视国家工程研究中心有限公司 一种ldpc编码器
US10312939B2 (en) 2017-06-10 2019-06-04 Qualcomm Incorporated Communication techniques involving pairwise orthogonality of adjacent rows in LPDC code
US10514924B2 (en) 2017-09-29 2019-12-24 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
US11256504B2 (en) 2017-09-29 2022-02-22 Intel Corporation Apparatus and method for complex by complex conjugate multiplication
US10534838B2 (en) * 2017-09-29 2020-01-14 Intel Corporation Bit matrix multiplication
US10802826B2 (en) 2017-09-29 2020-10-13 Intel Corporation Apparatus and method for performing dual signed and unsigned multiplication of packed data elements
WO2019095336A1 (en) 2017-11-17 2019-05-23 Zte Corporation System and method for processing control information
WO2019107912A1 (ko) * 2017-11-29 2019-06-06 연세대학교 산학협력단 저지연 및 고신뢰도 특성을 가지는 ldpc 부호화 장치 및 방법
CN108270450B (zh) * 2018-01-19 2021-05-14 南开大学 一种高码率下的规则准循环ldpc码的构造方法
CN110022187B (zh) * 2019-03-06 2020-08-04 华中科技大学 通信调制系统中(n,n(n-1),n-1)-PGC代数解码方法及解码器

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003115768A (ja) * 2001-07-11 2003-04-18 Internatl Business Mach Corp <Ibm> データの低密度パリティ検査符号化方法および装置
WO2006016209A1 (en) * 2004-08-05 2006-02-16 Nokia Corporation Irregularly structured, low denisty parity check codes
JP2006519560A (ja) * 2003-02-26 2006-08-24 フラリオン テクノロジーズ,インコーポレーテッド マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置
JP2007503755A (ja) * 2003-08-26 2007-02-22 サムスン エレクトロニクス カンパニー リミテッド 移動通信システムにおけるブロック低密度パリティ検査符号の符号化/復号化装置及び方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US31734A (en) * 1861-03-19 Btjikding for preserving
US6633856B2 (en) * 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US6961888B2 (en) * 2002-08-20 2005-11-01 Flarion Technologies, Inc. Methods and apparatus for encoding LDPC codes
US6957375B2 (en) * 2003-02-26 2005-10-18 Flarion Technologies, Inc. Method and apparatus for performing low-density parity-check (LDPC) code operations using a multi-level permutation
JP4224777B2 (ja) * 2003-05-13 2009-02-18 ソニー株式会社 復号方法および復号装置、並びにプログラム
US20050283707A1 (en) * 2004-06-22 2005-12-22 Eran Sharon LDPC decoder for decoding a low-density parity check (LDPC) codewords
US7617439B2 (en) * 2005-01-10 2009-11-10 Broadcom Corporation Algebraic construction of LDPC (Low Density Parity Check) codes with corresponding parity check matrix having CSI (Cyclic Shifted Identity) sub-matrices
GB2434946B (en) * 2006-02-01 2008-07-23 Toshiba Res Europ Ltd Wireless communications apparatus

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2003115768A (ja) * 2001-07-11 2003-04-18 Internatl Business Mach Corp <Ibm> データの低密度パリティ検査符号化方法および装置
JP2006519560A (ja) * 2003-02-26 2006-08-24 フラリオン テクノロジーズ,インコーポレーテッド マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置
JP2007503755A (ja) * 2003-08-26 2007-02-22 サムスン エレクトロニクス カンパニー リミテッド 移動通信システムにおけるブロック低密度パリティ検査符号の符号化/復号化装置及び方法
WO2006016209A1 (en) * 2004-08-05 2006-02-16 Nokia Corporation Irregularly structured, low denisty parity check codes

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
JPN6011067985; Sarah J. Johnson, et al.: 'A Family of Irregular LDPC Codes With Low Encoding Complexity' IEEE Communications Letters Vol.7, No.2, 200302, pp.79-81 *
JPN6011067988; 'Irregular Structured LDPC Codes' IEEE 802.16 Broadband Wireless Access Working Group, IEEE C802.16e-04/264 , 20040817 *

Also Published As

Publication number Publication date
US20080222486A1 (en) 2008-09-11
WO2008112625A1 (en) 2008-09-18
CN101632230A (zh) 2010-01-20
US8261155B2 (en) 2012-09-04
KR101198536B1 (ko) 2012-11-06
JP5231459B2 (ja) 2013-07-10
EP2132878A1 (en) 2009-12-16
TW200849834A (en) 2008-12-16
KR20090130183A (ko) 2009-12-18
CN101632230B (zh) 2014-02-19

Similar Documents

Publication Publication Date Title
JP5231459B2 (ja) 低密度パリティ検査(ldpc)符号を符号化し復号するための方法及び装置
US8751902B2 (en) Methods and apparatus for encoding LDPC codes
JP7372369B2 (ja) 構造的ldpcの符号化、復号化方法および装置
CA2536259C (en) Methods and apparatus for encoding ldpc codes
KR101789959B1 (ko) 구조적 ldpc의 인코딩 방법, 디코딩 방법, 인코딩 장치 및 디코딩 장치
JP5483875B2 (ja) Ldpc符号のブロックおよびレートに独立な復号の方法および装置
WO2011109084A1 (en) Quasi-cyclic ldpc encoding and decoding for non-integer multiples of circulant size
JP4339886B2 (ja) マルチレベルの置換を使用する低密度パリティチェック(ldpc)符号動作を行うための方法および装置
JP5146322B2 (ja) 復号装置、復号方法
JP4832447B2 (ja) チャネルコードを用いた復号化装置及び方法
KR20130118162A (ko) Ldpc 부호 복호기 및 복호 방법
US8504894B1 (en) Systematic encoding for non-full row rank, quasi-cyclic LDPC parity check matrices
JP5510447B2 (ja) 復号装置および復号方法
US11075650B1 (en) Sub-matrix reduction for quasi-cyclic LDPC codes
JP2006100941A (ja) 信号処理装置、低密度パリティ検査符号の符号化方法および復号方法

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20120110

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120404

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120411

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120510

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120517

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20120611

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20120618

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20120704

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20130321

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

Free format text: PAYMENT UNTIL: 20160329

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees