(57)【要約】【課題】Ｗ−ＣＤＭＡ規格で定義されたターボコード用のインタリーブを実行するのに必要なメモリアドレスを効率的に生成する。【解決手段】多くのルックアップテーブルを使ってメモリアドレスを効率的に生成する。インタリーバは、記憶ユニット、テーブルセット、アドレス生成器を含む。記憶ユニットはデータパケット用のＫ要素を格納する。この要素は第１の手順（例えばリニア手順）に従って格納され、第２の手順（例えばインタリーブ手順）に従って提供される。第１のテーブルセットは、第１の手順から第２の手順へマップすることにより配列を行置換するシーケンスＰＡ、ＰＢ、ＰＣ、ＰＤを格納する。第２のテーブルセットは、列置換するシーケンスを格納する。アドレス生成器は第１の手順のための第１のアドレスを取得し、テーブルに格納されたシーケンスに基づいて第２の手順のための第２のアドレスを生成する。【特許請求の範囲】
【請求項１】
既に知られたＲ、Ｃおよびｐｉｎｄを用いた所定のＫに対しＷ−ＣＤＭＡ互換のターボインタリーバアドレスが導かれている複数のテーブルを用いたターボインタリーバであって、
複数の行内置換テーブルを備えた行内テーブルと、
プライム数テーブルと、
プライム数インデクス情報を生成することが可能な第１のユニットと、
行内ベースシーケンステーブル（ＩＮＴＲＡＢＡＳＥ）と、
行内ベースシーケンスアドレステーブル（ＩＮＴＲＡＤＤＲ）と、
（ｑ）シーケンステーブルと、
前記第１のユニットと前記各テーブルとに結合され、Ｗ−ＣＤＭＡ互換のターボインタリーバアドレスを生成するインタリーバハードウェアロジックと
を備えたターボインタリーバ。
【請求項２】
連結型コンボルーショナル（Ｔｕｒｂｏ）コード用のインタリーバであって、
データパケット用の複数の（Ｋ）要素を２次元配列内の場所に格納するように構成された記憶ユニットであって、前記要素を、第１の手順にしたがって格納し、第２の手順にしたがって取り出されるようにした記憶ユニットと、
前記第１の手順から前記第２の手順にマップすることによって前記２次元配列の行置換を実行するために使用される第１のシーケンス値セットを格納するように構成された少なくとも１つのテーブルからなる第１のテーブルセットと、
前記第１の手順から前記第２の手順にマップすることによって前記２次元配列の列置換を実行するために使用される第２のシーケンス値セットを格納するように構成された少なくとも１つのテーブルからなる第２のテーブルセットと、
前記記憶ユニットと前記第１および第２のテーブルセットとに結合され、前記第１の手順のための第１のアドレスを取得し、前記第１および第２のテーブルセットに格納されたシーケンスの一部に基づいて、前記第２の手順のための対応する第２のアドレスを生成するように構成されたアドレス生成器と
を備えたインタリーバ。
【請求項３】
請求項２に記載のインタリーバにおいて、
前記第１の手順はリニアであり、前記データパケットのリニア位置における前記Ｋ要素のアクセスに対応しており、
前記第２の手順はインタリーブであり、前記データパケットのインタリーブ位置における前記Ｋ要素のアクセスに対応しているインタリーバ。
【請求項４】
請求項２に記載のインタリーバにおいて、
前記第１および第２の手順は、Ｗ−ＣＤＭＡ規格によって定義されているインタリーバ。
【請求項５】
請求項２に記載のインタリーバにおいて、
前記第２の手順のための第２のアドレスを生成するために用いられるパラメータ値を格納するように構成された少なくとも１つのテーブルからなる第３のテーブルセットを更に備えたインタリーバ。
【請求項６】
請求項５に記載のインタリーバにおいて、
前記第３のテーブルセットに格納されたパラメータ値は、前記第２の手順を導出するために定義された１セットのプライム数を含むインタリーバ。
【請求項７】
請求項２に記載のインタリーバにおいて、
前記第１のテーブルセットは、複数の第１のシーケンス値を格納するように構成された第１の（ＩＮＴＲＯＷ）テーブルを含み、各第１のシーケンスは、前記第１の手順にしたがった行番号を、前記第２の手順にしたがった行番号にマップするために用いられるインタリーバ。
【請求項８】
請求項２に記載のインタリーバにおいて、
前記第２のテーブルセットは、複数の第２のシーケンス値を格納するように構成された第２の（ＩＮＴＲＡＢＡＳＥ）テーブルを含み、各第２のシーケンスは、前記第１の手順のための列インデクスを、前記第２の手順にしたがった列番号にマップするインタリーバ。
【請求項９】
請求項８に記載のインタリーバにおいて、
前記複数の第２のシーケンスは、複数のプライム数に対応しており、
１つの第２のシーケンスが、Ｋの値に基づくデータパケットのために使用されるように選択されるインタリーバ。
【請求項１０】
請求項８に記載のインタリーバにおいて、
前記第２のテーブルセットは、複数の第３のシーケンス値を格納するように構成された第３の（Ｙ）テーブルを更に備えており、
各第３のシーケンスは、列インデクスを導出するために使用される値を含むインタリーバ。
【請求項１１】
請求項２に記載のインタリーバにおいて、
前記アドレス生成器は、前記第１のアドレスに対応する入力行番号および入力列番号を導出し、更に第１および第２のテーブルセットの一部に基づいて、前記入力行番号および入力列番号にそれぞれ対応したインタリーブ後の行番号および列番号を導出するように構成されているインタリーバ。
【請求項１２】
請求項２に記載のインタリーバにおいて、
前記アドレス生成器は、各クロックサイクル毎に、少なくとも１つの有効な第２のアドレスを提供するように構成されたインタリーバ。
【請求項１３】
請求項２に記載のインタリーバにおいて、
前記アドレス生成器は、少なくとも２つのアドレス生成ユニットを含み、各ユニットは、対応する第１のアドレスを取得し、前記取得した第１のアドレスに対応する第２のアドレスを生成するために構成されているインタリーバ。
【請求項１４】
請求項１３に記載のインタリーバにおいて、
連続した第１のアドレスが、前記少なくとも２つのアドレス生成ユニットに提供されるインタリーバ。
【請求項１５】
請求項２に記載のインタリーバにおいて、
前記複数の要素は、ターボデコードからの中間結果であるインタリーバ。
【請求項１６】
連結型コンボルーショナル（Ｔｕｒｂｏ）コードのためのデータを格納するように構成された記憶ユニットのためのアドレスを生成することが可能であって、データパケットに対する複数の（Ｋ）要素が２次元配列表示された記憶ユニット内の位置に格納され、前記要素が第１の手順にしたがって前記記憶ユニットに格納され、第２の手順にしたがって前記記憶ユニットから提供されるアドレス生成器であって、
前記第１の手順のための第１のアドレスに対応する２次元配列のための入力行番号および入力列番号を提供するように構成された第１のユニットと、
前記第１のユニットに結合され、前記入力行番号を取得し、対応する置換後の行番号を提供するように構成された行マッピングユニットと、
前記第１のユニットに結合され、少なくとも前記入力列番号を取得し、対応する置換後の列番号を提供するように構成された列マッピングユニットと、
前記行および列マッピングユニットに結合され、前記置換後の行および列番号を取得して結合することによって、前記第２の手順のための第２のアドレスを生成するように構成された結合ユニットと、
前記第１の手順から前記第２の手順にマップすることによって前記２次元配列の行置換を実行するために使用される第１のシーケンス値セットを格納するように構成された少なくとも１つのテーブルからなる第１のテーブルセットと、
前記第１の手順から前記第２の手順にマップすることによって前記２次元配列の列置換を実行するために使用される第２のシーケンス値セットを格納するように構成された少なくとも１つのテーブルからなる第２のテーブルセットとを備え、
前記置換後の行および列番号は、前記第１および第２のテーブルセットから取り出された値に基づいて導出されるアドレス生成器。
【請求項１７】
請求項１６に記載のアドレス生成器において、
前記第１および第２の手順は、Ｗ−ＣＤＭＡ規格によって定義されたアドレス生成器。
【請求項１８】
特定の構成成分コードに対応したコード化されたビットを取得し、デコードすることによって中間結果を生成するように構成された構成成分デコーダと、
前記構成成分デコーダに結合され、２次元配列の表示位置に前記中間結果を格納するように構成された記憶ユニットであって、前記中間結果は、第１の手順にしたがって前記記憶ユニットに格納され、第２の手順にしたがって前記記憶ユニットから提供される記憶ユニットと、
前記記憶ユニットに結合され、前記第１の手順のための第１のアドレスを取得し、１セットのテーブルに格納されたシーケンス値の一部に基づいて、前記第２の手順のための第２のアドレスを生成するように構成されたアドレス生成器であって、前記シーケンスは、前記第１の手順から前記第２の手順にマップすることによって前記２次元配列の行および列の置換を実行するために使用されるアドレス生成器と
を備えたターボデコーダ。
【請求項１９】
請求項１８に記載のターボデコーダにおいて、
前記第１および第２の手順は、Ｗ−ＣＤＭＡ規格で定義されているターボデコーダ。
【請求項２０】
請求項１８に記載のターボデコーダにおいて、
前記アドレス生成器は、各クロックサイクル毎に、少なくとも１つの有効な第２のアドレスを提供するように構成されたターボデコーダ。
【請求項２１】
連結型コンボルーショナル（Ｔｕｒｂｏ）コード用のアドレスを生成する方法であって、データパケットに対する複数の（Ｋ）要素が２次元配列表示された記憶ユニット内の位置に格納され、前記要素が第１の手順にしたがって前記記憶ユニットに格納され、第２の手順にしたがって前記記憶ユニットから提供される方法であって、
前記第１の手順のための第１のアドレスに対応する２次元配列のための入力行番号および入力列番号を決定し、
前記第１の手順から前記第２の手順へとマップすることによって前記２次元配列の行置換を実行するために使用される少なくとも１つのシーケンス値からなる第１のシーケンス値セットを取り出すための少なくとも１つのテーブルからなる第１のテーブルセットにアクセスし、
前記行番号を、前記第１のシーケンスセットに基づいて置換後の行番号にマップし、
前記第１の手順から前記第２の手順へとマップすることによって前記２次元配列の列置換を実行するために使用される少なくとも１つのシーケンス値からなる第２のシーケンス値セットを取り出すための少なくとも１つのテーブルからなる第２のテーブルセットにアクセスし、
前記列番号を、前記第２のシーケンスセットに基づいて置換後の列番号にマップし、
前記置換後の行および列番号を組み合わせて、前記第２の手順のための第２のアドレスを生成する方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、データ通信に係り、更に詳しくは、ターボデコーダ用の中間結果を蓄えるための斬新でかつ改良されたインタリーバに関する。
【背景技術】
【０００２】
無線通信システムは、音声やデータ等の様々なタイプの通信を提供するために広く適用されている。これらのシステムは、コード分割多元接続（ＣＤＭＡ）、時間分割多元接続（ＴＤＭＡ）、あるいはその他の多元アクセス技術に基づく場合がある。ＣＤＭＡシステムは、増強されたシステム能力を備えており、他のタイプのシステムを超越した明らかに有利な点を備えている。
【０００３】
ＣＤＭＡシステムは、ＩＳ−９５、ｃｄｍａ２０００、Ｗ−ＣＤＭＡ規格などといった当該技術分野で知られている１つないし２つ以上のＣＤＭＡ規格に対応するように設計されうる。おのおのの規格は特に、順方向および逆方向のリンクを介した送信に先立つデータ処理を定義している。例えば、音声情報は特定のデータ速度でコード化され、定義されたフレームフォーマットにフォーマットされ、特定の処理スキームにしたがって処理（例えば、誤差の補正および／または検出のためのエンコードや、インタリーブ等）される。特定の規格（例えばｃｄｍａ２０００規格）によって定義されたフレームフォーマットおよび処理は、他の規格（例えばＷ−ＣＤＭＡ規格）のものとは異なる場合が多い。
【０００４】
Ｗ−ＣＤＭＡ規格では、パラレル連接型コンボルーショナルエンコーダ（しばしばターボエンコーダと称される）を適用している。エンコーダは、送信に先立つコードセグメント（すなわち、データパケット）のエンコード用に選択される。ターボエンコーダは、並行に動作し、コードインタリーバに結合された２つの構成成分エンコーダを用いている。コードインタリーバは、特別に定義されたインタリーブスキームにしたがって、パケット内の情報ビットをシャッフル（すなわちインタリーブ）する。一方のエンコーダは、パケット内における情報ビットをエンコードし、第１のパリティビットシーケンスを生成する。もう一方のエンコーダは、シャッフルされた情報ビットをエンコードし、第２のパリティビットシーケンスを生成する。第１および第２のシーケンスでは、この情報ビットと、パリティビットの全部あるいは一部が送信される。
【０００５】
補足的な（そしてコンピュータ処理量が膨大な）ターボデコードが、受信器ユニットにおいて実行される。ターボエンコードされたパケットのおのおのについて、受信されたビットが先ずバッファに格納される。その後、バッファから第１のエンコーダに対する情報およびパリティビットが取り出される。更に、この情報およびパリティビットが第１の構成成分コードに基づいてデコードされることによって、「外部」情報が付加される。この「外部」情報は、情報ビットに対する検出値の信頼度における調整値を示すものである。第１のデコーダからの外部情報を含む中間結果は、その後、送信ユニットにおいて使用されたコードインタリーブに対応するインタリーブ手順にしたがって記憶ユニットに格納される。
【０００６】
第２のエンコーダからの中間結果とパリティビットは、その後、対応するソースから取り出され、更に第２の構成成分コードに基づいてデコードされることによって外部情報が付加される。外部情報は、情報ビットに対する検出値の信頼度における更なる調整値を示すものである。第２のデコーダからの外部情報を含む中間結果は、その後、送信ユニットにおいて使用されたコードインタリーブに対して相補された逆インタリーブ手順にしたがって記憶ユニットに格納される。この中間結果は、第１の構成成分デコーダの次回の繰り返しにおいて使用される。第１および第２の構成成分デコーダによるデコーディングは、最終結果を生成するために、数回繰り返される。
【０００７】
デコードされる各情報ビットに対し、事前のデコードによって、このビットに対して生成された中間結果を取り出すために、記憶ユニットへのアクセスがなされる（もしあれば）。デコードされた各ビットに対して生成された中間結果もまた、その後のデコードに使用されるために記憶ユニットに再び格納される。すなわちこの記憶ユニットは、パケットにおけるビットがデコードされる度に繰り返しアクセスされる。おのおののメモリアクセスに対し、中間結果が記憶ユニットから読出時に取得され、書込時に適切な場所に格納されるように、適切なアドレスを生成する必要がある。
【特許文献１】
米国仮出願６０／２７２，１２３
【非特許文献１】
Steven S. Pietrobon 著、"Implementation and Performance of a Turbo/Map Decoder," International Journal of Satellite Communications, Vol. １６, １９９８, pp. ２３-４６
【発明の開示】
【発明が解決しようとする課題】
【０００８】
以上示したように、メモリアクセスのための効率的なアドレス生成は、効率的なターボデコードのために極めて望ましい。特に、Ｗ−ＣＤＭＡ規格で定義された複雑なインタリーブスキームを考慮した場合には尚更のことである。
【課題を解決するための手段】
【０００９】
本発明の局面では、Ｗ−ＣＤＭＡ規格で定義されたターボコード用のインタリーブを実行するのに必要なメモリアドレスを効率的に生成する技術を提供する。ある局面では、アドレス生成を促進するために、インタリーブ後のアドレスの生成に用いられる様々なシーケンス値を格納するための多くのルックアップテーブル（ＬＵＴ）が備えられている。これらテーブルを用いることによって、アドレス計算を促進し、要求されたアドレスを短時間内に生成することができるようになる。もう１つの局面では、これらテーブルに基づいて、インタリーブ後のアドレスを効率的に生成するための技術が提供される。インタリーブ後のアドレスの生成技術は、ターボエンコードに適用されうる。これは、コンピュータ処理が膨大なターボデコードにとって特に有利である。特に、高いデータ速度が維持され、ターボデコードが繰り返しなされる現状を考慮した場合、適切なアドレス生成は、効率的なターボデコードを行うために必要不可欠である。
【００１０】
本発明の具体的な実施例では、インタリーバは、連結型コンボルーショナル（ターボ）コードを備えている。このインタリーバは、記憶ユニットと、少なくとも１つのテーブルからなる第１および第２のテーブルセットと、アドレス生成器とを含んでいる。記憶ユニットは、２次元（Ｒ＊Ｃ）配列を表す位置におけるデータパケットに対する複数の（Ｋ）要素（例えば、ターボデコードの中間結果）を格納する。この要素は、第１の（例えばリニアな）手順にしたがって記憶ユニットに格納され、第２の（インタリーブ後の）手順にしたがって記憶ユニットから提供される。第１のテーブルセットは、第１の手順から第２の手順へのマップのためのＲ＊Ｃ配列における行置換の実行に用いられる第１のシーケンス値セットを格納する。Ｗ−ＣＤＭＡ規格では、これらのシーケンスは行内置換シーケンスＰＡ、ＰＢ、ＰＣ、およびＰＤを含みうる。第２のテーブルセットは、Ｒ＊Ｃ配列の列置換を実行するために用いられる第２のシーケンス値セットを格納する。Ｗ−ＣＤＭＡ規格では、これらのシーケンスは、行内ベースシーケンスｃ（ｉ）と、プライム数シーケンスｑｉまたは置換されたプライム数シーケンスｐｊを含んでいる。これらシーケンスは全て列置換を行うために使用される。アドレス生成器は、第１の手順に対応する第１のアドレスを受信し、第１および第２のテーブルセットに格納されたシーケンスの一部に基づいて、第２の手順に対応する第２のアドレスを生成する。
【００１１】
本発明における様々な局面、実施例、および特徴が、以下に詳述される。
【００１２】
本発明の特許請求の範囲は、２００１年２月２８日に出願された特許文献１の利益を要求するものである。
【発明の効果】
【００１３】
本発明によれば、Ｗ−ＣＤＭＡ規格で定義されたターボコード用のインタリーブを実行するのに必要なメモリアドレスを効率的に生成する技術を提供することができる。
【発明を実施するための最良の形態】
【００１４】
以下に、本発明を実施するための最良の形態について図面を参照しながら説明する。
【００１５】
図１は、本発明の様々な局面に適用可能な通信システム１００の簡略化したブロック図である。具体的な実施例として通信システム１００は、Ｗ−ＣＤＭＡ規格に適合しているＣＤＭＡシステムである。送信器ユニット１１０では、データが、データソース１１２から送信データプロセッサ１１４へと一般的にブロックで送信される。送信データプロセッサ１１４は、このデータをフォーマットし、コード化し、処理することによって、１つ以上のアナログ信号を生成する。その後、このアナログ信号は送信器１１６に提供される。送信器１１６は、この信号を（直交）変調し、フィルタし、増幅し、アップコンバートすることによって変調信号を生成する。その後、この変調信号は１つ以上のアンテナ１１８（図１では１つのみを示している。）を経由して１つ以上の受信器ユニットに送信される。
【００１６】
受信器ユニット１３０では、送信された信号が１つ以上のアンテナ１３２（図１では１つのみを示している。）によって受信され、受信器１３４へと出力される。受信器１３４内では、受信された信号が増幅され、フィルタされ、ダウンコンバートされ、（直交）変調され、デジタル化されてサンプルが生成される。その後、このサンプルは受信データプロセッサ１３６によって処理およびデコードされ、送信データが復元される。受信器ユニット１３０における処理およびデコードは、送信器ユニット１１０における処理およびコード化を相補するようになされる。その後、復元されたデータは、データシンク１３８に提供される。
【００１７】
上述された信号処理は、音声、ビデオ、パケットデータ、メッセージ、および１方向におけるその他のタイプの通信における送信をサポートする。双方向の通信システムは、２方向のデータ送信をサポートする。しかしながら、その他の方向の信号処理は、簡略化したために図１には示されていない。
【００１８】
図２は、Ｗ−ＣＤＭＡ規格に従ったダウンリンクデータ送信を行う送信器ユニット１００における信号処理を示す図である。このダウンリンクは、基地局からユーザターミナル（すなわちユーザ機器（ＵＥ））への送信に関する。一方、アップリンクは、ユーザターミナルから基地局への送信に関する。図２に示された信号処理は、図１における送信データプロセッサ１１４において一般的に実行される。Ｗ−ＣＤＭＡシステムの上部信号層は、多くのトランスポートチャンネルの同時送信をサポートする。各々のトランスポートチャンネルは、例えば音声、ビデオ、データなどといった特定通信用のデータを伝送することが可能である。各トランスポートチャンネルのデータは、対応するトランスポートチャンネル処理部２１０へとブロックで提供される。ブロックは、トランスポートブロックとも呼ばれる。
【００１９】
トランスポートチャンネル処理部２１０内では、ブロック２１２において、各トランスポートブロックが使用され、周期的な冗長検査（ＣＲＣ）ビットが計算される。ＣＲＣビットは、トランスポートブロックに付加され、受信器ユニットにおけるエラー検出のために使用される。その後、多くのＣＲＣコードブロックは、ブロック２１４において、連結される。仮に、連結後の総ビット数がコードブロックの最大サイズを超える場合には、ビットが多くの（同じサイズの）コードブロックに分割される。その後、各コードブロックはブロック２１６において、（例えばコンボルーショナルコードや、ターボコードのような）特定のコードスキームにしたがってコード化されるか、あるいは全くコード化されない。
【００２０】
その後、ブロック２１８では、コードビットに対するレートマッチングが行われる。レートマッチングは、高次の信号層に割り当てられたレートマッチング属性にしたがって実行される。アップリングでは、送信されるビット数が有効なビット数に一致するようにビットの繰り返し、または破壊（すなわち削除）がなされる。ダウンリンクでは、ブロック２２０において、未使用のビットポジションが断続的な送信（ＤＴＸ）ビットによって満たされる。このＤＴＸビットは、送信が停止されるべき時を示し、実際には送信されない。
【００２１】
その後、この ビットは、ブロック２２２において、提供する特定のインタリーブスキームにしたがってインタリーブされ、時間多用性が提供される。Ｗ−ＣＤＭＡ規格に従って、インタリーブされる時間間隔は、可能な時間間隔のセット（すなわち、１０ｍｓｅｃ、２０ｍｓｅｃ、４０ｍｓｅｃ、および８０ｍｓｅｃ）の中から選択される。インタリーブの時期間隔はまた、送信時間間隔（ＴＴＩ）として表される。ＴＴＩは、各トランスポートチャンネルに関連した属性であり、Ｗ−ＣＤＭＡ規格では通信セッション時間によって変化することはない。ここに使用されているように、「トラフィック」は、特定のトラフィックチャンネルのための１つのＴＴＩ内のビットを含んでいる。
【００２２】
選択されたＴＴＩが１０ｍｓｅｃよりも長い場合には、ブロック２２４において、このトラフィックが分割され、一連のトランスポートチャンネル無線フレームにマッピングされる。各トランスポートチャンネル無線フレームは、無線フレーム期間（１０ｍｓｅｃ）に亘る送信に対応している。Ｗ−ＣＤＭＡ規格に従うと、トラフィックは、１、２、４、または８の無線フレーム期間に亘ってインタリーブされうる。
【００２３】
その後、セクション２１０を処理している全てのアクティブなトランスポートチャンネルからの無線フレームは、ブロック２３２において、コード化された合成トランスポートチャンネル（ＣＣＴｒＣＨ）に連続して多重通信される。その後、ＤＴＸビットは、ブロック２３４において、送信されるビット数が、データ送信に使用されている物理チャンネル上において有効なビット数に一致するように、多重通信された無線フレームに挿入される。仮に、１を超える物理チャンネルが使用されている場合には、ブロック２３６において、このビットは、物理チャンネルの間で分割される。特定の物理チャンネルは、異なるＴＴＩｓを有するトランスポートチャンネルを搬送することが可能である。その後、各物理チャネルに対応する各無線フレームにおけるビットは、ブロック２３８において、インタリーブされ、付加的な時間多様性が提供される。その後、インタリーブ後の物理チャンネル無線フレームは、ブロック２４０において、それぞれの物理チャンネルにマッピングされる。ユーザターミナルへの送信に適した変調信号を生成するための処理を行うその続きの信号は、当該技術分野では知られているので、ここでは記載しない。
【００２４】
図３は、Ｗ−ＣＤＭＡ規格に従ってダウンリンクデータ送信を行う受信器ユニット１３０における信号処理の流れ図である。図３に示される信号処理は、図２に示される信号処理を補足するものであって、図１に示す受信データプロセッサ１３６で一般的に行われる。先ず第１に、変調された信号が受信され、前処理され、デジタル化され、処理される。これによって、データ送信に使用される各物理チャンネルに対するシンボルが提供される。各シンボルは、特定解（例えば、４ビット以上）を有しており、送信されたビットに対応している。各物理チャンネルに対応する各無線フレーム期間におけるシンボルは、ブロック２５２において逆インタリーブされる。そして、逆インタリーブ後の全物理チャンネルからのシンボルが、ブロック２５４において連結される。ダウンリンク送信において、送信されないビットは、ブロック２５６において検出され、除去される。その後、このシンボルは、ブロック２５８において、様々なトランスポートチャンネルへと逆多重通信される。その後、各トランスポートチャンネルに対応する無線フレームは、各トランスポートチャンネル処理部２６０へ提供される。
【００２５】
ブロック２６２では、トランスポートチャンネル処理部２６０において、トランスポートチャンネル無線フレームがトラフィックに連結される。各トラフィックは、１以上のトランスポートチャンネル無線フレームを含み、送信ユニットで使用された特定のＴＴＩに対応している。各トラフィック内のシンボルは、ブロック２６４において逆インタリーブされ、ブロック２６６では、送信されないシンボルが除去される。その後、ブロック２６８では、繰り返されたシンボルを蓄積し、破壊されたシンボルに対して「don't cares」を挿入するために逆レートマッチングがなされる。ブロック２７０では、トラフィック内の各コードブロックがデコードされる。その後、ブロック２７２では、デコードされたブロックが連結され、各トランスポートブロックに分割される。その後、ブロック２７４では、ＣＲＣビットを用いて各トランスポートブロックのエラーチェックがなされる。
【００２６】
図４は、Ｗ−ＣＤＭＡ規格により定義されたパラレル連結型コンボルーショナルエンコーダ３００（ターボエンコーダとも称される。）を示す図である。ターボエンコーダ３００は、図２のブロック２１６におけるチャンネルコード化を実行するために使用されうる。ターボエンコーダ３００は、１対の構成成分エンコーダ３１２ａ、３１２ｂと、コードインタリーバ３１４と、パンクチャ部／多重通信部３１６とを含んでいる。コードインタリーバ３１４は、Ｗ−ＣＤＭＡ規格により定義されその詳細が後述される特定のインタリーブスキームにしたがったコードセグメント（すなわちパケット）内の情報ビットを受信し、インタリーブする。
【００２７】
各構成成分エンコーダ３１２は、リニア手順あるいはインタリーブ後の情報ビットを受信する。そして、受信した情報ビットを、定義された構成成分コードでエンコードし、パリティビットのシーケンスを与える。パンチャ部／多重通信部３１６は、両エンコーダ３１２ａ、３１２ｂから情報ビットとパリティビットとを取得し、ゼロ以上のパリティビットをパンクチャ（削除）して望ましいビット数を得る。そして、パンクチャされていない情報とパリティビットとを、コード化されたビットのシーケンスへと多重通信する。
【００２８】
各構成成分エンコーダ３１２は、直列接続された３つの遅延素子３２２と、４つのモジュロ２加算器３２４と、スイッチ３２６とを含んでいる。初期状態では、遅延素子３２２の状態はゼロにセットされ、スイッチ３２６は上部位置にある。その後、このデータパケットの各情報ビットに対し、加算器３２４ａが、加算器３２４ｄからの出力ビットを用いて情報ビットｘのモジュロ２加算を実行し、その結果を遅延素子３２２ａに与える。加算器３２４ｂおよび３２４ｃは、加算器３２４ａと遅延素子３２２ａおよび３２２ｃからのビットのモジュロ２加算を実行し、パリティビットｙを与える。加算器３２４ｄは、遅延素子３２２ｂ，３２２ｃからのビットのモジュロ２加算を実行する。
【００２９】
データパケット内の全てのＮ個の情報ビットがエンコードされた後に、スイッチ３２６が下部位置に移動され、３つのゼロテイルビットが構成成分エンコーダ３１２ａに与えられる。その後、構成成分エンコーダ３１２ａは、この３つのテイルビットをエンコードし、３つのテイルパリティビットを与える。
【００３０】
Ｎ個の情報ビットの各パケットに対して、構成成分エンコーダ３１２ａはＮ個のパリティビットｙと、初めの６つのテイルパリティビットを与える。そして、構成成分エンコーダ３１２ｂは、Ｎ個のパリティビットｚと、最後の６つのテイルパリティビットを与える。各パケットについて、パンチャ部／多重通信部３１６は、エンコーダ３１２ａからのＮ個の情報ビットおよび（Ｎ＋６）個のパリティビットと、エンコーダ３１２ｂからの（Ｎ＋６）個のパリティビットとを取得する。パンクチャ部／多重通信部３１６は、多くのパリティビットをパンクチャし、パンクチャされていない情報とパリティビットとを含む望ましい数のコードビットを与える。
【００３１】
図５は、ターボデコーダ４００の設計を示すブロック図である。本設計では、ターボデコーダ４００は、２つの構成成分デコーダ４１０ａおよび４１０ｂと、コードインタリーバ４１２と、コード逆インタリーバ４１４と、検出器４１６とを含んでいる。各デコーダ４１０は、一般には、ソフトインプット／ソフトアウトプット（ＳＩＳＯ）最大型posteriori（ＭＡＰ）デコーダとして適用される。しかしながら、ソフトアウトプットＶｉｔｅｒｂｉアルゴリズム（ＳＯＶＡ）を適用した他のタイプのデコーダも適用されうる。一般的にデコーダの設計は、送信ユニットで使用されている特定のターボコードスキームに依存する。
【００３２】
送信されたコード化ビットに対応して取得された（ｓｏｆｔ）ビットは、チャンネル逆インタリーバ（図５には示されていない）によって逆インタリーブされ、送信ユニットにおいてなされる第１および第２のインタリーブ（図２におけるブロック２２２と２３８）を無効にする。デコードされる各データパケットに対し、チャンネル−逆インタリーブビットが、必要に応じてデコーダ４１０ａおよび４１０ｂに提供される。
【００３３】
図５に示す実施例では、合計器４０８ａがＬＬＲ（ＡＰＰ０）、ＬＬＲ（Ｘ’）、および逆インタリーバ４１４からの外部情報を取得して合計する。そして、アプリオリ確率（ＡＰＰ）をデコーダ４１０ａに与える。ＬＬＲ（ＡＰＰ０）は、情報ビットの基礎仮定から導かれるログ最尤比率である。仮に、データパケットの各情報ビットが０または１のいずれかに最も等しいと仮定された場合には、ＬＬＲ（ＡＰＰ０）はパケット内の全取得ビットに対して０に等しく、ＬＬＲ（ＡＰＰ０）に関連する部分が無視される。逆インタリーバ４１４からの外部情報は、第１のデコード繰り返しにおいて０にセットされる。ＬＬＲ（ｘ’）は、取得された情報ビットｘ’のログ最尤比率である。各取得された情報とパリティビットｂｍのＬＬＲは、以下の式にしたがって計算することができる。
【数１】
2004531116.tif 000002
取得されたビットのＬＬＲは、１であるビットの確率に対する０であるビットの確率の比の対数である。各取得されたビットに対する確率Ｐ（ｂｍ＝０）およびＰ（ｂｍ＝１）は、一般的にはビットに対するソフト値に依存する。削除個所（すなわちパンクチャされたビット）に対するＬＬＲは、０または１であるビットにおける等しい信頼度を示している（すなわちＬＬＲ＝０）。
【００３４】
デコーダ４１０ａは、ＡＰＰを合計器４０８ａから、取得したパリティビットｙ’のＬＬＲであるＬＬＲ（ｙ’）を第１の構成成分エンコーダから取得する。ＬＬＲ（ｙ’）は、もしあれば、パンクチャされた（すなわち送信されていない）パリティビットの削除箇所を含む。その後、デコーダ４１０ａは、ＭＡＰアルゴリズムにしたがってＡＰＰおよびＬＬＲ（ｙ’）をデコードし、posteriori確率を生成する。その後ＡＰＰは、合計器４０８ｂによってposteriori確率から差し引かれ、外部情報ｅ１が提供される。外部情報ｅ１は、取得したパリティビットｙ’に寄与している情報ビットｘ’に対する値の信頼度における補正値／調整値を示すものである。
【００３５】
加算器４０８ｂからの外部情報ｅ１は、情報ビットＬＬＲ、ＬＬＲ（ｘ’）とともに加算され、その中間結果（次のデコーダに対するＡＰＰ）がコードインタリーバ４１２に格納される。コードインタリーバ４１２は、ターボエンコーダで使用されたものと同じコードインタリーブスキームを適用している（例えば、図４におけるコードインタリーバ３１４で使用されたものと同じスキーム。）。
【００３６】
デコーダ４１０ｂは、インタリーバ４１２からインタリーブ後のＡＰＰを取得し、第２の構成成分エンコーダから、パリティビットｚ’のＬＬＲであるＬＬＲ（ｚ’）を取得する。その後デコーダ４１０ｂは、ＭＡＰアルゴリズムにしたがってＡＰＰとＬＬＲ（Ｚ’）とをデコードし、posteriori確率を生成する。その後ＡＰＰは、加算器４０８ｄによってposteriori確率から差し引かれ、外部情報ｅ２が提供される。外部情報ｅ２は、取得したパリティビットｚ’に寄与している情報ビットｘ’に対する値の信頼度における補正値／調整値を示すものである。外部情報ｅ２は、デコーダ４１０ｂからの中間結果を含んでおり、コード逆インタリーバ４１４に格納される。逆インタリーバ４１４は、インタリーバ４１２に適用されたインタリーブスキームを相補する逆インタリーブスキームを適用している。
【００３７】
情報ビットＬＬＲのデコードは、数回（例えば６，８，１０，あるいはそれ以上の可能な回数）繰り返される。おのおのの繰り返しによって、情報ビットの検出値に対し、より高い信頼度が得られる。デコードの繰り返しが全て終了した後に、最後のＬＬＲが検出器４１６に与えられる。検出器４１６は、ＬＬＲに基づく取得情報ビットに対するハードデシジョン値（すなわち「０」および「１」）を与える。
【００３８】
図６は、本発明の実施に係るターボデコーダ５００のブロック図である。ターボデコーダ５００は、図５に示すターボデコーダ４００の一具体例である。本実施例においてターボデコーダ５００は、入力インタフェースユニット５０６と、ローカルメモリ／結合器５０８と、ＳＩＳＯ  ＭＡＰデコーダ５１０と、検出器５１２と、エネルギーメトリック計算機５１４と、記憶ユニット５２０と、アドレス生成器５３０とを含んでいる。図５に示すように、２つの構成成分デコーダ４１０ａおよび４１０ｂは、一方のデコーダからの外部情報が他方のデコーダへの入力として与えられることによって連続動作する。２つの構成成分デコーダの連続動作によって、唯一の（物理的な）デコーダを、両方の構成成分デコーダとして適用することができる。
【００３９】
入力インタフェースユニット５０６は、チャンネル逆インタリーバ５０２とＭＡＰデコーダ５１０との間のインタフェースを提供する。いくつかのシステムでは、仮にパンクチャが送信ユニットにおいて実行された場合には、入力インタフェースユニット５０６は、コード化されたビットの逆パンクチャを与えるために設計される。逆パンクチャは、各パンクチャされたビットに対する削除箇所を与えることによって行われる。この削除箇所は、０または１であるビットの等しい可能性を示している。
【００４０】
実行されている特定のデコードパス（すなわち、第１または第２の構成成分エンコーダに対するデコード）に基づいて、情報の適切なシーケンスとパリティビットとがチャンネル逆インタリーバ５０２からメモリ／結合器５０８に与えられる。前回の繰り返しから得られたＡＰＰはまた、記憶ユニット５２０からメモリ／結合器５０８へと提供される。ある実施例において、メモリ／結合器５０８は以下のように設計される。すなわち、（１）情報ビットｘ’を取得し、この取得した（ｓｏｆｔ）情報ビットｘ’のＬＬＲを計算する。（２）ステップ（１）で計算されたＬＬＲ（ｘ’）と、対応する外部情報とを結合してＡＰＰを生成する。（３）パリティビットｙ’またはｚ’を取得し、この取得したパリティビットｙ’またはｚ’に対するＬＬＲを計算する。
【００４１】
ある実施例において、メモリ／結合器５０８は、例えば情報とパリティビットの４つのウィンドウ価値を一時的に格納するスライディングウィンドウアーキテクチャ（ＳＷＡ）が適用されている。情報とパリティビットの３つのウィンドウが、デコーダ５１０内において、３つの状態メトリック計算機上で動作している一方で、第４のウィンドウがチャンネル逆インタリーバ５０２および記憶ユニット５２０からの値によって更新される。ある実施例では、各ウィンドウが３２サイズを有している。すなわち、各ウィンドウは、３２のｘ’シンボルと３２のｙ’（またはｚ’）シンボルを有している。他のウィンドウ長さ、および／または異なるウィンドウ数を使用することも可能である。
【００４２】
ある実施例では、デコーダ５１０は、ｌｏｇ−ＭＡＰアルゴリズムを実行するＳＩＳＯデコーダを適用している。あるＭＡＰベースのデコードアルゴリズム（例えば最大ｌｏｇ−ＭＡＰアルゴリズム、またはｍａｘ＊  ｌｏｇ−ＭＡＰアルゴリズム。何れも当該技術分野においては公知である。）もまた使用されうる。ある実施例では、ＭＡＰアルゴリズムを適用するために、デコーダ５１０は、１台の順方向状態メトリック計算機と、２台の逆方向状態メトリック計算機を含んでいる。各順方向（または逆方向）状態メトリック計算機は、以下に基づく所定の現在時間インスタンスにおける格子における２の（Ｋ−１）乗の各確率の対数計算を行う。（１）前回の（あるいは次回の）時間インスタンスにおける状態の確率。（２）前回の（あるいは次回の）状態と現在時間における状態との間のパスの確率。ここで、Ｋとは、構成成分エンコーダの拘束長さである。これら順方向および逆方向の状態メトリック（それぞれαおよびβ）は、その後、情報ビットのposteriori確率の計算のために用いられる。順方向および逆方向の状態メトリックの計算とターボデコードは、本明細書で引用している非特許文献１に詳しく記載されている。
【００４３】
デコーダ５１０の出力は、記憶ユニット５２０に格納される。ある実施例では、記憶ユニット５２０は、インタリーブ手順（リニア手順の逆。リニア手順もまた使用されうる。）にしたがってなされたデコーダ５１０からのＡＰＰシンボルを格納するための動作をする。中間結果をインタリーブ手順にしたがって格納することにより、メモリの区分を簡略化することによって、アクセスを容易にする。更に、ターボエンコーダとデコーダの両方に同じインタリーブアドレス生成器を使用できるようにする。ある実施例において、記憶ユニット５２０は更に第１の構成成分デコードからのＡＰＰシンボルと、第２の構成成分デコードからの外部情報を格納するために動作する。
【００４４】
第１の構成成分デコードにおいて、前回の第２の構成成分デコードからの外部情報が、逆インタリーブ手順にしたがって記憶ユニット５２０から取り出される。そして、デコードによって生成されたＡＰＰシンボルが、インタリーブ手順にしたがって記憶ユニット５２０に格納される。それに対応して、第２の構成成分デコードにおいて、前回の第１の構成成分デコードからのＡＰＰシンボルが、リニア手順にしたがって記憶ユニット５２０から取り出される。そして、デコードによって生成された外部情報が、リニア手順にしたがって記憶ユニット５２０に格納される。
【００４５】
ある実施例では、記憶ユニット５２０は、多くのバックに区分され、多くのバックとともに実施される。
【００４６】
このバンクは、ＡＰＰデータのダブルバッファリングを回避するような方法で割り当てられ、動作する。各バンクは、他のバンクと分離して、かつ独立してアクセスされるように適用される。これは、各バンクに、アドレスとデータラインとからなる固有のセットを与えることによって実現される。
【００４７】
アドレス生成器５３０は、記憶ユニット５２０に対して書込および読出用のアドレスを与える。多重通信器５３２ａは図６において、ＡＰＰシンボル／外部情報が、リニアまたはインタリーブ手順にしたがって記憶ユニット５２０に書き込まれることが示されている。また、多重通信器５３２ｂは、ＡＰＰシンボル／外部情報が、リニアまたは逆インタリーブ手順にしたがって記憶ユニットから取り出されることを示している。
【００４８】
検出器５１２は、最後のデコード繰り返し後にＡＰＰシンボルを取得し、取得した情報ビットに対してハードデシジョンを与える。エネルギーメトリック計算機５１４は、情報ビット（あるいはＬＬＲ）に対してエネルギーメトリックを与える。このエネルギーメトリックは、検出された情報ビットの信頼度のもう一つの表示として使用されうる。
【００４９】
図６に示すように、コントローラ５４０は、ターボデコーダ５００の操作を指令し、更に、ターボデコードに必要な様々なパラメータ（例えばコードセグメントサイズ：Ｋ）を与える。
【００５０】
図６に示すターボデコーダ設計のために、記憶ユニット５２０は第１の構成成分デコーダからのＡＰＰデータと、第２の構成成分デコーダからの外部情報とを格納する。ＡＰＰデータと外部情報とは、構成成分デコーダからの２つの異なる型式の中間結果である。ここで使用されているように、中間結果は、ある構成成分デコーダから次のデコーダに送られるいくつかの情報を含むことができる。更に、これら情報は、いくつかの型式をもとりうる。一般に、ある構成成分デコーダに格納される中間結果の特定の型式は、ターボデコーダの具体的な設計に依存する。
【００５１】
コードインタリーブは、ターボエンコーダおよびデコーダにとって重要でかつ必須の部分である。ターボエンコーダにおけるコードインタリーブに対してどのようなスキームが選択されても、同一のスキームが第１の構成成分デコードからのＡＰＰシンボルを格納／取出するために適用される。また、相補するスキームもまた第２の構成成分デコードに対する外部情報を格納／取出するために適用される。
【００５２】
Ｗ−ＣＤＭＡ規格では、ターボエンコーダに対する具体的なインタリーブスキームを定義している。このインタリーブスキームは、以下に示す３段階に区分される。（１）コードセグメント（すなわちデータパケット）内の情報ビットを一行ずつＲ＊Ｃ配列に書き込む。（２）各行内において要素を再配列する（すなわち、行内置換）。（３）行の内部置換（すなわち行内置換）を行う。その後、ビットは、Ｒ＊Ｃ配列における上部の最も左側の要素から開始されることによって、一列毎にＲ＊Ｃ配列から読み出される。上記３段階については以下に具体例を用いて更に詳細に述べる。そしてこの具体例によって、インタリーブスキームがより理解されるであろう。
【００５３】
第１段階では、各コードセグメントにおけるビットが、Ｒ＊Ｃ配列に書き込まれる。Ｗ−ＣＤＭＡ規格は、４０ビットから５１１４ビットまでに亘る様々なサイズのコードセグメントをサポートしている。先ず第１に、配列における行の数Ｒが、以下に示すように、コードセグメントのサイズＫに基づいて決定される。
Ｒ＝５、ただし４０≦Ｋ≦１５９の場合、
Ｒ＝１０、ただし１６０≦Ｋ≦２００、または４８１≦Ｋ≦５３０の場合、
Ｒ＝２０、ただし上記以外のＫの場合。
【００５４】
次に、配列における列の数Ｃが、以下に示すようにＲとＫとに基づいて決定される。
Ｃ＝５３、  ただし４８１≦Ｋ≦５３０の場合、
上記以外の場合には、（ｐ＋１）・Ｒ≧Ｋになるようなプライム数ｐを選択する。
更に、Ｒ・Ｃ≧ＫになるようなＣ＝ｍｉｎ｛ｐ−１，ｐ，ｐ＋１｝からＣを選択する。
所定のＫに対してＲとＣとが一旦決定されると、コードセグメントにおけるビットがＲ＊Ｃ配列内に一行毎に書き込まれる。Ｋ≦Ｒ・Ｃであることから、配列の最下部には空白のセル（すなわち、いかなるビットも含まない１以上の行、あるいは部分）が存在しうる。
【００５５】
図７（ａ）は、コードセグメントにおけるビットがＲ＊Ｃ配列に書き込まれる手順を示す図である。この配列は、配列の上部左隅から始まって一度に一行埋められる。仮に、コードシーケンスにおけるビット数が配列のサイズに等しくない場合（すなわち、Ｋ≠Ｒ・Ｃの場合）には、図中に陰で示されたように、配列の最下部行には空白セルが存在する。
【００５６】
第２段階では、各行の要素が、当該行に対して特別に定義された行内置換シーケンスｃｊ（ｉ）に基づいて置換（すなわち、シャッフル）される。この行内置換は、一連のステップにしたがってなされる。第１のステップでは、長さｐの基本シーケンスｃ（ｉ）が生成される。第１段階で決定されたおのおのの可能なプライム数ｐに対し、プライム数に対応する基本根ｇ０が存在する。これは、Ｗ−ＣＤＭＡ規格で定義され、表１に示されている。基本シーケンスｃ（ｉ）の要素は、以下に示す式（１）にしたがって得られる。ここでｃ（０）＝１である。
【数２】
2004531116.tif 000003
【表１】
2004531116.tif 000004
第２段階における第２のステップでは、Ｒ個のプライム数のシーケンスｑｊが構築される。このプライム数シーケンスの要素は、以下の式（２）に示す基準を満足するように選択される。ここで、ｇ．ｃ．ｄは最大共通ディバイダであり、ｇ０＝１である。
【数３】
2004531116.tif 000005
プライム数シーケンスｑｊは、（ｐ−１）のファクターのプライム数を除き、本質的には、最小プライム数を増加させるシーケンスである。このプライム数シーケンスｑｊにおけるＲ個の要素は、配列の行にそれぞれ対応している。シーケンスｑｊにおけるＲ要素のおのおのは、関連している行に対応する行内置換シーケンスｃｊ（ｉ）の計算のために後で使用される。なお、これについては、後に詳述する。
【００５７】
プライム数シーケンスｑｊの０から（Ｒ−１）までのインデクスにおける要素が０から（Ｒ−１）までにそれぞれ相当しており、この行が、行内置換がなされた後の行内置換シーケンスＰｘにしたがって引き続き置換されているので、プライム数シーケンスｑｊにおける要素もまた、同じ行内置換シーケンスＰｘを用いて置換される。このシーケンスＰｘは、コードセグメントに対して、４つの可能なシーケンスＰＡ、ＰＢ、ＰＣおよびＰＤの中から選択される。なお、これについては後に詳述する。置換されたプライム数シーケンスｐｊの要素は、以下に示す式（３）にしたがって決定される。
【数４】
2004531116.tif 000006
第２段階の第３ステップでは、各行について、行内置換シーケンスｃｊ（ｉ）が以下に示す式（４）にしたがって決定される。
【数５】
2004531116.tif 000007
ここで、ｃｊ（ｐ−１）＝０であり、ｊは行内置換後の行のインデクス、ｃ（ｘ）は（１）式から導出されたベースシーケンスＣ（Ｘ）のｘ番目の要素、ｃｊ（ｉ）はｊ行目の置換後におけるｉ番目出力の入力ビットポジションである。従って、各行ｊに対する行内置換シーケンスｃｊ（ｉ）は、ベースシーケンスｃ（ｘ）と、その行に対応して置換されたプライム数シーケンスｐｊにおけるプライム数ｐｊとに基づいて得られる。各行内の要素は、置換された行におけるｉ番目のセル位置が、置換前の行におけるｃｊ（ｉ）番目のセル位置に格納された要素とともに格納されるように置換される。
【００５８】
上述したように、Ｃは、（ｐ−１）、ｐ、または（ｐ＋１）と等しくなりうる。従って、この行内置換シーケンスｃｊ（ｉ）は、以下の（５）式に示すように使用される。
【数６】
2004531116.tif 000008
第３段階において、配列におけるＲ行は、行内置換シーケンスＰｘに基づいて置換される。このシーケンスＰｘは、以下のようにＷ−ＣＤＭＡ規格で定義された４つの可能なシーケンスＰＡ、ＰＢ、ＰＣおよびＰＤの中から選択される。
【数７】
2004531116.tif 000009
コードセグメントに使用される特定の行内置換シーケンスは、以下の関係に基づいて選択される。すなわち、Ｋが［２０１、４８０］、［５３１、２２８０］、［２４８１、３１６０］、または［３２１１、５１１４］ビットに属している場合、ＰＡが選択される。Ｋが［２２８１、２４８０］、または［３１６１、３２１０］ビットに属している場合、ＰＢが選択される。Ｋが［１６０、２００］、または［４８１、５３０］ビットに属している場合（すなわちＫ＝１０の場合）、ＰＣが選択される。Ｋが［４０、１５５］ビットに属している場合、ＰＤが選択される（すなわち、Ｒ＝５であるいずれの場合にもＰＤを用いる）。行内置換は、置換前の配列におけるｊ番目の行が、置換後の配列におけるＰｘ（ｊ）行位置に移動するようにして行われる。
【００５９】
行内置換を行った後、Ｒ＊Ｃ配列から、上から下に向かって一列毎にビットが読み出される（すなわち、０行目から（Ｒ−１）行目まで）。上述したように、Ｋ≦Ｒ・Ｃであるので、配列におけるいくつかのセルは、有効なデータを含んでいない場合もある。そしてこれらのセルは、データを読み出している間にスキップされる。
【００６０】
明確にするために、上述したインタリーブスキームに対する例を以下に記す。本例においてＫ＝４０であり、それによりＲ＝５と選択される。その後、プライム数ｐ＝７に決定され、列Ｃの数はＣ＝８に決定される。このプライム数ｐの場合、対応する基本根ｇ０は３である。これらパラメータは以下の通り要約される。Ｋ＝４０，Ｒ＝５、Ｃ＝８、ｐ＝７、ｇ０＝３。式（１）を用いることによって、ベースシーケンスｃ（ｉ）は以下の通り決定される。
【数８】
2004531116.tif 000010
次に、式（２）から導出されたプライム数シーケンスｑｊは以下の通りである。
【数９】
2004531116.tif 000011
Ｋ＝４０であるので、行内置換シーケンスＰＤが選択される。この置換されたプライム数シーケンスＰｊは、等式
【数１０】
2004531116.tif 000012
に基づいてプライム数シーケンスｑｊから生成され、以下の式を与える。
【数１１】
2004531116.tif 000013
その後、各行ｊに対する行内置換シーケンスｃｊ（ｉ）が、その行とベースシーケンスｃ（ｉ）に対して置換されたプライム数ｐｊに基づいて決定される。第１の行（ｊ＝０）について、行に対し置換されたプライム数ｐ０＝１７であり、行内置換シーケンスｃ０（ｉ）は以下のように決定される。
【数１２】
2004531116.tif 000014
ここでＣ＝ｐ＋１であるので、ｃｊ（６）＝０、ｃｊ（７）＝７となる。５つの行についての行内置換シーケンスは、以下のように表される。
【数１３】
2004531116.tif 000015
図７（ｂ）は、Ｋ＝４０の場合の上記例に対するインタリーブを示す図である。第１段階において、Ｋ＝４０、Ｒ＝５、Ｃ＝８、Ｐ＝７、およびｇ０＝３の通りパラメータが決定される。その後、コードセグメントにおけるビットは、図７（ｂ）に示すように、０列０行から始まって７列４行で終わるように、Ｒ＊Ｃ（５＊８）配列７１０に一行毎に書き込まれる。
【００６１】
第２段階では、ベースシーケンスｃ（ｉ）がまず導出され、次にプライム数シーケンスｑｊが決定され、置換されることによって、置換後のプライム数シーケンスｐｊが導出される。５つの行の各々に対する行内置換シーケンスｃｊ（ｉ）は、上記に示したようにして決定される。その後、Ｒ＊Ｃ配列における各行における要素が、その行に対応する行内置換シーケンスｃｊ（ｉ）に基づいてシャッフルされる。例えば、０行について、行内置換された配列７１２における行インデクス{０,１,２,３,４,５,６,７}のセルは、置換前の配列７１０では行インデクス{１,５,４,６,２,３,０,７}からのセル値で埋められる。同様に、１行について、配列７１２の行インデクス{０,１,２,３,４,５,６,７}におけるセルは、配列７１０の行インデクス{１,３,２,６,４,５,０,７}からのセル値で埋められる。また、Ｋ＝Ｒ・Ｃであるので、行インデクスｃR-１（７）におけるセルが、行インデクスｃR-１（０）におけるセルと交換される。ここで、ｃR-１（０）とｃR-１（７）とは、行内置換後の要素である。
【００６２】
第３段階において、配列７１２における行は、行内置換シーケンスＰＤにしたがってシャッフルされ、最終インタリーブ配列７１４を得る。その後、配列７１４におけるセルは、次に示す手順｛３４、２６、１８、１０、８、３６、２８、・・・、１６、２｝にしたがって読み出される。
【００６３】
上述したように、Ｗ−ＣＤＭＡ規格により定義されるインタリーブは、複雑な処理である。実用的な適用では、このようなインタリーブを達成するために、コードセグメントに対するビットが、特定の手順（例えば、リニアまたはインタリーブ）にしたがってメモリユニットに格納され、相補的な手順（すなわち、インタリーブまたはリニア）にしたがってメモリユニットから取り出される。
【００６４】
本発明の局面は、Ｗ−ＣＤＭＡ規格によって定義されたターボコード用のインタリーブのために必要なメモリアドレスを効率的に生成する技術を提供する。ある局面では、アドレス生成を促進するために、インタリーブ後のアドレスを生成するために用いられる様々なシーケンス値を格納する多くのルックアップテーブル（ＬＵＴ）が備えられている。これらのテーブルを用いることによって、計算を促進し、少ない時間で必要なアドレスを生成することを可能とする。このアドレス生成は、ターボデコードのボトルネックとはならない。ここに格納されたテーブルの幾つかとシーケンスは、以下に記載される。
【００６５】
もう一つの局面では、これらテーブルに基づいて効率的にアドレスを生成する技術が提供されている。インタリーブ後のアドレスの生成技術は、ターボエンコードのために使用されるほか、特にコンピュータ処理を多く行うターボデコードに対して有利である。適切なアドレス生成は、特に高いデータ速度がサポートされている場合や、ターボデコードが繰り返し行われることを考慮すると、効率的なターボデコードのために必要不可欠である。
【００６６】
ＰＲＩＭＥテーブルは、使われうる全てのプライム数ｐを格納している。Ｗ−ＣＤＭＡ規格によってサポートされたすべての可能なコードセグメントサイズに対し、合計５２のプライム数ｐが存在する。すなわち、ＰＲＩＭＥテーブルは、表２に例示するように、５２のプライム数に対して、０から５１までインデックスされた５２の入力を含んでいる。最も大きいプライム数は２５７であるので、おのおののテーブル入力は、９ビットで実施される。特定のプライム数は、ＰＲＩＭＥテーブルのための適切なインデックスｐｉｎｄを渡すことによって取り出される。
【表２】
2004531116.tif 000016
ＩＮＴＲＯＷテーブルは、４つの行内置換シーケンスＰＡ、ＰＢ、ＰＣおよびＰＤを格納している。ＰＡ、ＰＢ、ＰＣおよびＰＤシーケンスは、それぞれ２０、２０、１０、および５の入力を含んでいる。そして、これらシーケンスは、それぞれＩＮＴＲＯＷテーブルにおいて０，２０，４０，および５０からはじまるアドレスに格納される。
【００６７】
ＩＮＴＲＡＢＡＳＥテーブルは、ＰＲＩＭＥテーブルにリストされた５２のプライム数ｐに対する５２の行内ベースシーケンスｃ（ｉ）を格納する。式（１）に示すように、各プライム数ｐは、（ｐ−１）の長さを有する対応する行内ベースシーケンスｃ（ｉ）に対応している。１から２５６までの値のｃ（ｉ）範囲の要素、およびｃ（ｉ）に代わるｃ（ｉ）−１は、８ビットを用いたＩＮＴＲＡＢＡＳＥテーブルに格納される。
【００６８】
行内ベースシーケンスｃ（ｉ）に対して格納された値ｃ（ｉ）−１は、Ｃ＝ｐ−１の場合に直接的に使用されうる。Ｃ＝ｐあるいはＣ＝ｐ＋１の場合には、格納されたｃ（ｉ）−１の値は、その後に使用されるｃ（ｉ）を得るために１が加算される。
【００６９】
ＩＮＴＲＡＤＤＲテーブルは、ＩＮＴＲＡＢＡＳＥテーブルに格納された５２の行内ベースシーケンスｃ（ｉ）の開始アドレスを格納する。各ベースシーケンスｃ（ｉ）は可変長（すなわち、（ｐ−１）の）であるので、ＩＮＴＲＡＤＤＲテーブルは、ＩＮＴＲＡＢＡＳＥテーブルにおける各ベースシーケンスｃ（ｉ）の開始アドレスを迅速に識別するために使用される。この開始アドレスは、要求されたベースシーケンスの個別の要素を取り出すためのオフセットとして用いられる。
【００７０】
Ｙテーブルは、ＰＲＩＭＥテーブルにリストされた５２のプライム数ｐに対する５２のプライム数シーケンスｑｊを格納する。式（２）に示すように、各プライム数ｐは、長さＲを有する対応するプライム数シーケンスｑｊに関連している。なお、Ｒは５，１０または２０であり、大抵２０である。代わりの実施例では、置換されたプライム数シーケンスｐｊが代わりにＹテーブルに格納される。各プライム数シーケンスｑｊのＲ要素は、行内置換シーケンスＰｘに関連して置換される。このシーケンスＰｘは、コードセグメントのサイズＫに依存してＰＡ、ＰＢ、ＰＣまたはＰＤになりうる。従って、各プライム数シーケンスｑｊは、関連する行内置換シーケンスＰｘに基づいて置換され、置換されたプライム数シーケンスｐｊとして格納される。
【００７１】
置換されたプライム数シーケンスｐｊにおけるＲ要素のおのおのは、式（４）に示すように、それぞれ対応する行内置換シーケンスｃｊ（ｉ）を生成するために用いられる。各行に対する行内置換シーケンスｃｊ（ｉ）の要素は、以下のようにして導出される。
【数１４】
2004531116.tif 000017
ここで、ｘ＝［ｉ・ｐｊ］ｍｏｄｕｌｏ（ｐ−１）である。ベースシーケンスｃ（ｘ）に対する引数ｘはまた、以下のように表される。
【数１５】
2004531116.tif 000018
必要な記憶容量を減らし、置換されたプライム数シーケンスｐｊに基づいて残りの計算を簡素化するために、プライム数シーケンスｑｊの要素は、モジュロ（ｐ−１）区分後に格納され、次のように表される。
【数１６】
2004531116.tif 000019
従って、ｑｊモジュロ（ｐ−１）が、ｑｊの代わりにＹテーブルに格納される。５２の全てのシーケンスに対する最大値は８９であることが示されている。したがって、おのおのの要素は７ビットを用いて格納される。
【００７２】
ある実施例では、Ｙテーブルのアドレスを簡略化するために、５２のシーケンスｑｊのおのおのが、対応する開始アドレスにおいて開始する格納がなされることによって、２０の入力を用いてＹテーブル内に格納される。各シーケンスにおける入力は、式
ｐｉｎｄ＊２０＋ｏｆｆｓｅｔ  を用いてアドレスされる。ここで、ｐｉｎｄはシーケンスに対応するプライム数ｐのインデクスであり、ｏｆｆｓｅｔはシーケンス内において要求された要素のオフセットである。
【００７３】
図８は、Ｗ−ＣＤＭＡ規格により定義されたインタリーブスキームのためのアドレス生成を促進するために用いられるテーブルを示している。ＰＲＩＭＥテーブルは５２のプライム数ｐについての５２の入力を含んでいる。ＩＮＴＲＯＷテーブルは、４つの行内置換シーケンスＰＡ、ＰＢ、ＰＣおよびＰＤに対する５５の入力を含んでいる。ＩＮＴＲＡＢＡＳＥテーブルは、５２の異なる開始アドレスにおける５２のプライム数ｐについての５２の行内ベースシーケンスｃ（ｉ）用に、おおよそ６Ｋの入力を含んでいる。ＩＮＴＲＡＤＤＲテーブルは、ＩＮＴＲＡＢＡＳＥテーブルに格納された５２の行内ベースシーケンスｃ（i）の開始アドレス用の５２の入力を含んでいる。Ｙテーブルは、５２のプライム数に対応する５２のプライム数シーケンスｑｊ用の１０４０の入力を含んでいる。
【００７４】
上記のように定義されたテーブルを用いて、既知のＲとＣとで表される所定のコードセグメントサイズＫに対するインタリーブ後のアドレスを生成するために、処理を工夫することができる。この処理は、以下に示すような疑似コードを用いて表される。この疑似コードの記載もまた後述する。
【００７５】
上述した疑似コードは、以下に示すようにしてインタリーブ後のアドレスを生成する。コードセグメントにおけるＫ要素は、上述されたような方法および図７（ａ）に示すような方法（すなわち、１行ずつ）によってＲ＊Ｃ配列に書き込まれると仮定されている。以下に示すパラメータＫ、Ｒ、Ｃ、ｐｉｎｄ、およびｉｎｔｒｏｗ＿ｓｔはまた、疑似コードを実行する前のコードセグメントとして知られていると仮定されている。ここで、ｐｉｎｄは、ＰＲＩＭＥテーブルのためのインデックスである。また、ｉｎｔｒｏｗ＿ｓｔは、ＩＮＴＲＯＷテーブルにおいて必要とされる行内置換シーケンスＰｘの開始アドレスである。これらのパラメータは、処理中のコードセグメントのサイズについての情報を持ったコントローラ（例えば図６におけるコントローラ５４０）に備えられている。
【００７６】
まず、プライム数ｐがインデックスｐｉｎｄ（図１１における第１０行目）を用いてＰＲＩＭＥテーブルから決定される。次に、対応するベースシーケンスｃ（ｉ）の開始アドレスがＩＮＴＲＡＤＤＲテーブルから決定される（図１１における第２０行目）。現在の行および列の番号に対して用いられている変数ｒ＿ｉｎおよびｃ＿ｉｎがゼロに初期化される（図１１における第３０行目および第４０行目）。
【００７７】
次にＦＯＲループが実行され、コードセグメントにおけるＫ要素のおのおのに対し、インタリーブ後のアドレスを生成する（第５０行目および第６０行目）。コードセグメントにおける各要素についての行および列の番号ｒ＿ｎｅｗおよびｃ＿ｎｅｗに対し、インタリーブ後のＲ＊Ｃ配列の要素の位置が、この処理で生成される。まず、現在の行番号ｒ＿ｉｎに対して置換された行番号ｒ＿ｎｅｗが、ＩＮＴＲＯＷテーブルから取り出された行内置換シーケンスＰＸに基づいて決定される（第７０行目）。
【００７８】
次に、置換された列番号ｃ＿ｎｅｗが決定される。これは、まずＹテーブルから、現在の行ｒ＿ｉｎに相当するプライム数シーケンスｑｊにおける要素を取り出すことによってなされる（第８０行目）。その後、引数ｘを評価することによって、以下に示す式が決定される。
【数１７】
2004531116.tif 000020
引数ｘは数ステップを用いて再帰的に評価されることが示される。まず、仮に
ｘｉ−１＝［（ｉ−１）・ｑｊ］ｍｏｄｕｌｏ（ｐ−１）、ただし、ｉ＞１，２，・・、（ｐ−２）である場合には、ｘｉ＝［ｘｉ−１＋ｑｊ］ｍｏｄｕｌｏ（ｐ−１）となる。ここでｘ０＝０である。したがって、[（ｉ−１）・ｑｊ]に対する多重化操作は、［ｘｉ−１＋ｑｊ］に対する付加的な操作によって置き換えることができる。第２に、ｑｊ≦（ｐ−１）であるが故にｘｉ＜２・（ｐ−１）であり、（ｐ−１）によるモジュロの後に格納されるので、ｘｉを生成するためのモジュロ（ｐ−１）操作は、ｘｉが（ｐ−１）より大きい場合には、単にｘｉから（ｐ−１）を減じることによってなされる。仮に引数ｘが再帰的に解かれるのであれば、一時的な配列ｃ＿ｉｄｘ［］が現在の値ｘ（すなわちｘｉ）を格納するために用いられる。値ｘは、次回のｘの値（すなわちｘｉ＋１）を計算するために後で使用される。
【００７９】
現在の行ｒ＿ｉｎに対する一時的な配列ｃ＿ｉｄｘ［］における要素は、第１列に関し０にセットされる（第９０行目）。おのおのの次の列について、現在の行ｒ＿ｉｎに対応する値ｑｊは、Ｙテーブルから取り出され、前回の引数値（すなわちｘｉ−１）に加えられる。そして、ｃ＿ｉｄｘ[ｒ＿ｉｎ]において一時的な配列に格納される（第１００および１１０行目）。仮に、その結果得られた値が（ｐ−１）と等しいかそれより大きな値である場合には、その結果から（ｐ−１）が減じられることによって（ｐ−１）によるモジュロが実行され、現在の列に対する引数ｘを生成する（第１２０および１３０行目）。
【００８０】
その後、ベースシーケンスｃ（ｉ）におけるｘ番目の要素を探索することによってｃｊ（ｉ）に対する値が得られる。この値はｉｎｔｒａ＿ｓｔのオフセットにおいて開始するＩＮＴＲＡＢＡＳＥテーブルに格納される。仮に、列Ｃの数が（ｐ−１）に等しい場合には、ＩＮＴＲＡＢＡＳＥテーブルから得られたｃｊ（ｉ）−１の値が、式（５）における第１の式に示されるように直接使用される（第１５０行目）。さもなければ、ＩＮＴＲＡＢＡＳＥテーブルから得られたｃｊ（ｉ）−１の値に１が加えられｃｊ（ｉ）が得られる。その後、この値は入力列番号０から（ｐ−２）に対して使用される（第１６０から１８０行目）。
【００８１】
仮に、Ｋ＝Ｒ・Ｃであり、Ｃ＝ｐ＋１である場合には、式（５）の最後の式に示すようにｃＲ−１（ｐ）はｃＲ−１（０）と交換される。これは、ｒ＿ｉｎが（Ｒ−１）でかつｃ＿ｉｎが０である場合（第１９０および２００行目）に、ｃＲ−１（０）を変数「ｌａｓｔ」に書き込み、式（５）の第３の式に示すように、ｃ＿ｎｅｗを、Ｃ＝ｐ＋１の場合にはｐに等しいｃＲ−１（ｐ）にセットすることによってなされる（第２１０行目）。（ｃ＿ｎｅｗは、初期値として第１８０行目でｃＲ−１（０）にセットされる。その後、第２００行目ではｃ＿ｎｅｗにセットされる。つまりｃＲ−１（０）を「ｌａｓｔ」に格納する。）その後、ｒ＿ｎｅｗが（Ｒ−１）でありｃ＿ｉｎがｐである場合には、ｃ＿ｎｅｗがｃＲ−１（０）にセットされる。これは、以前に変数「ｌａｓｔ」に格納されたものである（第２５０および２６０行目）。
【００８２】
仮にｃ＿ｉｎが（ｐ−１）である場合には、ｃ＿ｎｅｗはゼロにセットされる。というのも、式（５）における第２および第３の式に示すようにｃｊ（ｐ−１）は０だからである（第２４０行目）。そして、ｃ＿ｉｎがｐである場合には（ｃＲー１（ｐ）がｃＲ−１（０）によって交換され、Ｋ＝Ｒ・Ｃ、Ｃ＝ｐ＋１、ｒ＿ｉｎ＝Ｒ−１である場合を除いて）、式（５）に示す第３および第４の式に示すように、ｃｊ（ｐ−１）＝ｐであるので、ｃ＿ｎｅｗがｐにセットされる（第２５０行目）。
【００８３】
変数ｒ＿ｎｅｗおよびｃ＿ｎｅｗは、インタリーブ後のＲ＊Ｃ配列における行および列の数を示している。コードセグメントにおける要素は、１次元の記憶ユニット（例えば０からＫ−１までのアドレス）に格納されているので、置換された行および列の番号であるｒ＿ｎｅｗおよびｃ＿ｎｅｗは、インタリーブ後のアドレスａｄｄｒ＿ｎｅｗに変換される（第３００行目）。したがって、ｉのメモリアドレスにおける要素は、インタリーブ後のメモリアドレスａｄｄｒ＿ｎｅｗにマッピングする。
【００８４】
入力行および列の番号であるｒ＿ｉｎおよびｃ＿ｉｎはその後インクリメントされる（第３１０および３２０行目）。インタリーブ後の配列内の要素が一列毎に読み出されるので、行カウンタがＲ＊Ｃ配列の終わりに達した場合（第３２０行目）には、まず行番号がインクリメントされ、次に列番号がインクリメントされる。この場合、行番号はゼロにリセットされる。
【００８５】
生成されたインタリーブ後のアドレスａｄｄｒ＿ｎｅｗは、コードセグメントサイズ（Ｋ−１）を超える場合がある。図７（ａ）に示すように、コードセグメントサイズＫはＲ・Ｃ未満であり、この場合、Ｒ＊Ｃ配列では１またはそれ以上のセルが使用されない。すなわち、ａｄｄｒ＿ｎｅｗ≧Ｋである条件は、生成されたアドレスに対応する有効データが存在せず、新たなインタリーブ後のアドレスが計算される。疑似コードを用いた最後の「Ｉｆ」節（第３３０行目）は、この状態を取り扱い、ＬＯＯＰの先頭（第６０行目）に戻ることによってもう一つのインタリーブ後のアドレスを計算する。
【００８６】
上述したようなインタリーブ後のアドレスを生成するテクニックは、ソフトウェア、ハードウェア、またはそれらの組み合わせによって実施されうる。所定の応用例（例えば、高速ターボデコード）のために、インタリーブ後のアドレスは、高速で生成される必要がある場合もありうる。このような応用のために、複数のルックアップテーブルと組み合わせたハードウェア回路素子が、必要とされるインタリーブ後のアドレスを迅速に生成するために用いられ得る。
【００８７】
ある実施例では、各クロックサイクルに対して１つの有効なインタリーブ後のアドレスが生成されることを保証するために、２つのアドレス生成ユニットが備えられている。これによって、２つの新たなアドレスを同時に生成する。上述したように、計算されたインタリーブ後のアドレスａｄｄｒ＿ｎｅｗは、コードセグメントサイズＫを超える場合がある。この場合、無効となる。仮に、第１のインタリーブ後のアドレスが有効範囲内にある（ａｄｄｒ＿ｎｅｗ＜Ｋ）場合には、このアドレスは廃棄され、第２のインタリーブ後のアドレスが使用される。２つの連続的なインタリーブ後のアドレスは無効ではないというターボインタリーバの特性のために、２つのアドレス生成ユニットがあれば十分である。図９は、本発明の実施の形態に係り、インタリーブ後のアドレスを与えることが可能なアドレス生成器８００のブロック図である。アドレス生成器８００は、上述された疑似コードをほぼ扱い、２つのインタリーブ後のアドレスを同時に生成することが可能な２つのアドレス生成ユニット８１０ａおよび８１０ｂを含んでいる。仮に、有効なインタリーブ後のアドレスがおのおののクロックサイクルにおいてターボデコーダによって必要とされた場合には、各クロックサイクルに対して、少なくとも１つの有効なインタリーブ後のアドレスを確実に生成するために、２つのアドレス生成ユニット８１０を用いることができる。
【００８８】
図９に示すように、（リニア手順による）入力アドレスは、加算器８１２によって、カウンタ８１６からの不正アドレスカウント値ｂａｄ＿ａｄｄｒ＿ｃｎｔが加算される。これによって第１のアドレスが得られる。まず、コードセグメントの開始時においてカウンタ８１６がゼロにセットされる。その後、第１のアドレスがアドレス生成ユニット８１０ａに提供される。引き続き、入力アドレスが規則的にインクリメントされる（例えば、各クロックサイクルに対して１つずつのように）。「不正なアドレス」が登録されるたびに、カウンタ８１６は、リニアアドレス（入力アドレス）における１回のカウントによって「早められる」。カウンタ８１６は、入力アドレスに必要とされ、入力アドレスからの適切なオフセットとして使用される「早められた」回数をカウントする。例えば、不正なアドレスが発生した場合であって、入力アドレスが２の場合には、ｂａｄ＿ａｄｄｒ＿ｃｎｔに１がインクリメントされ、アドレス生成器に与えられた第１のアドレスは２に代わって３となる。入力アドレスが５であって、もう一つの不正アドレスが発生した場合には、ｂａｄ＿ａｄｄｒ＿ｃｎｔに２がインクリメントされ、アドレス生成器に与えられた第１のアドレスは５に代わって７となる。
【００８９】
アドレス生成ユニット８１０ａ内では、第１のアドレスが分割ユニット８２２に与えられる。分割ユニット８２２は、第１のアドレスをＲに分割し、第１のアドレスに対応するＲ＊Ｃ配列における入力行の商表示ｒ＿ｉｎおよび入力列の剰余表示ｃ＿ｉｎを提供する。その後、行マッピングユニット８２４によって、入力行番号ｒ＿ｉｎが置換後の行番号ｒ＿ｎｅｗにマッピングされる。行マッピングユニット８２４は、ＩＮＴＲＯＷテーブルを使って行内置換を行う。この置換後の行番号は、乗算器８２６によって列の数Ｃと掛け合わされる。その結果である積ｒ＿ｏｓは、置換後の行ｒ＿ｎｅｗに対する記憶ユニット内の開始アドレス（すなわち、行オフセット）を表示している。
【００９０】
入力行番号ｒ＿ｉｎもまたユニット８３２に与えられる。ユニット８３２は、ｐｉｎｄで表されるように、行番号に関連したプライム数ｑｊを与える。ユニット８３２は、ｑｊを与えるためにＹテーブルを保持、または参照する。プライム数ｑｊと入力列番号ｃ＿ｉｎとは、モジュロ加算器８３４に提供され、行内置換（すなわち、式（４）で示すような行内置換ｃ＿ｉｄｘ＝［ｉ×ｑｊ］ｍｏｄｕｌｏ（ｐ−１）のための列インデクスｃ＿ｉｄｘが生成される。この列インデックスｃ＿ｉｄｘは、列マッピングユニット８３６に与えられる。列マッピングユニット８３６は、この入力アドレスに対応する置換後の列番号ｃ＿ｎｅｗを与える。ユニット８３６は、置換後の列番号ｃ＿ｎｅｗを得るためにＩＮＴＲＡＢＡＳＥテーブルを保持、または参照する。その後、加算器８２８は、置換後の列番号ｃ＿ｎｅｗを取得し、これに行の開始アドレスｒ＿ｏｓを加算して第１のインタリーブ後のアドレスｉｎｔ＿ａｄｄｒ１を生成する。
【００９１】
この第１のアドレスはまた加算器８１４によってインクリメントまたはデクリメントされ（入力アドレスがインクリメントされているか、デクリメントされているかによって）、アドレス生成ユニット８１０ｂに第２のアドレスを提供する。この第２のアドレスは、第１のアドレスと隣接しており、仮に第１のアドレスが無効なインタリーブ後のアドレスになった場合に用いられる。ユニット８１０ｂはユニット８１０ａと同様にして動作する。そして、第２のアドレスに対応する第２のインタリーブ後のアドレスｉｎｔ＿ａｄｄｒ２を提供する。
【００９２】
検出器８３８は、第１のインタリーブ後のアドレスｉｎｔ＿ａｄｄｒ１を取得し、このアドレスが有効であるか否か（すなわち、ｉｎｔ＿ａｄｄｒ１＜Ｋであるか否か）を判定する。その後、このアドレスは廃棄され、第２のインタリーブ後のアドレスがインタリーブ後のアドレスとしてマルチプレクサ８４０から与えられ、カウンタ８１６がインクリメントされる。従って、マルチプレクサ８４０は、第１および第２のインターリーブ後のアドレスｉｎｔ＿ａｄｄｒ１およびｉｎｔ＿ａｄｄｒ２を取得し、検出器８３８からの制御信号に基づいて、これらアドレスのうちの１つを出力インタリーブアドレスｉｎｔ＿ａｄｄｒとして提供する。
【００９３】
カウンタ８１６は、コードセグメント用に生成された不正なアドレスの数をカウントする。カウンタ８１６からの不正なアドレスカウントｂａｄ＿ａｄｄｒ＿ｃｎｔは、加算器８１２によって入力アドレスに加算され、インタリーブ後のアドレス計算用に更新された入力アドレス（すなわち、第１のアドレス）を生成する。
【００９４】
図１０は、本発明の実施例に係り、連続的な入力アドレスのシーケンスのための入力行および列の番号であるｒ＿ｉｎおよびｃ＿ｉｎのシーケンスを生成することが可能なユニット８２２ａの図である。ユニット８２２aは、図９に示す分割ユニット８２２の一適用例を示している。コードセグメントの要素がリニア規則にしたがって納され、インタリーブ規則にしたがって取得されることを想定している。
【００９５】
ユニット８２２a内では、コードセグメントにおける要素の番号をカウントダウンするためにカウンタ９１０が使用される。カウンタ９１０は、先ず制御信号「ｓｔａｒｔ」によって（Ｋ−１）の値から読み込まれ、その後ゼロまでカウントダウンされる。カウンタ９１０が０に達すると、レジスタ９１２は低にリセットされ、開始制御信号がレジスタを設定するまでは行および列番号は生成されない。レジスタ９１２は、制御信号「ｅｎｂ」を与える。これによって、コードセグメントに対する行および列番号をＫセット発生させる。
【００９６】
入力アドレスは連続しているので、ユニット８２２ａは、分割処理を行う代わりに、２つのカウンタを用いて行および列番号であるｒ＿ｉｎおよびｃ＿ｉｎを生成する。カウンタ９２２は行番号ｒ＿ｉｎを生成する。そして、Ｒ＊Ｃ配列が、インタリーブアドレス規則にしたがって１列毎にアクセスされるので、まず行番号ｒ＿ｉｎがインクリメントされる。カウンタ９２４は列番号ｃ＿ｉｎを生成する。そして、行番号が（Ｒ−１）に達したとコンパレータ９２６によって決定されると、次に列番号ｃ＿ｉｎがインクリメントされる。上述したように不正なアドレスが時折生成されるので、不正なアドレスが検出された場合には、カウンタ９２２が１カウントスキップされる（すなわち２カウントする）。このメカニズムは、不正なアドレスに対して自動的になされる。行カウンタが（Ｒ−１）に達し、スキップが行われる場合、「１」という値が行カウンタ９２２に加えられることに留意すべきである。ＡＮＤゲート９３２、レジスタ９３４、ＯＲゲート９３６は、「ｂａｄ＿ａｄｄｒ」が正の場合には、カウンタ９２２を２つインクリメントさせる。
【００９７】
入力アドレスが、インクリメントの代わりにデクリメントされた場合には、行および列カウンタは、カウントアップの代わりにカウントダウンする（図１０には図示していない。）。デクリメントされたインタリーブ後のアドレスは、いくつかのターボデコーダの設計に必要な場合がある。
【００９８】
図１２は、ユニット１０００の実施例を示す図である。ユニット１０００は、入力行および列番号であるｒ＿ｉｎ およびｃ＿ｉｎを、置換後の行および列番号であるｒ＿ｎｅｗおよびｃ＿ｎｅｗにマップする。ユニット１０００は、図９におけるアドレス生成ユニット８１０の分割ユニット８２２を除いた全ての要素を適用するのに使用することが可能である。
【００９９】
コードセグメントサイズKに対応しているプライム数インデックスｐｉｎｄは、ＰＲＩＭＥテーブルとＩＮＴＡＤＤＲテーブルとに与えられる。これらはそれぞれプライム数ｐと開始アドレスｉｎｔｒａ＿ｓｔとを、ＩＮＴＲＡＢＡＳＥテーブルにおける要求された行内ベースシーケンスｃ（ｉ）に与える。プライム数ｐは、加算器によって１つインクリメントされ（ｐ＋１）となる。また、加算器によって１つデクリメントされ（ｐ−１）となる。これらの値は、ユニット１０００内における種々のコンパレータによって使用される。
【０１００】
特定の行内置換シーケンスＰｘ（ＰｘはＰＡ、ＰＢ、ＰＣまたはＰＤ）の表示は、ＩＮＴＲＯＷ  ＳＴＡＲＴテーブルに与えられる。これは、開始アドレスｉｎｔｅｒｏｗ＿ｓｔを、ＩＮＴＲＯＷテーブルの必要とされるシーケンスＰｘに与える。入力行番号ｒ＿ｉｎは、加算器によって開始アドレスｉｎｔｅｒｏｗ＿ｓｔが加算され、ＩＮＴＲＯＷテーブル用のアドレスが生成される。その後、入力行番号ｒ＿ｉｎおよび内部行置換シーケンスＰＸに対応した置換後の行番号ｒ＿ｎｅｗを与える。
【０１０１】
プライム数インデクスｐｉｎｄもまた乗算器によって２０倍され、結果の値が加算器によって入力行番号ｒ＿ｉｎに加算され、Ｙテーブル用のアドレスが生成される。その後、Ｙテーブルは、入力行および処理中のプライム数に対応するプライム数ｑｊを与える。
【０１０２】
その後、加算器は、プライム数ｑｊに、ラッチに格納された前回の列インデクスｃ＿ｉｄｘを加え、中間列インデクスを生成する。仮に、中間列インデクスが（ｐ−１）よりも小さいとコンパレータによって判定された場合には、それはマルチプレクサから与えられる。さもなければ、中間列インデクスは、加算器によって（ｐ−１）まで減じられ、その結果がマルチプレクサから与えられる。ラッチ、コンパレータ、加算器、およびマルチプレクサは、上述された再帰的手法を用いて関数ｘｉ＝［ｉ−ｑｊ］ｍｏｄｕｌｏ（ｐ−１）を効果的に実行する。仮に、ｃ＿ｉｎ＝０であるとコンパレータによって判定された場合には、列インデクスｃ＿ｉｄｘは、マルチプレクサを介してゼロに設定される。さもなければ、列インデクスｃ＿ｉｄｘはマルチプレクサからの出力に設定される。したがって、第２のマルチプレクサは、列インデクスｃ＿ｉｄｘを与える。
【０１０３】
更に、加算器は、望ましい行内ベースシーケンスｃ（ｉ）の開始アドレスｉｎｔｒａ＿ｓｔに列インデクスｃ＿ｉｄｘを加算し、ＩＮＴＲＡＢＡＳＥテーブルのアドレスを生成する。その後、ＩＮＴＲＡＢＡＳＥテーブルは、取得された列インデクスに対応する値ｃｊ（ｘ）−１（ｘ＝ｃ＿ｉｄｘの場合）を与える。もう一つの加算器は、ｃｊ（ｘ）−１に１を加え、ｃｊ（ｘ）を与える。第３のマルチプレクサは、ｃｊ（ｘ）と、ｃｊ（ｘ）−１との両方を取得するために適用される。また、もう一つのコンパレータによってＣ＝ｐ−１と決定された場合には、ｃｊ（ｘ）−１をｃ＿ｔｅｍｐとして、その他の場合にはｃｊ（ｘ）をｃ＿ｔｅｍｐとして与えるために適用される。
【０１０４】
更なるロジックが、様々な条件において置換された列番号ｃ＿ｎｅｗを生成するために適用されることも留意すべきである。
【０１０５】
このアドレス生成技術は、Ｗ−ＣＤＭＡシステムにおけるアップリンクターボコードと同様に、ダウンリンクにおいてインタリーブ後のアドレスの生成にも使用されうる。
【０１０６】
明確化のために、このアドレス生成は、Ｗ−ＣＤＭＡ規格で定義された特別なターボコードインタリーブスキームとして記載されている。各ＣＤＭＡ規格は、Ｗ−ＣＤＭＡ規格を含む他のＣＤＭＡ規格とは異なったコードインタリーブスキームを定義しうる。例えば、ｃｄｍａ２０００規格では、列がビットリバーサルルールに従って置換されるようなインタリーブスキームが定義されている。例えば、行１（００００１）が行１６（１００００）と交換され、行３（０００１１）が行２４（１１０００）と交換されるなどである。これら異なるコードインタリーブスキームのために、テーブル内に格納されるスキームは、Ｗ−ＣＤＭＡ規格で定義されたインタリーブスキームである上記記述とは異なるものとなる傾向にある。
【０１０７】
ここで記載されたアドレス生成技術は、ソフトウェア、ハードウェア、またはそれらの組み合わせに適用されうる。ハードウェアへの適用に関し、アドレス生成器は、１つ以上のデジタル信号プロセッサ（ＤＳＰ）、アプリケーションに特有な集積回路（ＡＳＩＣ）、プロセッサ、マイクロプロセッサ、コントローラ、マイクロコントローラ、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、プログラマブルロジックデバイス、その他の電子部品、または上記何れかによる組み合わせに適用しうる。アドレス生成器は、分離ユニットとして適用され、コントローラや記憶ユニット内に集積され、他のプロセス要素を含むＡＳＩＣ内や他の設計を通じて適用される。ソフトウェアへの適用に関し、インタリーブ後のアドレスは、プロセッサ（たとえば図６におけるコントローラ５４０）で実行されたプログラムコードによって生成されうる。インタリーブ後のアドレスを生成するのに適用される疑似コードの一例は上述されているが、多くの他の適用もまた可能であり、本発明の範囲に含まれうる。
【０１０８】
テーブルや記憶ユニットもまた、ＲＡＭ、ＤＲＡＭ、フラッシュメモリ、あるいはその他のような様々な記憶技術を用いて適用することが可能である。テーブルや記憶ユニットの様々な構造や適用が可能であり、本発明の範囲に含まれる。
【０１０９】
好適な実施例の前述した技術によって、当該技術における当業者であれば、本発明の実現および利用が可能である。これらの実施例に対する様々な改良は、当該技術における当業者であれば明らかなことであって、ここで定義された一般的な原理は、発明的な能力を持たずしても他の実施例に適用することが可能である。すなわち、本発明は、ここで示された実施例に限定したものを意図しておらず、ここで開示された原理や新規の特徴を有する最も広い範囲に相当している。
【図面の簡単な説明】
【０１１０】
【図１】本発明の様々な局面を適用することが可能な通信システムの簡略ブロック図である。
【図２】送信器ユニットにおいて処理される信号のダイヤグラムである。
【図３】受信器ユニットにおいて処理される信号のダイヤグラムである。
【図４】Ｗ−ＣＤＭＡ規格で定義されたターボエンコーダを示す図である。
【図５】具体的なターボデコーダ設計を示すブロック図である。
【図６】具体的なターボデコーダの適用を示すブロック図である。
【図７】Ｗ−ＣＤＭＡ規格で定義されたターボインタリーブスキーム用のＲ＊Ｃ配列にコードセグメントにおけるビットが書き込まれる手順を示す図、およびコードセグメントサイズが４０である例におけるインタリーブを示す図である。
【図８】Ｗ−ＣＤＭＡ規格で定義されたインタリーブスキーム用のアドレス生成を促進するために使用されるテーブルを示す図である。
【図９】本発明の実施例に対応してインタリーブ後のアドレスを備えることが可能なアドレス生成器のブロック図である。
【図１０】一連の入力アドレスのシーケンスに対してなされる行および列の番号のシーケンスを生成することが可能なユニットの図である。
【図１１】インタリーブ後のアドレスを生成するプログラムのリストの一例を示す図である。
【符号の説明】
【０１１１】
１００…通信システム、１１０…送信器ユニット、１１２…データソース、１１４…送信データプロセッサ、１１６…送信器、１１８，１３２…アンテナ、１３０…受信器ユニット、１３４…受信器、１３６…受信データプロセッサ、１３８…データシンク、２１０，２６０…トランスポートチャンネル処理部、３００…ターボエンコーダ、３１２…構成成分エンコーダ、３１４，４１２…コードインタリーバ、３１６…パンクチャ部／多重通信部、３２２…遅延素子、３２４，８１２，８１４，８２８，８３４…加算器、３２６…スイッチ、４００…ターボデコーダ、４０８…合計器、４１０…構成成分デコーダ、４１４…コード逆インタリーバ、４１６，５１２，８３８…検出器、５００…ターボデコーダ、５０２…チャンネル逆インタリーバ、５０６…入力インタフェースユニット、５０８…ローカルメモリ／結合器、５１０…ＭＡＰデコーダ、５１４…エネルギーメトリック計算機、５２０…記憶ユニット、５３０…アドレス生成器、５３２…多重通信器、５４０…コントローラ、７１０，７１２，７１４…配列、８１０…アドレス生成ユニット、８１６…カウンタ、８２２…分割ユニット、８２４…行マッピングユニット、８２６…乗算器、８３２…ユニット、８３６…列マッピングユニット、８４０…マルチプレクサ、９１０，９２２，９２４…カウンタ、９１２，９３４…レジスタ、９２６…コンパレータ、９３２…ＡＮＤゲート、９３６…ＯＲゲート
【図１】
2004531116.tif 000021
【図２】
2004531116.tif 000022
【図３】
2004531116.tif 000023
【図４】
2004531116.tif 000024
【図５】
2004531116.tif 000025
【図６】
2004531116.tif 000026
【図７】
2004531116.tif 000027
【図８】
2004531116.tif 000028
【図９】
2004531116.tif 000029
【図１０】
2004531116.tif 000030
【図１１】
2004531116.tif 000031
【国際公開パンフレット】
2004531116.tif 000032
2004531116.tif 000033
2004531116.tif 000034
2004531116.tif 000035
2004531116.tif 000036
2004531116.tif 000037
2004531116.tif 000038
2004531116.tif 000039
2004531116.tif 000040
2004531116.tif 000041
2004531116.tif 000042
2004531116.tif 000043
2004531116.tif 000044
2004531116.tif 000045
2004531116.tif 000046
2004531116.tif 000047
2004531116.tif 000048
2004531116.tif 000049
2004531116.tif 000050
2004531116.tif 000051
2004531116.tif 000052
2004531116.tif 000053
2004531116.tif 000054
2004531116.tif 000055
2004531116.tif 000056
2004531116.tif 000057
2004531116.tif 000058
2004531116.tif 000059
2004531116.tif 000060
2004531116.tif 000061
2004531116.tif 000062
2004531116.tif 000063
2004531116.tif 000064
2004531116.tif 000065
2004531116.tif 000066
2004531116.tif 000067
2004531116.tif 000068
2004531116.tif 000069
2004531116.tif 000070
2004531116.tif 000071
2004531116.tif 000072
2004531116.tif 000073
2004531116.tif 000074
2004531116.tif 000075
2004531116.tif 000076
2004531116.tif 000077
2004531116.tif 000078
2004531116.tif 000079
2004531116.tif 000080
2004531116.tif 000081
【国際公開パンフレット（コレクトバージョン）】
2004531116.tif 000082
【国際調査報告】
2004531116.tif 000083
2004531116.tif 000084