説明

CRC値の算出装置

【課題】回路規模の増加を抑制してもスループット向上が可能なCRC値の算出装置を実現する。
【解決手段】1クロックサイクル中に処理するデータ幅がm2nビットのCRC装置を、n+1個の基本的なCRC回路で構成することにより装置規模を低減させる技術である。例えば、装置の1サイクルに処理するデータ幅がm2nビットである場合、「m2nビット毎に処理するCRC回路」、「m2(n-1)ビット毎に処理するCRC回路」、・・・、「m20ビット毎に処理するCRC回路」を、セレクタを介して直列に接続して装置を構成ことで、入力されるネットワークフレームの末尾がm2nビットの倍数で無い場合でも、正しいCRC値を算出することができるようにするものである。セレクタは、処理するデータ幅に応じて、使用するCRC回路出力を選択するように切り換える。また、各CRC回路間にレジスタを設けてパイプラインを構成し、動作周波数の低下を防ぐようにする。

【発明の詳細な説明】
【技術分野】
【0001】
この発明は誤り検出技術に関しており、ネットワーク関連分野、特に情報通信において巡回符号を用いて誤り検出とその訂正を行なうためのCRC(Cyclic Redundancy Checking)値の算出装置に関している。
【背景技術】
【0002】
符号語の各ビットを係数とする符号多項式を生成多項式で割った剰余の係数を検査ビットとし、符号語と検査ビットを通信エラーの発生する伝送路で伝送して、受信側では、その受信した情報に対応した多項式を上記の生成多項式で割った剰余から伝送エラーを検出したり受信情報を訂正したりする巡回符号方式は、既によく知られており、磁気記録装置やネットワーク分野の市販の装置において用いられている。
【0003】
CRC(Cyclic Redundancy Checking)方式は誤り検出方式の1つであり、上記の巡回符号方式に属し、短縮化巡回符号を用いる点に特徴がある。この方式は、連続した通信エラーなどのバースト誤りを検出できる点や、簡易なハードウェアで実現できる点などから、シリアル伝送路における誤り検査などに広く用いられている。イーサネット(登録商標)におけるフレームデータの誤り検査にもこの方式が利用されており、ネットワークフレームのFCS(Frame Check Sequence)に32ビット長のCRC−32が採用されている。
【0004】
よく知られているように、図9に示す単純なCRC回路であるLFSR(Linear Feedback Shift Register)では、CRCの算出は1クロックサイクルごとに1ビットずつ行われる。
【0005】
また、ネットワークのフレームデータ長はバイト単位であることから、1バイトごとにCRC値を算出するCRC−32回路の研究がなされており、CRC回路の処理性能は向上しつづけてきた。一例を図10に示す。このCRC回路は8ビット長のデータから排他的論理和演算などによりCRC値を算出する。1サイクルごとに処理するデータ長は固定であり、この8ビット処理のCRC回路は、例えば5ビットのデータからはCRC値を算出することはできない。
【0006】
近年では10Gビットイーサネット(登録商標)の登場などネットワークのスピードが向上し続けており、CRC算出処理のスループットを一層向上させる必要がある。そこで、1サイクルごとに処理するデータ幅を複数バイトにしてスループットを向上させたCRC装置が開発されてきた。CRC装置は1サイクルごとに処理できるデータ長が固定の基本的なCRC回路を用いて構成されている。
【0007】
例えば、1サイクルごとに処理するデータ幅が8バイトの場合の、従来のCRC−32算出装置の構成を図1に示す。図1では、処理データ幅が8バイトのCRC装置は、8個のCRC回路より構成される。また、処理するデータ幅が1〜8バイトのCRC回路を用意することで、入力されるネットワークフレームの末尾が8バイトの倍数で無い場合でも、末尾のバイト長にあわせてCRC値の結果をセレクタで選択し、正しいCRC値を算出することができる。
【0008】
また、図11に、図1の構成をさらに一般化した従来のCRC−32算出装置のm2nビット処理時の構成を示すブロック図を示す。これは、処理するデータ幅がm、2m、・・・、m2nのCRC回路を用意することで、末尾のバイト長にあわせてCRC値の結果をセレクタで選択し、正しいCRC値を算出するものである。
【0009】
しかし、このような回路構成では、処理するデータ幅を増加すると構成するCRC回路の個数も増加し回路規模が増加してしまう。また、CRC値を選択するセレクタの入力数も増加し回路のディレイが大きくなってしまう。従来の技術でデータ幅を増加する場合は、1サイクルで処理するデータ幅がm2nビットのCRC装置は、m2n個の基本的なCRC回路を用いて構成されていた。例えば、1サイクルで処理するデータ幅が2nバイトのCRC装置は、「2nバイト毎に処理するCRC回路」、「2n−1バイト毎に処理するCRC回路」、…、「1バイト毎に処理するCRC回路」、と、2n個の基本的なCRC回路で構成されていた。例えば、CRC装置の処理するデータ幅を2倍にすると、装置を構成する基本的なCRC回路の個数も2倍となり、回路規模が比例的に増加してしまう。
【0010】
従来の構成ではCRC回路が2n個でレイテンシが1であるのに対し、本発明の構成ではCRC回路がn+1個でレイテンシがn+1となる。CRC回路の個数は対数スケールとなり、レイテンシは対数スケール分のみ増加する。
【0011】
特許文献1にはCRC装置が開示されている。これは、可変長のCRC演算対象データを受けるCRC装置において、入力データをシフトする回路とマスクを行う回路、CRC演算部より装置を構成している。
【0012】
本発明はCRC装置の構成に入力データ幅の対数オーダ個のCRC回路とレジスタを持つセレクタより装置を直列に接続して構成するものであり、特許文献1とは異なる。
【0013】
【特許文献1】特開2002−359561号公報
【発明の開示】
【発明が解決しようとする課題】
【0014】
上記の様に、超高速ネットワーク機器においては、CRC装置の1サイクルに処理するデータ幅を拡大することによるスループットの向上が必須であるが、従来技術では回路規模増大が膨大となってしまう。本発明では、回路規模の増加を抑制してもスループット向上が可能なCRC値の算出装置を実現する。
【発明の効果】
【0015】
本発明では、CRC装置の1サイクルに処理するデータ幅を2倍としても、装置を構成する基本的なCRC回路は1個のみの増加であり、回路規模の増加が対数オーダとなる。このため、回路規模の増大を抑えつつCRC装置が処理するデータ幅を増加させることが可能となり、CRC装置のスループット向上が容易となる。また、既存のCRC装置の回路規模を低減することもでき、その回路規模の低減で消費電力を低減できる。
【課題を解決するための手段】
【0016】
本発明は、概略では、1クロックサイクル中に処理するデータ幅がm2nビットのCRC装置を、n+1個の基本的なCRC回路で構成することにより装置規模を低減させる技術である。例えば、装置の1サイクルに処理するデータ幅がm2nビットである場合、「m2nビット毎に処理するCRC回路」、「m2(n-1)ビット毎に処理するCRC回路」、・・・、「m20ビット毎に処理するCRC回路」を、セレクタを介して直列に接続して装置を構成ことで、入力されるネットワークフレームの末尾がm2nビットの倍数で無い場合でも、正しいCRC値を算出することができるようにするものである。このとき、各CRC回路間にレジスタを設けてパイプラインを構成し、動作周波数の低下を防ぐようにする。
【0017】
より正確には、本発明は、可変長のデータから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値の算出装置である。
【0018】
また、本発明は、可変長のデータから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値の算出装置である。
【0019】
また、本発明は、入力した可変長のデータから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値の算出装置である。
【発明を実施するための最良の形態】
【0020】
一般に、符号語に対応する多項式表現である符号多項式をP(x)、次数がnでありxn-1で割切れない多項式である生成多項式をG(x)、とし、さらにP(x)をG(x)で割った多項式の剰余をR(x)とするとき、巡回符号F(x)は、次の数1で表される。
【0021】
【数1】

【0022】
この短縮化された巡回符号がCRCであり、数1の第1項がアドレス部レングス部データ部であり、第2項がFCS(Frame Check Sequence)に対応する。
【0023】
フレームデータ送信時には、上記のR(x)部を算出し、FCSとして付加して送信する。また、受信時には、受信信号からR(x)を算出し、受信信号に対応するFCSと比較してデータの誤りを検出する。
【0024】
本発明は、処理するデータ幅が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回路の個数は対数スケールとなり、レイテンシは対数スケール分に応じて増加する。
【0025】
図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値への寄与を有効にする。
【0026】
また、対象データ長が59、つまり末尾データが3バイトの時には、8B処理のCRC回路後のセレクタは、当初0の記録されたレジスタから直接信号を選択し、引き続く4B処理のCRC回路後のセレクタは、0を出力する8B処理のCRC回路の出力を選択し、2B処理のCRC回路と1B処理のCRC回路とを活用して、末尾データの3バイトCRC値を算出する。
【0027】
さらに、対象データ長が8の倍数であるときには、8B処理のCRC回路だけを用いるので、4B処理のCRC回路以下では、CRC回路の寄与を無効にする。
【0028】
一般的な記述を用いると、処理データ幅で分割された最後の分割のデータ長の2進数表記のそれぞれの桁に対応するバイト数のCRC回路をセレクタで選択するもので;
一般に、処理データ幅がm(2n)ビット処理の場合、
初段のセレクタでは、データ長がm(2n)のとき、CRC回路の出力を選択し、
以降のk段目のセレクタでは、末尾の分割のデータ長の2進数表記の第kのセレクタに対応する桁の値に従って第kのCRC回路の出力の選択あるいは非選択を決定する。
【0029】
次に、CRC装置の処理手順例を、対象データ長が21バイトで、処理データ幅が8バイトの場合、つまり、8バイト+8バイト+5バイトの第1から第3までの3分割について図2に沿ってより詳しく説明する。
【0030】
(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値を出力する。
【実施例1】
【0031】
まず、本発明の実施例として、イーサネット(登録商標)フレームで使用されるCRC−32(FCS(Frame Check Sequence)とも呼ばれる)のCRC値を算出する装置について説明する。例として、イーサネット(登録商標)のデータリンク層のフレームでは、フレームの誤り検出にCRC−32が用いられている。CRC−32は、IEEE802.3のデータリンク層のフレームにおけるFCSとして用いられており、その値は、フレームの中のアドレス部、レングス部、データ部から算出する。この場合、CRC値(検査ビット)が32ビット長であり、生成多項式は、
【0032】
【数2】

である。
【0033】
図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値を最後にビット反転する。
【0034】
どの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信号を得る。
【実施例2】
【0035】
次に、図7に示す装置は、FCSの付加されていない任意の長さのイーサネット(登録商標)フレームデータ(data)とフレームデータ有効信号(data valid)を入力すると、CRC−32値を算出し、イーサネット(登録商標)フレームの末尾にFCSを付加する装置である。本例では、装置の処理するデータ幅は8バイトとしている。図7に示すCRC−32値算出装置は、実施例1で示した装置である。図7の装置は主にイーサネット(登録商標)フレームを送信する装置の一部として用いられる。
【実施例3】
【0036】
次に、図8に示す装置は、任意の長さのイーサネット(登録商標)フレームデータ(data)とフレームデータ有効信号(data valid)を入力すると、CRC−32値を算出し、入力されたイーサネット(登録商標)フレームのFCSと比較して結果を出力するものである。本例では、装置の処理するデータ幅は8バイトとしている。図8のCRC−32値算出装置とは、実施例1で示した装置である。図8の装置は主にイーサネット(登録商標)フレームを受信する装置の一部として用いられる。
【実施例4】
【0037】
入力した可変長のデータから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回路の出力の選択あるいは非選択を決定する。
【実施例5】
【0038】
また、入力した可変長のデータから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回路の出力の選択あるいは非選択を決定する。
【実施例6】
【0039】
上記の様に、図2に示す回路では、対象データ長が64バイトの場合は、8B処理のCRC回路のみを使って処理をすることになるが、この場合は、他の4B処理、2B処理、1B処理のそれぞれのCRC回路は実質的には使われていない。これに対して、図14に示す回路の場合は、4B処理、2B処理、1B処理、のそれぞれのCRC回路と、もうひとつの1B処理のCRC回路とを用いて64バイトの処理を行なうものである。つまり、上記の例に図14で示すフィラーCRC回路を付加すればよく、図14では、最下部に配置しているが、この回路の並び位置は任意性があるので、他の要素でその並び位置を決定することができる。この構成では、8B処理のCRC回路の代わりに1B処理のCRC回路を用意すればよいので、回路規模を抑制することができる。
【0040】
より汎用的な表現をすると、この発明は、入力した可変長のデータから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値の算出装置である。
【産業上の利用可能性】
【0041】
上記では、本発明を、ネットワーク関連分野、特に情報通信を念頭において説明したが、本発明は、誤り検出回路に用いて誤りの訂正を行う広範な装置に適用することができる。例えば、書き込み、読み出しを高速に行う記憶装置に適用することも可能である。
【図面の簡単な説明】
【0042】
【図1】従来のCRC−32算出装置の8バイト処理時の構成を示すブロック図である。
【図2】本発明のCRC値の算出装置の8バイト処理時の構成を示すブロック図である。
【図3】CRC−32値を算出する装置の入出力信号の流れを示す図である。
【図4】図3の入出力信号の概要を示す図である。
【図5】図3の入出力信号の動作タイミングを示す図である。
【図6】CRC−32値を算出する装置の構成を示すブロック図である。
【図7】CRC−32値を算出しイーサネット(登録商標)フレームにFCSを付加する装置の構成を示すブロック図である。
【図8】イーサネット(登録商標)フレームのFCSを検査する装置の構成を示すブロック図である。
【図9】公知のLFSR(Linear Feedback Shift Register)を示すブロック図である。
【図10】公知の1バイトごとにCRC値を算出するCRC−32回路例を示すブロック図である。
【図11】従来のCRC−32算出装置のm2nビット処理時の構成を示すブロック図である。
【図12】本発明の、CRC値の算出装置のm2nビット処理時の構成を示すブロック図である。
【図13】本発明の、CRC値の算出装置のm2n+tビット処理時の構成を示すブロック図である。
【図14】フィラーCRC回路を備えた、CRC値の算出装置を示すブロック図である。図である。
【符号の説明】
【0043】
1、2、3、4 セレクタ
5、6、7、8 レジスタ

【特許請求の範囲】
【請求項1】
入力した可変長のデータから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値を出力するものであって、
第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値の算出装置。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate

【図7】
image rotate

【図8】
image rotate

【図9】
image rotate

【図10】
image rotate

【図11】
image rotate

【図12】
image rotate

【図13】
image rotate

【図14】
image rotate


【公開番号】特開2007−166031(P2007−166031A)
【公開日】平成19年6月28日(2007.6.28)
【国際特許分類】
【出願番号】特願2005−356870(P2005−356870)
【出願日】平成17年12月9日(2005.12.9)
【新規性喪失の例外の表示】特許法第30条第1項適用申請有り 2005年6月10日 社団法人電子情報通信学会発行の「電子情報通信学会技術研究報告 信学技報Vol.105 No123」に発表
【出願人】(301021533)独立行政法人産業技術総合研究所 (6,529)
【出願人】(506209422)地方独立行政法人 東京都立産業技術研究センター (134)
【出願人】(501105646)デュアキシズ株式会社 (4)
【出願人】(505350400)株式会社ビッツ (3)
【上記2名の代理人】
【識別番号】100082669
【弁理士】
【氏名又は名称】福田 賢三
【Fターム(参考)】