(57)【要約】  複数の状態を有する有限状態機械として表し得るプロセスにより得られる受信信号から情報を抽出する方法、装置及びシステムであり、状態間の遷移を複数の時刻インデックスにわたるトレリスを使用して表すことができ、受信信号を考慮してブランチメトリックを計算するステップと、各時刻インデックスの状態メトリックを、ブランチメトリックを考慮しパイプラインプロセスを使用して計算するステップであって、パイプラインプロセスを使用して第１の時刻インデックスの状態メトリックを計算し、パイプラインプロセスを使用して一以上の非隣接時刻インデックスの状態メトリックを計算し、パイプラインプロセスを使用して隣接時刻インデックスの状態メトリックを計算するステップと、トレリス中の少なくとも一つの選択経路に関連する状態の状態メトリックを考慮して少なくとも一つの出力を生成するステップと、を含む。【選択図】  図５
2009532952.tif 000002
【特許請求の範囲】
【請求項１】
複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出する方法であって、前記状態の間の遷移を、複数の時刻インデックスにわたるトレリスを使用して表すことができ、前記トレリスが、各時刻インデックスにおいて前記複数の状態を含んでおり、
一つの状態から別の状態への遷移に対応するブランチメトリックを、前記受信信号を考慮して計算するステップと、
各時刻インデックスにおける状態に対応する状態メトリックを、前記ブランチメトリックを考慮し、且つ、パイプライン化されたプロセスを使用することによって、計算するステップであって、前記パイプライン化されたプロセスを使用して、第１の時刻インデックスにおける状態メトリックを計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第１の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、前記第１の時刻インデックスにおける状態に対応する状態メトリックの前記計算の結果を使用せずに計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第１の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、前記第１の時刻インデックスにおける状態メトリックの前記計算の結果を使用して計算する、該ステップと、
前記トレリスの中の少なくとも一つの選択された経路に関連付けられている状態の状態メトリックを考慮することによって、少なくとも一つの出力を生成するステップと、
を含む方法。
【請求項２】
前記トレリスを複数のセクションに分割することができ、各セクションが、より少ない数の複数の時刻インデックスにわたっており、
前記第１の時刻インデックスが、前記トレリスの第１のセクションからの時刻インデックスであり、
前記一以上の非隣接時刻インデックスが、前記トレリスの一以上の別のセクションからの時刻インデックスであり、
前記隣接時刻インデックスが、前記トレリスの前記第１のセクションからの別の時刻インデックスである、
請求項１に記載の方法。
【請求項３】
前記パイプライン化されたプロセスが、前記トレリスの複数の異なるセクションからの時刻インデックスにおける状態メトリックをラウンドロビン方式にて計算するよう、使用される、請求項２に記載の方法。
【請求項４】
前記パイプライン化されたプロセスがＮ個のステージを備えており、Ｎが正の整数であり、
前記トレリスがＭ個のセクションに分割されており、ＭがＮに等しい正の整数である、
請求項２に記載の方法。
【請求項５】
前記パイプライン化されたプロセスがＮ個のステージを備えており、Ｎが正の整数であり、
前記トレリスがＭ個のセクションに分割されており、ＭがＮよりも大きい正の整数である、
請求項２に記載の方法。
【請求項６】
ＭがＮの倍数である、請求項５に記載の方法。
【請求項７】
前記状態メトリックの計算が、順方向状態メトリックの計算を含んでいる、請求項１に記載の方法。
【請求項８】
前記状態メトリックの計算が、逆方向状態メトリックの計算を含んでいる、請求項１に記載の方法。
【請求項９】
前記パイプライン化されたプロセスが、少なくとも一つの加算−比較−選択（ＡＣＳ）演算を実行するように構成されている、請求項１に記載の方法。
【請求項１０】
前記パイプライン化されたプロセスが、ゲートロジックを使用してハードウェアにて実施されている、請求項１に記載の方法。
【請求項１１】
前記ゲートロジックが、特定用途向け集積回路（ＡＳＩＣ）設計の一部である、請求項１０に記載の方法。
【請求項１２】
前記ゲートロジックが、超大規模集積回路（ＶＬＳＩ）設計の一部である、請求項１０に記載の方法。
【請求項１３】
前記ゲートロジックが、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）設計の一部である、請求項１０に記載の方法。
【請求項１４】
前記ブランチメトリックの計算が、パイプライン化されたプロセスを使用して実行される、請求項１に記載の方法。
【請求項１５】
前記少なくとも一つの出力を生成する前記ステップが、パイプライン化されたプロセスを使用して実行される、請求項１に記載の方法。
【請求項１６】
複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出する装置であって、前記状態の間の遷移を、複数の時刻インデックスにわたるトレリスを使用して表すことができ、前記トレリスが、各時刻インデックスにおいて前記複数の状態を含んでおり、
一つの状態から別の状態への遷移に対応するブランチメトリックを、前記受信信号を考慮して計算することができるブランチメトリックユニットと、
各時刻インデックスにおける状態に対応する状態メトリックを、前記ブランチメトリックを考慮して計算することができるパイプライン化された状態更新ユニットであって、第１の時刻インデックスにおける状態メトリックを計算することができ、次いで、前記第１の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、前記第１の時刻インデックスにおける状態に対応する状態メトリックの前記計算の結果を使用せずに計算することができ、次いで、前記第１の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、前記第１の時刻インデックスにおける状態メトリックの前記計算の結果を使用して計算することができる、該パイプライン化された状態更新ユニットと、
前記トレリスの中の少なくとも一つの選択された経路に関連付けられている状態の状態メトリックを考慮することによって、少なくとも一つの出力を生成することができる出力ユニットと、
を備える装置。
【請求項１７】
前記トレリスを複数のセクションに分割することができ、各セクションが、より少ない数の複数の時刻インデックスにわたっており、
前記第１の時刻インデックスが、前記トレリスの第１のセクションからの時刻インデックスであり、
前記一以上の非隣接時刻インデックスが、前記トレリスの一以上の別のセクションからの時刻インデックスであり、
前記隣接時刻インデックスが、前記トレリスの前記第１のセクションからの別の時刻インデックスである
請求項１６に記載の装置。
【請求項１８】
前記パイプライン化された状態更新ユニットが、前記トレリスの複数の異なるセクションからの時刻インデックスにおける状態メトリックをラウンドロビン方式にて計算するよう、使用される、請求項１７に記載の装置。
【請求項１９】
前記パイプライン化された状態更新ユニットがＮ個のステージを備えており、Ｎが正の整数であり、
前記トレリスがＭ個のセクションに分割されており、ＭがＮに等しい正の整数である、
請求項１７に記載の装置。
【請求項２０】
前記パイプライン化された状態更新ユニットがＮ個のステージを備えており、Ｎが正の整数であり、
前記トレリスがＭ個のセクションに分割されており、ＭがＮより大きい正の整数である、
請求項１７に記載の装置。
【請求項２１】
ＭがＮの倍数である、請求項２０に記載の装置。
【請求項２２】
前記状態メトリックの計算が、順方向状態メトリックの計算を含んでいる、請求項１６に記載の装置。
【請求項２３】
前記状態メトリックの計算が、逆方向状態メトリックの計算を含んでいる、請求項１６に記載の装置。
【請求項２４】
前記パイプライン化された状態更新ユニットが、少なくとも一つの加算−比較−選択（ＡＣＳ）演算を実行するように構成されている、請求項１６に記載の装置。
【請求項２５】
前記パイプライン化された状態更新ユニットが、ゲートロジックを使用してハードウェアにて実施されている、請求項１６に記載の装置。
【請求項２６】
前記ゲートロジックが、特定用途向け集積回路（ＡＳＩＣ）設計の一部である、請求項２５に記載の装置。
【請求項２７】
前記ゲートロジックが、超大規模集積回路（ＶＬＳＩ）設計の一部である、請求項２５に記載の装置。
【請求項２８】
前記ゲートロジックが、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）設計の一部である、請求項２５に記載の装置。
【請求項２９】
前記ブランチメトリックユニットがパイプライン化されている、請求項１６に記載の装置。
【請求項３０】
前記出力ユニットがパイプライン化されている、請求項１６に記載の装置。
【請求項３１】
複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出するシステムであって、前記状態の間の遷移を、複数の時刻インデックスにわたるトレリスを使用して表すことができ、前記トレリスが、各時刻インデックスにおいて前記複数の状態を含んでおり、
一つの状態から別の状態への遷移に対応するブランチメトリックを、前記受信信号を考慮して計算する手段と、
各時刻インデックスにおける状態に対応する状態メトリックを、前記ブランチメトリックを考慮し、且つ、パイプライン化されたプロセスを使用することによって、計算する手段であって、前記パイプライン化されたプロセスを使用して、第１の時刻インデックスにおける状態メトリックを計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第１の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、前記第１の時刻インデックスにおける状態に対応する状態メトリックの前記計算の結果を使用せずに計算し、次いで、前記パイプライン化されたプロセスを使用して、前記第１の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、前記第１の時刻インデックスにおける状態メトリックの前記計算の結果を使用して計算する、該手段と、
前記トレリスの中の少なくとも一つの選択された経路に関連付けられている状態の状態メトリックを考慮することによって、少なくとも一つの出力を生成する手段と、
を備えるシステム。
【発明の詳細な説明】
【発明の背景】
【０００１】
[0001]ノイズのあるチャネルを通じてデータを送信すると、データストリームに誤りが発生し得る。送信系列における誤りの量を減少させるために、また、再送を回避するために、系列中の誤りを検出して訂正する能力を提供する符号化手法が開発されている。この能力は、通常、送信の一部として冗長な情報を加えることによって達成される。ここで、「送信」との用語は、様々なタイプの媒体を通じたデータの伝送を含むように、広義に使用される。媒体としては、通信媒体（例えば、有線技術、無線技術、衛星技術、及びその他の技術において使用される通信媒体）を含めることができる。更に、媒体として、記憶媒体（例えば、磁気メモリ、半導体メモリ、及びその他のタイプのメモリ）を含めることができる。
【０００２】
[0002]最も普及している強力な符号化手法の幾つかは、畳み込み符号を、単独で、又は、並列連接畳み込み符号（ＰＣＣＣ又はターボ）、直列連接畳み込み符号（ＳＣＣＣ）、及びその他のターボライク符号（ＴＬＣ）のような複数の符号を含むより複雑な構成で、使用する。通常の畳み込み符号とＴＬＣとでは、パフォーマンス、構造、及び復号手法の点で大幅に異なるが、それぞれの復号器は、幾つかの共通の特徴を備えている。
【０００３】
[0003]畳み込み符号を復号するために使用される復号構造は、トレリス処理に基づいている。トレリスとは、時間軸に沿って展開された符号化器の状態機械の状態を表したものである。トレリスは、時間軸に沿った畳み込み符号化器の有限状態機械の状態を、受信信号から得られる情報に基づいて推定するために使用される。
【０００４】
[0004]特殊な場合として、単一パリティチェック符号に基づく符号を同じカテゴリに分類することもできる。これは、そのような符号も、トレリスベースの構造を使用して復号することができるからである。パリティチェックの状態機械は、畳み込み符号の２状態の状態機械とみなすことができ、ここでは、パリティビットがこの符号の終端処理ビットである。従って、長さＫの単一パリティチェック符号は、長さＫ＋１の終端２状態再帰的畳み込み符号とみなして、復号することができる。
【０００５】
[0005]畳み込み符号の場合にトレリスを復号するための従来のアルゴリズムでは、トレリスの中をその先頭から最後まで一度に１段階ずつ処理しながら、プロセスにおける状態メトリックを更新していく。状態メトリックは、受信器で集められた受信系列の観察値から計算されるブランチメトリック（分岐メトリック）を使用して更新される。従って、トレリスに沿った経路の各々には、その系列が送信された尤度に対応するコストが関連付けられる。次に、復号器は、復号系列について「硬」判定、即ち、ビタビアルゴリズムとして知られているプロセスを行い、或いは、特定の値を想定して、送信されたビットの尤度に対応する軟メトリックを生成する（軟出力ビタビアルゴリズム、即ち、ＳＯＶＡとして知られているプロセス）。
【０００６】
[0006]ＴＬＣの場合には、前向き（順方向）・後向き（逆方向）アルゴリズム（Ｆｏｒｗａｒｄ−Ｂａｃｋｗａｒｄ  Ａｌｇｏｒｉｔｈｍ）として知られている従来の復号アルゴリズムによって、トレリスを両方向に処理して、ビタビアルゴリズムと同じように状態メトリックを更新する。次に、二つの経路からの状態メトリックを、ブランチメトリックと共に使用して、トレリスに沿った対象の各ビットに対して軟出力を生成する。このプロセスを実行するモジュールは、軟入力軟出力モジュール、即ち、ＳＩＳＯモジュールと呼ばれる。ＴＬＣの場合には、符号化器での各畳み込み符号に対応するそのような一つのＳＩＳＯモジュールが存在し、各ＳＩＳＯが別のＳＩＳＯにデータを渡し、何らかの基準が満たされるまでプロセスを繰り返し、基準が満たされた時点で「硬」判定を行う。このような基準は、例えば、反復の最大回数に達したこと、解への収束が達成されたこと等とすることができる。
【０００７】
[0007]トレリスベースの処理における問題は、その再帰性である。ビタビ復号器及びＳＩＳＯモジュールのいずれの場合にも、処理における重要な手順は、状態更新プロセスである。トレリスの中の各段階の処理は、前の段階（逆方向に処理する場合には次の段階）において生成された値に依存する。このデータの依存性は、前の段階の処理が行われるまで次の段階を処理することができないことを意味する。基本的な方法においては、このデータの依存性はまた、トレリス全体を同じプロセッサによって連続的に処理しなければならないことも意味する。
【０００８】
[0008]設計者がトレリスを複数のセクション（例えば、ウィンドウ、タイル）に分割し、従って、プロセスを並列に処理することのできる小さなブロックに分けることのできる幾つかの手法が開発されている。基本的なコンセプトは、Ｖｉｔｅｒｂｉ氏に発行された米国特許第５，９３３，４６２号明細書に記載されている。サイズＫのブロック全体を復号する代わりに、米国特許第５，９３３，４６２号明細書には、メモリ必要量を減少させるのではなくサイズＬのウィンドウを単位として復号するアルゴリズムが記載されている。このコンセプトは、順方向にも拡張することができ、サイズＫのトレリスセクションのブロックをより小さいサイズＬの独立したセクションに分割するように使用することができる。
【０００９】
[0009]しかしながら、この方法では、データの依存性の問題が解決されず、トレリスプロセッサの現在のハードウェア実装は、再帰的な状態更新計算の最大実行速度に制限される。設計者は、このプロセスを高速化しようとするとき、要求される速度を達成するために、トレリスの複数の異なるセクションに対して複数の状態更新ユニットを並列に使用することがしばしばある。しかしながら、このような方法には本質的な欠点がある。第一に、トレリスの複数の異なるセクションに対する並列の状態更新ユニットは、膨大な同時メモリアクセスを必要とする傾向があり、即ち、アクセスが衝突しないことを保証する目的で、メモリ幅が極めて広くなり、幾つかの制約が課される。更には、トレリスを処理するエンジンに要求されるロジックの量が、使用する並列ユニットの数に伴って線形的に増大する。
【００１０】
[0010]従って、トレリスベースのより効率的な復号手法が、依然として強く求められている。特に、再帰的演算を伴うことのある状態更新の計算を実行するステップにおいて求められている。
【発明の概要】
【００１１】
[0011]本発明は、複数の状態を有する有限状態機械として表すことのできるプロセスによって得られる受信信号から情報を抽出する方法、装置、及びシステムであって、状態の間の遷移を、複数の時刻インデックス（ｔｉｍｅ  ｉｎｄｅｘ）にわたるトレリスを使用して表すことができ、トレリスが、各時刻インデックスにおいて複数の状態を含んでいる、方法、装置、及びシステムに関する。本方法、本装置、及び本システムは、一つの状態から別の状態への遷移に対応するブランチメトリックを、受信信号を考慮して計算するステップと、各時刻インデックスにおける状態に対応する状態メトリックを、ブランチメトリックを考慮し、パイプライン化されたプロセスを使用することによって、計算するステップであって、パイプライン化されたプロセスを使用して、第１の時刻インデックスにおける状態メトリックを計算し、次いで、パイプライン化されたプロセスを使用して、第１の時刻インデックスに隣接していない一以上の非隣接時刻インデックスにおける状態メトリックを、第１の時刻インデックスにおける状態に対応する状態メトリックの計算の結果を使用せずに計算し、次いで、パイプライン化されたプロセスを使用して、第１の時刻インデックスに隣接している隣接時刻インデックスにおける状態メトリックを、第１の時刻インデックスにおける状態メトリックの計算の結果を使用して計算する、当該ステップと、トレリスの中の少なくとも一つの選択された経路に関連付けられている状態に対する状態メトリックを考慮することによって、少なくとも一つの出力を生成するステップと、を含む。
【００１２】
[0012]トレリスを複数のセクションに分割することができ、各セクションは、より少ない数の複数の時刻インデックスにわたっており、第１の時刻インデックスが、トレリスの第１のセクションからの時刻インデックスであり、一以上の非隣接時刻インデックスが、トレリスの一以上の別のセクションからの時刻インデックスであり、隣接時刻インデックスが、トレリスの第１のセクションからの別の時刻インデックスである。このようにして、パイプライン化されたプロセスを使用して、トレリスの複数の異なるセクションからの時刻インデックスにおける状態メトリックをラウンドロビン方式にて計算することができる。
【００１３】
[0013]一実施形態によれば、パイプライン化されたプロセスはＮ個のステージ（Ｎは正の整数）を備えており、トレリスはＭ個のセクション（ＭはＮに等しい正の整数）に分割されている。別の実施形態によれば、Ｍは、Ｎよりも大きい正の整数であり且つＮの倍数である。
【００１４】
[0014]状態メトリックの計算は、順方向（前向き）状態メトリック及び／又は逆方向（後ろ向き）状態メトリックの計算を含み得る。一実施形態においては、パイプライン化されたプロセスは、少なくとも一つの加算−比較−選択（ＡＣＳ）演算を実行するように構成されている。
【００１５】
[0015]パイプライン化されたプロセスは、ゲートロジック（ｇａｔｅｄ  ｌｏｇｉｃ）を使用したハードウェアで実施することができ、このゲートロジックは、特定用途向け集積回路（ＡＳＩＣ）設計、超大規模集積回路（ＶＬＳＩ）設計、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）設計、及び／又は、その他の設計のうちの一部とすることができる。
【００１６】
[0016]更に、ブランチメトリックの計算と少なくとも一つの出力の生成を、パイプライン化されたプロセスを使用して実行することができる。
【００１７】
[0017]本発明の様々な実施形態によれば、ウィンドウ処理及び／又はタイリングを用いる手法を、パイプライン化された状態更新ユニットと、インターレーススケジューリングアルゴリズムと組み合わせて、トレリスベースの計算の処理速度を向上させることができる。これにより、複数の状態更新ユニットの代わりに一つの状態更新ユニットを使用することができる。重要な点として、トレリスベースの計算を、状態更新値の再帰性に関連する小さな制約下で実行することができる。恩恵として、ハードウェア実装における回路面積が大幅に減少する。更には、メモリアクセス特性が大きく向上する。
【発明の詳細な説明】
【００１８】
Ｉ．システムの説明
[0026]図１は、畳み込み符号化器１４を採用したデジタル通信システム１０を示している。畳み込み符号化器１４は、前述したように、単独の畳み込み符号、又は、ＰＣＣＣ符号、ＳＣＣＣ符号、及びその他のターボライク符号のような複数の符号を含むより複雑な構造を採用し得るものである。符号化器１４は、有限状態機械（ＦＳＭ）としてモデル化することのできる多くのプロセスのうちの一つの例である。別のこのようなプロセスとしては、それらに限定されるものではないが、別のタイプの符号に基づく符号化器、準容量マルチユーザ検出（ｎｅａｒ−ｃａｐａｃｉｔｙ  ｍｕｌｔｉ−ｕｓｅｒ  ｄｅｔｅｃｔｉｏｎ）、準最適２次元データ検出（ｎｅａｒ−  ｏｐｔｉｍａｌ  ｔｗｏ−ｄｉｍｅｎｓｉｏｎａｌ  ｄａｔａ  ｄｅｔｅｃｔｉｏｎ）、フェージングチャネル、シンボル間干渉（ＩＳＩ）チャネルが挙げられる。
【００１９】
[0027]以下、図１を参照する。デジタル通信システム１０は、シンボルの閉集合（ｃｌｏｓｅｄ  ｓｅｔ）で定義されるシンボルを提供するデータ源１２を含んでいる。例えば、バイナリのシンボルの閉集合を使用する場合、シンボルは｛０，１｝から選択される。データ源１２からのシンボルは符号化器１４に転送され、この符号化器１４が、当該符号化器１４の構造に従って、シンボルを符号化シンボルに変換する。次いで、符号化シンボルがチャネル１６を通じて送られて受信信号が生成される。このチャネル１６は、符号化シンボルに加法性白色ガウスノイズ（ＡＷＧＮ）のようなノイズ及び歪みを加えることがある。受信信号に関連する軟情報が復号器１８に送られる。復号器１８は、シンボルに関する軟情報を出力し、この情報を閾値処理して、硬判定復号シンボルを生成することができる。
【００２０】
[0028]図１に示したデジタル通信システムは、基本的な機能の説明上の例を提供する機能ブロック図である。別の機能を追加してもよく、一以上の機能を省いてもよい。更に、本明細書に説明する革新的な方法の用途は、この特定のブロック図に限定されない。同様に、以下に説明する他のブロック図は、単に説明上の例であり、本明細書に説明する方法の用途を制限するものではない。
【００２１】
[0029]図２は、畳み込み符号化、ＩＳＩ干渉、及びその他のようなプロセスをモデル化するＦＳＭを記述したトレリスのセクションを示している。一般的には、ＦＳＭは、Ｐ個の状態Ｓ＝｛Ｓ１，Ｓ２，．．．，ＳＰ｝を有する。状態の数Ｐは、ＦＳＭのメモリ長の関数である。時刻ｋにおけるＦＳＭの状態は、ｓｋ＝Ｓｉ∈Ｓである。
【００２２】
[0030]一つの状態から別の状態への遷移のそれぞれは、ｎ個の入力とｍ個の出力を伴う。
【００２３】
[0031]一つの状態Ｓｋ（遷移元状態ｋ）から別の状態Ｓｌ（遷移先状態ｌ）へのトレリス遷移は、ＦＳＭへの入力シンボルｂｉ（ｉ＝１．．ｎ）によって確定的に駆動される。入力シンボルｂｉは、データ源（例えば、データ源１２）によって提供することができる。従って、各状態遷移は、入力シンボル及び出力シンボルそれぞれの値と、開始状態及び遷移先状態との組合せによって特徴付けられる。
【００２４】
[0032]各入力シンボルｂｉは、Ｍ要素のシンボルの閉集合（Ｍ−ａｒｙ  ｃｌｏｓｅｄ  ｓｅｔ  ｏｆ  ｓｙｍｂｏｌｓ）から取り出される。以下の段落では、説明を容易にするために、ｂｉが２要素のシンボルの閉集合｛０，１｝から取り出されるものと想定する。即ち、入力シンボルｂｉはバイナリ（ビット）であるものと想定する。同様に、ＦＳＭからの出力シンボルｃｊ（ｊ＝１．．ｍ）も、バイナリ（ビット）であるものと想定する。
【００２５】
[0033]図２に示した具体的な例は、四つの状態を有する（Ｐ＝４）ＦＳＭであり、各状態遷移が、一つの入力ビットｂｉ（ｎ＝１）と一つの出力ビットｃｊ（ｍ＝１）とを伴う。遷移先状態ｌは、遷移元状態ｋと入力ビットｂｉ（この場合にはただ一つの入力ビットｂｉ）とによって決まる。従って、各遷移元状態は、二つの候補の遷移先状態に遷移することができる。また、各遷移先状態は、二つの候補の遷移元状態から遷移することができる。出力ビットｃｊ（この場合にはただ一つの出力ビットｃｊ）は、遷移元状態ｋから遷移先状態ｌへの状態遷移によって決まる。図２に提示したＰ、ｎ、及びｍの具体的な値は、単に説明を目的としたものである。これらの値は、実施する符号に応じて変化しうる。
【００２６】
ＩＩ．復号におけるメトリックの計算
[0034]復号器（例えば、復号器１８）によって実行される復号は、ブランチメトリックと状態メトリックとを伴い得る。このようなメトリックは、送信における特定の時点での符号化器のＦＳＭが特定の状態にあるか、又は特定の状態から別の特定の状態に遷移している尤度が関連付けられている。これらのメトリックは、受信信号からの事後確率を使用して、トレリスに沿って処理することによって計算される。
【００２７】
[0035]具体的には、ブランチメトリックは、一つの状態から別の状態への遷移に関連する確率に関するものである。本技術分野において公知であるように、ブランチメトリックは、通常、受信信号を考慮することによって計算される。従って、受信信号が与えられると、トレリスに沿った各ブランチの事後確率は、その特定のブランチに沿った全てのビットの既知の確率によって形成することができる。このような事後確率を表す値を、ブランチメトリックとみなす。
【００２８】
[0036]状態メトリックは、特定の状態にあることに関連する確率に関するものである。状態メトリックは、一般的には、トレリスに沿った状態それぞれの確率を、初期状態から開始して一度に一つの時刻インデックスを処理しながら計算することにより、ブランチメトリックを使用して計算される。各状態について得られる確率は、状態メトリックとしても知られており、符号化器のＦＳＭが特定の時刻において特定の状態にある確率を、トレリスの先頭からその時点までの受け取った確率又はブランチメトリックを前提として、表している。
【００２９】
[0037]一般的には、ブランチメトリック及び状態メトリックは、特定の入力シンボル、及び／又は、出力シンボが特定の値をとる尤度に関連する何らかの信頼性測度（ｒｅｌｉａｂｉｌｉｔｙ  ｍｅａｓｕｒｅ）に基づいて定義される。本技術分野において公知であるように、使用可能な数多くのタイプの信頼性測度が存在する。説明を容易にするため、ここでは、正規化対数尤度メトリック（ｎｏｒｍａｌｉｚｅｄ  ｌｏｇ−ｌｉｋｅｌｉｈｏｏｄ  ｍｅｔｒｉｃｓ）として知られているタイプの信頼性測度を採用する。それ以外のタイプの信頼性測度も周知であり、使用することができる。異なるタイプの信頼性測度の間の関係は、この分野において十分に理解されたものである。従って、本明細書に説明する手法は、別のタイプの信頼性測度に容易に拡張することができる。
【００３０】
[0038]ここでは、正規化対数尤度メトリックを、各シンボルｚｋについて定義する。当該シンボルｚｋは、入力シンボルｂｉ又は出力シンボルｃｊのいずれかである。この場合も説明を容易にするため、本明細書においては、入力シンボル又は出力シンボルのそれぞれを、バイナリ（ビット）として説明する。正規化対数尤度メトリックは、軟入力（ＳＩ）及び軟出力（ＳＯ）といった軟信頼性測度を含んでいる。以下では、最初に軟入力ＳＩについて説明する。
【００３１】
[0039]あるビットを表す軟入力メトリックＳＩは、そのビットが１である確率の対数から、そのビットが０である確率の対数を減じたものとして定義することができる。この定義では、１の尤度を表す値が必ず符号付きの数量になり、０の尤度が常に０に等しくなる。この表現は極めて実用的である。なぜならば、各ビットを表すのに必要なビットが一つのみであるためである。数学的には、この定義は、任意のビットｚｋに対して以下の式として表すことができる。
【数１】
2009532952.tif 000003
【００３２】
ＩＩＩ．ｍｉｎ−ｓｕｍアルゴリズム
[0040]図３は、本発明の実施形態に係る復号器１８の更なる詳細を示すブロック図である。この図に示したように、復号器１８は、ブランチメトリックユニット３０２と、状態更新ユニット３０４と、出力ユニット３０６と、を含んでいる。これらは、この図においては個別のユニットとして示してあるが、個別に実装しても、或いは、統合形態として実装してもよい。
【００３３】
[0041]トレリス処理の最初のステップは、ブランチメトリックユニット３０２によって実行される。ブランチメトリックユニット３０２は、トレリスセクションそれぞれのブランチメトリックを計算する。本明細書における表記法を使用する場合、二つの状態の間での遷移についてのブランチメトリックは、その特定のブランチにおいて対応するビットが値１をとる、全てのビットｂｉ及びｃｊの軟入力メトリックＳＩの和に等しい。従って、時刻ｔでの、状態ｋから開始し状態ｌで終わるトレリスにおけるブランチメトリックＢＭｔｋ，ｌは、以下のように定義することができる。
【数２】
2009532952.tif 000004
【００３４】
[0042]明らかに、プロセスのこの部分は、一組の加算を含んでいるに過ぎず、データの依存性が存在しない。従って、フィードフォワード型のデータパスとして実施することができ、トレリス処理の次のステップ（状態更新演算）と少なくとも同じ速度であるよう必要なだけ細かく、容易にパイプライン化することができる。
【００３５】
[0043]トレリスベース処理の２番目のステップは、状態更新ユニット３０４によって実行される。状態更新ユニット３０４は、各トレリスセクションの状態メトリックを計算する。これを「状態更新」演算とも称する。状態メトリックは、一般には再帰的に定義される。即ち、遷移先状態の状態メトリックは、遷移先状態に至る一以上の遷移元状態の状態メトリックの関数として定義することができる。以下では、このような再帰的計算について更に詳しく説明する。
【００３６】
[0044]ここで、状態メトリックの計算は、ｍｉｎ−ｓｕｍ処理アルゴリズムを使用して実行される。しかしながら、当業者には理解されるように、本発明の教示内容は、ｍａｘ−ｐｒｏｄｕｃｔアルゴリズム、ｓｕｍ−ｐｒｏｄｕｃｔアルゴリズム、ｍｉｎ＊−ｓｕｍアルゴリズム、ｍａｘ＊−ｓｕｍアルゴリズム（又はこれらの近似のいずれか）といった別のアルゴリズムを選択する場合にも適用することができる。これら演算の組の全ては類似する特性を共有している。なぜならば、これらの演算は、いずれも、状態メトリック及びブランチメトリックの計算に使用される確率のセットを有する半環（ｓｅｍｉｒｉｎｇ）を定義する一対の演算であるからである。
【００３７】
[0045]この技術分野において公知であるように、状態メトリックは、順方向状態メトリックと逆方向状態メトリックとを含み得る。本発明の実施形態によれば、時刻ｔにおける順方向状態メトリックは、Ｆｔｋ（ｋ＝１．．Ｐ、ｔ＝０．．Ｋ）として定義される。時刻ｔにおける逆方向状態メトリックは、Ｂｔｋ（ｋ＝１．．Ｐ、ｔ＝０．．Ｋ）として定義される。ここで、ｎは、各状態遷移に関連する入力の数であり、ｍは、各状態遷移に関連する出力の数である。ＰはＦＳＭの状態の数であり、Ｋは復号する符号語の長さ又はブロックのサイズである。
【００３８】
[0046]順方向状態メトリック及び逆方向状態メトリックの使用は、実施されている復号器のタイプに応じて変わり得る。例えば、復号器が、一般にはターボライク符号（ＴＬＣ）を復号するのに使用される軟入力軟出力（ＳＩＳＯ）モジュールを備えている場合には、順方向状態メトリック及び逆方向状態メトリックの双方を計算することができる。復号器が基本ビタビ復号器である場合には、順方向状態メトリックのみを計算する必要がある。以下では、順方向状態更新演算と、逆方向状態更新演算の双方について説明する。
【００３９】
[0047]  ｍｉｎ−ｓｕｍアルゴリズムによれば、状態更新演算は、遷移先状態に至る全ての遷移について、対応するブランチメトリックを遷移元状態の状態メトリックに加算し、全ての候補の和のうち最小値に、遷移先状態の状態メトリックを設定する。同様に、この処理ステップの等式は、次のように書くことができる。なお、順方向及び逆方向のいずれの場合にも、この演算は、状態ｋと状態ｌとの間の全ての有効な遷移について定義される。
【数３】
2009532952.tif 000005
【数４】
2009532952.tif 000006
【００４０】
[0048]以下では、単なる一例として、順方向状態メトリックの一つの例示的な計算について説明する。再び図２を参照する。時刻インデックスｔ＋１において特定の遷移先状態ｌ（状態「Ｃ」）に遷移し得る時刻インデックスｔの遷移元状態ｋの候補は、二つ存在する（状態「Ａ」及び状態「Ｂ」）。時刻インデックスｔ及び時刻インデックスｔ＋１は、隣接する時刻インデックスの例である。従って、時刻ｔ＋１における遷移先状態「Ｃ」に関連する順方向状態メトリックＦｌｔ＋１の計算は、二つの和の比較に基づく。第１の和は、第１の候補の遷移元状態「Ａ」に関連する時刻ｔの順方向状態メトリックＦｔｋと、状態「Ａ」から状態「Ｃ」への遷移に関連する時刻ｔのブランチメトリックＢＭｔｋ，ｌとの和である。第２の和は、第２の候補の遷移元状態「Ｂ」に関連する時刻ｔの順方向状態メトリックＦｔｋと、状態「Ｂ」から状態「Ｃ」への遷移に関連する時刻ｔのブランチメトリックＢＭｔｋ，ｌとの和である。二つの和のうちの小さい方（又は、三つ以上の遷移元状態が遷移先状態に遷移し得る場合には、三つ以上の和のグループにおける最小値）を、遷移先状態「Ｃ」の時刻ｔ＋１における新しい順方向メトリックＦｌｔ＋１として選択する。
【００４１】
[0049]このように、時刻インデックスｔ＋１のそれぞれにおいて、全ての状態について順方向状態メトリックが計算される。この計算は、前の時刻インデックスｔの状態の順方向状態メトリックと、該当するブランチメトリックとに基づく。これらの順方向状態メトリックの計算は、図２の場合には左から右へ移動しながら、時刻インデックスそれぞれにおいて繰り返される。従って、順方向状態メトリックは、順方向に再帰的に計算されると言い表される。
【００４２】
[0050]逆方向状態メトリックの計算は、同様の方式で、ただし反対方向に実行することができる。従って、時刻インデックスｔのそれぞれにおいて、全ての状態について逆方向状態メトリックが計算される。この計算は、次の時刻インデックスｔ＋１の状態の逆方向状態メトリックと、該当するブランチメトリックとに基づく。これらの逆方向状態メトリックの計算は、図２の場合には右から左へ移動しながら、時刻インデックスそれぞれにおいて繰り返される。従って、逆方向状態メトリックは、逆方向に再帰的に計算されると言い表される。
【００４３】
[0051]明らかに、トレリス処理のこの部分（状態メトリックの計算、即ち「状態更新」）は、このプロセスが再帰的であるため、データの依存性を含んでいる。従来の設計において、処理のこの部分がトレリス処理のボトルネックであるとみなされるのは、このためである。
【００４４】
[0052]トレリスベースの処理の第３のステップは、出力ユニット３０６において実行される。このステップは、ビタビ復号器とターボ復号器とで異なる。即ち、復号器１８はビタビ復号器であってもよい。この場合、システムは、単にトレリスの中でトレースバックを実行して、最も可能性の高い経路を報告し、その報告から、送信されたビット列として最も可能性の高いビット列を導く。従って、このステップは、「硬」判定を行うアルゴリズムである。或いは、復号器１８はターボ復号器であってもよい。本技術分野において周知であるように、このようなターボ復号器は、複数の軟入力軟出力（ＳＩＳＯ）モジュールを備え得る。ユニット３０２、ユニット３０４、及びユニット３０６は、一つ（又は複数）のこれらＳＩＳＯモジュール内のコンポーネントである。この場合、硬判定ではなく軟出力が計算され、従って、システムは、解に収束するまで複数の異なるＳＩＳＯモジュールの間で反復することができる。
【００４５】
[0053]軟出力（ＳＯ）の計算は、状態更新ユニット３０４によって実行された処理の第２のステップにおいて計算された状態メトリックと、ブランチメトリックユニット３０２によって実行された処理の第１のステップにおいて計算されたブランチメトリックとに基づく。このプロセスは、軟出力計算又は完了演算としても知られている。任意のビットｚｉ（ｚｉはＦＳＭへの入力ビット又は出力ビットのいずれかとすることができる）に対する軟出力の計算を記述する式は、次のとおりである。
【数５】
2009532952.tif 000007
【００４６】
[0054]出力ユニット３０６の演算は、ビタビ復号器におけるトレースバックアルゴリズムと、ターボ復号器のＳＩＳＯモジュールにおける完了演算のいずれの場合にも、データの依存性が存在しないプロセスである。従って、この演算は、ハードウェア実装において、状態更新演算の速度と同じ又は上回るために必要なだけ細かくパイプライン化することのできるフィードフォワードデータパスを用いて実施することもできる。
【００４７】
ＩＩＩ．復号におけるタイリング及びウィンドウ処理
[0055]図４は、本発明の一実施形態による、復号を個別に実行することのできる複数のセクション４０２，４０４，及び４０６へのトレリス４００の分割を示している。トレリス４００は、番号１〜９が付されている９個の時刻インデックスにわたるように示してある。各時刻インデックスにおいて、トレリス４００は、四つの可能な状態「Ａ」、「Ｂ」、「Ｃ」、及び「Ｄ」、を含んでいる。ここでは、トレリス４００は三つの（Ｍ＝３）セクション４０２、４０４、及び４０６に分割されている。セクション４０２は、時刻インデックス１〜３にわたっており、セクション４０４は、時刻インデックス４〜６にわたっており、セクション４０６は、時刻インデックス７〜９にわたっている。図４に示した状態及び時刻インデックスの具体的な数は、説明が明瞭になるように単純なものにしてある。実施形態によっては、より多くの状態及びより多くの時刻インデックスを含め得る。
【００４８】
[0056]トレリス４００を複数の異なるセクションに編成することにより、より効率的な処理を促進することができる。図３までの説明では、データブロック全体をトレリス処理エンジンによって連続的に処理しなければならないことを暗黙的に想定してきた。しかしながら、トレリスの複数の部分を切り離し、これらを個別に（例えば並列に）処理することを可能にする手法が開発されている。タイリング及びウィンドウ処理のコンセプトは、設計者の間で極めて頻繁に使用され、非常に普及した二つの用語である。
【００４９】
[0057]いずれのコンセプトも、同じ論理的背景に基づいており、これらのコンセプトは、用途に応じて、個別に使用し、或いは、同時に使用することができる。タイリングのコンセプトは、ビタビ復号器とＳＩＳＯ設計とに適用することができるのに対し、ウィンドウ処理のコンセプトは、主としてＳＩＳＯモジュールに関連付けられる。
【００５０】
[0058]タイリングは、トレリスのセクションを切り離してこれらを並列に処理するために、ブロックをより小さい断片に分割することに関する。例えば、並列のＭ個のユニットが要求される特定のスループットを達成しようとする場合、ブロックを、等しい長さのＭ個のタイルに分割して（可能な場合）、タイルのそれぞれを異なるプロセッサにおいて処理する。
【００５１】
[0059]一方、ウィンドウ処理は、メモリ及び遅延を低減する手法とみなされており、一つの処理エンジンにおいても採用される。目的は、格納しなければならない逆方向状態メトリックが少なくなり、軟出力の計算を早期に開始することができるように、逆方向再帰（ｂａｃｋｗａｒｄ  ｒｅｃｕｒｓｉｏｎ）の長さを、トレリスの全長にわたるのではなくウィンドウのみを範囲とするように低減することである。この解決策は、必要であれば順方向再帰に適用することができるが、適用しても同程度の効果が得られないため、めったに使用されることはない。
【００５２】
[0060]トレリスに沿った特定量のノードが処理された後には、メトリックは、たとえ開始点がトレリスの先頭ではない場合であっても、対象の点より前の長さＬが十分であれば、信頼することのできる状態メトリックに収束する傾向にある。十分な長さＬとは、通常、符号化器のＦＳＭにおけるメモリ素子の量の５〜７倍である。この原則は、順方向再帰及び逆方向再帰に容易に適用することができる。極めて一般的な方法では、トレリスを、等しい長さＬのセグメントに分割する。順方向再帰においては、トレリスの全長にわたり通常の方式にて順方向に処理する。逆方向再帰は、長さが２Ｌであるセグメントを対象として実行する。第１の（最初の）Ｌの要素は、逆方向再帰をトレーニング又は「準備する（ｗａｒｍ  ｕｐ）」ために使用され、第２のＬの要素は、軟出力を生成するためにＳＩＳＯによって使用される。この場合、逆方向再帰における最大レイテンシは２Ｌであり、逆方向メトリックに必要な最大メモリ量はＬである。一般に、逆方向においては、順方向プロセッサに遅れないように、二つのプロセッサを交互に使用する。
【００５３】
[0061]このコンセプトは、反復的な復号プロセスにおいて使用されるＳＩＳＯ設計に適用することができる。したがって、この実行アルゴリズムになし得る更なる改良が存在する。前の反復からの状態メトリックは、長さＬのウィンドウの間での開始メトリックとして使用することができる。即ち、もはやトレーニングが必要なく、ただちに復号に使用することのできる長さＬに対して逆方向再帰を実行するのみでよい。これにより、更なる係数Ｌだけ遅延が低減し、更に、第２の逆方向プロセッサの必要性がなくなる。なぜならば、逆方向再帰が順方向プロセッサと同じ速度で処理することができるからである。この改良は、タイルが使用される場合にも適用することができる。
【００５４】
ＩＶ．状態更新演算のパイプライン化
[0062]図５は、本発明の実施形態に係るパイプライン化された状態更新ユニット３０４の詳細を示している。ここで、パイプライン化された状態更新ユニット３０４は、四つの個別のパイプライン化された加算−比較−選択（ＡＣＳ）ユニット５０２，５０４，５０６，及び５０８を備えており、これらのユニットは、並列に動作して、トレリスの各時刻インデックスにおける異なる状態の状態メトリックを計算する。
【００５５】
[0063]例えば、再び図４を参照すると、四つの状態メトリック、即ち、トレリス４００の時刻インデックス「１」における状態「Ａ」〜状態「Ｄ」それぞれに対して一つの状態メトリックの計算を、パイプライン化されたＡＳＣユニット５０２，５０４，５０６，及び５０８を並列に動作させることよって達成することができる。パイプライン化されたＡＳＣユニット５０２は、状態「Ａ」の状態メトリックを計算する。パイプライン化されたＡＳＣユニット５０４は、状態「Ｂ」の状態メトリックを計算する。パイプライン化されたＡＳＣユニット５０６は、状態「Ｃ」の状態メトリックを計算する。パイプライン化されたＡＳＣユニット５０８は、状態「Ｄ」の状態メトリックを計算する。このように、一つの時刻インデックス（例えば「１」）における複数の状態メトリックの計算を実行することができる。
【００５６】
[0064]複数の時刻インデックスにわたる状態メトリックの計算のパイプライン化は、スケジューリングを伴い得る。ここでは、一つの時刻インデックスにおける状態メトリックを計算するうえで、別の時刻インデックスにおける状態メトリックの計算の結果が要求されるので、パイプライン化は単純なタスクではない。本発明の実施形態によれば、複数の異なる時刻インデックスにおける状態メトリックの計算をスケジューリングするシステムを採用して、そのようなデータの依存性が適切に管理されるようにする。パイプライン化された状態メトリック計算のスケジューリングについては、後に更に詳しく説明する。
【００５７】
[0065]パイプライン化されたＡＣＳユニット５０２，５０４，５０６，及び５０８の動作は似ているので、以下では、パイプライン化されたＡＣＳユニット５０２についてのみ具体的に説明する。それ以外のパイプライン化されたＡＣＳユニット５０４，５０６，及び５０８は、同じように動作する。
【００５８】
[0066]本発明のこの実施形態においては、パイプライン化されたＡＣＳユニット５０２は三つのステージ５２１，５２２，及び５２３に編成されている。即ち、このＡＣＳユニットは、３ステージのパイプライン（Ｎ＝３）を備えている。機能ユニットを複数の状態のパイプラインに編成することによって、その機能ユニットは、類似する一連の計算をより効率的に処理することができる。従って、パイプライン化されたＡＣＳユニット５０２は、ＡＣＳの計算を、三つの個別のステージ、即ち、状態５２１によって実行される「加算」と、ステージ５２２によって実行される「比較」と、ステージ５２３によって実行される「選択」とに分けることができる。このようにして、パイプライン化されたＡＣＳユニットは、三つの異なる状態メトリックの計算の処理を同時に実行することができる。例えば、以下の演算（１）〜（３）を同時に行うことができる。（１）ステージ５２３が、ある状態メトリックの計算における「選択」演算を実行する、（２）ステージ５２２が、別の状態メトリックの計算における「比較」演算を実行する、（３）ステージ５２１が、更に別の状態メトリックの計算における「加算」演算を実行する。パイプライン化されていない場合、これら状態メトリックの各計算は、ユニットに入った時点からユニットを出るまで、ＡＣＳユニット全体を占有する。例えば、状態メトリックの計算において「選択」ステージを使用しているとき、他の二つのステージ「加算」及び「比較」は、使用されることなくアイドル状態のままである。従って、パイプライン化することによって、ＡＣＳユニット５０２の効率が大幅に向上する。
【００５９】
[0067]図６〜図８は、異なる数のステージに編成されたＡＣＳユニットの様々な例を示している。この場合にも同様に、説明を目的として、トレリスを処理するのにｍｉｎ−ｓｕｍアルゴリズムを使用することを想定する。説明を単純にするため、２状態のバイナリ符号を示してある。しかしながら、この技術分野における通常の技能を有する者には理解されるように、より複雑な符号を採用することもできる。更に、これら三つの図のそれぞれにおいては、一つのみのＡＣＳユニットを示してあるが、状態更新ユニットにおいて、複数のそのようなＡＣＳユニット（状態それぞれに一つのＡＣＳユニット）を並列に使用することができることを理解されたい。このようなＡＣＳユニットは並列に動作するので、より多くの状態を有するバイナリ符号は、ＡＣＳユニットの複数のインスタンスを備えるにすぎない。符号がバイナリではない場合、ＡＣＳユニットのそれぞれがより多くの比較を実行することができるように（バイナリ符号では一つのみのロジックが必要である）、ＡＣＳユニットそれぞれにロジックを追加することができる。
【００６０】
[0068]図６は、一つのみのステージに編成されている（Ｎ＝１）ＡＣＳユニットのブロック図を示している。このＡＣＳは、特定の時刻インデックスにおけるトレリスでの複数の状態のうち一つの状態の状態メトリックを計算する。この例では、符号がバイナリであるので、特定の状態に至る経路が二つ存在する。従って、ＡＣＳユニットは、最初に、二つの和を形成し、各和は、元の状態の状態メトリックを、対応する遷移のブランチメトリックに加算することによって計算される。次いで、得られたメトリックを互いに比較し、小さい方のメトリックを、現在の状態の状態メトリックとして選択する。この演算は、数学的には式（３）として表現される。番号「１」が付されたボックスは、このＡＣＳユニットにおける一つのステージを特定している。元の状態メトリックは、このアルゴリズムの以前の再帰時に計算される。既存のシステムが、一般にはパイプライン化することなくＡＣＳ演算全体を一つのステージ（Ｎ＝１）において実行する理由は、計算におけるこの再帰性である。状態更新演算においてパイプライン化を使用することができないことにより、復号器の回路全体のパフォーマンスは制限されている。
【００６１】
[0069]図７は、三つのステージに編成されている（Ｎ＝３）ＡＣＳユニットのブロック図を示している。図示したように、加算−比較−選択プロセスは、演算をより小さい断片に分割するための周知の方式を使用して、三つの状態にパイプライン化されている。図７においては、図６に示したものと同じＡＣＳ演算が、三つのパイプライン化されたステージに分割されている。番号「１」が付されたボックスは第１のステージを特定しており、番号「２」が付されたボックスは第２のステージを特定しており、番号「３」が付されたボックスは第３のステージを特定している。ＡＣＳユニットを三つのステージに編成することによって、前述したように状態更新演算をパイプライン化することができる。例えば、図７は、図５に示した３ステージのＡＣＳユニット５０２，５０４，５０６，及び５０８のそれぞれの実施形態となり得る。
【００６２】
[0070]図８は、六つのステージに編成されている（Ｎ＝６）ＡＣＳユニットのブロック図を示している。ここでは、処理される状態メトリックは８ビット値である。２ビット加算器をもつ三つのグループが使用されている。各グループは、「桁上げ」ラインによって互いに結合された四つの２ビット加算器によって構成されている。この場合にも、ＡＳＣユニットは、最初に二つの和を形成し、各和は、元の状態の状態メトリックを、対応する遷移のブランチメトリックに加算することによって計算される。第１のグループの２ビット加算器が、二つの和のうちの一方を計算する。第２のグループの２ビット加算器が、二つの和のうちの他方を計算する。次いで、得られた二つのメトリックを互いに比較する。この比較は、第３のグループの２ビット加算器が、減算演算を行うことによって（即ち、第１の値を第２の値の負値に加算することによって）実行する。図８に示したように、２ビット加算器のグループのそれぞれは、より細かい実行ステージに更に分割されており、これにより、ＡＣＳユニットのステージの総数が増している。最終的に、マルチプレクサ（ＭＵＸ）が選択演算を実行して、得られた二つのメトリックのうちの小さい方を、現在の状態の状態メトリックとして選択する。図８に示したように、ＡＣＳ演算は六つのステージに編成されている。番号「１」〜「６」が付されたボックスは、これらのステージを特定している。
【００６３】
[0071]図６〜図８に示したステージの数は、ＡＣＳ演算を達成するために必要なサイクルの数に影響する。例えば、各ステージが完了するのに１サイクルを必要とする場合、必要なサイクルの数は、ステージの数に等しい。望ましい速度及びアーキテクチャに応じて、状態更新ユニット（例えば、ＡＣＳユニット）を任意の数のステージに分割することができる。状態更新演算の全ての実施形態（例えば、ｍｉｎ＊−ｓｕｍ、ｍａｘ−ｐｒｏｄｕｃｔ、ｓｕｍ−ｐｒｏｄｕｃｔ）は、本発明の様々な実施形態に従ってパイプライン化することができる。
【００６４】
Ｖ．パイプライン化された状態更新ユニットのスケジューリング
[0072]前述したように、一つの時刻インデックスにおける状態メトリックを計算するうえで、別の時刻インデックスにおける状態メトリックの計算の結果が要求されることがあるので、パイプライン化は単純には実施することができない。本発明の実施形態によれば、複数の異なる時刻インデックスにおける状態メトリックの計算をスケジューリングするシステムを採用して、そのようなデータの依存性が適切に管理されるようにする。
【００６５】
[0073]一般的に言えば、状態更新演算がＮ個のステージに分割されている場合、状態更新演算の結果は、Ｎサイクル後に利用することができ（各ステージが１サイクルにて実行されると想定している）、それまでは次の状態メトリックの計算に進むことができない。本発明の実施形態によれば、空の時間スロットを埋めるために、トレリスの別のセクションからの状態に対して状態更新演算を実行する。
【００６６】
[0074]ここで、状態更新演算がＮステージのパイプライン（Ｎ＞１）として設計されているものと想定すると、トレリスによって表されるデータブロックをＭ個のセクション、即ちＭ個のサブブロックに分割することができる。好ましい一実施形態では、ＭはＮに等しい。別の好ましい実施形態では、サブブロックの数がＮより大きい場合、ＭはＮの整数倍数である。この場合、複数の異なるサブブロックからの状態の状態更新を、状態更新ユニットをその最大速度において使用して、パイプライン化された回路において順に処理することができる。Ｎサイクルの後、第１のサブブロックの次の状態メトリックが生成される。これら状態メトリックは、その特定のサブブロックに対応する第２のセットのブランチメトリックと共に、状態更新ユニットに再び入力される。次のサイクルにおいて、第２のサブブロックが終了し、その第２の計算を開始する。従って、状態メトリックの計算のそれぞれがＮサイクルを要するが、この計算をＭ個のサブブロックについてインターレース方式において行うことができる。即ち、Ｍ個のサブブロックの全てについて、第１の状態更新を、サブブロックのいずれかの第２の状態更新を開始する前に終了しておかなければならない。一実施形態においては、通常のラウンドロビンスケジューリングアルゴリズムに従って、サブブロックに、交代しながらユニットを使用する。
【００６７】
[0075]サブブロック（タイル又はウィンドウとすることができる）の数ＭがＮよりも大きい場合、ユニットが完全に利用されるよう、Ｌ個の状態計算全てについてサブブロックを終了した時点で、新しいサブブロックがパイプラインのスケジュールにおいて処理される。この場合、技術的には、サブブロックの長さを同じにする必要はないが、一般には、同じである場合に、ユニットが最適に利用されるはずである。
【００６８】
[0076]再び図４を参照する。この図は、パイプライン化された状態メトリック計算をスケジューリングする例を示している。この場合、状態「Ａ」〜状態「Ｄ」の状態メトリックの計算を、一組の計算リソースを使用して実行する。時刻インデックス「１」〜「９」について、同じ組の計算リソースを使用してこれらの状態メトリックを計算する。効率を向上するために、計算リソースをパイプライン化して、二つ以上の時刻インデックスにおける状態メトリックの計算を同時に処理する。しかしながら、一つの時刻インデックスにおける状態メトリックの計算が、別のインデックスにおける状態メトリックの計算の結果に依存し得るので、即ち、計算が再帰性であり得るので、依存するデータがパイプライン化されたプロセスによって常に遅れずに生成されるよう、適切なスケジューリングを適用する。
【００６９】
[0077]ここで、例示のために、順方向状態メトリックのパイプライン化された計算のスケジューリングについて説明する。逆方向状態メトリックのパイプライン化された計算をスケジューリングするときには、同様の手順を逆の時間方向に使用することができる。前述したように、図４におけるトレリス４００は、復号を個別に実行することのできる複数のセクション４０２，４０４，及び４０６に分割されている。この場合、パイプライン化された計算リソースが三つのステージ（Ｍ＝３）に編成されているものと想定する。パイプライン化された計算リソースは、様々な時刻インデックスの状態メトリックを、「１」、「４」、「７」、「２」、「５」、「８」、「３」、「６」、「９」の順序にて処理するよう、使用される。この例での状態メトリック計算の順序によって、以下により詳細に説明するように、データの依存性を適切に管理することができる。
【００７０】
[0078]再び図５を参照する。パイプライン化された計算リソースは、パイプライン化された四つの個々の加算−比較−選択（ＡＣＳ）ユニット５０２，５０４，５０６，及び５０８として実施されており、これらのユニットは並列に動作して、トレリスの時刻インデックスそれぞれにおける異なる状態の状態メトリックを計算する。具体的には、ＡＣＳユニット５０２は、状態「Ａ」の状態メトリックを計算する役割を担う。ＡＣＳユニット５０４は、状態「Ｂ」の状態メトリックを計算する役割を担う。ＡＣＳユニット５０６は、状態「Ｃ」の状態メトリックを計算する役割を担う。ＡＣＳユニット５０８は、状態「Ｄ」の状態メトリックを計算する役割を担う。
【００７１】
[0079]ＡＣＳユニット５０２，５０４，５０６，及び５０８のそれぞれは、三つのステージ（Ｎ＝３）に編成されている。複数の異なる時刻インデックスにおける複数の異なる状態の状態メトリックの計算が、ＡＣＳユニット５０２，５０４，５０６，及び５０８の三つのステージにおいてパイプライン化方式にて進行する。単なる一例として、複数の異なる時刻インデックスにおける状態「Ａ」の状態メトリックを計算するための、ＡＣＳユニット５０２の動作について説明する。図５に示したように、復号プロセスにおける特定の瞬間において、時刻インデックス「１」における状態「Ａ」の状態メトリック（番号「１Ａ」を付してある）を、ＡＣＳユニット５０２の第３の最終のステージ（例えば、「選択」ステージ）において計算する。同時に、時刻インデックス「４」における状態「Ａ」の状態メトリック（番号「４Ａ」を付してある）を、ＡＣＳユニット５０２の第２のステージ（例えば、「比較」ステージ）において計算する。同時に、時刻インデックス「７」における状態「Ａ」の状態メトリック（番号「７Ａ」を付してある）を、ＡＣＳユニット５０２の第１のステージ（例えば、「加算」ステージ）において計算する。
【００７２】
[0080]この場合、パイプライン化された状態メトリック計算は、時刻インデックスの順序「１」、「４」、「７」、「２」、「５」、「８」、「３」、「６」、「９」に従ってスケジューリングされる。順方向状態メトリックの場合、時刻インデックス「２」の状態メトリックは、時刻インデックス「１」の状態メトリックに依存する。このスケジューリングでは、ＡＣＳユニット５０２，５０４，５０６，及び５０８が時刻インデックス「２」の状態メトリックの計算を開始するタイミングまでに、時刻インデックス「１」の状態メトリックが必ず利用可能である。時刻インデックス「１」の状態メトリックの計算は、時刻インデックス「２」の状態メトリックの計算よりも、三つの時刻インデックスだけ先行しており、パイプラインは三つのステージ（Ｍ＝３）を備えているため、時刻インデックス「１」の結果は、時刻インデックス「２」の計算において使用されるように、パイプラインの第３の最後のステージからちょうど間に合うように出力される。このようにして、状態メトリックの計算をスケジューリングすることによって、状態メトリックの計算において存在するデータの依存性を適切に管理することができる。
【００７３】
[0081]従って、図５は、パイプライン化されたプロセスにおいて計算をスケジューリングする例を示しており、この例では、パイプライン化されたプロセスを使用して、第１の時刻インデックス（例えば、「１」）における状態メトリックを計算し、次いで、パイプライン化されたプロセスを使用して、第１の時刻インデックスに隣接していない一以上の非隣接時刻インデックス（例えば、「４」、「７」）における状態メトリックを、第１のインデックスにおける状態メトリックの計算の結果を使用することなく計算し、次いで、パイプライン化されたプロセスを使用して、第１の時刻インデックスに隣接している隣接時刻インデックス（「２」）における状態メトリックを、第１の時刻インデックスにおける状態メトリックの計算の結果を使用して計算している。この場合、パイプライン化されたプロセスは、ＡＣＳユニット５０２，５０４，５０６，及び５０８としてハードウェアにて実施されている。
【００７４】
[0082]状態更新演算をパイプライン化することにより、大きな恩恵が得られる。一つの恩恵として、トレリスベースの復号演算のハードウェア実装形態に関連する回路の速度が増し、及び／又は、回路面積が減少する。一般的に言えば、演算を、より小さいＮ個のセグメントに分割すると、最終的な回路は、最大でＮ倍だけ高速に動作することができる。従って、パイプラインが最大限に利用されるようにスケジューリングを使用する提案アーキテクチャは、パイプライン化されていない並列に動作するＮ個のユニットの処理速度を、パイプライン化された一つのユニットによって達成する能力を潜在的に備えている。パイプライン化により、順序ロジックは増すが、回路の組合せ部分は変化しない。従って、結果としての回路は、同じロジックをちょうどＮ個使用しなければならない並列のＮ個のユニットよりも、小さいはずである。復号器の他の部分についても容易にパイプライン化されるので、このような節減は残りの設計にも拡張される。
【００７５】
[0083]もう一つの大きな恩恵は、一見しただけでは明らかではないが、復号器に要求されるメモリ設計に関する。一般には、システムの統合を容易にするため、メモリは復号器と同じ速度で動作する。複数の遅いユニットを使用する場合、メモリへの複数の同時アクセスが必要であり、このため、複数の浅く広いＲＡＭが要求される。ターボ符号及びターボライク符号の場合、問題は更に厳しいものとなる。なぜならば、これらの並列アクセスの全てが、インターリーバの共有メモリ空間へのアクセスであり、メモリアクセス時に起こる衝突を解決するための特殊なロジック（例えば、クロスバースイッチ）を採用する必要があるからである。たとえ衝突が解決されても、依然としてインターリーブパターンに大きな制約が課される。
【００７６】
[0084]更に、浅く広いＲＡＭでは、同じタイプ及び同じ容量の深く狭いメモリよりも、アクセス時に要求される領域及び電力がずっと大きくなる。代わりに、より少数の高速ユニットを使用することによって、より少ない数の、より深く狭いメモリブロックを使用することができるはずであり、結果として、領域及び電力が大幅に節減される。同時に、並列メモリアクセスを調整するために要求されるロジックが少なく、インターリーバに対する制約が大幅にゆるくなる。ほとんどのＡＳＩＣ技術及びＦＰＧＡ技術においては、複雑な状態更新演算よりも数倍高速で動作することのできるメモリソリューションが利用可能であるが、現在のところ、それらの能力を利用することができていない。本明細書に記載したアーキテクチャを使用することにより、利用可能なメモリと同じ速度でロジックを実行することができ、メモリの能力を完全に生かすことができる。
【００７７】
ＶＩ．結論
[0085]状態更新の計算のパイプライン化は、トレリスの複数の異なるセクションからの状態の計算をスケジューリングすることによって達成される。これにより、ウィンドウ処理及び／又はタイリングを革新的な方式にて採用して、パイプライン化された状態更新計算を容易にすることができる。ウィンドウ処理及びタイリングのコンセプトは、この技術分野において広く知られているが、本発明より以前に、トレリスベースのプロセッサ及び復号器における状態更新の再帰性によるボトルネック問題を解決する目的に採用されたことはない。
【００７８】
[0086]このように、トレリスベースの処理におけるブランチメトリック計算ステップ及びトレースバック／完了ステップのみならず、再帰的な状態更新ステップにも、効率的なパイプライン化を適用することができる。これにより、一つ以上のパイプライン化された計算ユニットを使用して、極めて高いスループットのトレリス処理を実施することができる。幾つかの遅いユニットの代わりに一つの高速ユニットを使用することの恩恵は、回路の総面積及び電力の点と、メモリ設計の点とにおいて重要である。
【００７９】
[0087]以上、２状態のバイナリ符号という単純な場合を想定し、ｍｉｎ−ｓｕｍ実施形態を使用する具体的な例について説明した。説明を容易にするために、それほど複雑ではないトレリス構造を示した。しかしながら、より多くの状態を有する、及び／又は、構造がより複雑である別の符号、また、ｍａｘ−ｐｒｏｄｕｃｔアルゴリズム、ｓｕｍ−ｐｒｏｄｕｃｔアルゴリズム、ｍｉｎ＊−ｓｕｍアルゴリズム、ｍａｘ＊−ｓｕｍアルゴリズム、又は、これらの実用的な近似といった別の復号アルゴリズム（例えば、）に、同じ原理を容易に適用することができる。
【００８０】
[0088]本明細書に提示した手法は、ＡＳＩＣ（特定用途向け集積回路）又はプログラマブルＦＰＧＡ（フィールドプログラマブルゲートアレイ）といったカスタムチップの一部を形成するゲートロジックを使用してハードウェアにて実施することができる。これらの手法は、復号器、ＳＩＳＯプロセッサ、又はトレリスプロセッサの一部として、或いは場合によっては、これらのタイプの演算を実行する必要のある汎用プロセッサ用のハードウェアアクセラレータとして、使用することができる。
【００８１】
[0089]本発明を、具体的な実施形態に関連して説明してきたが、本発明の範囲は、説明した具体的な実施形態に制限されないことは、当業者には明らかであろう。従って、本明細書及び図面は、本発明を制限するものではなく、説明を目的とするものとみなされる。しかしながら、特許請求の範囲に記載されている本発明の広い概念及び範囲から逸脱することなく、追加、省略、置換、及びその他の修正を行うことができるが明らかであろう。
【図面の簡単な説明】
【００８２】
【図１】畳み込み符号化器を採用したデジタル通信システムを示す図である。
【図２】畳み込み符号化、ＩＳＩ干渉、及びその他のようなプロセスをモデル化するＦＳＭを記述しているトレリスのセクションを示す図である。
【図３】本発明の実施形態に係るトレリスベースの復号器の更なる詳細を示すブロック図である。
【図４】本発明の一実施形態による、復号を個別に実行することのできる複数のセクションへのトレリスの分割を示す図である。
【図５】本発明の実施形態に係るパイプライン化された状態更新ユニットの詳細を示す図である。
【図６】一つのみのステージに編成されている（Ｎ＝１）ＡＣＳユニットのブロック図である。
【図７】三つのステージに編成されている（Ｎ＝３）ＡＣＳユニットのブロック図である。
【図８】六つのステージに編成されている（Ｎ＝６）ＡＣＳユニットのブロック図である。
【図１】
2009532952.tif 000008
【図２】
2009532952.tif 000009
【図３】
2009532952.tif 000010
【図４】
2009532952.tif 000011
【図５】
2009532952.tif 000012
【図６】
2009532952.tif 000013
【図７】
2009532952.tif 000014
【図８】
2009532952.tif 000015
【国際調査報告】
2009532952.tif 000016
2009532952.tif 000017
2009532952.tif 000018