(57)【要約】【課題】  回路規模の増加を抑えながら、１つのデータ列の演算に加え、複数のデータ列を演算する。【解決手段】  複数のデータ列を含む第１のデータ列群及び１つのデータ列を複数に分離したデータ列である第２のデータ列群と、データ列群におけるデータ列の処理の単位であるワードの数と、データ列の符号演算に用いる演算部制御信号とを基に、第１のデータ列群の符号及び第２のデータ列群の符号を演算する複数の演算手段と、データ列群のワードの番号と、演算手段における符号演算のモードを選択するモード選択信号とを基に、演算部制御信号を算出する制御手段と、第２のデータ列群の複数の符号を合計する合計手段とを含む【選択図】  図１
2016025498.tif 000002
【特許請求の範囲】
【請求項１】
複数のデータ列を含む第１のデータ列群及び１つのデータ列を複数に分離したデータ列である第２のデータ列群と、前記データ列群におけるデータ列の処理の単位であるワードの数と、前記データ列の符号演算に用いる演算部制御信号とを基に、前記第１のデータ列群の符号及び前記第２のデータ列群の符号を演算する複数の演算手段と、
前記データ列群のワードの番号と、前記演算手段における符号演算のモードを選択するモード選択信号とを基に、前記演算部制御信号を算出する制御手段と、
前記第２のデータ列群の複数の符号を合計する合計手段と
を含む情報処理装置。
【請求項２】
前記制御手段が、
前記演算手段において前記第１のデータ列群を演算する第１の演算モードの場合、
前記第１のデータ列群の各データ列のワード番号を第１の演算モード用の前記演算部制御信号として出力し、
前記演算手段において、前記第２のデータ列群を演算する第２の演算モードの場合、
前記第２のデータ列群の中で最も小さいワード番号と前記演算手段の数を掛け合わせた値に、前記各演算手段に設定された番号を加えた値を第２の演算モード用の前記演算部制御信号として出力する
請求項１に記載の情報処理装置。
【請求項３】
前記制御手段が、
前記第２演算モード用の前記演算部制御信号を演算するワード番号演算手段と、
前記モード選択信号を基に前記第１のデータ列群のワード番号と前記ワード番号演算手段が演算した前記演算部制御手段信号とのいずれか１を選択して前記演算手段の前記演算部制御信号として出力する番号選択手段とを含む
請求項１又は２に記載の情報処理装置。
【請求項４】
前記演算手段が、
第１の部分演算結果として、前記データ列のワード毎の符号演算を実行する部分符号演算手段と、
第２の部分演算結果として、前記第１の部分演算結果を、前記演算手段で演算する符号における符号化多項式の係数に沿って符号演算を実行する行列演算手段と、
前記第２の部分演算結果を合計する合計手段と
を含む請求項１ないし３のいずれか１項に記載の情報処理装置。
【請求項５】
前記部分演算手段が、
前記データ列のワードに符号演算の遷移行列を乗算する１つ又は複数の乗算手段を含む
請求項４に記載の情報処理装置。
【請求項６】
前記行列演算手段が、
前記部分演算手段の出力に符号演算の遷移行列を乗算する乗算手段と、
前記ワード数と、前記演算部制御信号とを基に前記乗算手段の結果を選択するか否かを示す演算結果選択信号を生成する減算手段と、
前記演算結果選択信号を基に、１つ前の選択手段の出力と前記乗算手段の出力とのいずれか１つを選択して出力する選択手段と
を含む請求項４又は５に記載の情報処理装置。
【請求項７】
前記符号演算がＣＲＣ演算である
請求項１ないし６のいずれか１項に記載の情報処理装置。
【請求項８】
複数のデータ列を含む第１のデータ列群及び１つのデータ列を複数に分離したデータ列である第２のデータ列群と、前記データ列群におけるデータ列の処理の単位であるワードの数と、前記データ列の符号演算に用いる演算部制御信号とを基に、前記第１のデータ列群の符号及び前記第２のデータ列群の符号を演算し、
前記データ列群のワードの番号と、前記符号演算のモードを選択するモード選択信号とを基に、前記演算部制御信号を算出し、
前記第２のデータ列群の符号を合計する
情報処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報の処理に関し、特に、符号を生成する情報処理装置、及び、情報処理方法に関する。
【背景技術】
【０００２】
情報処理装置において、各種のデータの符号化が、実行されている。例えば、符号を用いる処理の１つに、巡回冗長検査（ＣＲＣ：Cyclic Redundancy Check）がある。
【０００３】
ＣＲＣとは、任意長のデータ列に対して、固定長の除数で割った剰余を検査符号として利用する、誤り検出の一種である。検査に用いる固定長の除数は、「生成多項式」と呼ばれる。また、剰余値は、「ＣＲＣ符号」と呼ばれる。ＣＲＣは、ハードウェアでの実装が容易である。そのため、ＣＲＣは、データの記録及び転送における誤り検出として、広く用いられている。
【０００４】
ＣＲＣを使った誤り検出について、データの送信を例に用いて説明する。
【０００５】
データの送信装置は、Ｍ（Ｍは正整数（positive Integer））ビットのデータをＮ（Ｎは正整数）次の生成多項式で割り、剰余を算出する。この剰余が、ＣＲＣ符号である。送信装置は、Ｍビットのデータに、ＮビットのＣＲＣ符号を加え、データとＣＲＣ符号の加算データである「（Ｍ＋Ｎ）ビットのデータ」を、受信装置に送信する。
【０００６】
受信装置は、受信した（Ｍ＋Ｎ）ビットのデータを、送信装置が用いたのと同じ生成多項式で割り、ＮビットのＣＲＣ符号を算出する。受信装置が算出したＣＲＣ符号が「０」の場合、受信装置は、受信したデータを、送信されたデータと同じであると判定する。一方、受信装置が算出したＣＲＣ符号が「０」でない場合、受信装置は、受信したデータを、送信されたデータと異なる、つまり、受信したデータが誤りを含むと判定する。このように、受信装置は、ＣＲＣ符号を用いて、受信したデータの誤りを検出できる。
【０００７】
ＣＲＣ符号は、巡回符号である。そのため、ＣＲＣ符号の演算は、シフトレジスタと排他的論理和（ＸＯＲ：Exclusive OR）とを用いた巡回フィードバックシフトレジスタで構成された演算器を用いて実現できる。このような簡単な構成の演算器は、データ列を、１ビットずつ処理して、ＣＲＣ符号を算出する。
【０００８】
さらに、ＣＲＣ符号の演算は、データ列を複数のビットに並列に展開して処理することができる。そして、データ列を並列に展開した処理は、ＣＲＣ符号の演算の演算速度を向上できる（例えば、特許文献１及び非特許文献１を参照）。
【０００９】
図面を参照して、本発明に関連する特許文献１及び非特許文献１に記載の技術を説明する。
【００１０】
図１３は、特許文献１に記載されているＣＲＣ演算回路９１０の概要を示すブロック図である。
【００１１】
図１３に示すＣＲＣ演算回路９１０は、３２次の生成多項式のＣＲＣ演算回路である。ただし、生成多項式の次数は、一例である。
【００１２】
ＣＲＣ演算回路９１０は、部分演算部９１１と、部分演算部９１２と、部分演算部９１３とを含む。
【００１３】
ＣＲＣ演算回路９１０は、データ列９１４を複数のワードに分ける。そして、部分演算部９１１及び部分演算部９１２は、データ列９１４の偶数番目のワード（偶数ワード）と奇数番目のワード（奇数ワード）とを並列に処理し、２つのＣＲＣ符号９１５を演算する。つまり、部分演算部９１１は、データ列９１４の偶数ワードのデータ列９１４−１を基に、データ列９１４の偶数ワードのＣＲＣ符号９１５−１を算出する。同様に、部分演算部９１２は、データ列９１４の奇数ワードのデータ列９１４−２を基に、データ列９１４の奇数ワードのＣＲＣ符号９１５−２を算出する。
【００１４】
部分演算部９１３は、データ列９１４の偶数ワードのＣＲＣ符号９１５−１と、データ列９１４の奇数ワードのＣＲＣ符号９１５−２とを用いて、データ列９１４のＣＲＣ符号９１６を算出する。
【００１５】
このように、特許文献１に記載の技術は、複数の演算部を用いて、複数のワードを並列的に演算する。特許文献１に記載の技術は、この構成を基に、ＣＲＣ演算を高速化する。
【００１６】
図１４は、非特許文献１に記載されているＣＲＣ演算回路９２０の概要を示すブロック図である。図１４においても、一例として、生成多項式の次数は、３２次である。
【００１７】
図１４に示すＣＲＣ演算回路９２０は、部分演算部９２１と、行列演算部９２２と、合計部９２３とを含む。ここで、ＣＲＣ演算回路９２０は、複数の行列演算部９２２を含む。
【００１８】
ここで、以下の説明に用いる変数について説明する。
【００１９】
「Ｑ」は、行列演算部９２２の数である。ただし、Ｑは、正整数である。
【００２０】
「ｑ」は、個別の行列演算部９２２の番号を示す変数である。
【００２１】
「ｋ」は、データ列のワードの番号（ワード番号）である。
【００２２】
「Ｗｋ（ｘ）」は、ｋ番目のワードのデータ列である。
【００２３】
「Ｒ（ｘ）」は、ＣＲＣ符号である。
【００２４】
「Ｒｋ（ｘ）」は、データ列Ｗｋ（ｘ）を基に算出したＣＲＣ符号である。
【００２５】
「Ｔ」は、ＣＲＣ演算に用いられる遷移行列である。
【００２６】
「Ｅ」は、単位行列である。
【００２７】
「ｕｑ−１」は、ｑ番目の行列演算部９２２に対する演算の選択信号である。行列演算部９２２は、ｕが１の場合、遷移行列Ｔを用い、ｕが０の場合、単位行列Ｅを用いる。
【００２８】
また、以下の説明において、複数の同じ構成の符号は、次のように付した。行列演算部９２２を参照して説明する。行列演算部９２２に共通した内容を説明する場合、符号として「行列演算部９２２」を用いる。また、個別の行列演算部９２２を説明する場合、符号として、「行列演算部９２２−１」ないし「行列演算部９２２−Ｑ」を用いる。
【００２９】
次に、非特許文献１のＣＲＣ演算回路９２０の動作について説明する。
【００３０】
部分演算部９２１は、データ列９２４の各ワードのデータ列に対するＣＲＣ符号の演算の結果（部分演算結果９２５）を出力する。つまり、データ列の部分演算部９２１は、データ列９２４のｋ番目のワードのデータ列Ｗｋ（ｘ）に対するＣＲＣ符号Ｒｋ（ｘ）の演算の結果（部分演算結果９２５）を出力する。
【００３１】
第１の行列演算部９２２−１は、部分演算部９２１が出力した部分演算結果９２５（ＣＲＣ符号Ｒ１（ｘ））に対して、ｕ０＝１のときは遷移行列Ｔを乗じ、ｕ０＝０のときは単位行列Ｅを乗じる。そして、行列演算部９２２−１は、部分演算結果９２６−１を、第２の行列演算部９２２−２に出力する。
【００３２】
第２の行列演算部９２２−２は、受信した部分演算結果９２６−１に対し、ｕ１＝１のときは遷移行列Ｔの二乗（２（２−１）乗）を乗じ、ｕ１＝０のときは単位行列Ｅを乗じる。そして、第２の行列演算部９２２−２は、部分演算結果９２６−２を、第３の行列演算部９２２−３に出力する。
【００３３】
このように、ｑ番目の行列演算部９２２−ｑは、１つ前の行列演算部９２２−（ｑ−１）の部分演算結果９２６−（ｑ−１）を受信し、遷移行列Ｔの２（ｑ−１）乗又は単位行列Ｅを乗じて部分演算結果９２６を算出する。
【００３４】
そして、最後の行列演算部９２２−Ｑは、部分演算結果９２６−Ｑを行列演算部９２２に出力する。
【００３５】
合計部９２３は、第Ｑの部分演算結果９２６−Ｑを受信し、ＣＲＣ符号９２７（Ｒ（ｘ））として出力する。
【先行技術文献】
【特許文献】
【００３６】
【特許文献１】特開平８−３３０９７６号公報
【非特許文献】
【００３７】
【非特許文献１】M. Walma, "Pipelined Cyclic Redundancy Check（CRC）Calculation", Proceedings of 16th International Conference on Computer Communications and Networks，pp.365-370，Aug. 2007
【発明の概要】
【発明が解決しようとする課題】
【００３８】
例えば、双方向通信の場合、送信データ列の符号化演算と受信データ列の符号化演算とを、並列に処理できることが望ましい。これは、並列処理が、双方向通信における通信時間の削減、及び、データバッファの削減などを実現できるためである。
【００３９】
このように、符号を演算する情報処理装置は、１つのデータ列の符号を演算するだけではなく、複数のデータ列の符号を演算できることが望ましい。つまり、符号を演算する情報処理装置は、複数の用途の符号演算に使えることが望ましい。
【００４０】
ここで、上記のとおり、特許文献１及び非特許文献１に記載されたＣＲＣ演算回路は、１つのデータ列の符号を、高速に演算する。しかし、特許文献１及び非特許文献１に記載されたＣＲＣ演算回路は、複数のデータ列の符号を、同時に演算できない。
【００４１】
例えば、図１３に示す特許文献１に記載のＣＲＣ演算回路９１０は、複数の演算部を並列的に使用して、符号の演算を高速化する。しかし、図１３に示すＣＲＣ演算回路９１０は、複数の演算部（演算部９１１及び演算部９１２）を、異なるデータ列の符号化の演算に使用できない。つまり、図１３に示すＣＲＣ演算回路９１０は、複数のデータ列を同時に演算できない。
【００４２】
また、図１４に示す非特許文献１に記載のＣＲＣ演算回路９２０は、演算器が並列化されていない。そのため、図１４に示すＣＲＣ演算回路９２０は、複数のデータ列を同時に演算できない。
【００４３】
このような特許文献１及び非特許文献１に記載の技術は、同時に演算が必要な複数のデータ列に対応するためには、演算するデータ列の数に対応した数の演算回路が必要となる。そのため、特許文献１及び非特許文献１に記載の技術を用いて複数のデータ列に対応するためには、複数の回路のための設計及び製造のコストが、必要である。
【００４４】
さらに、複数の特許文献１及び非特許文献１に記載の技術の回路を用いる場合、複数のデータ列を複数の回路の使い分けのために、データの順番を調整するためのバッファ又は複数の回路に複数のデータ列を振り分けるための回路が必要となる。
【００４５】
このように、特許文献１及び非特許文献１に記載の技術は、複数のデータ列を符号化する（複数の用途に対応する）ためには、符号化するデータ列の数に対応して回路規模が増加するという問題点があった。
【００４６】
本発明の目的は、上記問題点を解決し、回路規模の増加を抑えながら、１つのデータ列の演算に加え、複数のデータ列の符号を演算できる情報処理装置、及び、情報処理方法を提供することにある。
【課題を解決するための手段】
【００４７】
本発明の一形態のおける情報処理装置は、複数のデータ列を含む第１のデータ列群及び１つのデータ列を複数に分離したデータ列である第２のデータ列群と、データ列群におけるデータ列の処理の単位であるワードの数と、データ列の符号演算に用いる演算部制御信号とを基に、第１のデータ列群の符号及び第２のデータ列群の符号を演算する複数の演算手段と、データ列群のワードの番号と、演算手段における符号演算のモードを選択するモード選択信号とを基に、演算部制御信号を算出する制御手段と、第２のデータ列群の複数の符号を合計する合計手段とを含む。
【００４８】
本発明の一形態のおける情報処理方法は、複数のデータ列を含む第１のデータ列群及び１つのデータ列を複数に分離したデータ列である第２のデータ列群と、データ列群におけるデータ列の処理の単位であるワードの数と、データ列の符号演算に用いる演算部制御信号とを基に、第１のデータ列群の符号及び第２のデータ列群の符号を演算し、データ列群のワードの番号と、符号演算のモードを選択するモード選択信号とを基に、演算部制御信号を算出し、第２のデータ列群の符号を合計する。
【発明の効果】
【００４９】
本発明に基づけば、回路規模の増加を抑えながら、１つのデータ列の演算に加え、複数のデータ列の符号を演算できるとの効果を提供できる。
【図面の簡単な説明】
【００５０】
【図１】図１は、本発明における第１の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図２】図２は、第１の実施形態に係る制御部の構成の一例を示すブロック図である。
【図３】図３は、第１の実施形態に係る演算部の構成の一例を示すブロック図である。
【図４】図４は、第２の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図５】図５は、第２の実施形態に係る制御部の構成の一例を示すブロックである。
【図６】図６は、第２の実施形態に係る部分符号演算部の構成の一例を示すブロック図である。
【図７】図７は、第２の実施形態に係る行列演算部の構成の一例を示すブロック図である。
【図８】図８は、第２の実施形態に係る合計部の構成の一例を示すブロック図である。
【図９】図９は、第２の実施形態に係る合計部の構成の一例を示すブロック図である。
【図１０】図１０は、第３の実施形態に係る情報処理装置の構成の一例を示すブロック図である。
【図１１】図１１は、第３の実施形態例に係る部分符号演算部の構成の一例を示すブロック図である。
【図１２】図１２は、第３の実施形態に係る行列演算部の構成の一例を示すブロック図である。
【図１３】図１３は、本発明に関連するＣＲＣ演算回路の概要を示すブロック図である。
【図１４】図１４は、本発明に関連するＣＲＣ演算回路の概要を示すブロック図である。
【発明を実施するための形態】
【００５１】
次に、本発明における実施形態について図面を参照して説明する。
【００５２】
なお、各図面は、本発明の実施形態を説明するものである。ただし、本発明は、各図面の記載に限られるわけではない。また、各図面の同様の構成には、同じ番号を付し、その繰り返しの説明を、省略する場合がある。
【００５３】
また、以下の実施形態の説明において、複数の同様の構成の符号は、次のように用いる。すなわち、複数の構成に共通する内容を説明する場合、構成の符号をそのまま用いる。一方、個別の構成の説明する場合、構成の符号に個別の番号を付して用いる。
【００５４】
例えば、後ほど説明する「演算部１６」を用いて説明すると次のとおりである。
【００５５】
演算部１６に共通する説明では、符号は、「１６」を用いた。一方、個別の演算部１６の説明では、符号は、番号ｉを付した「１６−ｉ（ｉ＝１，２，…，Ｉ）」を用いた。Ｉは、演算部１６の総数である。他の符号についても同様とする。
【００５６】
また、以下の説明に用いる図面において、本発明の説明に関係しない部分の構成については、記載を省略し、図示しない場合もある。
【００５７】
また、実施形態において演算処理の対象となる符号演算は、データ列を分割して並列に処理できる符号演算であれば特に制限はない。例えば、各実施形態の符号演算は、ＣＲＣ符号の演算でもよく、無線通信に用いられている拡散符号の演算でもよい。以下では、一例として、ＣＲＣ符号の演算を用いて、各実施形態を説明する。
【００５８】
［ＣＲＣ演算の並列処理］
既に説明したとおり、ＣＲＣ符号の演算（ＣＲＣ演算）は、データ列を複数のビット（以下、「ワード」と呼ぶ）に並列に展開して演算することができる。そして、ＣＲＣ符号の演算は、並列に展開した処理を用いると、演算速度を向上できる。
【００５９】
まず、このようなＣＲＣ演算の並列処理について説明する。
【００６０】
説明の前に、以下の説明の前提から説明する。
【００６１】
「ｘ」は、データ列を表す情報多項式及びＣＲＣ演算の生成多項式を表す関数の変数である。
【００６２】
Ａ（ｘ）は、符号化の対象のデータ列を表す情報多項式である。情報多項式Ａ（ｘ）のビット数は、「Ｍ」である。
【００６３】
Ｇ（ｘ）は、Ｎ次のＣＲＣ生成多項式である。Ｇ（ｘ）の次数は、「Ｎ」である。
【００６４】
Ｙ（ｘ）は、Ａ（ｘ）をＧ（ｘ）で除算したときの商である。また、Ｒ（ｘ）は、Ａ（ｘ）をＧ（ｘ）で除算した時の剰余である。つまり、Ｒ（ｘ）は、ＣＲＣ符号である。
【００６５】
Ｆ（ｘ）は、Ｍビットのデータ列Ａ（ｘ）に、ＮビットのＣＲＣ符号（Ｒ（ｘ））を付加した生成した情報多項式である。例えば、Ｆ（ｘ）は、送信装置が、受信装置に送信するデータ列である。Ｆ（ｘ）は、次に示す数式１で表される。
【００６６】
［数式１］
2016025498.tif 000003
【００６７】
また、以下の説明において、「ｎ」は、データの１ワードのビット数（ただし、ｎは正整数）である。「ｍ」は、データ列Ａ（ｘ）のワード数（Ｍ＝ｍ×ｎ）である。ただし、説明の便宜のため、ＣＲＣの生成多項式の次数（Ｎ）とワードのビット数（ｎ）とは、同じ（ｎ＝Ｎ）とする。
【００６８】
Ｗ（ｘ）は、ワードのデータ列である。「ｋ」は、ワードの番号である。つまり、Ｗｋ（ｘ）は、「ｋ番目」のワードのデータ列である。さらに、「ｗｋ，ｐ」は、ｋ番目のワード（Ｗｋ（ｘ））のｐ番目のビットのデータである。上記の変数を用いると、ｋ番目のワードのデータ列（Ｗｋ（ｘ））は、次に示す数式２で表される。
【００６９】
［数式２］
2016025498.tif 000004
【００７０】
また、ｋ番目のワード（Ｗｋ）は、ベクトルで表現を用いると、数式３で表される。数式３のベクトルの括弧の上付きＴは、転置を表す。また、数式３は、ベクトル表現のため、ワード（Ｗｋ）の変数（ｘ）を表示していない。
【００７１】
［数式３］
2016025498.tif 000005
【００７２】
「ＣＲＣ（データ列）」は、データ列のＣＲＣ符号を演算する関数である。例えば、データ列Ａ（ｘ）のＣＲＣ符号Ｒ（ｘ）は、次に示す数式４で表される。
【００７３】
［数式４］
2016025498.tif 000006
【００７４】
また、ｋ番目のワード（Ｗｋ（ｘ））をＣＲＣ生成多項式（Ｇ（ｘ））で割った剰余、つまり、ｋ番目のワードのＣＲＣ符号（Ｒｋ（ｘ））は、次に示す数式５で表される。
【００７５】
［数式５］
2016025498.tif 000007
【００７６】
数式５において、ｒｋ，ｐは、ＣＲＣ符号Ｒｋ（ｘ）のｐ番目のビットのデータである。
【００７７】
Ｒ（ｘ）は、ベクトル表現を用いると、数式６で表される。
【００７８】
［数式６］
2016025498.tif 000008
【００７９】
ＴＳは、ＣＲＣ演算を巡回シフトレジスタで構成した場合のシフト１回分の状態遷移を示す行列（遷移行列）である。例えば、ＣＲＣ生成多項式Ｇ（ｘ）として、１６次数の式「ｘ１６＋ｘ１２＋ｘ５＋１」を用いた場合、遷移行列ＴＳ１６は、次の数式７に示す１６×１６の行列である。
【００８０】
［数式７］
2016025498.tif 000009
【００８１】
なお、変数の添え字の添え字、例えば、データ列「ＴＳ１６」における「Ｓ１６」の「１６」は、添え字「Ｓ」の添え字のため、数式中では、「Ｓ」より小さな文字を用いて表されている。しかし、明細書の文章中において、添え字の添え字を、添え字より小さな文字で記載すると、記載が不鮮明となる。そのため、「添え字」及び「添え字の添え字」は、明細書中において、同じ大きさの文字を用いて表す。この添え字の記載方法は、下付の添え字に限らず、上付きの添え字も同様とする。
【００８２】
なお、数式７に示す遷移行列「ＴＳ１６」は、遷移行列「ＴＳ」一例である。そのため、本発明の実施形態の遷移行列は、「ＴＳ１６」に限定されるわけではない。
【００８３】
ベクトル表現を用いる場合、ｋ番目のワードのＣＲＣ符号（Ｒｋ）とワード（Ｗｋ）との関係は、遷移行列（ＴＳ）を用いて、次に示す数式８である。
【００８４】
［数式８］
2016025498.tif 000010
【００８５】
したがって、ＣＲＣ符号（Ｒｋ）は、並列展開した１ワードのデータ列（Ｗｋ）に対して、遷移行列ＴＳのＮ乗であるＴＳＮの行列を乗じて算出できる。
【００８６】
また、データ列Ａ（ｘ）は、ワードを用いて表すと、次に示す数式９となる。
【００８７】
［数式９］
2016025498.tif 000011
【００８８】
したがって、データ列Ａ（ｘ）のＣＲＣ符号のベクトルである列ベクトルＲは、遷移行列ＴＳを用いると、次に示す数式１０となる。
【００８９】
［数式１０］
2016025498.tif 000012
【００９０】
すなわち、データ列Ａ（ｘ）のＣＲＣ符号Ｒ（ｘ）の列ベクトルＲは、データ列Ａ（ｘ）のワード単位のデータ列Ｗｋ（ｘ）の列ベクトルＷｋに、遷移行列ＴSＮ×（ｍ−ｋ）を乗じた結果の合計（０ワードから（ｍ−１）ワードまでの合計）である。ここまで説明した演算を用いる方法は、背景技術で説明した巡回フィードバックシフトレジスタを用いる演算（１ビットずつ処理する演算）を、Ｎビットに並列展開できる。そのため、この演算を用いる方法は、ＣＲＣ符号の算出を高速化できる。
【００９１】
［発明の概要の説明］
次に、本発明の実施形態の情報処理装置の概要について説明する。
【００９２】
まず、概要の説明の用いる変数などの前提から説明する。
【００９３】
なお、本発明の実施形態の情報処理装置は、１つのデータ列を並列に処理する演算と、複数のデータ列を並列に処理する演算とを実施する。ここで、複数のデータ列の数は、特に制限はない。
【００９４】
ただし、以下では、例示として、２つのデータ列の場合を用いて説明する。そのため、本発明の実施形態の情報処理装置は、データを符号化する２つの演算部を含む。さらに、情報処理装置は、２つの演算部の演算結果を合計する合計部を含む。さらに、情報処理装置は、２つの演算部の演算を制御する制御部を含む。
【００９５】
データ列Ａ（ｘ）及びデータ列Ｂ（ｘ）は、並列に、ＣＲＣ演算が処理される２つのデータ列である。また、データ列Ｃ（ｘ）は、複数のデータ列に分割され、各データ列が並列に、ＣＲＣ演算が処理される１つのデータ列である。データ列Ａ（ｘ）、データ列Ｂ（ｘ）及びデータ列Ｃ（ｘ）は、全て、同じＮ次の生成多項式でＣＲＣ演算を処理されるとする。
【００９６】
また、演算式「Ｒ（ｍ，ｋ，Ｗｋ（ｘ））」は、データ列のｋ番目のワードのデータ列（Ｗｋ（ｘ））のＣＲＣ符号「ＣＲＣ（Ｗｋ（ｘ））」の、ワード総数ｍにおける最終的な演算結果である。演算式「Ｒ（ｍ，ｋ，Ｗｋ（ｘ））」は、遷移行列ＴＳを用いると、次に示す数式１１となる。
【００９７】
［数式１１］
2016025498.tif 000013
【００９８】
本実施形態の２つの演算部は、それぞれ、上記の演算式「Ｒ（ｍ，ｋ，Ｗｋ（ｘ））」を演算する。
【００９９】
（第１の演算モード）
まず、２つの演算部が、２つのデータ列（データ列Ａ（ｘ）とデータ列Ｂ（ｘ））を演算する場合について説明する。
【０１００】
以下の説明において、各データ列の変数を区別する場合には、各データ列を示す小文字を付ける。例えば、「ｍａ」は、データ列Ａ（ｘ）のワード総数である。「ｍｂ」が、データ列Ｂ（ｘ）のワード総数である。また、「ｋａ」は、データ列Ａ（ｘ）のワード番号である。「ｋｂ」は、データ列Ｂ（ｘ）のワード番号である。
【０１０１】
また、「ａｋａ（ｘ）」は、データ列Ａ（ｘ）のｋａ番目の１ワードのデータ列である。同様に、「ｂｋｂ（ｘ）」は、データ列Ｂ（ｘ）のｋｂ番目の１ワードのデータ列である。
【０１０２】
このとき、データ列Ａ（ｘ）のＣＲＣ符号「ＣＲＣ（Ａ（ｘ））」と、データ列Ｂ（ｘ）のＣＲＣ符号「ＣＲＣ（Ｂ（ｘ））」とは、上記の数式１１の「Ｒ（ｍ，ｋ，Ｗｋ（ｘ））」を用いると、次に示す数式１２のように表される。
【０１０３】
［数式１２］
2016025498.tif 000014
【０１０４】
そして、２つの演算部のいずれかの演算部が、データ列Ａ（ｘ）のワード数ｍａと、１ワードのデータ列ａｋａ（ｘ）と、そのワード番号ｋａとを受信する。そして、その演算部が、演算結果Ｒ（ｍａ，ｋａ，ａｋａ（ｘ））を、全てのワード（ｋａ＝０からｋａ＝ｍａ−１）について合計し、ＣＲＣ（Ａ（ｘ））を算出する。
【０１０５】
また、並行して、他の演算部が、データ列Ｂ（ｘ）のワード数ｍｂと、１ワードのデータ列ｂｋｂ（ｘ）と、そのワード番号ｋｂとを受信する。そして、その演算部が、演算結果Ｒ（ｍｂ，ｋｂ，ｂｋｂ（ｘ））を、全てのワード（ｋｂ＝０からｋｂ＝ｍｂ−１）について合計し、ＣＲＣ（Ｂ（ｘ））を算出する。
【０１０６】
（第２の演算モード）
次に、２つの演算部が、１つのデータ列Ｃ（ｘ）を並列的に演算する場合について説明する。
【０１０７】
「ｃｋｃ（ｘ）」は、データ列Ｃ（ｘ）のｋｃ番目の１ワードのデータ列である。「ｍｃ」は、データ列Ｃ（ｘ）のワード総数である。「ｋｃ」は、データ列Ｃ（ｘ）のワード番号である。ただし、データ列Ｃ（ｘ）の中の偶数番のワードと奇数番のワードとが、並列に演算される。そのため、偶数と奇数とを区別するために、変数「ｌｃ」を導入する。「ｌｃ」は、ワード番号ｋｃが偶数のときに、「２×ｌｃ＝ｋｃ」を満たす整数である。
【０１０８】
このとき、データ列Ｃ（ｘ）のＣＲＣ符号「ＣＲＣ（Ｃ（ｘ））」は、上記の数式１１の「Ｒ（ｍ，ｋ，Ｗｋ（ｘ））」を用いると、次に示す数式１３のように表される。
【０１０９】
［数式１３］
2016025498.tif 000015
【０１１０】
２つの演算部のうちのいずれかの演算部が、データ列Ｃ（ｘ）のワード数ｍｃと、１ワードのデータ列ｃｋｃ（ｘ）の偶数番目のデータ列ｃ（２×ｌｃ）（ｘ）と、そのワード番号（２×ｌｃ）とを受信する。そして、その演算部は、その演算結果Ｒ（ｍｃ，（２×ｋｃ），ｃ（２×ｋｃ）（ｘ））を、全てのワード（ｋｃ＝０からｋｃ＝（ｍｃ／２）−１）について合計し、合計結果ＣＲＣ（Ｃｅｖｅｎ（ｘ））を算出する。
【０１１１】
また、並行して、他の演算部が、データ列Ｃ（ｘ）のワード数ｍｃと、１ワードのデータ列ｃｋｃ（ｘ）の奇数番目のデータ列ｃ（２×ｋｃ＋１）（ｘ）と、そのワード番号（２×ｋｃ＋１）とを受信する。そして、その演算部が、その演算結果Ｒ（ｍｃ，（２×ｋｃ＋１），ｃ（２×ｋｃ＋１）（ｘ））を、全てのワード（ｋｃ＝０からｋｃ＝（ｍｃ／２）−１）について合計し、合計結果ＣＲＣ（Ｃｏｄｄ（ｘ））を算出する。
【０１１２】
そして、合計部が、ＣＲＣ（Ｃｅｖｅｎ（ｘ））とＣＲＣ（Ｃｏｄｄ（ｘ））とを加算し、データ列Ｃ（ｘ）のＣＲＣ符号「ＣＲＣ（Ｃ（ｘ））」を算出する。
【０１１３】
このとき、２つの演算部は、ＣＲＣ（Ｃｅｖｅｎ（ｘ））の演算とＣＲＣ（Ｃｏｄｄ（ｘ））の演算を並列的に演算する。そのため、本発明の実施形態の情報処理装置は、演算部が１つの場合に比べ、データ列を２倍の演算速度で処理できる。
【０１１４】
（演算モードのまとめ）
上記のように、演算部は、第１の演算モード用のワード番号（ｋａ及びｋｂ）と、第２の演算モード用のワード番号（２×ｌｃ及び２×ｌｃ＋１）を用いる。そこで、本発明の実施形態の制御部は、演算モードを基に、制御部で用いるワード番号を生成又は選択し、演算部に送信する。
【０１１５】
（演算部が２つより多い場合）
なお、本発明の実施形態の情報処理装置は、演算部を２つより多く含んでもよい。そこで、演算部が２つより多い場合について説明する。演算部が２つより多い場合でも、本発明の実施形態の情報処理装置の各部は、上記の説明と同様に動作すればよい。ただし、各演算部は、計算に、数式８及び数式９に替えて、演算部の数に対応した式を用いる。
【０１１６】
例えば、演算部が３つの場合、演算部は、第１の演算モードにおいて、次に示す数式１４を用いる。数式１４における３つのデータ列は、データ列Ａ（ｘ）、データ列Ｂ（ｘ）、データ列Ｄ（ｘ）である。
【０１１７】
［数式１４］
2016025498.tif 000016
【０１１８】
このように、演算部が３つより多い場合でも、演算部は、各データ列に対応した演算を実行すればよい。
【０１１９】
また、演算部が３つの場合、演算部は、第２のモードにおいて、次に示す数式１５を用いる。
【０１２０】
［数式１５］
2016025498.tif 000017
【０１２１】
数式１１におけるＣ［＊，３］（ｘ）の「＊」は、データ列Ｃ（ｘ）のデータ番号（ｋｃ）を３で割った余りである。例えば、Ｃ［１，３］（ｘ）は、データ番号（ｋｃ）を３で割った余りが１となるデータ列を表す。
【０１２２】
演算部が３より多い場合、演算部は、数式１５における［＊，３］の「３」を演算部の数に変更する、つまり、演算部は、演算部の数で割った余りに対応する計算式を用いればよい。
【０１２３】
（効果）
本発明の実施形態は、回路規模の増加を抑えながら、１つのデータ列の高速演算に加え、複数データ列の並列演算が実行できるとの効果を実現できる。つまり、本発明の実施形態は、少ない回路規模で複数の用途に対応するとの効果を実現できる。
【０１２４】
その理由は、次のとおりである。
【０１２５】
本発明の実施形態の制御部は、複数の演算部に入力するワード番号を変更できる。そのため、本実施形態の複数の演算部は、次に示す２種類の演算モードを実現できる。
【０１２６】
（１）第１の演算モード：複数のデータ列のＣＲＣ演算の並列実行
（２）第２の演算モード：１つのデータ列を複数のデータ列に分けたＣＲＣ演算の並列実行
そのため、本発明の実施形態は、複数のデータ列を演算するための追加の回路と必要としない。つまり、本発明の実施形態は、符号演算のための回路規模を削減しながら、１つのデータ列の演算に加え、複数のデータ列を演算できるためである。
【０１２７】
＜第１の実施形態＞
［構成の説明］
次に、本発明における第１の実施形態について図面を参照して説明する。
【０１２８】
図１は、本発明における第１の実施形態に係る情報処理装置１０の構成の一例を示すブロック図である。
【０１２９】
情報処理装置１０は、データ列１０１と、ワード数１０２と、ワード番号１０３と、モード選択信号１０４とを受信する。
【０１３０】
データ列１０１は、情報処理装置１０が符号を演算するデータ列である。データ列１０１は、並行して処理される複数のデータ列でもよい。あるいは、データ列１０１は、１つのデータ列を複数のデータ列に分けたデータ列でもよい。
【０１３１】
ワード数１０２は、符号処理されるデータ列１０１のワード数を示す情報又は信号である。
【０１３２】
ワード番号１０３は、データ列１０１におけるワードの番号を示す情報又は信号である。
【０１３３】
モード選択信号１０４は、複数のデータ列１０１を演算するモード（第１の演算モード又は複数モード）と、１つのデータ列１０１を演算するモード（第２の演算モード又は単一モード）とを切り替える（選択する）情報又は信号である。
【０１３４】
そして、情報処理装置１０は、これらの情報（信号）を基に、第１の演算結果１０６と、第２の演算結果１０７とを出力する。
【０１３５】
演算結果１０６は、複数のデータ列１０１に対応する演算結果である。
【０１３６】
演算結果１０７は、１つのデータ列１０１に対応する演算結果である。
【０１３７】
上記の機能を実現するため、情報処理装置１０は、制御部１５と、演算部１６と、合計部１７とを含む。ただし、図１に示すように、情報処理装置１０は、複数の演算部１６を含む。以下、演算部１６の総数は、Ｉ（Ｉは、正整数）とする。また、任意の個別の演算部１６を示す変数は、ｉ（１≦ｉ≦Ｉ）を用いる。
【０１３８】
制御部１５は、ワード番号１０３とモード選択信号１０４とを基に、演算部１６の符号の演算（処理）に用いられる演算部制御信号１０５を出力する。
【０１３９】
演算部１６は、データ列１０１と、ワード数１０２と、演算部制御信号１０５とを基に、データ列１０１の符号の演算し、演算結果である演算結果１０６を出力する。
【０１４０】
合計部１７は、演算部１６から演算結果１０６を受信し、演算結果１０７を出力する。
【０１４１】
次に、情報処理装置１０の各構成について、図面を参照してさらに説明する。
【０１４２】
まず、制御部１５について図面を参照して説明する。
【０１４３】
図２は、本実施形態に係る制御部１５の構成の一例を示すブロック図である。
【０１４４】
制御部１５は、ワード番号１０３と、モード選択信号１０４とを基に、演算部制御信号１０５を生成する。そのため、制御部１５は、ワード番号演算部２０と制御信号選択部２１とを含む。
【０１４５】
ワード番号演算部２０は、第２の演算モードにおいて、演算部１６で用いられる信号の１つである第２演算モード用ワード番号２０１を算出する。第２演算モード用ワード番号２０１の値は、同時に入力されたワード番号の中の最小値（例えば、ワード番号１０３−１が示す値（ｄ１））に、演算部１６の総数（Ｉ）を掛けて、各演算部１６の番号（ｉ）を加えた値（ｄ１×Ｉ＋ｉ−１）である。ここで、「ｉ」は、演算部１６が受信するワードの番号に対応して演算部１６に設定される値である。例えば、最小のワード番号に対応するワードを受信する演算部１６の値は、最小の「ｉ」、つまり「１」である。次のワード番号に対応するワードを受信する演算部１６の値は、「２」である。
【０１４６】
制御部１５が、第２演算モード用ワード番号２０１を算出する理由について説明する。
【０１４７】
１つのデータ列を複数のデータ列に分けて処理する場合（第２の演算モードの場合）、演算部１６が処理するデータ列のワード番号と、情報処理装置１０が受信するワード番号１０３とは、異なる。これは、データ列が、情報処理装置１０に複数のデータ列として並列に入力されるためである。そこで、ワード番号演算部２０は、上記演算を基に、演算部１６での処理に用いることができるワード番号として、第２演算モード用ワード番号２０１を算出する。そして、制御部１５は、第２の演算モード場合、演算部１６が演算に用いるワード番号（演算部制御信号１０５）として、演算部１６に、第２演算モード用ワード番号２０１を送信する。
【０１４８】
つまり、第２演算モード用ワード番号２０１は、第２の演算モードの場合に、演算部１６において、ワード番号として用いられる。
【０１４９】
一方、第１の演算モードとして複数のデータ列を処理する場合、演算部１６は、データ列のワードの番号として、情報処理装置１０が受信したワード番号１０３を用いて処理する。そのため、制御部１５は、演算部制御信号１０５として、ワード番号１０３を送信する。
【０１５０】
そこで、制御信号選択部２１は、モード選択信号１０４を基に、各演算部１６に送信する演算部制御信号１０５として、ワード番号１０３又は第２演算モード用ワード信号２０１のいずれか１つを選択する。具体的には、制御信号選択部２１は、モード選択信号１０４が第１の演算モードの場合、ワード番号１０３を選択する。一方、制御信号選択部２１は、モード選択信号１０４が第２の演算モードの場合、第２演算モード用ワード番号２０１を選択する。つまり、演算部制御信号１０５は、ワード番号１０３又は第２演算モード用ワード番号２０１である。
【０１５１】
次に、演算部１６について図面を参照して説明する。
【０１５２】
図３は、本実施形態に係る演算部１６の構成の一例を示すブロック図である。
【０１５３】
演算部１６は、データ列１０１と、ワード数１０２と、演算部制御信号１０５とを基に、演算結果１０６を出力する。そのため、演算部１６は、部分符号演算部３０と、行列演算部３１と、合計部３２とを含む。
【０１５４】
部分符号演算部３０は、データ列１０１の部分（各ワードのデータ列）に対するＣＲＣ部分符号を算出する。以下、部分符号演算部３０の演算結果を、第１の「部分演算結果３０１」と呼ぶ。
【０１５５】
行列演算部３１は、部分演算結果３０１と、ワード数１０２と、演算部制御信号１０５とを基に、第２の部分演算結果３０２を算出する。ここで、第２の部分演算結果３０２は、第１の部分演算結果３０１を基に、ワード数１０２が示す値と演算部制御信号１０５が示す値を用いた行列演算の結果である。より具体的には、行列演算部３１は、ワード数１０２と演算部制御信号１０５との差分を求める。この差分の各ビットは、ＣＲＣ符号の演算に対応した値である。そこで、行列演算部３１は、この差分の各ビットに対応して遷移行列「ＴＳ」を用いた演算を実行する。その結果、行列演算部３１は、演算結果として、符号化多項式に対応した符号演算を実行し、第２の部分演算結果３０２を算出する。
【０１５６】
合計部３２は、第２の部分演算結果３０２の合計を算出し、合計結果を第１の演算結果１０６として出力する。
【０１５７】
［動作の説明］
次に、本実施形態における、第１の演算モード（複数モード）と第２の演算モード（単一モード）との動作について説明する。
【０１５８】
（第１の動作モード）
第１の演算モードにおいて、情報処理装置１０は、制御部１５と、演算部１６を用いて、複数のデータ列の符号演算を実行する。
【０１５９】
第１の演算モードにおいて、情報処理装置１０は、以下の処理に先立ち、第１の演算モードを選択するモード選択信号１０４を受信する。そして、情報処理装置１０は、各演算部１６に対応するデータ列１０１の処理対象のワードと、対応するワード数１０２と、ワード番号１０３とを受信する。
【０１６０】
制御部１５は、ワード番号１０３とモード選択信号１０４とを基に、各演算部１６に、演算部制御信号１０５を出力する。第１の演算モードの場合、演算部制御信号１０５は、演算部制御信号１０５として、ワード番号１０３を出力する。
【０１６１】
演算部１６は、データ列１０１と、ワード数１０２と、演算部制御信号１０５（ワード番号１０３）とを基に、各データ列１０１のＣＲＣ符号を演算し、各データ列１０１の演算結果１０６を出力する。
【０１６２】
そして、情報処理装置１０は、各データ列１０１のＣＲＣ符号として、演算結果１０６を出力する。
【０１６３】
（第２の動作モード）
第２の演算モードにおいて、情報処理装置１０は、制御部１５と演算部１６との加え、合計部１７を用いて、１つのデータ列の符号演算を実行する。
【０１６４】
第２の演算モードにおいて、情報処理装置１０は、以下の処理に先立ち、第２の演算モードを選択する選択信号を受信する。そして、情報処理装置１０は、１つのデータ列１０１における処理対象のワードと、対応するワード数１０２と、ワード番号１０３とを受信する。
【０１６５】
制御部１５は、ワード番号１０３とモード選択信号１０４とを基に、各演算部１６に、演算部制御信号１０５を出力する。第２の演算モードの場合、演算部制御信号１０５は、演算部制御信号１０５として、第２演算モード用ワード番号２０１を出力する。既に説明したとおり、第２演算モード用ワード番号２０１は、第２の演算モードにおいて、演算部１６が用いるワード番号である。
【０１６６】
演算部１６は、データ列１０１と、ワード数１０２と、演算部制御信号１０５（第２演算モード用ワード番号２０１）と基に、ＣＲＣ符号を演算し、演算結果１０６を合計部１７に出力する。
【０１６７】
合計部１７は演算結果１０６の合計を演算する。そして、合計部１７は、合計した演算結果を、第２の演算モードの演算結果１０７として出力する。
【０１６８】
［効果の説明］
本実施形態に係る情報処理装置１０の効果について説明する。
【０１６９】
本実施形態に係る情報処理装置１０は、回路規模の増加を抑えながら、１つのデータ列の演算に加え、複数のデータ列を同時に演算できるとの効果を得ることできる。
【０１７０】
その理由は、次のとおりである。
【０１７１】
第１の実施形態の情報処理装置１０の制御部１５は、第１の演算モードの場合、演算部１６で用いるワード番号（演算部制御信号１０５）として、ワード番号１０３を出力する。また、制御部１５は、第２の演算モードの場合、演算部１６で用いるワード番号（演算部制御信号１０５）として、第２演算モード用ワード番号２０１を出力する。
【０１７２】
そして、複数の演算部１６は、演算部制御信号１０５を用いて、複数のデータ列の符号を演算する第１の演算モードのＣＲＣ演算と、１つのデータ列の符号を演算する第２の演算モードのＣＲＣ演算とを実現できる。そのため、本実施形態の情報処理装置１０は、複数のデータ列を演算するための追加の回路と必要としない。つまり、情報処理装置１０は、符号演算回路の回路規模を削減しながら、１つのデータ列の演算に加え、複数のデータ列を演算できるためである。
【０１７３】
［変形例］
なお、情報処理装置１０は、複数のデータ列を並列に処理する場合、長さが異なる複数のデータ列を処理してもよい。さらに、情報処理装置１０は、複数のデータ列を処理する場合、各データ列の処理の開始及び終了の時間が異なってもよい。
【０１７４】
また、情報処理装置１０は、複数の制御部１５又は複数の合計部１７を含んでもよい。
【０１７５】
一例として、情報処理装置１０が、２つの制御部１５と、４つの演算部１６と、２つの合計部１７とを含む場合を説明する。各制御部１５は、制御対象となる１つ又は複数の演算部１６に演算部制御信号１０５を送信する。また、各合計部１７は、一部又は全ての演算部１６から演算に必要な演算結果１０６を受信する。そのため、情報処理装置１０は、例えば、制御部１５と演算部１６又は演算部１６と合計部１７とを接続する図示しない信号選択部又は信号切替え部を含んでもよい。
【０１７６】
この場合、情報処理装置１０は、次の示すデータ列を処理できる。
【０１７７】
（１）４つのデータ列：この場合、情報処理装置１０は、１つの制御部１５と４つの演算部１６を用いる。
【０１７８】
（２）１つのデータ列：この場合、情報処理装置１０は、１つの制御部１５と４つの演算部１６と１つの合計部１７とを用いる。情報処理装置１０は、４倍の演算速度を実現できる。
【０１７９】
（３）２つのデータ列：この場合、情報処理装置１０は、２つの制御部１５と４つの演算部１６と２つの合計部１７とを用いる。より具体的には、情報処理装置１０は、各データ列に、１つの制御部１５と２つの演算部１６と１つの合計部１７とを用いる。情報処理装置１０は、２倍の演算速度を実現できる。
【０１８０】
なお、情報処理装置１０は、第１のデータ列に、１つの制御部１５と、３つの演算部１６と、１つの合計部１７を用い、第２のデータ列に、１つの制御部１５と、１つの演算部１６とを用いてのよい。この場合、第１のデータ列の演算速度が、３倍となる。
【０１８１】
（４）３つのデータ列：この場合、情報処理装置１０は、２つの制御部１５と４つの演算部１６と１つの合計部１７とを用いる。より具体的には、情報処理装置１０は、第１のデータ列に、１つの制御部１５と２つの演算部１６と１つの合計部１７とを用い、第２及び第３のデータ列に、他の１つの制御部１５と他の２つの演算部１６とを用いる。情報処理装置１０は、第１のデータ列に対して、２倍の演算速度を実現できる。
【０１８２】
なお、３つのデータ列の処理時間を合わせたい場合、情報処理装置１０は、１つの制御部１５と３つの演算部１６とを用いてもよい。
【０１８３】
＜第２の実施形態＞
続いて、本発明の実施形態の動作を、より詳細に説明するため、第２の実施形態として、２つの演算部１６を含む情報処理装置１１について説明する。
【０１８４】
［構成の説明］
図４は、第２の実施形態に係る情報処理装置１１の構成の一例を示すブロック図である。
【０１８５】
図４に示すとおり、情報処理装置１１の演算部１６の個数（Ｉ）は、「２（Ｉ＝２）」である。情報処理装置１１は、演算部１６の数を除き、第１の実施形態の情報処理装置１０と同様の構成を含む。そのため、同様の構成の詳細な説明を省略し、本実施形態に特有の構成及び動作について説明する。
【０１８６】
なお、ＣＲＣ演算式は、Ｎ＝１６次の生成多項式「Ｇ（ｘ）＝ｘ１６＋ｘ１２＋ｘ５＋１」である。つまり、遷移行列ＴＳは、数式７に示すＴＳ１６である。
【０１８７】
また、１ワードのビット数（ｎ）は、「１６（ｎ＝１６）」である。つまり、ワードのビット数（ｎ）とＣＲＣ演算式の次数（Ｎ）は、同じである。
【０１８８】
そして、ワードの総数（ｍ）つまり、ワード数の最大値（ｍｍａｘ）は、「２Ｑ−１」である。ここで、Ｑ（Ｑは正整数）は、後ほど説明する行列演算部３１が含む行列演算を実行する乗算部７１の総数である。なお、「ｑ」は、個別の乗算部７１を示す変数である。
【０１８９】
また、第１の演算モードにおける２つのデータ列は、データ列Ａ（ｘ）とデータ列Ｂ（ｘ）である。また、第２の演算モードにおける１つのデータ列は、データ列Ｃ（ｘ）である。なお、第２の演算モードの演算速度は、第１の演算モードの２倍である。
【０１９０】
本実施形態のワードのビット数（ｎ）は、ＣＲＣ演算式の次数（Ｎ）と同じ「１６」である。そのため、情報処理装置１１は、ＣＲＣ（Ｗｋ（ｘ））を、１ワードｎビットのデータ列Ｗｋ（ｘ）に遷移行列ＴS１６の累乗（Ｎ乗）を乗じて求めることができる。そのため、数式５の演算式は、次に示す数式１６となる。
【０１９１】
［数式１６］
2016025498.tif 000018
【０１９２】
したがって、本実施系形態の部分符号演算部３０の演算は、データ列１０１に、遷移行列ＴＳ１６１６を乗じる演算となる。
【０１９３】
情報処理装置１１は、１ワード１６ビットの２のデータ列１０１（第１のデータ列１０１−１及び第２のデータ列１０１−２）を受信する。また、情報処理装置１１は、第１のワード数１０２−１及び第２のワード数１０２−２を受信する。さらに、情報処理装置１１は、第１のワード番号１０３−１及び第２のワード番号１０３−２を受信する。
【０１９４】
また、情報処理装置１１は、モード選択信号１０４を受信する。
【０１９５】
制御部１５は、第１のワード番号１０３−１、第２のワード番号１０３−２、及び、モード選択信号１０４を受信する。そして、制御部１５は、モード選択信号１０４が第１の演算モードの場合、第１のワード番号１０３−１及び第２のワード番号１０３−２を、第１の演算部制御信号１０５−１及び第２の演算部制御信号１０５−２として出力する。また、制御部１５は、モード選択信号１０４が第２の演算モードの場合、第１の第２演算モード用ワード番号２０１−１及び第２の第２演算モード用ワード番号２０１−２を、第１演算部制御信号１０５−１及び第２の演算部制御信号１０５−２として出力する。ここで、第１の第２演算モード用ワード番号２０１−２は、第１のワード番号１０３−１（ｄ１）の値を２倍（Ｉ＝２）した値に「０（＝１（＝ｉ）−１）」を加えた値である。また、第２の第２演算モード用ワード番号２０１−２は、第１のワード番号１０３−１（ｄ１）の値を２倍（Ｉ＝２）した値に「１（＝２（＝ｉ）−１）」を加えた値である。
【０１９６】
第１の演算部１６−１は、第１のデータ列１０１−１と、第１のワード数１０２−１と、第１の演算部制御信号１０５−１とを受信し、１６次の生成多項式（Ｇ（ｘ）＝ｘ１６＋ｘ１２＋ｘ５＋１）を用いたＣＲＣ符号の演算を実行する。そして、第１の演算部１６−１は、演算結果を、演算結果１０６−１として出力する。第２の演算部１６−２は、第２のデータ列１０１−２と、第２のワード数１０２−２と、第２の演算部制御信号１０５−２とを受信し、１６次の生成多項式を用いたＣＲＣ符号の演算を実行する。そして、第２の演算部１６−２は、演算結果を、演算結果１０６−２として出力する。演算結果１０６−１及び演算結果１０６−２は、第１の演算モードの結果である。
【０１９７】
合計部１７は、演算結果１０６−１及び演算結果１０６−２を基に、第２の演算結果１０７を出力する。演算結果１０７は、第２の演算モードの結果である。
【０１９８】
各部の詳細な動作を、図面を参照して説明する。
【０１９９】
図５は、本実施形態に係る制御部１５の構成の一例を示すブロック図である。
【０２００】
制御部１５は、第１の実施形態の同様に、ワード番号演算部２０と、第１の制御信号選択部２１−１と、第２の制御信号選択部２１−２とを含む。
【０２０１】
ワード番号演算部２０は、第１の第２演算モード用ワード番号２０１−１として、第１のワード番号１０３−１（ｄ１）が示す値に、２（Ｉ＝２）を掛けた値（２×ｄ１）を出力する。さらに、ワード番号演算部２０は、第２の第２演算モード用ワード番号２０１−２として、第１のワード番号１０３−１（ｄ１）が示す値に、２（Ｉ＝２）を掛けた値に、さらに１を加えた値（２×ｄ１＋１）を出力する。
【０２０２】
第１の制御信号選択部２１−１は、モード選択信号１０４を基に、第１のワード番号１０３−１と、第１の第２演算モード用ワード番号２０１−１とのいずれかを選択し、選択した信号を第１の演算部制御信号１０５−１として出力する。
【０２０３】
第２の制御信号選択部２１−２は、モード選択信号１０４を基に、第２のワード番号１０３−２と、第２の第２演算モード用ワード番号２０１−２とのいずれかを選択し、選択した信号を第２の演算部制御信号１０５−２として出力する。
【０２０４】
演算部１６は、データ列１０１と、ワード数１０２と、演算部制御信号１０５とを受信する。
【０２０５】
図６は、本実施形態に係る演算部１６の部分符号演算部３０の構成の一例を示すブロック図である。
【０２０６】
部分符号演算部３０は、乗算部６０を含む。
【０２０７】
乗算部６０は、データ列１０１を受信し、データ列１０１に１６×１６行列である遷移行列ＴＳ１６１６を乗じ、第１の部分演算結果３０１を算出する。
【０２０８】
図７は、本実施形態に係る演算部１６の行列演算部３１の構成の一例を示すブロック図である。
【０２０９】
行列演算部３１は、部分演算結果３０１と、ワード数１０２と、演算部制御信号１０５とを基に、第２の部分演算結果３０２を演算し、出力する。
【０２１０】
そのため、行列演算部３１は、減算部７０と、乗算部７１と、データ列選択部７２とを含む。既に説明した通り、行列演算部３１は、乗算部７１を、複数（Ｑ）含む。また、行列演算部３１は、乗算部７１と同数のデータ列選択部７２を含む。
【０２１１】
減算部７０は、ワード数１０２と演算部制御信号１０５とを基に、演算結果選択信号７０１を算出し、演算結果選択信号７０１をデータ列選択部７２に出力する。ここで、減算部７０は、演算結果選択信号７０１として、ワード数１０２の値から、演算部制御信号１０５の値を減算した値を算出する。より具体的には、減算部７０は、演算結果選択信号７０１として、減算した値の各ビット（「１」又は「０」）を、データ列選択部７２に出力する。
【０２１２】
例えば、演算結果選択信号７０１の最下位のビットは、第１のデータ列選択部７２の演算結果選択信号７０１−［０］である。また、演算結果選択信号７０１の最上位ビットは、最後（第Ｑ）のデータ列選択部７２の演算結果選択信号７０１−［Ｑ−１］である。このように、本実施形態の説明において、ビット番号は、「［］」を用いて表す。
【０２１３】
図７に示すように、乗算部７１とデータ列選択部７２は、相互に接続している。既に説明した通り、組合せの数は、Ｑである。また、個別の組合せは、ｑ（１≦ｑ≦Ｑ）を用いて表す。
【０２１４】
乗算部７１は、部分演算結果３０１又は１つ前のデータ列選択部７２が選択した結果に、各段数（ｑ）対応する遷移行列ＴＳ１６１６×２＾ｑを乗じる。ここで「＾」は、累乗を表す。以下、乗算部７１の演算結果を、「乗算結果７０３」と呼ぶ。
【０２１５】
データ列選択部７２は、演算結果選択信号７０１を基に、部分演算結果３０１及び１つ前のデータ列選択部７２が選択した結果（以下、「選択結果７０２」と呼ぶ）、又は、１つ前の乗算部７１の乗算結果７０３とのいずれかを選択する。データ列選択部７２の選択結果は、選択結果７０２となる。より具体的には、データ列選択部７２は、演算結果選択信号７０１が「１」の場合、乗算結果７０３を選択する。また、データ列選択部７２は、演算結果選択信号７０１が「０」の場合、部分演算結果３０１及び選択結果７０２を選択する。
【０２１６】
最後のデータ列選択部７２−［Ｑ］の選択結果７０２−［Ｑ］は、第２の部分演算結果３０２である。
【０２１７】
図８は、本実施形態に係る合計部３２の構成の一例を示すブロック図である。
【０２１８】
合計部３２は、部分演算結果３０２を基に、演算結果１０６を出力する。
【０２１９】
そのため、合計部３２は、加算部８０と記憶部８１とを含む。
【０２２０】
加算部８０は、部分演算結果３０２と、記憶部８１が保持している過去の演算結果１０６とを加算する。以下、加算の結果を、「加算結果８０１」と呼ぶ。加算結果８０１は、記憶部８１に保持される。
【０２２１】
記憶部８１は、保持している加算結果８０１を、加算部８０に出力し、さらに演算結果１０６として出力する。
【０２２２】
図９は、本実施形態に係る合計部１７の構成の一例を示すブロック部である。
【０２２３】
合計部１７は、第１の演算結果１０６−１及び第２の演算結果１０６−２を基に、演算結果１０７を出力する。
【０２２４】
そのため、合計部１７は、加算部９０を含む。
【０２２５】
加算部９０は、第１の演算結果１０６−１と第２の演算結果１０６−２とを加算する。
【０２２６】
［動作の説明］
次に、本実施形態の各演算モードの動作について説明する。
【０２２７】
（第１の演算モード）
まず、本実施形態における、第１の演算モード（複数モード）の動作について説明する。
【０２２８】
第１の演算モードにおいて、情報処理装置１１は、第１の演算部１６−１及び第２の演算部１６−２を用いて、２種のデータ列である第１のデータ列Ａ（ｘ）の演算及び第２のデータ列Ｂ（ｘ）の演算を実行する。なお、データ列Ａ（ｘ）及びデータ列Ｂ（ｘ）は、１ワード１６ビットである。
【０２２９】
情報処理装置１１は、第１の演算モードを表すモード選択信号１０４を受信する。
【０２３０】
そして、情報処理装置１１は、第１のデータ列１０１−１（Ａ（ｘ））の第ｋａ（０≦ｋａ≦ｍａ−１）番のワードａｋａ（ｘ）と、第１のデータ列のワード数１０２−１（ｍａ）とを受信する。さらに、情報処理装置１１は、第１のデータ列の第ｋａのワードのワード番号１０３−１（ｋａ）を受信する。また、情報処理装置１１は、第２のデータ列１０１−２（Ｂ（ｘ））の第ｋｂ（０≦ｋｂ≦ｍｂ−１）番のワードｂｋｂ（ｘ）と、第２のデータ列のワード数１０２−２（ｍｂ）とを受信する。さらに、情報処理装置１１は、第２のデータ列の第ｋｂのワードのワード番号１０３−２（ｋｂ）を受信する。
【０２３１】
そして、情報処理装置１１は、データ列Ａ（ｘ）とデータ列Ｂ（ｘ）の符号を演算する。
【０２３２】
より詳細には、次のとおりである。
【０２３３】
制御部１５は、第１の演算モードを表すモード選択信号１０４を受信する。つまり、制御信号選択部２１は、第１の演算モードを表すモード選択信号１０４を受信する。その結果、制御信号選択部２１は、演算部制御信号１０５として、各データ列１０１のワード番号１０３（ｋａ及びｋｂ）を出力する。
【０２３４】
２つの演算部１６は、それぞれ、データ列１０１の第ｋ番のワード（ａｋａ（ｘ）及びｂｋｂ（ｘ））と、データ列のワード数１０２（ｍａ及びｍｂ）と、演算部制御信号１０５（ｋａ及びｋｂ）とを受信する。
【０２３５】
演算部１６の部分符号演算部３０の乗算部６０は、ワード（ａｋａ（ｘ）及びｂｋｂ（ｘ））に遷移行列ＴＳ１６１６を乗じる。この乗算の結果は、次の数式１７で示すＣＲＣ（ａｋａ（ｘ））及びＣＲＣ（ｂｋｂ（ｘ））である。
【０２３６】
［数式１７］
2016025498.tif 000019
【０２３７】
数式１７において、ａｋａ及びｂｋｂは、それぞれ、ワードａｋａ（ｘ）及びワードｂｋｂ（ｘ）のベクトル表現である。例えば、ベクトル「ａｋａ」は、要素で表すと、［ａｋａ，０，ａｋａ，１，ａｋａ，２，…，ａｋａ，ｎ−１］Ｔである。
【０２３８】
部分符号演算部３０は、演算の結果を、第１の部分演算結果３０１として出力する。
【０２３９】
行列演算部３１の減算部７０は、データ列のワード数１０２（ｍａ及びｍｂ）から、演算部制御信号１０５（ｋａ及びｋｂ）を減算する。以下、減算結果は、それぞれ、「ｕａ」及び「ｕｂ」とする。そして、減算部７０は、減算結果（ｕａ＝（ｍａ−ｋａ）及びｕｂ＝（ｍｂ−ｋｂ）」の各ビットを、演算結果選択信号７０１として出力する。
【０２４０】
データ列選択部７２−１ないしデータ列選択部７２−Ｑは、減算結果（ｕａ及びｕｂ）、つまり演算結果選択信号７０１−［０］ないし演算結果選択信号７０１−［Ｑ−１］を基に、出力する信号を選択する。
【０２４１】
データ列選択部７２−１ないしデータ列選択部７２−Ｑのより詳細な選択動作の説明を、データ列選択部７２−ｑ（１≦ｑ≦Ｑ）を用いて説明する。
【０２４２】
データ列選択部７２−ｑは、演算結果選択信号７０１−［ｑ−１］（ｕ［ｑ−１］）が「１」の場合、乗算部７１−ｑの乗算結果７０３−ｑを選択する。また、データ列選択部７２−１−ｑは、演算結果選択信号７０１−［ｑ−１］（ｕ［ｑ−１］）が「０」の場合、１つ前のデータ列選択部７２−（ｑ−１）の選択結果７０２−（ｑ−１）を選択する。
【０２４３】
行列演算部３１は、上記の演算を基に、第１の部分演算結果３０１に遷移行列ＴＳ１６１６×（ｍ−ｋ）を乗じる演算を実行する。つまり、行列演算部３１は、次に示す数式１８の演算結果であるＲ（ｍａ，ｋａ，ａｋａ（ｘ））及びＲ（ｍｂ，ｋｂ，ａｋｂ（ｘ））を算出し、演算結果を第２の部分演算結果３０２として出力する。
【０２４４】
［数式１８］
2016025498.tif 000020
【０２４５】
演算部１６の合計部３２は、第２の部分演算結果３０２（Ｒ（ｍａ，ｋａ，ａｋａ（ｘ））及びＲ（ｍｂ，ｋｂ，ａｋｂ（ｘ）））を、ｋ＝０ないしｋ＝ｍ−１の範囲について合計する。つまり、合計部３２は、次に示す数式１９に示すＣＲＣ（Ａ（ｘ））及びＣＲＣ（Ｂ（ｘ））を算出し、各演算結果１０６（ＣＲＣ符号）を出力する。
【０２４６】
［数式１９］
2016025498.tif 000021
【０２４７】
このように、演算部１６は、第１の演算モードにおいて、第１のデータ列Ａ（ｘ）及び第２のデータ列Ｂ（ｘ）のＣＲＣ符号「ＣＲＣ（Ａ（ｘ））及びＣＲＣ（Ｂ（ｘ））」を演算し、出力する。
【０２４８】
（第２の演算モード）
次に、第２の実施形態における、第２の演算モード（単一モード）の動作について説明する。
【０２４９】
第２の演算モードにおいて、情報処理装置１１は、第１の演算部１６−１及び第２の演算部１６−２を用いて、１つのデータ列Ｃ（ｘ）の符号を演算する。なお、データ列Ｃ（ｘ）は、１ワード３２ビットである。
【０２５０】
以下の説明において、データ列Ｃ（ｘ）の１ワード３２ビットのｋｃ番目（０≦ｋｃ≦ｍｃ）データ列ｃｋｃ（ｘ）の０〜１５ビットのデータ列をｃｅｖｅｎ，ｋｃ（ｘ）とし、１６〜３１ビットのデータ列をｃｏｄｄ，ｋｃ（ｘ）とする。
【０２５１】
情報処理装置１１は、第２の演算モードを表すモード選択信号１０４を受信する。
【０２５２】
そして、情報処理装置１１は、第１のデータ列１０１−１として、データ列Ｃ（ｘ）の第ｋｃ（０≦ｋｃ≦ｍｃ−１）の１ワードのデータ列ｃｋｃ（ｘ）における０〜１５ビットのデータ列（ｃｅｖｅｎ，ｋｃ（ｘ））を受信する。また、情報処理装置１１は、第２のデータ列１０１−２として、データ列Ｃ（ｘ）の第ｋｃ（０≦ｋｃ≦ｍｃ−１）の１ワードのデータ列ｃｋｃ（ｘ）における１６〜３１ビットのデータ列（ｃｏｄｄ，ｋｃ（ｘ））を受信する。
【０２５３】
また、情報処理装置１１は、第１のワード数１０２−１及び第２のワード数１０２−２として、データ列Ｃ（ｘ）のワード数（ｍｃ）を受信する。
【０２５４】
また、情報処理装置１１は、第１のワード番号１０３−１及び第２のワード番号１０３−２として、データ列Ｃ（ｘ）の第ｋｃのワードのワード番号（ｋｃ）を受信する。
【０２５５】
そして、情報処理装置１１は、データ列Ｃ（ｘ）の符号を演算する。
【０２５６】
より詳細には、次のとおりである。
【０２５７】
制御部１５は、第２の演算モードを表すモード選択信号１０４を受信する。つまり、制御信号選択部２１は、第２の演算モードを表すモード選択信号１０４を受信する。その結果、制御信号選択部２１は、ワード番号演算部２０が出力する第２演算モード用ワード番号２０１を選択する。
【０２５８】
制御部１５のワード番号演算部２０は、第１の第２演算モード用ワード番号２０１−１として、第１のワード番号１０３−１（ｋｃ）を２倍した値（２×ｋｃ）を出力する。また、ワード番号演算部２０は、第２の第２演算モード用ワード番号２０１−２として、第１のワード番号１０３−１（ｋｃ）を２倍して１を加えた値（２×ｋｃ＋１）を出力する。
【０２５９】
制御部１５の第１の制御信号選択部２１−１は、第１の演算部制御信号１０５−１として、第１の第２演算モード用ワード番号２０１−１（２×ｋａ）を出力する。また、第２の制御信号選択部２１−２は、第２の演算部制御信号１０５−２として、第２の第２演算モード用ワード番号２０１−２（２×ｋｂ＋１）を出力する。
【０２６０】
第１の演算部１６は、第１のデータ列１０１−１であるｃｅｖｅｎ，ｋｃ（ｘ）と、第１のデータ列のワード数１０２−１（ｍｃ）と、第１の演算部制御信号１０５−１（２×ｋｃ）とを受信する。同様に、第２の演算部１６−２は、第２のデータ列１０１−２であるｃｏｄｄ，ｋｃ（ｘ）と、第２のデータ列のワード数１０２−２（今の場合、ワード数１０２−１と同じ「ｍｃ」）と、第２の演算部制御信号１０５−２（２×ｋｃ＋１）とを受信する。
【０２６１】
各演算部１６の部分符号演算部３０の乗算部６０は、各データ列１０１（ｃｅｖｅｎ，ｋｃ（ｘ）及びｃｏｄｄ，ｋｃ（ｘ））に遷移行列ＴＳ１６１６を乗じる。各乗算の結果は、次の数式２０に示す「ＣＲＣ（ｃｅｖｅｎ，ｋｃ（ｘ））及びＣＲＣ（Ｃｏｄｄ，ｋｃ（ｘ））」である。
【０２６２】
［数式２０］
2016025498.tif 000022
【０２６３】
数式２０において、ｃｅｖｅｎ，ｋｃ及びｃｏｄｄ，ｋｃは、それぞれ、ワードｃｅｎｅｃ，ｋｃ（ｘ）及びワードｃｏｄｄ，ｋｃ（ｘ）のベクトル表現である。
【０２６４】
部分符号演算部３０は、演算結果を、第１の部分演算結果３０１として出力する。
【０２６５】
行列演算部３１の減算部７０は、データ列のワード数１０２（ｍｃ）から、第１の演算部制御信号１０５−１（２×ｋｃ及び２×ｋｃ＋１）を減算する。そして、減算部７０は、減算結果「ｕｅｖｅｎ，ｃ＝（ｍｃ−２×ｋｃ）及びｕｏｄｄ，ｃ＝（ｍｃ−２×ｋｃ＋１）」の各ビットを、演算結果選択信号７０１として、出力する。
【０２６６】
データ列選択部７２−１ないしデータ列選択部７２−Ｑは、減算結果（ｕｅｖｅｎ，ｃ及びｕｏｄｄ，ｃ）に基づく演算結果選択信号７０１−［０］ないし演算結果選択信号７０１−［Ｑ−１］を基に、出力する信号を選択する。つまり、行列演算部３１は、上記演算を基に、第１の部分演算結果３０１に遷移行列（ＴＳ１６１６×（ｍｃ−２×ｋｃ）又はＴＳ１６１６×（ｍｃ−２×ｋｃ＋１））を乗じる。そして、行列演算部３１は、次に示す数式２１の「Ｒ（ｍｃ，２×ｋｃ，ｃｅｖｅｎ，ｋｃ（ｘ））及びＲ（ｍｃ，２×ｋｃ，ｃｅｖｅｎ，ｋｃ（ｘ））」を算出し、算出結果を第２の部分演算結果３０２として出力する。
【０２６７】
［数式２１］
2016025498.tif 000023
【０２６８】
演算部１６の合計部３２は、第２の部分演算結果３０２「Ｒ（ｍｃ，２×ｋｃ，ｃｅｖｅｎ，ｋｃ（ｘ））及びＲ（ｍｃ，２×ｋｃ＋１，ｃｅｖｅｎ，ｋｃ（ｘ））」を、ｋｃ＝０ないしｋｃ＝ｍｃ−１の範囲について合計する。つまり、合計部３２は、次に示す数式２２に示す「ＣＲＣ（Ｃｅｖｅｎ（ｘ））及びＣＲＣ（Ｃｏｄｄ（ｘ））」を算出し、算出結果を演算結果１０６（ＣＲＣ符号）として出力する。
【０２６９】
［数式２２］
2016025498.tif 000024
【０２７０】
合計部１７は、２つの演算結果１０６を受信する。合計部１７の加算部９０は、２つの演算結果１０６（ＣＲＣ（Ｃｅｖｅｎ（ｘ））及びＣＲＣ（Ｃｏｄｄ（ｘ）））を加算する。つまり、合計部１７は、次に示す数式２３の演算結果であるＣＲＣ（Ｃ（ｘ））を算出する。
【０２７１】
［数式２３］
2016025498.tif 000025
【０２７２】
合計部１７は、合計結果を、第２の演算モードの演算結果１０７として出力する。
【０２７３】
（動作のまとめ）
このように、第２の実施形態の情報処理装置１１は、制御部１５の制御を基に、第１の演算部１６−１及び第２の演算部１６−２を用いて、１ワード１６ビットの２種のデータ列（Ａ（ｘ）及びＢ（ｘ））の演算を実行する（第１の演算モード）。また、情報処理装置１１は、制御部１５の制御を基に、第１の演算部１６−１、第２の演算部１６−２及び合計部１７を用いて、１ワード３２ビットの１種のデータ列（Ｃ（ｘ））の演算を実行する（第２の演算モード）。
【０２７４】
情報処理装置１１は、制御部１５を基に、同じ演算部１６を用いて、第１の演算モードと第２の演算モードと実行できる。そのため、情報処理装置１１は、各演算モード用の回路が不要である。つまり、情報処理装置１１は、演算回路の回路規模を削減することができる。
【０２７５】
［効果の説明］
このように、本実施形態に情報処理装置１１は、第１の実施形態の情報処理装置１０と同様の効果を得ることができる。
【０２７６】
その理由は、情報処理装置１１が、情報処理装置１０と同様の構成を含み、同様の動作を実現しているためである。
【０２７７】
なお、情報処理装置１１のＣＲＣ生成多項式の次数（Ｎ）は、１６に限る必要はない。ＣＲＣ生成多項式の次数は、１６より小さい数（例えば、８）又は１６より大きな数（例えば、３２）でもよい。
【０２７８】
また、情報処理装置１１の１ワードのビット数（ｎ）は、１６及び３２に限る必要はない。１ワードのビット数は、１６及び３２より小さな数（例えば、８及び１６）又は１６より大きな数（例えば、３２及び６４）でもよい。
【０２７９】
＜第３の実施形態＞
そこで、１ワードのビット数を変更した実施形態を第３の実施形態として説明する。
【０２８０】
［構成の説明］
図１０は、第３の実施形態に係る情報処理装置１２の構成の一例を示すブロック図である。
【０２８１】
情報処理装置１２は、図４に示す第２の実施形態の情報処理装置１１と同様の構成を含む。例えば、第３の実施形態に係る情報処理装置１２は、第２の実施形態と同様に、Ｎ＝１６次の生成多項式Ｇ（ｘ）＝ｘ１６＋ｘ１２＋ｘ５＋１であるＣＲＣ演算式を用いる。
【０２８２】
ただし、本実施形態において、１ワードのビット数（ｎ）は、「３２（ｎ＝３２）」である。１ワードのビット数ｎがＣＲＣの次数１６の２倍の場合、データ列Ｗｋ（ｘ）のＣＲＣ符号ＣＲＣ（Ｗｋ（ｘ））の演算は、次に示す数式２４となる。数式２４において、１ワード３２ビットのデータ列Ｗｋ（ｘ）は、０〜１５ビットのデータ列Ｗ０，ｋ（ｘ）と、１６〜３１ビットのデータ列Ｗ１，ｋ（ｘ）とに分割されている。それぞれに対応するＣＲＣ符号が、Ｒ０，ｋ（ｘ）及びＲ１，ｋ（ｘ）である。
【０２８３】
［数式２４］
2016025498.tif 000026
【０２８４】
したがって、図３に示す第１の実施形態の部分符号演算部３０の演算は、本実施形態において、データ列１０１−１の０〜１５ビットに遷移行列ＴＳ１６１６を乗じた値と、１６〜３１ビットに遷移行列ＴＳ１６３２乗じた値とを加算すればよい。このように、本実施形態の情報処理装置１２は、データ列を０〜１５ビットと１６〜３１ビットに分けて、それぞれ異なる遷移行列を乗算する点が、第２の実施形態と異なる。
【０２８５】
そこで、以下、第２の実施形態の情報処理装置１１と同様の構成及び動作についての説明を適宜省略し、本実施形態に特有の構成及び動作を中心に説明する。
【０２８６】
情報処理装置１２は、１ワード３２ビットに展開された２個の第１のデータ列１０１−１及び第２のデータ列１０１−２を受信する。情報処理装置１２が受信する信号は、データ列１０１を除き、第２の実施形態と同様である。つまり、情報処理装置１２は、データ列１０１に加え、ワード数１０２と、ワード番号１０３と、モード選択信号１０４とを受信する。
【０２８７】
本実施形態の制御部１５は、第２の実施形態の制御部１５と同様の構成を含み、同様に動作する。すなわち、制御部１５は、ワード数１０２と、ワード番号１０３と、モード選択信号１０４とを基に、演算部制御信号１０５を出力する。
【０２８８】
各演算部１６は、データ列１０１と、ワード数１０２と、演算部制御信号１０５とを受信し、１６次の生成多項式（Ｇ（ｘ）＝ｘ１６＋ｘ１２＋ｘ５＋１）を用いたＣＲＣ符号の演算を実行する。そして、演算部１６は、演算結果１０６を出力する。演算結果１０６は、第１の演算モードの結果である。
【０２８９】
図１１は、本実施形態に係る演算部１６の部分符号演算部３０の構成の一例を示すブロック図である。
【０２９０】
部分符号演算部３０は、乗算部６１（第１の乗算部６１−１及び第２の乗算部６１−２）と、加算部６２とを含む。
【０２９１】
第１の乗算部６１−１は、データ列Ｃ（ｘ）の０ビット〜１５ビットに、１６×１６行列である遷移行列ＴＳ１６１６を乗じ、第１の乗算結果６０１−１を出力する。また、第２の乗算部６１−２は、データ列Ｃ（ｘ）の１６ビット〜３１ビットに、１６×１６行列である遷移行列ＴＳ１６１６×２を乗じ、第２の乗算結果６０１−２を出力する。加算部６２は、第１の乗算結果６０１−１と第２の乗算結果６０１−２とを加算し、第１の部分演算結果３０１を出力する。
【０２９２】
図１２は、本実施形態に係る行列演算部３１の構成の一例を示すブロック図である。
【０２９３】
本実施形態の行列演算部３１は、第２の実施形態の行列演算部３１と比べ、乗算部７１及びデータ列選択部７２に換えて、乗算部７３及びデータ列選択部７４を含む。それ以外の構成は、同様のため、詳細な説明を省略し、以下、乗算部７３及びデータ列選択部７４について説明する。
【０２９４】
データ列選択部７４は、選択するデータとして、乗算部７１に換えて乗算部７３を用いる。そのため、図１２は、データ列選択部７４の出力を、選択結果７０２に換えて選択結果７０４として示した。この点を除きデータ列選択部７４は、第２の実施形態のデータ列選択部７２と同様である。そのため、データ列選択部７４のその他の詳細な説明を省略する。
【０２９５】
乗算部７３は、乗算に用いる遷移行列が遷移行列（ＴＳ１６）の３２乗（ＴＳ１６３２）である。そのため、図１２は、乗算部７３の出力を、乗算結果７０３に換えて、乗算結果７０５として示した。この点を除き、乗算部７３は、第２の実施形態の乗算部７１と同様である。そのため、その他の詳細な説明を省略する。
【０２９６】
合計部１７は、第２の実施形態の合計部１７と同様に、演算結果１０６を基に、第２の演算モードの結果である第２の演算結果１０７を出力する。
【０２９７】
［動作の説明］
次に、各演算モードの動作について、説明する。
【０２９８】
なお、既に説明した通り、本実施形態の情報処理装置１２は、第２の実施形態の情報処理装置１１と比べ、演算部１６において、データ列を０〜１５ビットと、１６〜３２ビットに分けて処理する点が異なる。そのため、第２の実施形態と同様の動作についての説明は、適宜省略し、本実施形態に特有の演算部１６の演算を中心に説明する。
【０２９９】
（第１の演算モード）
まず、本実施形態における、第１の演算モードの演算部１６の動作について説明する。
【０３００】
図１１に示す演算部１６の部分符号演算部３０の第１の乗算部６１−１は、ワードのデータ列（ａｋａ（ｘ）及びｂｋｂ（ｘ））の０〜１５ビットのデータ列に遷移行列「ＴＳ１６１６」を乗じる。また、第２の乗算部６１−２は、ワードのデータ列（ａｋａ（ｘ）及びｂｋｂ（ｘ））の１６〜３１ビットのデータ列に遷移行列「ＴＳ１６３２」を乗じる。そして、加算部６２は、２つの乗算の結果を加算する。加算部６２の加算の結果は、次に示す数式２５である。
【０３０１】
［数式２５］
2016025498.tif 000027
【０３０２】
部分符号演算部３０は、演算結果「ＣＲＣ（ａｋａ（ｘ））及びＣＲＣ（ｂｋｂ（ｘ））」を第１の部分演算結果３０１として出力する。
【０３０３】
図１２に示す本実施形態の行列演算部３１は、第２の実施形態の行列演算部３１と同様に動作し、第２の部分演算結果３０２を出力する。本実施形態の第２の部分演算結果３０２は、次の数式２６に示す「Ｒ（ｍａ，ｋａ，ａｋａ（ｘ））及びＲ（ｍｂ，ｋｂ，ｂｋｂ（ｘ））」となる。
【０３０４】
［数式２６］
2016025498.tif 000028
【０３０５】
合計部３２は、第２の部分演算結果３０２「Ｒ（ｍａ，ｋａ，ａｋａ（ｘ））及びＲ（ｍｂ，ｋｂ，ａｋｂ（ｘ））」をｋ＝０ないしｋ＝ｍ−１の範囲について合計する。つまり、合計部３２は、次に示す数式２７に示す「ＣＲＣ（Ａ（ｘ））及びＣＲＣ（Ｂ（ｘ））」を算出し、算出結果を演算結果１０６（ＣＲＣ符号）として出力する。
【０３０６】
［数式２７］
2016025498.tif 000029
【０３０７】
このように、本実施形態の情報処理装置１２は、第１のデータ列Ａ（ｘ）及び第２のデータ列Ｂ（ｘ）のＣＲＣ符号「ＣＲＣ（Ａ（ｘ））及びＣＲＣ（ｂ（ｘ））」を演算し、出力する。
【０３０８】
（第２の演算モード）
次に、第３の実施形態における、第２の演算モードの動作について説明する。
【０３０９】
図１１に示した演算部１６の部分符号演算部３０の第１の乗算部６１−１は、データ列のワード（ｃｅｖｅｎ，ｋｃ（ｘ）及びｃｏｄｄ，ｋｃ（ｘ））の０〜１５ビットのデータ列に遷移行列「ＴＳ１６１６」を乗じる。また、第２の乗算部６１−２は、データ列のワード（ｃｅｖｅｎ，ｋｃ（ｘ）及びｃｏｄｄ，ｋｃ（ｘ））の１６〜３１ビットのデータ列に遷移行列「ＴＳ１６３２」を乗じる。加算部６２は、２つの乗算の結果を加算する。この演算は、次に示す数式２８の演算結果であるＣＲＣ（ｃｅｖｅｎ，ｋｃ（ｘ））及びＣＲＣ（ｃｏｄｄ，ｋｃ（ｘ））である。
【０３１０】
［数式２８］
2016025498.tif 000030
【０３１１】
部分符号演算部３０は、演算結果を、第１の部分演算結果３０１として出力する。
【０３１２】
行列演算部３１は、上記演算を基に、第１の部分演算結果３０１に、遷移行列ＴＳ１６３２×（ｍｃ−２×ｋｃ）を乗じる。つまり、行列演算部３１は、次の数式２９に示す「Ｒ（ｍｃ，２×ｋｃ，ｃｅｖｅｎ，ｋｃ（ｘ））及びＲ（ｍｃ，２×ｋｃ＋１，ｃｏｄｄ，ｋｃ（ｘ））」を算出する。
【０３１３】
［数式２９］
2016025498.tif 000031
【０３１４】
行列演算部３１は、演算結果を、第２の部分演算結果３０２として出力する。
【０３１５】
合計部３２は、第２の部分演算結果３０２「Ｒ（ｍｃ，２×ｋｃ，ｃｅｖｅｎ，ｋｃ（ｘ））及びＲ（ｍｃ，２×ｋｃ＋１，ｃｏｄｄ，ｋｃ（ｘ））」を、合計する。つまり、合計部３２は、次の数式３０に示す「ＣＲＣ（Ｃｅｖｅｎ（ｘ））及びＣＲＣ（Ｃｏｄｄ（ｘ））」を算出する。
【０３１６】
［数式３０］
2016025498.tif 000032
【０３１７】
合計部３２は、算出結果を第１の演算結果１０６として出力する。
【０３１８】
合計部１７の加算部９０は、演算結果１０６「ＣＲＣ（Ｃｅｖｅｎ（ｘ））及びＣＲＣ（Ｃｏｄｄ（ｘ））」を加算する。この演算の結果は、次に示す数式３１のＣＲＣ（Ｃ（ｘ））となる。
【０３１９】
［数式３１］
2016025498.tif 000033
【０３２０】
合計部１７は、合計の結果を、第２の演算モードの演算結果１０７として出力する。
【０３２１】
（動作のまとめ）
このように、第３の実施形態の情報処理装置１２は、制御部１５の制御を基に、２つの演算部１６を用いて、１ワード３２ビットの２種のデータ列Ａ（ｘ）及びＢ（ｘ）の演算を実行する（第１の演算モード）。また、情報処理装置１２は、制御部１５の制御と基に、２つの演算部１６と合計部１７を用いて、１ワード３２ビットのデータ列Ｃ（ｘ）の演算を実行する（第２の演算モード）。
【０３２２】
このように、情報処理装置１２は、制御部１５を基に、同じ演算部１６を用いて、第１の演算モードと第２の演算モードと実行できる。そのため、情報処理装置１２は、各演算モード用の回路が不要である。つまり、情報処理装置１２は、演算回路の回路規模を削減することができる。
【０３２３】
［効果の説明］
このように、本実施形態に情報処理装置１２は、第１の実施形態の情報処理装置１０及び第２の実施形態の情報処理装置１０と同様の効果を得ることができる。
【０３２４】
その理由は、情報処理装置１２が、情報処理装置１０及び情報処理装置１１と同様の構成を含み、同様の動作を実現しているためである。
【０３２５】
さらに、第３の実施形態に係る情報処理装置１２は、第２の実施形態の情報処理装置１１に比べ、演算の処理速度を向上できる。
【０３２６】
その理由は、第３の実施形態に係る情報処理装置１２は、１ワード３２ビットのデータ列を演算するため、第２の実施形態に係る情報処理装置１１における１ワード１６ビットのデータ列を演算に比べて、演算の速度が２倍となるためである。
【０３２７】
なお、情報処理装置１２のＣＲＣ生成多項式の次数（Ｎ）は、１６に限る必要はない。ＣＲＣ生成多項式の次数は、１６より小さい数（例えば、８）又は１６より大きな数（例えば、３２）でもよい。
【０３２８】
また、情報処理装置１２の１ワードのビット数（ｎ）は、ＣＲＣ生成多項式の次数（Ｎ）の２倍（ｎ＝２×Ｎ）であるが、これに限る必要はない。１ワードのビット数（ｎ）は、ＣＲＣ生成多項式の次数（Ｎ）の２より大きな整数倍でもよい。
【０３２９】
以上、実施形態を参照して本願発明を説明したが、本願発明は上記実施形態に限定されるものではない。本願発明の構成及び詳細には、本願発明のスコープ内で当業者が理解し得る様々な変更をすることができる。
【符号の説明】
【０３３０】
１０    情報処理装置
１１    情報処理装置
１２    情報処理装置
１５    制御部
１６    演算部
１７    合計部
２０    ワード番号演算部
２１    制御信号選択部
３０    部分符号演算部
３１    行列演算部
３２    合計部
６０    乗算部
６１    乗算部
６２    加算部
７０    減算部
７１    乗算部
７２    データ列選択部
７３    乗算部
７４    データ列選択部
８０    加算部
８１    記憶部
９０    加算部
１０１    データ列
１０２    ワード数
１０３    ワード番号
１０４    モード選択信号
１０５    演算部制御信号
１０６    演算結果
１０７    演算結果
２０１    第２演算モード用ワード番号
３０１    部分演算結果
３０２    部分演算結果
６０１    乗算結果
７０１    演算結果選択信号
７０２    選択結果
７０３    乗算結果
７０４    選択結果
７０５    乗算結果
８０１    加算結果
９１０    ＣＲＣ演算回路
９１１    部分演算部
９１２    部分演算部
９１３    部分演算部
９１４    データ列
９１５    ＣＲＣ符号
９１６    ＣＲＣ符号
９２０    ＣＲＣ演算回路
９２１    部分演算部
９２２    行列演算部
９２３    合計部
９２４    データ列
９２５    部分演算結果
９２６    部分演算結果
９２７    ＣＲＣ符号
【図１】
2016025498.tif 000034
【図２】
2016025498.tif 000035
【図３】
2016025498.tif 000036
【図４】
2016025498.tif 000037
【図５】
2016025498.tif 000038
【図６】
2016025498.tif 000039
【図７】
2016025498.tif 000040
【図８】
2016025498.tif 000041
【図９】
2016025498.tif 000042
【図１０】
2016025498.tif 000043
【図１１】
2016025498.tif 000044
【図１２】
2016025498.tif 000045
【図１３】
2016025498.tif 000046
【図１４】
2016025498.tif 000047