(57)【要約】【課題】短時間で複素数データの行列を生成することができる演算器及び復調回路を提供することを課題とする。【解決手段】演算器は、第１の複数の複素数データのうちから第２の複数の複素数データ及び第３の複数の複素数データを選択し、前記第２の複数の複素数データ及び前記第３の複数の複素数データを出力するセレクタ（４１０）と、前記第２の複数の複素数データに対する複数の共役複素数データを生成する複素共役部（４１１）と、前記複数の共役複素数データ及び前記第３の複数の複素数データのうちの一部のデータを切り出して出力する切り出し部（４１２）とを有する。【選択図】図４
2015232748.tif 000002
【特許請求の範囲】
【請求項１】
第１の複数の複素数データのうちから第２の複数の複素数データ及び第３の複数の複素数データを選択し、前記第２の複数の複素数データ及び前記第３の複数の複素数データを出力するセレクタと、
前記第２の複数の複素数データに対する複数の共役複素数データを生成する複素共役部と、
前記複数の共役複素数データ及び前記第３の複数の複素数データのうちの一部のデータを切り出して出力する切り出し部と
を有することを特徴とする演算器。
【請求項２】
さらに、カウント値を出力するカウンタを有し、
前記セレクタは、前記カウンタのカウント値に応じて選択し、
前記切り出し部は、前記カウンタのカウント値に応じて切り出しを行うことを特徴とする請求項１記載の演算器。
【請求項３】
前記切り出し部は、複素数データの行列を出力することを特徴とする請求項２記載の演算器。
【請求項４】
前記切り出し部の出力データは、前記カウンタのカウント値に応じたメモリのアドレスにストアされることを特徴とする請求項２又は３記載の演算器。
【請求項５】
前記第１の複数の複素数データは、前記メモリからロードされることを特徴とする請求項４記載の演算器。
【請求項６】
さらに、第１のアドレス及び第２のアドレスを引数とする命令をデコードする命令デコーダを有し、
前記第１の複数の複素数データは、前記第１のアドレスを基に前記メモリからロードされ、
前記切り出し部の出力データは、前記第２のアドレスを基に前記メモリにストアされることを特徴とする請求項５記載の演算器。
【請求項７】
受信信号を基に複素数データの行列を生成する演算器と、
前記行列に基づくイコライザ係数を用いて、前記受信信号を等化処理するイコライザとを有し、
前記演算器は、
第１の複数の複素数データのうちから第２の複数の複素数データ及び第３の複数の複素数データを選択し、前記第２の複数の複素数データ及び前記第３の複数の複素数データを出力するセレクタと、
前記第２の複数の複素数データに対する複数の共役複素数データを生成する複素共役部と、
前記複数の共役複素数データ及び前記第３の複数の複素数データのうちの一部のデータを切り出して出力する切り出し部とを有することを特徴とする復調回路。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、演算器及び復調回路に関する。
【背景技術】
【０００２】
マルチユーザＭＩＭＯシステムに含まれる受信装置が知られている（特許文献１参照）。Ｎ（Ｍ≧３）本の受信アンテナは、各ユーザから帰還された量子化ベクトルに基づいてビームフォーミングが施された上で送信された複数ストリームの信号を受信する。ビームフォーミングチャネル推定部は、Ｎ本の受信アンテナで受信された受信信号に基づいてビームフォーミングチャネル行列を推定する。レプリカ生成部は、ビームフォーミングチャネル行列及び自装置向けに送信される送信シンボル候補ベクトルを用いてレプリカ信号を生成する。誤差ベクトル算出部は、受信信号及びレプリカ信号を用いて誤差ベクトルを算出する。相関行列算出部は、ビームフォーミングチャネル行列を用いて誤差ベクトルに含まれるユーザ間干渉成分を除去するための相関行列を算出する。最尤推定部は、相関行列を用いてユーザ間干渉成分が除去された誤差ベクトルの大きさが最小となる送信シンボル候補を選択して自装置向けに送信された送信シンボルを推定する。
【０００３】
また、データのマトリックスをストアするレジスタの第１のセット、及び、レジスタの第１のセットに結合され、データのマトリクスの転置されたコピーをストアするレジスタの第２のセットを包含するプロセッサが知られている（特許文献２参照）。
【０００４】
また、定数行列データを用いた演算を行うコンピュータが知られている（特許文献３参照）。生成回路は、演算回路の演算に用いられる定数行列データを生成する。制御回路は、命令に基づいて生成回路を制御する。生成回路は、定数要素データを予め保持し、単数の命令による制御回路からの制御に基づいて、予め保持した定数要素データを組み合わせて、定数行列データを構成する複数の定数ベクトルデータを順に生成する。
【０００５】
また、離散コサイン変換オペレーションを実行する単一ステージの計算方法であって、デジタル信号プロセッサを使用して、複数の超長命令語（ＶＬＩＷ）を実行することにより離散コサイン変換オペレーションを実行する方法が知られている（特許文献４参照）。複数の超長命令語は、第１の数の乗算と第２の数の加算とを含み、第１の数は、第２の数よりも大きい。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２０１０−１１４６２８号公報
【特許文献２】特表２００３−５０５７８６号公報
【特許文献３】特開２００６−１５５４９０号公報
【特許文献４】特表２００９−５１６２３８号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
受信装置の復調回路は、受信信号を基に、３０行３０列の複素数行列を演算し、受信信号を等化処理する。３０行３０列の複素数行列を生成するには、３０×３０＝９００個の要素を生成する必要がある。３０×３０＝９００個の要素を先頭から１個ずつ順次生成すると、生成時間が長くなる。
【０００８】
本発明の目的は、短時間で複素数データの行列を生成することができる演算器及び復調回路を提供することである。
【課題を解決するための手段】
【０００９】
演算器は、第１の複数の複素数データのうちから第２の複数の複素数データ及び第３の複数の複素数データを選択し、前記第２の複数の複素数データ及び前記第３の複数の複素数データを出力するセレクタと、前記第２の複数の複素数データに対する複数の共役複素数データを生成する複素共役部と、前記複数の共役複素数データ及び前記第３の複数の複素数データのうちの一部のデータを切り出して出力する切り出し部とを有する。
【発明の効果】
【００１０】
複数の複素数データを並列処理することができるので、短時間で複素数データの行列を生成することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、本実施形態による受信装置の構成例を示す図である。
【図２】図２は、図１の相関行列演算器の入力データ及び出力相関行列を示す図である。
【図３】図３は、図１の相関行列演算器の構成例を示す図である。
【図４】図４は、図３の処理部の構成例を示す図である。
【図５】図５は、図４の複素共役部の構成例を示す図である。
【図６】図６は、図４のセレクタの動作を説明するための図である。
【図７】図７は、図４のシフタの動作を説明するための図である。
【発明を実施するための形態】
【００１２】
図１は、本実施形態による受信装置１０１の構成例を示す図である。受信装置１０１は、例えばデジタル無線受信装置であり、復調回路１０２を有し、送信装置から伝送路を介して信号を受信する。復調回路１０２は、相関行列演算器１０３、チャネル推定器１０４、係数演算器１０５、イコライザ１０６及び逆拡散器１０７を有し、受信信号ＩＮを復調し、信号ＯＵＴを出力する。相関行列演算器１０３は、受信信号ＩＮを基に相関行列を演算し、相関行列を係数演算器１０５に出力する。具体的には、相関行列演算器１０３は、図２の６０個の複素数の入力データ２０１を基に、３０行３０列の複素数の相関行列２０２を生成する。チャネル推定部１０４は、受信信号１０４内の既知のパイロット信号を基に、送信装置及び受信装置間の伝送路特性を推定し、伝送路特性を係数演算器１０５に出力する。係数演算器１０５は、相関行列演算器１０３が出力する相関行列及びチャネル推定器１０４が出力する伝送路特性を基に、イコライザ係数を演算し、イコライザ係数をイコライザ１０６に出力する。イコライザ１０６は、係数演算器１０５が出力するイコライザ係数を用いて、受信信号ＩＮを等化処理（イコライジング）することにより、伝送路により劣化した周波数特性及び位相特性を補償する。逆拡散器１０７は、イコライザ１０６の出力信号に対して逆拡散処理することにより、復調された信号ＯＵＴを出力する。
【００１３】
図２は、図１の相関行列演算器１０３の入力データ２０１及び出力相関行列２０２を示す図である。入力データ２０１は、６０個の複素数データを有し、受信データＩＮを基に生成されるデータである。相関行列２０２は、３０行３０列の複素数行列であり、領域２１１〜２１３を有する。相関行列演算器１０３は、入力データ２０１を基に相関行列２０２を生成する。
【００１４】
２個の領域２１１は、６０個の複素数データを有する。領域２１１の６０個の複素数データは、入力データ２０１の６０個の複素数データと同じデータである。相関行列２０２の第１行の領域２１１の０番目〜２９番目の複素数データは、入力データ２０１の０番目〜２９番目の複素数データと同じデータである。相関行列２０２の第１６行の領域２１１の３０番目〜５９番目の複素数データは、入力データ２０１の３０番目〜５９番目の複素数データと同じデータである。
【００１５】
４個の三角形の領域２１２は、４×（１４＋１３＋１２＋１１＋１０＋９＋８＋７＋６＋５＋４＋３＋２＋１）個の複素数データを有する。領域２１２の各番号の複素数データは、入力データ２０１の各番号の複素数データと同じデータである。相関行列２０２の第１〜第１５行の領域２１２の０番目〜２８番目の複素数データは、それぞれ、入力データ２０１の０番目〜２８番目の複素数データと同じデータである。相関行列２０２の第１６〜第３０行の領域２１２の３０番目〜５８番目の複素数データは、それぞれ、入力データ２０１の３０番目〜５８番目の複素数データと同じデータである。
【００１６】
４個の三角形の領域２１３は、４×（１＋２＋３＋４＋５＋６＋７＋８＋９＋１０＋１１＋１２＋１３＋１４）個の複素数データを有する。領域２１３の各番号の複素数データは、入力データ２０１の各番号の複素数データに対する共役複素数データである。例えば、複素数がａ＋ｂｉの場合、共役複素数はａ−ｂｉであり、複素数がａ−ｂｉの場合、共役複素数はａ＋ｂｉである。ここで、ａは実数であり、ｂは虚数である。相関行列２０２の第１〜第１５行の領域２１３の１番目〜４４番目の複素数データは、それぞれ、入力データ２０１の１番目〜４４番目の複素数データに対する共役複素数データである。相関行列２０２の第１６〜第３０行の領域２１３の１６番目〜５９番目の複素数データは、それぞれ、入力データ２０１の１６番目〜５９番目の複素数データに対する共役複素数データである。
【００１７】
ここで、相関行列２０２を先頭から１個ずつ順次生成すると、相関行列２０２の生成時間が長くなってしまう。以下、相関行列２０２を短時間で生成する方法を説明する。
【００１８】
図３は、図１の相関行列演算器１０３の構成例を示す図である。相関行列演算器１０３は、命令メモリ３０１、データメモリ３０２及びプロセッサ３０３を有する。プロセッサ３０３は、命令デコーダ３０４、専用命令実行部３０５及び汎用命令実行部３０６を有する。専用命令実行部３０５は、カウンタ３０７、入力アドレス生成部３０８、出力アドレス生成部３０９、バッファ書き込み制御部３１０、バッファ３１１、及び処理部３１２を有する。専用命令実行部３０５及び汎用命令実行部３０６は、それぞれ、メモリインターフェースを介して、データメモリ３０２に対して、データをロード及びストアする。
【００１９】
プロセッサ３０３は、受信データＩＮ（図１）を基に６０個の入力データ２０１（図２）を生成し、データメモリ３０２の先頭アドレスＡ（図２）から順に６０個の入力データ２０１をストアする。そして、プロセッサ３０３は、入力データ２０１を基に相関行列２０２（図２）を生成し、データメモリ３０２の先頭アドレスＢ（図２）から順に相関行列２０２の３０×３０＝９００個のデータをストアする。以下、その詳細を説明する。
【００２０】
図４は、図３の処理部３１２の構成例を示す図である。６０個の入力データ４０１〜４０４は、図２の６０個の入力データ２０１に対応し、６０個×３２ビットの複素数データである。各３２ビットの複素数データは、１６ビットの実数部及び１６ビットの虚数部を有する。入力データ４０１は、入力データ２０１のうちの０番目〜１４番目のデータである。入力データ４０２は、入力データ２０１のうちの１５番目〜２９番目のデータである。入力データ４０３は、入力データ２０１のうちの３０番目〜４４番目のデータである。入力データ４０４は、入力データ２０１のうちの４５番目〜５９番目のデータである。
【００２１】
図３のバッファ３１１は、４個のバッファ４０５〜４０８を有する。バッファ４０５には、１５個×３２ビット＝４８０ビットの入力データ４０１が書き込まれる。バッファ４０６には、１５個×３２ビット＝４８０ビットの入力データ４０２が書き込まれる。バッファ４０７には、１５個×３２ビット＝４８０ビットの入力データ４０３が書き込まれる。バッファ４０８には、１５個×３２ビット＝４８０ビットの入力データ４０４が書き込まれる。
【００２２】
図３の処理部３１２は、サイクルカウンタ４０９、セレクタ４１０、複素共役部４１１及びシフタ４１２を有する。セレクタ４１０は、サイクルカウンタ４０９が出力する６ビットのカウント値に応じて、バッファ４０５〜４０８に記憶されている入力データ４０１〜４０４のうちからデータを選択し、２９個×３２ビット＝９２８ビットのデータを出力する。具体的には、セレクタ４１０は、１４個×３２ビット＝４４８ビットのデータを複素共役部４１１に出力し、１５個×３２ビット＝４８０ビットのデータをシフタ４１２に出力する。
【００２３】
複素共役部４１１は、１４個×３２ビット＝４４８ビットの複素数データを入力し、１４個×３２ビット＝４４８ビットの共役複素数データをシフタ４１２に出力する。シフタ４１２は、サイクルカウンタ４０９が出力する６ビットのカウント値に応じて、複素共役部４１１が出力する１４個×３２ビット＝４４８ビットの共役複素数データ及びセレクタ４１０が出力する１５個×３２ビット＝４８０ビットのデータのうちからデータを切り出し、１５個×３２ビット＝４８０ビットのデータを出力する。
【００２４】
図５は、図４の複素共役部４１１の構成例を示す図である。複素共役部４１１は、１４個の複素共役部５０１を有する。各複素共役部５０１は、符号反転部５０２を有し、３２ビットの複素数データＣ１を入力し、３２ビットの共役複素数データＣ２を出力する。３２ビットの複素数データＣ１は、１６ビットの実数部Ｃ３及び１６ビットの虚数部Ｃ４を有する。符号反転部５０２は、１６ビットの虚数部Ｃ４に対して正負符号を反転した１６ビットの虚数部Ｃ５を出力する。３２ビットの共役複素数データＣ２は、１６ビットの実数部Ｃ３及び１６ビットの虚数部Ｃ５を有する。例えば、複素数データＣ１がａ＋ｂｉの場合、共役複素数データＣ２はａ−ｂｉであり、複素数データＣ１がａ−ｂｉの場合、共役複素数データＣ２はａ＋ｂｉである。１４個の複素共役部５０１は、１４個×３２ビット＝４４８ビットの複素数データを入力し、１４個×３２ビット＝４４８ビットの共役複素数データを出力する。
【００２５】
次に、相関行列演算器１０３の動作を説明する。命令メモリ３０１には、入力データ２０１のアドレス（第１のアドレス）Ａ及び相関行列２０２のアドレス（第２のアドレス）Ｂを引数とする行列演算命令が記憶されている。命令デコーダ３０４は、メモリインターフェースを介して、命令メモリ３０１から行列演算命令をロードし、行列演算命令をデコードし、カウンタ３０７、バッファ書き込み制御部３１０及び処理部３１２を制御する。カウンタ３０７は、「０」のカウント値を出力する。入力アドレス生成部３０８は、カウンタ３０７のカウント値が「０」であるので、アドレスＡ＋１５×０（＝Ａ）を演算し、アドレスＡをデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＡから１５個×３２ビット＝４８０ビットの入力データ４０１をロードする。バッファ書き込み制御部３１０は、その入力データ４０１をバッファ４０５に書き込む。
【００２６】
次に、カウンタ３０７は、「１」のカウント値を出力する。入力アドレス生成部３０８は、カウンタ３０７のカウント値が「１」であるので、アドレスＡ＋１５×１を演算し、アドレスＡ＋１５×１をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＡ＋１５×１から１５個×３２ビット＝４８０ビットの入力データ４０２をロードする。バッファ書き込み制御部３１０は、その入力データ４０２をバッファ４０６に書き込む。
【００２７】
次に、カウンタ３０７は、「２」のカウント値を出力する。入力アドレス生成部３０８は、カウンタ３０７のカウント値が「２」であるので、アドレスＡ＋１５×２を演算し、アドレスＡ＋１５×２をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＡ＋１５×２から１５個×３２ビット＝４８０ビットの入力データ４０３をロードする。バッファ書き込み制御部３１０は、その入力データ４０３をバッファ４０７に書き込む。
【００２８】
次に、カウンタ３０７は、「３」のカウント値を出力する。入力アドレス生成部３０８は、カウンタ３０７のカウント値が「３」であるので、アドレスＡ＋１５×３を演算し、アドレスＡ＋１５×３をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＡ＋１５×３から１５個×３２ビット＝４８０ビットの入力データ４０４をロードする。バッファ書き込み制御部３１０は、その入力データ４０４をバッファ４０８に書き込む。
【００２９】
次に、図４のサイクルカウンタ４０９は、「０」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ１を出力する。２９個のデータＯＵＴ１は、６０個の入力データ４０１〜４０４のうちの「１４，１３，１２，１１，１０，９，８，７，６，５，４，３，２，１，０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４」番目のデータである。具体的には、セレクタ４１０は、「１４，１３，１２，１１，１０，９，８，７，６，５，４，３，２，１」番目の１４個のデータを複素共役部４１１に出力し、「０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「１４，１３，１２，１１，１０，９，８，７，６，５，４，３，２，１」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１５番目〜２９番目の１５個のデータＯＴ１を切り出し、データＯＴ１をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ１は、図２の相関行列２０２の第１行第１列〜第１行第１５列の１５個のデータに対応し、入力データ４０１〜４０４のうちの「０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４」番目の１５個のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「０」であるので、アドレスＢ＋１５×０（＝Ｂ）を演算し、アドレスＢをデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢに１５個のデータＯＴ１をストアする。
【００３０】
次に、サイクルカウンタ４０９は、「１」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ２を出力する。２９個のデータＯＵＴ２は、６０個の入力データ４０１〜４０４のうちの「４４，４３，４２，４１，４０，３９，３８，３７，３６，３５，３４，３３，３２，３１，１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６，２７，２８，２９」番目のデータである。具体的には、セレクタ４１０は、「４４，４３，４２，４１，４０，３９，３８，３７，３６，３５，３４，３３，３２，３１」番目の１４個のデータを複素共役部４１１に出力し、「１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６，２７，２８，２９」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「４４，４３，４２，４１，４０，３９，３８，３７，３６，３５，３４，３３，３２，３１」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１５番目〜２９番目の１５個のデータＯＴ１を切り出し、データＯＴ１をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ１は、図２の相関行列２０２の第１行第１６列〜第１行第３０列の１５個のデータに対応し、入力データ４０１〜４０４のうちの「１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６，２７，２８，２９」番目の１５個のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「１」であるので、アドレスＢ＋１５×１を演算し、アドレスＢ＋１５×１をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢ＋１５×１に１５個のデータＯＴ１をストアする。
【００３１】
次に、サイクルカウンタ４０９は、「２」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ１を出力する。２９個のデータＯＵＴ１は、６０個の入力データ４０１〜４０４のうちの「１４，１３，１２，１１，１０，９，８，７，６，５，４，３，２，１，０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４」番目のデータである。具体的には、セレクタ４１０は、「１４，１３，１２，１１，１０，９，８，７，６，５，４，３，２，１」番目の１４個のデータを複素共役部４１１に出力し、「０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３，１４」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「１４，１３，１２，１１，１０，９，８，７，６，５，４，３，２，１」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１４番目〜２８番目の１５個のデータＯＴ２を切り出し、データＯＴ２をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ２は、図２の相関行列２０２の第２行第１列〜第２行第１５列の１５個のデータに対応し、入力データ４０１〜４０４のうち、「１」番目の複素数データに対する共役複素数データ及び「０，１，２，３，４，５，６，７，８，９，１０，１１，１２，１３」番目のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「２」であるので、アドレスＢ＋１５×２を演算し、アドレスＢ＋１５×２をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢ＋１５×２に１５個のデータＯＴ２をストアする。
【００３２】
次に、サイクルカウンタ４０９は、「３」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ２を出力する。２９個のデータＯＵＴ２は、６０個の入力データ４０１〜４０４のうちの「４４，４３，４２，４１，４０，３９，３８，３７，３６，３５，３４，３３，３２，３１，１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６，２７，２８，２９」番目のデータである。具体的には、セレクタ４１０は、「４４，４３，４２，４１，４０，３９，３８，３７，３６，３５，３４，３３，３２，３１」番目の１４個のデータを複素共役部４１１に出力し、「１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６，２７，２８，２９」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「４４，４３，４２，４１，４０，３９，３８，３７，３６，３５，３４，３３，３２，３１」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１４番目〜２８番目の１５個のデータＯＴ２を切り出し、データＯＴ２をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ２は、図２の相関行列２０２の第２行第１６列〜第２行第３０列の１５個のデータに対応し、入力データ４０１〜４０４のうち、「３１」番目の複素数データに対する共役複素数データ及び「１５，１６，１７，１８，１９，２０，２１，２２，２３，２４，２５，２６，２７，２８」番目のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「３」であるので、アドレスＢ＋１５×３を演算し、アドレスＢ＋１５×３をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢ＋１５×３に１５個のデータＯＴ２をストアする。
【００３３】
上記と同様に、サイクルカウンタ４０９のカウント値が「４」〜「２９」までの処理を行う。その場合、セレクタ４１０は、図６に示すように、サイクルカウンタ４０９のカウント値が偶数の場合にはデータＯＵＴ１を出力し、サイクルカウンタ４０９のカウント値が奇数の場合にはデータＯＵＴ２を出力する。
【００３４】
また、図７に示すように、シフタ４１２は、サイクルカウンタ４０９のカウント値が０又は１の場合には、左から１５番目〜２９番目の１５個のデータＯＴ１を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が２又は３の場合には、左から１４番目〜２８番目の１５個のデータＯＴ２を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が４又は５の場合には、左から１３番目〜２７番目の１５個のデータＯＴ３を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が６又は７の場合には、左から１２番目〜２６番目の１５個のデータＯＴ４を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が８又は９の場合には、左から１１番目〜２５番目の１５個のデータＯＴ５を切り出して出力する。すなわち、シフタ４１２は、サイクルカウンタ４０９のカウント値がｎ（ｎは偶数）又はｎ＋１の場合には、左から１５−（ｎ／２）番目〜２９−（ｎ／２）番目の１５個のデータＯＴ１＋（ｎ／２）を切り出して出力する。最後に、シフタ４１２は、サイクルカウンタ４０９のカウント値が２８又は２９の場合には、左から１番目〜１５番目の１５個のデータＯＴ１５を切り出して出力する。
【００３５】
以上のように、サイクルカウンタ４０９のカウント値が「０」〜「２９」の処理により、図２の相関行列２０２のうちの第１行第１列〜第１５行第３０列の３０×１５個のデータがデータメモリ３０２にストアされる。
【００３６】
次に、サイクルカウンタ４０９は、「３０」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ３を出力する。２９個のデータＯＵＴ３は、６０個の入力データ４０１〜４０４のうちの「２９，２８，２７，２６，２５，２４，２３，２２，２１，２０，１９，１８，１７，１６，３０，３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１，４２，４３，４４」番目のデータである。具体的には、セレクタ４１０は、「２９，２８，２７，２６，２５，２４，２３，２２，２１，２０，１９，１８，１７，１６」番目の１４個のデータを複素共役部４１１に出力し、「３０，３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１，４２，４３，４４」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「２９，２８，２７，２６，２５，２４，２３，２２，２１，２０，１９，１８，１７，１６」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１５番目〜２９番目の１５個のデータＯＴ１を切り出し、データＯＴ１をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ１は、図２の相関行列２０２の第１６行第１列〜第１６行第１５列の１５個のデータに対応し、入力データ４０１〜４０４のうちの「３０，３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１，４２，４３，４４」番目の１５個のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「３０」であるので、アドレスＢ＋１５×３０を演算し、アドレスＢ＋１５×３０をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢ＋１５×３０に１５個のデータＯＴ１をストアする。
【００３７】
次に、サイクルカウンタ４０９は、「３１」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ４を出力する。２９個のデータＯＵＴ４は、６０個の入力データ４０１〜４０４のうちの「５９，５８，５７，５６，５５，５４，５３，５２，５１，５０，４９，４８，４７，４６，４５，４６，４７，４８，４９，５０，５１，５２，５３，５４，５５，５６，５７，５８，５９」番目のデータである。具体的には、セレクタ４１０は、「５９，５８，５７，５６，５５，５４，５３，５２，５１，５０，４９，４８，４７，４６」番目の１４個のデータを複素共役部４１１に出力し、「４５，４６，４７，４８，４９，５０，５１，５２，５３，５４，５５，５６，５７，５８，５９」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「５９，５８，５７，５６，５５，５４，５３，５２，５１，５０，４９，４８，４７，４６」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１５番目〜２９番目の１５個のデータＯＴ１を切り出し、データＯＴ１をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ１は、図２の相関行列２０２の第１６行第１６列〜第１６行第３０列の１５個のデータに対応し、入力データ４０１〜４０４のうちの「４５，４６，４７，４８，４９，５０，５１，５２，５３，５４，５５，５６，５７，５８，５９」番目の１５個のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「３１」であるので、アドレスＢ＋１５×３１を演算し、アドレスＢ＋１５×３１をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢ＋１５×３１に１５個のデータＯＴ１をストアする。
【００３８】
次に、サイクルカウンタ４０９は、「３２」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ３を出力する。２９個のデータＯＵＴ３は、６０個の入力データ４０１〜４０４のうちの「２９，２８，２７，２６，２５，２４，２３，２２，２１，２０，１９，１８，１７，１６，３０，３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１，４２，４３，４４」番目のデータである。具体的には、セレクタ４１０は、「２９，２８，２７，２６，２５，２４，２３，２２，２１，２０，１９，１８，１７，１６」番目の１４個のデータを複素共役部４１１に出力し、「３０，３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１，４２，４３，４４」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「２９，２８，２７，２６，２５，２４，２３，２２，２１，２０，１９，１８，１７，１６」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１４番目〜２８番目の１５個のデータＯＴ２を切り出し、データＯＴ２をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ２は、図２の相関行列２０２の第１７行第１列〜第１７行第１５列の１５個のデータに対応し、入力データ４０１〜４０４のうち、「１６」番目の複素数データに対する共役複素数データ及び「３０，３１，３２，３３，３４，３５，３６，３７，３８，３９，４０，４１，４２，４３」番目のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「３２」であるので、アドレスＢ＋１５×３２を演算し、アドレスＢ＋１５×３２をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢ＋１５×３２に１５個のデータＯＴ２をストアする。
【００３９】
次に、サイクルカウンタ４０９は、「３３」のカウント値を出力する。すると、セレクタ４１０は、図６に示すように、６０個×３２ビットの入力データ４０１〜４０４のうちから選択した２９個×３２ビットのデータＯＵＴ４を出力する。２９個のデータＯＵＴ４は、６０個の入力データ４０１〜４０４のうちの「５９，５８，５７，５６，５５，５４，５３，５２，５１，５０，４９，４８，４７，４６，４５，４６，４７，４８，４９，５０，５１，５２，５３，５４，５５，５６，５７，５８，５９」番目のデータである。具体的には、セレクタ４１０は、「５９，５８，５７，５６，５５，５４，５３，５２，５１，５０，４９，４８，４７，４６」番目の１４個のデータを複素共役部４１１に出力し、「４５，４６，４７，４８，４９，５０，５１，５２，５３，５４，５５，５６，５７，５８，５９」番目の１５個のデータをシフタ４１２に出力する。複素共役部４１１は、「５９，５８，５７，５６，５５，５４，５３，５２，５１，５０，４９，４８，４７，４６」番目の１４個の複素数データを入力し、１４個の共役複素数データをシフタ４１２に出力する。シフタ４１２は、図７に示すように、１４＋１５＝２９個のデータＩ１を入力し、左から１４番目〜２８番目の１５個のデータＯＴ２を切り出し、データＯＴ２をデータメモリ３０２（図３）に出力する。１５個のデータＯＴ２は、図２の相関行列２０２の第１７行第１６列〜第１７行第３０列の１５個のデータに対応し、入力データ４０１〜４０４のうち、「４６」番目の複素数データに対する共役複素数データ及び「４５，４６，４７，４８，４９，５０，５１，５２，５３，５４，５５，５６，５７，５８」番目のデータである。出力アドレス生成部３０９（図３）は、サイクルカウンタ４０９のカウント値が「３３」であるので、アドレスＢ＋１５×３３を演算し、アドレスＢ＋１５×３３をデータメモリ３０２に出力する。プロセッサ３０３は、データメモリ３０２のアドレスＢ＋１５×３３に１５個のデータＯＴ２をストアする。
【００４０】
上記と同様に、サイクルカウンタ４０９のカウント値が「３４」〜「５９」までの処理を行う。その場合、セレクタ４１０は、図６に示すように、サイクルカウンタ４０９のカウント値が偶数の場合にはデータＯＵＴ３を出力し、サイクルカウンタ４０９のカウント値が奇数の場合にはデータＯＵＴ４を出力する。
【００４１】
また、図７に示すように、シフタ４１２は、サイクルカウンタ４０９のカウント値が３０又は３１の場合には、左から１５番目〜２９番目の１５個のデータＯＴ１を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が３２又は３３の場合には、左から１４番目〜２８番目の１５個のデータＯＴ２を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が３４又は３５の場合には、左から１３番目〜２７番目の１５個のデータＯＴ３を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が３６又は３７の場合には、左から１２番目〜２６番目の１５個のデータＯＴ４を切り出して出力する。また、シフタ４１２は、サイクルカウンタ４０９のカウント値が３８又は３９の場合には、左から１１番目〜２５番目の１５個のデータＯＴ５を切り出して出力する。すなわち、シフタ４１２は、サイクルカウンタ４０９のカウント値がｎ（ｎは偶数）又はｎ＋１の場合には、左から１５−｛（ｎ−３０）／２｝番目〜２９−｛（ｎ−３０）／２｝番目の１５個のデータＯＴ１＋｛（ｎ−３０）／２｝を切り出して出力する。最後に、シフタ４１２は、サイクルカウンタ４０９のカウント値が５８又は５９の場合には、左から１番目〜１５番目の１５個のデータＯＴ１５を切り出して出力する。
【００４２】
以上のように、サイクルカウンタ４０９のカウント値が「３０」〜「５９」の処理により、図２の相関行列２０２のうちの第１６行第１列〜第３０行第３０列の３０×１５個のデータがデータメモリ３０２にストアされる。
【００４３】
仮に、相関行列２０２の３０×３０＝９００個のデータを先頭から１個ずつ順次生成すると、９００サイクルを要し、相関行列２０２の生成時間が長くなってしまう。本実施形態によれば、相関行列２０２内の１５個のデータを１サイクルで並列処理することにより、サイクルカウンタ４０９のカウント値が「０」〜「５９」の６０サイクルで、相関行列２０２を短時間で生成することができる。
【００４４】
以上のように、セレクタ４１０は、第１の複数の複素数データ４０１〜４０４のうちから第２の複数の複素数データ及び第３の複数の複素数データを選択し、第２の複数の複素数データを複素共役部４１１に出力し、第３の複数の複素数データをシフタ４１２に出力する。複素共役部４１１は、第２の複数の複素数データに対する複数の共役複素数データを生成する。シフタ４１２は、切り出し部であり、複数の共役複素数データ及び第３の複数の複素数データのうちの一部のデータを切り出して出力する。
【００４５】
本実施形態によれば、複数の複素数データを並列処理することができるので、短時間で複素数データの相関行列２０２を生成することができる。
【００４６】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【符号の説明】
【００４７】
１０１  受信装置
１０２  復調回路
１０３  相関行列演算器
１０４  チャネル推定器
１０５  係数演算器
１０６  イコライザ
１０７  逆拡散器
３０１  命令メモリ
３０２  データメモリ
３０３  プロセッサ
４０１〜４０４  入力データ
４０５〜４０８  バッファ
４０９  サイクルカウンタ
４１０  セレクタ
４１１  複素共役部
４１２  シフタ
【図１】
2015232748.tif 000003
【図２】
2015232748.tif 000004
【図３】
2015232748.tif 000005
【図４】
2015232748.tif 000006
【図５】
2015232748.tif 000007
【図６】
2015232748.tif 000008
【図７】
2015232748.tif 000009