(57)【要約】  【課題】  簡易な構成でかつ余分な処理をすることなく、ハードウェアのコンフィグレーションを実行可能なハードウェアコンフィグレーション装置を提供する。【解決手段】  プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）と、前記ＦＰＧＡのコンフィグレーションを行うコンフィグレーション制御回路と、前記ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部と、を備え、前記コンフィグレーション制御回路は、前記ネットワーク部を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、前記ネットワーク部で受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する、ことを特徴とする。【選択図】  図１
2006262227.tif 000002
【特許請求の範囲】
【請求項１】
プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）と、
前記ＦＰＧＡのコンフィグレーションを行うコンフィグレーション制御回路と、
前記ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部とを備え、
前記コンフィグレーション制御回路は、前記ネットワーク部を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、前記ネットワーク部で受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する、
ことを特徴とするハードウェアコンフィグレーション装置。
【請求項２】
プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）と、
前記ＦＰＧＡのコンフィグレーションを行うコンフィグレーション制御回路と、
前記ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部と、
記憶手段とを備え、
前記コンフィグレーション制御回路は、前記ネットワーク部を介して前記回路配置データを受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する作業と並行して、前記回路配置データを前記記憶手段に記憶させる、
ことを特徴とするハードウェアコンフィグレーション装置。
【請求項３】
前記コンフィグレーション制御回路は、前記ネットワーク部で前記回路配置データを受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する際に、受信と並行して受信タイムアウトチェックを行う、
ことを特徴とする請求項１または請求項２に記載のハードウェアコンフィグレーション装置。
【請求項４】
前記コンフィグレーション制御回路は、前記ネットワーク部で前記回路配置データを受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する際に、受信と並行して受信タイムアウトチェックを行い、タイムアウトが検出された場合には前記回路配置データの受信を要求する、
ことを特徴とする請求項１または請求項２に記載のハードウェアコンフィグレーション装置。
【請求項５】
前記コンフィグレーション制御回路は、プログラマブルロジックデバイス（ＰＬＤ）で構成されている、
ことを特徴とする請求項１乃至請求項４のいずれかに記載のハードウェアコンフィグレーション装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はハードウェアコンフィグレーション装置に関し、特に、プログラマブルなハードウェアのコンフィグレーションを行うハードウェアコンフィグレーション装置に関する。
【背景技術】
【０００２】
プログラマブルなハードウェアのコンフィグレーションは、専用メモリを使用するか一般的なＲＯＭを使用するかしてコンフィグレーションをおこなうのが一般的である。しかしこの場合、ＦＰＧＡなどのプログラマブルなＬＳＩの容量が大きくなればなるほど、メモリの数を増やしたり、容量の大きいメモリを使用したりしなければならなかった。
【０００３】
また、このように大容量のメモリが必要になることを解決するための手法もあるが、数回のコンフィグレーションが必要であったり、コンフィグレーションするために他の処理が必要だったりして、結果として装置が複雑になってしまうという新たな問題を生じている。
【０００４】
なお、以下の特許文献１〜特許文献５に、ＦＰＧＡあるいはコンフィグレーションに関する技術が記載されている。
【特許文献１】特開平11-220413号公報（第１頁、図１）
【特許文献２】特開2004-274727号公報（第１頁、図１）
【特許文献３】特表2004-516691号公報（第１頁、図１）
【特許文献４】特開2004-326143号公報（第１頁、図１）
【特許文献５】特開2001-306343号公報（第１頁、図１）
【発明の開示】
【発明が解決しようとする課題】
【０００５】
以上の特許文献１記載の技術は、無線通信を用いてコンフィグレーションする際に、時間と共に変化する無線の帯域をより効率的に利用するための技術であり、プログラマブルなハードウェアのコンフィグレーションデータ（回路配置データ）をネットワークを用いて通信し、コンフィグレーションする方法ではない。
【０００６】
また、以上の特許文献２記載の技術は、ソフトウェアを更新する方法の技術であり、本発明のようなハードウェアのコンフィグレーションもしくはリコンフィグレーションに関しては配慮されていない。
【０００７】
また、以上の特許文献３記載の技術は、ハードウェア情報を更新する方法の技術であるが、本発明のようにネットワークを利用してプログラマブルなハードウェアのコンフィグレーションをするようなものではない。
【０００８】
また、以上の特許文献４記載の技術は、プログラマブルなハードウェアを数回コンフィグレーションすることで、装置の初期化をおこなう技術であり、短時間でコンフィグレーションを実行できないという問題を有している。
【０００９】
さらに、以上の特許文献５記載の技術は、プログラマブルなハードウェアの更新情報をネットワークから取得し、取得した更新情報を一度メモリに記憶させ、メモリから読み出してハードウェアのコンフィグレーションを行うものである。このため、大容量のメモリが必要であり、更に、更新情報全体をメモリへ格納する手間と時間がかかるという問題を有している。
【００１０】
本発明は上記の従来技術における問題に鑑みてなされたものであって、簡易な構成でかつ余分な処理をすることなく、ハードウェアのコンフィグレーションを実行可能なハードウェアコンフィグレーション装置を提供することを目的とする。
【課題を解決するための手段】
【００１１】
すなわち、前記した課題は、以下に列記する各発明によって解決される。
（１）請求項１記載の発明は、プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）と、前記ＦＰＧＡのコンフィグレーションを行うコンフィグレーション制御回路と、前記ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部と、を備え、前記コンフィグレーション制御回路は、前記ネットワーク部を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、前記ネットワーク部で受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する、ことを特徴とするハードウェアコンフィグレーション装置である。
【００１２】
（２）請求項２プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）と、前記ＦＰＧＡのコンフィグレーションを行うコンフィグレーション制御回路と、前記ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部と、記憶手段と、を備え、前記コンフィグレーション制御回路は、前記ネットワーク部を介して前記回路配置データを受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する作業と並行して、前記回路配置データを前記記憶手段に記憶させる、ことを特徴とするハードウェアコンフィグレーション装置である。
【００１３】
（３）請求項記載の発明は、（１）または（２）のハードウェアコンフィグレーション装置において、前記コンフィグレーション制御回路は、前記ネットワーク部で前記回路配置データを受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する際に、受信と並行して受信タイムアウトチェックを行う、ことを特徴とする。
【００１４】
（４）請求項記載の発明は、（１）または（２）のハードウェアコンフィグレーション装置において、前記コンフィグレーション制御回路は、前記ネットワーク部で前記回路配置データを受信しつつ前記ＦＰＧＡに対して直接コンフィグレーションを実行する際に、受信と並行して受信タイムアウトチェックを行い、タイムアウトが検出された場合には前記回路配置データの受信を要求する、ことを特徴とする。
【００１５】
（５）請求項記載の発明は、（１）〜（４）のハードウェアコンフィグレーション装置において、前記コンフィグレーション制御回路は、プログラマブルロジックデバイス（ＰＬＤ）で構成されている、ことを特徴とする。
【発明の効果】
【００１６】
以上、説明したように、各請求項に記載された本発明によれば、以下のような効果が得られる。
（１）請求項１記載の発明では、プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のコンフィグレーションを実行する際に、コンフィグレーション制御回路は、ネットワーク部を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部で受信しつつＦＰＧＡに対して直接コンフィグレーションを実行する。
【００１７】
このハードウェアコンフィグレーション装置では、ネットワークから取得した回路配置データを用いて直接コンフィグレーションを実行するため、大容量のメモリが必要なく、また、余分なプロセスも必要なく、簡素な仕組みと手順とで短時間に実現できる。
【００１８】
（２）請求項２記載の発明では、プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）のコンフィグレーションを実行する際に、コンフィグレーション制御回路は、ネットワーク部を介して回路配置データを受信しつつＦＰＧＡに対して直接コンフィグレーションを実行し、このコンフィグレーションの実行と並行して記憶手段に回路配置データを記憶させる。
【００１９】
このハードウェアコンフィグレーション装置では、ネットワークから取得した回路配置データを用いて直接コンフィグレーションを実行するため、余分なプロセスも必要なく、簡素な仕組みと手順とで短時間に実現できる。また、コンフィグレーションの実行と並行して回路配置データを記憶させておくことで、コンフィグレーションを再実行する必要が生じた場合でも再びダウンロードする手間が省ける。
【００２０】
（３）請求項記載の発明では、（１）または（２）のハードウェアコンフィグレーション装置において、ネットワーク部を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部で受信しつつＦＰＧＡに対して直接コンフィグレーションを実行する際に、コンフィグレーション制御回路は、受信と並行して受信タイムアウトチェックを行う。
【００２１】
このハードウェアコンフィグレーション装置では、ネットワークから取得した回路配置データを用いて直接コンフィグレーションを実行するため、大容量のメモリが必要なく、また、余分なプロセスも必要なく、簡素な仕組みと手順とで短時間に実現でき、受信タイムアウトチェックによって確実なコンフィグレーションを実行できる。
【００２２】
（４）請求項記載の発明では、（１）または（２）のハードウェアコンフィグレーション装置において、ネットワーク部を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部で受信しつつＦＰＧＡに対して直接コンフィグレーションを実行する際に、コンフィグレーション制御回路は、受信と並行して受信タイムアウトチェックを行い、タイムアウトが検出された場合には回路配置データの受信を要求する。
【００２３】
このハードウェアコンフィグレーション装置では、ネットワークから取得した回路配置データを用いて直接コンフィグレーションを実行するため、大容量のメモリが必要なく、また、余分なプロセスも必要なく、簡素な仕組みと手順とで短時間に実現でき、タイムアウト検出時には回路配置データの受信要求を出すため、確実なコンフィグレーションを実行できる。
【００２４】
（５）請求項記載の発明では、（１）〜（４）のハードウェアコンフィグレーション装置において、コンフィグレーション制御回路は、プログラマブルロジックデバイス（ＰＬＤ）で構成されている。
【００２５】
このハードウェアコンフィグレーション装置では、以上の（１）〜（４）において、コンフィグレーション制御回路をＰＬＤとしているために、ＰＬＤ内の論理回路を変更することで様々な通信形態やプロトコルに対応することが可能になる。
【発明を実施するための最良の形態】
【００２６】
以下、図面を参照して本発明の実施をするための最良の形態を詳細に説明する。
本発明の実施をするための最良の形態のハードウェアコンフィグレーション装置の好適な実施形態について説明する。なお、これにより本発明の範囲が限定されるものではない。
【００２７】
なお、本願発明のコンフィグレーション装置では、以下のような目標を有する。
・シンプルな構成で実現する。
・ネットワークからハードウェアのコンフィグレーションデータ（回路配置データ）を受信し、コンフィグレーションできるようにする。
・必要最低限のコンフィグレーションでハードウェアの初期化を実現する。
・コンフィグレーションを行うまでの処理を簡素化(短時間、シンプル)する。
・リコンフィグレーションも可能にする。
・通信プロトコルが変わっても容易に対応できるようにする。
【００２８】
〈第１実施形態〉
全体構成：
図１に示されるハードウェアコンフィグレーション装置は、プログラマブルなハードウェアであるＦＰＧＡ３００のコンフィグレーションを実行するハードウェアコンフィグレーション装置である。なお、この図１では、電源部や各種バスなどの既知の回路構成については省略した状態で示している。
【００２９】
そして、このハードウェアコンフィグレーション装置は、最低限の構成として、大きく分けて、ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部１００と、回路配置データを用いてＦＰＧＡのコンフィグレーションを行うコンフィグレーション制御回路２００と、プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）３００と、を有している。そして、ＦＰＧＡ３００には各種のデバイスが接続されている。
【００３０】
ここで、コンフィグレーション制御回路２００は、ネットワーク部１００を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行することを特徴としている。
【００３１】
ここで、図１に示されるように、ネットワーク部１００は、コンフィグレーション制御回路２００との間でデータ授受を行うインタフェース１１０と、ネットワークのフレーム構造やアクセス手法が規定されたデータ・リンク層の一部分に相当するＭＡＣ（Media Access Control layer）部１２０、ネットワークの物理的な接続・伝送方法が定められたＰＨＹ（Physical layer）部１３０、無線通信によりネットワークにアクセスするためのＲＦ（Radio Frequency）部１４０とを備えて構成されている。
【００３２】
また、コンフィグレーション制御回路２００は、装置全体の制御を行う全体制御部２１０と、ハードウェアコンフィグレーションについての各種制御や各種処理を実行するコンフィグレーション制御部２２０と、ネットワーク部１００との間でデータ授受を行うインタフェース２３０と、ＦＰＧＡ３００との間でデータ授受を行うインタフェース２４０と、を備えて構成されている。
【００３３】
そして、ＦＰＧＡ３００は、回路配置データによって論理ブロックの組み合わせや配線領域の接続がなされるプログラマブルなハードウェアとしての処理部３１０、コンフィグレーション制御回路２００との間でデータ授受を行うインタフェース３２０と、各種デバイスとの間でデータ授受を行うインタフェース３３０と、を備えて構成されている。
【００３４】
なお、この第１実施形態は、ＦＰＧＡ３００を、ネットワークを利用してコンフィグレーションさせる場合の実施形態である。
また、ここで、ネットワーク部１００がネットワーク接続を行う場合、有線による接続、無線による接続のどちらであってもよい。
【００３５】
ネットワーク部１００は有線プロトコル、無線及び通信プロトコルによって構成が異なる場合があるが、無線の場合には最低限ＲＦ部１４０を有していればよく、また、有線の場合にはＰＨＹ部１３０のみ搭載、ＰＨＹ部１３０とＭＡＣ部１２０とを搭載など、どのような回路構成でも適用できる。
【００３６】
また、コンフィグレーション制御回路２００は通信プロトコルとネットワーク部１００の回路構成によって、搭載する回路構成を変えることでさまざまな通信に適用できる。例えば、ネットワーク部１００がＲＦ部１４０とＰＨＹ部１３０のみの場合に、通信プロトコルとしてはＭＡＣ部１２０も必要な場合には、コンフィグレーション制御回路２００で通信プロトコルに必要なＭＡＣ部を組み込むようにする。
【００３７】
なお、コンフィグレーション制御回路２００はＰＬＤで実現するのが好ましいが、ＡＳＩＣで実現してもよい。なお、コンフィグレーション制御回路にこれ以外の別の回路を組み込んでもよい。
【００３８】
ＦＰＧＡのコンフィグレーションには大きく分けて二通りあり、一つは外部(ネットワーク)からのリクエスト信号によりコンフィグレーションを開始する場合と、装置から外部へリクエスト信号を発信しコンフィグレーションデータ（回路配置データ）を送信してもらい、コンフィグレーションを開始する場合とがある。
【００３９】
〈第１実施形態における第１の動作〉
以下、ハードウェアコンフィグレーション装置の外部からのリクエストでコンフィグレーションを実行する場合の動作（シーケンス＃１）について、図２のフローチャートを参照して説明を行う。
【００４０】
まず、有線あるいは無線のネットワークを介して外部よりコンフィグレーションリクエスト（コンフィグレーション実行コマンド）をネットワーク部１００が受信する（図２Ｓ１）と、そのコンフィグレーションリクエストが正しいリクエストであるかの認証をコンフィグレーション制御回路２００の全体制御部２１０あるいはコンフィグレーション制御部２２０が行う（図２Ｓ２）。
【００４１】
そのコンフィグレーションリクエストが正しいと認証された場合（図２Ｓ２でＹ）、コンフィグレーション制御回路２００（コンフィグレーション制御部２２０）がＦＰＧＡ３００を初期化しコンフィグレーションの準備を行う（図２Ｓ３）。
【００４２】
初期化して準備が整ったら、コンフィグレーション制御部２２０は、ネットワーク部１００を介して、コンフィグレーションリクエストを送ってきた外部装置に対して、コンフィグレーションデータリクエスト（回路配置データ要求）を送信する（図２Ｓ４）。
【００４３】
コンフィグレーション制御部２２０は、この送信リクエストの時点からタイマを起動させ（図２Ｓ５）、コンフィグレーション完了までに想定される所定時間内にコンフィグレーションが完了せず（図２Ｓ５でＹ）、かつ、コンフィグレーション実行中のエラーが規定回数以上であれば（図２Ｓ１３でＹ）、コンフィグレーションの作業を異常終了として終了させる。
【００４４】
また、コンフィグレーション制御部２２０は、この送信リクエストの時点からタイマを起動させ（図２Ｓ５）、コンフィグレーション完了までに想定される所定時間内にコンフィグレーションが完了せず（図２Ｓ５でＹ）、かつ、コンフィグレーション実行中のエラーが規定回数未満であれば（図２Ｓ１３でＮ）、通信障害であると判断して、コンフィグレーションの作業を初期化（図２Ｓ３）からやり直す。
【００４５】
また、コンフィグレーション制御部２２０は、回路配置データの受信単位（パケットあるいは所定単位のデータ）毎に想定される受信時間内に回路配置データの受信がタイムアウトした場合（図２Ｓ６でＹ）、ネットワーク部１００を介して、コンフィグレーションリクエストを送ってきた外部装置に対して、受信タイムアウトとなったデータ部分からのコンフィグレーションデータリクエスト（回路配置データ要求）を送信する（図２Ｓ７）。
【００４６】
そして、ネットワーク部１００を介して回路配置データが受信されると、コンフィグレーション制御部２２０は、その回路配置データについて所定のエラー訂正とエラーチェックとを行う（図２Ｓ８）。
【００４７】
ここで、受信した回路配置データに訂正できないエラーが生じていれば（図２Ｓ９でＹ）、コンフィグレーション制御部２２０は、ネットワーク部１００を介して、コンフィグレーションリクエストを送ってきた外部装置に対して、エラーが生じたデータ部分からのコンフィグレーションデータリクエスト（回路配置データ要求）を送信する（図２Ｓ７）。
【００４８】
ここで、受信した回路配置データに訂正できないエラーが生じていなければ（図２Ｓ９でＮ）、コンフィグレーション制御部２２０は、その回路配置データを順次ＦＰＧＡ３００へ送信し、コンフィグレーションを実行する（図２Ｓ１０）。
【００４９】
なお、この実施形態では、コンフィグレーション制御回路２００は、ネットワーク部１００を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行することを特徴としている。
【００５０】
そして、コンフィグレーション制御部２２０は、以上のタイムアウト検出（図２Ｓ５、Ｓ６）、データ受信・エラーチェック（図２Ｓ８）、コンフィグレーション実行（図２Ｓ１０）、必要に応じたコンフィグレーションデータリクエスト（図２Ｓ７）を、一連の回路配置データの全データ領域を完了するまで続行する（図２Ｓ１１）。
【００５１】
一連の回路配置データの全データ領域を受信し終わった時点で（図２Ｓ１１でＹ）、コンフィグレーション制御部２２０は、コンフィグレーションが正常終了したかについてＦＰＧＡ３００からの状態信号などにより検出する（図２Ｓ１２）。ここで、コンフィグレーションが正常終了しておらず（図２Ｓ１２でＮ）、かつ、コンフィグレーション実行中のエラーが規定回数以上であれば（図２Ｓ１３でＹ）、コンフィグレーション制御部２２０は、コンフィグレーションの作業を異常終了として終了させる。
【００５２】
また、一連の回路配置データの全データ領域を受信し終わった時点で（図２Ｓ１１でＹ）、コンフィグレーションが正常終了しておらず（図２Ｓ１２でＮ）、かつ、コンフィグレーション実行中のエラーが規定回数未満であれば（図２Ｓ１３でＮ）、コンフィグレーション制御部２２０は、通信障害であると判断して、コンフィグレーションの作業を初期化（図２Ｓ３）からやり直す。
【００５３】
そして、一連の回路配置データの全データ領域を受信し終わった時点で（図２Ｓ１１でＹ）、ＦＰＧＡ３００からの状態信号などによってコンフィグレーションが正常終了していることが確認できれば（図２Ｓ１２でＹ）、コンフィグレーション制御部２２０は、ネットワーク部１００を介して、コンフィグレーションリクエストを送ってきた外部装置に対して、コンフィグレーション完了通知を送信する（図２Ｓ１４）。
【００５４】
また、この際、ある一定の回数繰り返してもコンフィグレーションが正しく終了しなかった場合（図２Ｓ１３）には、コンフィグレーション制御部２２０は、ネットワークに通信障害があると判断し、コンフィグレーションを終了させるが、このように終了した場合には、外部から再度コンフィグレーションリクエストがあるまで待機状態にさせてもよいし、ある一定期間待機させた後、コンフィグレーションリクエストを送信させてもよい。
【００５５】
以上説明したように、この実施形態のハードウェアコンフィグレーション装置では、ネットワークから取得した回路配置データを用いて直接コンフィグレーションを実行するため、大容量のメモリが必要なく、また、余分なプロセスも必要なく、簡素な仕組みと手順とで短時間に実現できる。
【００５６】
また、ネットワーク部を回路１００を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行する際に、コンフィグレーション制御回路は、受信と並行して受信タイムアウトチェックを行う。このため、確実なコンフィグレーションを実行できる。
【００５７】
また、コンフィグレーション制御回路２２０は、受信と並行して受信タイムアウトチェックを行い、タイムアウトが検出された場合には回路配置データの受信を要求する。すなわち、タイムアウト検出時には回路配置データの受信要求を出すため、確実なコンフィグレーションを実行できる。
【００５８】
なお、この実施形態のハードウェアコンフィグレーション装置において、コンフィグレーション制御回路２００は、プログラマブルロジックデバイス（ＰＬＤ）で構成することができる。このようにすることで、ＰＬＤ内の論理回路を変更することで様々な通信形態やプロトコルに対応することが可能になる。
【００５９】
〈第１実施形態における第２の動作〉
以下、ハードウェアコンフィグレーション装置の内部からのリクエストでコンフィグレーションを実行する場合の動作（シーケンス＃２）について、図３のフローチャートを参照して説明を行う。
【００６０】
まず、コンフィグレーション制御部２２０は、ネットワーク部１００によって有線あるいは無線のネットワークを介して、コンフィグレーションデータ（回路配置データ）を保有する外部装置に対して、コンフィグレーションリクエストを送信する（図３Ｓ１）。
【００６１】
以上のコンフィグレーションリクエストに対する応答をネットワーク部１００によって受信する（図３Ｓ２）と、その応答が正しいものであるかの認証をコンフィグレーション制御回路２００の全体制御部２１０あるいはコンフィグレーション制御部２２０が行う（図３Ｓ５）。
【００６２】
なお、コンフィグレーション制御部２２０は、想定される応答時間に応じて応答を待ち（図３Ｓ３でＮ）、応答がなくタイムアウトした場合には（図３Ｓ３でＹ）、規定回数に達するまでコンフィグレーションリクエストを送信し（図３Ｓ４でＮ、Ｓ１）、規定回数に達しても応答がなければ異常終了する（図３Ｓ４でＹ）。
【００６３】
外部装置から受信した応答が正しいと認証された場合（図３Ｓ５でＹ）、コンフィグレーション制御回路２００（コンフィグレーション制御部２２０）がＦＰＧＡ３００を初期化しコンフィグレーションの準備を行う（図３Ｓ６）。
【００６４】
初期化して準備が整ったら、コンフィグレーション制御部２２０は、ネットワーク部１００を介して、応答してきた外部装置に対して、コンフィグレーションデータリクエスト（回路配置データ要求）を送信する（図３Ｓ７）。
【００６５】
コンフィグレーション制御部２２０は、この送信リクエストの時点からタイマを起動させ（図３Ｓ８）、コンフィグレーション完了までに想定される所定時間内にコンフィグレーションが完了せず（図３Ｓ８でＹ）、かつ、コンフィグレーション実行中のエラーが規定回数以上であれば（図３Ｓ１６でＹ）、コンフィグレーションの作業を異常終了として終了させる。
【００６６】
また、コンフィグレーション制御部２２０は、この送信リクエストの時点からタイマを起動させ（図３Ｓ８）、コンフィグレーション完了までに想定される所定時間内にコンフィグレーションが完了せず（図３Ｓ８でＹ）、かつ、コンフィグレーション実行中のエラーが規定回数未満であれば（図３Ｓ１６でＮ）、通信障害であると判断して、コンフィグレーションの作業を初期化（図３Ｓ６）からやり直す。
【００６７】
また、コンフィグレーション制御部２２０は、回路配置データの受信単位（パケットあるいは所定単位のデータ）毎に想定される受信時間内に回路配置データの受信がタイムアウトした場合（図３Ｓ９でＹ）、ネットワーク部１００を介して、応答してきた外部装置に対して、受信タイムアウトとなったデータ部分からのコンフィグレーションデータリクエスト（回路配置データ要求）を送信する（図３Ｓ１０）。
【００６８】
そして、ネットワーク部１００を介して回路配置データが受信されると、コンフィグレーション制御部２２０は、その回路配置データについて所定のエラー訂正とエラーチェックとを行う（図３Ｓ１１）。
【００６９】
ここで、受信した回路配置データに訂正できないエラーが生じていれば（図３Ｓ１２でＹ）、コンフィグレーション制御部２２０は、ネットワーク部１００を介して、応答してきた外部装置に対して、エラーが生じたデータ部分からのコンフィグレーションデータリクエスト（回路配置データ要求）を送信する（図３Ｓ１０）。
【００７０】
ここで、受信した回路配置データに訂正できないエラーが生じていなければ（図３Ｓ１２でＮ）、コンフィグレーション制御部２２０は、その回路配置データを順次ＦＰＧＡ３００へ送信し、コンフィグレーションを実行する（図３Ｓ１３）。
【００７１】
なお、この実施形態では、コンフィグレーション制御回路２００は、ネットワーク部１００を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行することを特徴としている。
【００７２】
そして、コンフィグレーション制御部２２０は、以上のタイムアウト検出（図３Ｓ８、Ｓ９）、データ受信・エラーチェック（図３Ｓ１１）、コンフィグレーション実行（図３Ｓ１３）、必要に応じたコンフィグレーションデータリクエスト（図３Ｓ１０）を、一連の回路配置データの全データ領域を完了するまで続行する（図３Ｓ１４）。
【００７３】
一連の回路配置データの全データ領域を受信し終わった時点で（図３Ｓ１４でＹ）、コンフィグレーション制御部２２０は、コンフィグレーションが正常終了したかについてＦＰＧＡ３００からの状態信号などにより検出する（図３Ｓ１５）。
【００７４】
ここで、コンフィグレーションが正常終了しておらず（図３Ｓ１５でＮ）、かつ、コンフィグレーション実行中のエラーが規定回数以上であれば（図３Ｓ１６でＹ）、コンフィグレーション制御部２２０は、コンフィグレーションの作業を異常終了として終了させる。
【００７５】
また、一連の回路配置データの全データ領域を受信し終わった時点で（図３Ｓ１４でＹ）、コンフィグレーションが正常終了しておらず（図３Ｓ１５でＮ）、かつ、コンフィグレーション実行中のエラーが規定回数未満であれば（図３Ｓ１６でＮ）、コンフィグレーション制御部２２０は、通信障害であると判断して、コンフィグレーションの作業を初期化（図３Ｓ３）からやり直す。
【００７６】
そして、一連の回路配置データの全データ領域を受信し終わった時点で（図３Ｓ１４でＹ）、ＦＰＧＡ３００からの状態信号などによってコンフィグレーションが正常終了していることが確認できれば（図３Ｓ１５でＹ）、コンフィグレーション制御部２２０は、ネットワーク部１００を介して、応答してきた外部装置に対して、コンフィグレーション完了通知を送信する（図３Ｓ１７）。
【００７７】
また、この際、ある一定の回数繰り返してもコンフィグレーションが正しく終了しなかった場合（図３Ｓ１６）には、コンフィグレーション制御部２２０は、ネットワークに通信障害があると判断し、コンフィグレーションを終了させるが、このように終了した場合には、待機状態にさせてもよいし、ある一定期間待機させた後、コンフィグレーションリクエストを送信させてもよい。
【００７８】
以上説明したように、この実施形態のハードウェアコンフィグレーション装置では、ネットワークから取得した回路配置データを用いて直接コンフィグレーションを実行するため、大容量のメモリが必要なく、また、余分なプロセスも必要なく、簡素な仕組みと手順とで短時間に実現できる。
【００７９】
また、ネットワーク部１００を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行する際に、コンフィグレーション制御回路は、受信と並行して受信タイムアウトチェックを行う。このため、確実なコンフィグレーションを実行できる。
【００８０】
また、コンフィグレーション制御回路２２０は、受信と並行して受信タイムアウトチェックを行い、タイムアウトが検出された場合には回路配置データの受信を要求する。すなわち、タイムアウト検出時には回路配置データの受信要求を出すため、確実なコンフィグレーションを実行できる。
【００８１】
なお、この実施形態のハードウェアコンフィグレーション装置において、コンフィグレーション制御回路２００は、プログラマブルロジックデバイス（ＰＬＤ）で構成することができる。このようにすることで、ＰＬＤ内の論理回路を変更することで様々な通信形態やプロトコルに対応することが可能になる。
【００８２】
また、上記のシーケンスにところどころにデータの正常性を確認するための認証シーケンスを組み入れてもよいし、また符合訂正機能、暗号・復号機能などを設けても、この動作に適用できる。
【００８３】
〈第１実施形態におけるコンフィグレーション後の動作〉
コンフィグレーション後のネットワーク部１００の制御はＦＰＧＡ３００が行うようにしてもよいし、引き続きコンフィグレーション回路２００が制御を担当してもよいし、もしくは他のデバイスが制御してもよい。
【００８４】
ＦＰＧＡ３００に制御させる場合にはＦＰＧＡ３００の論理回路(ハードウェア)で制御をしてもよいし、ＦＰＧＡ３００内でプロセッサを搭載してソフトウェアで制御してもよい。
【００８５】
また、ＦＰＧＡ３００もしくは他のデバイスにネットワーク制御させる場合、コンフィグレーション制御回路２００はネットワーク制御をＦＰＧＡ３００動作中は全く制御しなくてもよいし、リコンフィギャブルのための一部機能のみをコンフィグレーション後も動作可能にしておいてもよい。
【００８６】
つまり、ＦＰＧＡ３００に対するコンフィグレーション実行後のネットワーク制御については、下記の(a),(b),(c)のような手法がある。
(ａ)コンフィグレーション後も、コンフィグレーション制御回路２００がネットワークの制御をおこなう。
【００８７】
(b)ＦＰＧＡ３００もしくは他のデバイスが完全にネットワーク制御を行い、コンフィグレーション制御回路２００はネットワークの制御を行わない。コンフィグレーション制御回路２００はネットワーク制御をしているデバイスからネットワークの制御権を譲渡されるとネットワークの制御を再び開始する。
【００８８】
(c)ＦＰＧＡ３００もしくは他のデバイスがネットワークの制御を行うが、ネットワークからの特定のコマンド及び信号には応答できるようにコンフィグレーション制御回路２００のネットワークの一部機能を動作させておく。
【００８９】
図１に記載されたＦＰＧＡ３００の内部構成は、上記(a)の場合のＦＰＧＡ内論理回路例、あるいは、上記(b)、(c)で他のデバイス(ＦＰＧＡ以外)がネットワーク制御を行う場合のＦＰＧＡ内論理回路例である。
【００９０】
また、以上の(b)、(c)の場合にＦＰＧＡ３００がネットワーク制御を行う場合の、ＦＰＧＡ内論理回路例としては、図４に示すものを示すことができる。この図４のハードウェアコンフィグレーション装置では、ＦＰＧＡ３００の内部にＩ／Ｆ３２０とＩ／Ｆ３３０との間に、ネットワーク制御を行うためのネットワーク制御部３４０を備えたことを特徴とする。このネットワーク制御部３４０によって、以上の(b)、(c)の場合に、コンフィグレーション後もＦＰＧＡ３００がネットワーク制御を行うことが可能になる。
【００９１】
なお、ＦＰＧＡ３００についてコンフィグレーション実行後に、再度のコンフィグレーション（リコンフィグレーション）を実行する場合がある。その場合のリコンフィグレーション開始の契機については、上述したシーケンス＃１（図２のフローチャート）、上述したシーケンス＃２（図３のフローチャート）を用いて、以下の(A)〜(E)のような手順が考えられる。
(A)ネットワーク経由の外部装置からリコンフィグレーション要求がある場合：シーケンス＃１。
(B)コンフィグレーション制御回路２００が特定の処理を終了した場合：シーケンス＃２。
(C)ＦＰＧＡ３００もしくは他のデバイスが、特定の処理を終了してコンフィグレーション制御回路２００内のレジスタに対してリコンフィグレーションコマンドを送信した場合、もしくは、コンフィグレーション制御回路２００に信号を送信した場合：シーケンス＃２。
(D)コンフィグレーション制御回路２００が、ＦＰＧＡ３００もしくは他のデバイスの状態をレジスタ等へ読みにいき、その状態がリコンフィグレーション状態にあるとわかった場合：シーケンス＃２。
(E)ＦＰＧＡ３００もしくは他のデバイスが特定の処理を終了し、ネットワークを制御しているデバイスがコンフィグレーションリクエストを直接送信した場合：シーケンス＃２。
【００９２】
一方、コンフィグレーション制御回路２００でネットワーク制御を機能させないようにした場合、すなわち、ＦＰＧＡ３００にネットワーク制御機能を持たせた場合には、ＦＰＧＡ３００のリコンフィグレーションは、上記の契機で開始され、開始されるとコンフィグレーション制御回路２００がネットワーク制御を開始すると同時にＦＰＧＡ３００をコンフィグレーション可能な状態にすることでリコンフィグレーション動作を実現する。
【００９３】
また、コンフィグレーション制御回路２００でネットワーク制御を機能の一部を動作可能にしておく場合には、ネットワーク部１００やその他のデバイスからの特定のコマンドやデータ、例えばコンフィグレーションリクエストには応答できるようにしておいて、その特定のコマンドもしくは信号をコンフィグレーション制御回路２００が受信すると、ＦＰＧＡ３００をコンフィグレーション可能な状態にしリコンフィグレーション動作を実現する。
【００９４】
なお、上述したリコンフィグレーションに関する機能は、ＦＰＧＡ３００と同等なＦＰＧＡが複数個配置されているようなハードウェアコンフィグレーション装置であっても、何ら問題なく適用することができる。
【００９５】
また、この実施形態の場合、コンフィグレーションをハードウェアでおこなうので、他の処理と同時に処理をすることができる。たとえば、ハードウェアコンフィグレーション装置にＣＰＵを搭載している場合には、ＣＰＵの初期化とＦＰＧＡ３００のコンフィグレーションとを同時に実行することも可能である。
【００９６】
〈第２実施形態〉
図５に示されるハードウェアコンフィグレーション装置は、プログラマブルなハードウェアであるＦＰＧＡ３００のコンフィグレーションを実行するハードウェアコンフィグレーション装置の第２実施形態である。なお、この図５では、電源部や各種バスなどの既知の回路構成については省略した状態で示している。
【００９７】
そして、このハードウェアコンフィグレーション装置は、最低限の構成として、大きく分けて、ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部１００と、プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）３００と、受信した回路配置データを用いてＦＰＧＡ３００のコンフィグレーションを行うコンフィグレーション制御回路としてのＣＰＵ４００と、を有している。そして、ＦＰＧＡ３００には各種のデバイスが接続されている。
【００９８】
ここで、コンフィグレーション制御回路としてのＣＰＵ４００は、ネットワーク部１００を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行することを特徴としている。なお、ネットワーク部１００とＦＰＧＡ３００とは上述した第１実施形態と同様な内容である。
【００９９】
上述した第１実施形態はハードウェアで制御していたのに対し、第２実施形態はＣＰＵ４００を使用してソフトウェアで制御を行っているのが特長である。すなわち、ＣＰＵ４００のソフトウエアの制御により、上述したコンフィグレーション制御回路２００と同様な処理と制御とを実行させる。すなわち、ネットワーク部１００の制御とＦＰＧＡ３００のコンフィグレーション制御は、ＣＰＵ４００のソフトウェアで行うため、ソフトウェアを変更することでネットワーク部１００の制御とＦＰＧＡ３００のコンフィグレーション制御のアルゴリズムを容易に変更することができる。
【０１００】
なお、この第２実施形態は、ＦＰＧＡ３００を、ネットワークを利用してコンフィグレーションさせる場合の実施形態である。また、ここで、ネットワーク部１００がネットワーク接続を行う場合、有線による接続、無線による接続のどちらであってもよい。ネットワーク部１００は有線プロトコル、無線及び通信プロトコルによって構成が異なる場合があるが、無線の場合には最低限ＲＦ部１４０を有していればよく、また、有線の場合にはＰＨＹ部１３０のみ搭載、ＰＨＹ部１３０とＭＡＣ部１２０とを搭載など、どのような回路構成でも適用できる。
【０１０１】
また、コンフィグレーション制御回路としてのＣＰＵ４００は通信プロトコルとネットワーク部１００の回路構成によって、搭載する回路構成を変えることでさまざまな通信に適用できる。例えば、ネットワーク部１００がＲＦ部１４０とＰＨＹ部１３０のみの場合に、通信プロトコルとしてはＭＡＣ部１２０も必要な場合には、コンフィグレーション制御回路としてのＣＰＵ４００で通信プロトコルに必要なＭＡＣ部を組み込むようにする。      
【０１０２】
ＦＰＧＡのコンフィグレーションには大きく分けて二通りあり、一つは外部(ネットワーク)からのリクエスト信号によりコンフィグレーションを開始する場合と、装置から外部へリクエスト信号を発信しコンフィグレーションデータ（回路配置データ）を送信してもらい、コンフィグレーションを開始する場合とがある。
【０１０３】
なお、この第２実施形態においても、ＦＰＧＡ３００についてコンフィグレーション実行後に、再度のコンフィグレーション（リコンフィグレーション）を実行する場合がある。その場合のリコンフィグレーション開始の契機については、上述したシーケンス＃１（図２のフローチャート）、上述したシーケンス＃２（図３のフローチャート）を用いて、以下の(G)〜(J)のような手順が考えられる。
(G)ネットワーク経由の外部装置からリコンフィグレーション要求がある場合：シーケンス＃１。
(H)ＣＰＵ４００が特定の処理を終了した場合：シーケンス＃２。
(I)ＦＰＧＡ３００もしくは他のデバイスが、特定の処理を終了してＣＰＵ４００に対してリコンフィグレーションコマンドを送信した場合、もしくは、ＣＰＵ４００に信号を送信した場合：シーケンス＃２。
(J)ＣＰＵ４００が、ＦＰＧＡ３００もしくは他のデバイスの状態をレジスタ等へ読みにいき、その状態がリコンフィグレーション状態にあるとわかった場合：シーケンス＃２。
【０１０４】
なお、上述したリコンフィグレーションに関する機能は、ＦＰＧＡ３００と同等なＦＰＧＡが複数個配置されているようなハードウェアコンフィグレーション装置であっても、何ら問題なく適用することができる。
【０１０５】
〈第３実施形態〉
図６に示されるハードウェアコンフィグレーション装置は、プログラマブルなハードウェアであるＦＰＧＡ３００のコンフィグレーションを実行するハードウェアコンフィグレーション装置の第３実施形態である。なお、この図６では、電源部や各種バスなどの既知の回路構成については省略した状態で示している
そして、このハードウェアコンフィグレーション装置は、最低限の構成として、大きく分けて、ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部１００と、ネットワーク制御とコンフィグレーション制御とを行うためにネットワーク部１００に内蔵されたＣＰＵ１５０と、プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）３００と、を有している。そして、ＦＰＧＡ３００には各種のデバイスが接続されている。
【０１０６】
なお、ＣＰＵ１５０は、ネットワーク部１００でのネットワークに関する制御と、受信した回路配置データを用いてＦＰＧＡ３００のコンフィグレーションを行うためのコンフィグレーション制御と、を行う。
【０１０７】
ここで、コンフィグレーション制御回路として働きをするＣＰＵ１５０は、ネットワーク部１００を介して受信した回路配置データを該回路配置データ用の記憶手段に記憶させることなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行することを特徴としている。そのため、シンプルな構成で実現できる。
【０１０８】
なお、ＦＰＧＡ３００は上述した第１実施形態や第２実施形態と同様な内容である。また、ネットワーク部１００は、ＣＰＵ１５０を備えた点以外は上述した第１実施形態や第２実施形態と同様な内容である。
【０１０９】
上述した第１実施形態はハードウェアで制御していたのに対し、この第３実施形態は、上述した第２実施形態と同様に、ＣＰＵ１５０を使用してソフトウェアで制御を行っているのが特長である。すなわち、ＣＰＵ１５０のソフトウエアの制御により、上述したコンフィグレーション制御回路２００と同様な処理と制御とを実行させる。すなわち、ネットワーク部１００の制御とＦＰＧＡ３００のコンフィグレーション制御は、ＣＰＵ１５０のソフトウェアで行うため、ソフトウェアを変更することでネットワーク部１００の制御とＦＰＧＡ３００のコンフィグレーション制御のアルゴリズムを容易に変更することができる。
【０１１０】
なお、この第３実施形態は、ＦＰＧＡ３００を、ネットワークを利用してコンフィグレーションさせる場合の実施形態である。また、ここで、ネットワーク部１００がネットワーク接続を行う場合、有線による接続、無線による接続のどちらであってもよい。ネットワーク部１００は有線プロトコル、無線及び通信プロトコルによって構成が異なる場合があるが、無線の場合には最低限ＲＦ部１４０を有していればよく、また、有線の場合にはＰＨＹ部１３０のみ搭載、ＰＨＹ部１３０とＭＡＣ部１２０とを搭載など、どのような回路構成でも適用できる。
【０１１１】
また、コンフィグレーション制御回路としてのＣＰＵ１５０は通信プロトコルとネットワーク部１００の回路構成によって、搭載する回路構成を変えることでさまざまな通信に適用できる。例えば、ネットワーク部１００がＲＦ部１４０とＰＨＹ部１３０のみの場合に、通信プロトコルとしてはＭＡＣ部１２０も必要な場合には、コンフィグレーション制御回路としてのＣＰＵ１５０で通信プロトコルに必要なＭＡＣ部を組み込むようにする。
【０１１２】
ＦＰＧＡのコンフィグレーションには大きく分けて二通りあり、一つは外部(ネットワーク)からのリクエスト信号によりコンフィグレーションを開始する場合と、装置から外部へリクエスト信号を発信しコンフィグレーションデータ（回路配置データ）を送信してもらい、コンフィグレーションを開始する場合とがある。
【０１１３】
なお、この第３実施形態においても、ＦＰＧＡ３００についてコンフィグレーション実行後に、再度のコンフィグレーション（リコンフィグレーション）を実行する場合がある。その場合のリコンフィグレーション開始の契機については、上述したシーケンス＃１（図２のフローチャート）、上述したシーケンス＃２（図３のフローチャート）を用いて、以下の(K)〜(N)のような手順が考えられる。
(K)ネットワーク経由の外部装置からリコンフィグレーション要求がある場合：シーケンス＃１。
(L)ＣＰＵ１５０が特定の処理を終了した場合：シーケンス＃２。
(M)ＦＰＧＡ３００もしくは他のデバイスが、特定の処理を終了してＣＰＵ１５０に対してリコンフィグレーションコマンドを送信した場合、もしくは、ＣＰＵ１５０に信号を送信した場合：シーケンス＃２。
(N)ＣＰＵ１５０が、ＦＰＧＡ３００もしくは他のデバイスの状態をレジスタ等へ読みにいき、その状態がリコンフィグレーション状態にあるとわかった場合：シーケンス＃２。
【０１１４】
なお、上述したリコンフィグレーションに関する機能は、ＦＰＧＡ３００と同等なＦＰＧＡが複数個配置されているようなハードウェアコンフィグレーション装置であっても、何ら問題なく適用することができる。
【０１１５】
〈第４実施形態〉
図７に示されるハードウェアコンフィグレーション装置は、プログラマブルなハードウェアであるＦＰＧＡ３００のコンフィグレーションを実行するハードウェアコンフィグレーション装置の第４実施形態である。なお、この図７では、電源部や各種バスなどの既知の回路構成については省略した状態で示している。
【０１１６】
そして、このハードウェアコンフィグレーション装置は、最低限の構成として、大きく分けて、ＦＰＧＡに対してコンフィグレーションを実行する際の回路配置データをネットワーク経由で外部装置から受信するネットワーク部１００と、プログラマブルなハードウェアであるフィールドプログラマブルゲートアレイ（ＦＰＧＡ）３００と、受信した回路配置データを用いてＦＰＧＡ３００のコンフィグレーションを行うコンフィグレーション制御回路としてのＣＰＵ４００と、Ｉ／Ｆ変換を行う中継回路５００と、受信した回路配置データを予備記憶するための記憶手段としてのメモリ６００、を有している。そして、ＦＰＧＡ３００には各種のデバイスが接続されている。
【０１１７】
なお、中継回路５００はＩ／Ｆ変換の作業を行うものであり、予め定められたアドレスに応じて、ＣＰＵ４００からの回路配置データを、ＦＰＧＡ３００に送るか、ＦＰＧＡ３００とメモリ６００の両方にに送るか、を切り替える。
【０１１８】
ここで、コンフィグレーション制御回路としてのＣＰＵ４００は、ネットワーク部１００を介して受信した回路配置データを、該回路配置データ用の記憶手段やメモリ６００に記憶させてからではなく、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行することを特徴としている。そして、ＣＰＵ４００は、ネットワーク部１００を介して受信した回路配置データを、ネットワーク部１００で受信しつつＦＰＧＡ３００に対して直接コンフィグレーションを実行し、これと並行して、メモリ６００にも記憶させることを特徴としている。
【０１１９】
この第４実施形態では、ＦＰＧＡ３００にコンフィグレーションデータ（回路配置データ）を送るのと並行して、メモリ６００へコンフィグレーションデータを保存させることを示した実施形態である。
【０１２０】
従来の発明では、コンフィグレーションデータを一度メモリに書き込んで、その後ＦＰＧＡへ回路配置データを送ってコンフィグレーションを実現していたが、この発明では、コンフィグレーション前に記憶させるものではなく、コンフィグレーションと記憶とを並行して行うため、上述した第１実施形態〜第３実施形態と同様に、コンフィグレーション完了までの時間を短縮することができる。
【０１２１】
また、この第４実施形態のように、メモリ６００に同時に書き込みをおこなっておけば、正常にコンフィグレーションもしくはリコンフィグレーションをしている間は短時間でコンフィグレーション動作を実現でき、かつエラー状態（通信障害等でコンフィグレーションもしくはリコンフィグレーションができなかった場合）には、このメモリ６００からデータを読み出し、再びダウンロードすることなくコンフィグレーションを実行できる。なお、この場合のメモリ６００はＲＯＭ型でもＲＡＭ型でもどちらでもよい。
【０１２２】
上述した第１実施形態はハードウェアで制御していたのに対し、この第４実施形態はＣＰＵ４００を使用してソフトウェアで制御を行っているのが特長である。すなわち、ＣＰＵ４００のソフトウエアの制御により、上述したコンフィグレーション制御回路２００と同様な処理と制御とを実行させる。すなわち、ネットワーク部１００の制御とＦＰＧＡ３００のコンフィグレーション制御は、ＣＰＵ４００のソフトウェアで行うため、ソフトウェアを変更することでネットワーク部１００の制御とＦＰＧＡ３００のコンフィグレーション制御のアルゴリズムを容易に変更することができる。
【０１２３】
またこの第４実施形態ではＣＰＵ４００を用いているが、これを第１実施形態のようにハードウェアで実現する形態をとってもよく、その場合には中継回路をＰＬＤ内で実現してもよい。
【０１２４】
なお、この第４実施形態は、ＦＰＧＡ３００を、ネットワークを利用してコンフィグレーションさせる場合の実施形態である。また、ここで、ネットワーク部１００がネットワーク接続を行う場合、有線による接続、無線による接続のどちらであってもよい。ネットワーク部１００は有線プロトコル、無線及び通信プロトコルによって構成が異なる場合があるが、無線の場合には最低限ＲＦ部１４０を有していればよく、また、有線の場合にはＰＨＹ部１３０のみ搭載、ＰＨＹ部１３０とＭＡＣ部１２０とを搭載など、どのような回路構成でも適用できる。
【０１２５】
また、コンフィグレーション制御回路としてのＣＰＵ４００は通信プロトコルとネットワーク部１００の回路構成によって、搭載する回路構成を変えることでさまざまな通信に適用できる。例えば、ネットワーク部１００がＲＦ部１４０とＰＨＹ部１３０のみの場合に、通信プロトコルとしてはＭＡＣ部１２０も必要な場合には、コンフィグレーション制御回路としてのＣＰＵ４００で通信プロトコルに必要なＭＡＣ部を組み込むようにする。
【０１２６】
ＦＰＧＡのコンフィグレーションには大きく分けて二通りあり、一つは外部(ネットワーク)からのリクエスト信号によりコンフィグレーションを開始する場合と、装置から外部へリクエスト信号を発信しコンフィグレーションデータ（回路配置データ）を送信してもらい、コンフィグレーションを開始する場合とがある。
【０１２７】
なお、この第４実施形態においても、ＦＰＧＡ３００についてコンフィグレーション実行後に、再度のコンフィグレーション（リコンフィグレーション）を実行する場合がある。その場合のリコンフィグレーション開始の契機については、上述したシーケンス＃１（図２のフローチャート）、上述したシーケンス＃２（図３のフローチャート）を用いて、以下の(O)〜(R)のような手順が考えられる。
(O)ネットワーク経由の外部装置からリコンフィグレーション要求がある場合：シーケンス＃１。
(P)ＣＰＵ４００が特定の処理を終了した場合：シーケンス＃２。
(Q)ＦＰＧＡ３００もしくは他のデバイスが、特定の処理を終了してＣＰＵ４００に対してリコンフィグレーションコマンドを送信した場合、もしくは、ＣＰＵ４００に信号を送信した場合：シーケンス＃２。
(R)ＣＰＵ４００が、ＦＰＧＡ３００もしくは他のデバイスの状態をレジスタ等へ読みにいき、その状態がリコンフィグレーション状態にあるとわかった場合：シーケンス＃２。
【０１２８】
なお、上述したリコンフィグレーションに関する機能は、ＦＰＧＡ３００と同等なＦＰＧＡが複数個配置されているようなハードウェアコンフィグレーション装置であっても、何ら問題なく適用することができる。
【図面の簡単な説明】
【０１２９】
【図１】本発明の第１実施形態のハードウェアコンフィグレーション装置の概略構成を示すブロック図である。
【図２】本発明の実施形態においてコンフィグレーションを実行する際の手順を示すフローチャートである。
【図３】本発明の実施形態においてコンフィグレーションを実行する際の手順を示すフローチャートである。
【図４】本発明の第１実施形態のハードウェアコンフィグレーション装置の他の構成を示すブロック図である。
【図５】本発明の第２実施形態のハードウェアコンフィグレーション装置の概略構成を示すブロック図である。
【図６】本発明の第３実施形態のハードウェアコンフィグレーション装置の概略構成を示すブロック図である。
【図７】本発明の第４実施形態のハードウェアコンフィグレーション装置の概略構成を示すブロック図である。
【符号の説明】
【０１３０】
１００  ネットワーク部
２００  コンフィグレーション制御回路
３００  ＦＰＧＡ
【図１】
2006262227.tif 000003
【図２】
2006262227.tif 000004
【図３】
2006262227.tif 000005
【図４】
2006262227.tif 000006
【図５】
2006262227.tif 000007
【図６】
2006262227.tif 000008
【図７】
2006262227.tif 000009