Crc / edc checker system

申请号 JP51040696 申请日 1995-09-15 公开(公告)号 JP3281387B2 公开(公告)日 2002-05-13
申请人 シーラス ロジック,インコーポレイテッド; 发明人 クリストファー ピー. ズーク,;
摘要
权利要求 (57)【特許請求の範囲】
  • 【請求項1】バッファ内にブロックの形態で格納された情報のバイトをチェックするシステムであって、 該バッファの訂正アクセスのあいだに、該ブロックの指定されたバイトを訂正するのに用いられる誤りパターンを出力する訂正ユニットと、 該バッファの該訂正アクセスのあいだに、該ブロックの該バイトに対して処理をおこない、該ブロックが訂正されたことを確認するためにCRC/EDC情報を用いるCRC/EDC
    チェッカと、 を備え、 該CRC/EDCチェッカが該ブロックの該バイトの和をとるように動作し、 該訂正アクセスのあいだ、訂正されているバイトと、和のとられているバイトとの間にバイト位置同期関係がなりたつ、システム。
  • 【請求項2】前記訂正パスのあいだ、前記チェッカが、
    前記ブロックからの選択されたバイトを前記和に加算した後、該選択されたバイトが該選択されたバイトに対する誤り値を用いて訂正されているあいだに、該和に対して、該選択されたバイトに対する該誤り値を含む係数をも加算する、請求項1に記載のシステム。
  • 【請求項3】前記訂正パスのあいだ、前記チェッカが、
    前記バッファからの選択されたバイトを前記和に加算した後、該選択されたバイトが該選択されたバイトに対する誤り値を用いて訂正されているあいだに、該和に対して、該選択されたバイトに対する該誤り値を含む係数をも加算する、請求項2に記載のシステム。
  • 【請求項4】バッファにおけるバイトの訂正ユニットによる訂正と同期して、該バッファにおける情報のバイトをチェックするCRC/EDCチェッカシステムであって、 和が累算されるメモリ装置と、 該メモリに累算された該和に対して (1)該訂正ユニットによりまだ訂正されていない、該バッファの1バイト、および (2)該和に既に加算された1バイトに対する誤りパターン を加算する加算器と、 を備え、 該和に加算された該バイトが、該誤りパターンが加算されている該バイトとバイト位置同期関係を有している、
    CRC/EDCチェッカシステム。
  • 【請求項5】前記バッファが、複数のカラムおよびロウを含むものと概念づけられ、該バッファに加算される前記バイトと、前記誤りパターンが加算される前記バイトとが同一のロウにある、請求項4に記載のCRC/EDCチェッカシステム。
  • 【請求項6】前記誤りパターンが、前記累算された和に加算される誤りパターン係数に含まれており、該誤りパターン係数が、さらに定数の倍数を含んでいる、請求項4に記載のCRC/EDCチェッカシステム。
  • 【請求項7】前記定数の倍数の値が、前記バイト位置同期関係に依存している、請求項6に記載のCRC/EDCチェッカシステム。
  • 【請求項8】バッファに格納されている情報のバイトをチェックする方法であって、 該バッファ内の第1の選択されたバイトにアクセスし、
    該第1の選択されたバイトを累算された和に加算するステップと、 該バッファ内の第2の選択されたバイトに対する誤りパターンを用いて、該バッファにおける該第2の選択されたバイトを訂正するステップと、 該第2の選択されたバイトに対する誤りパターンを、該累算された和に加算するステップと、 を含み、 該第1の選択されたバイトと、該第2の選択されたバイトとの間にバイト位置同期関係がなりたつ、方法。
  • 【請求項9】前記バッファが、複数のカラムおよびロウを含むものと概念づけられ、前記第1の選択されたバイトと、前記第2の選択されたバイトとが、同一のロウにある、請求項8に記載の方法。
  • 【請求項10】前記誤りパターンが、前記累算された和に加算される誤りパターン係数に含まれており、該誤りパターン係数が、さらに定数の倍数を含んでいる、請求項8に記載の方法。
  • 【請求項11】前記定数の倍数の値が、前記バイト位置同期関係に依存している、請求項10に記載の方法。
  • 【請求項12】バッファに格納されている情報のバイトをチェックする方法であって、 バッファ内のバイトにシーケンシャルにアクセスするステップと、 該バッファの第1の選択されたバイトを累算された和に加算するステップであって、該アクセスされたバイトは、もしその訂正が必要とされるのなら、まだ訂正を受けてはいない、ステップと、 該バッファ内の第2の選択されたバイトに対する誤りパターンを用いて、該第2の選択されたバイトを訂正するステップと、 該第2の選択されたバイトに対する該誤りパターンを、
    該累算された和に加算するステップと、 を含み、 該第1の選択されたバイトと、該第2の選択されたバイトとの間にバイト位置同期関係がなりたつ、方法。
  • 【請求項13】前記バッファが、複数のカラムおよびロウを含むものと概念づけられ、該バッファに加算される前記バイトと、前記誤りパターンが加算される前記バイトとが、同一のロウにある、請求項12に記載の方法。
  • 【請求項14】前記誤りパターンが、前記累算された和に加算される誤りパターン係数に含まれており、該誤りパターン係数が、さらに定数の倍数を含んでいる、請求項12に記載の方法。
  • 【請求項15】前記定数の倍数の値が、前記バイト位置同期関係に依存している、請求項14に記載の方法。
  • 【請求項16】バッファ内にブロックフォーマットで格納された情報のバイトを、該バッファの1パスのあいだにチェックする方法であって、 該1パスのあいだに第1の選択されたバイトを累算された和に加算するステップと、 該累算された和に対して、該第1の選択されたバイトに対する誤りパターンを加算する、後続はするが該同一パス内のステップと、 該第1の選択されたバイトが該累算された和に加算された後、該誤りパターンを用いて該第1の選択されたバイトを訂正するステップと、 を含み、 該誤りパターンが、該累算された和に加算される誤りパターン係数に含まれており、該誤りパターン係数が、さらに定数の倍数を含んでおり、 該定数の倍数の値が、該バイト位置同期関係に依存している、方法。
  • 【請求項17】バッファ内にブロックフォーマットで格納された情報のバイトをチェックする方法であって、 該バッファ内のバイトに該ブロックを通して一回のパスアクセスでシーケンシャルにアクセスするステップと、 アクセスされる時に、第1のバイトを累算された和に加算するステップであって、該第1のバイトは、もしその訂正が必要とされるのなら、まだ訂正を受けてはいない、ステップと、 該ブロックの第2のバイトに対する誤りパターンを用いて、該第2のバイトを訂正するステップであって、該第2のバイトが、訂正されていないままで、該累算された和に既に加算されている、ステップと、 該第2のバイトに対する該誤りパターンを、該累算された和に加算した後、該同一のパスのあいだに、 第3のバイトを該累算された和に加算し、 該第1のバイトに対する誤りパターンを用いて該第1のバイトを訂正し、かつ 該第1のバイトに対する該誤りパターンを該累算された和に加算する、ステップと、 を含み、 該第1の選択されたバイトと、該第2の選択されたバイトとの間にバイト位置同期関係がなりたつ、方法。
  • 【請求項18】前記バッファが、複数のカラムおよびロウを含むものと概念づけられ、前記第1の選択されたバイトと、前記第2の選択されたバイトとが、同一のロウにある、請求項17に記載の方法。
  • 【請求項19】前記誤りパターンが、前記累算された和に加算される誤りパターン係数に含まれており、該誤りパターン係数が、さらに定数の倍数を含んでいる、請求項17に記載の方法。
  • 【請求項20】前記定数の倍数の値が、前記バイト位置同期関係に依存している、請求項19に記載の方法。
  • 【請求項21】前記ブロックを通した前記単一パスアクセスが完了したとき、もし該ブロックが正しく訂正されていれば、前記累算された和がゼロである、請求項17に記載の方法。
  • 【請求項22】バッファにおけるデータブロック内のバイトについてEDC/CRCチェックをおこなう方法であって、 該ブロック内の訂正されていないデータバイトにシーケンシャルにアクセスし、それぞれの訂正されていないデータバイトを、該バイトにアクセスしたときに、累算された和に加算するステップと、 訂正されていないデータバイトがアクセスされるときに、該ブロック内の位置に関連するデータバイトが、利用可能な誤りパターンを有しているかどうかを判定するステップであって、該位置に関連するデータバイトは、
    該累算された和に既に加算されている、ステップと、もし利用可能な誤りパターンが存在するのなら、 該位置に関連するデータバイトに対する該利用可能な誤りパターンを、該累算された和に加算する、ステップと、 該ブロック内の訂正されていないデータバイトにシーケンシャルにアクセスするあいだに、該位置に関連するデータバイトを訂正するステップと、 を含み、 該位置に関連するデータバイトが、該アクセスされた訂正されていないデータバイトとバイト同期の取られた関係にある、方法。
  • 【請求項23】バッファにおけるデータブロック内のバイトについてEDC/CRCチェックをおこなう方法において、該バイトがコードワードに組織される、方法であって、 該ブロック内の最も最近のコードワードに対する訂正されていないデータバイトを累算された和にシーケンシャルに加算するステップと、 該最も最近のコードワードに対する訂正されていないデータバイトがアクセスされるときに、以前のコードワードにおける対応するデータバイトが、利用可能な誤りパターンを有しているかどうかを判定するステップであって、該以前のコードワードの該対応するデータバイトは、該累算された和に既に加算されている、ステップと、もし利用可能な誤りパターンが存在するのなら、 該以前のコードワードの該対応するデータバイトに対する該利用可能な誤りパターンを、該累算された和に加算するステップと、 を含む方法。
  • 【請求項24】前記最も最近のコードワードの訂正されていないデータバイトが、前記累算された和に加算されていくあいだに、前記以前のコードワードの前記対応するデータバイトを訂正するステップ をさらに含んでいる、請求項23に記載の方法。
  • 【請求項25】前記以前のコードワードの前記対応するデータバイトが、前記累算された和に加算されていく前記最も最近のコードワードの前記データバイトとバイト同期の取られた関係にある、請求項23に記載の方法。
  • 说明书全文

    【発明の詳細な説明】 本願は、以下の同時に出願された特許出願、すなわち、Chris Zookにより1994年9月16日に出願され、“MU
    LTIPURPOSE ERROR CORRECTION CALCULATION CIRCUIT"と題された米国特許出願第08/306,918号、およびChris Zo
    okにより1994年9月16日に出願され、“VERSATILE ERRO
    R CORRECTION SYSTEM"と題された米国特許出願第08/30
    7,259号に関連している。 本願では、上記特許出願のすべてが参考として援用される。

    背 景 1.発明の分野 本発明は、CRCチェッキング機能を利用する誤り訂正システムを含むがそれには限定されない、誤り訂正システムに関する。

    2.関連する技術および他の考察 ディスクドライブのような情報記憶装置は、一般に誤り訂正能を有している。 この装置からトランスデュースされた情報は、典型的には、バイトのかたちでバッファに格納される。 格納された情報は、通常、バイトから構成される複数のブロックにフォーマットされる。 例えばCDディスクドライブの場合、バッファは、複数のセクタ(コンピュータデータを処理するとき)または複数のフレーム(ディジタルオーディオデータを処理するとき)を含んでいる。 ここでは、これらを包括的に「ブロック」と称する。

    誤り訂正能力によれば、それぞれのセクタは、典型的には、複数のCRCまたはEDCチェックバイトを有する。 図2は、それぞれが26バイトから構成される86のカラムにグループ分けされたブロックを図示している。 ブロック内では、バイトから構成されるカラムはそれぞれ、1個のカラムコードワードを備えており、各カラムの最後の2バイトは、カラムコードワードのECC部分を構成しており、各カラムの残りの部分(つまり、最初の24バイト)は、カラムコードワードのデータ部分を構成している。 例えば、バイト0000、0086、0172、…1978は、カラムコードワードCW 0のデータ部を含んでおり、バイト000
    1、0087、0173、…1979は、カラムコードワードCW 1のデータ部を含んでいる。 以下も同様である。 図2に図示されているように、それぞれのブロックの最後の4つのデータバイト(例えば、バイト2060、2061、2062、2063)
    は、誤り訂正情報を含んでいるので、EDCバイトまたはC
    RCバイトとして知られている。 あるフォーマットでは、
    CRCバイトは、必ずしもブロックのデータ部分の最後の数バイトではない。 例えば、図2のブロックを完全には満たさないデータフォーマットでは、CRCバイトをデータの最後に続けて配置し、その後に、それらのブロックが満たされるまでゼロバイトで埋め込まれたCRCバイトを置くこともできる。

    誤り訂正多項式の演算以外では、CRCまたはEDCチェックバイトが、付加的なチェック手段を提供する。 一般に、CRCバイトは、データバイト(または、場合によってはビット)をバイト値(またはビット値)で表されたデータの多項式D(x)の係数として扱い、D(x)x
    nk modG(x)を計算することによって発生される。 ここで、kはデータシンボルの個数であり、n−kはCRC
    シンボルの個数であり、G(x)はCRC発生器多項式である。 コンパクトディスク(CD)ドライブの場合、CRC
    発生器は、ビット値で表される。

    従来より、CRCまたはEDCバイトを用いるバッファのチェックは、そのバッファが訂正された後におこなわれている。 具体的には、誤り訂正フェーズのあいだ、バッファのバイトは、コードワードとしてアクセスされ、誤り訂正多項式を用いて処理される。 誤り多項式によるコードワードに対する処理の結果、誤りを含んでいるコードワードのバイトを指定する誤りポインタが、それらのポインタにより位置の特定されたバイトの訂正に用いられる誤りパターンと共に発生される。 誤りポインタおよび誤りパターンによる発生の後、バッファにおけるバイトが、ポインタにより指定されたバイトを訂正する目的でアクセスされる。

    ポインタにより指定されたバイトの訂正に引き続いて、特にCRCまたはEDCチェックを目的として、バッファが再びアクセスされる。 CRCまたはEDCチェックのあいだ、バッファにおけるすべてのバイトから構成される多項式(CRCバイトを含む)は、CRC発生器多項式により除算される。 もしその剰余がゼロであれば、ブロックが正確に訂正されたことが確認される。

    CRCまたはEDC機能は、データの完全性を確認するに当たっての付加的なレベルを提供できるという利点を有してはいるものの、CRC/EDCチェックのためにはバッファに対して特別なアクセスが必要になるので、全体的な動作速度が低下してしまう。

    要 旨 EDC/CRCチェッカは、訂正パスのあいだに1ブロックのデータが訂正されているあいだに、EDC/CRCチェックをおこなうことによって、ブロック訂正に引き続いてED
    C/CRCを目的としてバッファにアクセスすることを不要にする。 訂正パスのあいだ、EDC/CRCの和が累算される。 この和は、そのブロックのパスが完了した後、もしそのブロックにおけるEDC/CRCバイトによりそのブロックが訂正されたことが確認されれば、ゼロになる。 ブロックの一回の訂正パスのあいだに、訂正されていない、
    最も最近のコードワードのバイトは、累算された和に加算される。 最も最近のコードワードのバイトとバイト同期関係にある以前のコードワードのバイトは、(必要であれば)訂正され、かつ(訂正がおこなわれる時には)
    以前のコードワードのバイトを訂正するのに用いられた誤りパターンを含む誤りパターン係数もまた、累算された和に加算される。 ここで説明される実施形態では、ブロックは、複数のコードワードカラムを有するものとして概念づけられ、バイト同期関係は、訂正されていないバイトが累算されるときには、次の以前のコードワードの対応するバイトに対して訂正がおこなわれるようにするものである。

    よって、本発明のEDC/CRCチェッカは、最も最近のコードワードCW nに対するシンドローム発生に用いられているブロックバイトに対するCRCチェックをおこなうのと同時に、以前のコードワード(例えば、CW n-1 )の対応して位置づけられたバイトに対しても訂正がおこなわれうるようにする。 以前のコードワードの対応するバイトに対して訂正がおこなわれているとき、以前のコードワードの対応するバイトに対する誤りパターン係数もまた、累算された和に加算される。 なぜなら、対応するそのようなバイトは、訂正されていない状態で、それ以前に和に加算されていたからである。 実際には、誤りパターン係数は、誤りパターンの定数の倍数である。 その定数の倍数の値は、実現されるバイト位置同期関係に依存している。

    本発明のEDC/CRCチェッカは、バッファに対して別個にアクセスすることを必要とせずにEDC/CRCチェックをおこなうことができるという利点を有する。 さらに、本発明は、ブロックを完全には満たさず、CRCバイトをデータの最後に続けて配置し、その後に、それらのブロックが満たされるまでゼロバイトで埋め込まれたCRCバイトを置くことができるデータフォーマットともコンパチブルである。

    図面の簡単な説明 本発明の上記目的、特徴および利点、ならびにその他の目的、特徴および利点は、添付の図面に図示されている好ましい実施態様の、以下に述べるより詳細な説明から明らかになるであろう。 なお、全図面を通して、参照番号は同一の部分を指すものとする。 また、図面は必ずしも実際の縮尺に則ったものではなく、本発明の原理を図示するさいに強調されているところもある。

    図1は、本発明によるEDC/CRCチェッカを用いる誤り訂正システムの一例の模式的ブロック図である。

    図2は、バッファに格納されているデータの1セクタを図示しており、セクタは、複数のロウおよびカラムをなして格納されるものと概念づけられている。

    図3Aは、本発明のある実施形態によるEDC/CRCチェッカ回路を示す模式図である。

    図3Bは、データバイトと誤りパターンとが本質的に同時アクセス可能である、本発明のある実施形態によるED
    C/CRCチェッカ回路を示す模式図である。

    図4Aは、2つのコードワード(例えば2つのカラム)
    が一度に処理されうる、本発明のある実施形態によるED
    C/CRCチェッカ回路を示す模式図である。

    図4Bは、図4Aの回路と等価である、EDC/CRCチェッカ回路を示す模式図である。

    図4Cは、2つのコードワード(例えば2つのカラム)
    が一度に処理可能であり、かつ、データバイトおよび誤りパターンが本質的に同時アクセス可能である、本発明のある実施形態によるEDC/CRCチェッカ回路を示す模式図である。

    図5は、2つのインタリーブされたブロックに分割されるものと概念づけられたバッファを図示しており、それぞれのブロックは、複数のロウおよびカラムをなして組織されるものと概念づけられたバイトを有している。

    図6は、EDC/CRCチェッキング演算に伴う各ステップを図示するフローチャートである。

    図7は、図4Aのチェッカのチップ指向のインプリメンテーションを示す模式的ブロック図である。

    図面の詳細な説明 図1は、システムコントローラ10を介してバッファ(破線15によって概略的に示される)と通信する誤り訂正システムを示す。 バッファは、その中に例えば図2に示すような複数のブロックを格納している。 図1の誤り訂正システムは、さらに発生器、つまり発生部20(例えば、シンドローム発生用)、計算器、つまり計算部30
    (例えば、誤りパターン計算用)、訂正器、つまり訂正部60、およびEDCチェッカ部70を含む。 図1の誤り訂正システムの動作の全体は、コントローラ10により、例えばバスCBUS上に運ばれる制御信号およびその他の信号を用いることによって管理される。

    図1に示されているように、EDC/CRCチェッカ70は、
    訂正器60からのラインERR上の誤りパターン、およびラインGDAT上のバッファデータを受け取るように接続されている。 システムコントローラ10は、コントロールバス
    CBUSを用いて、EDC/CRCチェッカ70の動作全般を、訂正器60およびバッファへのアクセスと共に、管理する。 システムコントローラの動作および訂正の一例は、ここで参考として援用される。 1994年9月16日に出願されたCh
    ris Zookによる「多目的誤り訂正システム(VERSATILE
    ERROR CORRECTION SYSTEM)」と題された米国特許願第0
    8/307,259号を参照すれば理解されるコンパクトディスク(CD)のディスクドライブのコンテクストで理解される。 しかし、本発明の原理はそのような例に限定されるものではなく、EDC/CRCチェッキング全般に広く適用可能であることは理解されたい。

    以下にさらに詳しく説明するように、システムコントローラ10の管理の下に、EDC/CRCチェッカ70は、訂正器6
    0と協調して、バイトが訂正されるバッファの同じパスのあいだに訂正の正確さのEDC/CRCベリファイをおこなうように効果的に動作する。

    図3Aは、データ(図2のバッファに格納されている)
    を操作し、本発明の原理を説明するのに適したEDC/CRC
    チェッカの機能模式図である。 図3Aのチェッカ70は、累算レジスタ702のかたちのメモリを特徴としている。 累算レジスタ702は、レジスタフィードスイッチすなわちM
    UX704によりフィードされる。 このMUX704は、最終的にはシステムコントローラ10に接続される選択ライン705
    により動作される。 レジスタフィードMUX704は、3つの選択可能な信号源に接続されている。 すなわち、加算器
    706、ロウ乗算器708およびカラム乗算器710である。 ロウ乗算器708は、加算器712に接続されるている。 レジスタ702の内容の一残余の、または累算された和−は、レジスタ出力ライン714上で利用可能である。 レジスタ出力ライン714は、カラム乗算器710と、加算器712と、加算器706とに接続されている。

    バッファからの訂正されていないデータバイトは、ラインGDAT上でANDゲート715の第1端子に与えられる。 AN
    Dゲート715の第2端子は、システムコントローラ10から信号NOT_LAST_COLを受け取る。 チェッカ70が和を取る目的でバッファから依然としてデータバイトを得ているあいだに、信号NOT_LAST_COLは、バッファからの訂正されていないデータバイトを、ANDゲート715を通して効率よくゲートし、加算器712に与える。

    加算器712は、レジスタ702に累算された和(ライン71
    4上で利用可能である)と、バッファからの訂正されていないデータバイト(ラインGDAT上で与えられる)とを加算する。 加算器712によりつくられた和は、ロウ乗算器708に入力として与えられる。 前述したように、ロウ乗算器708からの出力は、MUX704に与えられる選択可能な入力の1つである。

    訂正器60からの誤りパターンを運ぶラインERRは、乗算器716に接続されている。 現在のコードワードと以前のコードワードとの間のバイト同期オフセット(例えば、カラムオフセット)に対応可能とするために、乗算器716は、定数x 8 modG(x)により乗算して、誤りパターン係数を発生する。 乗算器716により発生された積(誤りパターン係数)は、加算器706の第1入力端子に与えられる。 加算器706の第2入力端子は、上述したように、レジスタ出力ライン714に接続されている。

    図3Aにおいて、ロウ乗算器708のための乗算定数は、
    8・86 modG(x)である。 この定数は、次のロウへと進めるはたらきをする(すなわち、バッファにおいて86
    バイトだけ進める。 ここで、1バイトは8ビットである)。 カラム乗算器710のための乗算定数は、x
    −(86・24−1)・8 modG(x)である。 この定数は、
    あるカラムコードワードのデータ部分の最後のバイトから、次のカラムコードワードの先頭へと移動するはたらきをする(すなわち、バッファにおいて2063バイトだけ後退する。ここで、1バイトは、8ビットである)。

    図3Aに図示されている例では、訂正されていないデータ(ラインGDAT上にある)の1バイトと、ブロックのバイト位置同期の取られた別のバイトとは、ただちに共に利用可能となるのではなく、チェッカに対してシーケンシャルに(まず誤りパターンが、次いでデータバイトが)与えられるという前提を含む。 一方、図3Bの実施形態は、訂正されていないデータバイトと、誤りパターンとが同時にアクセス可能である、チェック70'を示している。 図3Bの実施形態では、加算器706は除かれており、MUX704は2入力スイッチになっており、乗算器716
    の出力は、第3の入力として加算器712に与えられる。

    図4Aは、パフォーマンス上の理由からある種の実施形態では望ましいこともあるものである、2つのコードワード(例えば、一度に2つのカラム)を処理するように構成されたチェッカ70″を示している。図4Aの実施形態は、例えば、バッファが2つのインタリーブされたブロックを含むものとして概念づけられており、バッファの2つのコードワードが一度に操作される時に利用可能である。例えば、図5は、2つのインタリーブされたブロック(偶数ブロックおよび奇数ブロック)を示している。ここで、1ブロックのそれぞれのカラムにおけるバイトは、カラムコードワードを構成している。すなわち、0000、0043、0086、…、0989として表現されたバイトは、偶数ブロックの第1のカラムコードワードのデータ部分を形成しており、バイト0001、0044、0087、…09
    90は、偶数ブロックの第2のカラムコードワードのデータ部分を形成している。 以下も、偶数ブロックおよび奇数ブロックのそれぞれにおける合計43のカラムコードワードについて同様である。 また、図5に示すように、各ブロックの最後の2バイト(具体的には1030、1031と表現されたバイト)は、EDCまたはCRCバイトである。

    図4Aのチェッカ70″は、累算レジスタ702″を備えている。 レジスタ702″へのフィードは、選択信号705″により支配される、スイッチつまりMUX704″により制御される。チェッカ70″は、4つの入力信号を受け取る。 すなわち、より低いオーダーのデータ入力信号DAT Lと、より低いオーダーの誤りパターン入力信号ERR Lと、より高いオーダーのデータ入力信号DAT Hと、より高いオーダーの誤りパターン入力信号ERR Hとの4つである。 図5のインタリーブされたブロックのシナリオを参照すれば、例えば、より低いオーダーの入力は、偶数ブロックに対応し、より高いオーダーの入力は奇数ブロックに対応していてもよい。 すなわち、DAT Lは、偶数ブロックからのカラムコードワードCWeven Nの選択されたバイトに対する訂正されていないデータであり、ERR Lは、カラムコードワードCWeven Nの選択されたバイトと所定のバイト同期関係にある(カラムコードワードCWeven N-1における)
    バイトに対する誤りパターンであってもよい。 DAT Hは、
    奇数ブロックからのカラムコードワードCWodd Nの選択されたバイトに対する訂正されていないデータであり、ER
    R Hは、カラムコードワードCWodd Nの選択されたバイトと同期関係にある(カラムコードワードCWodd N-1における)バイトに対する誤りパターンであってもよい。

    チェッカ70″は、さらに5つの乗算器を備えている。
    すなわち、カラム乗算器710″と、ロウ乗算器708″と、
    それぞれラインDAT H 、ERR LおよびERR H上に設けられた乗算器750、760および770の5つである。 乗算器708、71
    0、750、760および770に対する乗算定数は、表Iにより与えられる。

    乗算器750、760、770の出力は、スイッチつまりMUX78


    0のそれぞれの入力端子に接続されている。 MUX780の出力端子は、加算器790の第1入力端子に接続されている。 加算器790の第2入力端子は、レジスタ702″の出力ライン714″に接続されている。 加算器790の出力端子は、MUX704″の第1入力端子に接続されており、MUX70


    4″の他の2つの入力端子は、乗算器708″および710″


    の出力端子に接続されている。 図3Aの実施形態の場合と同様に、ラインDAT

    Lは、信号NOT_LAST_COLがオンである限りそれを通してデータバイトをゲートするためにその上に接続されたANDゲート715″を有している。

    図4Bは、図4Aの回路70″と本質的には等価であるチェッカ回路70″'を示している。 図4Bのチェッカ回路7
    0″'は、いくつかの点で図4Aの回路70″と異なる。 第1の相違は、16ビット値に変換される信号DAT L16 、DAT
    H16 、ERR H16およびERR L16のフォーマットを伴う。 具体的には、ERR H16は、ERR Hと、8つのゼロビットとを連結することにより得られる16ビット値である。 ここで、ER
    R Hは、高いオーダーの位置にある。 ERR L16は、ERR Lと、
    8つのゼロビットとを連結することにより得られる16ビット値である。 ここで、ERR Lは、低いオーダーの位置にある。 DAT H16およびDAT L16は、それぞれERR H16およびER
    R L16と同様に形成される。 連結以前の誤りおよびデータバイトは、それぞれ8ビット長であり、CRC多項式は16
    ビット長であるので、ERRの乗算、すなわちDATにX 8を乗ずることは、単に下位8ビットを上位8ビットにシフトすることであり、また(以下に述べるように)図4Bの乗算器765の使用を、図4Aの乗算器750、760、770よりもむしろ容易にする。

    図4Bと図4Aとの間の第2の相違は、ラインERR H16およびERR I16がMUX767をフィードしており、MUX767は乗算器
    765をフィードしている点である。 乗算器765の乗算定数は、x 16 modG(x)である。 乗算器765およびDAT H16はともに、MUX780″'に接続されている。MUX780″'の出力は、加算器790″'に接続されている。

    図7は、2つの16ビット多項式を用いて2つのチェックをおこなうための2つのCRC/EDC回路を設けている、
    図4Bのチップ指向のインプリメンテーションを示している。 図7のチェッカ70″'は、一対の前置乗算器チップ
    730(0)、730(1)と、一対の累算レジスタ732
    (0)、732(1)と、EDC比較器734とを備えている。
    チェッカ70″'では、両回路共に、(それぞれ前置乗算器730(0)、730(1)を介して)、同一のデータの後続する同一の誤りパターンを受け取る。

    図7において、前置乗算器730(0)は多項式x 16 +x
    15 +x 2 +1を用い、前置乗算器730(1)は、多項式x 16
    +x 2 +x+1を用いる。 例えば、図4Bに示されているそれぞれの乗算器について、図7のそれぞれの前置乗算器
    730は、それ自身のXOR論理ゲートのセットを有している。 前置乗算器730の乗算器用の論理ゲートセットの構成は、特定の乗算器への入力信号を、その乗算器固有の
    16×16の2進行列で乗算し(例えば、複数のロウおよびカラムをペアにし、その内積をとり)、16ビットの出力信号を得ることと等価である。 信号DAT L16 、DAT H16 、ER
    R H16およびERR L16について既に述べたように、乗算以前に、入力信号(例えば、DAT Lのような8ビット入力ベクトル)は、その一端または他端が8つのゼロで埋め込まれて、その乗算用の16ビットベクトルをつくる(例えば、ベクトルDAT L16を生じる)。

    それぞれの乗算器の出力ベクトルのビットは、入力ベクトルのビットの線形結合であるので、行列乗算、すなわち[0]=[I][T] により得られる。 ここで、
    [I]および[0]は、その右側にビット0をもつ入力および出力ロウベクトルであり、[T]は、xmodG
    (x)で乗算するための行列である。

    前置乗算器730(0)については、乗算器765の乗算を説明する16×16の2進行列は表2に与えられている。 ロウ乗算器708″用の行列は、表3に与えられている。カラム乗算器710″用の行列は、表4に与えられている。
    前置乗算器730(1)については、乗算器765の乗算を説明する16×16の2進行列は表5に与えられている。 ロウ乗算器708″用の行列は、表6に与えられている。カラム乗算器710″用の行列は、表7に与えられている。

    上記乗算の例としては、 ERR

    H・X

    24 modG

    1 (x)=ERR

    H・X

    8・X

    16 modG

    1 (x)=ERR

    H16・X

    16 modG

    1 (x) [I]=[E

    0 E

    1 E

    2 ...E

    7 0000000] 出力のBIT0は、E

    0 +E

    2 +E

    3 +E

    4 +E

    5 +E

    6 +E

    7である。

    図3Aと同様に、図4Aおよび図4Bに図示の例においても、訂正されていないデータ(ラインGDAT上)の2バイトと、そのブロックの別のバイト位置同期のとられたバイト用の2つの誤りパターンとは、ただちに共に利用可能となるのではなく、チェッカ70″にシーケンシャル(まず誤りパターンが、次いでデータバイトが)与えられることを前提として含む。図4Cの実施形態が、図4Aの実施形態と異なるのは、図4Cのチェッカ70″'が、本質的に同時に利用可能となるデータバイトおよび誤りパターンのペアを処理する点である。 図4Cの実施形態のロウおよびカラム乗算器の定数は、図4Aの実施形態の場合と同じである。

    図4Cの実施形態では、チェッカ70′は、カラム乗算器710′またはロウ乗算器708′により(2入力MUX7
    50′を介して)フィードされるレジスタ702′を備えている。 レジスタ出力ライン714′は、加算器790
    ′の第1入力端子に接続されている。 加算器790′
    のその他4つの入力端子は、それぞれラインDAT L 、DA
    T H 、ERR LおよびERR Hに接続されている。 ラインDAT H 、ER
    R LおよびERR Hは、それぞれ、その上に接続された乗算器
    750′、760′および770′を有している。 加算器7
    90′の出力端子は、ロウ乗算器708′の入力端子に与えられる。 ANDゲート715′は、ラインDAT LおよびDA
    T H上に設けられている。

    動作 例えば図2を参照して既に述べたように、本発明のセクタは、86のカラムから構成されるブロックを含んでいる。 ここで、そのブロックのそれぞれのカラムにおけるバイトが1コードワードを構成している。 CRC/EDCチェックを目的として、コードワードのデータ部分のみが利用される。 したがって、以下で用いられる「コードワード」は、そうではないと特に断らない限り、コードワードのデータ部分のみを意味するものとする(つまり、コードワードのECC部分を除くものとする)。 例えば、000
    0、0086、0172、…1978と表現されたバイトは、第1のカラムコードワードのデータ部を形成しており、バイト
    0001、0087、0173、…1979は、第2のコードワードのデータ部を形成している。 以下も、ブロックの合計86のコードワードのすべてについて同様である。 また、図1に示されているように、それぞれのブロックの最後の4つのデータバイト(具体的には、例えばバイト2060、206
    1、2062、2063と表されたバイト)は、EDCバイトまたは
    CRCバイトである。

    システムコントローラによるEDC/CRCチェッカ70の管理に伴う各ステップは、図7に示されている。 ステップ
    S2において、カウンタ値ROWCOUNTおよびCOLCOUNTは、累算レジスタ702における値(REGSUM)と共に、ゼロに初期化される。 また、最後のカラムフラグ(LASTCOL)
    は、FALSEに初期化される。 初期化ステップS2に続いて、偶数番のステップS4〜S22を含むループが実行される。

    このループのはじめ(ステップS4)に、ROWCOUNTおよびCOLCOUNTの現在の値により参照されるバイトと同期のとられたバイト関係にある、バッファ内のバイトについて訂正がなされているかどうかが判定される。 ここで説明されている実施形態では、バイト同期関係とは、訂正が以前のコードワードに対して(つまり、以前のコードワード、すなわち[COLCOUNT−1,ROWCOUNT]のバイトRO
    WCOUNTについて)おこなわれるようにするものであるので、バッファ内の第1のカラムコードワードに対するループを実行するときには、何の訂正も実行されない。

    具体的には、ここで説明されている実施形態では、バイト位置同期とは、ステップS2において、ブロックのバイト(COLCOUNT−1,ROWCOUNT)に対する誤りパターンが存在するかどうかが判定されるようにするものである。
    前述したように、ステップ1608の判定は、ブロックの第1のコードワードを処理する時には、否定になる。 しかし、後続するカラムコードワードの処理のあいだの判定は、以下を代表として説明される。 図1のバイト0001が
    ROWCOUNTおよびCOLCOUNTの現在の値によりアクセスされるとき、誤りパターンの発生に関する判定が、バイト00
    00についてなされる。 図1のバイト0087がROWCOUNTおよびCOLCOUNTの現在の値により示されるとき、誤りパターンの発生に関する判定は、バイト0086についてなされる。 以下も同様である。 なお、本発明はこのような特定のバイト同期関係に限定されないことは理解されたい。
    なぜなら、その他のオフセット(例えば、さまざまに異なる度合いのカラムオフセット)が、システム全体のその他の考察に基づいて適当である範囲内で用いられうるからである。

    第1のコードワード以外のコードワードに対応するループの実行については、以前のコードワードの対応するバイトが訂正を必要とすることがある。 訂正が必要とされるとき、ステップS6において、同期のとられたバイト(例えば、以前のコードワードの同期のとられたバイト)に対する誤りパターン係数が、レジスタ702に加算される。 この誤りパターン係数は、誤りパターン(E
    (x)、信号ERRにより運ばれる)を、乗算器716を用いて乗算器定数(x 8 modG(x))で乗算することにより得られる。 換言すれば、ステップS6では、レジスタ702
    は、REGSUM+E(x)x 8 modG(x)を得る。 同期のとられたバイトが、そのブロックの最も最近にアクセスされたバイトから1カラムだけ(つまり、1バイトすなわち8ビットだけ)オフセットされるという事実が、同期のとられたバイトに対する誤りパターンはx 8 modG(x)により乗算されねばならない理由となる。 この同じループを実行するあいだ、ステップS6で利用された誤りパターンは、また、バッファ内のブロックにおけるデータバイトを訂正するためにも用いられる。

    ステップS8では、バッファからの訂正されていないデータバイトがすべて、既にレジスタ702に加算されたかどうか(つまり、COLCOUNTがバッファにおけるコードワードの個数を超えたかどうか)が判定される。 この判定は、フラグLASTCOLの値をチェックすることによりなされる。 もしバッファからの訂正されていないデータバイトがすべて加算されていないのなら、実行は、ステップ
    S10に続く。 そうでなければ、実行は、ステップS12に続く。

    ステップS10では、チェッカ70は、ブロックからの次の訂正されていないデータバイトを得る。 具体的には、
    ステップS10において、ブロックからの次の訂正されていないデータバイトは、データバイト(COLCOUNT、ROWC
    OUNT)となる。 このループを最初に実行するとき、得られる最初のバイトは、バイト0000となる。 このループを引き続いて連続的に繰り返し実行するために、ステップ
    S10では、ブロックのさらなるバイトがECCカラムコードワードの順番でアクセスされる(例えば、バイト0086、
    0172、…、1978、0001、0087、…1979、0002、…206
    3)。 ステップS10では、ステップS10で得られたバイトは、(ラインGDAT上で)で与えられ、レジスタ702に累算された和(REGSUM)に(加算器712により)加算される。 加算器712の和は、今度はロウ乗算器708のロウ進み乗算定数x 86・8 modG(x)およびレジスタ702に格納されている積により乗算される。 よって、ステップS10
    では、次の訂正されていないデータバイト係数D(x)
    86・6 modG(x)が、レジスタ702内の値(REGSUM)
    に加算される。

    ステップS12は、ブロックからの訂正されていないデータバイトがすべてレジスタ702に加算されており(例えば、ステップ710と同様に)、最後のコードワードに対する誤りパターン係数の処理のみがおこなわれている時に実行される。 ステップS12では、レジスタ702の内容は、ロウ乗算器708の乗算定数x 86・6 modG(x)により乗算される。

    ステップS10またはS12を実行した後、ステップS14では、ROWCOUNTの値は1だけインクリメントされる。 もし、ステップS16で判定されるときに、ROWCOUNTのインクリメントされた値が24に等しくないのなら、ステップ
    S4に始まるループが、現在のコードワードの次のバイトについて実行される。 しかし、もしROWCOUNTのインクリメントされた値が24に等しいのなら、ステップS18が実行される。 ROWCOUNTの値は、24を超えることを許されない。 なぜなら、それぞれのカラムコードワードには24のデータバイトしかないからである。

    ステップS18では、新しいカラムへの進みを考慮して、カラム乗算器710は、レジスタ702の内容を、カラム調整定数x −(86・24−1)・8 modG(x)で乗算するはたらきをする。

    ステップS18の後、ステップS20では、ROWCOUNTはゼロにリセットされ、COLCOUNTは1だけインクリメントされる。 ステップS22は、フラグLASTCOLがセットされているかどうかをチェックする。 もしフラグLASTCOLがセットされていないのなら、(ステップS24で)COLCOUNTの値が最後のカラムの数を超えた(例えば、COLCOUNTが86である)かどうかチェックされる。 もしブロックの最後のカラム(例えば、最後のコードワード)が超えられていないのなら、実行は、ステップS2に戻り、ブロックの新しいコードワードの最初のバイトについて継続する。 そうでなければ、フラグLASTCOLは、ステップS2に戻ってブロックの最後のコードワードに対する何らかの誤りパターンを処理する以前に、ステップS26でTRUEにセットされる。

    ブロックの最後のコードワードに対する誤りパターン係数(がもしあれば、それ)がレジスタ702に加算された後、フラグLASTCOLを(ステップS22で)TRUEにセットすることによって、実行は、ステップS28にジャンプする。 ステップS28では、レジスタ702における値(つまり、値REGSUM)がゼロであるかどうかが判定される。 ループがすべて終了した後のレジスタ702における値は、
    バッファにおける全バイト(CRCバイトを含む)から構成される多項式をCRC発生器の多項式で除算したときの剰余である。 レジスタ702の値がゼロであることは、訂正器60によりおこなわれた誤り訂正が正確であることを確証する。

    よって、レジスタ702にブロックの誤ったままになる可能性のある(つまり、訂正されていない)データバイトを加算することは、レジスタ702にブロックの位置的に同期のとられたバイトに対する誤りパターン係数(があれば、それ)を加算することと、時間的に合わせられていることがわかる。

    図3Bのチェッカ70'、図4Aのチェッカ70″、図4Bのチェッカ70″'および図4Cのチェッカ70′の動作は、図7に伴う各ステップについて既に述べた議論を参照すれば理解される。 図4A、図4Bおよび図4Cでは、2つのコードワードが一度に操作される。 図7の実施形態では、図6の各ステップが、2つの構成要素であるチェッカ回路
    70″'のそれぞれについて実行される。ここで、各構成要素をなすチェッカ回路は、同一のデータを受け取るが、2つの16ビット多項式の互いに異なる1つずつを用いて動作する。最後に、両チェッカ回路は、ブロックを訂正可能とするためには、結果的にゼロとならなければならない。

    よって、以上の説明から明らかなように、本発明によれば、CRC/EDCチェックは、データバイトの訂正が実行されるバッファを通る同一のパスの間におこなわれる。
    本発明の方法は、バッファにおけるバイトにシーケンシャルにアクセスすることと、バッファの第1の選択されたバイトを累算された和に(例えば、ステップS10で)
    加算することとを伴う。 ここで、アクセスされるバイトは、もしその訂正が必要とされるのなら、まだ訂正を受けてはいない。 このパスが第1の選択されたバイトを指しているあいだに、そのブロックの第2のバイトが、第2のバイトに対する誤りパターンを用いて訂正される。
    ここで、第1の選択されたバイトと第2の選択されたバイトとの間には、バイト位置同期関係がなりたち、また、第2のバイトは、訂正されていない状態で、累算された和に既に加算されている。 第2のバイトに対する誤りパターン係数は、累算された和に(例えは、ステップ
    S6で)加算される。 それに引き続いて、ただし同一のパスの間に、第1のバイトに対する誤りパターン係数が、
    累算された和に加算される。

    以上に本発明を、その好ましい実施形態に言及しながら具体的に示し、説明してきたが、その形式および詳細については、本発明の精神および範囲から離れることなく、さまざまな改変がその中になされうることは、当業者には理解できるであろう。 例えば、望みとあれば、2
    つよりも多くのインタリーブに適応させることも可能である。

    独占所有権、すなわち特権を請求する本発明の実施形態は、以下のように規定される。

    フロントページの続き (73)特許権者 595158337 3100 West Warren Ave nue,Fremont,Califo rnia 94538,U. S. A. (56)参考文献 特開 昭63−255876(JP,A) 特開 昭63−257966(JP,A) (58)調査した分野(Int.Cl. 7 ,DB名) H03M 13/00

    QQ群二维码
    意见反馈