(57)【要約】【課題】  ＩＭＴ２０００の標準規格３ＧＰＰ ＴＳ２５．２１２で規定されるターボ符号のインターリーバで使用されるパラメータである行内入れ替えパターンＵ[ｉ][ｊ]を、素数ｐ、ベースシーケンスｓ[ｊ]、行間入れ替えパターンＴ[ｉ]、素数列ｑ[ｉ]から求める際に、中間値として求められるｙ[ｉ]＝ｑ[ｉ]×ｍｏｄ（ｐ−１）を簡単に計算する。【解決手段】  パラメータ演算装置は、ステップ３２で、ｉ、ｄｉｖを０に初期化する。ステップ３３で、ｑ[ｉ]≧ｄｉｖ＋ｐ−１の場合、ステップ３４で、ｄｉｖの値にｐ−１を加算する。ｑ[ｉ]＜ｄｉｖ＋ｐ−１の場合、そのままステップ３５に進む。ステップ３５で、ｙ[ｉ]＝ｑ[ｉ]−ｄｉｖから、ｙ[ｉ]を求める。ステップ３６で、ｉをインクリメントし、ｉがＲになるまで、ステップ３３からステップ３６の処理を繰り返す。以上により、多くのクロック数を要する剰余演算を行わなくて済む。【選択図】  図２
2005244770.tif 000002
【特許請求の範囲】
【請求項１】
ＩＭＴ２０００の標準規格である３ＧＰＰ ＴＳ２５．２１２で規定されるターボ符号のインターリーバ装置に対して、前記インターリーバ装置が送信データを符号化するのに必要な行内入れ替えパターンＵ[ｉ][ｊ]と、行間入れ替えパターンＴ[ｉ]を出力するインターリーブパラメータ演算装置が、前記送信データのデータ長から求めた、前記行間入れ替えパターンＴ[ｉ]と、素数ｐと、ベースシーケンスｓ[ｊ]と、素数列ｑ[ｉ]をもとに前記行内入れ替えパターンＵ[ｉ][ｊ]を計算する過程で、中間値として求めるべきｙ[ｉ]＝ｑ[ｉ]×ｍｏｄ（ｐ−１）を計算するインターリーブパラメータ演算方法において、
前記インターリーブパラメータ演算装置が、ｉと変数ｄｉｖを０に初期化する第１のステップと、
前記インターリーブパラメータ演算装置が、ｑ[ｉ]≧ｄｉｖ＋ｐ−１の場合、ｄｉｖの値にｐ−１を加算して保存し、ｑ[ｉ]＜ｄｉｖ＋ｐ−１の場合、ｄｉｖの値をそのまま保存する第２のステップと、
前記インターリーブパラメータ演算装置が、前記第２のステップで保存されたｄｉｖの値をもとに、ｙ[ｉ]＝ｑ[ｉ]−ｄｉｖから、ｙ[ｉ]を求める第３のステップを有し、
前記インターリーブパラメータ演算装置が、ｉがインターリーバの行数Ｒになるまでｉをインクリメントして、前記第２のステップと前記第３のステップを繰り返し、すべてのｉに対して、ｙ[ｉ]を求めることを特徴とするインターリーブパラメータ演算方法。
【請求項２】
請求項１に記載の前記インターリーブパラメータ演算方法を、前記インターリーブパラメータ演算装置となるべきコンピュータに実行させるプログラム。
【請求項３】
請求項１に記載の前記インターリーブパラメータ演算方法を、前記インターリーブパラメータ演算装置となるべきコンピュータに実行させるプログラムを記録した、コンピュータ読み取りが可能な記録媒体。
【請求項４】
ＩＭＴ２０００の標準規格である３ＧＰＰ ＴＳ２５．２１２で規定されるターボ符号のインターリーバ装置に対して、前記インターリーバ装置が送信データを符号化するのに必要な行内入れ替えパターンＵ[ｉ][ｊ]と、行間入れ替えパターンＴ[ｉ]を出力するインターリーブパラメータ演算装置であって、前記送信データのデータ長から求めた、前記行間入れ替えパターンＴ[ｉ]と、素数ｐと、ベースシーケンスｓ[ｊ]と、素数列ｑ[ｉ]をもとに前記行内入れ替えパターンＵ[ｉ][ｊ]を計算する過程で、中間値として求めるべきｙ[ｉ]＝ｑ[ｉ]×ｍｏｄ（ｐ−１）を計算するインターリーブパラメータ演算装置において、
ｉと変数ｄｉｖを０に初期化する第１の手段と、
ｑ[ｉ]≧ｄｉｖ＋ｐ−１の場合、ｄｉｖの値にｐ−１を加算して保存し、ｑ[ｉ]＜ｄｉｖ＋ｐ−１の場合、ｄｉｖの値をそのまま保存する第２の手段と、
前記第２の手段が保存したｄｉｖの値をもとに、ｙ[ｉ]＝ｑ[ｉ]−ｄｉｖから、ｙ[ｉ]を求める第３の手段と、
ｉがインターリーバの行数Ｒになるまでｉをインクリメントして、前記第２の手段と前記第３の手段に処理を繰り返えさせて、すべてのｉに対して、ｙ[ｉ]を求める第４の手段を有することを特徴とするインターリーブパラメータ演算装置。
【請求項５】
請求項４に記載の前記インターリーブパラメータ演算装置を有する携帯電話機。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、第３世代の移動通信システム（ＩＭＴ２０００）の無線アクセス方式（ＲＡＮ）の１つとして標準化されている広域ＤＳ−ＣＤＭＡ（Ｗ−ＣＤＭＡ）において規格化されている、素数インターリーバと呼ばれるターボコーディング用の内部インターリーバに関する。
【背景技術】
【０００２】
広域ＤＳ−ＣＤＭＡ（Ｗ−ＣＤＭＡ）は、第３世代の移動通信システム（ＩＭＴ２０００）の無線アクセス方式（ＲＡＮ）の１つとして標準化され、その中で、素数インターリーバと呼ばれるターボコーディング用の内部インターリーバが規格化されている。その詳細な説明が、「３ｒｄ Ｇｅｎｅｒａｔｉｏｎ Ｐａｒｔｎｅｒｓｈｉｐ Ｐｒｏｊｅｃｔ； Ｔｅｃｈｎｉｃａｌ Ｓｐｅｃｉｆｉｃａｔｉｏｎ Ｇｒｏｕｐ Ｒａｄｉｏ Ａｃｃｅｓｓ Ｎｅｔｗｏｒｋ； Ｍｕｌｔｉｐｌｅｘｉｎｇ Ａｎｄ Ｃｈａｎｎｅｌ Ｃｏｄｉｎｇ （ＦＤＤ） （Ｒｅｌｅａｓｅ １９９９） ３ＧＰＰ ＴＳ２５．２１２ Ｖ３．１０．０ （２００２−０６） ４．２．３．２．３章 Ｔｕｒｂｏ Ｃｏｄｅ Ｉｎｔｅｒｎａｌ Ｉｎｔｅｒｌｅａｖｅｒ １６頁〜１９頁」（非特許文献１）に開示されている。以下の説明は、非特許文献１の記載にもとづく。
【０００３】
ＩＭＴ２０００（Ｗ−ＣＤＭＡ）の標準規格３ＧＰＰ ＴＳ２５．２１２で規定されるターボ符号のインターリーバにおいて、送信するデータを符号化するのに必要不可欠な行内の入れ替えパターンＵ[ｉ][ｊ]は、素数ｐ、ベースシーケンスｓ[ｊ]、後述のように定義されるｒ[ｉ]を用いて、次のように定義されている。
【０００４】
（数１）
Ｕ[ｉ][ｊ]＝ｓ[（ｊ×ｒ[ｉ]）×ｍｏｄ（ｐ−１）]＝ｓ[ｘ[ｉ][ｊ]]
ただし、ｘ[ｉ][ｊ]＝（ｊ×ｒ[ｉ]）×ｍｏｄ（ｐ−１）。
【０００５】
ここで、ｒ[ｉ]は、行間の入れ替えパターンＴ[ｉ]と、後述のように定義される素数列ｑ[ｉ]を用いて、次のように定義されている。
【０００６】
（数２）
ｒ[Ｔ[ｉ]]＝ｑ[ｉ]。
【０００７】
素数列ｑ[ｉ]は、インターリーバの行数Ｒ、素数pを用いて、次のように定義されている。
【０００８】
（数３）
ｑ[０]＝１
ｑ[ｉ]（ｉ＝１，２，・・・，Ｒ−１）は、ｇ．ｃ．ｄ（ｑ[ｉ]，ｐ−１）＝１かつｑ[ｉ]＞６かつｑ[ｉ]＞ｑ[ｉ−１]を満たす最小の素数。
ただし、ｇ．ｃ．ｄ（ｘ，ｙ）は、ｘとｙの最大公約数。
【０００９】
表１を参照すると、インターリーバの行数Ｒ＝２０のときの、素数ｐの各値に対する素数列ｑ[ｉ]の値が例示されている。
【００１０】
【表１Ａ】
2005244770.tif 000003
【００１１】
【表１Ｂ】
2005244770.tif 000004
以上のように、行内の入れ替えパターンＵ[ｉ][ｊ]は、素数ｐ、ベースシーケンスｓ[ｊ]、行間の入れ替えパターンＴ[ｉ]、素数列ｑ[ｉ]を用いて計算されることになる。
【００１２】
ＩＭＴ２０００における携帯電話機などでは、まず、送信を行うデータのデータ長が求められる。そして、求められたデータ長（または、送信を行うデータを格納する行列の大きさ）にしたがって、素数ｐ、ベースシーケンスｓ[ｊ]、行間の入れ替えパターンＴ[ｉ]、素数列ｑ[ｉ]が求められ、これらをもとに、行内の入れ替えパターンＵ[ｉ][ｊ]が計算される。そして、計算された行内の入れ替えパターンＵ[ｉ][ｊ]と、行間の入れ替えパターンＴ[ｉ]をもとに、送信データが符号化され、符号化された送信データは携帯電話網に送出される。この符号化されたデータを受信した別の携帯電話機は、同じく計算された行内の入れ替えパターンＵ[ｉ][ｊ]と、行間の入れ替えパターンＴ[ｉ]をもとに、符号化されている受信データを復号化する。
【００１３】
素数ｐ、ベースシーケンスｓ[ｊ]、素数列ｑ[ｉ]は、送信を行うデータのデータ長（または、送信を行うデータを格納する行列の大きさ）から、一義的に求められるようになっている。素数列ｑ[ｉ]に関しては、（数３）および[表１]で示した。また、ベースシーケンスｓ[ｊ]の効率的な計算方法が、本出願人により、すでに出願されている（特願２００３−２９８４９３）。また、行間の入れ替えパターンＴ[ｉ]には、４つの固定化されたパターンが存在し、いずれか１つが選択される。
【００１４】
以上のように、行内の入れ替えパターンＵ[ｉ][ｊ]は、素数ｐ、ベースシーケンスｓ[ｊ]、行間の入れ替えパターンＴ[ｉ]、素数列ｑ[ｉ]を用いて計算されるが、計算の簡略化のため、行内の入れ替えパターンＵ[ｉ][ｊ]を求めるための中間値として、次のように定義されるｙ[ｉ]を求めたうえで、行内の入れ替えパターンＵ[ｉ][ｊ]を計算することが通常である。
【００１５】
（数４）
ｙ[ｉ]＝ｗ[ｉ][１]＝ｑ[ｉ]×ｍｏｄ（ｐ−１）。
【００１６】
ここで、ｗ[ｉ][ｊ]は、次のように定義される。
【００１７】
（数５）
ｗ[ｉ][ｊ]＝ｘ[Ｔ[ｉ]][ｊ]＝（ｊ×ｒ[Ｔ[ｉ]]）×ｍｏｄ（ｐ−１）＝（ｊ×ｑ[ｉ]）×ｍｏｄ（ｐ−１）。
【００１８】
以下、具体例を用いて、従来技術による、行内の入れ替えパターンＵ[ｉ][ｊ]の計算方法を説明する。
【００１９】
まず、送信を行うデータのデータ長から、素数ｐ、ベースシーケンスｓ[ｊ]、行間の入れ替えパターンＴ[ｉ]、素数列ｑ[ｉ]が求められる。例えば、次のような、ｐ、ｓ[ｊ]、Ｔ[ｉ]、ｑ[ｉ]が得られたとする。
【００２０】
（設定パラメータ）
ｐ＝７
ｓ[ｊ]＝[１，３，２，６，４，５]（ｊ＝０〜５）
Ｔ［ｉ］＝[４，３，２，１，０]（ｉ＝０〜４）（Ｒ＝５）
ｑ[ｉ]＝[１，７，１１，１３，１７]（ｉ＝０〜４）（Ｒ＝５）。
【００２１】
まず、中間値ｙ[ｉ]が、（数４）、ｐ、ｑ[ｉ]をもとに、次のように計算される。図４を参照すると、ｙ[ｉ]を求めるためのフローチャートが示されている。
【００２２】
（計算プロセス１）
ｙ[０]＝ｑ[０]×ｍｏｄ（７−１）＝  １×ｍｏｄ６＝１
ｙ[１]＝ｑ[１]×ｍｏｄ（７−１）＝  ７×ｍｏｄ６＝１
ｙ[２]＝ｑ[２]×ｍｏｄ（７−１）＝１１×ｍｏｄ６＝５
ｙ[３]＝ｑ[３]×ｍｏｄ（７−１）＝１３×ｍｏｄ６＝１
ｙ[４]＝ｑ[４]×ｍｏｄ（７−１）＝１７×ｍｏｄ６＝５。
【００２３】
次に、ｘ[ｉ][１]が、（計算プロセス１）で求められたｙ[ｉ]、Ｔ[ｉ]、（数４）、（数５）をもとに、次のように求められる。
【００２４】
（計算プロセス２）
ｙ[ｉ]＝ｗ[ｉ][１]＝ｘ[Ｔ[ｉ]][１]
ｙ[０]＝ｗ[０][１]＝ｘ[Ｔ[０]][１]＝ｘ[４][１]＝１
ｙ[１]＝ｗ[１][１]＝ｘ[Ｔ[１]][１]＝ｘ[３][１]＝１
ｙ[２]＝ｗ[２][１]＝ｘ[Ｔ[２]][１]＝ｘ[２][１]＝５
ｙ[３]＝ｗ[３][１]＝ｘ[Ｔ[３]][１]＝ｘ[１][１]＝１
ｙ[４]＝ｗ[４][１]＝ｘ[Ｔ[４]][１]＝ｘ[０][１]＝５
よって、ｘ[ｉ][１]＝[５，１，５，１，１]（ｉ＝０〜４）（Ｒ＝５）。
【００２５】
次に、ｘ[ｉ][ｊ]が、（計算プロセス２）で求められたｘ[ｉ][１]、ｐをもとに、次のように（数１）を参考にして、剰余演算を行わずに求められる。
【００２６】
（計算プロセス３）
ｘ[０][０]＝０
ｘ[０][１]＝５
ｘ[０][２]＝ｘ[０][１]＋ｘ[０][１]−(ｐ−１)＝５＋５−６＝４
ｘ[０][３]＝ｘ[０][２]＋ｘ[０][１]−(ｐ−１)＝４＋５−６＝３
ｘ[０][４]＝ｘ[０][３]＋ｘ[０][１]−(ｐ−１)＝３＋５−６＝２
ｘ[０][５]＝ｘ[０][４]＋ｘ[０][１]−(ｐ−１)＝２＋５−６＝１
（ｘ[０][１]＋ｘ[０][１]、ｘ[０][２]＋ｘ[０][１]、ｘ[０][３]＋ｘ[０][１]、ｘ[０][４]＋ｘ[０][１]がｐ−１より大きいので、ｐ−１だけ減算される。）
ｘ[１][０]＝０
ｘ[１][１]＝１
ｘ[１][２]＝ｘ[１][１]＋ｘ[１][１]＝１＋１＝２
ｘ[１][３]＝ｘ[１][２]＋ｘ[１][１]＝２＋１＝３
ｘ[１][４]＝ｘ[１][３]＋ｘ[１][１]＝３＋１＝４
ｘ[１][５]＝ｘ[１][４]＋ｘ[１][１]＝４＋１＝５
（ｘ[０][１]＋ｘ[０][１]、ｘ[０][２]＋ｘ[０][１]、ｘ[０][３]＋ｘ[０][１]、ｘ[０][４]＋ｘ[０][１]がｐ−１より小さいので、そのまま出力される。）
ｘ[２][０]＝０
ｘ[２][１]＝５
ｘ[２][２]＝ｘ[２][１]＋ｘ[２][１]−(ｐ−１)＝５＋５−６＝４
ｘ[２][３]＝ｘ[２][２]＋ｘ[２][１]−(ｐ−１)＝４＋５−６＝３
ｘ[２][４]＝ｘ[２][３]＋ｘ[２][１]−(ｐ−１)＝３＋５−６＝２
ｘ[２][５]＝ｘ[２][４]＋ｘ[２][１]−(ｐ−１)＝２＋５−６＝１
（ｘ[０][１]＋ｘ[０][１]、ｘ[０][２]＋ｘ[０][１]、ｘ[０][３]＋ｘ[０][１]、ｘ[０][４]＋ｘ[０][１]がｐ−１より大きいので、ｐ−１だけ減算される。）
ｘ[３][０]＝０
ｘ[３][１]＝１
ｘ[３][２]＝ｘ[３][１]＋ｘ[３][１]＝１＋１＝２
ｘ[３][３]＝ｘ[３][２]＋ｘ[３][１]＝２＋１＝３
ｘ[３][４]＝ｘ[３][３]＋ｘ[３][１]＝３＋１＝４
ｘ[３][５]＝ｘ[３][４]＋ｘ[３][１]＝４＋１＝５
（ｘ[０][１]＋ｘ[０][１]、ｘ[０][２]＋ｘ[０][１]、ｘ[０][３]＋ｘ[０][１]、ｘ[０][４]＋ｘ[０][１]がｐ−１より小さいので、そのまま出力される。）
ｘ[４][０]＝０
ｘ[４][１]＝５
ｘ[４][２]＝ｘ[４][１]＋ｘ[４][１]−(ｐ−１)＝５＋５−６＝４
ｘ[４][３]＝ｘ[４][２]＋ｘ[４][１]−(ｐ−１)＝４＋５−６＝３
ｘ[４][４]＝ｘ[４][３]＋ｘ[４][１]−(ｐ−１)＝３＋５−６＝２
ｘ[４][５]＝ｘ[４][４]＋ｘ[４][１]−(ｐ−１)＝２＋５−６＝１
（ｘ[０][１]＋ｘ[０][１]、ｘ[０][２]＋ｘ[０][１]、ｘ[０][３]＋ｘ[０][１]、ｘ[０][４]＋ｘ[０][１]がｐ−１より大きいので、ｐ−１だけ減算される）。
【００２７】
最後に、ｘ[ｉ][ｊ]、ｓ[ｉ]、（数１）をもとに、Ｕ[ｉ][ｊ]が求められる。
【００２８】
（計算プロセス４）
Ｕ[０][０]＝ｓ[ｘ[０][０]]＝ｓ[０]＝１
Ｕ[０][１]＝ｓ[ｘ[０][１]]＝ｓ[５]＝５
Ｕ[０][２]＝ｓ[ｘ[０][２]]＝ｓ[４]＝４
Ｕ[０][３]＝ｓ[ｘ[０][３]]＝ｓ[３]＝６
Ｕ[０][４]＝ｓ[ｘ[０][４]]＝ｓ[２]＝２
Ｕ[０][５]＝ｓ[ｘ[０][５]]＝ｓ[１]＝３
Ｕ[１][０]＝ｓ[ｘ[１][０]]＝ｓ[０]＝１
Ｕ[１][１]＝ｓ[ｘ[１][１]]＝ｓ[１]＝３
Ｕ[１][２]＝ｓ[ｘ[１][２]]＝ｓ[２]＝２
Ｕ[１][３]＝ｓ[ｘ[１][３]]＝ｓ[３]＝６
Ｕ[１][４]＝ｓ[ｘ[１][４]]＝ｓ[４]＝４
Ｕ[１][５]＝ｓ[ｘ[１][５]]＝ｓ[５]＝５
Ｕ[２][０]＝ｓ[ｘ[２][０]]＝ｓ[０]＝１
Ｕ[２][１]＝ｓ[ｘ[２][１]]＝ｓ[５]＝５
Ｕ[２][２]＝ｓ[ｘ[２][２]]＝ｓ[４]＝４
Ｕ[２][３]＝ｓ[ｘ[２][３]]＝ｓ[３]＝６
Ｕ[２][４]＝ｓ[ｘ[２][４]]＝ｓ[２]＝２
Ｕ[２][５]＝ｓ[ｘ[２][５]]＝ｓ[１]＝３
Ｕ[３][０]＝ｓ[ｘ[３][０]]＝ｓ[０]＝１
Ｕ[３][１]＝ｓ[ｘ[３][１]]＝ｓ[１]＝３
Ｕ[３][２]＝ｓ[ｘ[３][２]]＝ｓ[２]＝２
Ｕ[３][３]＝ｓ[ｘ[３][３]]＝ｓ[３]＝６
Ｕ[３][４]＝ｓ[ｘ[３][４]]＝ｓ[４]＝４
Ｕ[３][５]＝ｓ[ｘ[３][５]]＝ｓ[５]＝５
Ｕ[４][０]＝ｓ[ｘ[４][０]]＝ｓ[０]＝１
Ｕ[４][１]＝ｓ[ｘ[４][１]]＝ｓ[５]＝５
Ｕ[４][２]＝ｓ[ｘ[４][２]]＝ｓ[４]＝４
Ｕ[４][３]＝ｓ[ｘ[４][３]]＝ｓ[３]＝６
Ｕ[４][４]＝ｓ[ｘ[４][４]]＝ｓ[２]＝２
Ｕ[４][５]＝ｓ[ｘ[４][５]]＝ｓ[１]＝３。
【非特許文献１】「３ｒｄ Ｇｅｎｅｒａｔｉｏｎ Ｐａｒｔｎｅｒｓｈｉｐ Ｐｒｏｊｅｃｔ； Ｔｅｃｈｎｉｃａｌ Ｓｐｅｃｉｆｉｃａｔｉｏｎ Ｇｒｏｕｐ Ｒａｄｉｏ Ａｃｃｅｓｓ Ｎｅｔｗｏｒｋ； Ｍｕｌｔｉｐｌｅｘｉｎｇ Ａｎｄ Ｃｈａｎｎｅｌ Ｃｏｄｉｎｇ （ＦＤＤ） （Ｒｅｌｅａｓｅ １９９９） ３ＧＰＰ ＴＳ２５．２１２ Ｖ３．１０．０ （２００２−０６） ４．２．３．２．３章 Ｔｕｒｂｏ Ｃｏｄｅ Ｉｎｔｅｒｎａｌ Ｉｎｔｅｒｌｅａｖｅｒ １６頁〜１９頁」
【発明の開示】
【発明が解決しようとする課題】
【００２９】
携帯電話機などに使用されるプロセッサでは、その回路規模が抑えられているため、剰余演算を１桁ずつ行うものが多く、プロセッサのデータ幅が１６ｂｉｔの場合、（計算プロセス１）のｙ[ｉ]の各行の演算（図４のステップ４３）には１６クロックを要することになる。さらに、図４の条件分岐（ステップ４５）に２クロック、その以外の処理（ステップ４４）に１クロックを要するとすると、図４のステップ４３からステップ４５の１回の繰り返し当たり、１９クロックを要する。その結果、（計算プロセス１）には、合計で（１９×Ｒ）クロック（Ｒの最大値は２０なので、最大３８０クロック）を要することになる。
【００３０】
本発明の目的は、（計算プロセス１）のｙ[ｉ]を求めるのに要するクロック数を大幅に減らし、（計算プロセス１）の処理時間を削減することにある。
【課題を解決するための手段】
【００３１】
上記目的を達成するために、本発明は、（計算プロセス１）のｙ[ｉ]を求める際に剰余演算を行わずに、代わりに加算と減算のみで、ｙ[ｉ]を計算する。具体的には、以下のように計算する。
【００３２】
[表１]を参照すると、すべてのｐにおいて、ｑ[ｉ＋１]−ｑ[ｉ]＜ｐ−１なので、
（数６）
ｚ[ｉ]＝ｆｌｏｏｒ（ｑ[ｉ]／（ｐ−１））
ただし、ｆｌｏｏｒ（ｑ[ｉ]／（ｐ−１））は、ｑ[ｉ]／（ｐ−１）の商
と、ｚ[ｉ]を定義すると、
（数７）
ｚ[ｉ]×(ｐ−１)≦ｑ[ｉ]＜（ｚ[ｉ]＋１）×(ｐ−１)
ｚ[ｉ]×(ｐ−１)≦ｑ[ｉ]＜ｑ[ｉ＋１]＜ｑ[ｉ]＋ｐ−１＜（ｚ[ｉ]＋２）×(ｐ−１)
となる。よって、ｚ[ｉ]は、
（数８）
ｚ[０]＝０
ｑ[ｉ]＜ｚ[ｉ−１]＋ｐ−１の場合、ｚ[ｉ]＝ｚ[ｉ−１]
ｑ[ｉ]≧ｚ[ｉ−１]＋ｐ−１の場合、ｚ[ｉ]＝ｚ[ｉ−１]＋ｐ−１
ただし、ｉ＝１，・・・，Ｒ−１
で表される。これを、ｉ＝１から順に計算することで、剰余演算を行わずに、加算と減算のみで、ｚ[ｉ]を求めることができる。そして、
（数９）
ｙ[ｉ]＝ｑ[ｉ]−ｚ[ｉ]
により、剰余演算を行わずに、加算と減算のみで、ｙ[ｉ]を求めることができる。
【発明の効果】
【００３３】
以上説明したように、本発明によれば、ｙ[ｉ]を求めるために、クロック数を多く要する剰余演算を行わなくてもよいので、プロセッサの動作時間を削減することができる。また、プロセッサの動作時間の削減により、プロセッサの消費電力を削減することができる。また、剰余演算器を用いて装置を構成していた場合と比べて、剰余演算器が不要となることで、その分、装置の回路規模を削減できる。また、装置の回路規模の削減により、装置の消費電力が削減できる。
【発明を実施するための最良の形態】
【００３４】
次に、本発明の実施の形態について、図面を参照して詳細に説明する。
【００３５】
本発明のｙ[ｉ]の計算方法は、[課題を解決するための手段]で説明した通りであるが、ここでは、具体例を用いて説明する。
【００３６】
ここでも、[背景技術]で用いた（設定パラメータ）を用いる。（設定パラメータ）、（数８）、（数９）をもとに、[背景技術]の（計算プロセス１）に対応するｙ[ｉ]の計算を行う。
【００３７】
まず、（数８）、ｑ[ｉ]、ｐをもとに、ｚ[ｉ]が計算される。
【００３８】
（ｚ[ｉ]の計算）
ｚ[０]＝                  ０
７＝ｑ[１]≧ｚ[０]＋ｐ−１＝  ６なので、ｚ[１]＝ｚ[０]＋ｐ−１＝  ６
１１＝ｑ[２]＜ｚ[１]＋ｐ−１＝１２なので、ｚ[２]＝ｚ[１]        ＝  ６
１３＝ｑ[３]≧ｚ[２]＋ｐ−１＝１２なので、ｚ[３]＝ｚ[２]＋ｐ−１＝１２
１７＝ｑ[４]＜ｚ[３]＋ｐ−１＝１８なので、ｚ[４]＝ｚ[３]        ＝１２。
【００３９】
次に、（ｚ[ｉ]の計算）で求められたｚ[ｉ]、ｑ[ｉ]、（数９）をもとに、ｙ[ｉ]が求められる。
【００４０】
（ｙ[ｉ]の計算）
ｙ[０]＝ｑ[０]−ｚ[０]＝  １−  ０＝１
ｙ[１]＝ｑ[１]−ｚ[１]＝  ７−  ６＝１
ｙ[２]＝ｑ[２]−ｚ[２]＝１１−  ６＝５
ｙ[３]＝ｑ[３]−ｚ[３]＝１３−１２＝１
ｙ[４]＝ｑ[４]−ｚ[４]＝１７−１２＝５。
【００４１】
得られた結果は、[背景技術]の（計算プロセス１）で得られた結果と一致している。
【００４２】
以降、Ｕ[ｉ][ｊ]を求めるために、[背景技術]の（計算プロセス２）から（計算プロセス４）と全く同じ計算を行う。（計算プロセス２）から（計算プロセス４）には、剰余演算は含まれていない。
【００４３】
以下、このｙ[ｉ]の計算方法を採用したインターリーブパラメータ演算装置について、詳細に説明する。
【実施例】
【００４４】
図１を参照すると、本発明の一実施例の構成が示されている。１は、インターリーブパラメータ演算装置１であり、プロセッサ１１と、ｑ[ｉ]メモリ１２と、ｙ[ｉ]メモリ１４を含む。２は、インターリーバである。インターリーブパラメータ演算装置１と、インターリーバ２は、携帯電話機などに搭載される。
【００４５】
インターリーブパラメータ演算装置１は、送信を行うデータを受信し、そのデータ長を求める。プロセッサ１１が、求められたデータ長から、ｐ、ｓ[ｊ]、Ｔ[ｉ]、ｑ[ｉ]、次いで中間値ｙ[ｉ]、次いでＵ[ｉ][ｊ]を計算する。プロセッサ１１は、計算したｑ[ｉ]、ｙ[ｉ]を、それぞれｑ[ｉ]メモリ１２、ｙ[ｉ]メモリ１４に格納する。そして、インターリーブパラメータ演算装置１は、インターリーバ２に、Ｕ[ｉ][ｊ]、Ｔ[ｉ]を出力する。
【００４６】
インターリーバ２は、送信を行うデータを受信し、インターリーブパラメータ演算装置１から受信したＵ[ｉ][ｊ]、Ｔ[ｉ]をもとに、送信を行うデータを符号化し、これを出力する。
【００４７】
図２を参照すると、プロセッサ１１が行う計算のうち、上述した本発明のｙ[ｉ]の計算をルーチン化したフローチャートが示されている。
【００４８】
ステップ３２で、ｉ、ｄｉｖを０に初期化する。ここで、変数ｄｉｖは、ｚ[ｉ]に対応する。ステップ３３で、（数８）に対応する判定を行い、ｑ[ｉ]≧ｄｉｖ＋ｐ−１の場合、ステップ３４で、ｄｉｖの値にｐ−１を加算する。ｑ[ｉ]＜ｄｉｖ＋ｐ−１の場合、そのままステップ３５に進む。ステップ３５で、ｙ[ｉ]＝ｑ[ｉ]−ｄｉｖから、ｙ[ｉ]を求める。ステップ３６で、ｉをインクリメントし、ｉがＲになるまで、ステップ３３からステップ３６の処理を繰り返す。
【００４９】
ここで、条件分岐（ステップ３３、３７）は２クロック、それ以外の処理（ステップ３４、３５、３６）は１クロックに相当するので、ステップ３３からステップ３７の１回の繰り返し当たり、７クロックを要する。これは、[発明が解決しようとする課題]で検討したように、従来の方法が、１回の繰り返し当たり１９クロックを要していたので、結局、１２クロック分の処理量削減効果が得られたことになる。Ｒの最大値が２０なので、最大２４０クロックの処理量削減が可能となる。
【００５０】
図３を参照すると、インターリーブパラメータ演算装置１の実装例が示されている。
【００５１】
１２は、ｑ[ｉ]の値を格納するメモリである。７２は、−(ｐ−１)の値を有する定数ブロックである。７３は、−ｄｉｖの値を有するレジスタである。７４は、メモリアドレスを生成するカウンタである。１４は、ｙ[ｉ]の値を格納するメモリである。７６は、メモリ１２のアドレスｉの値を選択するセレクタである。７７は、ｑ[ｉ]−ｄｉｖ、または、ｑ[ｉ]−(ｄｉｖ＋ｐ−１)の値で出力を選択するセレクタである。７８は、−(ｄｉｖ＋ｐ−１)、または、−ｄｉｖの値で出力を選択するセレクタである。７９は、メモリ１４の格納先を選択するセレクタである。
【００５２】
次に、この実装例の動作を説明する。初期状態では、カウンタ７４、レジスタ７３の値ｉ、ｄｉｖは、それぞれ「０」、「０」を保持している。セレクタ７６により、メモリ１２のアドレスｉのデータｑ[ｉ]が選択される。ｑ[ｉ]と、レジスタ７３の値−ｄｉｖと、定数ブロック７２の値−(ｐ−１)より、ｑ[ｉ]−(ｄｉｖ+ｐ−１)が求められる。ｑ[ｉ]−(ｄｉｖ+ｐ−１)＜０の場合、セレクタ７７、７８は、それぞれｑ[ｉ]−ｄｉｖ、−ｄｉｖを選択し、それ以外の場合は、それぞれｑ[ｉ]−(ｄｉｖ+ｐ−１)、−(ｄｉｖ+ｐ−１)を選択する。セレクタ７７の選択値はメモリ１４のアドレスｉに格納され、セレクタ７８の選択値はレジスタ７３に格納される。以上の処理が、カウンタ７４の値ｉがＲ−１になるまで繰り返される。以上により、メモリ１４にｙ[ｉ]が生成される。
【００５３】
なお、インターリーブパラメータ演算装置１は、専用のハードウェアにより実現する以外に、その機能を実現するためのプログラムを、コンピュータ読み取りが可能な記録媒体に記録して、この記録媒体に記録されたプログラムを、インターリーブパラメータ演算装置１となるべきコンピュータに読み込ませて実行することにより、実現するものでもよい。コンピュータ読み取りが可能な記録媒体とは、フロッピーディスク、光磁気ディスク、ＣＤ−ＲＯＭ等の記録媒体、コンピュータシステムに内蔵されるハードディスク装置等の記憶装置を指す。さらに、コンピュータ読み取りが可能な記録媒体とは、インターネットを介してプログラムを送信する場合のように、短時間の間に、動的にプログラムを保持するもの（伝送媒体もしくは伝送波）、コンピュータシステム内部の揮発性メモリのように、一定時間プログラムを保持しているものも含む。
【図面の簡単な説明】
【００５４】
【図１】本発明の一実施例の構成を示した図である。
【図２】本発明による、ｙ[ｉ]を計算するためのフローチャートである。
【図３】インターリーブパラメータ演算装置の実装例を示した図である。
【図４】従来技術による、ｙ[ｉ]を計算するためのフローチャートである。
【符号の説明】
【００５５】
１  インターリーブパラメータ演算装置
２  インターリーバ
１１  プロセッサ
１２  ｑ[ｉ]メモリ
１４  ｙ[ｉ]メモリ
３１〜３８  ステップ
７２  定数ブロック
７３  レジスタ
７４  カウンタ
７６  セレクタ
７７  セレクタ
７８  セレクタ
７９  セレクタ
４１〜４６  ステップ
【図１】
2005244770.tif 000005
【図２】
2005244770.tif 000006
【図３】
2005244770.tif 000007
【図４】
2005244770.tif 000008