JP6648412B2 - Crc符号演算回路、及びその方法並びに半導体装置 - Google Patents

Crc符号演算回路、及びその方法並びに半導体装置 Download PDF

Info

Publication number
JP6648412B2
JP6648412B2 JP2015082592A JP2015082592A JP6648412B2 JP 6648412 B2 JP6648412 B2 JP 6648412B2 JP 2015082592 A JP2015082592 A JP 2015082592A JP 2015082592 A JP2015082592 A JP 2015082592A JP 6648412 B2 JP6648412 B2 JP 6648412B2
Authority
JP
Japan
Prior art keywords
circuit
packet
crc code
bit
target packet
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
Application number
JP2015082592A
Other languages
English (en)
Other versions
JP2016201770A (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.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
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 Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP2015082592A priority Critical patent/JP6648412B2/ja
Priority to US15/071,804 priority patent/US9748978B2/en
Publication of JP2016201770A publication Critical patent/JP2016201770A/ja
Application granted granted Critical
Publication of JP6648412B2 publication Critical patent/JP6648412B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/65Purpose and implementation aspects
    • H03M13/6508Flexibility, adaptability, parametrability and configurability of the implementation
    • H03M13/6516Support of multiple code parameters, e.g. generalized Reed-Solomon decoder for a variety of generator polynomials or Galois fields
    • 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

Description

本発明は、CRC符号演算回路、及びその方法並びに半導体装置に関する。
データ伝送システム(伝送装置)では、受信したデータに誤りがあるか否かを判定するための方式として巡回冗長符号(Cyclic Redundancy Check、CRC)方式が知られている(例えば、特許文献1及び2を参照)。CRC方式では、送信器は、データを演算して生成されたCRC符号を埋め込んだフレームチェックシーケンス(Frame Check Sequence、FCS)を付加したフレーム信号を送信する。一方、受信器は、受信したフレーム信号から抽出したデータを演算してCRC符号を生成し、生成したCRC符号がFCSに埋め込まれたCRC符号と一致すれば、送信されたデータに誤りがないと判定する。
CRC符号を生成するための演算を高速に行うために、受信したフレーム信号をシリアル―パラレル変換し、シリアル―パラレル変換されたデータを演算することが知られている(例えば、特許文献3〜5を参照)。
特開2001−308720号公報 特開2001−358594号公報 特開2009−55407号公報 特開2003−46393号公報 特開2002−359561号公報
ビット長が異なるパケットを含むフレーム信号をシリアル―パラレル変換して演算する場合、それぞれのパケットのビット長に応じたCRC符号演算回路を使用してCRC符号を生成していた。しかしながら、ビット長に応じたCRC符号演算回路を使用してCRC符号を生成すると、シリアル―パラレル変換されたパケットのビット長が長い場合、配置されるCRC符号演算回路の数が増加するため、回路規模が大きくなるという課題があった。
一実施形態では、比較的小規模の回路規模で、ビット長が異なるパラレル信号であるパケットを演算してCRC符号を生成可能なCRC符号演算回路を提供することを目的とする。
1つの態様では、CRC符号演算回路は、抽出回路と、シフト回路と、演算回路と、レジスタとを有する。抽出回路は、第1ビット長のパラレル信号として入力される信号フレームから、CRC演算の対象となる演算対象パケットを抽出する。シフト回路は、演算対象パケットのビット長が第1ビット長の整数倍と一致しないときに、演算対象パケットの最終のビットが最下位ビットに位置するように演算対象パケットをシフトする。そして、シフト回路は、シフトされた演算対象パケットの先頭のビットの最上位ビット側に「0」を付加してビット長が第1ビット長の整数倍であるデータを生成する。演算回路は、レジスタに記憶される初期値「0」を元に、データAを演算してCRC符号を生成する。レジスタは、演算回路がCRC符号を生成する前に初期値「0」を記憶し、演算回路がCRC符号を生成した後にCRC符号を記憶する。抽出回路は、信号フレームのオーバヘッドの位置を示す信号フレームオーバヘッド位置情報、演算対象パケットのパケット長を示すパケットレングス情報及び信号フレームにおける演算対象パケットの先頭のビットの位置を示す先頭位置情報を使用して演算対象パケットをシフトするシフト量を決定するシフト量決定回路を有する。
一実施形態では、比較的小規模の回路規模で、ビット長が異なるパラレル信号であるパケットを演算してCRC符号を生成可能なCRC符号演算回路を提供することができる。
(a)はCRC符号演算回路が搭載される半導体装置を含むシステムの一例を示す図であり、(b)は(a)に示すシステムで伝送されるシリアル信号の一例を示す図であり、(c)は(a)に示す半導体装置で変換されたパラレル信号の一例を示す図であり、(d)は(a)に示すシステムで伝送されるパケットフォーマットの一例を示す図である。 (a)は図1(a)に示す第1CRC回路の回路ブロック図であり、(b)は(a)に示すCRC符号演算回路の内部ブロック図である。 図2(b)に示すCRC符号演算回路で誤ったCRC符号を生成するパラレル信号の例を示す図である。 (a)はCRC符号演算回路に入力されるパラレル信号の一例を示す図であり、(b)はCRC符号演算回路で変換されたパラレル信号の一例を示す図であり、(c)は(a)に示すパラレル信号のCRC符号を生成可能なCRC符号演算回路の回路ブロック図である。 図4(a)はCRC符号演算回路に入力されるパラレル信号の一例を示す図であり、(b)はCRC符号演算回路で変換されたパラレル信号の一例を示す図であり、(c)は(a)に示すパラレル信号のCRC符号を生成可能なCRC符号演算回路の回路ブロック図である。 1バイト長〜32バイト長のパラレル信号を処理可能なCRC符号演算回路の回路ブロック図である。 第1実施形態に係るCRC符号演算回路が搭載される半導体装置を含むシステムの一例を示す図である。 (a)は図6に示す第1CRC回路の回路ブロック図であり、(b)は(a)に示すCRC符号演算回路の回路ブロック図である。 図7(b)に示すCRC符号演算回路のより詳細な回路ブロック図である。 図8に示す抽出回路及びシフト回路によるパケットの処理によるデータの動きの一例を示す図である。 (a)は演算する演算対象パケットの一例を示す図であり、(b)は演算する演算対象パケットの他の例を示す図であり、(c)は(b)に示す演算対象パケットをシフトした例を示す図である。 図6に示すCRC符号演算回路がCRC符号を生成する処理を示すフローチャートである。 第2実施形態に係るCRC符号演算回路の回路ブロック図である。 図12に示すCRC符号演算回路のより詳細な回路ブロック図である。 図12に示すシフト回路で生成されるデータの一例を示す図である。
以下図面を参照して、本発明に係るCRC符号演算回路、及びその方法並びに半導体装置について説明する。但し、本発明の技術的範囲はそれらの実施の形態に限定されない。
実施形態に係るCRC符号演算回路は、パラレル信号として入力されるパケットの最終のビットがLSB(least significant bit)に位置するようにパケットをシフトし且つパケットのMSB(most significant bit)側に「0」を付加した所定ビット長のシフトデータからCRC符号を生成する。このようにパケットをLSB側にシフトし且つパケットのMSB側に「0」を付加しシフトデータのビット数をパラレル信号の整数倍にすることで、小規模な回路でビット長が異なるパケットのCRC符号を生成可能にする。
実施形態に係るCRC符号演算回路、及びその方法並びに半導体装置について説明する前に、CRC符号演算回路の一例について説明する。
(CRC符号演算回路が搭載される半導体装置を含むシステムの一例)
図1(a)は、CRC符号演算回路が搭載される半導体装置を含むシステムの一例を示す図である。図1(b)は図1(a)に示すシステムで伝送されるシリアル信号の一例を示す図であり、図1(c)は図1(a)に示す半導体装置で変換されたパラレル信号の一例を示す図である。図1(d)は、図1(a)に示すシステムで伝送されるパケットフォーマットの一例を示す図である。
システム900は、一例ではフィールドプログラマブルゲートアレイ(Field-Programmable Gate Array、FPGA)である半導体装置901と、第1デバイス902と、第2デバイス903とを有する。半導体装置901、第1デバイス902及び第2デバイス903のそれぞれは、100Gbpsでシリアル伝送可能な半導体装置である。半導体装置901は、第1通信回路911と、第2通信回路912と、第1CRC回路913と、第2CRC回路914と、ロジック回路915とを有する。半導体装置901は、例えば、高速大容量の主信号データを扱う伝送装置におけるFPGAである。
第1通信回路911は、第1デバイス902から100Gbpsでシリアル伝送された信号を、伝送速度が390Mbpsである256ビットのパラレル信号に変換する。なお、ここでは、256ビットのパラレル信号に変換される例を説明するが、パラレル信号のビット長は256ビット以外であってもよい。例えば、伝送速度が195Mbpsである512ビットのパラレル信号に変換されてもよい。第1CRC回路913は、パラレル信号に変換された信号を演算してCRC符号を生成する。ロジック回路915は、第1CRC回路913でCRC符号が生成されたパラレル信号に所定の処理を施し、第2CRC回路914に出力する。第2CRC回路914は、ロジック回路915で所定の処理が施されたデータにFCSを埋め込み、第2通信回路912に出力する。第2通信回路912は、FCSが埋め込まれたパラレル信号を100Gbpsのシリアル信号に変換して第2デバイス903に伝送する。一方、第2デバイス903から伝送された信号は、第2通信回路912でパラレル信号に変換される。次いで、パラレル信号に変換された信号は、第2CRC回路914、ロジック回路915及び第1CRC回路913で処理された後に、第1通信回路911でシリアル信号に変換されて、第1デバイス902に伝送される。
第1通信回路911及び第2通信回路912のそれぞれは、図1(b)に示すシリアル信号である主信号フレームを受信すると、図1(c)に示す256ビットのビット長を有するパラレル信号に変換する。主信号フレームは、オーバヘッドと、オーバヘッドに次いで受信される512ビットのパケットAと、パケットAに続いて受信される256ビットのパケットBとを有する。パケットAのビット長は変換後のパラレル信号のビット長の2倍なので、パラレル信号に変換されるとき、第2パラレル信号P2及び第3パラレル信号P3の2つパラレル信号に分割される。一方、パケットBのビット長は変換後のパラレル信号のビット長と等しいので、第4パラレル信号P4に変換される。
図1(d)に示すように、イーサネット(登録商標)のパケットは、プリアンブルと、宛先アドレスと、送信元アドレスと、長さ/タイプと、データと、FCSとを有する。第1CRC回路913及び第2CRC回路914は、図1(d)に示すパケットの中で、宛先アドレス、送信元アドレス、長さ/タイプ及びデータを含む演算対象パケットを演算してCRC符号を生成する。生成されたCRC符号はFCSに埋め込まれる。
図2(a)は第1CRC回路913の回路ブロック図であり、図2(b)は図2(a)に示すCRC符号演算回路の内部ブロック図である。
第1CRC回路913は、CRC送信部920と、CRC受信部921とを有する。CRC送信部920は、CRC符号演算回路922と、FCS埋め込み回路923とを有する。CRC符号演算回路922は、CRC符号を生成し、FCS埋め込み回路923は、CRC符号演算回路922が生成したCRC符号をパケットのFCSに埋め込み、CRC符号がFCSに埋め込まれたパケットを第1通信回路911に出力する。CRC受信部921は、CRC符号演算回路922と同一の構成を有するCRC符号演算回路924と、FCSチェック回路925とを有する。CRC符号演算回路924は、第1通信回路911から入力されるパケットを演算して、CRC符号を生成して、FCSチェック回路に出力する。FCSチェック回路925は、第1通信回路911から入力されるパケットのFCSに埋め込まれたCRC符号と、CRC符号演算回路924が生成したCRC符号とを比較して、パケットの正常性を確認する。
CRC符号演算回路922は、EoR回路926と、レジスタ927とを有する。EoR回路926は、レジスタに記憶される32ビットの初期値と、入力される256ビットのパラレル信号とを使用して、式(1)に示すCRC32生成多項式に基づく演算を実行する。
x32 +x26 +x23 +x22 +x16 +x12 +x11 +x10 +x8 +x7 +x5 +x4 +x2 +x +1 (1)
CRC符号演算回路922は、パケットA及びBのようにパケット長がパラレル信号のビット長の整数倍であり且つパケットの先頭のビットがパラレル信号の最上位ビット(most significant bit、MSB)と一致する場合にはCRC符号を生成可能である。しかしながら、イーサネット等でビット長が可変のパケットが伝送される場合及びパケットの先頭のビットがパラレル信号のMSBと一致しない場合等で、CRC符号演算回路922は、誤ったCRC符号を生成する可能性がある。
図3は、CRC符号演算回路922で誤ったCRC符号を生成するパラレル信号の例を示す図である。
パケットCは、オーバヘッドにより2つの部分に分割されている。パケットCの先頭のビット側は256ビットであり第1パラレル信号P1に含まれ、パケットCの最終のビット側は、第2パラレル信号P2に含まれる。パケットCは、先頭のビット側と最終のビット側との間にオーバヘッドが含まれているため、CRC符号演算回路922で誤ったCRC符号が生成される可能性がある。
パケットDは、先頭のビットが第3パラレル信号P3の0ビットに位置するが、ビット長が256ビットよりも短いため最終のビットが第3パラレル信号P3の最下位ビット(least significant bit、LSB)に位置しない。パケットDは、最終のビットが第3パラレル信号P3のLSBと一致しないため、CRC符号演算回路922で誤ったCRC符号が生成される可能性がある。
パケットEは、先頭のビットが第4パラレル信号P4のMSBに位置しない。また、パケットEは、最終のビットが第5パラレル信号P5のLSBに位置しない。第4パラレル信号P4に配置されるパケットEの先頭側は、先頭のビットが第4パラレル信号P4のMSBに位置しないため、CRC符号演算回路922で誤ったCRC符号が生成される可能性がある。また、第3パラレル信号P5に配置されるパケットEの最終側は、最終のビットが第5パラレル信号P5のMSBに位置しないため、CRC符号演算回路922で誤ったCRC符号が生成される可能性がある。
図4(a)はCRC符号演算回路に入力されるパラレル信号の一例を示す図であり、図4(b)はCRC符号演算回路で変換されたパラレル信号の一例を示す図である。図4(c)は、図4(a)に示すパラレル信号のCRC符号を生成可能なCRC符号演算回路の回路ブロック図である。
パケットAは、ビット長が512ビットであり、先頭のビットが第1パラレル信号P1のMSBに位置し、最終のビットが第2パラレル信号P2のLSBに位置する。パケットBは、ビット長が256ビットであり、先頭のビットが第4パラレル信号P4のMSBに位置し、最終のビットが第4パラレル信号P4のLSBに位置する。パケットCは、オーバヘッドにより2つの部分に分割され、先頭のビット側のビット長は256ビットであり第6パラレル信号P6に含まれる。パケットCの最終のビット側は、第7パラレル信号P7に含まれる。パケットDは、先頭のビットが第8パラレル信号P8のMSBに位置し、最終のビットが第8パラレル信号P8の中位に位置する。パケットEは、先頭のビットが第9パラレル信号P9の中位に位置し、最終のビットが第10パラレル信号P10の中位に位置する。
CRC符号演算回路930は、CRC送信部931と、CRC受信部932とを有する。CRC送信部931は、第1CRC符号演算回路9331〜第4CRC符号演算回路9334と、FCS埋め込み回路934とを有する。第1CRC符号演算回路9331はパケットA及びBのCRC符号を生成し、第2CRC符号演算回路9332はパケットCのCRC符号を生成する。第2CRC符号演算回路9332は、パケットCのCRC符号を生成するとき、第7パラレル信号P7に含まれるパケットCを0ビットの方向、すなわちMSB方向にシフトする。第3CRC符号演算回路9333はパケットDのCRC符号を生成し、第4CRC符号演算回路9334はパケットEのCRC符号を生成する。第4CRC符号演算回路9334は、パケットEのCRC符号を生成するとき、第9パラレル信号に含まれるパケットEをMSB方向にシフトし、第10パラレル信号P10に含まれるパケットEのビットを第9パラレル信号P9にシフトする。FCS埋め込み回路934は、第1CRC符号演算回路9331〜第4CRC符号演算回路9334のそれぞれが生成したCRC符号をパケットのFCSに埋め込み、CRC符号がFCSに埋め込まれたパケットを出力する。CRC受信部921は、第1CRC符号演算回路9331〜第4CRC符号演算回路9334のそれぞれと同一の構成を有する第1CRC符号演算回路9351〜第4CRC符号演算回路9354と、FCSチェック回路936とを有する。第1CRC符号演算回路9351は、第1通信回路911から入力されるパケットA及びBを演算してCRC符号を生成し、FCSチェック回路936に出力する。第2CRC符号演算回路9352〜第4CRC符号演算回路9354のそれぞれは、第1通信回路911から入力されるパケットC〜Eのそれぞれを演算してCRC符号を生成し、FCSチェック回路936に出力する。FCSチェック回路936は、入力されるパケットのFCSに埋め込まれたCRC符号と、第1CRC符号演算回路9351〜第4CRC符号演算回路9354のそれぞれが生成したCRC符号とを比較する。
CRC符号演算回路930は、図4(a)に示すパケットA〜Eの何れのパケットも演算することができるが、パケットA〜Eのそれぞれに対応するCRC符号演算回路を用意するので、回路規模が大きくなるという問題がある。
さらに、イーサネット等でビット長が可変のパケットが伝送される場合、例えばバイト単位でビット長が変化する可能性がある。最大で256ビット、すなわち32バイトのパラレル信号が入力される場合、CRC符号演算回路930は、1バイト長〜32バイト長のパラレル信号をそれぞれが処理する32個のEoR演算回路が配置されることになる。
図5は、1バイト長〜32バイト長のパラレル信号を処理可能なCRC符号演算回路の回路ブロック図である。
CRC符号演算回路940は、抽出回路941と、第1EoR回路942−1〜第32EoR回路942−32と、第1レジスタ943−1〜第32レジスタ32とを有する。抽出回路941は、パラレル信号に変換されたフレーム信号からパケットに含まれる一塊の演算対象パケットを抽出する。一塊の演算対象パケットのビット長は、256ビットよりも長くてもよく、256ビットよりも短くてもよい。また、抽出回路941が抽出したデータのビット長をカウントし、抽出したデータのビット長に応じて第1EoR回路942−1〜第32EoR回路942−32に抽出した演算対象パケットを出力する。第1レジスタ943−1〜第32レジスタ943−32のそれぞれは、抽出回路941から入力された演算対象パケットに対して式(1)に示すCRC32生成多項式に基づく演算を実行する。抽出した演算対象パケットのビット長が32バイトよりも長い場合、CRC符号演算回路940は、32バイト毎に第1EoR回路432−1で演算を実行する。例えば、演算対象パケットのビット長が356ビットのとき、MSBから256ビットが第1EoR回路432−1で演算されて、残りの100ビットが他のEoR回路で演算される。CRC符号演算回路940は、32バイトより短い残りの演算対象パケットを残りの演算対象パケットのビット長に応じて第2レジスタ943−2〜第32レジスタ943−32の何れかで演算を実行する。
CRC符号演算回路940は、1バイト長〜32バイト長のパラレル信号のCRC符号を生成することができるが、EoR回路及びレジスタを32対配置するため、回路規模が大きくなるという課題がある。
上述の回路では、主信号フレームと非同期のパケット、主信号フレームのオーバヘッドを含むパケット及び主信号フレームのLSBとに先頭のビットが一致しないパケット等からCRC符号を生成する演算回路の規模が大きくなるという課題がある。
(第1実施形態に係る半導体装置及びCRC符号演算回路の構成及び機能)
図6は、第1実施形態に係るCRC符号演算回路が搭載される半導体装置を含むシステムの一例を示す図である。
システム100は、半導体装置101と、第1デバイス102と、第2デバイス103とを有する。半導体装置101、第1デバイス102及び第2デバイス103のそれぞれは、100Gbpsでシリアル伝送可能な半導体装置である。半導体装置101は、第1通信回路111と、第2通信回路112と、第1CRC回路113と、第2CRC回路114と、ロジック回路115とを有する。第1通信回路111、第2通信回路112及びロジック回路115は、第1通信回路911、第2通信回路912及びロジック回路915と同一の構成及び機能を有するので、ここでは詳細な説明は省略する。第2CRC回路114は、第1CRC回路113と同一の構成及び機能を有する。
図7(a)は第1CRC回路113の回路ブロック図であり、(b)は(a)に示すCRC符号演算回路の回路ブロック図である。
第1CRC回路113は、CRC送信部120と、CRC受信部121とを有する。CRC送信部120は、CRC符号演算回路1と、FCS埋め込み回路123とを有する。CRC受信部921は、CRC符号演算回路1と、FCSチェック回路125とを有する。FCS埋め込み回路123及びFCSチェック回路125は、FCS埋め込み回路923及びFCSチェック回路925と同一の構成及び機能を有するので、ここでは詳細な説明は省略する。
CRC符号演算回路1は、抽出回路10と、シフト回路20と、EoR回路30と、レジスタ40とを有する。抽出回路10は、所定ビット長(例えば256ビット)のパラレル信号として入力される信号フレームから、演算の対象となる演算対象パケットを抽出する。シフト回路20は、演算対象パケットのビット長が256ビットの整数倍と一致しないときに、演算対象パケットの最終のビットが最下位ビットに位置するように演算対象パケットをシフトする。次いで、シフト回路20は、シフトされた演算対象パケットの先頭のビットの最上位ビット側に「0」を付加してビット長が256ビットの整数倍であるシフトデータを生成する。EoR回路30は、レジスタ40に記憶されている初期値「0」を元に、シフトデータをCRC符号演算して第2ビット長(例えば32ビット)のCRC符号を生成する。レジスタ40は、演算回路がCRC符号を生成する前に初期値「0」を記憶し、演算回路がCRC符号を生成した後にCRC符号を記憶する。
図8は、CRC符号演算回路1のより詳細な回路ブロック図である。
抽出回路10は、オーバヘッド位置検出回路11と、パケットプリアンブル検出回路12と、パケットレングス値抽出回路13と、シフト段数演算回路14と、パケット抽出回路15とを有する。
オーバヘッド位置検出回路11は、256ビットのパラレル信号である主信号フレームの制御情報を格納しているオーバヘッド(Overhead)の位置を検出するためのカウンタを有する。オーバヘッドは、主信号フレームの先頭から所定のビット数離れた位置に周期的に現れるので、入力される主信号フレームのビット数をカウンタでカウントすることにより、オーバヘッド位置検出回路11は、オーバヘッドの位置を検出する。オーバヘッド位置検出回路11は、検出したオーバヘッドの位置を示す信号フレームオーバヘッド位置情報をシフト段数演算回路14及びパケット抽出回路15に出力する。
パケットプリアンブル検出回路12は、主信号フレームからパケットの先頭を示す「1010101010b」のSFDを含むプリアンブルを検出する。プリアンブルの次のバイト以降にパケットが存在するので、パケットプリアンブル検出回路12は、プリアンブルの次のビットを示す情報をパケット先頭情報として生成する。パケットプリアンブル検出回路12は、生成したパケット先頭情報をパケットレングス値抽出回路13、シフト段数演算回路14及びパケット抽出回路15に出力する。また、パケットプリアンブル検出回路12は、全てのフリップフロップを「0」にリセットすることを指示するFF初期値指示をシフト回路20及びレジスタ40に出力する。なお、通信回路等のCRC符号演算回路1の前の回路でパケットのプリアンブルの位置を検出できる場合もある。CRC符号演算回路1の前の回路でパケットのプリアンブルの位置を検出できる場合は、パケットプリアンブル検出回路12を省略してもよい。
パケットレングス値抽出回路13は、パケット内の所定の位置に配置されるパケットの長さを示すパケットレングス値を抽出する。パケットレングス値抽出回路13は、抽出したパケットレングス値をシフト段数演算回路14及びパケット抽出回路15に出力する。
シフト段数演算回路14は、信号フレームオーバヘッド位置情報、パケット先頭情報及びパケットレングス値からパケットをLSB側にシフトする段数を演算する。主信号フレームは256ビットのパラレル信号なので、シフト量の最大値は32バイトになる。パケットレングス値の下位5ビットが示すバイト数から信号フレームオーバヘッド位置情報が示すバイト数を減算したバイト数であるシフト段数情報をシフト回路20に出力する。
パケット抽出回路15は、256ビットの並列接続された複数段のフリップフロップを有する。信号フレームオーバヘッド位置情報、パケット先頭情報及びパケットレングス値に基づいて、パケット抽出回路15は、主信号フレームに含まれるパケットを抽出し、フリップフロップに順次ラッチする。パケット抽出回路15は、ラッチしたパケットを256ビットのパラレル信号であるパケットとしてシフト回路20に出力する。
シフト回路20は、256ビットの並列接続された複数段のフリップフロップを有するLSBシフト整列回路21を有する。LSBシフト整列回路21は、パケットプリアンブル検出回路12からFF初期値指示が入力されると、全てのフリップフロップを「0」にリセットする。LSBシフト整列回路21は、パケット抽出回路15から入力されたパケットを順次ラッチする。LSBシフト整列回路21は、ラッチしたパケットをシフト段数情報に基づいてパケットのLSBが、フリップフロップのLSBに一致するようにパケットをシフトして整列させてシフトデータを生成する。
図9は、抽出回路10及びシフト回路20によるパケットの処理によるデータの動きの一例を示す図である。図9において、矢印90で示される信号列は第1通信回路111で256ビットのパラレル信号に変換された主信号フレームを示し、矢印91で示される信号列は矢印90で示される信号列の矢印Aで囲まれた部分の拡大した信号列を示す。矢印92で示される信号列はパケット抽出回路15が矢印91で示される信号列から抽出した信号列を示し、矢印93で示される信号列はシフト回路20が矢印91で示される信号列をシフトしたシフトデータを示す。
パケット抽出回路15は、矢印91で示される信号列で形成されるパケットが入力される。矢印91で示される信号列は、プリアンブルpreambleと、宛先アドレスDAと、送信元アドレスSAと、長さ/タイプLengと、データdataと、FCSとを有する。矢印91で示される信号列では、データdataは、第2パラレル信号P2から第5パラレル信号P5に亘って配置される。第3パラレル信号P3と第4パラレル信号P4との間にフレームの区切りがあり、第4パラレル信号P4のMSBから所定のビット長に亘ってオーバヘッドoverheadが配置される。第4パラレル信号P4にオーバヘッドoverheadが配置されることにより、データdataは、分離される。
パケット抽出回路15は、パケットプリアンブル検出回路12から入力されるパケット先頭情報からプリアンブルPreambleの後端に続いて配置される演算の対象である一塊の演算対象パケットの先頭のビットの位置を決定する。パケット抽出回路15は、パケットプリアンブル検出回路12から入力されるパケット先頭情報及びパケットレングス値抽出回路13から入力されるパケットレングス値から、演算対象パケットの最終ビットの位置を決定する。このとき、パケット抽出回路15は、演算対象パケットの間に信号フレームのオーバヘッドoverheadが位置する場合は、オーバヘッドoverheadのビット長を勘案して演算対象パケットの最終ビットの位置を決定する。パケット抽出回路15は、オーバヘッド位置検出回路11から入力される信号フレームオーバヘッド位置情報から主信号フレームのオーバヘッドoverheadの位置を決定する。矢印91で示される信号列では、オーバヘッドoverheadは、演算対象パケットのデータdataの間に位置するので、パケット抽出回路15は、オーバヘッドoverheadのビット長を勘案して演算対象パケットの最終ビットの位置を決定する。パケット抽出回路15は、パケット先頭情報、パケットレングス値及び信号フレームオーバヘッド位置情報を使用して、矢印91で示される信号列から演算対象パケットを抽出し、矢印92で示される信号列を生成する。矢印92で示される信号列に含まれる演算対象パケットは、先頭のビットが第2パラレル信号P2のMSBに位置する。矢印92で示される信号列には、演算対象パケットでないプリアンブルPreamble及びオーバヘッドoverheadは含まれない。
シフト回路20は、パケット抽出回路15が抽出した演算対象パケットを、シフト段数演算回路14から入力されるシフト段数情報を使用して、演算対象パケットの最終ビットがパラレル信号のLSBに一致するようにシフトした演算対象パケットを生成する。シフト回路20は、シフトした演算対象パケットを、「0」にリセットされたフリップフロップに記憶することにより、矢印93で示される信号列であるシフトデータを生成する。矢印93で示される信号列であるシフトデータに含まれる演算対象パケットは、最終ビットが第5パラレル信号のLSBに位置する。また演算対象パケットの先頭に位置する宛先アドレスDAは第2パラレル信号のLSB側に位置する。シフト回路20は、演算対象パケットの先頭のビットが位置する第2パラレル信号P2のMSB側を全て「0」にする。
シフト回路20は、演算対象パケットのビット長が256ビットの整数倍と一致しないときに、演算対象パケットの最終ビットが最下位ビットに一致するように演算対象パケットをシフトする。また、シフト回路20は、シフトされた演算対象パケットの最上位ビットの上位側に「0」を付加してビット長が256ビットの整数倍であるシフトデータを生成する。
EoR回路30は、シフト回路20から入力される256ビットのパラレル信号を、式(1)に示すCRC32生成多項式に基づいて演算してCRC符号を生成するパラレルCRC32演算EoR回路を有する。例えば、矢印93で示されるシフトデータを演算してCRC符号を生成する。CRC符号を生成する演算は、データを生成多項式で除算した剰余がCRC符号となる計算式で表すことができる。すなわち、データをF(x)、生成多項式をG(x)、割り算した商をQ(x)、剰余であるCRC符号をR(x)とすると、
F(x)/G(x) = Q(x) + R(x) (2)
で示される。
図10(a)は演算する演算対象パケットの一例を示す図であり、図10(b)は演算する演算対象パケットの他の例を示す図であり、図10(c)は図10(b)に示す演算対象パケットをシフトした例を示す図である。
EoR回路30は、図10(a)に示すようにビット長が256ビットであるパケットを演算する場合は、EoR回路30の演算範囲Aと演算対象パケットaの範囲とが一致しており、パケットをシフトすることなくCRCを生成することが可能である。しかしながら、図10(b)に示すように256ビットよりもパケットを演算する場合は、EoR回路30がパケットをシフトしないと、誤ったCRC符号が生成されるおそれがある。
図10(b)に示す演算対象パケットbは、最終ビットがCRC符号演算回路の演算範囲のLSBに一致しておらず、nビットシフトしている。また、図10(b)に示す演算対象パケットbの先頭のビットのMSB側には、mビットのデータdが位置する。このため、図10(b)に示す例では、EoR回路30の演算範囲Aは、
A = b × 2n + d (3)
となり、EoR回路30は、演算対象パケットbと相違するデータを演算して、演算対象パケットbを演算したときと相違するCRC符号を生成する。式(3)を変形して得られる式(4)の処理を実施することにより、EoR回路30は、図10(b)に示す例に示される演算対象パケットbから誤りなくCRC符号を生成できる。
b = (A − d)/2n (4)
EoR回路30は、演算対象パケットbを2nで除算し且つ演算対象パケットbの先頭のビットのMSB側に位置するmビットのデータdをEoR回路30の演算範囲Aから減算したパケットを演算して、誤りなくCRC符号を生成できる。言い換えると、EoR回路30は、演算対象パケットbをLSB側にnビットシフトし且つシフトされた演算対象パケットbの先頭のビットのMSB側を「0」にした256ビットのシフトデータを演算してCRC符号を生成する。これにより、図10(c)に示すように、演算対象パケットbの最終のビットをEoR回路30の演算範囲AのLSBに位置させ且つ演算対象パケットbの先頭のビットのMSB側を「0」にしたものをEoR回路30の演算範囲Aにする。EoR回路30は、図10(c)に示すように演算範囲Aを規定することにより、演算対象パケットbを誤りなくCRC符号を生成することが可能になる。
なお、図10(a)及び10(b)で示す演算対象パケットのビット長は一例であり、一塊の演算対象パケットのビット長は、256ビットよりも長くてもよく、256ビットよりも短くてもよい。演算対象パケットのビット長が256ビットよりも長いとき、演算対象パケットのビット長が256ビットよりも長い場合は、図9に示すように、演算対象パケットのビット長が256ビットよりも短い場合と同様に、演算対象パケットの最終ビットがパラレル信号のLSBに一致するようにシフトされる。
レジスタ40は、32ビットの並列接続されたフリップフロップを有するパラレルCRC32演算結果記憶回路41を有する。パラレルCRC32演算結果記憶回路41は、パケットプリアンブル検出回路12からパケット先頭情報が入力されると、全てのフリップフロップを「0」にリセットする。パラレルCRC32演算結果記憶回路41は、演算により生成されたCRC符号がEoR回路30から入力されると、入力されたCRC符号を32ビットの並列接続されたフリップフロップに記憶する。
図11はCRC符号演算回路1がCRC符号を生成する処理を示すフローチャートである。
まず、シリアル―パラレル変換された主信号フレームがCRC符号演算回路1に入力される(S101)。オーバヘッド位置検出回路11は、CRC符号を演算中でないと判断する(S102)と、主信号フレームのオーバヘッドの位置を検出し、信号フレームオーバヘッド位置情報を生成する(S103)。次いで、パケットプリアンブル検出回路12はプリアンブルの位置を検出し(S104)パケット先頭情報を生成し、パケットレングス値抽出回路13はパケットレングス値を抽出する(S105)。シフト段数演算回路14は、信号フレームオーバヘッド位置情報、パケット先頭情報及びパケットレングス値からパケットをLSB側にシフトする段数を演算する(S106)。パケット抽出回路15は、信号フレームオーバヘッド位置情報、パケット先頭情報及びパケットレングス値に基づいて、主信号フレームに含まれるパケットを抽出する(S107)。オーバヘッド位置検出回路11がCRC符号を演算中であると判断する(S102)と、S103〜S106の処理は省略される。
シフト回路20は、抽出回路10から入力されたパケットの先頭のビットが入力されたと判定する(S108)と、シフト段数を更新する(S109)。次いで、シフト回路20は、全てのフリップフロップを「0」にリセットした後に、シフト段数情報に基づいてパケットのLSBがフリップフロップのLSBに一致するようにパケットをシフトして整列させてシフトデータを生成する(S110)。シフト回路20は、シフトしたパケットをMSB側に「0」が付加されたシフトデータを出力する。シフト回路20は、抽出回路10から入力されたパケットの先頭のビットが入力されていないと判定する(S108)と、記憶されたパケットをMSB側から256ビットずつ出力する。
EoR回路30は、CRC32生成多項式に基づいて演算してCRC符号を生成する(S112)。
レジスタ40は、パケットの先頭のビットを含むデータが演算されると判定する(S113)と、32ビットの「0」を初期値として設定する(S114)。以降、レジスタはパケットの最終のビットが演算されたと判定する(S116)まで、EoR回路30の演算結果を順次記憶する(S115)。レジスタ40は、レジスタはパケットの最終のビットが演算されたと判定する(S116)と、記憶された32ビットのデータをCRC符号として出力する(S117)。
(第1実施形態に係るCRC符号演算回路の作用効果)
第1実施形態に係るCRC符号演算回路は、FPGA及び特定用途向けIC(application specific integrated circuit、ASIC)等の半導体装置において、可変長のパケットを主信号フレームでカプセル化している場合等で使用される。第1実施形態に係るCRC符号演算回路は、演算対象パケットからCRC符号を生成する演算のためのCRC符号演算回路の回路規模を小さくすることを可能とする。
表1は、第1実施形態に係るCRC符号演算回路と、従来のCRC符号演算回路との回路規模を比較した表である。
従来CRC符号演算回路では、1Gbps伝送 (62.5MHz x16パラレル)や10Gbps伝送 (156.25MHz x64パラレル、312.5MHz x32パラレル)など、ビット幅が大きくなることはなかった。このため、CRC符号演算回路940のように、可変のパケットのビット長に合せてEoR回路を配置した場合でも回路規模の増加は大きくはなかった。しかしながら、近年の100Gbps伝送など高速大容量化したパケットからCRC符号を生成する場合、ビット幅も512ビット、又は256ビット等と大きくなる。このため、CRC符号演算回路940のように、可変のパケットのビット長に合せてEoR回路を配置した場合に、回路規模が増大する。一方、第1実施形態に係るCRC符号演算回路では、1つのEoR回路でCRC符号を生成できるため、回路規模を小さくすることができる。
第1実施形態に係るCRC符号演算回路は、シフト回路が演算対象パケットをLSB側にシフトした後に、EoR回路がシフトされた演算対象パケットからCRC符号を生成している。このため、第1実施形態に係るCRC符号演算回路は、図9に示すパケットのように1つのパケットが複数のパラレル信号に分割させる場合でも、1度のパケットシフトにより、誤りのないCRC符号が生成可能である。
(第2実施形態に係る半導体装置及びCRC符号演算回路の構成及び機能)
図12は、第1実施形態に係るCRC符号演算回路1の代わりに半導体装置101に搭載可能な第2実施形態に係るCRC符号演算回路の回路ブロック図である。
CRC符号演算回路2は、シフト回路20の代わりにシフト回路50が配置され且つレジスタ40の代わりにレジスタ60が配置されることがCRC符号演算回路1と相違する。また、CRC符号演算回路2は、初期値設定回路70が配置されることが、CRC符号演算回路1と更に相違する。シフト回路50、レジスタ60及び初期値設定回路70以外のCRC符号演算回路2の構成は、CRC符号演算回路1と同様なので、ここでは詳細な説明は省略する。
図13は、CRC符号演算回路2のより詳細な回路ブロック図である。
シフト回路50は、256ビットの並列接続された複数段のフリップフロップを有するLSBシフト整列回路51を有する。LSBシフト整列回路51は、パケットプリアンブル検出回路12からFF初期値指示が入力されると、初期値設定回路70から入力されるFF初期値パターンに応じたシフト回路初期値をフリップフロップに設定する。LSBシフト整列回路51は、FF初期値指示が入力されたとき以外の動作は、シフト回路20と同様なので、ここでは詳細な説明は省略する。
レジスタ60は、32ビットの並列接続されたフリップフロップを有するパラレルCRC32演算結果記憶回路61を有する。パラレルCRC32演算結果記憶回路61は、パケットプリアンブル検出回路12からFF初期値指示が入力されると、初期値設定回路70から入力されるFF初期値パターンに応じたレジスタ初期値をフリップフロップに設定する。パラレルCRC32演算結果記憶回路61は、FF初期値指示が入力されたとき以外の動作は、パラレルCRC32演算結果記憶回路41と同様なので、ここでは詳細な説明は省略する。
初期値設定回路70は、初期値テーブル71を有する。初期値設定回路70は、シフト段数演算回路14からシフト段数情報が入力される。初期値設定回路70は、シフト段数情報が入力されると、入力されたシフト段数情報に応じたシフト回路初期値及びレジスタ初期値を初期値テーブルから選択する。次いで、初期値設定回路70は、選択されたシフト回路初期値をシフト回路50に出力すると共に、選択されたレジスタ初期値をレジスタ60に出力する。
表2は、初期値が全て「0」で演算されたCRC符号がFCSに埋め込まれたパケットを演算する場合の初期値テーブル71を示す表である。表3は、初期値が全て「1」で演算されたCRC符号がFCSに埋め込まれたパケットを演算する場合の初期値テーブル71を示す表である。
表2及び3において、CRC初期値は、CRC符号を生成する演算で使用する初期値であり、レジスタ初期値はレジスタ60に出力される初期値であり、シフト回路初期値はシフト回路50に出力される初期値である。レジスタ初期値及びシフト回路初期値は16進法で記載される。
初期値が全て「0」で演算されたパケットの場合、初期値設定回路70は、シフト段数演算回路14から入力されるシフト段数情報にかかわらず、レジスタ初期値に全て「0」の32ビットを選択し、シフト回路初期値に全て「0」の256ビットを選択する。
初期値が全て「1」で演算されたパケットの場合、初期値設定回路70は、シフト段数演算回路14から入力されるシフト段数情報に応じたレジスタ初期値及びシフト回路初期値を選択する。レジスタ初期値及びシフト回路初期値は、EoR回路30がレジスタ初期値を使用してシフトデータから生成したCRC符号が、32ビットのビット長の「1」である初期値を使用して演算対象パケットから生成されるCRC符号と同一になるように規定される。シフト段数情報が1バイトのシフトを示すとき、初期値設定回路70は、レジスタ初期値に16進法「FFF1_A90F」を選択し、演算対象パケットの先頭のビットの1バイトMSB側のシフト回路初期値に16進法「64」を選択する。シフト段数情報が2バイトのシフトを示すとき、初期値設定回路70は、レジスタ初期値に16進法「FFDD_3859」を選択し、演算対象パケットの先頭のビットの1バイト及び2バイトMSB側のシフト回路初期値に16進法「64」及び「F6」を選択する。シフト段数情報が3バイトのシフトを示すとき、初期値設定回路70は、レジスタ初期値に16進法「FF92_10C5」を選択する。また、初期値設定回路70は、演算対象パケットの先頭のビットの1バイト〜3バイトMSB側のシフト回路初期値のそれぞれに16進法「64」、「F6」及び「7E」を選択する。シフト段数情報が4バイトのシフトを示すとき、初期値設定回路70は、レジスタ初期値に16進法「0000_0000」を選択する。また、初期値設定回路70は、演算対象パケットの先頭のビットの1バイト〜4バイトMSB側のシフト回路初期値のそれぞれに16進法「49」、「64」、「AF」及び「46」を選択する。シフト段数情報が5バイト以上のシフトを示すとき、初期値設定回路70は、レジスタ初期値に16進法「0000_0000」を選択する。また、初期値設定回路70は、演算対象パケットの先頭のビットの1バイト〜4バイトMSB側のシフト回路初期値のそれぞれに16進法「49」、「64」、「AF」及び「46」を選択し、5バイト以上のMSBシフト量に応じて「00」を付加した値を選択する。
図14は、初期値が全て「1」で演算されたパケットがシフト回路50で3バイトシフトされた場合に生成されるシフトデータを示す図である。
信号列94の第2パラレル信号P2のMSBから3バイト下位のビットから第2パラレル信号P2のMSBまでシフト回路初期値が配置される。第2パラレル信号P2のMSB側から順に16進法で「7E」、「F6」及び「64」が配置される。
(第2実施形態に係るCRC符号演算回路の作用効果)
第2実施形態に係るCRC符号演算回路は、初期値テーブルに記憶されたシフト回路初期値及びレジスタ初期値を使用してCRC符号を生成できるので、全てが「1」である初期値を使用して生成されたCRC符号に対応するCRC符号が演算可能である。全てが「0」である初期値を使用してCRC符号を生成すると、式(2)を使用して演算したCRC符号が「0」になり、生成されたCRC符号が正しいか否かの判断が容易でない場合がある。第2実施形態に係るCRC符号演算回路は、全てが「1」である初期値を使用して生成されたCRC符号に対応するCRC符号が演算可能であるので、生成されたCRC符号が正しいか否かの判断が容易であるCRC符号を生成可能である。
また、第2実施形態に係るCRC符号演算回路は、シフト回路初期値及びレジスタ初期値は所望の値に設定可能なので、全てが「0」又は「1」以外の初期値を使用して生成されたCRC符号に対応するCRC符号が演算可能である。
(実施形態に係るCRC符号演算回路の変形例)
第1実施形態及び第2実施形態に係るCRC符号演算回路ではEoR回路30はCRC32を演算したが、実施形態に係るCRC符号演算回路では、FCSに埋め込まれたCRC符号に応じてCRC16等の他の演算でCRC符号を生成してもよい。また、実施形態に係るCRC符号演算回路が搭載される半導体装置101の一例は、FPGAであるが、実施形態に係るCRC符号演算回路は、ASIC等の他の半導体装置に搭載されてもよい。
1、2 CRC符号演算回路
10 抽出回路
11 オーバヘッド位置検出回路
12 パケットプリアンブル検出回路
13 パケットレングス値抽出回路
14 シフト段数演算回路
15 パケット抽出回路
20、50 シフト回路
30 EoR回路(演算回路)
40、60 レジスタ
70 初期値設定回路
71 初期値テーブル
101 半導体装置
111、112 通信回路
113、114 CRC回路

Claims (5)

  1. 第1ビット長のパラレル信号として入力される信号フレームから、CRC演算の対象となる演算対象パケットを抽出する抽出回路と、
    前記演算対象パケットのビット長が前記第1ビット長の整数倍と一致しないときに、前記演算対象パケットの最終のビットが最下位ビットに位置するように前記演算対象パケットをシフトし、シフトされた前記演算対象パケットの先頭のビットの最上位ビット側に「0」を付加してビット長が前記第1ビット長の整数倍であるデータAを生成するシフト回路と、
    レジスタと、
    前記レジスタに記憶される初期値「0」を元に、前記データAをCRC演算してCRC符号を生成する演算回路と、を有し、
    前記レジスタは、前記演算回路が前記CRC符号を生成する前に前記初期値「0」を記憶し、前記演算回路が前記CRC符号を生成した後に前記CRC符号を記憶し、
    前記抽出回路は、前記信号フレームのオーバヘッドの位置を示す信号フレームオーバヘッド位置情報、前記演算対象パケットのパケット長を示すパケットレングス情報及び前記信号フレームにおける前記演算対象パケットの先頭のビットの位置を示す先頭位置情報を使用して前記演算対象パケットをシフトするシフト量を決定するシフト量決定回路を有する、CRC符号演算回路。
  2. 第1ビット長のパラレル信号として入力される信号フレームから、演算の対象となる演算対象パケットを抽出する抽出回路と、
    前記演算対象パケットのビット長が前記第1ビット長の整数倍と一致しないときに、前記演算対象パケットの最終のビットが最下位ビットに位置するように前記演算対象パケットをシフトし、シフトされた前記演算対象パケットの先頭のビットの最上位ビット側にシフト回路初期値を付加してビット長が前記第1ビット長の整数倍であるデータAを生成するシフト回路と、
    レジスタと、
    前記レジスタが記憶するレジスタ初期値を元に、前記データAをCRC演算してCRC符号を生成する演算回路と、
    前記レジスタ初期値と、前記シフト回路初期値と記憶する初期値設定回路と、を有し、
    前記レジスタは、前記演算回路が前記CRC符号を生成する前に前記レジスタ初期値を記憶し、前記演算回路が前記CRC符号を生成した後に前記CRC符号を記憶し、
    前記レジスタ初期値及び前記シフト回路初期値は、前記演算回路が前記レジスタ初期値を使用してシフトデータから生成したCRC符号が、CRC初期値を元に、前記演算対象パケットをCRC演算して生成されるCRC符号と同一になるように規定され、
    前記CRC初期値は、前記CRC符号を生成する演算で使用する初期値であり、
    前記レジスタ初期値は、第2ビット長のデータであり、
    前記CRC初期値は、全てが「1」である第2ビット長のデータであり、
    前記抽出回路は、前記信号フレームのオーバヘッドの位置を示す信号フレームオーバヘッド位置情報、前記演算対象パケットのパケット長を示すパケットレングス情報及び前記信号フレームにおける前記演算対象パケットの先頭のビットの位置を示す先頭位置情報を使用して前記演算対象パケットをシフトするシフト量を決定するシフト量決定回路を有する、CRC符号演算回路。
  3. 前記抽出回路は、前記信号フレームオーバヘッド位置情報、前記パケットレングス情報及び前記先頭位置情報を使用して前記信号フレームから前記演算対象パケットを抽出するパケット抽出回路を更に有する、請求項1または2に記載のCRC符号演算回路。
  4. シリアル伝送された信号フレームを第1ビット長のパラレル信号に変換する通信回路と、
    パラレル信号に変換された前記信号フレームが前記通信回路から入力され、
    入力された前記信号フレームから、CRC演算の対象となる演算対象パケットを抽出する抽出回路と、
    前記演算対象パケットのビット長が前記第1ビット長の整数倍と一致しないときに、前記演算対象パケットの最終のビットが最下位ビットに位置するように前記演算対象パケットをシフトし、シフトされた前記演算対象パケットの先頭のビットの最上位ビット側に「0」を付加してビット長が前記第1ビット長の整数倍であるデータAを生成するシフト回路と、
    レジスタと、
    前記レジスタが記憶する初期値「0」を元に、前記データAをCRC演算してCRC符号を生成する演算回路と、を有し、
    前記レジスタは、前記演算回路が前記CRC符号を生成する前に前記初期値「0」を記憶し、前記演算回路が前記CRC符号を生成した後に前記CRC符号を記憶し、
    前記抽出回路は、前記信号フレームのオーバヘッドの位置を示す信号フレームオーバヘッド位置情報、前記演算対象パケットのパケット長を示すパケットレングス情報及び前記信号フレームにおける前記演算対象パケットの先頭のビットの位置を示す先頭位置情報を使用して前記演算対象パケットをシフトするシフト量を決定するシフト量決定回路を有する、CRC符号演算回路と、
    を有する半導体装置。
  5. 第1ビット長のパラレル信号として入力された信号フレームから、CRC演算の対象となる演算対象パケットを抽出し、
    前記演算対象パケットのビット長が前記第1ビット長の整数倍と一致しないときに、前記演算対象パケットの最終のビットが最下位ビットに位置するように前記演算対象パケットをシフトし、シフトされた前記演算対象パケットの先頭のビットの最上位ビット側に「0」を付加してビット長が前記第1ビット長の整数倍であるデータAを生成し、
    レジスタに記憶される初期値「0」を元に、前記データAを演算してCRC符号を生成し、
    前記信号フレームのオーバヘッドの位置を示す信号フレームオーバヘッド位置情報、前記演算対象パケットのパケット長を示すパケットレングス情報及び前記信号フレームにおける前記演算対象パケットの先頭のビットの位置を示す先頭位置情報を使用して前記演算対象パケットをシフトするシフト量を決定し、
    前記CRC符号を出力する、
    ことを有するCRC符号演算方法。
JP2015082592A 2015-04-14 2015-04-14 Crc符号演算回路、及びその方法並びに半導体装置 Expired - Fee Related JP6648412B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2015082592A JP6648412B2 (ja) 2015-04-14 2015-04-14 Crc符号演算回路、及びその方法並びに半導体装置
US15/071,804 US9748978B2 (en) 2015-04-14 2016-03-16 CRC code calculation circuit and method thereof, and semiconductor device

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015082592A JP6648412B2 (ja) 2015-04-14 2015-04-14 Crc符号演算回路、及びその方法並びに半導体装置

Publications (2)

Publication Number Publication Date
JP2016201770A JP2016201770A (ja) 2016-12-01
JP6648412B2 true JP6648412B2 (ja) 2020-02-14

Family

ID=57129888

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015082592A Expired - Fee Related JP6648412B2 (ja) 2015-04-14 2015-04-14 Crc符号演算回路、及びその方法並びに半導体装置

Country Status (2)

Country Link
US (1) US9748978B2 (ja)
JP (1) JP6648412B2 (ja)

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10503582B2 (en) * 2017-03-06 2019-12-10 Tttech Auto Ag Method and computer system for fault tolerant data integrity verification of safety-related data
CN109861788B (zh) * 2019-01-11 2021-12-10 中电海康集团有限公司 一种并行crc计算的实现方法及装置

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6192498B1 (en) * 1997-10-01 2001-02-20 Globepan, Inc. System and method for generating error checking data in a communications system
JP3512175B2 (ja) 2000-04-14 2004-03-29 松下電器産業株式会社 Crc演算装置、およびcrc演算方法
JP3297668B2 (ja) 2000-04-26 2002-07-02 松下電器産業株式会社 符号/復号化装置及び符号/復号化方法
JP3795743B2 (ja) * 2000-11-17 2006-07-12 株式会社エヌ・ティ・ティ・ドコモ データ伝送方法、データ伝送システム、送信装置および受信装置
JP3546959B2 (ja) * 2001-05-31 2004-07-28 日本電気株式会社 Crc演算装置
JP3554715B2 (ja) * 2001-07-31 2004-08-18 アンリツ株式会社 誤り検出装置
JP4831018B2 (ja) 2007-08-28 2011-12-07 日本電気株式会社 並列巡回符号生成装置および並列巡回符号検査装置
US8726124B2 (en) * 2012-07-19 2014-05-13 Nvidia Corporation Cyclic redundancy check generation via distributed time multiplexed linear feedback shift registers
US9680606B2 (en) * 2014-11-20 2017-06-13 Aviat U.S., Inc. Managing integrity of framed payloads using redundant signals

Also Published As

Publication number Publication date
US20160306692A1 (en) 2016-10-20
JP2016201770A (ja) 2016-12-01
US9748978B2 (en) 2017-08-29

Similar Documents

Publication Publication Date Title
JP6382569B2 (ja) 通信システム内での誤り検出の方法および装置
US8468439B2 (en) Speed-optimized computation of cyclic redundancy check codes
JP4764973B2 (ja) Crc値の算出装置
JP2013510514A5 (ja)
JP4831018B2 (ja) 並列巡回符号生成装置および並列巡回符号検査装置
JP6657690B2 (ja) 復号化装置、プログラム、及び情報伝送システム
JP6648412B2 (ja) Crc符号演算回路、及びその方法並びに半導体装置
KR101110625B1 (ko) 전송 데이터의 무결성 검사 방법 및 수단
JP2009094605A (ja) 符号誤り検出装置および誤り検出符号生成装置
Babaie et al. Double bits error correction using CRC method
KR20030036148A (ko) 복호장치 및 복호방법
US11804855B2 (en) Pipelined forward error correction for vector signaling code channel
US7024615B2 (en) Arithmetic operation method for cyclic redundancy check and arithmetic operation circuit for cyclic redundancy check
JP3554715B2 (ja) 誤り検出装置
JP2011211353A (ja) Crc演算回路
KR102353983B1 (ko) 순환 중복 검사(crc)에서 알고리즘의 배열 방법
JP4057876B2 (ja) ガロア体掛け算器の制御方法
RU2284085C1 (ru) Способ декодирования циклического помехоустойчивого кода
JP5724877B2 (ja) パリティ制御システム及び方法、並びに通信システム及び方法
JP6412785B2 (ja) データ送信装置、データ受信装置、およびデータ通信システム
JP4747085B2 (ja) 誤り訂正符号回路
JP4708291B2 (ja) 通信システム
JP2017168917A (ja) シリアル通信装置
JP2016181756A (ja) 半導体装置及びデータの送受信方法
Navimipour et al. Double Bits Error Correction for ComputationalGrid with CRC

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180206

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190205

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190312

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190903

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190925

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20191230

R150 Certificate of patent or registration of utility model

Ref document number: 6648412

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees