JP3512175B2 - Crc演算装置、およびcrc演算方法 - Google Patents

Crc演算装置、およびcrc演算方法

Info

Publication number
JP3512175B2
JP3512175B2 JP2001113541A JP2001113541A JP3512175B2 JP 3512175 B2 JP3512175 B2 JP 3512175B2 JP 2001113541 A JP2001113541 A JP 2001113541A JP 2001113541 A JP2001113541 A JP 2001113541A JP 3512175 B2 JP3512175 B2 JP 3512175B2
Authority
JP
Japan
Prior art keywords
data
crc
generator polynomial
arithmetic
value
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.)
Expired - Fee Related
Application number
JP2001113541A
Other languages
English (en)
Other versions
JP2001358594A (ja
Inventor
貴夫 吉田
稔 岡本
雅之 山▲さき▼
和宏 岡林
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.)
Panasonic Corp
Panasonic Holdings Corp
Original Assignee
Panasonic Corp
Matsushita Electric Industrial Co 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 Panasonic Corp, Matsushita Electric Industrial Co Ltd filed Critical Panasonic Corp
Priority to JP2001113541A priority Critical patent/JP3512175B2/ja
Publication of JP2001358594A publication Critical patent/JP2001358594A/ja
Application granted granted Critical
Publication of JP3512175B2 publication Critical patent/JP3512175B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、送受信データが通
信路を介して伝送される際、または伝送のためのデータ
処理がなされる際などに、上記送受信データに誤りが生
じたか否かを検出するための誤り検出符号であるCRC
(Cyclic Redundancy Check:巡回冗長性検査)符号の
生成、またはそのような誤り検出符号が付加された送受
信データの符号誤り検出を行うCRC演算装置、および
CRC演算方法に関するものである。
【0002】
【従来の技術】CRCは、ディジタル通信において頻繁
に使用されている誤り検出方式である。この誤り検出方
式は、次のようにして誤りの検出を行うものである。す
なわち、送信側では、送信データを高次の多項式とみな
して、所定の生成多項式で除算することによって得られ
る剰余をCRC符号として送信データの後に付加する
(符号化)。受信側では、同じ生成多項式を用いて除算
を行い(復号)、剰余が0であるならば、伝送されたデ
ータに誤りがないと判定する一方、剰余が0でなければ
誤りがあると判定する(誤り検出)。上記生成多項式と
しては、例えば次のようなものが実際のCRCに使用さ
れている。 (1)CRC−12 (2)CRC−16 (3)CRC−CCITT 上記のような符号化や誤り検出、すなわちCRC演算を
行う装置としては、ハードウェアによってCRC演算を
行うCRC演算装置がある。これは、シフトレジスタと
排他的論理和ゲートとを組み合わせることによって構成
された除算器を用いている。この種の装置では、上記シ
フトレジスタと上記排他的論理和ゲートとがどのように
接続されるかによって、生成多項式が決定される。この
ため、この種の装置では生成多項式を変更することがで
きない。それゆえ、適用される生成多項式ごとに、異な
った装置を用いる必要がある。また、送信側と受信側と
で、同一の生成多項式が適用される装置を用いなければ
ならない。
【0003】一方、種々の生成多項式を柔軟に適用でき
るCRC演算装置としては、ソフトウェアによってCR
C演算を行う装置がある。このような装置では、プログ
ラムまたはデータを切り替えるだけで、容易に種々の生
成多項式を適用することができる。ところが、通常、上
記CRC演算は通信端末のプロセッサによって実行さ
れ、そのプロセッサに大きな負荷をかけるため、通信端
末の処理能力が低下する。また、ソフトウェアによるC
RC演算は演算速度が遅いため、高速通信には適してい
ない。
【0004】そこで、生成多項式の柔軟性とCRC演算
の高速性とを両立させ得る装置として、例えば特開平5
−151007号公報に開示されているように、生成多
項式設定レジスタと、シフトレジスタと、排他的論理和
ゲートとが組み合わされて構成された装置が知られてい
る。この装置は、ハードウェアによってCRC演算が行
われるため、高速な処理が可能であるとともに、生成多
項式設定レジスタに設定される生成多項式を変更するこ
とによって、種々の生成多項式を適用することができ
る。
【0005】
【発明が解決しようとする課題】しかしながら、上記の
ようなCRC演算装置は、CRC演算のために特化した
専用回路を用いるものであるため、通信装置等の回路規
模の増大を招くという問題点を有していた。また、生成
多項式設定レジスタと同じビット長の生成多項式につい
ては種々のものが適用できるが、異なるビット長の生成
多項式の適用については、考慮されていなかった。
【0006】本発明は、上記の点に鑑み、大幅な回路規
模の増加を招くことなく、高速なCRC演算を行うこと
ができ、しかも、種々の生成多項式を柔軟に適用するこ
とができるCRC演算装置の提供を目的としている。
【0007】
【課題を解決するための手段】上記の目的を達成するた
め、本発明は、CRC演算装置であって、生成多項式を
示すデータ保持し、上記生成多項式を示すデータと、全
ビットの値が0であるゼロデータとを選択的に出力する
生成多項式供給手段と、CRC演算を行う演算データを
出力する演算データ供給手段と、上記生成多項式を示す
データまたはゼロデータと、上記演算データとの排他的
論理和演算を行う算術論理演算手段とを備え、上記生成
多項式供給手段は、上記算術論理演算手段による演算結
果の最上位ビットの値に応じて、上記生成多項式を示す
データと、ゼロデータとの選択をするように構成され、
上記演算データ供給手段は、上記算術論理演算手段によ
る演算結果の最上位ビットよりも下位のビットの値を上
位ビットの値とし、未処理のCRC演算対象となるデー
タの最上位ビットの値を最下位ビットの値とするデータ
を上記演算データとして出力するように構成されている
ことを特徴とする。
【0008】上記生成多項式供給手段は、具体的には、
例えば、上記生成多項式を示すデータを保持する第1の
レジスタと、上記生成多項式を示すデータまたは上記ゼ
ロデータを選択的に出力するセレクタとを備え、上記演
算データ供給手段は、具体的には、例えば、上記算術論
理演算手段による上記演算結果を保持する第2のレジス
タと、上記第2のレジスタに保持される上記演算結果を
1ビット左シフトして出力するシフタと、上記未処理の
CRC演算対象となるデータを保持するメモリと、上記
メモリから転送された、上記未処理のCRC演算対象と
なるデータのうちの一部を保持し、上記保持されたデー
タの最上位ビットの値を出力するとともに、上記保持さ
れたデータを1ビットずつ左シフトするシフトレジスタ
とを備えることによって構成することができる。
【0009】これにより、上記生成多項式供給手段に保
持させる生成多項式を示すデータを変更することによっ
て、種々の生成多項式を柔軟に適用することが容易にで
きる。また、上記算術論理演算手段に入力される、生成
多項式を示すデータまたはゼロデータの選択や、CRC
演算を行う演算データの生成は、プログラム命令の実行
によることなく自動的に行われるので、高速なCRC演
算を行うことができる。しかも、上記生成多項式供給手
段、供給手段、および算術論理演算手段は、主として、
通常のプロセッサが備えている構成要素を用いることが
できるので、CRC演算装置を含む装置全体の回路規模
の増大を小さく抑えることができる。
【0010】また、さらに、演算命令実行制御手段を備
え、上記演算命令実行制御手段は、所定の演算命令に応
じて、上記生成多項式供給手段による上記生成多項式を
示すデータまたはゼロデータの出力、上記演算データ供
給手段による上記演算データの出力、および上記算術論
理演算手段による上記排他的論理和演算の実行を制御す
るように構成されてもよい。
【0011】上記演算命令実行制御手段は、例えば、所
定の演算命令に応じて、1回の上記算術論理演算手段に
よる上記排他的論理和演算が行われるための上記生成多
項式供給手段、上記演算データ供給手段、および上記算
術論理演算手段による動作を制御するように構成されて
もよく、また、所定の演算命令に応じて、上記未処理の
CRC演算対象となるデータのすべてに対して上記算術
論理演算手段による上記排他的論理和演算が行われるた
めの、上記生成多項式供給手段、上記演算データ供給手
段、および上記算術論理演算手段による動作を制御する
ように構成されてもよく、また、所定の演算命令に応じ
て、上記シフトレジスタに保持された全てのビットの値
に対して上記算術論理演算手段による上記排他的論理和
演算が行われるための、上記生成多項式供給手段、上記
演算データ供給手段、および上記算術論理演算手段によ
る動作を制御するように構成されてもよい。
【0012】これらにより、演算命令の組み合わせの自
由度を高くしてCRC演算処理の柔軟性を高くしたり、
少ない演算命令でCRC演算処理の高速性を高めたりす
ることができる。
【0013】また、上記未処理のCRC演算対象となる
データのすべてに対して上記算術論理演算手段による上
記排他的論理和演算が行われた後に、上記第2のレジス
タに保持されている値を上記メモリに格納するように構
成したり、上記未処理のCRC演算対象となるデータの
すべてに対して上記算術論理演算手段による上記排他的
論理和演算が行われた後に、上記第2のレジスタに保持
されている値が0であるか否かによって、上記上記未処
理のCRC演算対象となるデータに誤りがあるか否かを
判定するように構成したりしてもよい。
【0014】これらにより、CRC符号化やデータの誤
りの検出を容易に行うことができる。
【0015】また、上記生成多項式供給手段は、上記生
成多項式を示すデータのビット数が、上記生成多項式供
給手段が保持し得るビット数よりも少ない場合に、上記
生成多項式を示すデータを上位詰めで保持するととも
に、下位のビットに0の値を保持するように構成されて
もよい。
【0016】これにより、生成多項式の種類だけでな
く、そのビット数に関しても、適用される生成多項式の
柔軟性を高くすることができる。
【0017】また、本発明は、CRC演算装置であっ
て、生成多項式を示すデータを保持する生成多項式保持
手段と、生成多項式を示すデータ、およびCRC演算対
象となるデータに基づいてCRC演算を行うCRC演算
手段とを備え、上記生成多項式を示すデータのビット数
が、上記生成多項式保持手段が保持し得るビット数より
も少ない場合に、上記生成多項式保持手段に、上記生成
多項式を示すデータが上位詰めで保持されるとともに、
下位のビットに0の値が保持されるように構成されてい
ることを特徴とする。
【0018】これにより、CRC演算に特化した専用の
回路を構成する場合でも、生成多項式の種類だけでな
く、そのビット数に関しても、適用される生成多項式の
柔軟性を高くすることができる。
【0019】
【発明の実施の形態】以下、本発明の実施形態につい
て、図面を参照して説明する。
【0020】(実施の形態1)本発明の実施の形態とし
て、DSP(digital signal processor)などのプロセ
ッサの内部に設けられたCRC演算装置の例を図1に基
づいて説明する。この装置は、一般的にDSPが備えて
いる回路に、若干の回路を付加することによって構成さ
れている。
【0021】図1に示すように、このCRC演算装置に
は、任意の生成多項式(を示すデータ)を保持し、出力
する生成多項式供給部11(生成多項式供給手段)と、
送受信データに基づいてCRC演算のための演算データ
を出力する演算データ供給部21(演算データ供給手
段)と、上記生成多項式供給部11および演算データ供
給部21から出力される生成多項式および演算データを
用いてCRC演算を行う演算部31(算術論理演算手
段)と、上記各部の動作を制御する演算命令実行制御部
41(演算命令実行制御手段)とが設けられている。
【0022】上記生成多項式供給部11は、生成多項式
が格納される第1の汎用レジスタ12と、上記第1の汎
用レジスタ12に格納された値(生成多項式)、または
全ビットの値が0のデータ(”0”)を選択して出力す
るセレクタ13とを備えている。上記セレクタ13は、
より詳しくは、後述する第2の汎用レジスタ24の最上
位ビット(MSB)の値が0のときには”0”を選択す
る一方、1のときには第1の汎用レジスタ12に格納さ
れた生成多項式を選択するようになっている。なお、上
記セレクタ13は、実際には、第1の汎用レジスタ12
の各ビットの値と第2の汎用レジスタ24のMSBの値
とを論理積演算するAND回路列などによって構成して
もよい。
【0023】上記演算データ供給部21は、メモリ22
と、シフトレジスタ23と、第2の汎用レジスタ24
と、バレルシフタ25とを備えて構成されている。
【0024】上記メモリ22には、送受信データが格納
されるようになっている。
【0025】上記シフトレジスタ23は、1サイクルの
CRC演算ごとに、保持されているデータのMSBの値
を演算データのLSBの値として演算部31に出力した
後、そのデータを1ビットだけ左シフトするようになっ
ている。そして、保持されているデータの全てのビット
の値が出力されたときには、次のデータがメモリ22か
ら転送されるようになっている。
【0026】上記第2の汎用レジスタ24は、CRC演
算が開始される際に、メモリ22から初期値として転送
されたデータを保持するとともに、その後には、1サイ
クルのCRC演算ごとに、演算部31から出力される演
算結果のデータを保持するようになっている。
【0027】上記バレルシフタ25は、第2の汎用レジ
スタ24に保持されているデータを1ビットだけ左シフ
トした後、そのLSBより上位のビットの値を、演算デ
ータのLSBより上位のビットの値として演算部31に
出力するようになっている。なお、前記のようにシフト
レジスタ23のMSBの値が演算部31に直接入力され
るのに代えて、このバレルシフタ25に入力されて、上
記左シフトの際に演算データのLSBの値となるように
してもよい。
【0028】また、上記演算部31は、算術論理演算器
32を備え、上記生成多項式供給部11から出力される
生成多項式または”0”と、上記演算データ供給部21
から出力される演算データとの排他的論理和演算を実行
するようになっている。その演算結果のデータは、前記
のように第2の汎用レジスタ24に格納される。
【0029】上記各部は、それぞれ例えばMビットのビ
ット幅を有している。
【0030】また、演算命令実行制御部41は、プログ
ラムとして与えられる演算命令に基づいて、DSPを構
成する各部の動作を制御するとともに、CRC演算に関
連する演算命令に基づいて、主として上記各部の動作を
制御するようになっている。
【0031】ここで、上記第1の汎用レジスタ12、メ
モリ22、第2の汎用レジスタ24、バレルシフタ2
5、および算術論理演算器32は、通常、プロセッサが
備えているものを用いることができる。すなわち、特に
CRC演算のために設けられているのは、主として、セ
レクタ13、シフトレジスタ23、前記各部などとの間
の信号パス、および演算命令実行制御部41におけるC
RC演算のための制御機能を有している部分である。そ
れゆえ、一般的なプロセッサに、これらの構成要素を付
加するだけで、CRC演算装置を構成することができ、
CRC演算装置全体がCRC演算に特化したものではな
いため、DSPなどの全体の回路規模の増加を少なく抑
えることができる。
【0032】上記のように構成されたCRC演算装置で
は、演算命令実行制御部41に与えられる演算命令に応
じてCRC演算が行われる。以下、その動作について、
図2のフローチャートに基づいて説明する。(なお、以
下の各ステップは説明の便宜のためのものであって、命
令サイクルやマシンサイクルと必ずしも1対1に対応す
るものではない。) (ステップS1) まず、転送命令によって、第1の汎
用レジスタ12に生成多項式が設定される。ここで、設
定される生成多項式のビット長をNとすると、N<M
(Mは第1の汎用レジスタ12のビット幅)であっても
よい。その場合には、左シフト命令などにより上位詰め
されて下位のビットに0が埋め込まれた値が第1の汎用
レジスタ12に設定される。
【0033】(ステップS2) 同様に、転送命令によ
って、メモリ22に格納されている送受信データのうち
の最初のMビットのデータ(初期データ)が第2の汎用
レジスタ24に設定される。
【0034】(ステップS3) さらに、転送命令によ
って、次のMビットのデータ(入力データ1〜X)がシ
フトレジスタ23に設定される。
【0035】(ステップS4) 次に、MサイクルのC
RC演算、すなわち、シフトレジスタ23に保持された
Mビットの送受信データに対応するCRC演算が実行さ
れる。より詳しくは、以下のような動作が行われる。
【0036】すなわち、算術論理演算器32は、第2の
汎用レジスタ24に保持された値が上記のようにバレル
シフタ25からシフトされて出力される値のうちの上位
M−1ビットの値およびシフトレジスタ23から出力さ
れるMSBの1ビットの値との合計Mビットの演算デー
タと、セレクタ13から出力されるMビットの生成多項
式(Nビットと0の場合も含む)または全ビットの値が
0のデータとの排他的論理和演算を行い、演算結果のデ
ータを第2の汎用レジスタ24に格納する。すなわち、
1ビットの送受信データに対応する1サイクルのCRC
演算が行われる。また、シフトレジスタ23に保持され
ている値が1ビット左シフトされ、LSBには0が埋め
込まれる。そして、これらの動作が、例えば繰り返し命
令(続く命令を所定回数繰り返すことを示す命令)と、
CRC演算命令との組み合わせによってM回繰り返され
る。これによって、例えば1サイクルのCRC演算(お
よびシフトレジスタ23のシフト動作)を1マシンサイ
クルで行わせることも可能になる。なお、上記繰り返し
命令とCRC演算命令との組み合わせによる動作と同じ
動作を単一の命令によって行わせ得るようにしてもよ
い。また、処理速度は遅くなるが、汎用レジスタに値M
をセットして1サイクルのCRC演算ごとにデクリメン
トし、値が0になるまでCRC演算を繰り返すようにし
てもよい。
【0037】(ステップS5) MサイクルのCRC演
算が終了すると、メモリ22に保持されている残りの送
受信データが最終データかどうか(残りがMビット以下
かどうか)が判定される。この判定は、具体的には、例
えばメモリ22からシフトレジスタ23に転送される送
受信データのアドレスを示す図示しないポインタの値が
最終データのアドレスになったかどうかが判定されるよ
うにしてもよいし、MサイクルのCRC演算の回数をカ
ウント(ダウンカウント)し、送受信データの全ビット
数KからMを減算してMで整数除算した商X、 X=int((K−M)/M) の回数だけ繰り返されたかどうかが判定されるようにす
るなどしてもよい。また、上記CRC演算の回数のカウ
ントや判定は、プログラム命令によって行われるように
してもよいし、ハードウェアによって自動的に行われる
ようにしてもよい。(なお、上記KからMが減算される
のは、最初のMビットは初期データとして第2の汎用レ
ジスタ24に設定されるからである。)メモリ22に残
っているのが最終データでなければ、上記ステップS3
〜S5が繰り返される。
【0038】(ステップS6) 上記ステップS6で、
メモリ22に残っている送受信データが最終データであ
ると判定されると、その最終データがシフトレジスタ2
3に転送される。ここで、最終データのビット数は、図
3に示すように、送受信データの全ビット数KからMを
減算してMで除算した剰余L、すなわち L=(K−M)modM である。この剰余LはMより小さいので、最終データは
シフトレジスタ23に上位詰めで設定され、下位のビッ
トに0が埋め込まれる。
【0039】(ステップS7) 最後に、上記ステップ
S4と同様に、M+LサイクルのCRC演算が行われ
る。これによって、全部でM×X+M+L=Kサイクル
のCRC演算が行われることになる。(なお、最終CR
C演算のステップ数において剰余Lに算術論理演算器3
2のビット幅Mが加算されるのは、送受信データの最後
のビットが算術論理演算器32のMSBより1つ上位の
ビットにシフトされるまで演算を繰り返すためである。
これは、送受信データを2のN乗倍して、そのLSBま
でCRC演算をすることに相当する。)そこで、ステッ
プS7でM+Lサイクル(全部の合計では上記のように
Kサイクル)のCRC演算が終了したときに第2の汎用
レジスタ24に保持されている値が、送受信データ全体
に対するCRC演算結果となる。そこで、送信の場合に
は、この第2の汎用レジスタ24に保持されている値が
例えば一旦メモリ22に格納されて、送信データに付加
されることにより、CRC符号化された送信データとな
る。また、受信の場合には、この第2の汎用レジスタ2
4に保持されている値が0であるかどうかを判断するこ
とによって、具体的には、例えば第2の汎用レジスタ2
4に保持された値と全ビットの値が0であるゼロデータ
との排他的論理和演算を行い、図示しないゼロフラグレ
ジスタがセットされるかどうかなどによって、受信され
たデータに誤りがないかどうかを判定することができ
る。
【0040】次に、上記動作について、図4、5に基づ
き、具体的なデータ例を挙げて説明する。
【0041】まず、符号化の例について説明する。この
例では、図4に示すように、符号化前の送信データが
「100000110101(2進表現)」(ビット数
K=12)、生成多項式が「10101(2進表現)」
(ビット数N=5)とする。この場合、5サイクルのC
RC演算の繰返し回数Xは、 X=int((K−M)/M)=int((12−5)
/5)=1回、 最終データのビット数Lは、 L=(K−M)modM=(12−5)mod5=2、 また、最終CRC演算のサイクル数は、 M+L=5+2=7 である。
【0042】(1)CRC演算が開始される際には、第
1の汎用レジスタ12に上記生成多項式「10101」
が設定されるとともに、第2の汎用レジスタ24に、送
信データの最初の5ビットの値「10000」が設定さ
れ、シフトレジスタ23には続く5ビットの値「011
01」が設定される。
【0043】(2)最初のCRC演算サイクル1では、
第2の汎用レジスタ24のMSBの値は「1」なので、
セレクタ13によって生成多項式「10101」が選択
され、その生成多項式と、第2の汎用レジスタ24のM
SBより下位の4ビット(正確には、バレルシフタ25
によって左シフトされた後のLSBより上位の4ビッ
ト)の値「0000」およびシフトレジスタ23のMS
Bの値「0」とが、算術論理演算器32によって排他的
論理和演算される。その演算結果は「10101」とな
り、この演算結果は第2の汎用レジスタ24に格納され
る。
【0044】(3)また、シフトレジスタ23に保持さ
れている値は、1ビット左シフトされる。ここで、図4
ではLSBに埋め込まれる値は0になっているが、これ
は0でなくてもよい。(これに対して、最終CRC演算
では、送信データを2のN乗倍することに対応させるた
めに0が埋め込まれる必要がある。) (4)以下、同様の動作が繰り返され、5サイクルのC
RC演算が終了すると、メモリ22に格納されている2
ビットの最終データ「01」がシフトレジスタ23に上
位詰めで下位のビットに0が埋め込まれて転送される。
以下、最終CRC演算で上記(2)(3)と同様の動作
が7サイクル繰り返される。
【0045】(5)最終CRC演算が終了したときに第
2の汎用レジスタ24に保持されている値「0001
0」がCRC演算結果である。そこで、図5に示すよう
に元の送信データの末尾に上記CRC演算結果が誤り検
出符号として付加されて、17ビットの符号化データ
(「10000011010100010」)となる。
【0046】一方、上記のようにして符号化されたデー
タの復号が行われる場合の動作は、図5に示すように、
上記符号化の場合の(1)〜(4)と同様である。この
復号によって、CRC演算結果が同図に示すように「0
0000」になれば、データに誤りがないと判定され
る。
【0047】ここで、この例では、上記のように誤り検
出符号が付加されて、データのビット長が17ビットに
なっているので、5サイクルのCRC演算の繰返し回数
Xは、 X=int((K−M)/M)=int((17−5)
/5)=2回、 最終データのビット数Lは、 L=(K−M)modM=(17−5)mod5=2、 となる。また、最終CRC演算のサイクル数は、 M+L=5+2=7 であるが、図5に示すように、最終データのビット数L
と同じ2サイクルのCRC演算を行った時点で剰余が0
になっていれば、その後の剰余も0のままになる一方、
0になっていなければ、その後に0になることもないの
で、2サイクルで動作を停止させても結果は同じであ
る。ただし、上記のように7サイクル繰り返すようにし
て、すなわち符号化と復号とで同じ動作が行われるよう
にして構成の簡素化を図るようにしてもよい。
【0048】なお、上記の例では、各構成要素のビット
幅が互いに同じ例を示したが、これに限らず、例えば第
1の汎用レジスタ12、および算術論理演算器32と、
他の構成要素とでビット幅が異なるようにしたり、第1
の汎用レジスタ12等と算術論理演算器32とでビット
幅が異なるようにしたりしてもよい。
【0049】また、送受信データはメモリ22に格納さ
れる例を示したが、例えば受信データがシリアルデータ
として入力される場合には、シフトレジスタ23を設け
ず、受信データが、バッファ(FIFO:first in fir
st out)から直接第2の汎用レジスタ24や算術論理演
算器32に供給されるようにするなどしてもよい。
【0050】また、上記CRC演算装置においては、バ
レルシフタ25は入力されるデータを1ビットシフトさ
せるだけなので、サイクルタイムに余裕が有る場合など
には、シフトレジスタを用いることもできる。
【0051】また、第2の汎用レジスタ24に代えて、
CRC演算専用のレジスタを設ける場合には、入出力を
1ビットずらすことによって、バレルシフタ25を用い
ないようにすることもできる。
【0052】また、第1の汎用レジスタ12や第2の汎
用レジスタ24に代えて、メモリを用いるようにするこ
ともできる。
【0053】また、セレクタ13の切り替え制御は、上
記のように第2の汎用レジスタ24のMSBの値によっ
て行うのに限らず、算術論理演算器32によって排他的
論理和演算が行われる際に、その演算結果のMSBの値
を保持するフラグレジスタを設け、そのフラグレジスタ
に保持される値によって制御するなどしてもよい。な
お、この場合に、最初の1サイクルのCRC演算が行わ
れる際には、一旦、バレルシフタ25で左シフトさせず
に(または25をバイパスさせて)算術論理演算器32
に入力させるようにすれば、最初のフラグレジスタの値
を設定することができる。
【0054】また、送受信データの全てのビットについ
ての上記のような一連のCRC演算が、演算命令実行制
御部41に組み込まれたマイクロプログラムによって実
行されるようにして、1または少数のプログラム命令で
CRC演算を指示し得るようにしてもよい。
【0055】(実施の形態2)実施の形態2として、生
成多項式設定レジスタを含むハードウェアによって構成
され、任意のビット長の生成多項式を適用することがで
きるCRC演算装置の例を説明する。
【0056】このCRC演算装置は、図6に示すよう
に、CRC演算部51と、生成多項式供給部61とを備
えている。
【0057】上記CRC演算部51(CRC演算手段)
は、所定のM段(Mビット分)のD型フリップフロップ
52…が、排他的論理和ゲート53…を介して接続され
て構成されている。このCRC演算部51は、演算デー
タが1ビットずつ入力されることにより、CRC演算を
行うようになっている。演算結果の商は、最後段のD型
フリップフロップ52から順次出力され、剰余は、CR
C演算が終了した時点で各D型フリップフロップ52か
ら出力される。
【0058】また、生成多項式供給部61は、生成多項
式が格納されるMビット幅の生成多項式設定レジスタ6
2(生成多項式保持手段)と、セレクタ63と、上位詰
め部64とを備えている。上記セレクタ63は、最後段
のD型フリップフロップ52からの出力に応じて、前記
実施の形態1のセレクタ13と同様に、生成多項式設定
レジスタ62に格納された値(生成多項式)、または全
ビットの値が0のデータ(”0”)を出力するようにな
っている。また、上位詰め部64は、適用される生成多
項式のビット数Nが生成多項式設定レジスタ62のビッ
ト幅Mよりも小さいときに、生成多項式が上位詰めされ
て下位のビットに0が埋め込まれた値を生成多項式設定
レジスタ62に格納するようになっている。具体的に
は、例えばシフトレジスタによって左シフトするように
してもよいし、プログラムのシフト命令などによって左
シフトするようにしてもよい。また、上記上位詰め部6
4を設けるのに代えて、あらかじめ上位詰めされた生成
多項式を入力するようにしてもよい。
【0059】上記のように構成されていることにより、
生成多項式のビット数Nが生成多項式設定レジスタ62
のビット幅Mよりも小さい場合、上位のNビットよりも
下位のビットに関しては、生成多項式設定レジスタ62
に0が埋め込まれているので、最後段のD型フリップフ
ロップ52からの出力に係らず、セレクタ63からは0
が出力される。そこで、上記下位のビットに対応する排
他的論理和ゲート53からは、前段のD型フリップフロ
ップ52から出力される値と同じ値が出力されるので、
生成多項式のビット数と、生成多項式設定レジスタ62
のビット幅と、D型フリップフロップ52の段数とが互
いに等しい場合と同じ結果が得られる。したがって、ビ
ット数に関しても、適用される生成多項式の柔軟性を高
くすることができる。
【0060】
【発明の効果】以上のように、本発明によれば、通常、
プロセッサ等が備える構成要素を用い得るようにするこ
とにより、大幅な回路規模の増加を招くことなく、高速
なCRC演算を行うことができ、しかも、種々の生成多
項式を柔軟に適用することができるという効果を奏す
る。
【図面の簡単な説明】
【図1】実施の形態1のCRC演算装置の構成を示すブ
ロック図である。
【図2】実施の形態1のCRC演算装置の動作を示すフ
ローチャートである。
【図3】実施の形態1のCRC演算装置のデータの区切
りの例を示す説明図である。
【図4】実施の形態1のCRC演算装置の符号化動作の
具体例を示す説明図である。
【図5】実施の形態1のCRC演算装置の復号動作の具
体例を示す説明図である。
【図6】実施の形態2のCRC演算装置の構成を示すブ
ロック図である。
【符号の説明】
11 生成多項式供給部 12 第1の汎用レジスタ 13 セレクタ 21 演算データ供給部 22 メモリ 23 シフトレジスタ 24 第2の汎用レジスタ 25 バレルシフタ 31 演算部 32 算術論理演算器 41 演算命令実行制御部 51 CRC演算部 52 D型フリップフロップ 53 排他的論理和ゲート 61 生成多項式供給部 62 生成多項式設定レジスタ 63 セレクタ 64 上位詰め部
───────────────────────────────────────────────────── フロントページの続き (72)発明者 岡林 和宏 大阪府門真市大字門真1006番地 松下電 器産業株式会社内 (56)参考文献 特開 平10−320221(JP,A) 特開 平7−50596(JP,A) 特開2000−81989(JP,A) 特開2001−36414(JP,A) 特開2000−311096(JP,A) 欧州特許出願公開936537(EP,A 1) 国際公開00/067125(WO,A1) (58)調査した分野(Int.Cl.7,DB名) H03M 13/00 - 13/53 G06F 11/10 330

Claims (10)

    (57)【特許請求の範囲】
  1. 【請求項1】生成多項式を示すデータ保持し、上記生成
    多項式を示すデータと、全ビットの値が0であるゼロデ
    ータとを選択的に出力する生成多項式供給手段と、 CRC演算を行う演算データを出力する演算データ供給
    手段と、 上記生成多項式を示すデータまたはゼロデータと、上記
    演算データとの排他的論理和演算を行う算術論理演算手
    段とを備え、 上記生成多項式供給手段は、上記算術論理演算手段によ
    、先行する演算の演算結果における最上位ビットの値
    に応じて、上記生成多項式を示すデータと、ゼロデータ
    との選択をするように構成され、 上記演算データ供給手段は、上記算術論理演算手段によ
    、先行する演算の演算結果における最上位ビットより
    も下位のビットの値を上位ビットの値とすることに加え
    、未処理のCRC演算対象となるデータの最上位ビッ
    トの値を最下位ビットの値とするデータを上記演算デ
    ータとして出力するように構成されていることを特徴と
    するCRC演算装置。
  2. 【請求項2】請求項1のCRC演算装置であって、 上記生成多項式供給手段は、 上記生成多項式を示すデータを保持する第1のレジスタ
    と、 上記生成多項式を示すデータまたは上記ゼロデータを選
    択的に出力するセレクタとを備え、 上記演算データ供給手段は、 上記算術論理演算手段による上記演算結果を保持する第
    2のレジスタと、 上記第2のレジスタに保持される上記演算結果を1ビッ
    ト左シフトして出力するシフタと、 上記未処理のCRC演算対象となるデータを保持するメ
    モリと、 上記メモリから転送された、上記未処理のCRC演算対
    象となるデータのうちの一部を保持し、上記保持された
    データの最上位ビットの値を出力するとともに、上記保
    持されたデータを1ビットずつ左シフトするシフトレジ
    スタとを備えたことを特徴とするCRC演算装置。
  3. 【請求項3】請求項1のCRC演算装置であって、さら
    に、 演算命令実行制御手段を備え、上記演算命令実行制御手
    段は、所定の演算命令に応じて、上記生成多項式供給手
    段による上記生成多項式を示すデータまたはゼロデータ
    の出力、上記演算データ供給手段による上記演算データ
    の出力、および上記算術論理演算手段による上記排他的
    論理和演算の実行を制御するように構成されていること
    を特徴とするCRC演算装置。
  4. 【請求項4】請求項3のCRC演算装置であって、 上記演算命令実行制御手段は、所定の演算命令に応じ
    て、1回の上記算術論理演算手段による上記排他的論理
    和演算が行われるための上記生成多項式供給手段、上記
    演算データ供給手段、および上記算術論理演算手段によ
    る動作を制御するように構成されていることを特徴とす
    るCRC演算装置。
  5. 【請求項5】請求項3のCRC演算装置であって、 上記演算命令実行制御手段は、所定の演算命令に応じ
    て、上記未処理のCRC演算対象となるデータのすべて
    に対して上記算術論理演算手段による上記排他的論理和
    演算が行われるための、上記生成多項式供給手段、上記
    演算データ供給手段、および上記算術論理演算手段によ
    る動作を制御するように構成されていることを特徴とす
    るCRC演算装置。
  6. 【請求項6】請求項2のCRC演算装置であって、さら
    に、 演算命令実行制御手段を備え、上記演算命令実行制御手
    段は、所定の演算命令に応じて、上記シフトレジスタに
    保持された全てのビットの値に対して上記算術論理演算
    手段による上記排他的論理和演算が行われるための、上
    記生成多項式供給手段、上記演算データ供給手段、およ
    び上記算術論理演算手段による動作を制御するように構
    成されていることを特徴とするCRC演算装置。
  7. 【請求項7】請求項2のCRC演算装置であって、 上記未処理のCRC演算対象となるデータのすべてに対
    して上記算術論理演算手段による上記排他的論理和演算
    が行われた後に、上記第2のレジスタに保持されている
    値を上記メモリに格納するように構成されていることを
    特徴とするCRC演算装置。
  8. 【請求項8】請求項2のCRC演算装置であって、 上記未処理のCRC演算対象となるデータのすべてに対
    して上記算術論理演算手段による上記排他的論理和演算
    が行われた後に、上記第2のレジスタに保持されている
    値が0であるか否かによって、上記上記未処理のCRC
    演算対象となるデータに誤りがあるか否かを判定するよ
    うに構成されていることを特徴とするCRC演算装置。
  9. 【請求項9】請求項1のCRC演算装置であって、 上記生成多項式供給手段は、上記生成多項式を示すデー
    タのビット数が、上記生成多項式供給手段が保持し得る
    ビット数よりも少ない場合に、上記生成多項式を示すデ
    ータを上位詰めで保持するとともに、下位のビットに0
    の値を保持するように構成されていることを特徴とする
    CRC演算装置。
  10. 【請求項10】生成多項式を示すデータと、全ビットの
    値が0であるゼロデータとを選択的に出力する生成多項
    式供給ステップと、 CRC演算を行う演算データを出力する演算データ供給
    ステップと、 上記生成多項式を示すデータまたはゼロデータと、上記
    演算データとの排他的論理和演算を行う算術論理演算ス
    テップとを有し、 上記生成多項式供給ステップは、先立つ上記算術論理演
    算ステップによる演算結果の最上位ビットの値に応じ
    て、上記生成多項式を示すデータまたはゼロデータを選
    択し、 上記演算データ供給ステップは、先立つ上記算術論理演
    算ステップによる演算結果の最上位ビットよりも下位の
    ビットの値を上位ビットの値とすることに加えて、未処
    理のCRC演算対象となるデータの最上位ビットの値を
    最下位ビットの値とするデータを上記演算データとし
    て出力することを特徴とするCRC演算方法。
JP2001113541A 2000-04-14 2001-04-12 Crc演算装置、およびcrc演算方法 Expired - Fee Related JP3512175B2 (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2001113541A JP3512175B2 (ja) 2000-04-14 2001-04-12 Crc演算装置、およびcrc演算方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2000-113734 2000-04-14
JP2000113734 2000-04-14
JP2001113541A JP3512175B2 (ja) 2000-04-14 2001-04-12 Crc演算装置、およびcrc演算方法

Publications (2)

Publication Number Publication Date
JP2001358594A JP2001358594A (ja) 2001-12-26
JP3512175B2 true JP3512175B2 (ja) 2004-03-29

Family

ID=26590155

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2001113541A Expired - Fee Related JP3512175B2 (ja) 2000-04-14 2001-04-12 Crc演算装置、およびcrc演算方法

Country Status (1)

Country Link
JP (1) JP3512175B2 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7596277B2 (en) * 2002-04-09 2009-09-29 Senthil Govindaswamy Apparatus and method for detecting error in a digital image
KR101110625B1 (ko) * 2005-03-09 2012-02-16 삼성전자주식회사 전송 데이터의 무결성 검사 방법 및 수단
KR100736093B1 (ko) 2006-01-16 2007-07-06 삼성전자주식회사 Nand 플래시 제어 장치 및 방법
JP2010218237A (ja) * 2009-03-17 2010-09-30 Renesas Electronics Corp プログラム検証装置及びその方法
JP6648412B2 (ja) 2015-04-14 2020-02-14 富士通株式会社 Crc符号演算回路、及びその方法並びに半導体装置

Also Published As

Publication number Publication date
JP2001358594A (ja) 2001-12-26

Similar Documents

Publication Publication Date Title
KR100745863B1 (ko) 씨알씨 연산장치 및 씨알씨 연산방법
KR100439211B1 (ko) 연산처리장치
JP3274668B2 (ja) 演算処理装置及び演算処理方法
JP3512175B2 (ja) Crc演算装置、およびcrc演算方法
JP3245119B2 (ja) 新たな多項式配列構造を採用したリード−ソロモン復号器とその復号方法
JP3700818B2 (ja) 誤り訂正回路
JP2001298370A (ja) 符号化装置
JP3607116B2 (ja) 演算処理装置
JPH0353815B2 (ja)
JP2842947B2 (ja) ガロアフィールド多項式乗算/除算回路およびそれを組込むディジタル信号プロセッサ
CN114884517A (zh) 一种crc硬件计算系统及芯片
JP2001036414A (ja) Crc符号生成回路及びcrcエラー検出回路
JP4873546B2 (ja) データ処理装置、データ処理方法
JP3850512B2 (ja) リードソロモン復号装置
JP4595055B2 (ja) ガロア体のα乗算回路および演算回路
JPH06230991A (ja) 有限体での任意元素の逆数算出方法及び装置
JP2008112522A (ja) 誤り検出装置および誤り検出方法
JP3250363B2 (ja) 演算装置
JPS6217256B2 (ja)
JP2001186021A (ja) 誤り検出装置及びそれを内蔵した演算処理装置
JPH06112848A (ja) ビタビ復号用演算装置
JP2009117883A (ja) 演算処理装置
JP2003243992A (ja) 符号生成回路
JP3193830B2 (ja) 演算回路
JP3521558B2 (ja) 伝送装置

Legal Events

Date Code Title Description
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20031224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20040105

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20080116

Year of fee payment: 4

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090116

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20090116

Year of fee payment: 5

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20100116

Year of fee payment: 6

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110116

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20110116

Year of fee payment: 7

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20120116

Year of fee payment: 8

LAPS Cancellation because of no payment of annual fees