(57)【特許請求の範囲】
【請求項１】
入力した可変長のデータからＣＲＣ値の算出を行う装置であって、
自然数ｎ、ｍが予め決められているとき、
装置のデータを処理する単位がｍ２nビットであり、
処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、
処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、
以下順次、処理単位が固定長ｍ２0ビットの第ｎＣＲＣ回路までのＣＲＣ回路と、
からなるｎ＋１個の処理単位が固定長のＣＲＣ回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、
第０のＣＲＣ回路は、ｍ２nビットのデータと自身のＣＲＣ回路の出力とを入力して、第０のセレクタと当初０の記録されたレジスタを介して、自身のＣＲＣ回路と第１のＣＲＣ回路とへ出力し、
１からｎまでの整数ｋについて、
第ｋのＣＲＣ回路は、ｍ２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタとレジスタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、但し、ｋ＝ｎの場合は出力し、
第０のセレクタは、第０のＣＲＣ回路の出力あるいは入力信号である自身のＣＲＣ回路の出力から選択するセレクタであり、
第ｋのセレクタは、第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｋのＣＲＣ回路の出力のいずれかを選択するセレクタであり、
第ｎのセレクタを介して算出したＣＲＣ値を出力するものであって、
第０のセレクタでは、データ長がｍ（２n）のとき、第０のＣＲＣ回路の出力を選択し、
第ｋのセレクタでは、処理するデータのデータ長の２進数表記の第ｋのセレクタに対応する桁の値に従って第ｋのＣＲＣ回路の出力の選択あるいは非選択を決定することを特徴とするＣＲＣ値の算出装置。
【請求項２】
入力した可変長のデータからＣＲＣ値の算出を行う装置であって、
自然数ｎ、ｍと、ｍ２nより小さい自然数ｔが予め決められているとき、
装置のデータを処理する単位が（ｍ２n＋ｔ）ビットであり、
処理単位が固定長（ｍ２n＋ｔ）ビットの前置ＣＲＣ回路と、
処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、
処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、以下順次、処理単位が固定長ｍ２0ビットの第ｎＣＲＣ回路までのＣＲＣ回路と、
からなるｎ＋２個の処理単位が固定長のＣＲＣ回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、
上記前置ＣＲＣ回路は、（ｍ２n＋ｔ）ビットのデータと自身のＣＲＣ回路の出力とを入力して、前置セレクタとレジスタを介して、自身のＣＲＣ回路と第１のＣＲＣ回路とへ出力し、
０からｎまでの整数ｋについて、
第ｋのＣＲＣ回路は、ｍ２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタとレジスタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、
上記前置セレクタは、上記前置ＣＲＣ回路の出力あるいは入力信号である自身のＣＲＣ回路の出力から選択するセレクタであり、
第ｋのセレクタは、第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｋのＣＲＣ回路の出力のいずれかを選択するセレクタであり、
第ｎのセレクタを介して算出したＣＲＣ値を出力するものであって、
上記前置セレクタでは、データ長がｍ（２n）＋ｔのとき、第０のＣＲＣ回路の出力を選択し、
第ｋのセレクタでは、処理するデータのデータ長の２進数表記の第ｋのセレクタに対応する桁の値に従って第ｋのＣＲＣ回路の出力の選択あるいは非選択を決定することを特徴とするＣＲＣ値の算出装置。
【請求項３】
入力した可変長のデータからＣＲＣ値の算出を行う装置であって、
自然数ｎ、ｍが予め決められているとき、
装置のデータを処理する単位が（ｍ２n+1）ビットであり、
処理単位が固定長（ｍ２n）ビットの前置ＣＲＣ回路と、
処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、
処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、
以下順次、処理単位が固定長ｍ２0ビットＣＲＣ回路と、
処理単位が固定長ｍ２0ビットＣＲＣ回路の第（ｎ＋１）ＣＲＣ回路までのＣＲＣ回路と、
からなるｎ＋２個の処理単位が固定長のＣＲＣ回路を、それぞれのセレクタとレジスタを介して直列に接続した構成を備え、
上記前置ＣＲＣ回路は、ＣＲＣ値算出対象データの先頭から（ｍ２n＋ｔ）ビット毎に分割されて装置に入力されたデータとレジスタの出力とを入力してＣＲＣ値を算出し、前置セレクタとレジスタを介して第１のＣＲＣ回路とへ出力し、
０からｎまでの整数ｋについて、
第ｋのＣＲＣ回路は、２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタとレジスタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、
上記前置セレクタは、上記ＣＲＣ値算出対象データの分割したデータ長が（ｍ２n＋ｔ）ビットである場合に上記前置ＣＲＣ回路の出力を選択し、データ長が（ｍ２n＋ｔ）ビットでない場合に入力信号である自身のＣＲＣ回路の出力を選択するセレクタであり、
第ｎ＋１のセレクタは、上記ＣＲＣ値算出対象データの分割したデータ長に対応して第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｎのＣＲＣ回路の出力のいずれかを選択するセレクタであり、
第ｎのセレクタを介して算出したＣＲＣ値出力することを特徴とするＣＲＣ値の算出装置。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は誤り検出技術に関しており、ネットワーク関連分野、特に情報通信において巡回符号を用いて誤り検出とその訂正を行なうためのＣＲＣ（Cyclic Redundancy Checking）値の算出装置に関している。
【背景技術】
【０００２】
符号語の各ビットを係数とする符号多項式を生成多項式で割った剰余の係数を検査ビットとし、符号語と検査ビットを通信エラーの発生する伝送路で伝送して、受信側では、その受信した情報に対応した多項式を上記の生成多項式で割った剰余から伝送エラーを検出したり受信情報を訂正したりする巡回符号方式は、既によく知られており、磁気記録装置やネットワーク分野の市販の装置において用いられている。
【０００３】
ＣＲＣ（Cyclic Redundancy Checking）方式は誤り検出方式の１つであり、上記の巡回符号方式に属し、短縮化巡回符号を用いる点に特徴がある。この方式は、連続した通信エラーなどのバースト誤りを検出できる点や、簡易なハードウェアで実現できる点などから、シリアル伝送路における誤り検査などに広く用いられている。イーサネット（登録商標）におけるフレームデータの誤り検査にもこの方式が利用されており、ネットワークフレームのＦＣＳ(Frame Check Sequence)に３２ビット長のＣＲＣ−３２が採用されている。
【０００４】
よく知られているように、図９に示す単純なＣＲＣ回路であるＬＦＳＲ(Linear Feedback Shift Register)では、ＣＲＣの算出は１クロックサイクルごとに１ビットずつ行われる。
【０００５】
また、ネットワークのフレームデータ長はバイト単位であることから、１バイトごとにＣＲＣ値を算出するＣＲＣ−３２回路の研究がなされており、ＣＲＣ回路の処理性能は向上しつづけてきた。一例を図１０に示す。このＣＲＣ回路は８ビット長のデータから排他的論理和演算などによりＣＲＣ値を算出する。１サイクルごとに処理するデータ長は固定であり、この８ビット処理のＣＲＣ回路は、例えば５ビットのデータからはＣＲＣ値を算出することはできない。
【０００６】
近年では１０Ｇビットイーサネット（登録商標）の登場などネットワークのスピードが向上し続けており、ＣＲＣ算出処理のスループットを一層向上させる必要がある。そこで、１サイクルごとに処理するデータ幅を複数バイトにしてスループットを向上させたＣＲＣ装置が開発されてきた。ＣＲＣ装置は１サイクルごとに処理できるデータ長が固定の基本的なＣＲＣ回路を用いて構成されている。
【０００７】
例えば、１サイクルごとに処理するデータ幅が８バイトの場合の、従来のＣＲＣ−３２算出装置の構成を図１に示す。図１では、処理データ幅が８バイトのＣＲＣ装置は、８個のＣＲＣ回路より構成される。また、処理するデータ幅が１〜８バイトのＣＲＣ回路を用意することで、入力されるネットワークフレームの末尾が８バイトの倍数で無い場合でも、末尾のバイト長にあわせてＣＲＣ値の結果をセレクタで選択し、正しいＣＲＣ値を算出することができる。
【０００８】
また、図１１に、図１の構成をさらに一般化した従来のＣＲＣ−３２算出装置のｍ２nビット処理時の構成を示すブロック図を示す。これは、処理するデータ幅がｍ、２ｍ、・・・、ｍ２nのＣＲＣ回路を用意することで、末尾のバイト長にあわせてＣＲＣ値の結果をセレクタで選択し、正しいＣＲＣ値を算出するものである。
【０００９】
しかし、このような回路構成では、処理するデータ幅を増加すると構成するＣＲＣ回路の個数も増加し回路規模が増加してしまう。また、ＣＲＣ値を選択するセレクタの入力数も増加し回路のディレイが大きくなってしまう。従来の技術でデータ幅を増加する場合は、１サイクルで処理するデータ幅がｍ２nビットのＣＲＣ装置は、ｍ２n個の基本的なＣＲＣ回路を用いて構成されていた。例えば、１サイクルで処理するデータ幅が２nバイトのＣＲＣ装置は、「２nバイト毎に処理するＣＲＣ回路」、「２n−１バイト毎に処理するＣＲＣ回路」、…、「１バイト毎に処理するＣＲＣ回路」、と、２n個の基本的なＣＲＣ回路で構成されていた。例えば、ＣＲＣ装置の処理するデータ幅を２倍にすると、装置を構成する基本的なＣＲＣ回路の個数も２倍となり、回路規模が比例的に増加してしまう。
【００１０】
従来の構成ではＣＲＣ回路が２n個でレイテンシが１であるのに対し、本発明の構成ではＣＲＣ回路がｎ＋１個でレイテンシがｎ＋１となる。ＣＲＣ回路の個数は対数スケールとなり、レイテンシは対数スケール分のみ増加する。
【００１１】
特許文献１にはＣＲＣ装置が開示されている。これは、可変長のＣＲＣ演算対象データを受けるＣＲＣ装置において、入力データをシフトする回路とマスクを行う回路、ＣＲＣ演算部より装置を構成している。
【００１２】
本発明はＣＲＣ装置の構成に入力データ幅の対数オーダ個のＣＲＣ回路とレジスタを持つセレクタより装置を直列に接続して構成するものであり、特許文献１とは異なる。
【００１３】
【特許文献１】特開２００２−３５９５６１号公報
【発明の開示】
【発明が解決しようとする課題】
【００１４】
上記の様に、超高速ネットワーク機器においては、ＣＲＣ装置の１サイクルに処理するデータ幅を拡大することによるスループットの向上が必須であるが、従来技術では回路規模増大が膨大となってしまう。本発明では、回路規模の増加を抑制してもスループット向上が可能なＣＲＣ値の算出装置を実現する。
【発明の効果】
【００１５】
本発明では、ＣＲＣ装置の１サイクルに処理するデータ幅を２倍としても、装置を構成する基本的なＣＲＣ回路は１個のみの増加であり、回路規模の増加が対数オーダとなる。このため、回路規模の増大を抑えつつＣＲＣ装置が処理するデータ幅を増加させることが可能となり、ＣＲＣ装置のスループット向上が容易となる。また、既存のＣＲＣ装置の回路規模を低減することもでき、その回路規模の低減で消費電力を低減できる。
【課題を解決するための手段】
【００１６】
本発明は、概略では、１クロックサイクル中に処理するデータ幅がｍ２nビットのＣＲＣ装置を、ｎ＋１個の基本的なＣＲＣ回路で構成することにより装置規模を低減させる技術である。例えば、装置の１サイクルに処理するデータ幅がｍ２nビットである場合、「ｍ２nビット毎に処理するＣＲＣ回路」、「ｍ２(n-1)ビット毎に処理するＣＲＣ回路」、・・・、「ｍ２0ビット毎に処理するＣＲＣ回路」を、セレクタを介して直列に接続して装置を構成することで、入力されるネットワークフレームの末尾がｍ２nビットの倍数で無い場合でも、正しいＣＲＣ値を算出することができるようにするものである。このとき、各ＣＲＣ回路間にレジスタを設けてパイプラインを構成し、動作周波数の低下を防ぐようにする。
【００１７】
より正確には、本発明は、可変長のデータからＣＲＣ値の算出を行う装置であって、
自然数ｎ、ｍが予め決められているとき、
装置のデータを処理する単位がｍ２nビットであり、
処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、
処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、
以下順次、処理単位が固定長ｍ２0ビットの第ｎＣＲＣ回路までのＣＲＣ回路と、
からなるｎ＋１個の処理単位が固定長のＣＲＣ回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、
第０のＣＲＣ回路は、ｍ２nビットのデータと自身のＣＲＣ回路の出力とを入力して、第０のセレクタと当初０の記録されたレジスタを介して、自身のＣＲＣ回路と第１のＣＲＣ回路とへ出力し、
１からｎまでの整数ｋについて、
第ｋのＣＲＣ回路は、ｍ２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタとレジスタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、但し、ｋ＝ｎの場合は出力し、
第０のセレクタは、第０のＣＲＣ回路の出力あるいは入力信号である自身のＣＲＣ回路の出力から選択するセレクタであり、
第ｋのセレクタは、第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｋのＣＲＣ回路の出力のいずれかを選択するセレクタであり、
第ｎのセレクタを介して算出したＣＲＣ値を出力することを特徴とするＣＲＣ値の算出装置である。
【００１８】
また、本発明は、可変長のデータからＣＲＣ値の算出を行う装置であって、
自然数ｎ、ｍと、ｍ２nより小さい自然数ｔが予め決められているとき、
装置のデータを処理する単位が（ｍ２n＋ｔ）ビットであり、
処理単位が固定長（ｍ２n＋ｔ）ビットの前置ＣＲＣ回路と、
処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、
処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、
以下順次、処理単位が固定長ｍ２0ビットの第ｎＣＲＣ回路までのＣＲＣ回路と、
からなるｎ＋２個の処理単位が固定長のＣＲＣ回路を、それぞれのレジスタを備えたそれぞれのセレクタとレジスタを介して直列に接続した構成を備え、
上記前置ＣＲＣ回路は、ＣＲＣ値算出対象データの先頭から（ｍ２n＋ｔ）ビット毎に分割されて装置に入力されたデータと自身のＣＲＣ回路の出力とを入力してＣＲＣ値を算出し、前置セレクタを介して自身のＣＲＣ回路と第１のＣＲＣ回路とへ出力し、
０からｎまでの整数ｋについて、
第ｋのＣＲＣ回路は、２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタとレジスタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、
上記前置セレクタは、ＣＲＣ値算出対象データの分割したデータ長が（ｍ２n＋ｔ）ビットである場合に前置ＣＲＣ回路の出力を選択し、データ長が（ｍ２n＋ｔ）ビットでない場合に入力信号である自身のＣＲＣ回路の出力を選択するセレクタであり、
第ｋのセレクタは、上記ＣＲＣ値算出対象データの分割したデータ長に対応して第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｋのＣＲＣ回路の出力のいずれかを選択するセレクタであり、
第ｎのセレクタを介して算出したＣＲＣ値を出力することを特徴とするＣＲＣ値の算出装置である。
【００１９】
また、本発明は、入力した可変長のデータからＣＲＣ値の算出を行う装置であって、
自然数ｎ、ｍが予め決められているとき、
装置のデータを処理する単位が（ｍ２n+1）ビットであり、
処理単位が固定長（ｍ２n）ビットの前置ＣＲＣ回路と、
処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、
処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、
以下順次、処理単位が固定長ｍ２0ビットＣＲＣ回路と、
処理単位が固定長ｍ２0ビットＣＲＣ回路の第（ｎ＋１）ＣＲＣ回路までのＣＲＣ回路と、
からなるｎ＋２個の処理単位が固定長のＣＲＣ回路を、それぞれのセレクタとレジスタを介して直列に接続した構成を備え、
上記前置ＣＲＣ回路は、ＣＲＣ値算出対象データの先頭から（ｍ２n＋ｔ）ビット毎に分割されて装置に入力されたデータをレジスタの出力とを入力してＣＲＣ値を算出し、前置セレクタを介して第１のＣＲＣ回路とへ出力し、
０からｎまでの整数ｋについて、
第ｋのＣＲＣ回路は、２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタとレジスタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、
上記前置セレクタは、上記ＣＲＣ値算出対象データの分割したデータ長が（ｍ２n＋ｔ）ビットである場合に上記前置ＣＲＣ回路の出力を選択し、データ長が（ｍ２n＋ｔ）ビットでない場合に入力信号である自身のＣＲＣ回路の出力を選択するセレクタであり、
第ｎ＋１のセレクタは、上記ＣＲＣ値算出対象データの分割したデータ長に対応して第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｎのＣＲＣ回路の出力のいずれかを選択するセレクタであり、
第ｎのセレクタを介して算出したＣＲＣ値出力することを特徴とするＣＲＣ値の算出装置である。
【発明を実施するための最良の形態】
【００２０】
一般に、符号語に対応する多項式表現である符号多項式をＰ（ｘ）、次数がｎでありｘn-1で割切れない多項式である生成多項式をＧ（ｘ）、とし、さらにＰ（ｘ）をＧ（ｘ）で割った多項式の剰余をＲ（ｘ）とするとき、巡回符号Ｆ（ｘ）は、次の数１で表される。
【００２１】
【数１】
0004764973.tif 000002
【００２２】
この短縮化された巡回符号がＣＲＣであり、数１の第１項がアドレス部レングス部データ部であり、第２項がＦＣＳ（Frame Check Sequence）に対応する。
【００２３】
フレームデータ送信時には、上記のR(ｘ)部を算出し、FCSとして付加して送信する。また、受信時には、受信信号からR(ｘ)を算出し、受信信号に対応するFCSと比較してデータの誤りを検出する。
【００２４】
本発明は、処理するデータ幅がｍ２nビットのＣＲＣ値を算出するＣＲＣ装置を、セレクタを介して直列に接続した「ｍ２nビット毎に処理するＣＲＣ回路」、「ｍ２(n-1)ビット毎に処理するＣＲＣ回路」、・・・、「ｍ２0ビット毎に処理するＣＲＣ回路」、により構成する。このとき、各ＣＲＣ回路間にレジスタを設けてパイプラインを構成し、動作周波数の低下を防ぐ。図２に１サイクルごとに処理するデータ幅が８バイトの場合の、本発明のＣＲＣ−３２算出装置の構成を示す。従来の構成ではＣＲＣ回路が２n個でレイテンシが１であるのに対し、本発明の構成ではＣＲＣ回路がｎ＋１個でレイテンシがｎ＋１となる点が異なっている。本発明では、ＣＲＣ回路の個数は対数スケールとなり、レイテンシは対数スケール分に応じて増加する。
【００２５】
図２において、セレクタによる選択は、以下の様に行なう。
例えば、対象データ長が６３バイトで、処理データ幅が８バイトの場合、対象データを８分割して、第１から第７分割までは、８バイトのデータを入力する。末尾データである第８分割の長さは７（２進数表記で０１１１）バイトであり、これは４バイト＋２バイト＋１バイトであるので、８Ｂ処理のＣＲＣ回路後のセレクタは、当初０の記録されたレジスタから直接信号を選択してＣＲＣ値への寄与を無くし、４Ｂ処理、２Ｂ処理、１Ｂ処理のそれぞれのＣＲＣ回路後のセレクタは、それぞれ、４Ｂ処理、２Ｂ処理、１Ｂ処理のそれぞれのＣＲＣ回路の信号を選択して、この部分のＣＲＣ値への寄与を有効にする。
【００２６】
また、対象データ長が５９、つまり末尾データが３バイトの時には、８Ｂ処理のＣＲＣ回路後のセレクタは、当初０の記録されたレジスタから直接信号を選択し、引き続く４Ｂ処理のＣＲＣ回路後のセレクタは、０を出力する８Ｂ処理のＣＲＣ回路の出力を選択し、２Ｂ処理のＣＲＣ回路と１Ｂ処理のＣＲＣ回路とを活用して、末尾データの３バイトＣＲＣ値を算出する。
【００２７】
さらに、対象データ長が８の倍数であるときには、８Ｂ処理のＣＲＣ回路だけを用いるので、４Ｂ処理のＣＲＣ回路以下では、CRC回路の寄与を無効にする。
【００２８】
一般的な記述を用いると、処理データ幅で分割された最後の分割のデータ長の２進数表記のそれぞれの桁に対応するバイト数のＣＲＣ回路をセレクタで選択するもので；
一般に、処理データ幅がｍ（２n）ビット処理の場合、
初段のセレクタでは、データ長がｍ（２n）のとき、ＣＲＣ回路の出力を選択し、
以降のｋ段目のセレクタでは、末尾の分割のデータ長の２進数表記の第ｋのセレクタに対応する桁の値に従って第ｋのＣＲＣ回路の出力の選択あるいは非選択を決定する。
【００２９】
次に、ＣＲＣ装置の処理手順例を、対象データ長が２１バイトで、処理データ幅が８バイトの場合、つまり、８バイト＋８バイト＋５バイトの第１から第３までの３分割について図２に沿ってより詳しく説明する。
【００３０】
（１）  まず、第１分割の８バイトデータを入力する。
初段の８Ｂ処理のＣＲＣ回路でＣＲＣ値の途中結果を算出し、これに接続されたセレクタ４は８Ｂ処理のＣＲＣ回路の出力を選択し、レジスタ８に入力する。
（２）  次に、第２分割の８バイトデータを入力する。
ここで、レジスタ８の上記の途中結果と、入力されたデータとから、８Ｂ処理のＣＲＣ回路でＣＲＣ値の途中結果を算出し、セレクタ４は８Ｂ処理のＣＲＣ回路の出力を選択し、レジスタ８Ｂに入力する。
（３）  次に、第３分割の５バイトデータを入力する。
セレクタ４はレジスタ８から直接の出力を選択し、レジスタ８に入力する。
また、４Ｂ処理のＣＲＣ回路で、レジスタ８の途中結果と入力データ中の４バイト（１７〜２０バイト）のデータとからＣＲＣ値を算出する。
セレクタ３は４Ｂ処理のＣＲＣ回路の出力を選択し、レジスタ７に入力する。
セレクタ２はレジスタ７から直接の出力を選択し、レジスタ６に入力する。
また、１Ｂ処理のＣＲＣ回路で、レジスタ６の途中結果と入力データ中の１バイト（２１バイト目）のデータからＣＲＣ値を算出する。
セレクタ１は１Ｂ処理のＣＲＣ回路の出力を選択し、レジスタ５に入力する。
（４）  ＣＲＣ値を出力する。
【実施例１】
【００３１】
まず、本発明の実施例として、イーサネット（登録商標）フレームで使用されるＣＲＣ−３２（ＦＣＳ(Frame Check Sequence)とも呼ばれる）のＣＲＣ値を算出する装置について説明する。例として、イーサネット（登録商標）のデータリンク層のフレームでは、フレームの誤り検出にＣＲＣ−３２が用いられている。ＣＲＣ−３２は、ＩＥＥＥ８０２．３のデータリンク層のフレームにおけるＦＣＳとして用いられており、その値は、フレームの中のアドレス部、レングス部、データ部から算出する。この場合、ＣＲＣ値（検査ビット）が３２ビット長であり、生成多項式は、
【００３２】
【数２】
0004764973.tif 000003
である。
【００３３】
図６にＣＲＣ−３２値を算出する装置の構成を示す。ＣＲＣ−３２を用いたＦＣＳ装置の処理するデータ幅は８バイトであり、装置の動作周波数が１５６．２５ＭＨｚのとき、スループットは１０Ｇｂｐｓとなる。この装置は４つの基本的なＣＲＣ回路のよりパイプライン式に構成されており、レイテンシは４となっている。回路で使用されているセレクタは２入力１出力であり、ディレイを最小限に抑えている。ＣＲＣ−３２（１Ｂ）のデータ入力信号部のセレクタは４入力１出力で記載しているが、２入力１出力のセレクタ２段のパイプラインで構成可能である。この装置では、データの先頭から末尾の直前まではＣＲＣ−３２（８Ｂ）回路でＣＲＣ−３２値が算出されている。そして末尾データからはそのデータ長に合せたＣＲＣ−３２回路が用いられてＣＲＣ−３２値が算出される。例えば、末尾のデータが６バイトであれば、ＣＲＣ−３２（４Ｂ）回路とＣＲＣ−３２（２Ｂ）回路を用いてＣＲＣ−３２値が算出され、他のＣＲＣ−３２（８Ｂ）回路、ＣＲＣ−３２（１Ｂ）回路は用いられない。ＦＣＳにおけるＣＲＣ値の算出では、最初の３２ビットデータは、ビット反転させる。また、算出したＣＲＣ値を最後にビット反転する。
【００３４】
どのＣＲＣ−３２回路を使用するかは、ｒｅｍａｉｎ値とｓｏｆ信号により決定される。図３にＣＲＣ−３２値を算出する装置の入出力信号の流れを、図４に図３の入出力信号の概要を示す。また、図５に図３の入出力信号の動作タイミングを示す。データからＣＲＣ−３２値を算出する際、まず装置にデータの先頭８バイトとｓｏｆ(Start Of Frame)信号を与える。そして、データを末尾まで８バイト毎に区切り装置へ入力する。最後に末尾のデータと末尾データのバイト長(remain)、ｅｏｆ(End Of Frame)信号を与える。このような手順で、ｅｏｆ信号入力の４サイクル後にＣＲＣ−３２値とｖａｌｉｄ信号を得る。
【実施例２】
【００３５】
次に、図７に示す装置は、ＦＣＳの付加されていない任意の長さのイーサネット（登録商標）フレームデータ（data）とフレームデータ有効信号（data valid）を入力すると、ＣＲＣ−３２値を算出し、イーサネット（登録商標）フレームの末尾にＦＣＳを付加する装置である。本例では、装置の処理するデータ幅は８バイトとしている。図７に示すＣＲＣ−３２値算出装置は、実施例１で示した装置である。図７の装置は主にイーサネット（登録商標）フレームを送信する装置の一部として用いられる。
【実施例３】
【００３６】
次に、図８に示す装置は、任意の長さのイーサネット（登録商標）フレームデータ（data）とフレームデータ有効信号（data valid）を入力すると、ＣＲＣ−３２値を算出し、入力されたイーサネット（登録商標）フレームのＦＣＳと比較して結果を出力するものである。本例では、装置の処理するデータ幅は８バイトとしている。図８のＣＲＣ−３２値算出装置とは、実施例１で示した装置である。図８の装置は主にイーサネット（登録商標）フレームを受信する装置の一部として用いられる。
【実施例４】
【００３７】
入力した可変長のデータからＣＲＣ値の算出を行う装置であって、自然数ｎ、ｍが予め決められているとき、装置のデータを処理する単位がｍ２nビットであり、処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、以下順次、処理単位が固定長ｍ２0ビットの第ｎＣＲＣ回路までのＣＲＣ回路と、からなるｎ＋１個の処理単位が固定長のＣＲＣ回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、第０のＣＲＣ回路は、ｍ２nビットのデータと自身のＣＲＣ回路の出力とを入力して、第０のセレクタを介して、自身のＣＲＣ回路と第１のＣＲＣ回路とへ出力し、１からｎまでの整数ｋについて、第ｋのＣＲＣ回路は、ｍ２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、第０のセレクタは、第０のＣＲＣ回路の出力あるいは入力信号である自身のＣＲＣ回路の出力から選択するセレクタであり、第ｋのセレクタは、第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｋのＣＲＣ回路の出力のいずれかを選択するセレクタであり、第ｎのセレクタを介して算出したＣＲＣ値を出力することを特徴とするＣＲＣ値の算出装置を、図１２に示す。第０のセレクタでは、データ長がｍ（２n）のとき、第０のＣＲＣ回路の出力を選択し、第ｋのセレクタでは、処理するデータのデータ長の２進数表記の第ｋのセレクタに対応する桁の値に従って第ｋのＣＲＣ回路の出力の選択あるいは非選択を決定する。
【実施例５】
【００３８】
また、入力した可変長のデータからＣＲＣ値の算出を行う装置であって、自然数ｎ、ｍと、ｍ２nより小さい自然数ｔが予め決められているとき、装置のデータを処理する単位が（ｍ２n＋ｔ）ビットであり、処理単位が固定長（ｍ２n＋ｔ）ビットの前置ＣＲＣ回路と、処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、以下順次、処理単位が固定長ｍ２0ビットの第ｎＣＲＣ回路までのＣＲＣ回路と、からなるｎ＋２個の処理単位が固定長のＣＲＣ回路を、それぞれのレジスタを備えたそれぞれのセレクタを介して直列に接続した構成を備え、前置ＣＲＣ回路は、（ｍ２n＋ｔ）ビットのデータと自身のＣＲＣ回路の出力とを入力して、前置セレクタを介して、自身のＣＲＣ回路と第１のＣＲＣ回路とへ出力し、０からｎまでの整数ｋについて、第ｋのＣＲＣ回路は、ｍ２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、前置セレクタは、前置ＣＲＣ回路の出力あるいは入力信号である自身のＣＲＣ回路の出力から選択するセレクタであり、第ｋのセレクタは、第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｋのＣＲＣ回路の出力のいずれかを選択するセレクタであり、第ｎのセレクタを介して算出したＣＲＣ値を出力することを特徴とするＣＲＣ値の算出装置を、図１３に示す。前置セレクタでは、データ長がｍ（２n）＋ｔのとき、第０のＣＲＣ回路の出力を選択し、第ｋのセレクタでは、処理するデータのデータ長の２進数表記の第ｋのセレクタに対応する桁の値に従って第ｋのＣＲＣ回路の出力の選択あるいは非選択を決定する。
【実施例６】
【００３９】
上記の様に、図２に示す回路では、対象データ長が６４バイトの場合は、８Ｂ処理のＣＲＣ回路のみを使って処理をすることになるが、この場合は、他の４Ｂ処理、２Ｂ処理、１Ｂ処理のそれぞれのＣＲＣ回路は実質的には使われていない。これに対して、図１４に示す回路の場合は、４Ｂ処理、２Ｂ処理、１Ｂ処理、のそれぞれのＣＲＣ回路と、もうひとつの１Ｂ処理のＣＲＣ回路とを用いて６４バイトの処理を行なうものである。つまり、上記の例に図１４で示すフィラーＣＲＣ回路を付加すればよく、図１４では、最下部に配置しているが、この回路の並び位置は任意性があるので、他の要素でその並び位置を決定することができる。この構成では、８Ｂ処理のＣＲＣ回路の代わりに１Ｂ処理のＣＲＣ回路を用意すればよいので、回路規模を抑制することができる。
【００４０】
より汎用的な表現をすると、この発明は、入力した可変長のデータからＣＲＣ値の算出を行う装置であって、
自然数ｎ、ｍが予め決められているとき、
装置のデータを処理する単位が（ｍ２n+1）ビットであり、
処理単位が固定長（ｍ２n）ビットの前置ＣＲＣ回路と、
処理単位が固定長ｍ２nビットの第０のＣＲＣ回路と、
処理単位が固定長ｍ２(n-1)ビットの第１のＣＲＣ回路と、
以下順次、処理単位が固定長ｍ２0ビットＣＲＣ回路と、
処理単位が固定長ｍ２0ビットＣＲＣ回路の第（ｎ＋１）ＣＲＣ回路までのＣＲＣ回路と、
からなるｎ＋２個の処理単位が固定長のＣＲＣ回路を、それぞれのセレクタとレジスタを介して直列に接続した構成を備え、
前置ＣＲＣ回路は、ＣＲＣ値算出対象データの先頭から（ｍ２n＋ｔ）ビット毎に分割されて装置に入力されたデータをレジスタの出力とを入力してＣＲＣ値を算出し、前置セレクタを介して第１のＣＲＣ回路とへ出力し、
０からｎまでの整数ｋについて、
第ｋのＣＲＣ回路は、２n-kビットのデータと、第（ｋ−１）のＣＲＣ回路の出力を入力して、第ｋのセレクタを介して第（ｋ＋１）のＣＲＣ回路へ出力し、
前置セレクタは、ＣＲＣ値算出対象データの分割したデータ長が（ｍ２n＋ｔ）ビットである場合に前置ＣＲＣ回路の出力を選択し、データ長が（ｍ２n＋ｔ）ビットでない場合に入力信号である自身のＣＲＣ回路の出力を選択するセレクタであり、
第ｎ＋1のセレクタは、ＣＲＣ値算出対象データの分割したデータ長に対応して第（ｋ−１）のＣＲＣ回路の出力、あるいは、第ｎのＣＲＣ回路の出力のいずれかを選択するセレクタであり、
第ｎのセレクタを介して算出したＣＲＣ値出力することを特徴とするＣＲＣ値の算出装置である。
【産業上の利用可能性】
【００４１】
上記では、本発明を、ネットワーク関連分野、特に情報通信を念頭において説明したが、本発明は、誤り検出回路に用いて誤りの訂正を行う広範な装置に適用することができる。例えば、書き込み、読み出しを高速に行う記憶装置に適用することも可能である。
【図面の簡単な説明】
【００４２】
【図１】従来のＣＲＣ−３２算出装置の８バイト処理時の構成を示すブロック図である。
【図２】本発明のＣＲＣ値の算出装置の８バイト処理時の構成を示すブロック図である。
【図３】ＣＲＣ−３２値を算出する装置の入出力信号の流れを示す図である。
【図４】図３の入出力信号の概要を示す図である。
【図５】図３の入出力信号の動作タイミングを示す図である。
【図６】ＣＲＣ−３２値を算出する装置の構成を示すブロック図である。
【図７】ＣＲＣ−３２値を算出しイーサネット（登録商標）フレームにＦＣＳを付加する装置の構成を示すブロック図である。
【図８】イーサネット（登録商標）フレームのＦＣＳを検査する装置の構成を示すブロック図である。
【図９】公知のＬＦＳＲ(Linear Feedback Shift Register)を示すブロック図である。
【図１０】公知の１バイトごとにＣＲＣ値を算出するＣＲＣ−３２回路例を示すブロック図である。
【図１１】従来のＣＲＣ−３２算出装置のｍ２nビット処理時の構成を示すブロック図である。
【図１２】本発明の、ＣＲＣ値の算出装置のｍ２nビット処理時の構成を示すブロック図である。
【図１３】本発明の、ＣＲＣ値の算出装置のｍ２n＋ｔビット処理時の構成を示すブロック図である。
【図１４】フィラーＣＲＣ回路を備えた、ＣＲＣ値の算出装置を示すブロック図である。図である。
【符号の説明】
【００４３】
１、２、３、４  セレクタ
５、６、７、８  レジスタ
【図１】
0004764973.tif 000004
【図２】
0004764973.tif 000005
【図３】
0004764973.tif 000006
【図４】
0004764973.tif 000007
【図５】
0004764973.tif 000008
【図６】
0004764973.tif 000009
【図７】
0004764973.tif 000010
【図８】
0004764973.tif 000011
【図９】
0004764973.tif 000012
【図１０】
0004764973.tif 000013
【図１１】
0004764973.tif 000014
【図１２】
0004764973.tif 000015
【図１３】
0004764973.tif 000016
【図１４】
0004764973.tif 000017