(57)【特許請求の範囲】
【請求項１】
入力された情報ビット系列を、１以上の整数Ｍを行数とし素数Ｐを列数とする２次元配列として格納するインタリーブメモリと、
前記２次元配列の要素を読み出すアドレスを生成するインタリーブアドレス生成部と、
を備え、
前記インタリーブアドレス生成部は、
前記２次元配列の行番号を変数とする第１のｎ次関数（ｎおよび係数は１以上の整数）を用いて、前記２次元配列の前記行番号の行内における最初に読み出す要素の列番号の値を求める第１の計算と、
前記２次元配列の行番号を変数とし前記２次元配列の前記行番号の行内における前記読み出す要素の列番号同士の間隔の値を計算する第２のｍ次関数（ｍおよび係数は１以上の整数）を用いて、前記行番号の行内における最初に読み出す要素の列番号以外の列番号の値を、前記第１の計算で得られた前記行番号の行内における最初に読み出す要素の列番号から再帰的に求める第２の計算と、
に基づいて、前記アドレスを生成し、
前記インタリーブメモリは、
前記インタリーブアドレス生成部で生成され、前記２次元配列の行番号と、前記２次元配列の行番号に対し前記第１および第２の計算に基づき得られた列番号と、の組合せに対応する前記アドレスによって、前記２次元配列の要素を読み出して、並べ替えられた情報ビット系列を出力する
インタリーブ装置。
【請求項２】
前記インタリーブアドレス生成部は、
前記２次元配列の行番号を示す変数をｋ、前記第１のｎ次関数をＡ（ｋ）、前記第２のｍ次関数をＰ（ｋ）とし、前記２次元配列の前記行番号の行内における読み出す要素の列番号ｍｊを
ｍ０＝［Ａ（ｋ）］（ｍｏｄ  Ｐ）              （ｊ＝０）
ｍｊ＝［ｍｊ-１＋Ｐ（ｋ）］（ｍｏｄ  Ｐ）    （ｊ＝１、・・・、Ｐ−１）
で規定される関係により前記２次元配列の要素を読み出すアドレスを生成する、
請求項１に記載のインタリーブ装置。
【請求項３】
前記インタリーブアドレス生成部は、
前記行番号が奇数の場合に対しては前記行番号を変数ｋとする第１の１次関数Ｓ１（ｋ）＝定数−（ｋ＋１）／２、前記行番号が偶数の場合に対しては第２の１次関数Ｓ２（ｋ）＝定数＋ｋ／２により、前記２次元配列の行単位の読み出し順序を前記行番号の偶奇に従って求める第３の計算、
にさらに基づいて前記アドレスを生成し、
前記インタリーブメモリは、
前記インタリーブアドレス生成部において前記第３の計算に基づき求められ前記行単位の読み出し順序に係る前記２次元配列の行番号と、前記第１および第２の計算に基づき求められた前記読み出す要素の列番号と、の組合せに対応する前記アドレスによって、前記２次元配列の要素を読み出して、並べ替えられた情報ビット系列を出力する、
請求項１又は請求項２に記載のインタリーブ装置。
【請求項４】
前記２次元配列から要素を読み出す前記アドレスが有効か無効かを判断する出力有効信号生成部をさらに備え、
前記インタリーブメモリは、
情報ビット長Ｎが２次元配列の要素数に満たない場合、２次元配列の要素数と情報ビット長Ｎの差分の論理０のビットを情報ビット系列の後に補い、所定の大きさの２次元配列として格納し、
前記出力有効信号生成部は、
前記論理０のビットを読み出すアドレスに対して無効であるとの信号を出力する
請求項１乃至請求項３のいずれか１つに記載のインタリーブ装置。
【請求項５】
前記情報ビット長Ｎに基づいて２次元配列の行数を生成する行数生成部をさらに備え、
前記行数生成部は、
前記情報ビット長Ｎを前記素数Ｐで除算した剰余が、０である場合には前記除算の商の値を、前記剰余が０でない場合は前記商の値に１を加算した値を、前記２次元配列の行数Ｍとし、
前記インタリーブメモリは、前記生成された行数Ｍと前記素数Ｐを列数とする２次元配列として情報ビット系列を格納する、
請求項１乃至請求項４のいずれか１つに記載のインタリーブ装置。
【請求項６】
入力された情報ビット系列を、１以上の整数Ｍを行数とし素数Ｐを列数とする２次元配列としてインタリーブメモリに格納する書き込みステップと、
前記２次元配列の要素を読み出すアドレスを生成するインタリーブアドレス生成ステップと、
前記インタリーブ生成ステップで生成された前記アドレスによって、前記２次元配列の要素を読み出して、並べ替えられた情報ビット系列を前記インタリーブメモリから出力する出力ステップと、
を有し、
前記前記インタリーブアドレス生成ステップは、
前記２次元配列の行番号を変数とする第１のｎ次関数（ｎおよび係数は１以上の整数）を用いて、前記２次元配列の前記行番号の行内における最初に読み出す要素の列番号の値を求める第１の計算と、
前記２次元配列の行番号を変数とし前記２次元配列の前記行番号の行内における前記読み出す要素の列番号同士の間隔の値を計算する第２のｍ次関数（ｍおよび係数は１以上の整数）を用いて、前記行番号の行内における最初に読み出す要素の列番号以外の列番号の値を、前記第１の計算で得られた前記行番号の行内における最初に読み出す要素の列番号から再帰的に求める第２の計算と、
に基づいて、前記アドレスを生成し、
前記出力ステップは、
前記インタリーブ生成ステップで生成され、前記２次元配列の行番号と、前記２次元配列の行番号に対し前記第１および第２の計算に基づき得られた列番号と、の組合せに対応する前記アドレスによって、前記２次元配列の要素を読み出して、並べ替えられた情報ビット系列を出力する、
インタリーブ方法。
【請求項７】
前記行数Ｍに対応し前記行番号をカウントするＭ進の行番号カウンタと、
前記列数Ｐに対応し前記列番号をカウントするＰ進の列番号カウンタと、
前記行番号カウンタの値を前記２次元配列の行アドレスに変換する行アドレス変換部と、
前記第１および第２の計算に基づき、前記行番号カウンタの値および前記列番号カウンタの値を列アドレスに変換する列アドレス変換部と、
をさらに備え、
前記インタリーブアドレス生成部は、
前記行アドレス変換部で生成された行アドレスと、前記列アドレス変換部で生成された列アドレスと、の組合せに対応する前記アドレスを生成する、
請求項１に記載のインタリーブ装置。
【請求項８】
前記行数Ｍは、
２のべき乗の値を有し、
前記２次元配列の要素を読み出す前記アドレスは、
前記行アドレス変換部で生成された行アドレスＡと、前記列アドレス変換部で生成された列アドレスＢとから、Ｍ×Ａ＋Ｂにより生成される
請求項７に記載のインタリーブ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、インタリーブ装置およびインタリーブ方法に関するものである。
【背景技術】
【０００２】
誤り訂正符号の一種であるターボ符号の符号化では、情報ビット系列を符号化したパリティビット系列と、インタリーブした情報ビット系列を符号化したパリティビット系列とを、単純に多重化したビット系列、または、それぞれのパリティビット系列を符号化レートに応じてパンクチャリング（間引き）した後に多重化したビット系列を、元の情報ビット系列と多重化して通信路に送信している。インタリーブによる情報ビット系列のランダム性の向上は、ターボ符号の誤り訂正性能を改善させる。このため、ターボ符号化に用いるインタリーブ方法が提案されている。
【０００３】
インタリーブの従来例として、予め素数の組Ｐｌをテーブルに格納しておき、情報ビット系列の情報ビット長に応じて、テーブル内の素数の組Ｐｌから列の長さを指定する素数を選択して情報ビット系列を２次元配列に並べ替え、２次元配列の各行の要素を素数Ｐｌのすべての取り得る指数の合同の根から選択されたαｊを用いて並べ替える方法が開示されている。（例えば、下記特許文献１）。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２００２−５４２６４６号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記の特許文献１に記載される従来技術では、インタリーブの対象となる情報ビット系列の情報ビット長に応じて列数Ｎｃ（ｌ）の値を変更する構成であることから、情報ビット系列を２次元配列に並べ替える際に列数を指定するための素数の組Ｐｌのテーブルが必要となり、また、２次元配列の行の要素の並べ替えにおいても、素数Ｐｌについての原始根αｐが格納されたテーブルを設けておく必要がある。
【０００６】
このため、インタリーブにおける並べ替えの順序を規定するための情報を格納するテーブルが必要となり、回路規模が増大する。また、テーブルに格納された情報を引き出して並べ替えを行うために演算回路の構成が複雑化するといった問題点があった。
【０００７】
この発明は、上記の課題を解決するものであり、並べ替えを規定するための情報を格納するテーブルを削減し、回路規模の増大を抑えつつ、並べ替え後の情報ビット系列のランダム性を高めたインタリーブ装置を提供するものである。
【課題を解決するための手段】
【０００８】
本発明にかかるインタリーブ装置は、入力された情報ビット系列を、１以上の整数Ｍを行数とし素数Ｐを列数とする２次元配列として格納するインタリーブメモリと、
前記２次元配列の要素を読み出すアドレスを生成するインタリーブアドレス生成部と、を備え、
前記インタリーブアドレス生成部は、
前記２次元配列の行番号を変数とする第１のｎ次関数（ｎおよび係数は１以上の整数）を用いて、前記２次元配列の前記行番号の行内における最初に読み出す要素の列番号の値を求める第１の計算と、
前記２次元配列の行番号を変数とし前記２次元配列の前記行番号の行内における前記読み出す要素の列番号同士の間隔の値を計算する第２のｍ次関数（ｍおよび係数は１以上の整数）を用いて、前記行番号の行内における最初に読み出す要素の列番号以外の列番号の値を、前記第１の計算で得られた前記行番号の行内における最初に読み出す要素の列番号から再帰的に求める第２の計算と、
に基づいて、前記アドレスを生成し、
前記インタリーブメモリは、
前記インタリーブアドレス生成部で生成され、前記２次元配列の行番号と、前記２次元配列の行番号に対し前記第１および第２の計算に基づき得られた列番号と、の組合せに対応する前記アドレスによって、前記２次元配列の要素を読み出して、並べ替えられた情報ビット系列を出力する。
【発明の効果】
【０００９】
本発明によれば、回路規模を削減しつつ、ランダム性の高いインタリーブを実現することができる。
【図面の簡単な説明】
【００１０】
【図１】この発明の実施の形態１にかかる情報ビット系列を２次元配列に並べ替える手順の一例を示す図である。
【図２】この発明の実施の形態１にかかる２次元配列の要素を並べ替えの一例を示す図である。
【図３】この発明の実施の形態１にかかるインタリーブ装置を適用した通信装置の一例を示す図である。
【図４】この発明の実施の形態１にかかるインタリーブ装置の構成例を示す図である。
【図５】この発明の実施の形態１にかかるインタリーブ装置の動作についてのフローチャートの一例である。
【図６】この発明の実施の形態２にかかる２次元配列の要素の並べ替えの一例を示す図である。
【図７】この発明の実施の形態３にかかるインタリーブ装置の構成例を示す図である。
【発明を実施するための形態】
【００１１】
実施の形態１．
以下に、本実施の形態を図面に基づいて詳細に説明する。なお、以下に説明する実施の形態は、それぞれが本発明を具体化する際の一形態であって、本発明をその範囲内に限定するためのものではない。
【００１２】
図１は、本実施の形態にかかる情報ビット系列を２次元配列に並べ替える手順の一例を示す図である。本実施の形態では、インタリーブを行う最大の情報ビット長を、一例として、２１４４（３２×６７）ビットとし、２次元配列の大きさを行数Ｍ＝３２、列数Ｐ＝６７とする。ここで、列数Ｐは素数であり、予め決められている。また、入力する情報ビット長Ｎ（≦２１４４）の情報ビット系列の要素となる各ビットをＸ１，Ｘ２，Ｘ３，・・・，ＸＮとする。ここで、Ｍ×Ｐ≧ＮかつＭ＜Ｎを満たしているものとする。情報ビット長Ｎが２次元配列の要素数である２１４４ビットに満たない場合は、２１４４−Ｎ個の論理０のビットを情報ビット系列の後に付加して全体として２１４４ビットとなるようにする。
【００１３】
次に、情報ビット系列の先頭から順に３２ビットずつ６７個のブロックに区切り、後述するインタリーブメモリにデータライト（書き込み）を行う。これにより、インタリーブメモリ内には情報ビット系列は図１に示すような３２行６７列の２次元配列として格納される。２次元配列の各行には行番号ｋ（ｋ＝０〜３１）が付加される。また、各列についても列番号ｐ（ｐ＝０〜６６）が付加される。２次元配列の各要素は行番号および列番号によって識別される。なお、２次元配列とは、格納される情報ビット系列がメモリ内において２次元で記録されていなければならないということでは無く、格納される要素が行番号と列番号の２つパラメータで指定されていればよい。
【００１４】
次に、各行の要素の順序を並べ替える方法について説明する。ここで、行番号ｋを関数とする各行の最初の要素の列番号を指定する関数Ａ（ｋ）と要素間の間隔を指定する関数Ｐ（ｋ）を用いる。本実施の形態では一例として、Ａ（ｋ）＝（２ｋ＋１）、Ｐ（ｋ）＝（２ｋ＋１）とする。
【００１５】
並べ替え後の２次元配列における行番号ｋの行の列番号０、すなわち行の最初の要素ｍ０は、上記の行番号ｋの関数であるＡ（ｋ）に基づき、並べ替え前の列番号２ｋ＋１の要素により並べ替えられる。すなわち、ｍ０＝（２ｋ＋１）となる。次に、同行の並べ替え後の列番号１の要素ｍ１は、列番号の要素ｍ０となった並べ替え前の行の要素の列番号２ｋ＋１に、上記の行番号ｋの関数であるＰ（ｋ）に基づき、２ｋ＋１を加えた値、すなわち、並べ替え前の列番号２×（２ｋ＋１）の要素により並べ替えられる。ただし、並べ替え前の行の要素の列番号２×（２ｋ＋１）が、列数である６７以上となる場合は、その値を６７により除算した剰余が要素ｍ１となる並べ替え前の要素の列番号となる。すなわち、ｍ１＝［ｍ０＋（２ｋ＋１）］（ｍｏｄ  ６７）と表すことができる。これ以降の列番号の要素についても同様に２ｋ＋１（＝Ｐ（ｋ））を加算していくことによって指定される。これらをまとめると、素数Ｐを列数とする２次元配列の並べ替え後の行番号ｋの列番号ｍｊとなる要素は、
ｍ０＝［Ａ（ｋ）］（ｍｏｄ  Ｐ）（ｊ＝０）
ｍｊ＝［ｍｊ−１＋Ｐ（ｋ）］（ｍｏｄ  Ｐ）（ｊ＝１，・・・，Ｐ−１）
によって指定される。
【００１６】
図２は本実施の形態にかかる２次元配列の要素の並べ替えの一例を示す図である。上段の図は並べ替え前の２次元配列、下段の図は並べ替え後の２次元配列を示す。上記と同じ行番号ｋの関数Ａ（ｋ）、Ｐ（ｋ）を用いると、行番号０の行では、Ａ（ｋ）とＰ（ｋ）はともに１である。したがって、並べ替え後の２次元配列の列番号０となる要素は並べ替え前の列番号１の要素となり、次の要素は列番号を１つ大きくした要素によって並べ替えられることとなる。並べ替え後の列番号６６となる要素は並べ替え前の列番号６７となる要素であるが、列番号の要素は０から６６までであり、そのような要素は無いため列数６７で除算した剰余に対応する列番号の要素により並べ替えられる。この場合は剰余０であるので、並べ替え後の列番号６６となる要素は並べ替え前の列番号０の要素である。この結果、行番号０の行の要素はＸ１，Ｘ３３，Ｘ６５，・・・，Ｘ２０８１，Ｘ２１１３からＸ３３，Ｘ６５，Ｘ９７，・・・，Ｘ２１１３，Ｘ１に並べ替えられる。同様に行番号１の行ではＡ（ｋ）とＰ（ｋ）は３となる。したがって、並べ替え後の２次元配列の列番号０となる要素は並べ替え前の列番号３の要素となり、次の要素は列番号を３つさらに大きくした要素によって並べ替えられることとなる。この結果、行番号１の行の要素はＸ２，Ｘ３４，Ｘ６６，・・・，Ｘ２０８２，Ｘ２１１４からＸ９８，Ｘ１９４，Ｘ２９０，・・・，Ｘ２０５０，Ｘ２に並べ替えられる。
【００１７】
上述の並べ替えを各行において実行することにより、並べ替え後の２次元配列は図２における下段の配列となる。なお、本実施の形態においては、行番号ｋの関数として同一のＡ（ｋ）＝２ｋ＋１、Ｐ（ｋ）＝２ｋ＋１を導入したが、例えば、Ａ（ｋ）とＰ（ｋ）は任意の係数ａ，ｂによりａｋ＋ｂ（ａ＞０，ｂ＞０，ａ，ｂは整数）で定義される異なる関数であってもよい。また例えば、Ａ（ｋ）とＰ（ｋ）は行番号ｋの一次関数に限らず、ｎ次関数（ｎ≧２）とすることも可能である。
【００１８】
なお、行番号ｋの関数の係数の選択によっては、ある行における行の要素の並べ替える規則と、別の行における行の要素の並べ替える規則が同じになることが起こり得る。例えば、行番号０と行番号が列数Ｐの倍数となる場合である。これについては、例えば、最大の行番号を列数Ｐ未満となるように設定するか、または、行番号が列数Ｐの倍数となる行について別の関数によって並べ替えることにより、このような場合を回避することが可能である。ただし、並べ替える規則が同じとなる行が存在しても、これら以外の行では異なる規則によって並べ替えがなされているので、ランダム性のよいインタリーブを実現できる。すなわち、必ずしも行の要素を並べ替える規則がすべての行で互いに異なっていなければならないというわけではない。但し、任意の行においてＰ（ｋ）の値が列数Ｐの倍数となる場合には、ｍｊの値が一定値となり列番号の指定ができなくなるため、このような係数の選択を避ける必要がある。
【００１９】
また、行番号ｋを関数とする各行の最初の要素の列番号を定める関数Ａ（ｋ）と要素間の間隔を定める関数Ｐ（ｋ）をそれぞれ１つとしていたが、複数用いることとしてもよい。例えば、本実施の形態における３２行の２次元配列の場合には、行番号０から１５まではＡ１（ｋ）＝ａ１ｋ＋ｂ１（ａ１＞０，ｂ１＞０，ａ１，ｂ１は整数）とし、行番号１６から３１まではＡ１（ｋ）と異なるＡ２（ｋ）＝ａ２ｋ＋ｂ２（ａ２＞０，ｂ２＞０，ａ２，ｂ２は整数）による並べ替えを行う。Ｐ（ｋ）についても同様にすることができる。これにより、各行の並べ替える規則を様々に変化させることができ、インタリーブ後の情報ビット系列にランダム性を与えることができる。
【００２０】
次に、並べ替えられた２次元配列の各要素をデータリード（読み出し）する順序について説明する。読み出しは図２の下段の図に示す矢印の方向に要素の読み出しが行われる。すなわち、行番号０の行から開始し、行番号０の行の要素について読み出しが完了すると、次の行番号１の行の要素について読み出しをする。このように順番に行番号０から行番号３１の行まで読み出しを行う。各行の要素の読み出しは、列番号０の要素から読み出しを開始し、順番に列番号６６の要素まで読み出しを行う。このときに、情報ビット長が２１４４よりも短い場合に０を最初に強制挿入した部分については、無効にして情報ビット系列として伝送されないようにする。
【００２１】
以上の手順によりインタリーブが終了し、入力された情報ビット系列に対し、並べ替えられたランダム性のよい情報ビット系列が出力される。
【００２２】
次に、本実施の形態にかかるインタリーブを実行するインタリーブ装置を適用した例について説明する。図３は本実施の形態にかかるインタリーブ装置を適用した通信装置の一例を示す図である。本実施の形態において、誤り訂正符号としてターボ符号を用い、図はターボ符号化器１０３を備える送信装置１０１、ターボ符号の復号器１０４を備える受信装置１０２を示し、情報ビット系列を無線通信により伝送する。送信装置１０１において情報ビット系列はターボ符号化器１０３によって符号化される。インタリーブ装置１０５は情報ビット系列をインタリーブしたパリティビット系列を生成する。一方、受信装置１０２におけるインタリーブ装置１０６はインタリーブ順に入力された符号化系列に対応する受信系列を復号のために、受信データの読み出す順序を並び替える時と、一度復号した復号結果をターボ符号の繰り返し処理の次の復号に使用するために、メモリに書き込む時に使用される。なお、ここでの通信装置は一例として送信装置１０１、または、受信装置１０２として図示しているが、送受信を１つの装置で行うもであってもよい。また、一例としてターボ符号の符号化器、復号器としたが、これ以外にその他の誤り訂正符号を用いる通信装置内に設置されるインタリーブ装置に本実施の形態を適用することも可能である。また、本実施の形態は図示するような無線通信以外に、光ファイバ等の有線通信にも適用可能である。
【００２３】
次に、本実施の形態にかかるインタリーブを実行するインタリーブ装置の動作例について説明する。図４は本実施の形態にかかるインタリーブ装置の構成例を示す図である。図示するインタリーブアドレス生成にかかる各機能部は、例えば、ソフトウェアにより実行するか、または、ハードウェア回路によって実現してもよい。また、図５は本実施の形態にかかるインタリーブ装置の動作についてのフローチャートの一例である。以下に、情報ビット系列を先頭から順にアドレス０からインタリーブメモリに記憶したところから、前述の並べ替え方法によりインタリーブメモリの読み出しアドレス、すなわちインタリーブアドレスを生成してインタリーブされた情報ビット系列を出力するまでのインタリーブ装置の動作を示す。
【００２４】
図４にかかるインタリーブ装置は、列番号をカウントするためにＰ進カウンタにより構成される列番号カウンタ１、行番号をカウントするためのＭ進カウンタにより構成されている行番号カウンタ２、行番号カウンタ２の出力値を行アドレスに変換する行アドレス変換部３、列番号カウンタ１および行番号カウンタ２の出力値を列アドレスに変換するための列アドレス変換部４、行アドレスと列アドレスからインタリーブアドレスを生成するためのインタリーブアドレス生成部５、インタリーブの対象となる情報ビット系列を格納するためのメモリであるインタリーブメモリ６、インタリーブメモリ６から出力するデータについて有効、無効の信号を生成するための出力有効信号生成部７によって構成されている。なお、インタリーブアドレスとは２次元配列の順序を並べ替えて読み出すための２次元配列の要素を指定するアドレスである。
【００２５】
次に動作について説明する。まず、インタリーブの対象となる情報ビット系列がインタリーブメモリ６に入力されたことを検出してインタリーブの実行を開始するスタート信号が入力される（ステップＳ１）。次に、スタート信号入力時には列番号カウンタ１の値が０、行番号カウンタ２の値が０に初期化される。（ステップＳ２）。次に、列アドレス変換部４は行番号ｋを変数とする関数に基づいて、列番号カウンタ１と行番号カウンタ２の値を、列アドレスに変換する。本実施の形態ではＡ（ｋ）＝（２ｋ＋１）において行番号ｋ＝０であるので、列アドレス変換部４は列番号０、行番号０の要素の列アドレスとして１を出力する。また、行アドレス変換部３は、行番号カウンタ２の値をそのまま行アドレスとして出力する（ステップＳ３）。この場合、行番号ｋ＝０であるので行アドレスの値は０である。
【００２６】
列番号カウンタ１は列数Ｐに対応するＰ進カウンタにより構成されており、カウント値を０からＰ−１までカウントする（ステップＳ４）。Ｐ−１まではクロックが入力される毎に１つずつカウントアップする（ステップＳ５）。カウントアップした列番号カウンタ値と行番号カウンタ値から列アドレス、行アドレスに変換される（ステップＳ３）。列アドレス変換部４は、列番号カウンタ値が１ずつカウントアップする度に、行番号カウンタ２の値ｋをＰ（ｋ）（＝２ｋ＋１）に代入した値を１つ前に指定した要素の列番号に加算して、その値を列アドレスとして出力する。ただし、列アドレスの値がＰ以上になった場合には、Ｐで除算した剰余を列アドレスとして出力する。または、列アドレスの値が２Ｐ以上にならないことが保証されている場合には、列アドレスの値からPを減算した値を列アドレスとしてもよい。ステップＳ３からステップＳ５を繰り返すフローでは、行番号カウンタ２はカウントアップしないので、行番号のカウント値をそのまま行アドレスとして出力する。列アドレス、行アドレスを生成した後、カウント値がＰ−１となっている場合には（ステップＳ４）、カウンタ値をリセットして０にする（ステップＳ６）。
【００２７】
行番号カウンタ２はＭ進カウンタにより構成されており、カウント値を０からＭ−１までカウントする（ステップＳ７）。Ｍ−１までは、列番号カウンタ１の値がＰ−１から０に変化するときに、０からＭ−１まで１つずつカウントアップする（ステップＳ８）。カウントアップした列番号と行番号が列アドレス、行アドレスに変換される（ステップＳ３）。このとき、列アドレス変換部４は行番号カウンタの値ｋをＡ（ｋ）（＝２ｋ＋１）に代入した値を列アドレスとして出力する。行アドレス変換部３はカウントアップした行番号カウンタ２の値を行アドレスにする。その後は、列番号カウンタ１の値がＰ−１になるまでステップＳ３からステップＳ５のフローを繰り返す。
【００２８】
列アドレス、行アドレスを生成した後に、行番号カウンタ２の値がＭ−１となっている場合には（ステップＳ７）、列番号カウンタ１、行番号カウンタ２のカウントアップ動作を終了する。この場合は、Ｍ行Ｐ列のすべての要素の列アドレス、行アドレスが出力されたことになる。
【００２９】
インタリーブアドレス生成部５では、ステップＳ３で生成されて逐次送られてくる、行アドレス変換部３の出力である行アドレスと列アドレス変換部４の出力である列アドレスからインタリーブアドレスを生成する（ステップＳ９）。２次元配列の行数をＭ、行アドレス変換部３の出力をＡ、列アドレス変換部４の出力をＢとしたときにＭ×Ａ＋Ｂを計算して、インタリーブメモリ６の読み出しアドレスとする。
【００３０】
インタリーブメモリ６ではインタリーブアドレスにより指定されたアドレスのデータを読み出す（ステップＳ１０）。このとき、指定されたアドレスのデータがインタリーブの対象となる情報ビット長Ｎであるか否かを判断する（ステップＳ１１）。インタリーブアドレスとしてＮ以上の値が読み出された場合は、出力有効信号生成部７において、出力データは無効であることを示す信号を出力する。情報ビット長Ｎ以上のアドレスに指定されるデータは前述の情報ビット列の後に付加された論理０のビット列のことを指すので、出力有効信号によって無効とすることで、情報ビット系列として伝送されないようにする。一方、指定されたアドレスのデータがインタリーブの対象となる情報ビット長Ｎに対してＮ未満の値が指定されたときには、出力有効信号生成部７において、出力データは有効であることを示す信号を出力する。なお、出力有効信号生成部７はインタリーブメモリ６から読み出される出力が無効であるときにのみ無効であるとの信号を出力し、出力が有効であるときは何も信号を出力しないとしてもよい。
【００３１】
これにより、インタリーブアドレスによって指定される２次元配列の要素の行番号、列番号に基づいて並び替えがなされ、例えば、図２の下段の矢印で示されるような順序で読み出されたデータが出力される。但し、出力される情報ビット系列としては、出力有効信号生成部７によって有効と判断された要素のみが通信路に伝送される。このようにして、並べ替えられた情報ビット系列を生成することができる。
【００３２】
以上の構成により、行の要素を順序については、行番号ｋ（ｋ＝０，１，・・・，Ｍ−１）に対して、行番号ｋを変数とする関数である行の最初の要素の列番号を定める関数Ａ（ｋ）と要素間の間隔を定める関数Ｐ（ｋ）を導入することにより、行によって異なる規則で行の要素の並べ替えがなされ、ランダム性のよいインタリーブを実現することができる。また、行番号ｋを変数とする関数を用いることで、テーブル引きなどにより情報を取り出して、並べ替えを規定するパラメータを生成する演算がなくなり、演算回路を簡易な構成で実現できる。さらに、これらの情報を予め格納するテーブルを削減することにより回路規模の削減をすることが可能となる。
【００３３】
また、行によって要素の並べ替えの規則が異なるために、通常のブロックインタリーブで発生するような、特定のビット数の間隔がインタリーブ前とインタリーブ後で変わらないといった可能性が少なくなる。このため本実施の形態にかかるインタリーブ装置をターボ符号に適用した場合には、ランダム性の向上によりエラーフロアが発生する確率を小さく抑えることが可能となる。
【００３４】
なお、さらに２次元配列を構成する際に、行数を２のべきにすることにより、インタリーブアドレス生成でインタリーブメモリの読み出しアドレスを計算する際に、乗算器と加算器が不要となり、行アドレス変換部３と列アドレス変換部４の出力を、並べて出力することによりインタリーブアドレスを生成できるようになるために回路構成が容易になる。
【００３５】
なお、説明の便宜上、配列の要素を指定するために２つのパラメータを名目上、行番号と列番号と称している。すなわち、行と列の名称の表現を入れ替えて本実施の形態を適用してもよい。例えば、行数を素数として決めておき、情報ビット系列を６７行３２列の２次元配列として格納し（但し、格納する順序は図１に示す列方向ではなく行方向に格納する。）、列番号を変数とする関数によって列の要素を並べ替える（但し、読み出す方向は列方向）という形式のようにすることも可能である。
【００３６】
実施の形態２．
実施の形態１においては、各行の要素の並べ替えを行うものであったが、本実施の形態では、さらに行の順序について並べ替えを行う。
【００３７】
図６は、本実施の形態にかかる２次元配列の各行の並べ替えの例を示した図である。最初の情報ビットの２次元配列の構成については実施の形態１で記載した方法と同じ方法で２次元配列が構成される。
【００３８】
２次元配列として格納された情報ビット系列に対して、行の順序の並べ替えを行う。例えば、図６で示した例では、行番号０に１７行目のデータを並べ、以下、行番号ｋには、ｋが奇数のときは、１７−（ｋ＋１）／２行目のデータを並べ、ｋが偶数の時には１７＋ｋ／２行目のデータを並べることにより、行の入れ替え操作を行う。
【００３９】
行の順序の並べ替え操作を行った結果に対して、実施の形態１において記載した方法と同じ方法で、行番号０から行番号３１まで順に、各行の要素について並べ替え操作を行う。
【００４０】
上記の行の並べ替えと各行の要素の並べ替えを行った後の２次元配列は図２における下段の２次元配列で示される。インタリーブされた情報ビット系列を出力するために、矢印で示される順序にて、実施の形態１と同様にして行番号０から３１まで先頭から順にデータを読み出す。このときに、実施の形態１と同様に情報ビット長が２１４４よりも短い場合に論理０のビットを最初に挿入した部分については出力を行わないようにする。
【００４１】
以上の手順によりインタリーブが終了し、入力された情報ビット系列に対し、並べ替えられたランダム性のよい情報ビット系列が出力される。
【００４２】
本実施の形態は実施の形態１の図４に示すインタリーブ装置の構成例と同様の構成により実現することができる。実施の形態１とは行アドレス変換部３の動作が異なり、その他の機能の動作は同じである。行アドレス変換部３以外の動作の説明は省略する。
【００４３】
行アドレス変換部３では、行番号カウンタ２の出力を受けると、その出力値が奇数である場合には行番号ｋを変数とする関数Ｓ１（ｋ）＝１６−（ｋ＋１）／２、偶数である場合には、行番号ｋを変数とする関数Ｓ２（ｋ）＝１６＋ｋ／２によって行番号カウンタ２の値を行アドレスに変換して出力する。インタリーブアドレス生成部５ではこの行アドレスと別に入力される列アドレスから、インタリーブアドレスを生成し、各行の並べ替えがなされた情報ビット系列が出力されることとなる。
【００４４】
以上の構成によれば、行の要素の順序の並べ替えに加え、行の順序の並べ替えまで行うことによって、出力される情報ビット系列のランダム性を向上させることができる。また、インタリーブ前の順序における最後の行の要素が、インタリーブ後の順序では、最後の行にならないように並べることができる。すなわち、インタリーブ前の順序で情報ビット系列の最後の方の情報ビット系列がインタリーブ後の順序でも最後の方になることを避けることができる。これによって、例えば、誤り訂正符号としてターボ符号を用いた場合には符号化ビット系列の重みを大きくすることができ、ターボ符号におけるエラーフロアが発生する確率を小さく抑えることができる効果がある。
【００４５】
実施の形態３．
実施の形態１においては、予め２次元配列の行数と列数を予め決めていたが、本実施の形態では、行数を情報ビット長に応じて可変にする。
【００４６】
情報ビット系列が入力されると、情報ビット長Ｎを予め決められた列数Ｐで除算する。列数Ｐは実施の形態１と同様に素数である。次に、その商の剰余が０である場合には商の値を行数Ｍとする。一方、剰余が０でない場合は商の値に１を加算した値を行数Ｍとする。ただし、この場合は実施の形態１と同様にＭ×Ｐ−Ｎ分の論理０のビットを情報ビット系列の後に付加する。
【００４７】
次に、先頭から順にＭビットずつＰ個のブロックに区切り、インタリーブメモリ６に各ブロックについてデータの書き込みを行う。これにより、情報ビット系列はＭ行Ｐ列の２次元配列として格納される。
【００４８】
図７は本実施の形態にかかるインタリーブ装置の構成例を示す図である。実施の形態１と同一の機能を有する構成は同一の符号を付してその説明を省略する。実施の形態１と異なるのは行数生成部８が設けられていることである。行数生成部８はインタリーブメモリに入力された情報ビット系列の情報ビット長から、前述の方法によって行数Ｍの算出を行う。さらに、行番号カウンタ２、行アドレス変換部３、インタリーブアドレス生成部５、インタリーブメモリ６に行数Ｍについての情報を出力する。これにより、インタリーブメモリ６は情報ビット系列を格納するＭ行Ｐ列の２次元配列を指定できる。また、行番号カウンタ２は行番号カウンタ値の上限を取得できる。また、行アドレス変換部３は実施の形態２のような行の並べ替えをする場合に、行数を把握することで行番号を変数とする関数を指定することができる。また、インタリーブアドレス生成部５はインタリーブアドレスの計算をすることができる。
【００４９】
以上の構成によれば、様々な情報ビット長の情報ビット系列にも対応しつつも、行数を固定して情報ビット系列の後に論理０のビットを付加する場合に比べて２次元配列のサイズを小さくすることが可能となり、並べ替えの演算の負荷を低減することができ、回路規模の削減をすることができる。
【００５０】
以上の実施の形態を組み合わせることによって、さらに新しい実施の形態とすることができる。また、以上の実施の形態はターボ符号の符号化、復号化のインタリーブに好適であるが、それ以外の誤り訂正符号を用いる通信装置においてインタリーブする場合にも適用することができる。
【符号の説明】
【００５１】
１    列番号カウンタ
２    行番号カウンタ
３    行アドレス変換部
４    列アドレス変換部
５    インタリーブアドレス生成部
６    インタリーブメモリ
７    出力有効信号生成部
８    行数生成部
【図１】
0005510189.tif 000002
【図２】
0005510189.tif 000003
【図３】
0005510189.tif 000004
【図４】
0005510189.tif 000005
【図５】
0005510189.tif 000006
【図６】
0005510189.tif 000007
【図７】
0005510189.tif 000008