JP4935787B2 - 巡回符号演算処理回路 - Google Patents

巡回符号演算処理回路 Download PDF

Info

Publication number
JP4935787B2
JP4935787B2 JP2008235124A JP2008235124A JP4935787B2 JP 4935787 B2 JP4935787 B2 JP 4935787B2 JP 2008235124 A JP2008235124 A JP 2008235124A JP 2008235124 A JP2008235124 A JP 2008235124A JP 4935787 B2 JP4935787 B2 JP 4935787B2
Authority
JP
Japan
Prior art keywords
bits
remainder
data block
unit
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
JP2008235124A
Other languages
English (en)
Other versions
JP2010068429A (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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP2008235124A priority Critical patent/JP4935787B2/ja
Priority to US12/557,269 priority patent/US8402353B2/en
Publication of JP2010068429A publication Critical patent/JP2010068429A/ja
Application granted granted Critical
Publication of JP4935787B2 publication Critical patent/JP4935787B2/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • H04L1/0052Realisations of complexity reduction techniques, e.g. pipelining or use of look-up tables
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0061Error detection codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Error Detection And Correction (AREA)

Description

本発明は、データの誤り検出処理に用いる巡回符号の生成演算及び検査演算を行う、巡回符号演算処理回路に関する。
近年、米国IEEE802委員会の40ギガビット・イーサネット(なお、「イーサネット」は、登録商標(第1702119号)である。)や100ギガビット・イーサネットをはじめとして、データ通信技術における、フレーム伝送速度の広帯域化が進んでいる。フレーム伝送処理のうち、電気信号で処理するものに、ユーザデータをフレーム化するフレーム生成処理、及び、フレームからユーザデータを取り出すフレーム受信処理がある。これらの電気信号処理は、シリアル処理では処理速度の限界があるため、広帯域化のためにはフレーム信号をパラレル展開して処理(以降、本願では、並列化と記す)することが必須である。
データ通信においては、フレームの誤り検出に、巡回符号が多く使用される。巡回符号の例に、巡回冗長検査(CRC;Cyclic Redundancy Check)符号がある。例えば、イーサネットでは、フレームのヘッダとユーザデータに対する誤り検出用に、そのCRC符号演算結果(以降、本願ではCRC値と称す。)から算出したFCS(Frame Check Sequence)値を用いる。
フレーム伝送の広帯域化のためには、フレームの誤り検出用の巡回符号の生成処理及び巡回符号に基づく誤り検出処理を高速に行う必要がある。そのため、パラレル展開幅M(以降、本願では並列ビット数M、もしくは、並列幅Mと称す。また、(Mは2以上の任意の正の整数)の並列化信号に対する巡回符号演算処理を行う技術が提案されている。
フレームの並列化では、処理を容易にするために、各フレームの先頭ビットを最上位ビット側に詰めた形で扱い、8B/10B変換や64B/66B変換などの伝送路符号化処理の直前に、フレーム間が所定の間隔(IFG:Inter Frame Gap)になるように変換する方法がある。このような、先頭ビットを最上位ビット側に詰めたフレームでも、入力フレーム長nビット(nは1以上の正の整数)が、並列ビット数Mの整数倍でない場合、入力フレームを並列ビット数Mビットで並列化すると、フレームの最後のワード列(以降、本願では最終ワードと称す)内に、Mビット幅未満の有効データビット(以降、本願では端数ビットと称す)が発生する場合がある。特に、近年のデータ通信で多く用いられるイーサネットのように、可変長フレームの伝送を行う場合には、端数ビットが生じる可能性が高い。この端数ビットを含む並列化フレームを、Mビット幅の並列巡回符号計算部で処理すると、端数ビット以外の無効なビットまでが巡回符号の演算範囲となり、正しい演算結果を得ることができない。これは巡回符号生成のみでなく、巡回符号に基づく誤り検出でも同様である。
この種の端数ビットを含む入力フレームに対する並列巡回符号演算処理回路の一つは、例えば、非特許文献1に開示されている。
図15に、この並列巡回符号演算処理回路の構成の一例を示す。これは、巡回符号にCRC符号を用いる例であり、Mビット幅(図15内でMは2のL乗。なお、Lは1以上の任意の正の整数)の入力フレームに対するCRC値を生成する並列CRC符号演算処理回路である。該並列CRC符号演算処理回路は、制御部1501と、入力幅2(L=logM)ビットのCRC計算部「2」1502と、入力幅2L−1ビットのCRC計算部「2L−1」1503と、入力幅2ビットのCRC計算部「2」1504と、入力幅2ビットのCRC計算部「2」1505と、データ選択部「2L−1」1506と、データ選択部「2」1507と、データ選択部「2」1508と、結果選択部「2L−1」1509と、結果選択部「2」1510と、結果選択部「2」1511とを備える。
制御部1501には、Mビット幅にパラレル展開され、フレーム先頭が並列ビットMの最上位ビット側に詰められた、k番目(kは1以上の任意の整数)のフレーム信号N(x)と、該フレームN(x)の先頭位置を示すSOF(Start of Frame)情報及び、該フレームN(x)の末尾を示す最終ワード有効情報H(k)が入力される。なお、H(k)は、H(k)>0のとき、フレームN(x)の最終ワードEOF(End of Frame)位置であることを示し、また、最終ワード内の有効データビット数を示す情報である。つまり、EOFの位置の場合、H(k)=1〜Mであり、H(k)=h(hは、1≦h<Mの任意の正の整数)の場合、最終ワードはhビットの端数ビットを含んでいることを示し、H(k)=Mならば、最終ワードは全てが有効データビットであることを示す。制御部1501は、前記入力信号から、「結果選択信号」及び「データ選択信号」を生成し、フレーム信号とともに出力する。具体的には、「結果選択信号」を結果選択部「2L−1」1509〜結果選択部「2」1511へ、「データ選択信号」をデータ選択部「2L−1」1506〜データ選択部「2」1508へ出力する。
データ選択部「2L−1」1506〜データ選択部「2」1508は、「データ選択信号」に従い、出力データ(J〜JL−1)を、CRC計算部「2L−1」1503〜CRC計算部「2」1505へそれぞれ出力する。なお、出力データ(J〜JL−1)のビット幅は、JはM/2,JはM/2, …,JL−2はM/2L−1,JL−1はM/2である。
CRC計算部「2」1502〜CRC計算部「2」1505は、制御部1501から出力されるMビット幅のフレーム信号N(x)、または、データ選択部「2L−1」1506〜データ選択部「2」1508から出力される(2L−1〜2)ビット幅のデータ(J〜JL−1)のCRC計算を行う。また、その結果を、結果選択部「2L−1」1509〜結果選択部「2」1511へ出力する。
結果選択部「2L−1」1509〜結果選択部「2」1511は、制御部1501からの「結果選択信号」に従い、CRC計算部「2」1502〜CRC計算部「2」1505より出力される信号(Q´〜Q´)を、選択し、所望のCRC値Qとして出力する。
次に、図16を参照しながら、上記並列CRC符号演算処理回路の作動について説明する。
図16(a)は、並列ビット数M=8、フレーム長n=29ビットの場合における、k番目の入力フレームN(x)の一例であり、最終ワード有効情報H(k)=5となる。18−1−1〜18−4−5がCRC符号演算対象となるデータであり、18−4−6〜18−4−8がCRC符号演算対象外の無効データである。また、M=8であることから、L=3(=Log8)である。
この場合、図15の各ブロックの数と信号は、L=3であることから次のようになる。制御部1501の出力信号「データ選択信号」は、s,s,s、「結果選択信号」は、m,m,mとなる。CRC計算部は、CRC計算部「2」1502、CRC計算部「2」1503、CRC計算部「2」1504、CRC計算部「2」1505の4つとなり、該CRC計算部の出力信号は、それぞれQ´、Q´、Q´、Q´となる。データ選択部は、データ選択部「2」1506、データ選択部「2」1507、データ選択部「2」1508の3つとなり、該データ選択部の出力信号は、それぞれJ、J、Jとなる。結果選択部は、結果選択部「2」1509、結果選択部「2」1510、結果選択部「2」1511の3つとなり、該結果選択部の出力信号は、それぞれQ、Q、Qとなる。
図15の制御部1501は、図16(a)の8ビット幅のフレームデータが入力されると、最終ワードの手前までのワード1〜3では、「データ選択信号」(m=‘0’,m=‘0’,m=‘0’)と「結果選択信号」(s=‘1’,s=‘1’,s=‘1’)を生成する。
CRC計算部「2」1502は、制御部1501から出力される8ビット幅フレーム信号のワード1〜3のCRC計算を行い、結果Q´を、該CRC計算部「2」1502の入力、CRC計算部「2」1503の入力及び、結果選択部「2」1509に出力する。結果選択部「2」1509は、制御部1501からの「結果選択信号」m=‘0’により、Q´を選択し、出力する。結果選択部「2」1510は、制御部1501からの「結果選択信号」m=‘0’により、Q(L=3であるのでQL−2=Q)を選択し、出力する。結果選択部「2」1511は、制御部1501からの「結果選択信号」m=‘0’により、Qを選択し、出力する。
次に、図15の制御部1501は、図16(a)の入力データのワード4が入力されると、「データ選択信号」(m=‘1’,m=‘0’,m=‘1’)と「結果選択信号」(s=‘1’,s=‘0’,s=‘1’)を生成する。
データ選択部「2」1506は、制御部1501からの「データ選択信号」s=‘1’により、ワード4の8ビット幅の入力データの内、上位4ビット(18−4−1〜18−4−4)をJとして、CRC計算部「2」1503へ出力する。また、ワード4の下位4ビット(18−4−5〜18−4−8)を、データ選択部「2」1507へ出力する。
なお、データ選択部「2」1506は、「データ選択信号」s=‘0’の場合、ワード4の8ビット幅の入力データの内、上位4ビット(18−4−1〜18−4−4)をJとして、CRC計算部「2」1503へ出力する。また、データ選択部「2」1506は、データ選択部「2」1507へもワード4の上位4ビット(18−4−1〜18−4−4)を、出力する。
CRC計算部「2」1503は、CRC計算部「2」1502のワード3での演算結果Q´と、Jと、からCRC計算を行い、その結果Q´を結果選択部「2」1509へ出力する。
結果選択部「2」1509は、制御部1501からの「結果選択信号」m=‘1’により、入力信号Q´をQとして、CRC計算部「2」1504と、結果選択部「2」1510と、へ出力する。
次に、データ選択部「2」1507は、ワード4の4ビット幅の入力データの内、上位2ビット(18−4−5〜18−4−6)をJとして、CRC計算部「2」1504へ出力する。また、データ選択部「2」1507は、制御部1501からの「データ選択信号」s=‘0’(L=3のためsL−2=s)により、ワード4の下位2ビット(18−4−7〜18−4−8)に代えて上位2ビット(18−4−5〜18−4−6)を、データ選択部「2」1508へ出力する。
なお、「データ選択信号」s=‘1’の場合、データ選択部「2」1507は、ワード4の4ビット幅の入力データの内、上位2ビット(18−4−5〜18−4−6)をJとして、CRC計算部「2」1504へ出力し、データ選択部「2」1508へワード4の下位2ビット(18−4−7〜18−4−8)を出力する。
CRC計算部「2」1504は、結果選択部「2」1509の出力Q(L=3なので、QL−2=Q)と、データ選択部「2」1507の出力Jと、からCRC計算を行い、その結果Q´を結果選択部「2」1510へ出力する。
結果選択部「2」1510は、制御部1501からの「結果選択信号」m=‘0’(L=3なので、mL−2=m)により、入力信号QをQとして、CRC計算部「2」1505と、結果選択部「2」1511と、へ出力する。
データ選択部「2」1508は、制御部1501からの「データ選択信号」s=‘1’(L=3のためsL−1=s)により、ワード4の2ビット幅の入力データの内、上位1ビット(18−4−5)をJとして、CRC計算部「2」1505へ出力する。(なお、s=‘0’の場合、ワード4の2ビット幅の入力データの内、下位1ビット(18−4−6)をJとして出力する。)
CRC計算部「2」1505は、結果選択部「2」1510の出力Qと、データ選択部「2」1508の出力Jと、からCRC計算を行い、その結果Q´を結果選択部「2」1511へ出力する。
結果選択部「2」1511は、制御部1501からの「結果選択信号」m=‘1’(L=3なので、mL−1=m)により、入力信号Q´を、CRC値Qとして出力する。
このように、上記並列CRC符号演算処理回路は、図16(b)に示したように、入力データのワード1〜3(18−1−1〜18−3−8)を8ビット幅入力のCRC計算部「2」1502で計算し、入力データのワード4の18−4−1〜18−4−4を4ビット幅入力のCRC計算部「2」1503で計算し、入力データのワード4の18−4−5を1ビット幅入力のCRC計算部「2」1505で計算することで、図16(a)の入力データのCRC符号演算対象18−1−1〜18−4−5の正しいCRC値を得る。
片下、外4名、「高速かつ軽量な可変データ長対応のCRC回路構成手法」、情報処理学会論文誌、情報処理学会、2007年7月、第48巻、第7号、pp.2382−2392 特開2002−359561号公報
しかしながら、上記非特許文献1に開示された並列CRC符号演算処理回路においては、入力フレームN(x)の最終ワード(ワード4)内の端数ビット(端数ビット長:H(k))を処理するために、L+1個(L=logM、Mは並列ビット数)のCRC計算部(図15のCRC計算部「2」1502〜CRC計算部「2」1505)が必要である。例えば、M=8であれば4個、M=64であれば7個、M=512であれば10個、のCRC計算部を備える必要がある。
従って、入力データの並列ビット数Mが大きくなるにつれて、必要となるCRC計算部1502〜1505、データ選択部1506〜1508、及び、結果選択部1509〜1511が増加する。この結果、回路規模が大きくなるという問題がある。更に、CRC計算部1502〜1505、データ選択部1506〜1508、及び、結果選択部1509〜1511は、縦続接続されるので、入力データの並列ビット数Mが大きくなるほど、縦続接続の段数が増え処理遅延が増加するという問題も生じる。
なお、既に前述しているが、前記非特許文献1に開示された並列CRC符号演算処理回路は、巡回符号にCRC符号を用いた並列巡回符号演算処理回路であり、並列CRC符号演算処理回路内CRC計算部は、巡回符号の計算をおこなう巡回符号計算部である。
このため、本発明の目的は、上述した課題である「入力データの並列幅が大きくなるにつれて回路規模が大きくなるとともに処理遅延が増加すること」を解決することが可能な並列巡回符号演算処理回路を提供することにある。
かかる目的を達成するため本発明の一形態である巡回符号演算処理回路は、
所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出する巡回符号演算処理回路である。
更に、この巡回符号演算処理回路は、
上記入力データを構成する複数のビットのうちの、上記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、上記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出手段と、
上記入力データのうちの、上記最終ワードに含まれるビットからなる最終ワード有効データブロックを上記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出手段と、
上記算出された整数倍データブロック剰余と、上記算出された最終ワード有効データブロック剰余と、に基づいて上記入力データ剰余を算出する入力データ剰余算出手段と、
を備える。
また、本発明の他の形態であるネットワーク・インタフェース・カードは、
所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出するネットワーク・インタフェース・カードである。
更に、このネットワーク・インタフェース・カードは、
上記入力データを構成する複数のビットのうちの、上記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、上記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出手段と、
上記入力データのうちの、上記最終ワードに含まれるビットからなる最終ワード有効データブロックを上記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出手段と、
上記算出された整数倍データブロック剰余と、上記算出された最終ワード有効データブロック剰余と、に基づいて上記入力データ剰余を算出する入力データ剰余算出手段と、
を備える。
また、本発明の他の形態である巡回符号演算方法は、
所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出する方法である。
更に、この巡回符号演算方法は、
上記入力データを構成する複数のビットのうちの、上記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、上記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出工程と、
上記入力データのうちの、上記最終ワードに含まれるビットからなる最終ワード有効データブロックを上記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出工程と、
上記算出された整数倍データブロック剰余と、上記算出された最終ワード有効データブロック剰余と、に基づいて上記入力データ剰余を算出する入力データ剰余算出工程と、
を含む。
本発明は、以上のように構成されることにより、入力データの並列幅が大きくなっても、回路規模が過大となることを防止するとともに処理遅延が過大となることを防止することができる。
本発明の一形態である巡回符号演算処理回路は、
所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出する巡回符号演算処理回路である。
更に、この巡回符号演算処理回路は、
上記入力データを構成する複数のビットのうちの、上記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、上記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出手段と、
上記入力データのうちの、上記最終ワードに含まれるビットからなる最終ワード有効データブロックを上記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出手段と、
上記算出された整数倍データブロック剰余と、上記算出された最終ワード有効データブロック剰余と、に基づいて上記入力データ剰余を算出する入力データ剰余算出手段と、
を備える。
これによれば、上記巡回符号演算処理回路は、最終ワード有効データブロック剰余と、整数倍データブロック剰余と、を独立に算出する。従って、巡回符号演算処理回路は、整数倍データブロックを構成するデータを、並列ビット数ずつ並列に処理することにより、適切に整数倍データブロック剰余を算出することができる。この結果、上記巡回符号演算処理回路は、入力データ剰余を低遅延で算出することができる。
また、上記巡回符号演算処理回路によれば、並列ビット数が異なる複数の巡回符号計算部を備えなくても、最終ワード有効データブロック剰余を適切に算出することができる。即ち、巡回符号演算処理回路の規模を小さくすることができる。さらに、上記巡回符号演算処理回路によれば、複数の巡回計算部を縦続接続しなくても良いため、入力データ剰余を低遅延で算出することができる。
この場合、
上記入力データ剰余算出手段は、
上記最終ワード有効データブロックを構成するビットの数を指数として有するべき乗の項のみを有する多項式を、上記生成多項式によって除算した剰余である上記剰余算出用係数と、上記整数倍データブロック剰余と、を乗算した乗算値と、上記最終ワード有効データブロック剰余と、を加算することにより上記入力データ剰余を算出するように構成されることが好適である。
この場合、
上記最終ワード有効データブロック剰余算出手段は、
上記並列ビット数のビットに対して処理を並列に行うことにより、上記最終ワード有効データブロックの末尾のビットが0を指数として有するべき乗の項に対応する一端に位置するように当該最終ワード有効データブロックを含み且つ当該最終ワード有効データブロックよりも他端側のすべてのビットが0に設定された上記並列ビット数のデータを上記生成多項式によって除算した剰余を上記最終ワード有効データブロック剰余として算出するように構成されることが好適である。
これによれば、並列ビット数のビットに対して並列に処理を行うことにより、適切に最終ワード有効データブロック剰余を算出することができる。従って、上記巡回符号演算処理回路は、入力データ剰余を低遅延で算出することができる。
この場合、
上記巡回符号演算処理回路は、
上記整数倍データブロック剰余算出手段及び上記最終ワード有効データブロック剰余算出手段は、制御信号生成手段と、シフト手段と、選択手段と、計算手段と、からなることが好適である。
ここで、上記制御信号生成手段は、
上記入力データを先頭から順に上記並列ビット数のビットからなるワード毎に出力するとともに、上記最終ワード有効データブロックを構成するデータを出力するときには出力するデータが当該最終ワード有効データブロックを構成する旨を表す最終ワード有効データ信号と、上記並列ビット数から当該最終ワード有効データブロックを構成するビットの数を減じた数を表すシフト情報と、を出力するように構成される。
更に、上記シフト手段は、
上記制御信号生成手段から出力されたデータを受け付けるとともに、当該制御信号生成手段から上記シフト情報が出力された場合に当該受け付けたデータを当該シフト情報が表す数のビットだけ上記一端側にシフトし且つそのシフトされたデータよりも他端側のすべてのビットを0に設定したデータを出力し、当該制御信号生成手段から当該シフト情報が出力されなかった場合に当該受け付けたデータを出力するように構成される。
加えて、上記選択手段は、
上記計算手段から前回の演算処理にて出力されたデータを受け付けるとともに、上記制御信号生成手段から上記最終ワード有効データ信号が出力された場合に上記生成多項式の次数と同数の0からなるデータを出力し、一方、当該制御信号生成手段から当該最終ワード有効データ信号が出力されなかった場合に上記受け付けたデータを出力するように構成される。
更に、上記計算手段は、
上記シフト手段から出力されたデータと、上記選択手段から出力されたデータと、に基づいて、上記並列ビット数のビットに対して演算処理を並列に行うことにより、その処理結果を表すデータを出力するように構成される。
これによれば、並列ビット数のビットに対して並列に処理を行う1つの巡回符号計算部を用いて、最終ワード有効データブロック剰余及び整数倍データブロック剰余の両方を算出することができる。この結果、回路の規模をより一層小さくすることができる。
この場合、
上記巡回符号演算処理回路は、
誤り検出処理を行うためのFCS値として上記入力データ剰余を上記入力データに付加する回路に適用されることが好適である。
この場合、
上記巡回符号演算処理回路は、
上記入力データ剰余に基づいて上記入力データの誤り検出処理を行う回路に適用されることが好適である。
この場合、
上記巡回符号演算処理回路は、
CRCを用いてデータの誤り検出処理を行うために上記入力データ剰余を使用する回路に適用されることが好適である。
また、本発明の他の形態であるネットワーク・インタフェース・カードは、
所定の並列ビット数のビットに対して処理を並列に行うことによって、複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出するように構成される。
また、本発明の他の形態であるネットワーク・インタフェース・カードは、
所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出するネットワーク・インタフェース・カードである。
更に、このネットワーク・インタフェース・カードは、
上記入力データを構成する複数のビットのうちの、上記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、上記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出手段と、
上記入力データのうちの、上記最終ワードに含まれるビットからなる最終ワード有効データブロックを上記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出手段と、
上記算出された整数倍データブロック剰余と、上記算出された最終ワード有効データブロック剰余と、に基づいて上記入力データ剰余を算出する入力データ剰余算出手段と、
を備える。
この場合、
上記入力データ剰余算出手段は、
上記最終ワード有効データブロックを構成するビットの数を指数として有するべき乗の項のみを有する多項式を、上記生成多項式によって除算した剰余である上記剰余算出用係数と、上記整数倍データブロック剰余と、を乗算した乗算値と、上記最終ワード有効データブロック剰余と、を加算することにより上記入力データ剰余を算出するように構成される。
この場合、
上記最終ワード有効データブロック剰余算出手段は、
上記並列ビット数のビットに対して処理を並列に行うことにより、上記最終ワード有効データブロックの末尾のビットが0を指数として有するべき乗の項に対応する一端に位置するように当該最終ワード有効データブロックを含み且つ当該最終ワード有効データブロックよりも他端側のすべてのビットが0に設定された上記並列ビット数のデータを上記生成多項式によって除算した剰余を上記最終ワード有効データブロック剰余として算出するように構成されることが好適である。
また、本発明の他の形態である巡回符号演算方法は、
所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出する方法である。
更に、この巡回符号演算方法は、
上記入力データを構成する複数のビットのうちの、上記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、上記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出工程と、
上記入力データのうちの、上記最終ワードに含まれるビットからなる最終ワード有効データブロックを上記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出工程と、
上記算出された整数倍データブロック剰余と、上記算出された最終ワード有効データブロック剰余と、に基づいて上記入力データ剰余を算出する入力データ剰余算出工程と、
を含む。
この場合、
上記入力データ剰余算出工程は、
上記最終ワード有効データブロックを構成するビットの数を指数として有するべき乗の項のみを有する多項式を、上記生成多項式によって除算した剰余である上記剰余算出用係数と、上記整数倍データブロック剰余と、を乗算した乗算値と、上記最終ワード有効データブロック剰余と、を加算することにより上記入力データ剰余を算出するように構成されることが好適である。
この場合、
上記最終ワード有効データブロック剰余算出工程は、
上記並列ビット数のビットに対して処理を並列に行うことにより、上記最終ワード有効データブロックの末尾のビットが0を指数として有するべき乗の項に対応する一端に位置するように当該最終ワード有効データブロックを含み且つ当該最終ワード有効データブロックよりも他端側のすべてのビットが0に設定された上記並列ビット数のデータを上記生成多項式によって除算した剰余を上記最終ワード有効データブロック剰余として算出するように構成されることが好適である。
上述した構成を有する、ネットワーク・インタフェース・カード、又は、巡回符号演算方法、の発明であっても、上記巡回符号演算処理回路と同様の作用を有するために、上述した本発明の目的を達成することができる。
以下、本発明に係る、巡回符号演算処理回路、ネットワーク・インタフェース・カード、及び、巡回符号演算処理方法、の各実施形態について図1〜図14を参照しながら説明する。
なお、以降、本発明における各実施形態は、説明上前記非特許文献1と同様に巡回符号としてCRC符号を使用するが、これは、本発明をCRC符号のみに限定するものは無く、CRC符号以外の他の巡回符号であっても良い。
<基礎式の導出>
先ず、本発明の基礎となる式(基礎式)の導出について説明する。
連続する複数(ここでは、n)のビットからなる入力フレーム(入力データ)N(x)のCRC値を求める場合、CRC符号演算対象であるN(x)は、整数倍データブロックA(x)と、最終ワード有効データブロックB(x)と、を用いて下記式(1)のように表すことができる。ここで、xは多項式の変数である。また、入力フレームは、その入力フレームを構成する各ビットを係数とする多項式N(x)により表現される。同様に、整数倍データブロックA(x)、最終ワード有効データブロックB(x)及び後述する他のデータも、そのデータの各ビットを係数とする多項式により表現される。
また、整数倍データブロックA(x)は、入力フレームN(x)を構成する複数のビットのうちの、並列ビット数Mのビットからなるワード毎にその複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなるデータである。更に、最終ワード有効データブロックB(x)は、入力フレームN(x)のうちの上記最終ワードに含まれるビット(即ち、入力フレームN(x)のうちの整数倍データブロックA(x)以外のビット)からなるデータである。従って、最終ワード有効データブロックB(x)を構成するビットのビット数H(k)は、1〜Mの値をとる。なお、H(k)≠Mの場合、最終ワードは、端数ビット(1〜M−1個のビット)を含んでいることを示し、H(k)=Mならば、最終ワードは端数ビットではなく、該ワードの全てが有効データビットであることを示す。
(x)=A(x)・xH(k)+B(x) …(1)
なお、本明細書において、数式内の「+」はモジュロ(modulo)2演算における加算(排他的論理和)を示し、「mod」は、モジュロ2演算における除算の剰余を示す。また、H(k)はk番目の入力フレーム(kは任意の正の整数)の最終ワード有効データブロックB(x)の長さ(最終ワード有効データブロックB(x)を構成するビットの数(最終ワード有効ビット数))を示し、G(x)は生成多項式を示し、dはG(x)の次数を示す。
次に、整数倍データブロックA(x)のCRC値(整数倍データブロック剰余)をRa(x)とすると、Ra(x)は、下記式(2)のように表すことができる。
Ra(x)=[A(x)・x] mod G(x) …(2)
入力フレームN(x)のCRC値(入力データ剰余)をR(x)とすると、R(x)は、式(3)により表すことができる。
R(x)=[N(x)・x] mod G(x) …(3)
ここで、式(1)及び式(3)から、下記式(4)が得られる。
R(x)={[A(x)・x・xH(k)]+[B(x)・x]} mod G(x)
…(4)
更に、式(4)は、式(2)から下記式(5)のように表すことができる。
R(x)={[Ra(x)・xH(k)]+[B(x)・x]} mod G(x)
…(5)
更に、式(5)は、下記式(6)のように表すことができる。
R(x)={Ra(x)・[xH(k)] mod G(x)}
+{[B(x)・x] mod G(x)} …(6)
ここで、式(6)の[xH(k)] mod G(x)は、予め計算することが可能であることから、以下のように表すことができる。即ち、剰余算出用係数βH(k)(x)は、最終ワード有効データブロックB(x)を構成するビットの数H(k)を指数として有するべき乗の項のみを有する多項式(即ち、xH(k))を、生成多項式G(x)によって除算した剰余である。
[xH(k)] mod G(x)βH(k)(x)= …(7)
式(7)を式(6)に代入し、且つ、[B(x)・x] mod G(x)=Rb(x)と置き換えると、下記式(8)が得られる。
R(x)={Ra(x)・βH(k)(x)}+Rb(x) …(8)
式(8)の{Ra(x)・βH(k)(x)}は、ガロア体上の乗算であることから、以下のようになる。
R(x)={[Ra(x)・βH(k)(x)] mod G(x)}+Rb(x)
…(9)
式(9)から、下記の手順(1)〜(6)によりN(x)のCRC値R(x)を求めることができることが分かる。
(1)並列ビット数Mのビットに対して処理を並列に行う、Mビット入力のCRC計算回路により整数倍データブロック剰余Ra(x)を算出する
(2)剰余算出用係数βH(k)(x)を最終ワード有効ビット数H(k)に基づいて算出する
(3)最終ワード有効ビット数H(k)のビットからなるB(x)をp(p=M−H(k))ビットだけ最下位ビット側にシフトする
(4)(3)にてシフトしたデータに基づいて、Mビット入力のCRC計算回路により最終ワード有効データブロック剰余Rb(x)を算出する
(5)Ra(x)とβH(k)(x)との乗算(ガロア体上の乗算)を行う
(6)(5)にて乗算した結果と、Rb(x)と、の加算(ガロア体上の加算:排他的論理和)を行うことにより、N(x)のCRC値(入力データ剰余)R(x)を求める
従って、並列ビット数M以外のビット数の入力のCRC計算回路を用いることなく、N(x)のCRC値R(x)を求めることができる。即ち、入力データの並列幅が大きくなっても、回路規模が過大となることを防止するとともに処理遅延が過大となることを防止することができる。
次に、誤り検出用のCRC符号演算処理に係る基礎式の導出について説明する。
入力フレームN´(x)内に含まれる誤りを検出する場合、CRC符号演算対象範囲を、N´(x)の先頭から、最後尾までとすることで、演算結果よりN´(x)内の誤りを検出することが出来る。
これは、N´(x)= N(x)・xd+R(x)であり、CRC値R(x)は、N(x)を生成多項式G(x)で除算した際の剰余であるため、N´(x)は、生成多項式G(x)の倍数となる。つまり、N´(x)をG(x)で除算した際の剰余は、必ず‘0’になり、剰余が‘0’以外の場合、N´(x)内に誤りがあることになる。
前述を式で表すと、下記式(10)〜(12)のようになる。なお、また、A(x)は、N´(x)の並列幅Mビットの整数倍データブロックであり、B(x)は、N´(x)の最終ワード有効データブロックである。

´(x)=A(x)・xH(k)+B(x) …(10)
Ra(x)=[A(x)] mod G(x) …(11)
C(x)=[N´(x)] mod G(x) …(12)
更に、式(10)〜(12)は、式(13)のように表すことができる。
C(x)={Ra(x)・[xH(k)] mod G(x)}
+{[B(x)] mod G(x)} …(13)
ここで、式(13)の[B(x)] mod G(x)=Rb(x)とし、且つ、[xH(k)] mod G(x)を式(7)で置き換えると、下記式(14)のように表すことができる。
C(x)={Ra(x)・βH(k)(x)}+Rb(x) …(14)
なお、式(14)の{Ra(x)・βH(k)(x)}はガロア体上の乗算であることから、式(14)は式(15)のようになる。
C(x)={[Ra(x)・βH(k)(x)] mod G(x)}+Rb(x)
…(15)
式(15)のC(x)は、入力フレームN´(x)のCRC値であり、値がC(x)=‘0’の場合、該入力フレームN´(x)に誤りがないといえる。また、式(15)から、式(9)に基づく手順と同様の手順により、入力フレームN´(x)の誤り検出処理を行うことができる。
従って、並列ビット数M以外のビット数の入力のCRC計算回路を用いることなく、入力フレームN´(x)の誤り検出処理を行うことができる。即ち、入力データの並列幅が大きくなっても、回路規模が過大となることを防止するとともに処理遅延が過大となることを防止することができる。なお、イーサネットをはじめとする各通信においては、フレームの誤り検出処理用にはCRC値をそのまま使用するのではなく、CRC値から算出したFCS値を使用することが多い。
<第1実施形態>
(構成)
次に、本発明の第1実施形態について、図1及び図2を参照しながら、詳細に説明する。図1は、本発明の第1実施形態に係るネットワーク・インタフェース・カード(NIC;Network Interface Card)28の送信機能の構成を示すブロック図である。ネットワーク・インタフェース・カード28は、図示しないサーバ装置又はコンピュータ装置に搭載され、フレームを送受信する処理を行うカードである。
ネットワーク・インタフェース・カード28は、バス終端部21と、ヘッダ付与部22と、並列CRC符号演算処理部23と、FCS付与部24と、PCS(Physical Coding Sublayer)部25と、送信器26と、を含む。
ネットワーク・インタフェース・カード28は、サーバ接続バスにより、サーバ内のCPUバスとバス終端部21とが接続されている。また、送信器26は、フレームを外部へ送信するための伝送路(図1の右端)に接続されている。ネットワーク・インタフェース・カード28は、サーバから入力されるフレーム(入力フレーム、入力データ)に対して、フレームヘッダと、FCS値と、を付与し、伝送路へ送信する。
バス終端部21は、サーバ側から送られてくるフレームを受信する。このフレームは、Mビット幅のフレームである。すなわち、フレームは、並列ビット数Mのビットからなる1ワード毎に受け渡される。1ワード内の一端である最上位ビットには、フレームのうちの先頭側のビットが格納される。また、1ワード内の他端である最下位ビットには、フレームのうちの末尾側のビットが格納される。
バス終端部21は、サーバ側から送られてくるフレームから、フレーム先頭を示すSOF信号と、フレーム最後尾(末尾)を示す最終ワード有効データ信号H(k)と、を生成し、Mビット幅のフレームとともにヘッダ付与部22へ出力する。なお、H(k)は、H(k)>0のとき、フレームN(x)の最終ワードEOF位置であることを示し、また、最終ワード内の有効データビット数を示す情報である。つまり、EOFの位置であるとき、H(k)=1〜Mであり、H(k)=h(hは、1≦h<Mの任意の正の整数)の場合、最終ワードはhビットの端数ビットを含むことを示す。また、H(k)=Mならば、最終ワードは端数ビットではなく、全てが有効データビットであることを示す。
なお、バス終端部21は、フレームの先頭ワードの出力時に同時にSOF信号を出力する。また、バス終端部21は、フレームの末尾の最終ワード有効データブロックB(x)の出力時に、同時に最終ワード有効データ信号H(k)を出力する。
ヘッダ付与部22は、バス終端部21から出力されたフレームにフレームヘッダを付与し、フレームヘッダが追加されたフレームとSOF信号と最終ワード有効データ信号H(k)とを並列CRC符号演算処理部23へ出力する。なお、フレームヘッダの付与に伴い、フレームのビット数が増加する。その結果、最終ワード有効データブロックB(x)も変化する。従って、ヘッダ付与部22は、最終ワード有効データ信号H(k)の値を、フレームヘッダ付与後の最終ワード有効データブロックB(x)のビット数(最終ワード有効ビット数)に更新してH(k)を出力する。
並列CRC符号演算処理部23は、ヘッダ付与部22から出力されるMビット幅のフレームに対する、CRC値を生成する。
FCS付与部24は、並列CRC符号演算処理部23が生成したCRC値をFCS値としてフレーム最後尾(フレームの末尾)に付与する。FCS値が付与されることで、フレーム長(ビット数)が増加し、その結果、最終ワード有効データブロックB(x)も変化する。そこで、FCS付与部24は、最終ワード有効データ信号H(k)の値を、FCS値付与後の最終ワード有効データブロックB(x)のビット数に更新してH(k)を出力する。なお、ヘッダ付与部22、並列CRC符号演算処理部23、及び、FCS付与部24は、送信MACフレーム生成処理を行うMAC送信処理部27を構成している。
PCS部25は、FCS付与部24からのMビット幅のフレームを伝送路符号化する。この伝送路符号化は、8B/10B変換や64B/66B変換等の伝送路送出のための符号化である。
送信器26は、PCS部25から出力されるフレームをパラレルデータからシリアルデータに変換して伝送路へ出力する。
なお、この実施形態においては、本発明に係る並列巡回符号演算処理回路は、並列CRC符号演算処理回路として、図1に示した並列CRC符号演算処理部23に適用されている。次に、図2を参照しながら、本発明に係る並列CRC符号演算処理部23の詳細な構成について説明する。
上述したように、並列CRC符号演算処理部23は、並列ビット数Mのビットからなる1ワード毎にフレームを受け取る。1ワード内の最上位ビットから最下位ビットへ向かう順に並んだビットには、フレーム内の先頭側から末尾側へ向かう順に並んだビットがそれぞれ1つずつ格納される。
並列CRC符号演算処理部23は、入力フレームN(x)(kは任意の正の整数)のCRC値を得るため、CRC符号演算対象である入力フレームN(x)のビット数nが並列ビット数Mの整数倍でない場合、すなわち最終ワード有効データブロックが端数ビットである場合に、入力フレームのうちの最終ワード有効データブロック以外のビットからなるデータ(先頭のビットを含み且つ並列ビット数Mを整数倍した数の連続したビットからなるデータ)である整数倍データブロックA(x)のCRC値(整数倍データブロック剰余)Ra(x)と、最終ワード有効ビット数H(k)の最終ワード有効データブロックB(x)のCRC値(最終ワード有効データブロック剰余)Rb(x)と、を独立に算出する。
このとき、並列CRC符号演算処理部23は、1ワードに対して処理を並列に行う、Mビット幅のCRC計算部により、CRC値Ra(x)を算出する。
更に、並列CRC符号演算処理部23は、最終ワード有効データブロックB(x)を、p(p=M−H(k))ビットだけ最下位ビット側にシフトし、且つ、シフトされたデータよりも最上位ビット側のすべてのビットに‘0’を設定したMビット幅のデータ(ワード)b’(x)を生成し、そのデータb’(x)を上記Mビット幅のCRC計算部に入力することにより、CRC計算結果Rb(x)を算出する。即ち、このデータb’(x)は、最終ワード有効データブロックB(x)の末尾のビットが0を指数として有するべき乗の項に対応する一端(最下位ビット)に位置し、且つ、最終ワード有効データブロックB(x)よりも他端(最上位ビット)側のすべてのビットが‘0’に設定されたデータである。
そして、並列CRC符号演算処理部23は、CRC値Ra(x)と、最終ワード有効ビット数H(k)に対応する係数βH(k)(x)と、を乗算(ガロア体上の乗算)し、その結果R´a(x)と上記CRC計算結果Rb(x)との加算(ガロア体上の加算、即ち、排他的論理和)を行う。これらの処理により、CRC計算部の数を増やすことなく並列CRC符号演算処理を行うことができる。なお、これらの処理は、式(9)に基づく手順に従った処理である。
図2に示したように、並列CRC符号演算処理部23は、制御信号生成部(制御信号生成手段)11と、シフト部(シフト手段)12と、選択部(選択手段)13と、CRC計算部(計算手段)14と、係数部15と、乗算部16と、加算部17と、を有する。なお、制御信号生成部11、シフト部12、選択部13及びCRC計算部14は、整数倍データブロック剰余算出手段(整数倍データブロック剰余算出工程)及び最終ワード有効データブロック剰余算出手段(最終ワード有効データブロック剰余算出工程)を構成している。また、係数部15、乗算部16及び加算部17は、入力データ剰余算出手段(入力データ剰余算出工程)を構成している。
制御信号生成部11は、入力フレーム(入力データ)N(x)を先頭のビットから順に1ワード(並列ビット数Mのビット)毎にシフト部12へ出力する。制御信号生成部11は、SOF信号と端数ビット数H(k)とから、制御信号であるEOF信号、シフト情報p、有効データ区間信号VDTを生成する。
そして、制御信号生成部11は、出力するデータが、フレームデータの最終ワード(H(k)≠0)の場合、フレーム最後尾(末尾)を示すEOF信号を生成し、生成したEOF信号を選択部13へ出力する。更に、この場合、制御信号生成部11は、並列ビット数MからH(k)を減じることによりシフト情報p(p=M−H(k))を生成し、生成したシフト情報pをシフト部12へ出力する。加えて、この場合、制御信号生成部11は、受け取った信号H(k)を係数部15へ出力する。係数部15へ出力するH(x)の値は、フレームのEOF位置での値であるため、1〜Mの値となる。
なお、入力フレーム長が並列ビット数Mの整数倍である場合、制御信号生成部11は、最終ワード有効データ信号H(k)=Mを受信する。この場合、制御信号生成部11は、フレーム最後尾を示すEOF信号を生成し、生成したEOF信号を選択部13へ出力する。更に、この場合、制御信号生成部11は、並列ビット数MからH(k)を減じることによりシフト情報p=0(p=M−H(k))を生成し、生成したシフト情報pをシフト部12へ出力する。加えて、この場合、制御信号生成部11は、受け取った信号H(k)=Mを係数部15へ出力する。
また、制御信号生成部11は、入力データの少なくとも一部を含むデータを出力している間、有効データ区間信号VDTを生成し、生成した有効データ区間信号VDTをCRC計算部14へ出力する。
シフト部12は、制御信号生成部11から出力されたシフト情報pを入力した場合、制御信号生成部11から出力されたMビット幅の信号を、該制御信号生成部11から出力されたシフト情報p(p=M−H(k))が表す数のビットだけ最下位ビット(0を指数として有するべき乗の項に対応する一端)側へシフトさせる。更に、この場合、シフト部12は、シフト処理によって発生した最上位ビット(他端)側のpビット(即ち、シフトされたデータよりも最上位ビット側のすべてのビット)に‘0’を設定する。
これにより、CRC計算部14における演算対象は、最終ワード有効ビット数H(k)のビットからなる最終ワード有効データブロックB(x)となる。即ち、最終ワード有効ビット数H(k)のビットからなる最終ワード有効データブロックB(x)のCRC計算結果を、Mビット入力のCRC計算部14により処理することができる。
選択部13は、制御信号生成部11から出力されたEOF信号を入力した場合、生成多項式G(x)の次数dと同数の‘0’からなるデータ(‘0’データ)をCRC計算部14へ出力し、一方、制御信号生成部11から出力されたEOF信号を入力しなかった場合、CRC計算部14の1サイクル前の(前回入力されたワードに対する演算処理にて出力された)計算結果をCRC計算部14へ出力する。
CRC計算部14は、選択部13から出力される、dビット幅の1サイクル前のCRC値(または、‘0’データ)と、シフト部12から出力されるMビット幅のデータと、に基づいて、並列ビット数Mのビットに対して演算処理を並列に行うことにより、その処理結果を表すデータ(計算結果)を出力する(CRC計算を行う)。即ち、CRC計算部14は、選択部13から出力されたデータにxM―dを乗算したデータと、シフト部12から出力されたデータと、を加算し、その加算値にxを乗算したデータを生成多項式G(x)により除算した剰余を計算結果として算出する。
係数部15は、上記式(7)に基づいて算出されたM組の係数(剰余算出用係数)βH(k)(x)(H(k)=1〜M)を予め記憶している。係数部15は、制御信号生成部11から出力された信号H(k)を入力した場合、その信号H(k)に応じた係数βH(k)(x)を出力する。
乗算部16は、係数部15から出力された係数βH(k)(x)と、CRC計算部14から出力された整数倍データブロックA(x)のCRC値Ra(x)と、の乗算(ガロア体上の乗算)処理を行い、その乗算結果R´a(x)を加算部17へ出力する。
加算部17は、乗算部16からの出力R´a(x)と、最終ワード有効データブロックB(x)のCRC値Rb(x)と、の加算(ガロア体上の加算、即ち、排他的論理和)処理を行う。
(作動)
次に、上述したように構成されたネットワーク・インタフェース・カード28の作動について説明する。
図1に示したバス終端部21が、上位層からフレームを受信すると、フレームの先頭を示すSOF信号と、最後尾を示す最終ワード有効データ信号H(k)と、を生成し、生成したSOF信号及び最終ワード有効データ信号H(k)をMビット幅のフレームとともに、ヘッダ付与部22へ出力する。バス終端部21は、フレームの最初の1ワード(Mビット)の出力時にSOF信号を出力し、フレームの末尾の1ワード(最終ワード有効データブロックB(x)を含むMビット)の出力時に、最終ワード有効データブロックB(x)のビット数(最終ワード有効ビット数)を最終ワード有効データ信号H(k)として出力する。
ヘッダ付与部22は、入力フレームにフレームヘッダを付与し、SOF信号と最終ワード有効データ信号H(k)とを更新する。そして、ヘッダ付与部22は、並列CRC符号演算処理部23へ、ヘッダ付与後のフレームの最初のMビットの出力時にSOF信号を出力し、フレームの末尾の最終ワード有効データブロックB(x)の出力時に最終ワード有効データ信号H(k)を出力する(図3の(a)〜(c))。
並列CRC符号演算処理部23は、ヘッダ付与部22から出力されるフレームN(x),N(k+1)(x))(図3の(a)にて模式的に太線で表す)のCRC値を算出し、算出したCRC値をFCS付与部24へ出力する。
FCS付与部24は、並列CRC符号演算処理部23から出力されたCRC値を、図3に示したように、FCS31,32としてフレームに付与するとともに、H(k)を更新する。そして、FCS付与部24は、PCS部25へ、FCS付与後のフレームの最初のMビットの出力時にSOF信号を出力し、フレーム最後尾の最終ワード有効データブロックB(x)の出力時に最終ワード有効データ信号H(k)を出力する(図3の(d)〜(f))。
PCS部25は、FCS付与部24からのフレームを伝送路符号化し、符号化したデータを送信器26へ出力する。送信器26は、PCS部25から出力されたMビット幅のフレームをパラレルデータからシリアルデータに変換して伝送路へ送信する。
次に、並列CRC符号演算処理部23の作動について、より詳細に説明する。図4は、並列CRC符号演算処理部23の各構成要素の入力や出力を示すタイミングチャートである。図4の(a)〜(c)は、それぞれ制御信号生成部11に入力されるSOF信号、信号H(k)、及び、フレームを表している。また、図4の(d)は、制御信号生成部11に入力されるフレームをワード(列)単位で示している。各ワードはMビットからなる。図4の(e)〜(j)は、それぞれシフト部12〜加算部17の出力を表している。図4の(k)〜(m)は、それぞれ信号VDT、EOF信号及びシフト情報pを表している。
図4の(a)〜(d)に示したように、制御信号生成部11には、ヘッダ付与部22からの、Mビット幅のCRC符号演算対象のフレームと、フレーム先頭を示すSOF信号と、データ最後尾の最終ワード有効ビット数を示す最終ワード有効データ信号H(k)と、が入力される。
入力フレームが入力されると、図4の(c)に示したように、並列ビット数Mの整数倍のビットからなる整数倍データブロックA(x)と、最終ワード有効ビット数H(k)のビットからなる最終ワード有効データブロックB(x)と、が存在する。
図4の(d)は、入力フレームをワード(1つのワードは、並列ビット数Mのビットからなる。また、ワードはワード列とも呼ばれる。)毎に示した図である。第1ワードa(x)#1〜第(w−1)ワードa(x)#(w−1)が整数倍データブロックA(x)であり、第wワードb(x)が最終ワードである。第wワードb(x)は、最終ワード有効データブロックB(x)を含む。
図4の(a)〜(d)に示したフレーム及び信号が入力されると、制御信号生成部11は、該フレームを構成するデータを出力している間、有効データ区間信号VDTを「有効(フレームを構成するビットが入力されていること)」を表す信号に設定し、その有効データ区間信号VDTをCRC計算部14へ出力する。
また、制御信号生成部11は、入力フレームの1つ目のワード(第1ワード)が入力されてから第(w−1)ワードが入力されるまでの間、フレーム最後尾信号(EOF信号)を「L:Low」を表す信号に設定し、そのEOF信号を選択部13へ出力する。
なお、図4の(k)〜(m)は、制御信号生成部11が生成する信号である。図4の(k)は、有効データ区間信号VDTであり、ここでは、‘H’レベルが「有効」を表し、‘L’レベルが「無効(フレームを構成するビットが入力されていないこと)」を表す。図4の(l)は、EOF信号であり、ここでは、‘H’レベルがフレームの最終ワード(第wワード)であることを示し、‘L’レベルがフレームの最終ワード(第wワード)でないことを示す。
シフト部12は、制御信号生成部11からのシフト情報pに応じて、Mビット幅の入力フレーム(図4の(d))のシフト処理を行う。ところで、Mビット幅の入力フレーム(図4の(d))の第1ワード〜第(w−1)ワードは、最終ワード有効データブロックB(x)を含まない。従って、シフト部12は、シフト処理を行うことなく、CRC計算部14へ第1ワードa(x)#1〜第(w−1)ワードa(x)#(w−1)を順に出力する。
選択部13は、図4の(l)のEOF信号に応じて、図4の(f)に示したように、第2ワードが入力されてから第(w−1)ワードが入力されるまでの間、前回のワードに対する演算処理にてCRC計算部14が出力したデータRa(x)#1〜Ra(x)#(w−2)を該CRC計算部14へ出力する。
ここで、CRC計算部14が整数倍データブロックA(x)のCRC値(整数倍データブロック剰余)Ra(x)を計算する方法について説明する。CRC計算部14は、Mビット幅のデータ(ワード)の各ビットを係数とするM−1次多項式にxを乗算した多項式を次数dの生成多項式G(x)により除算した剰余を算出する。ここで、生成多項式G(x)の次数dは予め定められている。
整数倍データブロックA(x)のビット数は、Mの整数倍(本例では、(w−1)倍)であるので、CRC計算部14は上記のようにMビットのデータに関して剰余を算出する処理を、整数倍データブロックA(x)の最初のMビットa(x)#1から最後のMビットa(x)#(w−1)まで、順に行う。CRC計算部14は、最初のMビットa(x)#1について剰余Ra(x)#1を算出すると、算出した剰余Ra(x)#1を選択部13へ出力する。
そして、CRC計算部14は、次のMビットa(x)#2が入力されると、選択部13から出力された前回のワードa(x)#1に基づく剰余Ra(x)#1(dビット)を最上位ビット側に(M−d)ビットだけシフトする。更に、CRC計算部14は、シフトしたデータと今回の入力ワードであるMビットa(x)#2との排他的論理和を求める。そして、CRC計算部14は、求めた排他的論理和が表すM−1次多項式にxを乗算した多項式を生成多項式G(x)により除算した剰余Ra(x)#2を算出する。
加えて、CRC計算部14は、以降のMビットのデータについても同様の処理を繰り返す。剰余を表すデータの各ビットはd−1次の多項式の係数に相当し、最上位ビット側に(M−d)ビットだけシフトすることは、剰余を表す多項式にxM−dを乗じることに対応している。
そして、CRC計算部14は、最後のMビットa(x)#(w−1)が入力されると、選択部13から出力された前回のワードa(x)#(w−2)に基づく剰余Ra(x)#(w−2)を最上位ビット側に(M−d)ビットだけシフトする。更に、CRC計算部14は、シフトしたデータと今回の入力ワードであるMビットa(x)#(w−1)との排他的論理和を求める。そして、CRC計算部14は、求めた排他的論理和が表すM−1次多項式にxを乗算した多項式を生成多項式G(x)により除算した剰余Ra(x)#(w−1)を算出する。この算出した剰余Ra(x)#(w−1)は、整数倍データブロックA(x)のCRC値Ra(x)である。
このように、CRC計算部14は、シフト部12が出力する入力フレームa(x)#1〜a(x)#(w−1)と、選択部13が出力するRa(x)#1〜Ra(x)#(w−2)と、から、整数倍データブロックA(x)に対するCRC計算を行い、図4の(g)に示したように、第wワードとして(第wワード列にて)CRC計算結果Ra(x)を出力する。
制御信号生成部11は、最終ワード有効データ信号H(k)(H(k)>0)を受信すると、EOF信号を‘H’レベルに設定し(図4の(l)の第wワード)、そのEOF信号を選択部13へ出力する。更に、制御信号生成部11は、図4の(m)に示したように、シフト情報p(p=M−H(k))をシフト部12へ出力する。
シフト部12には、B(x)を含むMビットのデータb(x)(図4の(d)の第wワード)が入力される。シフト部12は、Mビット幅の入力フレームb(x)(図5の(a))を受け取ると、そのデータを制御信号生成部11からのシフト情報p(p=M−H(k))だけ最下位ビット側へシフトする。更に、シフト部12は、シフトにより発生した最上位ビット側のpビット(データb(x)を構成するビット以外のビット)に、CRC値に影響を与えない‘0’を設定する。これにより、シフト部12は、Mビット幅のデータb´(x)(図5の(b))を生成し、生成したデータb´(x)をCRC計算部14へ出力する(図4の(e)の第wワード)。
図6は、シフト部12の詳細構成を表す。
シフト部12は、セレクタ回路611〜61Mと、制御部621〜62Mと、を含む。セレクタ回路611〜61Mには、Mビットのデータと1ビットの‘0’と、が入力される。セレクタ回路611〜61Mは、制御部621〜62Mの信号に応じて、入力されたビットのうちの1つのビットを出力する。
制御部621〜62Mは、シフト情報pに応じて、セレクタ回路611〜61Mを制御する信号を生成し、生成した信号を出力する。次に、具体例を挙げ、シフト部12の作動について説明する。
入力ビット幅M=3の場合、シフト部12は、セレクタ回路611〜613と、制御部621〜623と、により構成される。
いま、入力側の最上位ビットを入力ビットデータ1とし、入力側の最下位ビットを入力ビットデータ3とし、出力側の最上位ビットを出力ビットデータ1とし、出力側の最下位ビットを出力ビットデータ3とし、且つ、シフト情報p=1である場合を想定して説明を続ける。
この場合、制御部621は、シフト情報p=1に応じて、‘0’を出力させるための信号をセレクタ回路611へ出力する。セレクタ回路611は、制御部621からの信号に応じて‘0’を選択し、出力ビットデータ1として出力する。
更に、制御部622は、シフト情報p=1に応じて、入力ビットデータ1を出力させるための信号を、セレクタ回路612へ出力する。セレクタ回路612は、制御部622からの信号に応じて入力ビットデータ1を選択し、出力ビットデータ2として出力する。
加えて、制御部623は、シフト情報p=1に応じて、入力ビットデータ2を出力させるための信号を、セレクタ回路613へ出力する。セレクタ回路613は、制御部623からの信号に応じて、入力ビットデータ2を選択し、出力ビットデータ3として出力する。
このようにして、シフト部12は、出力ビットデータ1として‘0’、出力ビットデータ2として入力データビット1、出力ビットデータ3として入力データビット2を出力する。即ち、シフト情報p=1により、入力ビットデータは、1ビットずつ最下位ビット側にシフトされる。
次に、シフト情報p=2である場合について説明する。この場合、制御部621は、シフト情報p=2に応じて‘0’を出力させるための信号をセレクタ回路611へ出力する。セレクタ回路611は、制御部621からの信号に応じて‘0’を選択し、出力ビットデータ1として出力する。
更に、制御部622は、シフト情報p=2に応じて、‘0’を出力させるための信号をセレクタ回路612へ出力する。セレクタ回路612は、制御部622からの信号に応じて‘0’を選択し、出力ビットデータ2として出力する。
加えて、制御部623は、シフト情報p=2に応じて、入力ビットデータ1を出力させるための信号をセレクタ回路613へ出力する。セレクタ回路613は、制御部623からの信号に応じて入力ビットデータ1を選択し、出力ビットデータ3として出力する。
このようにして、シフト部12は、出力ビットデータ1として‘0’、出力ビットデータ2として‘0’、出力ビットデータ3として入力データビット1を出力する。即ち、シフト情報p=2により、入力ビットデータは、2ビットずつ最下位ビット側にシフトされる。
なお、M=3の場合について具体的に説明したが、Mの値が他の値であっても同様である。
選択部13は、制御信号生成部11からのEOF信号に応じて、‘0’データをCRC計算部14へ出力する(図4の(f)の第wワード)。CRC計算部14は、Mビット幅のCRC計算を行う。CRC計算部14は、選択部13から出力された‘0’データを用いて、シフト部12から出力されたデータb´(x)に含まれるB(x)に対するCRC計算を行うことにより、計算結果(最終ワード有効データブロック剰余)Rb(x)を出力する(図4の(g)の第(w+1)ワード)。
係数部15は、制御信号生成部11から出力された最終ワード有効ビット数H(k)に応じて、その最終ワード有効ビット数H(k)に対応する係数βH(k)(x)を乗算部16へ出力する(図4の(h)の第wワード)。
図7は、係数部15の詳細構成を表す。
係数部15は、セレクタ回路711と、係数テーブル721と、を含む。係数テーブル721は、上記式(7)に基づいて算出されたM組の係数β(x)731〜β(x)73Mを予め記憶している。
次に、具体例として、M=3の場合における係数部15の作動について説明する。
この場合、係数テーブル721は、係数β(x)731〜β(x)733を含む。セレクタ回路711は、最終ワード有効ビット数H(k)=1を受け取ったとき、係数β(x)を出力する。また、セレクタ回路711は、最終ワード有効ビット数H(k)=2を受け取ったとき、係数β(x)を出力する。同様に、セレクタ回路711は、最終ワード有効ビット数H(k)=3を受け取ったとき、係数β(x)を出力する。
なお、M=3の場合について具体的に説明したが、Mの値が他の値であっても同様である。
乗算部16は、係数部15から出力されたβH(k)(x)(図4の(h)の第wワード)と、CRC計算部14から出力されたRa(x)と、の乗算(ガロア体上の乗算)処理を行い、その結果R´a(x)を加算部17へ出力する(図4の(i)の第(w+1)ワード)。
この乗算結果は、一般的な多項式の乗算を行った後に生成多項式G(x)により除算した剰余である。以下に、ガロア体の乗算回路の例を示す。ここで、3ビットの多項式である、Ra(x)=(ra・x+ra・x+ra・x)及びβ(x)=(bt・x+bt・x+bt・x)の乗算を行うと、下記(16)式により与えられる4次の多項式となる。
E(x)=Ra(x)・β(x)
=e・x+e・x+e・x+e・x+e・x …(16)
上記式(16)の各係数は、下記式(17)〜(21)のようになる。なお、‘・’はAND演算であり、‘+’は排他的論理和(XOR)演算である。
=ra・bt …(17)
=ra・bt+ra・bt …(18)
=ra・bt+ra・bt+ra・bt …(19)
=ra・bt+ra・bt …(20)
=ra・bt …(21)
次に、E(x)を、下記式(22)の生成多項式G(x)により除算すると、下記式(23)に示したように、その剰余は、2次以下の多項式R´a(x)になる。即ち、R´a(x)が、Raとβ(x)との乗算結果である。
G(x)=x+x+x …(22)
R´a (x)=r´a・x+r´a・x+r´a・x …(23)
なお、ガロア体では加算と減算が同じであるので、式(23)の各係数は以下のように表される。
r´a=e+e …(24)
r´a=e+e+e …(25)
r´a=e+e …(26)
以上のように、2つの3ビットの多項式Ra(x)及びβ(x)の乗算を行い、その結果E(x)に対する除算の剰余(E(x) mod G(x))を計算することにより、ガロア体上の乗算結果R´a(x)を得ることができる。
図8に乗算部16の具体的な回路例を示す。
乗算部16は、AND部811〜81dと、生成多項式G(x)の次数dの2倍の数2dのビットを入力幅とするmod計算部821と、複数の排他的論理和演算部と、を含む。
AND部811〜81dは、係数部15から出力された信号β(x)とRa(x)とのAND処理が行われる。図9は、AND部811〜81dのうちの任意の1つであるAND部901の詳細構成を表す。
AND部901は、d個のAND素子911〜91dを含む。ra(fは、0≦f<d−1の任意の整数)は1ビットの信号である。AND部901は、ra=1の場合にβ(x)を出力し、一方、ra=0の場合にdビットの‘0’データを出力する。
次に、具体的な作動について、図8及び図9を参照しながら説明する。
d=3であり且つ生成多項式G(x)=x+x+xである場合を想定して説明を続ける。この場合、入力信号Ra(x)=(ra・x+ra・x+ra・x)であり、β(x)=(bt・x+bt・x+bt・x)である。
乗算部16は、3つのAND部811〜813(d=3なので81dは813となる)と、6ビット入力(d=3なので2d=6)のmod計算部821とからなる。Ra(x)とβ(x)とが入力されると、β(x)は、各AND部811〜813へ入力され、Ra(x)は、raがAND部811へ、raがAND部812へ、raがAND部813へ、それぞれ入力される。各AND部811〜813は、入力された信号のAND処理を行う。
即ち、AND部811は、ra・bt、ra・bt及びra・btを出力する(図9のra=ra)。同様に、AND部812は、ra・bt、ra・bt及びra・btを出力する(図9のra=ra)。同様に、AND部813は、ra・bt、ra・bt及びra・btを出力する(図9のra=ra)。
そして、乗算部16は、複数の排他的論理和演算部にて各AND部811〜813から出力されたデータの排他的論理和を求める。具体的には、乗算部16は、eとしてra・btを算出し、eとしてra・btとra・btとの排他的論理和を算出し、eとしてra・btと、ra・btと、ra・btと、の排他的論和を算出し、eとしてra・btとra・btとの排他的論理和を算出し、eとしてra・btを算出する。
そして、乗算部16は、算出したe〜eをmod計算部821へ入力する。mod計算部821は、r´aとしてeとeとの排他的論理和を算出し、r´aとしてeと、eと、eと、の排他的論理和を算出し、r´aとしてeとeとの排他的論理和を算出する。次いで、mod計算部821は、乗算結果R´a(x)(=r´a・x+r´a・x+r´a・x)を出力する。
加算部17は、乗算部16から出力されたR´a(x)(図4の(i)の第(w+1)ワード)と、CRC計算部14から出力されたRb(x)と、の排他的論理和を算出し、入力フレームに対するCRC値(入力データ剰余)R(x)を、Mビット幅のフレーム、SOF信号及び信号H(k)とともに出力する(図4の(j)の第(w+2)ワード)。これらは、FCS付与部24へ出力される。そして、入力データ剰余R(x)は、巡回冗長検査(CRC)方式を用いてデータの誤り検出処理を行うために使用される。
以上、説明したように、本発明に係る第1実施形態によれば、整数倍データブロックA(x)を構成するデータを、並列ビット数Mずつ並列に処理することにより、適切に整数倍データブロック剰余Ra(x)を算出することができる。この結果、入力データ剰余R(x)を低遅延で算出することができる。
また、上記第1実施形態によれば、並列ビット数Mが異なる複数の計算部を備えなくても、最終ワード有効データブロック剰余Rb(x)を適切に算出することができる。即ち、CRC符号演算処理回路の規模を小さくすることができる。さらに、上記第1実施形態によれば、複数のCRC計算部を縦続接続しなくても良いため、入力データ剰余R(x)を低遅延で算出することができる。
更に、上記第1実施形態によれば、並列ビット数Mのビットに対して並列に処理を行うことにより、適切に最終ワード有効データブロック剰余Rb(x)を算出することができる。従って、入力データ剰余R(x)をより一層低遅延で算出することができる。
加えて、上記第1実施形態によれば、並列ビット数Mのビットに対して並列に処理を行う1つの計算部(CRC計算部14)を用いて、最終ワード有効データブロック剰余Rb(x)及び整数倍データブロック剰余Ra(x)の両方を算出することができる。この結果、回路の規模をより一層小さくすることができる。
なお、上記第1実施形態においては、CRC計算部14は、多項式のうちの最も次数が高い項に対応するビットが最上位ビットに位置するデータを処理するように構成されていたが、多項式のうちの最も次数が低い項に対応するビットが最上位ビットに位置するデータを処理するように構成されていてもよい。更に、この場合、シフト部12は、制御信号生成部11から出力されたMビット幅の信号を、シフト情報p(p=M−H(k))だけ最上位ビット側へシフトさせ、且つ、シフト処理によって発生した下位ビット側のpビットに‘0’を設定するように構成される。
また、上記第1実施形態においては、制御信号生成部11は、フレーム先頭信号であるSOF信号、及び、最終ワード有効ビット数H(k)から、フレーム最後尾信号であるEOF信号、及び、シフト情報pを生成するように構成されていたが、SOF信号及び信号H(k)以外の信号(例えば、入力Mビット毎のビットイネーブル信号)から生成するように構成されていてもよい。
加えて、上記第1実施形態においては、入力フレーム長が並列ビット数Mの整数倍である場合、整数倍データブロック剰余Raと最終ワード有効データブロック剰余Rbとを独立に算出するとともに、算出した整数倍データブロック剰余Ra及び最終ワード有効データブロック剰余Rbに基づいて入力データ剰余R(x)を算出するように構成されていたが、整数倍データブロック剰余Raを入力データ剰余R(x)として算出するように構成されていてもよい。
更に、上記第1実施形態は、制御信号生成部11が1ビット単位のシフト情報pを生成し、シフト部12が1ビット単位のシフト処理を行なうように構成されていたが、制御信号生成部11が複数のビット(例えば、バイト)単位のシフト情報pを生成し、シフト部12が複数のビット単位のシフト処理を行なうように構成されていてもよい。
加えて、上記第1実施形態は、巡回符号としてCRC(巡回冗長検査)符号を用いるように構成されていたが、ハミング符号及びBCH符号等の他の巡回符号を用いるように構成されていてもよい。また、並列CRC符号演算処理部23は、プログラムに従って動作するCPUによって実現されていてもよい。
<第2実施形態>
次に、本発明の第2実施形態に係るイーサネット・スイッチについて説明する。
図10に示したように、このイーサネット・スイッチは、ラインカード受信部1011〜101Cと、スイッチ部103と、ラインカード送信部1021〜102Cと、を備える。このイーサネット・スイッチは、1つのラインカード受信部1011〜101Cと、1つのラインカード送信部1021〜102Cと、からなる組をC組だけ構成している。ここで、Cは1以上の任意の正の整数である。
1つの組を構成するラインカード受信部1011〜101C及びラインカード送信部1021〜102Cは、本例では、1つのラインカード上に実装されている。1つのラインカードは、1つのポートを有する。ラインカード受信部1011〜101C及びラインカード送信部1021〜102Cのそれぞれは、スイッチ部103に接続されている。
各ラインカード受信部1011〜101Cは、フレームの受信、解析、検査、廃棄を行い、転送可能フレームをスイッチ部103へ転送する。以下、ラインカード受信部1011を例にして構成及び作動を説明するが、他のラインカード受信部の構成及び作動についても同様である。
ラインカード受信部1011は、受信器1001と、PCS部1002と、ヘッダ解析部1003と、並列CRC検査部1004と、フレーム廃棄部1005と、フレームバッファ部1006と、を備える。
受信器1001は、PCS部1002に接続されている。受信器1001は、外部からフレーム(入力フレーム)を受信すると、そのフレームをシリアルデータからパラレルデータに変換してPCS部1002へ出力する。
PCS部1002は、受信器1001及びヘッダ解析部1003に接続されている。PCS部1002は、8B/10B変換や64B/66B変換符号により伝送路符号化されているフレームを復号し、Mビット幅のフレームをヘッダ解析部1003へ出力する。例えば、10ギガビット・イーサネットが採用されている場合には、PCS部1002は、64B/66B変換によってフレームを復号する。
また、PCS部1002は、フレーム先頭を示すSOF信号と、フレーム最後尾を示す最終ワード有効データ信号H(k)を生成し、Mビット幅のフレームとともにヘッダ解析部1003へ出力する。具体的には、PCS部1002は、ヘッダ解析部1003へ、フレームの最初のMビットの出力時にSOF信号を出力し、フレームの末尾の最終ワード有効データブロックB(x)の出力時に、最終ワード有効データブロックB(x)のビット数(最終ワード有効ビット数)を最終ワード有効データ信号H(k)として出力する。
ヘッダ解析部1003は、PCS部1002と、並列CRC検査部1004と、フレーム廃棄部1005と、に接続されている。ヘッダ解析部1003は、PCS部1002から出力されたフレームのヘッダの内容を解析し、その解析結果に基づくフレーム制御情報を出力する。
また、ヘッダ解析部1003は、フレームを並列CRC検査部1004へ出力する。このとき、ヘッダ解析部1003は、フレームの最初のMビットの出力時にSOF信号を出力し、フレームの末尾の最終ワード有効データブロックB(x)の出力時に最終ワード有効データ信号H(k)を出力する。
並列CRC検査部1004は、ヘッダ解析部1003とフレーム廃棄部1005とに接続されている。並列CRC検査部1004は、フレームの誤りを検出するために、フレームのヘッダからFCSまでのCRC符号演算を行う。そして、並列CRC検査部1004は、CRC検査結果をフレーム誤り検出の結果として、フレーム廃棄部1005へ出力する。
フレーム廃棄部1005は、ヘッダ解析部1003と、並列CRC検査部1004と、フレームバッファ部1006と、に接続されている。フレーム廃棄部1005は、ヘッダ解析部1003からのフレーム制御情報と、並列CRC検査部1004からのCRC検査結果と、に応じて、並列CRC検査部1004から入力されたフレームを廃棄する。また、フレーム廃棄部1005は、CRC検査結果が正常であるフレームとその制御情報とをフレームバッファ部1006へ出力する。
フレームバッファ部1006は、フレーム廃棄部1005とスイッチ部103とに接続されている。フレームバッファ部1006は、スイッチ部103へ出力するフレームとその制御情報とをバッファリングする。
スイッチ部103は、ラインカード受信部1011から入力されたフレームを、フレーム制御情報に従って、ラインカード受信部1011と組を構成するラインカード送信部1021へ転送する。即ち、ここでは、フレーム制御情報は、転送先のラインカード送信部がラインカード送信部1021であることを表す情報である。なお、フレーム制御情報は、転送先のラインカード送信部がラインカード送信部1021以外のラインカード送信部であることを表す情報であってもよい。
ラインカード送信部1021は、スイッチ部103から転送されたフレームをパラレルデータからシリアルデータに変換して送信する。なお、他のラインカード送信部も同様である。
なお、この実施形態においては、本発明に係る並列巡回符号演算処理回路は、並列CRC符号演算処理回路として、図10における並列CRC検査部1004に適用されている。次に、図11を参照しながら、ラインカード受信部1011における並列CRC検査部1004の詳細な構成について説明する。
上述した並列CRC符号演算処理部23と同様に、並列CRC検査部1004は、並列ビット数Mのビットからなる1ワード毎にフレーム(FCS値を含む入力フレーム)を受け取る。
並列CRC検査部1004は、入力フレームN´(x)(kは任意の正の整数)の先頭からFCS値までに含まれる誤りを検出するため、入力フレームN´(x)の先頭からFCS値までをCRC符号演算する。
並列CRC検査部1004は、CRC符号演算対象である入力フレームN´(x)のビット数nが並列ビット数Mの整数倍でない場合、つまり、最終ワード有効データブロックが端数ビットである場合に、入力フレームN´(x)のうち最終ワード有効データブロック以外のビット(並列ビット数Mを整数倍した数のビット)からなる整数倍データブロックA(x)のCRC値(整数倍データブロック剰余)Ra(x)と、最終ワード有効ビット数H(k)のビットからなる最終ワード有効データブロックB(x)のCRC値(最終ワード有効データブロック剰余)Rb(x)と、を独立に算出する。
このとき、並列CRC検査部1004は、Mビット幅のCRC計算部により、CRC値Ra(x)を算出する。更に、並列CRC検査部1004は、最終ワード有効データブロックB(x)を、p(p=M−H(k))ビットだけ最下位ビット側にシフトし、且つ、シフトされたデータよりも最上位ビット側のすべてのビットに‘0’を設定したMビット幅のデータ(信号)b’(x)を生成し、そのデータb’(x)を上記Mビット幅のCRC計算部に入力することにより、CRC計算結果Rb(x)を算出する。
そして、並列CRC検査部1004は、CRC計算結果Ra(x)と、最終ワード有効ビット数H(k)に対応する係数(剰余算出用係数)βH(k)(x)と、を乗算(ガロア体上の乗算)し、その結果R´a(x)と上記CRC計算結果Rb(x)との加算(ガロア体上の加算、即ち、排他的論理和)を行う。これらの処理により、CRC計算部の数を増やすことなく並列CRC符号演算処理を行うことができる。なお、これらの処理は、式(15)に基づく手順に従った処理である。
図11において、並列CRC検査部1004は、制御信号生成部(制御信号生成手段)111と、シフト部(シフト手段)112と、選択部(選択手段)113と、CRC計算部(計算手段)114と、係数部115と、乗算部116と、加算部117と、を有する。なお、制御信号生成部111、シフト部112、選択部113及びCRC計算部114は、整数倍データブロック剰余算出手段(整数倍データブロック剰余算出工程)及び最終ワード有効データブロック剰余算出手段(最終ワード有効データブロック剰余算出工程)を構成している。また、係数部115、乗算部116及び加算部117は、入力データ剰余算出手段(入力データ剰余算出工程)を構成している。
制御信号生成部111は、入力フレーム(入力データ)N´(x)を先頭から順に並列ビット数Mのビットからなるワード毎にシフト部112へ出力する。制御信号生成部111は、SOF信号と最終ワード有効ビット数H(k)とから、制御信号であるEOF信号、シフト情報p、有効データ区間信号VDTを生成する。
そして、制御信号生成部111は、出力するデータが、フレームデータの最終ワード(H(k)≠0)の場合、フレームの最後尾(末尾)を示すEOF信号を生成し、生成したEOF信号を選択部113へ出力する。更に、この場合、制御信号生成部111は、並列ビット数MからH(k)を減じることによりシフト情報p(p=M−H(k))を生成し、生成したシフト情報pをシフト部112へ出力する。加えて、この場合、制御信号生成部111は、信号H(k)を係数部115へ出力する。係数部115へ出力するH(x)の値は、フレームのEOF位置での値であるため、1〜Mの値となる。
なお、入力フレーム長が並列ビット数Mの整数倍である場合、制御信号生成部111は、最終ワード有効データ信号H(k)=Mを受信する。制御信号生成部111は、最終ワード有効データ信号H(k)=Mを受信すると、フレームの最後尾(末尾)を示すEOF信号を生成し、生成したEOF信号を選択部113へ出力する。更に、この場合、制御信号生成部111は、並列ビット数MからH(k)を減じることによりシフト情報p=0(p=M−H(k))を生成し、生成したシフト情報pをシフト部112へ出力する。加えて、この場合、制御信号生成部111は、受け取った信号H(k)=Mを係数部115へ出力する。
また、制御信号生成部111は、入力フレームの少なくとも一部を含むデータを出力している間、有効データ区間信号VDTを生成し、生成した有効データ区間信号VDTをCRC計算部114へ出力する。
シフト部112は、制御信号生成部111から出力されたシフト情報pを入力した場合、制御信号生成部111から出力されたMビット幅のデータを、該制御信号生成部111から出力されたシフト情報p(p=M−H(k))だけ最下位ビット側へシフトさせる。更に、この場合、シフト部112は、シフト処理によって発生した最上位ビット側のpビット(即ち、制御信号生成部111から出力されたデータ以外のビット)に‘0’を設定する。
これにより、CRC計算部114における演算対象は、長さH(k)ビットの最終ワード有効データブロックB(x)(の各ビットを係数とする多項式)となる。従って、最終ワード有効ビット数H(k)のビットからなる最終ワード有効データブロックB(x)のCRC計算結果を、Mビット入力のCRC計算部114により処理することができる。
選択部113は、制御信号生成部111から出力されたEOF信号を入力した場合、生成多項式G(x)の次数dの‘0’からなるデータ(‘0’データ)をCRC計算部114へ出力し、一方、制御信号生成部111から出力されたEOF信号を入力しなかった場合、CRC計算部114の1サイクル前の(前回の演算処理により出力された)CRC値をCRC計算部114へ出力する。
CRC計算部114は、選択部113から出力される、dビット幅の1サイクル前のCRC値(または、‘0’データ)と、シフト部112から出力されるMビット幅のデータと、に基づいて、並列ビット数Mのビットに対して演算処理を並列に行うことにより、その処理結果を表すデータ(計算結果)を出力する(CRC計算を行う)。即ち、CRC計算部114は、選択部113から出力されたデータにxを乗算したデータと、シフト部112から出力されたデータと、を加算し、その加算値を生成多項式G(x)により除算した剰余を計算結果として算出する。
係数部115は、上記式(7)に基づいて算出されたM組の係数βH(k)(x)(H(k)=1〜M)を予め記憶している。係数部115は、制御信号生成部111から出力された信号H(k)を入力した場合、その信号H(k)に応じた係数βH(k)(x)を出力する。
乗算部116は、係数部115から出力された係数βH(k)(x)と、CRC計算部114から出力された整数倍データブロックA(x)のCRC値Ra(x)と、の乗算(ガロア体上の乗算)処理を行い、その乗算結果R´a(x)を加算部117へ出力する。
加算部117は、乗算部116からの出力R´a(x)と、最終ワード有効データブロックB(x)のCRC値Rb(x)と、の加算(ガロア体上の加算、即ち、排他的論理和)処理を行う。
なお、上述したように、CRC計算部114にCRC−32が適用された場合、上記特許文献1の図4に示されるシリアルデータに対するCRC計算回路をMビット幅化した回路がCRC計算部として使用される。このCRC計算回路を使用すれば、フレームのヘッダからFCSまでをCRCの計算対象とすることにより、フレームに誤りがない場合、CRC計算結果(加算部117の出力)は‘0’となり、誤りがある場合、‘0’以外の値となる。
次に、図10に示したイーサネット・スイッチ及び図11に示した並列CRC検査部1004(並列CRC符号演算処理回路)の作動について説明する。
図12は、PCS部1002に入力されるフレーム、並びに、PCS部1002が出力するフレーム及び信号のタイミングチャートである。図12の(a)は、PCS部1002に入力されるフレームを示している。図12の(b),(c),(d)は、それぞれPCS部1002がヘッダ解析部1003へ出力するフレーム、SOF信号、信号H(k)を示している。
受信器1001(図10参照)は、フレームを受信すると、そのフレームをシリアルデータからパラレルデータに変換し、変換したフレームをPCS部1002へ出力する。図12の(a)は、このフレームを表している。
PCS部1002は、受信器1001から入力されたフレームを復号する。そして、PCS部1002は、フレーム先頭を示すSOF信号と、フレーム最後尾を示す最終ワード有効データ信号H(k)と、を生成し、Mビット幅のフレームとともに、ヘッダ解析部1003へ出力する(図12の(b)〜(d)を参照)。具体的には、PCS部1002は、フレームの最初のMビットの出力時にSOF信号を出力し、フレームの末尾の最終ワード有効データブロックB(x)の出力時に最終ワード有効データブロックB(x)のビット数を最終ワード有効データ信号H(k)として出力する。
なお、PCS部1002に入力されるフレームにおいて、ヘッダ先頭には「/s/」(フレーム開始区切り)が存在し、フレームの終わり(末尾)には「/t/」(フレーム終了区切り)が存在し、隣接するフレーム間にはIFG(Inter Frame Gap、フレーム間隔)が存在する。
PCS部1002は、これらの「/s/」(フレーム開始区切り)、「/t/」(フレーム終了区切り)及びIFGを‘0’に置き換えて、ヘッダ解析部1003へ出力する。この結果、図12の(b)に示したように、フレーム開始区切り1201,1203、フレーム終了区切り1202,1204、及び、IFG、は無効データとなる。
ヘッダ解析部1003は、フレームのヘッダを解析し、フレーム制御情報を生成し、フレーム制御情報をフレーム廃棄部1005へ出力する。また、ヘッダ解析部1003は、PCS部1002から出力されたフレーム、SOF信号及びH(k)信号を並列CRC検査部1004へ出力する。具体的には、ヘッダ解析部1003は、フレームの最初のMビットの出力時にSOF信号を出力し、フレームの末尾の最終ワード有効データブロックB(x)の出力時に最終ワード有効データ信号H(k)を出力する。
並列CRC検査部1004は、ヘッダ解析部1003から入力されるSOF信号及びH(k)信号に応じて、入力されるフレーム(検査対象フレーム)のヘッダからFCSまでのCRC値を算出する。並列CRC検査部1004は、算出したCRC値をCRC検査結果として、フレーム廃棄部1005へ出力する。
フレーム廃棄部1005は、ヘッダ解析部1003から出力されたフレーム制御情報と、並列CRC検査部1004から出力されたCRC検査結果と、に従って、フレームを廃棄する。また、フレーム廃棄部1005は、CRC検査結果が正常なフレームをフレーム制御情報とともにフレームバッファ部1006へ出力する。
フレームバッファ部1006は、フレーム廃棄部1005からフレームが入力されると、フレーム制御情報ともにバッファリングする。バッファリング後、フレームバッファ部1006は、フレームとフレーム制御情報とをスイッチ部103へ出力する。
スイッチ部103は、フレームバッファ部1006から出力されたフレームを、フレーム制御情報に従い、ラインカード送信部へ転送する。スイッチ部103は、フレームをスイッチ部103に対して出力したラインカード受信部1011と組を構成するラインカード送信部1021へフレームを転送する。即ち、ここでは、フレーム制御情報は、転送先のラインカード送信部がラインカード送信部1021であることを表す情報である。なお、フレーム制御情報は、転送先のラインカード送信部がラインカード送信部1021以外のラインカード送信部であることを表す情報であってもよい。
ラインカード送信部1021は、スイッチ部103から転送されたフレームをパラレルデータからシリアルデータに変換して送信する。
次に、並列CRC検査部1004の詳細な作動について説明する。図13は、並列CRC検査部1004の各構成要素の入力や出力を示すタイミングチャートである。図13の(a)〜(c)は、それぞれ制御信号生成部111に入力されるSOF信号、信号H(k)及びフレームを表している。また、図13の(d)は、制御信号生成部111に入力されるフレームをワード(列)単位で示している。各ワードはMビットである。図13の(e)〜(j)は、それぞれシフト部112〜加算部117の出力を表している。図13の(k)〜(m)は、それぞれ信号VDT、EOF信号及びシフト情報pを表している。
図13の(a)〜(d)に示したように、制御信号生成部111には、ヘッダ解析部1003からCRC検査対象となるMビット幅の入力フレームと、フレーム先頭を示すSOF信号と、フレーム最後尾を示す最終ワード有効データ信号H(k)と、が入力される。最終ワード有効データ信号H(k)は、最終ワード有効データブロックB(x)のビット数(最終ワード有効ビット数)を表す信号である。本実施形態で並列CRC検査部1004の入力フレームN´(x)は、第1実施形態のMAC送信処理部27に実装される並列CRC符号演算処理部23の入力フレームN(x)と異なり、入力フレーム内にFCSを含んでいる(図13の(c))。
図13の(d)は、入力フレームをワード(1つのワードは、並列ビット数Mのビットからなる)毎に示した図である。第1ワードa(x)#1〜第(w−1)ワードa(x)#(w−1)が整数倍データブロックA(x)であり、第wワードb(x)が最終ワード有効データブロックB(x)である。
なお、図13の(k)〜(m)は、制御信号生成部111が生成する信号である。図13の(k)は、有効データ区間信号VDTであり、ここでは、‘H’レベルが「有効」を表し、‘L’レベルが「無効」を表す。図13の(l)は、EOF信号であり、ここでは、‘H’レベルがフレームの最終ワード(第wワード)であることを示し、‘L’レベルがフレームの最終ワード(第wワード)でないことを示す。
図13の(a)〜(d)に示したように、フレーム及び信号(SOF,H(k))が入力されると、制御信号生成部111は、SOF信号が入力されてからH(k)信号が入力されるまでの間、有効データ区間信号VDTを「有効」を示す信号に設定し、その信号VDTをCRC計算部114へ出力する(図13の(k))。
また、制御信号生成部111は、SOF信号が入力されてからH(k)信号が入力されるまでの間(第1ワードから第(w−1)ワードまでの間)、EOF信号を「L:Low」を表す信号に設定し、そのEOF信号を選択部113へ出力する。
シフト部112は、制御信号生成部111からのシフト情報pに応じて、Mビット幅の入力フレーム(図13の(d))のシフト処理を行う。ところで、Mビット幅の入力フレーム(図13の(d))の第1ワード〜第(w−1)ワードは、最終ワード有効データブロックB(x)を含まない。従って、シフト部112は、シフト処理を行うことなく、CRC計算部114へ第1ワードa(x)#1〜第(w−1)ワードa(x)#(w−1)を順に出力する。
選択部113は、図13の(l)のEOF信号に応じて、図13の(f)に示したように、第2ワード〜第(w−1)ワードまでの間、前回のワードに対する演算処理にてCRC計算部114が出力したデータRa(x)#1〜Ra(x)#(w−2)を該CRC計算部114へ出力する。
CRC計算部114は、シフト部112が出力する入力フレームa(x)#1〜a(x)#(w−1)と、選択部113が出力するRa(x)#1〜Ra(x)#(w−2)と、から、整数倍データブロックA(x)に対するCRC計算を行い、図13の(g)に示したように、第wワードにてCRC計算結果(整数倍データブロック剰余)Ra(x)を出力する。
制御信号生成部111は、最終ワード有効データ信号H(k)(H(k)>0)を受信すると、EOF信号を‘H’レベルに設定し(図13の(l)の第wワード)、そのEOF信号を選択部113へ出力する。更に、制御信号生成部111は、図13の(m)に示したように、シフト情報p(p=M−H(k))をシフト部112へ出力する。
シフト部112には、B(x)を含むMビットのデータb(x)(図13の(d)の第wワード)が入力される。シフト部112は、Mビット幅の入力フレームb(x)(図14の(a))を受け取ると、そのデータを制御信号生成部111からのシフト情報p(p=M−H(k))だけ最下位ビット側へシフトする。更に、シフト部112は、シフトにより発生した最上位ビット側のpビット(シフトしたデータb(x)よりも最上位ビット側のすべてのビット)に、CRC値に影響を与えない‘0’を設定する。これにより、シフト部112は、Mビット幅のデータb´(x)(図14の(b))を生成し、生成したデータb´(x)をCRC計算部114へ出力する(図13の(e)の第wワード)。
なお、シフト部112は、第1実施形態に係るシフト部12と同様の構成を有し、シフト部12と同様に作動する。
選択部113は、制御信号生成部111からのEOF信号に応じて、‘0’データをCRC計算部114へ出力する(図13の(f)の第wワード)。CRC計算部114は、Mビット幅のCRC計算を行う。CRC計算部114は、選択部113から出力された‘0’データを用いて、シフト部112から出力されたデータb´(x)に含まれるB(x)に対するCRC計算を行うことにより、CRC値(最終ワード有効データブロック剰余)Rb(x)を出力する(図13の(g)の第(w+1)ワード)。
係数部115は、制御信号生成部111から出力された最終ワード有効ビット数H(k)に応じて、その最終ワード有効ビット数H(k)に対応する係数(剰余算出用係数)βH(k)(x)を乗算部116へ出力する(図13の(h)の第wワード)。
なお、係数部115は、第1実施形態に係る係数部15と同様の構成を有し、係数部15と同様に作動する。
乗算部116は、係数部115から出力されたβH(k)(x)(図13の(h)の第wワード)と、CRC計算部114から出力されたRa(x)と、の乗算(ガロア体上の乗算)処理を行い、その結果R´a(x)を加算部117へ出力する(図13の(i)の第(w+1)ワード)。
なお、乗算部116は、第1実施形態に係る乗算部16と同様の構成を有し、乗算部16と同様に作動する。
加算部117は、乗算部116から出力されたR´a(x)(図13の(i)の第(w+1)ワード)と、CRC計算部114から出力されたRb(x)と、の排他的論理和を算出し、入力フレームに対するCRC検査結果(入力データ剰余)C(x)を、Mビット幅のフレーム、SOF信号及び信号H(k)とともに出力する(図13の(j)の第(w+2)ワード)。これらは、フレーム廃棄部1005へ出力される。
以上、説明したように、本発明に係る第2実施形態によれば、整数倍データブロックA(x)を構成するデータを、並列ビット数Mずつ並列に処理することにより、適切に整数倍データブロック剰余Ra(x)を算出することができる。この結果、入力データ剰余R(x)を低遅延で算出することができる。
また、上記第2実施形態によれば、並列ビット数Mが異なる複数の計算部を備えなくても、最終ワード有効データブロック剰余Rb(x)を適切に算出することができる。即ち、CRC符号演算処理回路の規模を小さくすることができる。さらに、上記第2実施形態によれば、複数のCRC計算部を縦続接続しなくても良いため、入力データ剰余R(x)を低遅延で算出することができる。
更に、上記第2実施形態によれば、並列ビット数Mのビットに対して並列に処理を行うことにより、適切に最終ワード有効データブロック剰余Rb(x)を算出することができる。従って、入力データ剰余R(x)をより一層低遅延で算出することができる。
加えて、上記第2実施形態によれば、並列ビット数Mのビットに対して並列に処理を行う1つの計算部(CRC計算部114)を用いて、最終ワード有効データブロック剰余Rb(x)及び整数倍データブロック剰余Ra(x)の両方を算出することができる。この結果、回路の規模をより一層小さくすることができる。
なお、上記第2実施形態においては、CRC計算部114は、多項式のうちの最も次数が高い項に対応するビットが最上位ビットに位置するデータを処理するように構成されていたが、多項式のうちの最も次数が低い項に対応するビットが最上位ビットに位置するデータを処理するように構成されていてもよい。更に、この場合、シフト部112は、制御信号生成部111から出力されたMビット幅の信号を、シフト情報p(p=M−H(k))だけ最上位ビット側へシフトさせ、且つ、シフト処理によって発生した最下位ビット側のすべてのビット(pビット)に‘0’を設定するように構成される。
また、上記第2実施形態においては、制御信号生成部111は、フレーム先頭信号であるSOF信号、及び、最終ワード有効ビット数H(k)から、フレーム最後尾信号であるEOF信号、及び、シフト情報pを生成するように構成されていたが、SOF信号及び信号H(k)以外の信号(例えば、入力Mビット毎のビットイネーブル信号)から生成するように構成されていてもよい。
更に、上記第2実施形態は、制御信号生成部111が1ビット単位のシフト情報pを生成し、シフト部112が1ビット単位のシフト処理を行なうように構成されていたが、制御信号生成部111が複数のビット(例えば、バイト)単位のシフト情報pを生成し、シフト部112が複数のビット単位のシフト処理を行なうように構成されていてもよい。
加えて、上記第2実施形態においては、入力フレーム長が並列ビット数Mの整数倍である場合、整数倍データブロック剰余Raと最終ワード有効データブロック剰余Rbとを独立に算出するとともに、算出した整数倍データブロック剰余Ra及び最終ワード有効データブロック剰余Rbに基づいて入力データ剰余R(x)を算出するように構成されていたが、整数倍データブロック剰余Raを入力データ剰余R(x)として算出するように構成されていてもよい。
加えて、上記第2実施形態は、巡回符号としてCRC(巡回冗長検査)符号を用いるように構成されていたが、ハミング符号及びBCH符号等の他の巡回符号を用いるように構成されていてもよい。また、並列CRC検査部1004は、プログラムに従って動作するCPUによって実現されていてもよい。
更に、並列CRC検査部1004は、ネットワーク・インタフェース・カードの受信側のCRC検査回路として用いられてもよい。また、第1実施形態に係る並列CRC符号演算処理部23は、ラインカード送信部1021〜102Cが備えるCRC生成回路として用いられてもよい。
なお、本発明は上記各実施形態に限定されることはなく、本発明の範囲内において種々の変形例を採用することができる。
また、上記各実施形態は、
任意長のデータ系列N(x)に対して、任意の生成多項式G(x)による除算演算を、任意の並列度M(Mは2以上の正の整数)で行い、その剰余を算出するCRC符号演算処理方式であって、
前記データ系列N(x)を、最終ワード有効データブロックB(x)を除く、Mの整数倍の長さを有する整数倍データブロックA(x)と、長さM−p(pは0以上M−1未満の正の整数)の最終ワード有効データブロックB(x)とに分割し、
前記整数倍データブロックA(x)を生成多項式G(x)で除算し、
前記最終ワード有効データブロックB(x)を生成多項式G(x)で除算し、
該A(x)のG(x)による剰余結果と、係数との乗算を行い、
該乗算結果と、該B(x)のG(x)による剰余結果との排他的論和演算を行うことで、データ系列N(x)に対する生成多項式G(x)による剰余を算出することを特徴とするCRC符号演算処理方式、
を用いている、と言うことができる。
また、上記各実施形態は、
任意長のデータ系列N(x)に対して、次数dの任意の生成多項式G(x)による除算演算を、任意の並列度Mビット(Mは2以上の正の整数)で行い、その剰余を算出するCRC符号生成演算処理回路であって、
前記データ系列N(x)を、最終ワード有効データブロックB(x)を除く、Mビットの整数倍の長さを有するデータブロックA(x)と、M−pビット幅(pは0以上M−1未満の正の整数)の最終ワード有効データブロックB(x)とに分割する手段と、
前記最終ワード有効データブロックB(x)を下位ビット側にシフトし、その上位ビット側にpビットの‘0’を付加して、Mビット幅のデータブロックを生成する手段と、
前記のMビット幅のシフトデータと、前記整数倍データブロックA(x)の剰余演算を行う手段と、
前記整数倍データブロックA(x)に対する剰余計算結果と、M−pビットに対応する係数との乗算計算を行う手段と、
前記dビット幅の乗算結果と、dビット幅の前記最終ワード有効データブロックB(x)に対する剰余計算結果との排他的論理和を行う手段を備えることを特徴とする、CRC符号生成演算処理回路、
を用いている、と言うこともできる。
また、上記第2実施形態は、
検査用CRC符号を含む任意長のデータ系列N(x)に対して、次数dの任意の生成多項式G(x)による除算演算を、任意の並列度Mビット(Mは2以上の正の整数)で行い、N(x)の誤りを検出するCRC符号検査演算処理回路であって、
検査用CRC符号を含む任意長のデータ系列N(x)を、最終ワード有効データブロックB(x)を除く、Mの整数倍の長さを有する整数倍データブロックA(x)と、M−pビット幅(pは0以上M−1未満の正の整数)の最終ワード有効データブロックB(x)とに分割する手段と、
前記最終ワード有効データブロックB(x)を下位ビット側にシフトし、その上位ビット側にpビットの‘0’を付加して、Mビット幅のデータブロックを生成する手段と、
前記のMビット幅のシフトデータと、前記整数倍データブロックA(x)のCRC計算を行う手段と、
前記整数倍データブロックA(x)に対するCRC計算結果と、M−pビットに対応する係数との乗算計算を行う手段と、
前記dビット幅の乗算結果と、dビット幅の前記最終ワード有効データブロックB(x)に対するCRC計算結果との排他的論理和を行う手段を備えることを特徴とする、並列CRC符号検査演算処理回路、
を用いている、と言うことができる。
本発明は、巡回符号を用いる通信装置等に適用可能である。
本発明の第1実施形態に係るネットワーク・インタフェース・カードを示したブロック図である。 図1に示した並列CRC符号演算処理部を示したブロック図である。 図1に示した並列CRC符号演算処理部及びFCS付与部の入力信号及び出力信号を示したタイムチャートである。 並列CRC符号演算処理部の各構成要素の入力や出力を示したタイムチャートである。 図2に示したシフト部によるシフト処理を示した説明図である。 図2に示したシフト部を示したブロック図である。 図2に示した係数部を示したブロック図である。 図2に示した乗算部を示したブロック図である。 図8に示したAND部を示したブロック図である。 本発明の第2実施形態に係るイーサネット・スイッチを示したブロック図である。 図10に示した並列CRC検査部を示したブロック図である。 図10に示した並列CRC検査部及びPCS部の入力信号及び出力信号を示したタイムチャートである。 並列CRC検査部の各構成要素の入力や出力を示したタイムチャートである。 図11に示したシフト部によるシフト処理を示した説明図である。 並列CRC符号演算処理回路の一例を示したブロック図である。 図15に示した並列CRC符号演算処理回路における、入力フレームと、各CRC計算部における計算範囲と、を示した説明図である。
符号の説明
11、111 制御信号生成部
12、112 シフト部
13、113 選択部
14、114、1502〜1505 CRC計算部
15、115 係数部
16、116 乗算部
17、117 加算部
21 バス終端部
22 ヘッダ付与部
23 並列CRC符号演算処理部
24 FCS付与部
25 PCS部
26 送信器
27 MAC送信処理部
28 ネットワーク・インタフェース・カード
31、32 FCS
611〜61M セレクタ回路
621〜62M 制御部
711 セレクタ回路
721 係数テーブル
730〜73M 係数
811〜81d、901 AND部
821 mod計算部
1001 受信器
1002 PCS部
1003 ヘッダ解析部
1004 並列CRC計算部
1005 フレーム廃棄部
1006 フレームバッファ
1011〜101C ラインカード受信部
1021〜102C ラインカード送信部
103 スイッチ部
1501 制御部
1506〜1508 データ選択部
1509〜1511 結果選択部

Claims (10)

  1. 所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出する巡回符号演算処理回路であって、
    前記入力データを構成する複数のビットのうちの、前記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、前記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出手段と、
    前記入力データのうちの、前記最終ワードに含まれるビットからなる最終ワード有効データブロックを前記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出手段と、
    前記算出された整数倍データブロック剰余と、前記算出された最終ワード有効データブロック剰余と、に基づいて前記入力データ剰余を算出する入力データ剰余算出手段と、
    を備え
    前記最終ワード有効データブロック剰余算出手段は、
    前記並列ビット数のビットに対して処理を並列に行うことにより、前記最終ワード有効データブロックの末尾のビットが0を指数として有するべき乗の項に対応する一端に位置するように当該最終ワード有効データブロックを含み且つ当該最終ワード有効データブロックよりも他端側のすべてのビットが0に設定された前記並列ビット数のデータを前記生成多項式によって除算した剰余を前記最終ワード有効データブロック剰余として算出するように構成された巡回符号演算処理回路。
  2. 請求項1に記載の巡回符号演算処理回路であって、
    前記入力データ剰余算出手段は、
    前記最終ワード有効データブロックを構成するビットの数を指数として有するべき乗の項のみを有する多項式を、前記生成多項式によって除算した剰余である剰余算出用係数と、前記整数倍データブロック剰余と、を乗算した乗算値と、前記最終ワード有効データブロック剰余と、を加算することにより前記入力データ剰余を算出するように構成された巡回符号演算処理回路。
  3. 請求項1又は請求項2に記載の巡回符号演算処理回路であって、
    前記整数倍データブロック剰余算出手段及び前記最終ワード有効データブロック剰余算出手段は、制御信号生成手段と、シフト手段と、選択手段と、計算手段と、からなり、
    前記制御信号生成手段は、
    前記入力データを先頭から順に前記並列ビット数のビットからなるワード毎に出力するとともに、前記最終ワード有効データブロックを構成するデータを出力するときには出力するデータが当該最終ワード有効データブロックを構成する旨を表す最終ワード有効データ信号と、前記並列ビット数から当該最終ワード有効データブロックを構成するビットの数を減じた数を表すシフト情報と、を出力するように構成され、
    前記シフト手段は、
    前記制御信号生成手段から出力されたデータを受け付けるとともに、当該制御信号生成手段から前記シフト情報が出力された場合に当該受け付けたデータを当該シフト情報が表す数のビットだけ前記一端側にシフトし且つそのシフトされたデータよりも他端側のすべてのビットを0に設定したデータを出力し、当該制御信号生成手段から当該シフト情報が出力されなかった場合に当該受け付けたデータを出力するように構成され、
    前記選択手段は、
    前記計算手段から前回の演算処理にて出力されたデータを受け付けるとともに、前記制御信号生成手段から前記最終ワード有効データ信号が出力された場合に前記生成多項式の次数と同数の0からなるデータを出力し、一方、当該制御信号生成手段から当該最終ワード有効データ信号が出力されなかった場合に前記受け付けたデータを出力するように構成され、
    前記計算手段は、
    前記シフト手段から出力されたデータと、前記選択手段から出力されたデータと、に基づいて、前記並列ビット数のビットに対して演算処理を並列に行うことにより、その処理結果を表すデータを出力するように構成された巡回符号演算処理回路。
  4. 請求項1乃至請求項3のいずれか一項に記載の巡回符号演算処理回路であって、
    誤り検出処理を行うためのフレームチェックシーケンス(FCS:Frame Check Sequence)値として前記入力データ剰余を前記入力データに付加する回路に適用される巡回符号演算処理回路。
  5. 請求項1乃至請求項4のいずれか一項に記載の巡回符号演算処理回路であって、
    前記入力データ剰余に基づいて前記入力データの誤り検出処理を行う回路に適用される巡回符号演算処理回路。
  6. 請求項1乃至請求項5のいずれか一項に記載の巡回符号演算処理回路であって、
    巡回冗長検査方式を用いてデータの誤り検出処理を行うために前記入力データ剰余を使用する回路に適用された巡回符号演算処理回路。
  7. 所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出するネットワーク・インタフェース・カードであって、
    前記入力データを構成する複数のビットのうちの、前記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、前記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出手段と、
    前記入力データのうちの、前記最終ワードに含まれるビットからなる最終ワード有効データブロックを前記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出手段と、
    前記算出された整数倍データブロック剰余と、前記算出された最終ワード有効データブロック剰余と、に基づいて前記入力データ剰余を算出する入力データ剰余算出手段と、
    を備え
    前記最終ワード有効データブロック剰余算出手段は、
    前記並列ビット数のビットに対して処理を並列に行うことにより、前記最終ワード有効データブロックの末尾のビットが0を指数として有するべき乗の項に対応する一端に位置するように当該最終ワード有効データブロックを含み且つ当該最終ワード有効データブロックよりも他端側のすべてのビットが0に設定された前記並列ビット数のデータを前記生成多項式によって除算した剰余を前記最終ワード有効データブロック剰余として算出するように構成されたネットワーク・インタフェース・カード。
  8. 請求項7に記載のネットワーク・インタフェース・カードであって、
    前記入力データ剰余算出手段は、
    前記最終ワード有効データブロックを構成するビットの数を指数として有するべき乗の項のみを有する多項式を、前記生成多項式によって除算した剰余である剰余算出用係数と、前記整数倍データブロック剰余と、を乗算した乗算値と、前記最終ワード有効データブロック剰余と、を加算することにより前記入力データ剰余を算出するように構成されたネットワーク・インタフェース・カード。
  9. 所定の並列ビット数のビットに対して処理を並列に行うことによって、連続する複数のビットからなる入力データを生成多項式により除算した剰余である入力データ剰余を算出する巡回符号演算方法であって、
    前記入力データを構成する複数のビットのうちの、前記並列ビット数のビットからなるワード毎に当該複数のビットを先頭から順に分割した場合における最も末尾側のワードである最終ワードよりも先頭側のビットからなる整数倍データブロックを、前記生成多項式によって除算した剰余である整数倍データブロック剰余を、当該並列ビット数のビットに対して処理を並列に行うことにより算出する整数倍データブロック剰余算出工程と、
    前記入力データのうちの、前記最終ワードに含まれるビットからなる最終ワード有効データブロックを前記生成多項式によって除算した剰余である最終ワード有効データブロック剰余を算出する最終ワード有効データブロック剰余算出工程と、
    前記算出された整数倍データブロック剰余と、前記算出された最終ワード有効データブロック剰余と、に基づいて前記入力データ剰余を算出する入力データ剰余算出工程と、
    を含み、
    前記最終ワード有効データブロック剰余算出工程は、
    前記並列ビット数のビットに対して処理を並列に行うことにより、前記最終ワード有効データブロックの末尾のビットが0を指数として有するべき乗の項に対応する一端に位置するように当該最終ワード有効データブロックを含み且つ当該最終ワード有効データブロックよりも他端側のすべてのビットが0に設定された前記並列ビット数のデータを前記生成多項式によって除算した剰余を前記最終ワード有効データブロック剰余として算出するように構成された巡回符号演算方法。
  10. 請求項9に記載の巡回符号演算方法であって、
    前記入力データ剰余算出工程は、
    前記最終ワード有効データブロックを構成するビットの数を指数として有するべき乗の項のみを有する多項式を、前記生成多項式によって除算した剰余である剰余算出用係数と、前記整数倍データブロック剰余と、を乗算した乗算値と、前記最終ワード有効データブロック剰余と、を加算することにより前記入力データ剰余を算出するように構成された巡回符号演算方法。
JP2008235124A 2008-09-12 2008-09-12 巡回符号演算処理回路 Active JP4935787B2 (ja)

Priority Applications (2)

Application Number Priority Date Filing Date Title
JP2008235124A JP4935787B2 (ja) 2008-09-12 2008-09-12 巡回符号演算処理回路
US12/557,269 US8402353B2 (en) 2008-09-12 2009-09-10 Cyclic code processing circuit, network interface card, and cyclic code processing method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2008235124A JP4935787B2 (ja) 2008-09-12 2008-09-12 巡回符号演算処理回路

Publications (2)

Publication Number Publication Date
JP2010068429A JP2010068429A (ja) 2010-03-25
JP4935787B2 true JP4935787B2 (ja) 2012-05-23

Family

ID=42008315

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008235124A Active JP4935787B2 (ja) 2008-09-12 2008-09-12 巡回符号演算処理回路

Country Status (2)

Country Link
US (1) US8402353B2 (ja)
JP (1) JP4935787B2 (ja)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012169926A (ja) * 2011-02-15 2012-09-06 Fujitsu Ltd Crc演算回路
US9680639B2 (en) * 2011-03-31 2017-06-13 Panasonic Intellectual Property Management Co., Ltd. Secret sharing apparatus and secret sharing method that restores secret data from at least two of generated shared data
JP5724601B2 (ja) * 2011-05-10 2015-05-27 富士通株式会社 Crc演算回路及びプロセッサ
US8539326B1 (en) * 2011-12-07 2013-09-17 Xilinx, Inc. Method and implementation of cyclic redundancy check for wide databus
US11132251B2 (en) * 2012-05-31 2021-09-28 Samsung Electronics Co., Ltd. Enhanced checksum system
CN110784283B (zh) * 2014-07-22 2022-01-14 华为技术有限公司 确定前向纠错帧边界的方法、装置和解码系统
US10637610B2 (en) * 2015-07-20 2020-04-28 Huawei Technologies Co., Ltd. Information sending method and apparatus, and information receiving method and apparatus
CN109787713B (zh) * 2017-11-15 2020-10-09 华为技术有限公司 一种循环冗余校验crc计算方法和装置
US10880211B2 (en) 2019-05-06 2020-12-29 Seth Gregory Friedman Transaction encoding and verification by way of data-link layer fields
US10868707B1 (en) * 2019-09-16 2020-12-15 Liquid-Markets-Holdings, Incorporated Zero-latency message processing with validity checks
EP4144048A4 (en) 2020-06-08 2024-06-26 Liquid-Markets GmbH HARDWARE-BASED TRANSACTION EXCHANGE

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS5872253A (ja) 1981-10-26 1983-04-30 Nippon Telegr & Teleph Corp <Ntt> 巡回符号演算方式
CA2050123C (en) * 1990-10-11 1997-12-09 Subrahmanyam Dravida Apparatus and method for parallel generation of cyclic redundancy check (crc) codes
JPH06252777A (ja) * 1993-02-26 1994-09-09 Mitsubishi Electric Corp 巡回符号器、巡回符号復号器及び巡回符号初期値設定方法
JPH0969836A (ja) * 1995-08-31 1997-03-11 Toshiba Corp Crc符号生成回路およびcrc符号生成回路設計方法
JPH10107647A (ja) * 1996-09-25 1998-04-24 Mitsubishi Electric Corp Crc回路
JP2001285076A (ja) * 2000-03-31 2001-10-12 Ando Electric Co Ltd Crc符号演算回路、及びcrc符号演算方法
JP2002164791A (ja) * 2000-11-27 2002-06-07 Ando Electric Co Ltd Crc符号演算回路、及びcrc符号演算方法
JP3546959B2 (ja) 2001-05-31 2004-07-28 日本電気株式会社 Crc演算装置
JP2005006188A (ja) * 2003-06-13 2005-01-06 Mitsubishi Electric Corp Crc演算方法およびcrc演算装置
US7168024B2 (en) * 2003-10-03 2007-01-23 Jennic Limited Data processing system and method
US7266760B1 (en) * 2004-09-30 2007-09-04 Altera Corporation Method and apparatus for calculating cyclic redundancy checks for variable length packets
US7363574B1 (en) * 2004-10-12 2008-04-22 Nortel Networks Limited Method and system for parallel CRC calculation
JP4764973B2 (ja) * 2005-12-09 2011-09-07 独立行政法人産業技術総合研究所 Crc値の算出装置
US7941727B2 (en) * 2006-10-31 2011-05-10 Hewlett-Packard Development Company, L.P. Checksum generator for variable-length data
JP4831018B2 (ja) * 2007-08-28 2011-12-07 日本電気株式会社 並列巡回符号生成装置および並列巡回符号検査装置

Also Published As

Publication number Publication date
US8402353B2 (en) 2013-03-19
JP2010068429A (ja) 2010-03-25
US20100070839A1 (en) 2010-03-18

Similar Documents

Publication Publication Date Title
JP4935787B2 (ja) 巡回符号演算処理回路
JP4831018B2 (ja) 並列巡回符号生成装置および並列巡回符号検査装置
US8468439B2 (en) Speed-optimized computation of cyclic redundancy check codes
EP1499024B1 (en) Error-detection encoder and decoder
JP4764973B2 (ja) Crc値の算出装置
JP2005102213A (ja) メッセージのcrcを計算するための方法
US8700971B2 (en) Parallel residue arithmetic operation unit and parallel residue arithmetic operating method
US6928601B2 (en) Decoding circuit, and decoder, decoding method and semiconductor device that use the decoding circuit
US7010738B2 (en) Combinational circuit, and encoder, decoder and semiconductor device using this combinational circuit
CN117014017A (zh) 一种基于高位宽数据计算多项式除法余数的crc计算方法
JP4515651B2 (ja) 巡回冗長検査演算方法及び巡回冗長検査演算回路
Babaie et al. Double bits error correction using CRC method
US20220286145A1 (en) Pipelined forward error correction for vector signaling code channel
KR20060098269A (ko) 파이프라인 재귀적인 기술을 이용한 면적 효율적인 리드솔로몬 복호기
JP5842697B2 (ja) データ伝送システム、データ送信装置およびデータ受信装置
Lee A VLSI design of a high-speed Reed-Solomon decoder
JP3812983B2 (ja) エラー評価多項式係数計算装置
CN113821370A (zh) 一种用于数据传输错误校验的高速crc产生方法和装置
JP2016201770A (ja) Crc符号演算回路、及びその方法並びに半導体装置
JP3953397B2 (ja) リードソロモン符号化回路およびリードソロモン復号化回路
KR100340001B1 (ko) 순회 용장 부호 계산장치
JP2011211353A (ja) Crc演算回路
US7185258B2 (en) Signal processing method, signal processing system, program for signal processing, and computer-readable storage medium on which this program is recorded
JPH0964754A (ja) 誤り検出符号生成回路
CN113068046A (zh) Mpeg-2同步字节解码器中伴随式的并行产生装置

Legal Events

Date Code Title Description
RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20100702

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110803

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20111108

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20111115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20111226

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

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

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

Free format text: PAYMENT UNTIL: 20150302

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4935787

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150