(57)【特許請求の範囲】
【請求項１】
第１記憶手段に格納された演算データの最上位ビットと第２記憶手段に格納された入力データとの２進数加算を行う第１演算手段と、前記演算データを１ビット最上位ビット側にシフトしたシフトデータと第３記憶手段に格納された生成多項式の係数との２進数加算を行う第２演算手段と、前記第１演算手段の演算結果に基づき、前記第２演算手段の演算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段とを具備することを特徴とする演算処理装置。
【請求項２】
第１記憶手段に格納された演算データの最上位ビットと第２記憶手段に格納された入力データとの２進数加算である第１演算を行い、前記演算データを１ビット最上位ビット側にシフトしたシフトデータと第３記憶手段に格納された生成多項式の係数との２進数加算である第２演算を行う第３演算手段と、前記第１演算の演算結果に基づき、前記第２演算の演算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段とを具備することを特徴とする演算処理装置。
【請求項３】
選択手段は、第２演算の演算結果が入力されるまで、第１演算の演算結果を第４記憶手段に保持することを特徴とする請求項２記載の演算処理装置。
【請求項４】
第１記憶手段に格納された演算データを１ビット最上位ビット側にシフトしたシフトデータに、第２記憶手段に格納された入力データを合併した値と、第３記憶手段に格納された生成多項式の係数に、前記演算データの最上位ビットを合併した値との２進数加算を行う第４演算手段と、入力データと演算データの最上位ビットとの２進数加算結果に基づき前記シフトデータと生成多項式の係数との２進数加算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段とを具備することを特徴とする演算処理装置。
【請求項５】
第１記憶手段に格納される演算データの最上位ビットを所定位置に移動するシフト手段を具備することを特徴とする請求項１から請求項４のいずれかに記載の演算処理装置。
【請求項６】
シフト手段はＤＳＰの汎用シフタを構成要素とすることを特徴とする請求項５記載の演算処理装置。
【請求項７】
演算手段のうち、少なくとも一つがＡＬＵを構成要素とすることを特徴とする請求項１から請求項６のいずれかに記載の演算処理装置。
【請求項８】
記憶手段のうち、少なくとも一つがＤＳＰの汎用レジスタを構成要素とすることを特徴とする請求項１から請求項７のいずれかに記載の演算処理装置。
【請求項９】
記憶手段のうち、少なくとも一つがシフトレジスタを構成要素とすることを特徴とする請求項１から請求項８のいずれかに記載の演算処理装置。
【請求項１０】
請求項１から請求項９のいずれかに記載の演算処理装置を搭載することを特徴とする無線通信端末装置。
【請求項１１】
請求項１０記載の無線通信端末装置と無線通信を行うことを特徴とする無線通信基地局装置。
【請求項１２】
請求項１から請求項９のいずれかに記載の演算処理装置を搭載することを特徴とする無線通信基地局装置。
【請求項１３】
請求項１２記載の無線通信基地局装置と無線通信を行うことを特徴とする無線通信端末装置。
【請求項１４】
コンピュータを、第１記憶手段に格納された演算データの最上位ビットと第２記憶手段に格納された入力データとの２進数加算を行う第１演算手段と、前記演算データを１ビット最上位ビット側にシフトしたシフトデータと第３記憶手段に格納された生成多項式の係数との２進数加算を行う第２演算手段と、前記第１演算手段の演算結果に基づき、前記第２演算手段の演算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段として機能させるためのプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、無線通信機器等に搭載され、ＣＲＣ演算を行う演算処理装置に関する。
【０００２】
【従来の技術】
無線通信では、無線伝送中に発生するビット誤りを訂正するため、送信側にて、データに対して誤り訂正のための符号化処理を施し、受信側にて、誤り訂正符号に対する復号処理を施している。
【０００３】
しかし、伝搬環境が悪く、極端に誤りが多く発生する場合、上記誤り訂正処理のみでは誤りを完全に訂正することは困難である。そこで、移動無線通信では、上記誤り訂正処理と併用して誤り検査処理を行い、誤りが残留しているか否かを検出している。そして、誤り検査処理の代表的なものにＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）がある。
【０００４】
以下、ＣＲＣについて説明する。まず、ＣＲＣ演算の符号化回路について説明する。図７は、生成多項式をＧ（Ｘ）＝１＋Ｘ＋Ｘ３  としたときのＣＲＣ演算の符号化回路図である。
【０００５】
図７に示すように、ＣＲＣ演算の符号化回路におけるシフトレジスタの段数は、生成多項式の最高次数に等しい数となる。そして、各フリップフロップ（以下、「ＦＦ」という）の境界が、生成多項式の各次数に対応しており、ＬＳＢ（Ｌｅａｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ：最下位ビット）からＭＳＢ（Ｍｏｓｔ  Ｓｉｇｎｉｆｉｃａｎｔ  Ｂｉｔ：最高位ビット）に向かう順に次数が高くなる。
【０００６】
また、ＣＲＣ演算の符号化回路は、生成多項式の１次以上の項の係数が「１」なら、その次数に対応した各ＦＦの境界にＥＸＯＲ（排他的論理和素子）が挿入される。
【０００７】
次に、ＣＲＣの符号化動作及びＣＲＣの復号動作について説明する。
【０００８】
ＣＲＣの符号化動作では、まず、第１ステップとして、シフトレジスタの内容を全て「０」にリセットする。次に、第２ステップとして、入力データ１ビットに対し、シフトレジスタのＭＳＢとのｍｏｄ２加算（ｍｏｄｕｌｏ２‐ａｄｄｅｒ：１桁の２進数の加算）を行う。そして、第３ステップとして、第２ステップのｍｏｄ２加算結果をシフトレジスタにシフトインとともに、最高次数以外のＥＸＯＲに入力し、各ＦＦ出力とｍｏｄ２加算を行い、結果を次段のＦＦに入力する。
【０００９】
上記の第２ステップと第３ステップの処理を入力ビットがなくなるまで繰り返し、最終的に得られたシフトレジスタの内容がＣＲＣの符号化結果であり、冗長ビットとして入力データに付け加えられる。
【００１０】
一方、ＣＲＣの復号動作は、まず、上記ＣＲＣの符号化動作と同様の動作を行い、その結果得られたシフトレジスタの内容と受信した冗長ビットとを比較する。そして、比較の結果、一致した場合には、誤りは検出されないと判定され、一致しなければ、誤りが検出されたと判定される。
【００１１】
ここで、生成多項式や冗長ビットのビット数、すなわち、シフトレジスタの段数は、システムによって様々であり、同じシステムの中でも複数の種類を使い分けて使用される場合もある。
【００１２】
したがって、複数の種類のＣＲＣ演算に対応した専用ハードウェアを搭載するより、ＤＳＰ（ディジタル信号処理プロセッサ）によりプログラマブルに処理する方が装置の小型化、軽量化を図ることができる。また、ＤＳＰは、携帯端末の小型化・軽量化・低価格化を実現するために、専用ＬＳＩで処理していた領域もＤＳＰ処理による１チップ化が図られている。
【００１３】
従来のＤＳＰにてＣＲＣ演算を実現させる場合、下記のオペレーションが必要となる。
【００１４】
まず、第１オペレーションで、入力データをロードして第１レジスタに格納する。
【００１５】
次に、第２オペレーションで、演算結果を格納している第２レジスタから最高次のビット位置を抽出して第３レジスタに格納する。
【００１６】
次に、第３オペレーションで、第２レジスタをＭＳＢ側に１ビット論理シフトして、結果を第２レジスタに格納する。
【００１７】
次に、第４オペレーションで、第１レジスタと第３レジスタとのｍｏｄ２加算を行う。
【００１８】
そして、第５オペレーションで、第４オペレーションの結果、「０」であれば第２レジスタの内容を更新せず、「１」であれば第２レジスタと生成多項式を格納している第４レジスタとのｍｏｄ２加算結果を第２レジスタに格納する。
【００１９】
このように、従来のＤＳＰでは、ＣＲＣ演算を実現するために、入力データ１ビット当たり少なくとも５オペレーション必要であり、それぞれを１マシンサイクルで実行した場合には、最低でも５マシンサイクル必要となる。実際には、第５オペレーションの条件分岐がＤＳＰのパイプラインによる分岐ペナルティを起こすため、さらにその分だけマシンサイクルが増加する。ＣＲＣ演算に要するＤＳＰの演算量は、必要とするマシンサイクルに比例して増加する。
【００２０】
【発明が解決しようとする課題】
ここで、近年、移動無線通信上で伝送されるビットレートは高速化する傾向にある。ＣＲＣ演算に要するＤＳＰの演算量は、ビットレートに比例して増加する。
【００２１】
ＤＳＰによる演算量が増加すると、携帯端末のバッテリーを長時間持続させることが困難となる。また、既存のＤＳＰの処理能力を超えてしまい、ＤＳＰによる１チップ化が不可能となる。演算量を増加させるためにＤＳＰを高機能化させると、ＤＳＰ自身のコストアップを招き、結果携帯端末の低価格化が実現できなくなる。
【００２２】
本発明はかかる点に鑑みてなされたものであり、少ないハードウェアの投資で、ＤＳＰによるＣＲＣ演算を効率的に処理する演算処理装置を提供することを目的とする。
【００２３】
【課題を解決するための手段】
本発明の骨子は、演算データと入力データとのｍｏｄ２加算の演算結果に基づいて、演算データをＭＳＢ側に１ビットシフトさせたデータと生成多項式の係数とのｍｏｄ２加算の演算結果、あるいは、演算データをＭＳＢ側に１ビットシフトさせたデータのいずれか一方を新たに演算データとして格納することである。
【００２４】
【発明の実施の形態】
本発明の第１の態様に係る演算処理装置は、第１記憶手段に格納された演算データの最上位ビットと第２記憶手段に格納された入力データとの２進数加算を行う第１演算手段と、前記演算データを１ビット最上位ビット側にシフトしたシフトデータと第３記憶手段に格納された生成多項式の係数との２進数加算を行う第２演算手段と、前記第１演算手段の演算結果に基づき、前記第２演算手段の演算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段とを具備する構成を採る。
【００２５】
この構成により、入力データ１ビットにつき１マシンサイクルでＣＲＣ演算を繰り返し実行することができるので、ＤＳＰによるＣＲＣ演算を効率よく実行することができ、ＤＳＰの１チップ化、装置の小型化・軽量化・低価格化、及び、バッテリーの長寿命化を実現することができる。
【００２６】
本発明の第２の態様に係る演算処理装置は、第１記憶手段に格納された演算データの最上位ビットと第２記憶手段に格納された入力データとの２進数加算である第１演算を行い、前記演算データを１ビット最上位ビット側にシフトしたシフトデータと第３記憶手段に格納された生成多項式の係数との２進数加算である第２演算を行う第３演算手段と、前記第１演算の演算結果に基づき、前記第２演算の演算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段とを具備する構成を採る。
【００２７】
この構成により、１ビット当たり２マシンサイクルでＣＲＣ演算を行い、１つの演算器で２度のｍｏｄ２加算を行うことができるので、第１の態様よりも装置の構成を簡略化することができる。また、従来に比べて、ＤＳＰによるＣＲＣ演算を効率よく実行することができ、ＤＳＰの１チップ化、装置の小型化・軽量化・低価格化、及び、バッテリーの長寿命化を実現することができる。
【００２８】
本発明の第３の態様は、第２の態様の演算処理装置において、選択手段は、第２演算の演算結果が入力されるまで、第１演算の演算結果を第４記憶手段に保持する構成を採る。
【００２９】
この構成により、ＣＲＣ演算時に生じる一時的なデータを高速に保持することができるので、２相クロックで動作させることにより、１つの演算器で、しかも、入力データ１ビット当たり１マシンサイクル相当の時間でＣＲＣ演算を実行することができる。
【００３０】
本発明の第４の態様に係る演算処理装置は、第１記憶手段に格納された演算データを１ビット最上位ビット側にシフトしたシフトデータに第２記憶手段に格納された入力データを合併した値と、第３記憶手段に格納された生成多項式の係数に前記演算データの最上位ビットを合併した値との２進数加算を行う第４演算手段と、入力データと演算データの最上位ビットとの２進数加算結果に基づき、前記シフトデータと生成多項式の係数との２進数加算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段とを具備する構成を採る。
【００３２】
これらの構成により、２種類のデータを合併してから演算することができるので、演算器を１つにして、１ビット当たり１マシンサイクルでＣＲＣ演算を行うことができ、第１の態様よりも装置の構成を簡略化することができる。
【００３３】
本発明の第６の態様は、第１から第５のいずれかの演算処理装置において、第１記憶手段に格納される演算データの最上位ビットを所定位置に移動するシフト手段を具備する構成を採る。
【００３４】
この構成により、任意のビットのＣＲＣ演算に対応させることができる。
【００３５】
本発明の第７の態様は、第６の演算処理装置において、シフト手段はＤＳＰの汎用シフタを構成要素とする構成を採る。
【００３６】
本発明の第８の態様は、第１から第７のいずれかの演算処理装置において、演算手段のうち、少なくとも一つがＡＬＵを構成要素とする構成を採る。
【００３７】
本発明の第９の態様は、第１から第８のいずれかの演算処理装置において、記憶手段のうち、少なくとも一つがＤＳＰの汎用レジスタを構成要素とする構成を採る。
【００３８】
本発明の第１０の態様は、第１から第９のいずれかの演算処理装置において、記憶手段のうち、少なくとも一つがシフトレジスタを構成要素とする構成を採る。
【００３９】
これらの構成により、ＣＲＣ演算においてＤＳＰの汎用演算器を用いることができるので、ＣＲＣアクセラレータのためのハード規模投資量を削減でき、一層の装置の小型化・軽量化・低価格化を実現することができる。
【００４０】
本発明の第１１の態様に係る無線通信端末装置は、第１から第１０のいずれかの態様の演算処理装置を搭載する構成を採る。
【００４１】
本発明の第１２の態様に係る無線通信基地局装置は、第１１の態様の無線通信端末装置と無線通信を行う構成を採る。
【００４２】
本発明の第１３の態様に係る無線通信基地局装置は、第１から第１０のいずれかの態様の演算処理装置を搭載する構成を採る。
【００４３】
本発明の第１４の態様に係る無線通信端末装置は、第１３の態様の無線通信端末装置と無線通信を行う構成を採る。
【００４４】
これらの構成によりＣＲＣ演算を効率的に行うことができる無線通信を行うことができる。
【００４５】
本発明の第１５の態様に係るコンピュータ読み取り可能な記録媒体は、コンピュータを、第１記憶手段に格納された演算データの最上位ビットと第２記憶手段に格納された入力データとの２進数加算を行う第１演算手段と、前記演算データを１ビット最上位ビット側にシフトしたシフトデータと第３記憶手段に格納された生成多項式の係数との２進数加算を行う第２演算手段と、前記第１演算手段の演算結果に基づき、前記第２演算手段の演算結果あるいは前記シフトデータのいずれかを選択し、新たな演算データとして前記第１記憶手段に格納する選択手段として機能させるためのプログラムを記録した構成を採る。
【００４６】
以下、本発明の実施の形態について、添付図面を参照して詳細に説明する。
【００４７】
（実施の形態１）
図１は、本実施の形態に係る演算処理装置の構成を示すブロック図である。
【００４８】
図１において、演算データを格納する演算データ記憶部１０１と、入力データを格納する入力データ記憶部１０２と、生成多項式の係数を格納する生成多項式記憶部１０３と、ｍｏｄ２加算を行う演算器１０４、１０５と、入力した２つのデータのいずれか一方を出力する選択部１０６とから主に構成される。
【００４９】
以下、３ｂｉｔＣＲＣの場合を例に、各構成部が行う処理を具体的に説明する。
【００５０】
ＮｂｉｔＣＲＣの場合、演算データ記憶部１０１及び生成多項式記憶部１０３は少なくともＮビットで構成され、演算器１０５は少なくともＮビットのｍｏｄ２加算を行う能力を有する必要がある。例えば、３ｂｉｔＣＲＣの場合、演算データ記憶部１０１及び生成多項式記憶部１０３は、少なくとも３ビットで構成され、演算器１０５は少なくとも３ビットのｍｏｄ２加算を行う。
【００５１】
演算データ記憶部１０１に格納される演算データをＭＳＢから順に｛ａ２、ａ１、ａ０｝とした場合、ａ２が３次と２次との境界、ａ１が２次と１次との境界、ａ０が１次と０次との境界に対応する。
【００５２】
入力データ記憶部１０２からは、ＣＲＣ対象となる入力データが先頭から１マシンサイクル毎に１ビットづつ順に出力される。以下、入力データ記憶部１０２に格納される入力データの各時点における先頭の１ビットを｛ｂ｝とする。
【００５３】
生成多項式記憶部１０３には、（最高次数−１）次以下の項の係数が、次数が最も高いものをＭＳＢとして、順に格納される。例えば、生成多項式の係数をＭＳＢから順に｛ｃ２、ｃ１、ｃ０｝とし、生成多項式としてＧ（Ｘ）＝１＋Ｘ＋Ｘ３を用いた場合、｛ｃ２、ｃ１、ｃ０｝＝｛０、１、１｝が格納される。
【００５４】
演算器１０４は、演算データ記憶部１０１に格納された演算データのＭＳＢ｛ａ２｝と、入力データ記憶部１０２に格納された入力データ｛ｂ｝とのｍｏｄ２加算を行い、１ビットの演算結果｛ａ２＾ｂ｝を選択部１０６に出力する。
【００５５】
演算器１０５は、演算データ記憶部１０１に格納された演算データをＭＳＢ側に１ビットシフトさせたデータ（以下、「シフトデータ」という）｛ａ１、ａ０、０｝と、生成多項式記憶部１０３に格納された生成多項式の係数｛ｃ２、ｃ１、ｃ０｝とのｍｏｄ２加算を行い、演算結果｛ａ１＾ｃ２、ａ０＾ｃ１、０＾ｃ０｝を選択部１０６に出力する。
【００５６】
選択部１０６は、演算器１０４の演算結果｛ａ２＾ｂ｝に基づいて、シフトデータ｛ａ１、ａ０、０｝と演算器１０５の演算結果｛ａ１＾ｃ２、ａ０＾ｃ１、０＾ｃ０｝のいずれか一方を選択し、選択したものを新たに演算データ｛ａ２、ａ１、ａ０｝として演算データ記憶部１０１に格納する。例えば、演算器１０４の演算結果が「０」であればシフトデータを演算データ記憶部１０１に格納し、「１」であれば演算器１０５の演算結果を演算データ記憶部１０１に格納する。
【００５７】
次に、本実施の形態に係る演算処理装置の処理動作について、図２のフロー図を用いて説明する。なお、図２では、３ｂｉｔＣＲＣの場合を示し、演算データをＡ［２：０］、入力データの各時点における先頭の１ビットをＢ、生成多項式の係数をＣ［２：０］として表す。
【００５８】
まず、ＳＴ１５１で、記憶部１０１に格納される演算データＡ［２：０］を例えばＡ（０，０，０）等に初期化する。また、ＣＲＣ対象となる入力データを記憶部１０２に読み込ませる。また、生成多項式の係数Ｃ［２：０］を記憶部１０３に設定する。例えば、生成多項式がＧ（Ｘ）＝１＋Ｘ＋Ｘ３である場合、Ｃ（０，１，１）となる。
【００５９】
次に、ＳＴ１５２で、演算器１０４にて、Ａ［２］とＢとのｍｏｄ２加算：Ｄ＝Ａ［２］＾Ｂが行われ、１ビットの演算結果Ｄが選択部１０６に出力される。
【００６０】
次に、ＳＴ１５３からＳＴ１５５で、選択部１０６にて、Ｄの値に基づくＡの更新処理が行われる。すなわち、Ｄ＝０の場合、シフトデータＡ＜＜１を新たなＡとする処理：Ａ＝Ａ＜＜１が行われ、Ｄ＝１の場合、演算器１０４にて行われたＡ＜＜１とＣとのｍｏｄ２加算の結果を新たな演算データとする処理：Ａ＝（Ａ＜＜１）＾Ｃが行われる。
【００６１】
そして、ＳＴ１５６の判断で入力データがなくなるまで、ＳＴ１５２からＳＴ１５５までの処理が繰り返され、ＳＴ１５７で、最終的に得られるＡが、３ｂｉｔＣＲＣの演算結果である。
【００６２】
このように、入力データ１ビットにつき１マシンサイクルでＣＲＣ演算を繰り返し実行することにより、ＤＳＰによるＣＲＣ演算を効率よく実行することができ、ＤＳＰの１チップ化、携帯端末の小型化・軽量化・低価格化、及び、バッテリーの長寿命化を実現することができる。
【００６３】
（実施の形態２）
図３は、本実施の形態に係る演算処理装置の構成を示すブロック図である。なお、図３において、図１と共通の構成部分については図１と同一の符号を付して説明を省略する。
【００６４】
図３に示す演算処理装置は、図１に示す演算処理装置と比較して、演算器１０４、１０５の代りに、選択部２０１、２０２、演算器２０３、演算結果記憶部２０４を追加した構成を採る。
【００６５】
図３に示す演算処理装置は、図１に示す演算処理装置における２つの演算器１０４、１０５の処理を演算器２０３で兼用し、１ビット当たり２マシンサイクルでＣＲＣ演算を実行する。選択部２０１及び選択部２０２は、１マシンサイクル目と２マシンサイクル目とで、演算器２０３に入力するデータを切替える。
【００６６】
以下、各マシンサイクルにおける各部の動作について説明する。
【００６７】
１マシンサイクル目において、選択部２０１は、入力データ記憶部１０２に格納された入力データを演算器２０３に出力する。選択部２０２は、演算データ記憶部１０１に格納された演算データのＭＳＢを演算器２０３に出力する。演算器２０３は、入力データと演算データのＭＳＢとのｍｏｄ２加算を行い、演算結果を演算結果記憶部２０４に格納する。
【００６８】
２マシンサイクル目において、選択部２０１は、演算データ記憶部１０１に格納された演算データを演算器２０３に出力する。選択部２０２は、生成多項式記憶部１０３に格納された生成多項式の係数を演算器２０３に出力する。演算器２０３は、演算データと生成多項式の係数とのｍｏｄ２加算を行い、演算結果を選択部１０６に出力する。
【００６９】
また、２マシンサイクル目において、選択部１０６は、演算結果記憶部２０４に格納された演算結果に基づいて、シフトデータと演算器２０３の演算結果のいずれか一方を選択し、選択したものを新たに演算データとして演算データ記憶部１０１に格納する。例えば、演算結果記憶部２０４に格納された演算結果が「０」であればシフトデータを演算データ記憶部１０１に格納し、「１」であれば演算器１０５の演算結果を演算データ記憶部１０１に格納する。
【００７０】
このように、１ビット当たり２マシンサイクルでＣＲＣ演算を行い、１つの演算器で２度のｍｏｄ２加算を行うことにより、実施の形態１よりも装置の構成を簡略化することができる。また、従来に比べて、ＤＳＰによるＣＲＣ演算を効率よく実行することができ、ＤＳＰの１チップ化、携帯端末の小型化・軽量化・低価格化、及び、バッテリーの長寿命化を実現することができる。
【００７１】
なお、演算処理装置を２相クロックで動作させ、演算結果記憶部２０４をラッチ（ｌａｔｃｈ  ｃｉｒｃｕｉｔ）で構成し、１相目のクロックでラッチさせ、上記１サイクル目に相当する各部の処理を１相目のクロックで行い、上記２サイクル目に相当する各部の処理を２相目のクロックで行わせることにより、本実施の形態に係る演算処理装置は、入力データ１ビット当たり１マシンサイクル相当の時間でＣＲＣ演算を実行することができる。
【００７２】
（実施の形態３）
図４は、本実施の形態に係る演算処理装置の構成を示すブロック図である。なお、図４において、図１と共通の構成部分については図１と同一の符号を付して説明を省略する。
【００７３】
図４に示す演算処理装置は、図１に示す演算処理装置と比較して、演算器１０４、１０５の代りに、演算器３０１を追加した構成を採る。
【００７４】
図４に示す演算処理装置は、図１に示す演算処理装置における２つの演算器１０４、１０５の処理を演算器３０１で兼用し、２種類のデータをマージ（ｍｅｒｇｅ：合併）してから演算することにより、１ビット当たり１マシンサイクルでＣＲＣ演算を実行する。
【００７５】
以下、３ｂｉｔＣＲＣの場合を例に、各構成部が行う処理を具体的に説明する。
【００７６】
３ｂｉｔＣＲＣの場合、演算データ記憶部１０１及び生成多項式記憶部１０３は、少なくとも３ビットで構成され、演算器３０１は少なくとも４ビットのｍｏｄ２加算を行う。
【００７７】
演算データ記憶部１０１に格納される演算データをＡ［２：０］、入力データ記憶部１０２に格納される入力データの各時点における先頭の１ビットをＢ、生成多項式記憶部１０３に格納される生成多項式の係数をＣ［２：０］とする。
【００７８】
演算器３０１に入力されるデータの一方は、演算データ記憶部１０１に格納された演算データを１ビットＭＳＢ側に論理シフトしたデータ｛Ａ［１］、Ａ［０］、０｝と入力データ記憶部１０２に格納された１ビットの入力データ｛Ｂ｝とをマージした値｛Ａ［１］、Ａ［０］、０、Ｂ｝である。また、他方は、生成多項式記憶部１０３に格納された生成多項式の係数｛Ｃ［２］、Ｃ［１］、Ｃ［０］｝と演算データ記憶部１０１に格納された演算データのＭＳＢ｛Ａ［２］｝とをマージした値｛Ｃ［２］、Ｃ［１］、Ｃ［０］、Ａ［２］｝である。
【００７９】
演算器３０１は、｛Ａ［１］、Ａ［０］、０、Ｂ｝と｛Ｃ［２］、Ｃ［１］、Ｃ［０］、Ａ［２］｝とのｍｏｄ２加算を行い、加算結果を選択部１０６に出力する。
【００８０】
選択部１０６は、演算器３０１の演算結果のＬＳＢ｛Ａ［２］＾Ｂ｝に基づいて、シフトデータ｛Ａ［１］、Ａ［０］、０｝と演算器３０１のＬＳＢ以外の演算結果｛Ａ［１］＾Ｃ［２］、Ａ［０］＾Ｃ［１］、０＾Ｃ［０］｝のいずれか一方を選択し、選択したものを新たに演算データ｛Ａ［２：０］｝として演算データ記憶部１０１に格納する。例えば、｛Ａ［２］＾Ｂ｝が「０」であれば｛Ａ［１］、Ａ［０］、０｝を演算データ記憶部１０１に格納し、「１」であれば｛Ａ［１］＾Ｃ［２］、Ａ［０］＾Ｃ［１］、０＾Ｃ［０］｝を演算データ記憶部１０１に格納する。
【００８１】
このように、２種類のデータをマージしてから演算することにより、演算器を１つにして、１ビット当たり１マシンサイクルでＣＲＣ演算を行うことができ、実施の形態１よりも装置の構成を簡略化することができる。
【００８２】
（実施の形態４）
図５は、本実施の形態に係る演算処理装置の構成を示すブロック図である。なお、図５において、図１と共通の構成部分については図１と同一の符号を付して説明を省略する。
【００８３】
図５に示す演算処理装置は、図１に示す演算処理装置と比較して、シフト部４０１を追加した構成を採る。
【００８４】
シフト部４０１は、生成多項式の（最高次数−１）の値だけ演算データ記憶部１０１に格納される演算データをＬＳＢ側に論理シフトし、ＬＳＢの値を演算器１０４に出力する。
【００８５】
これにより、任意のビットのＣＲＣ演算に対応させることができる。
【００８６】
（実施の形態５）
図６は、本実施の形態に係る演算処理装置の構成を示すブロック図である。なお、図６において、図５と共通の構成部分については図５と同一の符号を付して説明を省略する。
【００８７】
図６に示す演算処理装置は、図５に示す演算処理装置と比較して、演算データ記憶部１０１を汎用レジスタ５０１にて構成し、入力データ記憶部１０２をＲＡＭ５０２とシフトレジスタ５０３にて構成し、生成多項式記憶部１０３をＲＯＭ５０４と汎用レジスタ５０５にて構成し、シフト部４０１を汎用シフタ５０６にて構成し、演算器１０５をＡＬＵ（Ａｒｉｔｈｍｅｔｉｃ  Ｌｏｇｉｃ  Ｕｎｉｔ）５０７にて構成している。
【００８８】
以下、生成多項式としてＧ（Ｘ）＝１＋Ｘ＋Ｘ３を用い、１６ビットの固定小数点ＤＳＰを用いて３ｂｉｔＣＲＣを実現する場合を例に、各構成部が行う処理を具体的に説明する。
【００８９】
汎用レジスタ５０１には、演算データＡ［１５：０］が格納され、ＣＲＣ演算を行う前に初期値Ａ［１５：０］＝０×００００が設定される。
【００９０】
ＲＡＭ５０２には、入力データが１６ビット詰めでＭＳＢから先頭にデータが数ワード分格納され、ＣＲＣ演算を行う前に、１ワード分の入力データＢ［１５：０］がシフトレジスタ５０３に転送される。
【００９１】
シフトレジスタ５０３は、ＣＲＣ演算が実行されると、１マシンサイクルに１回、ＭＳＢの値を演算器１０４に出力し、同時にシフトアップする。
【００９２】
ＲＯＭ５０４には、少なくとも１つの生成多項式の係数が格納され、ＣＲＣ演算を行う前に、予めＤＳＰが指示した生成多項式が汎用レジスタ５０５に転送される。本例の場合、ＲＯＭ５０４には｛０、１、１｝が格納される。
【００９３】
汎用レジスタ５０５は、ＲＯＭ５０４の出力が１６ビットに満たない場合、生成多項式下位側に、残りの上位ビットを零詰めして格納する。３ｂｉｔＣＲＣの場合、汎用レジスタ５０５は、Ｃ［１５：０］＝０×０００３を格納する。
【００９４】
汎用シフタ５０６は、生成多項式の（最高次数−１）の値だけ汎用レジスタ５０１に格納された演算データＡ［１５：０］をＬＳＢ側に論理シフトし、ＬＳＢの値を演算器１０４に出力する。本例の場合、汎用シフタ５０６はＡ［２］を出力する。
【００９５】
ＡＬＵ５０７には、汎用レジスタ５０１に格納された演算データを１ビットＭＳＢ側に論理シフトした値であるシフトデータ｛Ａ［１４：０］、０｝が常に固定配線で入力される。また、ＡＬＵ５０７には、汎用レジスタ５０５に格納された生成多項式の係数Ｃ［１５：０］が入力される。ＡＬＵ５０７は、｛Ａ［１４：０］、０｝とＣ［１５：０］とのｍｏｄ２加算を行い、演算結果を選択部１０６に出力する。
【００９６】
選択部１０６には、ＡＬＵ５０７の演算結果と、シフトデータが常に固定配線で入力される。選択部１０６は、演算器１０４の演算結果に基づいて、ＡＬＵ５０７の演算結果とシフトデータのいずれか一方を選択し、選択したものを新たに演算データとして汎用レジスタ５０１に格納する。例えば、演算器１０４の演算結果が「０」であればシフトデータを汎用レジスタ５０１に格納し、「１」であればＡＬＵ５０７の演算結果を汎用レジスタ５０１に格納する。
【００９７】
ここで、汎用レジスタ５０１、５０５は、ＣＲＣ演算以外における途中の演算結果を保存できる。
【００９８】
シフトレジスタ５０３は、割り算命令等、ＤＳＰのＣＲＣ演算以外の命令と兼用できる。
【００９９】
汎用シフタ５０６は、ＣＲＣ演算以外のシフト演算実行命令時は、汎用レジスタ群やメモリ（ＲＡＭ又はＲＯＭ）等からデータを入力してシフト演算を行い、演算結果を汎用レジスタやメモリ等に書込みを行う。
【０１００】
ＡＬＵ５０７は、ＣＲＣ演算以外のＡＬＵ演算実行命令時は、汎用レジスタ群やメモリ（ＲＡＭ又はＲＯＭ）等からデータを入力してＡＬＵ演算を行い、演算結果を汎用レジスタやメモリ等に書込みを行う。
【０１０１】
このように、ＣＲＣ演算にＤＳＰの汎用レジスタ、シフトレジスタ、汎用シフタ、ＡＬＵ等を適宜用いることにより、演算処理装置をＬＳＩ化する場合、チップ面積をさらに削減することができ、コストを低減することができる。
【０１０２】
なお、上記各実施の形態においては、生成多項式の次数の高い方をＭＳＢ側に格納したが、ＬＳＢ側に格納して適宜変更を施すことも可能である。
【０１０３】
また、無線通信の基地局装置あるいは端末装置のチャネル復号部に上記各実施の形態に係る演算処理装置のいずれかを組み込むことにより、チャネル符号化部、チャネル復号部及びタイミング制御部等を１チップのＤＳＰのソフトウェアで形成できるため、装置における部品点数を削減でき、装置の小型化・軽量化・低価格化を図ることができる。
【０１０４】
【発明の効果】
以上説明したように、本発明の演算処理装置は、入力データ１ビットにつき１又は２マシンサイクルでＣＲＣ演算を繰り返し実行することができるので、ＤＳＰによるＣＲＣ演算を効率よく実行することができ、ＤＳＰの１チップ化、携帯端末の小型化・軽量化・低価格化、及び、バッテリーの長寿命化を実現することができる。
【図面の簡単な説明】
【図１】本発明の実施の形態１に係る演算処理装置の構成を示すブロック図
【図２】上記実施の形態に係る演算処理装置の処理動作を示すフロー図
【図３】本発明の実施の形態２に係る演算処理装置の構成を示すブロック図
【図４】本発明の実施の形態３に係る演算処理装置の構成を示すブロック図
【図５】本発明の実施の形態４に係る演算処理装置の構成を示すブロック図
【図６】本発明の実施の形態５に係る演算処理装置の構成を示すブロック図
【図７】生成多項式Ｇ（Ｘ）＝１＋Ｘ＋Ｘ３  のＣＲＣ演算の符号化回路図
【符号の説明】
１０１  演算データ記憶部
１０２  入力データ記憶部
１０３  生成多項式記憶部
１０４、１０５、２０３、３０１  演算器
１０６、２０１、２０２  選択部
２０４  演算結果記憶部
４０１  シフト部
５０１  汎用レジスタ
５０３  シフトレジスタ
５０５  汎用レジスタ
５０６  汎用シフタ
５０７  ＡＬＵ
【図１】
0003607116.tif 000002
【図２】
0003607116.tif 000003
【図３】
0003607116.tif 000004
【図４】
0003607116.tif 000005
【図５】
0003607116.tif 000006
【図６】
0003607116.tif 000007
【図７】
0003607116.tif 000008