JPH0969836A - Crc符号生成回路およびcrc符号生成回路設計方法 - Google Patents

Crc符号生成回路およびcrc符号生成回路設計方法

Info

Publication number
JPH0969836A
JPH0969836A JP22332495A JP22332495A JPH0969836A JP H0969836 A JPH0969836 A JP H0969836A JP 22332495 A JP22332495 A JP 22332495A JP 22332495 A JP22332495 A JP 22332495A JP H0969836 A JPH0969836 A JP H0969836A
Authority
JP
Japan
Prior art keywords
bits
information data
crc code
generation circuit
degree
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.)
Pending
Application number
JP22332495A
Other languages
English (en)
Inventor
Keiji Tsunoda
啓治 角田
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.)
Toshiba Corp
Original Assignee
Toshiba 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 Toshiba Corp filed Critical Toshiba Corp
Priority to JP22332495A priority Critical patent/JPH0969836A/ja
Publication of JPH0969836A publication Critical patent/JPH0969836A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Detection And Correction Of Errors (AREA)

Abstract

(57)【要約】 【課題】CRC符号を生成する際に、誤り検出対象の情
報データのビット数がCRC演算の並列度で割り切れな
い場合でも、回路規模と演算遅延が抑制できるCRC符
号生成回路と、任意の情報ビット数、冗長ビット数、C
RC演算の並列度の組み合わせから回路規模と演算遅延
が抑制されたCRC符号生成回路を容易に設計すること
ができるCRC符号生成回路設計方法を提供する。 【解決手段】10ビットのCRC符号を生成するため
に、元の情報データのビット数が演算の並列度8で割り
切れない場合、その余りをh、CRC符号生成のための
生成多項式G(X)の周期nとすると、e=(b−c+
h)mod nなるeを求め、情報データの終りに(c
−h)ビットの「0」シンボルを付加し、さらにX^e
を乗算してから、その乗算結果を生成多項式G(X)で
除算し、その剰余としてのCRC符号がフリップフロッ
プ回路F0〜F9から出力される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は、例えば、ATM
(Asynchronous Tranfer Mode )通信システムを介して
受信される情報中の誤りを検出するためのCRC(Cycl
ic Redundancy Check )符号を生成するCRC符号生成
回路、および、そのCRC符号生成回路を設計するため
のCRC符号生成回路設計方法に関する。
【0002】
【従来の技術】伝送路上を流れるディジタルデータに誤
りが発生したかどうかを検査するための方式として、C
RC(Cyclic Redundancy Chec
k:巡回冗長検査)というものがある。
【0003】これは、伝送する送信側において、情報ビ
ットに対して何ビットかの冗長なビット(CRCビット
あるいは検査ビットと呼ぶ)を効率よく付加して伝送
し、受信側において、その冗長ビットを用いた検査を行
うことによって、情報データに対するエラーの有無を判
定するものである。
【0004】冗長ビットの付与方法は、巡回符号の考え
方に基づいている。巡回符号は、ガロア体の規則の上
で、任意の情報データIに対して、冗長部分Rを適切に
付加することによって、これらをつないだもの(I,
R)を多項式表現したものが、必ずある決められた多項
式(これを生成多項式と呼ぶ)で割り切れるような規則
を持つものである。この規則に基づくRを冗長ビットと
して付加するのである。
【0005】なお、ここで議論するのは、2進数のディ
ジタルデータについてであるので、CRCについても2
進数のガロア体(これをGF(2)と表記する)に話を
限定することとする。
【0006】さて、このようなCRCビットの生成方法
は、一般には以下のように書かれる。生成多項式の次数
をbとすると、冗長ビットRはbビットとなる。また、
情報部Iのビット数をaとすると、最終的な符号語は、
a+bビットとなる。
【0007】既知の情報Iおよび未知の冗長R、これら
を並べた符号語Cはベクトル表現で、それぞれ I=(I[a-1]、I[a-2]、I[a-3]、…、I[0]) R=(R[b-1]、R[b-2]、R[b-3]、…、R[0]) C=(I[a-1]、I[a-2]、…、I[0]、R[b-1]、R[b-2]、…、R[0]) … (1) と表される。符号語Cは生成多項式Gで割り切れるとい
う性質を持つことから、Rを求めるためには、式(1)
におけるCの後半のR[i] (i=0〜(b-1) )を0とお
いたもの、すなわち C´=(I[a-1]、I[a-2]、…、I[0]、0 、0 、…、0 ) … (2) をGで割った余りを求めればよい。その余りがそのまま
Rに相当することになる。
【0008】このようなCRCビットR[i] を求めるた
めの割り算回路としては、例えば今井秀樹著、「符号理
論」(電子情報通信学会)にその例が記されている。こ
れには、シリアル入力回路としての実現法として2つの
方法が示されている。
【0009】第1の方法は、C′をそのまま割り算回路
に入力し、最後のデータを入力し終わった時点で、回路
に残った値が剰余Rとなるというものである。この場
合、情報部分のaビットの他に剰余に相当するbビット
分が全て入力されるまで結果がでないため、その分の計
算遅延が発生する。
【0010】この回路を具体的に多項式表現で表すこと
にする。生成多項式Gは G(X)=X^b +g[b-1]X^(b-1) +g[b-2]X^(b-2) + … +g[1]X +g[0] … (3) と表すことができる。ここでは^はべき乗を表すことと
する。またg[i] (i=0〜(b-1) )は係数であり、0
または1の値をとる。
【0011】さて、このように表現される回路におい
て、CRCビットR[i] 求める手順は次の通りである。
すなわち、 手順1:初期値としてS(X)=0とおく、 手順2:C′の係数を順番に従って1つ入力する。
【0012】 手順3:入力された値にS(X)・Xを加える。 手順4:加えた値をG(X)で割る。 手順5:割った余りをS(X)とする。
【0013】手順6:手順2から5を繰り返し、入力す
るC′の係数がなくなった時点で、S(X)の各係数が
Rの値になる。 第2の方法は、C′を用いず、Iをそのまま入力すると
結果が出力されるような回路である。これは入力時点で
まずX^b による乗算を行い、しかる後に、第1の方法
と同様の割り算回路に入力するものである。この方法で
は、C′における後半のbビットの0を出力する必要が
ない。すなわち、情報データIを入力した直後にCRC
ビットを発生することが可能となり、情報データが入力
されてから出力されるまでの回路内の遅延を最小に抑え
ることが可能となる。
【0014】この第2の方法の手順を示すと以下のよう
になる。 手順1:初期値としてS(X)=0とおく、 手順2:Iの係数を順番に従って1つ入力し、それにX
^b をかける。
【0015】 手順3:かけた値にS(X)・Xを加える。 手順4:加えた値をG(X)で割る。 手順5:割った余りをS(X)とする。
【0016】手順6:手順2から5を繰り返し、入力す
るC′の係数がなくなった時点で、S(X)の各係数が
Rの値になる。 以上はシリアル入力によるものであったが、例えば広帯
域ISDNのような超高速の通信を行うためのCRC演
算をシリアルで行うことは、特殊で高価なプロセスを用
いない限りは実現が困難である。
【0017】しかしながら、上記文献にはパラレル回路
においてCRC符号生成を実現する方法については記さ
れていない。特に、CRC符号生成には上述したように
割り算回路を用いており、任意の並列度(CRC符号生
成回路へ入力される情報データの並列ビット数)で計算
することを考えた場合、情報ビット数aや冗長ビット数
bがこの並列度cと合わない場合に回路としてどのよう
に処理すべきか、という解が示されていない。
【0018】並列度cの選択は、ハードウェアの設計の
場合、例えば、使用するクロックの種類をなるべく減ら
すという観点、あるいは、読み出し/書き込みを行うR
AM等の並列度に合わせるという観点といったことから
の制限があり、必ずしもaとの関係から決定することは
できない。
【0019】また、このCRCの生成をソフトウェアで
実現することを考えると、データ読み込みの並列度は、
CPUのデータ幅である、16、32といった値に制限
され、これは明らかにaと無関係に決定されている。
【0020】CRCを並列に演算する方法について公知
な文献としては、例えば、特開平4−363927号公
報がある。これには、8ビットパラレル入力にしたAT
MセルヘッダのHEC(Header Error C
ontrol)の生成方法が書かれている。ATMセル
ヘッダは8次の多項式を用いた短縮巡回符号であり、そ
の生成方法はCRC符号の生成と同じである。
【0021】この場合は、情報ビットが32ビットと8
ビットの倍数であることから、情報ビットにX^8 をか
けたものを入力することによって、HEC付加に対する
遅延をなくすような生成回路が可能となっている。すな
わち並列にした場合でも符号化のための遅延を減らすこ
とができることを示している。
【0022】しかし、それはあくまで情報ビット数aが
並列度cの倍数であるときであり、それが満たされない
場合の一般的な方法については示されていない。このよ
うにこれまで、並列度cと情報ビット数aとの関係を考
慮したCRC符号生成回路の検討はなされていなかっ
た。
【0023】
【発明が解決しようとする課題】上述したように、従来
の方式においては、CRC生成はシリアルな生成回路を
用いるものであるか、パラレルな回路であっても情報ビ
ット数や冗長ビット数が並列度の倍数であるような簡単
な場合に限られていた。CRCのビット数は情報ビット
数との関係で決まるものであり、従って必ずしも情報ビ
ット数がCRC演算の並列度の倍数に一致しないにも関
わらず、そのような場合の検討がなされていなかった。
【0024】本発明はこの点を鑑みてなされたものであ
り、その目的とする所は、第1には、誤り検出対象の情
報データのビット数がCRC演算の並列度の倍数でない
場合でもCRC符号の生成遅延および回路規模がなるべ
く小さくなるようなCRC符号生成回路を提供すること
である。
【0025】また、第2の目的としては、任意の情報ビ
ット数、冗長ビット数、生成回路の並列度が与えられた
時に、CRC符号の生成遅延および回路規模が抑制され
たCRC符号生成回路を容易に設計することができるC
RC符号生成回路設計方法を提供することである。
【0026】
【課題を解決するための手段】本発明のCRC符号生成
回路は、あらかじめ定められた並列度で並列入力される
情報データをあらかじめ定められた生成多項式を用いて
除算して、その剰余を求めることにより、前記情報デー
タに対する誤り検出用冗長符号であるCRC符号を生成
するCRC符号生成回路であって、前記情報データのビ
ット数を前記並列度で除算して得られる剰余を前記並列
度から減算して得られた値と同数の「0」を付加した前
記情報データに対し、前記CRC符号のビット数から前
記情報データに付加した「0」の数を減算して得られた
値について前記生成多項式の周期によるモジュロ演算を
行った結果得られた値を次数とする単項式を乗算した
後、前記生成多項式を用いた除算を行う演算手段と、こ
の演算手段での除算による剰余を前記情報データに対す
るCRC符号として出力する出力手段とを具備し、情報
データのビット数がCRC演算の並列度で割り切れない
場合でも効率的なCRC符号生成回路が実現できる。す
なわち、回路への情報入力の並列度を変更せずに、ま
た、従来の遅延の少ないCRC生成方法と同等の構成を
形成できることによって、情報データのビット数が並列
度の倍数である場合の従来の回路構成と比較して、回路
規模を増やすことなく、また遅延もなるべく少ない方法
でCRC符号の生成が可能となる。
【0027】また、本発明のCRC符号生成回路設計方
法は、任意の並列度で並列入力される任意のビット数の
情報データを所望の生成多項式を用いて除算して、その
剰余を求めることにより、前記情報データに対する誤り
検出用冗長符号であるCRC符号を生成するCRC符号
生成回路を設計するCRC符号生成回路設計方法であっ
て、前記情報データのビット数、前記情報データの並列
度、前記CRC符号のビット数があらかじめ与えられ、
前記情報データのビット数が前記並列度の倍数のとき、
前記情報データに対し、前記CRC符号のビット数を次
数とする単項式を乗算した後、所望の生成多項式を用い
た除算を行うことにより前記CRC符号を生成するCR
C符号生成回路を設計するために必要な係数値を算出
し、前記情報データのビット数が前記並列度の倍数でな
いとき、前記情報データのビット数を前記並列度で除算
して得られる剰余を前記並列度から減算して得られた値
と同数の「0」を付加した前記情報データに対し、前記
CRC符号のビット数から前記情報データに付加した
「0」の数を減算して得られた値について前記生成多項
式の周期によるモジュロ演算を行った結果得られた値を
次数とする単項式を乗算した後、前記所望の生成多項式
を用いた除算を行うことにより前記CRC符号を生成す
るCRC符号生成回路を設計するために必要な係数値を
算出し、この算出された係数値をもとに、所望のCRC
符号生成回路を設計することを特徴とし、任意の情報ビ
ット数、冗長ビット数(CRC符号のビット数)、そし
てCRC演算の並列度を与えることにより、情報ビット
数が並列度で割り切れるか否かの判断から、CRC符号
の生成遅延および回路規模が抑制されたCRC符号生成
回路を容易に設計することができ、また、多種のCRC
符号生成回路を設計するにあたって、その設計の手間を
簡略化することが可能となる。
【0028】また、本発明のCRC符号生成回路設計方
法は、任意の並列度で並列入力される任意のビット数の
情報データを所望の生成多項式を用いて除算して、その
剰余を求めることにより、前記情報データに対する誤り
検出用冗長符号であるCRC符号を生成するCRC符号
生成回路を設計するCRC符号生成回路設計方法であっ
て、前記情報データのビット数、前記情報データの並列
度、前記CRC符号のビット数があらかじめ与えられ、
前記情報データのビット数が前記並列度の倍数のとき、
前記情報データに対し、前記CRC符号のビット数を次
数とする単項式を乗算した後、所望の生成多項式を用い
た除算を行うことにより前記CRC符号を生成するCR
C符号生成回路を設計するために必要な係数値を算出
し、前記情報データのビット数が前記並列度の倍数でな
いとき、前記情報データのビット数を前記並列度で除算
して得られる剰余を前記並列度から減算して得られた値
と同数の「0」を付加した前記情報データに対し、前記
CRC符号のビット数から前記情報データに付加した
「0」の数を減算して得られた値について前記生成多項
式の周期によるモジュロ演算を行った結果得られた値を
次数とする単項式を乗算した後、前記所望の生成多項式
を用いた除算を行うことにより前記CRC符号を生成す
るCRC符号生成回路を設計するために必要な係数値を
算出し、前記CRC符号のビット数に応じて設けられる
各フリップフロップ回路の入力端子には、前記算出され
た係数値をもとに決定されるフリップフロップ回路の出
力と前記情報データの並列入力データの組み合わせによ
る排他的論理和をとった結果を入力するよう接続するこ
とにより、所望のCRC符号生成回路を設計することを
特徴とし、CRC符号の生成遅延および回路規模が抑制
されたCRC符号生成回路を容易に設計することがで
き、また、多種のCRC符号生成回路を設計するにあた
って、その設計の手間を簡略化することが可能となる。
【0029】
【発明の実施の形態】以下、本発明の一実施形態につい
て図面を参照して説明する。なお、ここでは、誤り検出
の対象となる情報データとして、例えば、ATM(As
ynchronous Transfer Mode)
通信網において用いられるセルと呼ばれる固定長パケッ
トの場合について説明する。
【0030】図1は、ATM通信網におけるOAM(Op
eration And Maintenance )セルの構成を示したもので
ある。OAMセルは、ATM通信網内の伝送路や交換機
の故障発生あるいは回復を通知するための障害検出/通
知機能、セルの伝送品質や転送遅延時間をオンラインで
測定監視するための品質管理機能等を提供するためのも
のである。
【0031】図1に示すように、OAMセルは、大きく
分けて、5バイトのセルヘッダ11、48バイトのセル
ペイロード12で構成され、さらに、セルペイロード1
2は、374ビットのOAM情報フィールド13と、こ
のOAM情報フィールド13に対して演算される10ビ
ットのCRCビット格納領域14で構成される(以下、
13と14を合わせてCRC−10符号あるいはCRC
符号と呼ぶこととする)。
【0032】すなわち情報ビット数a=374、冗長ビ
ット数b=10となる。また、生成多項式は、G(X)
=X^10+X^9 +X^5 +X^4 +X+1である。
【0033】ここで、本発明の実施形態について説明す
る前に、図1に示したセルのCRC−10符号の生成方
法およびその生成回路の従来例について説明する。ま
ず、第1の従来例として、CRC−10符号のシリアル
な生成回路の構成の具体例を図2と図3に示す。
【0034】図2は、情報ビットの後に10ビットの
「0」シンボルを付加したものを入力する方法をもとに
した生成回路で、フリップフロップ回路F0〜F9、排
他的論理和回路21a〜21dで構成される。
【0035】フリップフロップ回路F0〜F9のあるク
ロックタイミングにおける出力値をそれぞれF[0] 、F
[1] 、…、F[9] 、次のクロックタイミングで各フリッ
プフロップ回路F0〜F9から出力される値をF[i]new
(i=0〜9)とすると、順次新しいデータzが入力
された時の回路の動作は、以下のようになる。
【0036】 F[0]new =z+F[9] F[1]new =F[0]+F[9] F[2]new =F[1] F[3]new =F[2] F[4]new =F[3]+F[9] F[5]new =F[4]+F[9] F[6]new =F[5] F[7]new =F[6] F[8]new =F[7] F[9]new =F[8]+F[9] … (4) なお、式(4)で「+」は、排他的論理和をとることを
示している。
【0037】初期値F[i] =「0」(S(x)=0
の状態)から、データdが1ビット入力される度に、各
フリップフロップ回路F0〜F9の出力が1ビットシフ
トし(S(x)・xを加算)、その結果を生成多項式G
(X)=X^10+X^9 +X^5+X^4 +X+1で除
算して(排他的論理和回路21a〜21dで、それぞれ
の入力値の排他的論理和をとる)、その余りを新たにS
(x)とする。再び新たなデータdが1ビット入力され
て、以上の処理を情報データdの全てのビットが入力さ
れるまで繰り返した結果、各フリップフロップ回路F0
〜F9の出力は冗長ビット(CRCビット)Rに等しく
なり、 R=(F[9]、F[8]、F[7]、F[6]、F[5]、F[4]、F[3]、F[2]、F[1]、F[0]) … (5) となる。
【0038】図3は、情報データaビットの入力に対
し、X^10を行ったものに割り算回路を適用するCRC
符号生成回路で、フリップフロップ回路F0〜F9、排
他的論理和回路31a〜31eで構成される。
【0039】図2の説明と同様に記述すると、入力デー
タzに対して各フリップフロップの動作は、 F[0]new =z+F[9] F[1]new =z+F[0]+F[9] F[2]new =F[1] F[3]new =F[2] F[4]new =z+F[3]+F[9] F[5]new =z+F[4]+F[9] F[6]new =F[5] F[7]new =F[6] F[8]new =F[7] F[9]new =z+F[8]+F[9] … (6) となる。
【0040】初期値F[i] =「0」(S(x)=0の状
態)から、データzが1ビット入力されると、それにX
^10をかけるとともに(排他的論理和回路31aで、フ
リップフロップ回路F9の出力値との排他的論理和をと
る)、各フリップフロップ回路F0〜F9の出力が1ビ
ットシフトされ(さらに、S(x)・xを加算)、その
結果を生成多項式G(X)=X^10+X^9 +X^5 +
X^4 +X+1で除算して(排他的論理和回路31b〜
31eで、それぞれの入力値の排他的論理和をとる)、
その余りを新たにS(x)とする。再び新たなデータz
が1ビット入力されて、以上の処理を情報データzの全
てのビット(aビット)が入力されるまで繰り返した結
果、各フリップフロップ回路F0〜F9の出力は冗長ビ
ット(CRC符号)Rに等しくなる。すなわち、aビッ
トの情報が入った後の各フリップフロップF0〜F9の
出力を式(5)のように並べて、冗長ビット(CRC符
号)が得られることになる。
【0041】このように図3に示した回路構成は、図2
の場合よりもより少ない遅延で回路規模を増大させるこ
となく、CRC符号の生成が可能である。なお、これら
の図において、冗長ビットは必要な信号が全て入力され
た後の、各フリップフロップF0〜F9からの出力信号
である。
【0042】次に、第2の従来例として、CRC−10
符号の生成を2ビットパラレルで行う場合について説明
する。これは、CRC符号生成回路の分類として、パラ
レルであるが、情報ビット数を並列度で割った余りhが
「0」となる場合である。この場合は、やはり図3に示
したように入力データに対してX^10を施した形で入力
させる方法が優れていることになる。図4に、この2ビ
ットパラレル入力のCRC符号生成回路の具体的な回路
構成を示す。
【0043】図4に示す2ビットパラレル入力のCRC
符号生成回路は、フリップフロップ回路F0〜F9、排
他的論理和回路41a〜41hで構成されている。情報
データは、2ビットのデータz1 、z0 として入力さ
れ、それらの値をz[1] 、z[0] と表し、z[1] の方が
z[0] よりも上位にあるものとすると、各フリップフロ
ップ回路F0〜F9の動作は、以下のようになる。
【0044】 F[0]new =z[0]+z[1]+F[8]+F[9] F[1]new =z[0]+F[8] F[2]new =z[1]+F[0]+F[9] F[3]new =F[1] F[4]new =z[0]+z[1]+F[2]+F[8]+F[9] F[5]new =z[0]+F[3]+F[8] F[6]new =z[1]+F[4]+F[9] F[7]new =F[5] F[8]new =F[6] F[9]new =z[0]+z[1]+F[7]+F[8]+F[9] … (7) 実際の回路の構成にあたっては、フリップフロップ回路
間のビット移動の遅延の許容範囲や、各回路素子の出力
パワーの限界を勘案しながら、排他的論理和回路の数を
減らして、回路規模がなるべく小さくなるよう工夫をす
るのが一般的である。図4の場合では、式(7)によれ
ば、18個あるはずの排他的論理和回路(「+」の合計
数に相当する)を8個に削減している。
【0045】図4の回路構成をより詳細に述べる。排他
的論理和回路を用いた中間結果をm[i](i=1〜
3)として、式(7)の動作を図4に従って記述する
と、 m[1]=z[0]+F[8] m[2]=z[1]+F[9] m[3]=m[1]+m[2] F[0]new =m[3] F[1]new =m[1] F[2]new =m[2]+F[0] F[3]new =F[1] F[4]new =m[3]+F[2] F[5]new =m[1]+F[3] F[6]new =m[2]+F[4] F[7]new =F[5] F[8]new =F[6] F[9]new =m[3]+F[7] … (8) となり、「+」の数、すなわち、排他的論理和回路の数
が8個で済むことになる。
【0046】次に、第3の従来例として、今度は、8ビ
ットパラレルで処理する場合を考える。この場合は、情
報のビット数aが並列度cで割り切れない場合である。
【0047】すなわち、これまでの従来例のように、入
力データに対し、X^10による積算を行った後に割り算
を行うとすると、最後に6ビットの余りができてしま
い、その部分の計算が複雑になってしまう。
【0048】入力データを無理やりX^10でかけて、割
り算を行った場合、まず最後の列以外はこれまでと同じ
様な回路構成をとっている。すなわち、入力データd7
〜d0の値を先頭から順に、z[7] 、z[6] 、z[5] 、
…、z[0] とし、図2の説明と同様に記述すると、8ビ
ットパラレル入力のCRC符号生成回路における、最後
の6ビット以外の入力データに対する各フリップフロッ
プの動作は、 F[0]new =z[0]+z[1]+z[2]+z[3]+z[4]+F[2]+F[3]+F[4]+F[5]+F[6] F[1]new =z[0]+z[5]+F[2]+F[7] F[2]new =z[1]+z[6]+F[3]+F[8] F[3]new =z[2]+z[7]+F[4]+F[9] F[4]new =z[0]+z[1]+z[2]+z[4]+F[2]+F[3]+F[4]+F[6] F[5]new =z[0]+z[4]+z[5]+F[2]+F[6]+F[7] F[6]new =z[1]+z[5]+z[6]+F[3]+F[7]+F[8] F[7]new =z[2]+z[6]+z[7]+F[4]+F[8]+F[9] F[8]new =z[3]+z[7]+F[0]+F[5]+F[9] F[9]new =z[0]+z[1]+z[2]+z[3]+F[1]+F[2]+F[3]+F[4]+F[5] … (9) となる。
【0049】最後の6ビットの入力データを先頭から
z′[5] 、z′[4] 、…、z′[0] とし、図2の説明と
同様に記述すると、8ビットパラレル入力のCRC符号
生成回路における、最後の6ビット入力データに対する
各フリップフロップの動作は、 F[0]new = z´[0]+ z´[1]+ z´[2]+ z´[3]+ z´[4] +F[4]+F[5]+F[6]+F[7]+F[8] F[1]new = z´[0]+ z´[5]+F[4]+F[9] F[2]new = z´[1]+F[5] F[3]new = z´[2]+F[6] F[4]new = z´[0]+ z´[1]+ z´[2]+ z´[4]+F[4]+F[5]+F[6]+F[7] F[5]new = z´[0]+ z´[4]+ z´[5]+F[4]+F[8]+F[9] F[6]new = z´[1]+ z´[5]+F[0]+F[3]+F[8] F[7]new = z´[2]+F[1]+F[6] F[8]new = z´[3]+F[2]+F[7] F[9]new = z´[0]+ z´[1]+ z´[2]+ z´[3]+F[3]+F[4]+F[5]+F[6]+F[7] … (10) となる。
【0050】このように、回路としてはこれら2種類の
回路の組み合わせとなってしまい、回路規模は非常に増
大してしまうことになる。さて、ここで、本発明のCR
C符号生成回路を考える。まず、その原理について説明
する。
【0051】本発明のCRC符号生成回路は、まず情報
データのビット数aに(c−h)ビットの「0」シンボ
ルを加えることによって、(a+c−h)ビットの入力
情報とする。aをcで割った余りがhであることから、
a−hはcで割り切れ、よって、a+c−hはcで割り
切れる。
【0052】前述の従来例によれば、例えば最後の情報
入力はhビットパラレルであり、このためにcビットパ
ラレル用のCRC符号生成回路とhビットパラレル用の
CRC符号生成回路を両方用意し、それらを組み合わせ
た回路としていたために、回路規模が大きくなってしま
うという欠点があった。
【0053】しかし、本発明では、全ての入力がcビッ
トパラレルで行われるので、CRC生成回路は1種類設
ければよく、回路規模を小さく抑えることができる。詳
しくは、aがcで割り切れるような場合と同程度の回路
規模にすることが可能である。すなわち、本発明のCR
C符号生成回路は、情報データのビット数aが演算の並
列度cで割り切れない場合に効率的なCRC生成回路が
実現できることに特徴がある。
【0054】前述の従来例によれば、CRC符号生成方
法は、情報データに対し、bビット分の「0」を付加す
るか、あるいはX^b の積算を行うか、のいずれかの操
作を行うものであった。
【0055】しかしながら、実は、上記2つの操作は回
路上で異なるが、数式上は同じことを行っているに過ぎ
ない。従って、ビット数(c−h)分の「0」の付加と
X^e の積算とを両方行うことによって、(c−h)と
eの和がbに等しくなれば、それは結果として同じCR
C符号生成回路と言うことができる。
【0056】従って、eの値として e=b−(c−h) =b−c+h … (11) とすれば、CRC符号生成回路が実現できることがわか
る。
【0057】しかしながら、式(11)の値は、cの値
によっては負となることがある。そこで、その場合に
は、eの値は式(11)のeにCRC符号生成のための
生成多項式G(X)の周期nを加えるとよい。
【0058】一般に、値f(X)に対して、f(X)を
生成多項式G(X)で割った余りをr(X)とすると、
生成多項式G(X)の周期nは、 r(X)=f(X)mod G(X) ={r(X)・X^n }mod G(X) ={f(X)・X^n }mod G(X) … (12) を満たすものである。従って、これを利用すると、入力
情報をf′(X)とすると、それにX^e の積算を行っ
てからG(X)による割り算を行うことは、f′(X)
にX^(e+n) の積算を行ってからG(X)で割ることと
等価である。すなわち、 r(X)={f′(X)・X^e }mod G(X) ={f′(X)・X^(e+n) }mod G(X) … (13) となる。従って、式(11)をより一般的に書き換える
と、 e=(b−c+h)mod n … (14) となる。
【0059】すなわち、式(14)に示されるようなe
の値を用いて、情報データにX^eの積算を行うことに
より、最初に付加した(c−h)ビットの「0」シンボ
ルと合わせて、合計bビット分のシンボル付加あるいは
Xのべき乗と等価となる。
【0060】これによって、情報ビット数aが並列度c
で割り切れない場合においても、従来から提案されてい
た、Xのべき乗を行った後に生成多項式による割り算処
理を行う、という同等の形を作ることが可能となる。
【0061】以上述べた2点、すなわち、回路への情報
入力の並列度を変更しないこと、および従来の遅延の少
ないCRC符号生成方法と同等の形を形成出来ることに
より、情報データのビット数が並列度の倍数である場合
に限る従来例と比較して、回路規模を増やすことなく、
また遅延もなるべく少ない方法でCRC符号の生成が可
能となる。
【0062】さて、このようにして求められたeの値を
使って、実際にCRC符号生成回路を構成するには、変
数jを0からc−1まで順に変化させながら s[b−1,j] X^(b-1) +s[b-2,j] X^(b-2) +…s[1,j] X+s
[0,j] =X^(e+j)modG(X) … (15) となるような係数s[i,j] (i=0〜b-1 )を求め、ま
た、変数kを0からb−1まで変化させながら、 t[b-1,k] X^(b-1) +t[b-2,k] X^(b-2) +…t[1,k] X+t[0,k] =X^(c+k)modG(X) … (16) となるような係数t[i,k] (i=0〜b-1 )の値を求め
る必要がある。なお、これらs[i,j] 、t[i,k] はそれ
ぞれ0または1の値をとるものである。
【0063】そして、これらの係数を用いて、一般的な
CRC符号生成回路の構成を記述することができる。す
なわち、情報データをcビットパラレル入力として、各
パラレル入力データd0〜d(c−1)の値をa[j]
(j=0〜c-1 )とし、a[c-1] を最も上位の入力ビッ
トとする。また、CRC符号生成回路にはbビットのC
RC符号を表現するためのb個のフリップフロップ回路
F0〜F(b−1)があり、これらの出力値をやはりF
[i] (i=0〜b-1 )とし、F[b-1] を最も上位の値と
する。すると、1回の動作でシフトした結果として、各
フリップフロップ回路から出力される値F[i] new
(i=0〜b-1 )値は、それぞれ
【0064】
【数1】 という形で表現されることになる。
【0065】係数係数s[i,j] 、t[i,k] はそれぞれ
「0」または「1」の値をとり、また、式(17)の記
述において、「+」を排他的論理和回路に置き換え、
「・(乗算)」を論理積回路に置き換えるとフリップフ
ロップ回路F0〜Fb-1 、入力データd(c−1)〜d
0、排他的論理和回路の接続関係を示した関係式となる
ことがわかる。これを具体的に各回路素子(フリップフ
ロップ回路F0〜Fb-1 、排他的論理和回路、論理積回
路)を用いて示した例が図5である。
【0066】図5から明らかなように、入力データにX
^e を乗算したものと1つ前のフリップフロップ回路の
出力との排他的論理和について、係数s[i,j] が関連
し、また、その排他的論理和をとったものを初期の値と
して割り算を行うための排他的論理和として係数t[k,
i] が関わっている。
【0067】これらの係数s[i,j] 、t[k,i] のうち、
値が「0」であるものについては、省略できる。すなわ
ち、係数s[i,j] が「0」のとき、各係数s[i,j] のそ
れぞれに対応して、その各値が入力される論理積回路で
は、その他端から入力される入力データの値a[j] にか
かわらず、常に「0」が出力されるため、その論理積回
路の出力が接続されている排他的論理和回路の出力は、
その排他的論理和回路の他端から入力される値がそのま
ま出力されることになり、結局、係数s[i,j]の値が
「1」であるところの排他的論理和回路においてのみ、
その他端から入力される1つ前のフリップフロップ回路
の出力値と、a[j] との排他的論理和がとられるように
なっている。
【0068】また、係数t[i,k] が「0」のとき、各係
数t[i,k] のそれぞれに対応して、その各値が入力され
る論理積回路では、その他端から入力される各フリップ
フロップ回路の出力値にかかわらず、常に「0」が出力
されるため、その論理積回路の出力が接続されている排
他的論理和回路の出力は、その排他的論理和回路の他端
から入力される値(他のフリップフロップ回路からの出
力値)がそのまま出力されることになり、結局、係数t
[i,k] の値が「1」であるところの排他的論理和回路
のみ、割り算を行うための各フリップフロップ回路の出
力値の間の排他的論理和がとられるようになっている。
【0069】そして、これら係数s[i,j] 、t[i,k] に
関する演算結果は、次のデータ入力のタイミングで、各
フリップフロップ回路F0〜F(b−1)の入力にフィ
ードバックされるようになっている。
【0070】また、残ったものについても、回路規模を
小さくする点から、適切な組み合わせにより排他的論理
和の数を減らすことが可能である。このように、eの計
算に関わる部分以外はほとんど従来の手法を用いること
ができ、複雑度をそれほど増すことなくCRC符号生成
回路を構成することができる。
【0071】さて、ここで、本発明に係る第1の実施形
態として、8ビットパラレル入力のCRC符号生成回路
を考えることにする。前述同様、10ビットのCRC符
号で並列度が8、また374ビットの情報データは、8
ビットパラレルにすると6ビット余る。
【0072】本実施形態のCRC符号生成回路では、ま
ず、情報ビットの最後に8−6=2ビットの「0」シン
ボルを付加し、入力されたデータはX^10を乗算するの
ではなく、 X^e =X^(10-8+6)=X^8 … (18) を乗算する。しかる後に割り算回路による演算がなされ
ることになる。
【0073】このようにすると情報ビットは見かけ上3
76ビットとなるので、最後まで8ビットパラレルによ
る入力を行うことが可能である。さて、このようにして
設計されるCRC符号生成回路の構成例を図6に示す。
【0074】すなわち、図6において、CRC符号生成
回路は、先に求めたeの値(e=8)を用い、式(1
5)より係数s[i,j] (i=0〜9、j=0〜7)を求
め、同様にeの値(e=8)を用いて式(16)より係
数t[i,k] (i=0〜9、k=0〜9)を求め、さら
に、その結果と式(17)で示される各フリップフロッ
プ回路F0〜F9と入力データd7〜d0の接続関係式
をもとに回路を構成したものである。また、たとえば、
係数s[i,j] 、係数t[i,k] を図5に当てはめても容易
に回路が構成でき、図5のうち、10個のフリップフロ
ップ回路F0〜F9と、係数s[i,j] 、t[k,i] のう
ち、値が「1」であるところの排他的論理和回路で構成
できる。
【0075】図6に示す構成の回路の動作は、8ビット
パラレルの入力データd7〜d0の値を先頭から順に、
z[7] 、z[6] 、z[5] 、…、z[0] として、図2の説
明と同様に記述すると、 F[0]new =z[2]+z[3]+z[4]+z[5]+z[6]+F[2]+F[3]+F[4]+F[5]+F[6] F[1]new =z[2]+z[7]+F[2]+F[7] F[2]new =z[3]+F[3]+F[8] F[3]new =z[4]+F[4]+F[9] F[4]new =z[2]+z[3]+z[4]+z[6]+F[2]+F[3]+F[4]+F[6] F[5]new =z[2]+z[6]+z[7]+F[2]+F[6]+F[7] F[6]new =z[3]+z[7]+F[3]+F[7]+F[8] F[7]new =z[4]+F[4]+F[8]+F[9] F[8]new =z[0]+z[5]+F[0]+F[5]+F[9] F[9]new =z[2]+z[3]+z[4]+z[5]+F[1]+F[2]+F[3]+F[4]+F[5] … (19) となる。
【0076】式(19)は、一見式(9)とそれほど変
化がないにも関わらず、従来の方式では式(9)と式
(10)を使い分けなければならなかった。しかし、こ
の第1の実施形態では、式(19)のみを用いればよ
く、回路規模を増大させる心配がない。
【0077】この式(19)も実際の回路の構成にあた
り、排他的論理和回路の数を減らして、回路規模がなる
べく小さくなるように工夫をすることが可能である。例
えば、図6の場合について、排他的論理和回路を用いた
中間結果をm[i](i=1〜16)として、式(1
9)の動作を記述すると、 m[1]=z[0]+F[0] m[2]=z[1]+F[1] m[3]=z[2]+F[2] m[4]=z[3]+F[3] m[5]=z[4]+F[4] m[6]=z[5]+F[5] m[7]=z[6]+F[6] m[8]=z[7]+F[7] m[9]=m[3]+m[4] m[10] =m[3]+m[8] m[11] =m[4]+F[8] m[12] =m[5]+F[9] m[13] =m[1]+m[6] m[14] =m[6]+m[7] m[15] =m[5]+m[9] m[16] =m[2]+m[6] F[0]new =m[14]+m[15] F[1]new =m[10] F[2]new =m[11] F[3]new =m[12] F[4]new =m[12]+m[15] F[5]new =m[7]+m[10] F[6]new =m[8]+m[10] F[7]new =F[8]+m[12] F[8]new =z[9]+m[13] F[9]new =m[15]+m[16] … (20) となり、式(19)において47個あった「+」の数、
すなわち、排他的論理和回路の数が23個で済むことに
なる。
【0078】一方、他の従来例として、情報データのビ
ット列に「0」を10個付加する方法もあるが(図2お
よび従来技術の説明参照)、これは以前から述べている
ように、「0」を付加することによって、その入力に要
する余分の時間の分だけの遅延が生じることになる。こ
こでは、8ビットパラレルなので、入力信号が1ライン
増え、よって1クロックの遅延が生じる。
【0079】しかしながら、図6に示したような回路構
成においても、入力の2ビットをダミーの「0」信号と
しており、この2ビットの出力が遅れると、図1の最後
から2列目の8ビットがそろって出力されず、結果とし
て情報ビット例に「0」を10個付加した場合と全く同
じ遅延となってしまう。
【0080】そこで、最後のデータが入力された後、フ
リップフロップ回路のうち上位の2つ、すなわち、F9
とF8については、図6に示すように、フリップフロッ
プへの入力の直前のデータを用いて、その値を出力に用
いることとする。これは、ハードウェアのタイミング設
計を考えて、出力に至るまでの排他的論理和演算の数を
減らしたり、またその入出力における信号のファンアウ
ト数などをなるべく減らすような回路設計、さらにはL
SI設計においては、トランジスタレベルのレイアウト
まで考慮すれば、信号の変化がタイミング的に十分間に
合うようにすることが可能である、との根拠に基づいて
いる。
【0081】なお、全ての情報データが入力されたと
き、残りの8個のフリップフロップ回路F0〜F7につ
いては、通常通り、そこからの出力信号をそのままCR
C符号の各ビット値とすることで、全てのデータを入力
タイミングに対して遅延なく生成、送出することが可能
となる。
【0082】次に、第2の実施形態として、少し特殊な
例ではあるが、30ビットパラレル入力のCRC符号生
成回路について説明する。この場合も、情報データのビ
ット数は並列度で割ることができない。すなわち、情報
データのビット数が374ビットなので、14ビットの
半端ができてしまう。従って、第3の従来例のようなX
^10による積算を行う方法では、回路が複雑になってし
まう。また、CRC符号部分を「0」シンボルとおいた
場合も374+10=384ビットであり、30ビット
パラレルでは最後が24ビットパラレルとなるため、X
^10を行う場合と全く同じように複雑な回路となってし
まう。
【0083】そこで、まず情報データIに対して、並列
度30から情報ビットの余り14を引いた値で与えられ
る16個の「0」シンボルを最後尾に付加することを考
える。これで入力情報データは390ビットとなる。
【0084】次に、生成多項式G(X)=X^10+X^
9 +X^5 +X^4 +X+1の周期を考える。G(X)
を多項式分解すると、 G(X)=(X+1)(X^9 +X^4 +1) … (21) となる。周期kとはX^k +1をその多項式で割って割
り切れるようなkのうち最小のものをいう。ここでX^
9 +X^4 +1は原始多項式であることが知られてお
り、よって、その周期は2^9 −1=511であること
がわかる。X+1の周期は明らかに1なので、X^511
+1を多項式分解した中に、X+1も確実に入る。よっ
て、G(X)の周期は511となる。
【0085】回路設計において、情報データIにX^e
を乗算した後に割り算を行うが、その時の値eは、前述
したように、情報データIのビット数a、冗長データ
(CRC符号)のビット数b、演算の並列度c、aをc
で割った余りをh、生成多項式G(x)の周期nとした
とき、(b−c+h)を周期nで割った余りとなる。す
なわち、 e=(10−30+14)mod 511 =505 … (22) となる。すなわち、入力データは、まずX^505 による
乗算を施された後に、通常の割り算回路に入力されるこ
ととなる。
【0086】さて、前述したように、求められたeの値
を使って、まず、式(15)より係数s[i,j] (i=0
〜9、j=0〜29)を求め、式(16)より係数t[i,
k] (i=0〜9、k=0〜9)を求める。そして、こ
れら求められた係数s[i,j] 、t[i,k] と式(17)で
示される各フリップフロップ回路F0〜F9と入力デー
タd29〜d0の接続関係式をもとに回路を構成する
と、例えば、図7、図8に示した回路構成が得られる。
【0087】図7は、入力データd29〜d0を各フリ
ップフロップ回路F0〜F9の入力用にマージする部分
であり、そのための回路の一例を示している。その動作
は、30ビットパラレルの入力データd29〜d0の値
を先頭から順に、z[29] 、z[28] 、z[27] 、…、
z[0] 、フリップフロップ回路F0〜F9へ関連付けさ
れる出力データA0〜A9の値をそれぞれA[0]〜A
[9]として、図2の説明と同様に記述すると、具体的
には、以下のような式で表される。
【0088】 A[0]=z[3]+z[4]+z[5]+z[6]+z[16]+z[17]+z[18]+z[19]+z[20]+z[25] A[1]=z[3]+z[7]+z[16]+z[21]+z[25]+z[26] A[2]=z[0]+z[4]+z[8]+z[17]+z[22]+z[26]+z[27] A[3]=z[0]+z[1]+z[5]+z[9]+z[18]+z[23]+z[27]+z[28] A[4]=z[1]+z[2]+z[3]+z[4]+z[5]+z[10]+z[16]+z[17] +z[18]+z[20]+z[24]+z[25]+z[28]+z[29] A[5]=z[2]+z[11]+z[16]+z[20]+z[21]+z[26]+z[29] A[6]=z[3]+z[12]+z[17]+z[21]+z[22]+z[27] A[7]=z[0]+z[4]+z[13]+z[18]+z[22]+z[23]+z[28] A[8]=z[1]+z[5]+z[14]+z[19]+z[23]+z[24]+z[29] A[9]=z[2]+z[3]+z[4]+z[5]+z[15]+z[16]+z[17]+z[18]+z[19]+z[24] … (23) となる。
【0089】また、図8は、図7のデータA0〜A9を
10個のフリップフロップ回路F0〜F9に入力する部
分の回路図を示している。各フリップフロップの動作は
式(15)におけるA[i] (i=0〜9)を使って以下
の式の通りに記述できる。
【0090】 F[0]new =A[3]+A[4]+A[7]+A[8]+F[3]+F[4]+F[7]+F[8] F[1]new =A[0]+A[3]+A[5]+A[7]+A[9]+F[0]+F[3]+F[5]+F[7]+F[9] F[2]new =A[0]+A[1]+A[4]+A[6]+A[8]+F[0]+F[1]+F[4]+F[6]+F[8] F[3]new =A[0]+A[1]+A[2]+A[5]+A[7]+A[9] +F[0]+F[1]+F[2]+F[5]+F[7]+F[9] F[4]new =A[1]+A[2]+A[4]+A[6]+A[7]+F[1]+F[2]+F[4]+F[6]+F[7] F[5]new =A[0]+A[2]+A[4]+A[5]+F[0]+F[2]+F[4]+F[5] F[6]new =A[1]+A[3]+A[5]+A[6]+F[1]+F[3]+F[5]+F[6] F[7]new =A[0]+A[2]+A[4]+A[6]+A[7]+F[0]+F[2]+F[4]+F[6]+F[7] F[8]new =A[1]+A[3]+A[5]+A[7]+A[8]+F[1]+F[3]+F[5]+F[7]+F[8] F[9]new =A[2]+A[3]+A[6]+A[7]+A[9]+F[2]+F[3]+F[6]+F[7]+F[9] … (24) この回路を用いることによって、半端な部分の入力に対
し、複雑な処理をすることなく、同じ1種類の回路によ
る処理によって、CRCを計算することができる。
【0091】また、CRC符号はこの図7、図8に示し
た回路において、各フリップフロップ回路F0〜F9の
出力により求められるが、もしタイミング的に余裕があ
れば、フリップフロップへの入力の直前をCRC符号の
値とすることによって、最後の半端な入力と同じクロッ
クタイミングでCRCの値が求められることになる。こ
れは余分な遅延を生み出さないCRC生成回路となるこ
とを意味している。さあらに、式(19)から式(2
0)への変形と同様の操作により、排他的論理和の数を
削減することが可能である。
【0092】次に、第3の実施形態について説明する。
情報データIのビットaが並列度cで割り切れない場合
の解決法として、これまではaをcで割った余りhに対
して、c−hビットの「0」シンボルを情報ビットの後
ろに付加していた。しかしながら、これを後ろではな
く、前につけることによっても、合計のビット数が変わ
らないので、同じ並列度を継続したCRC符号生成回路
を作成することが可能である。
【0093】しかしながら、一般に情報データは先頭か
ら詰めて出力されるものであり、従って例えば(c−
h)ビットの「0」シンボルを情報ビットの前に付加す
ることにより、並列にしたデータの位相も狂うことにな
り、それを元の位相に戻すために、余計な回路を必要と
してしまう。その例を図9に示す。
【0094】図9では、4ビットパラレルで6ビットの
情報データa5〜a0(その値をa[5] 〜a[0] )に4
ビットのCRC符号b3〜b9(その値をb[1] 〜b
[0])を付加する場合を示す。前述の第1、第2の実施
形態にならえば、6を4で割った余りが2なので、4−
2=2ビットの「0」を情報ビットの後ろに付加する
が、ここでは、逆に2ビットの「0」を情報ビットの前
に付加する。どちらの場合もCRC符号生成回路の基本
構成には変化がないので、回路規模もほとんど変わらな
い。しかし図9に示すように、CRC符号生成回路から
出力されたデータに対し、その順序を変更する必要があ
る。
【0095】前述の第1、第2の実施形態にならえば、
CRC符号生成回路71には4ビットパラレルで、デー
タの上位ビットから(a[5] ,a[4] ,a[3] ,a[2]
)、(a[1] ,a[0] ,b[3] ,b[2] )、(b[1]
,b[0] ,*,*)と入力され、従って、本来この順
に出力されるべきである。
【0096】しかし、図9においてCRC符号生成回路
71には(0,0,a[5] ,a[4])、(a[3] ,a[2]
,a[1] ,a[0] )、(b[3] ,b[2] ,b[1] ,b
[0])と入力され、従って、CRC符号生成回路71か
らの出力時点では、この順で出力される。そこで、これ
らを元に戻すために、CRC符号生成回路71の4ビッ
トパラレルの出力ラインの下位2つのラインにそれぞれ
フリップフロップ回路72、73を設けて遅延させ、さ
らに、ラインの入れ替えを行う必要がある。
【0097】このように、情報ビットの前に「0」シン
ボルを挿入することにより、遅延の発生、回路規模の増
加といった問題を招いていることになる。従って、CR
C符号生成回路が同じ程度の回路規模である限りは、情
報データの終りに「0」シンボルを付加する方が優位で
あると言える。
【0098】ただし、本来の情報データのビットの位相
をずらして出力させたいような特殊な場合は別の検討を
行う必要がある。すなわち、aビットの情報をiビット
(0≦i<c)だけ位相をずらして出力させたい場合
は、a+iをcで割った余りをhとして、hが「0」で
ある場合は従来からある方法で、またhが0でない場合
は、本発明による方法を適用するのがよい。
【0099】以上、説明したように、上記第1〜第3の
実施形態のcビットパラレル入力のCRC符号生成回路
によれば、ビット数bのCRC符号を生成するために、
元の情報データのビット数aが演算の並列度cで割り切
れない場合、その余りをh、CRC符号生成のための生
成多項式G(X)の周期nとすると、e=(b−c+
h)mod nなるeを求め、aビットの情報データの
終りに(c−h)ビットの「0」シンボルを付加し、さ
らにX^e を乗算してから、その乗算結果を生成多項式
G(X)で除算することにより、従来問題であった、最
後の入力ビット数を並列度に合わせるための生成回路を
別途設ける必要がなくなり、回路規模を抑えることがで
きる。またそのために起こり得る演算の変更に対して、
従来と異なる新たな値(e)を用いた入力信号の乗算と
割り算回路との組み合わせにより、従来と同様の形式に
よるCRC演算が可能となり、余分な遅延もほとんど発
生しないような回路となる。
【0100】次に、第4の実施形態について説明する。
ここでは、第1〜第3の実施形態で説明したような種々
のCRC符号生成回路を体系的に設計するための方法に
ついて説明する。
【0101】図10に、本発明に係るCRC符号生成回
路の設計手順を説明するためのフローチャートを示す。
ここでは、簡単のため、CRC符号生成のための生成多
項式は、原始多項式P(X)を用いて、 G(X)=(X+1)P(X) … (25) と表されるものとする。
【0102】冗長ビット数を入力した時点で、生成多項
式G(X)の次数はbと決定されるので、P(X)の次
数はb−1である。従って、G(X)の周期nは2^(b
-1)−1となる。
【0103】情報データIのビット数a、冗長データ
(CRC符号)のビット数b、演算の並列度cをそれぞ
れ入力した場合、まず、所望のa、b、cの値を入力し
(ステップS1)、次数bで式(25)に該当するG
(X)の候補の中から、使用する生成多項式を選択する
(ステップS2)。G(X)の候補はあらかじめ可能な
次数までのものを用意しておき、bの入力に対して、次
数bのものだけを表示させて選択できるようにする。
【0104】そして、aをcで割った余りhを計算し
(ステップS3)、h=0であるかどうかの判定を行う
(ステップS4)。h=0のときはXのべき乗eがe=
bと決まっているが(ステップS5)、h≠0のときは
その値を計算しなければならない。これは、前述したよ
うに、b−c+hを周期nで割った余りとなる(ステッ
プS6)。
【0105】こうして得られたeの値を使って、jを0
からc−1まで順に変化させながら式(15)を満たす
係数s[i,j] (i=0〜b-1 )の値を求める(ステップ
S7〜10)。
【0106】また、kを0からb−1まで順に変化させ
ながら、式(16)を満たす係数t[i,k] (i=0〜b-
1 )の値を求める(ステップS11〜ステップS1
4)。なお、前述したように、係数s[i,j] 、t[i,k]
はそれぞれ「0」または「1」の値をとる。
【0107】そして、これらの係数を用いて、一般的な
CRC符号生成回路を生成するできることは、前述した
とおりである。すなわち、式(17)と係数s[i,j] 、
t[i,k] により決定されるフリップフロップ回路F0〜
F(b−1)、入力データd(c−1)〜d0、排他的
論理和回路の接続関係をもとに、所望のCRC符号生成
回路が容易に設計できることになる(ステップS1
5)。
【0108】以上説明したように、上記第4の実施形態
によれば、誤り検出対象である情報データのビット数
a、冗長ビット数(CRC符号のビット数)b、演算の
並列度cを与え、適切な生成多項式G(X)を選択すれ
ば、所望のCRC符号生成回路を設計するために必要な
パラメータ、すなわち、係数s[i,j] 、t[i,k] (i=
0〜b-1 、j=0〜c−1,k=0〜b−1)が得ら
れ、情報ビット数と演算の並列度の関係に着目すること
によって、元の情報データのビット数aが演算の並列度
cで割り切れない場合であっても、回路規模と演算遅延
が抑制されたCRC符号生成回路が容易に設計できる。
【0109】なお、これまで述べてきたCRC符号生成
回路およびCRC符号生成回路設計方法は、全て一般の
巡回符号の生成方法と同様である。CRC符号は誤り検
出に特化しており、一方、巡回符号は誤り訂正と検出の
両方に用いられるという違いがあるものの、その生成方
法としては何等変わりはない。よって、以上述べてきた
CRC符号は全て2進の巡回符号と言い換えても構わな
い。
【0110】
【発明の効果】以上説明したように、本発明によれば、
誤り検出対象の情報のビット数がCRC演算の並列度の
倍数でない場合でもCRC符号の生成遅延および回路規
模が抑制されたCRC符号生成回路を提供できる。
【0111】また、任意の情報ビット数、冗長ビット数
(CRC符号のビット数)、生成回路の並列度の組み合
わせから、CRC符号の生成遅延および回路規模が抑制
されたCRC符号生成回路を容易に設計することができ
るCRC符号生成回路設計方法を提供できる。
【図面の簡単な説明】
【図1】本発明の実施形態に係るOAMセルの構成を示
す図。
【図2】従来の情報データがシリアル入力の場合のCR
C(CRC−10)符号生成回路の構成の具体例を示し
た図で、生成のための遅延が多い場合の回路構成であ
る。
【図3】従来の情報データがシリアル入力の場合のCR
C(CRC−10)符号生成回路の構成の具体例を示し
た図で、生成のための遅延が少ない場合の回路構成であ
る。
【図4】従来の情報データが2ビットパラレル入力の場
合のCRC(CRC−10)符号生成回路の構成の具体
例を示した図で、情報データのビット数が並列度で割り
切れる場合の回路構成である。
【図5】本発明のCRC符号生成回路の一般的な構成例
を示した図。
【図6】第1の実施形態に係る、情報データのビット数
が並列度で割り切れない場合の8ビットパラレル入力の
CRC(CRC−10)符号生成回路の構成例を示した
図。
【図7】第2の実施形態に係る、情報データのビット数
が並列度で割り切れない場合の30ビットパラレル入力
のCRC(CRC−10)符号生成回路の構成例を示し
た図で、パラレルの入力データを各フリップフロップ回
路の入力用にマージする部分の回路構成である。
【図8】第2の実施形態に係る、情報データのビット数
が並列度で割り切れない場合の30ビットパラレル入力
のCRC(CRC−10)符号生成回路の構成例を示し
た図で、10個のフリップフロップ回路の入力部の回路
構成である。
【図9】情報データのビット数が並列度で割り切れない
場合に、情報ビットの前に「0」シンボルを付加した場
合の、CRC符号生成回路から出力されたデータの位相
変換について説明するための図。
【図10】第4の実施形態に係るCRC符号生成回路を
設計するための設計方法、すんわち、情報データのビッ
ト数、冗長ビット数、CRC演算の並列度から、CRC
符号生成回路を設計するために必要な係数を求めるため
の手順を説明するためのフローチャート。
【符号の説明】
11…ATMセルヘッダ、12…ATMセルペイロー
ド、13…OAM情報フィールド、14…CRC−10
領域、F0〜F9…フリップフロップ回路、F0〜F
(b−1)…フリップフロップ回路。
───────────────────────────────────────────────────── フロントページの続き (51)Int.Cl.6 識別記号 庁内整理番号 FI 技術表示箇所 9466−5K H04L 11/20 E

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 あらかじめ定められた並列度で並列入力
    される情報データをあらかじめ定められた生成多項式を
    用いて除算して、その剰余を求めることにより、前記情
    報データに対する誤り検出用冗長符号であるCRC符号
    を生成するCRC符号生成回路であって、 前記情報データのビット数を前記並列度で除算して得ら
    れる剰余を前記並列度から減算して得られた値と同数の
    「0」を付加した前記情報データに対し、前記CRC符
    号のビット数から前記情報データに付加した「0」の数
    を減算して得られた値について前記生成多項式の周期に
    よるモジュロ演算を行った結果得られた値を次数とする
    単項式を乗算した後、前記生成多項式を用いた除算を行
    う演算手段と、 この演算手段での除算による剰余を前記情報データに対
    するCRC符号として出力する出力手段と、 を具備したことを特徴とするCRC符号生成回路。
  2. 【請求項2】 前記情報データは、ATM通信ネットワ
    ークを介して転送されるセルに含まれることを特徴とす
    る請求項1記載のCRC符号生成回路。
  3. 【請求項3】 任意の並列度で並列入力される任意のビ
    ット数の情報データを所望の生成多項式を用いて除算し
    て、その剰余を求めることにより、前記情報データに対
    する誤り検出用冗長符号であるCRC符号を生成するC
    RC符号生成回路を設計するCRC符号生成回路設計方
    法であって、 前記情報データのビット数、前記情報データの並列度、
    前記CRC符号のビット数があらかじめ与えられ、 前記情報データのビット数が前記並列度の倍数のとき、
    前記情報データに対し、前記CRC符号のビット数を次
    数とする単項式を乗算した後、所望の生成多項式を用い
    た除算を行うことにより前記CRC符号を生成するCR
    C符号生成回路を設計するために必要な係数値を算出
    し、 前記情報データのビット数が前記並列度の倍数でないと
    き、前記情報データのビット数を前記並列度で除算して
    得られる剰余を前記並列度から減算して得られた値と同
    数の「0」を付加した前記情報データに対し、前記CR
    C符号のビット数から前記情報データに付加した「0」
    の数を減算して得られた値について前記生成多項式の周
    期によるモジュロ演算を行った結果得られた値を次数と
    する単項式を乗算した後、前記所望の生成多項式を用い
    た除算を行うことにより前記CRC符号を生成するCR
    C符号生成回路を設計するために必要な係数値を算出
    し、 この算出された係数値をもとに、所望のCRC符号生成
    回路を設計することを特徴とするCRC符号生成回路設
    計方法。
  4. 【請求項4】 任意の並列度で並列入力される任意のビ
    ット数の情報データを所望の生成多項式を用いて除算し
    て、その剰余を求めることにより、前記情報データに対
    する誤り検出用冗長符号であるCRC符号を生成するC
    RC符号生成回路を設計するCRC符号生成回路設計方
    法であって、 前記情報データのビット数、前記情報データの並列度、
    前記CRC符号のビット数があらかじめ与えられ、 前記情報データのビット数が前記並列度の倍数のとき、
    前記情報データに対し、前記CRC符号のビット数を次
    数とする単項式を乗算した後、所望の生成多項式を用い
    た除算を行うことにより前記CRC符号を生成するCR
    C符号生成回路を設計するために必要な係数値を算出
    し、 前記情報データのビット数が前記並列度の倍数でないと
    き、前記情報データのビット数を前記並列度で除算して
    得られる剰余を前記並列度から減算して得られた値と同
    数の「0」を付加した前記情報データに対し、前記CR
    C符号のビット数から前記情報データに付加した「0」
    の数を減算して得られた値について前記生成多項式の周
    期によるモジュロ演算を行った結果得られた値を次数と
    する単項式を乗算した後、前記所望の生成多項式を用い
    た除算を行うことにより前記CRC符号を生成するCR
    C符号生成回路を設計するために必要な係数値を算出
    し、 前記CRC符号のビット数に応じて設けられる各フリッ
    プフロップ回路の入力端子には、前記算出された係数値
    をもとに決定されるフリップフロップ回路の出力と前記
    情報データの並列入力データの組み合わせによる排他的
    論理和をとった結果を入力するよう接続することによ
    り、所望のCRC符号生成回路を設計することを特徴と
    するCRC符号生成回路設計方法。
  5. 【請求項5】 前記情報データは、ATM通信ネットワ
    ークを介して転送されるセルに含まれることを特徴とす
    る請求項3〜請求項4記載のCRC符号生成回路設計方
    法。
JP22332495A 1995-08-31 1995-08-31 Crc符号生成回路およびcrc符号生成回路設計方法 Pending JPH0969836A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP22332495A JPH0969836A (ja) 1995-08-31 1995-08-31 Crc符号生成回路およびcrc符号生成回路設計方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP22332495A JPH0969836A (ja) 1995-08-31 1995-08-31 Crc符号生成回路およびcrc符号生成回路設計方法

Publications (1)

Publication Number Publication Date
JPH0969836A true JPH0969836A (ja) 1997-03-11

Family

ID=16796374

Family Applications (1)

Application Number Title Priority Date Filing Date
JP22332495A Pending JPH0969836A (ja) 1995-08-31 1995-08-31 Crc符号生成回路およびcrc符号生成回路設計方法

Country Status (1)

Country Link
JP (1) JPH0969836A (ja)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009094605A (ja) * 2007-10-04 2009-04-30 Oki Semiconductor Co Ltd 符号誤り検出装置および誤り検出符号生成装置
JP2009117883A (ja) * 2007-10-17 2009-05-28 Oki Semiconductor Co Ltd 演算処理装置
JP2010068429A (ja) * 2008-09-12 2010-03-25 Nec Corp 巡回符号演算処理回路
JP2011211353A (ja) * 2010-03-29 2011-10-20 Mitsubishi Electric Corp Crc演算回路
JP2012169926A (ja) * 2011-02-15 2012-09-06 Fujitsu Ltd Crc演算回路

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009094605A (ja) * 2007-10-04 2009-04-30 Oki Semiconductor Co Ltd 符号誤り検出装置および誤り検出符号生成装置
JP2009117883A (ja) * 2007-10-17 2009-05-28 Oki Semiconductor Co Ltd 演算処理装置
JP2010068429A (ja) * 2008-09-12 2010-03-25 Nec Corp 巡回符号演算処理回路
US8402353B2 (en) 2008-09-12 2013-03-19 Nec Corporation Cyclic code processing circuit, network interface card, and cyclic code processing method
JP2011211353A (ja) * 2010-03-29 2011-10-20 Mitsubishi Electric Corp Crc演算回路
JP2012169926A (ja) * 2011-02-15 2012-09-06 Fujitsu Ltd Crc演算回路

Similar Documents

Publication Publication Date Title
US5446743A (en) Coefficient updating method and apparatus for Reed-Solomon decoder
US6594796B1 (en) Simultaneous processing for error detection and P-parity and Q-parity ECC encoding
JP3238128B2 (ja) リードソロモン符号化装置および方法
US5535140A (en) Polynominal-set deriving apparatus and method
CN112306741A (zh) 一种crc校验方法及相关装置
JPH10107646A (ja) Crc符号発生回路、符号誤り検出回路、及びcrc回路
US6370667B1 (en) CRC operating calculating method and CRC operational calculation circuit
EP0720759B1 (en) Programmable redundancy/syndrome generator
JPH0969836A (ja) Crc符号生成回路およびcrc符号生成回路設計方法
US6219816B1 (en) Device and method for carrying out Reed-Solomon encoding
JPH10107647A (ja) Crc回路
US4644543A (en) Forward error correction hardware for a data adaptor
US20040187064A1 (en) Data generating method for forming desired CRC code
JPH0722966A (ja) 誤り数値多項式および誤り位置多項式演算回路
US5971607A (en) Polynomial evaluator for use in a Reed-Solomon decoder
JP3614978B2 (ja) ガロア体の除算方法および除算装置
JP3351413B2 (ja) 並列処理リードソロモン符号化回路及びそれに用いる並列処理リードソロモン符号化方法
JPH1098392A (ja) Crc符号発生回路、符号誤り検出回路、及びcrc回路
JP2822928B2 (ja) Crc符号演算方法および回路
JP3812983B2 (ja) エラー評価多項式係数計算装置
JP3233502B2 (ja) 復号化装置
JPH06140941A (ja) 誤り訂正システム
JP3953397B2 (ja) リードソロモン符号化回路およびリードソロモン復号化回路
JPS6217256B2 (ja)
US11489544B2 (en) Fast CRC computation circuit using an on-the-fly reconfigurable generator polynomial