(57)【特許請求の範囲】
【請求項１】
データ長を、素数ｐをベースにした長さｐでＲ個のブロックとし、ｐ−１とは互いに素なるＲ個の異なる整数q0,q1,q2,・・・qR-1を生成する手段と、
標数が前記素数ｐの有限体の元を、原始元νに対し前記q0,q1,q2,・・・qR-1の冪乗としてそれぞれ
ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)のごとく生成し、記憶する手段と、
前記ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)を前記有限体上でｊ乗してそれぞれ
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)を生成する手段と、
前記ブロックの入れ替えを行う為の予め決められた０〜Ｒ−１のブロック入れ替えパターンを生成または記録する手段と、
第０の順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ倍した値に１を足し合わせた値をインターリービング順序出力とし、第ｊの順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ倍した値に前記生成した
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)をそれぞれ足し合わせた値をインターリービング順序出力とする操作を、ｊ＝１〜（ｐ−２）において繰り返し、第ｐ−１の順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ倍した値をインターリービング順序出力とすることにより、Ｒ×ｐのデータ長からなるインターリービング順序信号を出力する手段と、
を備えていることを特徴とするインターリービング順序発生器。
【請求項２】
前記ｊ＝１〜（ｐ−２）の繰り返しに際して、前記生成及び記憶した
ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)を順次有限体における高速乗算器に入力することによって前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)の値を逐次的に更新する手段を有することを特徴とする請求項１に記載のインターリービング順序発生器。
【請求項３】
前記ｊ＝ｐ−１において前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)に相当する値を全て０とする手段を有することを特徴とする請求項１または２に記載のインターリービング順序発生器。
【請求項４】
データ長を、素数ｐをベースにした長さｐ−１でＲ個のブロックとし、ｐ−１とは互いに素なるＲ個の異なる整数q0,q1,q2,・・・qR-1を生成する手段と、
標数がｐの有限体の元を、原始元νに対し前記q0,q1,q2,・・・qR-1の冪乗としてそれぞれ
ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)のごとく生成及び記憶する手段と、
前記ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)を有限体上でｊ乗してそれぞれ
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)を生成する手段と、
前記ブロックの入れ替えを行う為の予め決められた０〜Ｒ−１のブロック入れ替えパターンを生成または記録する手段と、
第０の順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ−１倍した値に１を足し合わせた値をインターリービング順序出力とし、第ｊの順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ−１倍した値に前記生成した
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)をそれぞれ足し合わせた値をインターリービング順序出力とする操作を、ｊ＝１〜（ｐ−２）において繰り返すことにより、Ｒ×（ｐ−１）のデータ長からなるインターリービング順序信号を出力する手段と、
を備えていることを特徴とするインターリービング順序発生器。
【請求項５】
前記順次足し合わせを行った値に対し１を減算する手段を有することを特徴とする請求項４に記載のインターリービング順序発生器。
【請求項６】
前記ｊ＝１〜（ｐ−２）の繰り返しに際して、前記生成及び記憶した
ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)を順次有限体における高速乗算器に入力することによって前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)の値を逐次的に更新する手段を有することを特徴とする請求項４または５に記載のインターリービング順序発生器。
【請求項７】
データ長を、素数ｐをベースにした長さｐ＋１でＲ個のブロックとし、ｐ−１とは互いに素なるＲ個の異なる整数q0,q1,q2,・・・qR-1を生成する手段と、
標数が前記素数ｐの有限体の元を、原始元νに対し前記q0,q1,q2,・・・qR-1の冪乗としてそれぞれ
ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)のごとく生成し、記憶する手段と、
前記ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)を前記有限体上でｊ乗してそれぞれ
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)を生成する手段と、
前記ブロックの入れ替えを行う為の予め決められたブロック入れ替えパターンを生成または記録する手段と、
第０の順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ＋１倍した値に１を足し合わせた値をインターリービング順序出力とし、第ｊの順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ＋１倍した値に前記生成した
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)をそれぞれ足し合わせた値をインターリービング順序出力とする操作を、ｊ＝１〜（ｐ−２）において繰り返し、第ｐ−１の順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ＋１倍した値をインターリービング順序出力とし、第ｐの順序入れ替えにあたっては、前記ブロック入れ替えパターンを生成または記録する手段からの０〜Ｒ−１の出力をそれぞれｐ＋１倍した値にｐを足し合わせた値をインターリービング順序出力とすることにより、Ｒ×（ｐ＋１）のデータ長からなるインターリービング順序信号を出力する手段と、
を備えていることを特徴とするインターリービング順序発生器。
【請求項８】
前記ｊ＝１〜（ｐ−２）の繰り返しに際して、前記生成及び記憶した
ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)を順次有限体における高速乗算器に入力することによって前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)の値を逐次的に更新する手段を有することを特徴とする請求項７に記載のインターリービング順序発生器。
【請求項９】
ｊ＝ｐ−１において前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)に相当する値を全て０とする手段を有することを特徴とする請求項７または８に記載のインターリービング順序発生器。
【請求項１０】
ｊ＝ｐにおいて前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)に相当する値を全てｐとする手段を有することを特徴とする請求項７〜９のいずれかに記載のインターリービング順序発生器。
【請求項１１】
前記インターリービング順序発生器からの出力信号がインターリーバ対象範囲を超えた場合、該信号をスキップして次の該範囲内の信号を使用する手段を有することを特徴とする請求項１〜１０のいずれかに記載のインターリービング順序発生器。
【請求項１２】
前記有限体における高速乗算器を複数個備え、前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)の値の更新を、前記複数の有限体における高速乗算器で分担することにより、前記
(ν^q0)^j,(ν^q1)^j,(ν^q2)^j,・・・(ν^qR-1)^j(mod p)の値の更新を、複数個同時に実行する手段を有していることを特徴とする請求項２，６，８のいずれかに記載のインターリービング順序発生器。
【請求項１３】
前記有限体における高速乗算器を２個備え、前記生成及び記憶した
ν^q0,ν^q1,ν^q2,・・・ν^qR-1(mod p)を、偶数乗数と奇数乗数に分割した
ν^q0,ν^q2,ν^q4,・・・(mod p)とν^q1,ν^q3,ν^q5,・・・(mod p)に対して、前記２個の高速乗算器を割り当て、前記有限体上でｊ乗することにより、
(ν^q0)^j,(ν^q2)^j,・・・(mod p)と(ν^q1)^j,(ν^q3)^j,・・・(mod p)の値を、並行して同時に更新する手段を有していることを特徴とする請求項１２に記載のインターリービング順序発生器。
【請求項１４】
請求項１〜１３のいずれかに記載のインターリービング順序発生回路の出力を、データが蓄積されたメモリのアドレス信号とし、該アドレス信号により前記メモリからデータの読み出しを行うことによって前記データの順序入れ替えを行う手段を有していることを特徴とするインターリーバ。
【請求項１５】
請求項１〜１３のいずれかに記載のインターリービング順序発生回路の出力を、データを蓄積するメモリのアドレス信号とし、該アドレス信号により前記メモリにデータを書き込むことによって前記データの順序入れ替えを行うことを特徴とするインターリーバ。
【請求項１６】
請求項１４に記載のインターリーバを、ターボエンコーダの内部インターリーバとすることを特徴とするターボエンコーダ。
【請求項１７】
請求項１４または１５に記載のインターリーバの内少なくとも一方をターボデコーダの内部インターリーバとし、他方を内部デインターリーバとすることを特徴とするターボデコーダ。
【請求項１８】
請求項１〜１３のいずれかに記載のインターリービング順序発生器の出力を、データが蓄積されたデュアルポートメモリの読み出し用アドレス信号としてデータ内容の読み出しを行い、予め決められた値で遅延を施した該アドレス信号を書き込み用アドレス信号としてデータ内容の書き込みを行うことによりターボデコーダの内部インターリーバと内部デインターリーバを同時に実現したことを特徴とするターボデコーダ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＩＭＴ２０００（第三世代移動通信システム）のＷ−ＣＤＭＡで用いられる素数インターリーバ（ｐｒｉｍｅ  ｉｎｔｅｒｌｅａｖｅｒ）に関し、特にインターリービング順序発生器の為のメモリを削減したインターリービング順序発生器、インターリーバ、ターボエンコーダ及びターボデコーダに関する。
【０００２】
【従来の技術】
広域ＤＳ−ＣＤＭＡ（Ｗ−ＣＤＭＡ）は、第三世代の移動通信システム（ＩＭＴ２０００）無線アクセス方式（ＲＡＮ）の一つとして標準化され、その中で素数インターリーバと呼ばれるターボコーディング用の内部インターリーバが規格化されている。その詳しい記述は「３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ；  Ｔｅｃｈｎｉｃａｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｇｒｏｕｐ  Ｒａｄｉｏ  Ａｃｃｅｓｓ  Ｎｅｔｗｏｒｋ；  Ｍｕｌｔｉｐｌｅｘｉｎｇ  ａｎｄ  ｃｈａｎｎｅｌ  ｃｏｄｉｎｇ（ＦＤＤ）（Ｒｅｌｅａｓｅ  １９９９）３Ｇ  ＴＳ２５．２１２  Ｖ３．３．０（２０００―０６）  ４．２．３．２．３章  Ｔｕｒｂｏ  ｃｏｄｅ  ｉｎｔｅｒｎａｌ  ｉｎｔｅｒｌｅａｖｅｒ１６頁〜２０頁」に開示されている。
【０００３】
このターボエンコーダは、複数のコンポーネントエンコーダで構成されており、各コンポーネントエンコーダ間のパリティ系列の相関を薄くする為にインターリーバが用いられ、インターリーバを介して各コンポーネントエンコーダを連接する構成になっている。このインターリーバはターボコードの性能を発揮する上で重要な役割を果たしている。
【０００４】
図１５は、従来のターボエンコーダの構成例を示す図である。同図に示す様に、ターボエンコーダは、複数の再帰的組織的畳み込みコンポーネントエンコーダ１５０２、１５０３と、インターリーバ１５０１を具備して構成されている。各再帰的組織的畳み込みエンコーダ１５０２、１５０３は加算器と単位遅延素子によって構成されており、ターボエンコーダに入力される情報系列１ビットに対して情報ビット、パリティビット１並びにパリティビット２の３ビットが出力される。パリティビット１とパリティビット２の相関を薄くする為、コンポーネントエンコーダ１５０３の前にインターリーバ１５０１を挿入している。
【０００５】
図１６は、従来のターボデコーダの構成例を示す図である。ターボデコーダは、二つの軟入力軟出力デコーダ（ｓｏｆｔ  ｉｎ  ｓｏｆｔ  ｏｕｔ  ｄｅｃｏｄｅｒ；以下、ＳＩＳＯと略す。）１６０３、１６０４と二つのインターリーバ１６０１、１６０２とインターリーバによるインターリービング順序の逆の処理を行う二つのデインターリーバ１６０６，１６０７を具備して構成される。分離器１６０５はパリティ系列１，２をそれぞれ対応するＳＩＳＯに分配するものであり、判定器１６０８は最終的に得られた軟出力データを二値に硬判定する為のものである。
【０００６】
図１７は、ＲＡＭに蓄積されたインターリービング順序（インターリーブパターンテーブルとして蓄積されている。）によりビット単位に並び替えを行う従来のインターリーバの例を示しており、インターリービングを行うデータ系列１７０１は、インターリーブパターンテーブルによるインターリービング順序が蓄積されたＲＡＭ１７０２によりデータ系列内のビット順序の入れ替えが行われ、インターリービング後のデータ系列１７０３を得ている。
【０００７】
インターリービング順序を出力するＲＡＭ１７０２の出力とインターリーブパターンテーブルとの関係は、同図１７０２に示すように、素数ｐをベースとした長さｐでＲ個のブロックとしたパターンテーブルで、矢印の様に縦方向の順に０，８，４，１２，２，・・・の順で読み出してインターリービング後のデータ系列１７０３を得る様になっている。
【０００８】
【発明が解決しようとする課題】
ＩＭＴ２０００（Ｗ−ＣＤＭＡ）の標準規格３Ｇ  ＴＳ２５．２１２  Ｖ３．３．０（２０００―０６）によれば、各種のマルチメディアサービスに対応する為、インターリーブ長が１ビット毎の４０ビットから５１１４ビット迄で、５０７５種類のインターリービングパターンを用意する必要がある。この全てのインターリーブ長に対応するパターンテーブルを備える為には、膨大なメモリ量が必要となり現実的でない。そこで全ての種類のパターンを蓄積するのではなく、各インターリービング長に応じて予め決められた演算に従いパターンを生成する方法が３Ｇ  ＴＳ２５．２１２  Ｖ３．３．０（２０００―０６）  ４．２．３．２．３章に開示されている。
【０００９】
上記「３ｒｄ  Ｇｅｎｅｒａｔｉｏｎ  Ｐａｒｔｎｅｒｓｈｉｐ  Ｐｒｏｊｅｃｔ；  Ｔｅｃｈｎｉｃａｌ  Ｓｐｅｃｉｆｉｃａｔｉｏｎ  Ｇｒｏｕｐ  Ｒａｄｉｏ  Ａｃｃｅｓｓ  Ｎｅｔｗｏｒｋ；  Ｍｕｌｔｉｐｌｅｘｉｎｇ  ａｎｄ  ｃｈａｎｎｅｌ  ｃｏｄｉｎｇ（ＦＤＤ）（Ｒｅｌｅａｓｅ  １９９９）３Ｇ  ＴＳ２５．２１２  Ｖ３．３．０（２０００―０６）またはＶ４．０．０（２０００−１２）  ４．２．３．２．３章  Ｔｕｒｂｏ  ｃｏｄｅ  ｉｎｔｅｒｎａｌ  ｉｎｔｅｒｌｅａｖｅｒ１６頁〜２０頁」に開示されている素数インターリーバでは、データ長を、素数ｐをベースとした長さｐでＲ個のブロックとし、標数がｐの有限体上の原始元νを用いて行内順序入れ替えを行う為のベースシーケンスＳ（ｊ）を以下の様にして求めている（ｉｎｔｒａ−ｒｏｗ  ｐｅｒｍｕｔａｔｉｏｎ処理）。
ｓ（ｊ）＝［ν・ｓ（ｊ−１）］ｍｏｄ  ｐ，  ｊ＝１，２，・・・（ｐ−２）．Ａｎｄ  ｓ（０）＝１．−−−−−−−−（１）
これをテーブルにする。次に有限体の標数から１を引いた数ｐ−１と互いに素なる数ｑ（ｉ）をＲ個求める。最後に行を単位として行の順序入れ替えを行う（ｉｎｔｅｒ−ｒｏｗ  ｐｅｒｍｕｔａｔｉｏｎ処理）。行単位の順序入れ替えは、予め決められたパターンＴ（ｉ）に基づき行われる。これらのパターンとしては、自由距離を大きくする行間の交錯パターンが用いられている。
【００１０】
例えば、ｉ番目の行内順序入れ替えを行う場合、次の様な処理を行う。
Ｕｉ（ｊ）＝ｓ（［ｊ・ｒｉ］ｍｏｄ（ｐ−１）），  ｊ＝０，１，２，・・・，（ｐ−２）．，ａｎｄ  Ｕｉ（ｐ−１）＝０，−−−−−−−（２）
ここで、Ｕｉ（ｊ）は入れ替え前のビットポジションを示し、行入れ替え前ｉ番目の行における行内順序入れ替え後ｊ番目の出力位置に相当する。また、ｒＴ（ｉ）＝ｑ（ｉ）であり、Ｔ（ｉ）は上記で定義された入れ替え前の行位置でｉ番目の行位置になる。
【００１１】
一例としてデータ長Ｋ＝２５７の場合について説明する。二次元配列の行数Ｒを２０としたときに素数ｐで表せる列数ｐを求めると、２５７／２０＝１２．８５であるから、それ以上で最も近い素数ｐは、ｐ＝１３となる。標数が１３の有限体上の原始元νは２である。
【００１２】
そこでこの原始元ν＝２を用いて行内順序入れ替えを行う為のベースシーケンスＳ（ｊ）を（１）式から求めると、ｐ＝１３，ν＝２の場合
｛ｓ（ｊ）｝＝｛１，２，４，８，３，６，１２，１１，９，５，１０，７，０｝
となる。尚、最後に０を挿入する。
【００１３】
次に有限体の標数から１を引いた数ｐ−１と互いに素なる数ｑ（ｉ）をＲ（＝２０）個求める。ｐ＝１３の上述の例では、
｛ｑ（ｉ）｝＝｛１，７，１１，１３，１７，１９，２３，２９，３１，３７，４１，４３，４７，５３，５９，６１，６７，７１，７３，７９｝
となる。
【００１４】
最後に（２）式により、予め決められたパターンに基づき行を単位として行の順序入れ替え（ｉｎｔｅｒ−ｒｏｗ  ｐｅｒｍｕｔａｔｉｏｎ処理）が行われるが、Ｒ＝２０の場合の自由距離を大きくする行間の交錯パターンは、
Ｐａｔ１：｛Ｔ（ｉ）｝＝｛１９，９，１４，４，０，２，５，７，１２，１８，１０，８，１３，１７，３，１，１６，６，１５，１１｝
となる。
【００１５】
また、ｒＴ（ｉ）＝ｑ（ｉ）であるから、
ｒＴ（１）＝ｑ（１）＝１＝ｒ１９
ｒＴ（２）＝ｑ（２）＝７＝ｒ９
ｒＴ（３）＝ｑ（３）＝１１＝ｒ１４
：
ｒＴ（１９）＝ｑ（１９）＝７３＝ｒ１５
ｒＴ（２０）＝ｑ（２０）＝７９＝ｒ１１
となるので、これらの値を（２）式に代入してＵｉ（ｊ）を求める。
【００１６】
上記従来技術では、このＵｉ（ｊ）をＤＳＰ（ｄｉｇｉｔａｌ  ｓｉｇｎａｌ  ｐｒｏｃｅｓｓｏｒ）等のソフトウェア処理によって計算し、図１７に示す大規模ＲＡＭ１７０２等に転送してインターリーブ処理を行っている。
【００１７】
一方ターボデコーダの場合、反復復号を行うことになるが、例えば、８イタレーションの構成で２Ｍｂｐｓの受信データ系列の復号を行う場合、上述のインターリービング順序へのアクセスは数１０ＭＨｚという高速動作が要求される。これに対応するには、上述の演算に従って生成されたパターンを一度高速メモリに蓄え、そのメモリが数１０ＭＨｚのアクセスを受け持つ構成にする必要がある。
【００１８】
しかしその為に必要なメモリ（ＲＡＭ）の容量は、５１１４×１３ビット＝６６４８２ビットを要し、ターボデコーダを構成する要素の内、可成りの部分を占めるに至っている。更に、上述の演算に従って生成されたパターンを実際に処理を行っているターボデコーダ内のインターリービング用ＲＡＭに転送する必要があるが、このインターフェースには他のデータも同時に送る必要があり、インターフェース上のボトルネックを生じる様になった。
【００１９】
更に、可変レート機能を持たせた場合、頻繁にインターリーブ長の変更が生じるが、その場合更にインターフェース上のボトルネックを助長する様になり、マルチメディアサービスにおける転送レートに追随出来ないといった問題を生じるに至った。
【００２０】
このように、各種のマルチメディアサービスに対応した移動体通信システムに用いられるターボデコーダの内部インターリーバは多様なインターリーブ長に対応出来る様にする必要があるため、各種のインターリービングパターンを用意する必要が有り膨大なメモリ量を必要とする。更に高速データに対応する為にはインターリービングパターンを一度高速メモリに蓄える必要があり、その為の高速なメモリ容量を必要とし、これが回路規模の増大を招いていた。更に、可変レート機能を有したサービスにおいてはパラメータ転送によるインターフェースの輻輳を生じていた。
【００２１】
本発明の目的は、以上の問題点に鑑みなされたものであり、インターリービング順序発生器、インターリーバ、ターボエンコーダ並びにターボデコーダにおいて、マルチメディアサービスにおける多様なインターリーブ長及びその転送レートに対し、少ないインターリーバ用ＲＡＭ容量で実現し、しかもインターフェースにかかる負担が少なく、更に可変レート機能を持たせた場合でもマルチメディアサービスにあった転送レートに追随出来る手段を提供することにある。
【００２２】
【課題を解決するための手段】
請求項１に記載された本発明は、データ長を、素数ｐをベースにした長さｐでＲ個のブロックとし、ｐ−１とは互いに素なるＲ個の異なる整数ｑ０，ｑ１，ｑ２，・・・ｑＲ−１を生成する手段を有し、標数がｐの有限体の元を原始元νに対し前記ｑ０，ｑ１，ｑ２，・・・ｑＲ−１の冪乗としてそれぞれ
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）のごとく生成及び記憶する手段を有し、第０の順序入れ替えにあたっては、前記ブロック入れ替えを行う為の予め決められたパターンを生成或いは記録する手段からの出力をｐ倍した値に１を順次足し合わせて行い、第ｊの順序入れ替えにあたっては前記
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）を有限体上でｊ乗してそれぞれ
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）のごとく生成する手段を用いて上記同様にｐ倍した値に前記
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）
を順次足し合わせをｊ＝１〜（ｐ−２）において繰り返すインターリービング順序発生器をその特徴としている。
【００２３】
請求項２に記載された本発明は、請求項１に記載されたインターリービング順序発生器において、前記ｊ＝１〜（ｐ−２）の繰り返しに当たっては前記
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）
を生成及び記憶する手段と、この記憶した値を順次有限体における高速乗算器に入力することによって前記
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）
の値を逐次的に更新することを特徴としている。
【００２４】
請求項３に記載された本発明は、請求項１または２に記載のインターリービング順序発生器において、前記ｊ＝ｐ−１において
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）
に相当する値を全て０とすることを特徴としている。
【００２５】
請求項４に記載された本発明は、データ長を、素数ｐをベースにした長さｐ−１でＲ個のブロックとし、ｐ−１とは互いに素なるＲ個の異なる整数ｑ０，ｑ１，ｑ２，・・・ｑＲ−１を生成する手段を有し、標数がｐの有限体の元を原始元νに対し前記ｑ０，ｑ１，ｑ２，・・・ｑＲ−１の冪乗としてそれぞれ
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）のごとく生成及び記憶する手段を有し、第０の順序入れ替えにあたっては、前記ブロック入れ替えを行う為の予め決められたパターンを生成或いは記録する手段からの出力をｐ−１倍した値に１を順次足し合わせて行い、第ｉの順序入れ替えにあたっては前記
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）を有限体上でｊ乗してそれぞれ
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）のごとく生成する手段を用いて上記同様にｐ−１倍した値に前記
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）を順次足し合わせをｊ＝１〜（ｐ−２）において繰り返すインターリービング順序発生器をその特徴としている。
【００２６】
請求項５に記載された本発明は、請求項４に記載のインターリービング順序発生器において、前記順次足し合わせを行った値に対し１を減算することを特徴としている。
【００２７】
請求項６に記載された本発明は、請求項４または５に記載のインターリービング順序発生器において、前記ｊ＝１〜（ｐ−２）の繰り返しに当たっては前記
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）を生成及び記憶する手段と、この記憶した値を順次有限体における高速乗算器に入力することによって前記
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）の値を逐次的に更新することを特徴としている。
【００２８】
請求項７に記載された本発明は、データ長を、素数ｐをベースにした長さｐ＋１でＲ個のブロックとし、ｐ−１とは互いに素なるＲ個の異なる整数ｑ０，ｑ１，ｑ２，・・・ｑＲ−１を生成する手段を有し、標数がｐの有限体の元を原始元νに対し前記ｑ０，ｑ１，ｑ２，・・・ｑＲ−１の冪乗としてそれぞれ
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）のごとく生成及び記憶する手段を有し、第０の順序入れ替えにあたっては、前記ブロック入れ替えを行う為の予め決められたパターンを生成或いは記録する手段からの出力をｐ＋１倍した値に１を順次足し合わせて行い、第ｊの順序入れ替えにあたっては、前記
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）を有限体上でｊ乗してそれぞれ
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）のごとく生成する手段を用いて上記同様にｐ＋１倍した値に前記
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）を順次足し合わせをｊ＝１〜（ｐ−２）において繰り返すインターリービング順序発生器をその特徴としている。
【００２９】
請求項８に記載された本発明は、請求項７に記載のインターリービング順序発生器において、前記ｊ＝１〜（ｐ−２）の繰り返しに当たっては前記
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）を生成及び記憶する手段と、この記憶した値を順次有限体における高速乗算器に入力することによって前記
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）の値を逐次的に更新することを特徴としている。
【００３０】
請求項９に記載された本発明は、請求項７または８に記載のインターリービング順序発生器において、前記ｊ＝ｐ−１において
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）に相当する値を全て０とすることを特徴としている。
【００３１】
請求項１０に記載された本発明は、請求項７〜９のいずれかに記載のインターリービング順序発生器において、前記ｊ＝ｐにおいて
（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）に相当する値を全てｐとすることを特徴としている。
【００３２】
請求項１１に記載された本発明は、請求項１〜１０のいずれかに記載のインターリービング順序発生器において、前記インターリービング順序発生器からの出力信号がインターリーバ対象範囲を超えた場合、該信号をスキップして次の該範囲内の信号を使用することを特徴としている。
【００３３】
請求項１２に記載された本発明は、請求項１〜１１のいずれかに記載のインターリービング順序発生器において、前記有限体の高速乗算器を複数個有し、前記（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）の値の更新を前記（ν＾ｑ０）＾ｊ，（ν＾ｑ１）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）の内複数個同時に実行し、前記インターリービング順序発生器からの出力がインターリーバ対象範囲を超えた場合、該信号をスキップして次の範囲内の信号を使用し、淀みなく信号を発生するようにしたことを特徴としている。
【００３４】
請求項１３に記載された本発明は、請求項１２に記載のインターリービング順序発生器において、前記有限体における高速乗算器を２個備え、前記生成及び記憶した
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１（ｍｏｄ  ｐ）を、偶数乗数と奇数乗数に分割した
ν＾ｑ０，ν＾ｑ２，ν＾ｑ４，・・・（ｍｏｄ  ｐ）とν＾ｑ１，ν＾ｑ３，ν＾ｑ５，・・・（ｍｏｄ  ｐ）に対して、前記２個の高速乗算器を割り当て、前記有限体上でｊ乗することにより、
（ν＾ｑ０）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ｍｏｄ  ｐ）と（ν＾ｑ１）＾ｊ，（ν＾ｑ３）＾ｊ，・・・（ｍｏｄ  ｐ）の値を、並行して同時に更新することを特徴としている。
【００３５】
請求項１４に記載された本発明は、請求項１〜１３のいずれかに記載のインターリービング順序発生回路出力をデータが蓄積されたメモリのアドレス信号としてデータの読み出しを行うことにより順序入れ替えを行うインターリーバをその特徴としている。
【００３６】
請求項１５に記載された本発明は、請求項１〜１３のいずれかに記載のインターリービング順序発生回路出力をデータが蓄積するメモリのアドレス信号としてデータを書き込むことにより順序入れ替えを行うインターリーバをその特徴としている。
【００３７】
請求項１６に記載された本発明は、請求項１４に記載のインターリーバを、ターボエンコーダの内部インターリーバとするターボエンコーダをその特徴としている。
【００３８】
請求項１７に記載された本発明は、請求項１４または１５に記載のインターリーバの内少なくとも一方をターボデコーダの内部インターリーバとし、他方を内部デインターリーバとするターボデコーダをその特徴としている。
【００３９】
請求項１８に記載された本発明は、請求項１〜１３のいずれかに記載のインターリービング順序発生器出力を、データが蓄積されたデュアルポートメモリの読み出し用アドレス信号として、前記データ内容の読み出しを行い、予め決められた値で遅延を施した該アドレス信号を書き込み用アドレス信号としてデータ内容の書き込みを行うことによりターボデコーダの内部インターリーバと内部デインターリーバを同時に実現したターボデコーダをその特徴としている。
【００４０】
本発明によれば、各種のマルチメディアサービスに対応した移動体通信システムにおいて、ターボデコーダに用いられている素数体を用いたインターリーバで多様なインターリーブ長に回路規模の増大を招くことなく対応することができ、また、インターリービング順序発生器、インターリーバ、ターボエンコーダ並びにターボデコーダにおいて、少ないインターリーバ用ＲＡＭ容量で実現することができ、更に、インターフェースにかかる負担が少なくなるので、可変レート機能を有したマルチメディアサービスであっても転送レートに容易に追随することが出来るようになる。
【００４１】
【発明の実施の形態】
次に、本発明の実施形態について図面を参照しながら説明する。
【００４２】
図１３は、本発明のインターリービング順序発生器を用いたターボ符号器（ターボエンコーダ）の実施形態を示すブロック構成図である。図１３に示すターボエンコーダの動作については後述するが、このターボエンコーダと図１５に示す従来のターボエンコーダとの主な差は、インターリーバ１５０１にある。
【００４３】
即ち、従来のインターリーバは図１７に示す様に、インターリービング順序を蓄積した大規模なＲＡＭ１７０２を必要としていた。これに対し図１３に示す実施形態においては、インターリービング順序発生器１３０１を用いることにより、インターリービング順序を蓄積した大規模なＲＡＭを使うことなく素数インターリーバを実現したことを特徴としている。
【００４４】
本発明で採用しているインターリービング方法も、基本的には上記文献に記載の素数インターリーバと同様であるが、本発明においては、従来の様に予めＵｉ（ｊ）を計算してＲＡＭ等に転送しておくのではなく、実時間でＵｉ（ｊ）を発生してインターリーブ処理を行う構成としたことをその特徴としており、そのため、従来必要としていた大規模ＲＡＭを不要とすることができる。以下その方法を説明する。
【００４５】
先ず、上記（１）式より、
ｓ（０）＝１
ｓ（１）＝ν  ｍｏｄ  ｐ
ｓ（２）＝ν＾２  ｍｏｄ  ｐ
：
ｓ（ｊ）＝ν＾ｊ  ｍｏｄ  ｐ
となる。なお、ν＾ｊ≡νｊである。上式におけるνは原始元であるから、ｍｏｄ  ｐ上で繰り返し乗算処理することにより、ｍｏｄ  ｐ上で構成される有限体の全ての要素を網羅することになる。
【００４６】
この結果を（２）式に適用すると、
Ｕｉ（ｊ）＝ｓ｛［ｊ・ｒｉ］ｍｏｄ（ｐ−１）｝＝［ν＾｛［ｊ・ｒｉ］ｍｏｄ（ｐ−１）｝］ｍｏｄ  ｐ
ここで、
［ｊ・ｒｉ］ｍｏｄ（ｐ−１）＝ｊ・ｒｉ−ｎ・（ｐ−１）
と置き換えると、
Ｕｉ（ｊ）＝［ν＾｛ｊ・ｒｉ−ｎ・（ｐ−１）｝］ｍｏｄ  ｐ＝（ν＾ｒｉ）＾ｊ・（ν＾（ｐ−１））＾（−ｎ）  ｍｏｄ  ｐ
＝｛（ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐ｝・｛（ν＾（ｐ−１））＾（−ｎ）  ｍｏｄ  ｐ｝  ｍｏｄ  ｐ
ここでＦｅｒｍａｔ＿ｓ  Ｔｈｅｏｒｅｍより全ての要素ａに対して
ａ＾（ｐ−１）≡１  （ｍｏｄ  ｐ），ｗｈｅｒｅ  ｐ：ｐｒｉｍｅ
が成り立つから、
（ν＾（ｐ−１））＾（−ｎ）  ｍｏｄ  ｐ＝１
従って上式は、
Ｕｉ（ｊ）＝（ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐ−−−−−−−−−−−−−−（３）
となる。
【００４７】
ここで上述よりｒＴ（ｉ）＝ｑｉであり、Ｒ＝２０の場合における前記行間交錯パターン
Ｐａｔ１：｛Ｔ（０），Ｔ（１），・・・，Ｔ（Ｒ−１）｝＝｛１９，９，１４，４，０，２，５，７，１２，１８，１０，８，１３，１７，３，１，１６，６，１５，１１｝
を例にとって説明すると、０行目（ｉ＝０）にくる行位置はＴ（０）＝１９行目でｑ０（＝ｒ１９）がその行の値として選ばれる。同様に１行目（ｉ＝１）にはＴ（１）＝９行目が来てｑ１（＝ｒ９）がその行の値として選ばれる。
【００４８】
この様に各行のｒｉが異なる値に設定され、その結果、（３）式の（ν＾ｒｉ）が各行で異なる値となり、各行における行内順序入れ替えが行毎に異なり、ランダム化される事になるのである。また、ｒＴ（ｉ）＝ｑｉで与えられるｑｉは上述より（ｐ−１）と互いに素なる関係で選ばれている。νは原始元であるからｐを法としてその位数はｐ−１である。
【００４９】
このｐを法として構成される集合の任意の要素をａとするとｐ−１がｍｏｄ  ｐでの最大の位数であるから、
ａ＾（ｎ・（ｐ−１））＝１  （ｍｏｄ  ｐ）
なる関係が成り立つ。
【００５０】
従って、（３）式を
（ν＾ｒｉ）＾ｊ＝１  （ｍｏｄ  ｐ）
とする為の条件は
ｒｉ・ｊ＝ｎ・（ｐ−１）
となり、（ｐ−１）｜ｒｉ・ｊとなることが必要となる。
【００５１】
ところが、ｒｉと（ｐ−１）は互いに素であるから、ｒｉの中に（ｐ−１）を構成する因数は存在せず、結局（ｐ−１）｜ｊとなること即ち、（ν＾ｒｉ）の位数が（ｐ−１）であることを示しており（ν＾ｒｉ）もｐを法として原始元であることに他ならない。
【００５２】
従って、
Ｕｉ（ｊ）＝  （ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐ    ｗｈｅｒｅ    ｊ＝０，１，２，・・・，（ｐ−２）．
は各行で異なる原始元（ν＾ｒｉ）を乗数とする線形合同法の一種である乗算合同法によるランダム系列発生アルゴリズムを構成していることに他ならない。（ν＾ｒｉ）はｐを法とする素体の原始元であるから、その羃乗の形で表せる（ν＾ｒｉ）＾ｊは素体の全ての要素を網羅し、インターリーバに必要な一対一の写像関係を維持出来る様になっている。
【００５３】
即ちこのことは、（３）式における（ν＾ｒｉ）を乗数として逐次乗算することにより（１）式
ｓ（ｊ）＝［ν・ｓ（ｊ−１）］ｍｏｄ  ｐ，  ｊ＝１，２，・・・（ｐ−２）．ａｎｄ  ｓ（０）＝１．
によって生成されるテーブルを持たなくともＵｉ（ｊ）が得られることを示している。
【００５４】
例えば、データ長ｋ＝５１１４ビットの場合でみると、二次元配列の行数２０に対して素数で表せる列数ｐは、５１１４／２０＝２５５．７で最も近い素数ｐ＝２５７が列数となる。これだけで比較したとしても、
ｓ（ｊ）＝［ν・ｓ（ｊ−１）］ｍｏｄ  ｐ，  ｊ＝１，２，・・・（ｐ−２）．  ａｎｄ  ｓ（０）＝１．
によって生成されるテーブルは２５７個必要になるのに対して、本発明では
（ν＾ｒｉ）  ｍｏｄ  ｐ，  ｉ＝０，・・・，１９
の２０個で済むことになる。即ち、メモリを１０分の１以下に削減することが可能になる。
【００５５】
上記より分かる様に、本発明は行数が同じであればデータ長が長いほど効果がある。一方、ターボ符号にはインターリーバ利得（ｉｎｔｅｒｌｅａｖｅｒ  ｇａｉｎ）と呼ばれる特徴があり、データ長が長ければ長い程高い符号化利得を得られる。即ち本発明はターボ符号に適した方法といえる。尚以下の実施例では解説のし易さから短いデータ長を例にとって説明しているが、データ長は任意の長さを採り得る。
【００５６】
図１は、本発明のインターリービング順序発生器において、上記（３）式のＵｉ（ｊ）を生成するブロックである、
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部の第１の実施形態を示すブロック図である。本実施例ではデータ長Ｋ＝２５７の場合を示しており、二次元配列は素数ｐ＝１３、Ｒ＝２０によって表わされる。
【００５７】
上述の説明で用いている（ν＾ｒｉ）入れ替え後の０行目を見ると（ν＾ｒ１９）＝（ν＾ｑ０）となる。同様に入れ替え後の１行目を見ると、（ν＾ｒ９）＝（ν＾ｑ１）となる。即ち入れ替え後のｉ＝０〜１９行目に対して（ν＾ｒＴ（ｉ））＝（ν＾ｑｉ）となる。これは、入れ替え後の行番号ｉに対しての乗数を（ν＾ｑｉ）とすればよいことを示している。
【００５８】
但しここで注意を要するのは、この関係は行内部で成り立つ関係であって、行入れ替え前の行位置を加算する必要がある事を忘れてはならない。この場合、Ｔ（ｉ）行からｉ行へ入れ替えられたのであるから、列の数ｐ＝１３とすると、ｐ×Ｔ（ｉ）を加算する必要がある。
【００５９】
図１を見ると乗数
ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１  （ｍｏｄ  ｐ）を格納するレジスタ１０１にセレクタ１０４を介して有限体上の高速乗算器１０３が接続されている。この乗算器出力はセレクタ１０５を介して乗算結果を一次保存するレジスタ１０２に接続されている。レジスタ１０２の出力はセレクタ１０６を介して出力されるとともに前記乗算器１０３のもう一つの入力へ接続されている。
【００６０】
セレクタ１０４、１０５、及び１０６はそれぞれ連動して選択するように制御されており、それぞれ行番号ｉ＝０〜Ｒ−１に対応してセレクタ１０４は
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）を、セレクタ１０５と１０６は
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）を選択する様になっている。
【００６１】
尚上記セレクタをアドレス制御に置き換え、上記レジスタをＲＡＭに置き換えて同様の構成を実現することも可能である。以下、図１を参照しながら本発明のインターリービング順序発生動作について説明する。
【００６２】
先ず第０の順序入れ替え時の動作を説明する。レジスタ１０２の初期値は全て‘１’にプリセットされる構成になっている。ｊ＝０に相当する第０の順序入れ替えからｊ＝１に相当する第１の順序入れ替えの遷移時は、セレクタ１０６が選択した値は全て‘１’である。この値が乗算器１０３の入力の一方に入ると同時に出力端１０７から出力される。即ちｊ＝０に相当する第０順序入れ替えに当たっては出力端１０７の値は全て‘１’となる。
【００６３】
この時、セレクタ１０４は
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）を順次選択していく。従って乗算器１０３の出力は
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）となり、連動して動作するセレクタ１０５によってレジスタ１０２には、
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）が初期値‘１’に代わって順次更新されることになる。
【００６４】
次にｊ＝１に相当する第１の入れ替えにあたっては、セレクタ１０６が選択する値は
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）である。この値が乗算器１０３の入力の一方に入ると同時にこの
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）が出力端１０７から送出される。
【００６５】
この時セレクタ１０４は
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）を順次選択してくから、乗算器１０３の出力は（ν＾ｑ０）＾２  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾２  （ｍｏｄ  ｐ）となり、連動して動作するセレクタ１０５によってレジスタ１０２には、
（ν＾ｑ０）＾２  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾２  （ｍｏｄ  ｐ）が入力され、
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）に代わって順次更新されることになる。
【００６６】
同様に動作を進めていくと、第ｊの入れ替えにあたっては、セレクタ１０６が選択する値は
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）である。この値が乗算器１０３の入力の一方に入ると同時にこの
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）が出力端１０７から送出される。この時セレクタ１０４は
ν＾ｑ０  （ｍｏｄ  ｐ）〜ν＾ｑＲ−１  （ｍｏｄ  ｐ）を順次選択してくから、乗算器１０３の出力は（ν＾ｑ０）＾（ｊ＋１）  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾（ｊ＋１）  （ｍｏｄ  ｐ）となり、連動して動作するセレクタ１０５によってレジスタ１０２には、
（ν＾ｑ０）＾（ｊ＋１）  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾（ｊ＋１）  （ｍｏｄ  ｐ）が入力され、
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）に代わって順次更新されることになる。
【００６７】
この様にして生成された
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）は（３）式の
Ｕｉ（ｊ）＝（ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐにおいて、行間入れ替えを行った後の二次元配列の列方向に向かって読み出した値に他ならない。
【００６８】
従って、既に説明したように行入れ替え前の行位置を加算する必要がある。即ち、Ｔ（ｉ）行からｉ行へ入れ替えられたとすると、ｐ×Ｔ（ｉ）を加算する必要がある。
【００６９】
図２は、本発明のインターリービング順序発生器の第１実施形態を示すブロック図である。
【００７０】
同図において、２０１は、上記
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）  生成部である。また２０５は、ブロック入れ替えパターンＴ（ｉ）が予め記憶されたテーブルであり、行の更新に合わせてＴ（ｉ），（ｉ＝０〜Ｒ−１）を出力する。
【００７１】
セレクタ２０４はｊ＝０〜ｐ−２の間は
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）  生成部２０１を選択しているが、最後のｊ＝ｐ−１になった時、零を出力する零出力部２０２を選択するように動作する。従って、最後の列についてはｐ×Ｔ（ｉ）におけるｉ＝０〜Ｒ−１の値がインターリービング順序出力として出力端２０９より送出される。
【００７２】
二次元配列の列数を設定する列数設定部２０６の設定値は本実施例の場合ｐとなっており、乗算器２０７によってｐ×Ｔ（ｉ）が生成される。この値と上述のセレクタ２０４によって選ばれた値が加算器２０８によって加えられる。
【００７３】
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部２０１のｉ＝０時の値（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）からｉ＝Ｒ−１時の値（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）への各遷移タイミングは、テーブル２０５がブロック入れ替えパターンＴ（ｉ）をｉ＝０からｉ＝Ｒ−１まで出力する各遷移タイミングと同期しており、その結果加算器２０８の出力は行間入れ替えを行った後のＵｉ（ｊ）＝（ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐによる二次元配列を列方向に向かって読み出した値となる。
【００７４】
次に、データ長Ｋ＝２８０の場合を説明する。二次元配列の行数Ｒを２０とする。２８０／２０＝１４であるからそれ以上で最も近い素数を選ぶところであるが、列数Ｃ＝ｐ＋１として素数ｐ＝１３でも二次元配列を構成することが出来る。そこで、１４×２０の二次元配列への適用を考える。Ｃ＝ｐ＋１の場合も原始元を使用することに変わりはない。票数が１３の有限体上の原始元は２である。この原始元ν＝２を用いて行内順序入れ替えを行う為の式を以下に示す。
【００７５】
行内順序入れ替えを行う為の式は、
Ｕｉ（ｊ）＝（ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐ    ｗｈｅｒｅ，  ｊ＝０，１，２，・・・，（ｐ−２），
となり、上式も既に説明した列数をｐとした場合と同様の理由から導き出せる。以下、Ｃ＝ｐ＋１の場合の本発明のインターリービング順序発生器について説明する。
【００７６】
前述のＣ＝ｐの場合と同様に入れ替え後のｉ＝０〜１９行目に対して（ν＾ｒＴ（ｉ））＝（ν＾ｑｉ）となるから、入れ替え後の行番号ｉに対しての乗数を（ν＾ｑｉ）とすればよい。Ｔ（ｉ）行からｉ行へ入れ替えられたのであるから、列の数ｐ＋１＝１３＋１＝１４として、（ｐ＋１）×Ｔ（ｉ）を加算することが必要なことも同様である。
【００７７】
この処理は図２のインターリービング順序発生器で行われる。同図において、図１で生成される
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）は、Ｃ＝ｐ＋１の場合もＣ＝ｐの場合と同様にｉ＝０〜ｐ−２において同じ処理で実現出来ることになる。セレクタ２０４はｊ＝０〜ｐ−２の間
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部２０１を選択しているが、ｊ＝ｐ−１になった時、零出力部２０２を選択する様に動作する。従ってこの時はテーブル２０５のブロック入れ替えパターンＴ（ｉ）と列数設定部２０６の設定値Ｃ＝ｐ＋１とを乗算器２０７により乗算した結果が加算器２０８を通して出力端２０９に出力されることになる。
【００７８】
最後のｊ＝ｐになった時、セレクタ２０４はｐ設定部２０３の設定値ｐを選択するように動作する。従って、最後の列については（ｐ＋１）×Ｔ（ｉ）におけるｉ＝０〜Ｒ−１の値とｐの和がインターリービング順序出力として２０９より送出される。ここで、テーブル２０５は、行の更新に合わせてブロック入れ替えパターンＴ（ｉ）、ｉ＝０〜Ｒ−１を出力する。
【００７９】
この場合、列数設定部２０６は二次元配列の列数設定値をｐ＋１に設定しており、乗算器２０７によって（ｐ＋１）×Ｔ（ｉ）が生成され、この値と上述のセレクタ２０４によって選択された値が加算器２０８によって加えられる。
【００８０】
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）  生成部２０１のｉ＝０時の値
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）からｉ＝Ｒ−１時の値（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）への各遷移タイミングは、２０５のＴ（ｉ）でｉ＝０からｉ＝Ｒ−１を出力する遷移タイミングと同期しており、その結果加算器２０８の出力は行間入れ替えを行った後の
Ｕｉ（ｊ）＝（ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐによる二次元配列を列方向に向かって読み出した値となる関係はＣ＝ｐの場合と同様である。
【００８１】
次に、データ長Ｋ＝３２０の場合の例を説明する。二次元配列の行数Ｒを２０とする。３２０／２０＝１６であるから、それ以上で最も近い素数ｐ＝１７となる。しかし列数Ｃ＝ｐ−１＝１６行としても二次元配列を構成することが出来る。そこで、１６×２０の二次元配列への適用を考える。ｐ−１の場合も原始元を使用することに代わりはない。票数が１７の有限体上の原始元は３である。
【００８２】
この原始元ν＝３を用いて行内順序入れ替えを行う為の式を以下に示す。
Ｕｉ（ｊ）＝（ν＾ｒｉ）＾ｊ  ｍｏｄ  ｐ    ｗｈｅｒｅ，  ｊ＝０，１，２，・・・，（ｐ−２），
上式は既に説明した列数をｐとした場合と同様の理由から導き出せる。
【００８３】
以下、図１を参照しながら本発明のインターリービング順序発生器をＣ＝ｐ−１に適用した場合について説明する。前述のＣ＝ｐの場合と同様に入れ替え後のｉ＝０〜１９行目に対して（ν＾ｒＴ（ｉ））＝（ν＾ｑｉ）となるから、入れ替え後の行番号ｉに対しての乗数を（ν＾ｑｉ）とすればよい。Ｔ（ｉ）行からｉ行へ入れ替えられたのであるから、列の数ｐ−１＝１７−１＝１６として、（ｐ−１）×Ｔ（ｉ）を加算することが必要なことも同様である。
【００８４】
この処理は図２のインターリービング順序発生器で行われている。従って、図１で生成される
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）
はＣ＝ｐの場合と同様にｉ＝０〜ｐ−２においてＣ＝ｐ−１の場合も同じ処理で実現出来ることになる。ただしＣ＝ｐの場合には、ｉ＝ｐ−１になった時零出力部２０２を選択する様に動作するが、Ｃ＝ｐ−１の場合にはｉ＝０〜ｐ−２迄であるので、セレクタ２０４は
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部２０１を選択したままであり、零出力部２０２やｐ出力部２０３を選択することはない。またＣ＝ｐ−１の場合、零出力部２０２の選択が無い為、順序入れ替えパターンが１〜Ｃとなる。そこで、入れ替えパターンを０〜Ｃ−１に合わせる為に発生した値に対し１を減算するする構成も可能である。
【００８５】
図３は、Ｃ＝ｐ−１の場合におけるインターリービング順序発生器の構成例を示すブロック図である。Ｃ＝ｐ−１の場合であるから、セレクタ２０４に相当する動作は必要ない。
【００８６】
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部３０１が直接加算器３０８に入力される。この加算器３０８には減算の為に−１の値を出力する定数発生部３１０から−１が入力されている。また、列数設定部３０６からの二次元配列の列数ｐ−１とテーブル３０５のブロック入れ替えパターンＴ（ｉ）が乗算器３０７で掛け算され、その結果の（ｐ−１）×Ｔ（ｉ）が加算器３０８に入力される。これらの加算結果がインターリービング順序出力として出力端３０９より送出される。
【００８７】
図４は、本発明のインターリービング順序発生器において、上記（３）式のＵｉ（ｊ）を生成するブロックである、
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部の第２の実施形態を示すブロック図である。
【００８８】
インターリービング順序発生器からの出力信号がインターリーバ対象範囲を超えた場合、その信号をスキップすることになるが、本実施形態では、そのようなスキップが生じた場合であっても淀みなく信号を発生させるために、上述した有限体の高速乗算器を二つ用意している。
【００８９】
図４において、図１における乗数ν＾ｑ０，ν＾ｑ１，ν＾ｑ２，・・・ν＾ｑＲ−１  （ｍｏｄ  ｐ）を格納するレジスタ１０１が二分割され４０１と４１１となっているがトータルの容量は図１の場合と変わらない。分割方法としては色々な方法が可能であるが、ここでは乗数ν＾ｑ０，ν＾ｑ２，ν＾ｑ４，・・・（ｍｏｄ  ｐ）を格納する偶数用レジスタ４０１と乗数ν＾ｑ１，ν＾ｑ３，ν＾ｑ５，・・・（ｍｏｄ  ｐ）を格納する奇数用レジスタ４１１に分割した例について説明する。
【００９０】
有限体上の高速乗算器は４０３と４１３の二つであり、それぞれセレクタ４０４及び４１４を通じて乗数が格納されているレジスタから一方の乗算器入力を得る様になっている。この乗算器出力はそれぞれセレクタ４０５及び４１５を介して乗算結果を一時保存するするレジスタ４０２及び４１２に接続されている。
【００９１】
レジスタ４０２、４１２の出力は、それぞれセレクタ４０６、４１６を介して出力端４０７および４１７へ出力されるとともに前記乗算器４０３及び４１３のもう一つの入力へ接続されている。セレクタ４０４、４０５及び４０６とセレクタ４１４、４１５及び４１６はそれぞれ連動して選択動作を行う様に制御されており、その結果図１で説明したものと同じ計算結果を偶数と奇数に対して同時に得ることが出来る。即ち
（ν＾ｑ０）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ｍｏｄ  ｐ）と
（ν＾ｑ１）＾ｊ，（ν＾ｑ３）＾ｊ，・・・（ｍｏｄ  ｐ）が同時に得られる。
【００９２】
尚、セレクタをアドレス制御に置き換え、更にデュアルポートＲＡＭにより偶数に相当するアクセスと奇数に相当するアクセスを同時に実行する様に構成し、一つのＲＡＭで二つのレジスタと同じ動作を実現する様に構成することも可能である。
【００９３】
図５〜図６は、本発明のインターリービング順序発生器の第２実施形態を示すブロック図である。
【００９４】
本実施形態は、図４に示す二つに分割された
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部を備えることにより、インターリーバ対象範囲を超える信号のスキップを行うように構成されており、図５に示すブロックで図２に相当する列数×ブロック入れ替えパターンＴ（ｉ）の加算処理が行われ、図６に示すブロックでインターリーバ対象範囲を超える信号のスキップ動作が実行される。
【００９５】
図５において、
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部は、
（ν＾ｑ０）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ｍｏｄ  ｐ）生成部５０１と、
（ν＾ｑ１）＾ｊ，（ν＾ｑ３）＾ｊ，・・・（ｍｏｄ  ｐ）生成部５１１とに分割されているが、これらの基本的な動作は図２の、
（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）生成部の動作と同様であるのでその詳細動作説明は省略する。
【００９６】
列数設定部５０６とブロック入れ替えパターンＴ（ｉ）発生部５０５は偶数と奇数で共用できるので一つで構成し、加算器５０８によって偶数に対応するインターリービング順序を偶数出力端５０９から出力し、加算器５１８によって奇数に対応するインターリービング順序を奇数出力端５１９から出力している。
【００９７】
これらのインターリービング順序を表す信号に対しインターリーバ対象範囲を超える信号をスキップするのが図６のブロックである。同図において偶数に対応するインターリービング順序信号が６０２から、奇数に対応するインターリービング順序信号が６０１から入力する。これらの信号はそれぞれコンパレータ６０４と６０５でトータルビット数６０７と比較され、このトータルビット数以上のものがインターリーバ範囲外としてスキップされる。
【００９８】
この様にして生成されたインターリーバ範囲内のインターリービング順序信号は切り替えスイッチ６０８によって元の順番に並び替えられＦＩＦＯ６０９に入力される。ＦＩＦＯの内容がいっぱいになるとＦＩＦＯ６０９からはバッファフル（ＢＵＦＦＥＲ  ＦＵＬＬ）信号が出力され、特に図示していないが、このバッファフル信号が各ブロックに対するホルト（ＨＡＬＴ）信号６１０となって各ブロックの動作が一時停止する。
【００９９】
最終的なインターリービング順序出力がＦＩＦＯ６０９より読み出され、信号が端子６１１から出力されると、ホルト（ＨＡＬＴ）信号が解除され各ブロックの動作が再開される。即ち、ＦＩＦＯ６０９のバッファリング機能によってインターリービング順序出力６１１は淀みなく信号を発生することが出来る。
【０１００】
図７は、図１の有限体上の乗算器１０３や、図４の有限体上の乗算器４０３及び４１３の構成例を示すブロック図である。本実施例の有限体上の乗算器は、乗算７０１とモジュロー演算７０２とからなる二つの部分から構成される。モジュロー演算７０２は、図８に示す比較減算回路８０１によって構成され、図９に示すような演算９０１を実行する。
【０１０１】
図９の演算９０１は、乗算器７０１の演算結果がバイナリーで１０１００１０１１０００００１１であった時、ｐ＝１００１００１１でモジュローを取る例を示している。先ず上位８ビットで比較減算されるが、これは比較減算回路８０１の構成で実現出来る。上位ビットＭＳＢで比較結果を判断してｐ以上の値ならば減算した値を出力する。同様の処理を１ビットずつシフトしながら最終的にモジュロー演算結果を得ることが出来る。
【０１０２】
以上、本実施形態のインターリービング順序発生器について説明したが、次に、このインターリービング順序発生器を用いて実際にデータの順序入れ替えを行う処理について説明する。
【０１０３】
図１０は、ＲＡＭに蓄積されたデータの順序入れ替えを行うことによりインターリービング処理を行う方法である。インターリービング順序発生器１００１からの信号をＲＡＭ１００２のアドレス信号としてデータを読み出すことによりインターリービングを行う。例えばインターリービング順序発生器から０，８，４，１２，２，・・・・７，１５という系列がＲＡＭ１００２の読み出しアドレス（ＲＤ  Ａｄｒ）に入力したとすると、アドレス順に並べられて蓄積されているデータの０番目のデータ、８番目のデータ、・・・・がＲＡＭ１００２から出力され順序入れ替えが行われる。
【０１０４】
図１１は、書き込みによりデインターリービングを行う方法である。図１０の読み出しによるインターリービングと同様にインターリービング順序発生器１１０１からの信号はＲＡＭ１１０２のアドレスとして入力している。図１０と異なる点はこのアドレス信号は書き込み用アドレスであり、デインターリービング後のデータはこのＲＡＭ１１０２に蓄積されることになる。
【０１０５】
例えば上述のインターリーブされたデータが０番目のデータ、８番目のデータ、・・・の順でＲＡＭ１１０２に入力したとする。インターリービング順序発生器１１０１からは図１０と同じ０，８，４，１２，２，・・・，７，１５という系列がＲＡＭ１１０２の書き込みアドレス（ＷＲ  Ａｄｒ）に入力したとする。この結果、ＲＡＭ１１０２には当初の順列に復元して、アドレス０，１，２，・・・に対し、０番目のデータ、１番目のデータ、２番目のデータ、・・・の順に復元され、デインターリーブが実行される。
【０１０６】
尚、デインターリーブもインターリーブもパターンによって入れ替え可能であり、一方がインターリーブと呼ぶならばもう一方がデインターリーブに、逆に一方をデインターリーブと呼ぶならばもう一方はインターリーブとなる。この様に同じインターリービング順序発生器を用いてインターリーブもデインターリーブも実現出来る。
【０１０７】
図１２は、この関係を用いてインターリーブとデインターリーブを同時に一つのインターリービング順序発生器１２０１で実現したものであり、後述するターボデコーダの外部情報系列と事前情報系列（アプリオリ）の入れ替え時に用いられるものである。
【０１０８】
同図において、デュアルポートＲＡＭ１２０２にはアドレス順に受信シンボルに対応したアプリオリデータが蓄積されている。インターリービングが行われた更新期間になるとインターリービング順序発生器１２０１からインターリービングパターンに応じて０，８，４，１２，２，・・・，７，１５といった系列がＲＡＭ１２０２の読み出しアドレスに入力される。これに応じてＲＡＭ１２０２からは０番目のデータ、８番目のデータ、・・・が出力される。
【０１０９】
このインターリーブされたデータは、後述するターボデコーダで処理されたあと元のデータ順序に戻すデインターリーブが必要になる。そこで、遅延器１２０３が挿入されターボデコーダの処理時間分遅らせてデインターリーブ処理が行われる構成になっている。
【０１１０】
例えば、処理されたデータが０番目のデータ、８番目のデータ、・・・の順でＲＡＭ１２０２に入力したとする。インターリービング順序発生器１２０１から遅延器１２０３を介した書き込み用アドレス信号は０，８，４，１２，２，・・・，７，１５となってＲＡＭ１２０２にはアドレス０，１，２，・・・に対し、０番目のデータ、１番目のデータ、２番目のデータ、・・・の順に復元されデインターリーブが実行される。
【０１１１】
図１３は、以上説明したインターリービング順序発生器１３０１とそれを用いてインターリーブ処理を行う為のデュアルポートＲＡＭ１３０３を具備した本発明のターボエンコーダの実施形態を示すブロック図である。
【０１１２】
本実施形態のターボエンコーダも、図１５に示す従来のターボエンコーダと同様に、２つのコンポーネントエンコーダ１３０４と１３０５を有しており、コンポーネントエンコーダ１３０４にはインターリーブ処理を行わない情報系列が入力され、コンポーネントエンコーダ１３０５にはインターリーブ処理された情報系列が入力される。
【０１１３】
そこで、デュアルポートＲＡＭ１３０３の一方のアドレス入力ＲＤ  Ａｄｒ１としてアップカウンタ１３０２の出力を入力し、もう一方のアドレス入力ＲＤ  Ａｄｒ２としてインターリービング順序発生器１３０１の出力を入力する。そして、アップカウンタ１３０２からのアドレス入力ＲＤ  Ａｄｒ１により読み出されたデュアルポートＲＡＭ１３０３の情報系列をコンポーネントエンコーダ１３０４へ入力し、インターリービング順序発生器１３０１からのアドレス入力ＲＤ  Ａｄｒ２により読み出されたデュアルポートＲＡＭ１３０３のインターリーブされた情報系列をコンポーネントエンコーダ１３０５へ入力する。
【０１１４】
図１４は、上述のインターリービング順序発生器１４０２とそれを用いてインターリーブ処理及びデインターリーブ処理を行う為のデュアルポートＲＡＭ１４０７及び１４０６を具備した本発明のターボデコーダの実施形態を示すブロック図である。
【０１１５】
情報系列が蓄積されているデュアルポートＲＡＭ１４０６の読み出し用アドレスにはアップカウンタ１４０１またはインターリービング順序発生器１４０２が選択スイッチ１４０３を介して接続されている。ターボデコーディングの各イタレーション処理においてインターリーブを行わない処理に対応したパリティビット１によるデコードとインターリーブを施した処理に対応したパリティビット２によるデコードが存在する。選択スイッチ１４０３と１４０４はそれを切り替える為のスイッチであり、ハーフイタレーションに対して奇数回目か偶数回目かによって切り替え信号１４０５により制御されている。
【０１１６】
インターリーブを伴わない処理においては、選択スイッチ１４０３はアップカウンタ１４０１を選択し、選択スイッチ１４０４はパリティビット１を選択する。
【０１１７】
従って、情報系列が蓄積されているデュアルポートＲＡＭ１４０６の読み出しアドレスにアップカウンタ１４０１が接続されることになるので、デュアルポートＲＡＭ１４０６からはインターリービングのされていない情報系列が出力される。同時にデュアルポートＲＡＭ１４０７の読み込みアドレスにもスイッチ１４０３を介してアップカウンタ１４０１が接続されることになるので、デュアルポートＲＡＭ１４０７からもインターリービングのされていないアプリオリが出力される。
【０１１８】
この二つの信号は加算器１４０８によって加え合わされ軟入力軟出力復号器（ＳＩＳＯ）１４１０に入力される。ＳＩＳＯ１４１０は、ＭＡＰ復号を対数上で行う所謂ＬｏｇＭＡＰあるいはＭａｘ−ＬｏｇＭＡＰで構成されており、加算器１４０８による加算処理は確率演算における乗算に相当する。
【０１１９】
この加算器１４０８の演算結果とスイッチ１４０４にて選択されたパリティビット１によってＭＡＰ演算が実行され、その結果から遅延器１４１１でタイミングを合わせた加算値が加算器１４１２で減算され次回のアプリオリとしてデュアルポートＲＡＭ１４０７に入力される。デュアルポートＲＡＭ１４０７の書き込み用アドレスには遅延器１４０９を介して読み出し用アドレスと同じものがタイミングを合わせて入力されているので情報系列のシンボル位置に対応したアドレスにアプリオリデータが蓄積されることになる。
【０１２０】
次に、ハーフイタレーションのインターリーブを伴う処理になると、選択スイッチ１４０３はインターリービング順序発生器１４０２を選択し、選択スイッチ１４０４はパリティビット２を選択する。
【０１２１】
従って、情報系列が蓄積されているデュアルポートＲＡＭ１４０６の読み出しアドレスにインターリービング順序発生器１４０２が接続されることになるので、デュアルポートＲＡＭ１４０６からはインターリービングがなされた情報系列が出力される。同時にデュアルポートＲＡＭ１４０７の読み込みアドレスにもスイッチ１４０３を介してインターリービング順序発生器１４０２が接続されることになるので、デュアルポートＲＡＭ１４０７からもインターリービングがなされたアプリオリが出力される。
【０１２２】
この二つの信号は加算器１４０８によって加え合わされ軟入力軟出力復号器（ＳＩＳＯ）１４１０に入力される。加算器１４０８による加算処理は確率演算における乗算に相当する。
【０１２３】
この加算器１４０８の演算結果とスイッチ１４０４にて選択されたパリティピット２によってＭＡＰ演算が実行され、その結果から遅延器１４１１でタイミングを合わせた加算値が加算器１４１２で減算され次回のアプリオリとしてデュアルポートＲＡＭ１４０７に入力される。デュアルポートＲＡＭ１４０７の書き込み用アドレスには遅延器１４０９を介して読み出し用アドレスと同じものがタイミングを合わせて入力されているので元のアドレス位置にアプリオリデータが蓄積されることになる。即ちデインターリーブが施されたことになる。
【０１２４】
このイタレーション処理によって復号性能を飛躍的に向上させるのがターボデコーダの特徴であり、最終的に判定器１４１３により硬判定がなされ、出力端１４１４より復号データが出力される。
【０１２５】
【発明の効果】
本発明によれば、各種のマルチメディアサービスにおいて、多種類のインターリービングパターンを用意する必要がある場合であっても、そのために膨大なメモリ容量を必要とすることなく対応することができる。
【０１２６】
また、例えば８イタレーション等の構成で２Ｍｂｐｓ以上の受信データ系列の復号を行う場合であっても、生成されたインターリービングパターンを一度高速メモリに蓄える為の高速なメモリ容量を必要とすることなく、更に、生成されたパターンを実際に処理を行っているターボデコーダ内のインターリービング用ＲＡＭに転送する必要がある場合であっても、そのインターフェースがボトルネックとなる様な大量の転送データ量を必要とすることなく対応することができる。
【０１２７】
更に、可変レート機能を持たせた場合、頻繁にインターリーブ長の変更が生じるが、そのような場合であっても、インターフェース上のボトルネックを助長する様なことがない最小限のパラメータ転送で実現出来、マルチメディアサービスにおける転送レートに追随出来ないといった問題を解消したインターリービング順序発生器、インターリーバ、ターボエンコーダ及びターボデコーダを提供することが出来る。
【図面の簡単な説明】
【図１】本発明のインターリービング順序発生器の内、（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）の生成ブロックを示した図である。
【図２】本発明のインターリービング順序発生器の内、行位置の加算を行ってインターリービング順序を生成するブロック図である。
【図３】列数Ｃ＝ｐ−１の場合であって、減算により入れ替えパターンを０〜Ｃ−１とした場合のインターリービング順序を生成するブロック図である。
【図４】有限体上の高速乗算器を二つ用意してスキップしても淀み無く（ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）を生成するブロック図である。
【図５】スキップしても淀み無くインターリービング順序を発生するブロックの内、行位置の加算を行ってインターリービング順序を生成するブロック図である。
【図６】インターリービング順序を表す信号に対し、インターリーバ対象範囲を超える信号をスキップするブロック図である。
【図７】有限体上の高速乗算器を示す図である。
【図８】モジュロー演算の構成要素を示す図である。
【図９】モジュロー演算の動作を説明した図である。
【図１０】読み出しによるインターリービング処理を表した図である。
【図１１】書き込みによるデインターリービング処理を表した図である。
【図１２】デュアルポートＲＡＭから読み出すことによるインターリービング処理と書き込みによるデインターリービングを同時に行った図である。
【図１３】本発明のインターリービング順序発生器を用いたターボエンコーダを示す図である。
【図１４】本発明のインターリービング順序発生器を用いたターボデコーダを示す図である。
【図１５】従来のターボエンコーダの構成例を示す図である。
【図１６】従来のターボデコーダの構成例を示す図である。
【図１７】ＲＡＭに蓄積されたインターリービング順序によりビット単位で並び替えを行う従来のターボデコーダの構成例を示す図である。
【符号の説明】
１０１、１０２    レジスタ
１０３    有限体上の高速乗算器
１０４、１０５、１０６    セレクタ
１０７    出力
２０１    （ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）を生成するブロック
２０２    零の値を持った定数ブロック
２０３    ｐの値を持った定数ブロック
２０４    セレクタ
２０５    ブロック入れ替えパターンＴ（ｉ）
２０６    二次元配列の列数を設定するブロック
２０７    乗算器
２０８    加算器
２０９、  インターリービング順序出力
３０１    （ν＾ｑ０）＾ｊ  （ｍｏｄ  ｐ）〜（ν＾ｑＲ−１）＾ｊ  （ｍｏｄ  ｐ）を生成するブロック
３０５    ブロック入れ替えパターンＴ（ｉ）
３０６    二次元配列の列数ｐ−１をもった定数ブロック
３０７    乗算器
３０８    加算器
３０９    インターリービング順序出力
４０１、４０２    偶数用レジスタ
４０３    偶数用乗算器
４０４、４０５、４０６    セレクタ
４０７    出力
４１１、４１２    奇数用レジスタ
４１３    奇数用乗算器
４１４、４１５、４１６    セレクタ
４１７    出力
５０１    （ν＾ｑ０）＾ｊ，（ν＾ｑ２）＾ｊ，・・・（ｍｏｄ  ｐ）を生成するブロック
５０２    零の値を持った定数ブロック
５０３    ｐの値を持った定数ブロック
５０４    セレクタ
５０５    ブロック入れ替えパターンＴ（ｉ）
５０６    二次元配列の列数を設定するブロック
５０７    乗算器
５０８    加算器
５０９    偶数に対応するインターリービング順序出力
５１１    （ν＾ｑ１）＾ｊ，（ν＾ｑ３）＾ｊ，・・・（ｍｏｄ  ｐ）を生成するブロック
５１２    零の値を持った定数ブロック
５１３    ｐの値を持った定数ブロック
５１４    セレクタ
５１７    乗算器
５１８    加算器
５１９    奇数に対応するインターリービング順序出力
６０１    奇数に対応するインターリービング順序入力
６０２    偶数に対応するインターリービング順序入力
６０３、６０４    コンパレータ
６０５、６０６    スイッチ
６０７    トータルビット数を値として持った定数ブロック
６０８    切り替えスイッチ
６０９    ＦＩＦＯ
６１０    ホルト（ＨＡＬＴ）信号
６１１    スキップ後のインターリービング順序出力
７０１    乗算器
７０２    モジュロー演算器
８０１    比較減算回路
９０１    上位８ビットで比較減算される様子の説明
１００１    インターリービング順序発生器
１００２    ＲＡＭ
１１０１    インターリービング順序発生器
１１０２    ＲＡＭ
１２０１    インターリービング順序発生器
１２０２    デュアルポートＲＡＭ
１２０３    遅延器
１３０１    インターリービング順序発生器
１３０２    アップカウンタ
１３０３    デュアルポートＲＡＭ
１３０４    コンポーネントエンコーダ１
１３０５    コンポーネントエンコーダ２
１４０１    アップカウンタ
１４０２    インターリービング順序発生器
１４０３、１４０４    選択スイッチ
１４０５    切り替え信号
１４０６、１４０７    デュアルポートＲＡＭ
１４０８    加算器
１４０９    遅延器
１４１０    軟入力軟出力復号器（ＳＩＳＯ）
１４１１    遅延器
１４１２    加算器（減算器）
１４１３    判定器
１４１４    復号データ出力
１５０１    インターリーバ
１５０２、１５０３    コンポーネントエンコーダ
１６０１、１６０２    インターリーバ
１６０３、１６０４    軟入力軟出力デコーダ（復号器）（ＳＩＳＯ）
１６０５    分離器
１６０６、１６０７    デインターリーバ
１６０８    判定器
１７０１    インターリービングを行うデータ系列
１７０２    インターリービング順序が蓄積されたＲＡＭ
１７０３    インターリービング後のデータ系列
【図１】
0003624874.tif 000002
【図２】
0003624874.tif 000003
【図３】
0003624874.tif 000004
【図４】
0003624874.tif 000005
【図５】
0003624874.tif 000006
【図６】
0003624874.tif 000007
【図７】
0003624874.tif 000008
【図８】
0003624874.tif 000009
【図９】
0003624874.tif 000010
【図１０】
0003624874.tif 000011
【図１１】
0003624874.tif 000012
【図１２】
0003624874.tif 000013
【図１３】
0003624874.tif 000014
【図１４】
0003624874.tif 000015
【図１５】
0003624874.tif 000016
【図１６】
0003624874.tif 000017
【図１７】
0003624874.tif 000018