JPH0224417B2 - - Google Patents
Info
- Publication number
- JPH0224417B2 JPH0224417B2 JP59105658A JP10565884A JPH0224417B2 JP H0224417 B2 JPH0224417 B2 JP H0224417B2 JP 59105658 A JP59105658 A JP 59105658A JP 10565884 A JP10565884 A JP 10565884A JP H0224417 B2 JPH0224417 B2 JP H0224417B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- bit
- crc
- crc calculation
- work
- 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 - Lifetime
Links
- 238000004364 calculation method Methods 0.000 claims description 40
- 125000004122 cyclic group Chemical group 0.000 claims description 5
- 238000000034 method Methods 0.000 description 7
- 239000012536 storage buffer Substances 0.000 description 5
- 238000007796 conventional method Methods 0.000 description 4
- 238000010586 diagram Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 3
- 238000001514 detection method Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 1
Landscapes
- Detection And Correction Of Errors (AREA)
- Error Detection And Correction (AREA)
Description
【発明の詳細な説明】
発明の技術分野
本発明はサイクリツク冗長チエツク演算方法に
関する。
関する。
技術の背景
サイクリツク冗長チエツク演算方法(以下、
CRC演算方法とも称す)は、データエラーの検
出手法の1つとして広く利用されている。他の検
出手法の1つであるパリテイーチエツク方法に比
べエラーを発見し易く特に長ビツト列のデータに
対するエラーチエツクに有効である。このCRC
においてはいわゆる生成多項式が導入され、この
生成多項式とデータの各ビツトとの間で排他的論
理和(EOR)演算を行い、その結果をデータの
末尾に冗長ビツトとして付加し受信側へ送出す
る。一方、受信側では送信されて来たたデータに
対し同様のEOR演算を行い、その結果と、送信
側から送信された結果との一致をみる。一致して
いればデータエラーは含まれていないことにな
る。
CRC演算方法とも称す)は、データエラーの検
出手法の1つとして広く利用されている。他の検
出手法の1つであるパリテイーチエツク方法に比
べエラーを発見し易く特に長ビツト列のデータに
対するエラーチエツクに有効である。このCRC
においてはいわゆる生成多項式が導入され、この
生成多項式とデータの各ビツトとの間で排他的論
理和(EOR)演算を行い、その結果をデータの
末尾に冗長ビツトとして付加し受信側へ送出す
る。一方、受信側では送信されて来たたデータに
対し同様のEOR演算を行い、その結果と、送信
側から送信された結果との一致をみる。一致して
いればデータエラーは含まれていないことにな
る。
ところで近年はCRCのかけ方が複雑になりつ
つある。つまり、データのビツト列に対し単純に
シリアルにEOR演算を施すことのみならず、あ
るビツト列だけを特定してCRCをかけたいとか、
逆にあるビツト列だけはCRCをかけたくない等
のシステム運用上の諸要求に応える必要が生じて
いる。本発明は、このような諸要求に対処し易い
CRC演算方法について言及する。
つある。つまり、データのビツト列に対し単純に
シリアルにEOR演算を施すことのみならず、あ
るビツト列だけを特定してCRCをかけたいとか、
逆にあるビツト列だけはCRCをかけたくない等
のシステム運用上の諸要求に応える必要が生じて
いる。本発明は、このような諸要求に対処し易い
CRC演算方法について言及する。
従来技術と問題点
複雑なCRC演算を行うにはハードウエアのみ
による処理のみでは対処し切れず、CPU(中央処
理装置)によるソフトウエア処理の助けを借りな
ければならない。従来のソフトウエアによる
CRC演算は、基本的には一般的なハードウエア
による処理をそのままプログラム処理に置き換え
たものである。すなわち、CRC演算の対象とな
るデータを1ビツトずつシフトしながら、生成多
項式との間でEOR演算を行うというものである。
然しながら、この従来のCRC演算方法では上記
のようにCRC演算対象のデータを1ビツトずつ
シフトしなければならないことから、必然的に
CRC演算にかなりの時間を要し、高速のデータ
処理が行えないという問題がある。
による処理のみでは対処し切れず、CPU(中央処
理装置)によるソフトウエア処理の助けを借りな
ければならない。従来のソフトウエアによる
CRC演算は、基本的には一般的なハードウエア
による処理をそのままプログラム処理に置き換え
たものである。すなわち、CRC演算の対象とな
るデータを1ビツトずつシフトしながら、生成多
項式との間でEOR演算を行うというものである。
然しながら、この従来のCRC演算方法では上記
のようにCRC演算対象のデータを1ビツトずつ
シフトしなければならないことから、必然的に
CRC演算にかなりの時間を要し、高速のデータ
処理が行えないという問題がある。
発明の目的
従つて本発明は上記問題点に鑑み、演算時間の
短縮を図ることのできるCRC演算方法を提供す
ることを目的とするものである。
短縮を図ることのできるCRC演算方法を提供す
ることを目的とするものである。
発明の構成
上記目的を達成するために本発明は、CRC演
算の対象となるデータを複数ビツト単位で一時的
に保持するデータ格納バツフアと、複数ビツトの
ビツトパターン別に割当てられたCRC生成多項
式テーブルとを設け、前記複数ビツト単位のデー
タとこれに対応する該CRC生成多項式テーブル
内のCRC生成多項式との間でEOR演算を行うよ
うにしたことを特徴とするものである。
算の対象となるデータを複数ビツト単位で一時的
に保持するデータ格納バツフアと、複数ビツトの
ビツトパターン別に割当てられたCRC生成多項
式テーブルとを設け、前記複数ビツト単位のデー
タとこれに対応する該CRC生成多項式テーブル
内のCRC生成多項式との間でEOR演算を行うよ
うにしたことを特徴とするものである。
発明の実施例
第1Aおよび1B図は本発明に基づくCRC演
算方法の手順の一例を示すフローチヤート、第2
図は本発明において用いるCRC演算対象データ
格納バツフアの一例を示す図、第3図は本発明に
おいて用いるメモリ内の作業エリアを示す図、第
4図は本発明において用いるCRC生成多項式テ
ーブルを示す図である。第1Aおよび1B図は8
ビツトのマイクロプロセツサを用いて、生成多項
式X16+X15+X2+1によるCRC演算を行う場合
のフローチヤートである。本フローチヤートのス
テツプ1で、CRC演算すべき対象となるデータ
の先頭3バイトを抽出する。このCRC演算の対
象となるデータは、CRC演算対象格納バツフア
20(第2図)に一時的に保持されている。この
保持は各データを複数ビツト単位、例えばバイト
単位に区分して行う。第2図では、4バイトの
CRC演算対象データDATA+0〜DATA+3の
例を示す。各バイトは8ビツトからなり、左端が
MSB(Most Significant Bit)、右端がLSB
(Least Significant Bit)である。
算方法の手順の一例を示すフローチヤート、第2
図は本発明において用いるCRC演算対象データ
格納バツフアの一例を示す図、第3図は本発明に
おいて用いるメモリ内の作業エリアを示す図、第
4図は本発明において用いるCRC生成多項式テ
ーブルを示す図である。第1Aおよび1B図は8
ビツトのマイクロプロセツサを用いて、生成多項
式X16+X15+X2+1によるCRC演算を行う場合
のフローチヤートである。本フローチヤートのス
テツプ1で、CRC演算すべき対象となるデータ
の先頭3バイトを抽出する。このCRC演算の対
象となるデータは、CRC演算対象格納バツフア
20(第2図)に一時的に保持されている。この
保持は各データを複数ビツト単位、例えばバイト
単位に区分して行う。第2図では、4バイトの
CRC演算対象データDATA+0〜DATA+3の
例を示す。各バイトは8ビツトからなり、左端が
MSB(Most Significant Bit)、右端がLSB
(Least Significant Bit)である。
ステツプ2では、先頭バイトのデータDATA
+0においてMSBから見て最初の論理“1”が
LSB側から数えて何ビツト目に現われるか調べ
る。第2図の例では、データDATA+0の第3
ビツト目に、MSBより見て最初の“1”がある。
+0においてMSBから見て最初の論理“1”が
LSB側から数えて何ビツト目に現われるか調べ
る。第2図の例では、データDATA+0の第3
ビツト目に、MSBより見て最初の“1”がある。
ステツプ3では、ステツプ2の結果が第nビツ
ト目(n=3)であるから、テーブルTABLE・
nを選択する。このテーブルは第4図のCRC生
成多項式テーブル40のことであり、例えば
RAM(Random Access Meemory)からなり、
8ビツトに対応させて8つのテーブル群
TABLE・1〜TABLE・8からなる。上記の例
では、テーブルTABLE・3が選択される。
ト目(n=3)であるから、テーブルTABLE・
nを選択する。このテーブルは第4図のCRC生
成多項式テーブル40のことであり、例えば
RAM(Random Access Meemory)からなり、
8ビツトに対応させて8つのテーブル群
TABLE・1〜TABLE・8からなる。上記の例
では、テーブルTABLE・3が選択される。
ステツプ4では、先頭3バイトのデータ
DATA+0〜DATA+2(第2図)と対応するテ
ーブルTABLE・3内のTABLE・3+0〜
TABLE・3+2との間で、バイト対応でEOR演
算を行い、その演算結果を作業エリアに格納す
る。この作業エリアは第3図に示すメモリ30で
あり、RAMあるいはレジスタにて構成される。
第3図のaに示す作業エリアWORK+0〜
WORK+2は、CRC演算の実施前であるからエ
ンプテイー(all“0”)である。今、ステツプ4
に則りEOR演算を実行したので、その演算結果
(第1回目)が第3図bに示す如く、作業エリア
に格納される。
DATA+0〜DATA+2(第2図)と対応するテ
ーブルTABLE・3内のTABLE・3+0〜
TABLE・3+2との間で、バイト対応でEOR演
算を行い、その演算結果を作業エリアに格納す
る。この作業エリアは第3図に示すメモリ30で
あり、RAMあるいはレジスタにて構成される。
第3図のaに示す作業エリアWORK+0〜
WORK+2は、CRC演算の実施前であるからエ
ンプテイー(all“0”)である。今、ステツプ4
に則りEOR演算を実行したので、その演算結果
(第1回目)が第3図bに示す如く、作業エリア
に格納される。
第1B図のフローチヤートにおけるステツプ5
では、第3図bの先頭バイトの作業エリア
WORK+0がall“0”か否か調べる。all“0”で
なければ(NO)、ステツプ6に至る。
では、第3図bの先頭バイトの作業エリア
WORK+0がall“0”か否か調べる。all“0”で
なければ(NO)、ステツプ6に至る。
ステツプ6では、第3図bの作業エリア
WORK+0のMSBから見て最初に論理“1”が
現われるのはLSB側から数えて第何ビツト目か
調べる。第3図bの例では第2ビツト目である。
WORK+0のMSBから見て最初に論理“1”が
現われるのはLSB側から数えて第何ビツト目か
調べる。第3図bの例では第2ビツト目である。
ステツプ7では、その第2ビツト目の2に対応
するテーブルTABLE・2(第4図)を選択し、
第3図bの3バイトの作業エリアWORK+0〜
WORK+2と3バイトのテーブルTABLE・2
+0〜TABLE・2+2との間で、バイト対応で
EOR演算を行い、その演算結果で作業エリア
WORK+0〜WORK+2(第3図のc)の内容
を書き換える。すなわち、第3図cの内容は、第
2回目の演算結果である。以下、ステツプ5→6
→7→5→6を繰り返す。ステツプ5の結果が
all“0”となつたとき(YES)、ステツプ8に至
る。
するテーブルTABLE・2(第4図)を選択し、
第3図bの3バイトの作業エリアWORK+0〜
WORK+2と3バイトのテーブルTABLE・2
+0〜TABLE・2+2との間で、バイト対応で
EOR演算を行い、その演算結果で作業エリア
WORK+0〜WORK+2(第3図のc)の内容
を書き換える。すなわち、第3図cの内容は、第
2回目の演算結果である。以下、ステツプ5→6
→7→5→6を繰り返す。ステツプ5の結果が
all“0”となつたとき(YES)、ステツプ8に至
る。
ステツプ8では、CRC演算すべき3バイト分
のデータのEOR処理が終了したか否かを監視す
る。終了していない場合は(NO)、ステツプ9
に至る。
のデータのEOR処理が終了したか否かを監視す
る。終了していない場合は(NO)、ステツプ9
に至る。
ステツプ9では、第1図に示した2バイトの演
算結果WORK+1およびWORK+2と新たなバ
イトのデータDATA+3とからなる3バイトの
データを対象として、上述と同様のステツプ2〜
7を実行する。
算結果WORK+1およびWORK+2と新たなバ
イトのデータDATA+3とからなる3バイトの
データを対象として、上述と同様のステツプ2〜
7を実行する。
ステツプ10では、全データの処理が終了したと
きの作業エリアにおけるWORK+1および
WORK+2の内容(第3図c)をもつて、求め
るCRC演算結果を得る。
きの作業エリアにおけるWORK+1および
WORK+2の内容(第3図c)をもつて、求め
るCRC演算結果を得る。
上述の説明から明らかなように本発明では
CRC演算の対象となるデータを1ビツトずつシ
フトして処理するのではなく、CRC生成多項式
のビツトパターンを1ビツトずつシフトしてなる
複数のテーブルを予め用意しておき、対応する1
つのテーブルを選択して、その選択されたテーブ
ルとデータの間で、複数ビツト単位で(バイト単
位で)、一括してEORをとるようにしたものであ
る。従つて、少なくとも1ビツト毎に同様の処理
を繰り返し行う従来の方法に比べれば、処理時間
はかなり短縮される。
CRC演算の対象となるデータを1ビツトずつシ
フトして処理するのではなく、CRC生成多項式
のビツトパターンを1ビツトずつシフトしてなる
複数のテーブルを予め用意しておき、対応する1
つのテーブルを選択して、その選択されたテーブ
ルとデータの間で、複数ビツト単位で(バイト単
位で)、一括してEORをとるようにしたものであ
る。従つて、少なくとも1ビツト毎に同様の処理
を繰り返し行う従来の方法に比べれば、処理時間
はかなり短縮される。
第5Aおよび5B図は従来のCRC演算方法の
手順の一例を示すフローチヤートであり、第6図
は従来法で用いるCRC演算結果格納エリアを示
す図である。第5Aおよび5B図のフローチヤー
トにおいて、ステツプ1では、CRC演算結果格
納エリアをエンプテイー(all“0”にクリア)に
する(第6図a)。ステツプ2ではビツトポイン
タを先頭ビツトにセツトする。ここに先頭ビツト
とはデータ(第2図のDATAに同じ)のMSBの
ことである。又、ビツトポイントは、1ビツトず
つのデータシフトを行う際に各ビツトの指定を行
う。要するに、従来の手法ではステツプ2〜5
を、データの全ビツトに亘りそれぞれ繰り返さな
ければならず、相当の時間を費やすことは明白で
ある。
手順の一例を示すフローチヤートであり、第6図
は従来法で用いるCRC演算結果格納エリアを示
す図である。第5Aおよび5B図のフローチヤー
トにおいて、ステツプ1では、CRC演算結果格
納エリアをエンプテイー(all“0”にクリア)に
する(第6図a)。ステツプ2ではビツトポイン
タを先頭ビツトにセツトする。ここに先頭ビツト
とはデータ(第2図のDATAに同じ)のMSBの
ことである。又、ビツトポイントは、1ビツトず
つのデータシフトを行う際に各ビツトの指定を行
う。要するに、従来の手法ではステツプ2〜5
を、データの全ビツトに亘りそれぞれ繰り返さな
ければならず、相当の時間を費やすことは明白で
ある。
第7図は本発明のCRC演算方法を実施するた
めのハードウエアの一例を示すブロツク図であ
る。本図において、LSI71は入力データDioを取
り込みここで直列/並列変換する。例えば8ビツ
トの並列データはバス72に乗せられる。バス7
2には8ビツトのマイクロプロセツサ(MPU)
73が接続し、MPU73はROM74に格納さ
れたCRC演算用プログラムに従つて動作する。
RAM75は第2図〜第4図に示す各メモリエリ
アを含む。Dputは、CRC演算結果を末尾に有する
出力データである。
めのハードウエアの一例を示すブロツク図であ
る。本図において、LSI71は入力データDioを取
り込みここで直列/並列変換する。例えば8ビツ
トの並列データはバス72に乗せられる。バス7
2には8ビツトのマイクロプロセツサ(MPU)
73が接続し、MPU73はROM74に格納さ
れたCRC演算用プログラムに従つて動作する。
RAM75は第2図〜第4図に示す各メモリエリ
アを含む。Dputは、CRC演算結果を末尾に有する
出力データである。
発明の効果
以上説明したように本発明によれば、従来に比
して一層高速にCRC演算を行うことができる。
して一層高速にCRC演算を行うことができる。
第1Aおよび1B図は本発明に基づくCRC演
算方法の手順の一例を示すフローチヤート、第2
図は本発明において用いるCRC演算対象データ
格納バツフアの一例を示す図、第3図は本発明に
おいて用いるメモリ内の作業エリアを示す図、第
4図は本発明において用いるCRC生成多項式テ
ーブルを示す図、第5Aおよび5B図は従来の
CRC演算方法の手順の一例を示すフローチヤー
ト、第6図は従来法で用いるCRC演算結果格納
エリアを示す図、第7図は本発明のCRC演算方
法を実施するためのハードウエアの一例を示すブ
ロツク図である。 20……CRC演算対象格納バツフア、30…
…メモリ、40……CRC生成多項式テーブル。
算方法の手順の一例を示すフローチヤート、第2
図は本発明において用いるCRC演算対象データ
格納バツフアの一例を示す図、第3図は本発明に
おいて用いるメモリ内の作業エリアを示す図、第
4図は本発明において用いるCRC生成多項式テ
ーブルを示す図、第5Aおよび5B図は従来の
CRC演算方法の手順の一例を示すフローチヤー
ト、第6図は従来法で用いるCRC演算結果格納
エリアを示す図、第7図は本発明のCRC演算方
法を実施するためのハードウエアの一例を示すブ
ロツク図である。 20……CRC演算対象格納バツフア、30…
…メモリ、40……CRC生成多項式テーブル。
Claims (1)
- 1 サイクリツク冗長チエツク生成多項式に相当
するビツトパターンを相互に1ビツトずつシフト
してなる複数のビツトパターンの群をテーブルと
して予め準備しておき、各々が複数ビツト単位で
構成される、サイクリツク冗長チエツク演算すべ
きデータを順次取り出し、取り出された該データ
と当該データに対応する1の前記テーブル内のビ
ツトパターンとの間で排他的論理和演算を実行す
ることを特徴とするサイクリツク冗長チエツク演
算方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP59105658A JPS60250725A (ja) | 1984-05-26 | 1984-05-26 | サイクリツク冗長チエツク演算方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP59105658A JPS60250725A (ja) | 1984-05-26 | 1984-05-26 | サイクリツク冗長チエツク演算方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
JPS60250725A JPS60250725A (ja) | 1985-12-11 |
JPH0224417B2 true JPH0224417B2 (ja) | 1990-05-29 |
Family
ID=14413538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP59105658A Granted JPS60250725A (ja) | 1984-05-26 | 1984-05-26 | サイクリツク冗長チエツク演算方法 |
Country Status (1)
Country | Link |
---|---|
JP (1) | JPS60250725A (ja) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0254140B1 (de) * | 1986-07-21 | 1991-04-17 | Siemens Aktiengesellschaft | Verfahren zum Bilden von Datenblocksicherungsinformationen für serielle Datenbitfolgen mittels zyklischer Binärcodes |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58137053A (ja) * | 1982-02-08 | 1983-08-15 | Nec Corp | 符号化回路 |
JPS58206254A (ja) * | 1982-05-27 | 1983-12-01 | Nec Corp | 誤り検出符号生成/検査方式 |
-
1984
- 1984-05-26 JP JP59105658A patent/JPS60250725A/ja active Granted
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS58137053A (ja) * | 1982-02-08 | 1983-08-15 | Nec Corp | 符号化回路 |
JPS58206254A (ja) * | 1982-05-27 | 1983-12-01 | Nec Corp | 誤り検出符号生成/検査方式 |
Also Published As
Publication number | Publication date |
---|---|
JPS60250725A (ja) | 1985-12-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2077271C (en) | Method and apparatus for compressing data | |
JP2830280B2 (ja) | 可変長ストリング符合装置 | |
US5936560A (en) | Data compression method and apparatus performing high-speed comparison between data stored in a dictionary window and data to be compressed | |
JP3262602B2 (ja) | 辞書ベースのデータ圧縮/圧縮解除システム | |
EP0660531A2 (en) | Method and apparatus for compressing data | |
EP0187812A1 (en) | DATA COMPRESSION PROCESS. | |
JPH0568893B2 (ja) | ||
WO1992017844A1 (en) | Solid-state ram data storage for virtual memory computer using fixed-size swap pages | |
CA2472952A1 (en) | Interleaving apparatus and method for a communication system | |
JPS632370B2 (ja) | ||
US5996113A (en) | Method and apparatus for generating digital checksum signatures for alteration detection and version confirmation | |
JPH0224417B2 (ja) | ||
US5671238A (en) | Method and circuitry for generating r-bit parallel CRC code for an l-bit data source | |
JPH0317132B2 (ja) | ||
JPH05241775A (ja) | データ圧縮方式 | |
JPH0628203A (ja) | 乗算回路検査方式 | |
JPH0964754A (ja) | 誤り検出符号生成回路 | |
JPH03270417A (ja) | データ圧縮方法および圧縮データのデータ復元方法 | |
JPS5821299B2 (ja) | メモリ | |
JPH07212246A (ja) | 高速crcチェック方式 | |
JP3138342B2 (ja) | 可変長符号の復号装置 | |
JP2752220B2 (ja) | 文字列処理装置 | |
JP3087394B2 (ja) | 2進算術符号器 | |
US6484288B1 (en) | Statistics signature generation and analysis | |
JPH0650478B2 (ja) | デ−タ圧縮記憶方式 |