(57)【要約】【課題】ＦＰＧＡのコンフィグレーション用データの管理を容易にして、システムの信頼性、連続可用性、機能変更の容易性を実現した情報処理システムを得る。【解決手段】コンフィグレーション制御装置５とＦＰＧＡ２１〜２ｎとをコンフィグレーションバス１１により接続すると共に、バススイッチ９，１０を介してローカルバス７およびシステムバス８と接続する。フラッシュメモリー６に格納されたデータにより、ＦＰＧＡ２１〜２ｎをコンフィグレーション制御する期間は、コンフィグレーション制御装置５によりリセット信号ａを生成して、バススイッチ９，１０によりＦＰＧＡ２１〜２ｎをバス７，８から切り離す。フラッシュメモリー６には、予めシリアルポート１を介してコンフィグレーションデータを格納しておき、システム起動時に、コンフィグレーション制御装置５はこの格納データを自動的に読み出しつつコンフィグレーションを行う。【選択図】　　　図１
2004021867.tif 000002
【特許請求の範囲】
【請求項１】
ＣＰＵと、メモリーと、これ等ＣＰＵ及びメモリーの配下のバスと、このバス上に配置され、ＦＰＧＡ（フィールドプログラマブルゲートアレー）のコンフィグレーション制御をなすコンフィグレーション制御手段とを含む情報処理システムであって、
前記コンフィグレーション制御の開始から終了までの間、前記ＦＰＧＡを前記バスから切離すためのバススイッチを含むことを特徴とする情報処理システム。
【請求項２】
前記コンフィグレーション制御手段は、前記コンフィグレーション制御の開始から終了までの間、前記バススイッチをイネーブル状態に制御する制御信号を生成するようにしたことを特徴とする請求項１記載の情報処理システム。
【請求項３】
前記コンフィグレーション制御手段は、予めコンフィグレーション用データを格納すると共に、この格納データの格納位置を示すアドレスをも格納したフラッシュメモリーを有しており、システムの電源投入に応答して前記フラッシュメモリに格納されている前記アドレスをアクセスして、前記コンフィグレーション用データを、このフラッシュメモリーから読み出しつつ前記ＦＰＧＡのコンフィグレーション制御をなようにしたことを特徴とする請求項１または２記載の情報処理システム。
【請求項４】
前記コンフィグレーション制御手段はシリアルポートを有しており、コンフィグレーション用データをこのシリアルポートを介して入力しつつ前記フラッシュメモリーに格納するようにしたことを特徴とする請求項１〜３いずれか記載の情報処理システム。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は情報処理システムに関し、特にＦＰＧＡ（フィールドプログラマブルゲートアレー）を使用した情報処理システムにおけるコンフィグレーション制御方式に関するものである。
【０００２】
【従来の技術】
ＦＰＧＡ（フィールドプログラマブルゲートアレー）は、一種のゲートアレーであり、フィールドにて書き換えられるため、汎用性の高いハードウェアとして情報処理システムや通信システム等に幅広く用いられている。ＦＰＧＡは、入出力端子および内部の機能回路をデータファイルとして管理できるため、データファイルを更新することはハードウェアを更新するに等しい。データファイルは、コンフィグレーションデータとして外部よりＦＰＧＡに書き込まれるため、更新したデータによりＦＰＧＡを再コンフィグレーションすることによって、容易にシステムの機能が変更できるという特徴がある。
【０００３】
近年、システムは信頼性、連続可用性、機能変更の容易性が要求されてきている。この要請に応えるために、例えば、図１３〜１５に示すようなＦＰＧＡコンフィグレーション制御方法が提案されている。図１３を参照すると、ＣＰＵ２の配下のローカルバス７とコンフィグレーションバス５１とを分離して、これ等バスをＩ／Ｆ（バスインタフェース）５２を介して接続可能な構成とし、装置初期化時には、ＲＯＭ（読み取り専用メモリー）５３に格納された初期動作用のデータにより、ＦＰＧＡ２１をコンフィグレーションして動作・実行させるようになっている。
【０００４】
この間に、ハードウェア機能データをメモリー３からＩ／Ｆ５２を介してＲＡＭ（ランダムアクセスメモリー）５５に転送し、再コンフィグレーションする機能を備え、システムの連続可用性、ハードウェア機能変更の容易性を実現している。なお、ＦＰＧＡダウンロード制御部５４は、既にコンフィグレーションされているデータ種別と、新たにコンフィグレーションが依頼されたデータ種別とを比較し、同一のデータと判断された場合は再コンフィグレーションを実行しないことにより、信頼性を高めている。
【０００５】
図１４を参照すると、ＦＰＧＡ２１を、ローカルバス７と、Ｉ／Ｏ（入出力装置）５９に接続するＩ／Ｏバス６０との間のブリッジ（機能）として使用しており、ＦＰＧＡ２１のコンフィグレーション実行時には、ＣＰＵ２配下のローカルバス７と、コンフィグレーションバス５１とをバッファ５７により切り離し、ＣＰＵ２の動作を妨げないようにしてシステムの連続可用性を実現している。また、コンフィグレーションデータのＦＲＯＭ（フィールドプログラマブルＲＯＭ）５８へのダウンロードは、Ｉ／Ｏバス６０からＦＰＧＡ２１を介してデータ種別毎に複数のＦＲＯＭ５８に格納する。
【０００６】
新たに更新されたコンフィグレーションデータにより、ＦＰＧＡ２１のコンフィグレーションが失敗した場合には、データ種別毎にＦＲＯＭ５８にデータが格納されているため、ＦＰＧＡダウンロード制御部５４が更新前のデータを選択して、ＦＰＧＡ２１を再コンフィグレーションすることができる。その結果、システムの信頼性、ハードウェア機能変更の容易性を実現している。
【０００７】
図１５を参照すると、機能の異なる複数のＦＰＧＡ２１〜２ｎをデイジーチェーンにて接続し、ＦＲＯＭ５８に格納されたデータにより、順番にコンフィグレーションを実行する。データの管理は、ＦＰＧＡダウンロード制御部５４と、シリアルケーブル６２にて接続されたＰＣ（パーソナルコンピュータ）６１にて行い、ＰＣ６１からＦＲＯＭ５８にダウンロードする個々のデータは、付随するＣＲＣ（エラーチェックコード）を計算することによって、エラーのあるデータのみを再度ＰＣ６１からダウンロードすることにより信頼性を実現している。
【０００８】
【発明が解決しようとする課題】
近年、さらに高速、大容量ＦＰＧＡが普及してきており、従来ＡＳＩＣ（専用大規模集積回路）でなければ実現できなかった高速動作、高集積処理がＦＰＧＡにて実現可能となってきた。これにより、多数の高速、大容量ＦＰＧＡを使ったシステムが開発されるようになってきている。
【０００９】
一方、近年の通信システムにおいては、ユーザが要求するシステムの多様化が進み、これに素早く応えるためにハードウェアの開発期間の短縮が不可欠となっている。これに対応して、ＦＰＧＡを使い機能を容易に変更できるように装置を設計しておくことによって、ユーザの要求するシステムを短期間にて提供可能となる。しかし、ＦＰＧＡは初期設定としてコンフィグレーション処理が必要であるが、このための回路は装置に特化したものではなく、拡張性があり、小規模であることが必要である。
【００１０】
また、コンフィグレーションデータは、更新のためのソフトウェアがデータファイルとして扱われる必要がある。従って、コンフィグレーション回路はＣＰＵ配下に位置すべきであって、回路はＣＰＵへの負荷を考慮にいれる必要がある。すなわち、ＦＰＧＡのコンフィグレーション動作自体を回路に委ね、システムを管理するＣＰＵの動作を損ねることのないようにするべきである。
【００１１】
また、大規模ＦＰＧＡを多数使用することによってコンフィグレーションデータ容量が大規模となり、データダウンロードに費やす時間が装置の立ち上げ時間に与える影響は無視できない。さらに、コンフィグレーション処理が異常状態となった場合、その対処が確実に実行できることも重要である。また、コンフィグレーションデータの管理方法も、拡張性に対応できるものでなければならない。のようにコンフィグレーションの方法は、システムの信頼性、連続可用性の確保を考慮する必要がある。
【００１２】
図１３〜１５に示す従来例においては、これらを実現するために幾つかの問題点がある。図１３に示す従来例においては、コンフィグレーションデータを、ＲＯＭ５３およびＲＡＭ５５に格納しなければならない問題がある。すなわち、ＲＡＭ５５を使用しているため、電源投入の度にＣＰＵ２はコンフィグレーションデータをＲＡＭ５５に転送しなければならない。従って、ＣＰＵ２の処理に負荷がかかることはさけられない。また、ＲＯＭ５３に格納されたデータを更新する場合は、物理的にＲＯＭ５３を交換する必要があって、ハードウェア機能変更の容易性がない。さらに、装置に特化した回路であるため拡張性に欠けている。
【００１３】
図１４に示す従来例においては、ＦＰＧＡ２１がローカルバス７とＩ／Ｏバス６０とのブリッジとして機能していて、ＦＰＧＡ２１のコンフィグレーションバス上に、別のＣＰＵ５６が配置されている問題がある。すなわち、ローカル（ホスト）バス７上のＣＰＵ２への負荷は軽減できるが、コンフィグレーションバス５１上にＦＲＯＭ５８を配置してるため、メモリーマッピングにＦＰＧＡコンフィグレーションデータ領域を確保しなければならない。
【００１４】
小規模のＦＰＧＡを使用する場合は問題は少ないが、大容量ＦＰＧＡを多数使用する場合は、容易にメモリーマッピングを変更できない問題がある。また、これによってソフトウェアの流用ができない問題がある。
【００１５】
コンフィグレーションは、ハードウェア固有のものとして管理、実行されるべきであり、ＣＰＵがアプリケーションプログラムの様に扱うのは管理が複雑となりやすい。また、コンフィグレーションバスが異常となった場合は、ＣＰＵが正常に動作しなくなり、このＣＰＵがこれとは別の制御を行っている場合、そこへの影響が発生する。さらに、ＦＲＯＭへの再書き込みができない。すなわち、信頼性に欠ける。さらにまた、ＣＰＵがＦＲＯＭへの書き込み手順を実行しなければならないため、ソフトウェアの流用が困難となる。
【００１６】
図１５に示す従来例においては、コンフィグレーションデータのダウンロードはシリアルケーブルを使用しており、大規模ＦＰＧＡにおいてはデータ転送容量が大きいため、ダウンロードに時間がかかり実用的でない問題がある。
【００１７】
本発明の目的は、拡張性・汎用性のある小規模なＦＰＧＡコンフィグレーション回路を有し、ＣＰＵのコンフィグレーションデータの管理を容易にして、システムの信頼性、連続可用性、機能変更の容易性を実現したコンフィグレーション制御装置を有する情報処理システムを提供することである。
【００１８】
【課題を解決するための手段】
本発明によれば、ＣＰＵと、メモリーと、これ等ＣＰＵ及びメモリーの配下のバスと、このバス上に配置され、ＦＰＧＡのコンフィグレーション制御をなすコンフィグレーション制御手段とを含む情報処理システムであって、前記コンフィグレーション制御の開始から終了までの間、前記ＦＰＧＡを前記バスから切離すためのバススイッチを含むことを特徴とする情報処理システムが得られる。
【００１９】
そして、前記コンフィグレーション制御手段は、前記コンフィグレーション制御の開始から終了までの間、前記バススイッチをイネーブル状態に制御する制御信号を生成するようにしたことを特徴とする。また、前記コンフィグレーション制御手段は、予めコンフィグレーション用データを格納すると共に、この格納データの格納位置を示すアドレスをも格納したフラッシュメモリーを有しており、システムの電源投入に応答して前記フラッシュメモリに格納されている前記アドレスをアクセスして、前記コンフィグレーション用データを、このフラッシュメモリーから読み出しつつ前記ＦＰＧＡのコンフィグレーション制御をなようにしたことを特徴とする。また、前記コンフィグレーション制御手段はシリアルポートを有しており、コンフィグレーション用データをこのシリアルポートを介して入力しつつ前記フラッシュメモリーに格納するようにしたことを特徴とする。
【００２０】
本発明の作用は次の通りである。コンフィグレーション制御装置がＦＰＧＡのコンフィクレーションの動作制御を行っている間は、ＣＰＵの配下のバスとＦＰＧＡとを、バススイッチにより分離するよう構成する。これによって、ＣＰＵへの負荷を低減するばかりでなく、汎用的なシステムバスインタフェースを適用することによって、装置の拡張性と回路の小規模化をはかることができる。
【００２１】
また、コンフィグレーション用のデータを、予めフラッシュメモリーに、その格納位置を示すアドレスと共に格納しておくことにより、システムの電源入力に応答して、コンフィグレーション制御装置が自動的にこのフラッシュメモリーのアドレス部分にアクセス開始するようにしておけば、ＣＰＵの介在なしに、またＣＰＵの処理とは全く独立に、自動的にコンフィグレーションの動作制御が行われるという効果もある。
【００２２】
【発明の実施の形態】
以下に、本発明の実施例について図面を参照して説明する。図１は本発明の実施例を示す情報処理システムのブロック図であり、図２〜１５と同等部分は同一符号にて示している。図１において、本実施例は、システムを制御するＣＰＵ２、コンフィグレーション制御用のデータを受け付けるシリアルポート１、ＣＰＵ２のプログラムやデータを格納する主メモリーであるメモリー３を含む。また、ＣＰＵ２やメモリー３等を乗せて接続するローカルバス７、ローカルバス７とは独立したシステムバス８、ローカルバス７とシステムバス８とを接続するバスブリッジ４を含む。
【００２３】
さらに、システムバス８上に配置されたコンフィグレーション制御部５、コンフィグレーション制御部５によって制御され、ＦＰＧＡ２１〜２ｎのコンフィグレーションデータを格納するフラッシュメモリー６を含む。さらにまた、コンフィグレーション制御部５によって制御されるＦＰＧＡ２１〜２ｎ、コンフィグレーション制御部５と、ＦＰＧＡ２１〜２ｎとをディジーチェーンにて接続するコンフィグレーションバス１１を含む。さらにまた、ローカルバス７とシステムバス８とをＦＰＧＡ２１〜２ｎに接続するバススイッチ９，１０を含んで構成される。
【００２４】
ＦＰＧＡ２１〜２ｎのコンフィグレーションが完了すると、コンフィグレーション完了信号ｂがコンフィグレーション制御部５に送られる。また、コンフィグレーション制御部５から、コンフィグレーション完了後のリセット信号ａがＦＰＧＡ２１〜２ｎへ送られると共に、バススイッチ９，１０へ送られてイネーブル制御する。
【００２５】
なお、ローカルバス７あるいはシステムバス８に接続されているＦＰＧＡ２１〜２ｎが、コンフィグレーション実行中に、同バス７，８上の信号へ影響及ぼすことを抑制するため、ＦＰＧＡ２１〜２ｎを電気的に分離する目的にてバススイッチ９，１０が設けられている。
【００２６】
図２，３に、コンフィグレーションバス１１をデイジーチェーンにて、ＦＰＧＡ２１〜２ｎに接続する形態を示している。何れの場合も、コンフィグレーション制御部５がマスタとなり、ＦＰＧＡ２１〜２ｎがスレーブとなる。
【００２７】
デイジーチェーンには２種のタイプがあり、図２においては、コンフィグレーションバス１１をＦＰＧＡ２１，２２，…，２ｎの順にて接続する。この場合、コンフィグレーションは、始めに到着したデータからＦＰＧＡ２１をコンフィグレーションする。
【００２８】
ＦＰＧＡ２１のコンフィグレーションが完了すると、ＦＰＧＡ２１は続いて入力されたデータを次のＦＰＧＡ２２に渡す。この動作を繰り返して、すべてのＦＰＧＡ２１〜２ｎがコンフィグレーションされる。
【００２９】
図３では、コンフィグレーションバス１１がＦＰＧＡ２１〜２ｎに並列に接続される。この場合、コンフィグレーションは、データをすべてのＦＰＧＡ２１〜２ｎに渡しているが、ＦＰＧＡ２１が始めにコンフィグレーションされ、コンフィグレーションが完了すると、ＦＰＧＡ２１のコンフィグレーション完了信号ｂが次のＦＰＧＡ２２に伝えられて、次のコンフィグレーションが行われる。この動作を繰り返して、すべてのＦＰＧＡ２１〜２ｎのコンフィグレーションが完了する。
【００３０】
図４にリセット制御の形態を示す。図４において、ＦＰＧＡ２１〜２ｎへのコンフィグレーションが完了した後、それぞれのＦＰＧＡ２１〜２ｎが内部的に動作可能となった時に、コンフィグレーション完了信号ｂを発行する。一方、コンフィグレーション制御部５は、すべてのＦＰＧＡ２１〜２ｎがコンフィグレーション完了信号ｂを発行するまで、リセット信号ａを出力し続ける。図５に、そのタイミングチャートを示す。ただし、ＦＰＧＡは２１，２２，２３の３個の場合を示す。
【００３１】
すなわち、タイミングｔ０にコンフィグレーションが開始されて、タイミングｔ１にＦＰＧＡ２１のコンフィグレーションが終了し、同様にタイミングｔ２にＦＰＧＡ２２のコンフィグレーション、タイミングｔ３にＦＰＧＡ２３のコンフィグレーションが終了する。
【００３２】
図６に、フラッシュメモリー６のアーキテクチュアであるセクタの応用例を示す。フラッシュメモリー６はセクタ単位にてデータ消去や書込み保護を行う。また、データの書込みには一旦データを消去する必要がある。これらの処理は、そのセクタに該当する一つのアドレスに特定のコマンドを発行することによって行う。従って、データを消去する場合にはコマンドを１回発行すればよく、フラッシュメモリー６ヘのデータ格納方法を工夫することによって消去が簡素化できる。図６においては、例えばセクタ１にＦＰＧＡ番号、セクタ２にＦＰＧＡデータ先頭アドレス、セクタｋ〜ｐにＦＰＧＡデータを格納することによって、消去処理を簡素化している。
【００３３】
図７に、コンフィグレーション順（番）の制御方法を示す。図７において、コンフィグレーション制御部５は、始めにメモリーアドレス０００００ｈ（ｈ　はヘキサデシマルの数であることを示す）のデータを読み出す。アドレス０００００ｈからはデータ１００００ｈが取得できる。これはＦＰＧＡデータＡが格納されたセクタの先頭アドレスを指している。制御部５はこの先頭アドレスを基に、ＦＰＧＡデータＡの格納されているセクタからデータを取得して、ＦＰＧＡのコンフィグレーションバス１１に送出して、コンフィグレーションを実行する。ＦＰＧＡデータの最後は、データのすべてのビットが“１”の時となる。これはＦＰＧＡのコンフィグレーションデータに定義されたものである。
【００３４】
ＦＰＧＡデータＡがすべてコンフィグレーションされると、制御部５はメモリーアドレス００００１ｈに移り、ＦＰＧＡデータＢの格納先頭アドレスを取得する。このようにして、ＦＰＧＡデータＣまでのコンフィグレーションが終了すると、制御部５は、例えばメモリーアドレス００００３ｈから先頭アドレスとしてＡＬＬ“１”を取得するため、すべてのＦＰＧＡコンフィグレーションデータの転送終了を認識する。ここで、ＦＰＧＡ番号と先頭アドレスとのセクタを区別しているのは、メモリー容量内であれば、機能の異なる複数のＦＰＧＡデータを格納できるようにしていて、これらを選択してコンフィグレーションすることができる。
【００３５】
図８に、ＦＰＧＡデータフォーマットを示す。図８において、ソフトウェアが管理するＦＰＧＡデータフォーマットは、システム内にて唯一の値を持つＦＰＧＡ番号３１、そのバージョン番号３２、コンフィグレーションデータのデータ長３３を含む。また、データ３４、データの最後を示すＡＬＬ“１”データ３５、データ部分のＣＲＣ（エラーチェックコード）（値）３５含んで構成される。
【００３６】
図９に、コンフィグレーションデータダウンロード方法を示す。図９において、例えばセクタ１内に書かれるＦＰＧＡ番号と、セクタ２内に書かれる先頭アドレスは、装置内にて使用するＦＰＧＡ数、データ容量、コンフィグレーション順（番）が既知であるため、シリアルポート１から予めフラッシュメモリー６に書き込んで置く。
【００３７】
これによって、ソフトウェアが、メモリーアドレスやコンフィグレーション順（番）を意識することなく、コンフィグレーションデータをＦＰＧＡ番号とバージョン番号のみにて、管理することができる。また、コンフィグレーション制御部５の回路も汎用的となる。
【００３８】
ＦＰＧＡ番号３７は、コンフィグレーションデータをダウンロードするアドレスを引く（アクセスする）ために使用される。また、データ長３９は、フラッシュメモリーのデータをセクタ単位にて消去するために、セクタ数の計算に使用される。さらに、データ３８のバージョン番号、データ等は例えばセクタｍに格納される。
【００３９】
図１０に、コンフィグレーション制御部５内部の形態を示す。図１０において、コンフィグレーション制御部５は、システムバス８にインタフェースするシステムバスインタフェース部４１、フラッシュメモリー６を制御するメモリー制御部４２を含む。また、コンフィグレーションバス１１にインタフェースするコンフィグレーションバスインタフェース部４３、シリアルポート１とインタフェースするシリアル制御部４４、コンフィグレーション制御部５全体を統括する共通部４５を含む５つの機能ブロックに分かれている。
【００４０】
このうち、システムバスインタフェース部４１は、ＰＣＩバスやシステムに適したモジュールに置き換え可能である。メモリー制御部４２は、使用するフラッシュメモリー６による固有の書込み手順を吸収するためのものであり、他の適したモジュールに置き換え可能である。
【００４１】
コンフィグレーションバスインタフェース部４３は、図２，３に示すようなバス形態を選択できる。シリアル制御部４４と共通部４５とは、本発明によるコンフィグレーション制御装置固有のブロックである。また、このブロックは、コンフィグレーションするＦＰＧＡ２１〜２ｎの順（番）や、フラッシュメモリー６のアドレスを意識することなく、コンフィグレーション動作するために必要な機能を持つ。このように機能ブロック化しておけば、必要なモジュールを組み合わせることによって、システムの拡張性、汎用性が実現できる。さらに、動作異常が発生した場合、ＣＰＵ２が、どのインタフェースが異常となったのかの原因を特定することが容易となる。
【００４２】
本発明の実施例の動作を、図１１，１２のフローチャートにより説明する。
【００４３】
まず、図１１によって、ＦＰＧＡ２１〜２ｎをコンフィグレーションする場合の動作を説明する。図１１において、電源投入する（ステップＳ１）と、コンフィグレーション制御部５はリセット信号ａを送出する（ステップＳ２）。制御部５は始めの動作として必ずフラッシュメモリー６のアドレス０００００ｈを読み出す（ステップＳ３）。
【００４４】
アドレス０００００ｈからのセクタには、コンフィグするＦＰＧＡ番号が順に格納されている（ステップＳ４）。コンフィグ順番アドレスとして０００００ｈを保持する。コンフィグ順番アドレスはＡＬＬ“１”でないため（ステップＳ５がＮＯ）、アドレスからＦＰＧＡ番号を取得する（ステップＳ６）。次に、この番号をメモリーアドレスとして、ＦＰＧＡデータ先頭アドレスを取得する（ステップＳ１９）。ここで、先頭アドレスがＡＬＬ“１”であれば（ステップＳ７がＹＥＳ）、初期設定が行われていないため、ＣＰＵ２ヘ「コンフィグレーション異常終了」として通知し（ステップＳ１６）、コンフィグレーション作業を終了する（ステップＳ１７）。
【００４５】
次に、先頭アドレスがＡＬＬ“１”でなければ（ステップＳ７がＮＯ）、先頭アドレスに１を加算し（ステップＳ８）、データが格納されている次のアドレスを指し示す。このアドレスはＡＬＬ“１”でないため（ステップＳ９がＮＯ）、ＦＰＧＡデータを取得して（ステップＳ１０）、コンフィグレーションバス１１ヘ転送する（ステップＳ１１）。さらに、メモリーアドレスに１を加算して次のＦＰＧＡデータを取得する（ステップＳ１２）。この動作をデータがＡＬＬ“１”となる（ステップＳ７がＹＥＳ）まで繰り返して、すべてのデータをコンフィグレーションバス１１に転送する。
【００４６】
ＡＬＬ“１”はデータの最後を示しているため、制御部５はコンフィグレーションデータの転送が終了したと認識して、コンフィグレーション順番アドレスに１を加算して（ステップＳ１８）、２番目のＦＰＧＡ番号を取得する（ステップＳ６）。この動作を、ＦＰＧＡ番号がＡＬＬ“１”になる（ステップＳ５がＹＥＳ）まで繰り返す。コンフィグレーションデータがすべて転送し終った後は、すべてのＦＰＧＡ２１〜２ｎから、コンフィグレーション完了通知が発行される（ステップＳ１３がＹＥＳ）まで待つ。
【００４７】
完了通知が発行された場合（ステップＳ１３がＹＥＳ）は、コンフィグレーション正常終了であるため、リセット信号送出解除して（ステップＳ１５）、処理を終了する（ステップＳ１７）。完了通知がタイムアウトした場合（ステップＳ１４がＹＥＳ）は、ＣＰＵ２ヘ「コンフィグレーション異常終了」として通知し（ステップＳ１６）、処理を終了する（ステップＳ１７）。
【００４８】
次に、図１２によって、ＦＰＧＡコンフィグレーションデータをダウンロードする場合の動作を説明する。図１２において、ＣＰＵ２からＦＰＧＡデータをダウンロードするには、ＣＰＵ２が始めにコンフィグレーション制御部５に対して、ダウンロード開始指示を行う（ステップＳ２１）。その後、ＣＰＵ２は図８に示したＦＰＧＡデータをコンフィグレーション制御部５に転送していくが、このとき制御部５はフラッシュメモリー６ヘの書き込み手順を実行しながら、転送されたデータをメモリーに書き込んでいくため、ＣＰＵ２は制御部５のステータスを確認しながらデータを転送していく。
【００４９】
制御部５は転送されたデータからＦＰＧＡ番号を取得する（ステップＳ２２）。このＦＰＧＡ番号は、フラッシュメモリー６の読出しアドレスとして置き替わり（ステップＳ２３）、コンフィグレーション制御部５はこのアドレスを基にＦＰＧＡデータを、格納するセクタの先頭アドレスを取得する（ステップＳ２４）。次に、先頭アドレスを読出してメモリーアドレスとして置き換える（ステップＳ２５）。先頭アドレスがＡＬＬ“１”の場合（ステップＳ２６がＹＥＳ）は、初期設定が不正であるため、ＣＰＵ２に通知して（ステップＳ４３）、ダウンロード処理を中断する（ステップＳ４４）。
【００５０】
続いて、先頭アドレスがＡＬＬ“１”でない場合（ステップＳ２６がＮＯ）は、転送データからデータ長を取得する（ステップＳ２７）。このデータ長からデータを書き込む領域分のセクタ数を、後に行うイレーズ処理のために計算しておく（ステップＳ２８）。次に、転送データからダウンロードデータのバージョン番号を取得し（ステップＳ２９）、メモリーに先にダウンロードされているバージョン番号と比較する（ステップＳ３０，Ｓ３１）。
【００５１】
同じバージョンであった場合（ステップＳ３２がＹＥＳ）は、ダウンロードの必要がないためＣＰＵ２に通知して（ステップＳ４３）、ダウンロードを中断する（ステップＳ４４）。バージョンが異なる場合（ステップＳ３２がＮＯ）は、前に計算しておいたセクタをイレーズして（ステップＳ３３）、新バージョン番号をメモリーの先頭アドレスに書き込み（ステップＳ３４）、メモリーアドレスを更新する（ステップＳ３５）。
【００５２】
転送データからＦＰＧＡデータを取得して（ステップＳ３６）、ＣＲＣを計算後（ステップＳ３７）、データをメモリーに書き込む（ステップＳ３８）。この処理を、ＡＬＬ“１”のデータを取得する（ステップＳ３９がＹＥＳ）まで繰り返す。ＡＬＬ“１”でない場合（ステップＳ３９がＮＯ）は、メモリーアドレスに１を加算して（ステップＳ４０）、ステップＳ３６に戻る。ＡＬＬ“１”はデータの最後を示しているため、転送されるＣＲＣ値を取得し（ステップＳ４１）、計算結果と比較する。一致した場合（ステップＳ４２がＹＥＳ）は、正常にダウンロードが終了する（ステップＳ４４）。
【００５３】
【発明の効果】
以上説明したように本発明によれば、コンフィグレーション制御されるＦＰＧＡがシステムバス等を収容している場合は、リセット信号をバススイッチのイネーブル信号として使用して、バスから分離することによってシステムの連続可用性を実現させるという効果がある。また、コンフィグレーションデータのフラッシュメモリーヘの格納場所や、書き込み手順をＣＰＵが管理する必要がない効率よい管理方法が得られ、機能変更の容易性、信頼性を実現できるという効果もある。
【図面の簡単な説明】
【図１】本発明の実施例のブロック図である。
【図２】コンフィグレーションバスの形態の例を示すブロック図である。
【図３】コンフィグレーションバスの形態の他の例を示すブロック図である。
【図４】コンフィグレーションリセット制御の形態の例を示すブロック図である。
【図５】コンフィグレーションリセット制御のタイミングチャートである。
【図６】フラッシュメモリーのセクタの使用例の説明図である。
【図７】コンフィグレーションの順番制御の例の説明図である。
【図８】ＦＰＧＡデータフォーマットの例の説明図である。
【図９】コンフィグレーションデータのダウンロード方法の例の説明図である。
【図１０】コンフィグレーション制御部の内部機能ブロック図である。
【図１１】コンフィグレーション動作のフローチャートである。
【図１２】ダウンロード動作のフローチャートである。
【図１３】従来のコンフィグレーション制御装置の例を示すブロック図である。
【図１４】従来のコンフィグレーション制御装置の他の例を示すブロック図である。
【図１５】従来のコンフィグレーション制御装置のさらに他の例を示すブロック図である。
【符号の説明】
１　シリアルポート
２　ＣＰＵ
３　メモリー
４　バスブリッジ
５　コンフィグレーション制御部
６　フラッシュメモリー
７　ローカルバス
８　システムバス
９，１０　バスブリッジ
１１　コンフィグレーションバス
２１〜２ｎ　ＦＰＧＡ
【図１】
2004021867.tif 000003
【図２】
2004021867.tif 000004
【図３】
2004021867.tif 000005
【図４】
2004021867.tif 000006
【図５】
2004021867.tif 000007
【図６】
2004021867.tif 000008
【図７】
2004021867.tif 000009
【図８】
2004021867.tif 000010
【図９】
2004021867.tif 000011
【図１０】
2004021867.tif 000012
【図１１】
2004021867.tif 000013
【図１２】
2004021867.tif 000014
【図１３】
2004021867.tif 000015
【図１４】
2004021867.tif 000016
【図１５】
2004021867.tif 000017