(57)【特許請求の範囲】
【請求項１】
第１のプログラミング可能なハードウェアデバイス（１）のコンフィギュレーションを阻止する装置であって、該装置には、前記第１のプログラミング可能なハードウェアデバイス（１）とスイッチ素子（３）とが設けられており、
前記第１のプログラミング可能なハードウェアデバイス（１）は、該第１のプログラミング可能なハードウェアデバイス（１）のロジック（４）をコンフィギュレーションするように構成されたコンフィギュレーションインタフェース（５）と、データインタフェース（７）と、前記ロジック（４）をデバッグおよびコンフィギュレーションするように構成されたデバッグインタフェース（８）とを備えており、
前記スイッチ素子（３）は、前記デバッグインタフェース（８）と接続されていて、前記ロジック（４）のコンフィギュレーションプロセスが生じたときに、前記デバッグインタフェース（８）へのアクセスを阻止できるように構成されている
ことを特徴とする、
第１のプログラミング可能なハードウェアデバイス（１）のコンフィギュレーションを阻止する装置。
【請求項２】
前記第１のプログラミング可能なハードウェアデバイス（１）は、前記ロジック（４）のコンフィギュレーションプロセスをシグナリングするように構成されたコンフィギュレーション監視インタフェース（９）を備えている、
請求項１に記載の装置。
【請求項３】
前記スイッチ素子（３）は、前記コンフィギュレーション監視インタフェース（９）と接続されていて、前記コンフィギュレーション監視インタフェース（９）を介してコンフィギュレーションプロセスがシグナリングされたときに、前記デバッグインタフェース（８）へのアクセスを阻止できるように構成されている、
請求項２に記載の装置。
【請求項４】
前記スイッチ素子（３）を制御するように構成されたコンフィギュレーションスイッチ素子（１１）が設けられている、
請求項１から３のいずれか１項に記載の装置。
【請求項５】
前記コンフィギュレーションスイッチ素子（１１）は、前記コンフィギュレーション監視インタフェース（９）と接続されていて、コンフィギュレーションプロセスがシグナリングされると、前記スイッチ素子（３）を制御して前記デバッグインタフェース（８）へのアクセスを阻止するように構成されている、
請求項４に記載の装置。
【請求項６】
前記スイッチ素子（３）は、前記コンフィギュレーションスイッチ素子（１１）を介して前記デバッグインタフェース（８）と接続されていて、コンフィギュレーションプロセスが生じたときに、前記デバッグインタフェース（８）へのアクセスを選択的に可能または不可能にする、
請求項４または５に記載の装置。
【請求項７】
前記コンフィギュレーションスイッチ素子（１１）は、前記デバッグインタフェース（８）に伝送される制御信号（１３）の中から、コンフィギュレーションプロセスを生じさせるビットシーケンスを識別するように構成されている、
請求項６に記載の装置。
【請求項８】
前記コンフィギュレーションスイッチ素子（１１）を介してアクセスが可能であるのか不可能であるのかを定めた情報が、記憶装置（１２）内に格納されている、
請求項４から７のいずれか１項に記載の装置。
【請求項９】
前記コンフィギュレーションスイッチ素子（１１）は、ＣＰＬＤ、ＦＰＧＡ、プロセッサ、または、これらのタイプのプログラミング可能なハードウェアデバイスのうち２つ以上の組み合わせ、として構成されている、
請求項４から８のいずれか１項に記載の装置。
【請求項１０】
前記コンフィギュレーション監視インタフェース（９）は、前記データインタフェース（７）の一部として構成されており、前記プログラミング可能なハードウェアデバイス（１）は、前記データインタフェース（７）の前記一部にコンフィギュレーションプロセスをシグナリングするロジック（４）を備えている、
請求項２に記載の装置。
【請求項１１】
前記コンフィギュレーション監視インタフェース（９）は、独立した専用のコンフィギュレーション監視インタフェースとして構成されている、
請求項２に記載の装置。
【請求項１２】
前記デバッグインタフェース（８）は、JTAGインタフェースとして構成されており、有利にはIEEE標準1149.1に準拠したJTAGインタフェースとして構成されている、
請求項１から１１のいずれか１項に記載の装置。
【請求項１３】
前記コンフィギュレーションスイッチ素子（１１）は遅延素子を備えており、前記遅延素子は、前記第１のプログラミング可能なハードウェアデバイス（１）に伝送される信号を遅延させるように構成されている、
請求項７に記載の装置。
【請求項１４】
第２のプログラミング可能なハードウェアデバイス（２）が設けられており、前記ロジック（４）と通信するために、前記データインタフェース（７）が前記第２のプログラミング可能なハードウェアデバイス（２）と接続されており、前記第２のプログラミング可能なハードウェアデバイス（２）は、前記第１のプログラミング可能なハードウェアデバイス（１）をコンフィギュレーションするように構成されている、
請求項１から１３のいずれか１項に記載の装置。
【請求項１５】
前記第１のプログラミング可能なハードウェアデバイス（１）は、ＦＰＧＡとして構成されており、前記第２のプログラミング可能なハードウェアデバイス（２）は、プロセッサまたはＦＰＧＡとして構成されている、
請求項１４に記載の装置。
【請求項１６】
前記コンフィギュレーションインタフェース（５）および前記デバッグインタフェース（８）は、前記第１のプログラミング可能なハードウェアデバイス（１）の外部に実装された回路によって形成されており、該回路によって前記コンフィギュレーションインタフェース（５）および前記デバッグインタフェース（８）は、前記第１のプログラミング可能なハードウェアデバイス（１）の単一のインタフェースと接続されている、または接続可能である、
請求項１から１５のいずれか１項に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラミング可能なハードウェアデバイスたとえばＰＬＤまたはプロセッサのコンフィギュレーションもしくはプログラミングを阻止する装置に関する。
【背景技術】
【０００２】
プログラミング可能なロジックデバイスであるＰＬＤ Programmable Logic Deviceは、ロジック回路をプログラミング可能もしくはコンフィギュレーション可能なディジタル技術の集積回路である。このためＰＬＤはコンフィギュレーションインタフェースを備えており、このインタフェースを利用して、ＰＬＤ内のロジック回路のコンフィギュレーションを実行可能であり、具体的には、ＰＬＤ内の個々の汎用ブロックの基本的な機能および各ブロック相互間の結線のために、ロジック回路によってマッピングされる構造ルールが設定される。ＰＬＤとしてたとえば、ＦＰＧＡ Field Programmable Gate ArrayおよびＣＰＬＤ Complex Programmable Logic Devicesなどが挙げられる。
【０００３】
プロセッサは、ロジック回路がほとんど固定配線された状態で設けられているディジタル技術の集積回路であり、この場合、ソフトウェアの実行によりロジック機能をプログラミング可能またはコンフィギュレーション可能である。このためプロセッサは、ソフトウェアを実行させるための、もしくは実行されるソフトウェアを操作するための、コンフィギュレーションインタフェースを備えている。
【０００４】
以下では、プログラミング可能なハードウェアデバイスとは、プロセッサ、ＰＬＤ、またはこれら双方が組み合わせられたものであるとする。さらに以下では、ロジックとは、プロセッサ内のソフトウェア、またはＰＬＤ内のロジック回路のことであるとする。
【０００５】
多くの場合、プログラミング可能なハードウェアデバイスは、ハードウェアデバイスをコンフィギュレーションするためのコンフィギュレーションインタフェースのほか、さらにデバッグインタフェースも備えており、このインタフェースは、まずはプログラミング可能なハードウェアデバイス内でプログラミングされたロジックのデバッグに利用可能であるが、このインタフェースを介してロジックをコンフィギュレーションすることもできる。
【０００６】
メーカ側では、もっぱらデバッグインタフェースのみを介してロジックをコンフィギュレーションすることを想定している理由により、いくつかのモデルでは独立したコンフィギュレーションインタフェースを備えていないものもある。このようなケースでは、ハードウェアデバイスの外部に実装された回路を利用することによって、独立したコンフィギュレーションインタフェースと、独立したデバッグインタフェースを用意することができる。たとえばデバッグインタフェースを、このインタフェースを選択的に第１の外部インタフェースまたは第２の外部インタフェースと接続するように構成された切替装置と接続することができる。この場合、第１の外部インタフェースは、プログラミング可能なハードウェアデバイスをプログラミングするために設けられており、第２の外部インタフェースは、プログラミング可能なハードウェアデバイスにプログラミングされたロジックのデバッグに利用される。さらにこの場合、上述の切替装置は、ハードウェアデバイスのプログラミング処理中はデバッグインタフェースが第１の外部インタフェースと接続され、ハードウェアデバイスのプログラミング処理が行われていないときには、デバッグインタフェースが第２の外部インタフェースと接続されるように構成されている。コンフィギュレーションインタフェースとデバッグインタフェースが、元々プログラミング可能なハードウェアデバイスによって、それぞれ独立したインタフェースとして専用に利用できるのか、または、ハードウェアデバイス外部に配置された回路を利用することでそれが実現されているのかは、本発明にとって重要ではない。
【０００７】
プログラミング可能なハードウェアデバイスがユーザによりコンフィギュレーションされるのを阻止したいならば、さしあたりコンフィギュレーションインタフェースへのユーザのアクセスをブロックすればよい。ただし、プログラミング可能なハードウェアデバイスにおけるロジックのデバッグを、ユーザが行えるようにしたいならば、デバッグインタフェースをイネーブル状態にする必要がある。しかしながら、従来技術において知られている構成でこのようにすると、ユーザはプログラミング可能なハードウェアデバイスをデバッグできるだけでなく、このデバイスのコンフィギュレーションもしくはプログラミングも可能になってしまう、ということを意味する。
【０００８】
ただし特定のケースにおいては、プログラミング可能なハードウェアデバイスをデバッグインタフェースを介してプログラミングするのは望ましいことではなく、たとえばそれは、第１のプログラミング可能なハードウェアデバイスたとえばＦＰＧＡが、第２のプログラミング可能なハードウェアデバイスたとえばプロセッサと接続されているような場合である。従来技術においてはこのような構成は、たとえば複雑な物理的な系および電子的な系をリアルタイムシミュレーションするためのコンピュータシステムによって知られている。このような構成によればシステムはプロセッサに対し、特定の計算プロセスたとえば特に時間的にクリティカルな計算プロセスを、ＦＰＧＡに転送させるようにすることができる。
【０００９】
このような構成において有用であるのは、ＦＰＧＡのコンフィギュレーションをもっぱらプロセッサのみによって実行することである。この種のコンピュータシステムのメーカは通常、プロセッサと接続されたＦＰＧＡを含め、コンピュータシステム全体をコンフィギュレーションもしくはプログラミングするためのツールも提供している。コンピュータシステムのプログラミング中、プロセッサはコンフィギュレーションインタフェースを介して、接続されたＦＰＧＡをコンフィギュレーションすることになり、つまりロジックを用いて記述することになる。このロジックには、ユーザが自由にコンフィギュレーション可能な部分のほか、ユーザはコンフィギュレーションできない、または制限されたコンフィギュレーションしかできない、必須のインタフェースロジックも含まれている可能性があり、このようなロジックは動作実行中、接続されたプロセッサとのデータ交換を制御する。このようにすることでコンピュータシステムのメーカは、プロセッサとＦＰＧＡとの間において規定の通信動作を設定することができ、誤ったプログラミングを保護するセーフティメカニズムを設定することができる。このようなセーフティメカニズムがなければ、誤ったプログラミングによって、コンピュータシステムの誤動作が引き起こされる可能性があるし、最悪のケースでは、ＦＰＧＡまたは組み込まれた他のハードウェアが損傷してしまうおそれすらある。
【００１０】
デバッグインタフェースを介してＦＰＧＡのプログラミングが可能であると、このようなセーフティメカニズムを迂回することができてしまう。デバッグインタフェースを介したプログラミングによるアクセスによって、ＦＰＧＡ上に存在するすべてのロジックの上書きまたはＦＰＧＡのロジック回路の少なくとも１つの特別な部分の上書きが発生し、このようにすることで、本来必須であるインタフェースロジックが上書きされてしまう可能性もある。この理由から、従来技術ではコンピュータシステムにおいては、既述のようにユーザはたいていの場合、デバッグインタフェースにアクセスできない。しかしながらこのようにしてしまうと、たとえばＦＧＰＡロジックのデバッグの目的で変数を監視するなど、ＦＰＧＡのプログラミングとは別の目的で、ユーザがデバッグインタフェースを利用することもできなくなる。
【発明の概要】
【発明が解決しようとする課題】
【００１１】
このような状況に鑑み、本発明の課題は、プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止するための、以下のような装置を提供することにある。すなわち本発明が提供する装置によって、ハードウェアデバイスの不適切なまたは許可されないプログラミングに起因して、ハードウェアデバイスまたはハードウェアデバイスと接続されたハードウェアが損傷してしまうのを回避できるようにするとともに、それにもかかわらず必要に応じて、プログラミングもしくはコンフィギュレーションとは別の目的で、デバッグインタフェースを介してハードウェアデバイスにアクセスできるようにすることである。
【課題を解決するための手段】
【００１２】
本発明によればこの課題は、独立請求項に記載の特徴によって解決される。従属請求項には、本発明の有利な実施形態が記載されている。
【００１３】
つまり上述の課題は、以下のように構成された装置によって解決される。すなわち、第１のプログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する装置であって、この装置には、プログラミング可能なハードウェアデバイスとスイッチ素子とが設けられている。この場合、プログラミング可能なハードウェアデバイスは、プログラミング可能なハードウェアデバイスのロジックをプログラミングするように構成されたコンフィギュレーションインタフェースと、プログラミング可能なハードウェアデバイスのハードウェア周辺装置とデータ交換するように構成されたデータインタフェースと、ロジックをデバッグおよびコンフィギュレーションするように構成されたデバッグインタフェースとを備えている。さらにこの場合、スイッチ素子は、ロジック回路のコンフィギュレーションプロセスが生じたときに、デバッグインタフェースへのアクセスを阻止できるように、デバッグインタフェースと接続され構成されている。さらに１つの別の有利な実施形態によれば、プログラミング可能なハードウェアデバイスは、ロジック回路のコンフィギュレーションプロセスをシグナリングするように構成されたコンフィギュレーション監視インタフェースを備えている。
【００１４】
１つの有利な実施形態によれば、本発明による装置は、第２のプログラミング可能なハードウェアデバイスを備えており、この場合、第１のプログラミング可能なハードウェアデバイスが第２のプログラミング可能なハードウェアデバイスと通信するように、データインタフェースが構成されている。本発明による装置の１つの格別有利な実施形態によれば、第１のプログラミング可能なハードウェアデバイスはＦＰＧＡであり、第２のプログラミング可能なハードウェアデバイスはＦＰＧＡまたはプロセッサである。
【００１５】
したがって本発明の重要な点は、コンフィギュレーションプロセスが生じたときにデバッグインタフェースへのアクセスを阻止可能なスイッチ素子が設けられていることであり、ここで有利であるのは、コンフィギュレーションプロセスが生じたときに、デバッグインタフェースへのアクセスが阻止されるように、スイッチ素子を構成することである。つまりこの場合、コンフィギュレーションインタフェースを利用して、プログラミング可能なハードウェアデバイスのロジックをコンフィギュレーションすることができる一方、デバッグインタフェースを利用して、ロジックのデバッグも実施できるけれども、コンフィギュレーションプロセスが生じたときには、デバッグインタフェースへのアクセスを阻止することができる。
【００１６】
この目的で有利であるのは、プログラミング可能なハードウェアデバイスを以下のように構成することである。すなわち、コンフィギュレーションインタフェースを介してコンフィギュレーションもしくはプログラミングが行われたときも、デバッグインタフェースを介してプログラミングもしくはコンフィギュレーションが行われたときも、コンフィギュレーションプロセスがシグナリングされるように構成するのである。別の選択肢として、コンフィギュレーションプロセスを、つまりロジックのプログラミングもしくはコンフィギュレーションを、デバッグインタフェースに伝送される制御信号に基づき識別することができ、たとえば制御信号からコンフィギュレーション命令を抽出することによって識別することができる。この目的でたとえば、適切に構成された監視ユニットを設けることができ、この監視ユニットは、コンフィギュレーション命令について制御信号をチェックする。以下では、これら２つのバリエーションすなわちコンフィギュレーション監視ユニットが設けられている構成も設けられていない構成も、同等のものとして説明する。
【００１７】
コンフィギュレーションプロセスのシグナリングは、有利には論理状態０または１の出力によって行われ、あるいは立ち上がり縁または立ち下がり縁によって行われる。たとえば、プログラミング可能なハードウェアデバイスが、コンフィギュレーションインタフェースまたはデバッグインタフェースを介してプログラミングされると、つまりコンフィギュレーションプロセスが生じると、コンフィギュレーション監視インタフェースにおいて論理値０が出力され、ハードウェアデバイスのコンフィギュレーションが完了すると、論理値１が出力される。このようなケースであるならば、スイッチ素子を以下のように構成するのが有利である。すなわち、コンフィギュレーション監視インタフェースにおいて信号が論理値０であるならば、または、デバッグインタフェースに対する制御信号においてプログラミング可能なハードウェアデバイスのコンフィギュレーションプロセスが識別されると、デバッグインタフェースへのアクセスがスイッチ素子により阻止可能であるように構成され、有利には阻止されるように構成されるのである。
【００１８】
有利には、プログラミング可能なハードウェアデバイスは、第１のプログラミング可能なハードウェアデバイスであり、データインタフェースは、第２のプログラミング可能なハードウェアデバイスと通信するように構成されている。格別有利には、第１のプログラミング可能なハードウェアデバイスはＦＰＧＡであり、第２のプログラミング可能なハードウェアデバイスはプロセッサである。ＦＰＧＡは基本的に、従来技術により公知のフィールド・プログラマブル・ゲート・アレイとして構成することができ、つまりロジック回路をプログラミング可能もしくはコンフィギュレーション可能なディジタル技術の集積回路として構成することができる。ＦＰＧＡもしくはＦＰＧＡのロジック回路は、データインタフェースを介してプロセッサと通信する。プロセッサを、従来技術により公知の任意のプロセッサとすることができる。ＦＰＧＡは有利には、ＦＰＧＡのコンフィギュレーションが、一方ではコンフィギュレーションインタフェースを介して、他方ではデバッグインタフェースを介して、実施可能であるように構成されている。ただし、ＦＰＧＡをコンフィギュレーションするためのコンフィギュレーションユニットが、コンフィギュレーションインタフェースを介してＦＰＧＡと接続されるようにするのが好ましい。
【００１９】
本発明によれば、プログラミング可能なハードウェアデバイスの許可されない誤ったプログラミングに起因する、プログラミング可能なハードウェアデバイスの誤動作、ならびにプログラミング可能なハードウェアデバイスおよびプログラミング可能なハードウェアデバイスと接続されたハードウェアたとえばプロセッサの意図しない破壊は、プログラミング可能なハードウェアデバイスのロジック回路へのコンフィギュレーションアクセスが、コンフィギュレーションインタフェースを介してのみ可能であって、デバッグインタフェースを介しては不可能であり、または特別な状況においてしか可能でないようにすることにより回避される。ただしこれと並行して、デバッグインタフェースをさらに別の用途にも利用可能であり、特に、プログラミング可能なハードウェアデバイスのロジックのデバッグにも利用することができる。換言すれば、スイッチ素子によりコントロール手段が提供され、これによって、プログラミング可能なハードウェアデバイスのコンフィギュレーションに関して、デバッグインタフェースを介したデータ伝送を制御可能であり、このコントロール手段により、プログラミング可能なハードウェアデバイスに対し不正にプログラミングが行われた場合、デバッグインタフェースへのアクセスを阻止することができ、または事前に設定されたパラメータに基づき、たとえばユーザ固有に許可することができる。
【００２０】
さらに別の有利な実施形態によれば、スイッチ素子は、コンフィギュレーション監視インタフェースと以下のように接続され構成されている。すなわち、コンフィギュレーション監視インタフェースを介してコンフィギュレーションプロセスがシグナリングされたときに、デバッグインタフェースへのアクセスを阻止可能であり、有利にはこのアクセスが阻止されるように、接続され構成されている。この実施形態によれば、コンフィギュレーション監視インタフェースを介してコンフィギュレーションプロセスがシグナリングされた場合に、デバッグインタフェースへのアクセスを阻止可能であり、もしくはこのアクセスが阻止される。コンフィギュレーションプロセスを、たとえばコンフィギュレーション監視インタフェースから送出される信号の立ち上がり縁または立ち下がり縁によってシグナリングしてもよいし、あるいは論理値０から論理値１への信号変化またはこれとは逆の変化によってシグナリングしてもよい。好ましいのは、コンフィギュレーションインタフェース自体が、ＦＰＧＡのロジック回路のコンフィギュレーションの変化が識別されるように構成されていることである。
【００２１】
さらに別の有利な実施形態によれば、スイッチ素子は以下のように構成されている。すなわち、プログラミング可能なハードウェアデバイスのロジックにおいてコンフィギュレーションプロセスが生じたとき、またはコンフィギュレーションプロセスが識別されたとき、装置がスイッチオフされ、有利には電流および／または電圧のない状態に移行されるように構成されている。コンフィギュレーションプロセスのシグナリングは、有利にはプログラミング可能なハードウェアデバイスにより生成される信号によって行われ、この信号は、プログラミング可能なハードウェアデバイスのコンフィギュレーションまたはプログラミングの期間中または開始直後に変化し、したがってこの信号により、コンフィギュレーションプロセスの開始、進行中、および／または終了が表される。
【００２２】
さらに好ましいのは、コンフィギュレーションプロセスのシグナリングが、もしくはプログラミング可能なハードウェアデバイスをコンフィギュレーションするためのプロセスの開始、実施中、および／または終了を表す相応の信号が、プログラミング可能なハードウェアデバイスのうちコンフィギュレーションできない部分によって供給されることである。つまりこのような構成であれば、プログラミング可能なハードウェアデバイスのロジック回路は、コンフィギュレーションプロセスのシグナリングが送出不可能になるようにコンフィギュレーションすることはできず、したがってコンフィギュレーションプロセスのシグナリングは、コンフィギュレーション監視インタフェースを介して必ず供給されるのである。これに対する代案として、コンフィギュレーションプロセスのシグナリングを、ロジック回路によって行うこともできるし、または外部の回路たとえばプルアップ抵抗またはプルダウン抵抗によって発生させることもできる。
【００２３】
さらに別の有利な実施形態によれば、本発明による装置はコンフィギュレーションスイッチ素子を備えており、これはスイッチ素子を制御するように構成されている。このように構成すれば、たとえコンフィギュレーションプロセスがシグナリングされたとしても、コンフィギュレーションスイッチ素子によって、デバッグインタフェースを介したロジック回路のコンフィギュレーションを許可することができ、これはコンフィギュレーションスイッチ素子によるスイッチ素子の相応の制御によって可能となる。つまりこの場合、たとえば予め定められているユーザの介入操作により、本発明による装置を利用することで、デバッグインタフェースを介してＦＰＧＡのロジック回路をデバッグ可能であるだけでなく、デバッグインタフェースを介したロジック回路のコンフィギュレーションも可能であり、したがってコンフィギュレーションインタフェースに加えて、デバッグインタフェースを介してもプログラミングが可能である。
【００２４】
さらに格別有利には、コンフィギュレーションスイッチ素子が、コンフィギュレーション監視インタフェースと接続されていて、コンフィギュレーションプロセスがシグナリングされると、スイッチ素子を制御してデバッグインタフェースへのアクセスを阻止するように構成されている。つまりコンフィギュレーション監視インタフェースを介してコンフィギュレーションプロセスが識別された場合、デバッグインタフェースへのアクセスを阻止するためのスイッチ素子をダイレクトに制御するのではなく、このスイッチ素子の制御をコンフィギュレーション監視インタフェースを介して行うのである。
【００２５】
さらに格別好ましくは、スイッチ素子が、コンフィギュレーションスイッチ素子を介してデバッグインタフェースと接続されていて、コンフィギュレーションプロセスが生じたときに、デバッグインタフェースへのアクセスを選択的に可能または不可能にする。このように構成すれば、たとえコンフィギュレーションプロセスが発生し、その際にデバッグインタフェースへのアクセスをスイッチ素子により阻止可能であるにしても、コンフィギュレーションスイッチ素子によって、デバッグインタフェースへのアクセスを可能にすることができる。
【００２６】
さらに好ましいのは、デバッグインタフェースとスイッチ素子との間にコンフィギュレーションスイッチ素子を配置し、このコンフィギュレーションスイッチ素子によって、スイッチ素子とデバッグインタフェースとの接続の許可または阻止を行えるようにすることである。さらにこの場合、コンフィギュレーションスイッチ素子によりデバッグインタフェースへ、所定の信号レベルたとえば論理値０または１を供給することもできる。さらに好ましくは、コンフィギュレーションスイッチ素子は、デバッグインタフェースへのアクセスを予め定められたパラメータに従って制御可能なロジックを備えている。さらに有利にはこのロジックは、プログラミング可能なハードウェアデバイスと、および／または第２のプログラミング可能なハードウェアデバイスと、および／またはプログラミング可能なハードウェアデバイスのための外部のコンフィギュレーションユニットと、通信コネクション可能な状態におかれている。
【００２７】
本発明の１つの有利な実施形態によれば、コンフィギュレーションスイッチ素子は、デバッグインタフェースに伝送される制御信号の中からコンフィギュレーションプロセスを抽出するように構成されている。換言すれば、好ましくはコンフィギュレーションスイッチ素子は、デバッグインタフェースに伝送される制御信号を、プログラミング可能なハードウェアデバイスのコンフィギュレーションを実施させることのできるビットシーケンスについて分析するように構成されている。つまりコンフィギュレーションスイッチ素子はデバッグインタフェースを、デバッグインタフェースに送信される制御信号について監視し、プログラミング可能なハードウェアデバイスのコンフィギュレーションプロセスが制御信号によって発生するか否かについて、それらの制御信号を評価する。
【００２８】
プログラミング可能なハードウェアデバイスのプログラムを書き換えようとする試みが識別されると、たとえばプログラミング可能なハードウェアデバイスのロジックが消去される前に、もしくはプログラムが書き換えられる前に、コンフィギュレーションプロセスを識別し、デバッグインタフェースへのアクセスを阻止することができる。スイッチ素子によるデバッグインタフェースのアクセスの阻止は、規定可能な期間にわたり実施できるが、あるいはさらに次のイベントが発生するまで、つまり装置のスイッチオフ／スイッチオンが発生するまで、実施することもできる。このようにすることで、プログラミング可能なハードウェアデバイスのコンフィギュレーションをデバッグインタフェースを介して変更しようとして、相次いで行われる複数の不正なアクセスを、阻止することができる。
【００２９】
１つの有利な実施形態によれば、コンフィギュレーションスイッチ素子は、コンフィギュレーションプロセスが生じたときに、装置および／またはプログラミング可能なハードウェアデバイスのスイッチオフ／スイッチオン、および／またはスイッチオン状態へのリセットを行うことができるように構成されている。また、不正にプログラミングが書き換えられたとき、つまり望ましくないコンフィギュレーションプロセスが識別されたとき、プログラミング可能なハードウェアデバイスがコンフィギュレーションインタフェースを介して、初期状態または事前に記憶された状態に対応するロジック回路のコンフィギュレーションを再び取得するようにしてもよい。つまりユーザが、デバッグインタフェースを介した不正なアクセスによって、プログラミング可能なハードウェアデバイスのこれまでのコンフィギュレーションを消去してしまったならばただちに、プログラミング可能なハードウェアデバイスをこれまでのコンフィギュレーションによって自動的にプログラミングしなおすことができる。
【００３０】
本発明による装置は、コンフィギュレーションインタフェースと接続されたコンフィギュレーションユニットを備えることができる。さらにこの装置を、以下のように構成することもできる。すなわち、プログラミング可能なハードウェアデバイスのリコンフィギュレーションのために、デバッグインタフェースを介した不正なアクセスが識別されたが、デバッグインタフェースへのアクセスは阻止されないように構成してもよい。このようにしてプログラミングが書き換えられたハードウェアデバイスが新たに起動された後、ハードウェアデバイスが規定どおりに動作しているか否かをチェックすることができ、たとえば、プログラミング可能なハードウェアデバイスのインタフェースに、事前に規定された信号が加わっているか否かをチェックすることができる。規定どおりに動作しているのであれば、プログラミングの書き換えを許容することができる。そうでなければ、プログラミング可能なハードウェアデバイスのコンフィギュレーションを消去し、事前に記憶されていたコンフィギュレーションを、コンフィギュレーションインタフェースを介して書き込むことができる。
【００３１】
このように構成することの利点は、不適切な不正のコンフィギュレーションを実行させることはできても、本発明による装置によれば、リコンフィギュレーションが問題になるのか、または状況次第では問題にはならないのかを、本発明による装置によって即座に自動的にチェックすることができるので、通常は損傷には至らない、という点にある。リコンフィギュレーションが問題になる場合にはたとえば、プログラミング可能なハードウェアデバイスと、このような場合に損傷を受けるおそれのある他のデバイスとの結線を、損傷が回避される状態に移行させることができる。さらに、許可されていないコンフィギュレーションプロセスが識別された場合に、ユーザまたはメーカに通報して、次のステップについて判断を下せるようにすることもできる。
【００３２】
さらに別の有利な実施形態によれば、コンフィギュレーションスイッチ素子が記憶装置を備えており、この記憶装置内には、コンフィギュレーションスイッチ素子を介したアクセスが可能であるのか不可能であるのかを定めた情報が格納されている。この情報は、有利にはライセンスまたはライセンスキーとして構成されており、これによって、プログラミング可能なハードウェアデバイスのコンフィギュレーション変更に対し、ユーザがデバッグインタフェースへのアクセス権を有するか否かが定められる。この場合、既述のように、プログラミング可能なハードウェアデバイスのコンフィギュレーション変更を、デバッグインタフェースにより実行可能であるか否かを、コンフィギュレーションスイッチ素子によって制御することができる。たとえば記憶装置を、ライセンスを格納可能な不揮発性メモリとすることができる。さらにここで考えられるのは、ユーザがライセンスをインターネットからダウンロードして、記憶装置に格納できるようにすることである。
【００３３】
きわめて格別に好ましい実施形態によれば、コンフィギュレーションスイッチ素子は、ＣＰＬＤとして、ＦＰＧＡとして、プロセッサとして、またはここに挙げたプログラミング可能なハードウェアデバイスの組み合わせとして、構成されている。さらにコンフィギュレーションスイッチ素子を、機械的なジャンパまたは切替装置として、あるいはプルアップ抵抗および／またはプルダウン抵抗といった他の部品として、構成することもできる。
【００３４】
１つの有利な実施形態によれば、コンフィギュレーション監視インタフェースは、データインタフェースの一部分として構成されており、プログラミング可能なハードウェアデバイスは、データインタフェースのこの一部分にコンフィギュレーションプロセスをシグナリングするロジックを備えている。たとえば従来技術により知られているＦＰＧＡは、別個に実装されたコンフィギュレーション監視インタフェースを必ずしも備えているわけではない。そのようなケースでは、たとえばデータインタフェースの１つのピンを、コンフィギュレーション監視インタフェースの機能のために利用することができる。通常、従来技術により知られているＦＰＡＧの場合、プログラミングプロセス中、データインタフェースは、特にデータインタフェースの出力端子は、規定の値をとるようになっており、たとえば論理値１、論理値０、weak-highインピーダンス、weak-lowインピーダンス、またはhighインピーダンスをとるようになっている。ここで挙げた構成によれば、コンフィギュレーションプロセスを識別し、それに応じてコンフィギュレーション監視インタフェースを介してシグナリングを行う目的で、この信号を利用することができる。ここで考えられる１つの実施形態によれば、プログラミング可能なハードウェアデバイスはそのデータインタフェースの出力を、プログラミングプロセス中、weak-high状態に移行させ、この状態に基づき１つの出力端子において、このweak-high状態から論理値１の信号が識別され、コンフィギュレーションプロセスを検出するためにこの信号を利用する。
【００３５】
さらに別の有利な実施形態によれば、コンフィギュレーション監視インタフェースは、データインタフェースの一部分として構成されており、プログラミング可能なハードウェアデバイスは、データインタフェースのこの一部分にコンフィギュレーションプロセスの完了をシグナリングするロジックを備えている。ここで考えられる１つの実施形態によれば、このロジックは、予め定められた複数のデータ出力端子から、論理値１および論理値０のタイプから成る信号の所定の組み合わせを出力し、信号のこの組み合わせの出力が、コンフィギュレーションプロセスの完了を識別するために利用される。このようにすることで本発明による装置を、従来技術により知られているプログラミング可能な任意のハードウェアデバイスに実装することもでき、その際、プログラミング可能なハードウェアデバイスに独立した専用のコンフィギュレーション監視インタフェースを設ける必要がない。
【００３６】
基本的に、スイッチ素子を任意に構成することができ、特に好ましいのは、スイッチ素子を切替可能なバスドライバとして構成することである。その際にさらに好ましいのは、コンフィギュレーションプロセスのシグナリングを、独立した専用のコンフィギュレーション監視インタフェースを介して出力されるコンフィギュレーション信号によって実現することであり、たとえばAltera Corporation社のＦＰＧＡにおけるCONF_DONE信号とINIT_DONE信号とによって実現することである。さらに別の有利な実施形態によれば、デバッグインタフェースは、JTAGインタフェースとして構成されており、有利にはIEEE標準1149.1に準拠したJTAGインタフェースとして構成されている。さらに好ましいのは、データインタフェースをデータバスとして構成することである。
【００３７】
この実施形態によれば、過電圧、極性反転など損傷を及ぼす外部の影響からJTAGインタフェースを保護する目的で、バスドライバを介してJTAGインタフェースを接続することができる。好ましくは、バスドライバはOutputEnable入力端子を備えており、この入力端子を介してバスドライバの出力ドライバを、非アクティブ状態にすることができる。本発明の１つの有利な実施形態によれば、ハードウェアデバイスのコンフィギュレーション信号が、バスドライバのOutputEnable入力端子に供給され、それによって、プログラミング可能なハードウェアデバイスのコンフィギュレーションが完了したときにはじめて、ユーザはJTAGインタフェースにアクセスすることができる。この状態においてユーザは、プログラミング可能なハードウェアデバイスを、JTAGインタフェースを介してデバッグすることができる。
【００３８】
プログラミング可能なハードウェアデバイスをコンフィギュレーションしようという試みがなされると、コンフィギュレーション信号がアクティブになり、その結果、バスドライバにより接続が分離され、プログラミング可能なハードウェアデバイスがリコンフィギュレーションされて、場合によっては損傷を引き起こすようなコンフィギュレーションになってしまうことが阻止されるようになる。本発明による装置のサプライヤが、そのコンフィギュレーションを作成するための開発フェーズ中、JTAGインタフェースに制約なくアクセスできるようにする目的で、たとえばジャンパまたは０Ω抵抗あるいはコンフィギュレーションスイッチ素子を介して、接続を確立することができる。既述のように、JTAGインタフェースへのアクセスを、ＣＰＬＤ、ＦＰＧＡ、プロセッサ、またはここで挙げたタイプのプログラミング可能なハードウェアデバイスの２つの組み合わせを介してコントロールすることができ、つまりたとえばJTAGインタフェースのOutputEnable信号を制御するために、コントロールすることができる。
【００３９】
既に述べた別の構成を利用することで、JTAGインタフェースによってなされるプログラミング可能なハードウェアデバイスのデバッグを、ライセンスとして記憶された情報を用いることによって、対応するライセンスを取得した一部のユーザに対してのみ、ソフトウェア方式で許可することができる。さらにこのような許可を、いかなる保証を受ける権利も手放す代わりに、JTAGインタフェースへの無制限のアクセスを取得したユーザに対してのみ、許可するようにしてもよい。
【００４０】
さらに本発明の課題は、プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する以下のような方法によって解決される。この場合、プログラミング可能なハードウェアデバイスは、そのロジックをコンフィギュレーションするために構成されたコンフィギュレーションインタフェースと、プログラミング可能なハードウェアデバイスがハードウェア周辺装置とデータ交換するために構成されたデータインタフェースと、ロジックをデバッグおよびコンフィギュレーションするために構成されたデバッグインタフェースと、ロジックのコンフィギュレーションプロセスをシグナリングするために構成されたコンフィギュレーション監視インタフェースとを備えており、この方法には、コンフィギュレーションプロセスがシグナリングされると、デバッグインタフェースへのアクセスを阻止するステップが設けられている。
【００４１】
このように構成することによって、デバッグインタフェースへのユーザのアクセスを細かく制御することができる。本発明による方法のそのほかの実施形態については、これまで述べてきた装置の実施形態を類推すれば、当業者に明らかである。
【００４２】
次に、図面を参照しながら有利な実施形態に基づき本発明について詳しく説明する。
【図面の簡単な説明】
【００４３】
【図１】本発明の第１の有利な実施形態による装置を示す概略図
【図２】本発明の第２の有利な実施形態による装置を示す概略図
【図３】本発明の第３の有利な実施形態による装置を示す概略図
【発明を実施するための形態】
【００４４】
図１〜図３には、それぞれ異なる３つの有利な実施形態によるＦＰＧＡ１のコンフィギュレーションを阻止する装置が示されている。
【００４５】
図１に示されているように、この装置はＦＰＧＡ１のほか、それぞれマイクロプロセッサ２およびスイッチ素子３を有している。ＦＰＧＡ１はロジック回路４を備えており、これはコンフィギュレーションインタフェース５を介してコンフィギュレーションユニット６をコンフィギュレーション可能もしくはプログラミング可能である。さらにロジック回路４は、この実施例ではデータバスとして構成されたデータインタフェース７を介して、マイクロプロセッサ２と通信コネクションを形成している。さらにＦＰＧＡ１はデバッグインタフェース８を備えており、このインタフェースは、ロジック回路４のデバッグおよびコンフィギュレーションのため、IEEE標準1149.1に準拠するJTAGインタフェースとして構成されている。さらにＦＰＧＡ１は、コンフィギュレーション監視インタフェース９も備えており、このインタフェースはこの実施例では、ロジック回路４のコンフィギュレーションプロセスをシグナリングするために、ConfigDoneインタフェースとして構成されている。この場合、ユーザは、JTAGコネクタ１０を介して、ＦＰＧＡ１のデバッグインタフェース８にアクセスすることができる。
【００４６】
ＦＰＧＡ１は、以下のように構成されている。すなわち、ロジック回路４のコンフィギュレーションにあたり、コンフィギュレーションインタフェース５を介してであれ、デバッグインタフェース８を介してであれ、ＦＰＧＡ１もしくはロジック回路４のコンフィギュレーションの変更開始が、コンフィギュレーション監視インタフェース９においてシグナリングされ、これはたとえば論理値１から０への信号レベルの変化によって行われる。
【００４７】
図１にさらに示されているように、スイッチ素子３はバスドライバとして実装されており、デバッグインタフェース８と接続されていて、コンフィギュレーションプロセスが生じたときにデバッグインタフェース８へのアクセスを阻止できるように構成されている。具体的には、バスドライバ３はOutputEnable入力端子を備えており、この入力端子を介してバスドライバ３を、もしくはバスドライバ３の出力ドライバを、非アクティブ状態にすることができる。ＦＰＧＡ１によりコンフィギュレーション監視インタフェース９から送出されるConfigDone信号が、バスドライバ３のOutputEnable入力端子に供給される。
【００４８】
ConfigDone信号によって、ＦＰＧＡ１のプログラミングもしくはロジック回路４のプログラミングについてシグナリングが行われると、バスドライバ３によりデバッグインタフェース８へのアクセスが阻止される。この場合、JTAGコネクタ１０を介してJTAGインタフェース８へアクセスするのは、もはや不可能である。このようにすることによって、コンフィギュレーションインタフェース５を介してコンフィギュレーションユニット６により、ＦＰＧＡ１のコンフィギュレーションが可能である一方、通常動作中はJTAGコネクタ１０を利用することで、JTAGインタフェース８を介してＦＰＧＡ１のデバッグもしくはＦＰＧＡ１のロジック回路のデバッグが可能となる。ただしJTAGコネクタ１０を利用し、ＦＰＧＡ１のJTAGインタフェース８を介してプログラミングが行われると、コンフィギュレーション監視インタフェース９は、コンフィギュレーションプロセスをシグナリングする。コンフィギュレーション監視インタフェース９はスイッチ素子３と接続されているので、この場合にはJTAGインタフェース８へのアクセスが阻止される。
【００４９】
図２には、本発明による装置の第２の実施形態が示されており、この装置にはコンフィギュレーションスイッチ素子１１が設けられていて、この実施例ではこれは、スイッチ素子３を制御するためのＣＰＬＤとして構成されている。さらにコンフィギュレーションスイッチ素子１１は、コンフィギュレーション監視インタフェース９とも接続されている。つまりこの場合、ＣＰＬＤ１１を用いることで、コンフィギュレーションプロセスがシグナリングされると、ＣＰＬＤ１１によりバスドライバ３を制御して、JTAGインタフェース８へのアクセスを阻止することができる。ただしその一方で、ＣＰＬＤ１１を以下のようにプログラミングしておくことも可能である。すなわち、コンフィギュレーション監視インタフェース９を介してコンフィギュレーションプロセスがシグナリングされたにもかかわらず、ＣＰＬＤ１１がバスドライバ３をそれ相応に制御して、デバッグインタフェース８へのアクセスを中止させないように、プログラミングしておくのである。さらにＣＰＬＤ１１を、以下のようにプログラミングしておくことも可能である。すなわち、コンフィギュレーション監視インタフェース９を介してコンフィギュレーションプロセスがシグナリングされたときに、別のデバイスたとえばＣＰＵ２から到来する信号に従って、デバッグインタフェース８へのアクセスを阻止する、または阻止しない、というようにプログラミングしておくのである。
【００５０】
さらに、コンフィギュレーションスイッチ素子１１に記憶装置１２を設けておくことができ、この記憶装置１２に格納されている情報つまりはライセンスに従って、デバッグインタフェース８へのアクセスがコンフィギュレーションスイッチ素子１１により許可されるのか許可されないのかが決定される。たとえばユーザが適切なライセンスを取得しているならば、そのライセンスには以下を可能にする内容を含めることができる。すなわちユーザは、デバッグインタフェース８を介してロジック回路４のデバッグを実行できるだけでなく、コンフィギュレーション監視インタフェース９からコンフィギュレーションスイッチ素子１１へ、適切なライセンスなしではデバッグインタフェース８へのアクセスが本来は阻止されなければならない信号が送信されたとしても、ロジック回路４のコンフィギュレーションも行えるようにする点を含めることができる。
【００５１】
図３には、本発明による装置の第３の有利な実施形態が示されている。この装置によれば、スイッチ素子３はコンフィギュレーションスイッチ素子１１を介してデバッグインタフェース８と接続されており、この場合、スイッチ素子３からデバッグインタフェース８へ伝送される制御信号１３から、コンフィギュレーションプロセスを抽出できるように接続されている。つまりこの場合、コンフィギュレーションスイッチ素子１１は、たとえば制御信号１３中に含まれるビットシーケンスをチェックすることで、JTAGコネクタ１０がデバッグインタフェース８を介してコンフィギュレーションプロセスを開始したか否か、を制御信号から識別することができる。つまりこの場合、コンフィギュレーションスイッチ素子１１は、たとえば制御信号１３中に含まれるビットシーケンスをチェックすることで、JTAGコネクタ１０がデバッグインタフェース８を介してコンフィギュレーションプロセスを開始したか否か、を制御信号から識別することができる。コンフィギュレーションスイッチ素子１１が対応するビットシーケンスを識別したならば、デバッグインタフェース８へのアクセスをコンフィギュレーションスイッチ素子１１により中止させることができる。さらにこの場合、コンフィギュレーションスイッチ素子１１が、ＦＰＧＡ１をコンフィギュレーションするためのビットシーケンスを、制御信号１３から消去することも可能であり、またはＦＰＧＡ１のコンフィギュレーションをそもそも発生させない他のビットシーケンスと置き換えることも可能である。さらに、本発明による装置のこの実施形態に関する１つの有利な構成によれば、コンフィギュレーションスイッチ素子１１に遅延素子（図示せず）たとえばディレイユニットが設けられ、この素子によってＦＰＧＡ１へのデータ伝送のタイミングが遅らされ、このようにすることで、ＦＰＧＡ１に伝送されるデータを評価し、ＦＰＧＡ１をコンフィギュレーションするビットシーケンスを消去または他のビットシーケンスに置き換えるのに十分な時間が、コンフィギュレーションスイッチ素子１１に与えられる。
【符号の説明】
【００５２】
１  第１のプログラミング可能なハードウェアデバイス
２  第２のプログラミング可能なハードウェアデバイス
３  スイッチ素子
４  ロジック回路
５  コンフィギュレーションインタフェース
６  コンフィギュレーションユニット
７  データインタフェース
８  デバッグインタフェース
９  コンフィギュレーション監視インタフェース
１０  JTAGコネクタ
１１  コンフィギュレーションスイッチ素子
１２  記憶装置
１３  デバッグインタフェース用の制御信号
【図１】
0005940201.tif 000002
【図２】
0005940201.tif 000003
【図３】
0005940201.tif 000004