ベクトル化されたターボ復号器のためのデータ・インターリーブ回路および方法
【課題】複数のプロセッサを用いた並列復号化におけるメモリ・アクセスの効率を向上する。
【解決手段】M個のW値ウィンドウを含むデータ・ブロックをインターリーブするためのデータ・インターリーブ回路(306)および方法が、ウィンドウ内インデックスwとM個の要素を有するウィンドウ間置換ベクトルmとを生成するためのインデックス生成器(500)と、ウィンドウ内インデックスwを有するM個のデータ値をメモリから受信するように動作可能であり、さらに、ウィンドウ間置換ベクトルmに従ってM個のデータ値を並べ直して、並べ直したデータ値を出力するように動作可能なウィンドウ間置換回路(504)とを備える。インデックス生成器は、置換多項式に従ってウィンドウ内インデックスwとウィンドウ間置換ベクトルmとを生成する再帰回路を含む。1つの応用例では、並べ直したデータ値をターボ復号器のM個の並列プロセッサに送る。
【解決手段】M個のW値ウィンドウを含むデータ・ブロックをインターリーブするためのデータ・インターリーブ回路(306)および方法が、ウィンドウ内インデックスwとM個の要素を有するウィンドウ間置換ベクトルmとを生成するためのインデックス生成器(500)と、ウィンドウ内インデックスwを有するM個のデータ値をメモリから受信するように動作可能であり、さらに、ウィンドウ間置換ベクトルmに従ってM個のデータ値を並べ直して、並べ直したデータ値を出力するように動作可能なウィンドウ間置換回路(504)とを備える。インデックス生成器は、置換多項式に従ってウィンドウ内インデックスwとウィンドウ間置換ベクトルmとを生成する再帰回路を含む。1つの応用例では、並べ直したデータ値をターボ復号器のM個の並列プロセッサに送る。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、一般的にデータ処理回路に関し、特に「ターボ符号」を用いる通信システム用のデータ処理回路に関する。
【背景技術】
【0002】
通信システムにおいて、送信信号(たとえば無線による)は、フェージング、ジャミング、および他の、信号内にエラーを導入させ得る要素の影響を受けやすいことがある。送信前に信号を符号化することは、送信中に導入されたエラーを、受信部において信号を復号化したときに検出および補正できるようにすることによって、チャンネル・ノイズ、フェージング、およびジャミングの影響を抑えることに役立つ。
【0003】
「ターボ符号」は、符号化方式におけるブレイクスルーであると認められており、送信中に生じるエラーに対する強力な抵抗を実現するものである。それらは、並列連結畳込み符号(parallel concatenated convolutional codes:PCCC)または直列連結畳込み符号(serial concatenated convolutional codes:SCCC)として実施することができる。ターボ符号によって、符号化利得が高くなり、ビット・エラー率が10−7と低くなる。ターボ符号は、エラー補正が優れているため、信号対雑音比(SNR)が一般的に低い応用例(たとえば、無線通信)において非常に有用である。
【0004】
図1に、従来のターボ符号器の例を示す。ターボ符号器100が受信した信号102は、第1の再帰的組織畳み込み(recursive systematic convolutional:RSC)符号器104に送られるとともに、インターリーバ106を介して第2の畳み込み符号器108に送られる。2つの畳み込み符号器によってターボ符号の成分符号が得られる。インターリーバ106は、データ・ストリームの順序を、データ・ストリームを第2の畳み込み符号器に入力する前に変える。また一方のデータ・ストリームをインターリーブするので、結果として生じる符号は、ターボ符号器から得られる高い符号化利得を提供する時間変化特性を有するものとなる。符号化された信号110は、変調されて、通信チャネル上で送信される。
【0005】
図2に、従来のターボ復号器の例を示す。ターボ復号器200は、復調信号202を通信チャネルから受信する。信号202は、第1の軟入力、軟出力(soft−input,soft output:SISO)復号器204に送られるとともに、インターリーバ206を介して第2のSISO復号器208に送られる。第2のSISO復号器208は信号202の成分も受信する。第1のSISO復号器204の出力を、インターリーバ210を介して第2のSISO復号器208に送り、第2のSISO復号器の出力を、デ・インターリーバ212を介して第1のSISO復号器204に送ることによって、反復復号を可能にする。動作時には、受信したデータ・ブロック(データ・フレームとも言う)を一度処理した後に、複数回再循環して、所望の符号化利得を達成する。ターボ符号は、エラーに対する高い抵抗を示すが、多くの実際の応用にとって理想的に適しているわけではない。なぜならば、ターボ符号器がインターリーバ(遅延を導入する)を用いる結果、待ち時間が極端に長くなり、またターボ復号器の反復アルゴリズムがコンピュータ的に複雑であるからである。ターボ符号は通常、大きなブロック・サイズ(たとえば、>5000ビット)を伴って動作する。反復復号を容易にするために、ブロック全体に対する軟入力をメモリに格納しなければならない。言い換えれば、各復号化段階において、軟入力を繰り返して用いて更新する。その結果、ターボ復号器はメモリ集約的(memory intensive)となるため、ターボ復号器は、実用的でないかまたは応用例によっては高価すぎることになる。
【0006】
一般的に、連続したターボ復号器の待ち時間は、特別にデザインされた高速のハードウェアを用いてターボ復号器を実現することによって、わずかに改善される場合がある。しかし、費用が増加し、デバイスが複雑になり、加えて消費電力が増加する(多くの低電力無線デバイスにおいては容認できない場合がある)という犠牲を払って得られるのは、待ち時間が漸進的に改善されるということのみである。
【0007】
ターボ復号化の長い待ち時間に対処する代替的なアプローチは、並列復号化アーキテクチャを用いることである。並列復号化によって、スループットおよび待ち時間を大きく改善することができる。2つの基本的な並列化方式を利用することができる。並列処理は、複数の受信信号を同時に復号化することか、または受信信号ブロックをサブ・ブロックに分割して、サブ・ブロックを複数の並列プロセッサによって並列に復号化することによって、実現される場合がある。スループットおよび待ち時間は、並列復号化を用いて小さくなる場合があるが、大容量メモリの要求はそうはならない。加えて、ハードウェアもより複雑になり、コストも増加する。したがって、メモリ効率が良くてハードウェア(または面積)効率の良い並列化方式が、ターボ符号を実際に具体化するためには必要である。
【0008】
並列処理に伴う問題の1つはメモリ・アクセスの問題である。特に、インターリーバの存在は、複数の並列プロセッサによってメモリが順序が狂ったアドレス指定をされざるを得ないことを意味する。2つ以上のプロセッサが、読み出しまたは書き込みアクセスを同じメモリに対して同じクロック周期で行なう必要があるときに、メモリ競合が生じる。ある種類の無競合(contention free:CF)インターリーバの場合、メモリ競合はない。
【発明の概要】
【発明が解決しようとする課題】
【0009】
二次置換多項式(quadratic permutation polynomial:QPP)ターボ・インターリーバ(ロング・ターム・エボリューション(Long Term Evolution:LTE)規格において採用されている)は、CFインターリーバである。LTEシステムでは高データ・レートが要求されるため、ターボ復号器は、複数のプロセッサを用いた並列復号化を利用する必要がある。したがって、QPPをマルチ・プロセッサ・ターボ復号器に適用することが求められている。
【図面の簡単な説明】
【0010】
【図1】典型的な従来のターボ符号器のブロック図である。
【図2】典型的な従来のターボ復号器のブロック図である。
【図3】本発明のいくつかの実施形態による復号器回路の一部のブロック図である。
【図4】本発明のいくつかの実施形態による典型的なデータ置換を示す図である。
【図5】本発明のいくつかの実施形態による典型的なインターリーバのブロック図である。
【図6】本発明のいくつかの実施形態による典型的な多項式再帰回路のブロック図である。
【図7】本発明のいくつかの実施形態による典型的な再規格化可能な加算器のブロック図である。
【図8】本発明のいくつかの実施形態による基数4のターボ復号器に対する典型的なインターリーバのブロック図である。
【図9】本発明のいくつかの実施形態による単一の置換回路を用いた典型的なターボ復号器回路のブロック図である。
【図10】本発明のいくつかの実施形態による典型的なメモリ割り当てを示す図である。
【図11】本発明のいくつかの実施形態による典型的なメモリ割り当てを示す図である。
【図12】本発明のいくつかの実施形態による2つの置換回路を用いた典型的なターボ復号器回路のブロック図である。
【図13】本発明のいくつかの実施形態による典型的な基数Wの加算器のブロック図である。
【図14】本発明のいくつかの実施形態による典型的な基数Wの多項式再帰回路のブロック図である。
【図15】本発明のいくつかの実施形態による基数Wの多項式再帰回路を用いた直接型インデックス生成器のブロック図である。
【図16】本発明のいくつかの実施形態による基数Wの多項式再帰回路を用いた間接型インデックス生成器のブロック図である。
【図17】本発明のいくつかの実施形態によるインターリーブ後順序でデータ値にアクセスするための方法のフロー・チャートである。
【発明を実施するための形態】
【0011】
添付の図では、個々の図の全体に渡って、同様の参照数字は同一のまたは機能的に同様の要素を指している。また添付の図は、以下の詳細な説明とともに本明細書に取り入れられて本明細書の一部を構成するとともに、さらに種々の実施形態を例示し、本発明にすべて従う種々の原理および優位性を説明する働きをする。
【0012】
当業者であれば分かるように、図における要素は、簡潔および明瞭を目的として例示されており、必ずしも一定の比率で描かれているわけではない。たとえば、本発明の種々の実施形態の理解の向上を助けるために、図中のいくつかの要素の寸法は他の要素に対して誇張されている場合がある。
【0013】
本発明による実施形態を詳細に説明する前に、以下のことに注意されたい。すなわち、実施形態は主に、ターボ復号器におけるインターリーバに関係する方法工程および装置構成要素の組み合わせにあるということである。したがって、装置構成要素よび方法工程は、適切であれば図面中で従来の符号を用いて表して、本発明の実施形態を理解するのに適切な特定の詳細のみを示すようにしている。これは、本明細書の説明の利益を受ける当業者には容易に明らかである詳細によって、開示が不明瞭になることがないようにするためである。
【0014】
この文献において、関係語たとえば第1および第2、最上部および最下部などは単に、ある存在または行為を別の存在または行為と区別するために用いる場合があり、その場合、このような存在間または行為間のこのような関係または順序の実際のものを必ずしも必要としないし意味することもない。用語「含む」、「含んでいる」またはこれらの他のどんな変形も、包括的に含めることに及んでいることが意図されている。すなわち、要素のリストを含むプロセス、方法、物品、または装置には、これらの要素が含まれているだけでなく、明白にはリストにされていない他の要素、またはこのようなプロセス、方法、物品、もしくは装置に固有の他の要素が、含まれていても良い。要素が「含む」の後にきた場合、これは、要素を含むプロセス、方法、物品、または装置に、同じ要素がさらに存在することを排除するものではないことを、さらなる制約を伴うことなく行なうものである。
【0015】
本明細書に記載した本発明の実施形態は、プログラマブル論理回路たとえばフィールド・プログラマブル・ゲート・アレイ(field programmable gate array:FPGA)または従来のプロセッサに、前記回路またはプロセッサを制御する一意の格納されたプログラム命令であって、本明細書に記載したインターリービングの機能の一部、ほとんど、またはすべて実現するプログラム命令を伴うものを含む場合があることが理解される。あるいは、一部または全部の機能を、格納されたプログラム命令を持たない状態機械によって実施することができるか、または各機能もしくはいくつかの機能のある組み合わせをカスタム・ロジックとして実施する1つもしくは複数の特定用途向け集積回路(application specific integrated circuit:ASIC)において実施することができる。当然のことながら、これらのアプローチの組み合わせを用いることができる。このようにして、これらの機能を得るための方法および手段について本明細書において説明している。さらに、以下のことが予想される。すなわち、おそらくかなりの努力および多くのデザイン選択が、たとえば、利用できる時間、最近の技術、および経済的考慮によって誘導されるにもかかわらず、本明細書で開示される考え方および原理によって導かれれば、当業者は、このようなソフトウェア命令およびプログラムおよびICを最小限の実験で容易に作成することができるということである。
【0016】
本発明の実施形態は、並列またはベクトル化されたターボ復号器におけるメモリ・アクセスに関する。したがって、本発明の実施形態は一般的にデータ処理回路に関し、特に「ターボ符号」を用いる通信システム用のデータ処理回路に関する。
【0017】
図3は、本発明のいくつかの実施形態による復号器回路300の一部のブロック図である。図3を参照して、回路300はデータ・メモリ302を備える。データ・メモリ302は、復号器304のためのデータ格納を行なう。インターリーバ回路306が、メモリ302からのデータを復号器304へ転送するように動作可能である。インターリーバ回路306は、インデックスの順序列によって規定される置換に従ってデータのシーケンスを置換するデバイスである。典型的な応用例(たとえばターボ復号化)では、インターリーバは、メモリ内のデータへのランダム・アクセスを行なうためのアドレス308を生成して、対応するデータ310をメモリから受信する。生成されたアドレスは通常、インデックスの順序列に対応するため、この文献では、用語「インデックス」と「アドレス」とを交換可能に用いる。データ312は、自然順序またはインターリーブ後順序(interleaved order)で、復号器304に送られる。
【0018】
復号器304は、データを復号化するために並列に動作する多くの処理要素314を備える並列プロセッサまたはベクトル化されたプロセッサである。各処理要素は、受信したデータ・ブロックのサブ・セクション、サブ・ブロック、または「ウィンドウ」上で動作する。インターリーバは、メモリからのデータをウィンドウ間で置換するように動作する。用語「ベクトル化される(vectorized)」を用いるのは、インターリーバによってデータの格納およびフェッチがベクトルとして(すなわち、別個のグループとして)できる場合である。復号器から出力されたデータ316は、メモリ302内に格納しても良いし、他の処理モジュールへ出力しても良い。
【0019】
インターリーバ306を、種々のベクトル化されたターボ復号器アーキテクチャにおいて具体化しても良く、ウィンドウ間置換のシーケンスを生成するための論理回路を単純にする設計基準について開示する。
【0020】
本発明の一実施形態においては、インターリーバは、ベクトル化されたターボ復号器における二次置換多項式(QPP)インターリーバである。この実施形態においては、インターリーバによって、より高次の置換多項式を正または逆の順序で再帰的に生成することが行なわれる。一実施形態においては、インターリーバを論理回路として実施して、アドレスπ(x)=mxW+wxをそのmxおよびwx成分に自動的に分解する。加えて、インターリーバを用いて、ベクトル化されたターボ復号化を行なうために必要な「ウィンドウ内」アドレスと「ウィンドウ間」置換とを生成しても良い。
【0021】
インターリーバを、第3世代(3G)無線アクセス技術のロング・ターム・エボリューション(LTE)(以後、「LTE」と言う)に対して提案されるターボ復号器ハードウェアにおいて用いても良い。
【0022】
QPP置換は、多項式によって生成される置換の二次の場合である。最初に、置換多項式の導入処理について説明する。処理は一般的である。なぜならば、ターボ復号器は、形式上は多項式であるが必ずしも二次ではない逆置換を効果的に用いることができるからである。次に、典型的なベクトル化されたターボ復号化アーキテクチャについて説明する。このアーキテクチャからインターリーバの機能上の要求が推論される。インターリーバの機能の1つは、置換を「ウィンドウ内」アドレスと「ウィンドウ間」置換とに分解することである。ウィンドウ間置換のシーケンスの生成を単純化できる設計基準についても説明する。
【0023】
n次の置換多項式は以下の形式である。
【0024】
【数1】
ここで、xおよびfiは整数である。xを0からK−1まで増加させると、多項式Pn(x)によって置換が生成される。多項式Pn(x)は通常、置換されたシーケンスの位置xにおける数量の置換前位置として解釈される。fiに対していくつか制約(ここでは扱わない)を設けることによって、Pn(x)によって置換が生成されることを確実にする。LTEの場合、ターボ・インターリーバは二次多項式(すなわちn=2)を用いる。簡単にするために、この文献の残りの部分では一般に、mod Kの表記法を省き、すべての量が、特に断らない限り、モジュロKで換算されていると暗黙的に仮定する。
【0025】
逆置換Pm−1(x)、ここで、
【0026】
【数2】
も、以下の多項式の形である。
【0027】
【数3】
一般的に、n≠mである。QPPの場合、f2は、Kのすべての素因数(prime factor)をある次数(order)まで含まなければならない。その結果、mは、f2のすべての素因数の最大次数(largest order)より大きくなることはない。
【0028】
復号器スループットは、ベクトル化を通して増加させることができる。ベクトル化された復号器では、長さKのデータ・ブロックを、M個の通常は非オーバーラッピングの長さWの「ウィンドウ」に分割する(K=MW)。これらを、M個のプロセッサによって同期して処理する。
【0029】
図4に、本発明のいくつかの実施形態による典型的なデータ置換を示す。図4に示すのは、長さK=40のデータ・ブロック402である。ブロック402を、M=4で長さ10のウィンドウ404に分割してある。データを4個のプロセッサ406によって処理する。i番目のプロセッサ(0≦i≦3)によって、データ・ブロック402内での位置10i〜10i+9におけるデータを処理する。
【0030】
反復処理であるので、ターボ復号器は、順次的(または「自然(natural)」)順序および置換後順序(permuted order)の両方で、データを処理できなければならない。図4では、アレイ402は、データのシーケンスを自然順序で示し、アレイ408は、シーケンスを置換後またはインターリーブ後順序で示す。図4では、プロセッサ0が、データ位置0、1、2、…、9におけるデータ、および位置0、17、34、11、28、5、22、39、16、33におけるデータを、順次に処理できなければならないということを示している。同様に、プロセッサ1が、位置10、11、12、…、19におけるデータ、および位置10、27、4、21、38、15、32、9、26、3におけるデータを、順次に処理できなければならない。
【0031】
ベクトル化と置換後順序処理との組み合わせによって、メモリ管理の問題が持ち込まれる。なぜならば、複数のプロセッサが、メモリからのデータを、メモリ・アクセスに対して互いに干渉することも競合することもなく、置換後順序で同時にフェッチしなければならないからである。
【0032】
図4の「インターリーブ後データ」列における置換アドレスは、実際には、QPP37x+2Ox2 mod 40によって生成される。図4において、各自然順序および各置換アドレスは、形式m10+wに分解されている。ここで、wは「ウィンドウ内アドレス」列の中にあり、mは「ウィンドウ番号」列の中にある。以後、アドレスは一般的に形式mW+wであると考え、mおよびwを、それぞれアドレスのmおよびw成分であると言う。置換アドレスに対して、m成分は、データが由来する置換前のシーケンスにおけるウィンドウを示し、w成分は、データが由来するウィンドウ内での相対位置を示す。
【0033】
図4の置換アドレス列408は、任意のステップにおいて、すべてのプロセッサが同じウィンドウ内アドレス(列410)におけるデータを処理することを示している。たとえば、置換後順序処理の場合、第1のステップにおいて、すべてのプロセッサはウィンドウ内アドレス0におけるデータを処理する。第2のステップにおいて、すべてのプロセッサはウィンドウ内アドレス7におけるデータを処理する。さらに、置換後順序処理の場合に、各ステップにおいてウィンドウ間置換があることに注意されたい(列412)。mi=(m0,m1,m2,m3)i(0≦m0,m1,m2,m3≦3)が、i番目の処理ステップ(0≦i≦9)におけるプロセッサ0、1、2、および3に対する置換されたアドレスのm成分をそれぞれ示すものとする。各miは、ステップiに対するウィンドウ間置換である。表1に、これらのウィンドウ間置換をiの関数として列挙する。ちなみに、各mi(1≦i≦9)はm0の循環シフトであることに注意されたい。これは一般的に置換多項式に当てはまるわけではないが、特性が保たれる条件を以下に導き出す。
【0034】
【表1】
結果として、この例におけるデータは10×4Bのメモリに格納することができる。ここでBはデータ幅(ビット)である。
【0035】
図5は、本発明のいくつかの実施形態による典型的なインターリーバのブロック図である。図5を参照して、インターリーバは、インデックス生成器500、メモリ502、およびウィンドウ間置換回路504を備える。10×4Bのメモリ502は、40個のデータ・サンプルのブロックを収容している。メモリの各行は、同じウィンドウ内インデックスwのデータ要素を収容し、一方で、各列は、同じウィンドウ・インデックスmのデータ要素を収容している。自然順序でデータを処理するとき、プロセッサ0はデータ値の第1の列を処理する。インターリーブ後順序でデータを処理するとき、プロセッサ0は、下線を引いた数字を伴うデータ値をウィンドウ内順序{0,7,4,1,8,5,2,9,6,3}で処理する。動作時には、インデックス生成器500が、ウィンドウ内インデックス506(w)を生成し、これをメモリ・アクセス・コントローラ508に送る。この例では、メモリ・アクセス・コントローラ508は、メモリ502の対応する行における4つのデータ要素をウィンドウ間置換回路504に送る行セレクタを備える。またインデックス生成器500は、4要素の置換ベクトル510(m)を生成し、これをウィンドウ間置換回路504に送る。ウィンドウ間置換回路504では、4つのデータ要素の順序を置換ベクトルに従って置換して、置換後順序のデータを復号器の処理要素に出力する。
【0036】
データを順次的順序でベクトルとして処理するためには、インデックス生成器から順次的なウィンドウ内アドレス{0,1,2,…,9}を出して、単位元(identity)(すなわち、通過(pass through))ウィンドウ間置換{0,1,2,3}を適用する。データを置換後順序でベクトル処理するためには、インデックス生成器からアドレス0,7,4,1,8,5,2,9,6,3を出して、表1におけるウィンドウ間置換を適用する。
【0037】
以前の例では、置換後順序処理に対してデータ・ベクトルをフェッチする場合には、各ステップにおいてすべてのプロセッサがデータを同じウィンドウ内アドレスで処理することが必要であることを示した。したがって、数学的には、置換π(x)に対するベクトル化基準は以下のようになる。
【0038】
【数4】
これは、すべての1≦u≦M−1および0≦v≦W−1に対してである。等式(4)を満たす置換を、ここではベクトル化可能な置換と言う。
【0039】
WによってKが割り切れると仮定すると、以下のようにPn(x)がベクトル化可能であることを示すのは簡単である。
【0040】
【数5】
等式(5)では、関係t mod K mod W=t mod Wを、WによってKが割り切れるときに、任意の整数tに対して用いている。等式(5)の5つの等式のうち第4の等式における二重総和(double summation)はゼロである。なぜならば、総和における各項には、Wの因数が少なくとも1つは含まれているからである。
【0041】
Pm−1(x)は、Pn(x)と同様に形式が多項式であるので、以下のようにベクトル化基準を満足しなければならない。
【0042】
【数6】
これは、すべての1≦u≦M−1および0≦v≦W−1に対してである。Pn(x)およびPm−1(x)は両方ともベクトル化可能であるため、データをベクトル的に格納およびフェッチすることが、自然順序においてまたはインターリーブ後順序において可能である。後述するように、このことは、ベクトル化されたターボ復号器に対して重要な単純化の効果がある。
【0043】
等式(6)は、Pm−1(x)の多項式の形式に基づいて、ベクトル化可能性を示しているが、置換π(x)がベクトル化可能であるならば、その逆置換π−1(x)もベクトル化可能であるということは一般的に正しい。π(x)がベクトル化可能であるため、以下でなければならない。
【0044】
【数7】
ここで、0≦u,mu≦M−1、x≠y時にmx≠my、および0≠v,wv≦W−1である。
【0045】
等式(7)を逆にすると以下のようになる。
【0046】
【数8】
等式(8)が与えられたとすると、π−1(x)は明らかに等式(4)のベクトル化基準を満たしている。
【0047】
工学の文献では、長さK=MWの置換π(x)に対する無競合の基準(contention−free criterion)について以下のように述べている。
【0048】
【数9】
これは、すべての0≦p,q≦M−1(ただしp≠q)に対してである。Pn(x)は等式(4)のベクトル化基準を満足するので、以下でなければならない。
【0049】
【数10】
ここで、0≦mu≦M−1(x≠y時にmx≠my)および0≦wv≦W−1(x≠y時にwx≠wy)である。
【0050】
等式(9)の床演算(floor operation)によってmuが取り出されるため、Pn(x)は、したがって不等式(9)を満足しなければならない。同一の論法によって、等式(6)が満足されるためPm−1(x)も不等式(9)を満足しなければならないということが決まる。
【0051】
しかし、以下の形式の置換について考えてみる。
【0052】
【数11】
ここで、0≦mu≦M−1(x≠y時にmx≠my)および0≦wu,v≦W−1である。ここでは、w成分は、uおよびvの両方に依存し、等式(10)の場合のようにv単独に依存してはいない。その結果、不等式(9)は満足されるが、ベクトル化基準は必ずしも満足されないであろう。したがって、ベクトル化されたターボ復号化に対しては、ベクトル化基準の方が強い基準である。無競合のメモリ・アクセスを保証することに加えて、データをベクトルとして格納およびフェッチすることも、所望のウィンドウ内アドレスを出すことによって可能である。
【0053】
ハードウェアのターボ復号化では、Pn(x)を再帰的に生成する手段が必要である。Pn(x+1)を以下のように展開することによって再帰的関係を導き出すことができる。
【0054】
【数12】
ここで、Pn−1n(x)は次数n−1の多項式である。
【0055】
【数13】
ここで係数は以下の通りである。
【0056】
【数14】
Pn−1n(x)自体が多項式であるため、以下が得られる。
【0057】
【数15】
したがって等式(12)の再帰的関係を、以下のように0次項まで回帰させる(regressed back)ことができる。
【0058】
【数16】
等式(16)は、ハードウェアの具体化が簡単である。図6にその例をn=5に対して示す。図6では、再帰回路600は、レジスタ602、604、606、608、および610と、加算器612、614、616、618、および620とを備える。入力信号P01(x)(622)は一定であり、各Pi−1i(x)レジスタ(1≦i≦5)の初期値は、等式(13)の定数項hi−1,0である。初期値hi−1,0の決定を、たとえば、初期値をリアル・タイムで算出するかまたは値を事前計算して読み出し専用メモリに格納することによって、行なっても良い。出力624は多項式の値Pn(x)である。また図6のハードウェアは、Pn(x)を任意のn<5に対して算出することが可能であり、これはPi−1i(x)を0に、1≦i≦5−nに対して初期化することによって行なわれる。
【0059】
図6のハードウェア・モデルは、実際に行なわれる信号のモジュロKの換算を省略することによって単純化している。これは、図7に示す再規格化可能な加算器700を、図6の各加算器の代わりに用いることによって行なうことができる。図7を参照して、再規格化可能な加算器700は、入力信号702(x)および704(y)、モジュロKを加算するように動作可能である。入力信号xおよびyを加算器706において加算して、信号708を生成する。加算器710では、値K(712)を信号708から差し引いて、信号714を生成する。信号714が正の場合、それを出力として用いなければならない。信号714が負の場合、信号708を出力として用いなければならない。この例では、データを2の補足形式で格納することで、信号714の最上位ビット(most significant bit:MSB)を716において選択して、信号セレクタ718を制御するために利用できるようにしている。加算の結果(モジュロK)を、信号720として出力する。
【0060】
図6のハードウェアが生成するPn(x)は、x=0で開始して、x=K−1まで増加する。しかしターボ復号器は、Pn(x)を逆の順序で生成する必要もある。すなわち、x=K−1で開始して、x=0まで減少するのである。Pn(x−1)を以下のように展開することによって、再帰的関係を導き出すことができる。
【0061】
【数17】
ここで、Qn−1n(x)は次数n−1の多項式である。
【0062】
【数18】
ここで係数は以下の通りである。
【0063】
【数19】
Qn−1n(x)自体が多項式であるため、以下が得られる。
【0064】
【数20】
したがって等式(20)の再帰的関係を、以下のように0次項まで回帰させることができる。
【0065】
【数21】
Pi−1i(x)レジスタ(1≦i≦5)の値を初期化して定数項ki−1,0にすることによって、図6のハードウェアを用いて等式(21)の再帰を算出することができる。正順序での生成に対するレジスタ初期化の場合と同様に、初期値ki−1,0の決定を、たとえば初期値をリアル・タイムで算出するかまたは値を事前計算して読み出し専用メモリに格納することによって、行なっても良い。
【0066】
考え方の一例として、以下の置換多項式について考えてみる。
【0067】
【数22】
上記等式を用いて、以下が得られる。
【0068】
【数23】
【0069】
【数24】
【0070】
【数25】
前述したように、図6のハードウェアを用いてP3(x)を正の順序で算出するために、レジスタを以下のように初期化する。
(1)レジスタP5(x)を初期化して0にする。
(2)レジスタP45(x)を初期化して27にする(P23(x)多項式の定数項)。(3)レジスタP34(x)を初期化して20にする(P12(x)多項式の定数項)。(4)レジスタP23(x)を初期化して20にする(定数項P01(x))。
(5)レジスタP12(x)およびP01(x)を初期化して0にする。
【0071】
初期化の後、レジスタを39回クロックして、シーケンスにおける40個のアドレスすべてを生成する。表2に、レジスタの内容を、多項式P3(x)=37x+20x2+10x3 mod 40に対する周期数xの関数として、正の順序で列挙する。表のP5(x)列におけるアドレスのシーケンスは、等式(22)を直接算出したときに生成されたであろうシーケンスと同じものであることを確認することができる。
【0072】
逆順序の再帰に対する初期レジスタ値が、Qi−1i(x)から以下のように求まる。
【0073】
【数26】
【0074】
【数27】
【0075】
【数28】
したがって、図6のハードウェアを用いてP3(x)を逆の順序で算出するために、レジスタを以下のように初期化する。
(1)レジスタP5(x)を初期化して0にする。
(2)レジスタP45(x)を初期化して13にする(Q23(x)多項式の定数項)。(3)レジスタP34(x)を初期化して20にする(Q12(x)多項式の定数項)。(4)レジスタP23(x)を初期化して20にする(定数項Q01(x))。
(5)レジスタP12(x)およびP01(x)を初期化して0にする。
【0076】
初期化の後、レジスタを40回クロックして、シーケンスにおける40個のアドレスすべてを生成する。表3に、レジスタの内容を、多項式P3(x)=37x+20x2+10x3 mod 40に対する周期数xの関数として、逆の順序で列挙する。目視による検査によって、表3におけるシーケンスが表2の逆のシーケンスであることが明らかである。
【0077】
【表2】
【0078】
【表3】
前述の考え方は、主に基数(radix)2の復号器に適用される。これは、クロック周期当たり1つのベクトルを処理する。符号トレリス記述(code trellis description)では、基数2のマルチ・プロセッサ復号器の各プロセッサは、クロック周期当たり1つのトレリス・ステップを処理する。基数4の復号化は、復号器のスループットを増加させるための良く知られた技術である。符号トレリス記述では、基数4のマルチ・プロセッサ復号器の各プロセッサは、クロック周期当たり2つのトレリス・ステップを処理する。したがって基数4のベクトル化された復号器は、クロック周期当たり2つのベクトルを処理する。一方のベクトルは偶数のトレリス・ステップに対応し、他方は奇数のトレリス・ステップに対応する。
【0079】
図8は、本発明のいくつかの実施形態による基数4の復号器に対する典型的なインターリーバ回路(たとえばインターリーバ回路306)のブロック図である。図8を参照して、インターリーバ回路は、偶数インデックス生成器800、奇数インデックス生成器802、偶数ウィンドウ間置換回路804、および奇数ウィンドウ間置換回路806を備える。10×4Bのメモリ502は、40個のデータ・サンプルのブロックを収容している。動作時には、偶数インデックス生成器800は偶数ウィンドウ内インデックス808を生成して、メモリ・アクセス・コントローラに送り、その結果、メモリ502の対応する行における4つのデータ要素が偶数ウィンドウ間置換回路804に送られる。同様に、奇数インデックス生成器802は奇数ウィンドウ内インデックス810を生成して、メモリ・アクセス・コントローラに送り、その結果、メモリ502の対応する行における4つのデータ要素が偶数ウィンドウ間置換回路806に送られる。またインデックス発生器800、802は、4要素の置換ベクトルmeven812と4要素の置換ベクトルmodd814とを生成する。これらは、偶数ウィンドウ間置換回路804と奇数ウィンドウ間置換回路806とにそれぞれ送られる。偶数および奇数置換回路804および806はそれぞれ、置換ベクトルmevenおよびmoddにそれぞれ従って、4つのデータ要素の順序を置換して、データを置換後順序で復号器の処理要素に出力する。
【0080】
基数4の動作を行なうために、インデックス発生器800および802は、各クロック周期上で2ステップだけ進まなければならない。なお、等式(12)〜(16)は、クロック周期ごとに行なうインデックス発生器の1ステップの正の進みに対する帰納式を示している。等式(17)〜(21)は、クロック周期ごとに行なう1ステップの逆の進みに対する帰納式を与えている。これらの式は基数2の処理に適している。
【0081】
基数4の処理に対して、これらの式は以下のように一般化される。ステップxからdステップだけ離れた再帰多項式の値は以下の通りである。
【0082】
【数29】
ここで、Sn−1n(x)は次数n−1の多項式である。
【0083】
【数30】
ここで係数は以下の通りである。
【0084】
【数31】
Sn−1n(x)自体が多項式であるため、以下が得られる。
【0085】
【数32】
したがって等式(32)の再帰的関係を、以下のように0次項まで回帰させることができる。
【0086】
【数33】
等式(29)〜(33)は、等式(12)〜(16)および(17)〜(21)の一般化である。基数2の正の進み(forward advancement)に対してd=1であり、一方で、基数2の逆の進み(backward advancement)に対してd=−1である。同様に、基数4の正の進みに対してd=2であり、一方で、基数4の逆の進みに対してd=−2である。
【0087】
図9は、典型的なベクトル化されたターボ復号器アーキテクチャのブロック図である。ログ・マップ復号器(たとえば、復号器304)は、複数のM個のログ・マップ・プロセッサ、たとえばプロセッサ314(「PROC0」〜「PROCM−1」と標示される)からなる。ログ・マップ(log−MAP)復号器304は、復号器1モード(自然順序処理)と復号器2モード(置換後順序処理)とを交互に行なう。また外部データ格納用の2つのメモリ(たとえばメモリ502および別のメモリ502’)と置換回路(たとえば置換回路504)とが存在する。メモリ・セレクタ902は、ログ・マップ復号器304が復号器1モードなのか復号器2モードなのかに応じて、2つのメモリ502および502’間で選択する。いずれのモードにおいても、インターリーバ(インデックス生成器たとえばインデックス生成器500と置換回路504とを備える)は、メモリの行からデータ・ベクトルを取り出すためのウィンドウ内アドレスと、ウィンドウ間でデータ・ベクトルを置換するためのウィンドウ間置換ベクトルとを生成する。なお、このアーキテクチャによって基数4の処理も可能である。この場合、インデックス生成器は、メモリの2つの行から2つのデータ・ベクトルを取り出すための2つのアドレス(偶数および奇数)に加えて、ウィンドウ間でこれらのデータ・ベクトルを置換するための2つのウィンドウ間置換ベクトルを生成する。
【0088】
図10および11に、長さKのブロック(K=MW)に対する外部メモリの格納配置を例示する。外部メモリはWの格納域深さであり、各格納域は、Bビット量の長さMのベクトルを格納する。図10および11の略図における各小さいボックスには、収容されるデータのインデックスが示されている。インターリーバ置換をπ(x)(0≦x≦MW−1)によって示す。図10は、外部メモリ1(502’)がデータを置換後順序で格納することを示している。図11は、外部メモリ2(502)がデータを自然順序で格納することを示している。
【0089】
このアーキテクチャにおけるデータの流れは以下の通りである。復号器2モード(置換後順序処理)では、ウィンドウ内置換アドレスをウィンドウ間置換ベクトルとともに出して置換回路を制御することによって、外部(extrinsics)は外部メモリ2(自然順序メモリ)からベクトル的にフェッチされる。ログ・マップ・プロセッサが、更新された外部を生成すると、復号器2がそれらを(ベクトルとして)外部メモリ1内に順次に格納する。復号器2が、更新された外部を置換後順序で生成するが、それらを順次に格納するので、外部は最後には外部メモリ1内で置換後順序になることは、図10に示す通りである。
【0090】
復号器1モード(自然順序処理)では、外部は外部メモリ1(置換後順序メモリ)からベクトル的にフェッチされる。データはメモリ内では置換後順序であるが、復号器1は自然順序で処理するため、外部を、それらをフェッチするときに脱置換(depermutation)しなれければならない。前述したように、逆のQPP置換はベクトル化可能である。したがって、復号器2が自然順序の外部を置換して置換後順序の外部にするのと同じ方法で、復号器1は置換後順序の外部を脱置換して自然順序の外部にする。したがって、復号器1は、ウィンドウ間脱置換アドレスをウィンドウ間脱置換とともに出して、置換回路を制御する。
【0091】
図9の復号器アーキテクチャにおける置換回路は、任意の置換が可能でなければならない。そのため、Bビット値に対するM×Mクロスバー・スイッチを用いなければならない。LTEの場合、スループット要求から32という大きいM値を決めても良く、Bはほぼ8ビットである。8ビット値に対する32x32クロスバー・スイッチは、8192個の2入力マルチプレクサを用いて実現することができる。したがって、置換回路は復号器の重要な態様である。図9の復号器アーキテクチャにおいて単一の置換回路は可能である。なぜならば、インターリーバ置換およびその逆置換の両方をベクトル化しても良いからである。
【0092】
置換をベクトル化することができる場合、その逆もベクトル化することができる(これについては前述した)。しかし無競合の置換には、無競合の逆置換という意味は含まれていない。置換π(x)(0≦x≦7)とその逆のπ−1(x)について考えてみる。これらを表4に示す。置換π(x)は明らかに、M=2(すなわち、W=4)に対して無競合である。しかし、逆のπ−1(x)はM=2に対して無競合ではないことも明らかである。たとえば、以下の通りである。
【0093】
【数34】
および
【0094】
【数35】
実際には、この場合、あらゆるステップにおいて競合が存在する。
【0095】
【表4】
インターリーバ逆置換が無競合ではない場合、復号器は、外部を自然順序で両方の外部メモリに格納しなければならず、図12に示すアーキテクチャが必要となる。図12に示すのは、インターリーバ逆置換が無競合ではない場合の典型的なターボ復号器アーキテクチャである。このアーキテクチャには2つの置換回路504および1202がある。置換回路504はフェッチ時に外部を置換し、置換回路1202は格納時に外部を脱置換する。加えて、インバータ1204が、ウィンドウ間置換を反転させて置換回路1202を駆動するのに必要である。そのため、図9に示す復号器の方が図12に示す復号器よりも単純である。前述したように、QPPと同様にベクトル化可能なインターリーバ置換を用いるときには、単一の置換ネットワークのみが必要であり、ハードウェアがウィンドウ間置換を反転する必要はない。
【0096】
図9のより単純な復号器アーキテクチャに対するインターリーバ・モジュールに対して以下の能力が推論される。
(1)インターリーバ・モジュールは、置換およびその逆の両方を生成できなければならない。さらに、モジュールは、これらの置換を正の順序および逆の順序の両方で生成できなければならない。これには、置換多項式を再帰的に算出する一般的な論理回路が必要である。論理回路は、何らかの最高次数(LTEの場合は4または5)に対してデザインする必要がある。
【0097】
(2)インターリーバ・モジュールは、M個のアドレスをウィンドウ内アドレスとウィンドウ間置換とに、クロック周期当たり1つのレートで分解できなければならない。論理回路は、何らかの最大数のウィンドウMmaxと何らかの最大のウィンドウ寸法Wmaxとに適応するようにデザインする必要がある。LTEの場合、Mmax=16またはMmax=32であり、Wmax=384またはWmax=192である。
【0098】
長さWのウィンドウ上で動作するM個の並列プロセッサを伴うベクトル化されたターボ復号器について考えてみる。置換後順序処理の場合、i番目のステップ(0≦i≦W−1)では、以下のアドレスにおけるデータ、
【0099】
【数36】
を、フェッチしなければならない。数量wi(0≦wi≦W−1)はウィンドウ内アドレスであり、以下の値、
【0100】
【数37】
(ここで、0≦mi≦M−1)は、ウィンドウ間置換である。
【0101】
等式(36)は、ハードウェアによってアドレスπ(x)=mxW+wxをその成分mxおよびwxに分解しなければならないことを示している。これらの成分は以下の通りである。
【0102】
【数38】
および
【0103】
【数39】
この問題に対するアプローチの1つは、π(x)を算出した後に、ハードウェアによって等式(38)および(39)を力任せに算出することである。しかしながら、このアプローチは、Mが増えるにつれて高価になる。
【0104】
より良い解決方法は、π(x)の決定に関与するすべての算出を「基数W(base−W)」ドメインにおいて行なうことである。この解決方法を用いれば、π(x)の算出に関与する各数量v=mvW+wvは、vではなく対(mv,wv)として示される。すべての動作は対で行なわれ、結果は対で示される。図6に示す再帰的アドレス生成ハードウェアの場合、図7の再規格化可能な加算器の代わりに、図13に示す対ベースの(pair−based)加算器を用いる。図13に、図6の再帰的アドレス生成ハードウェアに対する典型的な対ベースの加算器1300を示す。図13を参照して、対ベースの加算器1300は、信号対(mx、wx)(702および702’)を信号対(my、wy)(704および704’)に加算して、その結果、信号対(mz,wz)(720および720’)を生じる。なお結果を、0≦mz≦M−1および0≦wz≦W−1となるように再規格化する。加算器706、加算器710、MSBセレクタ716、および信号セレクタ718によって、図7を参照して前述したように、wxおよびwyモジュロL(ここでL=W)を加算する第1の再規格化可能な加算器が形成される。同様に、第2の再規格化可能な加算器は、加算器1308に結合された加算器706’と、加算器1308に結合された加算器710’と、加算器710’に結合されたMSBセレクタ716’と、MSBセレクタ716’に結合された信号セレクタ718’とを備えており、加算器706’および710’は、mx、my、および「桁上げ」信号1306モジュロL(ここでL=M)を加算する。wx+wy−Wが負の場合に、信号1302がMSBセレクタ716によって出力される。この信号は、wx+wyが≧Wの場合に設定される「桁上げ」信号1306を生成するために、インバータ1304を通過する。桁上げ信号1306は、加算器706’の出力に、加算器1308において加算される。このようにして、すべての算出をモジュロKではなくモジュロWで行なっても良い。図6の再帰回路において対ベースの加算器を用いる場合、力任せの技術でアドレスを算出した後にアドレスをそのwおよびm成分に分解する算出を行なうのではなくて、ウィンドウ内アドレスとウィンドウ間置換ベクトル要素とを直接算出する。
【0105】
この解決方法を用いれば、アドレスπ(x)を算出したときに、結果が自動的に、その分解された形式(mx、wx)で現れる。
【0106】
【数40】
図14に、基数Wの加算器を伴うPn(x)に対する多項式再帰回路1400を示す。Pn(x)に対する回路1400は、基数Wの加算器を用いて構成されている。回路は、初期化パラメータ1402の組を受け入れて(前述したレジスタを初期化し)、等式(40)において規定される成分対(mx、wx)(出力1406および1404に対応する)を生成する。
【0107】
前述のセクションでは、Pn(x)に対する多項式再帰回路を、各アドレスがそのmおよびw成分に自動的に分解されるように、どのように変更できるかについて説明した。ベクトル化されたターボ復号器は実際には、等式(24)の場合と同様にM個のウィンドウに対するM個の同時分解を必要とする。なお、ベクトル化可能な置換を用いれば、すべてのM個のウィンドウに対してw成分は同一であり、一方で、m成分を集めることによってウィンドウ間置換が形成される。
【0108】
M個の同時分解に対する間接アプローチにおいて、図15に示すように、M個の同一のPn(x)回路を例示する。図15に、インターリーバをウィンドウ内アドレスとウィンドウ間置換とに分解するための間接アプローチの例を示す。再帰回路1400を、シーケンスの全体に渡ってウィンドウ寸法Wの間隔で場所をずらして開始するように初期化する。具体的には、u番目の回路(0≦u≦M−1)を、Pn(uW)から開始するように初期化する。このアプローチでは、Pn(x)の自動分解形式を用いて、u番目の回路がPn(uW+v) mod Wとfloor(Pn(uW+v)/W)=mu(v)との両方を生成するようにする。Pn(uW+v) mod Wがすべての回路に対して同一であるので、実際にはこれらの出力のうちの1つのみを用いる。mu(v)の組を集めてウィンドウ間置換を形成する。
【0109】
間接アプローチとは対照的に、直接アプローチでは、以下のようにウィンドウ間置換を直接算出するための再帰を導き出す。u番目のプロセッサのアドレス(0≦u≦M−1)のv番目のステップ(0≦v≦W−1)でのm成分mu(v)は、以下のように単純化することができる。
【0110】
【数41】
ここで、Ru(v)は次数n−1の多項式である。
【0111】
【数42】
ここで係数は以下の通りである。
【0112】
【数43】
なお、Ru(v)は多項式であるので、図6に示す再帰的な構造を用いて再帰的に算出することができる。図6に示す構造を用いてRu(v)を再帰的に算出する場合、算出をモジュロMで換算することができる。したがって、この場合、図7の再規格化可能な加算器を、Kの代わりにMを用いて、利用することができる。
【0113】
等式(41)の5つの等式のうち最後の等式は、図16に示す簡単なハードウェア解釈である。図16に、Pn(v)に対する自動分解再帰回路の単一インスタンス1400(置換シーケンスの始まりから開始するように初期化されている)を用いて、ウィンドウ内アドレスとウィンドウ間置換のm0(v)項とを取り出す場合を示す。Ru(v)(1≦u≦M−1、0≦v≦W−1)を算出する回路のM−1個のインスタンス(1602、1602’、および1602”)も存在する。等式(41)における方法に従って、m0(v)を、加算器1604、1604’、および1604”において各出力Ru(v)に加算して、mu(v)を得る。出力510は、自動分解再帰回路1400の出力1406、1404のうち第1の出力1406と、加算器1604、1604’、および1604”の出力とを含むとともに、出力510は、ウィンドウ間置換ベクトルm(v)=(m0(v),m1(v),…,mM−1(v))であり、出力506(ウィンドウ内インデックスwである)は、回路1400の出力1406、1404のうち第2の出力1404を含む。
【0114】
ウィンドウ間置換生成を、循環シフトを用いて単純化しても良い。特定の条件の下では、m(v)はすべてのv(0≦v≦W−1)に対してm(0)の循環シフトである。このことは、潜在的に、置換(たとえば図4に示すもの)を実現するハードウェアを単純化するのに役立つであろう。どのようにこれが行なわれるかを理解するために、置換m(v)について考えてみる。m0(v)はm(v)のすべての要素に対して共通であるので、以下のようになる。
【0115】
【数44】
特に関心が持たれるのは、ベクトルR(v)が一定でvに依存しない場合、すなわち以下の場合である。
【0116】
【数45】
これは、したがって以下を意味する。
【0117】
【数46】
これは各u(0≦u≦M−1)に対してである。これが成り立つ場合、m(v)は、m0(v)の位置だけR(0)の循環シフトである。
【0118】
等式(42)から導き出されるように、等式(46)における条件が、すべてのuおよびWに対して成り立つべき場合には、以下でなければならない。
【0119】
【数47】
これは、すべての1≦i≦n−1およびi+1≦j≦nに対してである。jの各値に対してiの可能性が複数存在するため、以下でなければならない。
【0120】
【数48】
これは2≦j≦nに対してであり、LCDi[xi]は、すべての数xiの最小公約数を表わしている。
【0121】
本発明の一態様によれば、単一の論理回路(適切に初期化されている)は、ベクトル化されたターボ復号器においてQPPインターリーバを実現する働きをする。回路は、QPP置換インデックスのシーケンスまたは逆置換インデックスのシーケンスを生成することが可能であっても良い。回路は、これらのシーケンスの算出を、正の順序で行なっても良いし逆の順序で行なっても良い。回路は、基数2の処理に対してクロック周期当たり1ステップ進む単一の回路を備えていても良い。さらに回路は、それぞれ基数4の処理に対してクロック周期当たり2ステップ進む2つの回路(偶数および奇数)を備えていても良い。
【0122】
以上、ベクトル化された置換と、ベクトル化されたターボ復号化アーキテクチャとについて説明してきた。一実施形態においては、置換およびその逆が両方ともベクトル化可能(QPP置換の場合と同様)であるときに、単一の置換回路復号器アーキテクチャを用いる。ベクトル化されたターボ復号器インターリーバがウィンドウ内アドレスとウィンドウ間置換とを生成することを求める要求について説明し、この問題に対する2つの解決方法を示した。1つの(間接的な)解決方法(図15に示す)では、場所をずらした多くの完全インターリーバを例示する一方で、他の(直接的な)解決方法(図16に示す)では、ウィンドウ間置換のシーケンスを直接算出する再帰に基づく。インターリーバ設計段階(等式(48))で利用できた基準として、ウィンドウ間置換シーケンスの生成を循環シフトのシーケンスに変えるものを導き出した。
【0123】
ここで導き出した技術はすべて、レジスタの組を適切に初期化することに基づいている。これらの初期値(等式(14)、(19)、および(42)の定数項)を、事前算出して読み出し専用メモリに格納しても良いし、リアル・タイムで算出しても良い。
【0124】
図17は、本発明のある態様に一致するインターリーブ後データのベクトル化された処理を行なうための方法のフロー・チャートである。図17の開始ブロック1702の後で、ブロック1704において再帰回路のレジスタを初期化する。ブロック1706において、再帰回路をクロックして、ウィンドウ内インデックスwとウィンドウ間置換ベクトルmとを生成する。ブロック1708において、ウィンドウ内インデックスwを用いて、データ行をメモリから取り出す。ブロック1710において、これらのデータ値を置換して並列プロセッサに送る。並列プロセッサは、ターボ復号器のプロセッサであっても良いし、インターリーブ後または置換後データを用いる何らかの他のプロセスを行なっても良い。ブロック1712においてデータを処理し、ブロック1714において処理結果をメモリに格納しても良いし出力しても良い。現在のデータ・ブロックにおいて処理すべきデータ値がもっと存在する場合(判定ブロック1716からの肯定の分岐によって示すように)、フローはブロック1706に戻って、次のウィンドウ内インデックスと置換ベクトルとを計算する。現在のデータ・ブロックにおいて処理すべきデータ値がもうない場合(判定ブロック1716からの否定の分岐によって示すように)、現在のブロックは処理されていて、ブロック1718において方法を終了する。
【0125】
上記の明細書では、本発明の特定の実施形態について説明してきた。しかし当業者であれば理解するように、添付の請求項で述べる本発明の範囲から逸脱することなく、種々の変更および変形を行なうことができる。したがって、明細書および図は限定的な意味ではなく例示的な意味で考慮すべきであり、このような変更はすべて、本発明の範囲に含まれることが意図されている。優位性、または問題の解決方法、および何らかの利益、優位性、解決方法を生じさせ得るかまたはより明白にし得るどんな要素も、いずれかまたは全ての請求項の重要であるか、必要であるか、または不可欠である特徴または要素として解釈してはならない。現時点で請求する発明は、添付の請求項によって規定され、本出願の係属中になされる任意の補正、および付与される請求項の均等物すべてを含む。
【技術分野】
【0001】
本発明は、一般的にデータ処理回路に関し、特に「ターボ符号」を用いる通信システム用のデータ処理回路に関する。
【背景技術】
【0002】
通信システムにおいて、送信信号(たとえば無線による)は、フェージング、ジャミング、および他の、信号内にエラーを導入させ得る要素の影響を受けやすいことがある。送信前に信号を符号化することは、送信中に導入されたエラーを、受信部において信号を復号化したときに検出および補正できるようにすることによって、チャンネル・ノイズ、フェージング、およびジャミングの影響を抑えることに役立つ。
【0003】
「ターボ符号」は、符号化方式におけるブレイクスルーであると認められており、送信中に生じるエラーに対する強力な抵抗を実現するものである。それらは、並列連結畳込み符号(parallel concatenated convolutional codes:PCCC)または直列連結畳込み符号(serial concatenated convolutional codes:SCCC)として実施することができる。ターボ符号によって、符号化利得が高くなり、ビット・エラー率が10−7と低くなる。ターボ符号は、エラー補正が優れているため、信号対雑音比(SNR)が一般的に低い応用例(たとえば、無線通信)において非常に有用である。
【0004】
図1に、従来のターボ符号器の例を示す。ターボ符号器100が受信した信号102は、第1の再帰的組織畳み込み(recursive systematic convolutional:RSC)符号器104に送られるとともに、インターリーバ106を介して第2の畳み込み符号器108に送られる。2つの畳み込み符号器によってターボ符号の成分符号が得られる。インターリーバ106は、データ・ストリームの順序を、データ・ストリームを第2の畳み込み符号器に入力する前に変える。また一方のデータ・ストリームをインターリーブするので、結果として生じる符号は、ターボ符号器から得られる高い符号化利得を提供する時間変化特性を有するものとなる。符号化された信号110は、変調されて、通信チャネル上で送信される。
【0005】
図2に、従来のターボ復号器の例を示す。ターボ復号器200は、復調信号202を通信チャネルから受信する。信号202は、第1の軟入力、軟出力(soft−input,soft output:SISO)復号器204に送られるとともに、インターリーバ206を介して第2のSISO復号器208に送られる。第2のSISO復号器208は信号202の成分も受信する。第1のSISO復号器204の出力を、インターリーバ210を介して第2のSISO復号器208に送り、第2のSISO復号器の出力を、デ・インターリーバ212を介して第1のSISO復号器204に送ることによって、反復復号を可能にする。動作時には、受信したデータ・ブロック(データ・フレームとも言う)を一度処理した後に、複数回再循環して、所望の符号化利得を達成する。ターボ符号は、エラーに対する高い抵抗を示すが、多くの実際の応用にとって理想的に適しているわけではない。なぜならば、ターボ符号器がインターリーバ(遅延を導入する)を用いる結果、待ち時間が極端に長くなり、またターボ復号器の反復アルゴリズムがコンピュータ的に複雑であるからである。ターボ符号は通常、大きなブロック・サイズ(たとえば、>5000ビット)を伴って動作する。反復復号を容易にするために、ブロック全体に対する軟入力をメモリに格納しなければならない。言い換えれば、各復号化段階において、軟入力を繰り返して用いて更新する。その結果、ターボ復号器はメモリ集約的(memory intensive)となるため、ターボ復号器は、実用的でないかまたは応用例によっては高価すぎることになる。
【0006】
一般的に、連続したターボ復号器の待ち時間は、特別にデザインされた高速のハードウェアを用いてターボ復号器を実現することによって、わずかに改善される場合がある。しかし、費用が増加し、デバイスが複雑になり、加えて消費電力が増加する(多くの低電力無線デバイスにおいては容認できない場合がある)という犠牲を払って得られるのは、待ち時間が漸進的に改善されるということのみである。
【0007】
ターボ復号化の長い待ち時間に対処する代替的なアプローチは、並列復号化アーキテクチャを用いることである。並列復号化によって、スループットおよび待ち時間を大きく改善することができる。2つの基本的な並列化方式を利用することができる。並列処理は、複数の受信信号を同時に復号化することか、または受信信号ブロックをサブ・ブロックに分割して、サブ・ブロックを複数の並列プロセッサによって並列に復号化することによって、実現される場合がある。スループットおよび待ち時間は、並列復号化を用いて小さくなる場合があるが、大容量メモリの要求はそうはならない。加えて、ハードウェアもより複雑になり、コストも増加する。したがって、メモリ効率が良くてハードウェア(または面積)効率の良い並列化方式が、ターボ符号を実際に具体化するためには必要である。
【0008】
並列処理に伴う問題の1つはメモリ・アクセスの問題である。特に、インターリーバの存在は、複数の並列プロセッサによってメモリが順序が狂ったアドレス指定をされざるを得ないことを意味する。2つ以上のプロセッサが、読み出しまたは書き込みアクセスを同じメモリに対して同じクロック周期で行なう必要があるときに、メモリ競合が生じる。ある種類の無競合(contention free:CF)インターリーバの場合、メモリ競合はない。
【発明の概要】
【発明が解決しようとする課題】
【0009】
二次置換多項式(quadratic permutation polynomial:QPP)ターボ・インターリーバ(ロング・ターム・エボリューション(Long Term Evolution:LTE)規格において採用されている)は、CFインターリーバである。LTEシステムでは高データ・レートが要求されるため、ターボ復号器は、複数のプロセッサを用いた並列復号化を利用する必要がある。したがって、QPPをマルチ・プロセッサ・ターボ復号器に適用することが求められている。
【図面の簡単な説明】
【0010】
【図1】典型的な従来のターボ符号器のブロック図である。
【図2】典型的な従来のターボ復号器のブロック図である。
【図3】本発明のいくつかの実施形態による復号器回路の一部のブロック図である。
【図4】本発明のいくつかの実施形態による典型的なデータ置換を示す図である。
【図5】本発明のいくつかの実施形態による典型的なインターリーバのブロック図である。
【図6】本発明のいくつかの実施形態による典型的な多項式再帰回路のブロック図である。
【図7】本発明のいくつかの実施形態による典型的な再規格化可能な加算器のブロック図である。
【図8】本発明のいくつかの実施形態による基数4のターボ復号器に対する典型的なインターリーバのブロック図である。
【図9】本発明のいくつかの実施形態による単一の置換回路を用いた典型的なターボ復号器回路のブロック図である。
【図10】本発明のいくつかの実施形態による典型的なメモリ割り当てを示す図である。
【図11】本発明のいくつかの実施形態による典型的なメモリ割り当てを示す図である。
【図12】本発明のいくつかの実施形態による2つの置換回路を用いた典型的なターボ復号器回路のブロック図である。
【図13】本発明のいくつかの実施形態による典型的な基数Wの加算器のブロック図である。
【図14】本発明のいくつかの実施形態による典型的な基数Wの多項式再帰回路のブロック図である。
【図15】本発明のいくつかの実施形態による基数Wの多項式再帰回路を用いた直接型インデックス生成器のブロック図である。
【図16】本発明のいくつかの実施形態による基数Wの多項式再帰回路を用いた間接型インデックス生成器のブロック図である。
【図17】本発明のいくつかの実施形態によるインターリーブ後順序でデータ値にアクセスするための方法のフロー・チャートである。
【発明を実施するための形態】
【0011】
添付の図では、個々の図の全体に渡って、同様の参照数字は同一のまたは機能的に同様の要素を指している。また添付の図は、以下の詳細な説明とともに本明細書に取り入れられて本明細書の一部を構成するとともに、さらに種々の実施形態を例示し、本発明にすべて従う種々の原理および優位性を説明する働きをする。
【0012】
当業者であれば分かるように、図における要素は、簡潔および明瞭を目的として例示されており、必ずしも一定の比率で描かれているわけではない。たとえば、本発明の種々の実施形態の理解の向上を助けるために、図中のいくつかの要素の寸法は他の要素に対して誇張されている場合がある。
【0013】
本発明による実施形態を詳細に説明する前に、以下のことに注意されたい。すなわち、実施形態は主に、ターボ復号器におけるインターリーバに関係する方法工程および装置構成要素の組み合わせにあるということである。したがって、装置構成要素よび方法工程は、適切であれば図面中で従来の符号を用いて表して、本発明の実施形態を理解するのに適切な特定の詳細のみを示すようにしている。これは、本明細書の説明の利益を受ける当業者には容易に明らかである詳細によって、開示が不明瞭になることがないようにするためである。
【0014】
この文献において、関係語たとえば第1および第2、最上部および最下部などは単に、ある存在または行為を別の存在または行為と区別するために用いる場合があり、その場合、このような存在間または行為間のこのような関係または順序の実際のものを必ずしも必要としないし意味することもない。用語「含む」、「含んでいる」またはこれらの他のどんな変形も、包括的に含めることに及んでいることが意図されている。すなわち、要素のリストを含むプロセス、方法、物品、または装置には、これらの要素が含まれているだけでなく、明白にはリストにされていない他の要素、またはこのようなプロセス、方法、物品、もしくは装置に固有の他の要素が、含まれていても良い。要素が「含む」の後にきた場合、これは、要素を含むプロセス、方法、物品、または装置に、同じ要素がさらに存在することを排除するものではないことを、さらなる制約を伴うことなく行なうものである。
【0015】
本明細書に記載した本発明の実施形態は、プログラマブル論理回路たとえばフィールド・プログラマブル・ゲート・アレイ(field programmable gate array:FPGA)または従来のプロセッサに、前記回路またはプロセッサを制御する一意の格納されたプログラム命令であって、本明細書に記載したインターリービングの機能の一部、ほとんど、またはすべて実現するプログラム命令を伴うものを含む場合があることが理解される。あるいは、一部または全部の機能を、格納されたプログラム命令を持たない状態機械によって実施することができるか、または各機能もしくはいくつかの機能のある組み合わせをカスタム・ロジックとして実施する1つもしくは複数の特定用途向け集積回路(application specific integrated circuit:ASIC)において実施することができる。当然のことながら、これらのアプローチの組み合わせを用いることができる。このようにして、これらの機能を得るための方法および手段について本明細書において説明している。さらに、以下のことが予想される。すなわち、おそらくかなりの努力および多くのデザイン選択が、たとえば、利用できる時間、最近の技術、および経済的考慮によって誘導されるにもかかわらず、本明細書で開示される考え方および原理によって導かれれば、当業者は、このようなソフトウェア命令およびプログラムおよびICを最小限の実験で容易に作成することができるということである。
【0016】
本発明の実施形態は、並列またはベクトル化されたターボ復号器におけるメモリ・アクセスに関する。したがって、本発明の実施形態は一般的にデータ処理回路に関し、特に「ターボ符号」を用いる通信システム用のデータ処理回路に関する。
【0017】
図3は、本発明のいくつかの実施形態による復号器回路300の一部のブロック図である。図3を参照して、回路300はデータ・メモリ302を備える。データ・メモリ302は、復号器304のためのデータ格納を行なう。インターリーバ回路306が、メモリ302からのデータを復号器304へ転送するように動作可能である。インターリーバ回路306は、インデックスの順序列によって規定される置換に従ってデータのシーケンスを置換するデバイスである。典型的な応用例(たとえばターボ復号化)では、インターリーバは、メモリ内のデータへのランダム・アクセスを行なうためのアドレス308を生成して、対応するデータ310をメモリから受信する。生成されたアドレスは通常、インデックスの順序列に対応するため、この文献では、用語「インデックス」と「アドレス」とを交換可能に用いる。データ312は、自然順序またはインターリーブ後順序(interleaved order)で、復号器304に送られる。
【0018】
復号器304は、データを復号化するために並列に動作する多くの処理要素314を備える並列プロセッサまたはベクトル化されたプロセッサである。各処理要素は、受信したデータ・ブロックのサブ・セクション、サブ・ブロック、または「ウィンドウ」上で動作する。インターリーバは、メモリからのデータをウィンドウ間で置換するように動作する。用語「ベクトル化される(vectorized)」を用いるのは、インターリーバによってデータの格納およびフェッチがベクトルとして(すなわち、別個のグループとして)できる場合である。復号器から出力されたデータ316は、メモリ302内に格納しても良いし、他の処理モジュールへ出力しても良い。
【0019】
インターリーバ306を、種々のベクトル化されたターボ復号器アーキテクチャにおいて具体化しても良く、ウィンドウ間置換のシーケンスを生成するための論理回路を単純にする設計基準について開示する。
【0020】
本発明の一実施形態においては、インターリーバは、ベクトル化されたターボ復号器における二次置換多項式(QPP)インターリーバである。この実施形態においては、インターリーバによって、より高次の置換多項式を正または逆の順序で再帰的に生成することが行なわれる。一実施形態においては、インターリーバを論理回路として実施して、アドレスπ(x)=mxW+wxをそのmxおよびwx成分に自動的に分解する。加えて、インターリーバを用いて、ベクトル化されたターボ復号化を行なうために必要な「ウィンドウ内」アドレスと「ウィンドウ間」置換とを生成しても良い。
【0021】
インターリーバを、第3世代(3G)無線アクセス技術のロング・ターム・エボリューション(LTE)(以後、「LTE」と言う)に対して提案されるターボ復号器ハードウェアにおいて用いても良い。
【0022】
QPP置換は、多項式によって生成される置換の二次の場合である。最初に、置換多項式の導入処理について説明する。処理は一般的である。なぜならば、ターボ復号器は、形式上は多項式であるが必ずしも二次ではない逆置換を効果的に用いることができるからである。次に、典型的なベクトル化されたターボ復号化アーキテクチャについて説明する。このアーキテクチャからインターリーバの機能上の要求が推論される。インターリーバの機能の1つは、置換を「ウィンドウ内」アドレスと「ウィンドウ間」置換とに分解することである。ウィンドウ間置換のシーケンスの生成を単純化できる設計基準についても説明する。
【0023】
n次の置換多項式は以下の形式である。
【0024】
【数1】
ここで、xおよびfiは整数である。xを0からK−1まで増加させると、多項式Pn(x)によって置換が生成される。多項式Pn(x)は通常、置換されたシーケンスの位置xにおける数量の置換前位置として解釈される。fiに対していくつか制約(ここでは扱わない)を設けることによって、Pn(x)によって置換が生成されることを確実にする。LTEの場合、ターボ・インターリーバは二次多項式(すなわちn=2)を用いる。簡単にするために、この文献の残りの部分では一般に、mod Kの表記法を省き、すべての量が、特に断らない限り、モジュロKで換算されていると暗黙的に仮定する。
【0025】
逆置換Pm−1(x)、ここで、
【0026】
【数2】
も、以下の多項式の形である。
【0027】
【数3】
一般的に、n≠mである。QPPの場合、f2は、Kのすべての素因数(prime factor)をある次数(order)まで含まなければならない。その結果、mは、f2のすべての素因数の最大次数(largest order)より大きくなることはない。
【0028】
復号器スループットは、ベクトル化を通して増加させることができる。ベクトル化された復号器では、長さKのデータ・ブロックを、M個の通常は非オーバーラッピングの長さWの「ウィンドウ」に分割する(K=MW)。これらを、M個のプロセッサによって同期して処理する。
【0029】
図4に、本発明のいくつかの実施形態による典型的なデータ置換を示す。図4に示すのは、長さK=40のデータ・ブロック402である。ブロック402を、M=4で長さ10のウィンドウ404に分割してある。データを4個のプロセッサ406によって処理する。i番目のプロセッサ(0≦i≦3)によって、データ・ブロック402内での位置10i〜10i+9におけるデータを処理する。
【0030】
反復処理であるので、ターボ復号器は、順次的(または「自然(natural)」)順序および置換後順序(permuted order)の両方で、データを処理できなければならない。図4では、アレイ402は、データのシーケンスを自然順序で示し、アレイ408は、シーケンスを置換後またはインターリーブ後順序で示す。図4では、プロセッサ0が、データ位置0、1、2、…、9におけるデータ、および位置0、17、34、11、28、5、22、39、16、33におけるデータを、順次に処理できなければならないということを示している。同様に、プロセッサ1が、位置10、11、12、…、19におけるデータ、および位置10、27、4、21、38、15、32、9、26、3におけるデータを、順次に処理できなければならない。
【0031】
ベクトル化と置換後順序処理との組み合わせによって、メモリ管理の問題が持ち込まれる。なぜならば、複数のプロセッサが、メモリからのデータを、メモリ・アクセスに対して互いに干渉することも競合することもなく、置換後順序で同時にフェッチしなければならないからである。
【0032】
図4の「インターリーブ後データ」列における置換アドレスは、実際には、QPP37x+2Ox2 mod 40によって生成される。図4において、各自然順序および各置換アドレスは、形式m10+wに分解されている。ここで、wは「ウィンドウ内アドレス」列の中にあり、mは「ウィンドウ番号」列の中にある。以後、アドレスは一般的に形式mW+wであると考え、mおよびwを、それぞれアドレスのmおよびw成分であると言う。置換アドレスに対して、m成分は、データが由来する置換前のシーケンスにおけるウィンドウを示し、w成分は、データが由来するウィンドウ内での相対位置を示す。
【0033】
図4の置換アドレス列408は、任意のステップにおいて、すべてのプロセッサが同じウィンドウ内アドレス(列410)におけるデータを処理することを示している。たとえば、置換後順序処理の場合、第1のステップにおいて、すべてのプロセッサはウィンドウ内アドレス0におけるデータを処理する。第2のステップにおいて、すべてのプロセッサはウィンドウ内アドレス7におけるデータを処理する。さらに、置換後順序処理の場合に、各ステップにおいてウィンドウ間置換があることに注意されたい(列412)。mi=(m0,m1,m2,m3)i(0≦m0,m1,m2,m3≦3)が、i番目の処理ステップ(0≦i≦9)におけるプロセッサ0、1、2、および3に対する置換されたアドレスのm成分をそれぞれ示すものとする。各miは、ステップiに対するウィンドウ間置換である。表1に、これらのウィンドウ間置換をiの関数として列挙する。ちなみに、各mi(1≦i≦9)はm0の循環シフトであることに注意されたい。これは一般的に置換多項式に当てはまるわけではないが、特性が保たれる条件を以下に導き出す。
【0034】
【表1】
結果として、この例におけるデータは10×4Bのメモリに格納することができる。ここでBはデータ幅(ビット)である。
【0035】
図5は、本発明のいくつかの実施形態による典型的なインターリーバのブロック図である。図5を参照して、インターリーバは、インデックス生成器500、メモリ502、およびウィンドウ間置換回路504を備える。10×4Bのメモリ502は、40個のデータ・サンプルのブロックを収容している。メモリの各行は、同じウィンドウ内インデックスwのデータ要素を収容し、一方で、各列は、同じウィンドウ・インデックスmのデータ要素を収容している。自然順序でデータを処理するとき、プロセッサ0はデータ値の第1の列を処理する。インターリーブ後順序でデータを処理するとき、プロセッサ0は、下線を引いた数字を伴うデータ値をウィンドウ内順序{0,7,4,1,8,5,2,9,6,3}で処理する。動作時には、インデックス生成器500が、ウィンドウ内インデックス506(w)を生成し、これをメモリ・アクセス・コントローラ508に送る。この例では、メモリ・アクセス・コントローラ508は、メモリ502の対応する行における4つのデータ要素をウィンドウ間置換回路504に送る行セレクタを備える。またインデックス生成器500は、4要素の置換ベクトル510(m)を生成し、これをウィンドウ間置換回路504に送る。ウィンドウ間置換回路504では、4つのデータ要素の順序を置換ベクトルに従って置換して、置換後順序のデータを復号器の処理要素に出力する。
【0036】
データを順次的順序でベクトルとして処理するためには、インデックス生成器から順次的なウィンドウ内アドレス{0,1,2,…,9}を出して、単位元(identity)(すなわち、通過(pass through))ウィンドウ間置換{0,1,2,3}を適用する。データを置換後順序でベクトル処理するためには、インデックス生成器からアドレス0,7,4,1,8,5,2,9,6,3を出して、表1におけるウィンドウ間置換を適用する。
【0037】
以前の例では、置換後順序処理に対してデータ・ベクトルをフェッチする場合には、各ステップにおいてすべてのプロセッサがデータを同じウィンドウ内アドレスで処理することが必要であることを示した。したがって、数学的には、置換π(x)に対するベクトル化基準は以下のようになる。
【0038】
【数4】
これは、すべての1≦u≦M−1および0≦v≦W−1に対してである。等式(4)を満たす置換を、ここではベクトル化可能な置換と言う。
【0039】
WによってKが割り切れると仮定すると、以下のようにPn(x)がベクトル化可能であることを示すのは簡単である。
【0040】
【数5】
等式(5)では、関係t mod K mod W=t mod Wを、WによってKが割り切れるときに、任意の整数tに対して用いている。等式(5)の5つの等式のうち第4の等式における二重総和(double summation)はゼロである。なぜならば、総和における各項には、Wの因数が少なくとも1つは含まれているからである。
【0041】
Pm−1(x)は、Pn(x)と同様に形式が多項式であるので、以下のようにベクトル化基準を満足しなければならない。
【0042】
【数6】
これは、すべての1≦u≦M−1および0≦v≦W−1に対してである。Pn(x)およびPm−1(x)は両方ともベクトル化可能であるため、データをベクトル的に格納およびフェッチすることが、自然順序においてまたはインターリーブ後順序において可能である。後述するように、このことは、ベクトル化されたターボ復号器に対して重要な単純化の効果がある。
【0043】
等式(6)は、Pm−1(x)の多項式の形式に基づいて、ベクトル化可能性を示しているが、置換π(x)がベクトル化可能であるならば、その逆置換π−1(x)もベクトル化可能であるということは一般的に正しい。π(x)がベクトル化可能であるため、以下でなければならない。
【0044】
【数7】
ここで、0≦u,mu≦M−1、x≠y時にmx≠my、および0≠v,wv≦W−1である。
【0045】
等式(7)を逆にすると以下のようになる。
【0046】
【数8】
等式(8)が与えられたとすると、π−1(x)は明らかに等式(4)のベクトル化基準を満たしている。
【0047】
工学の文献では、長さK=MWの置換π(x)に対する無競合の基準(contention−free criterion)について以下のように述べている。
【0048】
【数9】
これは、すべての0≦p,q≦M−1(ただしp≠q)に対してである。Pn(x)は等式(4)のベクトル化基準を満足するので、以下でなければならない。
【0049】
【数10】
ここで、0≦mu≦M−1(x≠y時にmx≠my)および0≦wv≦W−1(x≠y時にwx≠wy)である。
【0050】
等式(9)の床演算(floor operation)によってmuが取り出されるため、Pn(x)は、したがって不等式(9)を満足しなければならない。同一の論法によって、等式(6)が満足されるためPm−1(x)も不等式(9)を満足しなければならないということが決まる。
【0051】
しかし、以下の形式の置換について考えてみる。
【0052】
【数11】
ここで、0≦mu≦M−1(x≠y時にmx≠my)および0≦wu,v≦W−1である。ここでは、w成分は、uおよびvの両方に依存し、等式(10)の場合のようにv単独に依存してはいない。その結果、不等式(9)は満足されるが、ベクトル化基準は必ずしも満足されないであろう。したがって、ベクトル化されたターボ復号化に対しては、ベクトル化基準の方が強い基準である。無競合のメモリ・アクセスを保証することに加えて、データをベクトルとして格納およびフェッチすることも、所望のウィンドウ内アドレスを出すことによって可能である。
【0053】
ハードウェアのターボ復号化では、Pn(x)を再帰的に生成する手段が必要である。Pn(x+1)を以下のように展開することによって再帰的関係を導き出すことができる。
【0054】
【数12】
ここで、Pn−1n(x)は次数n−1の多項式である。
【0055】
【数13】
ここで係数は以下の通りである。
【0056】
【数14】
Pn−1n(x)自体が多項式であるため、以下が得られる。
【0057】
【数15】
したがって等式(12)の再帰的関係を、以下のように0次項まで回帰させる(regressed back)ことができる。
【0058】
【数16】
等式(16)は、ハードウェアの具体化が簡単である。図6にその例をn=5に対して示す。図6では、再帰回路600は、レジスタ602、604、606、608、および610と、加算器612、614、616、618、および620とを備える。入力信号P01(x)(622)は一定であり、各Pi−1i(x)レジスタ(1≦i≦5)の初期値は、等式(13)の定数項hi−1,0である。初期値hi−1,0の決定を、たとえば、初期値をリアル・タイムで算出するかまたは値を事前計算して読み出し専用メモリに格納することによって、行なっても良い。出力624は多項式の値Pn(x)である。また図6のハードウェアは、Pn(x)を任意のn<5に対して算出することが可能であり、これはPi−1i(x)を0に、1≦i≦5−nに対して初期化することによって行なわれる。
【0059】
図6のハードウェア・モデルは、実際に行なわれる信号のモジュロKの換算を省略することによって単純化している。これは、図7に示す再規格化可能な加算器700を、図6の各加算器の代わりに用いることによって行なうことができる。図7を参照して、再規格化可能な加算器700は、入力信号702(x)および704(y)、モジュロKを加算するように動作可能である。入力信号xおよびyを加算器706において加算して、信号708を生成する。加算器710では、値K(712)を信号708から差し引いて、信号714を生成する。信号714が正の場合、それを出力として用いなければならない。信号714が負の場合、信号708を出力として用いなければならない。この例では、データを2の補足形式で格納することで、信号714の最上位ビット(most significant bit:MSB)を716において選択して、信号セレクタ718を制御するために利用できるようにしている。加算の結果(モジュロK)を、信号720として出力する。
【0060】
図6のハードウェアが生成するPn(x)は、x=0で開始して、x=K−1まで増加する。しかしターボ復号器は、Pn(x)を逆の順序で生成する必要もある。すなわち、x=K−1で開始して、x=0まで減少するのである。Pn(x−1)を以下のように展開することによって、再帰的関係を導き出すことができる。
【0061】
【数17】
ここで、Qn−1n(x)は次数n−1の多項式である。
【0062】
【数18】
ここで係数は以下の通りである。
【0063】
【数19】
Qn−1n(x)自体が多項式であるため、以下が得られる。
【0064】
【数20】
したがって等式(20)の再帰的関係を、以下のように0次項まで回帰させることができる。
【0065】
【数21】
Pi−1i(x)レジスタ(1≦i≦5)の値を初期化して定数項ki−1,0にすることによって、図6のハードウェアを用いて等式(21)の再帰を算出することができる。正順序での生成に対するレジスタ初期化の場合と同様に、初期値ki−1,0の決定を、たとえば初期値をリアル・タイムで算出するかまたは値を事前計算して読み出し専用メモリに格納することによって、行なっても良い。
【0066】
考え方の一例として、以下の置換多項式について考えてみる。
【0067】
【数22】
上記等式を用いて、以下が得られる。
【0068】
【数23】
【0069】
【数24】
【0070】
【数25】
前述したように、図6のハードウェアを用いてP3(x)を正の順序で算出するために、レジスタを以下のように初期化する。
(1)レジスタP5(x)を初期化して0にする。
(2)レジスタP45(x)を初期化して27にする(P23(x)多項式の定数項)。(3)レジスタP34(x)を初期化して20にする(P12(x)多項式の定数項)。(4)レジスタP23(x)を初期化して20にする(定数項P01(x))。
(5)レジスタP12(x)およびP01(x)を初期化して0にする。
【0071】
初期化の後、レジスタを39回クロックして、シーケンスにおける40個のアドレスすべてを生成する。表2に、レジスタの内容を、多項式P3(x)=37x+20x2+10x3 mod 40に対する周期数xの関数として、正の順序で列挙する。表のP5(x)列におけるアドレスのシーケンスは、等式(22)を直接算出したときに生成されたであろうシーケンスと同じものであることを確認することができる。
【0072】
逆順序の再帰に対する初期レジスタ値が、Qi−1i(x)から以下のように求まる。
【0073】
【数26】
【0074】
【数27】
【0075】
【数28】
したがって、図6のハードウェアを用いてP3(x)を逆の順序で算出するために、レジスタを以下のように初期化する。
(1)レジスタP5(x)を初期化して0にする。
(2)レジスタP45(x)を初期化して13にする(Q23(x)多項式の定数項)。(3)レジスタP34(x)を初期化して20にする(Q12(x)多項式の定数項)。(4)レジスタP23(x)を初期化して20にする(定数項Q01(x))。
(5)レジスタP12(x)およびP01(x)を初期化して0にする。
【0076】
初期化の後、レジスタを40回クロックして、シーケンスにおける40個のアドレスすべてを生成する。表3に、レジスタの内容を、多項式P3(x)=37x+20x2+10x3 mod 40に対する周期数xの関数として、逆の順序で列挙する。目視による検査によって、表3におけるシーケンスが表2の逆のシーケンスであることが明らかである。
【0077】
【表2】
【0078】
【表3】
前述の考え方は、主に基数(radix)2の復号器に適用される。これは、クロック周期当たり1つのベクトルを処理する。符号トレリス記述(code trellis description)では、基数2のマルチ・プロセッサ復号器の各プロセッサは、クロック周期当たり1つのトレリス・ステップを処理する。基数4の復号化は、復号器のスループットを増加させるための良く知られた技術である。符号トレリス記述では、基数4のマルチ・プロセッサ復号器の各プロセッサは、クロック周期当たり2つのトレリス・ステップを処理する。したがって基数4のベクトル化された復号器は、クロック周期当たり2つのベクトルを処理する。一方のベクトルは偶数のトレリス・ステップに対応し、他方は奇数のトレリス・ステップに対応する。
【0079】
図8は、本発明のいくつかの実施形態による基数4の復号器に対する典型的なインターリーバ回路(たとえばインターリーバ回路306)のブロック図である。図8を参照して、インターリーバ回路は、偶数インデックス生成器800、奇数インデックス生成器802、偶数ウィンドウ間置換回路804、および奇数ウィンドウ間置換回路806を備える。10×4Bのメモリ502は、40個のデータ・サンプルのブロックを収容している。動作時には、偶数インデックス生成器800は偶数ウィンドウ内インデックス808を生成して、メモリ・アクセス・コントローラに送り、その結果、メモリ502の対応する行における4つのデータ要素が偶数ウィンドウ間置換回路804に送られる。同様に、奇数インデックス生成器802は奇数ウィンドウ内インデックス810を生成して、メモリ・アクセス・コントローラに送り、その結果、メモリ502の対応する行における4つのデータ要素が偶数ウィンドウ間置換回路806に送られる。またインデックス発生器800、802は、4要素の置換ベクトルmeven812と4要素の置換ベクトルmodd814とを生成する。これらは、偶数ウィンドウ間置換回路804と奇数ウィンドウ間置換回路806とにそれぞれ送られる。偶数および奇数置換回路804および806はそれぞれ、置換ベクトルmevenおよびmoddにそれぞれ従って、4つのデータ要素の順序を置換して、データを置換後順序で復号器の処理要素に出力する。
【0080】
基数4の動作を行なうために、インデックス発生器800および802は、各クロック周期上で2ステップだけ進まなければならない。なお、等式(12)〜(16)は、クロック周期ごとに行なうインデックス発生器の1ステップの正の進みに対する帰納式を示している。等式(17)〜(21)は、クロック周期ごとに行なう1ステップの逆の進みに対する帰納式を与えている。これらの式は基数2の処理に適している。
【0081】
基数4の処理に対して、これらの式は以下のように一般化される。ステップxからdステップだけ離れた再帰多項式の値は以下の通りである。
【0082】
【数29】
ここで、Sn−1n(x)は次数n−1の多項式である。
【0083】
【数30】
ここで係数は以下の通りである。
【0084】
【数31】
Sn−1n(x)自体が多項式であるため、以下が得られる。
【0085】
【数32】
したがって等式(32)の再帰的関係を、以下のように0次項まで回帰させることができる。
【0086】
【数33】
等式(29)〜(33)は、等式(12)〜(16)および(17)〜(21)の一般化である。基数2の正の進み(forward advancement)に対してd=1であり、一方で、基数2の逆の進み(backward advancement)に対してd=−1である。同様に、基数4の正の進みに対してd=2であり、一方で、基数4の逆の進みに対してd=−2である。
【0087】
図9は、典型的なベクトル化されたターボ復号器アーキテクチャのブロック図である。ログ・マップ復号器(たとえば、復号器304)は、複数のM個のログ・マップ・プロセッサ、たとえばプロセッサ314(「PROC0」〜「PROCM−1」と標示される)からなる。ログ・マップ(log−MAP)復号器304は、復号器1モード(自然順序処理)と復号器2モード(置換後順序処理)とを交互に行なう。また外部データ格納用の2つのメモリ(たとえばメモリ502および別のメモリ502’)と置換回路(たとえば置換回路504)とが存在する。メモリ・セレクタ902は、ログ・マップ復号器304が復号器1モードなのか復号器2モードなのかに応じて、2つのメモリ502および502’間で選択する。いずれのモードにおいても、インターリーバ(インデックス生成器たとえばインデックス生成器500と置換回路504とを備える)は、メモリの行からデータ・ベクトルを取り出すためのウィンドウ内アドレスと、ウィンドウ間でデータ・ベクトルを置換するためのウィンドウ間置換ベクトルとを生成する。なお、このアーキテクチャによって基数4の処理も可能である。この場合、インデックス生成器は、メモリの2つの行から2つのデータ・ベクトルを取り出すための2つのアドレス(偶数および奇数)に加えて、ウィンドウ間でこれらのデータ・ベクトルを置換するための2つのウィンドウ間置換ベクトルを生成する。
【0088】
図10および11に、長さKのブロック(K=MW)に対する外部メモリの格納配置を例示する。外部メモリはWの格納域深さであり、各格納域は、Bビット量の長さMのベクトルを格納する。図10および11の略図における各小さいボックスには、収容されるデータのインデックスが示されている。インターリーバ置換をπ(x)(0≦x≦MW−1)によって示す。図10は、外部メモリ1(502’)がデータを置換後順序で格納することを示している。図11は、外部メモリ2(502)がデータを自然順序で格納することを示している。
【0089】
このアーキテクチャにおけるデータの流れは以下の通りである。復号器2モード(置換後順序処理)では、ウィンドウ内置換アドレスをウィンドウ間置換ベクトルとともに出して置換回路を制御することによって、外部(extrinsics)は外部メモリ2(自然順序メモリ)からベクトル的にフェッチされる。ログ・マップ・プロセッサが、更新された外部を生成すると、復号器2がそれらを(ベクトルとして)外部メモリ1内に順次に格納する。復号器2が、更新された外部を置換後順序で生成するが、それらを順次に格納するので、外部は最後には外部メモリ1内で置換後順序になることは、図10に示す通りである。
【0090】
復号器1モード(自然順序処理)では、外部は外部メモリ1(置換後順序メモリ)からベクトル的にフェッチされる。データはメモリ内では置換後順序であるが、復号器1は自然順序で処理するため、外部を、それらをフェッチするときに脱置換(depermutation)しなれければならない。前述したように、逆のQPP置換はベクトル化可能である。したがって、復号器2が自然順序の外部を置換して置換後順序の外部にするのと同じ方法で、復号器1は置換後順序の外部を脱置換して自然順序の外部にする。したがって、復号器1は、ウィンドウ間脱置換アドレスをウィンドウ間脱置換とともに出して、置換回路を制御する。
【0091】
図9の復号器アーキテクチャにおける置換回路は、任意の置換が可能でなければならない。そのため、Bビット値に対するM×Mクロスバー・スイッチを用いなければならない。LTEの場合、スループット要求から32という大きいM値を決めても良く、Bはほぼ8ビットである。8ビット値に対する32x32クロスバー・スイッチは、8192個の2入力マルチプレクサを用いて実現することができる。したがって、置換回路は復号器の重要な態様である。図9の復号器アーキテクチャにおいて単一の置換回路は可能である。なぜならば、インターリーバ置換およびその逆置換の両方をベクトル化しても良いからである。
【0092】
置換をベクトル化することができる場合、その逆もベクトル化することができる(これについては前述した)。しかし無競合の置換には、無競合の逆置換という意味は含まれていない。置換π(x)(0≦x≦7)とその逆のπ−1(x)について考えてみる。これらを表4に示す。置換π(x)は明らかに、M=2(すなわち、W=4)に対して無競合である。しかし、逆のπ−1(x)はM=2に対して無競合ではないことも明らかである。たとえば、以下の通りである。
【0093】
【数34】
および
【0094】
【数35】
実際には、この場合、あらゆるステップにおいて競合が存在する。
【0095】
【表4】
インターリーバ逆置換が無競合ではない場合、復号器は、外部を自然順序で両方の外部メモリに格納しなければならず、図12に示すアーキテクチャが必要となる。図12に示すのは、インターリーバ逆置換が無競合ではない場合の典型的なターボ復号器アーキテクチャである。このアーキテクチャには2つの置換回路504および1202がある。置換回路504はフェッチ時に外部を置換し、置換回路1202は格納時に外部を脱置換する。加えて、インバータ1204が、ウィンドウ間置換を反転させて置換回路1202を駆動するのに必要である。そのため、図9に示す復号器の方が図12に示す復号器よりも単純である。前述したように、QPPと同様にベクトル化可能なインターリーバ置換を用いるときには、単一の置換ネットワークのみが必要であり、ハードウェアがウィンドウ間置換を反転する必要はない。
【0096】
図9のより単純な復号器アーキテクチャに対するインターリーバ・モジュールに対して以下の能力が推論される。
(1)インターリーバ・モジュールは、置換およびその逆の両方を生成できなければならない。さらに、モジュールは、これらの置換を正の順序および逆の順序の両方で生成できなければならない。これには、置換多項式を再帰的に算出する一般的な論理回路が必要である。論理回路は、何らかの最高次数(LTEの場合は4または5)に対してデザインする必要がある。
【0097】
(2)インターリーバ・モジュールは、M個のアドレスをウィンドウ内アドレスとウィンドウ間置換とに、クロック周期当たり1つのレートで分解できなければならない。論理回路は、何らかの最大数のウィンドウMmaxと何らかの最大のウィンドウ寸法Wmaxとに適応するようにデザインする必要がある。LTEの場合、Mmax=16またはMmax=32であり、Wmax=384またはWmax=192である。
【0098】
長さWのウィンドウ上で動作するM個の並列プロセッサを伴うベクトル化されたターボ復号器について考えてみる。置換後順序処理の場合、i番目のステップ(0≦i≦W−1)では、以下のアドレスにおけるデータ、
【0099】
【数36】
を、フェッチしなければならない。数量wi(0≦wi≦W−1)はウィンドウ内アドレスであり、以下の値、
【0100】
【数37】
(ここで、0≦mi≦M−1)は、ウィンドウ間置換である。
【0101】
等式(36)は、ハードウェアによってアドレスπ(x)=mxW+wxをその成分mxおよびwxに分解しなければならないことを示している。これらの成分は以下の通りである。
【0102】
【数38】
および
【0103】
【数39】
この問題に対するアプローチの1つは、π(x)を算出した後に、ハードウェアによって等式(38)および(39)を力任せに算出することである。しかしながら、このアプローチは、Mが増えるにつれて高価になる。
【0104】
より良い解決方法は、π(x)の決定に関与するすべての算出を「基数W(base−W)」ドメインにおいて行なうことである。この解決方法を用いれば、π(x)の算出に関与する各数量v=mvW+wvは、vではなく対(mv,wv)として示される。すべての動作は対で行なわれ、結果は対で示される。図6に示す再帰的アドレス生成ハードウェアの場合、図7の再規格化可能な加算器の代わりに、図13に示す対ベースの(pair−based)加算器を用いる。図13に、図6の再帰的アドレス生成ハードウェアに対する典型的な対ベースの加算器1300を示す。図13を参照して、対ベースの加算器1300は、信号対(mx、wx)(702および702’)を信号対(my、wy)(704および704’)に加算して、その結果、信号対(mz,wz)(720および720’)を生じる。なお結果を、0≦mz≦M−1および0≦wz≦W−1となるように再規格化する。加算器706、加算器710、MSBセレクタ716、および信号セレクタ718によって、図7を参照して前述したように、wxおよびwyモジュロL(ここでL=W)を加算する第1の再規格化可能な加算器が形成される。同様に、第2の再規格化可能な加算器は、加算器1308に結合された加算器706’と、加算器1308に結合された加算器710’と、加算器710’に結合されたMSBセレクタ716’と、MSBセレクタ716’に結合された信号セレクタ718’とを備えており、加算器706’および710’は、mx、my、および「桁上げ」信号1306モジュロL(ここでL=M)を加算する。wx+wy−Wが負の場合に、信号1302がMSBセレクタ716によって出力される。この信号は、wx+wyが≧Wの場合に設定される「桁上げ」信号1306を生成するために、インバータ1304を通過する。桁上げ信号1306は、加算器706’の出力に、加算器1308において加算される。このようにして、すべての算出をモジュロKではなくモジュロWで行なっても良い。図6の再帰回路において対ベースの加算器を用いる場合、力任せの技術でアドレスを算出した後にアドレスをそのwおよびm成分に分解する算出を行なうのではなくて、ウィンドウ内アドレスとウィンドウ間置換ベクトル要素とを直接算出する。
【0105】
この解決方法を用いれば、アドレスπ(x)を算出したときに、結果が自動的に、その分解された形式(mx、wx)で現れる。
【0106】
【数40】
図14に、基数Wの加算器を伴うPn(x)に対する多項式再帰回路1400を示す。Pn(x)に対する回路1400は、基数Wの加算器を用いて構成されている。回路は、初期化パラメータ1402の組を受け入れて(前述したレジスタを初期化し)、等式(40)において規定される成分対(mx、wx)(出力1406および1404に対応する)を生成する。
【0107】
前述のセクションでは、Pn(x)に対する多項式再帰回路を、各アドレスがそのmおよびw成分に自動的に分解されるように、どのように変更できるかについて説明した。ベクトル化されたターボ復号器は実際には、等式(24)の場合と同様にM個のウィンドウに対するM個の同時分解を必要とする。なお、ベクトル化可能な置換を用いれば、すべてのM個のウィンドウに対してw成分は同一であり、一方で、m成分を集めることによってウィンドウ間置換が形成される。
【0108】
M個の同時分解に対する間接アプローチにおいて、図15に示すように、M個の同一のPn(x)回路を例示する。図15に、インターリーバをウィンドウ内アドレスとウィンドウ間置換とに分解するための間接アプローチの例を示す。再帰回路1400を、シーケンスの全体に渡ってウィンドウ寸法Wの間隔で場所をずらして開始するように初期化する。具体的には、u番目の回路(0≦u≦M−1)を、Pn(uW)から開始するように初期化する。このアプローチでは、Pn(x)の自動分解形式を用いて、u番目の回路がPn(uW+v) mod Wとfloor(Pn(uW+v)/W)=mu(v)との両方を生成するようにする。Pn(uW+v) mod Wがすべての回路に対して同一であるので、実際にはこれらの出力のうちの1つのみを用いる。mu(v)の組を集めてウィンドウ間置換を形成する。
【0109】
間接アプローチとは対照的に、直接アプローチでは、以下のようにウィンドウ間置換を直接算出するための再帰を導き出す。u番目のプロセッサのアドレス(0≦u≦M−1)のv番目のステップ(0≦v≦W−1)でのm成分mu(v)は、以下のように単純化することができる。
【0110】
【数41】
ここで、Ru(v)は次数n−1の多項式である。
【0111】
【数42】
ここで係数は以下の通りである。
【0112】
【数43】
なお、Ru(v)は多項式であるので、図6に示す再帰的な構造を用いて再帰的に算出することができる。図6に示す構造を用いてRu(v)を再帰的に算出する場合、算出をモジュロMで換算することができる。したがって、この場合、図7の再規格化可能な加算器を、Kの代わりにMを用いて、利用することができる。
【0113】
等式(41)の5つの等式のうち最後の等式は、図16に示す簡単なハードウェア解釈である。図16に、Pn(v)に対する自動分解再帰回路の単一インスタンス1400(置換シーケンスの始まりから開始するように初期化されている)を用いて、ウィンドウ内アドレスとウィンドウ間置換のm0(v)項とを取り出す場合を示す。Ru(v)(1≦u≦M−1、0≦v≦W−1)を算出する回路のM−1個のインスタンス(1602、1602’、および1602”)も存在する。等式(41)における方法に従って、m0(v)を、加算器1604、1604’、および1604”において各出力Ru(v)に加算して、mu(v)を得る。出力510は、自動分解再帰回路1400の出力1406、1404のうち第1の出力1406と、加算器1604、1604’、および1604”の出力とを含むとともに、出力510は、ウィンドウ間置換ベクトルm(v)=(m0(v),m1(v),…,mM−1(v))であり、出力506(ウィンドウ内インデックスwである)は、回路1400の出力1406、1404のうち第2の出力1404を含む。
【0114】
ウィンドウ間置換生成を、循環シフトを用いて単純化しても良い。特定の条件の下では、m(v)はすべてのv(0≦v≦W−1)に対してm(0)の循環シフトである。このことは、潜在的に、置換(たとえば図4に示すもの)を実現するハードウェアを単純化するのに役立つであろう。どのようにこれが行なわれるかを理解するために、置換m(v)について考えてみる。m0(v)はm(v)のすべての要素に対して共通であるので、以下のようになる。
【0115】
【数44】
特に関心が持たれるのは、ベクトルR(v)が一定でvに依存しない場合、すなわち以下の場合である。
【0116】
【数45】
これは、したがって以下を意味する。
【0117】
【数46】
これは各u(0≦u≦M−1)に対してである。これが成り立つ場合、m(v)は、m0(v)の位置だけR(0)の循環シフトである。
【0118】
等式(42)から導き出されるように、等式(46)における条件が、すべてのuおよびWに対して成り立つべき場合には、以下でなければならない。
【0119】
【数47】
これは、すべての1≦i≦n−1およびi+1≦j≦nに対してである。jの各値に対してiの可能性が複数存在するため、以下でなければならない。
【0120】
【数48】
これは2≦j≦nに対してであり、LCDi[xi]は、すべての数xiの最小公約数を表わしている。
【0121】
本発明の一態様によれば、単一の論理回路(適切に初期化されている)は、ベクトル化されたターボ復号器においてQPPインターリーバを実現する働きをする。回路は、QPP置換インデックスのシーケンスまたは逆置換インデックスのシーケンスを生成することが可能であっても良い。回路は、これらのシーケンスの算出を、正の順序で行なっても良いし逆の順序で行なっても良い。回路は、基数2の処理に対してクロック周期当たり1ステップ進む単一の回路を備えていても良い。さらに回路は、それぞれ基数4の処理に対してクロック周期当たり2ステップ進む2つの回路(偶数および奇数)を備えていても良い。
【0122】
以上、ベクトル化された置換と、ベクトル化されたターボ復号化アーキテクチャとについて説明してきた。一実施形態においては、置換およびその逆が両方ともベクトル化可能(QPP置換の場合と同様)であるときに、単一の置換回路復号器アーキテクチャを用いる。ベクトル化されたターボ復号器インターリーバがウィンドウ内アドレスとウィンドウ間置換とを生成することを求める要求について説明し、この問題に対する2つの解決方法を示した。1つの(間接的な)解決方法(図15に示す)では、場所をずらした多くの完全インターリーバを例示する一方で、他の(直接的な)解決方法(図16に示す)では、ウィンドウ間置換のシーケンスを直接算出する再帰に基づく。インターリーバ設計段階(等式(48))で利用できた基準として、ウィンドウ間置換シーケンスの生成を循環シフトのシーケンスに変えるものを導き出した。
【0123】
ここで導き出した技術はすべて、レジスタの組を適切に初期化することに基づいている。これらの初期値(等式(14)、(19)、および(42)の定数項)を、事前算出して読み出し専用メモリに格納しても良いし、リアル・タイムで算出しても良い。
【0124】
図17は、本発明のある態様に一致するインターリーブ後データのベクトル化された処理を行なうための方法のフロー・チャートである。図17の開始ブロック1702の後で、ブロック1704において再帰回路のレジスタを初期化する。ブロック1706において、再帰回路をクロックして、ウィンドウ内インデックスwとウィンドウ間置換ベクトルmとを生成する。ブロック1708において、ウィンドウ内インデックスwを用いて、データ行をメモリから取り出す。ブロック1710において、これらのデータ値を置換して並列プロセッサに送る。並列プロセッサは、ターボ復号器のプロセッサであっても良いし、インターリーブ後または置換後データを用いる何らかの他のプロセスを行なっても良い。ブロック1712においてデータを処理し、ブロック1714において処理結果をメモリに格納しても良いし出力しても良い。現在のデータ・ブロックにおいて処理すべきデータ値がもっと存在する場合(判定ブロック1716からの肯定の分岐によって示すように)、フローはブロック1706に戻って、次のウィンドウ内インデックスと置換ベクトルとを計算する。現在のデータ・ブロックにおいて処理すべきデータ値がもうない場合(判定ブロック1716からの否定の分岐によって示すように)、現在のブロックは処理されていて、ブロック1718において方法を終了する。
【0125】
上記の明細書では、本発明の特定の実施形態について説明してきた。しかし当業者であれば理解するように、添付の請求項で述べる本発明の範囲から逸脱することなく、種々の変更および変形を行なうことができる。したがって、明細書および図は限定的な意味ではなく例示的な意味で考慮すべきであり、このような変更はすべて、本発明の範囲に含まれることが意図されている。優位性、または問題の解決方法、および何らかの利益、優位性、解決方法を生じさせ得るかまたはより明白にし得るどんな要素も、いずれかまたは全ての請求項の重要であるか、必要であるか、または不可欠である特徴または要素として解釈してはならない。現時点で請求する発明は、添付の請求項によって規定され、本出願の係属中になされる任意の補正、および付与される請求項の均等物すべてを含む。
【特許請求の範囲】
【請求項1】
K個の要素を有するデータ・ブロックを符号化するためのターボ符号器であって、
次数nの置換多項式、
【数1】
に従って、データ・ブロックをインターリーブするように動作可能なターボ・インターリーバであって、独立変数xと多項式係数fiとは整数であり、係数fiは、
【数2】
を、2≦j≦nに対して満たし、LCDi[xi]は、すべての数xiの最小公約数を示す、前記ターボ・インターリーバを備えるターボ符号器。
【請求項2】
K個の要素を有するデータ・ブロックを復号化するためのターボ復号器であって、
次数nの置換多項式、
【数3】
に従ってインターリーブされたデータ・ブロックを、デ・インターリーブするように動作可能なターボ・デ・インターリーバであって、独立変数xと多項式の係数fiとは整数であり、係数fiは、
【数4】
を、2≦j≦nに対して満たし、LCDi[xi]は、すべての数xiの最小公約数を示す、前記ターボ・デ・インターリーバを備えるターボ復号器。
【請求項1】
K個の要素を有するデータ・ブロックを符号化するためのターボ符号器であって、
次数nの置換多項式、
【数1】
に従って、データ・ブロックをインターリーブするように動作可能なターボ・インターリーバであって、独立変数xと多項式係数fiとは整数であり、係数fiは、
【数2】
を、2≦j≦nに対して満たし、LCDi[xi]は、すべての数xiの最小公約数を示す、前記ターボ・インターリーバを備えるターボ符号器。
【請求項2】
K個の要素を有するデータ・ブロックを復号化するためのターボ復号器であって、
次数nの置換多項式、
【数3】
に従ってインターリーブされたデータ・ブロックを、デ・インターリーブするように動作可能なターボ・デ・インターリーバであって、独立変数xと多項式の係数fiとは整数であり、係数fiは、
【数4】
を、2≦j≦nに対して満たし、LCDi[xi]は、すべての数xiの最小公約数を示す、前記ターボ・デ・インターリーバを備えるターボ復号器。
【図1】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【図2】
【図3】
【図4】
【図5】
【図6】
【図7】
【図8】
【図9】
【図10】
【図11】
【図12】
【図13】
【図14】
【図15】
【図16】
【図17】
【公開番号】特開2013−55688(P2013−55688A)
【公開日】平成25年3月21日(2013.3.21)
【国際特許分類】
【出願番号】特願2012−251284(P2012−251284)
【出願日】平成24年11月15日(2012.11.15)
【分割の表示】特願2010−535003(P2010−535003)の分割
【原出願日】平成20年11月11日(2008.11.11)
【出願人】(510284071)モトローラ モビリティ エルエルシー (50)
【氏名又は名称原語表記】MOTOROLA MOBILITY LLC
【Fターム(参考)】
【公開日】平成25年3月21日(2013.3.21)
【国際特許分類】
【出願日】平成24年11月15日(2012.11.15)
【分割の表示】特願2010−535003(P2010−535003)の分割
【原出願日】平成20年11月11日(2008.11.11)
【出願人】(510284071)モトローラ モビリティ エルエルシー (50)
【氏名又は名称原語表記】MOTOROLA MOBILITY LLC
【Fターム(参考)】
[ Back to top ]