JP4515651B2 - 巡回冗長検査演算方法及び巡回冗長検査演算回路 - Google Patents
巡回冗長検査演算方法及び巡回冗長検査演算回路 Download PDFInfo
- Publication number
- JP4515651B2 JP4515651B2 JP2001059807A JP2001059807A JP4515651B2 JP 4515651 B2 JP4515651 B2 JP 4515651B2 JP 2001059807 A JP2001059807 A JP 2001059807A JP 2001059807 A JP2001059807 A JP 2001059807A JP 4515651 B2 JP4515651 B2 JP 4515651B2
- Authority
- JP
- Japan
- Prior art keywords
- data
- calculation
- bits
- unit
- output
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
- H03M13/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
- H03M13/09—Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
- H03M13/091—Parallel or block-wise CRC computation
Landscapes
- Engineering & Computer Science (AREA)
- Computing Systems (AREA)
- Physics & Mathematics (AREA)
- Probability & Statistics with Applications (AREA)
- Theoretical Computer Science (AREA)
- Error Detection And Correction (AREA)
- Detection And Correction Of Errors (AREA)
- Detection And Prevention Of Errors In Transmission (AREA)
Description
【発明の属する技術分野】
この発明は、巡回冗長検査(CRC:Cyclic Redundancy Check)演算方法及び巡回冗長検査演算回路に関し、特に、異なる通信プロトコルを介してデータ通信を行う場合に用いて好適な巡回冗長検査演算方法及び巡回冗長検査演算回路に関する。
【0002】
【従来の技術】
図15は、従来のデータ通信システムの構成例を示すブロック図である。この例のデータ通信システムは、パーソナルコンピュータ等の情報処理装置1と、ハードディスク3を備えたサーバ2とがイントラネットやインターネット等のネットワーク4を介して接続されて構成されている。そして、情報処理装置1とサーバ2との間で行われるデータ通信の通信プロトコルとしては、一般に、TCP/IP(Transmission Control Protocol/Internet Protocol)(以下、一般プロトコルと呼ぶ)が用いられている。一方、サーバ2とハードディスク3との間で行われるデータ通信の通信プロトコルとしては、最近では、次世代のサーバ向けインターフェイスであり、データ伝送速度が500Mバイト/秒以上であるInfiniBand(商標名)等の高速な通信プロトコル(以下、高速プロトコルと呼ぶ)が用いられている。
【0003】
次に、上記構成のデータ通信システムにおいて、情報処理装置1からネットワーク4を介してサーバ2へアクセスし、ハードディスク3に記憶されているデータを読み出す場合の動作について説明する。まず、サーバ2は、情報処理装置1からアクセスされ、ハードディスク3に記憶されているあるデータの読み出しが要求されると、ハードディスク3の記憶領域をサーチし、要求されたデータを探し出す。これにより、ハードディスク3は、要求されたデータを読み出し、ケーブル5を介してサーバ2へ伝送する。この際、データは、図16に示すデータ・フォーマットに従って構成された通信データに組み込まれ、上記高速プロトコルでハードディスク3からサーバ2へ4バイト(32ビット)ずつ伝送されるものとする。通信データは、図16に示すように、ヘッダと、データと、演算結果CRC32と、演算結果CRC16とから構成されている。ここで、演算結果CRC32とは、伝送されるデータを32ビットずつのビット列に分割し、データ通信における誤り検出方式の1つである巡回冗長検査(CRC:Cyclic Redundancy Check)方式により、式(1)に示す32次の生成多項式を用いて誤り検出のための演算を行った結果をいう。同様に、演算結果CRC16とは、伝送されるデータを16ビットずつのビット列に分割し、CRC方式により、式(2)に示す16次の生成多項式を用いて誤り検出のための演算を行った結果をいう。以下では、式(1)に示す32次の生成多項式を用いて誤り検出のために行う演算をCRC32演算と呼び、式(2)に示す16次の生成多項式を用いて誤り検出のために行う演算をCRC16演算と呼ぶ。
【数1】
G(X)=X32+X26+X23+X22+X16+X12
+X11+X8+X7+X5+X4+X2+X1+1・・・(1)
【数2】
G(X)=X16+X12+X3+X1+1・・・(2)
【0004】
この通信データは、図17に示すように、ヘッダ及びデータがn個(nは自然数)の1バイトずつのデータブロックDB0〜DBnに分割され、演算結果CRC32が4個の1バイトずつの演算結果ブロックCRC320〜CRC323に分割され、演算結果CRC16が2個の1バイトずつの演算結果ブロックCRC160及びCRC161に分割される。CRC32演算は、ヘッダ及びデータについて行われる。一方、CRC16演算は、ヘッダ、データ及び演算結果CRC32について行われる。すなわち、CRC16演算においては、演算結果CRC32もヘッダやデータと同様に見なされるのである。
【0005】
次に、サーバ2は、ハードディスク3から通信データが伝送されると、通信データから上記高速プロトコル専用のヘッダ及び演算結果CRC16を削除したものを新たに通信データとして、ネットワーク4を介して情報処理装置1へ伝送する。
上記したように、この例の通信システムにおいては、ハードディスク3からサーバ2へ通信データを伝送する際にCRC32演算を行って通信データに演算結果ブロックCRC320〜CRC323を付加している。これにより、サーバ2から情報処理装置1へ通信データを伝送する際には、CRC演算を行う必要がなく、短時間で通信データの伝送を行うことができる。
【0006】
次に、上記したハードディスク3からサーバ2へ通信データを伝送する際に、CRC演算を行う従来のCRC演算回路の構成及び動作について説明する。図18は、従来のCRC演算回路の構成を示すブロック図である。この例のCRC演算回路は、データ入力部11と、ラッチ12〜16と、セレクタ17及び18と、演算部19及び20と、データ出力部21とから構成されている。
データ入力部11は、ハードディスク3の所定の記憶領域から読み出される32ビットずつの入力データD0に対して波形整形などを施し、出力データD1として後段の回路要素に入力するためのインターフェイスである。ラッチ12及び13は、各々32ビットのフリップフロップからなり、データ処理のタイミングを調整するために設けられている。ラッチ12は、データ入力部11の出力データD1を外部から供給されるクロック1個分だけ保持(ラッチ)し、出力データD2として出力する。ラッチ13は、ラッチ12の出力データD2をクロック1個分だけラッチし、出力データD4として出力する。ラッチ14は、32ビットのフリップフロップからなり、演算部20へのデータ入力のタイミングを調整するために、データ入力部11の出力データD1をクロック1個分だけラッチし、出力データD2として出力する。
セレクタ17は、ラッチ14から出力される32ビットの出力データD2か、あるいはラッチ15から出力される32ビットの出力データD5のいずれか一方を選択し、出力データD3として出力する。
【0007】
演算部19は、データ入力部11の出力データD1についてラッチ15の出力データD5を用いてCRC32演算を行う。演算部20は、セレクタ17の出力データD3についてラッチ16の出力データD6を用いてCRC16演算を行う。ラッチ15は、32ビットのフリップフロップからなり、演算部19から出力される32ビットの演算結果をクロック1個分だけラッチし、出力データD5として出力する。ラッチ16は、16ビットのフリップフロップからなり、演算部20から出力される16ビットの演算結果をクロック1個分だけラッチし、出力データD6として出力する。セレクタ18は、ラッチ13から出力される32ビットの出力データD4、ラッチ15から出力される32ビットの出力データD5、あるいはラッチ16から出力される16ビットの出力データD6のいずれかを選択し、出力データD7として出力する。データ出力部21は、セレクタ18から出力される32ビットの出力データD7に対して波形整形などを施し、出力データD8として後段の回路要素へ供給するためのインターフェイスである。
【0008】
次に、演算部19及び20の詳細な構成について説明する。
この例の演算部19は、以下に示すCRC32演算と同様の演算結果CRC32を生成する。ここで、上記した入力データD1を構成する32ビットのビット列d31,d30,…,d1,d0を数値とみなし、式(3)に示す多項式P(X)で表す。
【数3】
P(X)=d31X31+d30X30+…+d1X+d0・・・(3)
式(3)において、「+」は、剰余2(Modulo 2)の加算を表す。「+」の意味については、上記した式(1)及び(2)並びに以下に示す式においても同様である。また、剰余2とは、2進数値0と1とで巡回して桁上げ及び桁下げがない演算をいい、式(4)〜式(11)に示すように定義される。
0+0=0・・・(4)
0+1=1・・・(5)
1+0=1・・・(6)
1+1=0・・・(7)
0−0=0・・・(8)
0−1=1・・・(9)
1−0=1・・・(10)
1−1=0・・・(11)
すなわち、剰余2の演算は、論理回路における排他的論理和演算と同じ結果となる。
【0009】
そして、この入力データP(X)に式(1)に示す32次の生成多項式G(X)の最高次の項X32を乗算した結果を式(12)に示すQ(X)とする。次に、Q(X)を生成多項式G(X)で除算し、その剰余を式(13)に示すR(X)とする。式(13)において、c31,c30,…,c1,c0は0又は1である。
【数4】
Q(X)=d31X63+d30X62+…+d1X33+d0X32・・・(12)
【数5】
R(X)=c31X31+c30X30+…+c1X+c0・・・(13)
この剰余R(X)を構成するc31,c30,…,c1,c0が演算結果CRC32のサイクリック・チェック・ビットであり、CRC符号と呼ばれる。さらに、次に入力される入力データP'(X)に今回得られたCRC符号を乗算して新たなQ(X)とする。この新たなQ(X)を生成多項式G(X)で除算すると、新たなCRC符号が得られる。以上説明した処理をすべての入力データP(X)に繰り返し(巡回)行うと、演算結果CRC32が得られる。
以上説明したように、CRC32演算においては、Q(X)を生成多項式G(X)で除算する必要がある。しかし、この除算をハードウェアにより単純に実現しようとすると、高速な処理ができないことや回路規模が大きくなることなどから、一般には、図19に示す演算部19により実現する。演算部19は、イクスクルーシブオアゲート(EOR)231〜2314と、ディレイ・フリップフロップ(FF)241〜2432とから構成されている。なお、この構成については、公知であるので、その説明を省略する。図19に示す演算部19に32ビットの入力データP(X)と同じ32ビット分のデータをシフトするためのクロックを供給した場合の各FF2432〜241の出力データC31〜C00がCRC32演算の剰余c31,c30,…,c1,c0を表している。ここで、図20及び図21に出力データC31〜C00の演算式を示す。図20及び図21において、R31〜R00はFF2432〜FF241の初期値であり、D31〜D00は上記した入力データP(X)を構成するビット列d31,d30,…,d1,d0に対応しており、「・」は排他的論理和演算を意味している。
【0010】
次に、図22は、演算部20の構成を示すブロック図である。この例の演算部20は、EOR261〜264と、FF271〜2716とから構成されている。なお、この構成については、公知であるので、その説明を省略する。この例の演算部20は、CRC16演算と同様の演算結果CRC16を生成する。なお、CRC16演算の詳細については、生成多項式が異なる点を除けば上記したCRC32演算と略同様であるので、その説明を省略する。
図23に示す演算部20に32ビットの入力データP(X)と同じ32ビット分のデータをシフトするためにクロックを供給した場合の各FF2716〜271の出力データC15〜C00がCRC16演算の剰余を表している。ここで、図23に出力データC15〜C00の演算式を示す。図23において、R15〜R00はFF2716〜FF271の初期値であり、D31〜D00は上記した入力データP(X)を構成するビット列d31,d30,…,d1,d0に対応しており、「・」は排他的論理和演算を意味している。
【0011】
次に、上記構成のCRC演算回路の動作について、図24に示すタイミング・チャートを参照して説明する。まず、説明を簡単にするために、入力データD0は、図24に示すように、バイトデータBD0〜BD3からなるものとする。バイトデータBD0は各1バイトのデータブロックDB0〜DB3からなり、バイトデータBD1は各1バイトのデータブロックDB4〜DB7からなる。また、バイトデータBD2は各1バイトのデータブロックDB8〜DB11からなり、バイトデータBD3は各1バイトのデータブロックDB12及びDB13からなる。
まず、入力データD0が、図24(1)に示すように、第1の周期#1から図示せぬクロックに同期して外部から順次CRC演算回路に供給されると、データ入力部11は、入力データD0に対して波形整形など施し、出力データD1としてラッチ12及び14並びに演算部19へ順次供給する。ラッチ12及び14は、データ入力部11の出力データD1を外部から供給されるクロック1個分だけラッチし、図24(3)に示すように、第2の周期#2から出力データD2として順次出力する。
【0012】
一方、演算部19は、第1の周期#1において、データ入力部11の出力データD1、今の場合、バイトデータBD0について、ラッチ15の出力データD5、今の場合、ラッチ15の初期値を用いてCRC32演算を行い、演算結果CR00を生成する。なお、ラッチ15には、初期値として、「0」が予め設定されている。これにより、ラッチ15は、演算部19から出力される演算結果CR0 0をクロック1個分だけラッチし、図24(2)に示すように、第2の周期#2に出力データD5として出力する。次に、演算部19は、第2の周期#2において、データ入力部11の出力データD1、今の場合、バイトデータBD1について、ラッチ15の出力データD5、今の場合、演算結果CR00を用いてCRC32演算を行い、演算結果CR01を生成する。これにより、ラッチ15は、演算結果CR01をクロック1個分だけラッチし、図24(2)に示すように、第3の周期#3に出力データD5として出力する。
【0013】
同様に、演算部19は、第3の周期#3において、データ入力部11の出力データD1、今の場合、バイトデータBD2について、ラッチ15の出力データD5、今の場合、演算結果CR01を用いてCRC32演算を行い、演算結果CR02を生成する。これにより、ラッチ15は、演算結果CR02をクロック1個分だけラッチし、図24(2)に示すように、第4の周期#4に出力データD5として出力する。次に、演算部19は、第4の周期#4において、データ入力部11の出力データD1、今の場合、バイトデータBD3について、ラッチ15の出力データD5、今の場合、演算結果CR02を用いてCRC32演算を行い、演算結果CR03を生成する。これにより、ラッチ15は、演算結果CR03をクロック1個分だけラッチし、図24(2)に示すように、第5の周期#5に出力データD5として出力する。この演算結果CR03が演算結果CRC32である。この演算結果CRC32は、上記したように、4個の演算結果ブロックCRC320〜CRC323から構成されている。
【0014】
これにより、セレクタ17は、図24(4)に示すように、第2〜第4の周期#2〜#4においては、ラッチ14から出力される32ビットの出力データD2、今の場合、バイトデータBD0〜BD2を選択して出力データD3として出力する。また、セレクタ17は、図24(4)に示すように、第5の周期#5においては、バイトデータBD3を構成するデータブロックDB12及びDB13と、演算結果CRC32を構成する演算結果ブロックCRC320及びCRC321とから新たなバイトデータBD'3を生成して出力データD3として出力する。さらに、セレクタ17は、図24(4)に示すように、第6の周期#6においては、演算結果CRC32を構成する演算結果ブロックCRC322及びCRC323を新たなバイトデータBD4とし、出力データD3として出力する。
【0015】
したがって、演算部20は、第2の周期#2において、セレクタ17の出力データD3、今の場合、バイトデータBD0について、ラッチ16の出力データD6、今の場合、ラッチ16の初期値を用いてCRC16演算を行い、演算結果CR10を生成する。なお、ラッチ16には、初期値として、「0」が予め設定されている。これにより、ラッチ16は、演算部20から出力される演算結果CR10をクロック1個分だけラッチし、図24(5)に示すように、第3の周期#3に出力データD6として出力する。次に、演算部20は、第3の周期#3において、セレクタ17の出力データD3、今の場合、バイトデータBD1について、ラッチ16の出力データD6、今の場合、演算結果CR10を用いてCRC16演算を行い、演算結果CR11を生成する。これにより、ラッチ16は、演算結果CR11をクロック1個分だけラッチし、図24(5)に示すように、第4の周期#4に出力データD6として出力する。
【0016】
同様に、演算部20は、第4の周期#4において、セレクタ17の出力データD3、今の場合、バイトデータBD2について、ラッチ16の出力データD6、今の場合、演算結果CR11を用いてCRC16演算を行い、演算結果CR12を生成する。これにより、ラッチ16は、演算結果CR12をクロック1個分だけラッチし、図24(5)に示すように、第5の周期#5に出力データD6として出力する。次に、演算部20は、第5の周期#5において、セレクタ17の出力データD3、今の場合、バイトデータBD'3、すなわち、データブロックDB12及びDB13並びに演算結果ブロックCRC320及びCRC321について、ラッチ16の出力データD6、今の場合、演算結果CR12を用いてCRC16演算を行い、演算結果CR13を生成する。これにより、ラッチ16は、演算結果CR13をクロック1個分だけラッチし、図24(5)に示すように、第6の周期#6に出力データD6として出力する。次に、演算部20は、第6の周期#6において、セレクタ17の出力データD3、今の場合、バイトデータBD4、すなわち、演算結果ブロックCRC322及びCRC323について、ラッチ16の出力データD6、今の場合、演算結果CR13を用いてCRC16演算を行い、演算結果CR14を生成する。これにより、ラッチ16は、演算結果CR14をクロック1個分だけラッチし、図24(5)に示すように、第7の周期#7に出力データD6として出力する。この演算結果CR14が演算結果CRC16である。この演算結果CRC16は、上記したように、2個の演算結果ブロックCRC160及びCRC161から構成されている。
【0017】
これにより、セレクタ18は、第3〜第5の周期#3〜#5においては、ラッチ13から出力される32ビットの出力データD2、今の場合、バイトデータBD0〜BD2を選択して出力データD7として出力する。また、セレクタ18は、第6の周期#6においては、データブロックDB12及びDB13並びに演算結果ブロックCRC320及びCRC321とからなるバイトデータBD'3を出力データD7として出力する。さらに、セレクタ18は、第7の周期#7においては、演算結果CRC32を構成する演算結果ブロックCRC322及びCRC323と、演算結果CRC16を構成する演算結果ブロックCRC160及びCRC161とから新たなバイトデータBD'4を生成して出力データD7として出力する。したがって、データ出力部21は、図24(6)に示すように、セレクタ18から出力される32ビットの出力データD7に対して波形整形など施し、出力データD8として後段の回路要素へ供給する。
【0018】
【発明が解決しようとする課題】
ところで、データ通信においては、データを正確に相手方に伝送するためには、データ伝送の最初から最後まで(パケット通信においては1パケット間)、データを連続して伝送しなければならない。このため、上記した従来のCRC演算回路においては、図24に示すように、伝送すべきデータとCRC演算結果とが途切れなく伝送されるように、伝送されるべきデータの最後にCRC演算結果を付加している。
また、上記した従来のCRC演算回路においては、CRC16演算をする際にはCRC32演算の演算結果CRC32を用いているため、データ入力部11の出力データD1の最後に演算結果CRC32を付加して演算部20に供給する必要がある。
【0019】
ところが、図24(1)に示すように、32ビットずつ供給されるデータ入力部11の出力データD1の最後が2バイトのバイトデータBD3である場合には、以下に示す不都合が発生する。
すなわち、演算結果CRC32は、各1バイトで合計4個の演算結果ブロックCRC320〜CRC323から構成されているので、前半の演算結果ブロックCRC321及びCRC322については、図24(4)に示すように、データブロックBD12及びBD13に付加してバイトデータBD'3として第5の周期#5に演算部20へ伝送することができる。一方、演算結果CRC32のうち、後半の演算結果ブロックCRC322及びCRC323については、図24(4)に示すように、新たにバイトデータBD4を構成し、第6の周期#6に演算部20へ伝送しなければならない。つまり、この場合、本来のCRC16演算に直接関わらないデータ伝送のためだけに1クロック分だけ余計に時間がかかることになる。このため、ラッチ14は、この1クロック分だけ余計に時間がかかるデータ伝送と、演算部20におけるCRC16演算とのタイミングを調整するために、データ入力部11の出力データD1をクロック1個分だけラッチしているのである。
さらに、CRC演算を行うためには、少なくともクロック1個分の時間は必要であり、そのために、演算部19及び20の各後段にはラッチ15及び16が設けられている。
したがって、データ入力部11に入力データD0が入力されてからデータ出力部21から出力データD8が出力されるまでにクロック2個分の遅延が生じてしまう。そこで、上記した従来のCRC演算回路においては、データ入力部11とセレクタ18との間に、ラッチ14に対応してラッチ12を、ラッチ15及び16に対応してラッチ13を設けているのである。
これにより、上記した従来のCRC演算回路は、近年のCPU(中央処理装置)の動作速度の高速化に伴うデータ通信における信号処理の高速化への要求に十分に応えることができないという問題があった。
以上説明した不都合は、CRC演算を複数回行ってデータ伝送を行うデータ通信において同様に発生するものである。そして、データ伝送速度を高速化したり、バス幅を広げたりすることだけでは上記データ通信における信号処理の高速化への要求には十分に対応できず、信号処理回路内部における処理速度の高速化が必要不可欠である。
【0020】
この発明は、上述の事情に鑑みてなされたもので、高速に行うことができる巡回冗長検査演算方法及び巡回冗長検査演算回路を提供することを目的としている。
【0021】
【課題を解決するための手段】
上記課題を解決するために、請求項1記載の発明は、伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、上記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算方法に係り、上記データの所定ビット数ごとに第1の生成多項式により演算を行う第1の演算処理と、上記データの所定ビット数ごとに上記第1の生成多項式と同一の又は異なる少なくとも1個の第2の生成多項式により演算を行う第2の演算処理と、上記データの所定ビット数と、上記第1の演算処理で得られた演算結果と、上記第2の演算処理の途中で得られる演算結果とについて、上記第2の生成多項式により演算を行う第3の演算処理とを有することを特徴としている。
【0022】
また、請求項2記載の発明は、請求項1記載の巡回冗長検査演算方法に係り、上記第3の演算処理では、上記データの所定ビット数を下位ビットとし、上記第1の演算処理で得られた演算結果を上位ビットとして上記演算を行うことを特徴としている。
【0023】
また、請求項3記載の発明は、伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、上記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算方法に係り、上記データの32ビットごとに32次の生成多項式により演算を行う第1の演算処理と、上記データの32ビットごとに16次の生成多項式により演算を行う第2の演算処理と、上記データの32ビットと、上記第1の演算処理で得られた32ビットの演算結果と、上記第2の演算処理の途中で得られる16ビットの演算結果とについて、上記16次の生成多項式により演算を行う第3の演算処理とを有することを特徴としている。
【0024】
また、請求項4記載の発明は、請求項3記載の巡回冗長検査演算方法に係り、上記第3の演算処理では、上記データの32ビットを下位ビットとし、上記第1の演算処理で得られた上記32ビットの演算結果を上位ビットとする64ビットごとに上記演算を行うことを特徴としている。
【0025】
また、請求項5記載の発明は、伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、上記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算方法に係り、上記データの所定ビット数ごとに上記生成多項式により演算を行う第1の演算処理と、上記データの所定ビット数ごとに上記生成多項式により演算を行う第2の演算処理と、上記データの所定ビット数と、上記第1の演算処理で得られた演算結果と、上記第2の演算処理の途中で得られる演算結果とについて、上記生成多項式により演算を行う第3の演算処理と、上記データの所定ビット数ごとに上記生成多項式により演算を行う第4の演算処理と、上記データの所定ビット数と、上記第1の演算処理で得られた演算結果と、上記第2の演算処理の途中で得られる演算結果と、上記第4の演算処理の途中で得られる演算結果とについて上記生成多項式により演算を行う第5の演算処理とを有することを特徴としている。
【0026】
また、請求項6記載の発明は、請求項5記載の巡回冗長検査演算方法に係り、上記第3の演算処理では、上記データの32ビットを下位ビットとし、上記第1の演算処理で得られた演算結果を上位ビットとする48ビットごとに上記演算を行い、上記第5の演算処理では、上記データの32ビットを下位ビットとし、上記第1の演算処理で得られた演算結果を中位ビットとし、上記第2の演算処理の途中で得られる演算結果を上位ビットとする64ビットごとに上記演算を行うことを特徴としている。
【0027】
また、請求項7記載の発明は、伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、上記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算回路に係り、上記データの所定ビット数ごとに第1の生成多項式により演算を行う第1の演算部と、上記データの所定ビット数ごとに上記第1の生成多項式と同一の又は異なる少なくとも1個の第2の生成多項式により演算を行う第2の演算部と、上記データの所定ビット数と、上記第1の演算部の演算で得られた演算結果と、上記第2の演算部の演算途中で得られる演算結果とについて、上記第2の生成多項式により演算を行う第3の演算部とを有することを特徴としている。
【0028】
また、請求項8記載の発明は、請求項7記載の巡回冗長検査演算回路に係り、上記データの所定ビット数を下位ビットとし、上記第1の演算部の演算で得られた演算結果を上位ビットとして結合して上記第3の演算部に供給するデータ結合部を有することを特徴としている。
【0029】
また、請求項9記載の発明は、伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、上記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算回路に係り、上記データの32ビットごとに32次の生成多項式により演算を行う第1の演算部と、上記データの32ビットごとに16次の生成多項式により演算を行う第2の演算部と、上記データの32ビットと、上記第1の演算部の演算で得られた32ビットの演算結果と、上記第2の演算部の演算途中で得られる16ビットの演算結果とについて、上記16次の生成多項式により演算を行う第3の演算部とを有することを特徴としている。
【0030】
また、請求項10記載の発明は、請求項9記載の巡回冗長検査演算回路に係り、上記データの32ビットを下位ビットとし、上記第1の演算部の演算で得られた上記32ビットの演算結果を上位ビットとして結合して上記第3の演算部に供給するデータ結合部を有することを特徴としている。
【0031】
また、請求項11記載の発明は、伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、上記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算回路に係り、上記データの所定ビット数ごとに上記生成多項式により演算を行う第1の演算部と、上記データの所定ビット数ごとに上記生成多項式により演算を行う第2の演算部と、上記データの所定ビット数と、上記第1の演算部の演算で得られた演算結果と、上記第2の演算部の演算途中で得られる演算結果とについて、上記生成多項式により演算を行う第3の演算部と、上記データの所定ビット数ごとに上記生成多項式により演算を行う第4の演算部と、上記データの所定ビット数と、上記第1の演算部の演算で得られた演算結果と、上記第2の演算部の演算途中で得られる演算結果と、上記第4の演算部の演算途中で得られる演算結果とについて上記生成多項式により演算を行う第5の演算部とを有することを特徴としている。
【0032】
また、請求項12記載の発明は、請求項11記載の巡回冗長検査演算回路に係り、上記データの32ビットを下位ビットとし、上記第1の演算部の演算で得られた演算結果を上位ビットとして結合して上記第3の演算部に供給する第1のデータ結合部と、上記データの32ビットを下位ビットとし、上記第1の演算部の演算で得られた演算結果を中位ビットとし、上記第2の演算部の演算途中で得られる演算結果を上位ビットとして結合して上記第5の演算部に供給する第2のデータ結合部とを有することを特徴としている。
【0033】
【作用】
この発明の構成によれば、巡回冗長検査演算を高速に行うことができる。
【0034】
【発明の実施の形態】
以下、図面を参照して、この発明の実施の形態について説明する。説明は、実施例を用いて具体的に行う。
A.第1の実施例
まず、この発明の第1の実施例について説明する。
図1は、この発明の第1の実施例であるCRC演算回路の構成を示すブロック図である。
この例のCRC演算回路は、データ入力部31と、ラッチ32〜34と、データ結合部35と、演算部36〜38と、セレクタ39及び40と、データ出力部41とから構成されている。
【0035】
データ入力部31は、32ビットずつの入力データD0に対して波形整形などを施し、出力データD1として後段の回路要素に入力するためのインターフェイスである。ラッチ32は、32ビットのフリップフロップからなり、データ処理のタイミングを調整するために設けられている。ラッチ32は、データ入力部31の出力データD1を外部から供給されるクロック1個分だけラッチし、出力データD7として出力する。データ結合部35は、データ入力部31の出力データD1と、ラッチ33の出力データD8とを結合し、図2に示すように、データ入力部31の出力データD1を下位32ビットとし、ラッチ33の出力データD8を上位32ビットとする出力データD2を生成して出力する。演算部36は、データ入力部31の出力データD1について、ラッチ33の出力データD8を用いてCRC32演算を行い、32ビットの演算結果を出力データD3として出力する。演算部37は、データ入力部31の出力データD1について、ラッチ34の出力データD9を用いてCRC16演算を行い、16ビットの演算結果を出力データD4として出力する。演算部38は、データ結合部35の出力データD2について、ラッチ34の出力データD9を用いてCRC16演算を行い、16ビットの演算結果を出力データD5として出力する。
【0036】
セレクタ39は、演算部37の出力データD4か、あるいは演算部38の出力データD5のいずれか一方を選択して出力データD6として出力する。ラッチ33は、32ビットのフリップフロップからなり、演算部36の出力データD3をクロック1個分だけラッチし、出力データD8として出力する。ラッチ34は、16ビットのフリップフロップからなり、セレクタ39の出力データD6をクロック1個分だけラッチし、出力データD9として出力する。セレクタ40は、ラッチ32の出力データD7、ラッチ33の出力データD8、あるいはラッチ34の出力データD9のいずれかを選択して出力データD10として出力する。データ出力部41は、セレクタ40の出力データD10に対して波形整形などを施し、出力データD11として後段の回路要素へ供給するためのインターフェイスである。
【0037】
なお、演算部36は、その構成が図20及び図21に示す演算式を回路化したものである。また、演算部37は、その構成が図23に示す演算式を回路化したものである。また、演算部38は、その構成が図3に示す演算式を回路化したものである。図3において、Z15〜Z00はFF2716〜FF271の初期値であり、R31〜R00はラッチ33の出力データD8の各ビットである。また、D31〜D00は上記した入力データの各ビットに対応しており、「・」は排他的論理和演算を意味している。
【0038】
図3に示す演算式は、以下に示す手順で生成される。上記したように、演算部38には、図2に示す64ビットのデータが入力される。このため、まず、データ幅64ビットの入力データについてCRC16演算を行う必要がある。この場合の演算結果CRC16は、図22に示す演算部において、64ビット分のデータをシフトするためのクロックを供給した場合の各FF2716〜271の出力データC15〜C00に相当する。そこで、図4に演算部38に64ビットの入力データと同じ64ビット分のデータをシフトするためのクロックを供給した場合の各FF2716〜271の出力データC15〜C00の演算式を示す。図4において、R15〜R00はFF2716〜FF271の初期値であり、D63〜D00は上記した入力データの各ビットに対応しており、「・」は排他的論理和演算を意味している。次に、図2に示すように、データ結合部35の出力データD2のうち、上位32ビットはラッチ33の出力データD8、すなわち、演算部36の演算結果CRC32である。したがって、図4に示す各演算式のD63〜D32に図20及び図21に示す演算式C31〜C00を代入する。この場合、図4に示すR15〜R00と、図20及び図21に示すR31〜R00とを区別するために、前者をZ15〜Z00で表す。そして、得られた各演算式を剰余2に基づいて整理すると、図3に示す演算式が得られる。
【0039】
次に、上記構成のCRC演算回路の動作について、図5に示すタイミング・チャートを参照して説明する。まず、説明を簡単にするために、入力データD0は、図5に示すように、バイトデータBD0〜BD3からなるものとする。バイトデータBD0は各1バイトのデータブロックDB0〜DB3からなり、バイトデータBD1は各1バイトのデータブロックDB4〜DB7からなる。また、バイトデータBD2は各1バイトのデータブロックDB8〜DB11からなり、バイトデータBD3は各1バイトのデータブロックDB12及びDB13からなる。まず、入力データD0が、図5(1)に示すように、第1の周期#1から図示せぬクロックに同期して外部から順次CRC演算回路に供給されると、データ入力部31は、入力データD0に対して波形整形など施し、出力データD1としてラッチ32、データ結合部35並びに演算部36及び37へ順次供給する。
【0040】
これにより、ラッチ32は、データ入力部31の出力データD1を外部から供給されるクロック1個分だけラッチし、第2の周期#2から出力データD7として順次出力する。
また、演算部36は、第1の周期#1において、データ入力部31の出力データD1、今の場合、バイトデータBD0について、ラッチ33の出力データD8、今の場合、ラッチ33の初期値を用いてCRC32演算を行い、演算結果CR00を生成し、出力データD3として出力する。なお、ラッチ33には、初期値として、「0」が予め設定されている。したがって、ラッチ33は、演算部36の出力データD3、今の場合、演算結果CR00をクロック1個分だけラッチし、図5(2)に示すように、第2の周期#2に出力データD8として出力する。次に、演算部36は、第2の周期#2において、データ入力部31の出力データD1、今の場合、バイトデータBD1について、ラッチ33の出力データD8、今の場合、演算結果CR00を用いてCRC32演算を行い、演算結果CR01を生成し、出力データD3として出力する。したがって、ラッチ33は、演算部36の出力データD3、今の場合、演算結果CR01をクロック1個分だけラッチし、図5(2)に示すように、第3の周期#3に出力データD8として出力する。
【0041】
同様に、演算部36は、第3の周期#3において、データ入力部31の出力データD1、今の場合、バイトデータBD2について、ラッチ33の出力データD8、今の場合、演算結果CR01を用いてCRC32演算を行い、演算結果CR02を生成し、出力データD3として出力する。したがって、ラッチ33は、演算部36の出力データD2、今の場合、演算結果CR02をクロック1個分だけラッチし、図5(2)に示すように、第4の周期#4に出力データD8として出力する。次に、演算部36は、第4の周期#4において、データ入力部31の出力データD1、今の場合、バイトデータBD3について、ラッチ33の出力データD8、今の場合、演算結果CR02を用いてCRC32演算を行い、演算結果CR03を生成し、出力データD3として出力する。したがって、ラッチ33は、演算部36の出力データD3、今の場合、演算結果CR03をクロック1個分だけラッチし、図5(2)に示すように、第5の周期#5に出力データD8として出力する。この演算結果CR03が演算結果CRC32である。この演算結果CRC32は、上記したように、4個の演算結果ブロックCRC320〜CRC323から構成されている。
【0042】
一方、演算部37は、第1の周期#1において、データ入力部31の出力データD1、今の場合、バイトデータBD0について、ラッチ34の出力データD9、今の場合、ラッチ34の初期値を用いてCRC16演算を行い、演算結果CR10を生成し、図5(3)に示すように、出力データD4として出力する。なお、ラッチ34には、初期値として、「0」が予め設定されている。これにより、セレクタ39は、第1の周期#1において、演算部37の出力データD4、今の場合、演算結果CR10を選択して出力データD6として出力する。したがって、ラッチ34は、セレクタ39の出力データD6、今の場合、演算結果CR10をクロック1個分だけラッチし、図5(5)に示すように、第2の周期#2に出力データD9として出力する。次に、演算部37は、第2の周期#2において、データ入力部31の出力データD1、今の場合、バイトデータBD1について、ラッチ34の出力データD9、今の場合、演算結果CR10を用いてCRC16演算を行い、演算結果CR11を生成し、図5(3)に示すように、出力データD4として出力する。これにより、セレクタ39は、第2の周期#2において、演算部37の出力データD4、今の場合、演算結果CR11を選択して出力データD6として出力する。したがって、ラッチ34は、セレクタ39の出力データD6、今の場合、演算結果CR11をクロック1個分だけラッチし、図5(5)に示すように、第3の周期#3に出力データD9として出力する。
【0043】
同様に、演算部37は、第3の周期#3において、データ入力部31の出力データD1、今の場合、バイトデータBD2について、ラッチ34の出力データD9、今の場合、演算結果CR11を用いてCRC16演算を行い、演算結果CR12を生成し、図5(3)に示すように、出力データD4として出力する。これにより、セレクタ39は、第3の周期#3において、演算部37の出力データD4、今の場合、演算結果CR12を選択して出力データD6として出力する。したがって、ラッチ34は、セレクタ39の出力データD6、今の場合、演算結果CR12をクロック1個分だけラッチし、図5(5)に示すように、第4の周期#4に出力データD9として出力する。
【0044】
次に、第4の周期#4に至ると、すなわち、入力データD0を構成する最後のデータであるバイトデータBD3が検出されると、以下に示す処理が行われる。まず、データ結合部35は、データ入力部31の出力データD1、今の場合、バイトデータBD3と、ラッチ33の出力データD8、今の場合、演算結果CR02とを結合し、図2に示すように、データ入力部31の出力データD1を下位32ビットとし、ラッチ33の出力データD8を上位32ビットとする合計64ビットの出力データD2を生成して出力する。これにより、演算部38は、この64ビットの出力データD2について、ラッチ34の出力データD9、今の場合、演算結果CR12を用いてCRC16演算を行い、演算結果CR13を生成し、図5(4)に示すように、出力データD5として出力する。この演算結果CR13が演算結果CRC16である。この演算結果CRC16は、上記したように、2個の演算結果ブロックCRC160及びCRC161から構成されている。これにより、セレクタ39は、第4の周期#4において、今度は演算部38の出力データD5、今の場合、演算結果CR13を選択して出力データD6として出力する。したがって、ラッチ34は、セレクタ39の出力データD6、今の場合、演算結果CR13をクロック1個分だけラッチし、図5(5)に示すように、第5の周期#5に出力データD9として出力する。
【0045】
これにより、セレクタ40は、第2〜第4の周期#2〜#4においては、ラッチ32から出力される32ビットの出力データD7、今の場合、バイトデータBD0〜BD2を選択して出力データD10として出力する。また、セレクタ40は、第5の周期#5においては、ラッチ32の出力データD7、今の場合、データブロックDB12及びDB13と、ラッチ33の出力データD8、今の場合、演算結果ブロックCRC320及びCRC321とを新たなバイトデータBD'3に結合し、出力データD10として出力する。さらに、セレクタ40は、第6周期#6においては、ラッチ33の出力データD8、今の場合、演算結果CRC32を構成する演算結果ブロックCRC322及びCRC323と、ラッチ34の出力データD9、今の場合、演算結果CRC16を構成する演算結果ブロックCRC160及びCRC161とを新たなバイトデータBD4に結合し、出力データD10として出力する。したがって、データ出力部41は、図5(6)に示すように、セレクタ40から出力される32ビットの出力データD10に対して波形整形など施し、出力データD11として後段の回路要素へ供給する。
【0046】
このように、この例の構成によれば、データ結合部35により、出力データD1の最後のデータであるバイトデータBD3と、演算部36において最終的な演算結果CRC32が得られる1個前の演算結果CR12とを結合して64ビットの出力データD2を生成している。この64ビットの出力データD2について演算部38において、CRC16演算を行うことにより、演算結果CRC16を得ている。これにより、演算結果CRC32及びCRC16を同時に得ることができる。
したがって、この例の構成によれば、従来のように、CRC32演算の演算結果CRC32を求めた後にCRC16演算をする場合に比べて、データ入力部31に入力データD0が入力されてからデータ出力部41から出力データD11が出力されるまでの遅延はクロック1個分少なくなる。このため、この例の構成によれば、近年のCPUの動作速度の高速化に伴うデータ通信における信号処理の高速化への要求に十分に応えることができる。
【0047】
B.第2の実施例
次に、この発明の第2の実施例について説明する。まず、前提として、この例では、データは、図6に示すデータ・フォーマットに従って構成された通信データに組み込まれ、上記高速プロトコルで4バイト(32ビット)ずつ伝送されるものとする。通信データは、図6に示すように、ヘッダと、データと、演算結果CRC161〜CRC163とから構成されている。この通信データは、図7に示すように、ヘッダ及びデータがn個(nは自然数)の1バイトずつのデータブロックDB0〜DBnに分割され、演算結果CRC161が2個の1バイトずつの演算結果ブロックCRC1610及びCRC1611に分割されている。また、演算結果CRC162が2個の1バイトずつの演算結果ブロックCRC1620及びCRC1621に分割され、演算結果CRC163が2個の1バイトずつの演算結果ブロックCRC1630及びCRC1631に分割されている。そして、CRC161演算はヘッダ及びデータについて行われ、CRC162演算はヘッダ、データ及び演算結果CRC161について行われ、CRC163演算はヘッダ、データ並びに演算結果CRC161及びCRC162について行われる。すなわち、CRC162演算においては、演算結果CRC161もヘッダやデータと同様に見なされ、CRC163演算においては、演算結果CRC161及びCRC162もヘッダやデータと同様に見なされるのである。
【0048】
図8は、この発明の第2の実施例であるCRC演算回路の構成を示すブロック図である。
この例のCRC演算回路は、データ入力部51と、ラッチ52〜55と、データ結合部56及び57と、演算部58〜62と、セレクタ63〜65と、データ出力部66とから構成されている。
データ入力部51は、32ビットずつの入力データD0に対して波形整形などを施し、出力データD1として後段の回路要素に入力するためのインターフェイスである。ラッチ52は、32ビットのフリップフロップからなり、データ処理のタイミングを調整するために設けられている。ラッチ52は、データ入力部51の出力データD1を外部から供給されるクロック1個分だけラッチし、出力データD11として出力する。データ結合部56は、データ入力部51の出力データD1と、ラッチ53の出力データD12とを結合し、図9に示すように、データ入力部51の出力データD1を下位32ビットとし、ラッチ53の出力データD12を上位16ビットとする出力データD2を生成して出力する。データ結合部57は、データ入力部51の出力データD1と、ラッチ53の出力データD12と、ラッチ54の出力データD13とを結合し、図10に示すように、データ入力部51の出力データD1を下位32ビットとし、ラッチ53の出力データD12を中位16ビットとし、ラッチ54の出力データD13を下位16ビットとする出力データD3を生成して出力する。
【0049】
演算部58は、データ入力部51の出力データD1について、ラッチ53の出力データD12を用いてCRC16演算を行い、16ビットの演算結果を出力データD4として出力する。演算部59は、データ入力部51の出力データD1について、ラッチ54の出力データD13を用いてCRC16演算を行い、16ビットの演算結果を出力データD5として出力する。演算部60は、データ結合部56の出力データD2について、ラッチ54の出力データD13を用いてCRC16演算を行い、16ビットの演算結果を出力データD6として出力する。演算部61は、データ入力部51の出力データD1について、ラッチ55の出力データD14を用いてCRC16演算を行い、16ビットの演算結果を出力データD7として出力する。演算部62は、データ結合部57の出力データD3について、ラッチ55の出力データD14を用いてCRC16演算を行い、16ビットの演算結果を出力データD8として出力する。
【0050】
セレクタ63は、演算部59の出力データD5か、あるいは演算部60の出力データD6のいずれか一方を選択して出力データD9として出力する。セレクタ64は、演算部61の出力データD7か、あるいは演算部62の出力データD8のいずれか一方を選択して出力データD10として出力する。ラッチ53は、16ビットのフリップフロップからなり、演算部58の出力データD4をクロック1個分だけラッチし、出力データD12として出力する。ラッチ54は、16ビットのフリップフロップからなり、セレクタ63の出力データD9をクロック1個分だけラッチし、出力データD13として出力する。ラッチ55は、16ビットのフリップフロップからなり、セレクタ64の出力データD10をクロック1個分だけラッチし、出力データD14として出力する。セレクタ65は、ラッチ52の出力データD11、ラッチ53の出力データD12、ラッチ54の出力データD13、あるいはラッチ55の出力データD14のいずれかを選択して出力データD15として出力する。データ出力部66は、セレクタ65の出力データD15に対して波形整形などを施し、出力データD16として後段の回路要素へ供給するためのインターフェイスである。
【0051】
なお、演算部58、59及び61は、その構成が図23に示す演算式を回路化したものである。また、演算部60は、その構成は図11に示す演算式を回路化したものである。図11において、Z15〜Z00はFF2716〜FF271の初期値であり、R31〜R00はラッチ53の出力データD12の各ビットである。また、D31〜D00は上記した入力データの各ビットに対応しており、「・」は排他的論理和演算を意味している。
【0052】
図11に示す演算式は、以下に示す手順で生成される。上記したように、演算部60には、図9に示す48ビットのデータが入力される。このため、まず、データ幅48ビットの入力データについてCRC16演算を行う必要がある。この場合の演算結果CRC16は、図22に示す演算部において、48ビット分のデータをシフトするためのクロックを供給した場合の各FF2716〜271の出力データC15〜C00に相当する。そこで、図12に演算部60に48ビットの入力データと同じ48ビット分のデータをシフトするためのクロックを供給した場合の各FF2716〜271の出力データC15〜C00の演算式を示す。図12において、Z15〜Z00はFF2716〜FF271の初期値であり、D47〜D00は上記した入力データを構成するビット列d47,d46,…,d1,d0に対応しており、「・」は排他的論理和演算を意味している。次に、図9に示すように、データ結合部56の出力データD2のうち、上位16ビットはラッチ53の出力データD12、すなわち、演算部58の演算結果CRC161である。したがって、図12に示す各演算式のD47〜D32に図23に示す演算式C15〜C00を代入する。そして、得られた各演算式を剰余2に基づいて整理すると、図11に示す演算式が得られる。
【0053】
また、演算部62は、その構成は図22に示す構成と同様であるが、演算式は図13に示す演算式を用いる。図13において、R15〜R00はFF2716〜FF271の初期値であり、X15〜X00はラッチ53の出力データD12の各ビット、Z15〜Z00はラッチ54の出力データD13の各ビットである。また、D31〜D00は上記した入力データを構成するビット列d31,d30,…,d1,d0に対応しており、「・」は排他的論理和演算を意味している。
図13に示す演算式は、以下に示す手順で生成される。上記したように、演算部62には、図10に示す64ビットのデータが入力される。このため、まず、データ幅64ビットの入力データについてCRC16演算を行う必要がある。この場合の演算結果CRC16は、図22に示す演算部において、64ビット分のデータをシフトするためのクロックを供給した場合の各FF2716〜271の出力データC15〜C00に相当する。図4は、上記したように、演算部38に64ビットの入力データと同じ64ビット分のデータをシフトするためのクロックを供給した場合の各FF2716〜271の出力データC15〜C00の演算式を示している。次に、図10に示すように、データ結合部57の出力データD3のうち、上位16ビットはラッチ54の出力データD13、すなわち、演算部60の演算結果CRC162であり、中位16ビットはラッチ53の出力データD12、すなわち、演算部58の演算結果CRC161である。したがって、図4に示す各演算式のD63〜D48に図11に示す演算式C15〜C00を代入し、図4に示す各演算式のD47〜D32に図23に示す演算式C15〜C00を代入する。この場合、図4に示すR15〜R00と、図11及び図23に示すR15〜R00とを区別するために、後者をX15〜X00で表す。そして、得られた各演算式を剰余2に基づいて整理すると、図13に示す演算式が得られる。
【0054】
次に、上記構成のCRC演算回路の動作について、図14に示すタイミング・チャートを参照して説明する。まず、説明を簡単にするために、入力データD0は、図14に示すように、バイトデータBD0〜BD3からなるものとする。バイトデータBD0は各1バイトのデータブロックDB0〜DB3からなり、バイトデータBD1は各1バイトのデータブロックDB4〜DB7からなる。また、バイトデータBD2は各1バイトのデータブロックDB8〜DB11からなり、バイトデータBD3は1バイトのデータブロックDB12からなる。
まず、入力データD0が、図14(1)に示すように、第1の周期#1から図示せぬクロックに同期して外部から順次CRC演算回路に供給されると、データ入力部51は、入力データD0に対して波形整形など施し、出力データD1としてラッチ52、データ結合部56及び57並びに演算部58、59及び61へ順次供給する。
【0055】
これにより、ラッチ52は、データ入力部51の出力データD1を外部から供給されるクロック1個分だけラッチし、第2の周期#2から出力データD11として順次出力する。
また、演算部58は、第1の周期#1において、データ入力部51の出力データD1、今の場合、バイトデータBD0について、ラッチ53の出力データD12、今の場合、ラッチ53の初期値を用いてCRC16演算を行い、演算結果CR00を生成し、図14(2)に示すように、出力データD4として出力する。なお、ラッチ53には、初期値として、「0」が予め設定されている。したがって、ラッチ53は、演算部58の出力データD4、今の場合、演算結果CR00をクロック1個分だけラッチし、図14(3)に示すように、第2の周期#2に出力データD12として出力する。次に、演算部58は、第2の周期#2において、データ入力部51の出力データD1、今の場合、バイトデータBD1について、ラッチ53の出力データD12、今の場合、演算結果CR00を用いてCRC16演算を行い、演算結果CR01を生成し図14(2)に示すように、出力データD4として出力する。したがって、ラッチ53は、演算部58の出力データD4、今の場合、演算結果CR01をクロック1個分だけラッチし、図14(3)に示すように、第3の周期#3に出力データD12として出力する。
【0056】
同様に、演算部58は、第3の周期#3において、データ入力部51の出力データD1、今の場合、バイトデータBD2について、ラッチ53の出力データD12、今の場合、演算結果CR01を用いてCRC16演算を行い、演算結果CR02を生成し、図14(2)に示すように、出力データD4として出力する。したがって、ラッチ53は、演算部58の出力データD4、今の場合、演算結果CR02をクロック1個分だけラッチし、図14(3)に示すように、第4の周期#4に出力データD8として出力する。次に、演算部58は、第4の周期#4において、データ入力部51の出力データD1、今の場合、バイトデータBD3について、ラッチ53の出力データD12、今の場合、演算結果CR02を用いてCRC16演算を行い、演算結果CR03を生成し、図14(2)に示すように、出力データD4として出力する。したがって、ラッチ53は、演算部58の出力データD4、今の場合、演算結果CR03をクロック1個分だけラッチし、図14(3)に示すように、第5の周期#5に出力データD12として出力する。この演算結果CR03が演算結果CRC161である。この演算結果CRC161は、上記したように、2個の演算結果ブロックCRC1610及びCRC1611から構成されている。
【0057】
また、演算部61は、第1の周期#1において、データ入力部51の出力データD1、今の場合、バイトデータBD0について、ラッチ55の出力データD14、今の場合、ラッチ55の初期値を用いてCRC16演算を行い、演算結果CR20を生成し、図14(7)に示すように、出力データD7として出力する。なお、ラッチ55には、初期値として、「0」が予め設定されている。これにより、セレクタ64は、第1の周期#1において、演算部61の出力データD7、今の場合、演算結果CR20を選択して出力データD10として出力する。したがって、ラッチ55は、セレクタ64の出力データD10、今の場合、演算結果CR20をクロック1個分だけラッチし、図14(9)に示すように、第2の周期#2に出力データD14として出力する。次に、演算部61は、第2の周期#2において、データ入力部51の出力データD1、今の場合、バイトデータBD1について、ラッチ55の出力データD13、今の場合、演算結果CR20を用いてCRC16演算を行い、演算結果CR21を生成し、図14(7)に示すように、出力データD7として出力する。これにより、セレクタ64は、第2の周期#2において、演算部561出力データD7、今の場合、演算結果CR21を選択して出力データD10として出力する。したがって、ラッチ55は、セレクタ64の出力データD10、今の場合、演算結果CR21をクロック1個分だけラッチし、図14(9)に示すように、第3の周期#3に出力データD14として出力する。
【0058】
同様に、演算部61は、第3の周期#3において、データ入力部51の出力データD1、今の場合、バイトデータBD2について、ラッチ55の出力データD14、今の場合、演算結果CR21を用いてCRC16演算を行い、演算結果CR22を生成し、図14(7)に示すように、出力データD7として出力する。これにより、セレクタ64は、第3の周期#3において、演算部61の出力データD7、今の場合、演算結果CR22を選択して出力データD10として出力する。したがって、ラッチ55は、セレクタ64の出力データD10、今の場合、演算結果CR22をクロック1個分だけラッチし、図14(9)に示すように、第4の周期#4に出力データD14として出力する。
【0059】
次に、第4の周期#4に至ると、すなわち、入力データD0を構成する最後のデータであるバイトデータBD3が検出されると、以下に示す処理が行われる。まず、データ結合部57は、データ入力部51の出力データD1、今の場合、バイトデータBD3と、ラッチ53の出力データD12、今の場合、演算結果CR02と、ラッチ54の出力データD13、今の場合、演算結果CR12とを結合し、図10に示すように、データ入力部51の出力データD1を下位32ビットとし、ラッチ53の出力データD12を中位16ビットとし、ラッチ54の出力データD13を下位16ビットとする合計64ビットの出力データD3を生成して出力する。これにより、演算部62は、この64ビットの出力データD3について、ラッチ55の出力データD14、今の場合、演算結果CR22を用いてCRC16演算を行い、演算結果CR23を生成し、図14(8)に示すように、出力データD8として出力する。この演算結果CR23が演算結果CRC163である。この演算結果CRC163は、上記したように、2個の演算結果ブロックCRC1630及びCRC1631から構成されている。これにより、セレクタ64は、第4の周期#4において、今度は演算部62の出力データD8、今の場合、演算結果CR23を選択して出力データD10として出力する。したがって、ラッチ55は、セレクタ64の出力データD10、今の場合、演算結果CR23をクロック1個分だけラッチし、図14(9)に示すように、第5の周期#5に出力データD14として出力する。
【0060】
これにより、セレクタ65は、第2〜第4の周期#2〜#4においては、ラッチ52から出力される32ビットの出力データD11、今の場合、バイトデータBD0〜BD2を選択して出力データD15として出力する。また、セレクタ65は、第5の周期#5においては、ラッチ52の出力データD11、今の場合、データブロックDB12と、ラッチ53の出力データD12、今の場合、演算結果CRC161を構成する演算結果ブロックCRC1610及びCRC1611と、ラッチ54の出力データD13、今の場合、演算結果CRC162を構成する演算結果ブロックCRC1620とを新たなバイトデータBD'3に結合し、出力データD15として出力する。さらに、セレクタ65は、第6周期#6においては、ラッチ54の出力データD13、今の場合、演算結果CRC162を構成する演算結果ブロックCRC1621と、ラッチ55の出力データD14、今の場合、演算結果CRC163を構成する演算結果ブロックCRC1630及びCRC1631とを新たなバイトデータBD4に結合し、出力データD15として出力する。したがって、データ出力部66は、図14(10)に示すように、セレクタ65から出力される32ビットの出力データD15に対して波形整形など施し、出力データD16として後段の回路要素へ供給する。
【0061】
このように、この例の構成によれば、データ結合部56により、出力データD1の最後のデータであるバイトデータBD3と、演算部58において最終的な演算結果CRC161が得られる1個前の演算結果CR02とを結合して48ビットの出力データD2を生成している。そして、この48ビットの出力データD2について演算部60において、CRC16演算を行うことにより、演算結果CRC162を得ている。同様に、データ結合部57により、出力データD1の最後のデータであるバイトデータBD3と、演算部58において最終的な演算結果CRC161が得られる1個前の演算結果CR02と、演算部59において最終的な演算結果CRC162が得られる1個前の演算結果CR12とを結合して64ビットの出力データD3を生成している。そして、この64ビットの出力データD3について演算部62において、CRC16演算を行うことにより、演算結果CRC163を得ている。これにより、演算結果CRC161〜CRC163を同時に得ることができる。したがって、データ入力部51に入力データD0が入力されてからデータ出力部66から出力データD16が出力されるまでの遅延はクロック1個分で済む。
これに対し、図6に示すデータ・フォーマットによりデータを伝送する場合に、「従来の技術」で述べたように、演算結果CRC161を求めた後に演算結果CRC162を求め、さらに、演算結果CRC162を求めた後に演算結果CRC163を求めるとすると、データ入力部51に入力データD0が入力されてからデータ出力部66から出力データD16が出力されるまでにクロック3個分の遅延が生じてしまう。すなわち、この例の構成によれば、従来に比べて、遅延はクロック2個分少なくなる。このため、この例の構成によれば、近年のCPUの動作速度の高速化に伴うデータ通信における信号処理の高速化への要求に十分に応えることができる。
【0062】
以上、この発明の実施例を図面を参照して詳述してきたが、具体的な構成はこの実施例に限られるものではなく、この発明の要旨を逸脱しない範囲の設計の変更等があってもこの発明に含まれる。
例えば、上述の各実施例においては、通信データは4バイトずつ伝送される例を示したが、これに限定されず、この発明は、通信データは1バイト、2バイト、8バイト、あるいはそれ以上のバイト数で伝送される場合にも適用することができる。
また、上記した第1の実施例においては、ヘッダ及びデータについてCRC32演算を、ヘッダ、データ及び演算結果CRC32についてCRC16演算を行う例を示した。また、上記した第2の実施例においては、ヘッダ及びデータについて第1のCRC16演算を、ヘッダ、データ及び演算結果CRC161について第2のCRC16演算を、ヘッダ、データ、演算結果CRC161及びCRC162について第3のCRC16演算を行う例を示した。しかし、これに限定されず、第1の実施例においては、ヘッダ及びデータについてCRC16演算を、ヘッダ、データ及び演算結果CRC16についてCRC32演算を行っても良い。同様に、第2の実施例においては、ヘッダ及びデータについてCRC32演算を、ヘッダ、データ及び演算結果CRC32について第1のCRC16演算を、ヘッダ、データ、演算結果CRC32及びCRC161について第2のCRC16演算を行っても良い。
また、生成多項式は、式(1)及び式(2)に限定されず、どのようなものでも良い。さらに、生成多項式の次数も32次及び16次に限定されず、48次、64次でも良い。加えて、生成多項式の個数も2個に限定されず、3個、4個以上でも良い。
要するに、この発明は、データ等についてCRC演算を2回以上行う場合に適用することができる。
【0063】
【発明の効果】
以上説明したように、この発明の構成によれば、伝送すべきデータの所定ビット数ごとに第1の生成多項式により演算を行う第1の演算処理と、データの所定ビット数ごとに第1の生成多項式と同一の又は異なる少なくとも1個の第2の生成多項式により演算を行う第2の演算処理と、データの所定ビット数と、第1及び第2の演算処理の一方又は両方の途中で得られる少なくとも1個の演算結果とについて少なくとも1個の第2の生成多項式により演算を行う第3の演算処理とを有する。
したがって、この発明の構成によれば、巡回冗長検査演算を高速に行うことができる。
【図面の簡単な説明】
【図1】この発明の第1の実施例であるCRC演算回路の構成を示すブロック図である。
【図2】同回路を構成するデータ結合部35により生成される出力データD2のデータ・フォーマットを示す図である。
【図3】同回路を構成する演算部38により実現されるCRC16演算の演算式を示す図である。
【図4】図3に示す演算式を求める課程で得られる演算式を示す図である。
【図5】同回路の動作の一例を説明するためのタイミング・チャートである。
【図6】この発明の第2の実施例であるCRC演算回路が適用される通信システムにおいて伝送される通信データのデータ・フォーマットの一例を示す図である。
【図7】同システムにおいて伝送される通信データの伝送の様子を示す図である。
【図8】この発明の第2の実施例であるCRC演算回路の構成を示すブロック図である。
【図9】同回路を構成するデータ結合部56により生成される出力データD2のデータ・フォーマットを示す図である。
【図10】同回路を構成するデータ結合部57により生成される出力データD3のデータ・フォーマットを示す図である。
【図11】同回路を構成する演算部60により実現されるCRC16演算の演算式を示す図である。
【図12】図11に示す演算式を求める課程で得られる演算式を示す図である。
【図13】同回路を構成する演算部62により実現されるCRC16演算の演算式を示す図である。
【図14】同回路の動作の一例を説明するためのタイミング・チャートである。
【図15】従来のデータ通信システムの構成例を示すブロック図である。
【図16】同システムにおいて伝送される通信データのデータ・フォーマットの一例を示す図である。
【図17】同システムにおいて伝送される通信データの伝送の様子を示す図である。
【図18】従来のCRC演算回路の構成例を示すブロック図である。
【図19】同回路を構成する演算部19の構成例を示すブロック図である。
【図20】同演算部19により実現されるCRC32演算の演算式を示す図である。
【図21】同演算部19により実現されるCRC32演算の演算式を示す図である。
【図22】同回路を構成する演算部20の構成例を示すブロック図である。
【図23】同演算部20により実現されるCRC16演算の演算式を示す図である。
【図24】同回路の動作の一例を説明するためのタイミング・チャートである。
【符号の説明】
32〜34,52〜55 ラッチ
35,56,57 データ結合部
36,58 演算部(第1の演算部)
37,59 演算部(第2の演算部)
38,60 演算部(第3の演算部)
56 データ結合部(第1のデータ結合部)
57 データ結合部(第2のデータ結合部)
61 演算部(第4の演算部)
62 演算部(第5の演算部)
39,40,63〜65 セレクタ
Claims (12)
- 伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、前記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算方法であって、
前記データの所定ビット数ごとに第1の生成多項式により演算を行う第1の演算処理と、
前記データの所定ビット数ごとに前記第1の生成多項式と同一の又は異なる少なくとも1個の第2の生成多項式により演算を行う第2の演算処理と、
前記データの所定ビット数と、前記第1の演算処理で得られた演算結果と、前記第2の演算処理の途中で得られる演算結果とについて、前記第2の生成多項式により演算を行う第3の演算処理とを有することを特徴とする巡回冗長検査演算方法。 - 前記第3の演算処理では、前記データの所定ビット数を下位ビットとし、前記第1の演算処理で得られた演算結果を上位ビットとして前記演算を行うことを特徴とする請求項1記載の巡回冗長検査演算方法。
- 伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、前記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算方法であって、前記データの32ビットごとに32次の生成多項式により演算を行う第1の演算処理と、
前記データの32ビットごとに16次の生成多項式により演算を行う第2の演算処理と、
前記データの32ビットと、前記第1の演算処理で得られた32ビットの演算結果と、前記第2の演算処理の途中で得られる16ビットの演算結果とについて、前記16次の生成多項式により演算を行う第3の演算処理とを有することを特徴とする巡回冗長検査演算方法。 - 前記第3の演算処理では、前記データの32ビットを下位ビットとし、前記第1の演算処理で得られた前記32ビットの演算結果を上位ビットとする64ビットごとに前記演算を行うことを特徴とする請求項3記載の巡回冗長検査演算方法。
- 伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、前記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算方法であって、
前記データの所定ビット数ごとに前記生成多項式により演算を行う第1の演算処理と、
前記データの所定ビット数ごとに前記生成多項式により演算を行う第2の演算処理と、
前記データの所定ビット数と、前記第1の演算処理で得られた演算結果と、前記第2の演算処理の途中で得られる演算結果とについて、前記生成多項式により演算を行う第3の演算処理と、
前記データの所定ビット数ごとに前記生成多項式により演算を行う第4の演算処理と、
前記データの所定ビット数と、前記第1の演算処理で得られた演算結果と、前記第2の演算処理の途中で得られる演算結果と、前記第4の演算処理の途中で得られる演算結果とについて前記生成多項式により演算を行う第5の演算処理とを有することを特徴とする巡回冗長検査演算方法。 - 前記第3の演算処理では、前記データの32ビットを下位ビットとし、前記第1の演算処理で得られた演算結果を上位ビットとする48ビットごとに前記演算を行い、前記第5の演算処理では、前記データの32ビットを下位ビットとし、前記第1の演算処理で得られた演算結果を中位ビットとし、前記第2の演算処理の途中で得られる演算結果を上位ビットとする64ビットごとに前記演算を行うことを特徴とする請求項5記載の巡回冗長検査演算方法。
- 伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、前記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算回路であって、
前記データの所定ビット数ごとに第1の生成多項式により演算を行う第1の演算部と、
前記データの所定ビット数ごとに前記第1の生成多項式と同一の又は異なる少なくとも1個の第2の生成多項式により演算を行う第2の演算部と、
前記データの所定ビット数と、前記第1の演算部の演算で得られた演算結果と、前記第2の演算部の演算途中で得られる演算結果とについて、前記第2の生成多項式により演算を行う第3の演算部とを有することを特徴とする巡回冗長検査演算回路。 - 前記データの所定ビット数を下位ビットとし、前記第1の演算部の演算で得られた演算結果を上位ビットとして結合して前記第3の演算部に供給するデータ結合部を有することを特徴とする請求項7記載の巡回冗長検査演算回路。
- 伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、前記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算回路であって、
前記データの32ビットごとに32次の生成多項式により演算を行う第1の演算部と、
前記データの32ビットごとに16次の生成多項式により演算を行う第2の演算部と、
前記データの32ビットと、前記第1の演算部の演算で得られた32ビットの演算結果と、前記第2の演算部の演算途中で得られる16ビットの演算結果とについて、前記16次の生成多項式により演算を行う第3の演算部とを有することを特徴とする巡回冗長検査演算回路。 - 前記データの32ビットを下位ビットとし、前記第1の演算部の演算で得られた前記32ビットの演算結果を上位ビットとして結合して前記第3の演算部に供給するデータ結合部を有することを特徴とする請求項9記載の巡回冗長検査演算回路。
- 伝送すべきデータについて複数個の生成多項式により誤り検出のための演算を行い、前記データに各演算結果を付加して伝送する通信システムに用いられる巡回冗長検査演算回路であって、
前記データの所定ビット数ごとに前記生成多項式により演算を行う第1の演算部と、
前記データの所定ビット数ごとに前記生成多項式により演算を行う第2の演算部と、
前記データの所定ビット数と、前記第1の演算部の演算で得られた演算結果と、前記第2の演算部の演算途中で得られる演算結果とについて、前記生成多項式により演算を行う第3の演算部と、
前記データの所定ビット数ごとに前記生成多項式により演算を行う第4の演算部と、
前記データの所定ビット数と、前記第1の演算部の演算で得られた演算結果と、前記第2の演算部の演算途中で得られる演算結果と、前記第4の演算部の演算途中で得られる演算結果とについて前記生成多項式により演算を行う第5の演算部とを有することを特徴とする巡回冗長検査演算回路。 - 前記データの32ビットを下位ビットとし、前記第1の演算部の演算で得られた演算結果を上位ビットとして結合して前記第3の演算部に供給する第1のデータ結合部と、前記データの32ビットを下位ビットとし、前記第1の演算部の演算で得られた演算結果を中位ビットとし、前記第2の演算部の演算途中で得られる演算結果を上位ビットとして結合して前記第5の演算部に供給する第2のデータ結合部とを有することを特徴とする請求項11記載の巡回冗長検査演算回路。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001059807A JP4515651B2 (ja) | 2001-03-05 | 2001-03-05 | 巡回冗長検査演算方法及び巡回冗長検査演算回路 |
US10/090,302 US7024615B2 (en) | 2001-03-05 | 2002-03-04 | Arithmetic operation method for cyclic redundancy check and arithmetic operation circuit for cyclic redundancy check |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2001059807A JP4515651B2 (ja) | 2001-03-05 | 2001-03-05 | 巡回冗長検査演算方法及び巡回冗長検査演算回路 |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2002261624A JP2002261624A (ja) | 2002-09-13 |
JP4515651B2 true JP4515651B2 (ja) | 2010-08-04 |
Family
ID=18919315
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2001059807A Expired - Fee Related JP4515651B2 (ja) | 2001-03-05 | 2001-03-05 | 巡回冗長検査演算方法及び巡回冗長検査演算回路 |
Country Status (2)
Country | Link |
---|---|
US (1) | US7024615B2 (ja) |
JP (1) | JP4515651B2 (ja) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20040098655A1 (en) * | 2002-11-19 | 2004-05-20 | Sharma Debendra Das | Rolling CRC scheme for improved error detection |
JP2005045409A (ja) * | 2003-07-24 | 2005-02-17 | Pioneer Electronic Corp | 情報処理装置、そのシステム、その方法、そのプログラム、および、そのプログラムを記録した記録媒体 |
US7103832B2 (en) * | 2003-12-04 | 2006-09-05 | International Business Machines Corporation | Scalable cyclic redundancy check circuit |
EP1763168A1 (de) * | 2005-09-12 | 2007-03-14 | Siemens Aktiengesellschaft | Verfahren zum Erzeugen von Datentelegrammen, die CRC-Sicherungsanhänge aufweisen, welche eine verringerte Restfehlerwahrscheinlichkeit bieten |
JP4845674B2 (ja) * | 2006-10-26 | 2011-12-28 | キヤノン株式会社 | データ処理装置及び方法、通信装置、並びにプログラム |
US7853857B2 (en) * | 2007-09-14 | 2010-12-14 | Motorola Mobility, Inc. | Multi-layer cyclic redundancy check code in wireless communication system |
JP2010016751A (ja) * | 2008-07-07 | 2010-01-21 | Rohm Co Ltd | Crc演算回路、シリアルインタフェイス装置、画像形成装置 |
CN102158316B (zh) * | 2011-04-25 | 2015-06-17 | 中兴通讯股份有限公司 | 一种64bit位宽的并行CRC32校验方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000004169A (ja) * | 1998-06-15 | 2000-01-07 | Ricoh Co Ltd | Crc演算方法及びcrc演算回路 |
JP2001027957A (ja) * | 1999-07-15 | 2001-01-30 | Fujitsu Ltd | 誤訂正検出方法 |
JP2001285076A (ja) * | 2000-03-31 | 2001-10-12 | Ando Electric Co Ltd | Crc符号演算回路、及びcrc符号演算方法 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPH04211547A (ja) * | 1990-03-20 | 1992-08-03 | Fujitsu Ltd | 同期回路 |
US6516004B1 (en) * | 1997-07-31 | 2003-02-04 | T. Sqware Inc. | HDLC digital data transmission protocol controller |
US6324670B1 (en) * | 1999-03-24 | 2001-11-27 | Novell, Inc. | Checksum generator with minimum overflow |
JP4371520B2 (ja) * | 2000-03-06 | 2009-11-25 | 三菱電機株式会社 | Crc演算装置 |
-
2001
- 2001-03-05 JP JP2001059807A patent/JP4515651B2/ja not_active Expired - Fee Related
-
2002
- 2002-03-04 US US10/090,302 patent/US7024615B2/en not_active Expired - Lifetime
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000004169A (ja) * | 1998-06-15 | 2000-01-07 | Ricoh Co Ltd | Crc演算方法及びcrc演算回路 |
JP2001027957A (ja) * | 1999-07-15 | 2001-01-30 | Fujitsu Ltd | 誤訂正検出方法 |
JP2001285076A (ja) * | 2000-03-31 | 2001-10-12 | Ando Electric Co Ltd | Crc符号演算回路、及びcrc符号演算方法 |
Also Published As
Publication number | Publication date |
---|---|
US7024615B2 (en) | 2006-04-04 |
JP2002261624A (ja) | 2002-09-13 |
US20020124226A1 (en) | 2002-09-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8468439B2 (en) | Speed-optimized computation of cyclic redundancy check codes | |
JP3930479B2 (ja) | 誤り検出符号化及び復号装置並びに除算装置 | |
JP4935787B2 (ja) | 巡回符号演算処理回路 | |
US9106388B2 (en) | Parallel CRC computation with data enables | |
CN102096609A (zh) | 可编程循环冗余校验(crc)计算的指令集架构 | |
US20050010630A1 (en) | Method and apparatus for determining a remainder in a polynomial ring | |
JPH0856165A (ja) | 誤り検査符号及び訂正符号の計算方法および装置 | |
JP4831018B2 (ja) | 並列巡回符号生成装置および並列巡回符号検査装置 | |
TW200522531A (en) | High performance CRC calculation method and system with a matrix transformation strategy | |
CN112306741B (zh) | 一种crc校验方法及相关装置 | |
JP4515651B2 (ja) | 巡回冗長検査演算方法及び巡回冗長検査演算回路 | |
JP4764973B2 (ja) | Crc値の算出装置 | |
JP2000004169A (ja) | Crc演算方法及びcrc演算回路 | |
US7299398B2 (en) | Data generating method for forming desired CRC code | |
US7539918B2 (en) | System and method for generating cyclic codes for error control in digital communications | |
US20220286145A1 (en) | Pipelined forward error correction for vector signaling code channel | |
JP5550413B2 (ja) | Crc演算回路 | |
JPH0385923A (ja) | Crc演算方式 | |
US8312363B2 (en) | Residue generation | |
JP2822928B2 (ja) | Crc符号演算方法および回路 | |
CN113821370A (zh) | 一种用于数据传输错误校验的高速crc产生方法和装置 | |
JP2010507813A (ja) | 中央演算処理装置の演算能力を高めるための暗号方法および暗号装置 | |
US11309994B2 (en) | Highly parallel and scalable cyclic redundancy check | |
JPH0969836A (ja) | Crc符号生成回路およびcrc符号生成回路設計方法 | |
KR100340001B1 (ko) | 순회 용장 부호 계산장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20080115 |
|
A977 | Report on retrieval |
Free format text: JAPANESE INTERMEDIATE CODE: A971007 Effective date: 20100128 |
|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20100209 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20100412 |
|
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: 20100511 |
|
A01 | Written decision to grant a patent or to grant a registration (utility model) |
Free format text: JAPANESE INTERMEDIATE CODE: A01 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20100513 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130521 Year of fee payment: 3 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20140521 Year of fee payment: 4 |
|
S531 | Written request for registration of change of domicile |
Free format text: JAPANESE INTERMEDIATE CODE: R313531 |
|
R350 | Written notification of registration of transfer |
Free format text: JAPANESE INTERMEDIATE CODE: R350 |
|
LAPS | Cancellation because of no payment of annual fees |