(57)【特許請求の範囲】
【請求項１】
入力データに対して畳み込み符号化を行う畳み込み手段と、
前記入力データに対して順次インターリーブを行うインターリーブ手段と
を備える符号化装置において、
前記インターリーブ手段は、
置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて前記入力データの置換を行う置換手段と、
前記置換手段により置換された前記入力データを、さらにランダマイズするランダマイズ手段と
を備えることを特徴とする符号化装置。
【請求項２】
前記ランダマイズ手段は、発生される１と０の数が等しいＫ次均等分布を満たす乱数を用いる
ことを特徴とする請求項１に記載の符号化装置。
【請求項３】
前記ランダマイズ手段は、ランダマイズするデータの範囲を±ａ（ａは整数）の範囲で変動しながらランダマイズを繰り返す
ことを特徴とする請求項１に記載の符号化装置。
【請求項４】
前記ランダマイズ手段は、所定の範囲を設定し、その範囲内のデータに所定のアルゴリズムを適用してランダマイズする
ことを特徴とする請求項１に記載の符号化装置。
【請求項５】
前記ランダマイズ手段は、ランダマイズするデータの範囲を±ａの範囲で変動した後、所定の範囲内に所定のアルゴリズムを適用してランダマイズする、または、所定の範囲を設定し、その範囲内に所定のアルゴリズムを適用してランダマイズした後に、さらに±ａの範囲でランダマイズしながら変動する
ことを特徴とする請求項１に記載の符号化装置。
【請求項６】
入力データに対して畳み込み符号化を行う畳み込み手段と、
前記入力データに対して順次インターリーブを行うインターリーブ手段と
を備える符号化装置の符号化方法において、
前記インターリーブ手段は、
置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて前記入力データの置換を行う置換ステップと、
前記置換ステップで置換された前記入力データを、さらにランダマイズするランダマイズステップと
を含むことを特徴とする符号化方法。
【請求項７】
入力データに対して畳み込み符号化を行う畳み込み手段と、
前記入力データに対して順次インターリーブを行うインターリーブ手段と
を備える符号化装置の前記インターリーブ手段に、
置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて前記入力データの置換を行う置換ステップと、
前記置換ステップで置換された前記入力データを、さらにランダマイズするランダマイズステップと
を含む処理を実行させるコンピュータが読み取り可能なプログラムを提供することを特徴とする提供媒体。
【請求項８】
置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データの置換を行う置換手段と、
前記置換手段により置換されたデータを、さらにランダマイズするランダマイズ手段と
の組み合わせにより、前記入力データをインターリーブ処理しながら符号化する符号化装置から出力された符号化データを復号する復号装置において、
前記符号化装置が行うインターリーブ処理と逆の処理を行うデインターリーブ手段
を備えることを特徴とする復号装置。
【請求項９】
置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データの置換を行う置換手段と、
前記置換手段により置換されたデータを、さらにランダマイズするランダマイズ手段と
の組み合わせにより、前記入力データをインターリーブ処理しながら符号化する符号化装置から出力された符号化データを復号する復号装置の復号方法において、
前記符号化装置が行うインターリーブ処理と逆の処理を行うデインターリーブステップ
を含むことを特徴とする復号方法。
【請求項１０】
置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データの置換を行う置換手段と、
前記置換手段により置換されたデータを、さらにランダマイズするランダマイズ手段と
の組み合わせにより、前記入力データをインターリーブ処理しながら符号化する符号化装置から出力された符号化データを復号する復号装置に、
前記符号化装置が行うインターリーブ処理と逆の処理を行うデインターリーブステップ
を含む処理を実行させるコンピュータが読み取り可能なプログラムを提供することを特徴とする提供媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は符号化装置および方法、復号装置および方法、並びに提供媒体に関し、特に、ターボ符号の符号化や復号を行う際に適用して好適な符号化装置および方法、復号装置および方法、並びに提供媒体に関する。
【０００２】
【従来の技術】
符号性能の理論的限界であるシャノンリミットに近い性能を示す符号として、ターボ符号が知られている。このターボ符号は、複数の畳み込み符号化回路とインターリーバ（インターリーブ回路）を組み合わせた構成によって符号化を行うと共に、復号側では複数のソフトアウトプットを出力する復号回路の間で入力データに関する情報をやり取りして最終的な復号結果を得るものである。
【０００３】
図１０は、従来のターボ符号化装置１０の構成を示している。このターボ符号化装置１０は、入力データに対して畳み込み符号化を行って符号化データを得る畳み込み符号化回路１−１と、この入力データに対して順次インターリーブを行うインターリーバ２−１乃至２−（Ｎ−１）（以下、インターリーバ２−１乃至２−（Ｎ−１）を個々に区別する必要がない場合、単にインターリーバ２と記述する。その他の装置についても同様である）と、これらのインターリーバ２の出力データに対して、それぞれ畳み込み符号化を行って符号化データを得る畳み込み符号化回路１−２乃至１−Ｎとを有している。
【０００４】
ここで、畳み込み符号化回路１は、入力されたデータに対して畳み込み演算を行い、演算結果をそれぞれ符号化データとして出力するものである。また、インターリーバ２は、入力されたデータの順序を交錯して出力するものである。
【０００５】
図１１は、畳み込み符号化回路１の一例を示している。図１１に示す畳み込み符号化回路１は、拘束長３のフィードバック型畳み込み符号化回路である。この畳み込み符号化回路１は、ターミネーション回路２１、３個のエクスクルーシブオア回路（以下、「EXOR回路」という）２２−１乃至２２−３、および２個のシフトレジスタ２３−１，２３−２を有しており、入力データから符号化データを生成するものである。
【０００６】
ここで、シフトレジスタ２３は入力されたデータを１単位時間遅延させる遅延素子として機能し、またEXOR回路２２は入力されたデータの排他的論理和を出力する。また、ターミネーション回路２１は、入力データの全てを符号化し終わるまでは、入力データを出力し、符号化し終わった時点から２単位時間（シフトレジスタ数に対応した時間）だけフィードバックデータを出力する。入力データが全て符号化された後の処理は、ターミネーションと呼ばれるシフトレジスタ２３の内容を全て０に戻すためのもので、復号側ではこの処理を前提に復号がなされる。
【０００７】
図１２は、インターリーバ２の一例を示している。インターリーバ２に入力された入力データは、入力データ保持メモリ３１に一旦格納された後、データ置換回路３２によって順序が並び変えられる。このデータの順序の並べ変えは、置換データROM（Read Only Memory）３４の内容（置換位置情報）に基づいて行われる。そして、順序が並び変えられたデータは出力データ保持メモリ３３に格納され、その後出力データとして出力される。
【０００８】
図１２では、インターリーバ２のサイズは５で、置換データROM３４の内容が図１３に示すものであるときのインターリーバ２の動作例を示している。すなわち、入力データが“１１０１０”であるとき、置換データROM３４に記憶されているデータに従って、データ置換回路３２が入力データの置換処理を行うことにより、出力データとして“００１１１”が出力される。
【０００９】
図１０に示したターボ符号化装置１０の動作を説明する。入力データは畳み込み符号化回路１−１に供給される。そして、この畳み込み符号化回路１−１では入力データに対して畳み込み演算が行われ、続いてターミネーションが行われ、ターミネーションを含む符号化処理による符号化データが出力される。
【００１０】
また、入力データは、インターリーバ２−１乃至２−（Ｎ−１）の直列回路に供給され、順次入力されたデータの順序が交錯されて出力される。これら、インターリーバ２−１乃至２−（Ｎ−１）の出力データは、それぞれ対応する畳み込み符号化回路１−２乃至１−Ｎに供給される。そして、これら畳み込み符号化回路１−２乃至１−Ｎでは、それぞれ対応するインターリーバ２−１乃至２−（Ｎ−１）の出力データに対して畳み込み演算が行われ、続いてターミネーションが行われ、ターミネーションを含む符号化処理による符号化データが出力される。
【００１１】
図１４は、ターボ符号化装置１０の入力データと符号化データとのビット数の関係を表したものである。入力されたｋビットの入力データは、各畳み込み符号化回路１−１によってｎ1ビットの符号に変換された後、さらにｔ1ビットのターミネーション符号が付加されるので、合計（ｎ1＋ｔ1）ビットの符号となる。同様に、畳み込み符号化回路１−２乃至１−Ｎより（ｎ2＋ｔ2）乃至（ｎm＋ｔm）ビットの符号化データが出力される。
【００１２】
図１５は、従来のターボ復号装置４０の構成を示している。このターボ復号装置４０は、ターボ符号化装置１０より出力される符号化データ（受信データ）の個数に対応した複数のソフトアウトプット復号回路５１−１乃至５１−Ｎを有している。ソフトアウトプット復号回路５１−１乃至５１−Ｎは、MAP（Maximum Aposteriori Probability）デコーダおよびSOVA（Soft Output Viterbi Algorithm）デコーダ等の、符号化側での入力データが０または１である確率を算出する機能を持つ、いわゆるソフトアウトプット復号方式を用いて構成される。
【００１３】
図１５に示したターボ復号装置４０の動作を説明する。受信データ（符号化データ）は、それぞれソフトアウトプット復号回路５１−１乃至５１−Ｎに供給される。各復号回路５１−１乃至５１−Ｎでは、それぞれ符号化側でのターミネーションビットを除いた入力データに対する推定確率値データを互いに利用し、数回および数１０回の反復復号動作が行われる。そして、任意の復号回路（図１５では復号回路５１−１）より、最終的な復号データが出力される。
【００１４】
図１６は、ターボ復号装置４０の受信データ、推定確率値データ、および復号データのビット数の関係を表したものであり、図１０のターボ符号化装置１０における各ビット数の関係と対応している。ソフトアウトプット復号回路５１−１乃至５１−Ｎは、それぞれ（ｎ1＋ｔ1）乃至（ｎm＋ｔm）ビットの受信データより、ターミネーションビットを除いた入力データのｋビットの推定確率値データを算出する。そして、そのｋビットの推定確率値データは、各復号回路間でやり取りされ、最終的にｋビットの復号データが出力される。
【００１５】
【発明が解決しようとする課題】
ところで、ターボ符号化装置と復号装置において高い誤り訂正能力を得る為には、一般的に、インターリーバ２は下記の２つの条件を同時に満たすことが必要である。
[条件 １]  置換後の任意の２点間の距離の和が、置換前より充分大きくなる。
[条件 ２]  置換位置を数列として見た場合、その数列は、ｋ次均等分布性と呼ばれる数学的性質を満たす。
【００１６】
上記２条件は、符号の最小距離、及び最小距離符号の多重度と呼ばれる、誤り訂正符号に対して定義される性能指標値に関するものである。これら２条件は、誤り訂正符号が良い性能を出すために必要とされる。条件１は、最小距離が大きくなること、条件２は最小距離符号の多重度が小さくなることに、それぞれ対応している。
【００１７】
しかしながら、上述したターボ符号化装置１０のインターリーバ２においては、置換位置を決定するためのデータとして、置換データROM３４に記憶されている、乱数を用いて発生されたデータが用いられており、このような乱数が用いられて発生された置換位置では、条件２のｋ次均等分布は満たすことができるが、置換前後の任意の２点間の距離の和が小さくなる場合が生じるため、条件１を満たすことができない。
【００１８】
また、乱数を用いて置換位置を決定するインターリーバの他に、アフィンインターリーバがある。このアフィンインターリーバは、条件１を満たすインターリーバとしては適しているが、条件２を満たすことができない。
【００１９】
このように、従来用いられているインターリーバにおいては、上述した条件１と条件２を、同時に満たすことができないといった課題があった。
【００２０】
本発明はこのような状況に鑑みてなされたものであり、上述した条件１と条件２を同時に満たすインターリーバを提供するものである。
【００２１】
【課題を解決するための手段】
請求項１に記載の符号化装置のインターリーブ手段は、置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データの置換を行う置換手段と、置換手段により置換された入力データを、さらにランダマイズするランダマイズ手段とを備えることを特徴とする。
【００２２】
請求項６に記載の符号化方法は、インターリーブ手段が、置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データの置換を行う置換ステップと、置換ステップで置換された入力データを、さらにランダマイズするランダマイズステップとを含むことを特徴とする。
【００２３】
請求項７に記載の提供媒体は、インターリーブ手段に、置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データの置換を行う置換ステップと、置換ステップで置換された入力データを、さらにランダマイズするランダマイズステップとを含む処理を実行させるコンピュータが読み取り可能なプログラムを提供することを特徴とする。
【００２４】
請求項９に記載の復号装置は、符号化装置が行うインターリーブ処理と逆の処理を行うデインターリーブ手段を備えることを特徴とする。
【００２５】
請求項１０に記載の復号装置は、符号化装置が行うインターリーブ処理と逆の処理を行うデインターリーブステップを含むことを特徴とする。
【００２６】
請求項１１に記載の提供媒体は、符号化装置が行うインターリーブ処理と逆の処理を行うデインターリーブステップを含む処理を復号装置に実行させることを特徴とする。
【００２７】
請求項１に記載の符号化装置、請求項６に記載の符号化方法、および請求項７に記載の提供媒体においては、置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データが置換され、さらにランダマイズされることにより、インターリーブが行われる。
【００２８】
請求項９に記載の復号装置、請求項１０に記載の復号方法、および請求項１１に記載の提供媒体においては、符号化装置が行うインターリーブ処理と逆の処理によりデインターリーブが行われる。
【００２９】
【発明の実施の形態】
以下に本発明の実施の形態を説明するが、特許請求の範囲に記載の発明の各手段と以下の実施の形態との対応関係を明らかにするために、各手段の後の括弧内に、対応する実施の形態（但し一例）を付加して本発明の特徴を記述すると、次のようになる。但し勿論この記載は、各手段を記載したものに限定することを意味するものではない。また、従来の場合と対応する部分には同一の符号を付してあり、その説明は適宜省略する。
【００３０】
請求項１に記載の符号化装置のインターリーブ手段（例えば、図１のインターリーバ７１）は、置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データの置換を行う置換手段（例えば、図３のステップＳ１）と、置換手段により置換された入力データを、さらにランダマイズするランダマイズ手段（例えば、図３のステップＳ４）とを備えることを特徴とする。
【００３１】
請求項９に記載の復号装置は、符号化装置が行うインターリーブ処理と逆の処理を行うデインターリーブ手段（例えば、図９のソフトアウトプット復号回路１３１）を備えることを特徴とする。
【００３２】
図１は、本発明を適用したターボ符号化装置６０の構成を示している。このターボ符号化装置６０は、入力データに対して畳み込み符号化を行って符号化データを得る畳み込み符号化回路１−１、この入力データに対して順次インターリーブを行うインターリーバ７１−１乃至７１−（Ｎ−１）、およびこれらインターリーバ７１−１乃至７１−（Ｎ−１）の出力データに対して、それぞれ畳み込み符号化を行って符号化データを得る畳み込み符号化回路１−２乃至１−Ｎを有している。
【００３３】
ここで、畳み込み符号化回路１は、入力されたデータに対して畳み込み演算を行い、演算結果をそれぞれ符号化データとして出力するものであり、上述した場合と同様に、図１１に示すように構成されている。また、インターリーバ７１は、入力されたデータの順序を交錯して出力するものである。
【００３４】
図２は、インターリーバ７１の構成例を示している。インターリーバ７１に入力された入力データは、入力データ保持メモリ８１に一旦格納された後、データ置換回路８２によって順序が並び変えられる。この入力データの順序の並び変えは、置換データROM８４の内容（置換位置情報）に基づいて行われる。そして、順序が並び変えられたデータは出力データ保持メモリ８３に格納され、その後出力データとして出力される。
【００３５】
以下に、図２に示したインターリーバ７１が行う入力データの順序の交錯（置換）について説明する。この交錯は、以下の２条件を満たすように行われる。
[条件 １]  置換前後の任意の２点間の距離の和が、充分大きくなる（所定の値より大きくなる）。
[条件 ２]  置換位置を数列として見た場合、その数列は、ｋ次均等分布性と呼ばれる数学的性質を満たす。
【００３６】
条件１を満たすインターリーバとして、アフィンインターリーブを用いたものがある。アフィンインターリーブは、入力された信号の位置ｉに応じ、インターリーバのサイズＮと互いに素な予め決められた定数ａ、及び任意の定数ｂを用い、ｉ番目の位置の入力信号を、位置（ａ×ｉ＋ｂ） ｍｏｄ Ｎにインターリーブする。特に、Ｎ＝２ｍ＾２，ａ＝２ｍ±１とされたときに、任意の定数ｂに対して、置換前後の任意の２点間の距離の和が必ず２ｍ以上にされる。この場合の置換前後の任意の２点間の距離の和の最小値２ｍは、サイズが同じあらゆるインターリーバの中で最大の値であることが証明されている。すなわち、このようなパラメータを持つアフィンインターリーブを用いたインターリーバは、上述した条件１を満たす。ただし、アフィンインターリーバは、条件２を満たさないことが知られている。
【００３７】
条件２で述べたｋ次均等分布性とは、サイズＮのインターリーバに対して、クラス数Ｃ、及び、次元Ｋを定め、まず、ｉ番目の置換位置 π（ｉ）（ｉ＝０乃至Ｎ−１）に対して決定される値ｃ＝｛ｃ｜（ｃ×ｓ）≦π（ｉ）＜（ｃ×（ｓ＋１）），ｓ＝Ｎ／Ｃ，０≦ｃ＜Ｃ｝を、その置換位置の属するクラスとするものである。次に、ｉ番目、ｉ＋１番目，...，ｉ＋（Ｋ−１）番目の入力の属するクラスが、１つのベクトルとされ、０≦ｉ≦（Ｎ−Ｋ）の全てのｉに対して定まるベクトルの出現頻度がカウントされる。最後に、数列（π（ｉ）に、ｉ＝０乃至（Ｎ−１）の値を代入したもの）が均等分布しているとした場合の、それぞれのベクトルの出現頻度の期待値Ｅ＝（Ｎ−Ｋ）／（Ｃ＾Ｋ）と、実際の（Ｃ＾Ｋ）種類のベクトルの出現頻度Ｆ0，Ｆ1，．．，ＦC^K-1より、（χ＾２）値と呼ばれる値Ｖ＝Σ（Ｆｊ−Ｅ）＾２／Ｅ（ｊ＝０乃至（Ｃ＾ｋ）−１）が算出される。
【００３８】
ｋ次均等分布性を満たすというのは、所定の設定された基準値Ｔに対して、上記のように算出された（χ＾２）値Ｖが、Ｖ＜Ｔとなることを言う。
【００３９】
例えば、サイズＮが６で、０番目乃至５番目までの入力の置換位置が、それぞれ４，２，０，３，１，５となるインターリーバに対してクラス数Ｃが３、次元Ｋが２のｋ次均等分布性を、基準値Ｔを２として判定する場合を考える。まず、それぞれの置換位置の属するクラスは、置換位置π（ｉ）が０≦π（ｉ）＜２の場合、クラス０であり、２≦π（ｉ）＜４の場合、クラス１であり、４≦π（ｉ）＜６の場合、クラス２となるので、それぞれクラス分けすると、置換位置の属するクラスは、順番に２，１，０，１，０，２となる。隣接するクラスを次元Ｋ（＝２）個ずつまとめて作成したベクトルは、（２，１），（１，０），（０，１），（１，０），（０，２）となる。
【００４０】
ベクトルは全部で（０，０），（０，１），（０，２），（１，０），（１，１），（１，２），（２，０），（２，１）、および（２，２）の９種類あるが、それぞれのベクトルの出現頻度Ｆ0乃至Ｆ8は、Ｆ0＝０，Ｆ1＝１，Ｆ2＝１，Ｆ3＝２，Ｆ4＝０，Ｆ5＝０，Ｆ6＝０，Ｆ7＝１，Ｆ8＝０となる。数列が均等分布しているとした場合の、それぞれのベクトルの出現頻度の期待値Ｅは、Ｅ＝（Ｎ−Ｋ）／（Ｃ＾Ｋ）＝（６−２）／（３＾２）＝４／９となるので、これを用いて（χ＾２）値Ｖを次式により算出する。
Ｖ＝Σ（Ｆj−Ｅ）＾２／Ｅ
（ｊ＝０乃至（Ｃ＾Ｋ）−１）
【００４１】
（χ＾２）値Ｖ＝３９／４となり、最初に設定した基準値Ｔ＝２に対してＶ＞Ｔという関係になるため、ｋ次均等分布性を満たさない。説明の便宜上、クラス数Ｃと次元Ｋに対してサイズＮの値を小いものとしたため、ｋ次均等分布性が満足されなかったが、実際には期待値Ｅが１０以上になるようにして（サイズＮの値を充分大きくして）判定すれば、ｋ均等分布性が満足される。
【００４２】
インターリーバ７１の置換データROM８４に記憶される置換位置データの作成について、図３のフローチャートを参照して説明する。以下に、置換前後の任意の２点間の距離の和が所定値以上であることが保証されている、サイズの等しい（ｐ＾ｎ）個のインターリーバを、ガロア体ＧＦ（ｐ＾ｎ）の元を係数とするＭ系列によって組み合わせ、その結果得られるインターリーブ位置に入力信号をインターリーブするような置換位置データを生成する場合を説明する。
【００４３】
上述したように、まずここでは、置換前後の任意の２点間の距離の和がある一定値以上であることが保証されている、サイズの等しい（ｐ＾ｎ）個のインターリーバとして、上述したサイズがＮのアフィンインターリーバを用いる。
【００４４】
ステップＳ１において、ｊ番目（０≦ｊ＜ｐ＾ｎ）のアフィンインターリーバに対するｉ番目の入力信号の置換位置が、以下に示す置換関数πj（ｉ）によって定められる。
πj（ｉ）＝ａj×ｉ＋ｂjｍｏｄ Ｎ
Ｎ＝２×（ｍ＾２）
ａj＝２ｍ±１
０≦ｊ＜（Ｐ＾ｎ）
ｂjは任意
また、Ｍ系列の次数ｄを、以下の等式を満たす整数ｄとする。
（ｐ＾ｎ）＾ｄ＝（ｐ＾ｎ）×Ｎ
【００４５】
図４は、Ｍ系列の発生を回路によって実現した場合の一例を示すブロック図である。図４に示すＭ系列発生回路９０は、シフトレジスタ１０１−１乃至１０１−４、ＧＦ（ｐ＾ｎ）の加算回路１０２−１乃至１０２−３、及びＧＦ（ｐ＾ｎ）の乗算回路１０３−１乃至１０３−４を備えており、置換位置信号を順次生成する。乗算回路１０３−１乃至１０３−４に予め設定される係数ａ1乃至ａ4は、多項式ａ4×４＋ａ3×３＋ａ2×２＋ａ1×１＋１が、ＧＦ（ｐ＾ｎ）におけるｄ次の原始既約多項式になるように選択される。
【００４６】
シフトレジスタ１０１−１乃至１０１−４は、入力データを１単位時間遅延させた後、それぞれ後段のシフトレジスタ１０１−２乃至１０１−４、または乗算回路１０３−４に出力する。ＧＦ（ｐ＾ｎ）の加算回路１０２−１乃至１０２−３は、対応する乗算回路１０３−１乃至１０３−３からの入力と、後段の加算回路１０２−２，１０２−３からの入力、または乗算回路１０３−４からの入力を加算し、それぞれ対応するシフトレジスタ１０１−１または加算回路１０２−１，１０２−２に出力する。ＧＦ（ｐ＾ｎ）の乗算回路１０３−１乃至１０３−４は対応するシフトレジスタ１０１−１乃至１０１−４からの入力と、対応する係数ａ1乃至ａ4の積を、それぞれ対応する加算回路１０２−１乃至１０２−３に出力する。シフトレジスタ１０１−１乃至１０１−４には、時刻０においては、値として全て０がセットされているので、その結果、０が出力される。そして、時刻１においては、全てが０ではないように初期値が設定された後、１単位時間毎に置換位置信号が出力される。
【００４７】
ステップＳ２において、Ｍ系列発生回路９０により時刻０乃至（ｐ＾ｎ−１）までのＭ系列が発生され、その発生されたＭ系列が、配列ｍ［ｉ］に格納される。ステップＳ３において、格納された配列ｍ［ｉ］を、ｉ＝０からｉ＝Ｎ×（Ｐ＾ｎ−１）まで順次見ていき、値ｔ（０≦ｔ＜ｐ＾ｎ）が、ｕ（０≦ｕ＜Ｎ）番目に出てきた位置を表す、以下に示す関数を得る。
Ｌ（ｔ，ｕ）    （０≦Ｌ（ｔ，ｕ）＜（ｐ＾ｎ×Ｎ））
【００４８】
そして、最終的にステップＳ４において、このＭ系列から得られた関数Ｌ（ｔ，ｕ）を用いて、目的のｉ番目の入力の置換位置を表す関数π（ｉ）が得られる。以下に、その関数π（ｉ）を示す。
【数１】
0004081875.tif 000002
（０≦ｉ＜（ｐ＾ｎ）×Ｎ）
【００４９】
この式の関数によって得られる置換位置を置換データROM８４に格納することにより実現されるインターリーバは、置換前後の任意の２点間の距離の和が２ｍ／（ｐ＾ｎ）以上になり、クラス数（ｐ＾ｎ）、次元（１＋ｌｏｇp^nＮ）のｋ次均等分布性を非常に小さな基準値Ｔに対して満たすことが証明されている。これにより、条件１と条件２を満足する、サイズ（ｐ＾ｎ×Ｎ）のインターリーバを構成することが可能となる。例として、サイズＮ＝８の、２つのアフィンインターリーバを、ＧＦ（２）の４次のＭ系列で組み合わせる場合を例にあげて説明する。
【００５０】
ステップＳ１における処理として、それぞれのアフィンインターリーバの置換関数が以下のように定められる。
π0（ｉ）＝（３×ｉ）ｍｏｄ ８  （０≦ｉ＜８）
π1（ｉ）＝（５×ｉ）ｍｏｄ ８  （０≦ｉ＜８）
入力信号の位置ｉと置換先の位置πj（ｉ）からは、上の置換関数を用いて算出することにより、以下の関係が得られる。
0004081875.tif 000003
【００５１】
ここで、ＧＦ（２）の４次のＭ系列を図４に示したＭ系列発生回路９０によって発生させた場合、時刻０乃至１５までの出力は以下に示すようになる。
Ｍ系列発生回路の出力 : 0 1 0 0 0 1 0 0 1 1 0 1 0 1 1 1
これから、関数Ｌ（ｕ，ｔ），（０≦ｕ＜２，０≦ｔ＜８）が以下のように定められる。
0004081875.tif 000004
【００５２】
最終的な置換関数π（ｉ）は以下のようになり、その演算結果により得られる置換データROM８４に格納する値は、表５に示すようになる。
【数２】
0004081875.tif 000005
0004081875.tif 000006
【００５３】
次に、図５のフローチャートを参照して、他の置換位置の決定の方法について説明する。この実施の形態では、置換前後の任意の２点間の距離の和が所定値以上であることが保証されているインターリーバの置換位置を、一定の範囲±ａで変動させた結果得られるインターリーブ位置に入力信号をインターリーブするように置換位置データを生成する場合を説明する。
【００５４】
置換前後の任意の２点間の距離の和が所定値以上であることが保証されているインターリーバとして、サイズがＮのアフィンインターリーバを用いる。まずステップＳ１１において、元となるアフィンインターリーバの置換位置の配列ｐ［ｉ］が、次式により設定される。
ｐ［ｉ］＝ａ×ｉ＋ｂｍｏｄ Ｎ
Ｎ＝２ｍ＾２，ａ＝２ｍ±１，ｂは任意，０≦ｉ＜Ｎ
【００５５】
ステップＳ１２において、位置変動の為に使用する配列ｑ［ｉ］が、ｑ［ｉ］＝ｉ（０≦ｉ＜Ｎ）として設定される。次に、ステップＳ１３において、置換位置の変動範囲を定めるパラメータＡが設定され、ステップＳ１４において、パラメータＰＯＳが０に初期化される。
【００５６】
ステップＳ１５において、新たな置換配列を得るためのインデックスとなる配列ｑ［ｉ］が、その結果得られる置換位置が一定の変動範囲Ａでおさまるように入れ替えられる。すなわち、｜ＰＯＳ−ｑ［ｉ］｜≦Ａ、かつ、｜ＰＯＳ＋Ａ−ｑ［ｉ］｜≦Ａとなるｑ［ｉ］のＰＯＳ≦ｉ≦ＰＯＳ＋Ａの内容がランダムに入れ替えられる。
【００５７】
ステップＳ１６において、ＰＯＳの値が１だけインクリメントされ、ステップＳ１７に進む。ステップＳ１７において、ＰＯＳの値が（Ｎ−Ａ）以上になったか否かが判断され、ＮＯと判断された場合、ステップＳ１５に戻り、それ以降の処理が繰り返され、ＹＥＳと判断された場合、ステップＳ１８に進む。
【００５８】
ステップＳ１８の処理において、置換配列ｒ［ｉ］が以下の式により得られ、その得られた置換配列ｒ［ｉ］の内容が、置換データROM８４に格納される。
ｒ［ｉ］＝ｐ［ｑ［ｉ］］  （０≦ｉ＜Ｎ）
【００５９】
このようにして実現されるインターリーバは、置換前後の任意の２点間の距離の和が２ｍ−２Ａ以上になり、かつ、ｋ次均等分布性を満たす。これにより、条件１と条件２を満足する、サイズＮのインターリーバを構成することが可能となる。
【００６０】
ここで、サイズＮ＝８のアフィンインターリーバの置換位置を、シフト範囲を２として変動させる場合を例に挙げて説明する。まず、ステップＳ１１において、アフィンインターリーバの置換関数が以下のように定められる。
ｐ（ｉ）＝（３×ｉ）ｍｏｄ ８  ，（０  ｉ＜８）
入力データの位置ｉと置換先の位置ｐ［ｉ］は、上の置換関数ｐ［ｉ］より、以下のように求まる。
0004081875.tif 000007
【００６１】
次に、ステップＳ１２において、配列ｑ［ｉ］が以下のように設定される。
0004081875.tif 000008
ステップＳ１３において、シフト範囲Ａが２に設定される。ステップＳ１４において、ＰＯＳの値が初期値の０とされる。以下、ステップＳ１５乃至Ｓ１７の処理が繰り返えされる。ここで、ＰＯＳが０乃至５（＝Ｎ−Ａ−１）まで変化する場合の、ステップＳ１５で行われる配列ｑ［ｉ］に対して行われる処理について説明する。
【００６２】
0004081875.tif 000009
｜ＰＯＳ−ｑ［ｉ］｜≦Ａ、かつ、｜ＰＯＳ＋Ａ−ｑ［ｉ］｜≦Ａを満たすｑ［ｉ］，（ＰＯＳ≦ｉ≦ＰＯＳ＋Ａ）、すなわち、｜０−ｑ［ｉ］｜≦２、かつ｜２−ｑ［ｉ］｜≦２を満たすｑ［ｉ］，（０≦ｉ≦２）は、ｑ［０］，ｑ［１］およびｑ［２］の３つであり、これらの内容がランダムに入れ替えられる。
【００６３】
0004081875.tif 000010
｜ＰＯＳ−ｑ［ｉ］｜≦Ａ、かつ、｜ＰＯＳ＋Ａ−ｑ［ｉ］｜≦Ａを満たすｑ［ｉ］，（ＰＯＳ≦ｉ≦ＰＯＳ＋Ａ）、すなわち、｜１−ｑ［ｉ］｜≦２、かつ｜３−ｑ［ｉ］｜≦２を満たすｑ［ｉ］，（１≦ｉ≦３）は、ｑ［１］とｑ［３］の２つであるので、これらの内容がランダムに入れ替えられる。
【００６４】
0004081875.tif 000011
｜ＰＯＳ−ｑ［ｉ］｜≦Ａ、かつ、｜ＰＯＳ＋Ａ−ｑ［ｉ］｜≦Ａを満たすｑ［ｉ］，（ＰＯＳ≦ｉ≦ＰＯＳ＋Ａ）、すなわち、｜２−ｑ［ｉ］｜≦２、かつ｜４−ｑ［ｉ］｜≦２を満たすｑ［ｉ］，（２≦ｉ≦４）は、ｑ［３］とｑ［４］の２つであるので、これらの内容がランダムに入れ替えられる。
【００６５】
0004081875.tif 000012
｜ＰＯＳ−ｑ［ｉ］｜≦Ａ、かつ、｜ＰＯＳ＋Ａ−ｑ［ｉ］｜≦Ａを満たすｑ［ｉ］，（ＰＯＳ≦ｉ≦ＰＯＳ＋Ａ）、すなわち、｜３−ｑ［ｉ］｜≦２、かつ｜５−ｑ［ｉ］｜≦２を満たすｑ［ｉ］，（３≦ｉ≦５）は、ｑ［３］とｑ［５］の２つであるので、これらの内容がランダムに入れ替えられる。
【００６６】
0004081875.tif 000013
｜ＰＯＳ−ｑ［ｉ］｜≦Ａ、かつ、｜ＰＯＳ＋Ａ−ｑ［ｉ］｜≦Ａを満たすｑ［ｉ］，（ＰＯＳ≦ｉ≦ＰＯＳ＋Ａ）、すなわち、｜４−ｑ［ｉ］｜≦２、かつ｜６−ｑ［ｉ］｜≦２を満たすｑ［ｉ］，（４≦ｉ≦６）は、ｑ［５］とｑ［６］の２つであるので、これらの内容がランダムに入れ替えられる。
【００６７】
0004081875.tif 000014
｜ＰＯＳ−ｑ［ｉ］｜≦Ａ、かつ、｜ＰＯＳ＋Ａ−ｑ［ｉ］｜≦Ａを満たすｑ［ｉ］，（ＰＯＳ≦ｉ≦ＰＯＳ＋Ａ）、すなわち、｜５−ｑ［ｉ］｜≦２、かつ｜７−ｑ［ｉ］｜≦２を満たすｑ［ｉ］，（５≦ｉ≦７）は、ｑ［５］とｑ［７］の２つであるので、これらの内容がランダムに入れ替えられる。その結果、以下に示すｑ［ｉ］が得られる。
0004081875.tif 000015
【００６８】
ステップＳ１７において、上述した各処理によって得られたｐ［ｉ］（表６）とｑ［ｉ］（表１４）により、最終的な置換配列ｒ［ｉ］が、ｒ［ｉ］＝ｐ［ｑ［ｉ］］の関係によって得られる。
0004081875.tif 000016
最終的に、このようにして得られた置換配列ｒ［ｉ］の結果（表１５）が置換データROM８４に格納される。
【００６９】
次に、図６のフローチャートを参照して、他の置換位置の決定の仕方について説明する。この実施の形態では、置換前後の任意の２点間の距離の和が所定値以上であることが保証されているインターリーバの置換位置を、所定の範囲で区切り、その内部を任意のアルゴリズムで攪拌した結果得られるインターリーブ位置に入力信号をインターリーブするような置換位置データを生成する場合を説明する。
【００７０】
置換前後の任意の２点間の距離の和が、所定値以上であることが保証されているインターリーバとして、サイズがＮのアフィンインターリーバを用いる。まず、ステップＳ２１において、元となるアフィンインターリーバの置換位置の配列ｐ［ｉ］が、次式に従って算出される。
ｐ［ｉ］＝ａ×ｉ＋ｂｍｏｄ Ｎ
ステップＳ２２において攪拌の為に使用する配列ｑ［ｉ］が、ｑ［ｉ］＝ｉとして設定される。
【００７１】
次に、ステップＳ２３において、攪拌区間を決定するための境界値ａjが、以下の条件を満たすように設定される。
ａj＜ａj+1，ａ0＝０，ａk-1＝Ｎ，０≦ｊ＜ｋ
ステップＳ２４において、所定のｊ（０≦ｊ＜ｋ）に対して、ａj≦ｉ＜ａj+1を満たすｑ［ｉ］同士の内容がランダムに入れ替えられる。最終的にステップＳ２５の処理により、置換配列ｒ［ｉ］が次式に従って得られる。
ｒ［ｉ］＝ｐ［ｑ［ｉ］］
得られた置換配列ｒ［ｉ］（０≦ｉ＜Ｎ）の内容は、置換データROM８４に格納される。
【００７２】
このようにして実現されるインターリーバは、置換前後の任意の２点間の距離の和が２ｍ−ｍａｘ｛ａ(j+1)−ａ(j-1)｝以上になり、かつ、ｋ次均等分布性を満たす。これにより、条件１と条件２を満足するサイズＮのインターリーバを構成することが可能となる。
【００７３】
ここで、サイズＮ＝８のアフィンインターリーバを用いて、置換位置を攪拌する場合を例にあげて説明する。まず、ステップＳ２１において、アフィンインターリーバの置換関数ｐ［ｉ］の内容が、以式に従って定められる。
ｐ［ｉ］＝（３×ｉ）ｍｏｄ ８  ，（０≦ｉ＜８）
入力されたデータの位置ｉと置換先の位置ｐ［ｉ］からは、上の置換関数より、以下のような関係が求められる。
0004081875.tif 000017
【００７４】
次に、ステップＳ２２において、ｑ［ｉ］が以下のように設定される。
0004081875.tif 000018
ステップＳ２３において、攪拌区間を決定するための、境界値が以下のように設定される。
境界値：ａ0＝０，ａ1＝２，ａ2＝４，ａ3＝６，ａ4＝８
【００７５】
次に、ステップＳ２４において、所定のｊ（０≦ｊ＜５）に対して、ａj≦ｉ＜ａj+1を満たすｑ［ｉ］同士の内容がランダムに入れ替えられる。この例の場合、ｑ［０］とｑ［１］，ｑ［２］とｑ［３］，ｑ［４］とｑ［５］、およびｑ［６］とｑ［７］同士の内容がランダムに入れ替えられ、表１８に示すように、新たなｑ［ｉ］が得られる。
0004081875.tif 000019
【００７６】
最後に、ステップＳ２５において、最終的な置換配列ｒ［ｉ］が、上述した処理により得られたｐ［ｉ］（表１６）とｑ［ｉ］（表１８）を用い、ｒ［ｉ］＝ｐ［ｑ［ｉ］］の関係により表１９に示すように得られる。
0004081875.tif 000020
このようにして得られた置換配列ｒ［ｉ］の内容は、置換データROM８４に格納される。
【００７７】
次に、図７と図８のフローチャートを参照して、他の置換位置の決定の仕方について説明する。この実施の形態では、置換前後の任意の２点間の距離の和が所定値以上であることが保証されているインターリーバの置換位置を、一定の範囲±ａで変動させた後、さらに置換位置を、所定範囲で区切り、その内部を任意のアルゴリズムで攪拌した結果得られるインターリーブ位置に入力信号をインターリーブするような置換位置を生成するか、または、置換前後の任意の２点間の距離の和が所定値以上であることが保証されているインターリーバの置換位置を、所定範囲で区切り、その内部を任意のアルゴリズムで攪拌した後、さらに、置換位置を、一定の範囲ａで変動させた結果得られるインターリーブ位置に入力信号をインターリーブするような置換位置データを生成する場合を説明する。すなわち、この例は、図５で説明した実施の形態と図６で説明した実施の形態とを組み合わせたものである。
【００７８】
置換前後の任意の２点間の距離の和が所定値以上であることが保証されているインターリーバとして、サイズがＮのアフィンインターリーバを用いる。ステップＳ３１乃至Ｓ３８の処理は、図５のステップＳ１１乃至Ｓ１８の処理と同様の処理なので、その説明は省略する。
【００７９】
ステップＳ３１乃至Ｓ３８の処理により得られた配列ｒ［ｉ］の内容は、ステップＳ３９（図８）において、配列ｐ［ｉ］にコピーされる。このコピーされた配列ｐ［ｉ］を用いて、ステップＳ４０以降の処理が行われる。ステップＳ４０乃至Ｓ４３の処理は、図６のステップＳ２２乃至Ｓ２５の処理と同様の処理なので、その説明は省略する。
【００８０】
ここで、サイズＮ＝８のアフィンインターリーバの置換位置をシフト範囲を２として変動させた後、さらに、置換位置を所定の範囲で区切り、その内部を攪拌する場合について説明する。まず、ステップＳ３１において、アフィンインターリーバの置換関数ｐ［ｉ］を以下のように定める。
ｐ［ｉ］＝（３×ｉ）ｍｏｄ ８  （０≦ｉ＜８）
入力データの位置ｉと置換先の位置ｐ［ｉ］からは、上の置換関数ｐ［ｉ］より、表２０に示すような関係が求められる。
0004081875.tif 000021
【００８１】
次に、ステップＳ３２において、ｑ［ｉ］が以下のように設定される。
0004081875.tif 000022
【００８２】
ステップＳ３３において、シフト範囲Ａ＝２に設定され、ステップＳ３４において、ＰＯＳ＝０とされる。ステップＳ３５乃至Ｓ３７の処理が、ＰＯＳ＝０乃至５（＝Ｎ−Ａ−１）まで行われることにより得られるｑ［ｉ］の例を、表２２に示す。
0004081875.tif 000023
【００８３】
このようにして得られたｐ［ｉ］（表２０）とｑ［ｉ］（表２２）から、ステップＳ３７において生成されるｒ［ｉ］を以下に示す。
0004081875.tif 000024
【００８４】
ステップＳ３９おいて、ｒ［ｉ］の内容がｐ［ｉ］にコピーされる。その結果を以下に示す。
0004081875.tif 000025
さらにステップＳ４０において、ｑ［ｉ］が以下のように設定される。
0004081875.tif 000026
【００８５】
ステップＳ４１において、攪拌範囲を決定するための、境界値が以下のように決定される。
境界値：ａ0＝０，ａ1＝２，ａ2＝４，ａ3＝６，ａ4＝８
次に、ステップＳ４２において、所定のｊ（０≦ｊ＜５）に対して、ａj≦ｉ＜ａj+1を満たすｑ［ｉ］同士の内容が、ランダムに入れ替えられる。この場合、ｑ［０］とｑ［１］，ｑ［２］とｑ［３］，ｑ［４］とｑ［５］、およびｑ［６］とｑ［７］同士の内容が、それぞれランダムに入れ替えられ、以下に示す関係が得られる。
0004081875.tif 000027
【００８６】
最後にステップＳ４３おいて、最終的な置換配列ｒ［ｉ］が、上述した処理により得られたｐ［ｉ］（表２４）とｑ［ｉ］（表２６）が用いられ、ｒ［ｉ］＝ｐ［ｑ［ｉ］］の関係により得られる。その得られる結果を表２７に示す。
0004081875.tif 000028
このようにして得られた結果は、置換データROM８４に格納される。
【００８７】
図９は、ターボ復号装置１２０の構成を示している。このターボ復号装置１２０は、図１に示したターボ符号化装置６０より出力される符号化データを復号し、復号データを得るものである。このターボ復号装置１２０は、ターボ符号化装置６０より出力される符号化データ（受信データ）の個数に対応した複数のソフトアウトプット復号回路１３１−１乃至１３１−Ｎを有している。ソフトアウトプット復号回路１３１は、MAPデコーダおよびSOVAデコーダ等の符号化側での入力データが０または１である確率を算出する機能を持つ、いわゆるソフトアウトプット復号方式を用いて構成される。また、各ソフトアップ復号回路１３１は、図１のターボ複合化装置１０のインターリーバ２が行う処理とは逆の処理を行うデインターリーバを備えている。
【００８８】
図９に示すターボ復号装置１２０の動作を説明する。受信データ（符号化データ）は、それぞれソフトアウトプット復号回路１３１−１乃至１３１−Ｎに供給される。そして、各ソフトアップ復号回路１３１では、それぞれ符号化側での入力データに対する推定確率値データを互いに利用し、数回および数１０回の反復復号動作が行われる。そして、任意の復号回路（図９ではソフトアウトプット復号回路１３１−１）より最終的な復号データが出力される。
【００８９】
このように、本実施の形態においては、複数の、置換前後の任意の２点間の距離の和が保証された、条件１を満たすインターリーバ、例えば、上述したアフィンインターリーバを乱数系列の発生方法であるＭ系列を用いて組み合わせることにより、または、置換前後の任意の２点間の距離の和が保証された条件１を満たすインターリーバを、特定のランダム化アルゴリズムでランダマイゼーションを行うことによって、下記の２条件、
［条件１］  置換前後の任意の２点間の距離の和が、充分大きくなる
［条件２］  置換位置を数列として見た場合、その数列はｋ次均等分布性と呼ばれる数学的性質を満たす
を満たすインターリーバを構成することを可能とし、高い誤り訂正能力を備えるターボ符号化・復号装置を実現することが可能となる。
【００９０】
なお、上述した実施の形態では、本発明をターボ符号化装置、ターボ復号装置に適用したが、他の符号化装置、復号装置に適用しても良いし、アフィンインターリーバ以外のインターリーバを用いても良い。
【００９１】
また、本明細書中において、上記処理を実行するコンピュータプログラムをユーザに提供する提供媒体には、磁気ディスク、CD-ROMなどの情報記録媒体の他、インターネット、デジタル衛星などのネットワークによる伝送媒体も含まれる。
【００９２】
【発明の効果】
以上の如く請求項１に記載の符号化装置、請求項６に記載の符号化方法、および請求項７に記載の提供媒体によれば、置換前後の任意の２点間の距離の和が所定値以上であるアフィンインターリーバを用いて入力データを置換し、さらにランダマイズすることによりインターリーブを行うようにしたので、置換前後の任意の２点間の距離の和が大きくなり、かつ、置換位置を数列として見た場合に、その数列がｋ次均等分布を満たすようにインターリーブを行うことが可能となる。
【００９３】
請求項９に記載の復号装置、請求項１０に記載の復号方法、および請求項１１に記載の提供媒体によれば、符号化装置が行うインターリーブ処理と逆の処理によりデインターリーブを行うようにしたので、置換前後の任意の２点間の距離の和が大きくなり、かつ、置換位置を数列として見た場合に、その数列がｋ次均等分布を満たすようにインターリーブされた符号化データを復号することが可能となる。
【図面の簡単な説明】
【図１】本発明を適用したターボ符号化装置の一実施の形態の構成を示すブロック図である。
【図２】インターリーブの構成を示すブロック図である。
【図３】置換位置を決定する処理を説明するフローチャートである。
【図４】Ｍ系列発生回路の構成を示すブロック図である。
【図５】置換位置を決定する他の処理を説明するフローチャートである。
【図６】置換位置を決定するさらに他の処理を説明するフローチャートである。
【図７】置換位置を決定するさらに他の処理を説明するフローチャートである。
【図８】図７に続くフローチャートである。
【図９】ターボ復号装置の構成を示すブロック図である。
【図１０】従来のターボ符号化装置の一例の構成を示すブロック図である。
【図１１】畳み込み符号化回路の構成を示すブロック図である。
【図１２】インターリーバの構成を示すブロック図である。
【図１３】置換ROMに記憶されているデータを説明する図である。
【図１４】ターボ符号化装置の入力データと符号化データのビット数の関係を示す図である。
【図１５】ターボ復号装置の構成を示すブロック図である。
【図１６】ターボ復号装置における受信データ、推定確率値データおよび復号データのビット数の関係を示す図である。
【符号の説明】
１  畳み込み符号化回路，  ６０  ターボ符号化装置，  ７１  インターリーバ，  ８１  入力データ保持メモリ，  ８２  データ置換回路，  ８３  出力データ保持メモリ，  ８４  置換データROM，  １２０  ターボ復号装置
【図１】
0004081875.tif 000029
【図２】
0004081875.tif 000030
【図３】
0004081875.tif 000031
【図４】
0004081875.tif 000032
【図５】
0004081875.tif 000033
【図６】
0004081875.tif 000034
【図７】
0004081875.tif 000035
【図８】
0004081875.tif 000036
【図９】
0004081875.tif 000037
【図１０】
0004081875.tif 000038
【図１１】
0004081875.tif 000039
【図１２】
0004081875.tif 000040
【図１３】
0004081875.tif 000041
【図１４】
0004081875.tif 000042
【図１５】
0004081875.tif 000043
【図１６】
0004081875.tif 000044