(57)【要約】【課題】【解決手段】低密度パリティチェック（ＬＤＰＣ）コードを効率的にデコードする装置が提供される。ＬＤＰＣデコーダ（３０５）は、ランプメモリ構造（９０１，１１０１）を可能にする複数の並列デコード可能な条件を充足するマッピング行列を記憶するメモリ（９０１，１１０１）を含む。さらに、デコーダ（３０５）は、記憶されたマッピング行列からのエッジ値にアクセスしてＬＤＰＣコードをデコードする並列プロセッサ（９０３，１１０３）を含む。先のアプローチは衛星ブロードキャストシステムに対して特に適用性を有する。【選択図】      図３
2005045781.tif 000002
【特許請求の範囲】
【請求項１】
低密度パリティチェック（ＬＤＰＣ）コードのデコードをサポートする方法において、
ＬＤＰＣコードに関係するパリティチェック行列に基づいてマッピング行列を構成し、マッピング行列は並列動作している複数のプロセッサによりアクセス可能なランプメモリ構造を可能にする複数の並列デコード可能な条件を充足し、
プロセッサによりＬＤＰＣコードをデコードするために、マッピング行列をメモリに記憶させることを含む方法。
【請求項２】
並列デコード可能な条件は、
マッピング行列の同一行における任意の２つの異なるエントリのいずれも同一ビットノードまたは同一チェックノードに接続されていないことを決定し、
ｉ≠ｊ、ＢＧiおよびＢＧjに対して、ビットノードグループＢＧiが、ｉ番目の行におけるエッジに接続されたすべてのビットノードを表している場合には、ＢＧiが共通ノードをまったく持たないか、あるいは同一であるかを検証し、
ｉ≠ｊ、ＣＧiおよびＣＧjに対して、チェックノードグループＣＧiが、ｉ番目の行におけるエッジに接続されたすべてのチェックノードを表している場合は、ＣＧiが共通ノードをまったく持たないか、あるいは同一であるかを検証することを含む請求項１記載の方法。
【請求項３】
パリティチェック行列はｎ×ｎ密度平衡行列のエントリを有するブロック行列と等価な置換である請求項１記載の方法。
【請求項４】
ｎ×ｎ密度平衡行列のエントリの１つはｍ×ｍ密度平衡行列であり、ｎ×ｎ密度平衡行列の他のエントリはブロック密度平衡部分行例に分割可能である請求項３記載の方法。
【請求項５】
ｍはｎの整数分数である請求項４記載の方法。
【請求項６】
ＬＤＰＣコードは、８−ＰＳＫ（位相シフトキーイング）、１６−ＱＡＭ（直角位相振幅変調）、１６−ＡＰＳＫ（振幅位相シフトキーイング）、３２−ＡＰＳＫおよびＱＰＳＫ（直角位相シフトキーイング）のうちの１つを含む信号配列にしたがって変調される信号により表される請求項１記載の方法。
【請求項７】
信号はデジタルビデオブロードキャストにしたがって衛星リンクを通して送信される請求項６記載の方法。
【請求項８】
低密度パリティチェック（ＬＤＰＣ）コードのデコードをサポートする命令を有するコンピュータ読み取り可能な媒体において、
前記命令は実行時に、１つ以上のプロセッサに請求項１記載の方法を実行させるように構成されている媒体。
【請求項９】
低密度パリティチェック（ＬＤＰＣ）コードをデコードするデコーディング装置において、
ランプメモリ構造を可能にする複数の並列デコード可能な条件を充足するマッピング行列を記憶するように構成されたメモリと、
並列に動作し、メモリにアクセスしてＬＤＰＣコードをデコードする複数のプロセッサとを具備する装置。
【請求項１０】
並列デコード可能な条件は、
マッピング行列の同一行における任意の２つの異なるエントリのいずれも同一ビットノードまたは同一チェックノードに接続されていないことを決定し、
ｉ≠ｊ、ＢＧiおよびＢＧjに対して、ビットノードグループＢＧiが、ｉ番目の行におけるエッジに接続されたすべてのビットノードを表している場合には、ＢＧiが共通ノードをまったく持たないか、あるいは同一であるかを検証し、
ｉ≠ｊ、ＣＧiおよびＣＧjに対して、チェックノードグループＣＧiが、ｉ番目の行におけるエッジに接続されたすべてのチェックノードを表している場合は、ＣＧiが共通ノードをまったく持たないか、あるいは同一であるかを検証することを含む請求項９記載の装置。
【請求項１１】
プロセッサの数はｎであり、メモリはマッピング行列内のエッジ値を削除することによりマッピング行列に基づいて構成された導出マッピング行列を記憶し、新しいマッピング行列はｍ個の並列プロセッサにより使用され、ｍはｎよりも小さい請求項９記載の装置。
【請求項１２】
ｍはｎの整数分数である請求項１１記載の装置。
【請求項１３】
パリティチェック行列はｎ×ｎ密度平衡行列のエントリを有するブロック行列と等価な置換である請求項１１記載の装置。
【請求項１４】
ｎ×ｎ密度平衡行列のエントリの１つはｍ×ｍ密度平衡行列であり、ｎ×ｎ密度平衡行列の他のエントリはブロック密度平衡部分行例に分割可能である請求項１３記載の装置。
【請求項１５】
ＬＤＰＣコードは、８−ＰＳＫ（位相シフトキーイング）、１６−ＱＡＭ（直角位相振幅変調）、１６−ＡＰＳＫ（振幅位相シフトキーイング）、３２−ＡＰＳＫおよびＱＰＳＫ（直角位相シフトキーイング）のうちの１つを含む信号配列にしたがって変調される信号により表される請求項９記載の装置。
【請求項１６】
信号はデジタルビデオブロードキャストにしたがって衛星リンクを通して送信される請求項１５記載の装置。
【請求項１７】
低密度パリティチェック（ＬＤＰＣ）コードのデコードをサポートする方法において、
ＬＤＰＣコードに対応するパリティチェック行列に基づくマッピング行列を記憶し、
マッピング行列の同一行における任意の２つの異なるエントリのいずれも同一ビットノードまたは同一チェックノードに接続されていないことを決定し、
ｉ≠ｊ、ＢＧiおよびＢＧjに対して、ビットノードグループＢＧiが、ｉ番目の行におけるエッジに接続されたすべてのビットノードを表している場合には、ＢＧiが共通ノードをまったく持たないか、あるいは同一であるかを検証し、
ｉ≠ｊ、ＣＧiおよびＣＧjに対して、チェックノードグループＣＧiが、ｉ番目の行におけるエッジに接続されたすべてのチェックノードを表している場合には、ＣＧiが共通ノードをまったく持たないか、あるいは同一であるかを検証し、
並列に動作し、記憶されているマッピング行列にしたがってＬＤＰＣコードをデコードする複数のプロセッサによりアクセス可能なメモリに記憶させるためにマッピング行列を出力することを含む方法。
【請求項１８】
プロセッサの数はｎであり、
方法は、マッピング行列内のエッジ値を削除して導出マッピング行列を出力することをさらに含み、
導出マッピング行列はｍ個の並列プロセッサにより使用され、ｍはｎよりも小さい請求項１７記載の方法。
【請求項１９】
低密度パリティチェック（ＬＤＰＣ）コードのデコードをサポートする命令を有するコンピュータ読み取り可能な媒体において、
前記命令は実行時に、１つ以上のプロセッサに請求項１７記載の方法を実行させるように構成されている媒体。
【発明の詳細な説明】
【関連出願】
【０００１】
本願は“一般的な並列デコード可能なＬＤＰＣコード”と題する、２００３年７月３日に出願された米国仮特許出願番号第６０／４８４，９７４号に関係し、３５Ｕ．Ｓ．Ｃセクション１１９（ｅ）の下でより早い出願日の利益を主張し、この米国仮特許出願の全体は参照によりここに組み込まれている。
【技術分野】
【０００２】
本発明は通信システムに関し、特にコード化システムに関する。
【背景技術】
【０００３】
通信システムはコーディングを使用して、雑音のある通信チャネルにおいて信頼性のある通信を確実に行う。これらの通信チャネルは固定容量を示し、ある信号対雑音比（ＳＮＲ）におけるシンボル当たりのビットに関して表現することができ、（シャノン限界として知られている）理論的な上限を規定する。結果として、コーディング設計はこのシャノン限界に近づくレートを達成することを目的としている。シャノン限界に近づくこのようなクラスのコードの１つは低密度パリティチェック（ＬＤＰＣ）コードである。
【０００４】
従来、ＬＤＰＣコードは多くの欠点があることから、幅広く採用されていなかった。１つの欠点はＬＤＰＣエンコーディング技術が非常に複雑であることである。その生成行列を使用してＬＤＰＣコードをエンコードするには、非常に大きな非希薄行列を記憶することが必要である。さらに、ＬＤＰＣコードは大きなブロックが効率的であることを必要とし、結果的に、ＬＤＰＣコードのパリティチェック行例が希薄であっても、これらの行列の記憶が問題である。
【０００５】
実現の将来的な見通しから、多数の難題に直面する。例えば、記憶装置はＬＤＰＣコードが実際には広まっていない重要な理由である。ＬＤＰＣデコーディングにおける主な問題の１つはメモリの編成である。メモリサイズがより大きくなると、ビット当たりの費用は低くなる事実を認識すると、ＬＤＰＣデコーダ中の多量のエッジ値のための効率的なランプメモリ構造を可能にするコードアーキテクチャを研究する動機付けがある。
【０００６】
また、ＬＤＰＣコード実現における主な難題はデコーダ中のいくつかの処理エンジン（ノード）間で接続ネットワークをどのように達成するかである。さらに、デコーディングプロセス、特にチェックノード動作における計算負荷は問題を生じる。
【０００７】
効率的なメモリアーキテクチャが維持されるように、設定された数の並列エンジンに対応するコードを異なる数の並列エンジンに対処するために再構成することができないことが認識されている。異なるアプリケーションは異なるデコーディング速度を必要とすることから、この非柔軟性は深刻な欠点を表す。また、この制約は半導体機能の進歩を利用および活用する能力を妨げる。例えば、処理能力が増加すると、所定のデコーディング速度に必要な並列エンジンの数は減少させなければならない。しかしながら、固定数のエンジンの設計は利用されるプロセッサ数の直接的な減少を許容しない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、効率的なデコーディングプロセスを使用するＬＤＰＣ通信システムに対する必要性が存在する。また、ＬＤＰＣコーディングを実現するのに必要な記憶要求を減少させる必要性も存在する。さらに、将来の技術的な進歩に容易に対処することができるデコーディングスキームに対する必要性も存在する。
【課題を解決するための手段】
【０００９】
これらのおよび他の必要性は本発明により取り扱われる。本発明では構成された低密度パリティチェック（ＬＤＰＣ）コードをデコードするアプローチが提供される。並列デコード可能なコードに対する基準が確立され、パリティチェック行列に対応するマッピング行列が発生される。第１の基準はマッピング行列の同じ行における任意の２つの異なるエントリのいずれも同じビットノードまたは同じチェックノードに接続しないということである。第２に、ＢＧiとして示されるビットノードグループｉ、ｉ＝０，１，…，ｍ−１が、ｉ≠ｊ、ＢＧiおよびＢＧjに対して、ｉ番目の行におけるエッジに接続するすべてのビットノードを表している場合には、これらは共通ノードをまったく持たないか、あるいは同一であることが確実となる。この基準はチェックノードにも課され、それによりＣＧiとして示されるチェックノードグループｉ，ｉ＝０，１，…，ｍ−１が、ｉ≠ｊ、ＣＧiおよびＣＧjに対して、ｉ番目の行におけるエッジに接続するすべてのチェックノードを表す。ＣＧiが共通ノードを持たないか、あるいは同一であることが検証される。これらの基準は、ＬＤＰＣコードの並列デコーディング構造を活用し、効率的なメモリアーキテクチャを提供するＬＤＰＣコードとなる。ｎ個のプロセッサより少ないプロセッサ（すなわち、ｍ個のプロセッサ、したがってｍはｎの整数分数である）に対して効率的な並列処理についての３つの条件を維持するために、パリティチェック行列は、ｎ×ｎ密度平衡行列であるブロック行列Ａijを使用して構成される。ブロック行列は行および列置換の下でＢijエントリを有する行列に分割され、これはｍ×ｍ密度平衡行列である。２部グラフの観点で見ると、導出コードはマッピング行列中のいくつかのエッジを削除することにより得ることができる。先の構成の下では、ｍ個の並列エンジンを使用して、実現の柔軟性を向上させることができる。
【００１０】
本発明の実施形態の１つの観点にしたがうと、低密度パリティチェック（ＬＤＰＣ）コードのデコーディングをサポートする方法が開示される。この方法はＬＤＰＣコードに関係するパリティチェック行列に基づくマッピング行列を構成することを含む。マッピング行列は並列に動作する複数のプロセッサによりアクセス可能なランプメモリ構造を可能にする複数の並列デコード可能な条件を充足する。さらに、この方法はプロセッサによりＬＤＰＣコードをデコードするために、メモリにマッピング行列を記憶させることを含む。
【００１１】
本発明の実施形態の他の観点にしたがうと、低密度パリティチェック（ＬＤＰＣ）コードをデコードするデコーディング装置が開示される。この装置はランプメモリ構造を可能にする複数の並列デコード可能な条件を充足するマッピング行列を記憶するように構成されたメモリを含む。さらに、この装置は並列に動作する複数のプロセッサを含み、プロセッサはメモリにアクセスしてＬＤＰＣコードをデコードする。
【００１２】
本発明の実施形態のさらに他の観点にしたがうと、低密度パリティチェック（ＬＤＰＣ）コードのデコーディングをサポートする方法が開示される。この方法はＬＤＰＣコードに対応するパリティチェック行列に基づくマッピング行列を初期化することを含む。この方法はまたマッピング行列の同一行における任意の２つの異なるエントリはいずれも同一のビットノードまたは同一のチェックノードに接続しないことを決定することを含む。ビットノードグループＢＧiが、ｉ≠ｊ、ＢＧiおよびＢＧjに対して、ｉ番目の行におけるエッジに接続するすべてのビットノードを表している場合には、この方法は、ＢＧiが共通ノードをまったく持たないか、あるいは同一であることを検証することを含む。また、チェックノードグループＣＧiが、ｉ≠ｊ、ＣＧiおよびＣＧjに対して、ｉ番目の行におけるエッジに接続するすべてのチェックノードを表す場合には、この方法はＣＧiが共通ノードをまったく持たないか、あるいは同一であることを検証することを含む。さらに、この方法は並列に動作している複数のプロセッサによりアクセス可能なメモリに記憶させるためにマッピング行列を出力して、記憶されたマッピング行列にしたがってＬＤＰＣコードをデコードすることを含む。
【００１３】
本発明のさらに別の観点、特徴および効果は、多数の特定の実施形態および構成を単に示すことにより、以下の詳細な説明から容易に明らかになり、多数の特定の実施形態および構成には本発明を実行するために企図されているベストモードが含まれる。本発明は他のおよび異なる実施形態も可能であり、そのいくつかの詳細は本発明の精神および範囲をまったく逸脱することなく、さまざまな明らかな観点で修正することができる。したがって、図面および説明は本質的に例示として考えるべきであり、制限的なものとして考えるべきではない。
【００１４】
本発明は添付図面において例のつもりで示され、限定のつもりで示されているものではなく、添付図面では同じ参照番号は同様な構成要素に言及している。
【発明を実施するための最良の形態】
【００１５】
構成された低密度パリティチェック（ＬＤＰＣ）コードを効率的にデコーディングするシステム、方法およびソフトウェアを説明する。以下の説明では、説明の目的のために、本発明の完全な理解をもたらすように多くの特定な詳細を記述する。しかしながら、これらの特定な詳細なく、あるいは均等な構成で、本発明を実現してもよいことは当業者に明らかである。他の例では、よく知られた構造およびデバイスは本発明を不必要性に曖昧にすることを避けるためにブロック図で示されている。
【００１６】
図１は本発明の実施形態にしたがった、低密度パリティチェック（ＬＤＰＣ）コードを利用するように構成された通信システムの図である。デジタル通信システム１００は送信機１０１を含み、この送信機１０１は通信チャネル１０３を通して受信機１０５への信号波形を発生させる。このディスクリート通信システム１００では、送信機１０１はディスクリートセットの可能性あるメッセージを生成するメッセージ源を有し、それぞれの可能性あるメッセージは対応する信号波形を持つ。これらの信号波形は通信チャネル１０３により、減衰され、そうでなければ変更される。雑音チャネル１０３と戦うためにＬＤＰＣコードが利用される。
【００１７】
送信機１０１により発生されるＬＤＰＣコードは何らかの性能損失を生じさせることなく高速な構成を可能にする。このようなＬＤＰＣコードは（ターボコードと異なり）並列可能なデコーディングアルゴリズムを持ち、これは加算、比較およびテーブルルックアップのような簡単な動作で足りる効果がある。この並列構造を活用してメモリ要求を最小にし、さまざまな量の並列エンジン（すなわちプロセッサ）の利用に関する柔軟性を向上させる。これは図７ないし図１１に関して、以下でさらに完全に説明する。さらに、慎重に設計されたＬＤＰＣコードは対象とする範囲でエラーフロアーの兆候を何ら示さない。
【００１８】
本発明の１つの実施形態にしたがうと、送信機１０１はパリティチェック行列に基づいてＬＤＰＣコードを発生させ、パリティチェック行列は受信機１０５との通信のためのデコーディング中での効率的なメモリアクセスを促進する。
【００１９】
図２は図１のシステムにおける例示的な送信機の図である。送信機２００にはＬＤＰＣエンコーダ２０３が備えられ、ＬＤＰＣエンコーダ２０３は情報源２０１からの入力を受け入れ、受信機１０５におけるエラー訂正処理に適した冗長性のコード化ストリームを出力する。この情報源２０１は離散アルファベットＸからｋ個の信号を発生させ、ＬＤＰＣコードはパリティチェック行列で特定される。
【００２０】
変調器２０５はエンコーダ２０３からのエンコード化メッセージを信号波形にマッピングし、信号波形は送信アンテナ２０７に送信され、送信アンテナ２０７はこれらの波形を通信チャネル１０３を通して放射する。したがって、エンコード化メッセージは変調され、送信アンテナ２０７に配信される。送信アンテナ２０７からの送信は以下で説明するように受信機に伝搬する。
【００２１】
図３は図１のシステムにおける例示的な受信機の図である。受信側では、受信機３００は復調器３０１を含み、復調器３０１は送信機２００からの受信信号の復調を実行する。これらの信号は復調のために受信アンテナ３０３において受信される。復調後、受信信号はデコーダ３０５に転送される。デコーダ３０５はビットメトリック発生器３０７とともにメッセージＸ’を発生させることにより、オリジナルソースメッセージを再構成しようとする。ビットメトリック発生器３０７はデコーディングプロセス中に（反復的に）デコーダ３０５と互いに情報を交換してもよい。これらのデコーディングアプローチは同時継続中の出願にさらに完全に説明されている。この同時継続中の出願は２００３年７月３日（出願番号第１０／６１３，８２４号、代理人ドケットＰＤ−２０３００９）に出願され、“低密度パリティチェック（ＬＤＰＣ）デコーダにおいてルーティングするための方法およびシステム”と題するものであり、その全体がここに組み込まれている。本発明により提供される利点を理解するために、図４で説明されているように、どのようにしてＬＤＰＣコードが発生されるかを調べることが有効である。
【００２２】
図４は本発明の実施形態にしたがった、希薄パリティチェック行列の図である。ＬＤＰＣコードは希薄パリティチェック行列Ｈ(n-k)xnを有する長い線形ブロックコードである。一般的に、ブロック長ｎは数千から数万ビットの範囲をとる。例えば、長さｎ＝８およびレート１／２のＬＤＰＣコードに対するパリティチェック行列が図４に示されている。同じコードは図５に関して２部グラフにより等価的に表すことができる。
【００２３】
図５は図４の行列のＬＤＰＣコードに対する２部グラフの図である。パリティチェック式は、各チェックノードについて、すべての隣接ビットノードの（ＧＦ（ガロア域）（２）に対する）合計が０に等しくなることを意味する。図に見られるように、ビットノードはグラフの左側を占め、予め定められた関係にしたがって、１つ以上のチェックノードと関係している。例えば、チェックノードｍ1に対応して、以下の表現ｎ1＋ｎ4＋ｎ5＋ｎ8＝０がビットノードに関して存在する。
【００２４】
ＬＤＰＣデコーダ３０５はメッセージ通過デコーダとして考えられ、それによりデコーダ３０５はビットノードの値を発見することを目的としている。このタスクを達成するために、ビットノードとチェックノードは互いに繰り返し通信する。この通信の性質を以下に説明する。
【００２５】
チェックノードからビットノードについては、各チェックノードは隣接ビットノードに対して、他の隣接ビットノードから来る情報に基づいてそのビットノードの値と考えられる推定値（“オピニオン”）を提供する。例えば、先の例において、ｎ4、ｎ5およびｎ8の合計がｍ1にとって０の“ように見える”場合には、ｍ1はｎ1に対してｎ1の値は０であると思うことを示し（なぜならｎ1＋ｎ4＋ｎ5＋ｎ8＝０）、そうでなければ、ｍ1はｎ1に対して、ｎ1の値は１であると思えることを示す。さらに、軟判定デコーディングに対して、信頼性の尺度が加えられる。
【００２６】
ビットノードからチェックノードについては、各ビットノードは隣接チェックノードに対して、それの他の隣接チェックノードから来るフィードバックに基づいてそれ自体の値についての推定値を中継する。先の例では、ｎ1は２つの隣接チェックノードｍ1およびｍ3のみを有する。ｍ3から来るｎ1のへのフィードバックが、ｎ1の値がおそらく０であることを示す場合には、ｎ1はｎ1自体の値の推定値は０であることをｍ1に通知する。ビットノードが２つより多い隣接チェックノードを持つケースでは、ビットノードは、それと通信しているチェックノードに対して判定を報告する前に、それの他の隣接チェックノードから来るフィードバックにおいて多数決（軟判定）を実行する。先のプロセスはすべてのビットノードが正しい（すなわち、すべてのパリティチェック式が満たされる）と考えられるまで、あるいは予め定められた最大数の反復に達して、それによりデコーディングの失敗が宣言されるまで繰り返される。
【００２７】
図６は本発明の実施形態にしたがった、図３のＬＤＰＣデコーダの動作のフローチャートである。ＬＤＰＣの最も顕著な利点の１つは並列デコーディングに対する可能性であることが認識される。ＬＤＰＣコードの２部グラフとデコーディングアルゴリズムを調べると明らかである。特に、ビットノード（またはチェックノード）を処理するときに、処理中に中間データの交換がないことから、すべてのビットノード（またはチェックノード）を同時に処理できることは明らかである。各ビットノードｉに対して、特定ビットの対数最尤比が論理１ではなく論理０であることを表す受信値ｕiが存在する。これは“チャネル値”と呼ばれる。例として、ＬＤＰＣコードをデコードするメッセージ解析アルゴリズムを説明する。
【００２８】
ステップ６０１において、デコーダ３０５の初期化が実行され、これにより、２部グラフ（図５）中の各エッジに値が割り当てられる。この値はエッジが接続されるビットノードに関係するチャネル値に等しい。次に、ステップ６０３で、チェックノードが更新される。すなわち、チェックノード処理の最後において、すべてのエッジ値が更新される。ｅ1，ｅ2，…，ｅvが特定のチェックノードに接続されたすべてのエッジのすべての値を表示するとすれば、更新されるエッジ値は次の通りである。
【００２９】
ｉ＝１，２，…，ｖに対して、ｅi＝ｇ（ｅ1，ｅ2，…，ｅi-1，ｅi，…ｅv）
ここで、ｇ（ａ，ｂ）＝ｌｎ（（１＋ｅa+b）／（ｅa＋ｅb））である。式ｇ（ａ，ｂ，ｃ）＝ｇ（ｇ（ａ，ｂ），ｃ）は機能的に計算される。
【００３０】
ステップ６０５において、すべてのチェックノードを処理した後に、ビットノードは更新されたエッジ値により処理される。ビットノード処理の目的は、エッジ値をさらに更新することである。ｅ1，ｅ2，…，ｅvがこの特定のビットノードに接続されたすべてのエッジのエッジ値を表示するとすれば、更新されるエッジ値は次の通りである。
【００３１】
ｅi＝ｅ1＋ｅ2＋…,ｅi-1＋ｅi＋…ｅv
ステップ６０７で、プロセスは事後確率情報を出力し、パリティチェック式が満たされているか否か、あるいは構成可能な最大反復数に到達したかを決定する（ステップ６０９）。これらの式が満たされない場合には、ステップ６０３−６０７が反復的に実行される。ステップ６１１において、最終反復では、１つのビットノードに関係するすべてのエッジ値が互いに合計され、さらにチャネル値と合計されて、最終判定メトリックが形成される。
【００３２】
ＬＤＰＣデコーダ３０５は高度並列システムとして実現できるので、チェックノードとビットノードとの間の相互接続を実現するのに２つのアプローチ、（１）完全並列アプローチ、（２）部分並列アプローチが存在する。完全並列アーキテクチャでは、すべてのノードとそれらの相互接続は物理的に実現される。このアーキテクチャの利点は速度である。しかしながら、完全並列アーキテクチャはすべてのノードとそれらの接続を実現する際により複雑さを伴うかもしれない。したがって、完全並列アーキテクチャでは、複雑さを減少させるためにより少ないブロックサイズであることが要求される。
【００３３】
ＬＤＰＣコードを実現する第２のアプローチは、ノード総数の部分集合のみを物理的に実現し、これらの制限された数の“物理的な”ノードのみを使用して、コードのすべての“機能”ノードを処理することである。ＬＤＰＣデコーダ３０５の動作はかなり簡単に作り、並列に実行できるが、設計におけるさらなる挑戦は“ランダム”に分布されたビットノードとチェックノードとの間にどのように通信を確立するかに関係する。
【００３４】
図７は本発明の実施形態にしたがった、ＬＤＰＣデコーダの構成部品の図である。デコーダ３０５は並列プロセッサの使用により図７のデコーディングプロセスを実行する。示されているように、デコーダ３０５はビットノードプロセッサ７０１とチェックノードプロセッサ７０３を含む。これらは対応してビットノード動作とチェックノード動作を実行する。ビットノード更新またはチェックノード更新の中間エッジ値はエッジメモリ７０５にバッファされる。また、１つのビットノード処理中に新しいエッジ値を形成する際の部分合計も、一般的にはローカル的にプロセッサにバッファされる。チャネルメモリ７０７はチャネルからの信頼性情報を保持する。図に見られるように、チャネル信頼メモリ７０７はビットノード処理においてのみ使用される。
【００３５】
デコーダ３０５の設計は多数の工学的トレードオフ、例えば並列プロセッサ数対デコーディング速度、およびメモリサイズのトレードオフを伴う。１つの極端な例では、単一プロセッサを使用して、１つのノードから他のノードにシーケンシャルにコード全体をデコードすることができる。しかしながら、このアプローチは典型的な良好ＬＤＰＣコードに対して、非常に多いノード数および反復数となるために、ほとんど有用ではない。他の極端な例はノード数と同じくらい多いプロセッサを使用することである。これは最高のデコーディング速度と、残念ながら最高の費用を生じる。実際のデコーダはこれらの２つの極端なアプローチ間で設計される。
【００３６】
明らかに、デコーディング速度と、ビットノードおよび／またはチェックノードプロセッサ数との間にトレードオフが存在する。ビットノードプロセッサ７０１とチェックノードプロセッサ７０３は別の構成部品として示されているが、データパスの一部を共有できるように、ビットノードプロセッサ７０１はチェックノードプロセッサ７０３と組み合わせることができることが企図されている。代わりに、処理前にエッジ値を変換することにより、ビットノードプロセッサ７０１はチェックノードプロセッサ７０３と同一とすることができる。また、ビットノードプロセッサ７０１の数はチェックノードプロセッサ７０３の数と同じである必要はないことに留意すべきである。
【００３７】
また、効率的なアーキテクチャは任意に並列処理エンジンの数を取り扱うことはできない。並列処理数において何らかの自由度を有して、技術改良の進展に対処する構成の柔軟性を提供することが望ましい。例えば、コードが３６０個の並列エンジンを持つように設計されている場合には、集積回路技術が向上するにしたがって、回路は２倍の速さで動作することができる。したがって、同じコードを再構成して１８０個の並列エンジンを持つようにしながら、同じデコーディングアーキテクチャを維持することが望ましい。
【００３８】
メモリ構造に関して、ＬＤＰＣデコーダ３０５は各プロセッサ７０１、７０３の近くにエッジメモリ７０５を配置する。レジスタまたはランダムアクセスメモリ（ＲＡＭ）をメモリ７０５に対して利用することができる。ロングコードに対して、レジスタの使用はＲＡＭよりもかなり高価である。ＲＡＭに対して、ビット当たりの費用はＲＡＭのサイズが増加するにしたがって減少することが認識される。したがって、すべてのエッジ値が１つのＲＡＭに機能的にひとまとめにされるように、できる限り多くのＲＡＭを互いにひとまとめにすることが効率的である。
【００３９】
任意のＬＤＰＣコードでは図７のデコーダアーキテクチャを有効にサポートすることができないことが認識される。これは標準的なＲＡＭアーキテクチャを調べることにより明らかになる。以下の考察に着目する。ＲＡＭは予め規定された幅および深さを持つメモリであり、行方向から読み出し、行方向に書き込むことができる。これは、１アクセスサイクルにおいて、同じ行内の値のみにアクセスすることができることを意味する。“ランダム”は１つのアクセスサイクルから次のアクセスサイクルに任意の順序で行をアクセスすることができることを単に意味している。したがって、効率の観点から、任意の所定アクセスサイクルにおいて、各ビットノードプロセッサ７０１（チェックノード側で処理するときには、チェックノードプロセッサ７０３）には同じ量のエッジ値入力が供給されなければならないことは明らかである。したがって、任意の所定の瞬間には、効率的なデコーダアーキテクチャは処理エンジンを飢えさせるべきではない。
【００４０】
さらに、任意の所定時間において１つのプロセッサを特定のビットノード（またはチェックノード）の専用にすることが望ましい。すなわち、プロセッサが１つのビットノードに関係するエッジを更新し終えるまで、プロセッサは異なるビットノード（またはチェックノード）にスイッチすべきではない。
【００４１】
次に説明するように、本発明は並列デコード可能なコードの概念を導入して、図７のアーキテクチャのさまざまな特性に対処する。
【００４２】
図８は、本発明のさまざまな実施形態にしたがった、効率的な並列デコーディング用のマッピング行列を発生させるプロセスのフローチャートである。並列デコード可能なコードは効率的なメモリ構造を示すように規定される。パリティチェック行列の非０エントリを多数の規定された特性を充足するｍ×ｎ行列（マッピング行列）にマッピングする１対１マッピングがある場合には、ＬＤＰＣコードは、ランプメモリを有するｎ個の並列エンジンでデコード可能である。マッピング行列を発生させるプロセスを以下で説明する。
【００４３】
ステップ８０１において、マッピング行列はパリティチェック行列に基づいて発生される。効率的な並列デコーディングに対するさまざまな条件または特性を保証するために、このマッピング行列は検証される。ステップ８０３において、マッピング行列の同じ行における任意の２つの異なるエントリがいずれも同じビットノードまたは同じチェックノードに接続しないように、行列が検証される。ＢＧiとして表記されるビットノードグループｉ，ｉ＝０，１，…，ｍ−１が、ｉ≠ｊ、ＢＧiおよびＢＧjに対して、ｉ番目の行におけるエッジに接続されているすべてのビットノードであるとすれば、これらが共通ノードがまったくないか、あるいは同一であることをプロセスは保証する（ステップ８０５）。同様に、ステップ８０７において、ＣＧiとして表記されるチェックノードグループｉ，ｉ＝０，１，…，ｍ−１が、ｉ≠ｊ、ＣＧiおよびＣＧjに対して、ｉ番目の行におけるエッジに接続されているすべてのチェックノードであるとすれば、ＣＧiが何らかの共通ノードを持たないか、あるいは同一であることを検証する。
【００４４】
ステップ８０３−８０７の３つの条件が効率的な並列処理を生み出すために必要である。ステップ８０９において、マッピング行列が出力され、（ステップ８１１において）エッジメモリ７０５に記憶される。例示的な実施形態では、マッピング行列はメモリ構造を表している。このメモリはマッピング行列とは機能的に均等であるが物理的に異なるメモリデバイスとすることができる。ステップ８０３の特性は各アクセスサイクルにおいて各プロセッサ（例えばプロセッサ７０１，７０３）が各アクセスサイクル中にエッジメモリ７０５から１つ、そしてただ１つの値を受信することを保証する。
【００４５】
ｎ個の並列処理エンジンにより、すべてのプロセッサは均一にロードされる。（ステップ８０５による）第２の特性はビットノードをサイズｎのグループに分割する。２つのビットノードは、同じ行にマッピングされたノードに関係するエッジがある限り、同じグループである。さらに、アクティブに処理されている各ビットノード（またはチェックノード）に対する処理中に、いくつかの中間結果を保持する必要がある。したがって、１組のビットノード（またはチェックノード）の処理は新しいビットノード（またはチェックノード）を処理する前に終了しなければならない。これはステップ８０５および８０７の第２および第３の特性により保証される。
【００４６】
図９は本発明の実施形態にしたがった、並列デコーディングをサポートするためにエッジ値のマッピング行列を記憶するメモリを備えたＬＤＰＣデコーダの図である。ｍ×ｎマッピング行列はメモリ９０１に記憶され、エッジ値はｎ個の並列プロセッサ９０３に提供される。説明のために、マッピング行列を使用することを、以下のパリティチェック行列に関して記述する。
【００４７】
【数１】
2005045781.tif 000003
デコーディング中、パリティチェック行列の各非０エントリはエッジ値に関係する。これらのエッジ値は次のようにラベルを付けることができる。
【００４８】
【数２】
2005045781.tif 000004
エッジ値は以下の９×４行列に一対一にマッピングすることができる。
【００４９】
【数３】
2005045781.tif 000005
行列がメモリを反映していると仮定して、先の行列は１００％利用の稠密行列である。言い換えると、メモリのすべてのセルは完全に利用されている。このマッピングが前述した効率的な並列デコーディングに対する３つすべての特性を充足することは容易に検証することができる。
【００５０】
この例では、ビットノードは４つのグループに分割され、各グループは４つのビットノードを持ち、これによりビットノードｉはオリジナルパリティチェック行列の列ｉに関係するビットノードである。これらのビットノードグループは｛１，２，３，４｝、｛５，６，７，８｝、｛９，１０，１１，１２｝および｛１３，１４，１５，１６｝である。
【００５１】
同様に、チェックノードｉはオリジナルパリティチェック行列の行ｉに関係するチェックノードである。チェックノードは２つのグループ｛１，２，３，４｝および｛５，６，７，８｝に分割される。この例では、４つの並列プロセッサが使用される（ｎ＝４）。ビットノード処理に関して、第１行は４つの並列プロセッサ９０３に読み込まれ、これにより中間結果が生成されて、独立したメモリにバッファされる。その理由は最終目的がビットノード｛１，２，３，４｝に関係するエッジを更新することだからである。これは｛１，２，３，４｝のすべてのオリジナルエッジ値が処理された後に達成される。
【００５２】
ビットノード｛１，２，３，４｝に関係するエッジ値はエッジ行列の最初の３つの行に存在することに留意すべきである。したがって、次のアクセスサイクルでは、第２行または第３行がアクセスされ続ける。プロセスが他の任意の行で開始する場合には、付加的な中間結果をバッファする必要がある。ビットノード｛１，２，３，４｝に関係するすべての行が処理され、エッジ値が更新される場合には、ビットノードの他のグループが処理される。
【００５３】
同様に、先の手順がチェックノードにおいて実行される。すなわち、チェックノードはグループで処理され、このグループに関係するすべてのエッジ値が更新された後に、次のグループが処理される。各アクセスサイクルでは、アクティブに処理されている各ノードに対して、エッジ行列から正に１つの値がフェッチされ、それによりいずれのプロセッサ９０３もオーバロードされない（あるいはその事象に対して、十分に利用されないことはない）ことを保証する。
【００５４】
（図８のステップ８０３−８０７で説明したような）効率的な並列処理に対する３つの条件はいくぶん制限的にすることができ、それにより任意ＬＤＰＣコードは一般的にこれらの条件を充足しないことが認識される。この制限は以下で説明するようにマッピング行列から異なる行列を導出することにより緩和することができる。
【００５５】
図１０は本発明のさまざまな実施形態にしたがった、並列デコーディングに対応する導出マッピング行列を発生させるプロセスのフローチャートである。導出マッピング行列の発生をより理解するために、以下の通り、いくつかの用語および原理を述べる。行列のすべての行およびすべての列が正に同じ数の非０エントリを有するのであれば、ｎ×ｎ行列は“稠密均衡行列”と呼ぶ。稠密均衡行列の１つの例はすべて０の行列である。この行列はＬＤＰＣコード構成に対して広く使用される。
【００５６】
稠密均衡行列の他の例は以下の特性を有する行列である。ｂ0ｂ1…ｂn-1 がバイナリベクトルであり、ａがｎ対して互いに素であることを仮定すると、ｂai+jに等しいｉ番目の行とｊ番目の列におけるエントリを有する行列は稠密均衡行列である。特に、ａ＝１のとき、循環行列となる。
【００５７】
稠密均衡行列の任意の行および／または列置換は稠密均衡行列になることに留意すべきである。しかしながら、異なる成分行列が異なって置換されてもよいことから、異なる置換の構成単位を使用することにより基本的に異なるＬＤＰＣコードとなる。稠密均衡行列に対して、１つの行における非０エントリの数がｋである場合、一度に各行から１つの非０エントリをとることにより、すべての非０エントリをｋ×ｎの稠密行列に（一対一に）マッピングすることができる。
【００５８】
以下の原理が提案される（原理１）。ブロック行列と均等な置換であるＬＤＰＣコードのパリティチェック行列がある場合にのみ、ｎの効率的な並列デコーディングに対して、ＬＤＰＣコードは３つすべての条件を充足する。ブロック行列は次の通りである。
【００５９】
【数４】
2005045781.tif 000006
このようなことであるから、成分ブロック行列Ａijのそれぞれはｎ×ｎ稠密均衡行列である。このようにして構成された行列はレギュラＬＤＰＣコードを必ずしも生成しないことに留意すべきである。
【００６０】
パリティチェック行列の構造に原理により課される制約があるとすると、一般的なパリティチェック行列はこれらの条件を充足しないことは明らかである。したがって、効率的なメモリアクセスでデコードできるように、この構造的制約を有するコードを設計することが必要である。
【００６１】
ｎ個の並列エンジンで効率的な並列デコードが可能なコードは（ｎ以外のエンジン数を持つ）他の量に対して効率的な並列デコード可能ではないかもしれないことが認識される。先に着目したように、処理における将来の進展に対処するために、将来の受信機に対して、より少ない並列処理が望まれる。しかしながら、減少された並列処理のケースであっても、効率的な並列処理に対するすべての条件が充足される必要がある。
【００６２】
ｎ個のプロセッサよりも少ないプロセッサに対して、効率的な並列処理のための３つの条件を保つために、他の原理が提案される（原理２）。以下の行列がパリティチェック行列であるとし、それによりブロック行列Ａijのそれぞれがｎ×ｎ稠密均衡行列であるとする。
【００６３】
【数５】
2005045781.tif 000007
Ｂijのそれぞれがｍ×ｍ稠密均衡行列であるように、行および列置換の下でＡ11を以下の行列に分割でき、他のすべてのＡij≠Ａ11に対してブロック行列をＡ11と同じ行および列置換の下で、ブロック稠密均衡部分行列に分割できる場合、
【００６４】
【数６】
2005045781.tif 000008
ＬＤＰＣコードは以下の通りに規定される。
【００６５】
【数７】
2005045781.tif 000009
先の行列はｎとｍの両並列処理で効率的な並列処理に対する条件を充足する。
【００６６】
例として、以下のことが規定される。Ａijはｎ×ｎの循環行列であり、ｍはｎの任意の整数分数（integer fraction）である。Ａijの行および列は０，１，…ｎからラベルが付けられる。その行および列インデックスがｍを法とする定数に等しいすべてのエレメントからなる部分行列も循環行列である。結果として、同じ行および列の置換の下のすべてのＡijは再度循環部分行列に分割することができる。これは成分コードとしてＡijを持つＬＤＰＣコードがｎおよびｍ並列処理（ここでｍはｎの整数分数である）で効率的な並列処理に対する条件を充足することを意味する。
【００６７】
任意のパリティチェック行列Ｈを有する任意のＬＤＰＣコードが与えられた場合、他のＬＤＰＣコードはＨの非０エントリのいくつかを０に変換することにより、Ｈから導出することができる。この方法で得られた任意のコードは“オリジナルＬＤＰＣコードの導出コード”として呼ばれる。ステップ１００１において、ｎ個の並列デコード可能なコードに対するマッピング行列が導出される。オリジナルコードが、ｎ個の並列エンジンチェック行列の完全な稠密メモリによるｎ個の並列デコーディングである場合には、任意の導出コードは減少された稠密メモリ行列によりｎ個で並列デコード可能なものとすることができる。
【００６８】
２部グラフの観点では、導出コードはいくつかのエッジを削除することにより得ることができる（ステップ１００３）。導出コードのマッピング行列は本質的にベースコードのマッピング行列と同じであるが、削除されたエッジに対応するエントリは“ドントケア”（すなわちヌル値）としてマークすることができる。したがってこれらのメモリセルは無駄となり、アクセスサイクルはヌル値をフェッチする際に消費される。しかしながら、エッジ削除の総数が比較的少ない限り、効率には大きな影響を与えない。このような導出コードは、エンコーディングの容易さや、改善された距離特性のような、他の所望特性を示すことができる。ステップ１００５において、導出マッピング行列が出力される。
【００６９】
図１１は本発明の実施形態にしたがった、並列デコーディングをサポートするエッジ値の導出マッピング行列を記憶するメモリを備えたＬＤＰＣデコーダの図である。この行列はｍ個のプロセッサ１１０３によりアクセスするためにメモリ１１０１に記憶される。この構成の下では、使用される並列エンジンの数はかなり柔軟性があるが、効率的なメモリアーキテクチャが維持される。
【００７０】
図１２は本発明にしたがった実施形態を実現することができるコンピュータシステムを図示している。コンピュータシステム１２００は、バス１２０１または情報を通信する他の通信メカニズムと、バス１２０１に結合され情報を処理するプロセッサ１２０３とを含む。コンピュータシステム１２００は、バス１２０１に結合され、情報およびプロセッサ１２０３により実行されるべき命令を記憶する、ランダムアクセスメモリ（ＲＡＭ）または他の動的記憶デバイスのような、メインメモリ１２０５も含む。メインメモリ１２０５は、プロセッサ１２０３により実行されるべき命令を実行中に、一時的な変数や他の中間的な情報を記憶するのにも使用することができる。コンピュータシステム１２００は、バス１２０１に結合され、プロセッサ１２０３のために静的情報および命令を記憶するリードオンリーメモリ（ＲＯＭ）１２０７や他の静的記憶デバイスをさらに含む。磁気ディスクや光学ディスクのような記憶デバイス１２０９は、情報および命令を記憶するためにバス１２０１に付加的に結合される。
【００７１】
コンピュータシステム１２００は、情報をコンピュータユーザに表示するために、陰極線管（ＣＲＴ）、液晶ディスプレイ、アクティブマトリクスディスプレイ、またはプラズマディスプレイのようなディスプレイ１２１１に、バス１２０１を介して結合されてもよい。英数字および他のキーを含むキーボードのような入力デバイス１２１３は、情報およびコマンド選択をプロセッサ１２０３に通信するためにバス１２０１に結合される。他のタイプのユーザ入力デバイスは、方向情報およびコマンド選択をプロセッサ１２０３に通信し、ディスプレイ１２１１上のカーソルの動きを制御するための、マウス、トラックボール、またはカーソル方向キーのようなカーソル制御１２１５である。
【００７２】
本発明の１つの実施形態にしたがうと、ＬＤＰＣコードの並列デコーディングはメインメモリ１２０５に含まれている命令の配列を実行するプロセッサ１２０３に応答して、コンピュータシステム１２００により提供される。このような命令は、記憶デバイス１２０９のような他のコンピュータ読み取り可能な媒体からメインメモリ１２０５に読み込むことができる。メインメモリ１２０５に含まれている命令の配列の実行は、プロセッサ１２０３にここで説明するプロセスステップを実行させる。マルチ処理構成の１つ以上のプロセッサを使用して、メインメモリ１２０５に含まれている命令を実行してもよい。代替実施形態では、ソフトウェア命令の代わりにあるいはソフトウェア命令と組み合わせてハードワイヤード回路を使用して、本発明の実施形態を実現してもよい。したがって、本発明の実施形態はハードウェア回路およびソフトウェアの何らかの特定な組み合わせに限定されるものではない。
【００７３】
コンピュータシステム１２００はバス１２０１に結合された通信インターフェイス１２１７も含む。通信インターフェイス１２１７はローカルネットワーク１２２１に接続されたネットワークリンク１２１９に結合している２方向データ通信を提供する。例えば、通信インターフェイス１２１７はデジタル加入者線（ＤＳＬ）カードまたはモデム、統合サービスデジタルネットワーク（ＩＳＤＮ）カード、ケーブルモデム、または電話モデムであって、対応するタイプの電話回線に対してデータ通信接続を提供してもよい。他の例として、通信インターフェイス１２１７はローカルエリアネットワーク（ＬＡＮ）カード（例えば、イーサーネット（登録商標）や非同期転送モード（ＡＴＭ）ネットワーク）であって、互換性ＬＡＮへのデータ通信接続を提供してもよい。ワイヤレスリンクを実現することもできる。このような任意の構成において、通信インターフェイス１２１７は、電気、電磁気または光の信号を送受信し、これらの信号はさまざまなタイプの情報を表すデジタルデータストリームを伝える。さらに、通信インターフェイス１２１７は、ユニバーサルシリアルバス（ＵＳＢ）インターフェイス、ＰＣＭＣＩＡ（パーソナルコンピュータメモリカード国際協会）インターフェイスなどのような、周辺機器インターフェイスデバイスを含むことができる。
【００７４】
ネットワークリンク１２１９は一般的に１つ以上のネットワークを通して他のデータデバイスに対してデータ通信を提供する。例えば、ネットワークリンク１２１９はローカルネットワーク１２２１を通してホストコンピュータ１２２３への接続を提供し、ローカルネットワーク１２２１はネットワーク１２２５（例えば、ワイドエリアネットワーク（ＷＡＮ）または“インターネット”として現在一般的に言及されているグローバルパケットデータ通信ネットワーク）への接続性、またはサービスプロバイダにより運営されるデータ装置への接続性を有する。ローカルネットワーク１２２１およびネットワーク１２２５はともに電気、電磁気または光の信号を使用して、情報および命令を伝える。さまざまなネットワークを通る信号およびネットワークリンク１２１９上の信号で通信インターフェイス１２１７を通る信号は、情報および命令を伝達する搬送波の例示的な形態である。通信インターフェイス１２１７はコンピュータシステム１２００とデジタルデータを通信する。
【００７５】
コンピュータシステム１２００はネットワーク、ネットワークリンク１２１９および通信インターフェイス１２１７を通して、メッセージを送信し、プログラムを含むデータを受信することができる。インターネットの例では、（示されていない）サーバは、ネットワーク１２２５、ローカルネットワーク１２２１および通信インターフェイス１２１７を通して、本発明の実施形態を実現するアプリケーションプログラムに属する要求されたコードを送信してもよい。プロセッサ１２０３は受信している間に送信されたコードを実行し、および／またはコードを後での実行のために記憶デバイス１２０９または他の不揮発性記憶装置に記憶させてもよい。この方法では、コンピュータシステム１２００は搬送波の形態でアプリケーションコードを得てもよい。
【００７６】
ここで使用されているような用語“コンピュータ読み取り可能な媒体”は、実行のためにプロセッサ１２０３に命令を提供することに関係する任意の媒体に関係する。このような媒体は多くの形態をとることができ、これらに限定されないが、不揮発性媒体、揮発性媒体および送信媒体が含まれる。不揮発性媒体には、例えば記憶デバイス１２０９のような光または磁気ディスクが含まれる。揮発性媒体にはメインメモリ１２０５のような動的メモリが含まれる。送信媒体は、バス１２０１を構成するワイヤを含む、同軸ケーブル、銅線および光ファイバを含む。送信媒体は、無線周波数（ＲＦ）および赤外線（ＩＲ）データ通信中に発生されるもののような、音響、光または電磁気の波の形態もとることができる。コンピュータ読み取り可能な媒体の一般的な形態は、例えばフロッピ（登録商標）ディスク、フレキシブルディスク、ハードディスク、磁気テープ、他の任意の磁気媒体、ＣＤ−ＲＯＭ、ＣＤＲＷ、ＤＶＤ、他の任意の光媒体、パンチカード、紙テープ、光マークシート、穴や他の光学認識可能な表示のパターンを有する他の任意の物理媒体、ＲＡＭ、ＰＲＯＭ、ＥＰＲＯＭ、ＦＬＡＳＨ−ＥＰＲＯＭ、他の任意のメモリチップまたはカートリッジ、搬送波、あるいはコンピュータが読み取ることができる他の任意の媒体を含む。
【００７７】
さまざまな形態のコンピュータ読み取り可能な媒体は実行するためにプロセッサに命令を提供することに関係してもよい。例えば、本発明の少なくとも一部を実行する命令は遠隔コンピュータの磁気ディスク上に最初に記憶されてもよい。このようなシナリオでは、遠隔コンピュータは命令をメインメモリにロードして、その命令をモデムを使用して電話回線を通して送信する。ローカルコンピュータシステムのモデムは電話回線上でデータを受信し、赤外線送信機を使用してデータを赤外線信号に変換し、その赤外線信号を、パーソナルデジタルアシスタンス（ＰＤＡ）およびラップトップのようなポータブルコンピューテングデバイスに送信する。ポータブルコンピューテングデバイス上の赤外線検出器は赤外線信号により運ばれる情報および命令を受信し、データをバス上に置く。バスはそのデータをメインメモリに伝え、プロセッサはこのメインメモリから命令を取り出して実行する。メインメモリにより受信される命令は、オプション的に、プロセッサにより実行される前または後に記憶デバイス上に記憶されてもよい。
【００７８】
このように、本発明のさまざまな実施形態は複数の受信機への低密度パリティチェック（ＬＤＰＣ）コード化信号のブロードキャスト送信をサポートするアプローチを提供する。受信機はＬＤＰＣデコーダを含み、ＬＤＰＣデコーダはＬＤＰＣ信号をデコードして、デコード化信号を出力するとともに、入力信号をエンコードする。入力信号はデコード化信号とすることができ、これにより干渉相殺のために再エンコード化信号を使用する。上記アプローチは受信機中に独立した専用エンコーダを採用することを避ける効果がある。
【００７９】
本発明は多数の実施形態および構成とともに説明したが、本発明はそのように制限されるものではなく、さまざまな変形および均等構成をカバーし、これらも特許請求の範囲の範囲に入る。
【図面の簡単な説明】
【００８０】
【図１】図１は、本発明の実施形態にしたがった、低密度パリティチェック（ＬＤＰＣ）コードを利用するように構成された通信システムの図である。
【図２】図２は、図１のシステムにおける例示的な送信機の図である。
【図３】図３は、図１のシステムにおける例示的な受信機の図である。
【図４】図４は、本発明の実施形態にしたがった、希薄パリティチェック行列の図である。
【図５】図５は、図４の行列のＬＤＰＣコードの２部グラフの図である。
【図６】図６は、本発明の実施形態にしたがった、図３のＬＤＰＣデコーダの動作のフローチャートである。
【図７】図７は、本発明の実施形態にしたがった、ＬＤＰＣデコーダの構成部品の図である。
【図８】図８は、本発明のさまざまな実施形態にしたがった、効率的な並列デコーディングのためにマッピング行列を発生させるプロセッサのフローチャートである。
【図９】図９は、本発明の実施形態にしたがった、並列デコーディングをサポートするためのエッジ値のマッピング行列を記憶するメモリを有するＬＤＰＣデコーダの図である。
【図１０】図１０は、本発明のさまざまな実施形態にしたがった、並列デコーディングに対処する導出マッピング行列を発生させるプロセッサのフローチャートである。
【図１１】図１１は、本発明の実施形態にしたがった、並列デコーディングをサポートするエッジ値の導出マッピング行列を記憶するメモリを有するＬＤＰＣデコーダの図である。
【図１２】図１２は、本発明の実施形態にしたがった、ＬＤＰＣコードのエンコーディングおよびデコーディングのプロセスを実行することができるコンピュータシステムの図である。
【図１】
2005045781.tif 000010
【図２】
2005045781.tif 000011
【図３】
2005045781.tif 000012
【図４】
2005045781.tif 000013
【図５】
2005045781.tif 000014
【図６】
2005045781.tif 000015
【図７】
2005045781.tif 000016
【図８】
2005045781.tif 000017
【図９】
2005045781.tif 000018
【図１０】
2005045781.tif 000019
【図１１】
2005045781.tif 000020
【図１２】
2005045781.tif 000021
【外国語明細書】
2005045781000001.pdf