以下、本願が開示するレート調整装置、レート調整方法及びレート調整プログラムの実施の形態について、図面を参照して詳細に説明する。なお、この実施の形態により本発明が限定されるものではない。
(実施の形態1)
図1は、実施の形態1に係る通信システムの構成を示す図である。図1に示すように、本実施の形態に係る通信システムにおいては、送信装置100と受信装置200とが無線通信を行っている。具体的には、送信装置100は、誤り訂正符号化部110、レートマッチング部120、変調部130及び無線送信部140を有している。また、受信装置200は、無線受信部210、チャネル推定部220、復調部230、レートデマッチング部240及び誤り訂正復号部250を有している。
誤り訂正符号化部110は、送信データに対して誤り訂正符号化を行い、得られた符号化データをレートマッチング部120へ出力する。具体的には、誤り訂正符号化部110は、符号化データの各情報ビットにパリティビットを付加し、得られたビット系列を符号化データとしてレートマッチング部120へ出力する。
レートマッチング部120は、誤り訂正符号化部110から出力される符号化データのビット系列に対して、パンクチャ又はレペテションを行ってレートを調整し、得られた調整データを変調部130へ出力する。このとき、レートマッチング部120は、符号化データを複数のブロックに分割し、各ブロックの先頭ビットに関する先頭パラメータを漸化式を用いて順次算出し、先頭パラメータに基づいて各ブロックのレートマッチングを並列的に実行する。なお、詳細については後述するが、レートマッチング部120が漸化式を用いて先頭パラメータを算出するため、レートマッチングの際の処理量の増大を抑制することができる。
変調部130は、レートマッチング部120から出力される調整データを変調し、得られた変調データを無線送信部140へ出力する。無線送信部140は、変調部130から出力される変調データに対して所定の無線送信処理(D/A変換、アップコンバートなど)を施し、得られた無線信号をアンテナを介して送信する。送信された無線信号は、受信装置200によって受信される。
すなわち、無線受信部210は、アンテナを介して無線信号を受信し、受信信号に対して所定の無線受信処理(ダウンコンバート、A/D変換など)を施す。そして、無線受信部210は、受信信号をチャネル推定部220及び復調部230へ出力する。
チャネル推定部220は、受信信号に対するチャネル推定を行い、伝搬路上での位相変動及び振幅変動に対応するチャネル推定値を求める。そして、チャネル推定部220は、求められたチャネル推定値を復調部230へ出力する。
復調部230は、チャネル推定部220から出力されるチャネル推定値を用いて受信信号を復調し、得られた復調データをレートデマッチング部240へ出力する。具体的には、復調部230は、復調によって得られたビット系列を復調データとしてレートデマッチング部240へ出力する。
レートデマッチング部240は、復調部230から出力される復調データのビット系列に対して、レートマッチング部120とは逆の処理を行ってレートを復元し、得られた復元データを誤り訂正復号部250へ出力する。このとき、レートデマッチング部240は、レートマッチング部120と同様に、復調データを複数のブロックに分割し、各ブロックの先頭ビットに関する先頭パラメータを漸化式を用いて順次算出し、先頭パラメータに基づいて各ブロックのレートデマッチングを並列的に実行する。
誤り訂正復号部250は、レートデマッチング部240から出力される復元データを誤り訂正復号し、受信データを出力する。すなわち、誤り訂正復号部250は、パリティビットを用いて情報ビットの誤りを訂正し、誤り訂正後の情報ビットを受信データとして出力する。
図2は、本実施の形態に係るレートマッチング部120の構成を示すブロック図である。図2に示すレートマッチング部120は、基本パラメータ算出部121、先頭パラメータ算出部122、ブロック分割部123、ビット処理部124−0〜n(nは1以上の整数)及びブロック結合部125を有している。
基本パラメータ算出部121は、レートマッチング部120へ入力される符号化データのデータ長及びレートマッチング部120から出力される調整データのデータ長などから、レートマッチング処理に用いられる基本パラメータを算出する。具体的には、基本パラメータ算出部121は、3GPPの規格において規定されている判定値eの初期値eini、増分値eplus及び減分値eminusを算出する。
先頭パラメータ算出部122は、符号化データを分割して得られる複数のブロックの先頭ビットに関する判定値eを算出する。具体的には、先頭パラメータ算出部122は、以下の漸化式(3)、(4)を用いて、i番目のブロックの先頭ビットの判定値(以下「先頭判定値」という)E(i)を算出する。
E(i+1)=eini-α(i+1) ・・・(3)
α(i+1)=[α(i)+Eminus]mod eplus ・・・(4)
ただし、E(0)=einiかつα(0)=0である。また、Eminusは、ブロックのサイズ(すなわちビット数)をBとして、以下の式(5)のように定義される。
Eminus=(eminus・B)modeplus ・・・(5)
したがって、α(i+1)及びEminusは、ある値を増分値eplusで割った余りであるため、増分値eplusより小さい。このことから、式(4)における右辺の[α(i)+Eminus]は、最大でも増分値eplusの2倍を超えないことがわかる。そして、式(4)の右辺は、増分値eplusの2倍を超えない[α(i)+Eminus]を増分値eplusで割った余りであるため、[α(i)+Eminus]が増分値eplus以下であれば、α(i+1)は[α(i)+Eminus]の値そのものであり、[α(i)+Eminus]が増分値eplusより大きければ、α(i+1)は[α(i)+Eminus]から増分値eplusを減算した値となる。換言すれば、先頭パラメータ算出部122は、式(3)、(4)を用いることにより、剰余演算を行う代わりに、大小判定と減算によって各ブロックの先頭判定値E(i)を算出する。
ここで、上式(3)、(4)の導き方について説明しておく。上述したように、m番目のビットの判定値e(m)は、式(1)によって求められる。式(1)のmの範囲を0〜L−1に変更すると、式(1)は、以下の式(6)のようになる。
e(m)=eini-[{eminus・m)}mod eplus], m=0,1,...,L-1 ・・・(6)
ところで、ビットのインデックスmをブロックの番号iとブロック内でのビットのインデックスjとを用いて分解すると、
m=B・i+j
i=0,1,...,ceil(L/B)
j=0,1,...,B-1
となる。ただし、Lは符号化データのサイズ(すなわちビット数)を表し、ceil(x)は、ceil関数と呼ばれ、x以上の最小の整数を表す。このmを式(6)に代入すると、
e(m)=e(B・i+j)
=eini-[{eminus・(B・i+j)}mod eplus]
=eini-[{eminus・B・i+eminus・j}mod eplus] ・・・(7)
と変形することができる。各ブロックの先頭ビットに関しては、ブロック内でのビットのインデックスjが0であるため、式(7)はさらに、以下の式(8)のようになる。
E(i)=e(B・i)
=eini-[{eminus・B・i}mod eplus] ・・・(8)
式(8)において、iに関する項をまとめてα(i)とし、上式(5)に示したEminusを用いれば、式(8)から上式(3)、(4)が得られる。
ブロック分割部123は、L個のビットからなる符号化データをB個ずつのビットの複数のブロックに分割し、得られた各ブロックをそれぞれビット処理部124−0〜124−nへ出力する。
ビット処理部124−0〜124−nは、それぞれブロックのビットに対して、パンクチャ又はレペテションの処理を行い、レートの調整を行なう。このとき、ビット処理部124−0〜124−nは、基本パラメータ算出部121によって算出された増分値eplus及び減分値eminusと、先頭パラメータ算出部122によって算出されたブロックごとの先頭判定値E(i)とを用いて、パンクチャ又はレペテションの対象となるビットを決定する。
すなわち、ビット処理部124−0〜124−nは、パンクチャを行う場合、判定値eの初期値をE(i)として減分値eminusを順次減算し、ブロック内の各ビットに対応する判定値eを求める。そして、ビット処理部124−0〜124−nは、判定値eの値が負になると、対応するビットをパンクチャする。また、ビット処理部124−0〜124−nは、レペテションを行う場合、判定値eの初期値をE(i)として減分値eminusを減算した後、判定値eに増分値eplusを順次加算する。そして、ビット処理部124−0〜124−nは、判定値eの値が正になるまでは、増分値eplusが加算されるごとに同一のビットをレペテションする。
ブロック結合部125は、ビット処理部124−0〜124−nによってそれぞれパンクチャ又はレペテションされた各ブロックを結合し、レートが調整された調整データとして出力する。
図3は、本実施の形態に係る先頭パラメータ算出部122の構成を示すブロック図である。図3に示す先頭パラメータ算出部122は、初期値設定部122a、加算部122b、大小判定部122c、増分値減算部122d、減算部122e、正負判定部122f及び増分値加算部122gを有している。
初期値設定部122aは、基本パラメータ算出部121によって算出される初期値eini、増分値eplus及び減分値eminusから各ブロックの先頭判定値E(i)の算出に必要な初期値を設定する。具体的には、初期値設定部122aは、最初のブロック(0番目のブロック)の先頭判定値E(0)を初期値einiに設定し、上式(3)、(4)で示したα(i)の初期値α(0)を0に設定する。さらに、初期値設定部122aは、上式(5)で示したEminusを算出しておく。そして、初期値設定部122aは、Eminusを加算部122bへ出力するとともに、α(0)及び先頭判定値E(0)を減算部122eへ出力する。
加算部122bは、初期値設定部122aから出力されたEminusと減算部122eからフィードバックされるα(i)とを加算し、加算結果を大小判定部122cへ出力する。すなわち、加算部122bは、式(4)における右辺の[α(i)+Eminus]を算出する。したがって、上述したように、加算部122bの加算結果は、最大でも増分値eplusの2倍を超えない。
大小判定部122cは、加算部122bによる加算結果と増分値eplusとの大小判定を行い、加算結果が増分値eplus以上であれば、加算結果を増分値減算部122dへ出力する。一方、大小判定部122cは、大小判定の結果、加算結果が増分値eplus未満であれば、加算結果を式(4)から得られるα(i+1)として減算部122eへ出力する。
増分値減算部122dは、大小判定部122cの出力から増分値eplusを減算し、得られた減算結果を式(4)から得られるα(i+1)として減算部122eへ出力する。このように、本実施の形態においては、大小判定部122c及び増分値減算部122dによる大小判定及び減算により、除算を行うことなく式(4)に含まれる剰余演算を実行することができる。
減算部122eは、初期値設定部122aからα(0)及び先頭判定値E(0)が出力されると、先頭判定値E(0)を正負判定部122fへ出力するとともに、α(0)を加算部122bへフィードバックする。また、減算部122eは、大小判定部122c又は増分値減算部122dからα(i+1)が出力されると、初期値einiからα(i+1)を減算し、減算結果をE(i+1)として正負判定部122fへ出力するとともに、α(i+1)を加算部122bへフィードバックする。すなわち、減算部122eは、式(3)の演算を行うとともに、α(i+2)の算出のために、α(i+1)をフィードバックする。
正負判定部122fは、減算部122eから出力される先頭判定値E(0)を最初のブロック(0番目のブロック)の先頭ビットのパラメータとしてビット処理部124−0へ出力する。また、正負判定部122fは、減算部122eから出力されるE(i+1)の正負を判定し、E(i+1)が正である場合は、先頭判定値E(i+1)を(i+1)番目のブロックの先頭ビットのパラメータとしてビット処理部124−(i+1)(ただし、i+1≦n)へ出力する。一方、正負判定部122fは、正負判定の結果、E(i+1)が負である場合は、先頭判定値E(i+1)を増分値加算部122gへ出力する。
増分値加算部122gは、正負判定部122fから先頭判定値E(i+1)が出力されると、先頭判定値E(i+1)に増分値eplusを加算し、得られた加算結果を先頭判定値E(i+1)としてビット処理部124−(i+1)へ出力する。
このように、本実施の形態に係る先頭パラメータ算出部122は、上述した漸化式(3)、(4)を用いて各ブロックの先頭判定値E(i)を順に求めていく。このとき、大小判定部122c及び増分値減算部122dによる大小判定及び減算により、除算を行うことなく式(4)に含まれる剰余演算を実行することができる。また、初期値設定部122aによって式(5)の演算が1回行われることにより、あらかじめEminusが算出されるため、先頭判定値E(i)を算出する際の複雑な演算を省略することができる。
図4は、本実施の形態に係るレートデマッチング部240の構成を示すブロック図である。図4において、図2と同じ部分には同じ符号を付し、その説明を省略する。図4に示すレートデマッチング部240は、基本パラメータ算出部121、先頭パラメータ算出部122、ブロック分割部123、ビット処理部241−0〜241−n及びブロック結合部125を有している。
ビット処理部241−0〜241−nは、それぞれブロックのビットに対して、パンクチャ又はレペテションとは逆のデパンクチャ又はデレペテションの処理を行い、送信装置100におけるパンクチャ又はレペテション以前のレートを復元する。このとき、ビット処理部241−0〜241−nは、基本パラメータ算出部121によって算出された増分値eplus及び減分値eminusと、先頭パラメータ算出部122によって算出されたブロックごとの先頭判定値E(i)とを用いて、デパンクチャ又はデレペテションの対象となるビットを決定する。
すなわち、ビット処理部241−0〜241−nは、デパンクチャを行う場合、パンクチャ対象のビットを決定するのと同様の判定により、デパンクチャの対象位置を決定し、決定された対象位置にダミービットを挿入する。また、ビット処理部241−0〜241−nは、デレペテションを行う場合、レペテション対象のビットを決定するのと同様の判定により、デレペテションの対象ビットを決定し、決定された対象ビットを合成する。
なお、レートデマッチング部240には、復調部230から出力される復調データが入力されるため、図4に示すブロック分割部123は、復調データを複数のブロックに分割する。また、図4に示すブロック結合部125は、送信装置100におけるパンクチャ又はレペテション以前のレートを復元した復元データを出力する。
次いで、上記のように構成された送信装置100におけるレート調整処理について、図5に示すフロー図を参照して説明する。なお、受信装置200におけるレート調整処理では、パンクチャ又はレペテションではなくデパンクチャ又はデレペテションが行われるものの、基本的な処理手順は送信装置100におけるレート調整処理と同様であるため説明を省略する。
送信データは、誤り訂正符号化部110によって誤り訂正符号化されることにより(ステップS101)、送信データの情報ビットにパリティビットが付加される。このとき、例えば符号化率3分の1の誤り訂正符号化であれば、1ビットの情報ビットに対して2ビットのパリティビットが付加される。そして、誤り訂正符号化により得られた符号化データのビット系列は、レートマッチング部120へ入力され、ブロック分割部123によって複数のブロックに分割される(ステップS102)。すなわち、L個のビットからなる符号化データのビット系列は、ブロック分割部123によってB個ずつのビットからなる複数のブロックに分割される。分割により得られた複数のブロックは、それぞれビット処理部124−0〜124−nへ出力される。
一方、基本パラメータ算出部121によって、L個のビットからなる符号化データのレートをどの程度調整するかを示すデータの入出力長から、基本パラメータとして3GPPによって規定される初期値eini、増分値eplus及び減分値eminusが算出される(ステップS103)。算出された基本パラメータは、先頭パラメータ算出部122及びビット処理部124−0〜124−nへ出力され、先頭パラメータ算出部122によって、各ブロックの先頭ビットに関するパラメータが算出される(ステップS104)。すなわち、先頭パラメータ算出部122によって漸化式(3)、(4)が用いられ、各ブロックのα(i)及び先頭判定値E(i)が順次算出される。算出された先頭判定値E(i)は、それぞれビット処理部124−i(0≦i≦n)へ出力される。
そして、各ビット処理部124−0〜124−nによって、先頭判定値E(i)と増分値eplus及び減分値eminusとを用いた演算により対象が決定され、ブロック内の各ビットのパンクチャ又はレペテションが行われる(ステップS105)。パンクチャ又はレペテションが行われた各ブロックは、ブロック結合部125へ出力され、ブロック結合部125によって複数のブロックが結合されることにより(ステップS106)、レートが調整された調整データが出力される。
次に、本実施の形態に係る先頭パラメータ算出処理について、図6に示すフロー図を参照しながら説明する。以下の説明においては、複数のブロックのインデックスをiとする。ただし、最初のブロックは0番目のブロックであるため、最初のブロックのインデックスiは0である。
基本パラメータ算出部121によって算出された基本パラメータが初期値設定部122aへ入力されると、初期値設定部122aによって、最初のブロックの先頭判定値E(0)が初期値einiに設定され、α(0)を0に設定される。また、初期値設定部122aによって、ブロック内のビット数と増分値eplus及び減分値eminusとからEminusが算出される。そして、先頭判定値E(0)は、減算部122e及び正負判定部122fを介して、ビット処理部124−0へ出力される(ステップS201)。同時に、α(0)は、加算部122bへフィードバックされる。
また、初期値設定部122aによって算出されたEminusが加算部122bへ出力されると、インデックスiが1にインクリメントされ(ステップS202)、1番目のブロックの先頭パラメータの算出が開始される。すなわち、加算部122bによって、減算部122eからフィードバックされたα(0)と初期値設定部122aから出力されたEminusとが加算されてα(1)が算出される(ステップS203)。加算結果のα(1)は、大小判定部122cへ出力され、大小判定部122cによって、α(1)と増分値eplusの大小が判定される(ステップS204)。
そして、大小判定の結果、α(1)が増分値eplusより大きければ(ステップS204Yes)、α(1)は増分値減算部122dへ出力され、増分値減算部122dによって、α(1)から増分値eplusが減算される(ステップS205)。減算により得られた新たなα(1)は、減算部122eへ出力される。一方、大小判定の結果、α(1)が増分値eplus以下であれば(ステップS204No)、α(1)はそのまま減算部122eへ出力される。
α(1)が減算部122eへ出力されると、減算部122eによって、式(3)の演算が行われ(ステップS206)、1番目のブロックの先頭判定値E(1)が算出される。そして、α(1)が加算部122bへフィードバックされるとともに、算出された先頭判定値E(1)が正負判定部122fへ出力され、正負判定される(ステップS207)。
正負判定の結果、先頭判定値E(1)が負であれば(ステップS207Yes)、先頭判定値E(1)は、増分値加算部122gへ出力され、増分値加算部122gによって、先頭判定値E(1)に増分値eplusが加算される(ステップS208)。加算により得られた新たなE(1)は、1番目のブロックの先頭ビットに関する判定値としてビット処理部124−1へ出力される(ステップS209)。一方、正負判定の結果、先頭判定値E(1)が正であれば(ステップS207No)、そのまま先頭判定値E(1)がビット処理部124−1へ出力される(ステップS209)。
これにより、1番目のブロックの先頭判定値E(1)が算出されたため、インデックスiがインクリメントされ(ステップS210)、ブロック分割部123によって得られるすべてのブロックについて先頭判定値E(i)の算出が完了したか否かが判定される(ステップS211)。判定の結果、まだ先頭判定値E(i)の算出が完了していないブロックがある場合は(ステップS211No)、引き続きα(2)が算出され、算出されたα(2)からE(2)が算出される(ステップS203〜S209)。また、すべてのブロックについて先頭判定値E(i)の算出が完了した場合は(ステップS211Yes)、先頭パラメータ算出処理が終了する。
以上のような先頭パラメータ算出部122による先頭パラメータの算出は、例えば図7に示すアルゴリズムによって実現することも可能である。図7に示すアルゴリズムにおいては、Eminusの算出に際して乗算及び剰余演算が1回行われるものの、以降は、大小判定及び加減算によって各ブロックの先頭判定値E(i)が算出されることがわかる。したがって、先頭パラメータ算出部122における処理量及び回路面積の増大を抑制することができる。
次に、本実施の形態に係るビット処理の具体例であるパンクチャ処理及びレペテション処理について、図8〜11を参照しながら説明する。以下の説明においては、ブロック内のビットのインデックスをjとする。ただし、先頭ビットは0番目のビットであるため、先頭ビットのインデックスjは0である。また、以下の処理は、i番目のブロックに関するビット処理であるものとし、ビット処理部124−iによって実行される。
図8は、パンクチャ処理を示すフロー図である。図8に示すように、先頭パラメータ算出部122によって算出された先頭判定値E(i)がビット処理部124−iへ入力されると、判定値eの初期値が先頭判定値E(i)に設定される(ステップS301)。また、インデックスjが0に設定され(ステップS302)、判定値eから減分値eminusが減算される(ステップS303)。そして、減算後の判定値eが0以下であるか否かが判定され(ステップS304)、判定値eが0以下である場合は(ステップS304Yes)、j番目(ここでは0番目)のビットがパンクチャされる(ステップS305)。また、判定値eに増分値eplusが加算されて更新され(ステップS306)、インデックスjが1インクリメントされる(ステップS307)。一方、減分値eminusを減算後の判定値eが0より大きい場合は(ステップS304No)、j番目(ここでは0番目)のビットをパンクチャすることなく、インデックスjが1インクリメントされる(ステップS307)。
インデックスjが1インクリメントされると、ブロック内にインデックスjに対応するビットがあるか否かが判定される。換言すれば、ブロック内のすべてのビットについてパンクチャの有無の判定が終了したか否かが判定される(ステップS308)。この結果、まだパンクチャの有無の判定が終了していないビットがあれば(ステップS308No)、現在の判定値eから再び減分値eminusが減算されて、j番目のビットのパンクチャの有無が判定される(ステップS303〜S306)。
以上のようなパンクチャ処理をブロック分割部123から出力される4つのブロック#0〜#3について実行する場合の例を図9に示す。図9に示す例では、符号化データのビット数L=30、各ブロックのビット数B=8とし、初期値eini=1、増分値eplus=60、減分値eminus=12としている。図9において、例えばブロック#0に着目すると、入力ビットインデックスj=0については、判定値eは、先頭判定値E(0)=einiから減分値eminusが減算されて更新されるため、−11(<0)となる。したがって、0番目の入力ビットはパンクチャされる。同時に、判定値eは、増分値eplusが加算されて49に更新される。
そして、入力ビットインデックスj=1となると、判定値eから減分値eminusが減算されて更新され、37(>0)となる。したがって、1番目の入力ビットはパンクチャされない。続いて、入力ビットインデックスj=2となると、判定値eから減分値eminusが減算されて更新され、25(>)となる。したがって、2番目の入力ビットはパンクチャされない。以下、同様の処理が繰り返され、入力ビットインデックスj=5のときに、判定値eが再び負になるため、5番目の入力ビットがパンクチャされる。また、他のブロック#1〜#3についても同様の処理が行われ、各ブロックでは、図9において網掛けで示したビットがパンクチャされる。
このように、ブロック#0〜#3内の各入力ビットに対するパンクチャの有無は、ブロック#0〜#3の先頭判定値E(0)〜E(3)に基づいて順次決定することができる。すなわち、各ブロックに関して独立にパンクチャの有無を決定することができるため、それぞれのビット処理部124−0〜124−3は、各ブロックに対するパンクチャ処理を並列に実行する。結果として、レート調整の高速化を図ることができる。
図10は、レペテション処理を示すフロー図である。図10に示すように、先頭パラメータ算出部122によって算出された先頭判定値E(i)がビット処理部124−iへ入力されると、判定値eの初期値が先頭判定値E(i)に設定される(ステップS401)。また、インデックスjが0に設定され(ステップS402)、判定値eから減分値eminusが減算される(ステップS403)。そして、減算後の判定値eが0以下であるか否かが判定され(ステップS404)、判定値eが0以下である場合は(ステップS404Yes)、j番目(ここでは0番目)のビットがレペテションされる(ステップS405)。また、判定値eに増分値eplusが加算されて更新され(ステップS406)、加算後の判定値eが0以下であるか否かが判定され(ステップS407)、判定値eが依然として0以下である場合は(ステップS407Yes)、再度j番目(ここでは0番目)のビットがレペテションされる(ステップS405)。
以降、判定値eが正になるまでj番目(ここでは0番目)のビットのレペテションと増分値eplusの加算とが繰り返される(ステップS405〜S407)。そして、判定値eが正になると(ステップS407No)、j番目のビットのレペテションが終了し、インデックスjが1インクリメントされる(ステップS408)。一方、減分値eminusを減算後の判定値eが0より大きい場合は(ステップS404No)、j番目(ここでは0番目)のビットをレペテションすることなく、インデックスjが1インクリメントされる(ステップS408)。
インデックスjが1インクリメントされると、ブロック内にインデックスjに対応するビットがあるか否かが判定される。換言すれば、ブロック内のすべてのビットについてレペテションの有無の判定が終了したか否かが判定される(ステップS409)。この結果、まだレペテションの有無の判定が終了していないビットがあれば(ステップS409No)、現在の判定値eから再び減分値eminusが減算されて、j番目のビットのレペテションの有無が判定される(ステップS403〜S407)。
以上のようなレペテション処理をブロック分割部123から出力される4つのブロック#0〜#3について実行する場合の例を図11に示す。図11に示す例では、符号化データのビット数L=30、各ブロックのビット数B=8とし、初期値eini=1、増分値eplus=7、減分値eminus=12としている。図11において、例えばブロック#0に着目すると、入力ビットインデックスj=0については、判定値eは、先頭判定値E(0)=einiから減分値eminusが減算されて更新されるため、−11(<0)となる。したがって、0番目の入力ビットはレペテションされ、0番目の出力ビットとなると同時に1番目の出力ビットともなる。
そして、判定値eに増分値eplusが加算されて更新されると、判定値eが−4(<0)となる。したがって、0番目の入力ビットはさらにレペテションされ、2番目の出力ビットとなる。続いて、判定値eに増分値eplusが加算されて更新されると、判定値eが3(>0)となる。したがって、0番目の入力ビットのレペテションは終了し、1番目の入力ビットが3番目の出力ビットとなる。このとき、判定値eは、減分値eminusが減算されて更新され、−9(<0)となる。したがって、1番目の入力ビットはレペテションされ、4番目の出力ビットともなる。以下、同様の処理が繰り返され、各ブロック#0〜#3のビットがレペテションされる。
このように、ブロック#0〜#3内の各入力ビットに対するレペテションの有無は、ブロック#0〜#3の先頭判定値E(0)〜E(3)に基づいて順次決定することができる。すなわち、各ブロックに関して独立にレペテションの有無を決定することができるため、それぞれのビット処理部124−0〜124−3は、各ブロックに対するレペテション処理を並列に実行する。結果として、レート調整の高速化を図ることができる。
以上のパンクチャ処理及びレペテション処理のアルゴリズムを図12に示す。図12に示すアルゴリズムにおいては、ブロックのインデックスi及びブロック内の入力ビットのインデックスjが用いられており、符号化データ全体に対するパンクチャ処理又はレペテション処理が実行される。
以上のように、本実施の形態によれば、入力データを複数のブロックに分割し、各ブロックの先頭ビットに関する先頭判定値を漸化式を用いて順次算出し、得られた先頭判定値に基づいて各ブロックのビット処理を実行してレートを調整する。このため、先頭判定値の算出に際して、乗算及び剰余演算を含む複雑な演算を行う必要がなく、処理量を低減することができる。また、各ブロックについて並列にビット処理を実行することができる。結果として、処理量及び回路面積の増大を抑制しつつ、レート調整の高速化を図ることができる。
(実施の形態2)
実施の形態2の特徴は、入力データを分割して得られる各ブロックについて、あらかじめ入力ビットと出力ビットとの対応関係を示すパターンを決定しておき、入力データのビット系列を決定されたパターンに従って出力する点である。
本実施の形態に係る通信システムの構成は、実施の形態1(図1)と同様であるため、その説明を省略する。本実施の形態においては、送信装置100におけるレートマッチング部120の構成と、受信装置200におけるレートデマッチング部240の構成とが実施の形態1とは異なる。
図13は、本実施の形態に係るレートマッチング部120の構成を示すブロック図である。図13において、図2と同じ部分には同じ符号を付し、その説明を省略する。図13に示すレートマッチング部120は、基本パラメータ算出部121、先頭パラメータ算出部301、パターン決定部302−0〜302−n(nは1以上の整数)、パターン記憶部303及び入出力部304を有している。
先頭パラメータ算出部301は、L個のビットからなる符号化データをB個ずつのビットのブロックに分割した場合に、各ブロックの先頭ビットが何番目の出力ビットとなるかを求める。すなわち、先頭パラメータ算出部301は、各ブロックの先頭ビットの通し番号を示す出力ビットインデックス(以下「先頭インデックス」という)を算出する。
このとき、先頭パラメータ算出部301は、ceil関数を用いて、i番目(0≦i≦floor(L/B))のブロックの直前のブロックまでにおけるパンクチャ又はレペテションされたビットの総数q(i)を以下の式(9)によって算出する。
先頭パラメータ算出部301は、式(9)による演算をすべての入力ビットに対して行う必要はなく、各ブロックについて1回実行すれば良いため、処理量の増大を抑制することができる。そして、先頭パラメータ算出部301は、i番目のブロックの先頭インデックスg(i)を以下の式(10)又は式(11)によって算出する。
g(i)=B・i-q(i) ・・・(10)
g(i)=B・i+q(i) ・・・(11)
ただし、式(10)は、パンクチャが行われる場合の先頭インデックスを求める式であり、式(11)は、レペテションが行われる場合の先頭インデックスを求める式である。さらに、先頭パラメータ算出部301は、実施の形態1に係る先頭パラメータ算出部122と同様に、漸化式(3)、(4)を用いて先頭判定値E(i)を算出する。そして、先頭パラメータ算出部301は、算出された先頭インデックスg(i)及び先頭判定値E(i)をパターン決定部302−i(0≦i≦n)へ出力する。
なお、本実施の形態においては、実際の符号化データが複数のブロックに分割されるのではなく、パターン決定の処理の高速化のための処理単位として便宜的に複数のブロックを想定している。
パターン決定部302−0〜302−nは、基本パラメータ、先頭インデックスg(i)及び先頭判定値E(i)を用いて、各ブロックにおける入力ビットの出力順序を示すパターンを決定する。すなわち、パターン決定部302−0〜302−nは、各ブロックのビットに対するパンクチャ又はレペテションの有無を判定し、ブロック内での入力ビットインデックスjと出力ビットインデックスkとの対応関係を決定する。そして、パターン決定部302−0〜302−nは、対応する入力ビットインデックスjと出力ビットインデックスkとをパターン記憶部303へ出力する。
パターン記憶部303は、パターン決定部302−0〜302−nによって決定されるパターンを記憶する。すなわち、パターン記憶部303は、レートマッチング部120への入力ビットのインデックスと出力ビットのインデックスとを対応付けて記憶する。これにより、パターン記憶部303は、レートマッチング部120へ入力される符号化データの各ビットがレートマッチング部120から何番目に出力されるかのパターンを記憶していることになる。要するに、パターン記憶部303は、符号化データがパンクチャ又はレペテションされる前後のビットの並びの対応関係を記憶している。
入出力部304は、レートマッチング部120へ入力される符号化データのビット系列をパターン記憶部303によって記憶されたパターンに従って出力する。したがって、入出力部304は、パターン記憶部303によって記憶されたパターンに従って、符号化データのパンクチャ又はレペテションを行うことになる。
図14は、本実施の形態に係るレートデマッチング部240の構成を示すブロック図である。図14において、図2及び図13と同じ部分には同じ符号を付し、その説明を省略する。図14に示すレートデマッチング部240は、基本パラメータ算出部121、先頭パラメータ算出部301、パターン決定部302−0〜302−n、パターン記憶部303及び入出力部311を有している。
入出力部311は、レートデマッチング部240へ入力される復調データのビット系列をパターン記憶部303によって記憶されたパターンに従って出力する。ただし、入出力部311は、レートマッチング部120の入出力部304とは逆の処理をする。すなわち、入出力部311は、パターン記憶部303によって記憶された出力ビットインデックスをレートデマッチング部240への入力ビットに対応付け、ダミービットの挿入又は複数のビットの合成を行うことにより、入力ビットインデックスが0から順に並ぶようにビットを出力する。したがって、入出力部311は、パターン記憶部303によって記憶されたパターンに従って、復調データのデパンクチャ又はデレペテションを行うことになる。
次いで、上記のように構成された送信装置100におけるレート調整処理について、図15に示すフロー図を参照して説明する。なお、受信装置200におけるレート調整処理では、パンクチャ又はレペテションではなくデパンクチャ又はデレペテションが行われるものの、基本的な処理手順は送信装置100におけるレート調整処理と同様であるため説明を省略する。また、図15において、図5と同じ部分には同じ符号を付している。
送信データは、誤り訂正符号化部110によって誤り訂正符号化されることにより(ステップS101)、送信データの情報ビットにパリティビットが付加される。このとき、例えば符号化率3分の1の誤り訂正符号化であれば、1ビットの情報ビットに対して2ビットのパリティビットが付加される。そして、誤り訂正符号化により得られた符号化データのビット系列は、レートマッチング部120の入出力部304へ入力される。
一方、基本パラメータ算出部121によって、L個のビットからなる符号化データのレートをどの程度調整するかを示すデータの入出力長から、基本パラメータとして3GPPによって規定される初期値eini、増分値eplus及び減分値eminusが算出される(ステップS103)。算出された基本パラメータは、先頭パラメータ算出部301及びパターン決定部302−0〜302−nへ出力され、先頭パラメータ算出部301によって、各ブロックの先頭ビットに関するパラメータが算出される(ステップS501)。すなわち、先頭パラメータ算出部301によって、上式(9)〜(11)の演算が行われることにより、各ブロックの先頭インデックスg(i)が順次算出される。同時に、漸化式(3)、(4)が用いられ、各ブロックのα(i)及び先頭判定値E(i)が順次算出される。算出された先頭インデックスg(i)及び先頭判定値E(i)は、それぞれパターン決定部302−i(0≦i≦n)へ出力される。
そして、パターン決定部302−0〜302−nによって、先頭インデックスg(i)、先頭判定値E(i)、増分値eplus及び減分値eminusを用いた演算により入出力ビットの対応パターンが決定される(ステップS502)。決定されたパターンは、パターン記憶部303によって記憶され、入出力部304へ入力された符号化データのビット系列がパターンに従って出力されることにより(ステップS503)、レートが調整された調整データが出力される。
次に、本実施の形態に係るパターン決定処理について説明する。図16は、パンクチャ時のパターン決定処理を示すフロー図である。図16において、図8と同じ部分には同じ符号を付している。
先頭パラメータ算出部301によって算出された先頭判定値E(i)がパターン決定部302−iへ入力されると、判定値eの初期値が先頭判定値E(i)に設定される(ステップS301)。また、ブロック内での入力ビットインデックスj及び出力ビットインデックスが0に設定され(ステップS302)、判定値eから減分値eminusが減算される(ステップS303)。そして、減算後の判定値eが0以下であるか否かが判定され(ステップS304)、判定値eが0以下である場合は(ステップS304Yes)、判定値eに増分値eplusが加算されて更新され(ステップS306)、入力ビットのインデックスjが1インクリメントされる(ステップS307)。
一方、減分値eminusを減算後の判定値eが0より大きい場合は(ステップS304No)、j番目(ここでは0番目)の入力ビットがk番目(ここでは0番目)の出力ビットとなることが決定される(ステップS601)。すなわち、ブロック内のj番目(ここでは0番目)の入力ビットはパンクチャされることなく、ブロック内のk番目(ここでは0番目)の出力ビットとなることが決定される。そして、ブロックの先頭インデックスg(i)が用いられて、ブロック内での入力ビットインデックスjと出力ビットインデックスkとの対応関係が、符号化データ全体の入力ビットインデックスと出力ビットインデックスとの対応関係に変換される。具体的には、ブロック内のj番目の入力ビットの入力ビットインデックスは(B・i+j)であり、ブロック内のk番目の出力ビットの出力ビットインデックスは(g(i)+k)である。したがって、これらの入力ビットインデックス及び出力ビットインデックスがパターン記憶部303へ出力される。
また、ブロック内のj番目の入力ビットがパンクチャされずにブロック内のk番目の出力ビットとなる場合には、次の出力ビットのインデックスkが1インクリメントされる(ステップS602)。そして、入力ビットのインデックスjも1インクリメントされる(ステップS307)。
インデックスjが1インクリメントされると、ブロック内にインデックスjに対応するビットがあるか否かが判定される。換言すれば、ブロック内のすべてのビットについてパンクチャの有無の判定が終了したか否かが判定される(ステップS308)。この結果、まだパンクチャの有無の判定が終了していないビットがあれば(ステップS308No)、現在の判定値eから再び減分値eminusが減算されて、j番目のビットのパンクチャの有無が判定される(ステップS303〜S306、S601、S602)。
以上のようなパターン決定処理を4つのブロック#0〜#3について実行する場合の例を図17に示す。図17に示す例では、符号化データのビット数L=30、各ブロックの入力ビット数B=8とし、初期値eini=1、増分値eplus=60、減分値eminus=12としている。図17において、例えばブロック#1の先頭ビットの出力ビットインデックス(先頭インデックス)は6となっている。これは、上式(9)、(10)によって以下のように求められる。
g(1)=8・1-q(1)
=8・1-ceil{(8・1・12-1+1)/60}
=6
そして、各ブロックの入力ビット数B=8であるため、ブロック#1の先頭の入力ビットインデックスは8となり、判定値eを用いた判定により、この入力ビットはパンクチャの対象とはならない。また、この入力ビットは、ブロック内の最初の(すなわち0番目の)出力ビットであることから、出力ビットインデックスはg(1)+0=6であり、入力ビットインデックス8と出力ビットインデックス6とが対応付けられる。同様に、他の入力ビットについても、パンクチャの対象となるか否かが判定され、パンクチャの対象とならない場合は、対応する出力ビットインデックスが算出され、入出力ビットの対応関係を示すパターンが決定される。なお、上述したように、入力ビットがパンクチャの対象となるか否かは、実施の形態1と同様に判定値eを用いた判定によって決定される。
このように、ブロック#0〜#3の各入力ビットのインデックスに対応する出力ビットインデックスは、ブロック#0〜#3の先頭インデックスg(0)〜g(3)及び先頭判定値E(0)〜E(3)に基づいて順次決定することができる。すなわち、各ブロックに関して独立にパンクチャ前後のビットの対応関係を決定することができるため、それぞれのパターン決定部302−0〜302−3は、各ブロックに対するパターン決定処理を並列に実行する。結果として、レート調整の高速化を図ることができる。
以上のパターン決定処理のアルゴリズムを図18に示す。図18は、パンクチャ又はレペテションが行われる場合のパターン決定処理のアルゴリズムを示している。図18に示すアルゴリズムにおいては、ブロック内の入力ビットのインデックスjを1ずつインクリメントしながら、各入力ビットがパンクチャ又はレペテションの対象となるか否かが判定され、インデックスjとブロック内の出力ビットのインデックスkとの対応関係が決定される。そして、ブロック内の出力ビットのインデックスkが出力ビットインデックス(g(i)+k)に変換され、対応する入力ビットインデックスが(B*i+j)と算出されている。
以上のように、本実施の形態によれば、入力データを複数のブロックに分割した場合の、各ブロックの先頭の入力ビットに対応する出力ビットのインデックスをあらかじめ算出しておく。そして、各ブロックの先頭判定値を漸化式を用いて順次算出し、得られた先頭判定値に基づいてパンクチャ又はレペテションの有無を判定しながら、入出力のビットインデックスの対応関係を決定する。さらに、決定された対応関係に従って入力データを出力することによりレートを調整する。このため、先頭インデックスの算出は、各ブロックについて1回実行すれば良いとともに、先頭判定値の算出に際して、乗算及び剰余演算を含む複雑な演算を行う必要がなく、処理量を低減することができる。また、各ブロックについて並列にパンクチャ又はレペテション前後のビットの対応関係を決定することができる。結果として、処理量及び回路面積の増大を抑制しつつ、レート調整の高速化を図ることができる。
(実施の形態3)
実施の形態3の特徴は、入力データをシリアル/パラレル変換し、前方のビットから順にパンクチャ又はレペテションの有無を並列に判定する点である。
本実施の形態に係る通信システムの構成は、実施の形態1(図1)と同様であるため、その説明を省略する。本実施の形態においては、送信装置100におけるレートマッチング部120の構成と、受信装置200におけるレートデマッチング部240の構成とが実施の形態1とは異なる。
図19は、本実施の形態に係るレートマッチング部120の構成を示すブロック図である。図19において、図2と同じ部分には同じ符号を付し、その説明を省略する。図19に示すレートマッチング部120は、基本パラメータ算出部121、パラメータ事前算出部401、ビット処理部402−0〜402−n(nは1以上の整数)、シリアル/パラレル変換(以下「S/P変換」という)部403及びパラレル/シリアル変換(以下「P/S変換」という)部404を有している。
パラメータ事前算出部401は、符号化データを分割して得られる複数のブロックの先頭ビットに関するパラメータと1つのブロックのビットごとのパラメータとをそれぞれ算出する。すなわち、パラメータ事前算出部401は、ブロックの数と同数のパラメータ及びブロックを構成するビット数と同数のパラメータを算出する。具体的には、パラメータ事前算出部401は、上式(7)の変形により得られる以下のパラメータα(i)及びβ(j)をすべてのi及びjについて算出する。ただし、実施の形態1と同様に符号化データを複数のブロックに分割した場合の各ブロックのインデックスがiであり、ブロック内でのビットのインデックスがjである。
α(i)=(Eminus・i)modeplus ・・・(12)
β(j)=(eminus・j)modeplus ・・・(13)
ここで、上式(12)、(13)のパラメータについて説明しておく。式(7)をインデックスi、jについてまとめると、
e(m)=e(B・i+j)
=eini-[{eminus・B・i+ eminus・j)}mod eplus]
=eini-[{(Eminus・i)modeplus+(eminus・j)modeplus}mod eplus]
と変形することができる。この式のインデックスiに関する項が式(12)に示したパラメータα(i)であり、インデックスjに関する項が式(13)に示したパラメータβ(j)である。すなわち、本実施の形態においては、以下の式(14)により任意のi番目のブロックのj番目のビットに関する判定値eが得られる。
e=eini-{α(i)+β(j)}mod eplus ・・・(14)
ところで、式(12)に示したパラメータα(i)は、実施の形態1で述べたように漸化式(4)で表すことができる。同様に、式(13)に示したパラメータβ(j)は、以下の漸化式(15)で表すことができる。
β(j)=[β(j-1)+eminus]mod eplus ・・・(15)
そこで、パラメータ事前算出部401は、漸化式(4)、(15)を用いることにより、実施の形態1における先頭パラメータ算出部122と同様に、大小判定と減算によってパラメータα(i)、β(j)を算出する。これにより、パラメータ事前算出部401は、各ブロックの先頭ビットに関するパラメータα(i)と、ブロック内の各ビットに関するパラメータβ(j)とを少ない処理量で算出することができる。
ビット処理部402−0〜402−nは、S/P変換部403から出力されるビットに対して、パンクチャ又はレペテションの処理を行い、レートの調整を行う。このとき、ビット処理部402−0〜402−nは、基本パラメータ算出部121によって算出された増分値eplus及び減分値eminusと、パラメータ事前算出部401によって算出されたパラメータα(i)、β(j)とを用いて、パンクチャ又はレペテションの対象となるビットを決定する。
すなわち、ビット処理部402−0〜402−nは、式(14)を用いて対象ビットの直前ビットに対応する判定値eを算出し、算出された判定値eから減分値eminusを減算し、対象ビットに対応する判定値eを求める。そして、ビット処理部402−0〜402−nは、判定値eの値が負になる場合は、対象ビットをパンクチャ又はレペテションする。
S/P変換部403は、直列データとして入力される符号化データをS/P変換により並列データに変換し、各ビットをビット処理部402−0〜402−nへ出力する。したがって、S/P変換部403は、符号化データの0番目のビットをビット処理部402−0へ出力し、1番目のビットをビット処理部402−1へ出力するというように、連続して配置されたビットを並列にビット処理部402−0〜402−nへ出力する。換言すれば、S/P変換部403は、符号化データの(n+1)個おきのビットを処理単位として、各処理単位のビットを対応するビット処理部402−0〜402−nへ出力する。
P/S変換部404は、ビット処理部402−0〜402−nから並列に出力されるビットをP/S変換により直列データに変換し、レートが調整された調整データとして出力する。すなわち、P/S変換部404は、ビット処理部402−0〜402−nによってそれぞれパンクチャ又はレペテションされた処理単位を結合し、調整データとして出力する。
図20は、本実施の形態に係るレートデマッチング部240の構成を示すブロック図である。図20において、図2及び図19と同じ部分には同じ符号を付し、その説明を省略する。図20に示すレートデマッチング部240は、基本パラメータ算出部121、パラメータ事前算出部401、ビット処理部411−0〜411−n、S/P変換部403及びP/S変換部404を有している。
ビット処理部411−0〜411−nは、それぞれの処理単位のビットに対して、パンクチャ又はレペテションとは逆のデパンクチャ又はデレペテションの処理を行い、送信装置100におけるパンクチャ又はレペテション以前のレートを復元する。このとき、ビット処理部411−0〜411−nは、基本パラメータ算出部121によって算出された増分値eplus及び減分値eminusと、パラメータ事前算出部401によって算出されたパラメータα(i)、β(j)とを用いて、デパンクチャ又はデレペテションの対象となるビットを決定する。
すなわち、ビット処理部411−0〜411−nは、式(14)を用いて対象ビットの直前ビットに対応する判定値eを算出し、算出された判定値eから減分値eminusを減算し、対象ビットに対応する判定値eを求める。そして、ビット処理部411−0〜411−nは、判定値eの値が負になる場合は、ダミービットの挿入又は複数のビットの合成により、デパンクチャ又はデレペテションする。
本実施の形態においては、パラメータ事前算出部401が事前に各ブロックの先頭ビットに関するパラメータα(i)と1つのブロックの各ビットに関するパラメータβ(j)とを算出しておく。このとき、漸化式(4)、(15)の右辺における剰余演算は、実施の形態1で説明したように大小判定及び減算で代用することができる。具体的に、例えばパラメータβ(j)の算出アルゴリズムを図21に示す。図21に示すアルゴリズムにおいては、剰余演算や乗算などの複雑な演算は行われていないが、すべてのインデックスjについてパラメータβ(j)が順次算出される。
このように、パラメータα(i)、β(j)の算出に際して、剰余演算及び乗算を含む複雑な演算を行う必要がないため、レート調整時の処理量を低減することができる。また、すべてのインデックスi、jに関してパラメータα(i)、β(j)が算出されることにより、式(14)から任意のビットに関する判定値eを算出することが可能となる。このため、ブロック内で逐次的に各ビットに対するパンクチャ又はレペテションの有無を判定するのではなく、任意のビットについて独立にパンクチャ又はレペテションの有無を判定することができる。したがって、本実施の形態においては、符号化データの連続するビットについて並列にパンクチャ又はレペテションの有無を判定することができ、符号化データの前方のビットから順にビット処理を行うことができる。結果として、レートマッチング及びレートデマッチングの処理遅延をさらに低減することができる。
図22は、本実施の形態に係るビット処理のアルゴリズムを示す図である。図22に示すアルゴリズムにおいては、式(14)の右辺における{α(i)+β(j)}を変数tmpとしている。ここで、式(12)、(13)より、α(i)及びβ(j)は、ある値を増分値eplusで割った余りであるため、増分値eplusより小さい。このことから、変数tmpは、最大でも増分値eplusの2倍を超えないことがわかる。そして、式(14)の右辺の{α(i)+β(j)}mod eplusは、増分値eplusの2倍を超えない変数tmpを増分値eplusで割った余りであるため、変数tmpが増分値eplus以下であれば、式(14)は以下のようになる。
e=eini-tmp
また、変数tmpが増分値eplusより大きければ、式(14)は以下のようになる。
e=eini-(tmp-eplus)
図22に示すアルゴリズムは、このように判定値eを算出しており、剰余演算及び乗算を含む複雑な演算を行っていない。換言すれば、すべてのインデックスi、jについて事前に算出されたパラメータα(i)、β(j)を用いて、大小判定及び減算を行うことにより、剰余演算を省略している。結果として、少ない処理量で判定値eを算出することができ、各ビットに対するパンクチャ又はレペテションの有無を判定することができる。
以上のように、本実施の形態によれば、入力データを複数のブロックに分割した場合のブロックごと及びブロックを構成するビットごとのパラメータを漸化式を用いて事前に算出しておく。そして、パラメータに基づいて入力データの前方のビットから順にビット処理を並列に実行してレートを調整する。このため、パラメータの算出に際して、乗算及び剰余演算を含む複雑な演算を行う必要がなく、処理量を低減することができる。また、ブロックごとの逐次処理がないため処理遅延がなく、レート調整をさらに高速化することができる。
(実施の形態4)
実施の形態4の特徴は、入力データの前方のビットから順に入力ビットと出力ビットとの対応関係を示すパターンを決定し、入力データのビット系列を決定されたパターンに従って出力する点である。
本実施の形態に係る通信システムの構成は、実施の形態1(図1)と同様であるため、その説明を省略する。本実施の形態においては、送信装置100におけるレートマッチング部120の構成と、受信装置200におけるレートデマッチング部240の構成とが実施の形態1とは異なる。
図23は、本実施の形態に係るレートマッチング部120の構成を示すブロック図である。図23において、図2及び図13と同じ部分には同じ符号を付し、その説明を省略する。図23に示すレートマッチング部120は、基本パラメータ算出部121、パラメータ事前算出部501、パターン決定部502−0〜502−n(nは1以上の整数)、アドレス算出部503、パターン記憶部303及び入出力部304を有している。
パラメータ事前算出部501は、符号化データを分割して得られる複数のブロックの先頭ビットに関するパラメータと1つのブロックのビットごとのパラメータとをそれぞれ算出する。すなわち、パラメータ事前算出部501は、ブロックの数と同数のパラメータ及びブロックを構成するビット数と同数のパラメータを算出する。具体的には、パラメータ事前算出部501は、上式(12)、(13)で示したパラメータα(i)及びβ(j)をすべてのi及びjについて算出する。このとき、パラメータ事前算出部501は、実施の形態3と同様に漸化式(4)、(15)を用いて、大小判定と減算によってパラメータα(i)、β(j)を算出する。
パターン決定部502−0〜502−nは、基本パラメータ及びパラメータα(i)、β(j)を用いて、符号化データの連続するビットについて並列にパンクチャ又はレペテションの有無を判定する。このとき、パターン決定部502−0〜502−nは、図22に示した実施の形態3のアルゴリズムを用いて、前方のビットから順にパンクチャ又はレペテションの有無を判定する。
そして、パンクチャモード時には、パターン決定部502−0〜502−nは、入力されたビットがパンクチャされると判定した場合には「0」を出力し、パンクチャされないと判定した場合には「1」を出力する。また、レペテションモード時には、パターン決定部502−0〜502−nは、入力されたビットがレペテションされると判定した場合にはレペテションされる回数に1を加算した値を出力し、レペテションされないと判定した場合には「1」を出力する。このとき、パターン決定部502−0〜502−nは、図18に示した実施の形態2のアルゴリズムを用いてレペテションされる回数を算出するようにしても良い。
アドレス算出部503は、パターン決定部502−0〜502−nから出力される値に基づいて、次にパターン決定部502−0〜502−nが並列処理するビットに付与される出力ビットインデックスを算出する。本実施の形態においては、パターン決定部502−0〜502−nによって、1つのブロックのすべてのビットに関して並列にパンクチャ又はレペテションの有無が判定される。そこで、アドレス算出部503は、次にパンクチャ又はレペテションの有無が判定されるブロックに対応する出力ビットインデックスの開始番号(以下「開始インデックス」という)を算出する。具体的には、アドレス算出部503は、前回算出された開始インデックスにパターン決定部502−0〜502−nから出力された値を加算して、新たな開始インデックスを算出する。
また、アドレス算出部503は、パターン決定部502−0〜502−nから出力された値に基づいて、ブロック内の入力ビットと出力ビットの対応関係を取得し、取得した対応関係と開始インデックスから入力ビットインデックスと出力ビットインデックスの対応関係を示すパターンを決定する。
図24は、本実施の形態に係るレートデマッチング部240の構成を示すブロック図である。図24に示すレートデマッチング部240は、図2、図13及び図14と同じ処理部から構成されているため、その説明を省略する。
次に、本実施の形態に係るアドレス算出処理について説明する。図25は、パンクチャ時のアドレス算出処理を示すフロー図である。以下の説明においては、ブロック内の入力ビットのインデックスをjとし、出力ビットのインデックスをkとする。また、以下の処理は、パターン決定部502−0〜502−n及びアドレス算出部503によって実行される。
まず、現在パターン決定部502−0〜502−nにおいて並列処理中のブロック内での入力ビットインデックスj及び出力ビットインデックスが0に設定される(ステップS701)。そして、各パターン決定部502−0によって、判定値eを用いた判定により、j番目(ここでは0番目)の入力ビットがパンクチャ対象であるか否かが判定される(ステップS702)。この判定の結果、j番目(ここでは0番目)の入力ビットがパンクチャ対象でなければ(ステップS702No)、この入力ビットがk番目(ここでは0番目)の出力ビットに決定される(ステップS703)。このとき、パターン決定部502−0からアドレス算出部503へ「1」が出力され、出力ビットのインデックスkが1インクリメントされる(ステップS704)。一方、j番目(ここでは0番目)の入力ビットがパンクチャ対象であれば(ステップS702Yes)、パターン決定部502−0からアドレス算出部503へ「0」が出力され、出力ビットのインデックスkがインクリメントされることはない。
アドレス算出部503においては、前回算出した開始インデックスにパターン決定部502−0から出力される値が加算されることにより、ブロック内での出力ビット数がカウントされる(ステップS705)。すなわち、パターン決定部502−0によってパンクチャの有無が判定されたビットがパンクチャされる場合は、出力ビット数が0とカウントされ、パンクチャされない場合は、出力ビット数が1とカウントされる。
そして、入力ビットのインデックスjが1インクリメントされ(ステップS706)、すべてのパターン決定部502−0〜502−nから「1」又は「0」が出力されたか否かが判断される。すなわち、現在並列処理中のブロック内のすべてのビットについて、アドレス算出部503に「1」又は「0」が入力されたか否かが判断される(ステップS707)。この判断の結果、まだ「1」又は「0」を出力していないパターン決定部502−0〜502−nがある場合には(ステップS707No)、パターン決定部502−1〜502−nにおいてもパターン決定部502−0と同様の判定が行われることにより(ステップS702〜S706)、「1」又は「0」がアドレス算出部503へ出力される。
なお、図25においては、説明の便宜上、インデックスjのインクリメントに応じて、パターン決定部502−0〜502−nから順番に「1」又は「0」が出力されるものとしたが、パターン決定部502−0〜502−nによる判定は並列に実行される。したがって、パターン決定部502−0〜502−nからは、ほぼ同時に「1」又は「0」が出力されても良い。
すべてのパターン決定部502−0〜502−nからアドレス算出部503へ「1」又は「0」が出力されると、アドレス算出部503によるカウント結果が、前回算出された開始インデックスに加算される。すなわち、パターン決定部502−0〜502−nによって並列処理されたブロックからいくつのビットが出力されるかが前回算出された開始インデックスに加算され、次のブロックの開始インデックスが決定される(ステップS708)。
このように、パンクチャの有無によって各パターン決定部502−0〜502−nから出力される「1」又は「0」の値に基づいて、パターン決定部502−0〜502−nによって次に並列処理されるブロックの出力ビットインデックスの開始番号が決定される。なお、各パターン決定部502−0〜502−nから出力される「1」又は「0」の値は、それぞれの入力ビットがパンクチャされるか否かを示しているため、アドレス算出部503は、入力ビットと出力ビットの対応関係を容易に取得することができる。そこで、アドレス算出部503は、開始インデックスと入出力ビットの対応関係とから、入力ビットインデックスと出力ビットインデックスの対応関係を示すパターンを決定し、パターン記憶部303に記憶させる。
図26は、本実施の形態に係るアドレス算出処理のアルゴリズムを示す図である。図26に示すアルゴリズムにおいては、それぞれのパターン決定部502−0〜502−nから出力される値をpattern(i)としており、この値に基づいてブロック内での出力ビットインデックスの増分sum_blkが算出され、最終的に次のブロックの開始インデックスsumが算出される。
以上のように、本実施の形態によれば、入力データを複数のブロックに分割した場合のブロックごと及びブロックを構成するビットごとのパラメータを漸化式を用いて事前に算出しておく。そして、パラメータに基づいて入力データの前方のビットから順にパンクチャ又はレペテションの有無を判定しながら、入出力のビットインデックスの対応関係を決定する。さらに、決定された対応関係に従って入力データを出力することによりレートを調整する。このため、パラメータの算出に際して、乗算及び剰余演算を含む複雑な演算を行う必要がなく、処理量を低減することができる。また、ブロックごとの逐次処理がないため処理遅延がなく、レート調整をさらに高速化することができる。
(実施の形態5)
上記実施の形態1〜4においては、対象ビットの直前のビットに関する判定値eから減分値eminusが減算され、判定値eが負になるか否かによってパンクチャ又はレペテションの有無が判定される。しかし、対象ビットについて直接的にパンクチャ又はレペテションの有無を判定することも可能である。実施の形態5の特徴は、対象ビットについて直接的にパンクチャ又はレペテションの有無を判定する点である。
本実施の形態に係る通信システムの構成は、実施の形態1(図1)と同様であるため、その説明を省略する。また、本実施の形態においては、レートマッチング部120及びレートデマッチング部240の構成も実施の形態1〜4のいずれかと同様で良い。ただし、実施の形態1、3のビット処理部124−0〜124−n、241−0〜241−n、402−0〜402−n、411−0〜411−n又は実施の形態2、4のパターン決定部302−0〜302−n、502−0〜502−nにおけるパンクチャ又はレペテションの有無の判定に用いられるアルゴリズムが実施の形態1〜4とは異なる。
上述したように、3GPPのアルゴリズムにおいては、判定値eから減分値eminusが順次減算されていき、判定値eの正負によってパンクチャ又はレペテションが行われるとともに、判定値eが負の場合は増分値eplusが加算される。したがって、m番目の直前のビットに関する判定値eは、初期値einiから減分値eminusが減算され、判定値eが負になった回数だけ増分値eplusが加算された値である。すなわち、図27に示すように、判定値eと0との差分は(meminus-eini)mod eplusとなる。
そして、m番目のビットに関する判定値eが負になるのは、(meminus-eini)mod eplusが減分値eminus以下である場合ということになる。したがって、(meminus-eini)mod eplusが減分値eminus以下であるか否かを判定することにより、m番目のビットに関するパンクチャ又はレペテションの有無を直接的に判定することができる。
ここで、実施の形態1〜4と同様に、入力データの複数のブロックのビット数をBとして、ブロックのインデックスi、ブロック内のビットのインデックスjとすると、上記の差分は、
tmp(m)=tmp(B・i+j)
={(B・i+j)eminus-eini}mod eplus
={(B・i・eminus+j・eminus-eini}mod eplus
={(B・i・eminus)mod eplus+(j・eminus-eini)mod eplus}mod eplus
={(i・Eminus)mod eplus+(j・eminus-eini)mod eplus}mod eplus ・・・(16)
と変形することができる。なお、式(16)において、Eminusは、式(5)に示した値である。そして、iに関する項をα(i)とし、jに関する項をβ(j)とすれば、
α(i)=(i・Eminus)mod eplus ・・・(17)
β(j)= (j・eminus-eini)mod eplus ・・・(18)
となる。したがって、式(16)は、以下の式(19)のように表せる。
tmp(m)={α(i)+β(j)}mod eplus ・・・(19)
ここで、式(17)、(18)より、α(i)及びβ(j)は、ある値を増分値eplusで割った余りであるため、増分値eplusより小さい。このことから、式(19)の右辺の{α(i)+β(j)}は、最大でも増分値eplusの2倍を超えないことがわかる。そして、式(19)の右辺は、増分値eplusの2倍を超えない{α(i)+β(j)}を増分値eplusで割った余りであるため、{α(i)+β(j)}が増分値eplus以下であれば、式(19)は以下のようになる。
tmp(m)=α(i)+β(j)
また、{α(i)+β(j)}が増分値eplusより大きければ、式(19)は以下のようになる。
tmp(m)={α(i)+β(j)}-eplus
したがって、すべてのi及びjについてあらかじめパラメータα(i)、β(j)を求めておくことにより、m番目のビットについてパンクチャ又はレペテションの有無を判定するために用いられる差分tmp(m)は、大小判定と減算により求めることが可能である。
このことを利用して、差分tmp(m)からパンクチャ又はレペテションの有無を判定し、入力データに対してパンクチャ又はレペテションを実行するアルゴリズムを図28に示す。図28に示すアルゴリズムにおいては、パラメータα(i)、β(j)を用いた大小判定及び減算によって上述した差分tmpが算出され、差分tmpが減分値eminus以下である場合には、対象ビットがパンクチャ又はレペテションされている。
このように、本実施の形態においては、直接的に任意のビットに関するパンクチャ又はレペテションの有無を判定することができ、この判定結果を実施の形態1〜4のビット処理又はパターン決定処理に適用することが可能である。
以上のように、本実施の形態によれば、入力データを複数のブロックに分割した場合のブロックごと及びブロックを構成するビットごとのパラメータを事前に算出しておく。そして、算出されたパラメータから直接的に任意のビットに関するパンクチャ又はレペテションの有無を判定するためのパラメータを算出する。このため、レート調整時に入力データの各ビットがパンクチャ又はレペテションされるか否かを容易に判定することができる。
なお、上記各実施の形態においては、送信装置100及び受信装置200がアンテナを1本ずつ備えるSISO(Single Input Single Output)を適用した通信システムについて説明したが、本発明はこれに限定されない。すなわち、受信装置及び送信装置が複数のアンテナを備えるMIMO(Multi Input Multi Output)、送信ダイバーシティ又は受信ダイバーシティを適用する通信システムにも本発明を適用することができる。同様に、例えばOFDM(Orthogonal Frequency Division Multiplexing)などのマルチキャリア通信システムにも本発明を適用することができる。
また、上記各実施の形態で説明したレート調整処理をコンピュータが実行可能な言語で記述したプログラムを作成することもできる。この場合、無線通信装置が備えるコンピュータがプログラムを実行することにより、上記各実施の形態と同様の効果を得ることができる。さらに、上記のプログラムをコンピュータ読み取り可能な記録媒体に記録して、この記録媒体に記録されたプログラムをコンピュータに読み込ませて実行することにより上記各実施の形態と同様のレート調整処理を実現しても良い。
図29は、レート調整処理を実現するコンピュータ600のハードウェア構成を示すブロック図である。図29に示すように、このコンピュータ600は、上記プログラムを実行するCPU610と、データを入力する入力装置620と、各種データを記憶するROM630と、演算パラメータ等を記憶するRAM640と、レート調整処理を実現するためのプログラムを記録した記録媒体700からプログラムを読み取る読取装置650と、ディスプレイ等の出力装置660と、ネットワーク750を介して他のコンピュータとの間でデータの授受をおこなうネットワークインターフェース670とが、バス680で接続された構成となっている。
CPU610は、読取装置650を経由して記録媒体700に記録されているプログラムを読み込んだ後、プログラムを実行することにより、レート調整処理を実現する。なお、記録媒体700としては、光ディスク、フレキシブルディスク、CD−ROM、ハードディスク等が挙げられる。また、このプログラムは、ネットワーク750を介してコンピュータ600に導入することとしても良い。このとき、ネットワーク750は、無線ネットワークであっても有線ネットワークであっても良い。
以上の各実施の形態に関し、さらに以下の付記を開示する。
(付記1)入力データの各ビットに対するパンクチャ又はレペテションの有無の判定に用いられる判定値を算出するための第1のパラメータを算出する第1の算出部と、
入力データを複数の処理単位に分割した場合の2つの処理単位に対応する判定値の関係から得られる漸化式を用いた演算により、処理単位ごとの第2のパラメータを順次算出する第2の算出部と、
前記第1の算出部及び前記第2の算出部によって算出された第1のパラメータ及び第2のパラメータを用いて各処理単位を構成するビットそれぞれに関する判定値を求め、求められた判定値に基づいてビットの削減又は追加を実行する実行部と
を有することを特徴とするレート調整装置。
(付記2)前記実行部は、
入力データを複数の処理単位に分割する分割部と、
前記分割部によって分割されて得られた複数の処理単位ごとに設けられ、それぞれ判定値に基づいて各処理単位を構成するビットの削減又は追加を並列に実行する複数のビット処理部と、
前記複数のビット処理部によってビットの削減又は追加が実行された後の処理単位を結合する結合部と
を含むことを特徴とする付記1記載のレート調整装置。
(付記3)前記実行部は、
複数の処理単位ごとに設けられ、それぞれ判定値に基づいて各処理単位のビットの出力順序を示すパターンを並列に決定する複数の決定部と、
前記複数の決定部によって決定されたパターンを記憶する記憶部と、
前記記憶部によって記憶されたパターンに従って入力データのビットを出力する出力部と
を含むことを特徴とする付記1記載のレート調整装置。
(付記4)前記第2の算出部は、
各処理単位の先頭のビットに対応する判定値を処理単位ごとの第2のパラメータとして算出することを特徴とする付記1記載のレート調整装置。
(付記5)前記第2の算出部は、
各処理単位の先頭のビットに対応する先頭ビットパラメータと、1つの処理単位を構成する各ビットに対応する個別ビットパラメータとを算出することを特徴とする付記1記載のレート調整装置。
(付記6)前記第2の算出部は、
漸化式によって判定値の関係が示される2つの処理単位のうち一方の処理単位に対応する漸化式の演算部分と第1のパラメータに含まれる増分値との大小を判定する判定部と、
前記判定部による判定の結果、前記演算部分が増分値より大きい場合に、前記演算部分から増分値を減算して他方の処理単位の第2のパラメータを得る減算部と
を含むことを特徴とする付記1記載のレート調整装置。
(付記7)前記第2の算出部は、
前記判定分による判定の結果、前記演算部分が増分値より小さい場合に、前記演算部分を他方の処理単位の第2のパラメータとして得ることを特徴とする付記6記載のレート調整装置。
(付記8)前記実行部は、
各ビットの判定値の正負判定によってビットの削減又は追加を実行するか否かを決定することを特徴とする付記1記載のレート調整装置。
(付記9)前記実行部は、
各ビットの判定値と第1のパラメータに含まれる減分値との大小判定によってビットの削減又は追加を実行するか否かを決定することを特徴とする付記1記載のレート調整装置。
(付記10)誤り訂正符号化されたデータを送受信する通信装置を備えた通信システムであって、
前記通信装置は、
入力データの各ビットに対するパンクチャ又はレペテションの有無の判定に用いられる判定値を算出するための第1のパラメータを算出する第1の算出部と、
入力データを複数の処理単位に分割した場合の2つの処理単位に対応する判定値の関係から得られる漸化式を用いた演算により、処理単位ごとの第2のパラメータを順次算出する第2の算出部と、
前記第1の算出部及び前記第2の算出部によって算出された第1のパラメータ及び第2のパラメータを用いて各処理単位を構成するビットそれぞれに関する判定値を求め、求められた判定値に基づいてビットの削減又は追加を実行する実行部と
を有することを特徴とする通信システム。
(付記11)入力データの各ビットに対するパンクチャ又はレペテションの有無の判定に用いられる判定値を算出するための第1のパラメータを算出する第1の算出ステップと、
入力データを複数の処理単位に分割した場合の2つの処理単位に対応する判定値の関係から得られる漸化式を用いた演算により、処理単位ごとの第2のパラメータを順次算出する第2の算出ステップと、
前記第1の算出ステップ及び前記第2の算出ステップにて算出された第1のパラメータ及び第2のパラメータを用いて各処理単位を構成するビットそれぞれに関する判定値を求める第3の算出ステップと、
前記第3の算出ステップにて求められた判定値に基づいてビットの削減又は追加を実行する実行ステップと
を有することを特徴とするレート調整方法。
(付記12)コンピュータによって実行されるレート調整プログラムであって、前記コンピュータに、
入力データの各ビットに対するパンクチャ又はレペテションの有無の判定に用いられる判定値を算出するための第1のパラメータを算出する第1の算出ステップと、
入力データを複数の処理単位に分割した場合の2つの処理単位に対応する判定値の関係から得られる漸化式を用いた演算により、処理単位ごとの第2のパラメータを順次算出する第2の算出ステップと、
前記第1の算出ステップ及び前記第2の算出ステップにて算出された第1のパラメータ及び第2のパラメータを用いて各処理単位を構成するビットそれぞれに関する判定値を求める第3の算出ステップと、
前記第3の算出ステップにて求められた判定値に基づいてビットの削減又は追加を実行する実行ステップと
を実行させることを特徴とするレート調整プログラム。