(57)【特許請求の範囲】
【請求項１】
ロジックデバイス上に記憶された構成データ内のエラーを検出する回路であって、前記回路は、
前記構成データが記憶されるメモリと、
前記構成データと期待値とを入力として取り込むマルチプレクサであって、前記期待値は、前記構成データが前記ロジックデバイス上にプログラムされているときに前記構成データから前記ロジックデバイス上で計算され、前記マルチプレクサは、前記構成データと前記期待値とを含むビットストリームを出力するように動作可能である、マルチプレクサと、
前記マルチプレクサに結合されたチェック回路であって、前記ビットストリームを分析することにより、前記メモリの初期の構成の後に前記構成データ内でエラーが発生しているかどうかを判定するチェック回路と
を含む、回路。
【請求項２】
前記メモリは、ランダムアクセスメモリである、請求項１に記載の回路。
【請求項３】
前記期待値は、前記ロジックデバイスを設計するために使用される前記構成データから計算される、請求項１に記載の回路。
【請求項４】
前記期待値は、前記構成データに基づいた数値を予め設定された数値で除算した結果得られる剰余であり、
前記期待値は、前記構成データが前記ロジックデバイス上にプログラムされている間に前記チェック回路によって計算される、請求項１に記載の回路。
【請求項５】
前記チェック回路は、
前記ビットストリームに基づいた数値を計算する計算回路と、
前記計算回路に結合されたロジック回路であって、前記計算された数値に対するロジック演算を実行するロジック回路と
を含む、請求項１に記載の回路。
【請求項６】
前記計算された数値は、前記ビットストリームに基づいた前記数値を予め設定された数値によって除算した結果得られる剰余である、請求項５に記載の回路。
【請求項７】
前記ロジック回路は、
エラーが検出されなかったことを示す第１の信号と、
エラーが検出されたことを示す第２の信号と
のうちの１つを生成するロジックを含む、請求項５に記載の回路。
【請求項８】
前記メモリに結合された第２のメモリをさらに含み、前記第２のメモリは、前記構成データの一部分を記憶する、請求項１に記載の回路。
【請求項９】
前記マルチプレクサは、前記第２のメモリに結合され、前記マルチプレクサは、前記ビットストリームの一部分として前記構成データの前記一部分を送信し、前記分析の一部分を実行するように動作可能である、請求項８に記載の回路。
【請求項１０】
前記マルチプレクサに入力される前記期待値を記憶するために用いられる第２のメモリをさらに含む、請求項１に記載の回路。
【請求項１１】
前記チェック回路に結合された出力回路であって、エラーが検出されたかどうかを示す信号を出力する出力回路をさらに含む、請求項１に記載の回路。
【請求項１２】
デジタル信号処理システムであって、
処理回路と、
前記処理回路に結合された第２のメモリと、
請求項１に記載の回路と
を含む、システム。
【請求項１３】
請求項１に記載の回路が実装されたプリント回路基板。
【請求項１４】
前記プリント回路基板上に実装され、かつ、前記ロジックデバイスに結合された第２のメモリをさらに含む、請求項１３に記載のプリント回路基板。
【請求項１５】
前記第２のメモリは、前記ロジックデバイスにプログラムされる前記構成データを記憶する不揮発性メモリを含む、請求項１４に記載のプリント回路基板。
【発明の詳細な説明】
【技術分野】
【０００１】
（関連出願に対する相互参照）
この発明は、２００１年１０月１１日付で提出された米国仮特許出願第６０／
３２８，６６８号の権利を主張するものであり、これを全体的に参照に組み入れ
ている。
【背景技術】
【０００２】
この発明は、プログラマブルロジックリソースに関する。より具体的には、本
発明はプログラマブルロジックリソースのエラー検出に関する。
【０００３】
プログラマブルロジックリソースは広範なロジック動作のうちのいずれかを実
行するようにプログラム可能である汎用集積回路である。既知のプログラマブル
ロジックリソースの例にはプログラマブルロジックデバイス（ＰＬＤ）およびフ
ィールドプログラマブルゲートアレイ（ＦＰＧＡ）が含まれる。プログラマブル
ロジックリソース上にメモリを備えることができ、データの記憶および出力を実
行するかまたはユーザが必要とする種々の機能を実行することができる。
【０００４】
データはプログラマブルロジックリソース構成データとしてメモリブロック内
に記憶することができる。データがメモリブロック内にプログラムされる際、あ
るいはデータがメモリブロック内に記憶されている間に、プログラマブルロジッ
クリソース構成データの提示においてエラーが生じる可能性がある。この種のエ
ラーはハードエラーおよびソフトエラーを含むことがあり得る。ハードエラーは
プログラマブルロジックリソース内の物理的な不完全性によって生じるか、ある
いはプログラマブルロジックリソースに対する物理的な損傷によって生じるもの
である。ソフトエラーは、プログラマブルロジックリソースの動作中に、アルフ
ァ粒子または宇宙線がプログラマブルロジックリソースのシリコンに衝突しメモ
リセルの内容を変化させる電子孔のペアの形成を誘発した際に生じる。プログラ
マブルロジックリソースは、その大きな数の微小キャパシタンスメモリノードの
ため、特にソフトエラーに対して敏感である。ソフトエラーによってプログラマ
ブルロジックリソースのロジック機能性に直接影響が及ぼされ、それによってロ
ジック誤動作が誘発される。現状においてはプログラマブルロジックリソース内
におけるこの種のエラーを検出し得る方法は存在しない。
【０００５】
以上のことから、プログラマブルロジックリソース内におけるエラーを検出す
るシステムならびに方法が必要とされている。
【発明の概要】
【課題を解決するための手段】
【０００６】
従って、本発明の対象はプログラマブルロジックリソース内のエラー検出シス
テムならびに方法を提供することである。
【０００７】
本発明によれば、プログラマブルロジックリソース構成データ内のエラーを検
出するエラー検出回路が提供される。プログラマブルロジックリソース上のメモ
リ内にデータをプログラムする前あるいはプログラマブルロジックリソース上の
メモリ内にデータをプログラムしている間に管理式によってデータを除算して剰
余を取り出すことによってチェックサムが計算される。この計算はソフトウェア
内で計算するかまたはエラー検出回路によって実行することができる。管理式は
、例えば電気電子工学会（ＩＥＥＥ）８０２規格の３２ビット巡回冗長検査（Ｃ
ＲＣ−３２）等の、多項からなる適宜なデータ表現とすることができる。このチ
ェックサムは期待値とも呼ばれ、プログラマブルロジックリソース上の任意の位
置（例えば専用のレジスタ内等）に記録することができ、エラー検出中に引き出
すことができる。
【０００８】
エラー検出開始の信号を発するためにレジスタ内の専用ビット等からなるフラ
グがユーザによって初期化されることが可能である。メモリ内にデータがプログ
ラムされた後、フラグをセットしてプログラマブルロジックリソース構成データ
のエラー検出回路へのローディングを指令する有限状態機械によってエラー検出
を開始することができる。プログラマブルロジックリソースのエラー検出回路に
プログラマブルロジックリソース構成データがロードされると、エラー検出回路
は期待値の計算に使用したものと同一あるいは同等な管理式を使用してロードさ
れたデータからチェックサムの計算を開始する。全てのプログラマブルロジック
リソース構成データがロードされると、有限状態機械がエラー検出回路に期待値
をロードすることを指令する。
【０００９】
本発明の一構成形態において、プログラマブルロジックリソース構成データ上
においてチェックサムが計算され、結果として得られたチェックサムが期待値と
比較される。チェックサムと期待値との間に予め設定された関係（例えばチェッ
クサムと期待値とが等しいか、チェックサムと期待値とが予め設定された偏差ま
たは倍数をもって異なっている場合）が成立する場合エラーは検出されない。
【００１０】
本発明の別の構成形態においては、プログラマブルロジックリソース構成デー
タはまず専用のＯＲ（ＸＯＲ）ツリーにロードされる。プログラマブルロジック
リソース構成データがロードされた後、期待値がＸＯＲツリーにロードされる。
ＸＯＲツリーは管理式に基づいてロードされたデータおよび期待値上でチェック
サムを計算する。チェックサムが予め設定された所定の数値に等しい（例えばチ
ェックサムが０、またはチェックサムが予め設定された偏差である）場合エラー
は検出されない。エラー検出回路によって形成された出力はプログラマブルロジ
ックリソース上の出力端子に伝送され、これはユーザロジックによって監視する
ことができる。
例えば、本願発明は以下の項目を提供する。
（項目１）  ロジックデバイス上に記憶された構成データ内のエラーを検出するものであり：
構成データが記憶されるメモリと；
前記メモリに結合されこのメモリ内に記憶された構成データを分析してメモリの初期の構成の後にいずれかの値が変更されているかどうかを判定するチェック回路、
とからなる回路。
（項目２）  メモリはランダムアクセスメモリである項目１記載のロジックデバイス。
（項目３）  チェック回路は：
構成データに基づいて数値を計算するチェックサム回路と；
このチェックサム回路に結合され計算された数値を期待値と比較する比較回路とからなる、
項目１記載のロジックデバイス。
（項目４）  計算された数値は構成データに基づいた数値を予め設定された数値によって除算した結果得られた剰余である項目３記載のロジックデバイス。
（項目５）  期待値はロジックデバイスを設計するために使用される構成データから計算される項目３記載のロジックデバイス。
（項目６）  期待値はロジックデバイスを構成する前にこのロジックデバイス上にプログラムされる前の構成データに基づいた数値を予め設定された数値で除算した結果得られる剰余から計算する項目５記載のロジックデバイス。
（項目７）  予め設定された数値はチェックサム回路によって使用されるものと同等な数値に基づいたものである項目６記載のロジックデバイス。
（項目８）  期待値は構成データがロジックデバイス上にプログラムされている間にチェックサム回路によって計算される項目３記載のロジックデバイス。
（項目９）  比較回路は：
エラーが検出されなかったことを示す第１の信号と；
エラーが検出されたかったことを示す第２の信号と、
のうちのいずれかを提供する項目３記載のロジックデバイス。
（項目１０）  チェック回路は：
構成データに基づいた数値を計算する計算回路と；
計算回路に結合され計算された数値上でロジック操作を実行するロジック回路、
とを備える項目１記載のロジックデバイス。
（項目１１）  計算された数値は構成データに基づいた数値と期待値とを予め設定された数値によって除算して得られた剰余である項目１０記載のロジックデバイス。
（項目１２）  期待値はロジックデバイスを構成するために使用される構成データから計算される項目１１記載のロジックデバイス。
（項目１３）  期待値はロジックデバイスを構成する前にこのロジックデバイス上にプログラムされる前の構成データに基づいた数値を予め設定された数値によって除算した結果得られる剰余から計算する項目１２記載のロジックデバイス。
（項目１４）  期待値は構成データがロジックデバイス上にプログラムされている間に計算回路によって計算される項目１１記載のロジックデバイス。
（項目１５）  ロジック回路は：
エラーが検出されなかったことを示す第１の信号と；
エラーが検出されたかったことを示す第２の信号と、
のうちのいずれかを形成するロジックを含んだ項目１０記載のロジックデバイス。
（項目１６）  メモリに結合された第２のメモリをさらに備え、この第２のメモリは構成でデータの一部を記憶する項目１記載のロジックデバイス。
（項目１７）  チェック回路は第２のメモリに結合され構成データの一部上の分析の一部を実行する項目１６記載のロジックデバイス。
（項目１８）  チェック回路に入力される期待値を記憶するために使用される第２のメモリをさらに備える項目１記載のロジックデバイス。
（項目１９）  期待値はロジックデバイスを構成するために使用される構成データから計算される項目１８記載のロジックデバイス。
（項目２０）  期待値はロジックデバイスを構成する前にこのロジックデバイス上にプログラムされる前の構成データに基づいた数値を予め設定された数値によって除算した結果得られる剰余から計算する項目１９記載のロジックデバイス。
（項目２１）  期待値は構成データがロジックデバイス上にプログラムされている間にチェック回路によって計算される項目１８記載のロジックデバイス。
（項目２２）  チェック回路に結合されておりエラーが検出されたかどうかを示す信号を出力するための出力回路をさらに備える項目１記載のロジックデバイス。
（項目２３）  処理回路と；
前記処理回路に結合された第２のメモリと；
項目１記載に定義されたロジックデバイスとからなるデジタル処理システム。
（項目２４）  項目１記載のロジックデバイスが実装されたプリント回路基板。
（項目２５）  プリント回路基板上に実装されるとともにロジックデバイスに結合された第２のメモリをさらに備える項目２４記載のプリント回路基板。
（項目２６）  第２のメモリはロジックデバイスにプログラムされる構成データを記憶する不揮発メモリからなる項目２５記載のプリント回路基板。
（項目２７）  ロジックデバイス上に設けられるエラー検出回路であり：
期待値とロジックデバイス上に記憶された構成データとを入力として取り込むマルチプレクサと；
このマルチプレクサの出力に結合されるチェック回路とからなり、このチェック回路が：
多項式チェックサム計算を実行するＸＯＲツリーと、
このＸＯＲツリーに結合されたシグニチャレジスタと、
このシグニチャレジスタに結合されるロジックゲートとからなり、このロジックゲートはビット形式の入力として前記シグニチャレジスタの内容を取り込む、
エラー検出回路。
（項目２８）  構成データが記憶される第１のメモリをさらに備える請求項２７記載のエラー検出回路。
（項目２９）  第１の回路に結合された第２のメモリをさらに備え、この第２のメモリがマルチプレクサの入力として伝送される構成データの一部を記憶する項目２８記載のエラー検出回路。
（項目３０）  期待値を記憶するために使用されるメモリをさらに備える項目２７記載のエラー検出回路。
（項目３１）  期待値はロジックデバイスを構成するために使用される構成データから計算される項目３０記載のエラー検出回路。
（項目３２）  期待値はロジックデバイスを構成する前にこのロジックデバイス上にプログラムされる前の構成データに基づいた数値を予め設定された数値によって除算した結果得られる剰余から計算する項目３１記載のエラー検出回路。
（項目３３）  期待値は構成データがロジックデバイス上にプログラムされている間にチェック回路によって計算される項目３０記載のエラー検出回路。
（項目３４）  マルチプレクサは第１に構成データを出力として伝送し第
２に期待値を出力として伝送する項目２７記載のエラー検出回路。
（項目３５）  ＸＯＲツリーはクロックサイクル毎に多項式チェックサム計算の結果を記憶するためのレジスタを備え、さらにその結果を次のクロックサイクルにおいてＸＯＲツリーに入力として伝送する項目２７記載のエラー検出回路。
（項目３６）  レジスタに記憶された結果は次のクロックサイクルにおいてシグニチャレジスタに伝送されその中に記憶される項目３５記載のエラー検出回路。
（項目３７）  ＸＯＲツリーは構成データに基づいた数値および期待値を予め設定された数値によって除算した結果得られる剰余を計算する項目２７記載のエラー検出回路。
（項目３８）  ロジックゲートは出力として：
シグニチャレジスタの内容が予め設定された数値である際に第１のビット；
シグニチャレジスタの内容が予め設定された数値以外である際に第２のビットの；
いずれかを伝送する項目２７記載のエラー検出回路。
（項目３９）  ロジックゲートの出力に結合されるとともにエラーが検出されたかどうかを表示する信号を出力するための出力ピンをさらに備える項目２７記載のエラー検出回路。
（項目４０）  出力端子はユーザロジックによってアクセス可能である請求項３９記載のエラー検出回路。
（項目４１）  エラー検出回路はロジックデバイス上に設けられたハード配線回路である項目２７記載のエラー検出回路。
（項目４２）  エラー検出回路はロジックデバイスにプログラムされる請求項２７記載のエラー検出回路。
（項目４３）  エラー検出回路はロジックデバイスの外部にあり入出力端子を使用してロジックデバイスと結合される項目２７記載のエラー検出回路。
（項目４４）  エラー検出回路はソフトウェア内で実施される項目２７記載のエラー検出回路。
（項目４５）  ロジックデバイス内にプログラムされる構成データのエラーを検出するものであり：
ロジックデバイス上にプログラムされる構成データに基づいて期待値を計算し；
ロジックデバイス上に記憶された構成データを分析してエラーが発生しているかどうかを判定することからなる方法。
（項目４６）  期待値の計算はロジックデバイスを構成する前にこのロジックデバイス上にプログラムされる前の構成データに基づいた数値を予め設定された数値によって除算した結果得られる剰余から計算することからなる項目４５記載の方法。
（項目４７）  期待値の計算はロジックデバイスの構成中において構成データがロジックデバイス上にプログラムされている間にこの構成データに基づいた数値を予め設定された数値によって除算した結果得られる剰余から計算することからなる項目４５記載の方法。
（項目４８）  構成データの分析は：
構成データに基づいた数値を計算し；
計算された数値を期待値と比較する、
ことからなる項目４５記載の方法。
（項目４９）  構成データの分析は：
構成データに基づいた数値と期待値とを計算し；
計算された数値上においてロジック演算を実行する、
ことからなる項目４５記載の方法。
（項目５０）  エラーが検出されたかどうかを示す分析結果を出力することをさらに含む項目４５記載の方法。
（項目５１）  結果の出力は：
エラーが検出されないことを示す第１の信号を送信するか；
エラーが検出されたことを示す第２の信号を送信するか、
のいずれか一方である項目４５記載の方法。
【００１１】
本発明の上記またはその他の利点は添付図面を参照しながら以下に記す詳細な
説明によって明らかにされ、ここで同様な構成要素は同様な参照符号によって示
される。
【図面の簡単な説明】
【００１２】
【図１】本発明の一実施例に係るエラー検出回路を備えたプログラマブルロジックリソースを示すブロック線図である。
【図２】本発明の別の実施例に係るエラー検出回路を備えたプログラマブルロジックリソースを示すブロック線図である。
【図３】図１の本発明の一実施例に係るエラー検出回路を備えたプログラマブルロジックリソースを示すより詳細なブロック線図である。
【図４】本発明の一実施例に係る複数入力ＸＯＲツリーへの入力データを示す構成図である。
【図５】本発明の一実施例に係るエラー検出回路において実施され得る例示的な単一入力ＸＯＲツリーを示す構成図である。
【図６】本発明の一実施例に係るエラー検出回路において実施され得る例示的な複数入力ＸＯＲツリーを示す構成図である。
【図７】本発明の一実施例においてプログラマブルロジックリソース構成データがどのように記録されるかを示すブロック線図である。
【図８】本発明の一実施例においてプログラマブルロジックリソース構成データがどのように記録されるかを示す概略説明図である。
【図９】本発明の一実施例に係るエラー検出回路内へのプログラマブルロジックリソース構成データのローディングに含まれている例示的なステップ示すフローチャートである。
【図１０】本発明の一実施例に係るエラー検出回路内へのプログラマブルロジックリソース構成データのローディングに含まれている例示的なステップ示すフローチャートである。
【図１１】本発明の一実施例に係るエラー検出回路内へのプログラマブルロジックリソース構成データのローディングに含まれている例示的なステップ示すフローチャートである。
【図１２】本発明の一実施例に係るエラー検出回路内へのプログラマブルロジックリソース構成データのローディングに含まれている例示的なステップ示すフローチャートである。
【図１３】本発明の一実施例に係るエラー検出回路内へのプログラマブルロジックリソース構成データのローディングに含まれている例示的なステップ示すフローチャートである。
【図１４】本発明の一実施例に係るエラー検出回路内へのプログラマブルロジックリソース構成データのローディングに含まれている例示的なステップ示すフローチャートである。
【図１５】本発明の一実施例に係るエラー検出回路内へのプログラマブルロジックリソース構成データのローディングに含まれている例示的なステップ示すフローチャートである。
【図１６】本発明の一実施例に係るプログラマブルロジックリソース上におけるエラー検出の実施に含まれている例示的なステップ示すフローチャートである。
【図１７】本発明の一実施例に係る回路を使用する例示的なシステムを示す概略ブロック線図である。
【発明を実施するための形態】
【００１３】
本発明はプログラマブルロジックリソース内におけるエラー検出システムなら
びに方法を提供するものである。プログラマブルロジックリソースには、例えば
プログラマブルロジックデバイス、フィールドプログラマブルゲートアレイ、ま
たはその他の適宜なプログラマブルデバイスが含まれる。エラーは、ソフトエラ
ーおよびハードエラーのいずれか一方あるいはその両方とすることができる。さ
らにエラーは、電圧スパイク、システムバグ、ライン伝送不良およびハードウェ
ア誤動作を含むその他の外的な作用、あるいはプログラマブルロジックリソース
のデータ表現に影響を及ぼすいずれかの事象に分類することができる。
【００１４】
プログラマブルロジックリソースは、多様なアプリケーションのうちのいずれ
か１つあるいは複数のものを実行するようにこのプログラマブルロジックリソー
スをプログラムするためのデータを保持する。プログラマブルロジックリソース
構成データは二進数値（すなわち二進数の“１”および“０”）の集合として表
現され、例えば構成ＲＡＭ（ＣＲＡＭ）等の適宜な場所に記憶することができる
。他方、プログラマブルロジックリソース構成データは、例えばスタティックＲ
ＡＭ（ＳＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ラムバスＤＲＡＭ（ＲＤ
ＲＡＭ）、シンクロナスＤＲＡＭ（ＳＤＲＡＭ）、ダブルデータレートシンクロ
ナスＤＲＡＭ（ＤＤＲ  ＳＤＲＡＭ）、消去可能プログラム可能ＲＯＭ（ＥＰＲ
ＯＭ）、フラッシュメモリ、およびマグネティックＲＡＭ（ＭＲＡＭ）等のその
他の適宜な揮発あるいは不揮発メモリ内に記憶することができる。
【００１５】
メモリ内に記憶されたプログラマブルロジックリソース構成データは１つまた
は複数のアプリケーションと関連付けることができる。例えば、あるプログラマ
ブルロジックリソース構成データは、プログラマブルロジックリソースのプログ
ラマブル要素をどのように構成するかを決定する（すなわち特定のアプリケーシ
ョンを実行する）ために使用することができる。プログラマブルロジックリソー
ス構成データのうちのいくつかの二進数字はデータ（例えば管理式、期待値等）
を表現するために使用することができる。プログラマブルロジックリソース構成
データのその他の二進数字は、プログラマブルロジックリソースによって実行さ
れるアプリケーションのリアルタイム動作の一部として使用することができる（
例えばメモリの読み取りおよび書き込みがアプリケーションによって決定される
場合）。特定の二進数字が誤って表示されるとプログラマブルロジックリソース
構成データが変化する（例えば、元々二進数“１”であった二進数字が二進数“
０”とされた場合あるいはその逆の場合）。本発明はこのようなエラーを検出す
る方法を提供する。
【００１６】
本発明は前述したように巡回冗長検査（ＣＲＣ）チェックサム分析によってプ
ログラマブルロジックリソース内のエラーを検出するものであるが、プログラマ
ブルロジックリソース内のエラーを検出するためのその他の適宜な方法を使用す
ることが可能である。ＣＲＣチェックサム分析においてはチェックサムが計算さ
れる。このチェックサムは、例えばデータと管理式とからなる除算操作から生じ
た剰余とすることができる。他方、チェックサムはその他の好適な操作または操
作の組み合わせを使用して計算することもできる。管理式はプログラマブルロジ
ックリソース構成データの期待値を計算するために使用されるいずれかの適宜な
データ表示とすることができる。
【００１７】
期待値は、プログラマブルロジックリソース内にプログラムされるべきデータ
あるいはプログラムされているデータと管理式とが演算数となる操作から生じる
チェックサムである。この期待値はユーザが定義するものかあるいはその他の適
宜な要素とすることができる。期待値は、プログラマブルロジックリソース上の
レジスタまたはメモリ内に記憶するか、またはその他の適宜な場所に記憶するこ
とができる。
【００１８】
一実施例において、チェックサムはプログラマブルロジックリソース構成デー
タ上で計算され期待値と比較される。チェックサムと期待値との間に予め設定さ
れた所定の相関性が存在する場合エラーは検出されない（例えばチェックサムと
期待値とが等しいか、チェックサムが予め設定された偏差あるいは倍数をもって
期待値と異なっている場合）。
【００１９】
別の実施例においては、プログラマブルロジックリソース構成データはまず専
用のＯＲ（ＸＯＲ）ツリーにロードされる。プログラマブルロジックリソース構
成データがロードされた後、期待値がＸＯＲツリーにロードされる。ＸＯＲツリ
ーは管理式に基づいてロードされたデータおよび期待値上でチェックサムを計算
する。チェックサムが予め設定された所定の数値に等しい（例えばチェックサム
が０、またはチェックサムが予め設定された偏差である）場合エラーは検出され
ない。
【００２０】
エラー検出回路によって形成される出力はプログラマブルロジックリソースの
一出力端子に伝送され、これはユーザロジックによって監視することができる。
エラーが検出された場合、プログラマブルロジックリソースのユーザにはプログ
ラマブルロジックリソース構成データの全ての部分を再ロードするか、またはエ
ラーに対応するその他の適宜な動作を行う選択肢が提供される。
【００２１】
ＣＲＣチェックサム分析を行うためにＣＲＣモジュールが使用される。ＣＲＣ
モジュールは任意の好適な構成を使用して実施することができる。例えば、一実
施例においてＣＲＣモジュールはプログラマブルロジックリソース上のハード配
線された常駐要素とすることができる。別の実施例においては、ＣＲＣモジュー
ルはプログラマブルロジックリソース内にプログラムすることができる。さらに
別の実施例においては、ＣＲＣモジュールはプログラマブルロジックリソースの
外部の独立したデバイスとして実施され、このＣＲＣモジュールは例えば入出力
（Ｉ／Ｏ）端子を使用してプログラマブルロジックリソースと結合される。さら
に別の実施例においては、ＣＲＣモジュールはマイクロプロセッサ（例えばコン
ピュータ）を使用して実行されるソフトウェア内で実施される。これらのいずれ
の実施形態も本発明と組み合わせて使用することができる。ここでは主にプログ
ラマブルロジックリソース上のハード配線されたＣＲＣモジュールに関連して本
発明を説明するが、これは簡略化のためでありこれに限定されるものではない。
【００２２】
図１ないし図３に関連してより詳細に説明するように、プログラマブルロジッ
クリソース上においてエラー検出を行うために、追加的な信号、レジスタ、なら
びに制御ロジックが必要とされる。例えば、エラー検出の開始を表記するために
特定のレジスタ内におけるデータビットがフラグ付けされる。またエラー検出回
路の準備を行うために追加的な信号が必要とされ、これには、例えばレジスタを
消去する信号、カウンタをプリセットする信号、ならびに種々の制御信号を能動
あるいは非能動にするための信号が含まれる。さらに、追加的なレジスタが必要
とされ、これには、例えばプログラマブルロジックリソース構成データ内のフレ
ームに指標を付けるためのアドレスレジスタ、および指標を付けたフレームをデ
ータがエラー検出回路にロードする前に一時的に記憶するためのデータレジスタ
が含まれる。
【００２３】
好適な一方式において、ＣＲＣモジュールとプログラマブルロジックリソース
との間のデータ交信を取り決めるために有限状態機械（ＦＳＭ）が使用される。
より具体的には、ＦＳＭはＣＲＡＭ内のデータのＣＲＣモジュールへのロードお
よびシフトを命令することができる。他方、ＦＳＭはＣＲＡＭ内のデータを一時
的にデータレジスタにロードおよびシフトし、その後データレジスタからＣＲＣ
モジュールにロードおよびシフトすることを命令することができる。ＣＲＣモジ
ュールは、プログラマブルロジックリソース上のチェックサムならびに場合によ
っては期待値を計算するためのサブモジュールを含んでいる。このサブモジュー
ルは標準的な多項式（例えばＣＲＣ−３２ＩＥＥＥ８０２規格）、データの合計
、またはその他の適宜なデータ表現を使用してチェックサム分析を実行するため
の任意の適宜な回路とすることができる。
【００２４】
計算されたチェックサムはその後比較回路に伝送し、そこでチェックサムは期
待値あるいはその他の予め設定された適宜な数値と比較することができる。比較
回路はコンパレータ、ＯＲゲート、ＸＯＲゲート、またはその他の適宜なロジッ
クゲートあるいはロジックゲートの組み合わせを使用して構成することができる
。
【００２５】
図１には、期待値１０２、プログラマブルロジックリソース構成データ１０４
、有限状態機械（ＦＳＭ）１０８、およびＣＲＣモジュール１１６を備えた例示
的なプログラマブルロジックリソース１００が示されている。期待値１０２はプ
ログラマブルロジックリソース１００上のレジスタあるいはメモリ内に記憶する
ことができる。プログラマブルロジックリソース構成データ１０４は、例えば構
成ＲＡＭ（ＣＲＡＭ）等のプログラマブルロジックリソース１００内の適宜なメ
モリ内に記憶することができる。プログラマブルロジックリソース構成データ１
０４はデータパス１１２を介してデータをＣＲＣモジュール１１６に伝送するこ
とができる。パス１１２は、データを直列あるいは並列、またはその組み合わせ
によって伝送するための任意の適宜な単一あるいは複数のパスとすることができ
る。
【００２６】
ＦＳＭ１０８はＣＲＣモジュール１１６とプログラマブルロジックリソース１
００との間のデータ交信を取り決めるために使用することができる。ＦＳＭ１０
８は、エラー検出の開始を検知し、クロック信号およびその他の信号を形成しパ
ス１０６を介してプログラマブルロジックリソース構成データ１０４に送信し、
パス１１２を介してのデータ１０４のＣＲＣモジュール１１６へのロードを命令
することができる。ＦＳＭ１０８はパス１１４を介してＣＲＣモジュール１１６
内におけるエラー検出分析を命令することができる。パス１０６，１１２および
１１４は、データならびにクロック、プリセット信号、フラグ等の種々の信号を
伝送するために適したパスとすることができる。
【００２７】
データパス１０６，１１２および１１４は直接接続とするか、あるいは中間回
路を含むか、またはその両方とすることができる。中間回路は、例えばレジスタ
、配線回路、マルチプレクサ、または種々の信号の表示／非表示、能動化／非能
動化またはその両方を適宜な時間に実行してデータのロードならびにチェックサ
ムの計算を行うことができるその他の適宜な回路とすることができる。
【００２８】
図２には、プログラマブルロジックリソース構成データ１０４およびＦＳＭ１
０８とＣＲＣモジュール１１６との間のパス内に中間回路２０２を備えている例
示的なプログラマブルロジックリソース２００のブロック線図が示されている。
図示されている構成要素間の交信を実行するパスのいずれもが適宜な中間回路を
備え得ることが理解される。
【００２９】
図１を参照すると、ＣＲＣモジュール１１６はチェックサム計算回路１１８と
比較回路１２２を含んでいる。チェックサム計算回路１１８は、パス１１２を介
してプログラマブルロジックリソース構成データを受信する。このチェックサム
計算回路１１８はプログラマブルロジックリソース構成データ１０４上でチェッ
クサムを計算し、これはＣＲＣチェックサム分析で使用することができる。プロ
グラマブルロジックリソース構成データ１０４上でチェックサムを計算するため
に任意の好適な方法を使用することができる。例えば、ＣＲＣ−３２ＩＥＥＥ８
０２規格の多項式：
【００３０】
［数１］
Ｇ（Ｘ）＝Ｘ３２＋Ｘ２６＋Ｘ２３＋Ｘ２２＋Ｘ１６＋Ｘ１２＋Ｘ１１＋Ｘ
１０＋Ｘ８＋Ｘ７＋Ｘ５＋Ｘ４＋Ｘ２＋Ｘ１＋１      （１）
【００３１】
とすることができる管理式をチェックサムの形成のために使用することができる
。
【００３２】
一実施例において、チェックサムは例えばデータ（例えばプログラマブルロジ
ックリソース構成データ１０４）のモジューロ（ｍｏｄ）をとって管理式（１）
によって行われ、これはデータを管理式で除算した際の剰余である。別の実施例
において、データ上でモジューロ操作が行われる前にデータ上でシフト操作を行
うことができる。本発明においてはチェックサムを形成するためにその他の好適
な管理式を使用し得ることが理解される。
【００３３】
プログラマブルロジックリソース構成データ１０４がＣＲＣモジュール１１６
ロードされる際、期待値１０２がＣＲＣモジュール１１６にロードされる。期待
値１０２は、任意の適宜なソースから受信することができる。一実施例において
期待値はプログラマブルロジックリソース１００にデータをプログラムする際に
ソフトウェアを使用して計算することができる。別の実施例において、期待値は
プログラマブルロジックリソース１００にデータをプログラムする際にＣＲＣモ
ジュール１１６を使用して計算することができる。例えば、プログラマブルロジ
ックリソース１００にデータがプログラムされる際に、データはさらにＣＲＣモ
ジュール１１６にも伝送され、そこで期待値が計算される。期待値はＣＲＣモジ
ュール１１６内でチェックサムを計算するためのものと同一のチェックサム計算
を使用して計算することが好適である。
【００３４】
本発明の一実施例おいて、プログラマブルロジックリソース構成データ１０４
はチェックサムを形成するためにチェックサム計算回路１１８に伝送することが
できる。計算されたチェックサムはデータパス１２０を介して比較回路１２２に
伝送される。計算されたチェックサムは比較回路１１２内において適宜なロジッ
クゲートまたはロジックゲートの組み合わせ（例えばコンパレータ、ＸＯＲゲー
ト、減算器等）を使用して期待値１０２と比較される。チェックサムと期待値１
０２との間に予め設定された関係（例えばチェックサムと期待値１０２とが等し
いか、チェックサムと期待値１０２とが予め設定された偏差または倍数をもって
異なっている）が成立する場合、比較回路１２２はエラーが検出されないことを
示す出力（例えば二進“０”）を形成する。しかしながら、チェックサムと期待
値１０２との間にこの予め設定された関係が成立しない場合（例えばチェックサ
ムと期待値１０２とが異なっているか、チェックサムと期待値１０２とが別の偏
差をもって異なっている場合）、比較回路１２２はエラーが検出されたことを示
す出力（例えば二進“１”）を形成する。この比較回路１２２の出力はパス１２
４を介してＣＲＣエラー端子１２６に伝送される。ＣＲＣエラー端子１２６はプ
ログラマブルロジックリソース構成データ１０４内のエラーの存在を監視するた
めにユーザがアクセスすることができる。
【００３５】
本発明の別の実施例において、チェックサムを計算するためにプログラマブル
ロジックリソース構成データ１０４および期待値１０２を共にチェックサム計算
回路１１８に伝送することができる。例えば、プログラマブルロジックリソース
構成データは管理式の次数に等しいビット数によって乗算あるいはシフトするこ
とができる（例えば、ＣＲＣ−３２ＩＥＥＥ８０２規格において、この次数は最
上項の指数であり３２となる）。期待値１０２（これは同じ計算方式で計算され
る）はプログラマブルロジックリソース構成データ１０４の末端に添付し（すな
わち期待値１０２を示すビットがプログラマブルロジックリソース構成データ１
０４を示すデータに添付される）、チェックサム計算回路１１８を介して伝送す
ることができる。
【００３６】
計算されたチェックサムはその後データパス１２０に沿って比較回路１２２に
伝送される。比較回路１１２内において、適宜なロジックゲートまたはロジック
ゲートの組み合わせ（例えばコンパレータ、ＯＲゲート、加算器等）を使用して
計算されたチェックサム上でロジック操作が行われる。チェックサムが予め設定
された所定の数値に等しい場合（例えばチェックサムが０、あるいはチェックサ
ムが予め設定された偏差である場合）、比較回路１２２はエラーが検出されない
ことを示す出力（例えば二進“０”）を形成する。しかしながら、チェックサム
が予め設定された数値と異なる数値である場合（例えばチェックサムが０でない
、あるいはチェックサムが予め設定された偏差でない場合）、比較回路１２２は
エラーが検出されたことを示す出力（例えば二進“１”）を形成する。比較回路
１２２はエラーが検出されたかどうかに従っていずれかの適宜な出力を形成する
。この比較回路１２２の出力はパス１２４を介してＣＲＣエラー端子１２６に伝
送される。
【００３７】
図３には例示的なプログラマブルロジックリソース３００のブロック線図が示
されている。ＣＲＣモジュール３２０は、マルチプレクサ３２２および３３２と
ＸＯＲツリー３２４とレジスタ３２６，３２８，３３０および３３４と例えばＯ
Ｒゲート３３６等の１つまたは複数のロジックゲートを備えている。プログラマ
ブルロジックリソース構成データ１０４および期待値１０２はマルチプレクサ３
２２に入力することができる。マルチプレクサは、ＦＸＭ１０８によって検出さ
れた選択信号の数値に従って入力のうち一方を選択してその出力に伝送する。例
えば、ＦＳＭ１０８は、選択信号を第１の二進数ビット（例えば二進数“０”）
に設定し、これはマルチプレクサ３２２にパス１１２を介してプログラマブルロ
ジックリソース構成データ１０４を受信するための第１の入力を選択して出力へ
伝送することを指令するものとすることができる。プログラマブルロジックリソ
ース構成データ１０４を出力へ伝送した後、ＦＳＭ１０８は、選択信号を第２の
二進数ビット（例えば二進数“１”）に設定し、これはマルチプレクサ３２２に
パス１１０を介して期待値１０２を受信するための第２の入力を選択して出力へ
伝送することを指令するものとすることができる。マルチプレクサ３２２の出力
はＸＯＲツリーに伝送され、そこでチェックサムが計算される。
【００３８】
一実施例において、ＸＯＲツリー３２４は式（１）のＣＲＣ−３２ＩＥＥＥ８
０２規格の管理式を使用してチェックサムを計算することができる。任意の適宜
な管理式を使用することができるが、期待値１０２の計算にも同じ管理式を使用
することが好適である。ＸＯＲ３２４が期待値１０２に後続しているプログラマ
ブルロジックリソース構成データ１０４を受信すると、ＸＯＲ３２４がロードさ
れたデータを処理する。ＸＯＲツリー３２４の出力はレジスタ３２６に結合され
、ここで後続する処理のための後続するサイクル中においてＸＯＲツリー３２４
にデータを返信することができる。レジスタ３２６は、ラッチ、フリップフロッ
プ（例えばＤフリップフロップ、Ｊ−Ｋフリップフロップ）、またはクロックメ
カニズムによって制御される適宜な記憶装置とすることができる。ＸＯＲツリー
３２４およびレジスタ３２６は、チェックサム計算回路１１８の一部を形成する
ことができる。
【００３９】
マルチプレクサ３２２を介してデータを伝送し、ＸＯＲツリー３２４に直列、
並列あるいはその組み合わせによってロードすることができる。一実施例におい
て、１クロックサイクルごとに１つのデータビットをロードしてＸＯＲツリー３
２４内で処理することができる。別の実施例においては、１クロックサイクルご
とに複数（例えば２，８，１６）のデータビットをロードしてＸＯＲツリー３２
４内で処理することができる。
【００４０】
図４には入力４０２としてＸＯＲツリー３２４に伝送されるデータ列が示され
ている。プログラマブルロジックリソース構成データ１０４は複数のフレーム４
０６（例えばＭ個のフレーム）に分割することができる。データ１０４は１つの
時点において１つのフレーム４０６にロードされる（例えばフレーム１、フレー
ム２、・・・フレームＭ）。各フレーム４０６内において複数のビット（例えば
Ｎビット）４０４が一時点にロードされる。データは最も重要なビットから最も
重要でないビットへとロードすることができる。各クロックサイクル内において
、各ビット４０４が異なったデータパス４０２（例えばＩ１，Ｉ２，．．．ＩＮ
）を介してＸＯＲツリー３２４に伝送される。データ１０４がロードされた後、
期待値が同様にＸＯＲツリー３２４にロードされる。ビットの総数（例えば構成
データ１０４と期待値１０２の）が入力（Ｎ）の倍数でない場合、データ列に追
加的なビット（例えば二進数“１ｓ”および二進数“０ｓ”）が埋め込まれる。
これらの追加的なビットはデータ列の前端、データ列の後端、あるいはその他の
適宜な位置に埋め込むことができる。
【００４１】
ＸＯＲツリー３２４およびレジスタ３２６は以下の行列式で実施することがで
きる：
【００４２】
［数２］
Ｑ＝Ａ＊ｑ＋Ｂ＊ＩＮ      （２）
【００４３】
行列は１つまたは複数の行および１つまたは複数の列に配列されたデータからな
り、以下の特性を有する。
【００４４】
［数３］
ＸＲ×Ｃ＝［（１，１）  （１，２）・・・（１，Ｃ）
（２，１）
・                          ・
・                          ・
・                          ・
（Ｒ，１）                  （Ｒ，Ｃ）］      （３）
【００４５】
ここでＲは行の数をＣは列の数を示している。
【００４６】
“Ａ”はレジスタ３２６および管理式を示すｄ×ｄの行列であり、ここでｄは
管理式の最上項の次数である。“ｑ”はレジスタ３２６内に現時点で記憶されて
いる先のクロックサイクルからの内容を示すｄ×１の行列である。“Ｂ”は管理
式内の各項の係数を示すｄ×１の行列である。“ＩＮ”は入力ビット４０２を示
す定数である。“Ｑ”は次のサイクル中のＸＯＲツリー３２４の出力（例えば先
のクロックサイクル中にレジスタ３２６内に記憶された内容を使用しての入力４
０２の処理の結果）を示すｄ×１の行列である。
【００４７】
等式（２）に基づいて、クロックサイクル毎にＮ個の入力ビットを処理するた
めの等式は以下のものとなる：
【００４８】
［数４］
１入力：Ｑ１＝Ａｑ＋ＢＩ１      （４）
２入力：Ｑ２＝Ａ２ｑ＋ＡＢＩ１＋ＢＩ２      （５）
３入力：Ｑ３＝Ａ３ｑ＋Ａ２ＢＩ１＋ＡＢＩ２＋ＢＩ３      （６）
・
・
・
Ｎ入力：ＱＮ＝ＡＮｑ＋ＡＮ−１ＢＩ１＋・・・＋ＡＢＩＮ−１＋ＢＩＮ 
（７）
【００４９】
図５には、ＸＯＲツリー３２４およびレジスタ３２６を含んだ回路５００の一
実施例が示されている（例えばチェックサム計算回路１１８）。回路５００はク
ロックサイクル毎に１つの入力ビット（例えばＩ１）を処理する。一例を挙げる
と、管理式は以下のように示される：
【００５０】
［数５］
Ｇ（Ｘ）＝Ｘ５＋Ｘ３＋１      （８）
【００５１】
式（８）においてＧ（Ｘ）の次数が５であるため、ＸＯＲツリー３２４の出力を
記憶するために５つのレジスタ３２６が存在する。回路５００の出力は等式（４
）によって示され、その行列は以下のようになる：
【００５２】
［数６］
Ａ＝［０  ０  ０  ０  １
１  ０  ０  ０  ０
０  １  ０  ０  ０
０  ０  １  ０  １
０  ０  ０  １  ０］      （９）
【００５３】
［数７］
ｑ＝「ｑ１
ｑ２
ｑ３
ｑ４
ｑ５］          （１０）
【００５４】
［数８］
Ｂ＝［１
０
０
１
０］          （１１）
【００５５】
“Ａ”は最初の４つの列がレジスタ３２６を示し最後の列が管理式（８）の項
の係数を示す５×５の行列である。“ｑ”はレジスタ３２６の内容を示す５×１
の行列である（例えば、ｑ１，ｑ２，ｑ３，ｑ４およびｑ５はそれぞれレジスタ
５１０，５２０，５３０，５４０および５５０の内容を示す）。“Ｂ”は管理式
（８）の項の係数を示す５×１の行列である。式（９），（１０）および（１１
）を等式（３）に代入すると、以下の出力が得られる：
【００５６】
［数９］
Ｑ１＝［ｑ５＋Ｉ１
ｑ１
ｑ２
ｑ３＋ｑ５＋Ｉ１
ｑ４            ］          （１２）
【００５７】
Ｑ１は次のサイクル中のレジスタ３２６の内容を次のように示す５×１の行列で
ある：（ｑ５＋Ｉ１），ｑ１，ｑ２，（ｑ３＋ｑ５＋Ｉ１）およびｑ4。Ｑ１の
出力は二進数（例えば“０”または“１”）でありＸＯＲゲートを使用して達成
することができる。
【００５８】
回路５００はＸＯＲゲート５０２および５０４とレジスタ５１０，５２０，５
３０，５４０および５５０を含み、これらは単一のクロックによって制御される
レジスタ３２６の一部とすることができる。レジスタ５１０への入力はＸＯＲゲ
ート５０２の出力であり、その入力はＩ１（マルチプレクサ３２２の出力からの
もの）と現状のレジスタ５５０の内容である。次のサイクルにおいて、レジスタ
５１０の内容はＱ１（１，１）＝ｑ５＋Ｉ１となる。レジスタ５２０の入力はレ
ジスタ５１０の現状の内容であり、従って次のサイクルにおいてレジスタ５２０
の内容はＱ１（２，１）＝ｑ１となる。レジスタ５３０への入力はレジスタ５２
０の現状の内容であり、従って次のサイクルにおいてレジスタ５３０の内容はＱ
１（３，１）＝ｑ２となる。レジスタ５４０への入力はＸＯＲゲート５０４の出
力であり、その入力はＩ１とレジスタ５３０および５５０の現状の内容である。
ＸＯＲゲート５０４は１個の３入力ＸＯＲゲートあるいは２個の２入力ＸＯＲゲ
ートを使用して構成することができ、ここで入力のうちの２つが第１のＸＯＲゲ
ートを通じてこの第１のＸＯＲゲートの出力と共に伝送され、第３の入力は第２
のＸＯＲゲートを通じて伝送される。次のサイクルにおいてレジスタ５４０の内
容はＱ１（４，１）＝ｑ３＋ｑ５＋Ｉ１となる。レジスタ５５０の入力はレジス
タ５４０の現状の内容であり、従って次のサイクルにおいてレジスタ５５０の内
容はＱ１（５，１）＝ｑ４となる。図示されていないが、レジスタ５１０，５２
０，５３０，５４０および５５０の内容はシグニチャレジスタ３２８への入力と
しても伝送される。
【００５９】
図６には、ＸＯＲツリー３２４およびレジスタ３２６を含む回路６００の別の
実施例が示されている。回路６００は同じ管理式（８）を使用しており、サイク
ル毎に３つの入力ビット（例えば、Ｉ１，Ｉ２，Ｉ３）を処理する。式（９），
（１０）および（１１）を等式（５）に代入すると、以下の出力が得られる：
【００６０】
［数１０］
Ｑ３＝［ｑ３＋ｑ５＋Ｉ１＋Ｉ３
ｑ４＋Ｉ２
ｑ５＋Ｉ１
ｑ１＋ｑ３＋ｑ５＋Ｉ１＋Ｉ３
ｑ２＋ｑ４＋Ｉ２          ］          （１３）
【００６１】
回路６００はＸＯＲゲート６０２，６０４，６０６，６０８および６１０とレ
ジスタ６２０，６３０，６４０，６５０および６６０を備えており、これらは１
つのクロックによって制御されるレジスタ３２６の一部とすることができる。レ
ジスタ６２０への入力はＸＯＲゲート６０２の出力であり、その入力はＩ１およ
びＩ３（共にマルチプレクサ３２２からの出力である）とレジスタ６４０および
６５０の現状の内容である。次のサイクルにおいて、レジスタ６２０の内容はＱ
３（１，１）＝ｑ３＋ｑ５＋Ｉ１＋Ｉ３となる。レジスタ６３０への入力はＸＯ
Ｒゲート６０４の出力であり、その入力はＩ２（マルチプレクサ３２２からの出
力）とレジスタ６５０の現状の内容である。次のサイクルにおいて、レジスタ６
３０の内容はＱ３（２，１）＝ｑ４＋Ｉ２となる。レジスタ６４０への入力はＸ
ＯＲゲート６０６の出力であり、その入力はＩ１とレジスタ６６０の現状の内容
である。次のサイクルにおいて、レジスタ６４０の内容はＱ３（３，１）＝ｑ５
＋Ｉ１となる。レジスタ６５０への入力はＸＯＲゲート６０８の出力であり、そ
の入力はＩ１およびＩ３とレジスタ６２０，６４０および６６０の現状の内容で
ある。次のサイクルにおいて、レジスタ６５０の内容はＱ３（４，１）＝ｑ１＋
ｑ３＋ｑ５＋Ｉ１＋Ｉ３となる。レジスタ６６０への入力はＸＯＲゲート６１０
の出力であり、その入力はＩ２とレジスタ６３０および６５０の現状の内容であ
る。次のサイクルにおいて、レジスタ６６０の内容はＱ３（５，１）＝ｑ２＋ｑ
４＋Ｉ２となる。ＸＯＲゲート６０２，６０８および６１０は適宜なＸＯＲゲー
トまたはその組み合わせを使用して実施することができる。図示されていないが
、レジスタ６２０，６３０，６４０，６５０および６６０の内容はシグニチャレ
ジスタ３２８への入力としても伝送される。
【００６２】
回路５００および６００は、説明上、クロックサイクル毎にそれぞれ１ビット
および３ビットの入力を取り込んで管理式（８）に基づいたチェックサムの計算
を実行するものに関して記述する。しかしながら、ＸＯＲツリー３２４は任意の
適宜な管理式（例えばＣＲＣ−３２ＩＥＥＥ８０２規格）およびクロックサイク
ル毎に任意の入力ビット数を使用して実施することができる。
【００６３】
入力４０２としてＸＯＲツリー３２４にデータが伝送されると、レジスタ３２
６の内容が更新される。プログラマブルロジックリソース構成データ１０４およ
び期待値１０２が処理された後、レジスタ３２６の内容が結果のチェックサムを
保持する。一実施例において、以下に証明するように、エラーが検出されない場
合結果のチェックサムは０となる。
【００６４】
変数Ｇ（Ｘ），Ｍ（Ｘ），Ｑ（Ｘ），ＥＶおよびμ（Ｘ）は以下のものを示し
ている。
【００６５】
［数１１］
Ｇ（Ｘ）＝ＣＲＣ−３２  ＩＥＥＥ８０２規格；
Ｍ（Ｘ）＝プログラマブルロジックリソース構成データ１０４；
Ｑ（Ｘ）＝比＝Ｍ（Ｘ）／Ｑ（Ｘ）；
ＥＶ    ＝期待値＝Ｍ（Ｘ）（ｍｏｄ）Ｇ（Ｘ）；
μ（Ｘ）＝入力４０２として伝送されるデータ          （１４）
【００６６】
期待値を計算するためにＭ（Ｘ）上でチェックサム計算を実行する際に、以下の
式が導出される：
【００６７】
［数１２］
Ｘ３２Ｍ（Ｘ）≡ＥＶ（ｍｏｄ）Ｇ（Ｘ）          （１５）
【００６８】
ここで記号“≡”は合同を示しており、ＥＶ（ｍｏｄ）Ｇ（Ｘ）に同等な剰余の
等級に相応するものである（ここでＥＶは等級内において最も小さな要素である
）。Ｍ（Ｘ）は以下のように定義される：
【００６９】
［数１３］
Ｘ３２Ｍ（Ｘ）＝Ｑ（Ｘ）Ｇ（Ｘ）＋ＥＶ          （１６）
【００７０】
ＸＯＲツリー３２４への入力４０２は以下のように示される：
【００７１】
［数１４］
μ（Ｘ）＝Ｘ３２Ｍ（Ｘ）＋ＥＶ          （１７）
【００７２】
Ｍ（Ｘ）は偏差Ｘ３２（すなわち管理式Ｇ（Ｘ）の次数）によってＭ（Ｘ）に添
付された期待値と共に乗算あるいはシフトされる。等式（１７）について代数学
的操作を行うことによって以下のものがのものがhれる：
【００７３】
［数１５］
１．両辺をＸ３２によって乗算する：
Ｘ３２μ（Ｘ）＝Ｘ３２［Ｘ３２Ｍ（Ｘ）＋ＥＶ］
２．Ｘ３２Ｍ（Ｘ）に等式（１６）を代入する：
Ｘ３２μ（Ｘ）＝Ｘ３２［Ｑ（Ｘ）Ｇ（Ｘ）＋ＥＶ＋ＥＶ］
３．合同式で記載する：
Ｘ３２μ（Ｘ）≡Ｘ３２［ＥＶ＋ＥＶ］≡２ＥＶ≡０          （１
８）
【００７４】
Ｘ３２Ｑ（Ｘ）Ｇ（Ｘ）の項は（（ｍｏｄ）Ｇ（Ｘ））の倍数であり、従って合
同式においては存在しない。２ＥＶのＸＯＲは二進形式の０に合同である（すな
わち両方の入力が等しい場合、２入力ＸＯＲゲートの出力は０となる）。
【００７５】
以下に、ＸＯＲツリー３２４およびレジスタ３２６の一実施例がどのように機
能するかについて簡略的に説明する。プログラマブルロジックリソース内にプロ
グラムされたデータがデータビット列ｂ１１０１１０００１を含んでいると仮定
すると、これは以下の多項式で示すことができる：
【００７６】
［数１６］
Ｍ（Ｘ）＝Ｘ８＋Ｘ７＋Ｘ５＋Ｘ４＋１      （１９）
【００７７】
管理式もデータビット列ｂ１０１００１であると仮定すると、これは管理式（８
）を示すものとなる。プログラマブルロジックリソース内でデータＭ（Ｘ）をプ
ログラムする前に期待値が計算される。期待値（ＥＶ）は、ＸＯＲツリー３２４
内においてチェックサムを計算する場合と同じ方式を使用してデータＭ（Ｘ）を
管理式Ｇ（Ｘ）によって除算した際に得られる剰余である：
【００７８】
［数１７］
ＥＶ＝Ｘ５Ｍ（Ｘ）（ｍｏｄ）Ｇ（Ｘ）＝Ｘ３＋Ｘ２      （２０）
【００７９】
（すなわち、これはｂ１０１１１である）。ＸＯＲツリー３２４はプログラマブ
ルロジックリソース構成データ１０４を管理式の次数によって乗算あるいはシフ
トするとともにチェックサムを計算するために期待値１０２をプログラマブルロ
ジックリソース構成データ１０４に添付するため、期待値１０２を計算すために
データＭ（Ｘ）も同様に次数によって乗算あるいはシフトされる。
【００８０】
プログラマブルロジックリソース構成データ１０４としてデータがプログラム
された後、エラー検出の開始を示すフラグを立てることができる。以下の式は変
更されていない（すなわちエラーの存在しない）プログラマブルロジックリソー
ス構成データ１０４の処理を示している：
【００８１】
［数１８］
Ｐ（Ｘ）＝Ｍ（Ｘ）      （２１）
【００８２】
図７ないし図１５を参照しながら以下に詳細に記述するように、このプログラム
されたデータはＸＯＲツリー３２４に伝送される。プログラムされたデータがＸ
ＯＲツリー３２４内にロードされた後、以下のように期待値がＸＯＲツリー３２
４内にロードされる：
【００８３】
［数１９］
Ｘ５Ｐ（Ｘ）＋ＥＶ＝Ｘ１３＋Ｘ１２＋Ｘ１０＋Ｘ９＋Ｘ５＋Ｘ３＋Ｘ２
＝ｂ１１０１１０００１０１１００          （２２）
【００８４】
式（２２）を管理式Ｇ（Ｘ）によって除算した際に得られる剰余は０であり、エ
ラーが存在しないと考えることができる。
【００８５】
［数２０］
（Ｘ５Ｐ（Ｘ）＋ＥＶ）（ｍｏｄ）Ｇ（Ｘ）＝ｂ０      （２３）
【００８６】
ＸＯＲツリー３２４がクロックサイクル毎に１つの入力（例えばＩ１）を受け
入れる場合、ＸＯＲツリー３２４は図５に示されるように実施される（管理式（
８）に対して）。表１は回路５００がチェックサムを計算する際のレジスタ５１
０，５２０，５３０，５４０および５５０の内容を示している。
【００８７】
【表１】
0005696175.tif 000002
【００８８】
回路５００の出力は０になる。
【００８９】
ＸＯＲツリー３２４がクロックサイクル毎に３つの入力（例えばＩ１，Ｉ２，
Ｉ３）を受け入れる場合、ＸＯＲツリー３２４は図６に示されるように実施され
る（管理式（８）に対して）。クロックサイクル毎に複数（例えば３）の入力ビ
ットがＸＯＲツリー３２４に伝送されるため、データ流の先端に追加的なビット
（例えば二進数“０”）が埋め込まれる。表２は回路６００がチェックサムを計
算する際のレジスタ６２０，６３０，６４０，６５０および６６０の内容を示し
ている。
【００９０】
【表２】
0005696175.tif 000003
【００９１】
回路６００の出力は０である。
【００９２】
以下の式は変更されている（すなわちエラーが存在する）プログラマブルロジ
ックリソース構成データ１０４の処理を示している：
［数２１］
【００９３】
Ｐ（Ｘ）＝Ｘ８＋Ｘ７＋Ｘ５＋１      （２４）
【００９４】
Ｐ（Ｘ）は反転した１つのビットを有している。プログラムされたデータおよび
期待値は以下のようにＸＯＲツリー３２４内にロードされる：
【００９５】
［数２２］
Ｘ５Ｐ（Ｘ）＋ＥＶ＝Ｘ１３＋Ｘ１２＋Ｘ１０＋Ｘ５＋Ｘ３＋Ｘ２
＝ｂ１１０１００００１０１１００          （２５）
【００９６】
多項式（２５）を管理式（８）によって除算した際に得られる剰余は０でなく、
エラーが存在することを示している。
【００９７】
［数２３］
（Ｘ５Ｐ（Ｘ）＋ＥＶ）％Ｇ（Ｘ）＝ｂ１１１０１      （２６）
【００９８】
表３は回路６００がチェックサムを計算する際のレジスタ６２０，６３０，６４
０，６５０および６６０の内容を示している。
【００９９】
【表３】
0005696175.tif 000004
【０１００】
レジスタ６２０，６３０，６４０，６５０および６６０の出力は０でなく、エラ
ーの存在を示している。
【０１０１】
図３を参照すると、各クロックサイクルの後にレジスタ３２６の内容がシグニ
チャレジスタ３２８に伝送される。ＸＯＲツリー３２４内においてプログラマブ
ルロジックリソース構成データ１０４および期待値１０２が処理された後、シグ
ニチャレジスタは計算されたチェックサムを含んでいる。シグニチャレジスタ３
２８の内容はクロックサイクル毎に更新されるため、シグニチャレジスタ３２８
の内容が有効である際（すなわち計算されたチェックサムがシグニチャレジスタ
３２８内に記憶された後）にＦＳＭ１０８がシグニチャレジスタ３２８の内容を
記憶するようにアップデートレジスタ３３０に命令する。
【０１０２】
ユーザは計算されたチェックサムまたは期待値１０２のいずれかを参照するこ
とができる。計算されたチェックサムを監視することによって、ユーザは検出さ
れたエラーの特徴を判断することができる。例えば、ユーザはエラーが不規則な
もの（例えば複数回の計算において異なったチェックサムが算定される）である
か、あるいは同じエラーが繰り返し生じるもの（例えば複数回の計算において等
しいチェックサムが算定される）であるかを判断することができる。
【０１０３】
ユーザは任意の適宜な方式によって計算されたチェックサムまたは期待値１０
２を参照することができる。一実施例において、各マルチプレクサ３３２がアッ
プデートレジスタ３３０から１ビットを取り込み期待値１０２から１ビットを入
力として取り込む。いずれの数値をユーザが参照したいかに従って、ＦＳＭ１０
８がアップデートレジスタ３３０からのデータあるいは期待値１０２のいずれを
選択するかマルチプレクサ３３２に命令する。各マルチプレクサ３３２の出力は
シフトレジスタ３３４に伝送される。シフトレジスタ３３４はプログラマブルロ
ジックリソース３００によってアクセス可能であるとともにその内容をユーザロ
ジックが読み取ることができる。
【０１０４】
データがシフトレジスタ３３４からアクセスされる際にチェックサムに影響を
与えてエラーが発生し得る。より精密にエラーを検出する方式において、一度計
算されたチェックサムがシグニチャレジスタ３２８内に存在すると、シグニチャ
レジスタ３２８内の各ビットをＯＲゲート３３６の独立した入力に伝送すること
ができる。ＯＲゲート３３６はシグニチャレジスタのビット数に等しい数の入力
を備えた１つのゲートを有するか、あるいはそれぞれより少数の入力を備えたゲ
ート群からなるカスケードを有するか、あるいはシグニチャレジスタビットを比
較するためのその他の適宜な方式とすることができる。シグニチャレジスタの全
てのビットが二進数“０”である場合、ＯＲゲート３３６の出力は二進数“０”
となり、エラーが検出されなかったことを示している。１つあるいは複数のシグ
ニチャレジスタのビットが二進数“１”である場合、ＯＲゲート３３６の出力は
二進数“１”となり、エラーが検出されたことを示している。ＯＲゲート３３６
の出力はＣＲＣエラー端子３３８に伝送され、これはユーザロジックによって監
視することができる。ＣＲＣエラー端子３３８は１データビットを保持すること
ができ、これにおいて１つ目の数値はエラーが検出されなかったことを示し、一
方第２の数値はエラーが検出されたことを示している。他方、ＣＲＣエラーピン
３３８は例えば発光ダイオード（ＬＥＤ）等の表示装置を有することができ、こ
れはエラーが検出された際に信号を発する（例えばＬＥＤの発光）。エラーの存
在を信号化するた化するた他の適宜な方式を使用することができる。
【０１０５】
ＦＳＭ１０８はデータのサンプリングを調整するためにＣＲＣモジュール３２
０内の種々のレジスタに信号を送信する。例えば、ＦＳＭ１０８は、ＸＯＲツリ
ー３２４が処理を終了してシグニチャレジスタ３２８がチェックサムを記憶した
後にアップデートレジスタ３３０にクロック能動化信号を伝送する。クロック能
動化信号は、シグニチャレジスタ３２８がレジスタ３２６からのデータを読み込
んでいる際に同時にアップデートレジスタ３３０がシグニチャレジスタ３２８の
内容を読み込むことがないように調整される。ユーザがチェックサムまたは期待
値１０２の参照を要求した際にのみデータがマルチプレクサ３３２を介してシフ
トレジスタ３３４に伝送される。
【０１０６】
図７には、本発明の一実施例に従ってログラマブルロジックリソースのメモリ
コア７００が示されている。メモリコア７００は、アドレスレジスタ７０６と制
御ロジック７１２とログラマブルロジックリソース構成データ７１４とデータレ
ジスタ７２２とを含んでいる。データ７１４はデータセル７１６の行と列からな
る行列に構成することができ、ここで各データセル７１６がそれぞれ１つの二進
数字を含んでいる。行列に構成されたデータ７１４に対して、データ線７１８を
セル７１６の各行と結合し、アドレス線７２０をセル７１６の各列と結合するこ
とができる。
【０１０７】
プログラマブルロジックリソース構成データ７１４は任意の適宜な構成で組織
することができ、データセル７１６は任意の適宜な形式でデータ線およびアドレ
ス線と結合することができる。簡略化および明瞭化のため、前記のデータ７１４
は、データセル７１６の行を横断して延在するデータ線７１８とデータセル７１
６の列を横断して延在するアドレス線７１８とを有するデータセル７１６の行列
として具体的かつ明確に説明される。
【０１０８】
アドレスレジスタ７０６はデータセル７１６の所定の列をロードするためにア
ドレス線７２０を選択するよう使用することができる。セル７１６の各列は１つ
のフレームを示すことができ、またアドレスレジスタ７０６内の異なったアドレ
スビットとそれぞれ結合することができる。アドレスレジスタ７０６はフレーム
の数に等しいビット数を有することができ、アドレスレジスタ７０６内の各ビッ
トはそれぞれ１つのアドレス線７２０に対応している。
【０１０９】
アドレスレジスタ７０６は２つの入力信号を有し、それらはアドレスレジスタ
入力（ＡＩＮＰＵＴ）信号７０２およびアドレスレジスタクロック（ＡＣＬＯＣ
Ｋ）信号７０４である。入力信号７０２はアドレスレジスタクロック信号７０４
によって第１のパルスをもって提示され（例えば二進数“１”に設定）、第１の
フレームに相当するアドレスレジスタ７０６内の第１のビット位置を二進数“１
”に設定させる。アドレスレジスタクロック信号７０４による第１のパルスの後
に、入力信号７０２を非提示とすることができる（例えば、二進数“０”に設定
）。アドレスレジスタクロック信号７０４による後続の各パルスによってアドレ
スレジスタ７０６内の二進数“１”が１ビット位置ずつシフトされ、次のフレー
ムのインデックスを形成する。アドレスレジスタ７０６の出力はデータパス７０
８を介して制御ロジック７１２に伝送される。制御ロジック７１２はアドレス能
動化（ＡＥＮＡＢＬＥ）信号７１０によって制御され、これは１つのアドレス線
７２０を適宜な時間に選択することを可能にする。
【０１１０】
フレームが選択されると選択されたデータセル７１６内に記憶された二進数字
が所定のデータ線７１８上に書き込まれ、そこでデータレジスタクロック信号７
２４がパルス発信されている際にデータレジスタ７２２内にロードされる。デー
タレジスタ７２２は、フレームロード中にのみ使用し得る専用レジスタとするか
、あるいは異なった時間に異なった機能を行うための共有レジスタとすることが
できる（例えばデータレジスタ７２２はプログラマブルロジックリソース上への
プログラマブルロジックリソース構成データ７１４の形成中に使用されるレジス
タと同じレジスタとすることができる）。続いて、データレジスタ７２２の内容
はパス７２６を介してエラー検出回路に伝送される。
【０１１１】
図８には、本発明の一実施例に係るプログラマブルロジックリソース内のメモ
リコア８００がより詳細に示されている。メモリコア８００は、アドレスレジス
タ入力（ＡＩＮＰＵＴ）信号８０２およびアドレスレジスタクロック（ＡＣＬＯ
ＣＫ）信号８０４の入力を備えたアドレスレジスタ８０６を有している。アドレ
スレジスタ８０６内の各ビット位置はパス８０８を介してそのビット値を入力Ａ
ＮＤゲート８１２に伝送し、これは制御ロジック７１２の一部とすることができ
る。各ＡＮＤゲート８１２への第２の入力はアドレス能動化信号８１０である。
両方の入力が二進数“１”である場合出力は二進数“１”となる。ＡＮＤゲート
８１２の出力は所定のアドレス線８２６を介して伝送される。アドレスレジスタ
８０６内の殆どの１ビット値がいずれのサイクルでも“１”に設定されるため、
いずれのクロックサイクルでも殆どの単一アドレス線が能動化される。データセ
ル８１４のフレームが各アドレス線８２６に結合され、データセルは例えば構成
ＲＡＭ（ＣＲＡＭ）またはその他の適宜なメモリセルとすることができる。各デ
ータ線８２４にはデータセル８１４が結合される。
【０１１２】
各ＣＲＡＭセル８１４は、例えば２個のトランジスタ８１６および８２２と２
個のインバータ８１８および８２０とを含むことができる。トランジスタ８１６
および８２２は、バイポーラトランジスタ（ＢＪＴ）、電界効果トランジスタ（
ＦＥＴ）、およびＭＯＳ電界効果トランジスタ（ＭＯＳＦＥＴ）を含む適宜なト
ランジスタとすることができる。例えばトランジスタ８１６は、ソースノードが
所定のデータ線８２４に結合され、ゲートノードが所定のアドレス線８２６に結
合され、ドレインノードがインバータ８１８および８２０に結合されたＭＯＳＦ
ＥＴとすることができる。各インバータ８１８および８２０の入力は別のインバ
ータ８１８および８２０の出力にそれぞれ結合される。トランジスタ８２２は、
例えば、ソースノードがインバータ８１８および８２０に結合され、ゲートノー
ドがクリア（ＣＬＲ）信号に結合され、ドレインノードが共通アースに結合され
たＭＯＳＦＥＴとすることができる。クリア信号はデータビットをセル８１４に
プログラムするために使用することができ、データビットを全般的に読み取るた
めには使用されない。
【０１１３】
各データセル８１４内の二進数字はノードＡに提示される。データ線８１４が
二進数“１”に設定（すなわち予め設定された電圧にプリチャージされる）され
るとともにアドレス線８２６が二進数“１”に設定されると、対応するＣＲＡＭ
セル８１４内の数値が読み取られる。ノードＡが二進数“１”を提示する場合、
そのデータ線８２４がディスチャージされる（すなわち二進数“０”にされる）
。ノードＡが二進数“０”を提示している場合、そのデータ線８２４はプリチャ
ージされた（すなわち二進数“１”設定された）にまま保持される。各データ線
８２４上に読み込まれる数値は、データレジスタクロック（ＤＣＬＯＣＫ）信号
８３０がパルス発信した際にデータレジスタ８２８に送信される。データレジス
タ８２８にデータが伝送される前にデータの二進数表示を反転させるためのイン
バータを各データ線８２４に結合することができる。データパス８３２を介して
データレジスタ８２８からデータを読み取ることができる。データパス８３２は
、シリアルバス、パラレルバス、またはこれらの組み合わせを含んだ、データを
伝送するための適宜なパスとすることができる。データレジスタ８２８の内容全
体またはデータの一部（例えば、１データビット、８データビット、１６データ
ビット、３２データビット）を所定のサイクルにおいてパス８３２に伝送するこ
とができる。
【０１１４】
図９ないし図１５には、ＣＲＣモジュール３２０等のエラー検出回路にデータ
をロードするための例示的なフローチャートが示されている。各フレームは、デ
ータビットの列か、データビットの行か、データビットのブロックか、あるいは
その他の任意の適宜なデータビット構成を含むことができるが、ここでは明確化
および具体化のために主にデータビットの列に関連して説明する。アドレスレジ
スタ内の１つのアドレスビットを各フレームに関連付けることができ、従って特
定のアドレスビットが設定（例えば二進数“１”に）された際に対応するフレー
ムが選択され得る。例えばＣＲＡＭ等のメモリ内に記憶されたプログラマブルロ
ジックリソース構成データ１０４は、一時点に１フレーム読み出すことができ、
一時的なデータレジスタに記憶され、その後データはＣＲＣモジュール３２０に
ロードされる。
【０１１５】
フロー９００はステップ９１０においてアイドルモードで開始する。次にステ
ップ９２０においてフロー９００はエラー検出を開始するかどうか決定し、これ
はフラグによって示される。このフラグはＣＲＡＭ内のデータにアクセスする必
要があるアプリケーション（例えばエラー検出アプリケーションまたはその他の
適宜なアプリケーション）が起動しようとしている際に立てられる。これは、例
えばシステムがユーザモードである際に二進数“１”が提示されるレジスタ内の
専用ビットによって発信することができる。フラグが立っていない場合、フロー
９００はステップ９２０に滞留する。フラグが立っている場合、フロー９００は
ステップ１０００に移動し、そこでフロー９００は第１のフレームをデータレジ
スタにロードする準備を行う。
【０１１６】
図１０は、ステップ１０００をより詳細に示したフローチャートである。ステ
ップ１００２において、ＣＲＣモジュール３２０がプリセットされる。例えば、
カウンタは０にリセットされ、レジスタ（例えば、レジスタ３２６、シグニチャ
レジスタ３２８、アップデートレジスタ３３０およびシフトレジスタ３３４）が
クリアされる。ステップ１００２においても、アドレスレジスタクロックが能動
化され（例えば、ＡＣＬＯＣＫ信号７０４がパルス発信される）、アドレスレジ
スタ入力が提示され（例えば、ＡＩＮＰＵＴ信号７０２が二進数“１”に設定さ
れる）、プリチャージカウンタが能動化される（例えば、ＰＣＯＵＮＴＥＲが付
勢される）。データ線７１８が予め設定された電圧（例えばソース電圧）に完全
にプリチャージされている際に、プリチャージカウンタが表示される。
【０１１７】
次にステップ１００４において、全てのデータ線６１８がプリチャージされる
。ステップ１００４においては、アドレスレジスタクロック信号７０４が非能動
化され、アドレスレジスタ入力信号７０２は非提示にされる。ステップ１００６
において、フロー１０００はプリチャージカウンタが二進数“１”に設定されて
いるかどうかを判断する。データ線７１８が完全にプリチャージされている際（
例えば１６サイクル後）に、プリチャージカウンタが二進数“１”に設定される
。プリチャージカウンタが二進数“０”を維持した場合に、フロー１０００はス
テップ１００４に回帰する。
【０１１８】
プリチャージカウンタが二進数“１”に設定された場合に、フロー１０００は
ステップ１００８に移動し、そこでデータ線のプリチャージが停止され、プリチ
ャージカウンタが非能動化され、さらに読み取りカウンタが能動化される（例え
ば、ＲＣＯＵＮＴＥＲが付勢される）。選択されたアドレスに対応するデータが
対応するデータ線７１８上に完全に読み取られると（例えば、１６サイクル後）
、読み取りカウンタが表示される。
【０１１９】
ステップ１０１０において、第１のフレームに対するアドレス線（例えば、デ
ータセル７１６の第１の列はアドレス線１に対応する）が能動化（例えば、ＡＥ
ＮＡＢＬＥ信号７１０が二進数“１”に設定される）され、対応するセルの内容
が対応するデータ線７１８上に読み取られる。ステップ１０１２において、フロ
ー１０００は読み取りカウンタが二進数“１”に設定されているかどうかを判断
する。読み取りカウンタが依然として二進数“０”に設定されている場合、フロ
ー１０００はステップ１０１０に回帰し、そこでアドレス能動化信号７１０が能
動状態に保持され、データ線７１８上へのデータの読み取りが継続される。例え
ば、図８に示されたＣＲＡＭデータセルに対して、ＣＲＡＭデータセル８１４内
に二進数“０”が示されると（例えば、ノードＡにおいて）、対応するデータ線
８２４がプリチャージされた状態に維持される。ＣＲＡＭデータセル８１４内に
二進数“１”が示されると、対応するデータ線８２４がディスチャージされる。
データ線８２４が０Ｖまで充分にディスチャージされることを確認するために、
複数サイクル（例えば１６サイクル）にわたってデータ線８２４上にデータが読
み取られる。読み取りカウンタが二進数“１”に設定された場合、フロー１００
０はステップ１０１４に移動し、そこで読み取りカウンタが非能動化され、デー
タレジスタクロックが能動化される（例えば、ＤＣＬＯＣＫ信号７２４が付勢さ
れる）。
【０１２０】
図９を参照すると、レジスタ７２２に第１のフレームをロードすることが準備
できている際に、フロー９００はステップ１１００に移動し、そこで最終フレー
ムを除く全てのフレームがデータレジスタ７２２にロードされる。
【０１２１】
図１１および図１２は、ステップ１１００におけるＣＲＣモジュール３２０へ
のロードをより詳細に示したフローチャートである。ステップ１１０２において
、データ線７１８上に現存する第１のフレームからのデータがデータレジスタ７
２２内にロードされる。ステップ１１０２において、アドレス能動化信号７１０
が非能動化され、さらにデータレジスタカウンタが能動化される（例えば、ＤＣ
ＯＵＮＴＥＲが付勢される）。データレジスタ７２２内の予め設定された数のデ
ータビットがＣＲＣモジュール３２０にロードされた際に（残留ビットを除いて
、全てのビット、例えば３４ビット、がロードされた際等）、データレジスタカ
ウンタが表示される。この予め設定された数は任意の好適な数とすることができ
、各フレームをデータレジスタ７２２にそして実質的にＣＲＣモジュール３２０
にロードするために能動化および提示される多様な信号に適応するものである。
【０１２２】
ステップ１１０４において、その時点においてデータレジスタ７２２上に記憶
されている第１のフレームからのデータがＣＲＣモジュール３２０内にロードさ
れる（例えば、マルチプレクサ３２２に伝送されその後チェックサム計算を開始
するためにＸＯＲツリーに伝送される）。クロックサイクル毎に予め設定された
数のビット（例えば、８ビット、１６ビット、あるいはその他の任意の好適なビ
ット数）がデータレジスタ７２２からＣＲＣモジュール３２０に伝送される。次
にステップ１１０６において、フロー１１００はデータレジスタカウンタが二進
数“１”に設定されているかどうかを判断する。データレジスタカウンタが二進
数“０”である場合、フロー１１００はステップ１１０４に回帰し、そこで次の
予め設定された数のビットがＣＲＣモジュール３２０にロードされる。
【０１２３】
データレジスタカウンタが二進数“１”に設定されている場合、フロー１１０
０はステップ１１０８に移動し、そこでデータレジスタカウンタが非能動化され
、アドレスレジスタクロック信号７０４が能動化され、またプリチャージカウン
タが能動化され（例えば、二進数“０”に設定され付勢される）次のフレームの
ロードの準備状態となる。アドレスレジスタクロック信号７０４は、第１のアド
レス線７２０にインデックスを付している二進数“１”をシフトして次のアドレ
ス線７２０にインデックスを付ける。ステップ１１０８においても、データレジ
スタ７２２からの次の予め設定された数のビットがＣＲＣモジュール３２０にロ
ードされる。
【０１２４】
ステップ１１１０においては、全てのデータ線７１８がプリチャージされ、ア
ドレスレジスタクロック信号７０４が非能動化され、データレジスタ７２２から
の次の予め設定された数のビットがＣＲＣモジュール３２０にロードされる。ス
テップ１１１２において、フロー１１００はプリチャージカウンタが二進数“１
”に設定されているかどうかを判断するプリチャージカウンタが二進数“０”で
ある場合、フロー１１００はステップ１１１０に回帰する。予め設定された数の
サイクル（例えば１６サイクル）にわたってＣＲＣモジュール３２０にデータが
ロードされると、この予め設定されたサイクル数のうちのいずれか１つまたは一
定の範囲中に前記の次の予め設定された数のビットがＣＲＣモジュール３２０に
ロードされる。ビットは、１サイクルあるいは複数サイクルにわたって並列に読
み取るか、前記の予め設定されたサイクル数にわたって直列に読み取るか、ある
いは直列および並列の読み込みを組み合わせて行うことができる。
【０１２５】
プリチャージカウンタが二進数“１”に設定されている場合、フロー１１００
はステップ１１１４に移動し、ここでデータ線のプリチャージが停止され、プリ
チャージカウンタが非能動化され、また読み込みカウンタが能動化される（例え
ばＲＣＯＵＮＴＥＲが二進数“０”に設定されて付勢される）。ステップ１１１
６において、次のフレームに対するアドレス線が能動化され（例えば、ＡＥＮＡ
ＢＬＥ信号７１０を二進数“１”に設定する）、次のフレーム内のセル７１６の
内容が対応するデータ線７１８上に読み取られる。ステップ１１１６においても
、データレジスタ７２２からの次の予め設定された数のビットがＣＲＣモジュー
ル３２０にロードされる。ステップ１１１８において、フロー１１００は読み取
りカウンタが二進数“１”に設定されているかどうかを判断する。読み取りカウ
ンタが二進数“０”である場合、フロー１１００はステップ１１１６に回帰する
。予め設定された数のサイクル（例えば１６サイクル）中にデータ線６１８上に
データが読み取られると、この予め設定されたサイクル数のうちのいずれか１つ
または一定の範囲中に前記の次の予め設定された数のビットをデータレジスタ７
２２から読み取ることができる。
【０１２６】
読み取りカウンタが二進数“１”に設定されている場合、フロー１１００はス
テップ１１２０に移動し、そこでデータレジスタ７２２内のその時点のフレーム
の最終ビットの次のものがＣＲＣモジュール３２０にロードされ、フレームカウ
ンタが増加され（これはＮ＋＋で示され、ここでＮはデータ線６１８上にロード
されているその時点のフレームである）、そして読み取りカウンタが非能動化さ
れる。ステップ１２２２において、フロー１１００はそのフレームが最終フレー
ムであるかどうかを判断する。フレームが最終フレームでない場合、フロー１１
００はステップ１１２４に移動し、そこでその時点でデータレジスタ７２２内に
あるフレーム（例えばフレームＮ−１）の最終ビットがＣＲＣモジュール３２０
にシフトされ、その時点でデータ線７１８上にデータがある、次のフレームがデ
ータレジスタ７２２にロードされ、アドレス能動化信号７１０が非能動化され、
そしてデータレジスタカウンタが能動化される（例えば、ＤＣＯＵＮＴＥＲを二
進数“０”にリセットして付勢する）。フロー１１００は、その後ステップ１１
０４に回帰し、その時点でデータレジスタ７２２内にあるフレームがＣＲＣモジ
ュール３２０にロードされ、その間に後続するフレームがデータレジスタ７２２
にロードするために準備される。
【０１２７】
図９を参照すると、フレームが最終フレームである場合に、フロー９００がス
テップ１３００に移動し最終フレームをＣＲＣモジュール３２０にロードする。
図１３および図１４はステップ１３００における最終フレームのロードをより詳
細に示したフローチャートである。ステップ１３０２において、その時点にデー
タレジスタ７２２内にあるフレーム（すなわち最終フレームに隣接するフレーム
）からの最終ビットがＣＲＣ回路３２０にロードされる。ステップ１３０２にお
いても、最終フレームからのデータがデータ線７１８からデータレジスタ７２２
にロードされ、アドレス能動化信号７１０が非能動化され、データレジスタカウ
ンタが能動化される。
【０１２８】
フロー１３００はその後ステップ１３０４に移動し、そこで最終フレーム内の
予め設定された数のデータビットがＣＲＣ回路３２０にロードされる。ステップ
１３０６において、データレジスタカウンタが二進数“０”である場合、フロー
１３００はステップ１３０４に回帰する。データレジスタカウンタが二進数“１
”に設定されている場合、フロー１３００はステップ１３０８に移動し、そこで
データレジスタカウンタが非能動化され、アドレスレジスタクロック信号７０４
が能動化され、プリチャージカウンタが能動化され、そして最終フレーム内の予
め設定された数のデータビットがＣＲＣ回路３２０にロードされる。
【０１２９】
ステップ１３１０において、データ線７１８がプリチャージされ、アドレスレ
ジスタクロック信号７０４が非能動化され、最終フレームの次のビットがＣＲＣ
回路３２０にロードされる。次に、ステップ１３１２において、フロー１３００
はプリチャージカウンタが二進数“１”に設定されているかどうかを判断する。
プリチャージカウンタが二進数“０”に留まっている場合、フロー１３００はス
テップ１３１０に回帰する。プリチャージカウンタが二進数“１”に設定されて
いる場合、フロー１３００はステップ１３１４に移動し、ここでデータ線のプリ
チャージが停止され、プリチャージカウンタが非能動化され、読み込みカウンタ
が能動化され、また最終フレームの次のビットがＣＲＣモジュール３２０にロー
ドされる。ステップ１３１６において最終フレームの次のビットがＣＲＣモジュ
ール３２０にロードされる。次に、ステップ１３１８において、フロー１３００
は読み取りカウンタが二進数“１”に設定されているかどうかを判断する。読み
取りカウンタが二進数“０”に留まっている場合、フロー１３００はステップ１
３１６に回帰する。読み取りカウンタが二進数“１”に設定されている場合、フ
ロー１３００はステップ１３２０に移動し、ここで読み取りカウンタが非能動化
され、また最終ビットの次のものがＣＲＣモジュール３２０にロードされる。ス
テップ１３２２において、最終フレームの最後のビットがＣＲＣモジュール３２
０にロードされ、ロードＣＲＣ信号が提示される。
【０１３０】
図９を参照すると、プログラマブルロジックリソース構成データ１０４の全て
のフレームがＣＲＣモジュール内にロードされると、フロー９００はステップ１
５００に移動し、そこで期待値がＣＲＣモジュール３２０にロードされる。
【０１３１】
図１５は、クロックサイクル毎に入力８ビットデータとして受け入れるＣＲＣ
モジュール３２０への３２ビットのＣＲＣ期待値１０２のロードをより詳細に示
したフローチャートである。ステップ１５０２において、ＣＲＣ期待値１０２の
第１のバイトがＣＲＣモジュール３２０にロードされる。第１のバイトは最も重
要なバイトとされ、最も重要なバイトから最も重要でないバイトへの順である。
マルチプレクサ３２２を使用して期待値１０２を選択し、チェックサムを計算す
るためにＸＯＲツリー３２４に伝送することができる。ステップ１５０４におい
て、ＣＲＣ期待値１０２の次のバイトがロードされ、ステップ１５０６において
はＣＲＣ期待値１０２の第３のバイトがロードされ、ステップ１５０８において
はＣＲＣ期待値１０２の第４のバイトがロードされる。
【０１３２】
図９ないし図１５についての記述は、クロックサイクル毎にデータレジスタ７
２２または期待値１０２のうちの１つからの入力８データビットを受け入れるＣ
ＲＣモジュール３２０を使用する３２ビット生成多項式の観点で説明する目的の
ものである。生成多項式を提供するために任意の適宜なビット数を使用すること
が可能であり、また任意のサイクルにおいて任意のビット数をＣＲＣモジュール
３２０にロードし得ることが理解される。しかしながら、これら２つの特徴に従
って、データレジスタ７２２にデータをロードするタイミングならびにデータレ
ジスタ７２２からＣＲＣモジュール３２０にデータをシフトするタイミングが変
化することに留意する必要がある。
【０１３３】
再度図９を参照すると、ステップ１５００においてＣＲＣ期待値１０２がＣＲ
Ｃモジュール３２０にロードされると、プロセス９００はステップ９２０に回帰
する。
【０１３４】
図１６はプログラマブルロジックリソース上でエラー検出を実施する際に含ま
れる代表的なステップを示したフローチャートである。フロー１６００は、プロ
グラマブルロジックリソース構成データ１０４上のエラー検出の開始を示す信号
を発信するステップ１６０２から開始する。図９ないし図１５に関して説明した
ように、ステップ１６０４においてプログラマブルロジックリソース構成データ
１０４がＣＲＣモジュール３２０にロードされる。ステップ１６０６において、
フロー１６００は全てのプログラマブルロジックリソース構成データ１０４がＣ
ＲＣモジュール３２０にロードされているかどうかを判断する。プログラマブル
ロジックリソース構成データ１０４の全てはＣＲＣモジュール３２０にロードさ
れていない場合、フロー１６００はステップ１６０４に回帰する。フロー１６０
０はさらにステップ１６０８に移動し、そこでデータ上のチェックサム計算を開
始する。全てのプログラマブルロジックリソース構成データ１０４がＣＲＣモジ
ュール３２０にロードされている場合、フロー１６００はステップ１６０８およ
び１６１０に移動する。ステップ１６１０において、期待値１０２がＣＲＣモジ
ュール３２０にロードされ、その後フロー１６００はステップ１６０８に移動す
る。ステップ１６０８において、プログラマブルロジックリソース構成データ１
０４および期待値１０２の最後の部分がＣＲＣモジュール３２０にロードされる
と、ＸＯＲツリー３２４が継続的にチェックサムを計算する。クロックサイクル
毎に、ステップ１６１２においてチェックサム計算の結果がシグニチャレジスタ
３２８にロードされる。
【０１３５】
結果のチェックサムがステップ１６１２においてシグニチャレジスタ３２８に
ロードされると、フロー１６００はステップ１６１４に移動し、ここでシグニチ
ャレジスタ３２８の各ビット上で論理“ＯＲ”演算が実行される。ステップ１６
１６において、“ＯＲ”演算の結果がＣＲＣエラー端子に出力される。フロー１
６００はその後ステップ１６１８に回帰する。
【０１３６】
図１７には、データ処理システム１７００内に設けられた本発明の実施例を含
んだプログラマブルロジックリソース１７０２またはマルチチップモジュール１
７０４が示されている。データ処理システム１７００は以下の構成要素のうち１
つまたは複数を備えており：それらはプロセッサ１７０６；メモリ１７０８；Ｉ
／Ｏ回路１７１０；および周辺デバイス１７１２である。これらの構成要素はシ
ステムバスまたはその他の相互接続要素１７２０を介して互いに結合され、エン
ドユーザシステム１７４０内に内蔵された回路基板１７３０上に装備されている
。
【０１３７】
システム１７００は、コンピュータネットワーキング、データネットワーキン
グ、ビデオ処理、デジタル信号処理、またはプログラマブルあるいはリプログラ
マブルロジックの利点を活用することが望まれる、広範な適用形態で使用するこ
とができる。プログラマブルロジックリソースまたはモジュール１７０２／１７
０４は多様なロジック機能を広範囲に実行するために使用することができる。例
えば、プログラマブルロジックリソースまたはモジュール１７０２／１７０４は
プロセッサ１７０６と組合されて動作するプロセッサまたはコントローラとして
構成することができる。プログラマブルロジックリソースまたはモジュール１７
０２／１７０４は、さらにシステム１７００内の共有リソースへのアクセスを仲
介するアービタとして構成することもできる。さらに別の例として、プログラマ
ブルロジックリソースまたはモジュール１７０２／１７０４は、プロセッサ１７
０６とシステム１７００内の他の構成要素との間のインタフェースとして構成す
ることもできる。システム１７００は１つの例であり、本発明の視点ならびに精
神は請求の範囲によってのみ定義されることは勿論である。
【０１３８】
本発明の特徴を有するプログラマブルロジックリソース１７０２またはマルチ
チップモジュール１７０４、ならびにこれらのデバイスの種々の構成要素（例え
ば、プログラマブルロジックコネクタ（“ＰＬＣ”）およびこのＰＬＣを制御す
るプログラム可能な機能制御要素（“ＦＣＥ”））を実施するために多様な技術
を使用することができる。例えば、各ＰＬＣは、いくつかの入力を１つの出力に
接続するためのスイッチまたはスイッチ群等の比較的単純なプログラマブルコネ
クタとすることができる。他方、各ＰＬＣは、接続を行うだけでなくロジック（
例えば、複数の入力のロジック結合）を実行することができるより複雑な要素と
することもできる。後者において、各ＰＬＣはＡＮＤ、ＮＡＮＤ、ＯＲ、または
ＮＯＲ等の機能を実施するｐ項ロジックとすることができる。ＰＬＣを構成する
ために適した要素は、プログラマブルロジックリソース構成データを記憶するた
めに使用することができるいずれかのタイプの揮発性あるいは不揮発性メモリと
することができ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、パストランジスタ、伝達ゲート、
アンチヒューズ、レーザヒューズ、メタルオプショナルリンク等が挙げられる。
ＰＬＣおよびその他の回路要素は、多様なプログラマブル機能制御要素（“ＦＣ
Ｅ”）によって制御することができる。例えば、ＦＣＥはプログラマブルロジッ
クリソース構成データを記憶するために使用することができるいずれかのタイプ
の揮発性あるいは不揮発性メモリとすることができる。さらに、ＦＣＥは、先入
れ先出し（“ＦＩＦＯ”）メモリ、ＥＰＲＯＭ、ＥＥＰＲＯＭ、機能制御レジス
タ、強誘電メモリ、ヒューズ、アンチヒューズ等から構成することもできる。前
述の多様な例から、本発明は一回のみプログラム可能なデバイスおよびリプログ
ラム可能なデバイスの両方に適用可能であることが理解される。
【０１３９】
以上、プログラマブルロジックリソース上に設けられるエラー検出回路につい
て説明した。当業者においては、前記の実施例は単に説明の目的のものであり、
本発明はこれ以外の構成によっても実施可能であり、従って本発明はこれに限定
されることはなく添付の請求の範囲によってのみ限定されることが理解される。
【図１】
0005696175.tif 000005
【図２】
0005696175.tif 000006
【図３】
0005696175.tif 000007
【図４】
0005696175.tif 000008
【図５】
0005696175.tif 000009
【図６】
0005696175.tif 000010
【図７】
0005696175.tif 000011
【図８】
0005696175.tif 000012
【図９】
0005696175.tif 000013
【図１０】
0005696175.tif 000014
【図１１】
0005696175.tif 000015
【図１２】
0005696175.tif 000016
【図１３】
0005696175.tif 000017
【図１４】
0005696175.tif 000018
【図１５】
0005696175.tif 000019
【図１６】
0005696175.tif 000020
【図１７】
0005696175.tif 000021