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