JP4764973B2 - Crc値の算出装置 - Google Patents

Crc値の算出装置 Download PDF

Info

Publication number
JP4764973B2
JP4764973B2 JP2005356870A JP2005356870A JP4764973B2 JP 4764973 B2 JP4764973 B2 JP 4764973B2 JP 2005356870 A JP2005356870 A JP 2005356870A JP 2005356870 A JP2005356870 A JP 2005356870A JP 4764973 B2 JP4764973 B2 JP 4764973B2
Authority
JP
Japan
Prior art keywords
crc
crc circuit
selector
circuit
data
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.)
Active
Application number
JP2005356870A
Other languages
English (en)
Other versions
JP2007166031A (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.)
National Institute of Advanced Industrial Science and Technology AIST
Original Assignee
National Institute of Advanced Industrial Science and Technology AIST
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 National Institute of Advanced Industrial Science and Technology AIST filed Critical National Institute of Advanced Industrial Science and Technology AIST
Priority to JP2005356870A priority Critical patent/JP4764973B2/ja
Priority to US11/449,794 priority patent/US7590916B2/en
Publication of JP2007166031A publication Critical patent/JP2007166031A/ja
Application granted granted Critical
Publication of JP4764973B2 publication Critical patent/JP4764973B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, 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/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/091Parallel 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)
  • Detection And Correction Of Errors (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)

Description

この発明は誤り検出技術に関しており、ネットワーク関連分野、特に情報通信において巡回符号を用いて誤り検出とその訂正を行なうためのCRC(Cyclic Redundancy Checking)値の算出装置に関している。
符号語の各ビットを係数とする符号多項式を生成多項式で割った剰余の係数を検査ビットとし、符号語と検査ビットを通信エラーの発生する伝送路で伝送して、受信側では、その受信した情報に対応した多項式を上記の生成多項式で割った剰余から伝送エラーを検出したり受信情報を訂正したりする巡回符号方式は、既によく知られており、磁気記録装置やネットワーク分野の市販の装置において用いられている。
CRC(Cyclic Redundancy Checking)方式は誤り検出方式の1つであり、上記の巡回符号方式に属し、短縮化巡回符号を用いる点に特徴がある。この方式は、連続した通信エラーなどのバースト誤りを検出できる点や、簡易なハードウェアで実現できる点などから、シリアル伝送路における誤り検査などに広く用いられている。イーサネット(登録商標)におけるフレームデータの誤り検査にもこの方式が利用されており、ネットワークフレームのFCS(Frame Check Sequence)に32ビット長のCRC−32が採用されている。
よく知られているように、図9に示す単純なCRC回路であるLFSR(Linear Feedback Shift Register)では、CRCの算出は1クロックサイクルごとに1ビットずつ行われる。
また、ネットワークのフレームデータ長はバイト単位であることから、1バイトごとにCRC値を算出するCRC−32回路の研究がなされており、CRC回路の処理性能は向上しつづけてきた。一例を図10に示す。このCRC回路は8ビット長のデータから排他的論理和演算などによりCRC値を算出する。1サイクルごとに処理するデータ長は固定であり、この8ビット処理のCRC回路は、例えば5ビットのデータからはCRC値を算出することはできない。
近年では10Gビットイーサネット(登録商標)の登場などネットワークのスピードが向上し続けており、CRC算出処理のスループットを一層向上させる必要がある。そこで、1サイクルごとに処理するデータ幅を複数バイトにしてスループットを向上させたCRC装置が開発されてきた。CRC装置は1サイクルごとに処理できるデータ長が固定の基本的なCRC回路を用いて構成されている。
例えば、1サイクルごとに処理するデータ幅が8バイトの場合の、従来のCRC−32算出装置の構成を図1に示す。図1では、処理データ幅が8バイトのCRC装置は、8個のCRC回路より構成される。また、処理するデータ幅が1〜8バイトのCRC回路を用意することで、入力されるネットワークフレームの末尾が8バイトの倍数で無い場合でも、末尾のバイト長にあわせてCRC値の結果をセレクタで選択し、正しいCRC値を算出することができる。
また、図11に、図1の構成をさらに一般化した従来のCRC−32算出装置のm2nビット処理時の構成を示すブロック図を示す。これは、処理するデータ幅がm、2m、・・・、m2nのCRC回路を用意することで、末尾のバイト長にあわせてCRC値の結果をセレクタで選択し、正しいCRC値を算出するものである。
しかし、このような回路構成では、処理するデータ幅を増加すると構成するCRC回路の個数も増加し回路規模が増加してしまう。また、CRC値を選択するセレクタの入力数も増加し回路のディレイが大きくなってしまう。従来の技術でデータ幅を増加する場合は、1サイクルで処理するデータ幅がm2nビットのCRC装置は、m2n個の基本的なCRC回路を用いて構成されていた。例えば、1サイクルで処理するデータ幅が2nバイトのCRC装置は、「2nバイト毎に処理するCRC回路」、「2n−1バイト毎に処理するCRC回路」、…、「1バイト毎に処理するCRC回路」、と、2n個の基本的なCRC回路で構成されていた。例えば、CRC装置の処理するデータ幅を2倍にすると、装置を構成する基本的なCRC回路の個数も2倍となり、回路規模が比例的に増加してしまう。
従来の構成ではCRC回路が2n個でレイテンシが1であるのに対し、本発明の構成ではCRC回路がn+1個でレイテンシがn+1となる。CRC回路の個数は対数スケールとなり、レイテンシは対数スケール分のみ増加する。
特許文献1にはCRC装置が開示されている。これは、可変長のCRC演算対象データを受けるCRC装置において、入力データをシフトする回路とマスクを行う回路、CRC演算部より装置を構成している。
本発明はCRC装置の構成に入力データ幅の対数オーダ個のCRC回路とレジスタを持つセレクタより装置を直列に接続して構成するものであり、特許文献1とは異なる。
特開2002−359561号公報
上記の様に、超高速ネットワーク機器においては、CRC装置の1サイクルに処理するデータ幅を拡大することによるスループットの向上が必須であるが、従来技術では回路規模増大が膨大となってしまう。本発明では、回路規模の増加を抑制してもスループット向上が可能なCRC値の算出装置を実現する。
本発明では、CRC装置の1サイクルに処理するデータ幅を2倍としても、装置を構成する基本的なCRC回路は1個のみの増加であり、回路規模の増加が対数オーダとなる。このため、回路規模の増大を抑えつつCRC装置が処理するデータ幅を増加させることが可能となり、CRC装置のスループット向上が容易となる。また、既存のCRC装置の回路規模を低減することもでき、その回路規模の低減で消費電力を低減できる。
本発明は、概略では、1クロックサイクル中に処理するデータ幅がm2nビットのCRC装置を、n+1個の基本的なCRC回路で構成することにより装置規模を低減させる技術である。例えば、装置の1サイクルに処理するデータ幅がm2nビットである場合、「m2nビット毎に処理するCRC回路」、「m2(n-1)ビット毎に処理するCRC回路」、・・・、「m20ビット毎に処理するCRC回路」を、セレクタを介して直列に接続して装置を構成することで、入力されるネットワークフレームの末尾がm2nビットの倍数で無い場合でも、正しいCRC値を算出することができるようにするものである。このとき、各CRC回路間にレジスタを設けてパイプラインを構成し、動作周波数の低下を防ぐようにする。
より正確には、本発明は、可変長のデータからCRC値の算出を行う装置であって、
自然数n、mが予め決められているとき、
装置のデータを処理する単位がm2nビットであり、
処理単位が固定長m2nビットの第0のCRC回路と、
処理単位が固定長m2(n-1)ビットの第1のCRC回路と、
以下順次、処理単位が固定長m20ビットの第nCRC回路までのCRC回路と、
からなるn+1個の処理単位が固定長のCRC回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、
第0のCRC回路は、m2nビットのデータと自身のCRC回路の出力とを入力して、第0のセレクタと当初0の記録されたレジスタを介して、自身のCRC回路と第1のCRC回路とへ出力し、
1からnまでの整数kについて、
第kのCRC回路は、m2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタとレジスタを介して第(k+1)のCRC回路へ出力し、但し、k=nの場合は出力し、
第0のセレクタは、第0のCRC回路の出力あるいは入力信号である自身のCRC回路の出力から選択するセレクタであり、
第kのセレクタは、第(k−1)のCRC回路の出力、あるいは、第kのCRC回路の出力のいずれかを選択するセレクタであり、
第nのセレクタを介して算出したCRC値を出力することを特徴とするCRC値の算出装置である。
また、本発明は、可変長のデータからCRC値の算出を行う装置であって、
自然数n、mと、m2nより小さい自然数tが予め決められているとき、
装置のデータを処理する単位が(m2n+t)ビットであり、
処理単位が固定長(m2n+t)ビットの前置CRC回路と、
処理単位が固定長m2nビットの第0のCRC回路と、
処理単位が固定長m2(n-1)ビットの第1のCRC回路と、
以下順次、処理単位が固定長m20ビットの第nCRC回路までのCRC回路と、
からなるn+2個の処理単位が固定長のCRC回路を、それぞれのレジスタを備えたそれぞれのセレクタとレジスタを介して直列に接続した構成を備え、
上記前置CRC回路は、CRC値算出対象データの先頭から(m2n+t)ビット毎に分割されて装置に入力されたデータと自身のCRC回路の出力とを入力してCRC値を算出し、前置セレクタを介して自身のCRC回路と第1のCRC回路とへ出力し、
0からnまでの整数kについて、
第kのCRC回路は、2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタとレジスタを介して第(k+1)のCRC回路へ出力し、
上記前置セレクタは、CRC値算出対象データの分割したデータ長が(m2n+t)ビットである場合に前置CRC回路の出力を選択し、データ長が(m2n+t)ビットでない場合に入力信号である自身のCRC回路の出力を選択するセレクタであり、
第kのセレクタは、上記CRC値算出対象データの分割したデータ長に対応して第(k−1)のCRC回路の出力、あるいは、第kのCRC回路の出力のいずれかを選択するセレクタであり、
第nのセレクタを介して算出したCRC値を出力することを特徴とするCRC値の算出装置である。
また、本発明は、入力した可変長のデータからCRC値の算出を行う装置であって、
自然数n、mが予め決められているとき、
装置のデータを処理する単位が(m2n+1)ビットであり、
処理単位が固定長(m2n)ビットの前置CRC回路と、
処理単位が固定長m2nビットの第0のCRC回路と、
処理単位が固定長m2(n-1)ビットの第1のCRC回路と、
以下順次、処理単位が固定長m20ビットCRC回路と、
処理単位が固定長m20ビットCRC回路の第(n+1)CRC回路までのCRC回路と、
からなるn+2個の処理単位が固定長のCRC回路を、それぞれのセレクタとレジスタを介して直列に接続した構成を備え、
上記前置CRC回路は、CRC値算出対象データの先頭から(m2n+t)ビット毎に分割されて装置に入力されたデータをレジスタの出力とを入力してCRC値を算出し、前置セレクタを介して第1のCRC回路とへ出力し、
0からnまでの整数kについて、
第kのCRC回路は、2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタとレジスタを介して第(k+1)のCRC回路へ出力し、
上記前置セレクタは、上記CRC値算出対象データの分割したデータ長が(m2n+t)ビットである場合に上記前置CRC回路の出力を選択し、データ長が(m2n+t)ビットでない場合に入力信号である自身のCRC回路の出力を選択するセレクタであり、
第n+1のセレクタは、上記CRC値算出対象データの分割したデータ長に対応して第(k−1)のCRC回路の出力、あるいは、第nのCRC回路の出力のいずれかを選択するセレクタであり、
第nのセレクタを介して算出したCRC値出力することを特徴とするCRC値の算出装置である。
一般に、符号語に対応する多項式表現である符号多項式をP(x)、次数がnでありxn-1で割切れない多項式である生成多項式をG(x)、とし、さらにP(x)をG(x)で割った多項式の剰余をR(x)とするとき、巡回符号F(x)は、次の数1で表される。
Figure 0004764973
この短縮化された巡回符号がCRCであり、数1の第1項がアドレス部レングス部データ部であり、第2項がFCS(Frame Check Sequence)に対応する。
フレームデータ送信時には、上記のR(x)部を算出し、FCSとして付加して送信する。また、受信時には、受信信号からR(x)を算出し、受信信号に対応するFCSと比較してデータの誤りを検出する。
本発明は、処理するデータ幅がm2nビットのCRC値を算出するCRC装置を、セレクタを介して直列に接続した「m2nビット毎に処理するCRC回路」、「m2(n-1)ビット毎に処理するCRC回路」、・・・、「m20ビット毎に処理するCRC回路」、により構成する。このとき、各CRC回路間にレジスタを設けてパイプラインを構成し、動作周波数の低下を防ぐ。図2に1サイクルごとに処理するデータ幅が8バイトの場合の、本発明のCRC−32算出装置の構成を示す。従来の構成ではCRC回路が2n個でレイテンシが1であるのに対し、本発明の構成ではCRC回路がn+1個でレイテンシがn+1となる点が異なっている。本発明では、CRC回路の個数は対数スケールとなり、レイテンシは対数スケール分に応じて増加する。
図2において、セレクタによる選択は、以下の様に行なう。
例えば、対象データ長が63バイトで、処理データ幅が8バイトの場合、対象データを8分割して、第1から第7分割までは、8バイトのデータを入力する。末尾データである第8分割の長さは7(2進数表記で0111)バイトであり、これは4バイト+2バイト+1バイトであるので、8B処理のCRC回路後のセレクタは、当初0の記録されたレジスタから直接信号を選択してCRC値への寄与を無くし、4B処理、2B処理、1B処理のそれぞれのCRC回路後のセレクタは、それぞれ、4B処理、2B処理、1B処理のそれぞれのCRC回路の信号を選択して、この部分のCRC値への寄与を有効にする。
また、対象データ長が59、つまり末尾データが3バイトの時には、8B処理のCRC回路後のセレクタは、当初0の記録されたレジスタから直接信号を選択し、引き続く4B処理のCRC回路後のセレクタは、0を出力する8B処理のCRC回路の出力を選択し、2B処理のCRC回路と1B処理のCRC回路とを活用して、末尾データの3バイトCRC値を算出する。
さらに、対象データ長が8の倍数であるときには、8B処理のCRC回路だけを用いるので、4B処理のCRC回路以下では、CRC回路の寄与を無効にする。
一般的な記述を用いると、処理データ幅で分割された最後の分割のデータ長の2進数表記のそれぞれの桁に対応するバイト数のCRC回路をセレクタで選択するもので;
一般に、処理データ幅がm(2n)ビット処理の場合、
初段のセレクタでは、データ長がm(2n)のとき、CRC回路の出力を選択し、
以降のk段目のセレクタでは、末尾の分割のデータ長の2進数表記の第kのセレクタに対応する桁の値に従って第kのCRC回路の出力の選択あるいは非選択を決定する。
次に、CRC装置の処理手順例を、対象データ長が21バイトで、処理データ幅が8バイトの場合、つまり、8バイト+8バイト+5バイトの第1から第3までの3分割について図2に沿ってより詳しく説明する。
(1) まず、第1分割の8バイトデータを入力する。
初段の8B処理のCRC回路でCRC値の途中結果を算出し、これに接続されたセレクタ4は8B処理のCRC回路の出力を選択し、レジスタ8に入力する。
(2) 次に、第2分割の8バイトデータを入力する。
ここで、レジスタ8の上記の途中結果と、入力されたデータとから、8B処理のCRC回路でCRC値の途中結果を算出し、セレクタ4は8B処理のCRC回路の出力を選択し、レジスタ8Bに入力する。
(3) 次に、第3分割の5バイトデータを入力する。
セレクタ4はレジスタ8から直接の出力を選択し、レジスタ8に入力する。
また、4B処理のCRC回路で、レジスタ8の途中結果と入力データ中の4バイト(17〜20バイト)のデータとからCRC値を算出する。
セレクタ3は4B処理のCRC回路の出力を選択し、レジスタ7に入力する。
セレクタ2はレジスタ7から直接の出力を選択し、レジスタ6に入力する。
また、1B処理のCRC回路で、レジスタ6の途中結果と入力データ中の1バイト(21バイト目)のデータからCRC値を算出する。
セレクタ1は1B処理のCRC回路の出力を選択し、レジスタ5に入力する。
(4) CRC値を出力する。
まず、本発明の実施例として、イーサネット(登録商標)フレームで使用されるCRC−32(FCS(Frame Check Sequence)とも呼ばれる)のCRC値を算出する装置について説明する。例として、イーサネット(登録商標)のデータリンク層のフレームでは、フレームの誤り検出にCRC−32が用いられている。CRC−32は、IEEE802.3のデータリンク層のフレームにおけるFCSとして用いられており、その値は、フレームの中のアドレス部、レングス部、データ部から算出する。この場合、CRC値(検査ビット)が32ビット長であり、生成多項式は、
Figure 0004764973
である。
図6にCRC−32値を算出する装置の構成を示す。CRC−32を用いたFCS装置の処理するデータ幅は8バイトであり、装置の動作周波数が156.25MHzのとき、スループットは10Gbpsとなる。この装置は4つの基本的なCRC回路のよりパイプライン式に構成されており、レイテンシは4となっている。回路で使用されているセレクタは2入力1出力であり、ディレイを最小限に抑えている。CRC−32(1B)のデータ入力信号部のセレクタは4入力1出力で記載しているが、2入力1出力のセレクタ2段のパイプラインで構成可能である。この装置では、データの先頭から末尾の直前まではCRC−32(8B)回路でCRC−32値が算出されている。そして末尾データからはそのデータ長に合せたCRC−32回路が用いられてCRC−32値が算出される。例えば、末尾のデータが6バイトであれば、CRC−32(4B)回路とCRC−32(2B)回路を用いてCRC−32値が算出され、他のCRC−32(8B)回路、CRC−32(1B)回路は用いられない。FCSにおけるCRC値の算出では、最初の32ビットデータは、ビット反転させる。また、算出したCRC値を最後にビット反転する。
どのCRC−32回路を使用するかは、remain値とsof信号により決定される。図3にCRC−32値を算出する装置の入出力信号の流れを、図4に図3の入出力信号の概要を示す。また、図5に図3の入出力信号の動作タイミングを示す。データからCRC−32値を算出する際、まず装置にデータの先頭8バイトとsof(Start Of Frame)信号を与える。そして、データを末尾まで8バイト毎に区切り装置へ入力する。最後に末尾のデータと末尾データのバイト長(remain)、eof(End Of Frame)信号を与える。このような手順で、eof信号入力の4サイクル後にCRC−32値とvalid信号を得る。
次に、図7に示す装置は、FCSの付加されていない任意の長さのイーサネット(登録商標)フレームデータ(data)とフレームデータ有効信号(data valid)を入力すると、CRC−32値を算出し、イーサネット(登録商標)フレームの末尾にFCSを付加する装置である。本例では、装置の処理するデータ幅は8バイトとしている。図7に示すCRC−32値算出装置は、実施例1で示した装置である。図7の装置は主にイーサネット(登録商標)フレームを送信する装置の一部として用いられる。
次に、図8に示す装置は、任意の長さのイーサネット(登録商標)フレームデータ(data)とフレームデータ有効信号(data valid)を入力すると、CRC−32値を算出し、入力されたイーサネット(登録商標)フレームのFCSと比較して結果を出力するものである。本例では、装置の処理するデータ幅は8バイトとしている。図8のCRC−32値算出装置とは、実施例1で示した装置である。図8の装置は主にイーサネット(登録商標)フレームを受信する装置の一部として用いられる。
入力した可変長のデータからCRC値の算出を行う装置であって、自然数n、mが予め決められているとき、装置のデータを処理する単位がm2nビットであり、処理単位が固定長m2nビットの第0のCRC回路と、処理単位が固定長m2(n-1)ビットの第1のCRC回路と、以下順次、処理単位が固定長m20ビットの第nCRC回路までのCRC回路と、からなるn+1個の処理単位が固定長のCRC回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、第0のCRC回路は、m2nビットのデータと自身のCRC回路の出力とを入力して、第0のセレクタを介して、自身のCRC回路と第1のCRC回路とへ出力し、1からnまでの整数kについて、第kのCRC回路は、m2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタを介して第(k+1)のCRC回路へ出力し、第0のセレクタは、第0のCRC回路の出力あるいは入力信号である自身のCRC回路の出力から選択するセレクタであり、第kのセレクタは、第(k−1)のCRC回路の出力、あるいは、第kのCRC回路の出力のいずれかを選択するセレクタであり、第nのセレクタを介して算出したCRC値を出力することを特徴とするCRC値の算出装置を、図12に示す。第0のセレクタでは、データ長がm(2n)のとき、第0のCRC回路の出力を選択し、第kのセレクタでは、処理するデータのデータ長の2進数表記の第kのセレクタに対応する桁の値に従って第kのCRC回路の出力の選択あるいは非選択を決定する。
また、入力した可変長のデータからCRC値の算出を行う装置であって、自然数n、mと、m2nより小さい自然数tが予め決められているとき、装置のデータを処理する単位が(m2n+t)ビットであり、処理単位が固定長(m2n+t)ビットの前置CRC回路と、処理単位が固定長m2nビットの第0のCRC回路と、処理単位が固定長m2(n-1)ビットの第1のCRC回路と、以下順次、処理単位が固定長m20ビットの第nCRC回路までのCRC回路と、からなるn+2個の処理単位が固定長のCRC回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、前置CRC回路は、(m2n+t)ビットのデータと自身のCRC回路の出力とを入力して、前置セレクタを介して、自身のCRC回路と第1のCRC回路とへ出力し、0からnまでの整数kについて、第kのCRC回路は、m2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタを介して第(k+1)のCRC回路へ出力し、前置セレクタは、前置CRC回路の出力あるいは入力信号である自身のCRC回路の出力から選択するセレクタであり、第kのセレクタは、第(k−1)のCRC回路の出力、あるいは、第kのCRC回路の出力のいずれかを選択するセレクタであり、第nのセレクタを介して算出したCRC値を出力することを特徴とするCRC値の算出装置を、図13に示す。前置セレクタでは、データ長がm(2n)+tのとき、第0のCRC回路の出力を選択し、第kのセレクタでは、処理するデータのデータ長の2進数表記の第kのセレクタに対応する桁の値に従って第kのCRC回路の出力の選択あるいは非選択を決定する。
上記の様に、図2に示す回路では、対象データ長が64バイトの場合は、8B処理のCRC回路のみを使って処理をすることになるが、この場合は、他の4B処理、2B処理、1B処理のそれぞれのCRC回路は実質的には使われていない。これに対して、図14に示す回路の場合は、4B処理、2B処理、1B処理、のそれぞれのCRC回路と、もうひとつの1B処理のCRC回路とを用いて64バイトの処理を行なうものである。つまり、上記の例に図14で示すフィラーCRC回路を付加すればよく、図14では、最下部に配置しているが、この回路の並び位置は任意性があるので、他の要素でその並び位置を決定することができる。この構成では、8B処理のCRC回路の代わりに1B処理のCRC回路を用意すればよいので、回路規模を抑制することができる。
より汎用的な表現をすると、この発明は、入力した可変長のデータからCRC値の算出を行う装置であって、
自然数n、mが予め決められているとき、
装置のデータを処理する単位が(m2n+1)ビットであり、
処理単位が固定長(m2n)ビットの前置CRC回路と、
処理単位が固定長m2nビットの第0のCRC回路と、
処理単位が固定長m2(n-1)ビットの第1のCRC回路と、
以下順次、処理単位が固定長m20ビットCRC回路と、
処理単位が固定長m20ビットCRC回路の第(n+1)CRC回路までのCRC回路と、
からなるn+2個の処理単位が固定長のCRC回路を、それぞれのセレクタとレジスタを介して直列に接続した構成を備え、
前置CRC回路は、CRC値算出対象データの先頭から(m2n+t)ビット毎に分割されて装置に入力されたデータをレジスタの出力とを入力してCRC値を算出し、前置セレクタを介して第1のCRC回路とへ出力し、
0からnまでの整数kについて、
第kのCRC回路は、2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタを介して第(k+1)のCRC回路へ出力し、
前置セレクタは、CRC値算出対象データの分割したデータ長が(m2n+t)ビットである場合に前置CRC回路の出力を選択し、データ長が(m2n+t)ビットでない場合に入力信号である自身のCRC回路の出力を選択するセレクタであり、
第n+1のセレクタは、CRC値算出対象データの分割したデータ長に対応して第(k−1)のCRC回路の出力、あるいは、第nのCRC回路の出力のいずれかを選択するセレクタであり、
第nのセレクタを介して算出したCRC値出力することを特徴とするCRC値の算出装置である。
上記では、本発明を、ネットワーク関連分野、特に情報通信を念頭において説明したが、本発明は、誤り検出回路に用いて誤りの訂正を行う広範な装置に適用することができる。例えば、書き込み、読み出しを高速に行う記憶装置に適用することも可能である。
従来のCRC−32算出装置の8バイト処理時の構成を示すブロック図である。 本発明のCRC値の算出装置の8バイト処理時の構成を示すブロック図である。 CRC−32値を算出する装置の入出力信号の流れを示す図である。 図3の入出力信号の概要を示す図である。 図3の入出力信号の動作タイミングを示す図である。 CRC−32値を算出する装置の構成を示すブロック図である。 CRC−32値を算出しイーサネット(登録商標)フレームにFCSを付加する装置の構成を示すブロック図である。 イーサネット(登録商標)フレームのFCSを検査する装置の構成を示すブロック図である。 公知のLFSR(Linear Feedback Shift Register)を示すブロック図である。 公知の1バイトごとにCRC値を算出するCRC−32回路例を示すブロック図である。 従来のCRC−32算出装置のm2nビット処理時の構成を示すブロック図である。 本発明の、CRC値の算出装置のm2nビット処理時の構成を示すブロック図である。 本発明の、CRC値の算出装置のm2n+tビット処理時の構成を示すブロック図である。 フィラーCRC回路を備えた、CRC値の算出装置を示すブロック図である。図である。
符号の説明
1、2、3、4 セレクタ
5、6、7、8 レジスタ

Claims (3)

  1. 入力した可変長のデータからCRC値の算出を行う装置であって、
    自然数n、mが予め決められているとき、
    装置のデータを処理する単位がm2nビットであり、
    処理単位が固定長m2nビットの第0のCRC回路と、
    処理単位が固定長m2(n-1)ビットの第1のCRC回路と、
    以下順次、処理単位が固定長m20ビットの第nCRC回路までのCRC回路と、
    からなるn+1個の処理単位が固定長のCRC回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、
    第0のCRC回路は、m2nビットのデータと自身のCRC回路の出力とを入力して、第0のセレクタと当初0の記録されたレジスタを介して、自身のCRC回路と第1のCRC回路とへ出力し、
    1からnまでの整数kについて、
    第kのCRC回路は、m2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタとレジスタを介して第(k+1)のCRC回路へ出力し、但し、k=nの場合は出力し、
    第0のセレクタは、第0のCRC回路の出力あるいは入力信号である自身のCRC回路の出力から選択するセレクタであり、
    第kのセレクタは、第(k−1)のCRC回路の出力、あるいは、第kのCRC回路の出力のいずれかを選択するセレクタであり、
    第nのセレクタを介して算出したCRC値を出力するものであって、
    第0のセレクタでは、データ長がm(2n)のとき、第0のCRC回路の出力を選択し、
    第kのセレクタでは、処理するデータのデータ長の2進数表記の第kのセレクタに対応する桁の値に従って第kのCRC回路の出力の選択あるいは非選択を決定することを特徴とするCRC値の算出装置。
  2. 入力した可変長のデータからCRC値の算出を行う装置であって、
    自然数n、mと、m2nより小さい自然数tが予め決められているとき、
    装置のデータを処理する単位が(m2n+t)ビットであり、
    処理単位が固定長(m2n+t)ビットの前置CRC回路と、
    処理単位が固定長m2nビットの第0のCRC回路と、
    処理単位が固定長m2(n-1)ビットの第1のCRC回路と、以下順次、処理単位が固定長m20ビットの第nCRC回路までのCRC回路と、
    からなるn+2個の処理単位が固定長のCRC回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、
    上記前置CRC回路は、(m2n+t)ビットのデータと自身のCRC回路の出力とを入力して、前置セレクタとレジスタを介して、自身のCRC回路と第1のCRC回路とへ出力し、
    0からnまでの整数kについて、
    第kのCRC回路は、m2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタとレジスタを介して第(k+1)のCRC回路へ出力し、
    上記前置セレクタは、上記前置CRC回路の出力あるいは入力信号である自身のCRC回路の出力から選択するセレクタであり、
    第kのセレクタは、第(k−1)のCRC回路の出力、あるいは、第kのCRC回路の出力のいずれかを選択するセレクタであり、
    第nのセレクタを介して算出したCRC値を出力するものであって、
    上記前置セレクタでは、データ長がm(2n)+tのとき、第0のCRC回路の出力を選択し、
    第kのセレクタでは、処理するデータのデータ長の2進数表記の第kのセレクタに対応する桁の値に従って第kのCRC回路の出力の選択あるいは非選択を決定することを特徴とするCRC値の算出装置。
  3. 入力した可変長のデータからCRC値の算出を行う装置であって、
    自然数n、mが予め決められているとき、
    装置のデータを処理する単位が(m2n+1)ビットであり、
    処理単位が固定長(m2n)ビットの前置CRC回路と、
    処理単位が固定長m2nビットの第0のCRC回路と、
    処理単位が固定長m2(n-1)ビットの第1のCRC回路と、
    以下順次、処理単位が固定長m20ビットCRC回路と、
    処理単位が固定長m20ビットCRC回路の第(n+1)CRC回路までのCRC回路と、
    からなるn+2個の処理単位が固定長のCRC回路を、それぞれのセレクタとレジスタを介して直列に接続した構成を備え、
    上記前置CRC回路は、CRC値算出対象データの先頭から(m2n+t)ビット毎に分割されて装置に入力されたデータレジスタの出力とを入力してCRC値を算出し、前置セレクタとレジスタを介して第1のCRC回路とへ出力し、
    0からnまでの整数kについて、
    第kのCRC回路は、2n-kビットのデータと、第(k−1)のCRC回路の出力を入力して、第kのセレクタとレジスタを介して第(k+1)のCRC回路へ出力し、
    上記前置セレクタは、上記CRC値算出対象データの分割したデータ長が(m2n+t)ビットである場合に上記前置CRC回路の出力を選択し、データ長が(m2n+t)ビットでない場合に入力信号である自身のCRC回路の出力を選択するセレクタであり、
    第n+1のセレクタは、上記CRC値算出対象データの分割したデータ長に対応して第(k−1)のCRC回路の出力、あるいは、第nのCRC回路の出力のいずれかを選択するセレクタであり、
    第nのセレクタを介して算出したCRC値出力することを特徴とするCRC値の算出装置。
JP2005356870A 2005-12-09 2005-12-09 Crc値の算出装置 Active JP4764973B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2005356870A JP4764973B2 (ja) 2005-12-09 2005-12-09 Crc値の算出装置
US11/449,794 US7590916B2 (en) 2005-12-09 2006-06-09 Cyclic redundancy checking value calculator

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2005356870A JP4764973B2 (ja) 2005-12-09 2005-12-09 Crc値の算出装置

Publications (2)

Publication Number Publication Date
JP2007166031A JP2007166031A (ja) 2007-06-28
JP4764973B2 true JP4764973B2 (ja) 2011-09-07

Family

ID=38140768

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2005356870A Active JP4764973B2 (ja) 2005-12-09 2005-12-09 Crc値の算出装置

Country Status (2)

Country Link
US (1) US7590916B2 (ja)
JP (1) JP4764973B2 (ja)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20090024900A1 (en) * 2007-07-18 2009-01-22 Cisco Technology, Inc. Cyclic redundancy checking in lane-based communications
JP4858852B2 (ja) * 2007-08-14 2012-01-18 横河電機株式会社 ネットワーク試験システム
JP4798164B2 (ja) * 2008-04-02 2011-10-19 ソニー株式会社 送信装置および方法、受信装置および方法、並びにプログラム
JP4935787B2 (ja) * 2008-09-12 2012-05-23 日本電気株式会社 巡回符号演算処理回路
JP2011130333A (ja) * 2009-12-21 2011-06-30 Fujitsu Ltd 巡回冗長検査符号生成回路及び巡回冗長検査符号生成方法
US8402342B2 (en) 2010-02-26 2013-03-19 Research In Motion Limited Method and system for cyclic redundancy check
US8433004B2 (en) * 2010-02-26 2013-04-30 Research In Motion Limited Low-latency viterbi survivor memory architecture and method using register exchange, trace-back, and trace-forward
TWI518500B (zh) * 2010-07-27 2016-01-21 聯詠科技股份有限公司 資料傳輸檢測裝置、資料傳輸檢測方法及其電子裝置
US8539326B1 (en) * 2011-12-07 2013-09-17 Xilinx, Inc. Method and implementation of cyclic redundancy check for wide databus
US9081700B2 (en) * 2013-05-16 2015-07-14 Western Digital Technologies, Inc. High performance read-modify-write system providing line-rate merging of dataframe segments in hardware
KR102108386B1 (ko) 2013-12-23 2020-05-08 삼성전자주식회사 저장 장치 및 그것의 데이터 엔코딩 및 디코딩 방법들
KR102609758B1 (ko) 2018-03-27 2023-12-04 삼성전자주식회사 데이터 통신 오류를 검출하는 순환 중복 검사 유닛 데이터 통신 장치 및 검출 방법
CN112217599B (zh) * 2019-07-12 2021-12-24 天地融科技股份有限公司 数据帧接收方法和装置以及通信方法和系统
JP2021039672A (ja) * 2019-09-05 2021-03-11 キオクシア株式会社 メモリシステム、パケット保護回路およびcrc計算方法

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6357032B1 (en) * 1999-02-08 2002-03-12 International Business Machines Corporation Method and apparatus for implementing cyclic redundancy check calculation for data communications
US6519737B1 (en) * 2000-03-07 2003-02-11 International Business Machines Corporation Computing the CRC bits at a time for data whose length in bits is not a multiple of M
JP2001285076A (ja) * 2000-03-31 2001-10-12 Ando Electric Co Ltd Crc符号演算回路、及びcrc符号演算方法
JP2002141809A (ja) * 2000-10-31 2002-05-17 Ando Electric Co Ltd Crc符号演算回路、及びcrc符号演算方法
JP2002164791A (ja) * 2000-11-27 2002-06-07 Ando Electric Co Ltd Crc符号演算回路、及びcrc符号演算方法
US6820228B1 (en) * 2001-06-18 2004-11-16 Network Elements, Inc. Fast cyclic redundancy check (CRC) generation
US7191383B2 (en) * 2003-03-28 2007-03-13 International Business Machines Corporation System and method for optimizing iterative circuit for cyclic redundancy check (CRC) calculation
JP2005086272A (ja) * 2003-09-04 2005-03-31 Matsushita Electric Ind Co Ltd Crc符号演算回路及びfcs生成回路並びにmac回路
US7225387B2 (en) * 2004-02-03 2007-05-29 International Business Machines Corporation Multilevel parallel CRC generation and checking circuit
US7325081B2 (en) * 2004-03-24 2008-01-29 Lsi Logic Corporation CRC data protection scheme for non-block-oriented data
US7266760B1 (en) * 2004-09-30 2007-09-04 Altera Corporation Method and apparatus for calculating cyclic redundancy checks for variable length packets

Also Published As

Publication number Publication date
US20070136411A1 (en) 2007-06-14
JP2007166031A (ja) 2007-06-28
US7590916B2 (en) 2009-09-15

Similar Documents

Publication Publication Date Title
JP4764973B2 (ja) Crc値の算出装置
US8468439B2 (en) Speed-optimized computation of cyclic redundancy check codes
CN109379086B (zh) 低复杂度的码率兼容的5g ldpc编码方法和编码器
KR101354288B1 (ko) 통신 시스템에서 에러 검출 방법 및 장치
JP3549788B2 (ja) 多段符号化方法、多段復号方法、多段符号化装置、多段復号装置およびこれらを用いた情報伝送システム
US5440570A (en) Real-time binary BCH decoder
JPWO2011142133A1 (ja) 誤り訂正符号処理方法及びその装置
US20180143872A1 (en) Cyclic redundancy check calculation for multiple blocks of a message
US8433974B2 (en) Cyclic redundancy check code generating circuit and cyclic redundancy check code generating method
US7941727B2 (en) Checksum generator for variable-length data
CN108270508B (zh) 一种循环冗余校验crc实现方法、装置及网络设备
US20220286145A1 (en) Pipelined forward error correction for vector signaling code channel
US8745465B1 (en) Detecting a burst error in the frames of a block of data bits
JP2003078421A (ja) 符号系列の先頭位置検出方法とその装置、それを用いた復号方法とその装置
JP3812983B2 (ja) エラー評価多項式係数計算装置
KR20060098269A (ko) 파이프라인 재귀적인 기술을 이용한 면적 효율적인 리드솔로몬 복호기
JP3579039B2 (ja) 巡回符号を用いた誤り訂正回路
TWI523437B (zh) Bch碼編碼與癥狀計算共用設計電路及決定該共用設計電路的方法
EP2285003A1 (en) Correction of errors in a codeword
CN111277830A (zh) 一种编码方法、解码方法及装置
US8245103B2 (en) Arithmetic circuit for concatenated codes and address control method
KR100225857B1 (ko) 바이트 단위의 부호어 에러 정정 시스템
JP2011211353A (ja) Crc演算回路
US8095848B1 (en) Multi-byte cyclic redundancy check calculation circuit and method of operating the same
CN113068046A (zh) Mpeg-2同步字节解码器中伴随式的并行产生装置

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20080225

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080708

RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7422

Effective date: 20080708

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080708

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20080904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20080904

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20081117

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20100513

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100601

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100802

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: 20110329

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20110406

R150 Certificate of patent or registration of utility model

Ref document number: 4764973

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

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

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

S531 Written request for registration of change of domicile

Free format text: JAPANESE INTERMEDIATE CODE: R313531

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

Free format text: PAYMENT UNTIL: 20140624

Year of fee payment: 3

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S533 Written request for registration of change of name

Free format text: JAPANESE INTERMEDIATE CODE: R313533

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313117

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250