(57)【特許請求の範囲】
【請求項１】
ランタイムにFPGA（５）の信号値を変更するための方法において、
少なくとも一つの信号値を有するFPGAハードウェアコンフィギュレーション（２４）を前記FPGA（５）にロードするステップと、
前記FPGAハードウェアコンフィギュレーション（２４）を前記FPGA（５）において実行するステップと、
前記FPGA（５）に伝送するための信号値をセットするステップと、
前記信号値からライトバックデータを決定するステップであって、前記信号値からライトバックデータを決定するステップは、前記ライトバックデータへの前記信号値のマッピングを含んでいる、ステップと、
前記ライトバックデータを状態データとして前記FPGA（５）のコンフィギュレーションメモリ（８）に書き込むステップと、
前記状態データを前記コンフィギュレーションメモリ（８）から前記FPGA（５）の機能レベルに伝送するステップと、
を備えており、
前記FPGA（５）のコンフィギュレーションメモリ（８）に書き込むステップの際に、前記FPGA（５）の動的なパーシャルリコンフィギュレーションを行うことにより、前記マッピングされた信号値を変更する、ことを特徴とする、方法。
【請求項２】
前記方法は、前記状態データを前記コンフィギュレーションメモリ（８）から前記FPGA（５）の前記機能レベル（６）に伝送する前に、状態データを前記FPGA（５）の前記機能レベル（６）から前記FPGA（５）のコンフィギュレーションレベル（７）における前記コンフィギュレーションメモリ（８）に伝送する付加的なステップを備えている、請求項１に記載の方法。
【請求項３】
前記ライトバックデータを状態データとして前記FPGA（５）のコンフィギュレーションメモリ（８）に書き込むステップは、前記信号値を変更するために必要とされる、前記コンフィギュレーションメモリ（８）の領域を求めること、及び、前記コンフィギュレーションメモリ（８）の前記必要とされる領域の状態データをライトバックデータとして書き込むことを含んでいる、請求項１又は２に記載の方法。
【請求項４】
前記状態データを前記コンフィギュレーションメモリ（８）から前記FPGA（５）の前記機能レベル（６）に伝送するステップは、前記状態データを書き込むために必要とされる、前記FPGA（５）の前記機能レベル（６）の部分を求めること、及び、前記状態データの当該部分を前記機能レベル（６）に伝送することを含んでいる、請求項１乃至３のいずれか一項に記載の方法。
【請求項５】
前記信号値を変更するために必要とされる、前記コンフィギュレーションメモリ（８）の領域を求めること、及び／又は、前記状態データの書き込みに必要とされる、前記FPGA（５）の前記機能レベル（６）の部分を求めることは、識別番号を介して各領域を識別することを含んでいる、請求項１乃至４のいずれか一項に記載の方法。
【請求項６】
前記FPGA（５）に伝送するための前記信号値をセットするステップは、利用可能な信号値のリストを準備すること、及び、該リストから信号値を選択することを含んでいる、請求項１乃至５のいずれか一項に記載の方法。
【請求項７】
前記FPGAハードウェアコンフィギュレーション（２４）を前記FPGA（５）において実行するステップは、前記FPGAハードウェアコンフィギュレーション（２４）をリアルタイムアプリケーションとして実行することを含んでおり、
FPGA（５）の信号値を変更するための前記方法を、前記リアルタイムアプリケーションのランタイムに実施する、請求項１乃至６のいずれか一項に記載の方法。
【請求項８】
前記状態データを前記コンフィギュレーションメモリ（８）から前記FPGA（５）の前記機能レベル（６）に伝送するステップは、リセット信号を前記FPGA（５）に送信することを含んでいる、請求項１乃至７のいずれか一項に記載の方法。
【請求項９】
リセット信号を前記FPGA（５）に送信するステップは、前記状態データを前記コンフィギュレーションメモリ（８）から前記FPGA（５）の前記機能レベル（６）に部分的に伝送するためのリセット信号を送信することを含んでいる、請求項８に記載の方法。
【請求項１０】
複数の信号値を有する前記FPGAハードウェアコンフィギュレーション（２４）を作成するステップであって、前記複数の信号値の状態データの記憶位置は前記コンフィギュレーションメモリ（８）内で互いに隣接している、ステップと、
前記FPGAハードウェアコンフィギュレーション（２４）に基づき、前記複数の信号値の状態データのための、前記コンフィギュレーションメモリ（８）内の記憶位置（９）を求めるステップと、
ランタイムにアクセス可能及び／又は変更可能な信号値及び該信号値の記憶位置（９）のリストを作成するステップと、
をさらに備えていることを特徴とする、請求項１に記載の方法。
【請求項１１】
前記コンフィギュレーションメモリ（８）から前記FPGA（５）の前記機能レベル（６）に状態データを伝送するためのリセット信号を実装する付加的なステップを備えており、
状態データの前記コンフィギュレーションメモリ（８）から前記FPGA（５）の前記機能レベル（６）への伝送は、複数の前記信号値を有する前記FPGAハードウェアコンフィギュレーション（２４）の前記隣接する記憶位置から前記状態データを部分的に伝送することを含んでいる、請求項１０に記載の方法。
【請求項１２】
プロセッサユニット及びFPGAを備えており、且つ、請求項１乃至９のいずれか一項に記載の方法を実施するように構成されているデータ処理装置（３）。
【請求項１３】
適切なデータ処理装置（３）におけるロード及び実行後に、請求項１乃至９のいずれか一項に記載の方法の各ステップを実行させる、コンピュータ実行命令を有しているコンピュータプログラム。
【請求項１４】
請求項１乃至９のいずれか一項に記載の方法がプログラミング可能なデータ処理装置（３）において実施されるように、該データ処理装置（３）と協働することができる、電子的に読み出し可能な制御信号を有しているディジタル記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ランタイムにFPGAの信号値を変更するための方法に関する。同様に本発明は、プロセッサユニット及びFPGAを備えており、且つ、上記の方法を実施するように構成されているデータ処理装置に関する。また本発明は、適切なデータ処理装置におけるロード及び実行後に、上述の方法の各ステップを実行させる、コンピュータ実行命令を有しているコンピュータプログラム製品、並びに、上述の方法が実施されるように、プログラミング可能なデータ処理装置と協働することができる、電子的に読み出し可能な制御信号を有しているディジタル記憶媒体に関する。最後に、本発明は、ハードウェア記述言語で記述されたFPGAモデルに基づき、FPGAビルド（Build）を実行するための方法に関する。ハードウェア記述言語を、例えばVHDL（Very-high-speed-integrated-circuits Hardware Description Language）のようにテキスト形式で表すことができるか、又は、線図的に、例えばSimulinkプログラムとして表すことができる。
【０００２】
複雑な動的モデルのリアルタイムシミュレーションは、時間に関する周辺条件自体が厳しいことから、現在の計算ノードに高い要求を課している。自動車分野のHIL（Hardware-in-the-Loop）シミュレーションでは、その種のモデルは特に、例えば環境モデルの非常に動的な部分に関して高速な制御回路を接続する必要がある個所に導入される。そのようなケースは例えばシリンダ内部圧力センサをシミュレートする場合に該当する。シリンダ内部圧力センサは、燃費又は排ガスの低減においてますます重要な役割を担うようになっている。しかしながらまた、高いダイナミクスを有している制御区間、例えば電気モータにおいても、短いサイクル時間及びレイテンシは不可欠である。これらをCPUベースのシミュレーションで実現することは実際のところほぼ不可能である。シミュレートされる環境モデル（例えばシミュレートされる電気モータ）又は制御回路はいっそう厳密且つ複雑に成らざるを得ないので、Rapid Control Prototypin（RCP）の分野においてもFPGAはますます進出している。この関係から、例えば複雑な制御部分がFPGAに移行され、その結果、十分に精確且つ高速な反応時間の保証が維持されている。
【０００３】
フィールドプログラマブルゲートアレイ（FPGA : Field Programmable Gate Array）は、モデルの動的な部分の計算を担当することによって、リアルタイムシミュレーションにおいて計算ノードを支援することができる。柔軟性が高く、また複数の信号の並列処理を実現できることから、FPGAを使用することによって、厳しいリアルタイム要求も容易に満たすことができる。計算ノードのCPUのためのハードウェアアクセラレータとしてFPGAを使用することができる。HILシミュレータのためのその種の拡張パーツとして、例えばdSPACE社のDS5203-FPGA Boardが挙げられる。従って、例えば、非常に動的な部分がFPGAに移行され、その結果、非常に精確且つ高速な反応時間が制御回路に対して保証されている。FPGAハードウェアコンフィギュレーションは、通常の場合、ハードウェア記述言語で記述されたFPGAモデルに基づき、ビルドプロセスにより生成される。
【０００４】
精度に対する要求が高まることによって、制御区間のモデルはいっそう複雑になり、従って扱いにくくなる。自動車のHIL環境では、その種のモデルは通常の場合、MathWorks社のツールセットであるMatlab/Simulinkを用いて作成される。Simulinkは、ブロック線図の形態でその種のモデルについてのブロックベースのビューを提供する。複数のモデル部分をブロック線図において、幾つかのサブシステムに統合し、また、信号によって相互に結合することができる。それらのブロック間のデータフローは信号線によって表される。
【０００５】
CPUベースのリアルタイムシミュレーションにおいては、先ず、モデルのブロック線図がSimulink Coderを用いてC/C++ソースファイルに翻訳される。続けて、それらのソースファイルがコンパイラを介して実行可能なアプリケーションに翻訳され、それらのアプリケーションをリアルタイム能力のあるオペレーションシステムを有している計算ノードにおいて実行することができる。更に、CPUビルドではトレースファイル（Trace File）が生成され、このトレースファイルは、例えばSimulinkにおいて線図的にモデリングされたトポロジファイル（Topology File）を表す。TRCファイルには、アクセス可能なあらゆる変数が含まれており、またそれらの変数は種々の記憶位置にマッピングされている。それらの変数は有利にはモデルのトポロジに類似するトポロジで記憶されている。
【０００６】
モデルがCPUアプリケーションに翻訳されると、シミュレーションの計算が固定のステップ幅でシーケンシャルに実施される。従って、全てのモデル状態又はモデル変数、例えば信号線におけるデータ又はブロックの入力値／出力値の一貫性のあるマッピングが常に計算ノードのメインメモリに存在する。メインメモリに直接的にアクセスすることによって、モデル変数を試験ツール、例えばControlDeskにおいて解析及び／又は操作することができる。HILシミュレーションの変数へのランダム書き込み／読み出しアクセスが実現される。トレースファイルに基づき、例えばエンジン回転数のような信号値を選択することができ、また、ディスプレイを介して出力又は操作することができる。HIL環境では、この動作が「測定」及び「調整」という概念に包括される。
【０００７】
FPGAベースのシミュレーションを、dSpace社のFPGA Programming Blockset及びXilinx社のSystem Generator（XSG）を使用して、CPUベースのシミュレーションと同様に、Simulinkを用いてブロック線図によりモデリングすることができる。
【０００８】
もっともこのモデルは、CPUベースのシミュレーションの場合とは異なり、繰り返しプログラミング言語に翻訳されずに、顧客固有のディジタル回路を記述するハードウェア記述言語に翻訳される。顧客固有の回路の記述は、合成プロセスによってFPGAコンフィギュレーションデータストリームに翻訳される。特に、非常に多くのパラメータを設定しなければならない制御回路の較正の範囲では、リソース及び時間を節約する方式が必要となる。較正データは定数として実装されているので、通常の場合、FPGAのランタイムに変更されることはない。
【０００９】
幾つかのFPGAについては、デバッグを目的として、FPGAの完全な状態をフリーズさせて、読み出すことができる。しかしながら、FPGAの閉じられた入力／出力動作によって、計算ノードのメインメモリと同様に、複数のモデル状態に任意にアクセスし、それらのモデル状態を必要に応じて変更することは不可能である。ユーザが測定又は調整しようとする各モデル変数は、明示的なモデリングによって、信号線を介してFPGAのインタフェースへと供給されなければならない。この適合に続いて、モデルは改めて翻訳されなければならず、この翻訳には数時間掛かる可能性がある。この事情から、FPGAベースのリアルタイムシミュレーションの開発サイクルが非常に長くなると考えられる。特に、例えば制御回路の較正の範囲において、非常に多くのパラメータを設定しなければならない場合、その較正は非常に多くのリソースを必要とすると考えられる。
【００１０】
従って、上述の従来技術を基礎とした本発明の課題は、ランタイムにFPGAにおいてモデル変数の変更を実現し、且つ、FPGAベースのリアルタイムシミュレーションを作成する際の反復的な開発サイクルの短縮を実現する、冒頭で述べたような方法、データ処理装置、コンピュータプログラム製品、並びに、電子的に読み出し可能な制御信号を有しているディジタル記憶媒体を提供することである。
【００１１】
本発明によれば、この課題は、各独立請求項の特徴部分に記載されている構成によって解決される。本発明の有利な実施の形態は従属請求項に記載されている。
【００１２】
従って、本発明によれば、ランタイムにFPGAの信号値を変更するための方法が提供され、この方法は、少なくとも一つの信号値を有するFPGAハードウェアコンフィギュレーションをFPGAにロードするステップと、FPGAハードウェアコンフィギュレーションをFPGAにおいて実行するステップと、FPGAに伝送するための信号値をセットするステップと、信号値からライトバックデータを決定するステップと、ライトバックデータを状態データとしてFPGAのコンフィギュレーションメモリに書き込むステップと、状態データをコンフィギュレーションメモリからFPGAの機能レベルに伝送するステップと、を備えている。
【００１３】
更に本発明によれば、プロセッサユニット及びFPGAを備えており、且つ、上述の方法を実施するように構成されているデータ処理装置が提供される。
【００１４】
本発明によれば、適切なデータ処理装置におけるロード及び実行後に、上述の方法の各ステップを実行させる、コンピュータ実行命令を有しているコンピュータプログラム製品も提供される。
【００１５】
更に本発明によれば、上述の方法がデータ処理装置において実施されるように、プログラミング可能なデータ処理装置と協働することができる、電子的に読み出し可能な制御信号を有しているディジタル記憶媒体が提供される。
【００１６】
つまり本発明の基本的な着想とは、FPGAの動作中に、信号値を変更するために、状態データがFPGAの機能レベルに書き込まれることによって、ランタイムにFPGAの信号値の変更を実現することである。状態データが必要に応じて変更され、それによって、FPGAにおいて信号値の変更が行われる。その際に、FPGAを構造的に変化させることは必要ない。また、FPGAの動作を中断する必要もない。従って、変更のために、FPGAの信号値にランダムにアクセスすることができる。信号値の変更を、トポロジファイル（トレースファイル）を介するアクセス及びSimulinkを用いる線図的なモデリングを含めて、CPUにおけるソフトウェアの実行から公知であるように行うことができる。信号値、例えば点火時点を相応に選択及び表示及び／又は変更することができる。
【００１７】
FPGAの信号値を変更するためには、信号値に関する値がFPGAに書き込まれることだけが必要とされる。書き込まれた値が、信号値の以前にセットされていた値と異なっていることは必要ない。但し、実際のところ信号値の値は一般的に変更されるので、ここでは「変更」という語句を用いている。
【００１８】
同様に、FPGAの動作中に状態データがFPGAから読み出され、そこから信号値が決定されることによって、FPGAの信号値へのアクセスを実現することができる。複数の状態データが読み出され、必要に応じて結合されるが、その際に、FPGAを構造的に変化させることは必要ない。また、FPGAの動作を中断する必要もない。従って、FPGAの信号値にランダムにアクセスすることができる。信号値へのアクセスを、トポロジファイル（トレースファイル）を介するアクセス及びSimulinkを用いる線図的なモデリングを含めて、ソフトウェアの実行から公知であるように行うことができる。信号値、例えばエンジン回転数を相応に選択し、表示又は操作することができる。
【００１９】
更に、ランタイムにFPGAの信号値にアクセスするための方法が提供され、この方法は、FPGAハードウェアコンフィギュレーションをFPGAにロードするステップと、FPGAハードウェアコンフィギュレーションをFPGAにおいて実行するステップと、FPGAの信号値を要求するステップと、FPGAの機能レベルからFPGAのコンフィギュレーションレベルにおけるコンフィギュレーションメモリに状態データを伝送するステップと、状態データをコンフィギュレーションメモリからリードバックデータとして読み出すステップと、リードバックデータから信号値を決定するステップとを備えている。個々のステップは、上記において説明した信号値を変更するための方法の各ステップに対応する。
【００２０】
有利には、FPGAのインプリメンテーションに関して変更は必要ないので、FPGAのリソース及び性能に対する要求も変わらない。従って、信号値へのアクセスは、生成されたFPGAハードウェアコンフィギュレーションに関しても、また実行中にも、通常の動作に影響を及ぼすことはない。アクセスを実現するために、種々のモデル変数の複数の状態を一貫性があるように記憶することができる。適合されたFPGAハードウェアコンフィギュレーションを生成して、それをFPGAに伝送せずとも、所望の信号値にアクセスすることができるので、それによって開発期間を短縮することができる。FPGAの利用可能なリソース及びリアルタイム動作への影響は回避又は低減される。特に、FPGAハードウェアコンフィギュレーションを変更することなく、種々の信号値をFPGAから必要に応じて読み出すことができる。
【００２１】
コンフィギュレーションレベルは、FPGAを初期設定するために使用される、FPGAの論理レベルである。初期コンフィギュレーションプロセスの間に、コンフィギュレーションデータがコンフィギュレーションメモリに書き込まれ、その後、機能レベルはモデリングされたように動作する。続いて、動作中に例えばトリガによって、機能レベルの全てのレジスタ内容を再びコンフィギュレーションレベルにミラーリングすることができる。続いて、コンフィギュレーションメモリの内容を読み出し、その内容から信号値を決定することができる。それとは逆に、動作中に、例えばトリガによってコンフィギュレーションメモリの全ての内容を、コンフィギュレーションレベルから機能レベルのレジスタ内容に伝送することができる。その種のトリガとして例えばリセット信号が考えられる。リセット信号をFPGAの一部に対してセットすることができるか、又は、明示的に複数のレジスタに対してFPGAプログラムにおいてセットすることができる。コンフィギュレーションレベルにおける変化が直接的に機能レベルに作用する場合には、ルックアップテーブル及びマルチプレクサの変化に関してはその種のトリガは不要であると考えられる。
【００２２】
信号値の選択をランタイム中に任意に変えることができる。有利には、リードバックデータ及び／又はライトバックデータとしての複数の信号値へのアクセスが行われる。
【００２３】
リードバックデータ及び／又はライトバックデータは、FPGAの任意のデータ単位を含むことができる。リードバックデータ及び／又はライトバックデータは、FPGAの比較的大きいメモリブロック又は個々のレジスタ値を含むことができる。それらのメモリブロックとして、例えばFPGAのリードバックカラムが考えられる。リードバックデータとライトバックデータは構造的に等しいものであって、単に概念上区別されるに過ぎない。有利には、変更すべき信号値が定数としてFPGAに実装されており、例えば、開発の間にだけ適合させる必要があるSimulinkのConstantブロックとして実装されている。
【００２４】
原則として、上述の方法の順序は変更可能であり、本明細書に記載した順序に限定されるものではない。特に、本方法を、FPGAハードウェアコンフィギュレーションのロード及び実行後に、信号値を変更するため及び／又は信号値にアクセスするために実施し、反復的に信号値にアクセスするか、又は、信号値を変更することができる。
【００２５】
FPGAへの書き込みアクセスが行われる。このアクセスはFPGAに影響を及ぼすことなく、ランタイムに行われる。FPGAの信号値への読み出しアクセスに関して上記において詳細に説明した各事項は、信号値を変更するための書き込みアクセスに関しても相応に該当し、またそれぞれ別個に相応に適用することができる。
【００２６】
FPGAの信号値を変更するための書き込みアクセスの際に、FPGAの動的なパーシャルリコンフィギュレーションが行われ、その際に、信号値を含んでいる、FPGAにおける関連性のある各部分がランタイムに上書きされる。例えば、SimulinkのConstantブロック又は信号値の他の任意のモデリングを、リコンフィギュレート可能なルックアップテーブル、リコンフィギュレート可能なレジスタ又はリコンフィギュレート可能なマルチプレクサにマッピングすることができる。ルックアップテーブル、レジスタ又はマルチプレクサの動的なパーシャルリコンフィギュレーションによって、FPGAのランタイムに、マッピングされた信号値を変更することができる。複数のビットを含む信号値を、必要に応じて、複数のエレメントに分割してマッピングすることができる。利用されるFPGA及びFPGAプログラムに応じて、FPGAエレメントへの信号値を種々にマッピングすることが有利であると考えられる。FPGAプログラムをビルドする前の解析によって、有利なマッピングを決定することができる。
【００２７】
データ処理装置を原則として任意に構成することができる。FPGAは典型的には、拡張モジュールとしてデータ処理装置に設けられているか、又はデータ処理装置と接続されている。データ処理装置を、データコネクションを介して遠隔の制御コンピュータと接続することができる。
【００２８】
特に有利には、信号値へのアクセスが制御コンピュータにおけるアプリケーションを介して行われる。
【００２９】
信号値の表示をグラフィック表示として行うことができる。信号値を有利にはリストから「ドラッグ・アンド・ドロップ」によって、画面上に表示されている、信号値を表示するための機器の上に移動させることができる。それとは逆に、変更すべき信号値をリストから「ドラッグ・アンド・ドロップ」によって選択することも同様に可能である。また、変更すべき信号値に関する値を、「ドラッグ・アンド・ドロップ」によって、選択された信号値の上に置くこともできる。
【００３０】
リードバックデータとしての状態データのコンフィギュレーションメモリからの読み出しはデータの変更を含まず、単に概念上の定義に関する。相応のことがライトバックデータについても該当する。ライトバックデータという語句は単に、FPGAにおいて信号値を変更するためにFPGAに書き込まれる信号値を表している。
【００３１】
リードバックデータからの信号値の決定及び／又は信号値からのライトバックデータの決定を原則として任意の個所において、例えばFPGA、データ処理装置のCPU又は制御コンピュータにおいて行うことができる。相応に、状態データ、レジスタデータ又は信号値をそれぞれ必要に応じて伝送することができる。
【００３２】
FPGAの外部からのFPGAのコンフィギュレーションメモリへの読み出しアクセス及び／又は書き込みアクセスはインタフェースを介して行われる。コンフィギュレーションメモリの通常のアーキテクチャは、１フレームの最小読み出し量で、３２ビット幅及び１００ＭＨｚのクロック周波数を有するインタフェースを含んでいる。相応のことが書き込みアクセスについても該当する。従って、FPGAのクロックで正確な周期のアクセスが行われるFPGAデバッガ又はFPGAスコープの意味における本方法の使用は、今日一般的なFPGAでは不可能である。一つのフレームにはレジスタ値の他に、ルックアップテーブル並びにマルチプレクサコンフィギュレーション又は配置配線コンフィギュレーションについての情報を含ませることができる。リードバックデータからの信号値の決定は、例えば、一つのフレームからの複数のレジスタ値の発見及び抽出を含んでいる。相応に、信号値からのライトバックデータの決定は、例えば、一つのフレームにおける複数のレジスタ値の発見及び信号値に応じたレジスタ値のセットを含んでいる。FPGAのコンフィギュレーションメモリへの読み出しアクセス及び／又は書き込みアクセスは、FPGAの内部からも、内部インタフェースを介して実現することができる。その種の内部インタフェースは、例えばXilinx社の「internal configuration access port（ICAP）」である。
【００３３】
本発明の有利な実施の形態において、本方法は、状態データをコンフィギュレーションメモリからFPGAの機能レベルに伝送する前に、状態データをFPGAの機能レベルからFPGAのコンフィギュレーションレベルにおけるコンフィギュレーションメモリに伝送する付加的なステップを備えている。相応に、例えば、ライトバックデータが状態データとしてFPGAのコンフィギュレーションレベルに伝送される前に、FPGAのコンフィギュレーションレベルの初期化を実行することができる。また、信号値の変更を例えば、事前に読み出された信号値に基づき行うこともできる。コンフィギュレーションメモリからFPGAの機能レベルへの状態データの伝送が、変更すべき信号値についての単位よりも大きい単位で行われる場合には、機能レベルの状態データを事前に伝送することによって、コンフィギュレーションメモリを初期化することができ、その結果、機能レベルへの状態データの伝送後には、変更された信号値の他に、本来の状態も再び確立することができる。相応に、ランタイムにFPGAのその他の特性が変更されることなく、信号値を変更することができる。このことは特に、機能レベルに伝送すべき状態データが、ランタイムに変化しない一定の値を表す場合に当てはまる。このことは原理的には、状態データのコンフィギュレーションレベルへの伝送と、状態データの機能レベルへの伝送との間に、機能レベルの変更が行われない場合にも当てはまる。状態データをFPGAの機能レベルに伝送する際に、ライトバックデータは信号値の他に付加的な情報を含むことができる。従って、有利には、先ず、状態データがライトバックデータに関する基礎として読み出され、続いて信号値がそれらの状態データに挿入される。これによって、FPGAのデータの完全性を保証することができる。
【００３４】
有利には、変更される可能性がある複数の信号値を、FPGAプログラムを作成する段階で既に、ランタイムにコンフィギュレーションが変化する可能性がある機能レベルにおけるFPGAのエレメントから離して、例えば変数の形式で一緒に配置することができる。つまり、パーシャルリコンフィギュレーションの際には、ランタイムに変化したFPGAの部分が意図的に上書きされることを保証することができる。さもなければ、FPGAは方法の実施中に更に動作を続けることから、機能レベルからの状態データの伝送と、機能レベルへのライトバックデータの伝送との間に、上述の方法によっては取り消される変化が、FPGAの機能によって生じてしまう虞がある。
【００３５】
書き込みが行われるべき領域に、ランタイムに変化するエレメントが存在しない場合には、信号値が変化する前にその都度、書き込みが行われるべき領域の状態データのコンフィギュレーションレベルへの伝送及び読み出しを行う必要はない。原則として、状態データはFPGAのランタイム中に変化しないので、状態データは一度だけ読み出されれば十分である。
【００３６】
FPGAの初期設定の際にエレメントのコンフィギュレーションが確認されるので、択一的には、FPGAの基本初期設定を記憶し、それらの値をコンフィギュレーションレベルの領域の書き込みの際に使用することができる。
【００３７】
本発明の有利な実施の形態においては、信号値からライトバックデータを決定するステップは、ライトバックデータへの信号値のマッピングを含んでいる。本発明の有利な実施の形態においては、リードバックデータから信号値を決定するステップは、信号値へのリードバックデータのマッピングを含んでいる。信号値からライトバックデータを決定するためのマッピング、又はリードバックデータから信号値を決定するためのマッピングは、FPGAにおける信号値の表現と同様に、レジスタとして、ルックアップテーブルとして、マルチプレクサとして、又は、配置配線によって実現される。例えば、レジスタは機能レベルにおけるメモリを表し、そのデータを簡単にコピーすることができ、また信号値を決定するために使用することができる。このことは、信号値を決定するためのデータの識別を実現する。個々のレジスタに対して読み出し又は書き込みを行えるのではなく、コンフィギュレーションレベルを領域毎にしか処理できないので、その領域のコンフィギュレーションビットへの信号値のマッピングを行うことが必要になる。
【００３８】
本発明の有利な実施の形態においては、信号値からライトバックデータを決定するステップは、信号値からのFPGAの少なくとも一つのレジスタ値の決定を含んでいる。本発明の有利な実施の形態においては、リードバックデータから信号値を決定するステップは、FPGAの少なくとも一つのレジスタ値からの信号値の決定を含んでいる。少なくとも一つのレジスタにおける信号値の編成は任意で良く、従って、信号値を決定するため、又は、信号値を所望のように変更させるための状態データをレジスタ内容から決定するためには、レジスタ内容を処理する必要がある。特に、信号値を複数のレジスタに分散させることができ、また、信号値を決定するために、又は、信号値を所望のように変更させるための状態データを複数のレジスタ内容から決定するために、レジスタの複数の内容を一緒に処理することができる。
【００３９】
本発明の有利な実施の形態においては、ライトバックデータを状態データとしてFPGAのコンフィギュレーションメモリに書き込むステップは、信号値を変更するために必要とされる、コンフィギュレーションメモリの領域を求めること、及び、コンフィギュレーションメモリのその必要な領域の状態データをライトバックデータとして書き込むことを含んでいる。本発明の有利な実施の形態においては、状態データをコンフィギュレーションメモリからリードバックデータとして読み出すステップは、信号値を決定するために必要とされる、コンフィギュレーションメモリの領域を求めること、及び、コンフィギュレーションメモリのその必要な領域の状態データをリードバックデータとして読み出すことを含んでいる。信号値がコーディングされているレジスタ、ルックアップテーブル又はマルチプレクサのコンフィギュレーションビットをアドレッシングする際に用いられるコンフィギュレーションメモリのアドレスが決定され、またFPGAのランタイムに、調整すべき信号値に応じて選択され、その結果、コンフィギュレーションメモリへの書き込みアクセス又は読み出しアクセスは、FPGAハードウェアコンフィギュレーションを事前に適合せずとも行うことができる。必要な領域を求めることによって、状態データの読み出し及び／又は書き込みをそれらの領域に限定することができるので、それによって少量のデータを読み出し、伝送し、また処理するだけで済む。
【００４０】
本発明の有利な実施の形態においては、状態データをコンフィギュレーションメモリからFPGAの機能レベルに伝送するステップは、状態データを書き込むために必要とされる、FPGAの機能レベルの部分を求めること、及び、状態データのその部分を機能レベルに伝送することを含んでいる。本発明の有利な実施の形態においては、状態データをFPGAの機能レベルからFPGAのコンフィギュレーションレベルにおけるコンフィギュレーションメモリに伝送するステップは、信号値を決定するために必要とされる状態データの部分を求めること、及び、状態データのその部分をコンフィギュレーションメモリにおいて保護することを含んでいる。伝送が行われるべき及び／又は書き込みが行われるべき領域、若しくは、伝送されるべき及び／又は書き込まれるべき部分はランタイムに求められ、その結果、状態データの伝送及び／又は書き込みは、FPGAハードウェアコンフィギュレーションを事前に適合せずとも行うことができる。必要な領域／部分を求めることによって、状態データの保護及び／又は記憶をそれらの領域に限定することができるので、それによって少量のデータを保護及び／又は記憶するだけで済む。
【００４１】
本発明の有利な実施の形態においては、信号値を変更するために必要とされる、コンフィギュレーションメモリの領域を求めること、及び／又は、状態データの書き込みに必要とされる、FPGAの機能レベルの部分を求めることは、識別番号を介して各領域を識別することを含んでいる。識別番号は原則として任意の時点に決定することができる。有利には、FPGAハードウェアコンフィギュレーションのモデルを使用して識別番号が決定される。特に有利には、アクセスを行う際に参照される一義的な識別番号が各領域に割り当てられている。従って信号値は例えばコンフィギュレーションメモリの一つの領域に、その識別番号を介してアドレッシングすることができる。識別番号を例えば、モデルブロックを識別するためのブロックIDとして実施することができる。ブロックIDは、FPGAプログラムを作成するための種々のステップにわたりモニタリングすることができる。ブロックIDを介して、レジスタ、ルックアップテーブル又はマルチプレクサのようなFPGAエレメントを一つのモデルブロックに簡単に対応付けることができる。
【００４２】
本発明の有利な実施の形態においては、FPGAに伝送するための信号値をセットするステップは、利用可能な信号値のリストを準備すること、及び、そのリストから信号値を選択することを含んでいる。本発明の有利な実施の形態においては、FPGAの信号値を要求するステップは、利用可能な信号値のリストを準備すること、及び、そのリストから信号値を選択することを含んでいる。リストは原則として任意の時点に作成することができる。有利には、FPGAハードウェアコンフィギュレーションのモデルを使用してリストが作成される。特に有利には、アクセスを行う際に参照される一義的な識別番号が各信号値に割り当てられている。
【００４３】
本発明の有利な実施の形態においては、状態データをコンフィギュレーションメモリからFPGAの機能レベルに伝送するステップは、リセット信号をFPGAに送信することを含んでいる。リセット信号は、コンフィギュレーションメモリからFPGAの機能レベルへの状態データの伝送を開始させる信号である。相応の伝送を、短時間で、例えば数サイクルで行うことができ、その際、リセット信号のセットによって、状態データをコンフィギュレーションメモリから機能レベルに伝送する時点を制御することができる。リセット信号は、リセットに関与するコンフィギュレーションレベルの領域を有している、FPGAの全てのエレメントに作用を及ぼす大域的なリセット信号であると考えられる。
【００４４】
本発明の有利な実施の形態においては、リセット信号をFPGAに送信するステップは、状態データをコンフィギュレーションメモリからFPGAの機能レベルに部分的に伝送するためのリセット信号を送信することを含んでいる。状態データを部分的に伝送することによって、信号値の変更を効果的に実行することができる。FPGAの僅かなリソースしか必要とされないので、それによって、特にリアルタイムシステムにおける使用が容易になる。調整可能であるべきレジスタにのみ応答する専用のリセット線路によって、大域的なリセットによって生じる可能性があるような不所望な作用を回避することができる。
【００４５】
調整すべき信号値がルックアップテーブル又はマルチプレクサの形態で実装されるならば、コンフィギュレーションレベルのデータが直接的にルックアップテーブル又はマルチプレクサから受け取られる場合、リセット線路を省略することができる。
【００４６】
本発明の有利な実施の形態においては、FPGAハードウェアコンフィギュレーションをFPGAにおいて実行するステップは、ハードウェアコンフィギュレーションをリアルタイムアプリケーションとして実行することを含んでおり、またFPGAの信号値を変更するための方法は、リアルタイムアプリケーションのランタイムに実施される。リアルタイムアプリケーションは非常にタイムクリティカルであるので、提供されるリソースが変更されるだけで、リアルタイムアプリケーションの挙動が変化してしまう可能性がある。本発明による方法を使用することによって、FPGAハードウェアコンフィギュレーションのリソースを変更する必要なく、信号値を変更することができるか、又は、信号値への読み出しアクセスを行うことができる。FPGAハードウェアコンフィギュレーションのインプリメンテーションに依存せずに信号値を変更することができるので、信号値が変更されることによって、FPGAハードウェアコンフィギュレーションに重大な影響が及ぼされることはない。
【００４７】
更に、FPGAハードウェアコンフィギュレーションを作成するステップと、FPGAハードウェアコンフィギュレーションに基づき、少なくとも一つの信号値の状態データのための、コンフィギュレーションメモリの記憶位置を求めるステップと、ランタイムにアクセス可能な信号値及びそれに対応する記憶位置を有するリストを作成するステップとを備えている、ハードウェア記述言語で記述されたFPGAモデルに基づきFPGAビルドを実行するための方法が提供される。
【００４８】
更に本発明によれば、複数の信号値を有するFPGAハードウェアコンフィギュレーションを作成するステップと、FPGAハードウェアコンフィギュレーションの隣接する領域に信号値を配置するステップと、FPGAハードウェアコンフィギュレーションに基づき、複数の信号値の状態データのための、コンフィギュレーションメモリの記憶位置を求めるステップと、ランタイムにアクセス可能及び／又は変更可能な信号値及びそれに対応する記憶位置を有するリストを作成するステップとを備えている、ハードウェア記述言語で記述されたFPGAモデルに基づきFPGAビルドを実行するための方法が提供される。
【００４９】
即ちこの方法の基本的な着想は、FPGAハードウェアコンフィギュレーションを作成する段階で既に、必要なデータを信号値によって検出することができ、またその信号値を検出された状態データに基づきFPGAのランタイムに形成することができるように処理することである。それとは逆に、状態データと信号値との既知の関係によって、信号値もFPGAにおいて簡単に変更することができる。
【００５０】
更に、複数の信号値を隣接させて配置することによって、信号値の読み出しアクセスを行うための、又は、信号値を変更するための、それらの信号値へのアクセスを簡単に、また僅かなリソースしか使用せずに行えることが保証されている。
【００５１】
記憶位置は有利にはFPGAのレジスタである。レジスタをモデルにおいて明示的にモデリングすることができるか、又は、例えば複数のブロックによって遅延を伴って暗示的にモデリングすることができる。モデルは有利には線図的に生成される。
【００５２】
原則として、上述の方法の順序は変更可能であり、本明細書に記載した順序に限定されるものではない。例えば、ハードウェア記述言語で記述されたモデルに基づき、ランタイムにアクセス可能な信号値及び／又はランタイムに変更可能な信号値を有するリストの作成をより早い時点に行うことができる。
【００５３】
有利には、ここで説明するFPGAビルドを実行するための方法は、FPGAを用いるデータ処理装置のためのビルド方法の一部であり、その場合、データ処理装置はFPGAを含んでいるか、又はFPGAと接続されている。この方法においては、更に、データ処理装置のCPUに関するビルドが実行され、その場合、CPUトレースファイルジェネレータ（Trace File Generator）においてはCPUトレースファイルの生成が行われる。更に、ランタイムにアクセス可能な信号値及びそれに対応する記憶位置を有するリスト（ここでは「ロジックアロケーションファイル（Logic Allocation File）」と称される）が機械読み出し可能なファイルに変換される。更に、CPUのトレースファイルと等価の、FPGAのためのトレースファイルが生成される。更なるステップにおいては、CPUのトレースファイルとFPGAのトレースファイルとがトレースファイルマージャ（Trace File Merger）において統合される。これによって、例えば、制御コンピュータによって、CPU又はFPGAにおける実行のためのインプリメンテーションに依存せずに、信号値へのアクセス及び／又は信号値の変更を行うことができる。
【００５４】
本発明の有利な実施の形態においては、本方法は、コンフィギュレーションメモリからFPGAの機能レベルに状態データを伝送するためのリセット信号を実装する付加的なステップを備えており、その場合、状態データのコンフィギュレーションメモリからFPGAの機能レベルへの伝送は、複数の信号値を有するFPGAハードウェアコンフィギュレーションの隣接する領域から状態データを部分的に伝送することを含んでいる。リセット信号は、コンフィギュレーションメモリからFPGAの機能レベルへの状態データの伝送を開始させる信号である。相応の伝送を、短時間で、例えば数サイクルで行うことができ、その際、リセット信号のセットによって、状態データをコンフィギュレーションメモリから機能レベルに伝送する時点を制御することができる。動作中は、FPGAの動的なパーシャルリコンフィギュレーションによって、FPGAにおける関連性のある各部分を上書きすることができる。例えばSimulinkのConstantブロックである信号値が、リコンフィギュレーション可能なルックアップテーブル、レジスタ又はマルチプレクサにマッピングされる。続いて、信号値は動的なパーシャルリコンフィギュレーションによって、任意の値に変更される。
【００５５】
本発明の有利な実施の形態においては、コンフィギュレーションメモリからFPGAの機能レベルに状態データを伝送するためのリセット信号を実装するステップは、コンフィギュレーションメモリからFPGAの機能レベルに状態データを部分的に伝送するためのリセット信号を実装することを含んでいる。状態データを部分的に伝送することによって、信号値の変更を効果的に実行することができる。FPGAの僅かなリソースしか必要とされないので、それによって、特にリアルタイムシステムにおける使用が容易になる。
【００５６】
本発明の有利な実施の形態においては、アクセス可能な信号値及び／又は変更可能な信号値及びそれに対応する記憶位置を有するリストを作成するステップは、信号値を形成するための複数の記憶位置の結合形態を求めることを含んでいる。従ってリストは、どのようにして信号値が状態データから求められるかについての具体的な情報を含んでいる。
【００５７】
本発明の有利な実施の形態において、本方法は、信号値を決定するためのFPGAコードを生成する付加的なステップを備えており、このFPGAコードには、読み出し可能な信号値及びそれに対応する記憶位置を有するリストに基づく、コンフィギュレーションメモリからのリードバックデータとしての状態データの読み出し、及び、リードバックデータからの信号値の決定が含まれている。従って、信号値を決定するための状態データの後続の処理を完全にFPGAにおいて実行することができる。相応に、FPGAからは決定された信号値だけを伝送することができ、それによってFPGAのインタフェースの負荷が軽減される。
【００５８】
本発明の有利な実施の形態において、本方法は、信号値を変更するためのFPGAコードを生成する付加的なステップを備えており、このFPGAコードには、読み出し可能な信号値及びそれに対応する記憶位置を有するリストに基づく、信号値からのライトバックデータの決定、及び、状態データとしてのライトバックデータのFPGAのコンフィギュレーションメモリへの書き込みが含まれている。従って、状態データを決定するための信号値の処理を完全にFPGAにおいて実行することができる。相応に、変更すべき信号値だけをFPGAに伝送することができ、それによってFPGAのインタフェースの負荷が軽減される。FPGAは内部インタフェースを介して、自身の固有のコンフィギュレーションメモリを読み出すことができ、またコンフィギュレーションメモリに書き込むことができる。その種の内部インタフェースは、例えばXilinx社の「internal configuration access port（ICAP）」である。択一的に、マイクロプロセッサ、例えばMicroBlazeを用いてインプリメンテーションを実現することもできる。
【００５９】
FPGAのコンフィギュレーションレベルは、リードバックを介してカラム毎でのみ読み出すことができる、又は、パーシャルリコンフィギュレーションを介して書き込むことができる。以下では、それらのカラムをリードバックカラムと称する。本発明の有利な実施の形態において、本方法は、一つの信号値に関する複数の状態データを内容としている複数の記憶位置を、FPGAの一つのリードバックカラムに配置することによって、FPGAハードウェアコンフィギュレーションを最適化する付加的なステップを備えている。一つのリードバックカラム内に配置することによって、一つの信号値に関する複数の状態データへのアクセス及び／又はFPGAにおける信号値の変更が加速される。一つの信号値に関する全ての記憶位置が一つのリードバックカラム内に配置される場合には、１回のオペレーションで信号値にアクセスすることができる。つまり、FPGAハードウェアコンフィギュレーションを生成する前に、複数の記憶位置の複数のリードバックカラムへのソートが行われる。
【００６０】
本発明の有利な実施の形態において、本方法は、一つの信号値に関する複数の状態を内容としている複数の記憶位置を、FPGAの隣接する領域に配置することによって、FPGAハードウェアコンフィギュレーションを最適化する付加的なステップを備えている。隣接する領域をFPGAの単一のリードバックカラムに関連付けることができるか、又は隣接する複数の複数のリードバックカラムに関連付けることができる。そのように隣接させて配置することによって、複数の記憶位置へのアクセスが高速化される。二つの信号値に関する複数の記憶位置が一つのリードバックカラム内に配置される場合には、１回のオペレーションでそれら二つの信号値にアクセスすることができる。相応のことが書き込みアクセスにも該当し、書き込みアクセスにおいては、一つの記憶位置において少なくとも一時的にその記憶位置に存在する信号値のみをFPGAに書き込むことができる。
【００６１】
本発明の有利な実施の形態において、本方法は、状態データを提供する複数の論理ブロックの出力端に記憶位置を追加する付加的なステップを備えている。通常はレジスタである記憶位置は状態データを読み出して、その状態データから信号値を決定することができる。利用できる状態データの数が多くなると、より多くの信号値にアクセスすることができる。
【００６２】
本発明の有利な実施の形態においては、FPGAはXilinx社のFPGAである。Xilinx社のFPGAは、FPGAの反復的なコンフィギュレーションを実現できる以外に、動作中のFPGAの部分的な読み出し及びコンフィギュレーションも実現することができる。
【００６３】
以下では、添付の図面を参照しながら、複数の有利な実施の形態に基づき、本発明を詳細に説明する。
【図面の簡単な説明】
【００６４】
【図１】制御コンピュータ及びリアルタイムシステムを備えているデータ処理システムの概略図を示す。
【図２】図１に示したリアルタイムシステムのFPGAの詳細図を示す。
【図３】図１に示したリアルタイムシステムに関するビルドを実施するための方法を示す。
【図４】図３に示したFPGAビルドの詳細図を示す。
【図５】図２に示したFPGAのコンフィギュレーションメモリのリードバックカラムでの編成の詳細図を示す。
【図６】コンフィギュレーションメモリの複数のリードバックカラムにおける関連性のあるメモリ内容の概略図を示し、左側には、最適化が行われていない分布が示されており、中央には、関連性のある記憶位置が集められることによる最適化が示されており、右側には、関連性のあるリードバック列に配置することによる最適化が示されている。
【図７】XMLモデルに関するスキーマを示す。
【図８】図３に示したビルド方法の結果の、図１に示したデータ処理システムの種々のコンポーネントへの分配を示す。
【図９】照会を行ったコンピュータにFPGAの状態データを伝送するためのタイムチャートを示す。
【図１０】一つの有利な実施の形態による、FPGAの信号値にアクセスするための方法のフローチャートを示す。
【図１１】一つの有利な実施の形態による、FPGAの信号値を変更するための方法のフローチャートを示す。
【図１２】レジスタを用いるFPGAの信号値の実装の概略図を示す。
【図１３】ルックアップテーブルを用いるFPGAの信号値の実装の概略図を示す。
【図１４】マルチプレクサを用いるFPGAの信号値の実装の概略図を示す。
【図１５】VCC/GNDへのルーティングを用いるFPGAの信号値の実装の概略図を示す。
【図１６】図１に示したリアルタイムシステムに関するビルドを実施するための図３に示した方法を基礎とした、信号をモデリングするための付加的な詳細が示されている図を示す。
【発明を実施するための形態】
【００６５】
図１には、ここではホストシステムとも称される制御コンピュータ２と、リアルタイムシステム３とを備えているデータ処理システム１の本発明による構造が示されている。リアルタイムシステム３は、明示的には図示していないネットワークコネクションを介して、制御コンピュータ２と接続されている。
【００６６】
リアルタイムシステム３は、図示していないCPUを備えている、参照符号CNで表されている計算ノード４と、この実施例ではXilinx社のFPGAであるFPGA５とを含んでいる。リアルタイムシステム３はここでは任意のデータ処理装置である。FPGA５は概略的に図２に示されており、また、機能レベル６及びコンフィギュレーションレベル７を含んでいる。コンフィギュレーションレベル７には、複数の記憶位置９を備えているコンフィギュレーションメモリ８が配置されている。コンフィギュレーションレベル７は、FPGA５を初期設定するための、FPGA５の論理レベルである。初期コンフィギュレーションプロセスの間に、コンフィギュレーションデータがコンフィギュレーションメモリ８に書き込まれ、また機能レベル６に伝送される。この実施例において、記憶位置９は、例えば図１２に示されているような、FPGA５のレジスタ６０に相当する。代替的な実施の形態では、記憶位置９が、図１３に示されているようなルックアップテーブル６１を用いて、図１４に示されているようなマルチプレクサ６２を用いて、又は、図１５に示されているような、スイッチボックス６３内で実現されており、且つ、基本的なバイナリ値で表されている電源電圧又は基準電位への択一的な配置配線に関するVCC/GNDへのルーティングを用いて実装されている。
【００６７】
FPGA５はFPGAボード１０に配置されており、且つ、インタフェース１１を介して、そのインタフェース１１にアクセスするコントローラ１２と接続されている。インタフェース１１はここでは、１フレームの最小読み出し量で、１００ＭＨｚのクロック周波数において３２ビット幅を有している。一つのフレームには、レジスタ値、ルックアップテーブル６１及び／又はマルチプレクサ６２若しくは配置配線のコンフィギュレーションについての情報の任意の組み合わせを含ませることができる。FPGAボード１０には、コントローラ１２によるアクセスについてのFPGA変数マッピングファイル（Variable Mapping File）１３が記憶されている。FPGA５の信号値へのアクセス、又はFPGA５の信号値の変更に関する以下の説明は、それぞれ、上述の変更又はアクセスに関して相応に当てはまる。信号値をそれぞれ、択一的に、レジスタ６０、ルックアップテーブル６１、マルチプレクサ６２又はVCC/GNDへのルーティングによって実装することができる。
【００６８】
リアルタイムシステム３を利用するために、下記において図３又は図１６を参照しながら説明するように、ビルドが実施される。ビルドの開始にあたる基礎として、いずれもSimulinkを用いて生成されたFPGAモデル２０及びCPUモデル２１が使用される。FPGAモデル２０を基礎として、FPGAビルド２２において、公知のハードウェア記述言語であるVHDLによって、ロジックアロケーションファイル２３及びFPGAハードウェアコンフィギュレーション２４が生成される。ロジックアロケーションファイル２３には、ランタイムにFPGA５においてアクセス可能な信号値の状態データに関する、コンフィギュレーションメモリ８の記憶位置９を有するリストが記憶される。また、信号値を形成するための記憶位置９の結合形態が求められ、ロジックアロケーションファイル２３に記憶され、それにより、ロジックアロケーションファイル２３を基礎として、状態データから信号値を決定することができ、またそれとは逆に、信号値から状態データを決定することができる。
【００６９】
ロジックアロケーションファイル２３を基礎として、上記において既に述べた、機械読み出し可能なFPGA変数マッピングファイル１３が生成され、このFPGA変数マッピングファイル１３は、記憶位置９と信号値の対応関係を機械読み出し可能な形態で含んでいる。この他に、図１６に詳細に示されているように、FPGAモデル２０及びロジックアロケーションファイル２３を使用して、信号XMLモデル７０が形成される。信号XMLモデル７０を基礎として、マッピングファイルジェネレータ（Mapping File Generator）７１において、FPGA変数マッピングファイル１３が生成される。CPUモデル２１を基礎として、CPUビルド２６において、リアルタイムシステム３のCPUにおいて実行可能なアプリケーション２７が作成される。更に、CPUビルド２６を基礎として、CPUトレースファイルジェネレータ２８においては、CPUトレースファイル２９が生成される。同様に、入力情報として信号XMLモデル７０を受け取るFPGAトレースファイルジェネレータ３０においては、FPGAトレースファイル３１が生成される。後続のステップにおいては、２つのトレースファイル２９，３１がトレースファイルマージャ３２において、一つの完全なトレースファイル３３に統合される。
【００７０】
ビルド方法は、全体的な結果として、アプリケーション２７、完全なトレースファイル３３、FPGA変数マッピングファイル１３及びFPGAハードウェアコンフィギュレーション２４を有する、リアルタイムシステム３のためのダウンロードアプリケーション３４を供給する。
【００７１】
図４には、FPGAビルド２２が詳細に示されている。入力として、FPGAビルド２２はFPGAサブシステムのブロック線図４０を取得し、このFPGAサブシステムは加算、乗算等の基本ブロックを複数組み合わせたものを含んでいる。このプロセスの結果として、完成したビットストリーム並びにインタフェース記述を含むModel.iniファイル４１が得られる。インタフェース記述は、FPGAサブシステムにおいてインスタンスが生成されている全てのインタフェースのリストを含んでいる。この記述によって、FPGAインタフェースに対応するCPUインタフェースを生成することができる。FPGAビルド２２の第１のステップにおいては、FPGAサブシステムのブロック線図４０から、Xilinx社のSystem Generator（XSG）４２によって、HDL記述が生成される。HDL記述はこの実施例においてVHDL記述である。この記述は続いて合成ツール（XST）によってネットリストに翻訳される。
【００７２】
Simulinkモデルのネットリストは、XSGビルドの後に、他のフレームワークコンポーネントと共に、一つの完全なネットリストに統合される。続いて、全体のデザインがインプリメンテーションプロセスによってビットストリームに翻訳される。
【００７３】
Simulinkブロック線図のブロック出力と、FPGAコンポーネント（Ｄフリップフロップ）又はコンフィギュレーションメモリ８におけるFPGAコンポーネントに属する記憶位置９との間に関係性が確立される。このマッピングは逐次的に、FPGAビルド２２の間に構成又は精製（リファイン）される。
【００７４】
FPGAサブシステムのブロック線図がXSGによってHDLに翻訳されると、それらの二つの記述はその構造に関して類似している。これを、例えばSimulinkブロックのブロック出力とエンティティのポートとの間の直接的な関係性を構築するために利用することができる。
【００７５】
本方法は更に、一つの信号値に関する複数の状態データを内容としている記憶位置９を、FPGA５の一つのリードバックカラムに配置することによって、FPGAハードウェアコンフィギュレーション２４を最適化するステップを備えている。コンフィギュレーションメモリ８を複数のリードバックカラムに編成したものが図５に示されている。一つのフレームは、コンフィギュレーションメモリ８においては１ビット幅且つ１３１２ビット長のカラムを含み、機能レベル６の一つのCLBカラムにわたり延在している。一つのフレーム内の一つのビットと、そのビットをコンフィギュレートする機能エレメントとの相関を、Xilinx社のツールによって求めることができる。従って、一つの信号値を決定するためには、一つのフレームの一部だけが重要になる。一つのリードバックカラム内に配置することによって、一つの信号値に関する複数の状態データへのアクセスが加速される。一つの信号値に関する全ての記憶位置９が一つのリードバックカラム内に配置される場合には、１回のオペレーションでその信号値にアクセスすることができる。一つの有利な実施の形態においては、FPGA５のランタイムに変更されない複数の信号値は、ランタイムに変化する可能性があるFPGAコンフィギュレーションとは離されて、複数のリードバックカラムに配置される。
【００７６】
図６の左側に示されているように、関連性のある複数のリードバックカラムが、当初はコンフィギュレーションメモリ８全体にわたり分散している。FPGAハードウェアコンフィギュレーション２４の最適化によって、一つの信号値に関する複数の状態を内容としている複数の記憶位置９がFPGA５の隣接する領域に配置される。隣接する領域をFPGA５の単一のリードバックカラムに関連付けることができるか、又は隣接する複数のリードバックカラムに関連付けることができる。そのように隣接させて配置することによって、複数の記憶位置９へのアクセスが高速化される。一つのリードバックカラム内に二つの信号値に関する複数の記憶位置９を配置することによって、１回のオペレーションでそれら二つの信号値にアクセスすることができる。図６の中央には、関連性のある複数の記憶位置９を集めることによって、リードバックカラムの数を低減した最適化が示されている。図６の右側の図によれば、更なる最適化によって、関連性のあるリードバックカラムが隣接するようにFPGA５に配置することが付加的に行われている。
【００７７】
信号の関連性のある情報を含んでいるXMLモデル７０のスキーマが図７に例示的に示されている。
【００７８】
FPGASubsystem型の要素は、各リードバックモデルのインスタンスのルートを形成する。FPGAサブシステムは、Simulinkのモデル階層に依存して、再帰的に別のサブシステムのインスタンスを含んでいる。このコンテキストにおいて、サブシステムを、基本ブロック（例えば加算器）としても、Simulinkサブシステムとしても実施することができる。サブシステム又はブロックの名前及び所属のHDLエンティティの名前は、サブシステムクラスのプロパティname又はhdlInstanceに記憶される。
【００７９】
各サブシステムは、SimulinkモデルにおけるI/Oポート又は信号を表す複数の信号を含むことができる。各信号は、idプロパティを介して一義的な識別子を得る。信号の方向（入力／出力）は重要ではなく、またモデリングの際の冗長性は回避されるべきなので、Signalクラスは規則に従い、シミュリンクモデルにおける複数のブロック又はサブシステムの出力を表す。複数のサブシステムが同一の信号を共有する場合、SignalReferenceクラスのインスタンスを介して、他のサブシステムインスタンスの信号を参照することができる。
【００８０】
信号を合成によってレジスタ６０と結合させることができる。この結合は同様に、SignalクラスとRegisterクラスとの間で見て取れる。レジスタ６０と、レジスタ６０の初期値が記憶される複数のフレームとの関係性は、相応のクラスを介してモデリングされる。信号のプロパティはPropertiesクラスを介してモデリングされる。リードバック及びそれに続く信号の処理には、特に、プロパティBinaryPoint、DataType及びWidthが関係する。
【００８１】
Registerクラスの要素はFrameクラスを介して複数のビットと関連付けられている。信号の幅と、それに属するレジスタ６０の幅は場合によっては変化する可能性があるので、レジスタ６０は信号と同様に固有のwidthプロパティを有している。Bitクラスは差し当たりビット位置（pos）を介して、レジスタ６０のどのビットが関係するかを表す。更に、Bitクラスのインスタンスは、フレーム内のどの語（framewordOffset）にレジスタのビットが存在するか、またどのビットマスク（mask）でもってビットの値をフレーム語からマスクすることができるかの情報を含んでいる。
【００８２】
リードバックモデルはXMLファイルに記憶されている。モデルを例えばツール全体にわたり処理することができる。モデルはXSDスキーマに対するバリデーションによって、構文的及び構造的に正しいものに保たれる。
【００８３】
本方法は、信号値を決定するためにリードバックアプリケーションとしてFPGAコード４４を生成する付加的なステップを備えており、このFPGAコード４４には、FPGA変数マッピングファイル１３に基づく、コンフィギュレーションメモリ８からのリードバックデータとしての状態データの読み出し、及び、リードバックデータからの信号値の決定が含まれている。
【００８４】
本方法は、信号値を変更するためにライトバックアプリケーションとしてFPGAコード４４を生成する付加的なステップを備えており、このFPGAコード４４には、FPGA変数マッピングファイル１３に基づく、信号値からのライトバックデータの決定、及び、状態データとしてのライトバックデータのFPGA５のコンフィギュレーションメモリ８への書き込みが含まれている。詳細については、下記において図１１を参照しながら説明する。
【００８５】
図８には、ビルド方法の結果が種々のコンポーネントに分配される様子が示されている。Simulinkモデル２０，２１を基礎として、FPGAビルド２２によってビルドが実施される。FPGAハードウェアコンフィギュレーション２４が生成され、FPGA５にロードされる。このことは、図１０を参照して説明する方法においてステップＳ１００に対応する。アプリケーション２７が計算ノード４にロードされ、また完全なトレースファイル３３が制御コンピュータ２に伝送される。
【００８６】
動作時に、FPGAハードウェアコンフィギュレーション２４がFPGA５において開始及び実行される。このことは、図１０を参照して説明する方法においてステップＳ１１０に対応する。アプリケーション２７は計算ノード４において開始及び実行される。制御コンピュータ２においては制御ソフトウェア５０が開始される。制御ソフトウェア５０はこの実施例において、dSPACE社のソフトウェアControlDeskである。ControlDesk５０は、図１に示されているように、計算ノード４を介してリアルタイムシステム３と通信する。
【００８７】
ランタイム中にFPGA５の信号値を表示するために、ControlDesk５０を介して、その信号値を要求することができる。このことは、図１０を参照して説明する方法においてステップＳ１２０に対応する。種々の信号値へのアクセスは、完全なトレースファイル３３及びSimulinkを用いた線図的なモデリングを介して行われる。信号値の表示はグラフィック表示として行われ、その際、信号値はリストから「ドラッグ・アンド・ドロップ」によって、画面上に表示されている、信号値を表示するための機器の上に移動される。リストからの信号値は一義的な識別番号に基づき識別される。
【００８８】
ControlDesk５０は計算ノード４に対して信号値を要求する。このために、コンピュータノード４には、ControlDesk５０からの要求を受信するデータ取得サービス（Data Acquisition Service）５１が実装されている。データ取得サービス５１は、FPGA５のためのコントローラ１２に対して信号値を要求する。コントローラ１２は、FPGA５の動作中に、FPGA５の機能レベル６からFPGA５のコンフィギュレーションメモリ８への状態データの伝送を開始する。このステップは、図１０を参照して説明する方法においてステップＳ１３０に対応する。つまり動作中には、トリガによって、機能レベル６の全てのレジスタ内容がコンフィギュレーションレベル７にミラーリングされる。択一的な実施の形態においては、FPGA変数マッピングファイル１３から、信号値の決定に必要とされる状態データの部分が求められ、それらの部分のみがコンフィギュレーションメモリ８において保護される。
【００８９】
更に、FPGA５においては、リードバックアプリケーション４４によって、状態データがコンフィギュレーションメモリ８からリードバックデータとして読み出される。このことは、図１０を参照して説明する方法においてステップＳ１４０に対応する。読み出されたリードバックデータはここでは一つ又は複数のフレーム、即ち、FPGA５の一つ又は複数のリードバックカラムを含んでいる。その際、先ず、信号値の決定に必要とされるリードバックカラムが求められ、それらのリードバックカラムのみが読み出される。必要とされるリードバックカラムに関する情報を、FPGA変数マッピングファイル１３を介して求めることができる。
【００９０】
リードバックデータに基づき、FPGA５において信号値が決定される。このことは、図１０を参照して説明する方法においてステップＳ１５０に対応する。更に、レジスタ値がフレームから検索及び抽出される。それらの情報はFPGA変数マッピングファイル１３から得られる。リードバックデータの少なくとも一つのレジスタ値へのマッピングが行われる。その際に、必要であれば、信号値が複数のレジスタ６０の状態データから形成される。相応に、信号値を決定するために、レジスタ６０の各内容がFPGA変数マッピングファイル１３に従い一緒に処理される。
【００９１】
そのようにして決定された信号値は、FPGA５のインタフェース１１を介してコントローラ１２に伝送され、またコントローラ１２は、計算ノード４のデータ取得サービス５１を介して、制御コンピュータ２のControlDesk５０に信号値を伝送する。
【００９２】
FPGAの機能レベルから、照会を行ったコンピュータに状態データを伝送するためのタイムチャートが図９に示されている。
【００９３】
上記において説明した、FPGA５の信号値への読み出しアクセスと同様に、FPGA５の信号値を変更するための書き込みアクセスも実現される。この書き込みアクセスについては、下記において図１１を参照しながら説明する。
【００９４】
FPGA５の信号値を変更するための方法は、ステップＳ２００において、FPGAハードウェアコンフィギュレーション２４をFPGA５にロードすることによって開始される。このステップＳ２００は上記において説明したステップＳ１００に対応する。
【００９５】
上記において説明したステップＳ１１０と同様に、ステップＳ２１０においては、FPGAハードウェアコンフィギュレーション２４がFPGA５において開始及び実行される。
【００９６】
ステップＳ２１５においては、セットすべきFPGA信号値が選択される。FPGA信号値を変更するための基礎として、ステップＳ２２０からＳ２５０においては、上記において説明した相応のステップＳ１２０からＳ１５０と同様に、信号値がFPGA５の機能レベル６から読み出される。
【００９７】
ステップＳ２６０において、信号値がセットされる。このために、先ず、読み出された信号値がユーザに表示され、それに基づき、ユーザは信号値に関する新たな値をセットする。
【００９８】
ステップＳ２７０においては、信号値からライトバックデータが決定される。ライトバックデータの決定は、上記においてステップＳ１５０に関して説明した、リードバックデータからの信号値の決定の原理に基づき行われる。相応に、信号値は一つ又は複数のレジスタ６０に関するライトバックデータにマッピングされる。信号値の変化によって、事前にステップＳ２３０において伝送された状態データにも変化が生じる。
【００９９】
ステップＳ２８０においては、ライトバックデータが状態データとして、FPGAのコンフィギュレーションメモリ８に書き込まれる。コンフィギュレーションメモリ８へのライトバックデータの書き込みは、上記においてステップＳ１４０に関して説明した、状態データの読み出しの原理に基づき行われる。相応に、機能レベル６において信号値のコンフィギュレーションを有している領域の全ての状態データがコンフィギュレーションメモリ８にミラーリングされる。
【０１００】
ステップＳ２９０においては、ライトバックデータが、コンフィギュレーションメモリ８からFPGA５の機能レベル６に伝送される。コンフィギュレーションメモリ８へのライトバックデータの伝送は、上記においてステップＳ１３０に関して説明した、機能レベル６の状態データの伝送の原理に基づき行われる。
【０１０１】
以下では、図１２から図１５を参照しながら、信号値の種々の実装を説明する。
【０１０２】
図１２においては、有利な実施の形態に即したレジスタ６０による信号値の実装が示されている。ここでは、信号値の各ビットがレジスタ６０によってマッピングされる。レジスタ６０は、ランタイムに所望の信号値に応じて変更されなければならない、FPGAのコンフィギュレーションストリーム（ビットストリーム）における関連性のある領域を決定するためのエンティティとして使用される。従って、レジスタ６０は複数の入力を有している必要はない。またシステムクロックとの接続部をオプションとして実装することもできる。この実装では、各信号値がレジスタ６０の形態で実装されることを考慮する必要がある。択一的に、デザインのハードウェア記述において、即ちVHDL記述において、信号値を相応のレジスタマクロに置換することもできる。初期FPGAデザインをインプリメンテーションした後に、レポートファイルに基づき、即ちロジックアロケーションファイル２３に基づき、FPGAビットストリームにおける、全ての信号値の各レジスタビットの正確なアドレスを決定することができる。初期データストリームをロード及び実行した後に、ランタイム中に、レジスタ６０の各値がパーシャルリコンフィギュレーションによって変更されることによって、信号値を変更することができる。続いて、リセット信号がセットされ、その結果、変更された全てのレジスタ６０に対して、信号値の新たな値がアクティブになる。
【０１０３】
レジスタ６０を使用する場合、リソース要求は、調整すべき信号値の１ビットにつき一つのレジスタ６０に制限される。信号値を表すために必要とされるレジスタ６０を、ユーザはもはや自由に使用することはできない。FPGA５における専用の大域的なリセットネットワークを使用することによって、付加的なリセットネットワークが、残りのFPGAデザインのルーティングの実現に影響を及ぼすことはほぼない。信号値を変更するために操作しなければならないFPGA５のコンフィギュレーションストリームの部分を容易に決定することができる。
【０１０４】
図１３には、代替的な実施の形態として、ルックアップテーブル（LUT）６１の出力を介して個々のビットを表すことによる信号値の実装が示されている。各FPGA処理ユニット（CLB）は複数のルックアップテーブル６１を有しており、それらのルックアップテーブル６１は通常の場合、任意のロジック機能を実現するために使用される。ここでは、ルックアップテーブル６１が信号値のソースとして使用され、それらの信号値のロジック機能をランタイムにパーシャルリコンフィギュレーションによって変更することができる。
【０１０５】
この実装では、VHDL記述において、各信号値について相応に多数のLUTマクロのインスタンスが生成されなければならないことを考慮する必要がある。FPGAインプリメンテーションプロセスの後に、ルックアップテーブル６１の内容を操作するためには、コンフィギュレーションデータストリームのどの部分を操作しなければならないかを決定する必要がある。その後、ランタイム中に、FPGA５のコンフィギュレーションストリームにおける相応の領域が求められ、パーシャルリコンフィギュレーションによって変更されることによって、信号値が相応に変更される。
【０１０６】
図１４においては、別の代替的な実施の形態に即したマルチプレクサ６２による信号値の実装が示されている。信号値の１ビットはマルチプレクサ６２の出力として実現されている。マルチプレクサ６２の二つの入力端は０（S1）と１（S2）に接続されている。マルチプレクサ６２のセレクタ（C）は、マルチプレクサ６２の二つの入力の切換を行うために、FPGAコンフィギュレーションのビットを介して制御される。この実装においては、信号値がマルチプレクサ６２の形態で実装され、その実装後には、コンフィギュレーションストリーム内のどの位置においてマルチプレクサ６２を再び発見することができるかが既知であることが保証されなければならない。その後、ランタイム中に、FPGA５のコンフィギュレーションストリームにおける相応の領域が求められ、パーシャルリコンフィギュレーションによって変更されることによって、信号値が相応に変更される。
【０１０７】
レジスタ６０又はルックアップテーブル６１によって信号値を表す場合よりも、マルチプレクサ６２を用いた信号値の実装では、使用されるロジックリソースが少なくて済む。
【０１０８】
図１５においては、更に別の実施の形態に即した、VCC/GNDへのルーティングによる信号値の実装が示されている。これは、非常にリソースを節約して、信号値を実装することができる。スイッチボックス６３においては、制約条件（Constraint）の形でこの実装に影響が及ぼされない限りは、信号値の各ビットは０又は１のコネクタに配置配線される。信号値の個々のビットのルーティングを、ランタイム中に、スイッチボックス６３内のパーシャルリコンフィギュレーションによって、実線で表されている本来の１から、破線で表されている０になるように、又はその逆に０から１になるように変更することができる。
【０１０９】
動作中は、FPGA５のパーシャルリコンフィギュレーションによって、FPGA５における関連性のある各部分を上書きすることができる。ここでは、SimulinkのConstantブロックである信号値が、リコンフィギュレーション可能なルックアップテーブル６１、レジスタ６０又はマルチプレクサ６２にマッピングされる。続いて、信号値は動的なパーシャルリコンフィギュレーションによって、任意の値に変更される。
【０１１０】
本方法は、リアルタイムシステム３におけるロード及び実行後に、上述の方法の各ステップを実行させる、コンピュータ実行命令を有しているコンピュータプログラム製品として実現されている。
【０１１１】
ディジタル記憶媒体は、上述の方法がリアルタイムシステム３において実施されるように、リアルタイムシステム３と協働する、電子的に読み出し可能な制御信号を提供する。
【０１１２】
【符号の説明】
【０１１３】
１  データ処理システム
２  制御コンピュータ
３  リアルタイムシステム、データ処理装置
４  計算ノード
５  FPGA
６  機能レベル
７  コンフィギュレーションレベル
８  コンフィギュレーションメモリ
９  記憶位置
１０  FPGAボード
１１  インタフェース
１２  コントローラ
１３  FPGA変数マッピングファイル
２０  FPGAモデル
２１  CPUモデル
２２  FPGAビルド
２３  ロジックアロケーションファイル
２４  FPGAハードウェアコンフィギュレーション
２６  CPUビルド
２７  アプリケーション
２８  CPUトレースファイルジェネレータ
２９  CPUトレースファイル
３０  FPGAトレースファイルジェネレータ
３１  FPGAトレースファイル
３２  トレースファイルマージャ
３３  完全なトレースファイル
４０  ブロック線図
４１  Model.iniファイル
４２  Xilinx社のSystem Generator
４３  リードバックファイルの生成
４４  FPGAコード、リードバックアプリケーション
４５  リードバックアプリケーションのソース
５０  制御ソフトウェア、ControlDesk
５１  データ取得サービス
６０  レジスタ
６１  ルックアップテーブル
６２  マルチプレクサ
６３  スイッチボックス
７０  信号XMLモデル
７１  マッピングファイルジェネレータ
【図１】
0006436916.tif 000002
【図２】
0006436916.tif 000003
【図３】
0006436916.tif 000004
【図４】
0006436916.tif 000005
【図５】
0006436916.tif 000006
【図６】
0006436916.tif 000007
【図７】
0006436916.tif 000008
【図８】
0006436916.tif 000009
【図９】
0006436916.tif 000010
【図１０】
0006436916.tif 000011
【図１１】
0006436916.tif 000012
【図１２】
0006436916.tif 000013
【図１３】
0006436916.tif 000014
【図１４】
0006436916.tif 000015
【図１５】
0006436916.tif 000016
【図１６】
0006436916.tif 000017