特許第5940201号(P5940201)IP Force 特許公報掲載プロジェクト 2022.1.31 β版

知財求人 - 知財ポータルサイト「IP Force」

▶ ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツングの特許一覧

特許5940201プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する装置
<>
  • 特許5940201-プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する装置 図000002
  • 特許5940201-プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する装置 図000003
  • 特許5940201-プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する装置 図000004
< >
(19)【発行国】日本国特許庁(JP)
(12)【公報種別】特許公報(B2)
(11)【特許番号】5940201
(24)【登録日】2016年5月27日
(45)【発行日】2016年6月29日
(54)【発明の名称】プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する装置
(51)【国際特許分類】
   G05B 19/042 20060101AFI20160616BHJP
【FI】
   G05B19/042
【請求項の数】16
【全頁数】16
(21)【出願番号】特願2015-143611(P2015-143611)
(22)【出願日】2015年7月21日
(65)【公開番号】特開2016-24827(P2016-24827A)
(43)【公開日】2016年2月8日
【審査請求日】2015年7月21日
(31)【優先権主張番号】10 2014 110 197.9
(32)【優先日】2014年7月21日
(33)【優先権主張国】DE
(73)【特許権者】
【識別番号】506012213
【氏名又は名称】ディスペース デジタル シグナル プロセッシング アンド コントロール エンジニアリング ゲゼルシャフト ミット ベシュレンクテル ハフツング
【氏名又は名称原語表記】dspace digital signal processing and control engineering GmbH
(74)【代理人】
【識別番号】100114890
【弁理士】
【氏名又は名称】アインゼル・フェリックス=ラインハルト
(74)【代理人】
【識別番号】100099483
【弁理士】
【氏名又は名称】久野 琢也
(72)【発明者】
【氏名】マティアス ボッケルカンプ
(72)【発明者】
【氏名】マーク ドレスラー
【審査官】 川東 孝至
(56)【参考文献】
【文献】 特開2013−61740(JP,A)
【文献】 特開2013−37654(JP,A)
【文献】 特開平11−65884(JP,A)
【文献】 特表2009−524159(JP,A)
【文献】 欧州特許出願公開第2608102(EP,A1)
【文献】 米国特許出願公開第2008/0168562(US,A1)
【文献】 米国特許出願公開第2009/0083520(US,A1)
(58)【調査した分野】(Int.Cl.,DB名)
G05B 19/04−19/05
G06F 9/06
(57)【特許請求の範囲】
【請求項1】
第1のプログラミング可能なハードウェアデバイス(1)のコンフィギュレーションを阻止する装置であって、該装置には、前記第1のプログラミング可能なハードウェアデバイス(1)とスイッチ素子(3)とが設けられており、
前記第1のプログラミング可能なハードウェアデバイス(1)は、該第1のプログラミング可能なハードウェアデバイス(1)のロジック(4)をコンフィギュレーションするように構成されたコンフィギュレーションインタフェース(5)と、データインタフェース(7)と、前記ロジック(4)をデバッグおよびコンフィギュレーションするように構成されたデバッグインタフェース(8)とを備えており、
前記スイッチ素子(3)は、前記デバッグインタフェース(8)と接続されていて、前記ロジック(4)のコンフィギュレーションプロセスが生じたときに、前記デバッグインタフェース(8)へのアクセスを阻止できるように構成されている
ことを特徴とする、
第1のプログラミング可能なハードウェアデバイス(1)のコンフィギュレーションを阻止する装置。
【請求項2】
前記第1のプログラミング可能なハードウェアデバイス(1)は、前記ロジック(4)のコンフィギュレーションプロセスをシグナリングするように構成されたコンフィギュレーション監視インタフェース(9)を備えている、
請求項1に記載の装置。
【請求項3】
前記スイッチ素子(3)は、前記コンフィギュレーション監視インタフェース(9)と接続されていて、前記コンフィギュレーション監視インタフェース(9)を介してコンフィギュレーションプロセスがシグナリングされたときに、前記デバッグインタフェース(8)へのアクセスを阻止できるように構成されている、
請求項2に記載の装置。
【請求項4】
前記スイッチ素子(3)を制御するように構成されたコンフィギュレーションスイッチ素子(11)が設けられている、
請求項1から3のいずれか1項に記載の装置。
【請求項5】
前記コンフィギュレーションスイッチ素子(11)は、前記コンフィギュレーション監視インタフェース(9)と接続されていて、コンフィギュレーションプロセスがシグナリングされると、前記スイッチ素子(3)を制御して前記デバッグインタフェース(8)へのアクセスを阻止するように構成されている、
請求項4に記載の装置。
【請求項6】
前記スイッチ素子(3)は、前記コンフィギュレーションスイッチ素子(11)を介して前記デバッグインタフェース(8)と接続されていて、コンフィギュレーションプロセスが生じたときに、前記デバッグインタフェース(8)へのアクセスを選択的に可能または不可能にする、
請求項4または5に記載の装置。
【請求項7】
前記コンフィギュレーションスイッチ素子(11)は、前記デバッグインタフェース(8)に伝送される制御信号(13)の中から、コンフィギュレーションプロセスを生じさせるビットシーケンスを識別するように構成されている、
請求項6に記載の装置。
【請求項8】
前記コンフィギュレーションスイッチ素子(11)を介してアクセスが可能であるのか不可能であるのかを定めた情報が、記憶装置(12)内に格納されている、
請求項4から7のいずれか1項に記載の装置。
【請求項9】
前記コンフィギュレーションスイッチ素子(11)は、CPLD、FPGA、プロセッサ、または、これらのタイプのプログラミング可能なハードウェアデバイスのうち2つ以上の組み合わせ、として構成されている、
請求項4から8のいずれか1項に記載の装置。
【請求項10】
前記コンフィギュレーション監視インタフェース(9)は、前記データインタフェース(7)の一部として構成されており、前記プログラミング可能なハードウェアデバイス(1)は、前記データインタフェース(7)の前記一部にコンフィギュレーションプロセスをシグナリングするロジック(4)を備えている、
請求項2に記載の装置。
【請求項11】
前記コンフィギュレーション監視インタフェース(9)は、独立した専用のコンフィギュレーション監視インタフェースとして構成されている、
請求項2に記載の装置。
【請求項12】
前記デバッグインタフェース(8)は、JTAGインタフェースとして構成されており、有利にはIEEE標準1149.1に準拠したJTAGインタフェースとして構成されている、
請求項1から11のいずれか1項に記載の装置。
【請求項13】
前記コンフィギュレーションスイッチ素子(11)は遅延素子を備えており、前記遅延素子は、前記第1のプログラミング可能なハードウェアデバイス(1)に伝送される信号を遅延させるように構成されている、
請求項7に記載の装置。
【請求項14】
第2のプログラミング可能なハードウェアデバイス(2)が設けられており、前記ロジック(4)と通信するために、前記データインタフェース(7)が前記第2のプログラミング可能なハードウェアデバイス(2)と接続されており、前記第2のプログラミング可能なハードウェアデバイス(2)は、前記第1のプログラミング可能なハードウェアデバイス(1)をコンフィギュレーションするように構成されている、
請求項1から13のいずれか1項に記載の装置。
【請求項15】
前記第1のプログラミング可能なハードウェアデバイス(1)は、FPGAとして構成されており、前記第2のプログラミング可能なハードウェアデバイス(2)は、プロセッサまたはFPGAとして構成されている、
請求項14に記載の装置。
【請求項16】
前記コンフィギュレーションインタフェース(5)および前記デバッグインタフェース(8)は、前記第1のプログラミング可能なハードウェアデバイス(1)の外部に実装された回路によって形成されており、該回路によって前記コンフィギュレーションインタフェース(5)および前記デバッグインタフェース(8)は、前記第1のプログラミング可能なハードウェアデバイス(1)の単一のインタフェースと接続されている、または接続可能である、
請求項1から15のいずれか1項に記載の装置。
【発明の詳細な説明】
【技術分野】
【0001】
本発明は、プログラミング可能なハードウェアデバイスたとえばPLDまたはプロセッサのコンフィギュレーションもしくはプログラミングを阻止する装置に関する。
【背景技術】
【0002】
プログラミング可能なロジックデバイスであるPLD Programmable Logic Deviceは、ロジック回路をプログラミング可能もしくはコンフィギュレーション可能なディジタル技術の集積回路である。このためPLDはコンフィギュレーションインタフェースを備えており、このインタフェースを利用して、PLD内のロジック回路のコンフィギュレーションを実行可能であり、具体的には、PLD内の個々の汎用ブロックの基本的な機能および各ブロック相互間の結線のために、ロジック回路によってマッピングされる構造ルールが設定される。PLDとしてたとえば、FPGA Field Programmable Gate ArrayおよびCPLD Complex Programmable Logic Devicesなどが挙げられる。
【0003】
プロセッサは、ロジック回路がほとんど固定配線された状態で設けられているディジタル技術の集積回路であり、この場合、ソフトウェアの実行によりロジック機能をプログラミング可能またはコンフィギュレーション可能である。このためプロセッサは、ソフトウェアを実行させるための、もしくは実行されるソフトウェアを操作するための、コンフィギュレーションインタフェースを備えている。
【0004】
以下では、プログラミング可能なハードウェアデバイスとは、プロセッサ、PLD、またはこれら双方が組み合わせられたものであるとする。さらに以下では、ロジックとは、プロセッサ内のソフトウェア、またはPLD内のロジック回路のことであるとする。
【0005】
多くの場合、プログラミング可能なハードウェアデバイスは、ハードウェアデバイスをコンフィギュレーションするためのコンフィギュレーションインタフェースのほか、さらにデバッグインタフェースも備えており、このインタフェースは、まずはプログラミング可能なハードウェアデバイス内でプログラミングされたロジックのデバッグに利用可能であるが、このインタフェースを介してロジックをコンフィギュレーションすることもできる。
【0006】
メーカ側では、もっぱらデバッグインタフェースのみを介してロジックをコンフィギュレーションすることを想定している理由により、いくつかのモデルでは独立したコンフィギュレーションインタフェースを備えていないものもある。このようなケースでは、ハードウェアデバイスの外部に実装された回路を利用することによって、独立したコンフィギュレーションインタフェースと、独立したデバッグインタフェースを用意することができる。たとえばデバッグインタフェースを、このインタフェースを選択的に第1の外部インタフェースまたは第2の外部インタフェースと接続するように構成された切替装置と接続することができる。この場合、第1の外部インタフェースは、プログラミング可能なハードウェアデバイスをプログラミングするために設けられており、第2の外部インタフェースは、プログラミング可能なハードウェアデバイスにプログラミングされたロジックのデバッグに利用される。さらにこの場合、上述の切替装置は、ハードウェアデバイスのプログラミング処理中はデバッグインタフェースが第1の外部インタフェースと接続され、ハードウェアデバイスのプログラミング処理が行われていないときには、デバッグインタフェースが第2の外部インタフェースと接続されるように構成されている。コンフィギュレーションインタフェースとデバッグインタフェースが、元々プログラミング可能なハードウェアデバイスによって、それぞれ独立したインタフェースとして専用に利用できるのか、または、ハードウェアデバイス外部に配置された回路を利用することでそれが実現されているのかは、本発明にとって重要ではない。
【0007】
プログラミング可能なハードウェアデバイスがユーザによりコンフィギュレーションされるのを阻止したいならば、さしあたりコンフィギュレーションインタフェースへのユーザのアクセスをブロックすればよい。ただし、プログラミング可能なハードウェアデバイスにおけるロジックのデバッグを、ユーザが行えるようにしたいならば、デバッグインタフェースをイネーブル状態にする必要がある。しかしながら、従来技術において知られている構成でこのようにすると、ユーザはプログラミング可能なハードウェアデバイスをデバッグできるだけでなく、このデバイスのコンフィギュレーションもしくはプログラミングも可能になってしまう、ということを意味する。
【0008】
ただし特定のケースにおいては、プログラミング可能なハードウェアデバイスをデバッグインタフェースを介してプログラミングするのは望ましいことではなく、たとえばそれは、第1のプログラミング可能なハードウェアデバイスたとえばFPGAが、第2のプログラミング可能なハードウェアデバイスたとえばプロセッサと接続されているような場合である。従来技術においてはこのような構成は、たとえば複雑な物理的な系および電子的な系をリアルタイムシミュレーションするためのコンピュータシステムによって知られている。このような構成によればシステムはプロセッサに対し、特定の計算プロセスたとえば特に時間的にクリティカルな計算プロセスを、FPGAに転送させるようにすることができる。
【0009】
このような構成において有用であるのは、FPGAのコンフィギュレーションをもっぱらプロセッサのみによって実行することである。この種のコンピュータシステムのメーカは通常、プロセッサと接続されたFPGAを含め、コンピュータシステム全体をコンフィギュレーションもしくはプログラミングするためのツールも提供している。コンピュータシステムのプログラミング中、プロセッサはコンフィギュレーションインタフェースを介して、接続されたFPGAをコンフィギュレーションすることになり、つまりロジックを用いて記述することになる。このロジックには、ユーザが自由にコンフィギュレーション可能な部分のほか、ユーザはコンフィギュレーションできない、または制限されたコンフィギュレーションしかできない、必須のインタフェースロジックも含まれている可能性があり、このようなロジックは動作実行中、接続されたプロセッサとのデータ交換を制御する。このようにすることでコンピュータシステムのメーカは、プロセッサとFPGAとの間において規定の通信動作を設定することができ、誤ったプログラミングを保護するセーフティメカニズムを設定することができる。このようなセーフティメカニズムがなければ、誤ったプログラミングによって、コンピュータシステムの誤動作が引き起こされる可能性があるし、最悪のケースでは、FPGAまたは組み込まれた他のハードウェアが損傷してしまうおそれすらある。
【0010】
デバッグインタフェースを介してFPGAのプログラミングが可能であると、このようなセーフティメカニズムを迂回することができてしまう。デバッグインタフェースを介したプログラミングによるアクセスによって、FPGA上に存在するすべてのロジックの上書きまたはFPGAのロジック回路の少なくとも1つの特別な部分の上書きが発生し、このようにすることで、本来必須であるインタフェースロジックが上書きされてしまう可能性もある。この理由から、従来技術ではコンピュータシステムにおいては、既述のようにユーザはたいていの場合、デバッグインタフェースにアクセスできない。しかしながらこのようにしてしまうと、たとえばFGPAロジックのデバッグの目的で変数を監視するなど、FPGAのプログラミングとは別の目的で、ユーザがデバッグインタフェースを利用することもできなくなる。
【発明の概要】
【発明が解決しようとする課題】
【0011】
このような状況に鑑み、本発明の課題は、プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止するための、以下のような装置を提供することにある。すなわち本発明が提供する装置によって、ハードウェアデバイスの不適切なまたは許可されないプログラミングに起因して、ハードウェアデバイスまたはハードウェアデバイスと接続されたハードウェアが損傷してしまうのを回避できるようにするとともに、それにもかかわらず必要に応じて、プログラミングもしくはコンフィギュレーションとは別の目的で、デバッグインタフェースを介してハードウェアデバイスにアクセスできるようにすることである。
【課題を解決するための手段】
【0012】
本発明によればこの課題は、独立請求項に記載の特徴によって解決される。従属請求項には、本発明の有利な実施形態が記載されている。
【0013】
つまり上述の課題は、以下のように構成された装置によって解決される。すなわち、第1のプログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する装置であって、この装置には、プログラミング可能なハードウェアデバイスとスイッチ素子とが設けられている。この場合、プログラミング可能なハードウェアデバイスは、プログラミング可能なハードウェアデバイスのロジックをプログラミングするように構成されたコンフィギュレーションインタフェースと、プログラミング可能なハードウェアデバイスのハードウェア周辺装置とデータ交換するように構成されたデータインタフェースと、ロジックをデバッグおよびコンフィギュレーションするように構成されたデバッグインタフェースとを備えている。さらにこの場合、スイッチ素子は、ロジック回路のコンフィギュレーションプロセスが生じたときに、デバッグインタフェースへのアクセスを阻止できるように、デバッグインタフェースと接続され構成されている。さらに1つの別の有利な実施形態によれば、プログラミング可能なハードウェアデバイスは、ロジック回路のコンフィギュレーションプロセスをシグナリングするように構成されたコンフィギュレーション監視インタフェースを備えている。
【0014】
1つの有利な実施形態によれば、本発明による装置は、第2のプログラミング可能なハードウェアデバイスを備えており、この場合、第1のプログラミング可能なハードウェアデバイスが第2のプログラミング可能なハードウェアデバイスと通信するように、データインタフェースが構成されている。本発明による装置の1つの格別有利な実施形態によれば、第1のプログラミング可能なハードウェアデバイスはFPGAであり、第2のプログラミング可能なハードウェアデバイスはFPGAまたはプロセッサである。
【0015】
したがって本発明の重要な点は、コンフィギュレーションプロセスが生じたときにデバッグインタフェースへのアクセスを阻止可能なスイッチ素子が設けられていることであり、ここで有利であるのは、コンフィギュレーションプロセスが生じたときに、デバッグインタフェースへのアクセスが阻止されるように、スイッチ素子を構成することである。つまりこの場合、コンフィギュレーションインタフェースを利用して、プログラミング可能なハードウェアデバイスのロジックをコンフィギュレーションすることができる一方、デバッグインタフェースを利用して、ロジックのデバッグも実施できるけれども、コンフィギュレーションプロセスが生じたときには、デバッグインタフェースへのアクセスを阻止することができる。
【0016】
この目的で有利であるのは、プログラミング可能なハードウェアデバイスを以下のように構成することである。すなわち、コンフィギュレーションインタフェースを介してコンフィギュレーションもしくはプログラミングが行われたときも、デバッグインタフェースを介してプログラミングもしくはコンフィギュレーションが行われたときも、コンフィギュレーションプロセスがシグナリングされるように構成するのである。別の選択肢として、コンフィギュレーションプロセスを、つまりロジックのプログラミングもしくはコンフィギュレーションを、デバッグインタフェースに伝送される制御信号に基づき識別することができ、たとえば制御信号からコンフィギュレーション命令を抽出することによって識別することができる。この目的でたとえば、適切に構成された監視ユニットを設けることができ、この監視ユニットは、コンフィギュレーション命令について制御信号をチェックする。以下では、これら2つのバリエーションすなわちコンフィギュレーション監視ユニットが設けられている構成も設けられていない構成も、同等のものとして説明する。
【0017】
コンフィギュレーションプロセスのシグナリングは、有利には論理状態0または1の出力によって行われ、あるいは立ち上がり縁または立ち下がり縁によって行われる。たとえば、プログラミング可能なハードウェアデバイスが、コンフィギュレーションインタフェースまたはデバッグインタフェースを介してプログラミングされると、つまりコンフィギュレーションプロセスが生じると、コンフィギュレーション監視インタフェースにおいて論理値0が出力され、ハードウェアデバイスのコンフィギュレーションが完了すると、論理値1が出力される。このようなケースであるならば、スイッチ素子を以下のように構成するのが有利である。すなわち、コンフィギュレーション監視インタフェースにおいて信号が論理値0であるならば、または、デバッグインタフェースに対する制御信号においてプログラミング可能なハードウェアデバイスのコンフィギュレーションプロセスが識別されると、デバッグインタフェースへのアクセスがスイッチ素子により阻止可能であるように構成され、有利には阻止されるように構成されるのである。
【0018】
有利には、プログラミング可能なハードウェアデバイスは、第1のプログラミング可能なハードウェアデバイスであり、データインタフェースは、第2のプログラミング可能なハードウェアデバイスと通信するように構成されている。格別有利には、第1のプログラミング可能なハードウェアデバイスはFPGAであり、第2のプログラミング可能なハードウェアデバイスはプロセッサである。FPGAは基本的に、従来技術により公知のフィールド・プログラマブル・ゲート・アレイとして構成することができ、つまりロジック回路をプログラミング可能もしくはコンフィギュレーション可能なディジタル技術の集積回路として構成することができる。FPGAもしくはFPGAのロジック回路は、データインタフェースを介してプロセッサと通信する。プロセッサを、従来技術により公知の任意のプロセッサとすることができる。FPGAは有利には、FPGAのコンフィギュレーションが、一方ではコンフィギュレーションインタフェースを介して、他方ではデバッグインタフェースを介して、実施可能であるように構成されている。ただし、FPGAをコンフィギュレーションするためのコンフィギュレーションユニットが、コンフィギュレーションインタフェースを介してFPGAと接続されるようにするのが好ましい。
【0019】
本発明によれば、プログラミング可能なハードウェアデバイスの許可されない誤ったプログラミングに起因する、プログラミング可能なハードウェアデバイスの誤動作、ならびにプログラミング可能なハードウェアデバイスおよびプログラミング可能なハードウェアデバイスと接続されたハードウェアたとえばプロセッサの意図しない破壊は、プログラミング可能なハードウェアデバイスのロジック回路へのコンフィギュレーションアクセスが、コンフィギュレーションインタフェースを介してのみ可能であって、デバッグインタフェースを介しては不可能であり、または特別な状況においてしか可能でないようにすることにより回避される。ただしこれと並行して、デバッグインタフェースをさらに別の用途にも利用可能であり、特に、プログラミング可能なハードウェアデバイスのロジックのデバッグにも利用することができる。換言すれば、スイッチ素子によりコントロール手段が提供され、これによって、プログラミング可能なハードウェアデバイスのコンフィギュレーションに関して、デバッグインタフェースを介したデータ伝送を制御可能であり、このコントロール手段により、プログラミング可能なハードウェアデバイスに対し不正にプログラミングが行われた場合、デバッグインタフェースへのアクセスを阻止することができ、または事前に設定されたパラメータに基づき、たとえばユーザ固有に許可することができる。
【0020】
さらに別の有利な実施形態によれば、スイッチ素子は、コンフィギュレーション監視インタフェースと以下のように接続され構成されている。すなわち、コンフィギュレーション監視インタフェースを介してコンフィギュレーションプロセスがシグナリングされたときに、デバッグインタフェースへのアクセスを阻止可能であり、有利にはこのアクセスが阻止されるように、接続され構成されている。この実施形態によれば、コンフィギュレーション監視インタフェースを介してコンフィギュレーションプロセスがシグナリングされた場合に、デバッグインタフェースへのアクセスを阻止可能であり、もしくはこのアクセスが阻止される。コンフィギュレーションプロセスを、たとえばコンフィギュレーション監視インタフェースから送出される信号の立ち上がり縁または立ち下がり縁によってシグナリングしてもよいし、あるいは論理値0から論理値1への信号変化またはこれとは逆の変化によってシグナリングしてもよい。好ましいのは、コンフィギュレーションインタフェース自体が、FPGAのロジック回路のコンフィギュレーションの変化が識別されるように構成されていることである。
【0021】
さらに別の有利な実施形態によれば、スイッチ素子は以下のように構成されている。すなわち、プログラミング可能なハードウェアデバイスのロジックにおいてコンフィギュレーションプロセスが生じたとき、またはコンフィギュレーションプロセスが識別されたとき、装置がスイッチオフされ、有利には電流および/または電圧のない状態に移行されるように構成されている。コンフィギュレーションプロセスのシグナリングは、有利にはプログラミング可能なハードウェアデバイスにより生成される信号によって行われ、この信号は、プログラミング可能なハードウェアデバイスのコンフィギュレーションまたはプログラミングの期間中または開始直後に変化し、したがってこの信号により、コンフィギュレーションプロセスの開始、進行中、および/または終了が表される。
【0022】
さらに好ましいのは、コンフィギュレーションプロセスのシグナリングが、もしくはプログラミング可能なハードウェアデバイスをコンフィギュレーションするためのプロセスの開始、実施中、および/または終了を表す相応の信号が、プログラミング可能なハードウェアデバイスのうちコンフィギュレーションできない部分によって供給されることである。つまりこのような構成であれば、プログラミング可能なハードウェアデバイスのロジック回路は、コンフィギュレーションプロセスのシグナリングが送出不可能になるようにコンフィギュレーションすることはできず、したがってコンフィギュレーションプロセスのシグナリングは、コンフィギュレーション監視インタフェースを介して必ず供給されるのである。これに対する代案として、コンフィギュレーションプロセスのシグナリングを、ロジック回路によって行うこともできるし、または外部の回路たとえばプルアップ抵抗またはプルダウン抵抗によって発生させることもできる。
【0023】
さらに別の有利な実施形態によれば、本発明による装置はコンフィギュレーションスイッチ素子を備えており、これはスイッチ素子を制御するように構成されている。このように構成すれば、たとえコンフィギュレーションプロセスがシグナリングされたとしても、コンフィギュレーションスイッチ素子によって、デバッグインタフェースを介したロジック回路のコンフィギュレーションを許可することができ、これはコンフィギュレーションスイッチ素子によるスイッチ素子の相応の制御によって可能となる。つまりこの場合、たとえば予め定められているユーザの介入操作により、本発明による装置を利用することで、デバッグインタフェースを介してFPGAのロジック回路をデバッグ可能であるだけでなく、デバッグインタフェースを介したロジック回路のコンフィギュレーションも可能であり、したがってコンフィギュレーションインタフェースに加えて、デバッグインタフェースを介してもプログラミングが可能である。
【0024】
さらに格別有利には、コンフィギュレーションスイッチ素子が、コンフィギュレーション監視インタフェースと接続されていて、コンフィギュレーションプロセスがシグナリングされると、スイッチ素子を制御してデバッグインタフェースへのアクセスを阻止するように構成されている。つまりコンフィギュレーション監視インタフェースを介してコンフィギュレーションプロセスが識別された場合、デバッグインタフェースへのアクセスを阻止するためのスイッチ素子をダイレクトに制御するのではなく、このスイッチ素子の制御をコンフィギュレーション監視インタフェースを介して行うのである。
【0025】
さらに格別好ましくは、スイッチ素子が、コンフィギュレーションスイッチ素子を介してデバッグインタフェースと接続されていて、コンフィギュレーションプロセスが生じたときに、デバッグインタフェースへのアクセスを選択的に可能または不可能にする。このように構成すれば、たとえコンフィギュレーションプロセスが発生し、その際にデバッグインタフェースへのアクセスをスイッチ素子により阻止可能であるにしても、コンフィギュレーションスイッチ素子によって、デバッグインタフェースへのアクセスを可能にすることができる。
【0026】
さらに好ましいのは、デバッグインタフェースとスイッチ素子との間にコンフィギュレーションスイッチ素子を配置し、このコンフィギュレーションスイッチ素子によって、スイッチ素子とデバッグインタフェースとの接続の許可または阻止を行えるようにすることである。さらにこの場合、コンフィギュレーションスイッチ素子によりデバッグインタフェースへ、所定の信号レベルたとえば論理値0または1を供給することもできる。さらに好ましくは、コンフィギュレーションスイッチ素子は、デバッグインタフェースへのアクセスを予め定められたパラメータに従って制御可能なロジックを備えている。さらに有利にはこのロジックは、プログラミング可能なハードウェアデバイスと、および/または第2のプログラミング可能なハードウェアデバイスと、および/またはプログラミング可能なハードウェアデバイスのための外部のコンフィギュレーションユニットと、通信コネクション可能な状態におかれている。
【0027】
本発明の1つの有利な実施形態によれば、コンフィギュレーションスイッチ素子は、デバッグインタフェースに伝送される制御信号の中からコンフィギュレーションプロセスを抽出するように構成されている。換言すれば、好ましくはコンフィギュレーションスイッチ素子は、デバッグインタフェースに伝送される制御信号を、プログラミング可能なハードウェアデバイスのコンフィギュレーションを実施させることのできるビットシーケンスについて分析するように構成されている。つまりコンフィギュレーションスイッチ素子はデバッグインタフェースを、デバッグインタフェースに送信される制御信号について監視し、プログラミング可能なハードウェアデバイスのコンフィギュレーションプロセスが制御信号によって発生するか否かについて、それらの制御信号を評価する。
【0028】
プログラミング可能なハードウェアデバイスのプログラムを書き換えようとする試みが識別されると、たとえばプログラミング可能なハードウェアデバイスのロジックが消去される前に、もしくはプログラムが書き換えられる前に、コンフィギュレーションプロセスを識別し、デバッグインタフェースへのアクセスを阻止することができる。スイッチ素子によるデバッグインタフェースのアクセスの阻止は、規定可能な期間にわたり実施できるが、あるいはさらに次のイベントが発生するまで、つまり装置のスイッチオフ/スイッチオンが発生するまで、実施することもできる。このようにすることで、プログラミング可能なハードウェアデバイスのコンフィギュレーションをデバッグインタフェースを介して変更しようとして、相次いで行われる複数の不正なアクセスを、阻止することができる。
【0029】
1つの有利な実施形態によれば、コンフィギュレーションスイッチ素子は、コンフィギュレーションプロセスが生じたときに、装置および/またはプログラミング可能なハードウェアデバイスのスイッチオフ/スイッチオン、および/またはスイッチオン状態へのリセットを行うことができるように構成されている。また、不正にプログラミングが書き換えられたとき、つまり望ましくないコンフィギュレーションプロセスが識別されたとき、プログラミング可能なハードウェアデバイスがコンフィギュレーションインタフェースを介して、初期状態または事前に記憶された状態に対応するロジック回路のコンフィギュレーションを再び取得するようにしてもよい。つまりユーザが、デバッグインタフェースを介した不正なアクセスによって、プログラミング可能なハードウェアデバイスのこれまでのコンフィギュレーションを消去してしまったならばただちに、プログラミング可能なハードウェアデバイスをこれまでのコンフィギュレーションによって自動的にプログラミングしなおすことができる。
【0030】
本発明による装置は、コンフィギュレーションインタフェースと接続されたコンフィギュレーションユニットを備えることができる。さらにこの装置を、以下のように構成することもできる。すなわち、プログラミング可能なハードウェアデバイスのリコンフィギュレーションのために、デバッグインタフェースを介した不正なアクセスが識別されたが、デバッグインタフェースへのアクセスは阻止されないように構成してもよい。このようにしてプログラミングが書き換えられたハードウェアデバイスが新たに起動された後、ハードウェアデバイスが規定どおりに動作しているか否かをチェックすることができ、たとえば、プログラミング可能なハードウェアデバイスのインタフェースに、事前に規定された信号が加わっているか否かをチェックすることができる。規定どおりに動作しているのであれば、プログラミングの書き換えを許容することができる。そうでなければ、プログラミング可能なハードウェアデバイスのコンフィギュレーションを消去し、事前に記憶されていたコンフィギュレーションを、コンフィギュレーションインタフェースを介して書き込むことができる。
【0031】
このように構成することの利点は、不適切な不正のコンフィギュレーションを実行させることはできても、本発明による装置によれば、リコンフィギュレーションが問題になるのか、または状況次第では問題にはならないのかを、本発明による装置によって即座に自動的にチェックすることができるので、通常は損傷には至らない、という点にある。リコンフィギュレーションが問題になる場合にはたとえば、プログラミング可能なハードウェアデバイスと、このような場合に損傷を受けるおそれのある他のデバイスとの結線を、損傷が回避される状態に移行させることができる。さらに、許可されていないコンフィギュレーションプロセスが識別された場合に、ユーザまたはメーカに通報して、次のステップについて判断を下せるようにすることもできる。
【0032】
さらに別の有利な実施形態によれば、コンフィギュレーションスイッチ素子が記憶装置を備えており、この記憶装置内には、コンフィギュレーションスイッチ素子を介したアクセスが可能であるのか不可能であるのかを定めた情報が格納されている。この情報は、有利にはライセンスまたはライセンスキーとして構成されており、これによって、プログラミング可能なハードウェアデバイスのコンフィギュレーション変更に対し、ユーザがデバッグインタフェースへのアクセス権を有するか否かが定められる。この場合、既述のように、プログラミング可能なハードウェアデバイスのコンフィギュレーション変更を、デバッグインタフェースにより実行可能であるか否かを、コンフィギュレーションスイッチ素子によって制御することができる。たとえば記憶装置を、ライセンスを格納可能な不揮発性メモリとすることができる。さらにここで考えられるのは、ユーザがライセンスをインターネットからダウンロードして、記憶装置に格納できるようにすることである。
【0033】
きわめて格別に好ましい実施形態によれば、コンフィギュレーションスイッチ素子は、CPLDとして、FPGAとして、プロセッサとして、またはここに挙げたプログラミング可能なハードウェアデバイスの組み合わせとして、構成されている。さらにコンフィギュレーションスイッチ素子を、機械的なジャンパまたは切替装置として、あるいはプルアップ抵抗および/またはプルダウン抵抗といった他の部品として、構成することもできる。
【0034】
1つの有利な実施形態によれば、コンフィギュレーション監視インタフェースは、データインタフェースの一部分として構成されており、プログラミング可能なハードウェアデバイスは、データインタフェースのこの一部分にコンフィギュレーションプロセスをシグナリングするロジックを備えている。たとえば従来技術により知られているFPGAは、別個に実装されたコンフィギュレーション監視インタフェースを必ずしも備えているわけではない。そのようなケースでは、たとえばデータインタフェースの1つのピンを、コンフィギュレーション監視インタフェースの機能のために利用することができる。通常、従来技術により知られているFPAGの場合、プログラミングプロセス中、データインタフェースは、特にデータインタフェースの出力端子は、規定の値をとるようになっており、たとえば論理値1、論理値0、weak-highインピーダンス、weak-lowインピーダンス、またはhighインピーダンスをとるようになっている。ここで挙げた構成によれば、コンフィギュレーションプロセスを識別し、それに応じてコンフィギュレーション監視インタフェースを介してシグナリングを行う目的で、この信号を利用することができる。ここで考えられる1つの実施形態によれば、プログラミング可能なハードウェアデバイスはそのデータインタフェースの出力を、プログラミングプロセス中、weak-high状態に移行させ、この状態に基づき1つの出力端子において、このweak-high状態から論理値1の信号が識別され、コンフィギュレーションプロセスを検出するためにこの信号を利用する。
【0035】
さらに別の有利な実施形態によれば、コンフィギュレーション監視インタフェースは、データインタフェースの一部分として構成されており、プログラミング可能なハードウェアデバイスは、データインタフェースのこの一部分にコンフィギュレーションプロセスの完了をシグナリングするロジックを備えている。ここで考えられる1つの実施形態によれば、このロジックは、予め定められた複数のデータ出力端子から、論理値1および論理値0のタイプから成る信号の所定の組み合わせを出力し、信号のこの組み合わせの出力が、コンフィギュレーションプロセスの完了を識別するために利用される。このようにすることで本発明による装置を、従来技術により知られているプログラミング可能な任意のハードウェアデバイスに実装することもでき、その際、プログラミング可能なハードウェアデバイスに独立した専用のコンフィギュレーション監視インタフェースを設ける必要がない。
【0036】
基本的に、スイッチ素子を任意に構成することができ、特に好ましいのは、スイッチ素子を切替可能なバスドライバとして構成することである。その際にさらに好ましいのは、コンフィギュレーションプロセスのシグナリングを、独立した専用のコンフィギュレーション監視インタフェースを介して出力されるコンフィギュレーション信号によって実現することであり、たとえばAltera Corporation社のFPGAにおけるCONF_DONE信号とINIT_DONE信号とによって実現することである。さらに別の有利な実施形態によれば、デバッグインタフェースは、JTAGインタフェースとして構成されており、有利にはIEEE標準1149.1に準拠したJTAGインタフェースとして構成されている。さらに好ましいのは、データインタフェースをデータバスとして構成することである。
【0037】
この実施形態によれば、過電圧、極性反転など損傷を及ぼす外部の影響からJTAGインタフェースを保護する目的で、バスドライバを介してJTAGインタフェースを接続することができる。好ましくは、バスドライバはOutputEnable入力端子を備えており、この入力端子を介してバスドライバの出力ドライバを、非アクティブ状態にすることができる。本発明の1つの有利な実施形態によれば、ハードウェアデバイスのコンフィギュレーション信号が、バスドライバのOutputEnable入力端子に供給され、それによって、プログラミング可能なハードウェアデバイスのコンフィギュレーションが完了したときにはじめて、ユーザはJTAGインタフェースにアクセスすることができる。この状態においてユーザは、プログラミング可能なハードウェアデバイスを、JTAGインタフェースを介してデバッグすることができる。
【0038】
プログラミング可能なハードウェアデバイスをコンフィギュレーションしようという試みがなされると、コンフィギュレーション信号がアクティブになり、その結果、バスドライバにより接続が分離され、プログラミング可能なハードウェアデバイスがリコンフィギュレーションされて、場合によっては損傷を引き起こすようなコンフィギュレーションになってしまうことが阻止されるようになる。本発明による装置のサプライヤが、そのコンフィギュレーションを作成するための開発フェーズ中、JTAGインタフェースに制約なくアクセスできるようにする目的で、たとえばジャンパまたは0Ω抵抗あるいはコンフィギュレーションスイッチ素子を介して、接続を確立することができる。既述のように、JTAGインタフェースへのアクセスを、CPLD、FPGA、プロセッサ、またはここで挙げたタイプのプログラミング可能なハードウェアデバイスの2つの組み合わせを介してコントロールすることができ、つまりたとえばJTAGインタフェースのOutputEnable信号を制御するために、コントロールすることができる。
【0039】
既に述べた別の構成を利用することで、JTAGインタフェースによってなされるプログラミング可能なハードウェアデバイスのデバッグを、ライセンスとして記憶された情報を用いることによって、対応するライセンスを取得した一部のユーザに対してのみ、ソフトウェア方式で許可することができる。さらにこのような許可を、いかなる保証を受ける権利も手放す代わりに、JTAGインタフェースへの無制限のアクセスを取得したユーザに対してのみ、許可するようにしてもよい。
【0040】
さらに本発明の課題は、プログラミング可能なハードウェアデバイスのコンフィギュレーションを阻止する以下のような方法によって解決される。この場合、プログラミング可能なハードウェアデバイスは、そのロジックをコンフィギュレーションするために構成されたコンフィギュレーションインタフェースと、プログラミング可能なハードウェアデバイスがハードウェア周辺装置とデータ交換するために構成されたデータインタフェースと、ロジックをデバッグおよびコンフィギュレーションするために構成されたデバッグインタフェースと、ロジックのコンフィギュレーションプロセスをシグナリングするために構成されたコンフィギュレーション監視インタフェースとを備えており、この方法には、コンフィギュレーションプロセスがシグナリングされると、デバッグインタフェースへのアクセスを阻止するステップが設けられている。
【0041】
このように構成することによって、デバッグインタフェースへのユーザのアクセスを細かく制御することができる。本発明による方法のそのほかの実施形態については、これまで述べてきた装置の実施形態を類推すれば、当業者に明らかである。
【0042】
次に、図面を参照しながら有利な実施形態に基づき本発明について詳しく説明する。
【図面の簡単な説明】
【0043】
図1】本発明の第1の有利な実施形態による装置を示す概略図
図2】本発明の第2の有利な実施形態による装置を示す概略図
図3】本発明の第3の有利な実施形態による装置を示す概略図
【発明を実施するための形態】
【0044】
図1図3には、それぞれ異なる3つの有利な実施形態によるFPGA1のコンフィギュレーションを阻止する装置が示されている。
【0045】
図1に示されているように、この装置はFPGA1のほか、それぞれマイクロプロセッサ2およびスイッチ素子3を有している。FPGA1はロジック回路4を備えており、これはコンフィギュレーションインタフェース5を介してコンフィギュレーションユニット6をコンフィギュレーション可能もしくはプログラミング可能である。さらにロジック回路4は、この実施例ではデータバスとして構成されたデータインタフェース7を介して、マイクロプロセッサ2と通信コネクションを形成している。さらにFPGA1はデバッグインタフェース8を備えており、このインタフェースは、ロジック回路4のデバッグおよびコンフィギュレーションのため、IEEE標準1149.1に準拠するJTAGインタフェースとして構成されている。さらにFPGA1は、コンフィギュレーション監視インタフェース9も備えており、このインタフェースはこの実施例では、ロジック回路4のコンフィギュレーションプロセスをシグナリングするために、ConfigDoneインタフェースとして構成されている。この場合、ユーザは、JTAGコネクタ10を介して、FPGA1のデバッグインタフェース8にアクセスすることができる。
【0046】
FPGA1は、以下のように構成されている。すなわち、ロジック回路4のコンフィギュレーションにあたり、コンフィギュレーションインタフェース5を介してであれ、デバッグインタフェース8を介してであれ、FPGA1もしくはロジック回路4のコンフィギュレーションの変更開始が、コンフィギュレーション監視インタフェース9においてシグナリングされ、これはたとえば論理値1から0への信号レベルの変化によって行われる。
【0047】
図1にさらに示されているように、スイッチ素子3はバスドライバとして実装されており、デバッグインタフェース8と接続されていて、コンフィギュレーションプロセスが生じたときにデバッグインタフェース8へのアクセスを阻止できるように構成されている。具体的には、バスドライバ3はOutputEnable入力端子を備えており、この入力端子を介してバスドライバ3を、もしくはバスドライバ3の出力ドライバを、非アクティブ状態にすることができる。FPGA1によりコンフィギュレーション監視インタフェース9から送出されるConfigDone信号が、バスドライバ3のOutputEnable入力端子に供給される。
【0048】
ConfigDone信号によって、FPGA1のプログラミングもしくはロジック回路4のプログラミングについてシグナリングが行われると、バスドライバ3によりデバッグインタフェース8へのアクセスが阻止される。この場合、JTAGコネクタ10を介してJTAGインタフェース8へアクセスするのは、もはや不可能である。このようにすることによって、コンフィギュレーションインタフェース5を介してコンフィギュレーションユニット6により、FPGA1のコンフィギュレーションが可能である一方、通常動作中はJTAGコネクタ10を利用することで、JTAGインタフェース8を介してFPGA1のデバッグもしくはFPGA1のロジック回路のデバッグが可能となる。ただしJTAGコネクタ10を利用し、FPGA1のJTAGインタフェース8を介してプログラミングが行われると、コンフィギュレーション監視インタフェース9は、コンフィギュレーションプロセスをシグナリングする。コンフィギュレーション監視インタフェース9はスイッチ素子3と接続されているので、この場合にはJTAGインタフェース8へのアクセスが阻止される。
【0049】
図2には、本発明による装置の第2の実施形態が示されており、この装置にはコンフィギュレーションスイッチ素子11が設けられていて、この実施例ではこれは、スイッチ素子3を制御するためのCPLDとして構成されている。さらにコンフィギュレーションスイッチ素子11は、コンフィギュレーション監視インタフェース9とも接続されている。つまりこの場合、CPLD11を用いることで、コンフィギュレーションプロセスがシグナリングされると、CPLD11によりバスドライバ3を制御して、JTAGインタフェース8へのアクセスを阻止することができる。ただしその一方で、CPLD11を以下のようにプログラミングしておくことも可能である。すなわち、コンフィギュレーション監視インタフェース9を介してコンフィギュレーションプロセスがシグナリングされたにもかかわらず、CPLD11がバスドライバ3をそれ相応に制御して、デバッグインタフェース8へのアクセスを中止させないように、プログラミングしておくのである。さらにCPLD11を、以下のようにプログラミングしておくことも可能である。すなわち、コンフィギュレーション監視インタフェース9を介してコンフィギュレーションプロセスがシグナリングされたときに、別のデバイスたとえばCPU2から到来する信号に従って、デバッグインタフェース8へのアクセスを阻止する、または阻止しない、というようにプログラミングしておくのである。
【0050】
さらに、コンフィギュレーションスイッチ素子11に記憶装置12を設けておくことができ、この記憶装置12に格納されている情報つまりはライセンスに従って、デバッグインタフェース8へのアクセスがコンフィギュレーションスイッチ素子11により許可されるのか許可されないのかが決定される。たとえばユーザが適切なライセンスを取得しているならば、そのライセンスには以下を可能にする内容を含めることができる。すなわちユーザは、デバッグインタフェース8を介してロジック回路4のデバッグを実行できるだけでなく、コンフィギュレーション監視インタフェース9からコンフィギュレーションスイッチ素子11へ、適切なライセンスなしではデバッグインタフェース8へのアクセスが本来は阻止されなければならない信号が送信されたとしても、ロジック回路4のコンフィギュレーションも行えるようにする点を含めることができる。
【0051】
図3には、本発明による装置の第3の有利な実施形態が示されている。この装置によれば、スイッチ素子3はコンフィギュレーションスイッチ素子11を介してデバッグインタフェース8と接続されており、この場合、スイッチ素子3からデバッグインタフェース8へ伝送される制御信号13から、コンフィギュレーションプロセスを抽出できるように接続されている。つまりこの場合、コンフィギュレーションスイッチ素子11は、たとえば制御信号13中に含まれるビットシーケンスをチェックすることで、JTAGコネクタ10がデバッグインタフェース8を介してコンフィギュレーションプロセスを開始したか否か、を制御信号から識別することができる。つまりこの場合、コンフィギュレーションスイッチ素子11は、たとえば制御信号13中に含まれるビットシーケンスをチェックすることで、JTAGコネクタ10がデバッグインタフェース8を介してコンフィギュレーションプロセスを開始したか否か、を制御信号から識別することができる。コンフィギュレーションスイッチ素子11が対応するビットシーケンスを識別したならば、デバッグインタフェース8へのアクセスをコンフィギュレーションスイッチ素子11により中止させることができる。さらにこの場合、コンフィギュレーションスイッチ素子11が、FPGA1をコンフィギュレーションするためのビットシーケンスを、制御信号13から消去することも可能であり、またはFPGA1のコンフィギュレーションをそもそも発生させない他のビットシーケンスと置き換えることも可能である。さらに、本発明による装置のこの実施形態に関する1つの有利な構成によれば、コンフィギュレーションスイッチ素子11に遅延素子(図示せず)たとえばディレイユニットが設けられ、この素子によってFPGA1へのデータ伝送のタイミングが遅らされ、このようにすることで、FPGA1に伝送されるデータを評価し、FPGA1をコンフィギュレーションするビットシーケンスを消去または他のビットシーケンスに置き換えるのに十分な時間が、コンフィギュレーションスイッチ素子11に与えられる。
【符号の説明】
【0052】
1 第1のプログラミング可能なハードウェアデバイス
2 第2のプログラミング可能なハードウェアデバイス
3 スイッチ素子
4 ロジック回路
5 コンフィギュレーションインタフェース
6 コンフィギュレーションユニット
7 データインタフェース
8 デバッグインタフェース
9 コンフィギュレーション監視インタフェース
10 JTAGコネクタ
11 コンフィギュレーションスイッチ素子
12 記憶装置
13 デバッグインタフェース用の制御信号
図1
図2
図3