(57)【特許請求の範囲】
【請求項１】
第１のプログラミング可能なハードウェアデバイス（１）のデバッグインターフェース（８）を部分的にイネーブルするための装置であって、
前記装置は、前記第１のプログラミング可能なハードウェアデバイス（１）と、コンフィギュレーションユニット（６）と、コンフィギュレーションメモリ（１４）とを有し、
前記第１のプログラミング可能なハードウェアデバイス（１）は、前記第１のプログラミング可能なハードウェアデバイス（１）をプログラミングするように構成されたコンフィギュレーションインターフェース（５）と、データインターフェース（７）と、前記第１のプログラミング可能なハードウェアデバイス（１）をデバッグ及びプログラミングするように構成されたデバッグインターフェース（８）とを有し、
前記コンフィギュレーションメモリ（１４）には、第１のロジック（１３）が格納されており、前記コンフィギュレーションユニット（６）は、前記第１のプログラミング可能なハードウェアデバイス（１）を前記第１のロジック（１３）に基づいてプログラミングするように構成されている
装置において、
前記コンフィギュレーションユニット（６）は、前記デバッグインターフェース（８）を介して第２のロジックに基づいて実行されている、前記第１のプログラミング可能なハードウェアデバイス（１）のプログラミングプロセスを検出し、前記デバッグインターフェース（８）を介して実行されている前記プログラミングプロセスの終了後に、前記第１のプログラミング可能なハードウェアデバイス（１）を前記第１のロジック（１３）に基づいて再プログラミングするように構成されている
ことを特徴とする、装置。
【請求項２】
前記第１のプログラミング可能なハードウェアデバイス（１）の前記再プログラミングを、自動的に実行し、
前記第１のプログラミング可能なハードウェアデバイス（１）の使用は、前記デバッグインターフェース（８）を介して実行されている前記プログラミングプロセスを検出している間の全期間内において、前記第１のロジック（１３）に基づく前記再プログラミングが完了するまで遮断されている
ことを特徴とする、請求項１記載の装置。
【請求項３】
前記第１のプログラミング可能なハードウェアデバイス（１）は、当該第１のプログラミング可能なハードウェアデバイス（１）のプログラミングプロセスをシグナリングするように構成されたコンフィギュレーション監視インターフェース（９）を有し、
前記コンフィギュレーションユニット（６）は、前記コンフィギュレーション監視インターフェース（９）を監視するように構成されている
ことを特徴とする、請求項１又は２記載の装置。
【請求項４】
前記コンフィギュレーションユニット（６）は、前記デバッグインターフェース（８）を介して実行されている前記プログラミングプロセスを検出した後、前記デバッグインターフェース（８）を介して実行されている当該プログラミングプロセスを阻止する
ことを特徴とする、請求項３記載の装置。
【請求項５】
前記コンフィギュレーションユニット（６）は、前記デバッグインターフェース（８）を介して前記第２のロジックに基づいて実行された前記プログラミングプロセスの終了後に、前記第１のプログラミング可能なハードウェアデバイス（１）の再プログラミングを選択的に実行する又は実行しないように構成されている
ことを特徴とする、請求項１から４のいずれか一項記載の装置。
【請求項６】
前記第２のロジックに基づく前記プログラミングプロセスの終了後に、前記コンフィギュレーションユニット（６）が前記第１のプログラミング可能なハードウェアデバイス（１）を再プログラミングするか否かを規定している情報が、前記コンフィギュレーションユニット（６）のメモリに格納されている
ことを特徴とする、請求項５記載の装置。
【請求項７】
前記コンフィギュレーションユニット（６）は、ＣＰＬＤ、ＦＰＧＡ、プロセッサ、又は、これらのタイプのプログラミング可能なハードウェアデバイスのうち２つ又は３つの組み合わせとして構成されている
ことを特徴とする、請求項１から６のいずれか一項記載の装置。
【請求項８】
前記デバッグインターフェース（８）は、好ましくはＩＥＥＥ標準１１４９．１に準拠した、ＪＴＡＧインターフェースとして構成されている
ことを特徴とする、請求項１から７のいずれか一項記載の装置。
【請求項９】
前記装置は、第２のプログラミング可能なハードウェアデバイス（２）を有し、
前記データインターフェース（７）と前記第２のプログラミング可能なハードウェアデバイス（２）との間にデータ接続部（１８）が設けられており、
前記第１のプログラミング可能なハードウェアデバイス（１）及び前記第２のプログラミング可能なハードウェアデバイス（２）は、プログラムを並行して処理するため、かつ、前記プログラムの処理中に前記データ接続部を介してプログラムデータを交換するために構成されている
ことを特徴とする、請求項１から８のいずれか一項記載の装置。
【請求項１０】
前記第２のプログラミング可能なハードウェアデバイス（２）は、前記第１のプログラミング可能なハードウェアデバイス（１）をプログラミングするために構成されている
ことを特徴とする、請求項９記載の装置。
【請求項１１】
前記第１のプログラミング可能なハードウェアデバイス（１）は、ＦＰＧＡとして構成されており、前記第２のプログラミング可能なハードウェアデバイス（２）は、プロセッサ又はＦＰＧＡとして構成されている
ことを特徴とする、請求項７から１０のいずれか一項記載の装置。
【請求項１２】
前記第１のロジック（１３）は、少なくとも部分的にユーザによって構築され、前記コンフィギュレーションメモリに格納される
ことを特徴とする、請求項１から１１のいずれか一項記載の装置。
【請求項１３】
前記第１のロジック（１３）は、ユーザによって変更不可能なロジックであるか、又は、
前記第１のロジック（１３）は、ユーザによって自由にコンフィギュレーション可能な機能的なロジック（１１）と、前記機能的なロジック（１１）と前記データインターフェース（７）との間のデータ交換のための必須のインターフェースロジック（４）とから組み合わされている
ことを特徴とする、請求項１２記載の装置。
【請求項１４】
前記第１のプログラミング可能なハードウェアデバイス（１）は、ＰＬＤ、プロセッサ、又は、ＰＬＤとプロセッサとの組み合わせである
ことを特徴とする、請求項１から１３のいずれか一項記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、請求項１の上位概念に記載の、プログラミング可能なハードウェアデバイスのデバッグインターフェースを部分的にイネーブルするための装置に関する。
【背景技術】
【０００２】
プロセッサ、ＦＰＧＡ、及び、ＣＰＬＤのようなプログラミング可能なハードウェアデバイスは、ハードウェアデバイスをプログラミングするための専用のコンフィギュレーションインターフェースを有する以外にも、特にハードウェアデバイス上にプログラミングされたロジックをデバッグするために設けられたデバッグインターフェースを有することが多いが、コンフィギュレーションインターフェースに加えてこのデバッグインターフェースもまた、ハードウェアデバイスをプログラミングするために使用することが可能である。
【０００３】
いくつかの適用例では、デバッグインターフェースを介してハードウェアデバイスをプログラミングするという手段に問題があることがある。それは例えば、第１のプログラミング可能なハードウェアデバイスのコンフィギュレーションインターフェースに第２のプログラミング可能なハードウェアデバイスが接続されていて、ユーザが、この第２のプログラミング可能なハードウェアデバイスによって、第１のプログラミング可能なハードウェアデバイスをプログラミングすることが可能になっている場合である。この場合、第２のプログラミング可能なハードウェアは、第１のプログラミング可能なハードウェアをプログラミングするためにユーザに対して部分的にしか自由を許可しておらず、例えば、第２のプログラミング可能なハードウェアは、第１のプログラミング可能なハードウェア上において、ユーザによってプログラミングされるロジックに加えて、必須のインターフェースロジックもプログラミングする。この必須のインターフェースロジックは、第１のプログラミング可能なハードウェアデバイスのハードウェア周辺機器とのデータ交換のための論理的なメカニズムを提供し、ユーザがプログラミングエラーによって第１のプログラミング可能なハードウェアデバイス又はそのハードウェア周辺機器を損傷してしまうことを防止するものである。この場合において、第１のプログラミング可能なハードウェアデバイスのデバッグインターフェースを完全にイネーブルすれば、ユーザは、設けられたセーフティロジックなしに、第１のプログラミング可能なハードウェアデバイス上にロジックをプログラミングすることが可能となってしまう。
【０００４】
米国特許第７９７１０５１号明細書は、ＦＰＧＡのプログラミングにエラーがある場合又はＦＰＧＡのプログラミングが許可されない場合に、ＦＰＧＡによって出力された信号の監視に基づいて、ＦＰＧＡを自動的に再プログラミングするための装置を開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】米国特許第７９７１０５１号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００６】
このような背景技術を前提として、本発明の課題は、プログラミング可能なハードウェアデバイスのデバッグインターフェースを部分的にイネーブルするための技術的な装置を提供し、ハードウェアデバイスをプログラミングするためには、前記デバッグインターフェースをイネーブルせず、別の用途のため、特にハードウェアデバイス上にプログラミングされたロジックをデバッグするためには、前記デバッグインターフェースをイネーブルするようにすることである。
【課題を解決するための手段】
【０００７】
この課題は、請求項１に記載の特徴を有する装置によって解決される。本発明の有利な実施形態は、従属請求項の対象である。
【０００８】
従って、本発明の対象は、第１のプログラミング可能なハードウェアデバイスのデバッグインターフェースを部分的にイネーブルするための装置であって、特に、前記第１のプログラミング可能なハードウェアデバイスは、ＰＬＤ（Programmable Logic Device）、プロセッサ、又は、ＰＬＤとプロセッサとの組み合わせであり、前記装置は、前記第１のプログラミング可能なハードウェアデバイスと、コンフィギュレーションユニットと、コンフィギュレーションメモリとを有し、前記第１のプログラミング可能なハードウェアデバイスは、前記第１のプログラミング可能なハードウェアデバイスをプログラミングするように構成されたコンフィギュレーションインターフェースと、データインターフェースと、前記第１のプログラミング可能なハードウェアデバイスをデバッグ及びプログラミングするように構成されたデバッグインターフェースとを有する、装置である。ここで、前記コンフィギュレーションメモリには、第１のロジックが格納されており、前記コンフィギュレーションユニットは、前記第１のプログラミング可能なハードウェアデバイスを前記第１のロジックに基づいてプログラミングするように構成されている。すなわち、前記コンフィギュレーションユニットは、前記第１のプログラミング可能なハードウェアデバイスが前記第１のロジックを実行するように、又は、前記第１のロジックの設定に基づいてデータを論理的かつ算術的に処理するように、当該第１のプログラミング可能なハードウェアデバイスがプログラミングによって構成されるように、当該第１のプログラミング可能なハードウェアデバイスをプログラミングする。本発明によれば、前記コンフィギュレーションユニットはさらに、前記デバッグインターフェースを介して第２のロジックに基づいて実行されている、前記第１のプログラミング可能なハードウェアデバイスのプログラミングプロセスを検出し、前記デバッグインターフェースを介して実行されている前記プログラミングプロセスの終了後に、前記第１のプログラミング可能なハードウェアデバイスを前記第１のロジックに基づいて再プログラミングするように、すなわち、前記デバッグインターフェースを介して実行された前記プログラミングプロセスを、前記第１のロジックに基づく前記第１のプログラミング可能なハードウェアデバイスのプログラミングによって取り消すように構成されている。
【０００９】
本発明におけるＰＬＤというのは、プログラミング可能な論理回路、特にＦＰＧＡ（Field Programmable Gate Array）又はＣＰＬＤ（Complex Programmable Logic Device）であると理解されたい。
【００１０】
本発明におけるロジックというのは、データを論理的かつ算術的に処理するための抽象的な規則であると理解されたい。第１のプログラミング可能なハードウェアデバイス上にロジックがプログラミングされた後には、このロジックは、第１のプログラミング可能なハードウェアデバイス上において、処理命令のシーケンスの形態で、又は、例えばＦＰＧＡのようなプログラミング可能な論理回路のコンフィギュレーションの形態で存在する。コンフィギュレーションメモリには、第１のロジックが情報の形態で格納されている。この情報は、第１のプログラミング可能なハードウェアデバイスをコンフィギュレーションインターフェースを介して第１のロジックに基づいてプログラミングするためのビットストリームを、一義的に規定するものである。
【００１１】
デバッグインターフェースを介して実行されているプログラミングプロセスの終了というのは、本発明においては、第１のプログラミング可能なハードウェアデバイスが完全にプログラミングされた後のプログラミングプロセスの正しい完了と、正しい完了を阻止する、プログラミングプロセスの中断との両方を意味すると理解すべきである。
【００１２】
製造者側では、ロジックのコンフィギュレーションを専らデバッグインターフェースを介して行うことが想定されているので、プログラミング可能なハードウェアデバイスのいくつかのモデルでは、独立したコンフィギュレーションインターフェースを有さないものもある。この場合には、ハードウェアデバイスの外部に実装された回路によって、独立したコンフィギュレーションインターフェースと、独立したデバッグインターフェースとを提供することが可能である。例えば、デバッグインターフェースをスイッチに接続させることが可能であり、このスイッチは、デバッグインターフェースを第１の外部インターフェース又は第２の外部インターフェースに選択的に接続するように構成されている。この場合には、第１の外部インターフェースは、プログラミング可能なハードウェアデバイスをプログラミングするために設けられており、第２の外部インターフェースは、プログラミング可能なハードウェアデバイスにプログラミングされたロジックをデバッグするためにユーザに対して提供される。スイッチは、ハードウェアデバイスのプログラミングプロセス中には、デバッグインターフェースを第１の外部インターフェースに接続させ、ハードウェアデバイスのプログラミングプロセスが実行されていない場合には、デバッグインターフェースを第２の外部インターフェースに接続させるように構成されている。本発明にとっては、コンフィギュレーションインターフェース及びデバッグインターフェースが、プログラミング可能なハードウェアデバイスによって元々それぞれ独立したインターフェースとして提供されるのか、又は、ハードウェアデバイスの外部に配置された回路に基づいてこれが実施されるのかは重要ではない。
【００１３】
本発明の装置の利点は、ユーザが、第１のプログラミング可能なハードウェアデバイスのデバッグインターフェースを、プログラミングのため以外にも任意に利用できること、特に、第１のプログラミング可能なハードウェアデバイス上にプログラミングされたロジックのデバッグのために利用できることにあり、この場合に、デバッグインターフェースを介した許可されないプログラミングに起因した、第１のプログラミング可能なハードウェアデバイス又は第１のプログラミング可能なハードウェアデバイスの周辺機器の損傷が回避されていることにある。
【００１４】
好ましくは、第１のプログラミング可能なハードウェアデバイスの再プログラミングは自動的に実行され、本装置は、第１のプログラミング可能なハードウェアデバイスの使用が、デバッグインターフェースを介して実行されているプログラミングプロセスを検出している間の全期間内において、第１のロジックに基づく再プログラミングが完了するまで遮断されるように構成されている。従って、上記の期間内においては、データインターフェースを介したデータ交換は阻止されている。
【００１５】
有利な１つの実施形態においては、第１のプログラミング可能なハードウェアデバイスは、当該第１のプログラミング可能なハードウェアデバイスのプログラミングプロセスをシグナリングするように構成されたコンフィギュレーション監視インターフェースを有する。コンフィギュレーションユニットは、コンフィギュレーション監視インターフェースを監視するように構成されており、さらに、コンフィギュレーション監視インターフェースによって出力された信号に基づいて、デバッグインターフェースを介して実行されている第１のプログラミング可能なハードウェアデバイスのプログラミングプロセスを検出するように構成されている。
【００１６】
コンフィギュレーション監視インターフェースは、本発明によれば、第１のプログラミング可能なハードウェアデバイスのインターフェースであり、このインターフェースを介して、第１のプログラミング可能なハードウェアデバイスは、プログラミングが進行中であること又はプログラミングが完了したことをシグナリングする。すなわち、このインターフェースを介して、第１のプログラミング可能なハードウェアデバイスのプログラミングが現在実行されている最中であるか、又は、実行が完了した直後であるかを読み出すことが可能である。特に、多くのＦＰＧＡは、専用のコンフィギュレーション監視インターフェースを有する。例えばＦＰＧＡは、Ｘｉｌｉｎｘ社のＣＯＮＦ＿ＤＯＮＥ信号を供給する。ＣＯＮＦ＿ＤＯＮＥ信号は、ＦＰＧＡのプログラミングの進行中には論理値０に切り換えられており、プログラミングの完了後には論理値１に切り換えられる。しかしながら、ＦＰＧＡをプログラミングすることにより、当該ＦＰＧＡの、例えばデータインターフェースの１つ又は複数のピンを、コンフィギュレーション監視インターフェースとして構成することも可能である。例えばＦＰＧＡが、プログラミングプロセス中に当該ＦＰＧＡのデータインターフェースの全てのピンの出力を論理値１に切り換えるように構成されている場合には、当該ＦＰＧＡの動作中に、つまり当該ＦＰＧＡ上にプログラミングされたロジックの処理中にデータインターフェースの所定のピンにて持続的に論理値０が出力されるように、当該ＦＰＧＡをプログラミングすることができる。上記の所定のピンは、専用のコンフィギュレーション監視インターフェースと同じ機能を提供しうる。別の可能性として、ＦＰＧＡが動作中に、データインターフェースの１つ又は複数のピンにて予め規定されたビットシーケンスを持続的に出力させるようにし、かつ、このビットシーケンスの中断に基づいてプログラミングプロセスを検出するようにすることも可能である。
【００１７】
本発明によれば、コンフィギュレーションユニットが第１のプログラミング可能なハードウェアデバイスのプログラミングプロセスを検出するために使用する信号を出力する、第１のプログラミング可能なハードウェアデバイスのインターフェースは、コンフィギュレーション監視インターフェースである。本発明の対象にとっては、コンフィギュレーション監視インターフェースが、元々専用のコンフィギュレーション監視インターフェースとして第１のプログラミング可能なハードウェアデバイスによって提供されているか、又は、コンフィギュレーション監視インターフェースが、後付けで相応の手段によって、特に第１のプログラミング可能なハードウェアデバイスのプログラミングに基づいて、実現されるかは重要ではない。
【００１８】
特に好ましい実施形態においては、コンフィギュレーションユニットは、デバッグインターフェースを介して実行されているプログラミングプロセスを検出した後に、当該プログラミングプロセスを阻止するように、すなわち終了させるように構成されており、特に、コンフィギュレーションユニットによって制御されるスイッチを開放することにより、デバッグインターフェースへと入ってくる、第２のロジックに基づくＦＰＧＡのプログラミングを規定しているビットストリームを中断するように構成されている。本実施形態は有利である。なぜなら、第２のロジックに基づくハードウェアデバイスのプログラミングが完了しないように、すなわち、第２のロジックが決して完全にはハードウェアデバイス上にプログラミングされないように保証されているので、許容されないプログラミングによってハードウェアデバイスが処理を開始して障害を引き起こすという事態が回避されているからである。
【００１９】
１つの可能な実施形態においては、コンフィギュレーションユニットは、デバッグインターフェースを介して第２のロジックに基づいて実行されたプログラミングプロセスの終了後に、第１のプログラミング可能なハードウェアデバイスの再プログラミングを選択的に実行する又は実行しないように構成されている。すなわち本実施形態においては、コンフィギュレーションユニットは基本的に、第１のプログラミング可能なハードウェアデバイスの本発明による再プログラミングを実行するように構成されているが、このことは必須ではなく、状況に応じてのみ実施される。本実施形態において、好ましくは、コンフィギュレーションユニットのメモリにライセンス情報が格納されている。このライセンス情報は、デバッグインターフェースを介して実行されているプログラミングプロセスが検出される際にコンフィギュレーションユニットによって読み出され、プログラミングプロセスの終了時にコンフィギュレーションユニットが第１のプログラミング可能なハードウェアデバイスを再プログラミングするか否かを規定しているものである。このライセンス情報は、例えばライセンスの形態で存在し、このライセンスが存在する場合には、第１のプログラミング可能なハードウェアデバイスのプログラミングが許可されている。すなわち、デバッグインターフェースを介して実行されたプログラミングプロセスは終了されず、取り消されることもない。
【００２０】
コンフィギュレーションユニットも、好ましくはプログラミング可能なハードウェアデバイスとして構成されており、特にＰＬＤ、プロセッサ、又は、プロセッサとＰＬＤとの組み合わせとして構成されている。デバッグインターフェースは、好ましくはＪＴＡＧインターフェースとして構成されており、このＪＴＡＧインターフェースは、好ましくはＩＥＥＥ標準１１４９．１に準拠している。
【００２１】
さらに好ましくは、本装置は、第２のプログラミング可能なハードウェアデバイスを有し、第２のプログラミング可能なハードウェアデバイスと第２のプログラミング可能なハードウェアデバイスのデータインターフェースとの間にデータ接続部が設けられており、特に、第２のプログラミング可能なハードウェアデバイス上にもロジックがプログラミングされており、第１のプログラミング可能なハードウェアデバイス及び第２のプログラミング可能なハードウェアデバイスは、各自の上にプログラミングされたロジックを並行して処理するために、かつ、処理中にデータ接続部を介して、第１のプログラミング可能なハードウェアデバイス上にプログラミングされたロジックと、第２のプログラミング可能なハードウェアデバイス上にプログラミングされたロジックとの間でデータを交換するために構成されている。換言すると、第１のプログラミング可能なハードウェアデバイス及び第２のプログラミング可能なハードウェアデバイスは、プログラムを並行して処理するために、かつ、プログラムの処理中にデータ接続部を介してプログラムデータを交換するために構成することができる。
【００２２】
特に好ましくは、第１のプログラミング可能なハードウェアデバイスはＦＰＧＡとして構成されており、第２のプログラミング可能なハードウェアデバイスはＦＰＧＡ又はプロセッサとして構成されている。
【００２３】
別の１つの好ましい実施形態においては、第２のプログラミング可能なハードウェアデバイスは、コンフィギュレーションユニットを介して第１のプログラミング可能なハードウェアデバイスをプログラミングするように構成されている。１つの可能な実施形態においては、第２のプログラミング可能なハードウェアデバイスは、コンフィギュレーションメモリから第１のロジックを読み出してコンフィギュレーションユニットに伝送するために構成されており、コンフィギュレーションユニットは、第２のプログラミング可能なハードウェアデバイスから第１のロジックを受信して、当該第１のロジックに基づいて第１のプログラミング可能なハードウェアデバイスをプログラミングするように構成されている。別の１つの可能な実施形態においては、第２のプログラミング可能なハードウェアデバイスは、コンフィギュレーションユニットにコンフィギュレーション信号を伝送するために構成されており、コンフィギュレーションユニットは、コンフィギュレーション信号を検出し、当該コンフィギュレーション信号の検出に基づき、コンフィギュレーションメモリから第１のロジックを読み出し、当該第１のロジックに基づいて第１のプログラミング可能なハードウェアデバイスをプログラミングするように構成されている。
【００２４】
第１のロジックは、好ましくは少なくとも部分的にユーザによって構築可能であり、コンフィギュレーションメモリに格納可能である。特に、本発明の１つの実施形態においては、第１のロジックは、ユーザによって変更不可能な上書きロジックであるか、又は、第１のロジックは、２つの部分ロジックから組み合わせられており、この場合には、第１の部分ロジックは、ユーザによって自由にプログラミング可能な機能的なロジックであり、第２の部分ロジックは、ユーザによって自由にプログラミング不可能な必須のインターフェースロジックである。インターフェースロジックは、機能的なロジックと第１のプログラミング可能なハードウェアデバイスのデータインターフェースのピンとの間のデータ交換のためのメカニズムを提供し、さらには、セーフティロジックの機能を提供する。すなわち、インターフェースロジックは、機能的なロジックのプログラミングエラーに起因したハードウェアの損傷を防止するためのセーフティメカニズムを有する。機能的なロジックとデータインターフェースとの間のデータ交換は、専らインターフェースロジックの仲介によって可能となる。
【００２５】
本発明の関連において、上書きロジックは、ユーザによって変更不可能な予め規定されたロジックであり、このロジックは特に、デバッグインターフェースを介して実行された第１のプログラミング可能なハードウェアデバイスのプログラミングプロセスを検出した後に、第１のプログラミング可能なハードウェアデバイスを再プログラミングするために設けられている。本発明の１つの実施形態においては、第１のロジックは、ユーザによって構築された第１のロジックを当該ユーザがコンフィギュレーションメモリに格納するまで、上書きロジックの形態で存在している。
【００２６】
以下、本発明を、図面を参照しながらより詳細に説明する。図面では、同じ種類の部分には、同一の参照符号を付している。図示した実施形態は極めて概略的に図示されており、すなわち、間隔や縦及び横方向の長さは縮尺通りでなく、特に明記しない限り互いに導出可能な幾何学的関係性を有さない。
【図面の簡単な説明】
【００２７】
【図１】好ましい実施形態における本発明の装置の概略図である。
【実施例】
【００２８】
図１は、ＦＰＧＡとして構成された第１のプログラミング可能なハードウェアデバイス１（以下、ＦＰＧＡと呼ぶ）と、プロセッサとして構成された第２のプログラミング可能なハードウェアデバイス２（以下、プロセッサと呼ぶ）とを備える本発明の１つの好ましい装置を示す。ＦＰＧＡ１は、当該ＦＰＧＡ１上にプログラミングされたロジック１３と、当該ＦＰＧＡ１の外部に設けられたハードウェアとの間のデータ交換のためのデータインターフェース７を有する。このデータインターフェース７は、それぞれデータ入力部及び／又はデータ出力部として構成された多数のピンを有する。データインターフェース７とプロセッサ２との間には、第１のデータ接続部１８が設けられている。ユーザによりＦＰＧＡ１のための第１のロジック１３によって記述するために、フラッシュメモリとして構成されたコンフィギュレーションメモリ１４が設けられている。第２のデータ接続部２６を介して第１のロジック１３に基づいてＦＰＧＡ１をプログラミングするために、ＣＰＬＤ（complex programmable logic device）として構成されたコンフィギュレーションユニット６（以下、ＣＰＬＤと呼ぶ）が設けられている。第２のデータ接続部２６は、専用のコンフィギュレーションインターフェースとして構成されたＦＰＧＡ１のコンフィギュレーションインターフェース５と、ＣＰＬＤ６との間に設けられている。プロセッサ２は、第３データ接続部２４を介してコンフィギュレーションメモリ１４から第１のロジック１３を読み出し、第４データ接続部１６を介してＣＰＬＤ６へと伝送するために構成されている。ＣＰＬＤ６には、ユーザがアクセス不可能な永続的なコンフィギュレーションロジック２８が格納されている。コンフィギュレーションロジック２８に基づいてＣＰＬＤ６は、プロセッサ２から第１のロジック１３を受信し、当該第１のロジック１３に基づいてＦＰＧＡ１をプログラミングするために構成されている。
【００２９】
図示した本装置の１つの適用例においては、プロセッサ２及びＦＰＧＡ１は、メカトロニクスプロセスのための制御プログラムをハードリアルタイムで共同して処理するために設けられている。本装置は、この制御プログラムを用いてユーザによってプログラミングされ、制御プログラムの選択されたルーチン、特に極めてタイムクリティカルなルーチンを、ユーザによってＦＰＧＡ１内に格納することが可能となっている。図示した本装置は、特別なソフトウェアツールを用いてプログラミングされ、このソフトウェアツールは、プロセッサ２をプログラミングするため、かつ、第１のロジック１３をフラッシュメモリ１４内に格納するために構成されている。この場合には、ソフトウェアツールは、第１のロジックが２つの部分ロジックから、すなわち必須のインターフェースロジック４と機能的なロジック１１とから組み合わされることを保証する。機能的なロジック１１は、ユーザによって自由にプログラミング可能であり、ＦＰＧＡ１内に格納されるべき制御プログラムのルーチンを含む。インターフェースロジック４は、ユーザによって自由にプログラミング不可能であり、機能的なロジック１１とデータインターフェース７との間のデータ交換のためのメカニズムを提供している。インターフェースロジック４はさらに、機能的なロジック１１のプログラミングエラーに起因した、ＦＰＧＡ１又はＦＰＧＡ１の外部に設けられた他のハードウェアコンポーネントの損傷を防止するためのセーフティメカニズムを含む。ソフトウェアツールは、機能的なロジック１１とデータインターフェース７との間のデータ交換が、専らインターフェースロジック４によって提供されたメカニズムに基づいて実行されることを保証する。ＣＰＬＤ６は、第１のロジック１３に基づいてＦＰＧＡ１をプログラミングする際に、機能的なロジック１１とインターフェースロジック４との間の第５データ接続部１２を構築する。
【００３０】
ＦＰＧＡ１は、ＪＴＡＧインターフェースとして構成されたデバッグインターフェース８を有する。デバッグインターフェース８は、第６データ接続部２２を介してＪＴＡＧコネクタ１０に接続されており、ユーザはこのＪＴＡＧコネクタ１０を介してデバッグインターフェース８にアクセスすることができる。第６データ接続部は、スイッチ３２の開放によって中断することができ、スイッチ３２は、ノーマル状態では閉成されている。本装置は、デバッグインターフェース８による第２のロジックに基づくＦＰＧＡのプログラミングを阻止するように構成されている。その理由は、デバッグインターフェース８が制限なくイネーブルされれば、ソフトウェアツールを使用することなくこのデバッグインターフェース８を介してＦＰＧＡ１をプログラミングすることが可能となり得るからである。つまり、第２のロジックは、ユーザによって完全に自由にプログラミング可能となり、インターフェースロジック４内に格納されているようなセーフティメカニズムを基本的に含まなくなるだろう。
【００３１】
ＦＰＧＡ１は、コンフィギュレーション監視インターフェース９を有する。ＦＰＧＡ１は、このコンフィギュレーション監視インターフェース９を介して、当該ＦＰＧＡ１が現在プログラミングされている最中であるか否か、又は、プログラミングされた状態であるか否かをシグナリングする。例えば、コンフィギュレーション監視インターフェース９は、ＣＯＮＦ＿ＤＯＮＥインターフェースとして構成することができ、ＦＰＧＡ１は、当該ＦＰＧＡ１のプログラミングプロセスの進行中には論理値０を供給し、本装置の最後の起動以降にＦＰＧＡ１の少なくとも１回のプログラミングプロセスが完了すると直ぐに、現在のプログラミングプロセスがコンフィギュレーションインターフェース５を介して実行されているのかデバッグインターフェース８を介して実行されているのかには関係なく、論理値１を供給する。
【００３２】
ＣＰＬＤ６は、第７データ接続部２０を介してコンフィギュレーション監視インターフェース９を読み出すために構成されている。コンフィギュレーションロジック２８に基づいてＣＰＬＤ６は、バイナリの情報３０に値０が格納されている場合には、当該バイナリの情報３０を読み出して、ＦＰＧＡ１のプログラミングプロセスの終了後に再プログラミングするように構成されており、バイナリの情報３０に値１が格納されている場合には、ＦＰＧＡ１を再プログラミングしないように構成されている。なお、バイナリの情報３０は、初期時には、すなわち本装置の起動後には、値０にセットされている。
【００３３】
本発明によれば、ＣＰＬＤ６は、第１のロジック１３に基づいてＦＰＧＡ１をプログラミングし、本装置は、第１のロジック１３に基づくＦＰＧＡ１のプログラミングを以下のようにして実行するために構成されている：プロセッサ２は、バイナリの情報３０を値１にセットし、信号を用いてＣＰＬＤ６に対し、ＦＰＧＡ１のプログラミングを要求するリクエストを通知する。プロセッサ２は、コンフィギュレーションメモリ１４内に格納されている第１のロジック１３を読み出して、当該第１のロジック１３を、第４データ接続部１６を介してＣＰＬＤ６へと伝送する。ＣＰＬＤ６は、第２のデータ接続部２６を介して第１のロジック１３に基づいてＦＰＧＡ１をプログラミングする。すなわち、ＣＰＬＤ６は、第１のロジック１３に相当する論理回路をＦＰＧＡ１上に構築する。ＦＰＧＡ１は、コンフィギュレーション監視インターフェース９を介してプログラミングプロセスをシグナリングする。ＣＰＬＤ６は、ＦＰＧＡ１によるプログラミングプロセスのシグナリングを検出する。しかしながら、バイナリの情報３０は値１にセットされているので、ＣＰＬＤ６は、当該プログラミングプロセスのシグナリングの結果としてＦＰＧＡの再プログラミングを実行することはない。プログラミングプロセスの完了後、ＣＰＬＤ６は、プロセッサ２に対してプログラミングプロセスの完了を通知し、プロセッサ２は、バイナリの情報３０を再び値０にセットする。
【００３４】
デバッグインターフェース８を介して第２のロジックに基づいてＦＰＧＡ１のプログラミングが試行された場合には、本装置は、以下のステップを実行するように構成されている：ＦＰＧＡ１は、デバッグインターフェース８を介して実行されているプログラミングプロセスを、コンフィギュレーション監視インターフェース９を介してシグナリングする。ＣＰＬＤ６は、第７データ接続部２０を介して当該プログラミングプロセスを検出し、バイナリの情報３０をチェックする。バイナリの情報３０に値１が格納されている場合には、ＣＰＬＤ６は、これ以上のステップは実施せず、デバッグインターフェース８を介して第２のロジックに基づいて実行されているプログラミングプロセスは正しく完了される。バイナリの情報３０に値０が格納されている場合には、ＣＰＬＤ６は、第８データ接続部３１を介してスイッチ３２を開放し、これによってプログラミングプロセスを終了させる。このようにして、第２のロジックに基づくプログラミングプロセスの完了と、ＦＰＧＡ１による第２のロジックの処理の開始とが阻止される。ＣＰＬＤ６はさらに、第４データ接続部１６を介して伝送された信号を用いて、プロセッサ２に対し、ＦＰＧＡ１の再プログラミングを要求するリクエストを伝送する。プロセッサ２は、ＦＰＧＡ１の再プログラミングを要求するリクエストを検出し、コンフィギュレーションメモリ１４内に格納されている第１のロジック１３に基づくＦＰＧＡのプログラミングを上記のステップで実行することによって、再プログラミングを実行する。再プログラミングの完了後、ＣＰＬＤ６はスイッチ３２を再び閉成し、プロセッサ２は画面表示を用いてユーザに対し、デバッグインターフェース８を介して試行されたＦＰＧＡ１のプログラミングが中断され取り消されたことを通知する。
【００３５】
本発明の１つの実施形態においては、第１のロジック１３は、少なくとも部分的にユーザによってプログラミングされたロジックである。別の１つの実施形態においては、第１のロジックは、ユーザによる影響を受けない予め規定されたロジックである。さらに別の１つの実施形態においては、第１のロジックは、初期時には、ユーザによる影響を受けない予め規定されたロジックであるが、ユーザ自身によって少なくとも部分的にプログラミングされた独自のロジックが、該ユーザによってコンフィギュレーションメモリ１４内に格納されると直ぐに、前記第１のロジックは、少なくとも部分的にユーザによってプログラミングされた第１のロジックに置き換えられる。
【００３６】
本発明の別の１つの実施形態においては、デバッグインターフェース８を介して実行されたプログラミングプロセスを検出した後における、ＦＰＧＡの再プログラミングと、スイッチ３２の開放によるプログラミングプロセスの中断とを、非アクティブにすることが可能である。別の１つの実施形態においては、ＣＰＬＤ６は、デバッグインターフェース８を介して実行されたプログラミングプロセスを検出した後に、まず、ＣＰＬＤ３０上に格納されているバイナリのライセンス情報をチェックし、このライセンス情報が値１にセットされている場合にはこれ以上のステップは実行せず、このライセンス情報が値０にセットされている場合にのみバイナリの情報３０をチェックする。
【００３７】
コンフィギュレーションユニット６は、必ずしも独立した専用のコンフィギュレーションユニットとして構成する必要はなく、例えば、第２のプログラミング可能なハードウェアデバイス内に組み込むことも可能であることを理解されたい。さらには、第２のロジックに基づくプログラミングプロセスの中断は、必ずしもスイッチ３２の開放によるビットストリームの中断によって実施する必要はなく、例えば、第１のプログラミング可能なハードウェアデバイスのリセットによって実施することも可能であることを理解されたい。さらには、コンフィギュレーションユニット６が第１のロジックを直接的に、すなわち第２のプログラミング可能なハードウェアデバイス２による仲介なしに、コンフィギュレーションメモリ１４から読み出すことが可能であることを理解されたい。
【図１】
0006005222.tif 000002