(57)【要約】【課題】複数の異なる既存及び将来の通信規格の為の符号化又は復号及びシンボル処理機能をサポートするプログラマブルなコーダ／デコーダ（コーデック）の提供。【解決手段】本発明は、複数のコード・タイプ（以下ＣＴ）のうちの１つを使用して符号化されたデータを復号する方法を提供する。該ＣＴの各々は通信規格に対応し、本発明による上記方法は、該データに関連する該ＣＴを識別するステップと、複数のプログラマブルな並列デコーダのうちの１つ又は複数に、識別された該ＣＴに関連するプログラム・コードをロードするステップと、該複数のプログラマブルな並列デコーダに該データを割り当てるステップと、を含み、該プログラマブルな並列デコーダが、該複数のＣＴの各々を使用して符号化されたデータを復号するように再構成可能であり、該割り当てられたプログラマブルな並列デコーダに該データおよび該関連するＣＴを提供するステップを具備する。【選択図】図４
2014209785.tif 000002
【特許請求の範囲】
【請求項１】
複数のコード・タイプのうちの１つを使用して符号化されたデータを復号する方法であって、前記コード・タイプの各々は通信規格に対応し、前記方法が、
前記データに関連する前記コード・タイプを識別するステップと、
複数のプログラマブルな並列デコーダのうちの１つまたは複数に、識別された前記コード・タイプに関連するプログラム・コードをロードするステップと、
前記複数のプログラマブルな並列デコーダに前記データを割り当てるステップと、を含み、前記プログラマブルな並列デコーダが、前記複数のコード・タイプの各々を使用して符号化されたデータを復号するように再構成可能であり、さらに、
前記割り当てられたプログラマブルな並列デコーダに前記データおよび前記関連するコード・タイプを提供するステップを含む、方法。
【請求項２】
前記プログラマブルな並列デコーダのうちの１つまたは複数に制御情報を提供するステップをさらに含む、請求項１に記載の方法。
【請求項３】
前記通信規格に基づいて第１のインタリーバ・テーブルを生成するステップと、
前記第１のインタリーバ・テーブルをＭで割って、Ｍ個のクラスタを有する第２のインタリーバ・テーブルを作成するステップと、を含み、前記第２のインタリーバ・テーブルの各エントリが、インタリーブされたデータのターゲット・デコーダおよびターゲット・アドレスとして前記プログラマブルな並列デコーダのうちの１つを示す、請求項１に記載の方法。
【請求項４】
復号すべきデータを読み出すステップと、
インタリーバ・テーブルにアクセスするステップと、を含み、前記インタリーバ・テーブルの各エントリが、インタリーブされたデータのターゲット・デコーダおよび通信ネットワークのターゲット・アドレスとして前記プログラマブルな並列デコーダのうちの１つを識別し、さらに、
前記通信ネットワークの前記ターゲット・アドレスに前記データを書き込むステップを含む、請求項１に記載の方法。
【請求項５】
前記通信ネットワークが、クロスバー・スイッチおよび１つまたは複数の先入れ先出しバッファのうちの１つまたは複数を備える、請求項４に記載の方法。
【請求項６】
複数のコード・タイプのうちの１つを使用して符号化されたデータを復号する装置であって、前記コード・タイプの各々が通信規格に対応し、前記装置が、
メモリと、
前記メモリに結合された少なくとも１つのプロセッサと、を備え、前記プロセッサが、
前記データに関連する前記コード・タイプを識別し、
複数のプログラマブルな並列デコーダのうちの１つまたは複数に、識別された前記コード・タイプに関連するプログラム・コードをロードし、
前記複数のプログラマブルな並列デコーダに前記データを割り当てるように動作可能であり、前記プログラマブルな並列デコーダが、前記複数のコード・タイプの各々を使用して符号化されたデータを復号するように再構成可能であり、前記プロセッサがさらに、
前記割り当てられたプログラマブルな並列デコーダに前記データおよび前記関連するコード・タイプを提供するように動作可能である、装置。
【請求項７】
前記少なくとも１つのコード・タイプの前記通信規格に基づいて第１のインタリーバ・テーブルを生成し、
前記第１のインタリーバ・テーブルをＭで割って、Ｍ個のクラスタを有する第２のインタリーバ・テーブルを作成するように動作可能であり、前記第２のインタリーバ・テーブルの各エントリが、インタリーブされたデータのターゲット・デコーダおよびターゲット・アドレスとして前記プログラマブルな並列デコーダのうちの１つを示すように更に動作可能である、請求項６に記載の装置。
【請求項８】
復号すべきデータを読み出し、
インタリーバ・テーブルにアクセスするように動作可能であり、前記インタリーバ・テーブルの各エントリが、インタリーブされたデータのターゲット・デコーダおよび通信ネットワークのターゲット・アドレスとして前記プログラマブルな並列デコーダのうちの１つを識別し、
前記通信ネットワークの前記ターゲット・アドレスに前記データを書き込むように更に動作可能である、請求項６に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、一般には、デジタル通信のための誤り訂正符号化技術に関し、より詳細には、畳込みおよびターボ符号など、複数の符号を並列復号およびインタリーブするための技術に関する。
【背景技術】
【０００２】
図１は、典型的なデジタル通信１００のブロック図である。図１に示されるように、デジタル・ソース１１０は、バイナリ・メッセージのシーケンスを生成する。その後、例示的なチャネル・エンコーダ１２０は、順方向誤り訂正符号化方式を使用して、ソース・メッセージの冗長性を増加させ、ソース・メッセージを符号化されたメッセージ（しばしばコードワードと呼ばれる）に変換する。一般に、誤り訂正符号化は、チャネル雑音に対する回復力の向上をもたらす。変調器１３０は、符号化されたメッセージを、チャネル１４０を介した送信に適した信号に変換する。これらの信号は、チャネル１４０に入り、一般にチャネル上の雑音および干渉により破損される。
【０００３】
受信側では、復調器１５０が、チャネル１４０から、雑音のある信号を受信し、受信された信号をシンボルのブロックに変換する。チャネル・デコーダ１６０は、チャネル・エンコーダ１２０によって取り入れられた冗長性を活用して、チャネル１４０によって加えられたどんな誤りをも訂正し、元のメッセージを復元しようと試みる。誤り訂正符号を使用して符号化された信号を復号するための複数の異なる復号技術が提案または示唆されている。
【０００４】
無線通信システムのための誤り訂正符号化技術は、チャネル上の雑音および妨害によって持ち込まれた誤りを訂正できるように、信号が変調される前にデータの畳込みまたはターボ符号化をしばしば用いる。一般に、畳込み符号は、各ｍビットの文字列がｎビットのシンボルに変換され、ｍ／ｎ（ｎはｍ以上）を符号レートとする誤り訂正符号であり、その変換は、ｋを符号の拘束長として、前のｋ個の情報シンボルの関数である。ターボ符号は、シャノンの定理によって課される理論的限界に近づくと言われている別のクラスの誤り訂正符号であり、類似の性能に必要とされる畳込み符号に比べて、復号の複雑さが減少する。
【０００５】
通信装置は、複数の通信規格をサポートする必要性がますます高まっている。たとえば、ＷｉＭＡＸ（Ｗｏｒｌｄｗｉｄｅ  Ｉｎｔｅｒｏｐｅｒａｂｉｌｉｔｙ  ｆｏｒ  Ｍｉｃｒｏｗａｖｅ  Ａｃｃｅｓｓ：マイクロ波アクセスのための世界的相互運用）（ＩＥＥＥ  ８０２．１６無線広帯域規格）、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ：ロング・ターム・エボリューション）（３ＧＰＰ  ４Ｇ技術）、ＵＭＢ（Ｕｌｔｒａ  Ｍｏｂｉｌｅ  Ｂｒｏａｄｂａｎｄ：ウルトラモバイル・ブロードバンド）（ＣＤＭＡ開発グループおよび第３世代パートナーシップ・プロジェクト２）およびＷＣＤＭＡ（Ｗｉｄｅｂａｎｄ  Ｃｏｄｅ  Ｄｉｖｉｓｉｏｎ  Ｍｕｌｔｉｐｌｅ  Ａｃｃｅｓｓ：広帯域符号分割多重接続）通信規格はそれぞれ、１つまたは複数のレートで、少なくとも１つの畳込み符号化技術、および少なくとも１つの畳込みターボ符号化技術（またはその組合せ）のサポートを必要とする。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】ＩＥＥＥ  ８０２．１６  Ｗｉｒｅｌｅｓｓ  Ｂｒｏａｄｂａｎｄ  Ｓｔａｎｄａｒｄ  （ｈｔｔｐ：／／ｓｔａｎｄａｒｄｓ．ｉｅｅｅ．ｏｒｇ／ｇｅｔｉｅｅｅ８０２／ｄｏｗｎｌｏａｄ／８０２．１６−２００４．ｐｄｆ、ｈｔｔｐ：／／ｓｔａｎｄａｒｄｓ．ｉｅｅｅ．ｏｒｇ／ｇｅｔｉｅｅｅ８０２／ｄｏｗｎｌｏａｄ／８０２．１６ｅ−２００５．ｐｄｆ（ＷｉＭＡＸ））
【非特許文献２】３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ  Ｔｅｃｈｎｉｃａｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ（ｈｔｔｐ：／／ｗｗｗ．３ｇｐｐ．ｏｒｇ／ｆｔｐ／Ｓｐｅｃｓ／ａｒｃｈｉｖｅ／３６＿ｓｅｒｉｅｓ／３６．２１２／３６２１２−８１０．ｚｉｐ（ＬＴＥ）、ｈｔｔｐ：／／ｗｗｗ．３ｇｐｐ２．ｏｒｇ／Ｐｕｂｌｉｃ＿ｈｔｍｌ／ｓｐｅｃｓ／Ｃ．Ｓ００８４−００１−０＿ｖ２．０＿０７０９０４．ｐｄｆ（ＵＭＢ））
【非特許文献３】Ｒ．Ｍ．Ｆａｎｏ「Ａ  ｈｅｕｒｉｓｔｉｃ  Ｄｉｓｃｕｓｓｉｏｎ  ｏｆ  Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｄｅｃｏｄｉｎｇ」、１９６３年
【非特許文献４】Ｌ．Ｂａｈｌ他、「Ｏｐｔｉｍａｌ  Ｄｅｃｏｄｉｎｇ  ｏｆ  Ｌｉｎｅａｒ  Ｃｏｄｅｓ  ｆｏｒ  Ｍｉｎｉｍｉｚｉｎｇ  Ｓｙｍｂｏｌ  Ｅｒｒｏｒ  Ｒａｔｅ」（１９７４年３月）
【非特許文献５】Ｓｈｕ  Ｌｉｎ、Ｄａｎｉｅｌ  Ｃｏｓｔｅｌｌｏ、「Ｅｒｒｏｒ  Ｃｏｎｔｒｏｌ  Ｃｏｄｉｎｇ」（第２版、２００４年）
【非特許文献６】ｈｔｔｐ：／／ｗｗｗ．ｃｏｗａｒｅ．ｃｏｍ／
【非特許文献７】ｈｔｔｐ：／／ｗｗｗ．３ｇｐｐ．ｏｒｇ／ｆｔｐ／Ｓｐｅｃｓ／ａｒｃｈｉｖｅ／３６＿ｓｅｒｉｅｓ／３６．２１２／３６２１２−８１０．ｚｉｐ（節５．１．３．２．３）
【発明の概要】
【発明が解決しようとする課題】
【０００７】
したがって、複数の通信規格をサポートできる構成可能またはプログラマブルなデコーダが求められている。複数の異なる既存および将来の通信規格のための符号化または復号（あるいは両方）およびシンボル処理機能をサポートするプログラマブルなコーダ／デコーダ（コーデック）がさらに求められている。
【課題を解決するための手段】
【０００８】
一般に、複数のコード・タイプをプログラマブル復号するための方法および装置が提供される。本発明の一態様によれば、それぞれが通信規格に対応する複数のコード・タイプのうちの１つを使用して符号化されたデータを復号するための方法が提供される。この復号方法は、データに関連するコード・タイプを識別するステップと、複数のプログラマブルな並列デコーダにデータを割り当てるステップであって、プログラマブルな並列デコーダが、複数のコード・タイプのそれぞれを使用して符号化されたデータを復号するように再構成可能である、ステップと、割り当てられたプログラマブルな並列デコーダにデータおよび関連するコード・タイプを提供するステップとを備える。（たとえばローカル・メモリからの）プログラム・コードは、識別されたコード・タイプに基づいてプログラマブル並列デコーダのうちの１つまたは複数にロードすることができる。
【０００９】
本発明の別の態様によれば、少なくとも１つのコード・タイプのデータを復号するＭ個の並列デコーダによって使用する１つまたは複数のインタリーバ・テーブルを生成するための方法が提供される。このインタリーバ・テーブル生成方法は、少なくとも１つのコード・タイプの通信規格に基づいて第１のインタリーバ・テーブルを生成するステップと、第１のインタリーバ・テーブルをＭで割って、Ｍ個のクラスタを有する第２のインタリーバ・テーブルを作成するステップであって、第２のインタリーバ・テーブルの各エントリが、インタリーブされたデータのターゲット・デコーダおよびターゲット・アドレスとしてＭ個の並列デコーダのうちの１つを示す、ステップとを備える。次いで、データは、通信ネットワークを使用して、Ｍ個の並列デコーダ間でインタリーブすることができる。
【００１０】
本発明の別の態様によれば、Ｍ個の並列デコーダ間でデータをインタリーブするための方法が提供される。このインタリーブ方法は、復号すべきデータを読み出すステップと、インタリーバ・テーブルにアクセスするステップであって、インタリーバ・テーブルの各エントリが、インタリーブされたデータのターゲット・デコーダおよび通信ネットワークのターゲット・アドレスとしてＭ個の並列デコーダのうちの１つを識別するステップと、通信ネットワークのターゲット・アドレスにデータを書き込むステップとを備える。通信ネットワークは、たとえばクロスバー・スイッチおよび／あるいは１つまたは複数の先入れ先出しバッファを備えてよい。
【００１１】
本発明についてのより完全な理解、ならびに本発明のさらなる特徴および利点は、以下の詳細な説明および図面を参照することによって得られる。
【図面の簡単な説明】
【００１２】
【図１】典型的なデジタル通信システムのブロック図である。
【図２】畳込み符号を復号する従来のＭＡＰデコーダによって使用される例示的なトレリスの概略ブロック図である。
【図３】ターボ符号を復号する例示的な従来型反復従来型アルゴリズム３００のブロック図である。
【図４】本発明の特徴を組み込むデコーダの概略ブロック図である。
【図５】本発明の特徴を組み込む図４の例示的な計算クラスタの概略ブロック図である。
【図６Ａ】サンプル・インタリーブ・テーブル例を示す図である。
【図６Ｂ】サンプル・インタリーブ・テーブル例を示す図である。
【図６Ｃ】サンプル・インタリーブ・テーブル例を示す図である。
【図６Ｄ】サンプル・インタリーブ・テーブル例を示す図である。
【発明を実施するための形態】
【００１３】
本発明の態様は、複数の通信規格をサポートするプログラマブル・デコーダを提供する。本発明の一態様によれば、図１の従来型チャネル・デコーダ１６０が、複数の符号化技術のためのデコーダ機能を提供するように修正される。例示的な一実施形態では、図１の従来型チャネル・デコーダ１６０は、ＷｉＭＡＸ、ＬＴＥおよびＵＭＢ誤り訂正プロトコルのためのデコーダ機能を提供するように修正される。本発明の別の態様によれば、図１の従来型チャネル・デコーダ１６０は、サポートされた通信規格によって必要とされるパンクチャリングおよびデパンクチャリング、巡回冗長検査（ＣＲＣ：ｃｙｃｌｉｃ  ｒｅｄｕｎｄａｎｃｙ  ｃｈｅｃｋ）生成およびチェック、インタリーブおよびデインタリーブ、ならびに多重化および逆多重化など、複数のシンボル処理機能を実施する。
【００１４】
畳込みおよびターボ符号を使用した符号化技術の一般的な議論については、それぞれが参照により本明細書に組み込まれている、
ｈｔｔｐ：／／ｓｔａｎｄａｒｄｓ．ｉｅｅｅ．ｏｒｇ／ｇｅｔｉｅｅｅ８０２／ｄｏｗｎｌｏａｄ／８０２．１６−２００４．ｐｄｆ、または
ｈｔｔｐ：／／ｓｔａｎｄａｒｄｓ．ｉｅｅｅ．ｏｒｇ／ｇｅｔｉｅｅｅ８０２／ｄｏｗｎｌｏａｄ／８０２．１６ｅ−２００５．ｐｄｆ（ＷｉＭＡＸ）に記載されたＩＥＥＥ  ８０２．１６  Ｗｉｒｅｌｅｓｓ  Ｂｒｏａｄｂａｎｄ  Ｓｔａｎｄａｒｄ、あるいは、
ｈｔｔｐ：／／ｗｗｗ．３ｇｐｐ．ｏｒｇ／ｆｔｐ／Ｓｐｅｃｓ／ａｒｃｈｉｖｅ／３６＿ｓｅｒｉｅｓ／３６．２１２／３６２１２−８１０．ｚｉｐ（ＬＴＥ）、または
ｈｔｔｐ：／／ｗｗｗ．３ｇｐｐ２．ｏｒｇ／Ｐｕｂｌｉｃ＿ｈｔｍｌ／ｓｐｅｃｓ／Ｃ．Ｓ００８４−００１−０＿ｖ２．０＿０７０９０４．ｐｄｆ（ＵＭＢ）に記載された３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ  Ｔｅｃｈｎｉｃａｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎを参照されたい。
【００１５】
本発明の別の態様によれば、複数の畳込みおよびターボ・ライクな符号をサポートするために、複数のプログラマブル「スレッドプロセッサ」が使用される。さらに、処理時間を減少させるために、１つまたは複数の専用のインタリーバ／デインタリーバ・モジュールではなく通信ネットワークが、インタリーブするために使用される。
【００１６】
復号の基本
図１のデコーダ１６０などのデコーダは、フレーム単位にコードワードを処理することができる。それぞれのフレームは、同じコード操作タイプを必要とする複数のコードワードからなる。コードワードは、それらが受信される順序でフレームに追加され、結果が同じ順序で返される。
【００１７】
畳込み符号の復号
畳込み符号の復号のための複数のアルゴリズムが存在する。（ｋを、コードの拘束長として）ｋの比較的小さい値では、ビタビ・アルゴリズムが最尤性能をもたらし、並列実装を可能にするので、ビタビ・アルゴリズムが頻繁に使用される。一般に、より長いコードワードでは、コードワードは、当業者にはよく知られているように、複数の部分に分割して、並列に復号することができる。並列復号は一般に、復号レートの向上のために行われる。一般に、オーバーラッピング・ウィンドウが使用され、コードワードは複数の部分に分割され、複数の復号装置によって並列に復号される。したがって、デコーダは、複数の構成復号装置間で復号タスクを分散する。デコーダは、いくつかのコード・ブロックを受け取り、コード・ブロックを復号装置に割り当てる。復号装置は、復号タスクを並列に実施し、次いで、デコーダは、復号結果を取り出す。
【００１８】
並列復号装置を有するターボ復号システム内で構成復号装置にコード・ブロックを割り当てるための技術の詳細な議論については、参照により本明細書に組み込まれる、米国特許出願第        号、「Ｓｙｓｔｅｍ  ａｎｄ  Ｍｅｔｈｏｄ  ｆｏｒ  Ａｓｓｉｇｎｉｎｇ  Ｃｏｄｅ  Ｂｌｏｃｋｓ  ｔｏ  Ｃｏｎｓｔｉｔｕｅｎｔ  Ｄｅｃｏｄｅｒ  Ｕｎｉｔｓ  ｉｎ  ａ  Ｔｕｒｂｏ  Ｄｅｃｏｄｅｒ  Ｓｙｓｔｅｍ  Ｈａｖｉｎｇ  Ｐａｒａｌｌｅｌ  Ｄｅｃｏｄｉｎｇ  Ｕｎｉｔｓ」（整理番号第０８−０２４０号）を参照されたい。
【００１９】
ｋのより大きい値では、コードは一般に、よく知られているファーノ・アルゴリズムなど、いくつかの知られている逐次復号アルゴリズムのうちの１つを用いて復号される。たとえば、参照により本明細書に組み込まれる、Ｒ．Ｍ．Ｆａｎｏ「Ａ  ｈｅｕｒｉｓｔｉｃ  Ｄｉｓｃｕｓｓｉｏｎ  ｏｆ  Ｐｒｏｂａｂｉｌｉｓｔｉｃ  Ｄｅｃｏｄｉｎｇ」、１９６３年を参照されたい。ビタビ復号と異なり、逐次復号技術は、最尤技術を使用しないが、複雑さは拘束長の長さと共にわずかにしか増加せず、強力な長い拘束長の符号を使用することが可能となる。
【００２０】
ビタビおよび逐次復号アルゴリズムは、硬判定を生成し、最も可能性の高いコードワードを形成するビットを示す。よく知られている軟出力ビタビ・アルゴリズム（ＳＯＹＡ：Ｓｏｆｔ  Ｏｕｔｐｕｔ  Ｖｉｔｅｒｂｉ  Ａｌｇｏｒｉｔｈｍ）を使用することによって、近似信頼度の尺度を各ビットに追加することができる。各ビットの最大事後確率（ＭＡＰ：Ｍａｘｉｍｕｍ  ａ  ｐｏｓｔｅｒｉｏｒｉ）軟判定は、ＢＣＪＲアルゴリズム（Ｂａｈｌ−Ｃｏｃｋｅ−Ｊｅｌｉｎｅｋ−Ｒａｖｉｖ  Ａｌｇｏｒｉｔｈｍ：バール−コックエ−イェリネ−ラビブ・アルゴリズム）の使用によって得ることができる。たとえば、参照により本明細書に組み込まれる、Ｌ．Ｂａｈｌ他、「Ｏｐｔｉｍａｌ  Ｄｅｃｏｄｉｎｇ  ｏｆ  Ｌｉｎｅａｒ  Ｃｏｄｅｓ  ｆｏｒ  Ｍｉｎｉｍｉｚｉｎｇ  Ｓｙｍｂｏｌ  Ｅｒｒｏｒ  Ｒａｔｅ」（１９７４年３月）を参照されたい。
【００２１】
図２は、畳込み符号を復号する従来のＭＡＰデコーダによって使用される例示的なトレリス２００の概略ブロック図である。例示的なトレリス２００は、たとえばＭＡＰデコーダによって使用することができ、このＭＡＰデコーダは、出力Ｌ値を計算するために、知られているやり方で順方向状態メトリック２１０および逆方向状態メトリック２２０を計算する。図２は、ビットｕ０からｕ３など、複数の入力ビットについて、複数のエンコーダ状態ｓ０からｓ３のこうした経路メトリックの計算を示している。
【００２２】
図２に示されるように、ブランチ・メトリックｙｌ（ｓ’，ｓ）は、次式のように計算できる。
【数１】
2014209785.tif 000003
順方向メトリックαｌ（ｓ）は、次式のように計算できる。
【数２】
2014209785.tif 000004
逆方向メトリックβｌ（ｓ’）は、次式のように計算できる。
【数３】
2014209785.tif 000005
出力Ｌ値、Ｌ（ｕｌ）は、次式のように計算できる。
【数４】
2014209785.tif 000006
【００２３】
ターボ符号の復号
図３は、ターボ符号を復号するための例示的な従来型反復従来型アルゴリズム３００のブロック図である。上記に示されたように、ターボ符号は、３Ｇ、４ＧおよびＩＥＥＥ  ８０２．１６など、複数のデータ通信規格で使用される。図３に示された例示的な実施形態では、受信されたコード・ブロックは、３つの部分（ｙ０，ｙ１，ｙ２）に分割される。ベクトル（ｙ０，ｙ１）は、第１のＭＡＰデコーダ３１０に送られる。ＭＡＰデコーダ３１０は、ベクトルＬ１ｏｕｔを生成し、ただし、Ｌｉｏｕｔは、第ｉのデコーダの出力Ｌ値（事後Ｌ値）である。
【００２４】
ベクトルＬ１ｏｕｔは、加算器３２０により、デインタリーバ３４０（下記に論じられる）によって生成されたベクトルＬ１ｉｎに加算されて、ベクトルＬ１ｅｘが生成される。Ｌｉｅｘは、第ｉのデコーダの外部Ｌ値（外部事後Ｌ値）である。Ｌｉｉｎは、第ｉのデコーダの入力Ｌ値である。ベクトルＬ１ｅｘは、インタリーバ３３０に適用される。一般に、インタリーバ３３０は、ベクトル要素の何らかの混合を実施する。インタリーバ３３０の出力は、ベクトルＬ２ｉｎである。ベクトルＬ２ｉｎおよびベクトル（ｙ０，ｙ２）は、第２のＭＡＰデコーダ３８０に適用される。ＭＡＰデコーダ３８０は、ベクトルＬ２ｏｕｔを生成する。ベクトルＬ２ｏｕｔは、加算器３５０により、インタリーバ３３０によって生成されたベクトルＬ２ｉｎに加算されて、ベクトルＬ２ｅｘが生成される。ベクトルＬ２ｅｘは、デインタリーバ３４０に適用される。デインタリーバ３４０は、インタリーバ３３０によって実施された操作と逆の変換を実施する。デインタリーバ３４０の出力は、上記で論じられたベクトルＬ１ｉｎである。ベクトルＬ１ｉｎおよびベクトル（ｙ０，ｙ１）は、第１のＭＡＰデコーダ３１０に適用され、繰り返し継続する。ＭＡＰデコーダ３８０によって生成されたベクトルＬ２ｏｕｔも、ビット判定を生成する第２のデインタリーバ３７０に適用される。この反復プロセスは、固定数繰り返した後に、または何らかの具体的な停止基準が満たされる場合に停止する。
【００２５】
適切な復号アルゴリズム３００のより詳細な議論については、たとえば、参照として本明細書に組み込まれる、Ｓｈｕ  Ｌｉｎ、Ｄａｎｉｅｌ  Ｃｏｓｔｅｌｌｏ、「Ｅｒｒｏｒ  Ｃｏｎｔｒｏｌ  Ｃｏｄｉｎｇ」（第２版、２００４年）を参照されたい。通常、復号アルゴリズム３００は、それぞれ異なるサイズのコード・ブロックを一般にサポートする。たとえば、３ＧＰＰ規格によれば、ソース・メッセージのサイズは、４０ビットから５１１４ビットまで変化し得る。復号アルゴリズム３００は、それぞれ異なるサイズのコード・ブロックからなるデータ・フローを効率的に処理しなければならない。さらに、コード・ブロックを復号するのに必要な総時間は、コード・ブロックのサイズに比例する。デコーダ１６０の内部のランダム・アクセス・メモリの総サイズは、デコーダ１６０がサポートできる最大のコード・ブロックのサイズに比例する。
【００２６】
プログラマブル・デコーダ
図４は、本発明の特徴を組み込むデコーダ４００の概略ブロック図である。図４に示されるように、デコーダ４００は、軟復号エンジン（ＳＤＥ：ｓｏｆｔ  ｄｅｃｏｄｉｎｇ  ｅｎｇｉｎｅ）４１０と、入力先入れ先出し（ＦＩＦＯ）バッファ４２０と、ロード・エンジン４３０と、インタリーバ計算装置４４０と、スレッドプロセッサ４５０と、アップロード・エンジン４６０と、出力ＦＩＦＯバッファ４７０とを備える。さらに、図４に示されるように、軟復号エンジン４１０は、下記に論じられるようにインタリーブするために使用される通信ネットワーク４８０と、図５に関して下記にさらに論じられる複数の計算クラスタ５００−１から５００−Ｎ（本明細書では、まとめて計算クラスタ５００と呼ばれる）とを備える。
【００２７】
軟復号エンジン４１０は、本発明の一態様に従って、ターボ符号、畳込み符号およびＬＤＰＣ符号などの複数の符号を復号する。さらに、軟復号エンジン４１０は、同時に複数のコードワードを同時復号するように構成されてよい。
【００２８】
入力ＦＩＦＯバッファ４２０は、入力ポート４０５からデコーダ４００に入って来るデータを格納する。ロード・エンジン４３０は、ＦＩＦＯ  ４２０から、複数のコードワードの入力データを受け取る。さらに、ロード・エンジン４３０は、接続４３２によりインタリーバ計算装置４４０から、データのインタリーブされたアドレスを読み出し、接続４３５によりスレッドプロセッサ４５０から制御信号を受け取り、通信ネットワーク４８０にデータを送る。スレッドプロセッサ４５０は、たとえばＣｏｗａｒｅプロセッサ（ｈｔｔｐ：／／ｗｗｗ．ｃｏｗａｒｅ．ｃｏｍ／参照）を使用して実装されてよい。
【００２９】
インタリーバ計算装置４４０は、図６Ａから図６Ｄに関連して下記にさらに論じられる、宛先アドレスを含む１つまたは複数のインタリーバ・テーブル６００を生成し、この宛先アドレスは、計算クラスタ５００によって、後半の反復のためのデータを書き込むのに使用される。
【００３０】
上記に示されたように、スレッドプロセッサ４５０は、プログラム・メモリのコンテンツに基づいて、計算クラスタ５００内の復号アルゴリズムのためのコマンドの流れを生成する。スレッドプロセッサ４５０は、ポート４０５上で受け取られるデータと共に、入力ポート４４５からの制御情報を受け取る。制御情報は、データを符号化するために使用された通信規格を定義するヘッダと構成データとを備える。たとえば、制御情報は、コードのタイプ（コード・タイプ識別子）、フレーム内のコードワードの数およびコードワードの長さを指定してよい。下記に論じられるように、スレッドプロセッサ４５０は、通信ネットワーク４８０を介して計算クラスタ５００に適切な情報を提供する。スレッドプロセッサ４５０は、新しいコード・タイプを復号する必要があると決定する場合、コード・タイプ識別子を伴うパラメータを計算クラスタ５００に送る。図５に関連して下記にさらに論じられるように、計算クラスタ５００は、コード・タイプ識別子に基づいてコードワードを復号するために、必要に応じて適切なプログラム・コードをロードする。
【００３１】
入力ＦＩＦＯバッファ４２０は、入力ポート４０５からデコーダ４００に入って来るデータを格納する。アップロード・エンジン４６０は、通信ネットワーク４８０から、復号されたデータを受け取り、出力ＦＩＦＯバッファ４７０にそれを適用する。
【００３２】
通信ネットワーク４８０は、スレッドプロセッサ４５０と計算クラスタ５００など、コンポーネント間の任意の構成可能な接続を提供する。例示的な一実施形態では、通信ネットワーク４８０は、クロスバー・スイッチまたはＦＩＦＯとして実装することができる。通信ネットワーク４８０の操作については、下記の「並列インタリービング」という題の節でさらに論じられる。
【００３３】
図５は、本発明の特徴を組み込む例示的な計算クラスタ５００の概略ブロック図である。上記に示されたように、複数の計算クラスタ５００は、データを並列に復号する。図５に示されるように、例示的な計算クラスタ５００は、スレッドプロセッサ５１０と、データ・メモリ５２０と、演算装置５３０と、メモリ・コントローラ５４０とを備える。
【００３４】
上記に示されたように、図４のスレッドプロセッサ４５０は、通信ネットワーク４８０を介して計算クラスタ５００に適切な制御情報を提供する。スレッドプロセッサ４５０は、新しいコード・タイプを復号する必要があると決定する場合、コード・タイプ識別子５００を伴うパラメータを計算クラスタ５００に送る。コード・タイプ識別子に基づいて計算クラスタ５００内のスレッドプロセッサ５１０は、必要に応じて、コード・タイプ識別子に基づいてコードワードを復号するためにデータ・メモリ５２０から（メモリ・コントローラ５４０を介して）適切なプログラム・コードをロードする。スレッドプロセッサ５１０によって実施される復号操作については、下記の「並列インタリービング」という題の節においてさらに論じられる。一般に、読出しはローカルであり、書込みは、インタリーバ・テーブル７００に従って実施される。データ・メモリ５２０は、複数の異なる通信規格に関連するコードワードを復号するための複数のプログラムを格納する。
【００３５】
スレッドプロセッサ５１０は、プログラムを解釈し、プログラムに従って演算装置５３０に命令を提供する。一般に、ＬＴＥなどの識別された通信規格に基づいて各クラスタ５００内のスレッドプロセッサ５１０に、データ・メモリ５２０から適切なプログラム・コード、ならびにインタリーバ・テーブル７００、および識別された規格についての他のパラメータ（たとえば示されたコードワード・サイズに基づく）がロードされる。その後、計算クラスタ５００は、同じ規格で符号化されたすべての受け取られたコードワードを復号することができる。
【００３６】
並列復号
図３に関連して上記に論じられたように、復号プロセスは一般に、反復プロセスである。本発明の例示的な実施形態では、並列に動作する４つの計算クラスタ５００があり、計算クラスタ５００は、各反復中に２組の操作を実施する。前半の反復（図３のデコーダ１）の間、計算クラスタ５００は、データのそれ自体のローカル・ポート（たとえば、たとえばデータ・メモリ５２０からの受信ベクトル）およびＬ１ｉｎ（図３参照）を読み出し、次節で下記にさらに論じられるように、インタリーバ・テーブル７００（テーブル３）からデータ・クラスタのターゲット・アドレスを取得する。その後、計算クラスタ５００は、示されたターゲット・アドレスを使用して通信ネットワーク４８０にデータを書き込むことによって、本発明に従ってデータをインタリーブする。このようにして、データは、計算クラスタ５００によって復号され、通信ネットワーク４８０に送られるが、計算クラスタ５００によってローカルには格納されない。データは、ターゲット・アドレスに送られ、後半の反復まで必要とされない。
【００３７】
後半の反復（図３のデコーダ２）の間、計算クラスタ５００は、データのそれ自体のローカル・ポート（たとえば、たとえばデータ・メモリ５２０からの受信ベクトル）およびＬ２ｉｎ（図３参照）を読み出し、次節で下記にさらに論じられるように、インタリーバ・テーブル７００（テーブル４）からデータ・クラスタのターゲット・アドレスを取得する。その後、計算クラスタ５００は、示されたターゲット・アドレスを使用して通信ネットワーク４８０にデータを書き込むことによって、本発明に従ってデータをデインタリーブする。
【００３８】
通信ネットワーク使用した並列インタリービング
図６Ａから６Ｄは、４つのインタリービング・テーブル例６００を示している。図６Ａおよび図６Ｂは、コードワード・サイズ、Ｋ＝２４８を有するＬＴＥターボ符号用の従来型インタリーバおよびデインタリーバ・テーブルを示している。図６Ａおよび図６Ｂのテーブルは、対応する規格文書に基づいて生成される。例示的なテーブルは、「ｈｔｔｐ：／／ｗｗｗ．３ｇｐｐ．ｏｒｇ／ｆｔｐ／Ｓｐｅｃｓ／ａｒｃｈｉｖｅ／３６＿ｓｅｒｉｅｓ／３６．２１２／３６２１２−８１０．ｚｉｐ」の節５．１．３．２．３に指定されたアルゴリズムを使用して生成された。パラメータｆ１およびｆ２は、ブロック・サイズＫに依存し、ＬＴＥ規格文書のテーブル５．１．３−３に要約されている。
【００３９】
この例では、コードワード・サイズＫｉは２４８であり、したがって、規格文書からのテーブル５．１．３−３は、パラメータｆ１＝３３およびｆ２＝６２であると指定している。これらの値を使用して、図６Ａのインタリーバ・テーブルおよび図６Ｂのデインタリーバ・テーブルが埋められる。したがって、インタリーバ・テーブル６００の入力インデックスｉおよび出力インデックスｊは、次式を満たす。
ｉ＝（３３＊ｊ＋６２＊ｊ２）ｍｏｄ  ２４８
【００４０】
図６Ａの例示的なインタリーバ・テーブル（テーブル１）には２つの列がある。第１の列は、入力データのインデックスである。第２の列は、出力（インタリーブされた）データのインデックスである。たとえば、図６Ａのテーブルの第１の２つの列は下記である。
０  ０
１  １７１
【００４１】
この表記は、インタリービング（すなわち、本発明による通信ネットワーク４８０への書込み）の後、第０のデータ・ワードはインデックス０にとどまり、第１の（１ｓｔ）データ・ワードはインデックス１７１に行くことを示している。
【００４２】
同様に、「逆インタリーバ・テーブル」としばしば呼ばれる図６Ｂの例示的なデインタリーバ・テーブ（テーブル２）は、図６Ａのインタリーバ・テーブルの逆のコピーである。たとえば、インタリーバ・テーブル（図６Ａ）の第１の行（行２）は、「１  １７１」である。したがって、第２のテーブルの第１７１の行は「１７１  １」である。この表記は、デインタリービング（すなわち、本発明による通信ネットワーク４８０への書込み）の後、第１７１のデータ・ワードがインデックス１に書き込まれることを示している。上記に示されたように、本発明の実施形態は、複数の畳込みおよびターボ・ライクな符号をサポートするために、複数の並列プログラマブル・スレッドプロセッサ５１０を使用する。例示的な実施形態では、Ｍ＝４の並行計算クラスタ５００がある。さらに、通信ネットワーク４８０は、並列スッドプロセッサ５１０によって実施された復号プロセスをインタリーブするために使用される。
【００４３】
図６Ｃおよび図６Ｄは、コードワード・サイズ、Ｋ＝２４８、およびＭ＝４の並列デコーダ実装を有するＬＴＥターボ符号用のインタリーバおよびデインタリーバ・テーブルを示している。一般に、図６Ｃおよび図６Ｄのインタリーバおよびデインタリーバ・テーブルは、図６Ａおよび図６Ｂの元のテーブルをＭ（４に等しい）で割って４つのクラスタを作成することによって生成される。このように、図６Ｃおよび図６Ｄのインタリーバおよびデインタリーバ・テーブルによって、並列復号実装のためにインタリーバ・プロセスを分割することが可能となる。
【００４４】
図６Ｃで、フォーマットは、｛＜ターゲット・クラスタ・インデックス＞＜ターゲット・メモリ・アドレス＞｝である。したがって、図６Ｃの表記では、第１のエントリ６２０は、図６Ａの第１のエントリに対応し、第０のデータ・ワードがクラスタ０のインデックス０にとどまることを再び示している。同様に、第２のエントリ６２５は、第１のワード（行１に対応）がクラスタ２のインデックス４３（ｍｏｄ  ６４操作では図６Ａからの「１  １７１」の第２のエントリに対応する）に行くことを示している。
【００４５】
同様に、「４つの計算クラスタ用の逆インタリーバ・テーブル」としばしば呼ばれる図６Ｄの例示的なデインタリーバ（テーブル４）は、図６Ｃのインタリーバ・テーブルの逆コピーである。一般に、図６Ｄのデインタリーバ・テーブルは、知られているやり方で元の位置にデータを返す。
【００４６】
機能復号モード
デコーダ４００（図４）は一般に、機能モードに入る前に初期化しなければならない。初期化手順の間、デコーダ４００は、知られているやり方で、その規則的な操作を行うようにプログラムされる。一般に、初期化手順の間、スレッドプロセッサ５１０（図５）には、通信規格に適したプログラム、ならびに機能モードの間に復号されるデータがロードされる。ブート・データが入力ＦＩＦＯ  ４２０への到着を開始し継続する間、デコーダ初期化部は、データを読み出し、選択されたスレッドプロセッサ５１０にロードする。ブート・プロセスが終了されるとき、デコーダは、そのステータス・レジスタを事前定義された値に設定し、次いで、受信されたフレームの処理を開始する準備を整える。
【００４７】
機能モードにおいて、外部のブロックは一般に、デコーダにデータ・フレームを送り、処理の終了を求めて状態レジスタを監視する。結果は、準備が整うときに外部に取り出され、新しいフレームをデコーダに送ることができる。
【００４８】
上記に示されたように、フレームは、同じ復号操作タイプを有する複数のコードワードからなる。新しいフレームの準備が整ったことを示すために、１つのクロック・サイクルの間に１つまたは複数のフラグを設定することができる。その後、デコーダ４００は、フレーム内のあらゆるコードワードに関するデータが後に続いている１組のヘッダを受け取ることを期待する。
【００４９】
例示的な一実施形態では、デコーダ４００に送られる第１のヘッダは、フレーム・タイトル・ヘッダ（たとえば、操作タイプ（フォーマット）およびフレーム内のコードワードの数を示す）である。その後、デコーダは、フレーム内の各コードワードにつき１つのヘッダを伴う、ヘッダの一群を受け取る。
【００５０】
例示的なフレーム・コードワード・ヘッダは、以下を示す。
【表１】
2014209785.tif 000007
【００５１】
コードワード・ヘッダの後、復号エンジン内のすべてのスレッドプロセッサ５１０についてのスレッドプロセッサ・パラメータを含むヘッダが送られてよい。まず、各スレッドプロセッサ５１０がこれから処理するコードワードの数を指定するのに必要な数のサイクルの間に、タイトル・ヘッダが送られてよい。
【００５２】
例示的なスレッドプロセッサ・タイトル・ヘッダは、以下を示す。
【表２】
2014209785.tif 000008
【００５３】
次いで、各スレッドプロセッサ・コードワードにつき１つのヘッダが送られる。
【表３】
2014209785.tif 000009
【００５４】
すべてのヘッダが受け取られた後、デコーダ４００は、ヘッダ内の情報に従ってコードワード・データを受け取る。例示的な実施形態では、軟値はデータの８ビットを要し、したがって、１つのクロック・サイクルでせいぜい１６個の軟値を受け取ることが可能であると仮定する。完全なフレームが復号された後、デコーダは、状態レジスタの値を「ＤＯＮＥ」などの事前定義された値に設定し、データは、出力ＦＩＦＯ  ４７０から得ることができる。
【００５５】
結論
本発明の例示的な実施形態についてデジタル論理ブロックに関して述べられたが、当業者には明らかなように、様々な機能が、ソフトウェア・プログラム内で、回路素子またはステート・マシンによりハードウェア内で、あるいはソフトウェアとハードウェアの両方の組合せで、デジタル領域内で処理ステップとして実装され得る。こうしたソフトウェアは、たとえばデジタル信号プロセッサ、マイクロコントローラ、または汎用コンピュータで使用されてよい。こうしたハードウェアおよびソフトウェアは、集積回路内で実装された回路内で実施することができる。
【００５６】
したがって、本発明の諸機能は、それらの方法を実施するための方法および装置の形で実施することができる。本発明の１つまたは複数の態様は、たとえば記憶媒体内に格納されようが、マシンによってロードされかつ／または実行されようが、何らかの伝送媒体を介して送信されようがプログラム・コードの形で実施することができ、プログラム・コードがロードされ、コンピュータなどのマシンによって実行されるとき、マシンは、本発明を実施するための装置になる。汎用プロセッサ上で実装される場合、プログラム・コード・セグメントは、プロセッサと結合して、特定の論理回路と同じように動作する装置を提供する。本発明は、集積回路、デジタル信号プロセッサ、マイクロプロセッサおよびマイクロコントローラのうちの１つまたは複数で実施することもできる。
【００５７】
複数の同一のダイが一般に、ウエハの表面上で繰り返されたパターンで形成される。それぞれのダイは、本明細書に述べられた装置を含み、他の構造または回路を含み得る。個々のダイは、ウエハから切り取られ、またはさいの目に切られ、次いで、集積回路としてパッケージ化される。集積回路を生成するためにウエハをダイスに切り、ダイをパッケージ化するやり方が当業者には理解されよう。そのように製造された集積回路は、本発明の一部とみなされる。
【００５８】
本明細書に示され述べられた諸実施形態および変形形態は、本発明の諸原理を例示するものにすぎず、本発明の範囲および精神から逸脱せずに様々な修正が当業者によって実施され得ることを理解されたい。
【図１】
2014209785.tif 000010
【図２】
2014209785.tif 000011
【図３】
2014209785.tif 000012
【図４】
2014209785.tif 000013
【図５】
2014209785.tif 000014
【図６Ａ】
2014209785.tif 000015
【図６Ｂ】
2014209785.tif 000016
【図６Ｃ】
2014209785.tif 000017
【図６Ｄ】
2014209785.tif 000018