JP2015142343A - 通信装置および巡回冗長検査プログラム - Google Patents

通信装置および巡回冗長検査プログラム Download PDF

Info

Publication number
JP2015142343A
JP2015142343A JP2014015839A JP2014015839A JP2015142343A JP 2015142343 A JP2015142343 A JP 2015142343A JP 2014015839 A JP2014015839 A JP 2014015839A JP 2014015839 A JP2014015839 A JP 2014015839A JP 2015142343 A JP2015142343 A JP 2015142343A
Authority
JP
Japan
Prior art keywords
unit
crc
cyclic redundancy
redundancy check
data
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2014015839A
Other languages
English (en)
Inventor
俊明 信本
Toshiaki Nobumoto
俊明 信本
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2014015839A priority Critical patent/JP2015142343A/ja
Publication of JP2015142343A publication Critical patent/JP2015142343A/ja
Pending legal-status Critical Current

Links

Images

Abstract

【課題】巡回冗長検査の演算効率の向上を図ること。
【解決手段】通信装置100は、巡回冗長検査を用いてデータ系列110の誤りを確認する。分割部101は、伝搬経路から受信した可変長のデータ系列110を所定の処理単位に分割する。特定部102は、データ系列110のデータ長に基づいて、分割部101により得られた分割データ111〜113に付加されるテイルビットのデータ長を特定する。生成部103は、特定部102によって特定されたテイルビットのデータ長に基づいて分割データ単位の巡回冗長検査変換テーブルを生成する。演算部104は、生成部103によって生成された巡回冗長検査変換テーブルに基づいて分割データ毎の巡回冗長検査演算を行う。検査部105は、演算部104による分割データ毎の巡回冗長検査演算の結果に基づいてデータ系列の巡回冗長検査結果を得る。
【選択図】図1B

Description

本発明は、通信装置および巡回冗長検査プログラムに関する。
従来、データ処理やデータ通信において、データにおける符号誤り(エラー)の発生を検出する誤り検出が用いられている。誤り検出の1つとして、巡回符号とその生成多項式による割算回路によって実現されるCRC(Cyclic Redundancy Check:巡回冗長検査)が知られている(たとえば、下記特許文献1〜7参照。)。
特開2008−160663号公報 国際公開第2009/019763号 国際公開第2008/023684号 特開2011−211353号公報 特開2010−118782号公報 特開2005−006298号公報 特開2008−011025号公報
しかしながら、上述した従来技術では、巡回冗長検査の演算を効率よく行うことができないという問題がある。
1つの側面では、本発明は、巡回冗長検査の演算効率の向上を図ることができる通信装置および巡回冗長検査プログラムを提供することを目的とする。
上述した課題を解決し、目的を達成するため、本発明の一側面によれば、巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置において、前記通信装置が伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割し、前記データ系列のデータ長に基づいて、前記データ系列の分割により得られた分割データに付加されるテイルビットのデータ長を特定し、特定した前記テイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成し、生成した前記巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行い、前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る通信装置および巡回冗長検査プログラムが提案される。
本発明の一側面によれば、巡回冗長検査の演算効率の向上を図ることができるという効果を奏する。
図1Aは、実施の形態1にかかる通信装置の一例を示す図である。 図1Bは、図1Aに示した通信装置における信号の流れの一例を示す図である。 図1Cは、分割データのテイルビットの一例を示す図である。 図2Aは、実施の形態2にかかる無線端末装置の一例を示す図である。 図2Bは、図2Aに示した無線端末装置における信号の流れの一例を示す図である。 図3Aは、無線端末装置の変調部の一例を示す図である。 図3Bは、図3Aに示した変調部における信号の流れの一例を示す図である。 図3Cは、無線端末装置の復調部の一例を示す図である。 図3Dは、図3Cに示した復調部における信号の流れの一例を示す図である。 図4Aは、通信制御部のハードウェア構成の一例を示す図である。 図4Bは、アプリケーション処理部のハードウェア構成の一例を示す図である。 図5は、復調部のトランスポートチャネル処理部による処理の一例を示す図である。 図6は、トランスポートブロックおよびコードワードの一例を示す図である。 図7は、CRC部による処理の一例を示すフローチャートである。 図8は、トランスポートチャネルの並列処理の一例を示す参考図である。 図9Aは、CRC演算を行う演算回路の一例を示す図である。 図9Bは、図9Aに示したCRC演算を行う演算回路における信号の流れの一例を示す図である。 図10は、CRC変換行列の一例を示す図である。 図11は、CRC変換行列の定義の一例を示す図である。 図12は、CRC変換行列の演算の一例を示す図である。 図13Aは、CRC変換行列の第1行とベクトルとの積の演算回路の一例を示す図である。 図13Bは、CRC変換行列の第2行とベクトルとの積の演算回路の一例を示す図である。 図13Cは、CRC変換行列の第24行とベクトルとの積の演算回路の一例を示す図である。 図14は、正常時のビット列データの一例を示す図である。 図15は、CRCコードを除いたビット列データの一例を示す図である。 図16は、CodeWord0のCRC演算の一例を示す図である。 図17は、各コードワードに対応する部分CRCコードおよびテイルビット数の一例を示す図である。 図18は、CRC変換行列(n=1)の一例を示す図である。 図19は、CRC変換行列(n=2,4,…,256)の一例を示す図である。 図20は、各コードワードに対応するCRC変換行列の一例を示す図である。 図21は、CodeWord0にテイルビットを付したビット列のCRCコードの演算の一例を示す図である。 図22は、各コードワードにテイルビットを付した各ビット列のCRCコードの演算結果の一例を示す図である。 図23は、異常発生時のビット列データの一例を示す図である。 図24は、CRCコードを除いたビット列データの一例を示す図である。 図25は、各コードワードに対応する部分CRCコードおよびテイルビット数の一例を示す図である。 図26は、各コードワードに対応するCRC変換行列の一例を示す図である。 図27は、各コードワードにテイルビットを付した各ビット列のCRCコードの演算結果の一例を示す図である。 図28は、各コードワードにテイルビットを付した各ビット列のCRCコードの演算結果の他の例を示す図である。
以下に図面を参照して、本発明にかかる通信装置および巡回冗長検査プログラムの実施の形態を詳細に説明する。
(実施の形態1)
(実施の形態1にかかる通信装置)
図1Aは、実施の形態1にかかる通信装置の一例を示す図である。図1Bは、図1Aに示した通信装置における信号の流れの一例を示す図である。図1A,図1Bに、実施の形態1にかかる通信装置100を示す。通信装置100は、CRCを用いてデータ系列の誤りを確認できる通信装置である。通信装置100は、分割部101と、特定部102と、生成部103と、演算部104と、検査部105と、を備える。
通信装置100は、有線または無線の伝搬経路から可変長のデータ系列110を受信する。通信装置100による通信には、電気信号、無線信号、光信号などの各種の通信を適用することができる。通信装置100が伝搬経路から受信したデータ系列110は分割部101へ入力される。
分割部101は、入力されたデータ系列110を所定の処理単位に分割する。図1A,図1Bに示す例では、データ系列110の分割により分割データ111〜113が得られたとする。すなわち、分割データ111〜113を結合するとデータ系列110になる。分割部101は、分割データ111〜113を演算部104へ出力する。
特定部102は、通信装置100が受信したデータ系列のデータ長を示すデータ長情報を取得する。そして、特定部102は、取得したデータ長情報が示すデータ長に基づいて、分割部101により得られた分割データ111〜113に付加されるテイルビットのデータ長を特定する。分割データ111〜113に付加されるテイルビットは、たとえば、分割データ111〜113のそれぞれを対象として、データ系列110における対象の分割データより後のデータ長に応じたテイルビットである(たとえば図1C参照)。
一例としては、特定部102は、データ系列110のデータ長に基づいて、データ系列110における分割データより後のデータ長を演算することによってテイルビットのデータ長を特定する。特定部102は、特定したテイルビットのデータ長を生成部103へ通知する。
生成部103は、特定部102から通知されたテイルビットのデータ長に基づいて、分割部101により得られる分割データ単位の巡回冗長検査変換テーブル(CRC変換行列)を生成する。巡回冗長検査変換テーブルは、一例としては、分割データ111〜113の巡回冗長検査の結果を、分割データ111〜113にテイルビットを付したビット列の巡回冗長検査の結果に変換する変換テーブルである。
たとえば、生成部103は、データ系列110の巡回冗長検査の生成多項式に応じた、1個のテイルビットに対応する巡回冗長検査変換テーブルに基づいて、通知されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成する。一例としては、1個のテイルビットに対応する巡回冗長検査変換テーブルは、生成多項式の各次数における係数を並べたビット列と、生成多項式の次数に応じた単位行列と、を含む行列である。
また、生成部103は、たとえば、n個(nは2のべき乗)のテイルビットに対応する巡回冗長検査変換テーブルを複数通りのnについて予め記憶しておいてもよい。そして、生成部103は、記憶しておいた巡回冗長検査変換テーブルに基づいて、特定部102から通知されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成する。これにより、巡回冗長検査変換テーブルを簡単な演算により生成することができる。生成部103は、生成した分割データ単位の巡回冗長検査変換テーブルを演算部104へ出力する。
演算部104は、生成部103から出力された巡回冗長検査変換テーブルに基づいて、分割部101から出力された分割データ(分割データ111〜113)毎の巡回冗長検査演算を行う。一例としては、演算部104は、分割データ111〜113の巡回冗長検査の結果を演算し、演算した分割データ111〜113の巡回冗長検査の結果を巡回冗長検査変換テーブルによって変換することによって、分割データ毎の巡回冗長検査演算を行う。演算部104は、分割データ毎の巡回冗長検査演算の結果を検査部105へ出力する。
検査部105は、演算部104から出力された分割データ毎の巡回冗長検査演算の結果に基づいて、データ系列110の巡回冗長検査結果を得る。一例としては、検査部105は、演算部104から出力された分割データ毎の巡回冗長検査演算を加算(たとえばXOR演算)することによってデータ系列110の巡回冗長検査結果を得る。そして、検査部105は、データ系列110の巡回冗長検査結果を出力する。
(分割データのテイルビット)
図1Cは、分割データのテイルビットの一例を示す図である。図1Cにおいて、図1A,図1Bに示した部分と同様の部分については同一の符号を付して説明を省略する。テイルビット131は、分割データ111に付されるテイルビットであり、データ系列110における分割データ111より後のデータ長(分割データ112,113の合計データ長)と同じ長さの所定値(たとえば“0”)のビット列である。
テイルビット132は、分割データ112に付されるテイルビットであり、データ系列110における分割データ112より後のデータ長(分割データ113のデータ長)と同じ長さの所定値(たとえば“0”)のビット列である。
テイルビット133は、分割データ113に付されるテイルビットであるが、データ系列110における分割データ113より後のデータ長はゼロであるため、データ長がゼロのビット列である。
特定部102は、データ系列110のデータ長に基づいて、テイルビット131〜133のデータ長を特定する。生成部103は、テイルビット131のデータ長に基づいて分割データ111の巡回冗長検査変換テーブルを生成する。また、生成部103は、テイルビット132のデータ長に基づいて分割データ112の巡回冗長検査変換テーブルを生成する。また、生成部103は、テイルビット133のデータ長に基づいて分割データ113の巡回冗長検査変換テーブルを生成する。ただし、分割データ113の巡回冗長検査変換テーブルは、巡回冗長検査演算の結果を変化させない変換テーブルであるため、生成しなくてもよい。
演算部104は、分割データ111の巡回冗長検査の結果を、分割データ111のテイルビット131のデータ長に応じた巡回冗長検査変換テーブルによって変換する。これにより、分割データ111にテイルビット131を付したビット列141の巡回冗長検査演算の結果を演算することができる。
また、演算部104は、分割データ112の巡回冗長検査の結果を、分割データ112のテイルビット132のデータ長に応じた巡回冗長検査変換テーブルによって変換する。これにより、分割データ112にテイルビット132を付したビット列142の巡回冗長検査演算の結果を演算することができる。
また、演算部104は、分割データ113の巡回冗長検査の結果を、分割データ113のテイルビット133のデータ長に応じた巡回冗長検査変換テーブルによって変換する。これにより、分割データ113にテイルビット133を付したビット列143の巡回冗長検査演算の結果を演算することができる。ただし、テイルビット133のデータ長はゼロであり、ビット列143は分割データ113と等しいため、演算部104は、分割データ113の巡回冗長検査の結果をそのままビット列143の巡回冗長検査演算の結果として出力してもよい。
検査部105は、ビット列141〜143の各巡回冗長検査演算の結果に基づいて、データ系列110の巡回冗長検査結果を得る。一例としては、検査部105は、ビット列141〜143の各巡回冗長検査演算の結果を加算(たとえばXOR演算)することによってデータ系列110の巡回冗長検査結果を得る。
このように、実施の形態1によれば、分割データのデータ長に応じた巡回冗長検査変換テーブルを用いた分割データ毎の巡回冗長検査結果からデータ系列の巡回冗長検査結果を得ることができる。
これにより、たとえばデータ系列の巡回冗長検査結果をメモリに格納しなくても巡回冗長検査の演算を行うことができるため、巡回冗長検査の演算の省メモリ化を図ることができる。また、データ系列の復号を待たずに巡回冗長検査の演算を開始できるため、巡回冗長検査の演算を早期に完了させることが可能になる。このように、巡回冗長検査の演算の効率化を図ることができる。なお、巡回冗長検査の演算を早期に完了させることで、たとえばデータの受信処理のスループットの向上を図ることができる。
また、データ系列110が可変長であっても、データ系列110のデータ長に基づいて分割データ111〜113のテイルビットのデータ長を特定することにより、分割データ111〜113に対応する巡回冗長検査変換テーブルを生成することができる。このため、たとえばデータ系列110のビット列サイズ毎に巡回冗長検査変換テーブルを用意しておかなくてもよいため、省メモリ化を図ることができる。
(実施の形態2)
(実施の形態2にかかる無線端末装置)
図2Aは、実施の形態2にかかる無線端末装置の一例を示す図である。図2Bは、図2Aに示した無線端末装置における信号の流れの一例を示す図である。ここでは、LTE(Long Term Evolution)方式の通信を行う無線端末装置200について説明する。図2A,図2Bに示すように、無線端末装置200は、アンテナ210と、RF部220と、通信制御部230と、アプリケーション処理部240と、ユーザインタフェース部250と、を備える。
アンテナ210は、他の無線通信装置(たとえば無線基地局)から無線送信された信号を受信し、受信した信号をRF部220へ出力する。また、アンテナ210は、RF部220から出力された信号を他の無線通信装置(たとえば無線基地局)へ無線送信する。
RF部220は、デュプレクサ221と、受信RF部222と、送信RF部223と、を備える。デュプレクサ221は、アンテナ210から出力された信号を受信RF部222へ出力する。また、デュプレクサ221は、送信RF部223から出力された信号をアンテナ210へ出力する。
受信RF部222は、デュプレクサ221から出力された信号の受信RF処理を行う。受信RF処理には、たとえばRF(Radio Frequency:高周波)帯からベースバンド帯への周波数変換などが含まれる。受信RF部222は、受信RF処理を行った信号を通信制御部230へ出力する。
送信RF部223は、通信制御部230から出力された信号の送信RF処理を行う。送信RF処理には、たとえばベースバンド帯からRF帯への周波数変換などが含まれる。送信RF部223は、送信RF処理を行った信号をデュプレクサ221へ出力する。
通信制御部230は、復調部231と、変調部232と、を備える。復調部231は、RF部220から出力された信号を復調する。復調部231の復調には、たとえばターボ復号やCRCなどが含まれていてもよい。復調部231は、復調した信号をアプリケーション処理部240へ出力する。変調部232は、アプリケーション処理部240から出力された信号に基づく変調を行う。変調部232の変調には、たとえばCRC符号化やターボ符号化などが含まれていてもよい。変調部232は、変調により得られた信号をRF部220へ出力する。
アプリケーション処理部240は、通信制御部230から出力された信号に基づくアプリケーション処理を行う。また、アプリケーション処理部240は、アプリケーション処理に基づく、ユーザに表示すべき情報をユーザインタフェース部250へ出力する。
また、アプリケーション処理部240は、ユーザインタフェース部250からの操作の受付結果に基づくアプリケーション処理を行う。また、アプリケーション処理部240は、アプリケーション処理に基づく、他の通信装置へ送信すべき信号を通信制御部230へ出力する。
ユーザインタフェース部250は、表示部251と、操作部252と、を備える。表示部251は、アプリケーション処理部240から出力された情報に基づく画像を無線端末装置200のユーザへ表示する。操作部252は、無線端末装置200のユーザからの操作を受け付け、操作の受付結果をアプリケーション処理部240へ出力する。
図1A,図1Bに示した通信装置100は、たとえば図2A,図2Bに示す無線端末装置200によって実現することができる。図1A,図1Bに示した分割部101、特定部102、生成部103、演算部104および検査部105は、たとえば図2A,図2Bに示す復調部231によって実現することができる。
(無線端末装置の変調部)
図3Aは、無線端末装置の変調部の一例を示す図である。図3Bは、図3Aに示した変調部における信号の流れの一例を示す図である。図3A,図3Bに示すように、図2A,図2Bに示した無線端末装置200の変調部232は、制御チャネル処理部310と、トランスポートチャネル処理部320と、を備える。
制御チャネル処理部310は、アプリケーション処理部240(たとえば図2A,図2B参照)から出力された信号のうちの制御チャネルの信号の変調を行う。たとえば、制御チャネル処理部310は、CRC付与部311と、畳込み符号化部312と、レートマッチング部313と、スクランブリング部314と、変調処理部315と、IFFT部316と、を備える。
CRC付与部311は、アプリケーション処理部240から出力された信号のうちの制御チャネルの信号にCRCコードを付与する。そして、CRC付与部311は、CRCコードを付与した信号を畳込み符号化部312へ出力する。畳込み符号化部312は、CRC付与部311から出力された信号の畳込み符号化を行う。そして、畳込み符号化部312は、畳込み符号化を行った信号をレートマッチング部313へ出力する。
レートマッチング部313は、畳込み符号化部312から出力された信号のレートマッチングを行う。そして、レートマッチング部313は、レートマッチングを行った信号をスクランブリング部314へ出力する。スクランブリング部314は、レートマッチング部313から出力された信号のスクランブリングを行う。そして、スクランブリング部314は、スクランブリングを行った信号を変調処理部315へ出力する。
変調処理部315は、スクランブリング部314から出力された信号に基づく変調処理を行う。変調処理部315の変調処理には、たとえばQPSK(Quadrature Phase Shift Keying:四位相偏移変調)などの各種の変調方式を用いることができる。変調処理部315は、変調処理によって得られた信号をIFFT部316へ出力する。
IFFT部316は、変調処理部315から出力された信号のIFFT(Inverse Fast Fourier Transform:逆高速フーリエ変換)を行う。そして、IFFT部316は、IFFTを行った信号をRF部220へ出力する(たとえば図2A,図2B参照)。
トランスポートチャネル処理部320は、アプリケーション処理部240(たとえば図2A,図2B参照)から出力された信号のうちのトランスポートチャネルの信号の変調を行う。たとえば、トランスポートチャネル処理部320は、CRC付与部321と、ターボ符号化部322と、レートマッチング/HARQ部323と、スクランブリング部324と、変調処理部325と、IFFT部326と、を備える。
CRC付与部321は、アプリケーション処理部240から出力された信号のうちのトランスポートチャネルの信号にCRCコードを付与する。そして、CRC付与部321は、CRCコードを付与した信号をターボ符号化部322へ出力する。ターボ符号化部322は、CRC付与部321から出力された信号のターボ符号化を行う。そして、ターボ符号化部322は、ターボ符号化を行った信号をレートマッチング/HARQ部323へ出力する。
レートマッチング/HARQ部323は、ターボ符号化部322から出力された信号のレートマッチングおよびHARQ(Hybrid Automatic Repeat Request:ハイブリッド自動再送要求)を行う。そして、レートマッチング/HARQ部323は、レートマッチングおよびHARQに基づく信号をスクランブリング部324へ出力する。スクランブリング部324は、レートマッチング/HARQ部323から出力された信号のスクランブリングを行う。そして、スクランブリング部324は、スクランブリングを行った信号を変調処理部325へ出力する。
変調処理部325は、スクランブリング部324から出力された信号に基づく変調処理を行う。変調処理部325の変調処理には、たとえばQPSKや16/64QAM(Quadrature Amplitude Modulation:直角位相振幅変調)などの各種の変調方式を用いることができる。変調処理部325は、変調処理によって得られた信号をIFFT部326へ出力する。
IFFT部326は、変調処理部325から出力された信号のIFFTを行う。そして、IFFT部326は、IFFTを行った信号をRF部220へ出力する(たとえば図2A,図2B参照)。
(無線端末装置の復調部)
図3Cは、無線端末装置の復調部の一例を示す図である。図3Dは、図3Cに示した復調部における信号の流れの一例を示す図である。図3C,図3Dに示すように、図2A,図2Bに示した無線端末装置200の復調部231は、制御チャネル処理部330と、トランスポートチャネル処理部340と、を備える。
制御チャネル処理部330は、RF部220(たとえば図2A,図2B参照)から出力された信号のうちの制御チャネルの信号の復調を行う。たとえば、制御チャネル処理部330は、FFT部331と、復調処理部332と、デスクランブリング部333と、デレートマッチング部334と、畳込み復号部335と、CRC部336と、を備える。
FFT部331は、RF部220から出力された信号のFFT(Fast Fourier Transform:高速フーリエ変換)を行う。そして、FFT部331は、FFTを行った信号を復調処理部332へ出力する。
復調処理部332は、FFT部331から出力された信号に基づく復調処理を行う。復調処理部332の復調処理には、たとえばQPSKなどの各種の復調方式を用いることができる。復調処理部332は、復調処理によって得られた信号をデスクランブリング部333へ出力する。
デスクランブリング部333は、復調処理部332から出力された信号のデスクランブリングを行う。そして、デスクランブリング部333は、デスクランブリングを行った信号をデレートマッチング部334へ出力する。デレートマッチング部334は、デスクランブリング部333から出力された信号のデレートマッチングを行う。そして、デレートマッチング部334は、デレートマッチングを行った信号を畳込み復号部335へ出力する。
畳込み復号部335は、デレートマッチング部334から出力された信号の畳込み復号を行う。そして、畳込み復号部335は、畳込み復号を行った信号をCRC部336へ出力する。CRC部336は、畳込み復号部335から出力された信号のCRCを行う。そして、CRC部336は、CRCの結果をアプリケーション処理部240(たとえば図2A,図2B参照)へ出力する。また、CRC部336は、畳込み復号およびCRCによって得られた制御情報のうちの、トランスポートチャネル処理部340における復調のための制御情報をトランスポートチャネル処理部340へ出力する。
トランスポートチャネル処理部340は、RF部220(たとえば図2A,図2B参照)から出力された信号のうちのトランスポートチャネルの信号の復調を行う。たとえば、トランスポートチャネル処理部340は、FFT部341と、復調処理部342と、デスクランブリング部343と、デレートマッチング/HARQ部344と、ターボ復号/CRC演算部345と、CRC部346と、を備える。
FFT部341は、RF部220から出力された信号のFFTを行う。そして、FFT部341は、FFTを行った信号を復調処理部342へ出力する。復調処理部342は、FFT部341から出力された信号に基づく復調処理を行う。復調処理部342の復調処理には、たとえばQPSKや16/64QAMなどの各種の復調方式を用いることができる。復調処理部342は、復調処理によって得られた信号をデスクランブリング部343へ出力する。
デスクランブリング部343は、復調処理部342から出力された信号のデスクランブリングを行う。そして、デスクランブリング部343は、デスクランブリングを行った信号をデレートマッチング/HARQ部344へ出力する。デレートマッチング/HARQ部344は、デスクランブリング部343から出力された信号のデレートマッチングおよびHARQを行う。そして、デレートマッチング/HARQ部344は、デレートマッチングおよびHARQに基づく信号をターボ復号/CRC演算部345へ出力する。
ターボ復号/CRC演算部345は、デレートマッチング/HARQ部344から出力された信号のターボ復号を行う。また、ターボ復号/CRC演算部345は、トランスポートブロックを所定の処理単位であるコードワード(CodeWord)に分割し、分割したコードワード毎にターボ復号を行う。コードワードのサイズは、たとえば制御チャネル処理部330から出力される制御情報によって制御される。ターボ復号/CRC演算部345は、ターボ復号を行った信号をCRC部346へ出力する。
CRC部346は、ターボ復号/CRC演算部345から出力された信号のCRCを行う。そして、CRC部346は、CRCの結果をアプリケーション処理部240(たとえば図2A,図2B参照)へ出力する。
図1A,図1Bに示した分割部101、特定部102、生成部103、演算部104および検査部105は、たとえば復調部231のターボ復号/CRC演算部345およびCRC部346によって実現することができる。
(通信制御部のハードウェア構成)
図4Aは、通信制御部のハードウェア構成の一例を示す図である。図2A,図2Bに示した通信制御部230は、たとえば、図4Aに示す演算回路410によって実現することができる。演算回路410は、DSP411と、小規模メモリ412と、ターボ復号器群413と、HWアクセラレータ414〜416と、を備える。
DSP411(Digital Signal Processor)は、演算回路410の全体の制御を司り、各種の無線信号処理を行う。小規模メモリ412は、DSP411のワークエリアとして使用される。ターボ復号器群413は、ターボ復号を行うため複数のハードウェアアクセラレータである。複数のハードウェアアクセラレータを用いることにより、多くの処理時間を要するターボ復号を並列処理によって行い、処理時間の短縮を図ることができる。HWアクセラレータ414〜416は、ターボ復号の他の各種の処理を行うためのハードウェアアクセラレータである。
通信制御部230のターボ復号/CRC演算部345は、たとえば小規模メモリ412およびターボ復号器群413によって実現することができる。また、トランスポートチャネル処理部340の他の各部は、たとえばDSP411、小規模メモリ412、HWアクセラレータ414〜416によって実現することができる。
ターボ復号器群413は、コードワード毎の誤り検出/訂正処理の結果、誤り未検出となった各コードワードについて、トランスポートブロックのCRCの生成多項式でCRCコード(部分CRCコード)を演算する。そして、ターボ復号器群413は、演算した部分CRCコードをDSP411(CRC部346)へ通知する。
また、ターボ復号器群413のコードワード出力は、トランスポートブロックのCRCの結果を待たず、ターボ復号完了後すみやかにアプリケーション処理部240のメモリ(たとえば図4Bに示す大規模メモリ422)へ送信される。アプリケーション処理部240では上位レイヤ処理、動画、音声などのミドルウェア処理が行われるため、比較的大きなメモリが搭載され、組み込み的な容量制限は少ない。
(アプリケーション処理部のハードウェア構成)
図4Bは、アプリケーション処理部のハードウェア構成の一例を示す図である。図2A,図2Bに示したアプリケーション処理部240は、たとえば、図4Bに示す演算回路420によって実現することができる。演算回路420は、CPU421と、大規模メモリ422と、を備える。CPU421(Central Processing Unit:中央処理装置)は、演算回路420の全体の制御を司る。大規模メモリ422は、CPU421のワークエリアとして使用される。
(復調部のトランスポートチャネル処理部による処理)
図5は、復調部のトランスポートチャネル処理部による処理の一例を示す図である。まず、復調部231のトランスポートチャネル処理部340は、まず、FFT部341によるFFT501を行う。つぎに、トランスポートチャネル処理部340は、復調処理部342による復調処理502(DEM)を行う。つぎに、トランスポートチャネル処理部340は、図示しないデスクランブリングおよびデレートマッチング/HARQを行う。
つぎに、トランスポートチャネル処理部340は、ターボ復号/CRC演算部345によるターボ復号/CRC演算処理503(Turbo DEC)を行う。ターボ復号/CRC演算処理503においては、分割されたブロックであるコードワード毎にターボ復号およびCRC演算による誤り検出処理が行われる。
また、ターボ復号/CRC演算処理503の開始時に、全てのコードワードのビットサイズ512が制御チャネル処理部330からターボ復号/CRC演算部345へ通知される。これに対して、CRC部346は、ターボ復号などの前段処理中にコードワードのビットサイズ512および位置から、時間的に後ろのコードワードのビット数の総和を取ることでテイルビットのサイズを演算することができる。そして、CRC部346は、演算したテイルビットの数に基づいて、コードワード毎のCRC変換行列を所定の行列積(後述)で演算することができる。
このように、CRC部346は、ターボ復号/CRC演算処理503の間に与えられたビットサイズ512により、分割されたブロック毎のCRC変換行列を演算しておく。そして、CRC部346は、ターボ復号/CRC演算処理503が完了すると、ターボ復号/CRC演算処理503により得られた部分CRCコード511と、演算したCRC変換行列と、に基づきブロック毎のCRCコードを演算することができる。
一方、CRC部346は、演算したブロック毎のCRCコードのXORを演算することによりCRC513を行うことができる。CRC513は、ターボ復号/CRC演算処理503によって復号されたビット列520を用いなくても行うことができるため、ビット列520はCRC513を待たずに順次、アプリケーション処理部240へ送信される。
CRC513による判定結果514はアプリケーション処理部240へ送信される。これにより、アプリケーション処理部240は、復号されたビット列520と、ビット列520の判定結果514と、を得ることができる。アプリケーション処理部240は、たとえば、判定結果514に基づいて、ビット列520を破棄するか使用するかを判断することができる。
(トランスポートブロックおよびコードワード)
図6は、トランスポートブロックおよびコードワードの一例を示す図である。図6に示すトランスポートブロック600は、復調部231による復調対象のトランスポートブロックである。CRCコード601は、トランスポートブロック600の末尾に付されたCRCコードである。図6に示す例では、トランスポートブロック600は、CodeWord0〜3の4つのコードワードに分割されるとする。
ビット列610は、CodeWord0にテイルビット“0”を付したビット列である。ビット列610のテイルビット数は、トランスポートブロック600におけるCodeWord0より後のデータ長であり、CodeWord1〜3の合計データ長に相当する。CRCコード620は、ビット列610のCRCコードである。
ビット列611は、CodeWord1にテイルビット“0”を付したビット列である。ビット列611のテイルビット数は、トランスポートブロック600におけるCodeWord1より後のデータ長であり、CodeWord2,3の合計データ長に相当する。CRCコード621は、ビット列611のCRCコードである。
ビット列612は、CodeWord2にテイルビット“0”を付したビット列である。ビット列612のテイルビット数は、トランスポートブロック600におけるCodeWord2より後のデータ長であり、CodeWord3のデータ長に相当する。CRCコード622は、ビット列612のCRCコードである。
ビット列613は、CodeWord3にテイルビット“0”を付したビット列である。ただし、CodeWord3はトランスポートブロック600における最後のコードワードであるため、ビット列613のテイルビット数はゼロである。CRCコード623は、ビット列613のCRCコードである。
ターボ復号/CRC演算部345は、CodeWord0〜3の各CRCコードを演算して部分CRCコードとしてCRC部346へ出力する。
CRC部346は、ビット列610〜613の各テイルビット数をトランスポートブロック600のデータ長から演算する。そして、CRC部346は、演算した各テイルビット数に基づいて、CodeWord0の各部分CRCコードからCRCコード620〜623を得るためのCRC変換行列を演算する。
また、CRC部346は、CodeWord0〜3のそれぞれについて、演算したCRC変換行列と、ターボ復号/CRC演算部345から出力された部分CRCコードと、の行列ベクトル積を演算することにより、CRCコード620〜623を得る。そして、CRC部346は、CRCコード620〜623のXORの演算結果がCRCコード601と一致するか否かを判断することによりCRCを行う。
(CRC部による処理)
図7は、CRC部による処理の一例を示すフローチャートである。CRC部346は、検査対象のトランスポートブロック毎に、たとえばDSP411のファームウェア処理により、図7に示す各ステップを行う。まず、CRC部346は、コードワード毎のビットサイズ情報を取得する(ステップS701)。ビットサイズ情報は、たとえば、CRC部346の処理前(たとえばターボ復号/CRC演算部345による処理中)に制御チャネル処理部330から出力される制御情報に含まれる、検査対象のトランスポートブロックのサイズ情報から算出することができる。
つぎに、CRC部346は、コードワード毎のテイルビット数を演算する(ステップS702)。たとえば、CRC部346は、コードワード毎に、対象のコードワードより時間的に後ろのコードワードのサイズの総和を演算することによってテイルビット数を演算することができる。
つぎに、CRC部346は、コードワードのそれぞれについて以下のステップS703〜S705を実行する(コードワードループ)。まず、CRC部346は、対象のコードワードについてのCRC変換行列として、(生成多項式の次数)×(生成多項式の次数)の単位行列を設定する(ステップS703)。
つぎに、CRC部346は、i(i=0〜生成多項式の次数−1)のそれぞれについて以下のステップS704,S705を実行する(ビット確認ループi)。まず、CRC部346は、対象のコードワードについてステップS702によって演算したテイルビット数(2進数)と、“1”をiビット左シフトした値と、のアンド演算結果が“0”であるか否かを判断する(ステップS704)。アンド演算結果が“0”である場合(ステップS704:Yes)は、CRC部346は、つぎのiについての処理へ移行する(ビット確認ループi End)。
ステップS704において、アンド演算結果が“0”でない場合(ステップS704:No)は、CRC部346は、ステップS705へ移行する。すなわち、CRC部346は、対象のコードワードについてのCRC変換行列に対して、CRC変換行列Aiとの行列積を行い(ステップS705)、つぎのiについての処理へ移行する(ビット確認ループi End)。CRC変換行列Aiについては後述する。全ての対象のコードワードについてビット確認ループiを終了すると(コードワードループ End)、コードワード毎のCRC変換行列を得ることができる。
つぎに、CRC部346は、ターボ復号/CRC演算部345により演算されたコードワード毎の部分CRCコードを取得する(ステップS706)。つぎに、CRC部346は、各コードワードを含むトランスポートブロック全体のCRCコードを示す全体CRCコードを初期化(全体CRCコード=0)する(ステップS707)。
つぎに、CRC部346は、コードワードのそれぞれについて以下のステップS708を実行する(コードワードループ)。すなわち、CRC部346は、対象のコードワードについて演算したCRC変換行列と対象のコードワードについての部分CRCコードと、の行列ベクトル積を演算する。そして、CRC部346は、全体CRCコードに対して、行列ベクトル積の演算結果とのXOR演算を行う(ステップS708)。
全てのコードワードについてステップS708が終了すると(コードワードループ End)、CRC部346は、全体CRCコードをアプリケーション処理部240へ通知し(ステップS709)、一連の処理を終了する。これにより、トランスポートブロックについてのCRC結果をアプリケーション処理部240へ通知することができる。
(トランスポートチャネルの並列処理)
図8は、トランスポートチャネルの並列処理の一例を示す参考図である。図8に示すように、復調部231においては、制御チャネル処理部330による制御チャネル処理810により得られた制御情報に基づいて、トランスポートチャネル処理部340によるトランスポートチャネル処理820が行われる。トランスポートチャネル処理820においては、たとえば図3C,図3Dに示したように、復調処理、デスクランブリング、デレートマッチング/HARQ、ターボ復号/CRC演算821などが行われる。
トランスポートチャネル処理820のターボ復号/CRC演算821においては、小規模メモリ412(たとえば図4A参照)に格納された尤度情報801に基づいてターボ復号器群413によってコードワード毎の部分CRCコード802が演算される。部分CRCコード802は小規模メモリ412に格納される。また、ターボ復号器群413によってターボ復号された各コードワードはアプリケーション処理部240の大規模メモリ422へ順次送信される。そして、大規模メモリ422へ格納された各コードワードが結合されることにより、トランスポートブロック804が復元される。
また、トランスポートチャネル処理820においては、復調処理、デスクランブリング、デレートマッチング/HARQ、ターボ復号/CRC演算821と並行して、CRC部346によるCRC変換行列演算822が行われる。
CRC変換行列演算822において、CRC部346は、制御チャネル処理810により得られた制御情報に基づいて、コードワード毎にテイルビット長を演算する。そして、CRC部346は、演算したテイルビット長に基づくコードワード毎のCRC変換行列を演算する。CRC部346によって演算されたコードワード毎のCRC変換行列803は小規模メモリ412に格納される。
そして、CRC部346は、小規模メモリ412に格納されたコードワード毎の部分CRCコード802およびCRC変換行列803に基づくCRC823を行う。すなわち、CRC部346は、コードワード毎の部分CRCコード802およびCRC変換行列803に基づくコードワード毎のCRC変換を行い、CRC変換により得られた各CRCコードを加算(XOR)する。
この処理(CRC変換+XOR)は、たとえばDSP411のファームウェア(FW)処理によって行われる。これにより、トランスポートブロック804のCRCを行うことができる。CRC部346は、トランスポートブロック804のCRC結果をアプリケーション処理部240へ送信する。
これにより、たとえばトランスポートブロック804を小規模メモリ412に格納しなくてもCRC演算を行うことができるため、たとえばトランスポートブロック単位でのCRC演算を行う場合に比べて、CRC演算の省メモリ化を図ることができる。
また、トランスポートブロック600の復号を待たずにCRC演算を開始できるため、たとえばトランスポートブロック単位でのCRC演算を行う場合に比べて、CRC演算の時間短縮を図ることができる。
たとえば、LTEの場合、たとえばトランスポートブロック単位でのCRC演算を行う場合は、規格上、最大で24496ビットを保持しておくことを要する。これに対して、本実施の形態によれば、部分CRCの24ビット×13(CodeWord数の最大)と2のべき乗の変換行列15×24×24ビットの合計8952ビットを保持すればよく、メモリ消費を抑えることができる。
(CRC演算)
図9Aは、CRC演算を行う演算回路の一例を示す図である。図9Bは、図9Aに示したCRC演算を行う演算回路における信号の流れの一例を示す図である。ここでは一例として、24次の下記(1)式に示すCRC生成多項式によるCRC演算を行う場合について説明する。
24+x23+x18+x17+x14+x11+x10
+x7+x6+x5+x4+x3+x+1 …(1)
上記(1)式に示したCRC生成多項式によるCRC演算は、たとえば図9A,図9Bに示す演算回路900によって行うことができる。CRC生成多項式が24次の多項式であるため、演算回路900は、CRC生成多項式の最高次を除く0次〜23次にそれぞれ対応するタップT0〜T23を有する。タップT0〜T23は直列に接続される。タップT0〜T23にはそれぞれ1ビットの情報が格納される。CRC演算の対象のビット列はタップT0から順次入力される。タップT0〜T23のそれぞれは、前段からビットが入力される毎に直前に格納していたビットを後段へ出力する。
また、CRC生成多項式に含まれ、最高次の24次を除く各次数のうちの係数が“1”である各次数(0,1,3〜7,10,11,14,17,18,23次)に対応するタップは、タップT0,T1,T3〜T7,T10,T11,T14,T17,T18,T23である。このため、タップT0,T1,T3〜T7,T10,T11,T14,T17,T18,T23の各前段には、XOR演算部XOR0,XOR1,XOR3〜XOR7,XOR10,XOR11,XOR14,XOR17,XOR18,XOR23(X)が設けられる。
XOR演算部XOR0,XOR1,XOR3〜XOR7,XOR10,XOR11,XOR14,XOR17,XOR18,XOR23のそれぞれは、前段のタップからの出力と、最後段のタップT23の出力と、のXORを演算し、演算結果を後段のタップへ出力する。たとえば、XOR演算部XOR18は、タップT17からの出力と、最後段のタップT23からの出力と、のXORを演算し、演算結果をタップT18へ出力する。
このような演算回路900に対して、タップT0の前段のXOR演算部XOR0から演算対象のビット列が順次入力された場合にタップT0〜T23に格納された値が、CRC演算の対象のビット列のCRCコードとなる。このため、CRCコードは、生成多項式の次数に相当するビット数の(図9A,図9Bに示す例では24ビット)のビット列となる。
また、演算回路900にある第1ビット列が入力された状態からさらにn個の“0”が入力された場合にタップT0〜T23に格納された値は、第1ビット列にテイルビット(“0”)をn個付した第2ビット列のCRCコードとなる。
一般的に、あるビット列にCRCコードを付加する処理は、単純にビット列にCRCコードを足す処理である。生成多項式の次数分の“0”のビット列の代わりにCRCコードが付加されたビット列に対して上述のCRC演算を行うと、最終的にタップに保存されているビット列は全て“0”になる。
たとえば、通信システムにおいて、送信側は、上述のようなCRC演算により得られたCRCコードを付加したビット列を送信する。これに対して、受信側は、受信データに対して送信側と同様のCRC演算を行い、CRC演算により得られたコードが全て“0”であることを確認することによりCRCを行うことができる。
つぎに、演算対象のビット列を分割した場合のCRC演算について説明する。
この場合は、たとえば、CRC演算の対象のビット列を分割した分割ビット列の末尾に、分割前のビット列における分割ビット列より後ろのビット列を全て“0”で置き換えたビット列(テイルビット)のCRCコードを演算することができる。そして、各分割ビット列について演算したCRCコードのXORを演算すると、分割前のビット列のCRCコードと等しくなる。
(CRC変換行列)
図10は、CRC変換行列の一例を示す図である。演算回路900に対して1個の“0”を入力した場合の各タップの値の変化は、たとえば図10に示す式1000のように表すことができる。式1000において、T0old〜T23oldは、演算回路900に対して1個の“0”を入力する前にタップT0〜T23に格納されていた値である。T0new〜T23newは、演算回路900に対して1個の“0”を入力した後にタップT0〜T23に格納される値である。
式1000に示すように、CRC変換行列AとT0old〜T23oldとの積を演算することによりT0new〜T23newを得ることができる。ただし、この行列積演算は、算術的な行列積である要素の積和ではなく、要素毎のAND論理とXOR加算である(たとえば図12参照)。CRC変換行列Aは、上記(1)式に示したCRC生成多項式に応じた行列である(たとえば図11参照)。
また、演算回路900に対してn個の“0”を入力した場合のT0new〜T23newは、CRC変換行列AnとT0old〜T23oldとの積を演算することにより得ることができる。すなわち、ある第1ビット列にn個のテイルビットを付した第2ビット列のCRCコードは、CRC変換行列Anと第1ビット列のCRCコードとの積を演算することによって得ることができる。
したがって、21,22,…個のテイルビットに対応するCRC変換行列A1,A4,…をルックアップテーブルとして記憶しておくことで、ある第1ビット列にn個のテイルビットを付した第2ビット列のCRCコードを短時間で演算することができる。
たとえば、CRC変換行列Anを複数のnについてルックアップテーブルとして記憶しておく。記憶しておくCRC変換行列Anは、通信方式などから想定されるテイルビット数に対応できる分確保すればよい。
たとえば、LTEの場合は、CRCはトランスポートブロックと呼ばれるビット列に対して行われる。最大となるビット列は、トランスポートブロック長の最大値であり、規格上24496ビットとされている。よって、LTEのトランスポートブロックのCRCに関しては、20から214までの15種類のCRC変換行列を用意しておけば各テイルビット数に対応することができる。また、トランスポートブロックはコードワードと呼ばれる部分ビット列に分割される。1トランスポートブロックは最大13のCodeWordに分割される。
(CRC変換行列の定義)
図11は、CRC変換行列の定義の一例を示す図である。図10に示したCRC変換行列Aは、たとえば図11に示すように定義される。たとえば、CRC変換行列Aは、上記(1)式に示したCRC生成多項式の次数をjとするとj×jの正方行列である(図11に示す例ではj=24)。
CRC変換行列Aの第1列の部分行列1101は、上記(1)式に示したCRC生成多項式の最高次数を除いた各次数の係数を並べたビット列である。部分行列1101は、下から0,1,3,4,5,6,7,10,11,14,17,18,23ビット目が“1”であり他は“0”であるビット列である。CRC変換行列Aの右上の(j−1)×(j−1)の部分行列1102は単位行列である。CRC変換行列Aの残りの右下の部分行列1103はゼロ行列である。
(CRC変換行列の演算)
図12は、CRC変換行列の演算の一例を示す図である。図10に示した式1000の行列積演算は、たとえば図12に示す式1200のように、要素毎のAND論理とXOR加算である。たとえば、T0newは、“1”&T23oldと、“0”&T22oldと、“0”&T21oldと、…“0”&T0oldと、のXORによって演算することができる。
つぎに、CRC変換行列の作成について説明する。一般的に、DSPのような信号処理プロセッサでは行列演算命令は無いため、以下のような論理演算やシフトなどを組み合わせて行列積を実行することができる。まず、行列とベクトルとの積について説明する。
(行列とベクトルとの積)
図13Aは、CRC変換行列の第1行とベクトルとの積の演算回路の一例を示す図である。図12に示したT23newを求める演算は、たとえば図13Aに示す演算回路1310によって行うことができる。演算回路1310は、24個のアンド回路1311(&)と、23個のXOR回路1312(×)と、を備える。
24個のアンド回路1311には、それぞれCRC変換行列A1の第1行である“1100000…0”が入力される。また、24個のアンド回路1311には、それぞれT23old〜T0oldが入力される。アンド回路1311(&)のそれぞれは、入力された各ビットの積を演算する。
23個のXOR回路1312は、24個のアンド回路1311による各演算結果の排他的論理和(XOR)を演算する。そして、23個のXOR回路1312による演算結果がT23newとして演算回路1310から出力される。
図13Bは、CRC変換行列の第2行とベクトルとの積の演算回路の一例を示す図である。図12に示したT22newを求める演算は、たとえば図13Bに示す演算回路1320によって行うことができる。演算回路1320は、24個のアンド回路1321(&)と、23個のXOR回路1322(×)と、を備える。
24個のアンド回路1321には、それぞれCRC変換行列A1の第2行である“0010000…0”が入力される。また、24個のアンド回路1321には、それぞれT23old〜T0oldが入力される。アンド回路1321のそれぞれは、入力された各ビットの積を演算する。
23個のXOR回路1322は、24個のアンド回路1321による各演算結果の排他的論理和(XOR)を演算する。そして、23個のXOR回路1322による演算結果がT22newとして演算回路1320から出力される。
図13Cは、CRC変換行列の第24行とベクトルとの積の演算回路の一例を示す図である。図12に示したT0newを求める演算は、たとえば図13Cに示す演算回路1330によって行うことができる。演算回路1330は、24個のアンド回路1331(&)と、23個のXOR回路1332(×)と、を備える。
24個のアンド回路1331には、それぞれCRC変換行列A1の第24行である“1000000…0”が入力される。また、24個のアンド回路1331には、それぞれT23old〜T0oldが入力される。アンド回路1331のそれぞれは、入力された各ビットの積を演算する。
23個のXOR回路1332は、24個のアンド回路1331による各演算結果の排他的論理和(XOR)を演算する。そして、23個のXOR回路1332による演算結果がT0newとして演算回路1330から出力される。
同様に、CRC変換行列の第3行〜第23行とベクトルとの積についても、24個のアンド回路および23個のXOR回路によって演算することで、T1new〜T21newを得ることができる。
そして、得られたT0new〜T23newをそれぞれシフトして並べることで、CRCコードを得ることができる。これらの演算は、プロセッサに含まれる命令を組み合わせて実現してもよいし、リコンフィギャラブルプロセッサのように命令を追加できる場合は図13A〜図13Cに示した論理演算などを新しく命令定義することによって実現してもよい。
このように、実施の形態2によれば、コードワード(分割データ)のテイルビットのデータ長をトランスポートブロックのデータ長から算出することができる。そして、算出したテイルビットのデータ長に応じたCRC変換行列を用いたコードワード毎のCRC結果からトランスポートブロックのCRC結果を得ることができる。これにより、CRC演算の時間短縮および省メモリ化を図り、CRC演算の効率化を図ることができる。
(誤りがない場合のCRCの演算例)
CRCの生成多項式としてたとえば下記(2)式に示す8次の生成多項式を用いる場合のCRCの演算例について説明する。まず、誤りがない場合のCRCの演算例について説明する。
8+x2+x+1 …(2)
図14は、正常時のビット列データの一例を示す図である。図14に示すビット列データ1400は、たとえば、誤りなく受信された1つのトランスポートブロックに含まれるビット列データであり、4つのコードワード(CodeWord0〜3)に分割されている。CodeWord3の後ろ8(生成多項式の次数)ビットのビット列1401は、ビット列データ1400の全体のCRCコードであり、送信側で付与されたCRCコードである。
ここでは、ビット列データ1400からビット列1401を除いてCRC演算を行い、演算結果とビット列1401とが一致するか否かを確認することによってCRCを行う場合について説明する。ただし、ビット列1401を含めてビット列データ1400のCRC演算を行い、演算結果が“00000000”となるか否かを確認することによってCRCを行ってもよい。
図15は、CRCコードを除いたビット列データの一例を示す図である。図15に示すビット列1500は、図14に示したビット列データ1400からビット列1401を除いたビット列である。つぎに、ビット列1500のうちのCodeWord0のCRCコードを演算する場合について説明する。
図16は、CodeWord0のCRC演算の一例を示す図である。図16に示すビット列1600(“100000111”)は、上記(2)式に示したCRC生成多項式の各次数における係数を示すビット列である。
データビット列1601は、ビット列1500のCodeWord0のビット列の後ろに、上記(2)式に示した生成多項式の次数(8次)と同数の“0”(下線部)を追加したビット列である。
まず、データビット列1601の最初に“1”となる位置(2ビット目)にビット列1600を配置してデータビット列1601とビット列1600のXORを演算することにより、データビット列1602が得られる。
つぎに、データビット列1602の最初に“1”となる位置(3ビット目)にビット列1600を配置してデータビット列1602とビット列1600のXORを演算することにより、データビット列1603が得られる。
以降同様に、新たなデータビット列の最初に“1”となる位置にビット列1600を配置してXORを演算する処理を、ビット列1600の末尾がデータビット列の末尾と重なるまで繰り返すことにより、データビット列1620が得られる。データビット列1620の末尾の8ビット(生成多項式の次数分)である“11101101”がCodeWord0のCRCコード(部分CRCコード)である。
なお、データビット列1601の末尾の8個の“0”を“11101101”に置き換え、上述した処理を再度行うと、データビット列1601の末尾の8ビット(生成多項式の次数分)は“00000000”となる。
CodeWord1〜3についても同様の演算を行うことにより、各コードワードに対応する部分CRCコードを求めることができる。
図17は、各コードワードに対応する部分CRCコードおよびテイルビット数の一例を示す図である。図17に示すテーブル1700は、各コードワード(CodeWord0〜3)のCRCコード(部分CRCコード)およびテイルビット数を示す。また、テーブル1700は、全体のCRCコードを示す。各コードワードの部分CRCコードは、たとえば図16に示した演算によって求めることができる。
各コードワードのテイルビット数は、上述したようにトランスポートブロックのデータ長などに基づいて求めることができる。なお、図17に示すテイルビット数は、全体のCRCコードを除いたビット列(たとえば図15に示したビット列1500)におけるテイルビット数である。
全体のCRCコードは、トランスポートブロックの末尾に付されたCRCコード(たとえば図14に示したビット列1401)である。
図18は、CRC変換行列(n=1)の一例を示す図である。図18に示すCRC変換行列An=A1は、上記(2)式に示したCRC生成多項式に基づくCRC変換行列である。すなわち、CRC変換行列A1の第1列は、上記(2)式に示したCRC生成多項式の最高次を除く各次数における係数を並べたものである。また、CRC変換行列A1の右上の7×7の部分行列は単位行列である。また、CRC変換行列A1の残りの部分は“0”である。
図19は、CRC変換行列(n=2,4,…,256)の一例を示す図である。図18に示したCRC変換行列A1に基づいて、たとえば図19に示すCRC変換行列A2,A4,A8,A16,A32,A64,A128,A256を求めることができる。このように、上記(2)式に示したCRC生成多項式に基づく2n(n=1,2,3,4…)のCRC変換行列を求めることができる。
つぎに、各コードワードにテイルビットを付した各ビット列のCRCコードの演算について説明する。たとえばCodeWord0に付されるテイルビット数は74個であるため(たとえば図17参照)、CodeWord0についてのCRC変換行列ACodeWord0は下記(3)式のように示すことができる。
CodeWord0=A74=A64+8+2=A64×A8×A2 …(3)
同様に、CodeWord1〜3についてのCRC変換行列ACodeWord1,ACodeWord2,ACodeWord3は下記(4)式のように示すことができる。
CodeWord1=A47=A32+8+4+2+1=A32×A8×A4×A2×A1
CodeWord2=A22=A16+4+2=A16×A4×A2
CodeWord3=A0 …(4)
図20は、各コードワードに対応するCRC変換行列の一例を示す図である。図20に示すCRC変換行列ACodeWord0〜ACodeWord3は、上記(3)式および(4)式によって求められる、図15に示したCodeWord0〜3に対応するCRC変換行列である。CRC変換行列ACodeWord0〜ACodeWord3をそれぞれCodeWord0〜3の部分CRCコード(たとえば図17参照)に乗ずることにより、各コードワードにテイルビットを付した各ビット列のCRCコードを演算することができる。
図21は、CodeWord0にテイルビットを付したビット列のCRCコードの演算の一例を示す図である。図21に示すように、CRC変換行列ACodeWord0をCodeWord0の部分CRCコード(CRCCodeWord0)に乗ずることにより、CodeWord0にテイルビットを付したビット列のCRCコード演算することができる。図21においてはCodeWord0にテイルビットを付したビット列のCRCコードの演算について説明したが、CodeWord1〜3にテイルビットを付した各ビット列のCRCコードの演算についても同様である。
図22は、各コードワードにテイルビットを付した各ビット列のCRCコードの演算結果の一例を示す図である。図22に示すテーブル2200は、各コードワード(CodeWord0〜3)のCRCコード(部分CRCコード)と、各コードワードにテイルビットを付したビット列のCRCコードと、を示す。また、テーブル2200は、全体のCRCコードと、各コードワードにテイルビットを付したビット列のCRCコードのXOR演算の結果と、を示す。
図22に示す例において、トランスポートブロックの全体のCRCコード“10011111”と、各コードワードにテイルビットを付したビット列のCRCコードのXOR演算の結果“10011111”と、が一致している。このため、対象のトランスポートブロックに誤りがないと判断することができる。
(誤りがある場合のCRCの演算例)
つぎに、誤りがある場合のCRCの演算例について説明する。
図23は、異常発生時のビット列データの一例を示す図である。図23に示すビット列データ2300は、たとえば、誤りが発生して受信された1つのトランスポートブロックに含まれるビット列データであり、4つのコードワード(CodeWord0〜3)に分割されている。CodeWord3の後ろ8(生成多項式の次数)ビットのビット列2301は、ビット列データ2300の全体のCRCコードであり、送信側で付与されたCRCコードである。
また、ビット列データ2300のCodeWord1の3ビット目のビット2302において誤り(“1”→“0”)が発生しているとする。
ここでは、ビット列データ2300からビット列2301を除いてCRC演算を行い、演算結果とビット列2301とが一致するか否かを確認することによってCRCを行う場合について説明する。ただし、ビット列2301を含めてビット列データ2300のCRC演算を行い、演算結果が“00000000”となるか否かを確認することによってCRCを行ってもよい。
図24は、CRCコードを除いたビット列データの一例を示す図である。図24に示すビット列2400は、図23に示したビット列データ2300からビット列2301を除いたビット列である。各コードワードのCRCコードの演算については、たとえば図16に示した手順と同様である。
図25は、各コードワードに対応する部分CRCコードおよびテイルビット数の一例を示す図である。図25に示すテーブル2500は、各コードワード(CodeWord0〜3)のCRCコード(部分CRCコード)およびテイルビット数を示す。図24に示したビット列2400について各コードワードのCRCコードの演算を行うと、たとえば図25に示す結果を得ることができる。
CRC変換行列Anについては、たとえば図18,図19に示したCRC変換行列Anと同様である。
つぎに、各コードワードにテイルビットを付した各ビット列のCRCコードの演算について説明する。たとえばCodeWord0に付されるテイルビット数は64個であるため(たとえば図25参照)、CodeWord0についてのCRC変換行列ACodeWord0は下記(5)式のように示すことができる。
CodeWord0=A64=A64 …(5)
同様に、CodeWord1〜3についてのCRC変換行列ACodeWord1,ACodeWord2,ACodeWord3は下記(6)式のように示すことができる。
CodeWord1=A40=A32+8=A32×A8
CodeWord2=A16=A16
CodeWord3=A0 …(6)
図26は、各コードワードに対応するCRC変換行列の一例を示す図である。図26に示すCRC変換行列ACodeWord0〜ACodeWord3は、上記(5)式および(6)式によって求められる、図24に示したCodeWord0〜3に対応するCRC変換行列である。CRC変換行列ACodeWord0〜ACodeWord3をそれぞれCodeWord0〜3の部分CRCコード(たとえば図25参照)に乗ずることにより、各コードワードにテイルビットを付した各ビット列のCRCコードを演算することができる。
図27は、各コードワードにテイルビットを付した各ビット列のCRCコードの演算結果の一例を示す図である。図27に示すテーブル2700は、各コードワード(CodeWord0〜3)のCRCコード(部分CRCコード)と、各コードワードにテイルビットを付したビット列のCRCコードと、を示す。また、テーブル2700は、全体のCRCコードと、各コードワードにテイルビットを付したビット列のCRCコードのXOR演算の結果と、を示す。
図27に示す例において、トランスポートブロックの全体のCRCコード“11001111”と、各コードワードにテイルビットを付したビット列のCRCコードのXOR演算の結果“10100001”と、が一致していない。このため、対象のトランスポートブロックに誤りがあると判断することができる。
このように、各コードワードの部分CRCコードを求め、求めたCRCコードをCRC変換行列によって変換することで、各コードワードにテイルビットを付したビット列のCRCコードを得ることができる。そして、各コードワードにテイルビットを付したビット列のCRCコードを用いることで、トランスポートブロックのCRCコードを得ることができ、トランスポートブロックのCRCを行うことができる。
図28は、各コードワードにテイルビットを付した各ビット列のCRCコードの演算結果の他の例を示す図である。図28に示すテーブル2800は、仮に、図23,図24に示した誤りのビット2302が仮に誤っておらず“1”であった場合の各演算結果を示す。したがって、CodeWord1の部分CRCコードが、図27に示したテーブル2700と異なり“01010101”となっている。また、CodeWord1にテイルビットを付したビット列のCRCコードが、図27に示したテーブル2700と異なり“00010111”となっている。
図28に示す例において、トランスポートブロックの全体のCRCコード“11001111”と、各コードワードにテイルビットを付したビット列のCRCコードのXOR演算の結果“11001111”と、が一致している。このため、対象のトランスポートブロックに誤りがないと判断することができる。
以上説明したように、通信装置および巡回冗長検査プログラムによれば、巡回冗長検査の演算効率の向上を図ることができる。
たとえば、検査対象データの最初から最後までのCRCコードが1つのCPUで演算される構成では、処理時間が長くなり、多くのワークメモリも要する。このため、制約のある組み込み機器ではリソースを圧迫したり、チップサイズが増大したりするという問題があった。
これに対して、上述した各実施の形態によれば、検査対象データの分割データのテイルビットのデータ長に応じたCRC変換行列を用いた分割データ毎のCRC結果から検査対象データのCRC結果が得られる。これにより、CRC演算の時間短縮および省メモリ化(効率化)を図ることができる。
また、通信モードなどにより検査対象データのサイズがダイナミックに変化する場合においても、検査対象データのデータ長に基づいて分割データのテイルビットのデータ長を特定することにより、各分割データに対応するCRC変換行列を生成することができる。このため、たとえばビット列サイズ毎にCRC変換行列を用意しておかなくてもよいため、省メモリ化を図ることができる。
なお、本実施の形態で説明した巡回冗長検査方法は、たとえば、予め用意されたプログラムをプロセッサ(DSP411やCPU421など)で実行することにより実現することができる。このプログラムは、ハードディスクなどのプロセッサで読み取り可能な記録媒体に記録され、プロセッサによって記録媒体から読み出されることによって実行される。またこのプログラムは、インターネット等のネットワークを介して配布されてもよい。
上述した各実施の形態に関し、さらに以下の付記を開示する。
(付記1)巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置であって、
伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割する分割部と、
前記データ系列のデータ長に基づいて、前記分割部により得られた分割データに付加されるテイルビットのデータ長を特定する特定部と、
前記特定部によって特定されたテイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成する生成部と、
前記生成部によって生成された巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行う演算部と、
前記演算部による前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る検査部と、
を備えることを特徴とする通信装置。
(付記2)前記巡回冗長検査変換テーブルは、前記分割データの巡回冗長検査の結果を、前記分割データに前記テイルビットを付したビット列の巡回冗長検査の結果に変換する変換テーブルであり、
前記演算部は、前記分割データの巡回冗長検査の結果を前記巡回冗長検査変換テーブルによって前記ビット列の巡回冗長検査の結果に変換することによって前記巡回冗長検査演算を行い、
前記演算部は、前記分割データ毎の前記ビット列の巡回冗長検査の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
ことを特徴とする付記1に記載の通信装置。
(付記3)前記特定部は、前記データ系列のデータ長に基づいて、前記データ系列における前記分割データより後のデータ長を演算することによって前記テイルビットのデータ長を特定することを特徴とする付記1または2に記載の通信装置。
(付記4)前記生成部は、前記巡回冗長検査の生成多項式に応じた、1個のテイルビットに対応する巡回冗長検査変換テーブルに基づいて、前記特定されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成することを特徴とする付記1〜3のいずれか一つに記載の通信装置。
(付記5)前記1個のテイルビットに対応する巡回冗長検査変換テーブルは、前記生成多項式の各次数における係数を並べたビット列と、前記生成多項式の次数に応じた単位行列と、を含む行列であることを特徴とする付記4に記載の通信装置。
(付記6)前記生成部は、n個(nは2のべき乗)のテイルビットに対応する巡回冗長検査変換テーブルを複数通りのnについて記憶しておき、記憶しておいた巡回冗長検査変換テーブルに基づいて前記特定されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成することを特徴とする付記4または5に記載の通信装置。
(付記7)巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置のコンピュータに、
前記通信装置が伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割し、
前記データ系列のデータ長に基づいて、前記データ系列の分割により得られた分割データに付加されるテイルビットのデータ長を特定し、
特定した前記テイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成し、
生成した前記巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行い、
前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
処理を実行させることを特徴とする巡回冗長検査プログラム。
100 通信装置
101 分割部
102 特定部
103 生成部
104 演算部
105 検査部
110 データ系列
111〜113 分割データ
131〜133 テイルビット
141〜143,520,610〜613,1401,1500,1600,2301,2400 ビット列
200 無線端末装置
210 アンテナ
220 RF部
221 デュプレクサ
222 受信RF部
223 送信RF部
230 通信制御部
231 復調部
232 変調部
240 アプリケーション処理部
250 ユーザインタフェース部
251 表示部
252 操作部
310,330 制御チャネル処理部
311,321 CRC付与部
312 畳込み符号化部
313 レートマッチング部
314,324 スクランブリング部
315,325 変調処理部
316,326 IFFT部
320,340 トランスポートチャネル処理部
322 ターボ符号化部
323 レートマッチング/HARQ部
331,341 FFT部
332,342 復調処理部
333,343 デスクランブリング部
334 デレートマッチング部
335 畳込み復号部
336,346 CRC部
344 デレートマッチング/HARQ部
345 ターボ復号/CRC演算部
410,420,900,1310,1320,1330 演算回路
411 DSP
412 小規模メモリ
413 ターボ復号器群
414〜416 HWアクセラレータ
421 CPU
422 大規模メモリ
501 FFT
502 復調処理
503 ターボ復号/CRC演算処理
511,802 部分CRCコード
512 ビットサイズ
513,823 CRC
514 判定結果
600,804 トランスポートブロック
601,620〜623 CRCコード
801 尤度情報
803 CRC変換行列
810 制御チャネル処理
820 トランスポートチャネル処理
821 ターボ復号/CRC演算
822 CRC変換行列演算
1101〜1103 部分行列
1311,1321,1331 アンド回路
1312,1322,1332 XOR回路
1400,2300 ビット列データ
1601〜1603,1620 データビット列
1700,2200,2500,2700,2800 テーブル
2302 ビット

Claims (5)

  1. 巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置であって、
    伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割する分割部と、
    前記データ系列のデータ長に基づいて、前記分割部により得られた分割データに付加されるテイルビットのデータ長を特定する特定部と、
    前記特定部によって特定されたテイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成する生成部と、
    前記生成部によって生成された巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行う演算部と、
    前記演算部による前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る検査部と、
    を備えることを特徴とする通信装置。
  2. 前記巡回冗長検査変換テーブルは、前記分割データの巡回冗長検査の結果を、前記分割データに前記テイルビットを付したビット列の巡回冗長検査の結果に変換する変換テーブルであり、
    前記演算部は、前記分割データの巡回冗長検査の結果を前記巡回冗長検査変換テーブルによって前記ビット列の巡回冗長検査の結果に変換することによって前記巡回冗長検査演算を行い、
    前記演算部は、前記分割データ毎の前記ビット列の巡回冗長検査の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
    ことを特徴とする請求項1に記載の通信装置。
  3. 前記特定部は、前記データ系列のデータ長に基づいて、前記データ系列における前記分割データより後のデータ長を演算することによって前記テイルビットのデータ長を特定することを特徴とする請求項1または2に記載の通信装置。
  4. 前記生成部は、前記巡回冗長検査の生成多項式に応じた、1個のテイルビットに対応する巡回冗長検査変換テーブルに基づいて、前記特定されたテイルビットのデータ長毎の巡回冗長検査変換テーブルを生成することを特徴とする請求項1〜3のいずれか一つに記載の通信装置。
  5. 巡回冗長検査を用いてデータ系列の誤りを確認できる通信装置のコンピュータに、
    前記通信装置が伝搬経路から受信した可変長のデータ系列を所定の処理単位に分割し、
    前記データ系列のデータ長に基づいて、前記データ系列の分割により得られた分割データに付加されるテイルビットのデータ長を特定し、
    特定した前記テイルビットのデータ長に基づいて前記分割データ単位の巡回冗長検査変換テーブルを生成し、
    生成した前記巡回冗長検査変換テーブルに基づいて前記分割データ毎の巡回冗長検査演算を行い、
    前記分割データ毎の巡回冗長検査演算の結果に基づいて前記データ系列の巡回冗長検査結果を得る、
    処理を実行させることを特徴とする巡回冗長検査プログラム。
JP2014015839A 2014-01-30 2014-01-30 通信装置および巡回冗長検査プログラム Pending JP2015142343A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2014015839A JP2015142343A (ja) 2014-01-30 2014-01-30 通信装置および巡回冗長検査プログラム

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2014015839A JP2015142343A (ja) 2014-01-30 2014-01-30 通信装置および巡回冗長検査プログラム

Publications (1)

Publication Number Publication Date
JP2015142343A true JP2015142343A (ja) 2015-08-03

Family

ID=53772403

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2014015839A Pending JP2015142343A (ja) 2014-01-30 2014-01-30 通信装置および巡回冗長検査プログラム

Country Status (1)

Country Link
JP (1) JP2015142343A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109075799A (zh) * 2016-04-29 2018-12-21 华为技术有限公司 极化Polar码的编译码方法及装置

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109075799A (zh) * 2016-04-29 2018-12-21 华为技术有限公司 极化Polar码的编译码方法及装置
CN109075799B (zh) * 2016-04-29 2024-03-15 华为技术有限公司 极化Polar码的编译码方法及装置

Similar Documents

Publication Publication Date Title
JP6859429B2 (ja) ポーラー符号を使用してデータを符号化するための方法及び装置
CN110915141B (zh) 基于极化码的turbo乘积码
CN108809506B (zh) 一种编码方法及装置
CN110771047B (zh) 具有f功能和g功能的llr域计算的极性解码器
US20200083984A1 (en) Polar code transmission method and apparatus
JPWO2011142133A1 (ja) 誤り訂正符号処理方法及びその装置
CN109314600A (zh) 用于在使用通用极化码时进行速率匹配的系统和方法
CN108809332B (zh) 一种Polar码传输方法及装置
CN109257140B (zh) 一种极化信道可靠度排序的方法、极化码编码方法及装置
EP3602796A1 (en) Polar coding with dynamic frozen bits
JP2018019401A (ja) リード・ソロモン復号器及び復号方法
CN110771046B (zh) 分布式crc极化码
JP2019102950A (ja) 復号装置、復号方法および通信システム
US11063614B1 (en) Polar decoder processor
JP2015142343A (ja) 通信装置および巡回冗長検査プログラム
US10826533B2 (en) Methods, systems, and computer-readable media for decoding a cyclic code
CN111277830B (zh) 一种编码方法、解码方法及装置
US11362679B2 (en) Method and apparatus for generating redundant bits for error detection
US9467174B2 (en) Low complexity high-order syndrome calculator for block codes and method of calculating high-order syndrome
KR100769955B1 (ko) 무선 통신 시스템 수신단의 검파 장치
JP2012169926A (ja) Crc演算回路
JP2012124888A (ja) 復号装置及び復号方法
JPWO2016194623A1 (ja) データ処理装置、およびデータ処理方法
JP2008112522A (ja) 誤り検出装置および誤り検出方法
KR102118605B1 (ko) 블록 코드에 대하여 저복잡도로 고차 신드롬을 계산하는 고차 신드롬 계산기 및 고차 신드롬 계산 방법