(57)【要約】【課題】巡回冗長検査の演算効率の向上を図ること。【解決手段】通信装置１００は、巡回冗長検査を用いてデータ系列１１０の誤りを確認する。分割部１０１は、伝搬経路から受信した可変長のデータ系列１１０を所定の処理単位に分割する。特定部１０２は、データ系列１１０のデータ長に基づいて、分割部１０１により得られた分割データ１１１〜１１３に付加されるテイルビットのデータ長を特定する。生成部１０３は、特定部１０２によって特定されたテイルビットのデータ長に基づいて分割データ単位の巡回冗長検査変換テーブルを生成する。演算部１０４は、生成部１０３によって生成された巡回冗長検査変換テーブルに基づいて分割データ毎の巡回冗長検査演算を行う。検査部１０５は、演算部１０４による分割データ毎の巡回冗長検査演算の結果に基づいてデータ系列の巡回冗長検査結果を得る。【選択図】図１Ｂ
2015142343.tif 000002
【特許請求の範囲】
【請求項１】
巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置であって、
伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割する分割部と、
前記データ系列のデータ長に基づいて、前記分割部により得られた分割データに付加されるテイルビットのデータ長を特定する特定部と、
前記特定部によって特定されたテイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成する生成部と、
前記生成部によって生成された巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行う演算部と、
前記演算部による前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る検査部と、
を備えることを特徴とする通信装置。
【請求項２】
前記巡回冗長検査変換テーブルは、前記分割データの巡回冗長検査の結果を、前記分割データに前記テイルビットを付したビット列の巡回冗長検査の結果に変換する変換テーブルであり、
前記演算部は、前記分割データの巡回冗長検査の結果を前記巡回冗長検査変換テーブルによって前記ビット列の巡回冗長検査の結果に変換することによって前記巡回冗長検査演算を行い、
前記演算部は、前記分割データ毎の前記ビット列の巡回冗長検査の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
ことを特徴とする請求項１に記載の通信装置。
【請求項３】
前記特定部は、前記データ系列のデータ長に基づいて、前記データ系列における前記分割データより後のデータ長を演算することによって前記テイルビットのデータ長を特定することを特徴とする請求項１または２に記載の通信装置。
【請求項４】
前記生成部は、前記巡回冗長検査の生成多項式に応じた、１個のテイルビットに対応する巡回冗長検査変換テーブルに基づいて、前記特定されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成することを特徴とする請求項１〜３のいずれか一つに記載の通信装置。
【請求項５】
巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置のコンピュータに、
前記通信装置が伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割し、
前記データ系列のデータ長に基づいて、前記データ系列の分割により得られた分割データに付加されるテイルビットのデータ長を特定し、
特定した前記テイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成し、
生成した前記巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行い、
前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
処理を実行させることを特徴とする巡回冗長検査プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、通信装置および巡回冗長検査プログラムに関する。
【背景技術】
【０００２】
従来、データ処理やデータ通信において、データにおける符号誤り（エラー）の発生を検出する誤り検出が用いられている。誤り検出の１つとして、巡回符号とその生成多項式による割算回路によって実現されるＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ：巡回冗長検査）が知られている（たとえば、下記特許文献１〜７参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２００８−１６０６６３号公報
【特許文献２】国際公開第２００９／０１９７６３号
【特許文献３】国際公開第２００８／０２３６８４号
【特許文献４】特開２０１１−２１１３５３号公報
【特許文献５】特開２０１０−１１８７８２号公報
【特許文献６】特開２００５−００６２９８号公報
【特許文献７】特開２００８−０１１０２５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしながら、上述した従来技術では、巡回冗長検査の演算を効率よく行うことができないという問題がある。
【０００５】
１つの側面では、本発明は、巡回冗長検査の演算効率の向上を図ることができる通信装置および巡回冗長検査プログラムを提供することを目的とする。
【課題を解決するための手段】
【０００６】
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置において、前記通信装置が伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割し、前記データ系列のデータ長に基づいて、前記データ系列の分割により得られた分割データに付加されるテイルビットのデータ長を特定し、特定した前記テイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成し、生成した前記巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行い、前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る通信装置および巡回冗長検査プログラムが提案される。
【発明の効果】
【０００７】
本発明の一側面によれば、巡回冗長検査の演算効率の向上を図ることができるという効果を奏する。
【図面の簡単な説明】
【０００８】
【図１Ａ】図１Ａは、実施の形態１にかかる通信装置の一例を示す図である。
【図１Ｂ】図１Ｂは、図１Ａに示した通信装置における信号の流れの一例を示す図である。
【図１Ｃ】図１Ｃは、分割データのテイルビットの一例を示す図である。
【図２Ａ】図２Ａは、実施の形態２にかかる無線端末装置の一例を示す図である。
【図２Ｂ】図２Ｂは、図２Ａに示した無線端末装置における信号の流れの一例を示す図である。
【図３Ａ】図３Ａは、無線端末装置の変調部の一例を示す図である。
【図３Ｂ】図３Ｂは、図３Ａに示した変調部における信号の流れの一例を示す図である。
【図３Ｃ】図３Ｃは、無線端末装置の復調部の一例を示す図である。
【図３Ｄ】図３Ｄは、図３Ｃに示した復調部における信号の流れの一例を示す図である。
【図４Ａ】図４Ａは、通信制御部のハードウェア構成の一例を示す図である。
【図４Ｂ】図４Ｂは、アプリケーション処理部のハードウェア構成の一例を示す図である。
【図５】図５は、復調部のトランスポートチャネル処理部による処理の一例を示す図である。
【図６】図６は、トランスポートブロックおよびコードワードの一例を示す図である。
【図７】図７は、ＣＲＣ部による処理の一例を示すフローチャートである。
【図８】図８は、トランスポートチャネルの並列処理の一例を示す参考図である。
【図９Ａ】図９Ａは、ＣＲＣ演算を行う演算回路の一例を示す図である。
【図９Ｂ】図９Ｂは、図９Ａに示したＣＲＣ演算を行う演算回路における信号の流れの一例を示す図である。
【図１０】図１０は、ＣＲＣ変換行列の一例を示す図である。
【図１１】図１１は、ＣＲＣ変換行列の定義の一例を示す図である。
【図１２】図１２は、ＣＲＣ変換行列の演算の一例を示す図である。
【図１３Ａ】図１３Ａは、ＣＲＣ変換行列の第１行とベクトルとの積の演算回路の一例を示す図である。
【図１３Ｂ】図１３Ｂは、ＣＲＣ変換行列の第２行とベクトルとの積の演算回路の一例を示す図である。
【図１３Ｃ】図１３Ｃは、ＣＲＣ変換行列の第２４行とベクトルとの積の演算回路の一例を示す図である。
【図１４】図１４は、正常時のビット列データの一例を示す図である。
【図１５】図１５は、ＣＲＣコードを除いたビット列データの一例を示す図である。
【図１６】図１６は、ＣｏｄｅＷｏｒｄ０のＣＲＣ演算の一例を示す図である。
【図１７】図１７は、各コードワードに対応する部分ＣＲＣコードおよびテイルビット数の一例を示す図である。
【図１８】図１８は、ＣＲＣ変換行列（ｎ＝１）の一例を示す図である。
【図１９】図１９は、ＣＲＣ変換行列（ｎ＝２，４，…，２５６）の一例を示す図である。
【図２０】図２０は、各コードワードに対応するＣＲＣ変換行列の一例を示す図である。
【図２１】図２１は、ＣｏｄｅＷｏｒｄ０にテイルビットを付したビット列のＣＲＣコードの演算の一例を示す図である。
【図２２】図２２は、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算結果の一例を示す図である。
【図２３】図２３は、異常発生時のビット列データの一例を示す図である。
【図２４】図２４は、ＣＲＣコードを除いたビット列データの一例を示す図である。
【図２５】図２５は、各コードワードに対応する部分ＣＲＣコードおよびテイルビット数の一例を示す図である。
【図２６】図２６は、各コードワードに対応するＣＲＣ変換行列の一例を示す図である。
【図２７】図２７は、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算結果の一例を示す図である。
【図２８】図２８は、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算結果の他の例を示す図である。
【発明を実施するための形態】
【０００９】
以下に図面を参照して、本発明にかかる通信装置および巡回冗長検査プログラムの実施の形態を詳細に説明する。
【００１０】
（実施の形態１）
（実施の形態１にかかる通信装置）
図１Ａは、実施の形態１にかかる通信装置の一例を示す図である。図１Ｂは、図１Ａに示した通信装置における信号の流れの一例を示す図である。図１Ａ，図１Ｂに、実施の形態１にかかる通信装置１００を示す。通信装置１００は、ＣＲＣを用いてデータ系列の誤りを確認できる通信装置である。通信装置１００は、分割部１０１と、特定部１０２と、生成部１０３と、演算部１０４と、検査部１０５と、を備える。
【００１１】
通信装置１００は、有線または無線の伝搬経路から可変長のデータ系列１１０を受信する。通信装置１００による通信には、電気信号、無線信号、光信号などの各種の通信を適用することができる。通信装置１００が伝搬経路から受信したデータ系列１１０は分割部１０１へ入力される。
【００１２】
分割部１０１は、入力されたデータ系列１１０を所定の処理単位に分割する。図１Ａ，図１Ｂに示す例では、データ系列１１０の分割により分割データ１１１〜１１３が得られたとする。すなわち、分割データ１１１〜１１３を結合するとデータ系列１１０になる。分割部１０１は、分割データ１１１〜１１３を演算部１０４へ出力する。
【００１３】
特定部１０２は、通信装置１００が受信したデータ系列のデータ長を示すデータ長情報を取得する。そして、特定部１０２は、取得したデータ長情報が示すデータ長に基づいて、分割部１０１により得られた分割データ１１１〜１１３に付加されるテイルビットのデータ長を特定する。分割データ１１１〜１１３に付加されるテイルビットは、たとえば、分割データ１１１〜１１３のそれぞれを対象として、データ系列１１０における対象の分割データより後のデータ長に応じたテイルビットである（たとえば図１Ｃ参照）。
【００１４】
一例としては、特定部１０２は、データ系列１１０のデータ長に基づいて、データ系列１１０における分割データより後のデータ長を演算することによってテイルビットのデータ長を特定する。特定部１０２は、特定したテイルビットのデータ長を生成部１０３へ通知する。
【００１５】
生成部１０３は、特定部１０２から通知されたテイルビットのデータ長に基づいて、分割部１０１により得られる分割データ単位の巡回冗長検査変換テーブル（ＣＲＣ変換行列）を生成する。巡回冗長検査変換テーブルは、一例としては、分割データ１１１〜１１３の巡回冗長検査の結果を、分割データ１１１〜１１３にテイルビットを付したビット列の巡回冗長検査の結果に変換する変換テーブルである。
【００１６】
たとえば、生成部１０３は、データ系列１１０の巡回冗長検査の生成多項式に応じた、１個のテイルビットに対応する巡回冗長検査変換テーブルに基づいて、通知されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成する。一例としては、１個のテイルビットに対応する巡回冗長検査変換テーブルは、生成多項式の各次数における係数を並べたビット列と、生成多項式の次数に応じた単位行列と、を含む行列である。
【００１７】
また、生成部１０３は、たとえば、ｎ個（ｎは２のべき乗）のテイルビットに対応する巡回冗長検査変換テーブルを複数通りのｎについて予め記憶しておいてもよい。そして、生成部１０３は、記憶しておいた巡回冗長検査変換テーブルに基づいて、特定部１０２から通知されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成する。これにより、巡回冗長検査変換テーブルを簡単な演算により生成することができる。生成部１０３は、生成した分割データ単位の巡回冗長検査変換テーブルを演算部１０４へ出力する。
【００１８】
演算部１０４は、生成部１０３から出力された巡回冗長検査変換テーブルに基づいて、分割部１０１から出力された分割データ（分割データ１１１〜１１３）毎の巡回冗長検査演算を行う。一例としては、演算部１０４は、分割データ１１１〜１１３の巡回冗長検査の結果を演算し、演算した分割データ１１１〜１１３の巡回冗長検査の結果を巡回冗長検査変換テーブルによって変換することによって、分割データ毎の巡回冗長検査演算を行う。演算部１０４は、分割データ毎の巡回冗長検査演算の結果を検査部１０５へ出力する。
【００１９】
検査部１０５は、演算部１０４から出力された分割データ毎の巡回冗長検査演算の結果に基づいて、データ系列１１０の巡回冗長検査結果を得る。一例としては、検査部１０５は、演算部１０４から出力された分割データ毎の巡回冗長検査演算を加算（たとえばＸＯＲ演算）することによってデータ系列１１０の巡回冗長検査結果を得る。そして、検査部１０５は、データ系列１１０の巡回冗長検査結果を出力する。
【００２０】
（分割データのテイルビット）
図１Ｃは、分割データのテイルビットの一例を示す図である。図１Ｃにおいて、図１Ａ，図１Ｂに示した部分と同様の部分については同一の符号を付して説明を省略する。テイルビット１３１は、分割データ１１１に付されるテイルビットであり、データ系列１１０における分割データ１１１より後のデータ長（分割データ１１２，１１３の合計データ長）と同じ長さの所定値（たとえば“０”）のビット列である。
【００２１】
テイルビット１３２は、分割データ１１２に付されるテイルビットであり、データ系列１１０における分割データ１１２より後のデータ長（分割データ１１３のデータ長）と同じ長さの所定値（たとえば“０”）のビット列である。
【００２２】
テイルビット１３３は、分割データ１１３に付されるテイルビットであるが、データ系列１１０における分割データ１１３より後のデータ長はゼロであるため、データ長がゼロのビット列である。
【００２３】
特定部１０２は、データ系列１１０のデータ長に基づいて、テイルビット１３１〜１３３のデータ長を特定する。生成部１０３は、テイルビット１３１のデータ長に基づいて分割データ１１１の巡回冗長検査変換テーブルを生成する。また、生成部１０３は、テイルビット１３２のデータ長に基づいて分割データ１１２の巡回冗長検査変換テーブルを生成する。また、生成部１０３は、テイルビット１３３のデータ長に基づいて分割データ１１３の巡回冗長検査変換テーブルを生成する。ただし、分割データ１１３の巡回冗長検査変換テーブルは、巡回冗長検査演算の結果を変化させない変換テーブルであるため、生成しなくてもよい。
【００２４】
演算部１０４は、分割データ１１１の巡回冗長検査の結果を、分割データ１１１のテイルビット１３１のデータ長に応じた巡回冗長検査変換テーブルによって変換する。これにより、分割データ１１１にテイルビット１３１を付したビット列１４１の巡回冗長検査演算の結果を演算することができる。
【００２５】
また、演算部１０４は、分割データ１１２の巡回冗長検査の結果を、分割データ１１２のテイルビット１３２のデータ長に応じた巡回冗長検査変換テーブルによって変換する。これにより、分割データ１１２にテイルビット１３２を付したビット列１４２の巡回冗長検査演算の結果を演算することができる。
【００２６】
また、演算部１０４は、分割データ１１３の巡回冗長検査の結果を、分割データ１１３のテイルビット１３３のデータ長に応じた巡回冗長検査変換テーブルによって変換する。これにより、分割データ１１３にテイルビット１３３を付したビット列１４３の巡回冗長検査演算の結果を演算することができる。ただし、テイルビット１３３のデータ長はゼロであり、ビット列１４３は分割データ１１３と等しいため、演算部１０４は、分割データ１１３の巡回冗長検査の結果をそのままビット列１４３の巡回冗長検査演算の結果として出力してもよい。
【００２７】
検査部１０５は、ビット列１４１〜１４３の各巡回冗長検査演算の結果に基づいて、データ系列１１０の巡回冗長検査結果を得る。一例としては、検査部１０５は、ビット列１４１〜１４３の各巡回冗長検査演算の結果を加算（たとえばＸＯＲ演算）することによってデータ系列１１０の巡回冗長検査結果を得る。
【００２８】
このように、実施の形態１によれば、分割データのデータ長に応じた巡回冗長検査変換テーブルを用いた分割データ毎の巡回冗長検査結果からデータ系列の巡回冗長検査結果を得ることができる。
【００２９】
これにより、たとえばデータ系列の巡回冗長検査結果をメモリに格納しなくても巡回冗長検査の演算を行うことができるため、巡回冗長検査の演算の省メモリ化を図ることができる。また、データ系列の復号を待たずに巡回冗長検査の演算を開始できるため、巡回冗長検査の演算を早期に完了させることが可能になる。このように、巡回冗長検査の演算の効率化を図ることができる。なお、巡回冗長検査の演算を早期に完了させることで、たとえばデータの受信処理のスループットの向上を図ることができる。
【００３０】
また、データ系列１１０が可変長であっても、データ系列１１０のデータ長に基づいて分割データ１１１〜１１３のテイルビットのデータ長を特定することにより、分割データ１１１〜１１３に対応する巡回冗長検査変換テーブルを生成することができる。このため、たとえばデータ系列１１０のビット列サイズ毎に巡回冗長検査変換テーブルを用意しておかなくてもよいため、省メモリ化を図ることができる。
【００３１】
（実施の形態２）
（実施の形態２にかかる無線端末装置）
図２Ａは、実施の形態２にかかる無線端末装置の一例を示す図である。図２Ｂは、図２Ａに示した無線端末装置における信号の流れの一例を示す図である。ここでは、ＬＴＥ（Ｌｏｎｇ  Ｔｅｒｍ  Ｅｖｏｌｕｔｉｏｎ）方式の通信を行う無線端末装置２００について説明する。図２Ａ，図２Ｂに示すように、無線端末装置２００は、アンテナ２１０と、ＲＦ部２２０と、通信制御部２３０と、アプリケーション処理部２４０と、ユーザインタフェース部２５０と、を備える。
【００３２】
アンテナ２１０は、他の無線通信装置（たとえば無線基地局）から無線送信された信号を受信し、受信した信号をＲＦ部２２０へ出力する。また、アンテナ２１０は、ＲＦ部２２０から出力された信号を他の無線通信装置（たとえば無線基地局）へ無線送信する。
【００３３】
ＲＦ部２２０は、デュプレクサ２２１と、受信ＲＦ部２２２と、送信ＲＦ部２２３と、を備える。デュプレクサ２２１は、アンテナ２１０から出力された信号を受信ＲＦ部２２２へ出力する。また、デュプレクサ２２１は、送信ＲＦ部２２３から出力された信号をアンテナ２１０へ出力する。
【００３４】
受信ＲＦ部２２２は、デュプレクサ２２１から出力された信号の受信ＲＦ処理を行う。受信ＲＦ処理には、たとえばＲＦ（Ｒａｄｉｏ  Ｆｒｅｑｕｅｎｃｙ：高周波）帯からベースバンド帯への周波数変換などが含まれる。受信ＲＦ部２２２は、受信ＲＦ処理を行った信号を通信制御部２３０へ出力する。
【００３５】
送信ＲＦ部２２３は、通信制御部２３０から出力された信号の送信ＲＦ処理を行う。送信ＲＦ処理には、たとえばベースバンド帯からＲＦ帯への周波数変換などが含まれる。送信ＲＦ部２２３は、送信ＲＦ処理を行った信号をデュプレクサ２２１へ出力する。
【００３６】
通信制御部２３０は、復調部２３１と、変調部２３２と、を備える。復調部２３１は、ＲＦ部２２０から出力された信号を復調する。復調部２３１の復調には、たとえばターボ復号やＣＲＣなどが含まれていてもよい。復調部２３１は、復調した信号をアプリケーション処理部２４０へ出力する。変調部２３２は、アプリケーション処理部２４０から出力された信号に基づく変調を行う。変調部２３２の変調には、たとえばＣＲＣ符号化やターボ符号化などが含まれていてもよい。変調部２３２は、変調により得られた信号をＲＦ部２２０へ出力する。
【００３７】
アプリケーション処理部２４０は、通信制御部２３０から出力された信号に基づくアプリケーション処理を行う。また、アプリケーション処理部２４０は、アプリケーション処理に基づく、ユーザに表示すべき情報をユーザインタフェース部２５０へ出力する。
【００３８】
また、アプリケーション処理部２４０は、ユーザインタフェース部２５０からの操作の受付結果に基づくアプリケーション処理を行う。また、アプリケーション処理部２４０は、アプリケーション処理に基づく、他の通信装置へ送信すべき信号を通信制御部２３０へ出力する。
【００３９】
ユーザインタフェース部２５０は、表示部２５１と、操作部２５２と、を備える。表示部２５１は、アプリケーション処理部２４０から出力された情報に基づく画像を無線端末装置２００のユーザへ表示する。操作部２５２は、無線端末装置２００のユーザからの操作を受け付け、操作の受付結果をアプリケーション処理部２４０へ出力する。
【００４０】
図１Ａ，図１Ｂに示した通信装置１００は、たとえば図２Ａ，図２Ｂに示す無線端末装置２００によって実現することができる。図１Ａ，図１Ｂに示した分割部１０１、特定部１０２、生成部１０３、演算部１０４および検査部１０５は、たとえば図２Ａ，図２Ｂに示す復調部２３１によって実現することができる。
【００４１】
（無線端末装置の変調部）
図３Ａは、無線端末装置の変調部の一例を示す図である。図３Ｂは、図３Ａに示した変調部における信号の流れの一例を示す図である。図３Ａ，図３Ｂに示すように、図２Ａ，図２Ｂに示した無線端末装置２００の変調部２３２は、制御チャネル処理部３１０と、トランスポートチャネル処理部３２０と、を備える。
【００４２】
制御チャネル処理部３１０は、アプリケーション処理部２４０（たとえば図２Ａ，図２Ｂ参照）から出力された信号のうちの制御チャネルの信号の変調を行う。たとえば、制御チャネル処理部３１０は、ＣＲＣ付与部３１１と、畳込み符号化部３１２と、レートマッチング部３１３と、スクランブリング部３１４と、変調処理部３１５と、ＩＦＦＴ部３１６と、を備える。
【００４３】
ＣＲＣ付与部３１１は、アプリケーション処理部２４０から出力された信号のうちの制御チャネルの信号にＣＲＣコードを付与する。そして、ＣＲＣ付与部３１１は、ＣＲＣコードを付与した信号を畳込み符号化部３１２へ出力する。畳込み符号化部３１２は、ＣＲＣ付与部３１１から出力された信号の畳込み符号化を行う。そして、畳込み符号化部３１２は、畳込み符号化を行った信号をレートマッチング部３１３へ出力する。
【００４４】
レートマッチング部３１３は、畳込み符号化部３１２から出力された信号のレートマッチングを行う。そして、レートマッチング部３１３は、レートマッチングを行った信号をスクランブリング部３１４へ出力する。スクランブリング部３１４は、レートマッチング部３１３から出力された信号のスクランブリングを行う。そして、スクランブリング部３１４は、スクランブリングを行った信号を変調処理部３１５へ出力する。
【００４５】
変調処理部３１５は、スクランブリング部３１４から出力された信号に基づく変調処理を行う。変調処理部３１５の変調処理には、たとえばＱＰＳＫ（Ｑｕａｄｒａｔｕｒｅ  Ｐｈａｓｅ  Ｓｈｉｆｔ  Ｋｅｙｉｎｇ：四位相偏移変調）などの各種の変調方式を用いることができる。変調処理部３１５は、変調処理によって得られた信号をＩＦＦＴ部３１６へ出力する。
【００４６】
ＩＦＦＴ部３１６は、変調処理部３１５から出力された信号のＩＦＦＴ（Ｉｎｖｅｒｓｅ  Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ：逆高速フーリエ変換）を行う。そして、ＩＦＦＴ部３１６は、ＩＦＦＴを行った信号をＲＦ部２２０へ出力する（たとえば図２Ａ，図２Ｂ参照）。
【００４７】
トランスポートチャネル処理部３２０は、アプリケーション処理部２４０（たとえば図２Ａ，図２Ｂ参照）から出力された信号のうちのトランスポートチャネルの信号の変調を行う。たとえば、トランスポートチャネル処理部３２０は、ＣＲＣ付与部３２１と、ターボ符号化部３２２と、レートマッチング／ＨＡＲＱ部３２３と、スクランブリング部３２４と、変調処理部３２５と、ＩＦＦＴ部３２６と、を備える。
【００４８】
ＣＲＣ付与部３２１は、アプリケーション処理部２４０から出力された信号のうちのトランスポートチャネルの信号にＣＲＣコードを付与する。そして、ＣＲＣ付与部３２１は、ＣＲＣコードを付与した信号をターボ符号化部３２２へ出力する。ターボ符号化部３２２は、ＣＲＣ付与部３２１から出力された信号のターボ符号化を行う。そして、ターボ符号化部３２２は、ターボ符号化を行った信号をレートマッチング／ＨＡＲＱ部３２３へ出力する。
【００４９】
レートマッチング／ＨＡＲＱ部３２３は、ターボ符号化部３２２から出力された信号のレートマッチングおよびＨＡＲＱ（Ｈｙｂｒｉｄ  Ａｕｔｏｍａｔｉｃ  Ｒｅｐｅａｔ  Ｒｅｑｕｅｓｔ：ハイブリッド自動再送要求）を行う。そして、レートマッチング／ＨＡＲＱ部３２３は、レートマッチングおよびＨＡＲＱに基づく信号をスクランブリング部３２４へ出力する。スクランブリング部３２４は、レートマッチング／ＨＡＲＱ部３２３から出力された信号のスクランブリングを行う。そして、スクランブリング部３２４は、スクランブリングを行った信号を変調処理部３２５へ出力する。
【００５０】
変調処理部３２５は、スクランブリング部３２４から出力された信号に基づく変調処理を行う。変調処理部３２５の変調処理には、たとえばＱＰＳＫや１６／６４ＱＡＭ（Ｑｕａｄｒａｔｕｒｅ  Ａｍｐｌｉｔｕｄｅ  Ｍｏｄｕｌａｔｉｏｎ：直角位相振幅変調）などの各種の変調方式を用いることができる。変調処理部３２５は、変調処理によって得られた信号をＩＦＦＴ部３２６へ出力する。
【００５１】
ＩＦＦＴ部３２６は、変調処理部３２５から出力された信号のＩＦＦＴを行う。そして、ＩＦＦＴ部３２６は、ＩＦＦＴを行った信号をＲＦ部２２０へ出力する（たとえば図２Ａ，図２Ｂ参照）。
【００５２】
（無線端末装置の復調部）
図３Ｃは、無線端末装置の復調部の一例を示す図である。図３Ｄは、図３Ｃに示した復調部における信号の流れの一例を示す図である。図３Ｃ，図３Ｄに示すように、図２Ａ，図２Ｂに示した無線端末装置２００の復調部２３１は、制御チャネル処理部３３０と、トランスポートチャネル処理部３４０と、を備える。
【００５３】
制御チャネル処理部３３０は、ＲＦ部２２０（たとえば図２Ａ，図２Ｂ参照）から出力された信号のうちの制御チャネルの信号の復調を行う。たとえば、制御チャネル処理部３３０は、ＦＦＴ部３３１と、復調処理部３３２と、デスクランブリング部３３３と、デレートマッチング部３３４と、畳込み復号部３３５と、ＣＲＣ部３３６と、を備える。
【００５４】
ＦＦＴ部３３１は、ＲＦ部２２０から出力された信号のＦＦＴ（Ｆａｓｔ  Ｆｏｕｒｉｅｒ  Ｔｒａｎｓｆｏｒｍ：高速フーリエ変換）を行う。そして、ＦＦＴ部３３１は、ＦＦＴを行った信号を復調処理部３３２へ出力する。
【００５５】
復調処理部３３２は、ＦＦＴ部３３１から出力された信号に基づく復調処理を行う。復調処理部３３２の復調処理には、たとえばＱＰＳＫなどの各種の復調方式を用いることができる。復調処理部３３２は、復調処理によって得られた信号をデスクランブリング部３３３へ出力する。
【００５６】
デスクランブリング部３３３は、復調処理部３３２から出力された信号のデスクランブリングを行う。そして、デスクランブリング部３３３は、デスクランブリングを行った信号をデレートマッチング部３３４へ出力する。デレートマッチング部３３４は、デスクランブリング部３３３から出力された信号のデレートマッチングを行う。そして、デレートマッチング部３３４は、デレートマッチングを行った信号を畳込み復号部３３５へ出力する。
【００５７】
畳込み復号部３３５は、デレートマッチング部３３４から出力された信号の畳込み復号を行う。そして、畳込み復号部３３５は、畳込み復号を行った信号をＣＲＣ部３３６へ出力する。ＣＲＣ部３３６は、畳込み復号部３３５から出力された信号のＣＲＣを行う。そして、ＣＲＣ部３３６は、ＣＲＣの結果をアプリケーション処理部２４０（たとえば図２Ａ，図２Ｂ参照）へ出力する。また、ＣＲＣ部３３６は、畳込み復号およびＣＲＣによって得られた制御情報のうちの、トランスポートチャネル処理部３４０における復調のための制御情報をトランスポートチャネル処理部３４０へ出力する。
【００５８】
トランスポートチャネル処理部３４０は、ＲＦ部２２０（たとえば図２Ａ，図２Ｂ参照）から出力された信号のうちのトランスポートチャネルの信号の復調を行う。たとえば、トランスポートチャネル処理部３４０は、ＦＦＴ部３４１と、復調処理部３４２と、デスクランブリング部３４３と、デレートマッチング／ＨＡＲＱ部３４４と、ターボ復号／ＣＲＣ演算部３４５と、ＣＲＣ部３４６と、を備える。
【００５９】
ＦＦＴ部３４１は、ＲＦ部２２０から出力された信号のＦＦＴを行う。そして、ＦＦＴ部３４１は、ＦＦＴを行った信号を復調処理部３４２へ出力する。復調処理部３４２は、ＦＦＴ部３４１から出力された信号に基づく復調処理を行う。復調処理部３４２の復調処理には、たとえばＱＰＳＫや１６／６４ＱＡＭなどの各種の復調方式を用いることができる。復調処理部３４２は、復調処理によって得られた信号をデスクランブリング部３４３へ出力する。
【００６０】
デスクランブリング部３４３は、復調処理部３４２から出力された信号のデスクランブリングを行う。そして、デスクランブリング部３４３は、デスクランブリングを行った信号をデレートマッチング／ＨＡＲＱ部３４４へ出力する。デレートマッチング／ＨＡＲＱ部３４４は、デスクランブリング部３４３から出力された信号のデレートマッチングおよびＨＡＲＱを行う。そして、デレートマッチング／ＨＡＲＱ部３４４は、デレートマッチングおよびＨＡＲＱに基づく信号をターボ復号／ＣＲＣ演算部３４５へ出力する。
【００６１】
ターボ復号／ＣＲＣ演算部３４５は、デレートマッチング／ＨＡＲＱ部３４４から出力された信号のターボ復号を行う。また、ターボ復号／ＣＲＣ演算部３４５は、トランスポートブロックを所定の処理単位であるコードワード（ＣｏｄｅＷｏｒｄ）に分割し、分割したコードワード毎にターボ復号を行う。コードワードのサイズは、たとえば制御チャネル処理部３３０から出力される制御情報によって制御される。ターボ復号／ＣＲＣ演算部３４５は、ターボ復号を行った信号をＣＲＣ部３４６へ出力する。
【００６２】
ＣＲＣ部３４６は、ターボ復号／ＣＲＣ演算部３４５から出力された信号のＣＲＣを行う。そして、ＣＲＣ部３４６は、ＣＲＣの結果をアプリケーション処理部２４０（たとえば図２Ａ，図２Ｂ参照）へ出力する。
【００６３】
図１Ａ，図１Ｂに示した分割部１０１、特定部１０２、生成部１０３、演算部１０４および検査部１０５は、たとえば復調部２３１のターボ復号／ＣＲＣ演算部３４５およびＣＲＣ部３４６によって実現することができる。
【００６４】
（通信制御部のハードウェア構成）
図４Ａは、通信制御部のハードウェア構成の一例を示す図である。図２Ａ，図２Ｂに示した通信制御部２３０は、たとえば、図４Ａに示す演算回路４１０によって実現することができる。演算回路４１０は、ＤＳＰ４１１と、小規模メモリ４１２と、ターボ復号器群４１３と、ＨＷアクセラレータ４１４〜４１６と、を備える。
【００６５】
ＤＳＰ４１１（Ｄｉｇｉｔａｌ  Ｓｉｇｎａｌ  Ｐｒｏｃｅｓｓｏｒ）は、演算回路４１０の全体の制御を司り、各種の無線信号処理を行う。小規模メモリ４１２は、ＤＳＰ４１１のワークエリアとして使用される。ターボ復号器群４１３は、ターボ復号を行うため複数のハードウェアアクセラレータである。複数のハードウェアアクセラレータを用いることにより、多くの処理時間を要するターボ復号を並列処理によって行い、処理時間の短縮を図ることができる。ＨＷアクセラレータ４１４〜４１６は、ターボ復号の他の各種の処理を行うためのハードウェアアクセラレータである。
【００６６】
通信制御部２３０のターボ復号／ＣＲＣ演算部３４５は、たとえば小規模メモリ４１２およびターボ復号器群４１３によって実現することができる。また、トランスポートチャネル処理部３４０の他の各部は、たとえばＤＳＰ４１１、小規模メモリ４１２、ＨＷアクセラレータ４１４〜４１６によって実現することができる。
【００６７】
ターボ復号器群４１３は、コードワード毎の誤り検出／訂正処理の結果、誤り未検出となった各コードワードについて、トランスポートブロックのＣＲＣの生成多項式でＣＲＣコード（部分ＣＲＣコード）を演算する。そして、ターボ復号器群４１３は、演算した部分ＣＲＣコードをＤＳＰ４１１（ＣＲＣ部３４６）へ通知する。
【００６８】
また、ターボ復号器群４１３のコードワード出力は、トランスポートブロックのＣＲＣの結果を待たず、ターボ復号完了後すみやかにアプリケーション処理部２４０のメモリ（たとえば図４Ｂに示す大規模メモリ４２２）へ送信される。アプリケーション処理部２４０では上位レイヤ処理、動画、音声などのミドルウェア処理が行われるため、比較的大きなメモリが搭載され、組み込み的な容量制限は少ない。
【００６９】
（アプリケーション処理部のハードウェア構成）
図４Ｂは、アプリケーション処理部のハードウェア構成の一例を示す図である。図２Ａ，図２Ｂに示したアプリケーション処理部２４０は、たとえば、図４Ｂに示す演算回路４２０によって実現することができる。演算回路４２０は、ＣＰＵ４２１と、大規模メモリ４２２と、を備える。ＣＰＵ４２１（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ：中央処理装置）は、演算回路４２０の全体の制御を司る。大規模メモリ４２２は、ＣＰＵ４２１のワークエリアとして使用される。
【００７０】
（復調部のトランスポートチャネル処理部による処理）
図５は、復調部のトランスポートチャネル処理部による処理の一例を示す図である。まず、復調部２３１のトランスポートチャネル処理部３４０は、まず、ＦＦＴ部３４１によるＦＦＴ５０１を行う。つぎに、トランスポートチャネル処理部３４０は、復調処理部３４２による復調処理５０２（ＤＥＭ）を行う。つぎに、トランスポートチャネル処理部３４０は、図示しないデスクランブリングおよびデレートマッチング／ＨＡＲＱを行う。
【００７１】
つぎに、トランスポートチャネル処理部３４０は、ターボ復号／ＣＲＣ演算部３４５によるターボ復号／ＣＲＣ演算処理５０３（Ｔｕｒｂｏ  ＤＥＣ）を行う。ターボ復号／ＣＲＣ演算処理５０３においては、分割されたブロックであるコードワード毎にターボ復号およびＣＲＣ演算による誤り検出処理が行われる。
【００７２】
また、ターボ復号／ＣＲＣ演算処理５０３の開始時に、全てのコードワードのビットサイズ５１２が制御チャネル処理部３３０からターボ復号／ＣＲＣ演算部３４５へ通知される。これに対して、ＣＲＣ部３４６は、ターボ復号などの前段処理中にコードワードのビットサイズ５１２および位置から、時間的に後ろのコードワードのビット数の総和を取ることでテイルビットのサイズを演算することができる。そして、ＣＲＣ部３４６は、演算したテイルビットの数に基づいて、コードワード毎のＣＲＣ変換行列を所定の行列積（後述）で演算することができる。
【００７３】
このように、ＣＲＣ部３４６は、ターボ復号／ＣＲＣ演算処理５０３の間に与えられたビットサイズ５１２により、分割されたブロック毎のＣＲＣ変換行列を演算しておく。そして、ＣＲＣ部３４６は、ターボ復号／ＣＲＣ演算処理５０３が完了すると、ターボ復号／ＣＲＣ演算処理５０３により得られた部分ＣＲＣコード５１１と、演算したＣＲＣ変換行列と、に基づきブロック毎のＣＲＣコードを演算することができる。
【００７４】
一方、ＣＲＣ部３４６は、演算したブロック毎のＣＲＣコードのＸＯＲを演算することによりＣＲＣ５１３を行うことができる。ＣＲＣ５１３は、ターボ復号／ＣＲＣ演算処理５０３によって復号されたビット列５２０を用いなくても行うことができるため、ビット列５２０はＣＲＣ５１３を待たずに順次、アプリケーション処理部２４０へ送信される。
【００７５】
ＣＲＣ５１３による判定結果５１４はアプリケーション処理部２４０へ送信される。これにより、アプリケーション処理部２４０は、復号されたビット列５２０と、ビット列５２０の判定結果５１４と、を得ることができる。アプリケーション処理部２４０は、たとえば、判定結果５１４に基づいて、ビット列５２０を破棄するか使用するかを判断することができる。
【００７６】
（トランスポートブロックおよびコードワード）
図６は、トランスポートブロックおよびコードワードの一例を示す図である。図６に示すトランスポートブロック６００は、復調部２３１による復調対象のトランスポートブロックである。ＣＲＣコード６０１は、トランスポートブロック６００の末尾に付されたＣＲＣコードである。図６に示す例では、トランスポートブロック６００は、ＣｏｄｅＷｏｒｄ０〜３の４つのコードワードに分割されるとする。
【００７７】
ビット列６１０は、ＣｏｄｅＷｏｒｄ０にテイルビット“０”を付したビット列である。ビット列６１０のテイルビット数は、トランスポートブロック６００におけるＣｏｄｅＷｏｒｄ０より後のデータ長であり、ＣｏｄｅＷｏｒｄ１〜３の合計データ長に相当する。ＣＲＣコード６２０は、ビット列６１０のＣＲＣコードである。
【００７８】
ビット列６１１は、ＣｏｄｅＷｏｒｄ１にテイルビット“０”を付したビット列である。ビット列６１１のテイルビット数は、トランスポートブロック６００におけるＣｏｄｅＷｏｒｄ１より後のデータ長であり、ＣｏｄｅＷｏｒｄ２，３の合計データ長に相当する。ＣＲＣコード６２１は、ビット列６１１のＣＲＣコードである。
【００７９】
ビット列６１２は、ＣｏｄｅＷｏｒｄ２にテイルビット“０”を付したビット列である。ビット列６１２のテイルビット数は、トランスポートブロック６００におけるＣｏｄｅＷｏｒｄ２より後のデータ長であり、ＣｏｄｅＷｏｒｄ３のデータ長に相当する。ＣＲＣコード６２２は、ビット列６１２のＣＲＣコードである。
【００８０】
ビット列６１３は、ＣｏｄｅＷｏｒｄ３にテイルビット“０”を付したビット列である。ただし、ＣｏｄｅＷｏｒｄ３はトランスポートブロック６００における最後のコードワードであるため、ビット列６１３のテイルビット数はゼロである。ＣＲＣコード６２３は、ビット列６１３のＣＲＣコードである。
【００８１】
ターボ復号／ＣＲＣ演算部３４５は、ＣｏｄｅＷｏｒｄ０〜３の各ＣＲＣコードを演算して部分ＣＲＣコードとしてＣＲＣ部３４６へ出力する。
【００８２】
ＣＲＣ部３４６は、ビット列６１０〜６１３の各テイルビット数をトランスポートブロック６００のデータ長から演算する。そして、ＣＲＣ部３４６は、演算した各テイルビット数に基づいて、ＣｏｄｅＷｏｒｄ０の各部分ＣＲＣコードからＣＲＣコード６２０〜６２３を得るためのＣＲＣ変換行列を演算する。
【００８３】
また、ＣＲＣ部３４６は、ＣｏｄｅＷｏｒｄ０〜３のそれぞれについて、演算したＣＲＣ変換行列と、ターボ復号／ＣＲＣ演算部３４５から出力された部分ＣＲＣコードと、の行列ベクトル積を演算することにより、ＣＲＣコード６２０〜６２３を得る。そして、ＣＲＣ部３４６は、ＣＲＣコード６２０〜６２３のＸＯＲの演算結果がＣＲＣコード６０１と一致するか否かを判断することによりＣＲＣを行う。
【００８４】
（ＣＲＣ部による処理）
図７は、ＣＲＣ部による処理の一例を示すフローチャートである。ＣＲＣ部３４６は、検査対象のトランスポートブロック毎に、たとえばＤＳＰ４１１のファームウェア処理により、図７に示す各ステップを行う。まず、ＣＲＣ部３４６は、コードワード毎のビットサイズ情報を取得する（ステップＳ７０１）。ビットサイズ情報は、たとえば、ＣＲＣ部３４６の処理前（たとえばターボ復号／ＣＲＣ演算部３４５による処理中）に制御チャネル処理部３３０から出力される制御情報に含まれる、検査対象のトランスポートブロックのサイズ情報から算出することができる。
【００８５】
つぎに、ＣＲＣ部３４６は、コードワード毎のテイルビット数を演算する（ステップＳ７０２）。たとえば、ＣＲＣ部３４６は、コードワード毎に、対象のコードワードより時間的に後ろのコードワードのサイズの総和を演算することによってテイルビット数を演算することができる。
【００８６】
つぎに、ＣＲＣ部３４６は、コードワードのそれぞれについて以下のステップＳ７０３〜Ｓ７０５を実行する（コードワードループ）。まず、ＣＲＣ部３４６は、対象のコードワードについてのＣＲＣ変換行列として、（生成多項式の次数）×（生成多項式の次数）の単位行列を設定する（ステップＳ７０３）。
【００８７】
つぎに、ＣＲＣ部３４６は、ｉ（ｉ＝０〜生成多項式の次数−１）のそれぞれについて以下のステップＳ７０４，Ｓ７０５を実行する（ビット確認ループｉ）。まず、ＣＲＣ部３４６は、対象のコードワードについてステップＳ７０２によって演算したテイルビット数（２進数）と、“１”をｉビット左シフトした値と、のアンド演算結果が“０”であるか否かを判断する（ステップＳ７０４）。アンド演算結果が“０”である場合（ステップＳ７０４：Ｙｅｓ）は、ＣＲＣ部３４６は、つぎのｉについての処理へ移行する（ビット確認ループｉ  Ｅｎｄ）。
【００８８】
ステップＳ７０４において、アンド演算結果が“０”でない場合（ステップＳ７０４：Ｎｏ）は、ＣＲＣ部３４６は、ステップＳ７０５へ移行する。すなわち、ＣＲＣ部３４６は、対象のコードワードについてのＣＲＣ変換行列に対して、ＣＲＣ変換行列Ａiとの行列積を行い（ステップＳ７０５）、つぎのｉについての処理へ移行する（ビット確認ループｉ  Ｅｎｄ）。ＣＲＣ変換行列Ａiについては後述する。全ての対象のコードワードについてビット確認ループｉを終了すると（コードワードループ  Ｅｎｄ）、コードワード毎のＣＲＣ変換行列を得ることができる。
【００８９】
つぎに、ＣＲＣ部３４６は、ターボ復号／ＣＲＣ演算部３４５により演算されたコードワード毎の部分ＣＲＣコードを取得する（ステップＳ７０６）。つぎに、ＣＲＣ部３４６は、各コードワードを含むトランスポートブロック全体のＣＲＣコードを示す全体ＣＲＣコードを初期化（全体ＣＲＣコード＝０）する（ステップＳ７０７）。
【００９０】
つぎに、ＣＲＣ部３４６は、コードワードのそれぞれについて以下のステップＳ７０８を実行する（コードワードループ）。すなわち、ＣＲＣ部３４６は、対象のコードワードについて演算したＣＲＣ変換行列と対象のコードワードについての部分ＣＲＣコードと、の行列ベクトル積を演算する。そして、ＣＲＣ部３４６は、全体ＣＲＣコードに対して、行列ベクトル積の演算結果とのＸＯＲ演算を行う（ステップＳ７０８）。
【００９１】
全てのコードワードについてステップＳ７０８が終了すると（コードワードループ  Ｅｎｄ）、ＣＲＣ部３４６は、全体ＣＲＣコードをアプリケーション処理部２４０へ通知し（ステップＳ７０９）、一連の処理を終了する。これにより、トランスポートブロックについてのＣＲＣ結果をアプリケーション処理部２４０へ通知することができる。
【００９２】
（トランスポートチャネルの並列処理）
図８は、トランスポートチャネルの並列処理の一例を示す参考図である。図８に示すように、復調部２３１においては、制御チャネル処理部３３０による制御チャネル処理８１０により得られた制御情報に基づいて、トランスポートチャネル処理部３４０によるトランスポートチャネル処理８２０が行われる。トランスポートチャネル処理８２０においては、たとえば図３Ｃ，図３Ｄに示したように、復調処理、デスクランブリング、デレートマッチング／ＨＡＲＱ、ターボ復号／ＣＲＣ演算８２１などが行われる。
【００９３】
トランスポートチャネル処理８２０のターボ復号／ＣＲＣ演算８２１においては、小規模メモリ４１２（たとえば図４Ａ参照）に格納された尤度情報８０１に基づいてターボ復号器群４１３によってコードワード毎の部分ＣＲＣコード８０２が演算される。部分ＣＲＣコード８０２は小規模メモリ４１２に格納される。また、ターボ復号器群４１３によってターボ復号された各コードワードはアプリケーション処理部２４０の大規模メモリ４２２へ順次送信される。そして、大規模メモリ４２２へ格納された各コードワードが結合されることにより、トランスポートブロック８０４が復元される。
【００９４】
また、トランスポートチャネル処理８２０においては、復調処理、デスクランブリング、デレートマッチング／ＨＡＲＱ、ターボ復号／ＣＲＣ演算８２１と並行して、ＣＲＣ部３４６によるＣＲＣ変換行列演算８２２が行われる。
【００９５】
ＣＲＣ変換行列演算８２２において、ＣＲＣ部３４６は、制御チャネル処理８１０により得られた制御情報に基づいて、コードワード毎にテイルビット長を演算する。そして、ＣＲＣ部３４６は、演算したテイルビット長に基づくコードワード毎のＣＲＣ変換行列を演算する。ＣＲＣ部３４６によって演算されたコードワード毎のＣＲＣ変換行列８０３は小規模メモリ４１２に格納される。
【００９６】
そして、ＣＲＣ部３４６は、小規模メモリ４１２に格納されたコードワード毎の部分ＣＲＣコード８０２およびＣＲＣ変換行列８０３に基づくＣＲＣ８２３を行う。すなわち、ＣＲＣ部３４６は、コードワード毎の部分ＣＲＣコード８０２およびＣＲＣ変換行列８０３に基づくコードワード毎のＣＲＣ変換を行い、ＣＲＣ変換により得られた各ＣＲＣコードを加算（ＸＯＲ）する。
【００９７】
この処理（ＣＲＣ変換＋ＸＯＲ）は、たとえばＤＳＰ４１１のファームウェア（ＦＷ）処理によって行われる。これにより、トランスポートブロック８０４のＣＲＣを行うことができる。ＣＲＣ部３４６は、トランスポートブロック８０４のＣＲＣ結果をアプリケーション処理部２４０へ送信する。
【００９８】
これにより、たとえばトランスポートブロック８０４を小規模メモリ４１２に格納しなくてもＣＲＣ演算を行うことができるため、たとえばトランスポートブロック単位でのＣＲＣ演算を行う場合に比べて、ＣＲＣ演算の省メモリ化を図ることができる。
【００９９】
また、トランスポートブロック６００の復号を待たずにＣＲＣ演算を開始できるため、たとえばトランスポートブロック単位でのＣＲＣ演算を行う場合に比べて、ＣＲＣ演算の時間短縮を図ることができる。
【０１００】
たとえば、ＬＴＥの場合、たとえばトランスポートブロック単位でのＣＲＣ演算を行う場合は、規格上、最大で２４４９６ビットを保持しておくことを要する。これに対して、本実施の形態によれば、部分ＣＲＣの２４ビット×１３（ＣｏｄｅＷｏｒｄ数の最大）と２のべき乗の変換行列１５×２４×２４ビットの合計８９５２ビットを保持すればよく、メモリ消費を抑えることができる。
【０１０１】
（ＣＲＣ演算）
図９Ａは、ＣＲＣ演算を行う演算回路の一例を示す図である。図９Ｂは、図９Ａに示したＣＲＣ演算を行う演算回路における信号の流れの一例を示す図である。ここでは一例として、２４次の下記（１）式に示すＣＲＣ生成多項式によるＣＲＣ演算を行う場合について説明する。
【０１０２】
ｘ24＋ｘ23＋ｘ18＋ｘ17＋ｘ14＋ｘ11＋ｘ10
＋ｘ7＋ｘ6＋ｘ5＋ｘ4＋ｘ3＋ｘ＋１        …（１）
【０１０３】
上記（１）式に示したＣＲＣ生成多項式によるＣＲＣ演算は、たとえば図９Ａ，図９Ｂに示す演算回路９００によって行うことができる。ＣＲＣ生成多項式が２４次の多項式であるため、演算回路９００は、ＣＲＣ生成多項式の最高次を除く０次〜２３次にそれぞれ対応するタップＴ0〜Ｔ23を有する。タップＴ0〜Ｔ23は直列に接続される。タップＴ0〜Ｔ23にはそれぞれ１ビットの情報が格納される。ＣＲＣ演算の対象のビット列はタップＴ0から順次入力される。タップＴ0〜Ｔ23のそれぞれは、前段からビットが入力される毎に直前に格納していたビットを後段へ出力する。
【０１０４】
また、ＣＲＣ生成多項式に含まれ、最高次の２４次を除く各次数のうちの係数が“１”である各次数（０，１，３〜７，１０，１１，１４，１７，１８，２３次）に対応するタップは、タップＴ0，Ｔ1，Ｔ3〜Ｔ7，Ｔ10，Ｔ11，Ｔ14，Ｔ17，Ｔ18，Ｔ23である。このため、タップＴ0，Ｔ1，Ｔ3〜Ｔ7，Ｔ10，Ｔ11，Ｔ14，Ｔ17，Ｔ18，Ｔ23の各前段には、ＸＯＲ演算部ＸＯＲ0，ＸＯＲ1，ＸＯＲ3〜ＸＯＲ7，ＸＯＲ10，ＸＯＲ11，ＸＯＲ14，ＸＯＲ17，ＸＯＲ18，ＸＯＲ23（Ｘ）が設けられる。
【０１０５】
ＸＯＲ演算部ＸＯＲ0，ＸＯＲ1，ＸＯＲ3〜ＸＯＲ7，ＸＯＲ10，ＸＯＲ11，ＸＯＲ14，ＸＯＲ17，ＸＯＲ18，ＸＯＲ23のそれぞれは、前段のタップからの出力と、最後段のタップＴ23の出力と、のＸＯＲを演算し、演算結果を後段のタップへ出力する。たとえば、ＸＯＲ演算部ＸＯＲ18は、タップＴ17からの出力と、最後段のタップＴ23からの出力と、のＸＯＲを演算し、演算結果をタップＴ18へ出力する。
【０１０６】
このような演算回路９００に対して、タップＴ0の前段のＸＯＲ演算部ＸＯＲ0から演算対象のビット列が順次入力された場合にタップＴ0〜Ｔ23に格納された値が、ＣＲＣ演算の対象のビット列のＣＲＣコードとなる。このため、ＣＲＣコードは、生成多項式の次数に相当するビット数の（図９Ａ，図９Ｂに示す例では２４ビット）のビット列となる。
【０１０７】
また、演算回路９００にある第１ビット列が入力された状態からさらにｎ個の“０”が入力された場合にタップＴ0〜Ｔ23に格納された値は、第１ビット列にテイルビット（“０”）をｎ個付した第２ビット列のＣＲＣコードとなる。
【０１０８】
一般的に、あるビット列にＣＲＣコードを付加する処理は、単純にビット列にＣＲＣコードを足す処理である。生成多項式の次数分の“０”のビット列の代わりにＣＲＣコードが付加されたビット列に対して上述のＣＲＣ演算を行うと、最終的にタップに保存されているビット列は全て“０”になる。
【０１０９】
たとえば、通信システムにおいて、送信側は、上述のようなＣＲＣ演算により得られたＣＲＣコードを付加したビット列を送信する。これに対して、受信側は、受信データに対して送信側と同様のＣＲＣ演算を行い、ＣＲＣ演算により得られたコードが全て“０”であることを確認することによりＣＲＣを行うことができる。
【０１１０】
つぎに、演算対象のビット列を分割した場合のＣＲＣ演算について説明する。
【０１１１】
この場合は、たとえば、ＣＲＣ演算の対象のビット列を分割した分割ビット列の末尾に、分割前のビット列における分割ビット列より後ろのビット列を全て“０”で置き換えたビット列（テイルビット）のＣＲＣコードを演算することができる。そして、各分割ビット列について演算したＣＲＣコードのＸＯＲを演算すると、分割前のビット列のＣＲＣコードと等しくなる。
【０１１２】
（ＣＲＣ変換行列）
図１０は、ＣＲＣ変換行列の一例を示す図である。演算回路９００に対して１個の“０”を入力した場合の各タップの値の変化は、たとえば図１０に示す式１０００のように表すことができる。式１０００において、Ｔ0old〜Ｔ23oldは、演算回路９００に対して１個の“０”を入力する前にタップＴ0〜Ｔ23に格納されていた値である。Ｔ0new〜Ｔ23newは、演算回路９００に対して１個の“０”を入力した後にタップＴ0〜Ｔ23に格納される値である。
【０１１３】
式１０００に示すように、ＣＲＣ変換行列ＡとＴ0old〜Ｔ23oldとの積を演算することによりＴ0new〜Ｔ23newを得ることができる。ただし、この行列積演算は、算術的な行列積である要素の積和ではなく、要素毎のＡＮＤ論理とＸＯＲ加算である（たとえば図１２参照）。ＣＲＣ変換行列Ａは、上記（１）式に示したＣＲＣ生成多項式に応じた行列である（たとえば図１１参照）。
【０１１４】
また、演算回路９００に対してｎ個の“０”を入力した場合のＴ0new〜Ｔ23newは、ＣＲＣ変換行列ＡnとＴ0old〜Ｔ23oldとの積を演算することにより得ることができる。すなわち、ある第１ビット列にｎ個のテイルビットを付した第２ビット列のＣＲＣコードは、ＣＲＣ変換行列Ａnと第１ビット列のＣＲＣコードとの積を演算することによって得ることができる。
【０１１５】
したがって、２1，２2，…個のテイルビットに対応するＣＲＣ変換行列Ａ1，Ａ4，…をルックアップテーブルとして記憶しておくことで、ある第１ビット列にｎ個のテイルビットを付した第２ビット列のＣＲＣコードを短時間で演算することができる。
【０１１６】
たとえば、ＣＲＣ変換行列Ａnを複数のｎについてルックアップテーブルとして記憶しておく。記憶しておくＣＲＣ変換行列Ａnは、通信方式などから想定されるテイルビット数に対応できる分確保すればよい。
【０１１７】
たとえば、ＬＴＥの場合は、ＣＲＣはトランスポートブロックと呼ばれるビット列に対して行われる。最大となるビット列は、トランスポートブロック長の最大値であり、規格上２４４９６ビットとされている。よって、ＬＴＥのトランスポートブロックのＣＲＣに関しては、２0から２14までの１５種類のＣＲＣ変換行列を用意しておけば各テイルビット数に対応することができる。また、トランスポートブロックはコードワードと呼ばれる部分ビット列に分割される。１トランスポートブロックは最大１３のＣｏｄｅＷｏｒｄに分割される。
【０１１８】
（ＣＲＣ変換行列の定義）
図１１は、ＣＲＣ変換行列の定義の一例を示す図である。図１０に示したＣＲＣ変換行列Ａは、たとえば図１１に示すように定義される。たとえば、ＣＲＣ変換行列Ａは、上記（１）式に示したＣＲＣ生成多項式の次数をｊとするとｊ×ｊの正方行列である（図１１に示す例ではｊ＝２４）。
【０１１９】
ＣＲＣ変換行列Ａの第１列の部分行列１１０１は、上記（１）式に示したＣＲＣ生成多項式の最高次数を除いた各次数の係数を並べたビット列である。部分行列１１０１は、下から０，１，３，４，５，６，７，１０，１１，１４，１７，１８，２３ビット目が“１”であり他は“０”であるビット列である。ＣＲＣ変換行列Ａの右上の（ｊ−１）×（ｊ−１）の部分行列１１０２は単位行列である。ＣＲＣ変換行列Ａの残りの右下の部分行列１１０３はゼロ行列である。
【０１２０】
（ＣＲＣ変換行列の演算）
図１２は、ＣＲＣ変換行列の演算の一例を示す図である。図１０に示した式１０００の行列積演算は、たとえば図１２に示す式１２００のように、要素毎のＡＮＤ論理とＸＯＲ加算である。たとえば、Ｔ0newは、“１”＆Ｔ23oldと、“０”＆Ｔ22oldと、“０”＆Ｔ21oldと、…“０”＆Ｔ0oldと、のＸＯＲによって演算することができる。
【０１２１】
つぎに、ＣＲＣ変換行列の作成について説明する。一般的に、ＤＳＰのような信号処理プロセッサでは行列演算命令は無いため、以下のような論理演算やシフトなどを組み合わせて行列積を実行することができる。まず、行列とベクトルとの積について説明する。
【０１２２】
（行列とベクトルとの積）
図１３Ａは、ＣＲＣ変換行列の第１行とベクトルとの積の演算回路の一例を示す図である。図１２に示したＴ23newを求める演算は、たとえば図１３Ａに示す演算回路１３１０によって行うことができる。演算回路１３１０は、２４個のアンド回路１３１１（＆）と、２３個のＸＯＲ回路１３１２（×）と、を備える。
【０１２３】
２４個のアンド回路１３１１には、それぞれＣＲＣ変換行列Ａ1の第１行である“１１０００００…０”が入力される。また、２４個のアンド回路１３１１には、それぞれＴ23old〜Ｔ0oldが入力される。アンド回路１３１１（＆）のそれぞれは、入力された各ビットの積を演算する。
【０１２４】
２３個のＸＯＲ回路１３１２は、２４個のアンド回路１３１１による各演算結果の排他的論理和（ＸＯＲ）を演算する。そして、２３個のＸＯＲ回路１３１２による演算結果がＴ23newとして演算回路１３１０から出力される。
【０１２５】
図１３Ｂは、ＣＲＣ変換行列の第２行とベクトルとの積の演算回路の一例を示す図である。図１２に示したＴ22newを求める演算は、たとえば図１３Ｂに示す演算回路１３２０によって行うことができる。演算回路１３２０は、２４個のアンド回路１３２１（＆）と、２３個のＸＯＲ回路１３２２（×）と、を備える。
【０１２６】
２４個のアンド回路１３２１には、それぞれＣＲＣ変換行列Ａ1の第２行である“００１００００…０”が入力される。また、２４個のアンド回路１３２１には、それぞれＴ23old〜Ｔ0oldが入力される。アンド回路１３２１のそれぞれは、入力された各ビットの積を演算する。
【０１２７】
２３個のＸＯＲ回路１３２２は、２４個のアンド回路１３２１による各演算結果の排他的論理和（ＸＯＲ）を演算する。そして、２３個のＸＯＲ回路１３２２による演算結果がＴ22newとして演算回路１３２０から出力される。
【０１２８】
図１３Ｃは、ＣＲＣ変換行列の第２４行とベクトルとの積の演算回路の一例を示す図である。図１２に示したＴ0newを求める演算は、たとえば図１３Ｃに示す演算回路１３３０によって行うことができる。演算回路１３３０は、２４個のアンド回路１３３１（＆）と、２３個のＸＯＲ回路１３３２（×）と、を備える。
【０１２９】
２４個のアンド回路１３３１には、それぞれＣＲＣ変換行列Ａ1の第２４行である“１００００００…０”が入力される。また、２４個のアンド回路１３３１には、それぞれＴ23old〜Ｔ0oldが入力される。アンド回路１３３１のそれぞれは、入力された各ビットの積を演算する。
【０１３０】
２３個のＸＯＲ回路１３３２は、２４個のアンド回路１３３１による各演算結果の排他的論理和（ＸＯＲ）を演算する。そして、２３個のＸＯＲ回路１３３２による演算結果がＴ0newとして演算回路１３３０から出力される。
【０１３１】
同様に、ＣＲＣ変換行列の第３行〜第２３行とベクトルとの積についても、２４個のアンド回路および２３個のＸＯＲ回路によって演算することで、Ｔ1new〜Ｔ21newを得ることができる。
【０１３２】
そして、得られたＴ0new〜Ｔ23newをそれぞれシフトして並べることで、ＣＲＣコードを得ることができる。これらの演算は、プロセッサに含まれる命令を組み合わせて実現してもよいし、リコンフィギャラブルプロセッサのように命令を追加できる場合は図１３Ａ〜図１３Ｃに示した論理演算などを新しく命令定義することによって実現してもよい。
【０１３３】
このように、実施の形態２によれば、コードワード（分割データ）のテイルビットのデータ長をトランスポートブロックのデータ長から算出することができる。そして、算出したテイルビットのデータ長に応じたＣＲＣ変換行列を用いたコードワード毎のＣＲＣ結果からトランスポートブロックのＣＲＣ結果を得ることができる。これにより、ＣＲＣ演算の時間短縮および省メモリ化を図り、ＣＲＣ演算の効率化を図ることができる。
【０１３４】
（誤りがない場合のＣＲＣの演算例）
ＣＲＣの生成多項式としてたとえば下記（２）式に示す８次の生成多項式を用いる場合のＣＲＣの演算例について説明する。まず、誤りがない場合のＣＲＣの演算例について説明する。
【０１３５】
ｘ8＋ｘ2＋ｘ＋１      …（２）
【０１３６】
図１４は、正常時のビット列データの一例を示す図である。図１４に示すビット列データ１４００は、たとえば、誤りなく受信された１つのトランスポートブロックに含まれるビット列データであり、４つのコードワード（ＣｏｄｅＷｏｒｄ０〜３）に分割されている。ＣｏｄｅＷｏｒｄ３の後ろ８（生成多項式の次数）ビットのビット列１４０１は、ビット列データ１４００の全体のＣＲＣコードであり、送信側で付与されたＣＲＣコードである。
【０１３７】
ここでは、ビット列データ１４００からビット列１４０１を除いてＣＲＣ演算を行い、演算結果とビット列１４０１とが一致するか否かを確認することによってＣＲＣを行う場合について説明する。ただし、ビット列１４０１を含めてビット列データ１４００のＣＲＣ演算を行い、演算結果が“００００００００”となるか否かを確認することによってＣＲＣを行ってもよい。
【０１３８】
図１５は、ＣＲＣコードを除いたビット列データの一例を示す図である。図１５に示すビット列１５００は、図１４に示したビット列データ１４００からビット列１４０１を除いたビット列である。つぎに、ビット列１５００のうちのＣｏｄｅＷｏｒｄ０のＣＲＣコードを演算する場合について説明する。
【０１３９】
図１６は、ＣｏｄｅＷｏｒｄ０のＣＲＣ演算の一例を示す図である。図１６に示すビット列１６００（“１０００００１１１”）は、上記（２）式に示したＣＲＣ生成多項式の各次数における係数を示すビット列である。
【０１４０】
データビット列１６０１は、ビット列１５００のＣｏｄｅＷｏｒｄ０のビット列の後ろに、上記（２）式に示した生成多項式の次数（８次）と同数の“０”（下線部）を追加したビット列である。
【０１４１】
まず、データビット列１６０１の最初に“１”となる位置（２ビット目）にビット列１６００を配置してデータビット列１６０１とビット列１６００のＸＯＲを演算することにより、データビット列１６０２が得られる。
【０１４２】
つぎに、データビット列１６０２の最初に“１”となる位置（３ビット目）にビット列１６００を配置してデータビット列１６０２とビット列１６００のＸＯＲを演算することにより、データビット列１６０３が得られる。
【０１４３】
以降同様に、新たなデータビット列の最初に“１”となる位置にビット列１６００を配置してＸＯＲを演算する処理を、ビット列１６００の末尾がデータビット列の末尾と重なるまで繰り返すことにより、データビット列１６２０が得られる。データビット列１６２０の末尾の８ビット（生成多項式の次数分）である“１１１０１１０１”がＣｏｄｅＷｏｒｄ０のＣＲＣコード（部分ＣＲＣコード）である。
【０１４４】
なお、データビット列１６０１の末尾の８個の“０”を“１１１０１１０１”に置き換え、上述した処理を再度行うと、データビット列１６０１の末尾の８ビット（生成多項式の次数分）は“００００００００”となる。
【０１４５】
ＣｏｄｅＷｏｒｄ１〜３についても同様の演算を行うことにより、各コードワードに対応する部分ＣＲＣコードを求めることができる。
【０１４６】
図１７は、各コードワードに対応する部分ＣＲＣコードおよびテイルビット数の一例を示す図である。図１７に示すテーブル１７００は、各コードワード（ＣｏｄｅＷｏｒｄ０〜３）のＣＲＣコード（部分ＣＲＣコード）およびテイルビット数を示す。また、テーブル１７００は、全体のＣＲＣコードを示す。各コードワードの部分ＣＲＣコードは、たとえば図１６に示した演算によって求めることができる。
【０１４７】
各コードワードのテイルビット数は、上述したようにトランスポートブロックのデータ長などに基づいて求めることができる。なお、図１７に示すテイルビット数は、全体のＣＲＣコードを除いたビット列（たとえば図１５に示したビット列１５００）におけるテイルビット数である。
【０１４８】
全体のＣＲＣコードは、トランスポートブロックの末尾に付されたＣＲＣコード（たとえば図１４に示したビット列１４０１）である。
【０１４９】
図１８は、ＣＲＣ変換行列（ｎ＝１）の一例を示す図である。図１８に示すＣＲＣ変換行列Ａn＝Ａ1は、上記（２）式に示したＣＲＣ生成多項式に基づくＣＲＣ変換行列である。すなわち、ＣＲＣ変換行列Ａ1の第１列は、上記（２）式に示したＣＲＣ生成多項式の最高次を除く各次数における係数を並べたものである。また、ＣＲＣ変換行列Ａ1の右上の７×７の部分行列は単位行列である。また、ＣＲＣ変換行列Ａ1の残りの部分は“０”である。
【０１５０】
図１９は、ＣＲＣ変換行列（ｎ＝２，４，…，２５６）の一例を示す図である。図１８に示したＣＲＣ変換行列Ａ1に基づいて、たとえば図１９に示すＣＲＣ変換行列Ａ2，Ａ4，Ａ8，Ａ16，Ａ32，Ａ64，Ａ128，Ａ256を求めることができる。このように、上記（２）式に示したＣＲＣ生成多項式に基づく２n（ｎ＝１，２，３，４…）のＣＲＣ変換行列を求めることができる。
【０１５１】
つぎに、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算について説明する。たとえばＣｏｄｅＷｏｒｄ０に付されるテイルビット数は７４個であるため（たとえば図１７参照）、ＣｏｄｅＷｏｒｄ０についてのＣＲＣ変換行列ＡCodeWord0は下記（３）式のように示すことができる。
【０１５２】
ＡCodeWord0＝Ａ74＝Ａ64+8+2＝Ａ64×Ａ8×Ａ2  …（３）
【０１５３】
同様に、ＣｏｄｅＷｏｒｄ１〜３についてのＣＲＣ変換行列ＡCodeWord1，ＡCodeWord2，ＡCodeWord3は下記（４）式のように示すことができる。
【０１５４】
ＡCodeWord1＝Ａ47＝Ａ32+8+4+2+1＝Ａ32×Ａ8×Ａ4×Ａ2×Ａ1
ＡCodeWord2＝Ａ22＝Ａ16+4+2＝Ａ16×Ａ4×Ａ2
ＡCodeWord3＝Ａ0                                 …（４）
【０１５５】
図２０は、各コードワードに対応するＣＲＣ変換行列の一例を示す図である。図２０に示すＣＲＣ変換行列ＡCodeWord0〜ＡCodeWord3は、上記（３）式および（４）式によって求められる、図１５に示したＣｏｄｅＷｏｒｄ０〜３に対応するＣＲＣ変換行列である。ＣＲＣ変換行列ＡCodeWord0〜ＡCodeWord3をそれぞれＣｏｄｅＷｏｒｄ０〜３の部分ＣＲＣコード（たとえば図１７参照）に乗ずることにより、各コードワードにテイルビットを付した各ビット列のＣＲＣコードを演算することができる。
【０１５６】
図２１は、ＣｏｄｅＷｏｒｄ０にテイルビットを付したビット列のＣＲＣコードの演算の一例を示す図である。図２１に示すように、ＣＲＣ変換行列ＡCodeWord0をＣｏｄｅＷｏｒｄ０の部分ＣＲＣコード（ＣＲＣCodeWord0）に乗ずることにより、ＣｏｄｅＷｏｒｄ０にテイルビットを付したビット列のＣＲＣコード演算することができる。図２１においてはＣｏｄｅＷｏｒｄ０にテイルビットを付したビット列のＣＲＣコードの演算について説明したが、ＣｏｄｅＷｏｒｄ１〜３にテイルビットを付した各ビット列のＣＲＣコードの演算についても同様である。
【０１５７】
図２２は、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算結果の一例を示す図である。図２２に示すテーブル２２００は、各コードワード（ＣｏｄｅＷｏｒｄ０〜３）のＣＲＣコード（部分ＣＲＣコード）と、各コードワードにテイルビットを付したビット列のＣＲＣコードと、を示す。また、テーブル２２００は、全体のＣＲＣコードと、各コードワードにテイルビットを付したビット列のＣＲＣコードのＸＯＲ演算の結果と、を示す。
【０１５８】
図２２に示す例において、トランスポートブロックの全体のＣＲＣコード“１００１１１１１”と、各コードワードにテイルビットを付したビット列のＣＲＣコードのＸＯＲ演算の結果“１００１１１１１”と、が一致している。このため、対象のトランスポートブロックに誤りがないと判断することができる。
【０１５９】
（誤りがある場合のＣＲＣの演算例）
つぎに、誤りがある場合のＣＲＣの演算例について説明する。
【０１６０】
図２３は、異常発生時のビット列データの一例を示す図である。図２３に示すビット列データ２３００は、たとえば、誤りが発生して受信された１つのトランスポートブロックに含まれるビット列データであり、４つのコードワード（ＣｏｄｅＷｏｒｄ０〜３）に分割されている。ＣｏｄｅＷｏｒｄ３の後ろ８（生成多項式の次数）ビットのビット列２３０１は、ビット列データ２３００の全体のＣＲＣコードであり、送信側で付与されたＣＲＣコードである。
【０１６１】
また、ビット列データ２３００のＣｏｄｅＷｏｒｄ１の３ビット目のビット２３０２において誤り（“１”→“０”）が発生しているとする。
【０１６２】
ここでは、ビット列データ２３００からビット列２３０１を除いてＣＲＣ演算を行い、演算結果とビット列２３０１とが一致するか否かを確認することによってＣＲＣを行う場合について説明する。ただし、ビット列２３０１を含めてビット列データ２３００のＣＲＣ演算を行い、演算結果が“００００００００”となるか否かを確認することによってＣＲＣを行ってもよい。
【０１６３】
図２４は、ＣＲＣコードを除いたビット列データの一例を示す図である。図２４に示すビット列２４００は、図２３に示したビット列データ２３００からビット列２３０１を除いたビット列である。各コードワードのＣＲＣコードの演算については、たとえば図１６に示した手順と同様である。
【０１６４】
図２５は、各コードワードに対応する部分ＣＲＣコードおよびテイルビット数の一例を示す図である。図２５に示すテーブル２５００は、各コードワード（ＣｏｄｅＷｏｒｄ０〜３）のＣＲＣコード（部分ＣＲＣコード）およびテイルビット数を示す。図２４に示したビット列２４００について各コードワードのＣＲＣコードの演算を行うと、たとえば図２５に示す結果を得ることができる。
【０１６５】
ＣＲＣ変換行列Ａnについては、たとえば図１８，図１９に示したＣＲＣ変換行列Ａnと同様である。
【０１６６】
つぎに、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算について説明する。たとえばＣｏｄｅＷｏｒｄ０に付されるテイルビット数は６４個であるため（たとえば図２５参照）、ＣｏｄｅＷｏｒｄ０についてのＣＲＣ変換行列ＡCodeWord0は下記（５）式のように示すことができる。
【０１６７】
ＡCodeWord0＝Ａ64＝Ａ64  …（５）
【０１６８】
同様に、ＣｏｄｅＷｏｒｄ１〜３についてのＣＲＣ変換行列ＡCodeWord1，ＡCodeWord2，ＡCodeWord3は下記（６）式のように示すことができる。
【０１６９】
ＡCodeWord1＝Ａ40＝Ａ32+8＝Ａ32×Ａ8
ＡCodeWord2＝Ａ16＝Ａ16
ＡCodeWord3＝Ａ0                                 …（６）
【０１７０】
図２６は、各コードワードに対応するＣＲＣ変換行列の一例を示す図である。図２６に示すＣＲＣ変換行列ＡCodeWord0〜ＡCodeWord3は、上記（５）式および（６）式によって求められる、図２４に示したＣｏｄｅＷｏｒｄ０〜３に対応するＣＲＣ変換行列である。ＣＲＣ変換行列ＡCodeWord0〜ＡCodeWord3をそれぞれＣｏｄｅＷｏｒｄ０〜３の部分ＣＲＣコード（たとえば図２５参照）に乗ずることにより、各コードワードにテイルビットを付した各ビット列のＣＲＣコードを演算することができる。
【０１７１】
図２７は、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算結果の一例を示す図である。図２７に示すテーブル２７００は、各コードワード（ＣｏｄｅＷｏｒｄ０〜３）のＣＲＣコード（部分ＣＲＣコード）と、各コードワードにテイルビットを付したビット列のＣＲＣコードと、を示す。また、テーブル２７００は、全体のＣＲＣコードと、各コードワードにテイルビットを付したビット列のＣＲＣコードのＸＯＲ演算の結果と、を示す。
【０１７２】
図２７に示す例において、トランスポートブロックの全体のＣＲＣコード“１１００１１１１”と、各コードワードにテイルビットを付したビット列のＣＲＣコードのＸＯＲ演算の結果“１０１００００１”と、が一致していない。このため、対象のトランスポートブロックに誤りがあると判断することができる。
【０１７３】
このように、各コードワードの部分ＣＲＣコードを求め、求めたＣＲＣコードをＣＲＣ変換行列によって変換することで、各コードワードにテイルビットを付したビット列のＣＲＣコードを得ることができる。そして、各コードワードにテイルビットを付したビット列のＣＲＣコードを用いることで、トランスポートブロックのＣＲＣコードを得ることができ、トランスポートブロックのＣＲＣを行うことができる。
【０１７４】
図２８は、各コードワードにテイルビットを付した各ビット列のＣＲＣコードの演算結果の他の例を示す図である。図２８に示すテーブル２８００は、仮に、図２３，図２４に示した誤りのビット２３０２が仮に誤っておらず“１”であった場合の各演算結果を示す。したがって、ＣｏｄｅＷｏｒｄ１の部分ＣＲＣコードが、図２７に示したテーブル２７００と異なり“０１０１０１０１”となっている。また、ＣｏｄｅＷｏｒｄ１にテイルビットを付したビット列のＣＲＣコードが、図２７に示したテーブル２７００と異なり“０００１０１１１”となっている。
【０１７５】
図２８に示す例において、トランスポートブロックの全体のＣＲＣコード“１１００１１１１”と、各コードワードにテイルビットを付したビット列のＣＲＣコードのＸＯＲ演算の結果“１１００１１１１”と、が一致している。このため、対象のトランスポートブロックに誤りがないと判断することができる。
【０１７６】
以上説明したように、通信装置および巡回冗長検査プログラムによれば、巡回冗長検査の演算効率の向上を図ることができる。
【０１７７】
たとえば、検査対象データの最初から最後までのＣＲＣコードが１つのＣＰＵで演算される構成では、処理時間が長くなり、多くのワークメモリも要する。このため、制約のある組み込み機器ではリソースを圧迫したり、チップサイズが増大したりするという問題があった。
【０１７８】
これに対して、上述した各実施の形態によれば、検査対象データの分割データのテイルビットのデータ長に応じたＣＲＣ変換行列を用いた分割データ毎のＣＲＣ結果から検査対象データのＣＲＣ結果が得られる。これにより、ＣＲＣ演算の時間短縮および省メモリ化（効率化）を図ることができる。
【０１７９】
また、通信モードなどにより検査対象データのサイズがダイナミックに変化する場合においても、検査対象データのデータ長に基づいて分割データのテイルビットのデータ長を特定することにより、各分割データに対応するＣＲＣ変換行列を生成することができる。このため、たとえばビット列サイズ毎にＣＲＣ変換行列を用意しておかなくてもよいため、省メモリ化を図ることができる。
【０１８０】
なお、本実施の形態で説明した巡回冗長検査方法は、たとえば、予め用意されたプログラムをプロセッサ（ＤＳＰ４１１やＣＰＵ４２１など）で実行することにより実現することができる。このプログラムは、ハードディスクなどのプロセッサで読み取り可能な記録媒体に記録され、プロセッサによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布されてもよい。
【０１８１】
上述した各実施の形態に関し、さらに以下の付記を開示する。
【０１８２】
（付記１）巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置であって、
伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割する分割部と、
前記データ系列のデータ長に基づいて、前記分割部により得られた分割データに付加されるテイルビットのデータ長を特定する特定部と、
前記特定部によって特定されたテイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成する生成部と、
前記生成部によって生成された巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行う演算部と、
前記演算部による前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る検査部と、
を備えることを特徴とする通信装置。
【０１８３】
（付記２）前記巡回冗長検査変換テーブルは、前記分割データの巡回冗長検査の結果を、前記分割データに前記テイルビットを付したビット列の巡回冗長検査の結果に変換する変換テーブルであり、
前記演算部は、前記分割データの巡回冗長検査の結果を前記巡回冗長検査変換テーブルによって前記ビット列の巡回冗長検査の結果に変換することによって前記巡回冗長検査演算を行い、
前記演算部は、前記分割データ毎の前記ビット列の巡回冗長検査の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
ことを特徴とする付記１に記載の通信装置。
【０１８４】
（付記３）前記特定部は、前記データ系列のデータ長に基づいて、前記データ系列における前記分割データより後のデータ長を演算することによって前記テイルビットのデータ長を特定することを特徴とする付記１または２に記載の通信装置。
【０１８５】
（付記４）前記生成部は、前記巡回冗長検査の生成多項式に応じた、１個のテイルビットに対応する巡回冗長検査変換テーブルに基づいて、前記特定されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成することを特徴とする付記１〜３のいずれか一つに記載の通信装置。
【０１８６】
（付記５）前記１個のテイルビットに対応する巡回冗長検査変換テーブルは、前記生成多項式の各次数における係数を並べたビット列と、前記生成多項式の次数に応じた単位行列と、を含む行列であることを特徴とする付記４に記載の通信装置。
【０１８７】
（付記６）前記生成部は、ｎ個（ｎは２のべき乗）のテイルビットに対応する巡回冗長検査変換テーブルを複数通りのｎについて記憶しておき、記憶しておいた巡回冗長検査変換テーブルに基づいて前記特定されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成することを特徴とする付記４または５に記載の通信装置。
【０１８８】
（付記７）巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置のコンピュータに、
前記通信装置が伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割し、
前記データ系列のデータ長に基づいて、前記データ系列の分割により得られた分割データに付加されるテイルビットのデータ長を特定し、
特定した前記テイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成し、
生成した前記巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行い、
前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
処理を実行させることを特徴とする巡回冗長検査プログラム。
【符号の説明】
【０１８９】
１００  通信装置
１０１  分割部
１０２  特定部
１０３  生成部
１０４  演算部
１０５  検査部
１１０  データ系列
１１１〜１１３  分割データ
１３１〜１３３  テイルビット
１４１〜１４３，５２０，６１０〜６１３，１４０１，１５００，１６００，２３０１，２４００  ビット列
２００  無線端末装置
２１０  アンテナ
２２０  ＲＦ部
２２１  デュプレクサ
２２２  受信ＲＦ部
２２３  送信ＲＦ部
２３０  通信制御部
２３１  復調部
２３２  変調部
２４０  アプリケーション処理部
２５０  ユーザインタフェース部
２５１  表示部
２５２  操作部
３１０，３３０  制御チャネル処理部
３１１，３２１  ＣＲＣ付与部
３１２  畳込み符号化部
３１３  レートマッチング部
３１４，３２４  スクランブリング部
３１５，３２５  変調処理部
３１６，３２６  ＩＦＦＴ部
３２０，３４０  トランスポートチャネル処理部
３２２  ターボ符号化部
３２３  レートマッチング／ＨＡＲＱ部
３３１，３４１  ＦＦＴ部
３３２，３４２  復調処理部
３３３，３４３  デスクランブリング部
３３４  デレートマッチング部
３３５  畳込み復号部
３３６，３４６  ＣＲＣ部
３４４  デレートマッチング／ＨＡＲＱ部
３４５  ターボ復号／ＣＲＣ演算部
４１０，４２０，９００，１３１０，１３２０，１３３０  演算回路
４１１  ＤＳＰ
４１２  小規模メモリ
４１３  ターボ復号器群
４１４〜４１６  ＨＷアクセラレータ
４２１  ＣＰＵ
４２２  大規模メモリ
５０１  ＦＦＴ
５０２  復調処理
５０３  ターボ復号／ＣＲＣ演算処理
５１１，８０２  部分ＣＲＣコード
５１２  ビットサイズ
５１３，８２３  ＣＲＣ
５１４  判定結果
６００，８０４  トランスポートブロック
６０１，６２０〜６２３  ＣＲＣコード
８０１  尤度情報
８０３  ＣＲＣ変換行列
８１０  制御チャネル処理
８２０  トランスポートチャネル処理
８２１  ターボ復号／ＣＲＣ演算
８２２  ＣＲＣ変換行列演算
１１０１〜１１０３  部分行列
１３１１，１３２１，１３３１  アンド回路
１３１２，１３２２，１３３２  ＸＯＲ回路
１４００，２３００  ビット列データ
１６０１〜１６０３，１６２０  データビット列
１７００，２２００，２５００，２７００，２８００  テーブル
２３０２  ビット
【図１Ａ】
2015142343.tif 000003
【図１Ｂ】
2015142343.tif 000004
【図１Ｃ】
2015142343.tif 000005
【図２Ａ】
2015142343.tif 000006
【図２Ｂ】
2015142343.tif 000007
【図３Ａ】
2015142343.tif 000008
【図３Ｂ】
2015142343.tif 000009
【図３Ｃ】
2015142343.tif 000010
【図３Ｄ】
2015142343.tif 000011
【図４Ａ】
2015142343.tif 000012
【図４Ｂ】
2015142343.tif 000013
【図５】
2015142343.tif 000014
【図６】
2015142343.tif 000015
【図７】
2015142343.tif 000016
【図８】
2015142343.tif 000017
【図９Ａ】
2015142343.tif 000018
【図９Ｂ】
2015142343.tif 000019
【図１０】
2015142343.tif 000020
【図１１】
2015142343.tif 000021
【図１２】
2015142343.tif 000022
【図１３Ａ】
2015142343.tif 000023
【図１３Ｂ】
2015142343.tif 000024
【図１３Ｃ】
2015142343.tif 000025
【図１４】
2015142343.tif 000026
【図１５】
2015142343.tif 000027
【図１６】
2015142343.tif 000028
【図１７】
2015142343.tif 000029
【図１８】
2015142343.tif 000030
【図１９】
2015142343.tif 000031
【図２０】
2015142343.tif 000032
【図２１】
2015142343.tif 000033
【図２２】
2015142343.tif 000034
【図２３】
2015142343.tif 000035
【図２４】
2015142343.tif 000036
【図２５】
2015142343.tif 000037
【図２６】
2015142343.tif 000038
【図２７】
2015142343.tif 000039
【図２８】
2015142343.tif 000040