(57)【要約】【課題】比較減算要素を削減することにより規模の大きいモジュロの演算回路を不要とし、且つ、記憶すべきＲＯＭサイズも減少させることにより、インタリーブ回路及びデインタリーブ回路における回路規模を縮小させる。【解決手段】序数に第１の定数を乗じて得た第１の結果と前記序数の二乗に第２の定数を乗じて得た結果との和を所定の除数で除して得た剰余をアドレスとして生成するアドレス生成装置が、前記第１の結果を前記除数で除することにより第１中間剰余を得る第１演算手段と、前記序数の所定の関数を前記除数で除することにより第２中間剰余を得る第２演算手段と、前記第１中間剰余と前記第２中間剰余との和を前記除数で除して最終剰余を得る第３演算手段と、を備え、前記最終除数を前記アドレスとする。【選択図】図６
2015037277.tif 000002
【特許請求の範囲】
【請求項１】
序数に第１の定数を乗じて得た第１の結果と前記序数の二乗に第２の定数を乗じて得た結果との和を所定の除数で除して得た剰余をアドレスとして生成するアドレス生成装置であって、
前記第１の結果を前記除数で除することにより第１中間剰余を得る第１演算手段と、
前記序数の所定の関数を前記除数で除することにより第２中間剰余を得る第２演算手段と、
前記第１中間剰余と前記第２中間剰余との和を前記除数で除して最終剰余を得る第３演算手段と、
を備え、
前記最終剰余を前記アドレスとすることを特徴とするアドレス生成装置。
【請求項２】
請求項１に記載のアドレス生成装置であって、
前記第２演算手段は、
前記序数を、前記第２の定数と前記除数により定まる所定の数値により除することにより第３中間剰余を得る手段と、
前記第３中間剰余と前記第２中間剰余との対応関係を保持した記憶手段を備え、
前記第３中間剰余をキーとして前記記憶手段を参照することにより前記第２中間剰余を得ることを特徴とするアドレス生成装置。
【請求項３】
請求項２に記載のアドレス生成装置であって、
前記第３中間剰余を得る手段は、
前記序数をカウントして、カウント値を前記第３中間剰余として出力するカウンタと、
前記第３中間剰余が前記所定の数値に達したときに前記カウンタをリセットする手段と、
を備えることを特徴とするアドレス生成装置。
【請求項４】
請求項２又は３に記載のアドレス生成装置であって、
前記所定の数値とは、前記第２の定数と前記除数との最大公約数により前記除数を除することにより得た商であることを特徴とするアドレス生成装置。
【請求項５】
請求項２乃至４の何れか１項に記載のアドレス生成装置であって、
前記第２演算手段は、前記記憶手段中の前記所定の除数に対応した前記第２中間剰余が格納されている位置まで参照位置を移動させた上で、前記第３中間剰余をキーとして前記記憶手段を参照することにより前記第２中間剰余を得ることを特徴とするアドレス生成装置。
【請求項６】
請求項１乃至５の何れか１項に記載のアドレス生成装置であって、
前記第１演算手段は、
比較減算器が得た前記第１中間剰余に前記第１の定数を加算して、それにより得た和を前記比較減算器に出力する加算器と、
前記加算器から入力した前記和と前記第１の定数に対して比較減算を行うことにより前記第１中間剰余を得る前記比較減算器と、
を備えることを特徴とするアドレス生成装置。
【請求項７】
請求項１乃至６の何れか１項に記載のアドレス生成装置と、
入力したデータを書き込みアドレスに従って記憶し、記憶したデータを読み出しアドレスに従って読み出して出力する記憶手段であって、前記序数を、前記書き込みアドレス及び前記読み出しアドレスのうちの一方として使用し、前記アドレス生成装置が生成したアドレスを前記書き込みアドレス及び前記読み出しアドレスのうちの他方として使用する記憶手段と、
を備えることを特徴とするデータ並べ替え装置。
【請求項８】
序数に第１の定数を乗じて得た第１の結果と前記序数の二乗に第２の定数を乗じて得た結果との和を所定の除数で除して得た剰余をアドレスとして生成するアドレス生成方法であって、
前記第１の結果を前記除数で除することにより第１中間剰余を得る第１演算ステップと、
前記序数の所定の関数を前記除数で除することにより第２中間剰余を得る第２演算ステップと、
前記第１中間剰余と前記第２中間剰余との和を前記除数で除して最終剰余を得る第３演算ステップと、
を有し、
前記最終剰余を前記アドレスとすることを特徴とするアドレス生成方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、アドレスを生成するための、アドレス生成回路及びアドレス生成方法に関する。
【背景技術】
【０００２】
携帯電話機等によって無線通信を行う場合、信号を送受信するに際してターボ符号が広く用いられている。例えば、３ＧＰＰ（Third Generation Partnership Project）プロジェクトに参加する標準化団体により標準化されている規格であるＬＴＥ(Long Term Evolution)による通信時にターボ符号が用いられる（非特許文献１参照）。
【０００３】
このターボ符号による符号化及び復号化では、インタリーブ回路（「インタリーバ」と呼ばれることもある）によるインタリーブ処理及びデインタリーブ回路（「デインタリーバ」と呼ばれることもある）によるデインタリーブ処理が実施される。これらの処理について図を参照して説明する。
【０００４】
まず、図１にはターボ符号器の基本的構成が表されている。図１を参照するとターボ符号器１０１は、第１の符号化回路１０２、第２の符号化回路１０３及びインタリーブ回路１０４を含む。
【０００５】
また、ターボ符号器１０１は送信機１０５と接続している。そして、ターボ符号器１０１に入力された信号は、３つのルートを介して送信機１０５に対して出力される。
【０００６】
具体的には、入力された信号を送信機１０５にそのまま出力するルート（出力は図中のＳ１に相当）、入力された信号を第１の符号化回路１０２を経て送信機１０５に出力するルート（出力は図中のＳ２に相当）、及び、入力された信号についてインタリーブ回路１０４により入力データの並び替えを行った後に第２の符号化回路１０３を経て送信機１０５に出力するルート（出力は図中のＳ３’に相当、なお、図中及び以下の説明においても、インタリーブ処理後の信号については、その信号がインタリーブ処理後の信号であることを表すために符号に「’」を付す。）、の３つである。そして送信機１０５は、これら３ルートの信号を多重化する。具体的には、信号Ｓ１をペイロードとし、信号Ｓ２及び信号Ｓ３’をパリティビットとしたデータとして多重化する。そして、送信機１０５が、多重化後のデータを通信先の装置に対して送出することにより通信が行われる。
【０００７】
次に、図２を参照して、送信機１０５が信号（図中のＳ１〜Ｓ３’に相当）を送出した通信先の装置に含まれるターボ復号器及び受信機について説明する。図２を参照すると、ターボ復号器２０２は、デインタリーブ回路２０３、第１の復号回路２０４、インタリーブ回路２０５、第２の復号回路２０６及びデマルチプレクサ２０７を含む。また、ターボ復号器２０２は受信機２０１と接続されている。
【０００８】
受信機２０１は送信機１０５が送出した信号（図中のＳ１〜Ｓ３’に相当）を受信する。そして受信機２０１は、受信した信号のうち、ペイロードである信号Ｓ１を第１の復号回路２０４に入力する。また、受信機２０１は、受信した信号のうち、パリティビットである信号Ｓ２及びＳ３’をデマルチプレクサ２０７に入力する。
【０００９】
デインタリーブ回路２０３は、前回の繰返し復号処理により得られている第１の尤度情報信号（図中のＳ１１に相当）の並び順を元に戻す処理であるデインタリーブを実行する。
【００１０】
次に、第１の復号回路２０４は、信号Ｓ１、信号Ｓ２、及びデインタリーブ回路２０３が出力するデインタリーブ後の第１の尤度情報信号（図中のＳ１１に相当）を用いて復号を実行する。
【００１１】
そして、第１の復号回路２０４は、復号結果を第２の尤度情報信号（図中のＳ１２に相当）としてインタリーブ回路２０５に対して出力する。併せて第１の復号回路２０４は、信号Ｓ１をインタリーブ回路２０５に対して出力する。
【００１２】
次に、インタリーブ回路２０５は、第１の復号回路２０４が出力する第２の尤度情報信号（図中のＳ１２に相当）及び信号Ｓ１に対して並び替え処理であるインタリーブを実行する。
【００１３】
第２の復号回路２０６は、インタリーブ回路２０５が出力するインタリーブ後の信号Ｓ１’及びインタリーブ後の第２の尤度情報信号（図中のＳ１２’に相当）並びに信号Ｓ３’を用いて復号を実行する。そして、第２の復号回路２０６は、復号結果を第１の尤度情報信号として出力する。出力された信号はデインタリーブ回路２０３によるデインタリーブが実行された後に、復号結果として外部に出力される。
【００１４】
ここで、インタリーブ処理やデインタリーブ処理は、データの並べ替えを行うための処理である。具体的にはインタリーブ処理により並び替えられたデータは、デインタリーブ処理によりその並びが元に戻りインタリーブ処理を施す前のデータの並びとなる。
【００１５】
また、これら処理を行う理由は、伝送路における誤りが或る時点で集中して起きる事象であるバースト誤りを、ランダム誤りへと変え、ターボ復号による誤り訂正能力を向上させるためである。
【００１６】
送信する側では、インタリーブ回路によって、規定のビット数のデータを一つのまとまりとしたブロックサイズＫのデータを対象として、データのインタリーブ処理を行う。
【００１７】
並べ替えは、インタリーブ回路に入力されるビット順に対し、出力されるビット順を「（ｆ１×ｉ＋ｆ２×ｉ２）ｍｏｄ  Ｋ」に該当するビット順とすることにより行われる。
【００１８】
ここで、ｆ１及びｆ２はそれぞれブロックサイズＫに応じて規定される任意の値である。また、ｉは情報ビットのインデックスである。ｉの取りうる値は、ｉ＝０，１，２…Ｋ−１である。
【００１９】
ここで、例えばＬＴＥの規格では、データブロックＫの取り得る範囲は、Ｋ＝４０〜６１４４である。また、データブロックＫの取る得る値は１８８通りである。すなわち、ＬＴＥの規格ではインタリーブのパターンが１８８通り定義されている。
【００２０】
具体例として、ブロックサイズＫ＝４０を例とするとｆ１＝３，ｆ２＝１０と規定されている。そして、ｉ＝０，１，２…Ｋ−１のデータ順でインタリーブ回路に入力された情報ビットは、ｉ＝０，１３，６，１９…７というデータ順に並び替えられて送出される。
【００２１】
他方で、受信側に設けられたデインタリーブ回路は、このインタリーブ処理により並べ替えられたｉ＝０，１３，６，１９…７というデータ順を元のデータ順であるｉ＝０，１，２…Ｋ−１に戻す処理であるデインタリーブ処理を行う。
【００２２】
なお、このようなインタリーブ処理やデインタリーブ処理を行う通信装置の一例は、例えば特許文献１や特許文献２に記載がある。
【先行技術文献】
【特許文献】
【００２３】
【特許文献１】特表２０１３−５０９８２４号公報
【特許文献２】特表２０１２−５０３２４８号公報
【非特許文献】
【００２４】
【非特許文献１】“TS 36.212 Evolved Universal Terrestrial Radio Access (E-UTRA); Multiplexing and channel coding”、［online］、３ＧＰＰ、［平成２５年７月９日検索］、インターネット〈URL：http://www.3gpp.org/ftp/Specs/archive/36_series/36.212/〉
【発明の概要】
【発明が解決しようとする課題】
【００２５】
続いて、図３を参照してインタリーブ回路の一例について説明をする。図３に表されるインタリーブ回路３００は、書き込みカウンタ３０１、読み出しカウンタ３０２、ｆ１乗算器３０３、ｉ２乗算器３０４、ｆ２乗算器３０５、加算器３０６、モジュロ演算回路（図中では「ＭＯＤＵＬＯ」と記載する。）３０７及びＤｕａｌ  Ｐｏｒｔ  ＲＡＭ３０８を含む。
【００２６】
書き込みカウンタ３０１はブロックサイズＫのブロックの先頭を‘０’とし、情報ビットが入力される毎に値をインクリメントしてＤｕａｌ  Ｐｏｒｔ  ＲＡＭ３０８の書き込みアドレスの生成を行う。
【００２７】
他方、読み出しカウンタ３０２は、情報ビットの読み出し毎にカウンタをインクリメントして情報ビットインデックスであるｉの生成を行う。
【００２８】
ｆ１乗算器３０３は読み出しカウンタ３０２により生成されたｉとＫの値に応じて設定された値であるｆ１との乗算を行う乗算器であり、ｆ１×ｉの算出を行う。
【００２９】
ｉ２乗算器３０４は読み出しカウンタ３０２により生成されたｉからｉ２の生成を行う。
【００３０】
その後、ｆ２乗算器３０５によりＫの値に応じて設定された値であるｆ２とｉ２の乗算を行う。
【００３１】
更に、加算器３０６が加算を行うことにより（ｆ１×ｉ＋ｆ２×ｉ２）の値を生成する。最後に、モジュロ演算回路３０７により（ｆ１×ｉ＋ｆ２×ｉ２）ｍｏｄ  Ｋに対応する、Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ３０８の読み出しアドレスを生成する。そして、書き込まれた情報ビットを、この読み出しアドレスに従って読み出すことでブロックデータに対するインタリーブ処理を行う。
【００３２】
続いて、図４を参照してデインタリーブ回路の一例について説明をする。図４に表されるデインタリーブ回路４００は、書き込みカウンタ４０１、読み出しカウンタ４０２、ｆ１乗算器４０３、ｉ２乗算器４０４、ｆ２乗算器４０５、加算器４０６、モジュロ演算回路（図中では「ＭＯＤＵＬＯ」と記載する。）４０７及びＤｕａｌ  Ｐｏｒｔ  ＲＡＭ４０８を含む。
【００３３】
書き込みカウンタ４０１は、情報ビットの読み出し毎にカウンタをインクリメントして情報ビットインデックスであるｉの生成を行う。
【００３４】
ｆ１乗算器４０３は書き込みカウンタ４０１により生成されたｉとＫの値に応じて設定された値であるｆ１との乗算を行う乗算器であり、ｆ１×ｉの算出を行う。
【００３５】
ｉ２乗算器４０４は書き込みカウンタ４０１により生成されたｉからｉ２の生成を行う。
【００３６】
その後、ｆ２乗算器４０５によりＫの値に応じて設定された値であるｆ２とｉ２の乗算を行う。
【００３７】
更に、加算器４０６が加算を行うことにより（ｆ１×ｉ＋ｆ２×ｉ２）の値を生成する。最後に、モジュロ演算回路４０７により（ｆ１×ｉ＋ｆ２×ｉ２）ｍｏｄ  Ｋに対応する、Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ４０８の書き込みアドレスを生成する。そして、この書き込みアドレスに従ってブロックサイズ分のデータ書き込みを行う。
【００３８】
読み出しカウンタ４０２が、読み出しデータ毎に値をインクリメントしながら行う。これによりデインタリーブ処理は実現される。
【００３９】
このように、インタリーブ処理及びデインタリーブ処理ではデータを並べ替えるためのアドレスを生成する点において共通する一方で、生成したアドレスを読み出しアドレスとするか、それとも書き込みアドレスとするかという点で相違する。
【００４０】
このインタリーブ処理及びデインタリーブ処理の何れにおいても、ｍｏｄ  Ｋの計算処理を実現するためにモジュロの演算回路３０７が必要である。そして、このモジュロ演算回路３０７は比較回路及び減算回路を組み合わせた回路（以下、適宜「比較減算要素」と呼ぶ。）により実現される。
【００４１】
このモジュロ演算回路の規模について、ＬＴＥを例に取って具体的な検討を行う。ＬＴＥで規定される（ｆ１×ｉ＋ｆ２×ｉ２）の最大値を、２進数で表すと２８ｂｉｔが必要になる。また、Ｋが取りうる最大の値である６１４４を２進数で表すと１３ｂｉｔが必要となる。そのため、通常であればモジュロ演算回路には比較減算要素が多数必要となり、回路規模が多大なものとなる。
【００４２】
モジュロ演算回路を設ける場合の通常の回路構成例を図５に示す。初段の比較減算要素５０１−１は、１３ビットで表されるブロックサイズＫと、（ｆ１×ｉ＋ｆ２×ｉ２）を表す２８ビットのうちの上位側の１３ビットとを比較する。そして、初段の比較減算要素５０１は、（ｆ１×ｉ＋ｆ２×ｉ２）の上位１３ビットにより示される値のほうがブロックサイズＫよりも大きければ、（ｆ１×ｉ＋ｆ２×ｉ２）の上位１３ビットにより示される値からブロックサイズＫを差し引くための減算をして得た値を出力し、そうでなければ（ｆ１×ｉ＋ｆ２×ｉ２）の上位１３ビットをそのまま次段の比較減算要素５０１−２に出力する。初段の比較減算要素５０１−１の出力は、１２ビットで表される。次に、次段の比較減算要素５０１−２は、初段の比較減算要素５０１−１から入力した１２ビットのＬＳＢ（least significant bit）よりも下位のビットとして、（ｆ１×ｉ＋ｆ２×ｉ２）の上位から１４番目のビットを付加することにより１３ビットを得て、初段の比較減算要素５０１−１と同様な演算処理を行う。この動作が（ｆ１×ｉ＋ｆ２×ｉ２）の最下位ビットまで繰り返し行われる。従って、比較減算要素５０１の必要数は、（ｆ１×ｉ＋ｆ２×ｉ２）を表すために必要なビット数からブロックサイズＫを表すために必要なビット数の差に１を加算して得た数（この例では、２８−１３＋１＝１６）となり、多数の比較減算要素で構成する必要がある。また、ソフトウェアで比較減算要素を構成するならば、比較減算演算をこの数だけ繰り返す必要がある。
【００４３】
このように多数の比較減算要素によってモジュロ演算回路を実現する場合には、回路規模が大きくなる。そこで、このような多数の比較減算要素を不要とし、回路規模を削減するための方法として、予め全てのブロックサイズによるインタリーブのパターンの全てをＲＯＭ（Read Only Memory）などに保存しておく、という方法がある。しかし、この方法を用いると、多数のブロックサイズと、その情報インデックスごとのデータとを所有する必要があり、大規模なＲＯＭが必要となってしまう。
【００４４】
具体的には、このＲＯＭサイズは、すべてのブロックサイズＫを加算した値３５５２４８に対し、Ｋの最大値６１４４を表すために必要なビット幅１３ｂｉｔを掛け合わせた値のＲＯＭの容量となる。すなわち、３５５２４８×１３ｂｉｔ＝４６１８２２４ｂｉｔが必要となる。そのため、４６１８２２４ｂｉｔ以上の大規模な記憶容量のＲＯＭを用意する必要が生じてしまう。
【００４５】
そこで、本発明は、比較減算要素を削減することにより規模の大きいモジュロの演算回路を不要とし、且つ、記憶すべきＲＯＭサイズも減少させることにより、インタリーブ回路及びデインタリーブ回路における回路規模を縮小させることが可能な、アドレス生成回路、アドレス生成方法及びアドレス生成プログラムを提供することを目的とする。
【課題を解決するための手段】
【００４６】
本発明の第１の観点によれば、序数に第１の定数を乗じて得た第１の結果と前記序数の二乗に第２の定数を乗じて得た結果との和を所定の除数で除して得た剰余をアドレスとして生成するアドレス生成装置であって、前記第１の結果を前記除数で除することにより第１中間剰余を得る第１演算手段と、前記序数の所定の関数を前記除数で除することにより第２中間剰余を得る第２演算手段と、前記第１中間剰余と前記第２中間剰余との和を前記除数で除して最終剰余を得る第３演算手段と、を備え、前記最終剰余を前記アドレスとすることを特徴とするアドレス生成装置が提供される。
【００４７】
本発明の第２の観点によれば、序数に第１の定数を乗じて得た第１の結果と前記序数の二乗に第２の定数を乗じて得た結果との和を所定の除数で除して得た剰余をアドレスとして生成するアドレス生成方法であって、前記第１の結果を前記除数で除することにより第１中間剰余を得る第１演算ステップと、前記序数の所定の関数を前記除数で除することにより第２中間剰余を得る第２演算ステップと、前記第１中間剰余と前記第２中間剰余との和を前記除数で除して最終剰余を得る第３演算ステップと、を有し、前記最終剰余を前記アドレスとすることを特徴とするアドレス生成方法が提供される。
【発明の効果】
【００４８】
本発明によれば、比較減算要素を削減することにより規模の大きいモジュロの演算回路を不要とし、且つ、記憶すべきＲＯＭサイズも減少させることにより、インタリーブ回路及びデインタリーブ回路における回路規模を縮小させることが可能となる。
【図面の簡単な説明】
【００４９】
【図１】一般的な技術におけるターボ符号器の構成の具体例を表すブロック図である。
【図２】一般的な技術におけるターボ復号器の構成の具体例を表すブロック図である。
【図３】一般的な技術におけるインタリーブ回路の構成の具体例を表すブロック図である。
【図４】一般的な技術におけるデインタリーブ回路の構成の具体例を表すブロック図である。
【図５】一般的な技術におけるモジュロの演算回路の具体例を表すブロック図である。
【図６】本発明の実施形態の基本的構成の一つであるインタリーブ回路を表すブロック図である。
【図７−１】Ｋ／ＧＣＤの周期で巡回するデータ系列について表す表（１／６）である。
【図７−２】Ｋ／ＧＣＤの周期で巡回するデータ系列について表す表（２／６）である。
【図７−３】Ｋ／ＧＣＤの周期で巡回するデータ系列について表す表（３／６）である。
【図７−４】Ｋ／ＧＣＤの周期で巡回するデータ系列について表す表（４／６）である。
【図７−５】Ｋ／ＧＣＤの周期で巡回するデータ系列について表す表（５／６）である。
【図７−６】Ｋ／ＧＣＤの周期で巡回するデータ系列について表す表（６／６）である。
【図８−１】ブロックサイズＫ毎の、ｆ１の値、ｆ２の値、ＧＣＤの値、Ｋ/ＧＣＤの値、及びＫ／ＧＣＤの全てのブロックサイズ分を合計した値を表す表（１／６）である。
【図８−２】ブロックサイズＫ毎の、ｆ１の値、ｆ２の値、ＧＣＤの値、Ｋ/ＧＣＤの値、及びＫ／ＧＣＤの全てのブロックサイズ分を合計した値を表す表（２／６）である。
【図８−３】ブロックサイズＫ毎の、ｆ１の値、ｆ２の値、ＧＣＤの値、Ｋ/ＧＣＤの値、及びＫ／ＧＣＤの全てのブロックサイズ分を合計した値を表す表（３／６）である。
【図８−４】ブロックサイズＫ毎の、ｆ１の値、ｆ２の値、ＧＣＤの値、Ｋ/ＧＣＤの値、及びＫ／ＧＣＤの全てのブロックサイズ分を合計した値を表す表（４／６）である。
【図８−５】ブロックサイズＫ毎の、ｆ１の値、ｆ２の値、ＧＣＤの値、Ｋ/ＧＣＤの値、及びＫ／ＧＣＤの全てのブロックサイズ分を合計した値を表す表（５／６）である。
【図８−６】ブロックサイズＫ毎の、ｆ１の値、ｆ２の値、ＧＣＤの値、Ｋ/ＧＣＤの値、及びＫ／ＧＣＤの全てのブロックサイズ分を合計した値を表す表（６／６）である。
【図９】本発明の実施形態におけるＲＯＭのデータ構造の一例を表すイメージ図である。
【図１０】本発明の実施形態の基本的構成の一つであるデインタリーブ回路を表すブロック図である。
【発明を実施するための形態】
【００５０】
まず、本発明の実施形態の概略を説明する。本発明の実施形態は、並べ替え処理を行うためのアドレス生成に関するものである。具体的な一例としては、ＬＴＥで用いるターボ符号化および復号のためのインタリーブ回路及びデインタリーブ回路に適用することができる。
【００５１】
本実施形態では、ｆ２とＫの最大公約数（ＧＣＤ：greatest common divisor）を用いることでインタリーブ及びデインタリーブによる（ｆ１×ｉ＋ｆ２×ｉ２）ｍｏｄ  Ｋの計算回路規模を縮小し、解決すべき課題を解決する。
【００５２】
より具体的に説明すると、上述したｆ２とＫのＧＣＤとＫとにより割り出される値を利用することにより、周期的に繰り返される（周期巡回する）データパターンである周期パターンが得られ、その周期パターンを用いることにより、モジュロの演算することなく、簡易な計算回路でインタリーブを行うアドレス制御が行える。以上が本発明の実施形態の概略である。
【００５３】
続いて、図６を参照して本実施形態であるインタリーブ回路６００について説明する。ここで、インタリーブ回路６００は例えば図１に表されるインタリーブ回路１０４として利用することができる。
【００５４】
図６を参照するとインタリーブ回路６００は、ｆ１加算器６０１、ｆ１比較減算器６０２、比較器６０３、ｆ２算出カウンタ６０４、オフセット加算器６０５、ＲＯＭ６０６、ｆ１，ｆ２加算器６０７、ｆ１，ｆ２比較減算器６０８、書き込みカウンタ６０９及びＤｕａｌ  Ｐｏｒｔ  ＲＯＭ６１０を含む。
【００５５】
ここで、本実施形態では、（ｆ１×ｉ＋ｆ２×ｉ２）ｍｏｄ  Ｋの計算を実行するにあたり、ｆ１×ｉの計算部とｆ２×ｉ２の計算部を分離して計算を行う。このように分離する場合は、まずｆ１×ｉの計算部が行う（ｆ１×ｉ）ｍｏｄ  Ｋの計算と、ｆ２×ｉ２の計算部が行う（ｆ２×ｉ２）ｍｏｄ  Ｋの計算に分離する。そして、両方の計算結果を足し合わせて、その結果得られる和に対してｍｏｄ  Ｋの計算を行う。
【００５６】
具体的には、ｆ１×ｉの計算部はｆ１加算器６０１及びｆ１比較減算器６０２を含む。また、ｆ２×ｉ２の計算部は、比較器６０３、ｆ２算出カウンタ６０４、オフセット加算器６０５及びＲＯＭ６０６を含む。更に、ｆ１×ｉの計算部とｆ２×ｉ２の計算部それぞれの算出結果の加算をｆ１，ｆ２加算器６０７で行い、加算により得られた和に対してｆ１，ｆ２比較減算器６０８がｍｏｄ  Ｋの計算を行い、剰余を得る。そして、このようにして生成した剰余の数値をＤｕａｌ  Ｐｏｒｔ  ＲＯＭ６１０の読み出しアドレスとして利用する。
【００５７】
このようにした場合、ｆ１×ｉの計算側では読み出す情報ビット毎にｆ１を加算していけばよく、この加算後の値がＫの値以上であれば、加算後の値からＫの値を減算すれば良い。このため、加算回路６０１と、ｆ１比較減算回路６０２で、（ｆ１×ｉ）ｍｏｄ  Ｋの計算を行うことができる。
【００５８】
他方、ｆ２×ｉ２の計算側においても以下に説明するようにモジュロ演算回路の規模削減が可能である。
【００５９】
ｆ２とＫとのＧＣＤの値を用いると、分離した（ｆ２×ｉ２）ｍｏｄ  Ｋの計算部分が、[ｆ２×{ｉ２ｍｏｄ（Ｋ／ＧＣＤ）}]ｍｏｄ  Ｋでも同様の結果が得ることができる。そして、{ｉ２ｍｏｄ（Ｋ／ＧＣＤ）}によって、ｉ２は、Ｋ／ＧＣＤの周期で巡回するデータ系列へと変化する。
【００６０】
従って、逐一（ｆ２×ｉ２）ｍｏｄ  Ｋの値を逐一算出するのではなく、予め計算した（ｆ２×ｉ２）ｍｏｄ  Ｋの値をＲＯＭにデータとして保管する。そして、今回処理対象としているデータのブロックサイズＫに対応する（ｆ２×ｉ２）ｍｏｄ  Ｋの値を参照することで、大規模なモジュロ計算を用いることなく簡素な構成とすることが可能となる。この点、Ｋ／ＧＣＤが小さい値であればあるほどＲＯＭに保管すべきデータの容量を削減することが可能となる。
【００６１】
次に、ｉ２がＫ／ＧＣＤの周期で巡回するデータ系列へと変化しており、（ｆ２×ｉ２）ｍｏｄ  Ｋの値もＫ／ＧＣＤの周期で巡回するデータ系列であることについて、図７−１〜図７〜６に記載の表１の具体例を参照して説明する。
【００６２】
表１には、ブロックサイズＫ＝６１４４，ｆ１＝２６３，ｆ２＝４８０の場合における各巡回データの系列を示す。この場合、ｆ２とＫのＧＣＤ（最大公約数）＝９６となる。そのため、Ｋ／ＧＣＤ＝６４となる。
【００６３】
表１中の第１列には情報ビットのインデックスであるｉの値を表す。
【００６４】
また、表１中の第２列には（ｆ１×ｉ＋ｆ２×ｉ＾２）ｍｏｄ  Ｋによる正規手段での計算結果を表す。
【００６５】
他方、本実施形態により分割計算する（ｆ１×ｉ）ｍｏｄ  Ｋの計算結果については表１中の第３列に表す。また、ｉ＾２ｍｏｄ（Ｋ／ＧＣＤ）については表１中の第４列に表す。更に、（ｆ２×ｉ＾２）ｍｏｄ  （Ｋ／ＧＣＤ）については表１中の第５列に表す。更に、表１中の第３列のｆ１×ｉの計算結果と、表１中の第５列の（ｆ２×ｉ＾２）ｍｏｄ  （Ｋ／ＧＣＤ）を加算し、更に加算値にｍｏｄ  Ｋの計算を行った算出結果を表１中の第６列に表す。
【００６６】
なお、情報ビットｉ＝０〜６１４３であるが、省略のためｉ＝０乃至１９２まで記載する。ｉ＝１９３以降は同様の周期が繰り返される。
【００６７】
下記の表１を参照すると、例えば、ｉ＝０乃至６３の第４列のｉ＾２ｍｏｄ  （Ｋ／ＧＣＤ）の値及び第５列の（ｆ２×ｉ＾２）  ｍｏｄ  （Ｋ／ＧＣＤ）の値のグループが、ｉ＝６４至１２７の第４列のｉ＾２ｍｏｄ  （Ｋ／ＧＣＤ）の値及び第５列の（ｆ２×ｉ＾２）  ｍｏｄ  （Ｋ／ＧＣＤ）の値のグループと、一致している（すなわち、６４行離れた位置にある第４列のｉ＾２ｍｏｄ  （Ｋ／ＧＣＤ）の値及び第５列の（ｆ２×ｉ＾２）  ｍｏｄ  （Ｋ／ＧＣＤ）の値がそれぞれ一致しているので、Ｋ／ＧＣＤ＝６４と一致する周期パターンであることが分かる。
【００６８】
表１はＫ＝６１４４，ｆ１＝２６３，ｆ２＝４８０の例の値を示しているが、他のブロックサイズでも、同様に、Ｋ／ＧＣＤと一致する周期のパターンで第４列と第５列のデータが得られる。
【００６９】
次に、図８−１〜図８〜６に記載の表２を参照して説明を続ける。表２の第１列には、ＬＴＥにおけるインタリーブ及びデインタリーブの際のブロックサイズＫの取り得る値を全て表す。また、第２列には、ブロックサイズＫに対応したｆ１の値を表す。更に、第３列にはブロックサイズＫに対応したとｆ２の値を表す。更に、第４列にはｆ２とＫのＧＣＤの値を表す。更に、第５列にはＫ/ＧＣＤの値を表す。また、最下行にＫ／ＧＣＤの全てのブロックサイズ分を合計した値を表す。
【００７０】
インタリーブのブロックサイズ毎のＫ／ＧＣＤを調べると、最小値は２であり、最大値は１１２である。また、ブロックサイズ毎のＫ／ＧＣＤを全ブロックサイズについて合わせると３３０４となる。従って、全てのブロックサイズに対して必要なビット数は、３３０４×１３ｂｉｔ＝４２９５２ｂｉｔとなり、約４３ｋのＲＯＭがあれば構成することができる。このようなＲＯＭは、全てのブロックサイズＫについての全ての（ｆ２×ｉ２）ｍｏｄ  Ｋが格納できる。
【００７１】
上記の１３ｂｉｔとはＲＯＭのアドレスに格納されるデータ幅であり、ブロックサイズＫの最大値６１４４を表すために必要なビット幅に対応する。
【００７２】
すなわち本実施形態では全てのブロックサイズに対して必要なビット数が、本発明が解決しようとする課題の欄で述べた全てのブロックサイズＫを加算した値３５５２４８に対し、Ｋの最大値６１４４を満たすビット幅１３ｂｉｔを掛け合わせた値である４６１８２２４ｂｉｔに対して、４２９５２ｂｉｔとなり、記憶容量を約１００分の１に削減することが可能となる。
【００７３】
次に、本実施形態の各部の動作について再度図６を参照して詳細に説明する。
【００７４】
まず、本実施形態ではインタリーブ回路の読み出しアドレスの計算をするための動作を開始する前に、ＣＰＵなどの制御部（図示を省略する）の指示に応じて以下のように情報の設定を行う。
【００７５】
書き込みカウンタ６０９は、ブロックの先頭を‘０’とし、入力データ毎に値をインクリメントしてＤｕａｌ  Ｐｏｒｔ  ＲＯＭ６１０の書き込みアドレスの生成を行う。そして、Ｄｕａｌ  Ｐｏｒｔ  ＲＯＭ６１０は、生成されたアドレスのエントリに入力データの書き込みを行うことを、ブロックサイズＫ分のデータの書き込みが終了するまで行う。
【００７６】
ブロックサイズＫ分のデータ書き込みが完了すると、読み出し制御により、読み出しアドレスが、指定されたブロックサイズＫに該当する生成式（ｆ１×ｉ＋ｆ２×ｉ２）ｍｏｄ  Ｋに従ったアドレス順となるよう制御することで、インタリーブ処理を行う。この読み出しアドレスの計算が本実施形態の特徴となる。
【００７７】
ここで、本実施形態では、インタリーブの読み出しアドレスの計算手段として以下のように行う。
【００７８】
まず、第１の計算として（ｆ１×ｉ）の計算を行う。第１の計算を実行する回路は、ｆ１加算器６０１とｆ１比較減算器６０２とを含む。
【００７９】
まず、情報ビットごとにｆ１加算器６０１においてｆ１の値の加算が行われる。
【００８０】
そして、ｆ１比較減算器６０２が、ｆ１加算器６０１による加算後の値をブロックサイズＫと比較する。ｆ１比較減算器６０２は、比較の結果、ｆ１加算器６０１による加算後の値がブロックサイズＫ以上であれば、ｆ１加算器６０１による加算後の値がブロックサイズＫの値未満の値となるように、ｆ１加算器６０１による加算後の値からブロックサイズＫを減算した値を出力する。他方、ｆ１比較減算器６０２は、ｆ１加算器６０１による加算後の値が、ブロックサイズＫの値未満であれば、ｆ１加算器６０１による加算後の値をそのまま出力を行う。
【００８１】
このように、本実施形態では、第１の計算の段階で積算値がブロックサイズＫを超えるたびに減算をしている。そのため、第１の計算結果と第２の計算結果とを加算後にｆ１，ｆ２比較減算器６０８がｍｏｄ  Ｋの計算を行う際に、ブロックサイズＫを減算する回数を削減することが可能となる。すなわち、回路全体として比較減算器の数を削減することが可能となる。
【００８２】
この点について具体的に説明する。まず、第１の計算部に含まれるｆ１比較減算器６０２では、ブロックサイズＫを超えるたびに、ブロックサイズＫを減算した値を出力している。そのため、ｆ１加算器６０１の出力はブロックサイズＫの最大値６１４４未満の値となることから最大でも６１４３となる。よって、ｆ１加算器６０１の出力はブロックサイズＫの最大値６１４３を表すために必要な１３ｂｉｔを超えることはない。例えば、表１に記載されているブロックサイズＫ＝６１４４の場合を例に取ってみると、ＲＯＭ６０６の出力はｉ＝７０のときの６１２２が最大である。
【００８３】
一方で、ＲＯＭ６０６の出力は、（ｆ２×ｉ２）ｍｏｄ  Ｋを表す値であるが、この値もｍｏｄ  Ｋの計算が含まれているため、ブロックサイズＫの最大値６１４４未満の値となることから最大でも６１４３となる。よって、ＲＯＭ６０６の出力も、ブロックサイズＫの最大値６１４３を表すために必要な１３ｂｉｔを超えることはない。例えば、表１に記載されているブロックサイズＫ＝６１４４の場合を例に取ってみると、ＲＯＭ６０６の出力はｉ＝５等のときの５８５６が最大である。
【００８４】
従って、ｆ１，ｆ２比較減算器６０８における加算後の値は、加算前の値が最大でも６１４３＋６１４３であることから最大でも１２２８８６である。また、ｆ１，ｆ２比較減算器６０８における加算後の最大値１２２８８６は、１４ｂｉｔあれば表すことが可能である。
【００８５】
そして、ｆ１，ｆ２比較減算器６０８がｍｏｄ  Ｋの計算を行う際に必要となる比較減算要素の必要数は、ｆ１，ｆ２比較減算器６０８における加算後の値を表すために必要なビット数からブロックサイズＫを表すために必要なビット数の差に１を加算して得た数であるため、１４−１３＋１＝２となる。
【００８６】
また、ｆ１比較減算器６０２の比較減算要素の必要数についても説明する。この点、ｆ１比較減算器６０２が出力する値はブロックサイズＫ未満であるので最大でも６１４３である。また、ｆ１の値は最大でも４７７である。従って、ｆ１加算器６０１の出力は最大でも６１４３＋４７７＝６６２０となり１３ｂｉｔで表すことが可能である。
【００８７】
そして、ｆ１比較減算器６０２がｍｏｄ  Ｋの計算を行う際に必要となる比較減算要素の必要数は、ｆ１比較減算器６０２における加算後の値を表すために必要なビット数からブロックサイズＫを表すために必要なビット数の差に１を加算して得た数であるため、１３−１３＋１＝１となる。
【００８８】
このように、本実施形態では回路全体で最大でも３つの比較減算要素があれば足りる。この点、発明が解決しようとする課題の欄にて述べた例では比較減算要素の必要数は１６であることから、本実施形態では必要となる比較減算要素の数を大幅に削減できている。
【００８９】
次に、第２の計算として（ｆ２×ｉ２）の計算を行う。ここで、第２の計算を実行する回路は、比較器６０３とｆ２算出カウンタ６０４とオフセット加算器６０５とＲＯＭ６０６とを含む。
【００９０】
ｆ２算出カウンタ６０４は、情報ビットごとにカウンタ値をインクリメントする。比較器６０３は、そのカウンタ値と該当するブロックサイズＫの値に対し設定されたＫ／ＧＣＤの値を比較する。
【００９１】
比較器６０３は、比較の結果、ｆ２算出カウンタ６０４のカウンタ値が設定値Ｋ／ＧＣＤと同じ値であればｆ２算出カウンタ６０４をリセットする。一方比較器６０３は、ｆ２算出カウンタ６０４のカウンタ値が設定値Ｋ／ＧＣＤ以外の値であれば、ｆ２算出カウンタ６０４はリセットせずにインクリメントを行う。比較器６０３がこのように動作することから、ｆ２算出カウンタ６０４のカウンタ値は、一つずつ増加していき、カウンタ値が、Ｋ／ＧＣＤの値となった場合には再度０からカウントされるというように周期的に変化していく。
【００９２】
オフセット加算器６０５は、ｆ２算出カウンタ６０４のカウンタ値に、ＲＯＭ６０６の該当するブロックサイズＫに対応する先頭アドレスに対応するオフセット値を加算する。例えば、表２に従ってＲＯＭ６０６にデータが格納されているならば、ブロックサイズＫが４０であれば、オフセット値はゼロである。オフセット加算器６０５の加算結果は、アドレスとしてＲＯＭ６０６に入力される。ＲＯＭ６０６は入力アドレスに対応する格納データの出力を行う。
【００９３】
この点について図９を参照して説明を行う。図９はＲＯＭ６０６に格納されるデータのデータ構造を表すイメージ図である。
【００９４】
ＲＯＭ６０６にはブロックサイズＫが取りうる値のそれぞれについて、全ての（ｆ２×ｉ２）ｍｏｄ  Ｋの値が格納されている。今回Ｋの取りうる値はＫ＝４０、４８、５６…６１４４である。そして、例えば、Ｋ＝４０の場合、Ｋ／ＧＣＤ＝４である。すなわちＫ＝４０の場合４つの（ｆ２×ｉ２）ｍｏｄ  Ｋの値が一周期となり、（ｆ２×ｉ２）ｍｏｄ  Ｋはこの周期で巡回するデータ系列へと変化する。同様に、Ｋ＝４８の場合も、Ｋ／ＧＣＤ＝４である。
【００９５】
ここで、例えば今回Ｋ＝４８であり、ｆ２算出カウンタ６０４のカウンタ値が２であったとする。この場合は、オフセットの値は４である。このオフセット値４によりＫ＝４８に対応するデータが格納されたアドレスの先頭アドレスであるアドレス４までオフセットがなされる。
【００９６】
そして、オフセット加算器６０５は、このオフセットの値４にカウント値２を加算して、加算値６をアドレスとしてＲＯＭ６０６に入力する。結果として、ＲＯＭ６０６は入力アドレスに対応する格納データとして、アドレス６に格納されているＫ＝４８のときの（ｆ２×ｉ２）ｍｏｄ  Ｋの第３の値が出力される。
【００９７】
上述したようにｆ２算出カウンタ６０４のカウンタ値は、リセットとインクリメントを繰り返すことにより０〜３の範囲で周期的に巡回する。結果として、Ｋ＝４８のときの（ｆ２×ｉ２）ｍｏｄ  Ｋの第１の値〜Ｋ＝４８のときの（ｆ２×ｉ２）ｍｏｄ  Ｋの第４の値が周期的に出力される。この出力される値が第２の計算の計算結果となる。
【００９８】
また、例えば図７−１〜図７−６に記載されている表１の例のようにＫ＝６１４４であり、ｆ２算出カウンタ６０４のカウンタ値が６３であったとする。この場合は、オフセットの値は３２３９である。このオフセット値３２３９によりＫ＝６１４４に対応するデータが格納されたアドレスの先頭アドレスであるアドレス３２３９までオフセットがなされる。
【００９９】
そして、オフセット加算器６０５は、このオフセットの値３２３９にカウント値６３を加算して、加算値３３０３をアドレスとしてＲＯＭ６０６に入力する。結果として、ＲＯＭ６０６は入力アドレスに対応する格納データとして、アドレス３３０３に格納されているＫ＝６１４４のときの（ｆ２×ｉ２）ｍｏｄ  Ｋの第６４の値が出力される。
【０１００】
第１の計算と第２の計算で得られた値は、ｆ１，ｆ２加算器６０７により加算され、加算後の値はｆ１，ｆ２比較減算器６０８へ入力される。
【０１０１】
そして、ｆ１，ｆ２比較減算器６０８により、ｆ１，ｆ２加算器６０７から入力された値と、ブロックサイズＫとが比較される、比較した結果、ｆ１，ｆ２加算器６０７から入力された値がブロックサイズＫ以上であればｆ１，ｆ２加算器６０７から入力された値からブロックサイズＫを減算した値をＤｕａｌ  Ｐｏｒｔ  ＲＯＭ６１０の読み出しアドレスとして出力する。一方で、ｆ１，ｆ２加算器６０７から入力された値が、ブロックサイズＫの値未満であれば、ｆ１，ｆ２加算器６０７から入力された値をそのままＤｕａｌ  Ｐｏｒｔ  ＲＯＭ６１０の読み出しアドレスとして出力する。
【０１０２】
これによりインタリーブ側の読み出しアドレスが生成され、該当アドレスに格納されたデータの読み出しをブロックサイズ分読み出すことでインタリーブの動作が行われる。
【０１０３】
ここで、上述の説明は、本実施形態をインタリーブ回路に適用する場合の説明である。もっとも、本実施形態は、書き込みアドレスと読み出しアドレスの生成方法をインタリーブ回路と逆の構成で生成することにより、ターボ復号器に用いられるデインタリーブ回路に適用することも可能である。
【０１０４】
このように、本実施形態をデインタリーブ回路に適用する場合について図１０を参照して説明する。ここで、本デインタリーブ回路は例えば図２に表されるインタリーブ回路２０３として利用することができる。
【０１０５】
図１０を参照すると本インタリーブ回路は、ｆ１加算器７０１、ｆ１比較減算器７０２、比較器７０３、ｆ２算出カウンタ７０４、オフセット加算器７０５、ＲＯＭ７０６、ｆ１，ｆ２加算器７０７、ｆ１，ｆ２比較減算器７０８、読み出しカウンタ７０９及びＤｕａｌ  Ｐｏｒｔ  ＲＡＭ７１０を含む。
【０１０６】
これら、ｆ１加算器７０１、ｆ１比較減算器７０２、比較器７０３、ｆ２算出カウンタ７０４、オフセット加算器７０５、ＲＯＭ７０６、ｆ１，ｆ２加算器７０７及びｆ１，ｆ２比較減算器７０８は、上述したｆ１加算器６０１、ｆ１比較減算器６０２、比較器６０３、ｆ２算出カウンタ６０４、オフセット加算器６０５、ＲＯＭ６０６、ｆ１，ｆ２加算器６０７及びｆ１，ｆ２比較減算器６０８と同様の処理を行い、指定されたブロックサイズＫに該当する生成式（ｆ１×ｉ＋ｆ２×ｉ２）ｍｏｄ  Ｋに従ったアドレスを生成する。
【０１０７】
そして、生成したアドレスを書き込みアドレスとして、Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ７１０にブロックサイズ分のデータ書き込みを実行する。そして、書き込みが完了後、読み出しデータ毎に値をインクリメントするアドレスカウンタである読み出しカウンタ７０９が読み出しを実行する。これによりデインタリーブ処理を実現することが可能となる。
【０１０８】
以上説明した本実施形態である図６に表されるインタリーブ回路及び図１０に表されるデインタリーブ回路は、予めＲＯＭに記憶しておくデータ量を削減できるため、小さな記憶容量のＲＯＭにて処理を実現することが可能となる、という効果を奏する。更に、以上説明した本実施形態である図６に表されるインタリーブ回路及び図１０に表されるデインタリーブ回路は、規模の大きいモジュロの演算回路が不要となり、大幅な計算回路の規模縮小が可能となる、という効果を奏する。
【０１０９】
その理由は、｛ｆ２×ｉ＾２ｍｏｄ（Ｋ／ＧＣＤ）｝の周期性を利用することにより記憶しておくべき値を削減することから、全てのインデックスｉ分を記憶しておく必要が無くなるからである。一方で周期性の無い値、ｆ１×ｉ  ｍｏｄ  Ｋに関しては逐一算出する。そして、これらを加算することによりモジュラ回路が不要となるからである。
【０１１０】
なお、図６に表されるインタリーブ回路と図１０に表されるデインタリーブ回路のそれぞれ一部は、本願発明の「アドレス生成回路」に相当する。
【０１１１】
また、上述した実施形態は、本発明の好適な実施形態ではあるが、上記実施形態のみに本発明の範囲を限定するものではなく、本発明の要旨を逸脱しない範囲において種々の変更を施した形態での実施が可能である。
【０１１２】
例えば、上述した実施形態の説明では、ＲＯＭに全ブロックサイズのパターンによるデータを書き込んでいることを前提に説明を行った。このため上述した実施形態では、図９を参照して説明したようにオフセット値を与えて加算することで、該当するブロックサイズにおけるデータ格納部の先頭アドレスまでシフトする動作を行っていた。しかし、これを例えば以下の第１及び第２の変形例のように変形することも考えられる。
【０１１３】
まず、第１の変形例として、このオフセット値及びオフセット加算器６０５を用いないことも可能である。この場合には、通信開始前に該当ブロックサイズＫに対応する（ｆ２×ｉ２）ｍｏｄ  Ｋの値を一周期分のみをＲＯＭに書き込む。すなわち、ＲＯＭの先頭アドレスから、該当ブロックサイズＫに対応する（ｆ２×ｉ２）ｍｏｄ  Ｋの値を一周期分のみ書き込む。これにより、オフセット値及びオフセット加算器６０５を用いる必要が無くなる。
【０１１４】
続いて第２の変形例として、ＲＯＭではなくフリップフロップ（ＦＦ：Flip Flop）などにより該当データを通信期間だけ保持させ、書き込みカウンタ６０９のカウント値により選択する動作も同様な処置となる。
【０１１５】
上述の説明では、ＬＴＥの規格に準拠したターボ符号化及びターボ復号におけるインタリーブ処理及びデインタリーブ処理を例に取って説明した。もっとも、ＬＴＥ以外の規格であっても、本発明の趣旨を逸脱しない範囲であればＬＴＥ以外の他の規格に適用することも可能である。
【０１１６】
更に、上記のインタリーブ回路及びデインタリーブ回路は、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。また、上記のインタリーブ回路及びデインタリーブ回路により行なわれるインタリーブ関連処理方法も、ハードウェア、ソフトウェア又はこれらの組み合わせにより実現することができる。ここで、ソフトウェアによって実現されるとは、コンピュータがプログラムを読み込んで実行することにより実現されることを意味する。
【０１１７】
プログラムは、様々なタイプの非一時的なコンピュータ可読媒体(non-transitory computer readable medium)を用いて格納され、コンピュータに供給することができる。非一時的なコンピュータ可読媒体は、様々なタイプの実体のある記録媒体(tangible storage medium)を含む。非一時的なコンピュータ可読媒体の例は、磁気記録媒体（例えば、フレキシブルディスク、磁気テープ、ハードディスクドライブ）、光磁気記録媒体（例えば、光磁気ディスク）、ＣＤ−ＲＯＭ(Read Only Memory)、ＣＤ−Ｒ、ＣＤ−Ｒ／Ｗ、半導体メモリ（例えば、マスクＲＯＭ、ＰＲＯＭ(Programmable ROM)、ＥＰＲＯＭ(Erasable PROM)、フラッシュＲＯＭ、ＲＡＭ(random access memory）)を含む。また、プログラムは、様々なタイプの一時的なコンピュータ可読媒体(transitory computer readable medium)によってコンピュータに供給されてもよい。一時的なコンピュータ可読媒体の例は、電気信号、光信号、及び電磁波を含む。一時的なコンピュータ可読媒体は、電線及び光ファイバ等の有線通信路、又は無線通信路を介して、プログラムをコンピュータに供給できる。
【０１１８】
上記の実施形態の一部又は全部は、以下の付記のようにも記載されうるが、以下には限られない。
【０１１９】
（付記１）
序数に第１の定数を乗じて得た第１の結果と前記序数の二乗に第２の定数を乗じて得た結果との和を所定の除数で除して得た剰余をアドレスとして生成するアドレス生成装置であって、
前記第１の結果を前記除数で除することにより第１中間剰余を得る第１演算手段と、
前記序数の所定の関数を前記除数で除することにより第２中間剰余を得る第２演算手段と、
前記第１中間剰余と前記第２中間剰余との和を前記除数で除して最終剰余を得る第３演算手段と、
を備え、
前記最終剰余を前記アドレスとすることを特徴とするアドレス生成装置。
【０１２０】
（付記２）
付記１に記載のアドレス生成装置であって、
前記第２演算手段は、
前記序数を、前記第２の定数と前記除数により定まる所定の数値により除することにより第３中間剰余を得る手段と、
前記第３中間剰余と前記第２中間剰余との対応関係を保持した記憶手段を備え、
前記第３中間剰余をキーとして前記記憶手段を参照することにより前記第２中間剰余を得ることを特徴とするアドレス生成装置。
【０１２１】
（付記３）
付記２に記載のアドレス生成装置であって、
前記第３中間剰余を得る手段は、
前記序数をカウントして、カウント値を前記第３中間剰余として出力するカウンタと、
前記第３中間剰余が前記所定の数値に達したときに前記カウンタをリセットする手段と、
を備えることを特徴とするアドレス生成装置。
【０１２２】
（付記４）
付記２又は３に記載のアドレス生成装置であって、
前記所定の数値とは、前記第２の定数と前記除数との最大公約数により前記除数を除することにより得た商であることを特徴とするアドレス生成装置。
【０１２３】
（付記５）
付記２乃至４の何れか１に記載のアドレス生成装置であって、
前記第２演算手段は、前記記憶手段中の前記所定の除数に対応した前記第２中間剰余が格納されている位置まで参照位置を移動させた上で、前記第３中間剰余をキーとして前記記憶手段を参照することにより前記第２中間剰余を得ることを特徴とするアドレス生成装置。
【０１２４】
（付記６）
付記１乃至５の何れか１に記載のアドレス生成装置であって、
前記第１演算手段は、
比較減算器が得た前記第１中間剰余に前記第１の定数を加算して、それにより得た和を前記比較減算器に出力する加算器と、
前記加算器から入力した前記和と前記第１の定数に対して比較減算を行うことにより前記第１中間剰余を得る前記比較減算器と、
を備えることを特徴とするアドレス生成装置。
【０１２５】
（付記７）
付記１乃至６の何れか１に記載のアドレス生成装置と、
入力したデータを書き込みアドレスに従って記憶し、記憶したデータを読み出しアドレスに従って読み出して出力する記憶手段であって、前記序数を、前記書き込みアドレス及び前記読み出しアドレスのうちの一方として使用し、前記アドレス生成装置が生成したアドレスを前記書き込みアドレス及び前記読み出しアドレスのうちの他方として使用する記憶手段と、
を備えることを特徴とするデータ並べ替え装置。
【０１２６】
（付記８）
序数に第１の定数を乗じて得た第１の結果と前記序数の二乗に第２の定数を乗じて得た結果との和を所定の除数で除して得た剰余をアドレスとして生成するアドレス生成方法であって、
前記第１の結果を前記除数で除することにより第１中間剰余を得る第１演算ステップと、
前記序数の所定の関数を前記除数で除することにより第２中間剰余を得る第２演算ステップと、
前記第１中間剰余と前記第２中間剰余との和を前記除数で除して最終剰余を得る第３演算ステップと、
を有し、
前記最終剰余を前記アドレスとすることを特徴とするアドレス生成方法。
【０１２７】
（付記９）
付記８に記載のアドレス生成方法であって、
前記第２演算ステップは、
前記序数を、前記第２の定数と前記除数により定まる所定の数値により除することにより第３中間剰余を得るステップと、
前記第３中間剰余と前記第２中間剰余との対応関係を保持した記憶手段を参照するステップを含み、
前記第３中間剰余をキーとして前記記憶手段を参照することにより前記第２中間剰余を得ることを特徴とするアドレス生成方法。
【０１２８】
（付記１０）
付記９に記載のアドレス生成方法であって、
前記第３中間剰余を得るステップは、
前記序数をカウントして、カウント値を前記第３中間剰余として出力するカウンタと、
前記第３中間剰余が前記所定の数値に達したときに前記カウンタをリセットするステップと、
を含むことを特徴とするアドレス生成方法。
【０１２９】
（付記１１）
付記９又は１０に記載のアドレス生成方法であって、
前記所定の数値とは、前記第２の定数と前記除数との最大公約数により前記除数を除することにより得た商であることを特徴とするアドレス生成方法。
【０１３０】
（付記１２）
付記９乃至１１の何れか１に記載のアドレス生成方法であって、
前記第２演算ステップは、前記記憶手段中の前記所定の除数に対応した前記第２中間剰余が格納されている位置まで参照位置を移動させた上で、前記第３中間剰余をキーとして前記記憶ステップを参照することにより前記第２中間剰余を得ることを特徴とするアドレス生成方法。
【０１３１】
（付記１３）
付記８乃至１２の何れか１に記載のアドレス生成方法であって、
前記第１演算ステップは、
比較減算器が得た前記第１中間剰余に前記第１の定数を加算して、それにより得た和を前記比較減算器に加算器を使用して出力するステップと、
前記比較減算器が、前記加算器から入力した前記和と前記第１の定数に対して比較減算を行うことにより前記第１中間剰余を得るステップと、
を含むことを特徴とするアドレス生成方法。
【０１３２】
（付記１４）
付記８乃至１３の何れか１に記載のアドレス生成方法に加え、
入力したデータを書き込みアドレスに従って記憶し、記憶したデータを読み出しアドレスに従って読み出して出力する記憶ステップであって、前記序数を、前記書き込みアドレス及び前記読み出しアドレスのうちの一方として使用し、前記アドレス生成方法が生成したアドレスを前記書き込みアドレス及び前記読み出しアドレスのうちの他方として使用する記憶ステップと、
を含むことを特徴とするデータ並べ替え方法。
【０１３３】
（付記１５）
ＬＴＥ(Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ  ３ＧＰＰ  ＴＳ  ３６．２１２)で用いるターボ符号化および復号のためのインタリーブ回路においてＧＣＤ（最大公約数）を用いて得られる周期巡回するデータ系列を用いてインタリーブに用いるＤｕａｌ  Ｐｏｒｔ  ＲＡＭのアドレス生成を行うインタリーブ回路。
【０１３４】
（付記１６）
付記１５記載のインタリーブ回路であって、前記周期巡回するデータをＲＯＭに格納し、情報ビットｉ（０，１，２．．．Ｋ−１の任意の値）から読み出しすることでインタリーブのアドレス生成を行うインタリーブ回路。
【産業上の利用可能性】
【０１３５】
本発明は、インタリーブ処理及びデインタリーブ処理に好適である。
【符号の説明】
【０１３６】
１０１  ターボ符号器
１０２  符号化回路１
１０３  符号化回路２
１０４  インタリーブ回路
１０５  送信機
２０１  受信機
２０２  ターボ復号器
２０３  デインタリーブ回路
２０４  第１の復号回路
２０５  インタリーブ回路
２０６  第２の復号回路
２０７  デマルチプレクサ
３００  インタリーブ回路
３０１  書き込みカウンタ
３０２  読み出しカウンタ
３０３  ｆ１乗算器
３０４  ｉ２乗算器
３０５  ｆ２乗算器
３０６  加算器
３０７  モジュロ演算回路
３０８  Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ
４００  デインタリーブ回路
４０１  書き込みカウンタ
４０２  読み出しカウンタ
４０３  ｆ１乗算器
４０４  ｉ２乗算器
４０５  ｆ２乗算器
４０６  加算器
４０７  モジュロ演算回路
４０８  Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ
５０１  モジュロ演算の比較減算要素
６０１  ｆ１加算器
６０２  ｆ１比較減算器
６０３  比較器
６０４  ｆ２算出カウンタ
６０５  オフセット加算器
６０６  ＲＯＭ
６０７  ｆ１，ｆ２加算器
６０８  ｆ１，ｆ２比較減算器
６０９  書き込みカウンタ
６１０  Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ
７０１  ｆ１加算器
７０２  ｆ１比較減算器
７０３  比較器
７０４  ｆ２算出カウンタ
７０５  オフセット加算器
７０６  ＲＯＭ
７０７  ｆ１，ｆ２加算器
７０８  ｆ１，ｆ２比較減算器
７０９  読み出しカウンタ
７１０  Ｄｕａｌ  Ｐｏｒｔ  ＲＡＭ
【図１】
2015037277.tif 000003
【図２】
2015037277.tif 000004
【図３】
2015037277.tif 000005
【図４】
2015037277.tif 000006
【図５】
2015037277.tif 000007
【図６】
2015037277.tif 000008
【図７−１】
2015037277.tif 000009
【図７−２】
2015037277.tif 000010
【図７−３】
2015037277.tif 000011
【図７−４】
2015037277.tif 000012
【図７−５】
2015037277.tif 000013
【図７−６】
2015037277.tif 000014
【図８−１】
2015037277.tif 000015
【図８−２】
2015037277.tif 000016
【図８−３】
2015037277.tif 000017
【図８−４】
2015037277.tif 000018
【図８−５】
2015037277.tif 000019
【図８−６】
2015037277.tif 000020
【図９】
2015037277.tif 000021
【図１０】
2015037277.tif 000022