JP2012238952A - Crc演算回路及びプロセッサ - Google Patents

Crc演算回路及びプロセッサ Download PDF

Info

Publication number
JP2012238952A
JP2012238952A JP2011105213A JP2011105213A JP2012238952A JP 2012238952 A JP2012238952 A JP 2012238952A JP 2011105213 A JP2011105213 A JP 2011105213A JP 2011105213 A JP2011105213 A JP 2011105213A JP 2012238952 A JP2012238952 A JP 2012238952A
Authority
JP
Japan
Prior art keywords
data
circuit
crc
circuits
exclusive
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.)
Granted
Application number
JP2011105213A
Other languages
English (en)
Other versions
JP5724601B2 (ja
Inventor
Yoshitaka Nomura
義孝 野村
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 JP2011105213A priority Critical patent/JP5724601B2/ja
Publication of JP2012238952A publication Critical patent/JP2012238952A/ja
Application granted granted Critical
Publication of JP5724601B2 publication Critical patent/JP5724601B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Detection And Correction Of Errors (AREA)
  • Error Detection And Correction (AREA)

Abstract

【課題】少ない処理段数でCRC演算を行うことができるCRC演算回路を提供することを課題とする。
【解決手段】CRC演算回路は、第3のデータのうちの最上位ビットのデータと、第4のデータとの排他的論理和を演算する第1の排他的論理和回路(1403)と、第3のデータのうちの最上位ビットのデータと、第1のデータとの論理積を演算する複数の第1の論理積回路(1401)と、複数の第1の論理積回路の出力データと、第3のデータのうちの最上位ビット以外のデータとの排他的論理和を演算する複数の第2の排他的論理和回路(1402)と、第1の排他的論理和回路の出力データと、第2のデータとの論理積を演算する複数の第2の論理積回路(1404)と、複数の第2の排他的論理和回路のうちの一部の出力データと、複数の第2の論理積回路のうちの一部の出力データとの論理和を演算する複数の論理和回路(1405)とを有する。
【選択図】図14

Description

本発明は、CRC(巡回冗長検査:Cyclic Redundancy Check)演算回路及びプロセッサに関する。
ソフトウェアにて無線通信処理を行うSDR(Software Defined Radio)は、ハードウェアによる無線通信処理と比較して、ソフトウェアによる処理のため、規格の変更や複数方式への対応という点において、優位な方式である。しかし、複雑で演算量の多い無線通信処理を行うためには、汎用のデジタルシグナルプロセッサ(DSP)だけでは無理があり、無線通信処理に適した専用の命令及び専用の命令処理ユニットを設ける必要がある。今後も通信データ転送量の増加が予想されており、短時間でより多くの処理を行うことが求められている。
また、生成多項式を示すデータ保持し、生成多項式を示すデータと、全ビットの値が0であるゼロデータとを選択的に出力する生成多項式供給手段と、CRC演算を行う演算データを出力する演算データ供給手段と、生成多項式を示すデータまたはゼロデータと、演算データとの排他的論理和演算を行う算術論理演算手段とを備えるCRC演算装置が知られている(例えば、特許文献1参照)。
また、第1及び第2の入力信号に信号処理を施す演算回路と、第1の入力信号又は演算回路の出力信号を選択的に出力する第1の選択回路と、第2の入力信号又は演算回路の出力信号を選択的に出力する第2の選択回路とをそれぞれ有する基本回路を直列に複数接続し、第1及び第2の選択回路によりいずれの信号を出力するかを適宜選択することで、回路全体での動作を変更可能にして、その選択に応じて異なる信号処理を1つの回路で実現することができるようにする信号処理回路が知られている(例えば、特許文献2参照)。
特開2001−358594号公報 特開2005−341299号公報
本発明の目的は、少ない処理段数でCRC演算を行うことができるCRC演算回路及びプロセッサを提供することである。
CRC演算回路は、生成多項式の最大次数が最上位ビットになるように配置され、前記生成多項式を表す複数ビットの第1のデータと、前記生成多項式の開始ビット位置を示す複数ビットの第2のデータと、CRC演算の状態を表す複数ビットの第3のデータとを入力し、第4のデータに対してCRC演算するCRC演算回路であって、前記複数ビットの第3のデータのうちの最上位ビットのデータと、前記第4のデータとの排他的論理和を演算する第1の排他的論理和回路と、前記複数ビットの第3のデータのうちの最上位ビットのデータと、前記複数ビットの第1のデータとの論理積を演算する複数の第1の論理積回路と、前記複数の第1の論理積回路の出力データと、前記複数ビットの第3のデータのうちの最上位ビット以外の複数ビットのデータとの排他的論理和を演算する複数の第2の排他的論理和回路と、前記第1の排他的論理和回路の出力データと、前記複数ビットの第2のデータとの論理積を演算する複数の第2の論理積回路と、前記複数の第2の排他的論理和回路のうちの一部の出力データと、前記複数の第2の論理積回路のうちの一部の出力データとの論理和を演算する複数の論理和回路とを有する。
CRC演算回路は、生成多項式の最大次数が最上位ビットになるように配置され、生成多項式を表す複数ビットの第1のデータを用いることにより、少ない処理段数でCRC演算を行うことができる。
実施形態によるデジタルシグナルプロセッサ(DSP)の構成例を示すブロック図である。 実施形態による通信システムの構成例を示す図である。 図2のCRC付加部及びCRC確認部の構成例を示す図である。 図1の専用命令回路(CRC演算回路)の構成例を示す図である。 図4のデータs1の生成方法を説明するための図である。 図4のデータs0の生成方法を説明するための図である。 図4の入力データの構成例を示す図である。 図1の専用命令回路(CRC演算回路)の他の構成例を示す図である。 実施形態による図1の専用命令回路(CRC演算回路)の構成例を示す図である。 図9の事前処理部内のシフト量演算回路の構成例を示す図である。 図9の事前処理部内の第1の入力シフト回路の構成例を示す図である。 図9の事前処理部内の第2の入力シフト回路の構成例を示す図である。 図9の事前処理部内の第3の入力シフト回路の構成例を示す図である。 図9のCRC演算ユニットの構成例を示す図である。 図9の事後処理部内の出力シフト回路の構成例を示す図である。 他の実施形態による図1の専用命令回路(CRC演算回路)の構成例を示す図である。
図2は、実施形態による通信システムの構成例を示す図である。通信システムは、送信装置及び受信装置を有する。送信装置は、MAC層201、CRC付加部202、符号化・変調部203、デジタル/アナログ変換部204、RF(Radio Frequency)部205及びアンテナ206を有する。MAC層201は、送信データを出力する。CRC付加部202は、送信データに対してCRC演算を行い、誤り検出符号(剰余)を付加した送信データを出力する。CRC付加部202の詳細は、後に図3を参照しながら説明する。符号化・変調部203は、CRC付加部202の出力データに対して誤り訂正の符号化又はインターリーブ処理、及びOFDM方式又はCDMA方式等の変調を行い、出力する。デジタル/アナログ変換部204は、符号化・変調部203の出力データをデジタルからアナログに変換して出力する。RF部205は、デジタル/アナログ変換部204の出力データを低周波数信号(ベースバンド周波数信号)から所定の高周波数信号に変換し、アンテナ206を介して、無線送信する。
受信装置は、アンテナ216、RF部215、アナログ/デジタル変換部214、復調・復号部213、CRC確認部212及びMAC層211を有する。RF部215は、アンテナ216を介して受信データを無線受信し、受信データを高周波数信号から低周波数信号(ベースバンド周波数信号)に変換して出力する。アナログ/デジタル変換部214は、RF部215の出力データをアナログからデジタルに変換して出力する。復調・復号部213は、アナログ/デジタル変換部214の出力データに対してOFDM方式又はCDMA方式等の復調、及び逆インターリーブ処理又は誤り訂正処理の復号を行い、出力する。CRC確認部212は、誤り検出部であり、復調・復号部213の出力データに対してCRC演算を行い、受信データに誤りがないか否かを検出する。MAC層211は、誤りの有無に応じて受信データの処理を行う。
図3は、図2のCRC付加部202の構成例を示す図である。CRC付加部202は、送信データを先頭から1ビットずつ入力データrとして入力する。排他的論理和回路301は、入力データrとレジスタd4の出力データとの排他的論理和データを出力する。レジスタd0は、排他的論理和回路301の出力データを記憶する。排他的論理和回路302は、レジスタd0の出力データとレジスタd4の出力データとの排他的論理和データを出力する。レジスタd1は、排他的論理和回路302の出力データを記憶する。レジスタd2は、レジスタd1の出力データを記憶する。排他的論理和回路303は、レジスタd2の出力データとレジスタd4の出力データとの排他的論理和データを出力する。レジスタd3は、排他的論理和回路303の出力データを記憶する。レジスタd4は、レジスタd3の出力データを記憶する。レジスタd0〜d4は、シフトレジスタを構成し、入力データrのビット入力毎にデータをシフトして記憶する。
CRC付加部202は、CRC演算を行う。具体的には、CRC付加部202は、入力データrに対して所定の生成多項式Gでモジュロー2の除算を行い、剰余RSを入力データrの後ろに付加することにより送信データを生成し、出力する。図3の場合、生成多項式Gは、G=1+x+x3+x5である。ここで、xの演算はモジュロー2である。すなわち、CRC演算は、r÷G=Q・・・RSの演算を行う。ここで、Qは商である。書き換えると、r=G×Q+RSで表される。入力データrの全ビットの入力が終了した時点において、5個のレジスタd0〜d4に記憶されている5ビットのデータが剰余RSである。CRC付加部202は、剰余RSを入力データrの後ろに付加することにより送信データを生成する。送信データは、r+RSのビット列である。
次に、図2のCRC確認部212について説明する。CRC確認部212は、図3のCRC付加部202と同じ構成を有する。すなわち、CRC確認部212は、CRC付加部202と同じCRC演算を行う。CRC確認部212は、上記のように、CRC付加部202が生成したr+RSの送信データを入力する。その入力データは、シリアルデータのビット列である。CRC確認部212は、CRC付加部202と同様のCRC演算を行う。具体的には、CRC確認部212は、入力データrに対して所定の生成多項式Gでモジュロー2の除算を行う。この生成多項式Gは、CRC付加部202で用いた生成多項式Gと同じである。入力データrに誤りがなければ、CRC演算の剰余RSは、送信データRSと同じである。CRC確認部212は、入力データrを先頭から1ビットずつ入力し、入力データrの全ビットの入力が終わった時点でレジスタd0〜d4に記憶されている5ビットの剰余が送信データRSと同じであれば誤りなしの結果を出力し、同じでなければ誤りありの結果を出力する。
図1は、実施形態によるデジタルシグナルプロセッサ(DSP)の構成例を示すブロック図である。デジタルシグナルプロセッサ101は、図2のCRC付加部202及びCRC確認部212に用いることができる。デジタルプロセッサ101は、プログラムカウンタ104、デコーダ105、レジスタファイル106、ロード・ストアユニット107、専用命令回路108及び算術論理演算ユニット(ALU)109を有し、命令RAM102及びデータRAM103に接続され、CRC演算を行うことができる。命令RAM102は、CRC演算命令及びパラメータ設定命令等を記憶する。プログラムカウンタ104は、現在の実行命令アドレスを示すプログラムカウンタ値を記憶する。デジタルシグナルプロセッサ101は、プログラムカウンタ104のプログラムカウンタ値が示すアドレスの命令を命令RAM102から読み出す。デコーダ105は、命令RAM102から読み出された命令をデコードし、レジスタファイル106内のレジスタにパラメータ等を記憶させる。例えば、デコーダ105は、パラメータ設定命令をデコードすることにより、CRC演算の生成多項式等のパラメータをレジスタファイル106に記憶させる。また、デコーダ105は、CRC演算命令をデコードすることにより、CRC演算開始を指示するためのフラグをレジスタファイル106に記憶させる。ロード・ストアユニット107は、データRAM103からパラメータ等のデータをロードしてレジスタファイル106に記憶させる。また、ロード・ストアユニット107は、レジスタファイル106からCRC演算結果等のデータを読み出してデータRAM103にストアする。専用命令回路(CRC演算回路)108は、レジスタファイル106内のパラメータを入力し、レジスタファイル106内のフラグに応じてCRC演算を開始し、CRC演算結果をレジスタファイル106に書き込む。算術論理演算ユニット109は、レジスタファイル106内のパラメータ等のデータに対して算術論理演算を行い、その演算結果をレジスタファイル106に書き込む。
無線通信で使用する規格として、LTE(Long Term Evolution)やWCDMA(Wideband Code Division Multiple Access)等のように様々な規格が提案され、使用されている。各規格に対応したシステムLSIは、設計時に対応する規格を決めるため、他の規格へ対応することは難しい。この問題に対応するために、図1のデジタルシグナルプロセッサのソフトウェアを用いて無線通信処理を行うSDRの方式が有利である。SDRでは、各種の無線通信処理をソフトウェアにて行うため、様々な規格に対応することができる。加えて、設計上において発生した問題に対しても、ソフトウェアの更新によって問題を解決することが可能になる。
以上のように、SDRはその柔軟性でハードウェアによる無線通信処理に対して優位性がある。しかし、無線通信処理では非常に多くの演算処理を要求するものが多く、汎用のデジタルシグナルプロセッサを用いたSDRでは、規格で要求されている処理を満たすことが難しい。そのため、無線通信の規格で頻繁に使用されている処理等においては、図1のようにデジタルシグナルプロセッサに専用命令回路108を持たせることにより高速化を実現することができる。
図4は、図1の専用命令回路(CRC演算回路)108の構成例を示す図である。専用命令回路108は、データs0及びs1を設定することにより、種々の生成多項式Gを用いたCRC演算を行うことができる。レジスタd0〜d31は、32ビットレジスタの各ビットデータを示し、図3のレジスタd0〜d4に対応し、初期値は例えば0である。入力データrは、図3の入力データrに対応する。複数の排他的論理和回路405は、図3の排他的論理和回路301〜303に対応する。
図5は、図4のデータs1の生成方法を説明するための図である。例として、図3のCRC演算回路を構成するためのデータs1の生成方法を説明する。図3のCRC演算回路の生成多項式Gは、G=1+x+x3+x5である。データs1は、生成多項式Gを表すデータである。生成多項式Gは、x、x3及びx5を含み、x2、x4、x6〜x30を含まない。含む項を「1」で表し、含まない項を「0」で表すと、31ビットデータs1は、「x、x2、x3、x4、x5、x6、・・・、x30」=「1、0、1、0、1、0、・・・、0」で表される。なお、x0=1の項は、必ず存在するので、データs1からは削除する。図5の回路に対応させると、排他的論理和回路302,303及びレジスタd4のフィードバック出力部に対応する位置は、データs1上で「1」になる。
図6は、図4のデータs0の生成方法を説明するための図である。例として、図3のCRC演算回路を構成するためのデータs0の生成方法を説明する。図3のCRC演算回路の生成多項式Gは、G=1+x+x3+x5である。データs0は、生成多項式Gの最大次数を表すデータである。生成多項式Gの最大次数は、例えばx5である。したがって、データs0は、最大次数であるx5のビットのみが「1」になり、それ以外のビットが0になる。なお、x0=1の項は、必ず存在するので、データs0からは削除する。すると、32ビットデータs0は、「x、x2、x3、x4、x5、x6、・・・、x31」=「0、0、0、0、1、0、・・・、0」で表される。図6の回路に対応させると、最後段のレジスタd4のフィードバック出力部に対応する位置は、データs0上で「1」になる。なお、データs0は、データs1を基に生成してもよい。
図7は、図4の入力データrの構成例を示す図である。入力データrは、32ビットレジスタr0〜r31に記憶される。レジスタr0〜r31は、それぞれ32個のシリアルビットデータを示す。レジスタr31が先頭のビットデータであり、レジスタr0が最後のビットデータである。図5及び図6のCRC演算回路では、レジスタr31のビットデータが先頭データとして入力される。レジスタd0〜d31の32ビットデータは、レジスタd31のデータを先頭として、シリアルに入力される。レジスタr31のデータは1回目のCRC演算で使用する入力データであり、レジスタr30のデータは2回目のCRC演算で使用する入力データであり、レジスタr0のデータは32回目のCRC演算で使用する入力データである。
図4において、32個の論理積(AND)回路401は、それぞれ、32ビットレジスタd0〜d31のデータと32ビットデータs0との論理積データを出力する。例えば、32ビットデータs0は、図6の場合、「0、0、0、0、1、0、・・・、0」である。したがって、レジスタd4のデータを入力した論積回路401のみがレジスタd4のデータを出力し、その他の論理積回路401は「0」を出力する。複数の論理和(OR)回路402は、32個の論理積回路401の出力データの論理和を演算し、最終段の論理和回路402は32個の論理積回路401の出力データの論理和データ406を出力する。その結果、最終段の論理和回路402は、例えば図3の最後段のレジスタd4のフィードバック出力部に対応し、例えばレジスタd4のデータを出力する。
排他的論理和回路403は、例えば図3の排他的論理和回路301に対応し、1ビット入力データrと論理和データ406との排他的論理和データをレジスタd0に出力する。レジスタd0は、そのデータを記憶する。
31個の論理積回路404は、それぞれ、31ビットデータs1と論理和データ406との論理積データを出力する。例えば、31ビットデータs1は、図5の場合、「1、0、1、0、1、0、・・・、0」である。その場合、左から1番目、3番目及び5番目の論理積回路404のみが論理和データ406を出力し、その他の論理積回路404は「0」を出力する。
31個の排他的論理和回路405は、それぞれ、31個の論理積回路404の出力データと31ビットのレジスタd0〜d30のデータとの排他的論理和データを出力する。例えば、左から1番目、3番目及び5番目の論理積回路404のみが論理和データ406を出力するので、左から1番目、3番目及び5番目の排他的論理和回路404のみが論理和データ406とレジスタd0、d2、d4との排他的論理和データをレジスタd1、d3、d5に出力し、その他の排他的論理和回路404はレジスタd1、d3、d5〜d30のデータをそのままレジスタd2、d4、d6〜d31に出力する。
以上の処理により、1回目のCRC演算を行うことができる。図4の最上部のレジスタd0〜d31と最下部のレジスタd0〜d31は同じレジスタである。2回目のCRC演算を行う場合には、最下部のレジスタd0〜d31のデータが最上部のレジスタd0〜d31のデータになり、入力データrとしてレジスタr30のデータが入力される。この処理を入力データrのビット数分繰り返すことにより、CRC演算が完了する。以上のように、データs0及びs1を設定することにより、種々の生成多項式GのCRC演算を行うことができる。
図8は、図1の専用命令回路(CRC演算回路)108の他の構成例を示す図であり、入力データレジスタr16〜r31のデータに対してCRC演算を行う例を示す。複数個のCRC演算ユニット801は、直列に接続される。各CRC演算ユニット801は、図4の構成を有する。ただし、レジスタd0〜d31は、各CRC演算ユニット801内には設けられず、初段のCRC演算ユニット801の入力端子にデータを出力し、セレクタ802の出力データを入力する。複数個のCRC演算ユニット801は、レジスタd0〜d31を介さずに配線により接続され、直接データの伝達を行う。
例えば、入力データレジスタr16〜r31を使用する場合を例に説明する。16個のCRC演算ユニット801は、それぞれ、16個のレジスタr16〜r31のデータを入力し、CRC演算を行う。CRC演算回数レジスタ803は、CRC演算を行う回数を記憶する。CRC演算回数は、入力データrのビット数に対応する。32個のセレクタ802は、CRC演算回数レジスタ803に記憶されているCRC演算回数に応じて、16個のCRC演算ユニット801の出力データのうちの1個のCRC演算ユニット801の出力データを選択し、32個のレジスタd0〜d31に出力する。例えば、CRC演算回数が8回の場合には、上から8個目のCRC演算ユニット801の出力データをCRC演算結果として選択して出力する。
以上説明したように、SDR用デジタルシグナルプロセッサ101の命令で処理するCRC演算において、その生成多項式Gを表すデータs1及び生成多項式Gの最大次数を表すデータs0を設定することにより、様々な生成多項式GのCRC演算に対応することができる。
CRC演算用の専用命令を設けることにより、対応する無線通信処理を効率化することが可能である。しかし、高い周波数で動作するプロセッサ速度においては、CRC演算回路によってはクリティカルパスにおけるタイミングエラーが発生する可能性が大きくなり、問題になることがある。
ここで、図4の回路の処理段数を計算する。論理積回路401は1段分の処理段数、論理和回路402は32個のデータの論理和演算をするために5段分の処理段数、論理積回路404は1段分の処理段数、排他的論理和回路405は1段分の処理段数が必要である。したがって、図4の回路は、1+5+1+1=8段分の処理段数が必要である。
次に、図8の回路の処理段数を計算する。1個のCRC演算ユニット801は、図4の回路と同じく8段分の処理段数が必要である。したがって、16個のCRC演算ユニット801は、8段×16個=128段分の処理段数が必要である。また、セレクタ802は、16個のデータの中から1個のデータを選択するため8段分の処理段数が必要になる。したがって、図8の回路は、128+8=136段分の処理段数が必要になる。
以下、処理段数がより少ないCRC演算回路の実施形態を説明する。処理段数を少なくすることにより、CRC演算を高速化することができる。また、クリティカルパスの段数を減らすことができるので、タイミング余裕時間が長くなり、高速なプロセッサの使用が可能になる。
図9は、実施形態による図1の専用命令回路(CRC演算回路)108の構成例を示す図である。専用命令回路108は、状態レジスタd0〜d31、入力データレジスタ904、事前処理部901、CRC演算ユニット902及び事後処理部903を有するCRC演算回路である。入力データレジスタ904は、図7の32ビットレジスタr0〜r31に対応し、例えばレジスタr31である。事前処理部901は、図10のシフト量演算回路、図11の第1の入力シフト回路、図12の第2の入力シフト回路、及び図13の第3の入力シフト回路を有する。CRC演算ユニット902は、図14の回路構成を有する。事後処理部903は、図15の出力シフト回路を有する。
図10は、図9の事前処理部901内のシフト量演算回路の構成例を示す図である。32個の論理積回路1001は、それぞれ、32ビットデータs0と定数「0」〜「31」との論理積データを出力する。例えば、32ビットデータs0は、図6に示した通り、「0、0、0、0、1、0、・・・、0」である。したがって、左から5番目の論理積回路1001は定数「27」を出力し、その他の論理積回路1001は「0」を出力する。論理和回路1002は、32個の論理積回路1001の出力データの論理和を演算する。最終段の論理和回路1002は、32個の論理積回路1001の出力データの論理和データをシフト量レジスタ1003に出力する。例えば、32ビットデータs0が「0、0、0、0、1、0、・・・、0」の場合、シフト量レジスタ1003には定数「27」が記憶される。32ビットデータs0が「0、0、0、0、1、0、・・・、0」の場合、「1」のビット位置は左から5番目なので、32−5=27より、シフト量が「27」になる。すなわち、図10のシフト量演算回路は、生成多項式Gの最大次数のビット位置を表すデータs0を基にシフト量を演算し、シフト量レジスタ1003に書き込む。
図11は、図9の事前処理部901内の第1の入力シフト回路の構成例を示す図である。5段バレルシフタ1101は、シフト量レジスタ1003に記憶されているシフト量に応じて、32ビットデータs1を右にビットシフトする。ビットシフトされた32ビットデータのうち、下位31ビットが第1のデータs1’になる。例えば、シフト量レジスタ1003のシフト量が「27」の場合、5段バレルシフタ1101は、32ビットデータs1の「1、0、1、0、1、0、・・・、0」を27ビット右にシフトし、データ「0、・・・、1、0、1、0、1」を出力する。出力データ「0、・・・、1、0、1、0、1」のうち、最上位ビットは必ず1になるので、下位31ビットのデータ「0、・・・、1、0、1、0」を第1のデータs1’とする。すなわち、図11の第1の入力シフト回路は、生成多項式Gの最大次数が最上位ビットになるように生成多項式Gを表すデータs1をシフトすることにより複数ビットの第1のデータs1’を生成する。第1のデータs1’は、生成多項式Gの最大次数が最上位ビットになるように配置され、生成多項式Gを表すデータである。
図12は、図9の事前処理部901内の第2の入力シフト回路の構成例を示す図である。5段バレルシフタ1202は、シフト量レジスタ1003に記憶されているシフト量に応じて、32ビット規定値1201を右にビットシフトする。ビットシフトされた32ビットデータが第2のデータs0’になる。32ビット規定値1201は、最下位ビットのみが「1」のデータ「1、0、0、・・・、0、0」である。例えば、シフト量レジスタ1003のシフト量が「27」の場合、5段バレルシフタ1202は、32ビット規定値1201の「1、0、0、・・・、0、0」を27ビット右にシフトし、データ「0、0、・・・、0、1、0、0、0、0」を出力する。その出力データのうちの下位31ビットデータ「0、・・・、0、1、0、0、0、0」が、第2のデータs0’となる。すなわち、図12の第2の入力シフト回路は、シフト量レジスタ1003に記憶されているシフト量を基に規定値1201をシフトすることにより複数ビットの第2のデータs0’を生成する。第2のデータs0’は、生成多項式Gの開始ビット位置を示すデータである。
図13は、図9の事前処理部901内の第3の入力シフト回路の構成例を示す図である。5段バレルシフタ1301は、シフト量レジスタ1003に記憶されているシフト量に応じて、32ビット状態レジスタd0〜d31のデータを右にビットシフトする。ビットシフトされた32ビットデータが第3のデータd0’〜d31’になる。例えば、シフト量レジスタ1003のシフト量が「27」の場合、5段バレルシフタ1301は、32ビット状態レジスタd0〜d31のデータ「d0、d1、d2、・・・、d29、d30、d31」を27ビット右にシフトし、データ「0、0、・・・、0、d0、d1、d2、d3、d4」を出力する。出力データ「0、0、・・・、0、d0、d1、d2、d3、d4」は、第3のデータ「d0’、d1’、・・・、d26’、d27’、d28’、d29’、d30’d31’」となる。すなわち、図13の第3の入力シフト回路は、CRC演算の状態を表すレジスタd0〜d31のデータをシフトすることにより複数ビットの第3のデータd0’〜d31’を生成する。
図14は、図9のCRC演算ユニット902の構成例を示す図である。CRC演算ユニット902は、第1のデータs1’と、第2のデータs0’と、第3のデータd0’〜d31’とを入力し、第4のデータrに対してCRC演算する。第4のデータrは、入力データレジスタr0〜r31のデータであり、例えばレジスタr31のデータである。
第1の排他的論理和回路1403は、32ビットの第3のデータd0’〜d31’のうちの最上位ビットのデータd31’と、第4のデータrとの排他的論理和を演算して出力する。例えば、第1の排他的論理和回路1403は図3の排他的論理和回路301に対応し、最上位ビットデータd31’は図3の最後段のレジスタd4の出力フィードバックデータに対応し、第4のデータrは図3の入力データrに対応する。
31個の第1の論理積回路1401は、それぞれ、32ビットの第3のデータd0’〜d31’のうちの最上位ビットのデータd31’と、31ビットの第1のデータs1’との論理積を演算して出力する。例えば、図11の回路の場合、第1のデータs1’は、「0、・・・、1、0、1、0」である。その場合、右から2番目及び4番目の第1の論理積回路1401はそれぞれ第3のデータd31’を出力し、その他の第1の論理積回路1401は「0」を出力する。これにより、図3の場合、排他的論理和回路302及び303のみに、レジスタd4のデータを入力させることができる。
31個の第2の排他的論理和回路1402は、それぞれ、31個の第1の論理積回路1401の出力データと、32ビットの第3のデータd0’〜d31’のうちの最上位ビット以外の31ビットのデータd0’〜d30’との排他的論理和を演算して出力する。例えば、図11の回路の場合、第1のデータs1’は、「0、・・・、1、0、1、0」である。その場合、右から2番目の第2の排他的論理和回路1402は第3のデータd31’と第3のデータd29’との排他的論理和データを出力し、右から4番目の第2の排他的論理和回路1402は第3のデータd31’と第3のデータd27’との排他的論理和データを出力し、その他の第2の排他的論理和回路1402は第3のデータd0’〜d26’、d28’、d30’をそのまま出力する。右から2番目の第2の排他的論理和回路1402は図3の排他的論理和回路303に対応し、右から4番目の第2の排他的論理和回路1402は図3の排他的論理和回路302に対応する。
31個の第2の論理積回路1404は、それぞれ、第1の排他的論理和回路1403の出力データと、31ビットの第2のデータs0’との論理積を演算して出力する。例えば、図12の回路の場合、第2のデータs0’は、「0、・・・、0、1、0、0、0、0」である。その場合、右から5番目の第2の論理積回路1404は第1の排他的論理和回路1403の出力データを出力し、その他の第2の論理積回路1404は「0」を出力する。
30個の論理和回路1405は、それぞれ、31個の第2の排他的論理和回路1402のうちの左側の30個の第2の排他的論理和回路1402の出力データと、31個の第2の論理積回路1404のうちの右側の30個の第2の論積回路1404の出力データとの論理和を演算して出力する。
新たな第3のデータd0’は、31個の第2の論理積回路1404のうちの最左端の第2の論理積回路1404の出力データである。また、新たな第3のデータd1’〜d30’は、30個の論理和回路1405の出力データである。また、新たな第3のデータd31’は、31個の第2の排他的論理和回路1402のうちの最右端の第2の排他的論理和回路1402の出力データである。新たな第3のデータd0’〜d31’は、1回分のCRC演算の演算結果データを右にシフトしたデータに相当する。
図15は、図9の事後処理部903内の出力シフト回路の構成例を示す図である。5段バレルシフタ1501は、シフト量レジスタ1003に記憶されているシフト量に応じて、図14のCRC演算ユニット902が出力する新たな第3のデータd0’〜d31’を左にビットシフトする。例えば、シフト量レジスタ1003のシフト量が「27」の場合、5段バレルシフタ1501は、新たな第3のデータd0’〜d31’を27ビット左にシフトし、データ「d27’、d28’、d29’、d30’、d31’、0、・・・、0」を出力する。32ビット出力データ「d27’、d28’、d29’、d30’、d31’、0、・・・、0」は、32ビットCRC演算結果データとしてレジスタd0〜d31に出力される。すなわち、図15の出力シフト回路は、図14の30個の論理和回路1405の出力データ、31個の第2の論理積回路1404のうちの最左端の第2の論理積回路1404の出力データ、及び31個の第2の排他的論理和回路1402のうちの最右端の第2の排他的論理和回路1402の出力データを、図11の第1の入力シフト回路、図12の第2の入力シフト回路及び図13の第3の入力シフト回路に対して逆方向にシフトすることによりレジスタd0〜d31のCRC演算結果データを生成する。
以上のように、図9において、事前処理部901内の第1の入力シフト回路(図11)、第2の入力シフト回路(図12)及び第3の入力シフト回路(図13)は、右へのビットシフト処理を行う。CRC演算ユニット902は、事前処理部901により右にビットシフトされたデータを用いてCRC演算を行う。事後処理部903内の出力シフト回路(図15)は、CRC演算ユニット902の出力演算結果データに対して、事前処理部901のビットシフト方向とは逆に、左にビットすることにより、元のビット位置に戻す。これにより、正常なビット位置のレジスタd0〜d31のCRC演算結果データを得ることができる。
図14のCRC演算ユニット902の処理段数を計算する。第1の排他的論理和回路1403及び第1の論理積回路1401は処理段数が1段分、第2の排他的論理和回路1402及び第2の論理積回路1404は処理段数が1段分、論理和回路1405は処理段数が1段分である。したがって、図14のCRC演算ユニット902の処理段数の合計は、1+1+1=3段分である。図14のCRC演算ユニット902は処理段数が3段分であるので、図4のCRC演算回路(8段分の処理段数)よりも少なくなり、CRC演算に必要な処理段数を低減することができる。
図16は、他の実施形態による図1の専用命令回路(CRC演算回路)108の構成例を示す図であり、入力データレジスタr16〜r31のデータに対してCRC演算を行う例を示す。複数個のCRC演算ユニット902は、直列に接続される。各CRC演算ユニット902は、図14の構成を有する。事前処理部901、複数個のCRC演算ユニット902、セレクタ1601及び事後処理部903のそれぞれの間は、レジスタを介さずに配線により接続され、直接データの伝達を行う。
例えば、入力データレジスタr16〜r31を使用する場合を例に説明する。事前処理部901は、図11の第1の入力シフト回路、図12の第2の入力シフト回路及び図13の第3の入力シフト回路を有し、シフト量に応じてデータを右ビットシフトを行う。図16のCRC演算回路は、CRC演算ユニット902を複数接続し、複数のCRC演算ユニット902にレジスタr16〜r31の複数ビットの第4のデータをそれぞれ1ビットずつ入力する。16個のCRC演算ユニット902は、それぞれ、事前処理部901の出力データを基に、16個のレジスタr16〜r31のデータを入力し、CRC演算を行う。CRC演算回数レジスタ1602は、CRC演算を行う回数を記憶する。CRC演算回数は、入力データrのビット数に対応する。32個のセレクタ1601は、CRC演算回数レジスタ1602に記憶されているCRC演算回数に応じて、16個のCRC演算ユニット902の出力データのうちの1個のCRC演算ユニット902の出力データを選択し、事後処理部903に出力する。例えば、CRC演算回数が8回の場合には、上から8個目のCRC演算ユニット902の出力データをCRC演算結果として選択して出力する。事後処理部903は、上記の図15の構成を有し、シフト量に応じて、32個のセレクタ1601が出力するデータd0’〜d31’を左ビットシフトすることにより、CRC演算結果データをレジスタd0〜d31に出力する。
以上のように、事前処理部901がCRC演算に使用する生成多項式Gを表すデータs1の最大次数が最上位ビットに位置するようにシフトしてから、CRC演算ユニット902がCRC演算を行う。生成多項式Gの最大次数を最上位ビット位置に固定することにより、フィードバックされるデータのビット位置を固定することができるので、図16のように、1度に複数回のCRC演算を行う場合において、処理段数を少なくし、演算時間を短くすることができる。
次に、図16のCRC演算回路の処理段数を計算する。事前処理部901内のシフト量演算回路は、図10に示すように、論理積回路1001の1段分、32個のデータの論理和を演算する論理和回路1002の5段分を必要とする。シフト量演算回路の処理段数の合計は、6段分である。また、事前処理部901内の第3の入力シフト回路は、図13に示すように、5段バレルシフタ1301が10段分の処理段数を必要とする。また、CRC演算ユニット902は、図14を参照しながら上記で説明したように、3段分の処理段数を必要とする。したがって、16個のCRC演算ユニット902は、3段×16個=48段分の処理段数を必要とする。また、セレクタ1601は、16個のデータの中から1個のデータを選択するので8段分の処理段数を必要とする。また、事後処理部903は、図15に示すように、5段バレルシフタ1501が10段分の処理段数を必要とする。したがって、図16のCRC演算回路の処理段数の合計は、6+10+48+8+10=82段分である。
図16のCRC演算回路は、処理段数が82段分であるので、処理段数が136段分である図8のCRC演算回路よりも、処理段数が少なく、CRC演算時間を短くすることができる。また、タイミング余裕時間が長くなるので、高速なプロセッサの使用が可能になる。
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
901 事前処理部
902 CRC演算ユニット
903 事後処理部
904 入力データレジスタ
1601 セレクタ
1602 CRC演算回数レジスタ
1401 第1の論理積回路
1402 第2の排他的論理和回路
1403 第1の排他的論理和回路
1404 第2の論理積回路
1405 論理和回路

Claims (5)

  1. 生成多項式の最大次数が最上位ビットになるように配置され、前記生成多項式を表す複数ビットの第1のデータと、前記生成多項式の開始ビット位置を示す複数ビットの第2のデータと、CRC演算の状態を表す複数ビットの第3のデータとを入力し、第4のデータに対してCRC演算するCRC演算回路であって、
    前記複数ビットの第3のデータのうちの最上位ビットのデータと、前記第4のデータとの排他的論理和を演算する第1の排他的論理和回路と、
    前記複数ビットの第3のデータのうちの最上位ビットのデータと、前記複数ビットの第1のデータとの論理積を演算する複数の第1の論理積回路と、
    前記複数の第1の論理積回路の出力データと、前記複数ビットの第3のデータのうちの最上位ビット以外の複数ビットのデータとの排他的論理和を演算する複数の第2の排他的論理和回路と、
    前記第1の排他的論理和回路の出力データと、前記複数ビットの第2のデータとの論理積を演算する複数の第2の論理積回路と、
    前記複数の第2の排他的論理和回路のうちの一部の出力データと、前記複数の第2の論理積回路のうちの一部の出力データとの論理和を演算する複数の論理和回路と
    を有することを特徴とするCRC演算回路。
  2. 前記第1の排他的論理和回路、前記複数の第1の論理積回路、前記複数の第2の排他的論理和回路、前記複数の第2の論理積回路、及び前記複数の論理和回路を演算ユニットとし、前記演算ユニットを複数接続し、前記複数の演算ユニットに複数ビットの前記第4のデータをそれぞれ1ビットずつ入力することを特徴とする請求項1記載のCRC演算回路。
  3. さらに、前記生成多項式の最大次数が最上位ビットになるように前記生成多項式を表すデータをシフトすることにより前記複数ビットの第1のデータを生成する第1の入力シフト回路と、
    前記複数の論理和回路の出力データを、前記第1の入力シフト回路に対して逆方向にシフトすることによりCRC演算の結果データを生成する出力シフト回路と
    を有することを特徴とする請求項1又は2記載のCRC演算回路。
  4. さらに、前記生成多項式の最大次数のビット位置を基に規定値をシフトすることにより前記複数ビットの第2のデータを生成する第2の入力シフト回路と、
    前記CRC演算の状態を表すデータをシフトすることにより前記複数ビットの第3のデータを生成する第3の入力シフト回路と
    を有することを特徴とする請求項1〜3のいずれか1項に記載のCRC演算回路。
  5. 請求項1〜4のいずれか1項に記載のCRC演算回路を有することを特徴とするプロセッサ。
JP2011105213A 2011-05-10 2011-05-10 Crc演算回路及びプロセッサ Expired - Fee Related JP5724601B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2011105213A JP5724601B2 (ja) 2011-05-10 2011-05-10 Crc演算回路及びプロセッサ

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2011105213A JP5724601B2 (ja) 2011-05-10 2011-05-10 Crc演算回路及びプロセッサ

Publications (2)

Publication Number Publication Date
JP2012238952A true JP2012238952A (ja) 2012-12-06
JP5724601B2 JP5724601B2 (ja) 2015-05-27

Family

ID=47461497

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2011105213A Expired - Fee Related JP5724601B2 (ja) 2011-05-10 2011-05-10 Crc演算回路及びプロセッサ

Country Status (1)

Country Link
JP (1) JP5724601B2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2018023000A (ja) * 2016-08-03 2018-02-08 ルネサスエレクトロニクス株式会社 Crc演算回路、半導体装置及びレーダーシステム
US10771095B2 (en) 2016-06-07 2020-09-08 Mitsubishi Electric Corporation Data processing device, data processing method, and computer readable medium

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62133826A (ja) * 1985-12-02 1987-06-17 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド Crcビツトを計算するための装置
JPH0637737A (ja) * 1992-07-15 1994-02-10 Nec Corp Crc演算回路
JPH0670032U (ja) * 1993-03-16 1994-09-30 横河電機株式会社 Crc演算装置
JP2001251194A (ja) * 2000-03-06 2001-09-14 Mitsubishi Electric Corp Crc演算装置
JP2010068429A (ja) * 2008-09-12 2010-03-25 Nec Corp 巡回符号演算処理回路

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62133826A (ja) * 1985-12-02 1987-06-17 アドバンスト・マイクロ・デイバイシズ・インコ−ポレ−テツド Crcビツトを計算するための装置
JPH0637737A (ja) * 1992-07-15 1994-02-10 Nec Corp Crc演算回路
JPH0670032U (ja) * 1993-03-16 1994-09-30 横河電機株式会社 Crc演算装置
JP2001251194A (ja) * 2000-03-06 2001-09-14 Mitsubishi Electric Corp Crc演算装置
JP2010068429A (ja) * 2008-09-12 2010-03-25 Nec Corp 巡回符号演算処理回路

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10771095B2 (en) 2016-06-07 2020-09-08 Mitsubishi Electric Corporation Data processing device, data processing method, and computer readable medium
JP2018023000A (ja) * 2016-08-03 2018-02-08 ルネサスエレクトロニクス株式会社 Crc演算回路、半導体装置及びレーダーシステム

Also Published As

Publication number Publication date
JP5724601B2 (ja) 2015-05-27

Similar Documents

Publication Publication Date Title
US7506237B2 (en) Reconfigurable bit-manipulation node
US9071275B2 (en) Method and device for implementing cyclic redundancy check codes
US8989242B2 (en) Encoding/decoding processor and wireless communication apparatus
WO2011142133A1 (ja) 誤り訂正符号処理方法及びその装置
US20130275718A1 (en) Shuffle pattern generating circuit, processor, shuffle pattern generating method, and instruction sequence
JP5692780B2 (ja) マルチコア型誤り訂正処理システムおよび誤り訂正処理装置
US20100272227A1 (en) Electronic device, barrel shifter unit and method of barrel shifting
KR20080040706A (ko) 데이터 스트림에 주기적 덧붙임 검사(crc)를 수행하기위한 crc 생성 회로를 구성하는 방법 및 장치
JP3274668B2 (ja) 演算処理装置及び演算処理方法
JP2007166031A (ja) Crc値の算出装置
US6754870B2 (en) CRC operation unit and CRC operation method
US9614550B2 (en) Parallel BCH coding circuit, encoder and method
JP2011130333A (ja) 巡回冗長検査符号生成回路及び巡回冗長検査符号生成方法
JP5724601B2 (ja) Crc演算回路及びプロセッサ
CN101296053A (zh) 计算循环冗余校验码之方法及系统
JP2007174312A (ja) 符号化回路およびデジタル信号処理回路
JP4851947B2 (ja) 論理回路
CN113485751B (zh) 执行伽罗瓦域乘法的方法、运算单元和电子装置
JP4595055B2 (ja) ガロア体のα乗算回路および演算回路
JP2000311096A (ja) 演算処理装置
JP4057876B2 (ja) ガロア体掛け算器の制御方法
JP5459180B2 (ja) 論理回路、受信装置、及び論理演算方法
JP6162429B2 (ja) 階層構造の演算回路
JP2012169926A (ja) Crc演算回路
JP2008112522A (ja) 誤り検出装置および誤り検出方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20140204

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20140807

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20140909

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20141031

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20150303

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20150316

R150 Certificate of patent or registration of utility model

Ref document number: 5724601

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees