(57)【要約】      （修正有）【課題】LDPC符号やターボ符号などの反復復号において、収束速度の向上させる、すなわち反復回数を少なくする。【解決手段】記号ブロックが反復確率伝搬を使用して復号化される。１組の確率レジスタが、ブロック内の対応する記号が特定の値を有する確率を記憶する。検査プロセッサが、メッセージ更新規則によりビットから検査へのメッセージ入力から検査からビットへのメッセージ出力を求める。リンクプロセッサが１組の確率レジスタを検査プロセッサに接続する。各リンクプロセッサは関連するメッセージレジスタを有する。メッセージ及び確率は、１組の確率レジスタと検査プロセッサとの間でリンクプロセッサを介して、確率を更新しながら所定の反復回数分やりとりされて、最後の確率に基づいて記号ブロックが復号化される。【選択図】図５
2008035524.tif 000002
【特許請求の範囲】
【請求項１】
反復確率伝搬を使用して記号ブロックを復号化する装置であって、
前記ブロック中の対応する記号が特定の値を有する確率を記憶するようにそれぞれ構成される１組の確率レジスタと、
メッセージ更新規則により、ビットから検査へのメッセージ入力から検査からビットへのメッセージ出力を求めるように構成される複数の検査プロセッサと、
前記１組の確率レジスタを前記複数の検査プロセッサに接続する複数のリンクプロセッサと、
前記検査からビットへのメッセージ、前記ビットから検査へのメッセージ、及び確率を前記１組の確率レジスタと前記複数の検査プロセッサとの間で前記複数のリンクプロセッサを介して、前記確率を更新しながら所定の反復回数分やりとりする手段と
を備える、記号ブロックを復号化する装置。
【請求項２】
前記リンクプロセッサは、入力される確率及び前記検査からビットへのメッセージを使用して前記ビットから検査へのメッセージ出力を求める、請求項１に記載の記号ブロックを復号化する装置。
【請求項３】
前記リンクプロセッサはそれぞれ関連するメッセージレジスタを有し、該メッセージレジスタは前記検査からビットへのメッセージのみを記憶する、請求項１に記載の記号ブロックを復号化する装置。
【請求項４】
前記記号ブロックは、ｍ行ｎ列の基底行列を有する準巡回低密度パリティ符号（ＱＣ−ＬＤＰＣ）を使用して符号化され、該基底行列には、１列毎に確率レジスタバンクがあり、１行毎に検査プロセッサがある、請求項１に記載の記号ブロックを復号化する装置。
【請求項５】
前記基底行列はｚ個の置換部分行列を含み、前記確率レジスタバンクはそれぞれ、単一の確率レジスタにそれぞれ対応するｚ個の確率段階を含む、請求項４に記載の記号ブロックを復号化する装置。
【請求項６】
前記確率の値は、前記確率レジスタバンクそれぞれの前記確率段階を循環し、特定の確率段階の入力は、前の確率段階から来る前記確率であるか、又は接続された前記リンクプロセッサからの更新された確率である、請求項５に記載の記号ブロックを復号化する装置。
【請求項７】
前記更新はmin-sumプロセスに従う、請求項１に記載の記号ブロックを復号化する装置。
【請求項８】
前記更新はsum-productプロセスに従う、請求項１に記載の記号ブロックを復号化する装置。
【請求項９】
前記更新は正規化min-sumプロセスに従う、請求項１に記載の記号ブロックを復号化する装置。
【請求項１０】
前記リンクプロセッサは、前記検査からビットへのメッセージを、前記接続された確率レジスタの前記確率から差し引いて、前記ビットから検査へのメッセージを生成する、請求項１に記載の記号ブロックを復号化する装置。
【請求項１１】
前記メッセージレジスタはそれぞれｚ個のメッセージ段階を含む、請求項５に記載の記号ブロックを復号化する装置。
【請求項１２】
前記メッセージレジスタの値は、前記更新中に各メッセージレジスタの前記メッセージ段階を循環する、請求項１１に記載の記号ブロックを復号化する装置。
【請求項１３】
前記１組の確率レジスタは、複数の確率レジスタバンクに分けられ、前記リンクプロセッサ及び前記検査プロセッサは、各スーパープロセッサに１つの検査レジスタ及び複数のリンクレジスタがあるように１組のスーパープロセッサ内に配置される、請求項１に記載の記号ブロックを復号化する装置。
【請求項１４】
前記記号ブロックは、ｍ行ｎ列の基底行列を有する準巡回低密度パリティ符号（ＱＣ−ＬＤＰＣ）を使用して符号化され、前記基底行列には、１行毎に１つのスーパープロセッサがあり、１列毎に確率レジスタバンクがあり、１行毎に検査プロセッサがあり、各スーパープロセッサ内のリンクプロセッサの数は、該スーパープロセッサに対応する行中の非ゼロ部分行列の数によって決まる、請求項１３に記載の記号ブロックを復号化する装置。
【請求項１５】
前記リンクプロセッサは、１つのみの該リンクプロセッサが一度に特定の確率レジスタを更新するように前記確率レジスタバンクに接続される、請求項１４に記載の記号ブロックを復号化する装置。
【請求項１６】
シフト自由度が使用されて、２つの隣接する確率レジスタを同じスーパープロセッサに接続しないようにする、請求項１５に記載の記号ブロックを復号化する装置。
【請求項１７】
反復確率伝搬を使用して記号ブロックを復号化する方法であって、
前記ブロック中の特定の記号が、関連する確率レジスタで特定の値を有する確率を記憶すること、
関連する検査プロセッサにおいて、メッセージ更新規則に従い、前記確率レジスタから受け取るビットから検査へのメッセージ入力から検査からビットへのメッセージ出力を求めること、及び
前記メッセージ及び前記確率を前記確率レジスタと前記検査プロセッサとの間で前記リンクプロセッサを介して、前記確率を更新しながら所定の反復回数分やりとりすること
を含む、記号ブロックを復号化する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
［発明の分野］
本発明は、包括的には誤り訂正符号の復号化に関し、特にターボ符号、低密度パリティ検査（ＬＤＰＣ）符号等の誤り訂正符号の反復復号化に関する。
【背景技術】
【０００２】
［発明の背景］
誤り訂正符号
データストレージ及び通信の分野での重要な課題は、誤り訂正符号を復号化する実用的な方法を開発することである。
【０００３】
非常に重要な誤り訂正符号の一種は、線形ブロック誤り訂正符号という種類のものである。別記しない限り、以下の説明において「符号」と言及する際は常に、線形ブロック誤り訂正符号を指すものと理解されたい。
【０００４】
こういった符号の背後にある基本概念は、ｋ個の情報記号から成るブロックをＮ個の記号から成るブロックを使用して符号化することにあり、ここで、Ｎ＞ｋである。Ｎ−ｋビットを追加使用して、雑音の多い通信路を介して受信される、又は欠陥のある記憶媒体から検索される場合に破損した信号を訂正する。
【０００５】
符号の全制約を満たすＮ個の記号から成るブロックは「符号語」と呼ばれ、対応するｋ個の情報記号から成るブロックは「情報ブロック」と呼ばれる。記号はｑ元アルファベットから選び出されるものと仮定する。
【０００６】
重要な特殊ケースはｑ＝２の場合である。この場合、符号は「バイナリ」符号と呼ばれる。この説明において挙げる例ではバイナリ符号を想定するが、本明細書に記載する復号化方法をｑ＞２のｑ元符号に一般化することは容易である。バイナリ符号は実際に使用される最も重要な符号である。
【０００７】
図１は、線形ブロック誤り訂正符号を使用した従来の「通信路符号化」１００を示す。送信元１１０はｋ個の記号ｕ［ａ］から成る情報ブロック１０１を生成する。情報ブロックは誤り訂正符号のエンコーダ１２０に渡される。エンコーダはＮ個の記号１０２を含む符号語ｘ［ｎ］を生成する。
【０００８】
次いで、符号語１０２は通信路１３０を通して送信され、符号語は、通信路１３０において破損して信号ｙ［ｎ］１０３になる危険がある。次いで、破損信号ｙ［ｎ］１０３はデコーダ１４０に渡され、デコーダ１４０は符号語ｘ［ｎ］１０２を再構築したもの１０４ｚ［ｎ］を出力しようとする。
【０００９】
符号パラメータ
バイナリ線形ブロック符号は、ブロック長Ｎを有する２ｋ個の可能な符号語の集合により定義される。パラメータｋは符号の「次元」と呼ばれることがある。符号は通常、Ｎ及びｋが大きい場合にその効果の程もはるかに高くなる。しかし、パラメータＮ及びｋのサイズが大きくなるほど、破損したメッセージの復号化が難しくなる。
【００１０】
２つの符号語間のハミング距離は２語間で相違する記号の数として定義される。符号の距離ｄは、符号内のすべての符号語対間の最小ハミング距離として定義される。ｄの値の大きい符号ほど誤り訂正能力が高い。パラメータＮ及びｋを有する符号を［Ｎ，ｋ］符号と呼ぶ。距離ｄも分かっている場合には、符号を［Ｎ，ｋ，ｄ］符号と呼ぶ。
【００１１】
符号パリティ検査行列表現
線形符号はパリティ検査行列で表すことができる。バイナリ［Ｎ，ｋ］符号を表すパリティ検査行列は、０と１から成るＭ行とＮ列の行列である。パリティ検査行列のＮ列は符号のＮ個の記号に対応し、Ｍは検査ビットの数に対応する。行列での線形独立行の数はＮ−ｋである。
【００１２】
パリティ検査行列の各行はパリティ検査制約を表す。特定行によって表される制約に関わる記号は、その行中の非ゼロ記号を有する列に対応する。パリティ検査制約は強制的に、これら記号の加重和を２で割ったときの余りをゼロに等しくする。たとえば、バイナリ符号の場合、パリティ検査行列
【００１３】
【数１】
2008035524.tif 000003
【００１４】
は、３つの制約
【００１５】
【数２】
2008035524.tif 000004
【００１６】
【数３】
2008035524.tif 000005
【００１７】
【数４】
2008035524.tif 000006
【００１８】
を表す。但し、ｘ［ｎ］はｎ番目のビットの値であり、バイナリ記号の追加は、０＋０＝１＋１＝０であり、また０＋１＝１＋０＝１であるようにモジュロ２算術規則を使用して行われる。
【００１９】
誤り訂正符号デコーダ
誤り訂正符号用のデコーダの役割は、送信された符号語が通信路で破損した後に受信信号を受け入れ、送信された符号語の再構築を試みることである。符号語復号化の失敗数が最小という点で最適なデコーダは、所与の受信信号である可能性が最も高い符号語を出力する。最適なデコーダは「最尤」デコーダとして知られている。最尤デコーダであっても、通信路の雑音が十分に大きい場合には復号誤りを犯して、送信された符号語ではない符号語を出力することがある。
【００２０】
語の誤り率ではなく記号の誤り率が最小であるという点で最適な別種のデコーダは、「厳密記号（exact-symbol）」デコーダである。この名称は実際には慣例的ではないが、かかるデコーダに取り決められた普遍的な名称がないため本明細書においてこの名称を用いる。厳密記号デコーダは、符号内の各記号毎に、その記号がとり得る様々な値、たとえばバイナリ符号の場合には０又は１をとる厳密な確率を出力する。
【００２１】
反復デコーダ
実際には、最尤デコーダ又は厳密記号デコーダは特殊な種類の誤り訂正符号に対してしか構築することができない。反復法をベースとした非最適な近似デコーダに大きな関心が集まっている。こういった反復復号法の１つは「確率伝搬」（ＢＰ）と呼ばれる。ＢＰという名称は使わなかったが、R．Gallagerが最初に、低密度パリティ検査（ＬＤＰＣ）符号に対するＢＰ復号法を１９６３年に発表した。
【００２２】
ターボ符号
１９９３年に、同様の反復法が、「ターボ」符号として知られる新種の符号に対して非常にうまく働くことが示された。ターボ符号の成功は、一部はＬＤＰＣ符号及び反復復号法への関心が大きく復活したことによるものであった。ターボ符号及びＬＤＰＣ符号の両方に対しての、また「ターボ積符号」及び「ＲＡ（repeat-accumulate：反復累積）符号」等の関連する他の符号に対しての反復復号法のパフォーマンス改良について相当量の研究が最近なされてきている。たとえば、２００３年８月に、IEEE Communications Magazineの特別号がこの研究に捧げられた。概観については、C. Berrou著「The Ten-Year-Old Turbo Codes are entering into Service」（IEEE Communications Magazine, vol. 41, pp. 110-117, August 2003）並びにT. Richardson及びR. Urbanke著「The Renaissance of Gallager's Low-Density Parity Check Codes」（IEEE Communications Magazine, vol. 41, pp. 126-131, August 2003）を参照のこと。
【００２３】
多くのターボ符号及びＬＤＰＣ符号はランダム構築を使用して構築される。たとえば、Gallagerの当初のバイナリＬＤＰＣ符号は、０及び１のみから成り、少数個の１が予め規定された確率分布に従って行列内にランダムに配置されるパリティ検査行列の観点から定義される。しかし、反復デコーダは、有限幾何学によって定義される符号等、規則的な構築によって定義される符号への適用にも成功している。Y. Kou、S. Lin、及びM. Fossorier著「Low Density Parity Check Codes Based on Finite Geometries: A Rediscovery and More」（IEEE Transactions on Information Theory, vol. 47, pp. 2711-2736, November, 2001）を参照のこと。一般に、反復デコーダは、パリティ検査行列がランダム構築を有するか、それとも規則的な構築を有するかに関わりなく、比較的少数個の非ゼロエントリを有するパリティ検査行列を有する符号に対してうまく働く。
【００２４】
図２は、ＢＰをベースとしたＬＤＰＣ符号のデコーダを有する従来技術によるシステム２００を示す。システムは受信した記号を反復処理して、符号を特定するパリティ検査行列によって強制されるように、制約に基づいて各記号の信頼性を向上させる。
【００２５】
最初の反復では、ＢＰデコーダは通信路エビデンス２０１のみを入力として使用し、各記号から、その記号に関わるパリティ検査制約に対する軟出力メッセージ２０２を生成する。記号から制約へのメッセージを送るこのステップは「垂直」ステップ２１０と呼ばれることがある。次いで、記号からのメッセージを隣接制約において処理して、新たなメッセージ２０３を記号にフィードバックする。このステップは「水平」ステップ２２０と呼ばれることがある。復号反復プロセスは、特定の終結条件２０４を満たすまで垂直ステップと水平ステップを交互にして続けられる。終結条件２０４を満たした時点で、硬判定２０５が、最後の復号反復からの記号に対する出力信頼性測度に基づいて各記号毎に行われる。
【００２６】
メッセージ更新規則の厳密な形態及びメッセージの意味は、使用されるＢＰ法の特定の変形に従って変化する。特に普及している２つのメッセージ更新規則は「sum-product」規則及び「min-sum」規則である。これら従来技術によるメッセージ更新規則は非常によく知られており、これらメッセージ更新規則に対する近似も実際にうまく働くことが証明されている。他の従来技術によるメッセージ更新規則は、量子化メッセージ規則及び正規化min-sum規則を含む。これらのメッセージ更新規則は、より少ない計算資源を使用してよいパフォーマンスを達成するよう試みる。
【００２７】
ＢＰ法のいくつかの変形では、メッセージはビットが０又は１のいずれかである可能性、特に対数尤度を表す。ＢＰ法及びＢＰ法の誤り訂正符号への適用についてのさらなる背景資料としては、F. R. Kschischang、B. J. Frey、及びH. A. Loeliger著「Factor Graphs and the Sum-Product Algorithm」（IEEE Transactions on Information Theory, vol 47, pp. 498-519, February 2001）を参照のこと。
【００２８】
記号から検査制約へのメッセージ（「ビットから検査へのメッセージ」とも呼ばれる）を、ＢＰ復号化においてトラッキングされる「基本的な」独立メッセージと考え、検査制約から記号へのメッセージ（「検査からビットへのメッセージ」とも呼ばれる）を、記号から制約へのメッセージの観点から定義される従属メッセージと考えることが有用な場合がある。別法として、制約から記号へのメッセージを「独立」メッセージとして、また記号から制約へのメッセージを、制約から記号へのメッセージの観点から定義される「独立」メッセージと見ることができる。
【００２９】
ビット反転デコーダ
ビット反転（ＢＦ）デコーダはＢＰデコーダと同様に働く反復デコーダである。これらデコーダは若干単純になる。ＬＤＰＣ符号用のビット反転デコーダも長い歴史を持ち、これも１９６０年代初めにGallagerにより、ＬＤＰＣ符号を紹介したときに提案された。ビット反転デコーダではまず、通信路出力に基づいて各符号語ビットに０又は１を割り当てる。次いで各反復において、各パリティ検査のシンドロームを計算する。パリティ検査のシンドロームは、パリティ検査を満たす場合には０であり、満たさない場合には１である。次いで、各ビット毎に、そのビットを含むすべてのパリティ検査のシンドロームが調べられる。満たされないパリティ検査の数が予め規定されたしきい値を超える場合、対応するビットを反転させる。反復は、すべてのパリティ検査を満たすまで、又は所定の最大反復回数に達するまで続けられる。
【００３０】
ターボ符号
ターボ符号は、厳密記号デコーダを使用して復号可能な２つのより小さな符号を連接したものである。C. Berrou及びA. Glavieux著「Near-Optimum Error-Correcting Coding and Decoding: Turbo-codes」（IEEE Transactions in Communications, vol. 44, pp. 1261-1271, Octover 1996）を参照のこと。通常、より小さな符号には畳込み符号が使用され、厳密記号デコーダは通常、ＢＣＪＲ復号法をベースとする。ＢＣＪＲ復号法の詳細な説明については、L. Bahl、J. Cocke、F. Jelinek、及びJ. Raviv著「Optimal Decoding of Linear Codes for Minimizing Symbol Error Rate」（IEEE Transactions on Information Theory, pp. 284-287, March 1974）を参照のこと。ターボ符号内の符号語記号のいくつかは両方の符号によって課される制約を受ける。こういった記号は「共有記号」と呼ばれる。従来のターボ符号デコーダは、符号を、それぞれの厳密記号デコーダを使用して交互に復号し、一方の厳密記号デコーダによって求められた共有記号の出力対数尤度を、他方の厳密記号デコーダでの共有記号の入力として利用することによって機能する。
【００３１】
２つの組織的畳込み符号３０１及び３０２を使用して構築されるターボ符号の構造を図３に概略的に示す。このターボ符号では、共有記号は各畳込み符号の情報ビットである。
【００３２】
最も単純なターボデコーダは直列モードで動作する。このモードでは、一方のＢＣＪＲデコーダが入力として通信路情報を受け取り、次いで各共有情報ビット毎に対数尤度値の集合を出力する。通信路情報と併せて、これら対数尤度値が他方のＢＣＪＲデコーダへの入力として使用され、この他方のＢＣＪＲデコーダは出力を第１のデコーダに送り返し、次いでサイクルが続けられる。
【００３３】
ターボ積符号
ターボ積符号（ＴＰＣ）は、厳密記号デコーダを使用して各構成符号を復号化することができる積符号の一種である。積符号は従来技術による既知の符号である。［Ｎ１，ｋ１，ｄ１］符号及び［Ｎ２，ｋ２，ｄ２］符号から積符号を構築するには、符号語記号をＮ１×Ｎ２矩形に配置する。各記号は２つの符号に属する。すなわち、一方は、同列中のその他の記号を使用して構築される［Ｎ１，ｋ１，ｄ１］「垂直」符号であり、他方は同行中のその他の記号を使用して構築される［Ｎ２，ｋ２，ｄ２］「水平」符号である。全体の積符号はパラメータ［Ｎ１Ｎ２，ｋ１ｋ２，ｄ１ｄ２］を有する。
【００３４】
ＴＰＣは、構成符号の厳密記号デコーダを使用して復号化される。水平符号及び垂直符号はそれぞれの厳密記号デコーダを使用して交互に復号化され、水平符号によって与えられる出力対数尤度を垂直符号の入力対数尤度として使用し、またこの逆も同様である。ターボ積符号を復号化するこの方法は「直列モード復号」と呼ばれる。
【００３５】
他の反復デコーダ
反復復号法を用いて首尾良く復号可能な他の符号が多くある。これら符号は文献において既知であり、数が多すぎるためすべてを詳細には説明しない。これら符号のうち最も注目すべきもののいくつかは、非正則ＬＤＰＣ符号（M. A. Shokrollahi、D. A. Spielman、M. G. Luby、及びM. Mitzenmacher著「Improved Low-Density Parity Check Codes Using Irregular Graphs」（IEEE Trans. Information Theory, vol. 47, pp. 585-598 February 2001）を参照のこと）、ＲＡ符号（D. Divsalar、H. Jin、及びR. J. McEliece著「Coding Theorems for "Turbo-like" Codes」（Proc. 36th Allerton Conference on Communication, Control, and Computing, pp. 201-210, September, 1998）を参照のこと）、ＬＴ符号（M. Luby著「LT Codes」（Proc. Of the 43 Annual IEEE Symposium on Foudations of Computer Science, pp. 271-282, Nov. 2002）を参照のこと）、及びラプタ（Raptor）符号（A. Shokrollahi著「Raptor Codes」（Proceedings of IEEE International Symposium on Information Theory, p. 36, July 2004）を参照のこと）である。
【００３６】
反復デコーダの加速方法
ＬＤＰＣ符号用のＢＰデコーダ及びＢＦデコーダ、ターボ符号用のデコーダ、並びにターボ積符号用のデコーダはすべて、実際のシステムでの有用性が証明されている反復デコーダの例である。こういったすべての反復デコーダに対する非常に重要な問題は、デコーダの収束速度である。符号語を見つけるまでに必要な反復回数が可能な限り少ないことが望ましい。反復回数が少ないほど復号が高速になり、これは誤り訂正システムにとって望ましい特徴である。
【００３７】
ターボ符号の場合、より高速の収束を、ターボデコーダを並列モードで動作することによって得ることができる。D. Divsalar及びF. Pollara著「Multiple Turbo Codes for Deep-Space Communications」（JPL TDA Progress Report, pp. 71-78, May 1995）を参照のこと。このモードでは、両方のＢＣＪＲデコーダが入力として通信路情報を同時に受信し、次いで情報ビットの対数尤度値の集合を同時に出力する。第１のデコーダからの出力を第２のデコーダの２回目の反復の入力として使用し、またその逆も同様である。
【００３８】
図４は、直列４０１モードと並列４０２モードにおいて、各モード毎に１回反復する場合の、ターボコードの動作の違いを示す。直列モード４０１では、第１のデコーダ４１１が最初に動作し、第２のデコーダ４１２がその出力を使用し、次いで第２のデコーダからの出力が第１のデコーダに戻され、次の反復で第１のデコーダによって使用される。並列モード４０２では、２つのデコーダ４２１、４２２が並列に動作し、第１のデコーダの出力が次の反復のために第２のデコーダに送られ、その間同時に、第２のデコーダの出力が第１のデコーダに送られる。
【００３９】
ターボ符号の場合と同様に、ターボ積符号の場合の並列モード復号が、C. Argon及びS. McLaughlin著「A Parallel Decoder for Low Latency Decoding of Turbo product Codes」（IEEE Communications Letters, vol. 6, pp. 70-72, February 2002）に説明されている。ターボ積符号の並列モード復号では、水平符号及び垂直符号が同時に復号化され、次の反復において水平符号の出力が垂直符号の入力として使用され、またその逆も同様である。
【００４０】
グループシャッフル（Group shuffled）復号
最後にＬＤＰＣ符号のＢＰ復号について、「グループシャッフル」ＢＰ復号が、J. Zhang及びM. Fossorier著「Shuffled Belief Propagation Decoding」（Proceedings of the 36th Annual Asilomar Conference on Signals, Systems, and Computers, pp. 8-15, Nov. 2002）に説明されている。
【００４１】
通常のＢＰ復号では、上述したように、すべてのビットからのメッセージが並列に、単一の垂直ステップで更新される。グループシャッフルＢＰ復号では、ビットはグループに分けられる。ビットグループから対応する制約へのメッセージが共に更新され、次いで次のビットグループからのメッセージが更新され、すべてのグループからのメッセージが更新されるまでこれが続けられ、次いで次の反復が開始する。制約からビットへのメッセージは従属メッセージとして扱われる。各段階において、最も新しく更新されたメッセージが使用される。グループシャッフルＢＰ復号は、通常のＢＰデコーダと比較してＬＤＰＣ符号用のデコーダのパフォーマンス及び収束速度を向上させる。
【００４２】
直観的に、ターボ符号及びターボ積符号用の並列モードデコーダ並びにＬＤＰＣ符号用のグループシャッフルデコーダが収束を速めることの理由は以下の通りである。メッセージが反復デコーダにおいて更新されるときは常に、メッセージはより正確になり、且つ信頼性が高くなる。したがって、旧版ではなく最新版のメッセージを使用することで、通常、正確な復号への収束速度が速まる。
【００４３】
ＱＣ−ＬＤＰＣ符号
多くのＬＤＰＣ符号は、パリティ検査行列の記憶に相当量のメモリを要するという欠点を有する。多くのＬＤＰＣ符号の別の重要な欠点は、パリティ検査行列がランダムすぎて、ハードウェアデコーダの製造に関わる配線複雑性がひどく高いことである。こういった欠点は、ＬＤＰＣデコーダをハードウェアに実装することを難しくする。これら理由により、準巡回ＬＤＰＣ（ＱＣ−ＬＤＰＣ）符号が開発された（R. M. Tanner著「A [155; 64; 20] sparse graph (LDPC) code」（IEEE International Symposium on Information Theory, Sorrento, Italy, June 2000）及び米国特許公報第２００６０１０９８２１号「Apparatus and method capable of a unified quasi-cyclic low-density parity-check structure for variable code rates and sizes」及び同第２００５０１４９８４５号「Method of constructing QC-LDPC codes using qth-order power residue」）。また、２００３年１０月１４日にRichardson他に付与された米国特許第６，６３３，８５６号「Method and apparatus for decoding LDPC codes」（参照により本明細書に援用する）も参照のこと。
【００４４】
ＱＣ−ＬＤＰＣ符号のパリティ検査行列は、符号にＱＣ性を付与する循環置換（circulant permutation）部分行列又は零部分行列を含み、これにより効率的で高速の超大規模集積（ＶＬＳＩ）実装を可能にする。この理由により、いくつかの無線通信規格、たとえばＩＥＥＥ８０２．１６ｅ規格、８０２．１１ｎ規格、及びＤＶＢ−Ｓ２規格がＱＣ−ＬＤＰＣ符号を使用している。
【００４５】
以下に示すように、準巡回ＬＤＰＣ符号は特殊な構造の形態のパリティ検査行列Ｈを有し、これによりハードウェア実装に非常に都合がよくなる。パリティ検査行列はｚ×ｚ正方部分行列から構築される。これら部分行列はすべて０から成るか、又は置換行列である。置換行列とは、各行に１つの１を有し、１がある列が各行でシフトされる行列である。以下の行列はｚ＝６を有する置換行列の例である。
【００４６】
【数５】
2008035524.tif 000007
【００４７】
行及び列が位置０から開始してカウントされる場合、０行目での最初の１は列２にあるため、この行列を「Ｐ２」と呼ぶ。置換行列Ｐ０とは恒等行列である。Ｐｔの添え字ｔの値がｚ以上である場合、その行列はラップアラウンドしたばかりであり、したがって、ｚ＝６の場合、Ｐ２＝Ｐ８＝Ｐ１４等を有する。
【発明の開示】
【発明が解決しようとする課題】
【００４８】
この発明は、かかる問題点を解決するためになされたものであり、結合デコーダが従来技術によるデコーダよりも良好なパフォーマンス・複雑性・速度のトレードオフを提供する結合デコーダを使用してのシミュレーションを得ることを目的としている。
【課題を解決するための手段】
【００４９】
［発明の概要］
記号ブロックが反復確率伝搬を使用して復号化される。１組の確率レジスタ（belief register）が、ブロック内の対応する記号が特定の値を有する確率を記憶する。
【００５０】
検査プロセッサが、メッセージ更新規則によりビットから検査へのメッセージ入力から検査からビットへのメッセージ出力を求める。リンクプロセッサが１組の確率レジスタを検査プロセッサに接続する。各リンクプロセッサは関連するメッセージレジスタを有する。
【００５１】
メッセージ及び確率は、１組の確率レジスタと検査プロセッサとの間でリンクプロセッサを介して、確率を更新しながら所定の反復回数分やりとりされて、最後の確率に基づいて記号ブロックが復号化される。
【発明の効果】
【００５２】
本発明による結合デコーダを使用してのシミュレーションは、結合デコーダが従来技術によるデコーダよりも良好なパフォーマンス・複雑性・速度のトレードオフを提供することを示す。レプリカシャッフルターボデコーダという本発明は、同数の反復を使用した場合に１０分の数ｄＢだけ従来のターボデコーダよりも優れ、所与の雑音レベルで同じパフォーマンスが求められる場合に使用する反復回数をはるかに少なくすることができる。
【発明を実施するための最良の形態】
【００５３】
［好ましい実施形態の詳細な説明］
図５は、本発明によるレプリカ結合グループシャッフル反復デコーダ７００を生成する方法５００を示す。
【００５４】
方法は入力として、誤り訂正符号５０１及びその誤り訂正符号５０１用の従来の反復デコーダ５０２をとる。従来の反復デコーダ５０２は、前の推定に基づいて符号を定義する記号の状態の推定を、反復し且つ並列に更新する。記号はバイナリであっても、又は任意のアルファベットからとられてもよい。確率伝搬（ＢＰ）法でのメッセージ及びビット反転（ＢＦ）デコーダでのビットの状態が、本明細書において記号状態の「記号推定」又は単に「推定」と総称するものが何を指すかの例である。
【００５５】
本明細書ではまた、「ビット推定」という用語も使用する。これは、簡明化のために、別記しない限り記号がバイナリであると仮定するためである。しかし、本技法は他の非バイナリ符号にも適用される。従来技術によるＢＰデコーダ、ＢＦデコーダ、ターボデコーダ、及びターボ積符号用のデコーダはすべて、本発明と併せて使用可能な従来の反復デコーダの例である。
【００５６】
この説明を簡明化するために、バイナリＬＤＰＣ符号用のＢＦデコーダ及びＢＰデコーダを入力としての従来の反復デコーダ５０２の主な例として用いる。方法は必ずしもバイナリとは限らない従来の反復デコーダの他の例に一般化可能なことを理解されたい。
【００５７】
バイナリＬＤＰＣ符号用のＢＦデコーダでは、各符号語記号の値の推定は記憶されて直接更新される。通信路出力からして最も可能性の高い状態に基づいた初期推定から開始して、各符号語ビットが０又は１のいずれかとして推定される。あらゆる反復において、各記号の推定は並列に更新される。更新は、各ビットに関連するパリティ検査のいくつが破られているかを調べることによって行われる。破られている検査の数が予め規定された或るしきい値を超える場合、そのビットの推定は０から１へ、又はこの逆に更新される。
【００５８】
バイナリＬＤＰＣ符号用のＢＰデコーダも、各記号の値の単一の推定を更新するのではなく、メッセージが関わる記号と制約との間の「メッセージ」の集合が更新されることを除いて同様に機能する。これらメッセージは通常、実数として記憶される。実数は、ビットが０又は１である対数尤度比に対応する。ＢＰデコーダでは、メッセージはメッセージ更新規則に従って繰り返し更新される。こういった規則の厳密な形態は重要ではない。唯一重要なポイントは、反復デコーダが或る規則セットを使用して、前に更新されたメッセージに基づいてメッセージを繰り返し更新することである。
【００５９】
複数のサブデコーダの構築
本方法による転換プロセスの第１段階では、グループシャッフルサブデコーダの複数のレプリカが構築される。次いで、これらグループシャッフルサブデコーダ５１１を結合して（５２０）、レプリカ結合グループシャッフルデコーダ７００にする。
【００６０】
推定のグループ分け
複数のレプリカサブデコーダ５１１は以下のように構築される。各グループシャッフルレプリカサブデコーダ５１１毎に、そのグループシャッフルサブデコーダがメッセージ又は記号値に対して行った推定がグループに分けられる。
【００６１】
バイナリＬＤＰＣ符号用のＢＦデコーダの例は１０００個の符号語ビットを有する。グループシャッフルサブデコーダがこの符号に対して行うビット推定を任意の数の方法で、たとえば１００ビットから成るグループ１０個に、１０ビットから成るグループ１００個に、又は５０ビットから成るグループ２０個等に分けることができる。簡明化のために、グループのサイズは等しいものと以下仮定する。
【００６２】
従来の反復デコーダ５０２がＬＤＰＣ符号のＢＰデコーダである場合、メッセージグループは多くの様々な方法で各グループシャッフルサブデコーダに分けることができる。本明細書では２つの好ましい技法について説明する。本明細書では「垂直分割」と呼ぶ第１の技法では、符号語記号はまずグループに分けられ、その後、同符号語記号から制約へのすべてのメッセージは同じグループに属するものとして扱われる。垂直分割では、制約から記号へのメッセージは従属メッセージとして扱われる一方で、記号から制約へのメッセージは独立メッセージとして扱われる。したがって、すべての従属メッセージは、記号から制約への独立メッセージグループが更新されるときに常に自動的に更新される。
【００６３】
本明細書では「水平分割」と呼ぶ第２の技法では、制約がまずグループに分けられ、次いで同じ制約から記号へのすべてのメッセージが同じグループに属するものとして扱われる。水平分割では、制約から記号へのメッセージは独立メッセージとして扱われ、記号から制約へのメッセージは単に従属メッセージとして扱われる。ここでも、すべての従属メッセージは、独立メッセージグループが更新されるときに常に自動的に更新される。
【００６４】
ＢＰメッセージを分ける他の技法も可能である。重要な点は、グループシャッフルサブデコーダの各レプリカ毎に、反復復号法の過程において更新される独立メッセージの集合を定義し、そのメッセージをいくつかのグループ集合に分けることである。独立メッセージの観点から定義される他の従属メッセージは、独立メッセージグループの更新が完了したときに常に自動的に更新される。
【００６５】
グループへの更新スケジュールの割り当て
単一のグループシャッフルサブデコーダ５１１を生成するに当たっての次のステップは、更新スケジュールを推定グループに割り当てる。更新スケジュールはグループの順番であり、推定が更新される順番を定義する。たとえば、ＢＦデコーダにおいて１００ビットから成るグループ１０個に更新スケジュールを割り当てたい場合、どのビットグループを最初に更新し、次にどのグループを更新し、１０番目のグループに達するまで次にどのグループを更新するかを判断する。ビット推定グループが共に更新されるときの単一反復サブステップを「反復サブステップ」と呼ぶ。
【００６６】
グループ集合はグループの更新スケジュールと共に、特定のグループシャッフル反復サブデコーダを定義する。推定グループが指定された順番に従ってサブステップにおいて更新されることは別として、グループシャッフル反復サブデコーダは、元の従来の反復デコーダ５０２と同様に機能する。たとえば、入力である従来の反復デコーダ５０２がＢＦデコーダである場合、新しいグループシャッフルサブデコーダ５１１は、従来のデコーダ５０２と同一のビット反転規則を使用する。
【００６７】
結合デコーダに使用されるレプリカサブデコーダ同士の違い
複数のグループシャッフルサブデコーダ５１１は、サブデコーダがグループに分けられる方法という点で同一であってもなくてもよい。しかし、サブデコーダはそれぞれの更新スケジュールの点で異なる。実際に、あらゆるビット推定を結合デコーダ７００に使用されるあらゆるレプリカサブデコーダにおいて更新する必要はない。しかし、あらゆるビット推定は少なくとも１つのレプリカサブデコーダ５１１において更新される。また、結合デコーダの各反復が同期して完了するように、各レプリカサブデコーダ５１１が同数の反復サブステップを有することも好ましい。
【００６８】
図６は、複製されたグループシャッフルサブデコーダの単純な概略例を示す。この例では、３つのビット推定グループをそれぞれ有する３つの異なるレプリカサブデコーダを使用する。この例では、各レプリカサブデコーダにおいて使用されるグループは同一であるが、更新の順番は異なる。
【００６９】
第１のレプリカサブデコーダ６１０において、グループ１中のビット推定が第１の反復サブステップにおいて更新され、その後、第２の反復サブステップにおいてグループ２中のビット推定が更新され、その後、第３の反復サブステップにおいてグループ３中のビット推定が更新される。第２のレプリカサブデコーダ６２０では、グループ２中のビット推定が最初に更新され、その後、グループ３中のビット推定が更新され、その後、グループ１中のビット推定が更新される。第３のレプリカサブデコーダ６３０では、グループ３中のビット推定が最初に更新され、その後、グループ１中のビット推定が更新され、その後、グループ２中のビット推定が更新される。
【００７０】
本発明のレプリカ結合グループシャッフルデコーダの背後にある概念についてこの例を用いて説明する。各ビットの入力推定が通信路情報を使用して得られる第１の反復を考える。各ビットの初期入力「信頼性」が等しいものと考えられる。しかし、第１の反復の第１のサブステップの完了後、最も新しく更新されたビットが最も信頼性の高いものであるはずである。したがってこの例では、第１のレプリカサブデコーダでは、第１の反復の第１のサブステップの終結時に、グループ１中のビット推定が最も信頼性の高いものであり、その一方で第２のレプリカサブデコーダでは、第１の反復の第１のサブステップの終結時にグループ２中のビット推定が最も信頼性の高いものであると考える。
【００７１】
信頼性のある情報を伝搬させる速度を速めるために、最も信頼性の高い推定を各ステップにおいて使用することは理に適っている。複数のレプリカグループシャッフルサブデコーダから結合デコーダを構築することの背後にある一般概念は、処理速度の向上と引き換えに、複雑性の増大、たとえば論理回路及びメモリをトレードオフすることである。多くの用途において、デコーダが機能する速度はデコーダの複雑性よりもはるかに重要であるため、このトレードオフは理に適っている。
【００７２】
複数のレプリカサブデコーダの結合
デコーダ７００は、前のステップ５１０において得られたグループシャッフルサブデコーダ５１１の異なるレプリカを結合したものである。
【００７３】
ビット推定が反復デコーダにおいて更新されるときは常に、更新規則は他のビット推定を使用する。複数のレプリカサブデコーダを使用する結合デコーダでは、あらゆる反復において使用されるビット推定としては、最も信頼性の高い推定、すなわち最も新しく更新されたビット推定が選択される。
【００７４】
したがって、本例を続けると、上述した３つのレプリカサブデコーダを結合する場合、レプリカデコーダは第１の反復においてそれぞれのビット推定を以下のように更新する。第１の反復の第１のサブステップにおいて、第１のレプリカサブデコーダはグループ１中のビット推定を更新し、第２のレプリカサブデコーダはグループ２中のビット推定を更新し、第３のレプリカサブデコーダはグループ３中のビット推定を更新する。
【００７５】
第１のサブステップの完了後、レプリカサブデコーダは次のグループのビット推定を更新する。したがって、第１のレプリカサブデコーダはグループ２中のビット推定を更新し、第２のレプリカサブデコーダはグループ３中のビット推定を更新し、第３のレプリカサブデコーダはグループ１中のビット推定を更新する。
【００７６】
重要なポイントは、ビット推定を更新する必要があるときは常に、レプリカサブデコーダに、そのビットの、その時点で最も信頼性の高いサブデコーダからの推定が提供されることである。したがって、第２のサブステップ中、グループ１中のビットのビット推定が必要なときは常に、その推定は第１のレプリカサブデコーダによって提供され、グループ２中のビットのビット推定が必要なときは常に、この推定は第２のレプリカサブデコーダによって提供される。
【００７７】
第１の反復の第２のサブステップの完了後、それぞれのレプリカサブデコーダの役割が変わる。第１のレプリカデコーダはここでは、グループ２中のビットの最も信頼性の高いビット推定の提供元であり、第２のレプリカサブデコーダはここでは、グループ３中のビットの最も信頼性の高いビット推定の提供元であり、第３のレプリカサブデコーダはここでは、グループ１中のビットの最も信頼性の高いビット推定の提供元である。
【００７８】
レプリカデコーダ５１１を結合して結合デコーダ７００にする方法の背後にある一般概念は、各反復において、特定のレプリカサブデコーダが、ビット及びメッセージのうちのいくつかについて信頼性の高い推定を与えることに「特化」し、その一方で他のレプリカサブデコーダが他のビット及びメッセージについて信頼性の高い推定を与えることに特化することである。特定のビット推定に「特化」したレプリカデコーダは常に、そのビット推定のバージョンを最も新しく更新したレプリカデコーダである。
【００７９】
一般的な結合デコーダのシステム図
図７は結合デコーダ７００を示す。簡明化のために、３つのグループシャッフルサブデコーダ７１０、７２０、及び７３０を使用する結合デコーダを示す。各サブデコーダは推定をグループ集合に分け、サブデコーダが推定を更新するスケジュールを有する。
【００８０】
結合デコーダの全体制御は制御ブロック７５０によって処理される。制御ブロックは２つの部分、すなわち信頼性割り当て部７５１及び終結検査部７５２から成る。
【００８１】
各サブデコーダは入力として、チャネル情報７０１及び最新のビット推定７０２を制御ブロック７５０から受け取る。各反復サブステップ後、各サブデコーダはビット推定７０３を制御ブロックに出力する。出力を求めるために、特定のサブデコーダは特定のスケジュールを使用して、予め割り当てられた反復デコーダ、たとえばＢＰ又はＢＦを利用する。
【００８２】
各反復サブステップ後、制御ブロックは入力として最新のビット推定７０３を各サブデコーダから受け取る。次いで、信頼性割り当て部７５１は、割り当て部が受け取った特定のビット推定を、その時点で最も信頼性の高い値に合致するように更新する。次いで、割り当て部はその最も信頼性の高いビット推定７０２をサブデコーダに送る。
【００８３】
終結検査部７５２は、その時点で最も信頼性の高いビット推定が誤り訂正符号の符号語に対応するか否か、又は別の終結条件に達したか否かを判断する。好ましい実施形態では、代替の終結条件は所定の反復回数である。終結検査部は、デコーダを終結すべきだと判断したとき、符号語が見つかった場合には符号語に対応するビット値７０５の集合を出力し、その他の場合には、最も信頼性の高いビット推定を使用して求められたビット値７０５の集合を出力する。
【００８４】
本発明についてこれまで行った説明は一般的なものであり、ＬＤＰＣ符号、ターボ符号、及びターボ積符号用のＢＰデコーダ及びＢＦデコーダを含む従来のあらゆる反復デコーダに適用される。本発明を適用することが可能な他の符号としては、非正則ＬＤＰＣ符号、ＲＡ符号、ＬＴ符号、及びラプタ符号が挙げられる。これより、ターボ符号及びターボ積符号の特殊なケースと準巡回ＬＤＰＣ（ＱＣ−ＬＤＰＣ）符号に焦点をあて、これら符号の詳細についてさらに説明する。ＱＣ−ＬＤＰＣ符号の場合、本発明の好ましいハードウェア実施形態の詳細も提供する。
【００８５】
ターボ符号の場合の結合デコーダ
ターボ符号の場合に結合デコーダをどのように生成することができるかについてより詳細に説明するために、２つの組織的バイナリ畳込み符号を連接したターボ符号の例を用いる。この例の場合での結合デコーダの好ましい実施態様について詳細に説明する。
【００８６】
従来のターボデコーダは２つの軟入力／軟出力畳込みＢＣＪＲデコーダを有し、これらは、２つの符号が共有するｋ個の情報記号について信頼性情報を交換する。
【００８７】
ターボ符号用の結合デコーダを生成するために、並列モードターボデコーダが入力としての「従来の反復デコーダ」５０２であるとみなす。関連する「ビット推定」は、情報ビットが各畳込み符号から受け取る対数尤度比である。本明細書では、これら対数尤度比を符号からビットへの「メッセージ」と呼ぶ。
【００８８】
好ましい実施形態では、４つのレプリカサブデコーダを使用して、２つの畳込み符号から構築されたターボ符号用のレプリカ結合グループシャッフルデコーダを生成する。
【００８９】
メッセージを各レプリカサブデコーダ毎に更新する順番が、各サブエンコーダに割り当てられる。これは多くの異なる方法で行うことができるが、可能な限りＢＣＪＲ法に従うことが理に適っている。単一の畳込み符号に対する従来のＢＣＪＲ復号「掃引」では、各メッセージが２度更新される（順方向掃引で１度、逆方向掃引で１度）。各ビット毎にＢＣＪＲ法によって出力される最終出力対数尤度比は通常、逆方向掃引後のメッセージである。ビットを逆方向掃引で更新した後、順方向掃引で更新することによっても等価の結果を得ることが可能である。
【００９０】
本発明の好ましい実施形態では、図８に示すように、４つのレプリカサブデコーダに以下の更新スケジュールが割り当てられる。各レプリカサブデコーダでは、単一の各メッセージをグループとみなす。第１のレプリカサブデコーダ８１０は、スケジュールの順方向掃引後にスケジュールの逆方向掃引を使用して第１の畳込み符号からのメッセージのみを更新する。第２のレプリカサブデコーダ８２０は、逆方向掃引後に順方向掃引を使用して第１の畳込み符号からのメッセージのみを更新する。第３のレプリカサブデコーダ８３０は、順方向掃引後に逆方向掃引を使用して第２の畳込み符号からのメッセージのみを更新する。第４のレプリカサブデコーダ８４０は、逆方向掃引後に順方向掃引を使用して第２の畳込み符号からのメッセージのみを更新する。
【００９１】
各ビットメッセージが４つのレプリカサブデコーダのそれぞれで更新されると、他のメッセージに対して更新を行う必要がある。結合デコーダでは、メッセージは、最も新しく推定を更新したレプリカサブデコーダから得られる。
【００９２】
ターボ積符号の場合の結合デコーダ
これより、ターボ積符号（ＴＰＣ）の場合での本発明の好ましい実施形態について説明する。ターボ積符号が水平符号と垂直符号の積から構築されているものと仮定する。各符号は厳密記号デコーダを使用して復号化される。厳密記号デコーダが各構成ビット毎に対数尤度比を出力するものと仮定する。
【００９３】
ターボ積符号用の結合デコーダを生成するために、並列モードターボ積デコーダが入力としての「従来の反復デコーダ」５０２であるとみなす。関連する「ビット推定」は、水平サブ符号及び垂直サブ符号に対して記号厳密デコーダによって出力される各ビットの対数尤度比である。これらビット推定を「メッセージ」と呼ぶ。
【００９４】
好ましい実施形態では、垂直符号を逐次処理する２つのレプリカサブデコーダ及び水平符号を逐次処理する２つのレプリカサブデコーダを使用して、かかるターボ積符号用の結合デコーダを生成する。垂直符号を逐次処理するレプリカサブデコーダでは、垂直符号からのメッセージが、同じ垂直符号内のビットからのメッセージが同じグループに属するようにグループに分けられる。水平符号を逐次処理するレプリカサブデコーダでは、水平符号からのメッセージが、同じ水平符号内のビットからのメッセージが同じグループに属するようにグループに分けられる。
【００９５】
ターボ積符号の場合の好ましい実施形態では、異なるレプリカサブデコーダの更新スケジュールは以下のようになる。垂直符号を処理する第１のレプリカサブデコーダでは、垂直符号が左から右に移りつつ逐次処理される一方で、垂直符号を処理する第２のレプリカサブデコーダでは、垂直符号は右から左に移りつつ逐次処理される。水平符号を処理する第３のレプリカサブデコーダでは、水平符号は上から下に移りつつ逐次処理される。水平符号を処理する第４のレプリカサブデコーダでは、水平符号は下から上に移りつつ逐次処理される。
【００９６】
いずれの段階でも、メッセージは、必要時に、そのメッセージを最も新しく更新したレプリカサブデコーダによって提供される。
【００９７】
準巡回ＬＤＰＣ符号の高速復号化
準巡回低密度パリティ検査（ＱＣ−ＬＤＰＣ）誤り訂正符号が、多種多様な通信規格、たとえば８０２．１６ｅ、８０２．１１ｎ、３ＧＰＰ、ＤＶＢ−Ｓ２で受け入れられているか、又は提案されており、比較的性能がよく、便利な構造であることから将来の多くの規格に使用される可能性が高い。
【００９８】
本発明の一実施形態は、優れた性能と複雑性とのトレードオフを有するＱＣ−ＬＤＰＣ符号に「レプリカグループシャッフル」デコーダを提供する。デコーダはＶＬＳＩ回路を使用して実装することができる。単一の全体構造で、異なる基底行列、異なる符号レート、及び異なる符号長を有するＱＣ−ＬＤＰＣ符号を復号化することが可能である。ＶＬＳＩ回路は、復号化用途に応じて高速又は低複雑性（能力）設計をサポートすることもできる。
【００９９】
準巡回ＬＤＰＣ符号のパリティ検査行列Ｈは、使用すべき部分行列を指定する「基底行列」を使用して構築される。たとえば、１つのＱＣ−ＬＤＰＣ符号が図９に示す基底行列を有する。この基底行列はＩＥＥＥ８０２．１６ｅ規格で使用される。
【０１００】
この基底行列は２４列８行を有する。完全パリティ検査行列Ｈは、各−１を（ｚ×ｚ）全ゼロ行列で置き換え、他の各数ｔを（ｚ×ｚ）置換行列Ｐｔで置き換えることにより基底行列から得られる。
【０１０１】
ＩＥＥＥ８０２．１６ｅ規格では、ｚに対して、ｚ＝２４〜ｚ＝９６の範囲で可能な多くの異なる値が可能である。一実施態様では図９に示す符号が使用され、ｚ＝４４である。これは、この符号に対してＮ＝２４ｚ＝１０５６であり、且つＭ＝８ｚ＝３５２であり、すなわち各ブロックが１０５６情報ビット及び３５２検査ビットを有することを意味する。
【０１０２】
符号化及び復号化
図１１は、本発明の実施形態による情報記号ブロックを符号化するシステムの全体構造を示す。送信元エンコーダがバイナリ入力データを符号化し（１１１０）、これは次に通信路符号化され（１１２０）、変調される（１１３０）。符号化され変調されたデータは、アナログ信号として付加雑音１１０３と共に通信路１１４０を通過する。宛先１１０２において、受信されるノイズ信号が復調され（１１５０）、通信路復号化され（１２００）、ソースデコーダ１１７０に渡されて入力データを復元する。
【０１０３】
受信アナログ信号は、復調されるとき、各受信ビットが０又は１である「確率」を表す数に変換される。ビットのこの初期確率は「通信路情報」とも呼ばれる。確率は、０〜１．０を範囲としたビットがゼロである確率とみなすことができる。たとえば、確率の値が０．０００１である場合、その信号はおそらく１であり、０．９９９９の値は得てして論理０を有する。値０．５１２３は０又は１のいずれかであり得る。この値は他の範囲、たとえば負及び正であってもよいことに留意されたい。好ましい実施形態では、この確率は対数尤度比（ＬＬＲ）として表され、少数のビットを使用して記憶される。正のＬＬＲは、そのビットがおそらく０であることを示し、負のＬＬＲはそのビットがおそらく１であることを示す。
【０１０４】
図１２に示すデコーダの目的は、所与の受信通信路情報に対して可能性の非常に高い符号語を返すことである。確率はサイズｚのグループに集められ、確率グループがレジスタバンク１４００に記憶される。１組のバンクレジスタが比較的少数、たとえば８つの「スーパープロセッサ」１２０２に配線１２０３によって結合される。配線の接続方法は、使用されるＱＣ−ＬＤＰＣ誤り訂正符号の特定の基底行列によって決まる。各スーパープロセッサは単一の「検査プロセッサ」及びいくつかのリンクプロセッサを含む。
【０１０５】
水平グループシャッフルMin-Sumデコーダ
上述したように、従来の「水平シャッフル」デコーダでは、検査ノードを１つずつ循環させ、検査ノードが１循環するにつれ、ビットから検査へのメッセージ及び確率を自動的に更新する。これもまた上述したように、「水平グループシャッフル」デコーダでは、検査ノードをグループに編成し、グループ内の検査が処理される間に、異なるグループを順に更新する。すなわち、各検査ノードのすべての検査からビットへのメッセージが並列に求められる。
【０１０６】
この概念を準巡回ＬＤＰＣ符号に適用する方法は、Ｍ／ｚ個の検査のｚ個のグループを形成することによる。ここで、ｚはパリティ検査行列の置換行列のサイズであり、Ｍ／ｚは符号の基底行列の行数である。たとえば、ＩＥＥＥ８０２．１６ｅ規格からの符号で、図９に示す基底行列を有し、ｚ＝４４である場合、４４個のグループがあり、それぞれ８検査ビットを有し、合計で３５２の検査ビットがある。
【０１０７】
図１２に示す本発明による構造では、グループ内の各検査ビットに１つのスーパープロセッサ１２０２を充てる。したがって、図１２に示すように、並列で動作し、４４個のグループを通る８つのスーパープロセッサ１２０２を使用する。
【０１０８】
各スーパープロセッサは、いくつかのリンクプロセッサに接続された１つの検査プロセッサを備える。８０２．１６ｅ符号の場合、リンクプロセッサの数は、１つを除くすべてのスーパープロセッサで１０であり、残る１つのスーパープロセッサで１１である。一般に、特定の検査プロセッサに接続されるリンクプロセッサの数は、基底行列の行中の非「−１」エントリの数である。基底行列の各行に１つの検査プロセッサがある。次いで、リンクプロセッサは、その時点で特定の確率レジスタを更新できるリンクプロセッサが１つだけであるように確率レジスタバンク１４００に接続される。
【０１０９】
複製水平グループシャッフルMin-Sumデコーダ
本発明では、検査プロセッサ１５００を「複製」することもできる。上述したように、各検査プロセッサは４４個の検査を順に通る。これらプロセッサを、たとえば、４４個の検査を通る或るプロセッサに１，２，３，…，４３，４４の順に検査させ、第２のプロセッサが２３，２４、２５，…，４３，４４，１，２，…，２１，２２等の順に検査することにより複製することができる。もちろん、可能な多くの他の順番が存在する。
【０１１０】
各ビットの確率は単一の確率レジスタに記憶される。したがって、２つの検査プロセッサがビット確率を更新する際にメモリの同じ確率レジスタに同時にアクセスすることによって生じるいかなる衝突も回避するように、各検査プロセッサが検査を通るのに使用する順番は入念に選択される。
【０１１１】
検査プロセッサの複製はデコーダにさらなる複雑性を加える。複製は、特定の性能の実現に必要な反復回数を低減し、これはいくつかの用途にとって有利であり得る。
【０１１２】
デコーダ構造
図１３は、本発明によるデコーダの構造をさらに詳細に示す。各スーパープロセッサ１２０２は、検査プロセッサ１５００及び１組の（たとえば、１０の）リンクプロセッサ１６００を含む。各スーパープロセッサは、１組の（たとえば、１０の）確率レジスタバンク１４００にリンクプロセッサを介して接続される。各スーパープロセッサ内のリンクプロセッサの数は、基底行列に関連するスーパープロセッサに対応する行中の非ゼロ部分行列の数によって決まる。
【０１１３】
各リンクプロセッサ１６００は関連するメッセージレジスタ１７００を有する。この構造は、Richardsonに付与された米国特許第６，６３３，８５６号の図１５〜図１７に示されている従来技術によるRichardson構造よりもはるかに単純である。
【０１１４】
動作中、確率レジスタ１４００は復調器１２５０により生成される確率で初期化される。デコーダ１２００は、所定の反復回数分、確率に対して動作する。各反復中、確率及びメッセージが確率レジスタと検査プロセッサ１５００の間でリンクプロセッサ１６００を介して前後にやりとりされる。メッセージはメッセージレジスタ１７００に記憶される。
【０１１５】
リンクプロセッサは強制的に、確率が所定範囲内の値に留まるように、たとえば、値がレジスタサイズでアンダーフロー又はオーバーフローを生じさせないようにする。好ましい実施形態では、メッセージレジスタ１７００は検査からビットへのメッセージのみを記憶する。メモリは、概して後述するようにシフトレジスタに記憶することができる。復号化が終了すると、最終確率を確率レジスタから読み取り、閾値処理して入力データを復元することができる。
【０１１６】
この構造は従来技術によるデコーダに見られ得るようなビットプロセッサを含まないことに留意されたい。また、各プロセッサにはそれ自体のリンクプロセッサが関連付けられる。
【０１１７】
確率レジスタ
図１４は、確率レジスタバンクの構造をさらに詳細に示す。１組の確率レジスタがグループ化されて、複数の確率レジスタバンクを形成する。各確率レジスタバンク１４００には、符号の基底行列の１列が関連付けられる（図９参照）。各確率レジスタバンクは、対応する基底行列の列中の変数ノード（ビット）に対応する確率を記憶する。ライン１４０２がレジスタの初期化に使用される。
【０１１８】
確率を静的に記憶し、必要に応じて確率にアクセスすることに代えて、本発明のこの実施形態では、確率をシフトレジスタに記憶し、値は、適当なスーパープロセッサに送られるまで或る段階から別の段階を自動的に循環する。この設計は、ＬＤＰＣ符号の準巡回構造を利用する。
【０１１９】
確率レジスタバンクは、ｚ個の段階（個々の確率レジスタ）１４０１を含み、ここで、ｚは置換行列の次元である。分かるように、段階は、各段階がその確率を次の段階に渡すか、又はその確率を接続されたリンクプロセッサ１６００に出力するように循環シフトする。段階の入力は、前の段階からの確率であるか、又は接続されたリンクノードプロセッサからの更新された確率である。信号ｉｎｉｔ１４０２が強制的に、すべての段階に、復号化すべき新ブロックの復調器１１５０から通信路情報をロードさせる。
【０１２０】
選択された段階のみがリンクプロセッサに接続されることに留意されたい。リンクプロセッサへの接続の配置は、大部分、使用される基底行列に依存する。したがって、特定のスーパープロセッサが所与の確率レジスタバンクに接続され、基底行列がその接続に置換行列Ｐｔを有する場合、通常、ｔ番目の段階がスーパープロセッサに接続される。しかし、利用できるさらなる自由度があることが重要である。特定のスーパープロセッサを、段階ｔに代えて段階ｔ＋ｋに常に接続することを選択することができる。スーパープロセッサからのあらゆる接続に対して一貫してそれを行う限り、デコーダはやはり正しく動作する。この自由度を本明細書では「シフト自由度」と呼び、シフト自由度を利用して、２つのスーパープロセッサが同じ確率レジスタに同時にアクセスしないことを保証する。ハードウェア実装では、スーパープロセッサへの２つの接続が隣接する段階に見られることを回避するために、詳細なタイミング判断が有用なときがある。また、この状況を回避するようにシフト自由度を最適化することもできる。
【０１２１】
検査プロセッサ
図１５Ａは検査プロセッサ１５００を示す。検査プロセッサは、関連付けられた各リンクプロセッサから１つずつ、１０個の入力１５０１及び１０個の出力１５０２を有する（図１３参照）。各入力は異なるリンクプロセッサから来たものであり、各出力は異なるリンクプロセッサに接続されるものである。検査プロセッサは、確率から検査へのメッセージに対応する入力を受け取り、検査からビットへのメッセージに対応する出力メッセージを計算する。検査からビットへのメッセージはメッセージレジスタ１７００に記憶されるが、ビットから検査へのメッセージは記憶されず、それに代えて必要に応じて計算されることに留意する。
【０１２２】
検査プロセッサは、確率伝搬メッセージ更新規則を実施する。ここで述べる実施形態では、検査プロセッサは上述し、図１５Ａ〜図１５ＢＣに示すＸＯＲゲート、コンパレータゲート、及びＭＵＸブロックを使用して後述するmin-sum規則に従って更新する。
【０１２３】
min-sumメッセージ更新規則は以下のように定義される。各メッセージに時間インデックスが与えられ、新メッセージが、メッセージ更新規則を使用して旧メッセージから繰り返し求められる。メッセージ更新規則は以下の通りである。
【０１２４】
【数６】
2008035524.tif 000008
【０１２５】
式中、Ｕｍ→ｎは検査ｍからビットｎへのメッセージであり、Ｖｎ→ｍはビットｎから検査ｍへのメッセージであり、Ｂｎはビットｎの確率である。上付き文字を使用して時間インデックスを示す。Ｍ（ｎ）はＮ（ｍ）に関してビットノードｎに接続されたすべての検査ノードの組及びその逆であり、Ｍ（ｎ）／ｍは検査ノードｍを除きビットノードｎに接続されているすべての検査ノードの組として定義されることに留意する。
【０１２６】
他のメッセージ更新規則、たとえば、sum-product規則又は正規化min-sum規則は、min-sum規則と比較してメッセージ更新規則の詳細において異なる。これら異なるメッセージ更新規則の実施には、複雑性／性能トレードオフが含まれる。このトレードオフは、システムの全体構造に大きな変更を必要としない。通常、メッセージ更新復号化プロセスは、或る所定の反復回数後に終了する。その時点で、各ビットは、その（正の）確率が０以上である場合には０が割り当てられ、その他の場合、確率が負の場合には１が割り当てられる。
【０１２７】
各メッセージは符号及び大きさを有する。大きさについて、min-sumメッセージ更新規則を使用して、検査プロセッサは最小メッセージを判断し、そのメッセージを、リンクプロセッサが受け取る最小メッセージの送信元のリンクプロセッサを除くすべてのリンクプロセッサに送る。送信元のリンクプロセッサは、最小メッセージを受け取ることに代えて、第２に最良の最小値を受け取る。
【０１２８】
出力される検査からビットへの各メッセージの符号は、１である可能性がより高いと「信じ」、したがって負のＬＬＲを有する、入力されるビットから検査へのメッセージの数によって決まる。その数が奇数の場合、出力メッセージは負のＬＬＲを有すべきであり、その数が偶数の場合、出力メッセージは正のＬＬＲを有すべきである。
【０１２９】
したがって、出力メッセージに第１の最小値及び第２の最小値を求める（１５５０）。各入力メッセージの大きさが第１の最小値と比較される（１５３０）。第１の最小値に等しい場合、第２の最小値がＭＵＸを使用して対応する出力メッセージの大きさとして選択される（１５４０）。その他の場合、第１の最小値が対応する出力メッセージの大きさになる。
【０１３０】
符号について、ビット値が０である可能性が高いことは正のＬＬＲに対応し、ビット値が１である可能性が高いことは負のＬＬＲに対応するため、符号の積は値のＸＯＲに対応する。出力の符号は、対応する入力の符号を除くすべての入力の符号の積である。２つのＸＯＲブロック１５２０を使用して、図１５Ａに示すようにこの機能を遂行する。次いで、各出力の大きさが対応する符号と組み合わせられ、これにより完全な出力メッセージが生成される。
【０１３１】
図１５ＢＣに示すように、コンパレータ１５３０は実際にはカスケード接続されたコンパレータとして構築される。３つの変形形態１５３１、１５３２、及び１５３３を示す。
【０１３２】
１０入力比較の場合、入力メッセージは３つのグループに、３個、３個、４個それぞれのメッセージに分けられる。ブロックコンパレータ１５４１が３つの入力を受け取り、各対を比較する。したがって、３つの並列比較があり、比較結果に従って最小値及び第２の最小値を出力する。陰影の付いたブロックコンパレータ１５４２は４つの入力を受け取り、各対を比較する。したがって、６つの並列比較があり、比較結果に従って最小値及び第２の最小値を出力する。
【０１３３】
カスケード１５３３において、コンパレータ１５４３を使用する。第２の段階でのコンパレータ１５４１の出力の順序が分かっているため、これらを再び第３の段階で比較する必要はない。
【０１３４】
リンクプロセッサ
メッセージ更新プロセスの任意のときに、検査ノードｍからビットノードｎへのメッセージＵｍ→ｎ、ビットノードｎから検査ノードｍへのメッセージＶｎ→ｍ、及びビットノードｎでの確率Ｂｎが、式
【０１３５】
【数７】
2008035524.tif 000009
【０１３６】
によって結び付けられる。
【０１３７】
この式は、記憶する必要があるのが確率及び検査からビットへのメッセージだけであることを意味し、ビットから検査へのメッセージを記憶されている情報から必要に応じて求めることから本実施形態に有用である（図１３参照）。この性質は、min-sumプロセスと比較して他のプロセスでも変わらないビットノード更新及び確率更新式にのみ依存するため、sum-productプロセス及び正規化min-sumプロセス等の他のメッセージ更新プロセスにも当てはまる。
【０１３８】
図１８Ａ及び図１８Ｂは、従来のメッセージ更新と本発明の実施形態による更新とを対比する。従来技術では、検査からビットへのメッセージ１８０１はビットプロセッサ１８１０において合算されて、出力されるビットから検査へのメッセージ１８０２が生成される。それに代えて、ビットから検査へのメッセージを計算するために、本発明では検査からビットへのメッセージを確率から差し引く（１８２０）。
【０１３９】
本発明では、この技法を使用するためビットプロセッサが不要であり、ビットから検査へのメッセージを記憶する必要がない。ビットプロセッサを使用せず、且つビットから検査メッセージを記憶せずに、本発明では、単一の検査からビットへのメッセージ及び単一の確率にアクセスする必要があるだけであるリンクプロセッサを使用する。
【０１４０】
図１６は、確率レジスタと検査プロセッサとの間でのメッセージのためのリンクプロセッサ１６００を示す。図１６に示すように、リンクプロセッサは入力を確率レジスタ１４００及びメッセージレジスタ１７００から取り入れる。示す実施形態では、確率は９ビットＬＬＲ値（符号に１ビット、大きさに残りの８ビット）として記憶され、検査からビットへのメッセージは６ビットＬＬＲ値として記憶される。メッセージを確率から指しい引き（１６１０）、残りの大きさの最大値を５ビット値に制限した後、飽和ブロック１６２０を使用して、結果得られる値を対応する検査プロセッサに送る。検査プロセッサにより送られる検査からビットへのメッセージから確率を復元するために、加算演算１６３０を行う。
【０１４１】
メッセージレジスタ
図１７に示すように、本発明の一実施形態では、メッセージレジスタ１７００の構造は、確率レジスタについて上述したものと同様のシフトレジスタを使用する。各メッセージレジスタには、符号の基底行列内の非ゼロエントリが関連付けられる。
【０１４２】
メッセージレジスタはｚ個の段階を含み、ここで、ｚは置換行列の次元である。各段階はそのメッセージを次の段階に渡すか、又は接続されたリンクプロセッサに出力する。入力は、前の段階から来るメッセージであるか、又は接続されたリンクプロセッサからの更新されたメッセージである。信号ｉｎｉｔは、信号が「１」である場合にすべての段階が立ち上がりエッジにおいて全ゼロを出力するように強制する。信号ｉｎｉｔが各ブロックの復号化開始時に「１」にセットされ、１クロックサイクル後に、メッセージをすべて０として初期化する必要があることから「０」にセットされる。
【０１４３】
［発明の効果］
本発明による結合デコーダを使用してのシミュレーションは、結合デコーダが従来技術によるデコーダよりも良好なパフォーマンス・複雑性・速度のトレードオフを提供することを示した。レプリカシャッフルターボデコーダという本発明は、同数の反復を使用した場合に１０分の数ｄＢだけ従来のターボデコーダよりも優れ、所与の雑音レベルで同じパフォーマンスが求められる場合に使用する反復回数をはるかに少なくすることができる。
【０１４４】
本発明をＬＤＰＣ符号、ターボ積符号、又は任意の反復復号可能な符号と併せて使用した場合にも同様のパフォーマンスの向上が見られた。
【０１４５】
本発明について好ましい実施形態の例として説明したが、本発明の精神及び範囲内で他の各種適応形態及び変更形態を行うことが可能なことを理解されたい。したがって、添付の特許請求の範囲の目的は、かかる変形形態及び変更形態をすべて、本発明の真の精神及び範囲内にあるものとして包含することである。
【図面の簡単な説明】
【０１４６】
【図１】従来技術による通信路符号化のブロック図である。
【図２】従来技術による確率伝搬復号化のブロック図である。
【図３】従来技術によるターボ符号の概略図である。
【図４】従来技術による直列ターボ符号化及び並列ターボ符号化のブロック図である。
【図５】本発明の一実施形態によるレプリカ結合グループシャッフル反復デコーダを生成する方法の流れ図である。
【図６】複製されたサブデコーダの概略図である。
【図７】本発明の一実施形態によるレプリカ結合グループシャッフル反復デコーダの図である。
【図８】ターボ符号用の結合デコーダの複製されたサブデコーダのスケジュールの図である。
【図９】本発明の一実施形態による基底行列である。
【図１０】本発明の一実施形態によるファクターグラフである。
【図１１】本発明の一実施形態によるデータの符号化及び復号化のシステム及び方法のブロック図である。
【図１２】本発明の一実施形態によるＶＬＳＩデコーダのブロック図である。
【図１３】図１２のデコーダの構造のブロック図である。
【図１４】本発明の一実施形態による確率レジスタのブロック図である。
【図１５Ａ】本発明の一実施形態による検査プロセッサのブロック図である。
【図１５ＢＣ】図１５Ａの検査プロセッサにより使用されるコンパレータのブロック図である。
【図１６】本発明の一実施形態によるリンクプロセッサのブロック図である。
【図１７】本発明の一実施形態によるメッセージレジスタのブロック図である。
【図１８】従来のメッセージ更新と本発明の一実施形態によるメッセージ更新とを比較したブロック図である。
【図１】
2008035524.tif 000010
【図２】
2008035524.tif 000011
【図３】
2008035524.tif 000012
【図４】
2008035524.tif 000013
【図５】
2008035524.tif 000014
【図６】
2008035524.tif 000015
【図７】
2008035524.tif 000016
【図８】
2008035524.tif 000017
【図９】
2008035524.tif 000018
【図１０】
2008035524.tif 000019
【図１１】
2008035524.tif 000020
【図１２】
2008035524.tif 000021
【図１３】
2008035524.tif 000022
【図１４】
2008035524.tif 000023
【図１５Ａ】
2008035524.tif 000024
【図１５ＢＣ】
2008035524.tif 000025
【図１６】
2008035524.tif 000026
【図１７】
2008035524.tif 000027
【図１８】
2008035524.tif 000028
【外国語明細書】
2008035524.tif 000029
2008035524.tif 000030
2008035524.tif 000031
2008035524.tif 000032
2008035524.tif 000033
2008035524.tif 000034
2008035524.tif 000035
2008035524.tif 000036
2008035524.tif 000037
2008035524.tif 000038
2008035524.tif 000039
2008035524.tif 000040
2008035524.tif 000041
2008035524.tif 000042
2008035524.tif 000043
2008035524.tif 000044
2008035524.tif 000045
2008035524.tif 000046
2008035524.tif 000047
2008035524.tif 000048
2008035524.tif 000049
2008035524.tif 000050
2008035524.tif 000051
2008035524.tif 000052
2008035524.tif 000053
2008035524.tif 000054
2008035524.tif 000055
2008035524.tif 000056
2008035524.tif 000057
2008035524.tif 000058
2008035524.tif 000059
2008035524.tif 000060
2008035524.tif 000061
2008035524.tif 000062
2008035524.tif 000063
2008035524.tif 000064
2008035524.tif 000065
2008035524.tif 000066
2008035524.tif 000067
2008035524.tif 000068
2008035524.tif 000069
2008035524.tif 000070
2008035524.tif 000071
2008035524.tif 000072
2008035524.tif 000073
2008035524.tif 000074
2008035524.tif 000075
2008035524.tif 000076
2008035524.tif 000077
2008035524.tif 000078
2008035524.tif 000079
2008035524.tif 000080
2008035524.tif 000081
2008035524.tif 000082
2008035524.tif 000083
2008035524.tif 000084
2008035524.tif 000085
2008035524.tif 000086
2008035524.tif 000087
2008035524.tif 000088
2008035524.tif 000089
2008035524.tif 000090
2008035524.tif 000091
2008035524.tif 000092
2008035524.tif 000093
2008035524.tif 000094
2008035524.tif 000095
2008035524.tif 000096