(57)【要約】【課題】メモリの容量を低減させて、より簡易な制御を行うことができるプログラマブルデバイス制御装置およびその方法を提供することを目的とする。【解決手段】Ｂ面領域に記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作が失敗と判断された場合に、Ａ面領域に記憶されたコンフィギュレーションデータを読み出してＦＰＧＡに書き込むことで、外部装置との通信の機能を少なくとも含んだＦＰＧＡの動作を制御する。Ｂ面領域には、ＦＰＧＡの所定動作のうちで全ての機能を含んだコンフィギュレーションデータを記憶するとともに、Ａ面領域には、Ｂ面領域に記憶されたコンフィギュレーションデータに含まれる機能よりも少なく含み、かつ外部装置との通信機能を少なくとも含んだコンフィギュレーションデータを記憶しているので、メモリの容量を低減させて、より簡易な制御を行うことができる。【選択図】図５
2008182327.tif 000002
【特許請求の範囲】
【請求項１】
外部装置に対して通信可能に接続された少なくとも１つのプログラマブルデバイスと、そのプログラマブルデバイスの動作を設定するための設定データを記憶する不揮発性メモリと、その不揮発性メモリに記憶された前記設定データを読み出してプログラマブルデバイスに書き込むことで、書き込んだ設定データに基づくプログラマブルデバイスの動作を制御する制御手段とを備えたプログラマブルデバイス制御装置であって、不揮発性メモリは、プログラマブルデバイスの所定動作のうちで全ての機能を含んだ設定データを記憶する第１領域と、その第１領域に記憶された設定データに含まれる機能よりも少なく含み、かつ前記外部装置との通信機能を少なくとも含んだ設定データを記憶する第２領域とを有し、前記装置は、少なくとも第１領域に記憶された設定データの読み出しによる読み出し動作が失敗か否かを判断する読み出し動作判断手段を備え、第1領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、プログラマブルデバイスの前記所定動作を前記制御手段は制御するとともに、前記読み出し動作判断手段によって読み出し動作が失敗と判断された場合に、前記第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を制御手段は制御することを特徴とするプログラマブルデバイス制御装置。
【請求項２】
請求項１に記載のプログラマブルデバイス制御装置において、前記不揮発性メモリは、１つのメモリで前記第１領域および第２領域を有することを特徴とするプログラマブルデバイス制御装置。
【請求項３】
外部装置に対して通信可能に接続された少なくとも１つのプログラマブルデバイスと、そのプログラマブルデバイスの動作を設定するための設定データを記憶し、第１領域および第２領域を有した不揮発性メモリとを備えたプログラマブルデバイス制御装置で、前記不揮発性メモリに記憶された前記設定データを読み出してプログラマブルデバイスに書き込むことで、書き込んだ設定データに基づくプログラマブルデバイスの動作を制御するプログラマブルデバイス制御方法であって、前記第1領域には、プログラマブルデバイスの所定動作のうちで全ての機能を含んだ設定データを記憶するとともに、前記第２領域には、第1領域に記憶された設定データに含まれる機能よりも少なく含み、かつ前記外部装置との通信機能を少なくとも含んだ設定データを記憶し、第1領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、プログラマブルデバイスの前記所定動作を制御するとともに、少なくとも第１領域に記憶された設定データの読み出しによる読み出し動作が失敗した場合に、第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を制御することを特徴とするプログラマブルデバイス制御方法。
【請求項４】
請求項３に記載のプログラマブルデバイス制御方法において、(a)少なくとも前記第１領域に記憶された前記設定データの読み出しによる読み出し動作が失敗か否かを管理するためのエラーフラグを、前記装置の電源投入後に“０”にクリアし、(b)前記エラーフラグが“０”の場合には第１領域に相当するアドレスを設定し、エラーフラグが“１”の場合には前記第２領域に相当するアドレスを設定し、(c)設定後に設定に該当する領域に記憶された設定データを読み出す読み出し動作を行い、(d)その読み出し動作が失敗と判断された場合にエラーフラグを反転して、(e)第２領域に記憶された設定データの読み出しによる読み出し動作が失敗した場合には前記反転後に終了して、第１領域に記憶された設定データの読み出しによる読み出し動作が失敗した場合には反転後に前記(b)に戻ることで、(b)〜(e)を繰り返し行うことを特徴とするプログラマブルデバイス制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
この発明は、プログラマブルデバイス制御装置およびその方法に関する。
【背景技術】
【０００２】
近年、プログラムデータに応じて内部の使用するハードウェア回路（例えば論理回路）が変更可能なプログラマブルデバイスがある。
【０００３】
このプログラマブルデバイスとして、ＦＰＧＡ(Field Programmable Gate Array)を例に採って説明する。ＦＰＧＡでは、「コンフィギュレーションデータ」と呼ばれるＦＰＧＡの動作を設定するための設定データがある。電源投入時に、ＦＰＧＡはこのコンフィギュレーションデータを読み出すことにより、コンフィギュレーションデータに基づく動作を行う。このコンフィギュレーションデータを書き換えることで、ＦＰＧＡで実現する機能を変更することが可能である。
【０００４】
より具体的に説明すると、外部装置であるパーソナルコンピュータ（以下、「ＰＣ」と略記する）とＦＰＧＡを有したＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）とを電気的に接続することで、ＦＰＧＡ搭載基板はＰＣに対して通信可能に接続する。ＰＣから更新すべきコンフィギュレーションデータをＦＰＧＡに送信し、ＦＰＧＡ制御装置内の不揮発性メモリ（例えばフラッシュメモリ）に書き込んで記憶する。次の電源投入時にそのフラッシュメモリに記憶されたコンフィギュレーションデータを読み出してＦＰＧＡに書き込むことで、書き込んだコンフィギュレーションデータに基づく動作をＦＰＧＡが行う。
【０００５】
もし、フラッシュメモリへのコンフィギュレーションデータの書き込み中に電源が切断し、データ転送ミスなどのフラッシュメモリへの書き込みが正常に行われない場合、あるいは間違ったデータの書き込みを行った場合には、コンフィギュレーションデータの読み出しによる読み出し動作（以下、「コンフィギュレーション動作」と呼ぶ）が失敗し正常に完了しない。したがって、ＦＰＧＡも正常に動作しない。この正常に動作していないＦＰＧＡに対して、ＰＣからコンフィギュレーションデータを送信して、コンフィギュレーションデータの更新を行うことができないという問題があった。
【０００６】
その状態で復旧させるためには、ＦＰＧＡ書き込み専用端末をＦＰＧＡに直接に接続して、ＦＰＧＡ内のコンフィギュレーションデータを変更し、ＦＰＧＡのコンフィギュレーション動作を正常に完了させる必要があった。また、そのためには、専用端末用のコネクタを装置に接続できるように設ける、あるいは装置を開封しＦＰＧＡに接続しなければならなかった。
【０００７】
上記問題を解決する方法として、コンフィギュレーションデータを書き込んで記憶（格納）する２つの領域と、コンフィギュレーションデータ格納面を示すフラグを有する領域とを有するメモリを搭載する方法が提案されている（例えば、特許文献１参照）。そして、特許文献１では、上述したコンフィギュレーションデータ格納面を示すフラグに応じたコンフィギュレーションデータによりコンフィギュレーション動作を行う。さらに、コンフィギュレーション動作が失敗した場合に、もう１つの領域で格納されたコンフィギュレーションデータによりコンフィギュレーション動作を行う制御方法が提案されている。
【特許文献１】特開２００５−１９１８７２号公報（第１−１０頁、図１−９）
【発明の開示】
【発明が解決しようとする課題】
【０００８】
しかしながら、上述した方法では、コンフィギュレーションデータを書き込むコンフィギュレーションデータ用のメモリは、必要なコンフィギュレーションデータのサイズの２倍以上が必要である。また、フラグ管理、コンフィギュレーションデータのコピー処理などといったコンフィギュレーションの制御方法が複雑化する。
【０００９】
この発明は、このような事情に鑑みてなされたものであって、メモリの容量を低減させて、より簡易な制御を行うことができるプログラマブルデバイス制御装置およびその方法を提供することを目的とする。
【課題を解決するための手段】
【００１０】
この発明は、このような目的を達成するために、次のような構成をとる。
すなわち、請求項１に記載の発明は、外部装置に対して通信可能に接続された少なくとも１つのプログラマブルデバイスと、そのプログラマブルデバイスの動作を設定するための設定データを記憶する不揮発性メモリと、その不揮発性メモリに記憶された前記設定データを読み出してプログラマブルデバイスに書き込むことで、書き込んだ設定データに基づくプログラマブルデバイスの動作を制御する制御手段とを備えたプログラマブルデバイス制御装置であって、不揮発性メモリは、プログラマブルデバイスの所定動作のうちで全ての機能を含んだ設定データを記憶する第１領域と、その第１領域に記憶された設定データに含まれる機能よりも少なく含み、かつ前記外部装置との通信機能を少なくとも含んだ設定データを記憶する第２領域とを有し、前記装置は、少なくとも第１領域に記憶された設定データの読み出しによる読み出し動作が失敗か否かを判断する読み出し動作判断手段を備え、第1領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、プログラマブルデバイスの前記所定動作を前記制御手段は制御するとともに、前記読み出し動作判断手段によって読み出し動作が失敗と判断された場合に、前記第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を制御手段は制御することを特徴とするものである。
【００１１】
［作用・効果］請求項１に記載の発明によれば、第1領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、プログラマブルデバイスの所定動作を制御手段は制御するとともに、読み出し動作判断手段によって読み出し動作が失敗と判断された場合に、第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を制御手段は制御する。ここで、第1領域には、プログラマブルデバイスの所定動作のうちで全ての機能を含んだ設定データを記憶するとともに、第２領域には、第１領域に記憶された設定データに含まれる機能よりも少なく含み、かつ外部装置との通信機能を少なくとも含んだ設定データを記憶している。したがって、第２領域には、第１領域に記憶された設定データに含まれる機能よりも少なく含んだ分だけ、メモリの容量を低減させることができる。また、第２領域には、外部装置との通信機能を少なくとも含んだ設定データを記憶しているので、読み出し動作が失敗と判断された場合でも、第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を行うことができる。したがって、外部装置との通信の機能を少なくとも確保していれば、上述した特許文献１のようなフラグ管理、コンフィギュレーションデータのコピー処理などを行わなくても、一連の制御を再度行うことができ、より簡易な制御を行うことができる。
【００１２】
なお、上述した不揮発性メモリは、１つのメモリで第１領域および第２領域を有してもよいし（請求項２に記載の発明）、各々のメモリで、一方のメモリは第１領域を有し、他方のメモリは第２領域を有してもよい。前者（請求項２に記載の発明）のように１つのメモリで第１領域および第２領域を有する場合には、第１領域および第２領域を１つの不揮発性メモリでまとめることができる。
【００１３】
また、請求項３に記載の発明は、外部装置に対して通信可能に接続された少なくとも１つのプログラマブルデバイスと、そのプログラマブルデバイスの動作を設定するための設定データを記憶し、第１領域および第２領域を有した不揮発性メモリとを備えたプログラマブルデバイス制御装置で、前記不揮発性メモリに記憶された前記設定データを読み出してプログラマブルデバイスに書き込むことで、書き込んだ設定データに基づくプログラマブルデバイスの動作を制御するプログラマブルデバイス制御方法であって、前記第1領域には、プログラマブルデバイスの所定動作のうちで全ての機能を含んだ設定データを記憶するとともに、前記第２領域には、第1領域に記憶された設定データに含まれる機能よりも少なく含み、かつ前記外部装置との通信機能を少なくとも含んだ設定データを記憶し、第１領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、プログラマブルデバイスの前記所定動作を制御するとともに、少なくとも第１領域に記憶された設定データの読み出しによる読み出し動作が失敗した場合に、第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を制御することを特徴とするものである。
【００１４】
［作用・効果］請求項３に記載の発明によれば、第1領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、プログラマブルデバイスの所定動作を制御するとともに、少なくとも第１領域に記憶された設定データの読み出しによる読み出し動作が失敗と判断された場合に、第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を制御する。ここで、第1領域には、プログラマブルデバイスの所定動作のうちで全ての機能を含んだ設定データを記憶するとともに、第２領域には、第１領域に記憶された設定データに含まれる機能よりも少なく含み、かつ外部装置との通信機能を少なくとも含んだ設定データを記憶している。したがって、第２領域には、第１領域に記憶された設定データに含まれる機能よりも少なく含んだ分だけ、メモリの容量を低減させることができる。また、第２領域には、外部装置との通信機能を少なくとも含んだ設定データを記憶しているので、読み出し動作が失敗と判断された場合でも、第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を行うことができる。したがって、外部装置との通信の機能を少なくとも確保していれば、上述した特許文献１のようなフラグ管理、コンフィギュレーションデータのコピー処理などを行わなくても、一連の制御を再度行うことができ、より簡易な制御を行うことができる。
【００１５】
上述したプログラマブルデバイス制御方法では、具体的にはフラグを用いて以下のように制御を行えばよい（請求項４に記載の発明）。すなわち、(a)少なくとも第１領域に記憶された設定データの読み出しによる読み出し動作が失敗か否かを管理するためのエラーフラグを、装置の電源投入後に“０”にクリアする。そして、(b)上述したエラーフラグが“０”の場合には第１領域に相当するアドレスを設定し、エラーフラグが“１”の場合には第２領域に相当するアドレスを設定する。そして、(c)設定後に設定に該当する領域に記憶された設定データを読み出す読み出し動作を行う。そして、(d)その読み出し動作が失敗と判断された場合にエラーフラグを反転する。そして、(e)第２領域に記憶された設定データの読み出しによる読み出し動作が失敗した場合には上述した反転後に終了して、第１領域に記憶された設定データの読み出しによる読み出し動作が失敗した場合には反転後に前記(b)に戻ることで、(b)〜(e)を繰り返し行う。このようなエラーフラグを用いることで、一連の制御を行うことができる。なお、この制御方法では、第２領域に記憶された設定データの読み出しによる読み出し動作が失敗した場合には、外部装置との通信機能でさえ確保できていない状態であるので、上述した反転後に終了するように制御する。このような第２領域に記憶された設定データの読み出しによる読み出し動作が失敗する場合には、例えば装置の出荷前などのように第２領域に設定データが予め記憶されていないときである。したがって、例えば装置の出荷後の通常の使用時には第２領域に設定データが予め記憶されているので、第２領域に記憶された設定データの読み出しによる読み出し動作は失敗しない。
【発明の効果】
【００１６】
この発明に係るプログラマブルデバイス制御装置およびその方法によれば、第1領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、プログラマブルデバイスの所定動作を制御するとともに、少なくとも第１領域に記憶された設定データの読み出しによる読み出し動作が失敗と判断された場合に、第２領域に記憶された設定データを読み出してプログラマブルデバイスに書き込むことで、外部装置との通信の機能を少なくとも含んだプログラマブルデバイスの動作を制御する。ここで、第1領域には、プログラマブルデバイスの所定動作のうちで全ての機能を含んだ設定データを記憶するとともに、第２領域には、第１領域に記憶された設定データに含まれる機能よりも少なく含み、かつ外部装置との通信機能を少なくとも含んだ設定データを記憶しているので、メモリの容量を低減させて、より簡易な制御を行うことができる。
【実施例】
【００１７】
以下、図面を参照してこの発明の実施例を説明する。
図１は、実施例に係るＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）の概略ブロック図であり、図２は、フラッシュメモリの概略構成図であり、図３は、コンフィギュレーション制御部の概略構成図である。本実施例ではプログラマブルデバイスとして、ＦＰＧＡ(Field Programmable Gate Array)を例に採って説明するとともに、不揮発性メモリとしてフラッシュメモリ(Flash Memory)を例に採って説明する。
【００１８】
図１に示すように、外部装置であるパーソナルコンピュータ（ＰＣ）１０と２つのＦＰＧＡ２１，２２（図１では「ＦＰＧＡ１」、「ＦＰＧＡ２」で記す）を有したＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）２０とを電気的に接続することで、ＦＰＧＡ搭載基板２０はＰＣ１０に対して通信可能に接続する。ＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）２０は、この発明におけるプログラマブルデバイス制御装置に相当する。
【００１９】
ＦＰＧＡ搭載基板２０は、２つのＦＰＧＡ２１，２２とバス２３とコンフィギュレーション制御部２４とフラッシュメモリ２５と周辺機器２６とを備えている。２つのＦＰＧＡ２１，２２のうち、バス１１を介してＦＰＧＡ２１（図１の「ＦＰＧＡ１」を参照）は外部装置であるＰＣ１０に対して通信可能に接続されており、ＦＰＧＡ２１およびＦＰＧＡ２２（図１の「ＦＰＧＡ２」を参照）とコンフィギュレーション制御部２４と周辺機器２６とはバス２３を介して通信可能に接続されており、コンフィギュレーション制御部２４とフラッシュメモリ２５とはバス２３を介して通信可能に接続されている。ＦＰＧＡ２１，２２は、この発明におけるプログラマブルデバイスに相当し、コンフィギュレーション制御部２４は、この発明における制御手段に相当し、フラッシュメモリ２５は、この発明における不揮発性メモリに相当する。
【００２０】
２つのＦＰＧＡ２１，２２のうち、ＦＰＧＡ２１は、ＰＣ１０との通信機能を含んだコンフィギュレーションデータに基づく動作を行い、ＦＰＧＡ２２は、その装置特有のコンフィギュレーションデータに基づく動作を専ら行う。本実施例では、ＦＰＧＡ搭載基板２０は医用や工業用の放射線診断装置に用いられ、ＦＰＧＡ２２は放射線診断のための画像処理を行う。コンフィギュレーションデータは、ＦＰＧＡ２１，２２の動作を設定するための設定データであって、このコンフィギュレーションデータを書き換えることでＦＰＧＡで実現する機能の変更を行う。コンフィギュレーションデータは、この発明における設定データに相当する。
【００２１】
フラッシュメモリ２５は、図２に示すように、Ａ面領域２５ＡとＢ面領域２５Ｂとを有している。Ａ面領域２５Ａは、外部装置であるＰＣ１０（図１を参照）との通信機能を少なくとも含んで限定したＦＰＧＡ２１（図１を参照）のコンフィギュレーションデータの格納領域である。Ｂ面領域２５Ｂは、ＦＰＧＡ２１のコンフィギュレーションデータの格納領域であるＦＰＧＡ１領域２５ａと、ＦＰＧＡ２２（図１を参照）のコンフィギュレーションデータの格納領域であるＦＰＧＡ２領域２５ｂとを有している。各々のＦＰＧＡ１領域２５ａおよびＦＰＧＡ２領域２５ｂは、Ａ面領域２５Ａと相違し、ＦＰＧＡ２１およびＦＰＧＡ２２の所定動作のうちで全ての機能を含んだコンフィギュレーションデータの格納領域である。
【００２２】
Ａ面領域２５ＡについてはＢ面領域２５Ｂと比較すると、Ａ面領域２５Ａに格納されるコンフィギュレーションデータに含まれる機能は、装置自体が誤作動しない程度に削除されている。したがって、Ａ面領域２５Ａに格納されるコンフィギュレーションデータは、ＰＣ１０との通信機能を少なくとも含んでいる。
【００２３】
したがって、Ａ面領域２５Ａは、Ｂ面領域２５Ｂの各々のＦＰＧＡ１領域２５ａ／ＦＰＧＡ２領域２５ｂに記憶されたコンフィギュレーションデータに含まれる機能よりも少なく含まれており、図２に示すように、Ａ面領域２５Ａの大きさはＢ面領域２５Ｂより小さい。本実施例では、ＦＰＧＡ２１の所定動作は、上述したＰＣ１０との通信の他に、周辺機器２６（図１を参照）（例えばＡ／Ｄコンバータ、Ｄ／Ａコンバータ、センサなど）の制御、タイマ、ＦＰＧＡ２２との通信であって、ＦＰＧＡ２２の所定動作は、上述した画像処理の他に、ＦＰＧＡ２１との通信である。
【００２４】
なお、Ａ面領域２５Ａについては、Ｂ面領域２５Ｂの各々の領域に記憶されたコンフィギュレーションデータに含まれる機能よりも少なく含み、かつ外部装置であるＰＣ１０との通信機能を少なくとも含んだコンフィギュレーションデータを記憶するのであれば、Ａ面領域２５Ａに格納されるコンフィギュレーションデータに含まれる機能については特に限定されない。例えば、ＰＣ１０との通信機能のみを含んだコンフィギュレーションデータをＡ面領域２５Ａに書き込んで記憶（格納）したとしても、装置自体が誤作動しないのであれば、Ａ面領域２５Ａに格納されるコンフィギュレーションデータはＰＣ１０との通信機能のみを含んでもかまわない。Ａ面領域２５Ａは、この発明における第２領域に相当し、Ｂ面領域２５Ｂは、この発明における第１領域に相当する。
【００２５】
コンフィギュレーション制御部２４は、図３に示すように、ＦＰＧＡ通信部２４Ａとコンフィギュレーションリード制御部２４Ｂとフラッシュメモリ制御部２４Ｃとコンフィギュレーション動作監視部２４Ｄとを備えている。ＦＰＧＡ通信部２４Ａは、バス２３（図１を参照）を介してＦＰＧＡ２１（図１を参照）に対して通信可能に接続されており、コンフィギュレーションリード制御部２４Ｂは、バス２３を介してＦＰＧＡ２１およびＦＰＧＡ２２に対して通信可能に接続されている。ＦＰＧＡ通信部２４Ａとフラッシュメモリ制御部２４Ｃとは通信可能に接続されているとともに、コンフィギュレーションリード制御部２４Ｂとフラッシュメモリ制御部２４Ｃとは通信可能に接続されている。また、コンフィギュレーションリード制御部２４Ｂとコンフィギュレーション動作監視部２４Ｄとは通信可能に接続されているとともに、フラッシュメモリ制御部２４Ｃとコンフィギュレーション動作監視部２４Ｄとは通信可能に接続されている。
【００２６】
ＦＰＧＡ通信部２４ＡはＦＰＧＡ２１との通信を行う。具体的には、ＰＣ１０（図１を参照）から更新すべきコンフィギュレーションデータをＦＰＧＡ２１に送信し、フラッシュメモリ２５（図１、図２を参照）のＢ面領域２５Ｂ（図２を参照）に書き込んで記憶するときに、ＦＰＧＡ２１を介してＰＣ１０から送信されてきた更新すべきコンフィギュレーションデータ、およびそれを書き込むフラッシュメモリ２５のアドレス（場合によってはＦＰＧＡ２領域２５ｂの場合もあるし、出荷時はＡ面領域２５Ａもある）をＦＰＧＡ通信部２４Ａは受信する。そして、これらのデータやアドレスをＦＰＧＡ通信部２４Ａはフラッシュメモリ制御部２４Ｃに送信する。
【００２７】
コンフィギュレーションリード制御部２４Ｂは各ＦＰＧＡ２１，２２のコンフィギュレーションデータに関する書き込みを制御する。具体的には、電源投入後、所定のコンフィギュレーション動作を行うために、フラッシュメモリ２５からコンフィギュレーションデータをフラッシュメモリ制御部２４Ｃにリードする（読み出す）アドレス（ここではＢ面領域２５ＢのＦＰＧＡ１領域２５ａまたはＦＰＧＡ２領域２５ｂ（図２を参照）の開始アドレス）をコンフィギュレーションリード制御部２４Ｂはフラッシュメモリ制御部２４Ｃに送信する。そして、コンフィギュレーションリード制御部２４Ｂから送信されたリードすべきアドレスを、フラッシュメモリ制御部２４Ｃを介してフラッシュメモリ２５は受信して、各ＦＰＧＡ２１，２２へコンフィギュレーションデータを出力する。コンフィギュレーション動作は、この発明における読み出し動作に相当する。
【００２８】
フラッシュメモリ制御部２４Ｃはフラッシュメモリ２５を制御する。具体的には、ＦＰＧＡ通信部２４Ａやコンフィギュレーションリード制御部２４Ｂから送信されてきたデータをフラッシュメモリ制御部２４Ｃは受信して、これらのデータ（指示）に基づいてフラッシュメモリ２５を制御する。
【００２９】
コンフィギュレーション動作監視部２４Ｄはコンフィギュレーション動作が失敗か否かを判断するために監視する。具体的には、コンフィギュレーション動作時において各ＦＰＧＡ２１，２２がコンフィギュレーションデータの受信を正常に完了したら“「conf done」信号”と呼ばれる信号を、各ＦＰＧＡ２１，２２からコンフィギュレーションリード制御部２４Ｂを介してコンフィギュレーション動作監視部２４Ｄに転送する。もし、各ＦＰＧＡ２１，２２から送信されてきた「conf done」信号が所定時間内にコンフィギュレーション動作監視部２４Ｄに達した場合には、コンフィギュレーション動作が成功して正常に完了したとしたとコンフィギュレーション動作監視部２４Ｄは判断する。また、例えば、フラッシュメモリ２５へのコンフィギュレーションデータの書き込み中に電源が切断して電源がオフになり、データ転送ミスなどのフラッシュメモリ２５への書き込みが正常に行われない場合、あるいは間違ったデータの書き込みを行った場合には、各ＦＰＧＡ２１，２２から送信されてきた「conf done」信号が所定時間内に到達しない。その場合にはタイムアウトとなって、コンフィギュレーション動作が失敗したとコンフィギュレーション動作監視部２４Ｄは判断する。失敗して異常と判断された場合には、コンフィギュレーション動作監視部２４Ｄからコンフィギュレーションリード制御部２４Ｂに送信する。コンフィギュレーション動作監視部２４Ｄは、この発明における読み出し動作判断手段に相当する。
【００３０】
次に、具体的な一連のＦＰＧＡ制御について、図４および図５を参照して説明する。図４は、コンフィギュレーション動作を含んだ一連のコンフィギュレーションデータの更新の流れを示すフローチャートであり、図５は、コンフィギュレーション動作を含んだ電源オン後の一連の流れを示すフローチャートである。
【００３１】
先ず、コンフィギュレーション動作を含んだ一連のコンフィギュレーションデータの更新の流れについて、図４を参照して説明する。
【００３２】
（ステップＳ１）コンフィギュレーションデータ更新？
更新すべきコンフィギュレーションデータがあるか否かを判断する。例えば外部装置であるＰＣ１０からコンフィギュレーションデータが新たに作成された場合には、次のステップＳ２に進む。もし、更新がなければ、更新があるまでステップＳ１をループして待機する。
【００３３】
（ステップＳ２）コンフィギュレーションデータを消去
作成されたコンフィギュレーションデータを格納すべきフラッシュメモリ２５内の領域（Ｂ面領域２５Ｂの２５ａまたは２５ｂ）に、先に格納されたコンフィギュレーションデータの消去を、ＰＣ１０から指示する。つまり、更新するコンフィギュレーションデータ領域のみ消去してクリアする。
【００３４】
（ステップＳ３）コンフィギュレーションデータを送信
ＰＣ１０から更新すべきコンフィギュレーションデータを、ＦＰＧＡ２１およびコンフィギュレーション制御部２４を介して、フラッシュメモリ２５に送信して、フラッシュメモリ２５内のＢ面領域２５Ｂの２５ａまたは２５ｂに書き込んで記憶する。具体的には、更新すべきコンフィギュレーションデータを書き込むフラッシュメモリ２５のアドレスをＦＰＧＡ通信部２４Ａは受信して、そのアドレスをＦＰＧＡ通信部２４Ａはフラッシュメモリ制御部２４Ｃに送信する。そのアドレスに該当する領域に、更新すべきコンフィギュレーションデータを書き込んで記憶する。
【００３５】
（ステップＳ４）コンフィギュレーションデータを比較
コンフィギュレーションデータが正確に書き込まれたか否かを確認するために、コンフィギュレーションデータを読み出して、ＰＣ１０に送信する。読み出されたコンフィギュレーションデータが、元の送信前のコンフィギュレーションデータに一致するか否かを確認するためにデータ比較を行う。
【００３６】
（ステップＳ５）比較正常？
比較した結果、一致している場合には、比較結果が正常だとして、次のステップＳ６に進む。なお、比較結果が正常だと判断された場合には、ＰＣ１０からフラッシュメモリ２５へのコンフィギュレーションデータの書き込みが正常に行われていることになる。一致していない場合には、比較結果が異常だとして、ステップＳ２に戻って繰り返す。
【００３７】
（ステップＳ６）電源オフ
フラッシュメモリ２５へのコンフィギュレーションデータの書き込み後に、電源を切断してオフにする。
【００３８】
（ステップＳ７）電源オン
電源投入し、オンにする。電源オン後は、図５に示すフローを行う。具体的なフローについては後述する。
【００３９】
（ステップＳ８）通信確保
ステップＳ７で、電源オン後の動作が終了したら、ＰＣ１０との通信をＦＰＧＡ２１が確保しているか否かを確認する。図５に示すフローでは、Ａ面領域２５Ａに格納されるコンフィギュレーションデータは、ＰＣ１０との通信機能を少なくとも含んでおり、装置の出荷後の通常の使用時には、そのコンフィギュレーションデータがＡ面領域２５Ａに予め記憶されているので、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作は失敗しない。したがって、通常の使用時にはＰＣ１０との通信を最小限にＦＰＧＡ２１は確保しているので、ステップＳ１０に進む。
【００４０】
（ステップＳ１０）正常終了？
Ｂ面領域２５ＢのＦＰＧＡ１領域２５ａとＦＰＧＡ２領域２５ｂに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作が成功して正常に完了した場合には、コンフィギュレーション動作を含んだ一連のコンフィギュレーションデータの更新が正常に行われたとして、一連のフローを終了する。そして、書き込んだコンフィギュレーションデータに基づく動作をＦＰＧＡ２１，２２が行う。ステップＳ８で確保している場合で、かつＢ面領域２５ＢのＦＰＧＡ１領域２５ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作が失敗して異常と判断された場合には、ＰＣ１０との通信を最小限にＦＰＧＡ２１は確保しているとして、ステップＳ２に戻って繰り返す。
【００４１】
なお、装置の出荷時の場合、コンフィギュレーションデータがＡ面領域２５Ａに予め記憶されていないので、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータによるコンフィギュレーション動作は失敗する。したがって、ＰＣ１０との通信をＦＰＧＡ２１は確保されず、コンフィギュレーションのデータの書き込みはできない。したがって、復旧させるために専用治具（ＦＰＧＡ書き込み専用端末（図示省略））をＦＰＧＡ２１に直接接続して、ＦＰＧＡ２１内のコンフィギュレーションデータを書き換え、ＰＣ１０との通信を確保する。その後、Ａ面領域２５Ａにコンフィギュレーションデータの書き込みを図４のフローに従って書き込む。
【００４２】
続いて、コンフィギュレーション動作を含んだ電源オン後の一連の流れについて、図５を参照して説明する。
【００４３】
（ステップＳ７１）電源オン？
上述したようにステップＳ６の電源オフ後に電源を投入してオンにする。電源オンになるまでステップＳ７１をループして待機する。
【００４４】
（ステップＳ７２）ループカウンタ、エラーフラグクリア
電源オン（電源投入）後に、ループカウンタ、エラーフラグを“０”にクリアする。ループカウンタおよびエラーフラグはコンフィギュレーション制御部２４内で設定される。
【００４５】
ループカウンタは、コンフィギュレーション動作（すなわちフラッシュメモリ２５からコンフィギュレーションデータを読み出す動作）についてＦＰＧＡ２１，２２の選択を管理するためのカウンタであって、本実施例では、ループカウンタが“０”のときはＦＰＧＡ２１のコンフィギュレーション動作（Ａ面領域２５Ａ、またはＢ面領域２５ＢのＦＰＧＡ１領域２５ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作）であって、ループカウンタが“１”のときはＦＰＧＡ２２のコンフィギュレーション動作（Ｂ面領域２５ＢのＦＰＧＡ２領域２５ｂに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作）である。また、ループカウンタが“２”のときはこのループから脱出して図５のフローを終了する。
【００４６】
エラーフラグは、コンフィギュレーション動作が失敗か否かを管理するためのフラグである。エラーフラグが“０”のときには、後述するステップＳ７５のようにＢ面領域２５ＢのＦＰＧＡ１領域２５ａの開始アドレスにセット（図５中のステップＳ７５では「Ｂ−ＦＰＧＡ１領域を開始アドレスにセット」を参照）する、あるいは後述するステップＳ８５のようにＢ面領域２５ＢのＦＰＧＡ２領域２５ｂの開始アドレスにセット（図５中のステップＳ８５では「Ｂ−ＦＰＧＡ２領域を開始アドレスにセット」を参照）する。エラーフラグが“１”のときには、後述するステップＳ８４のようにＡ面領域２５Ａの開始アドレスにセット（図５中のステップＳ８４では「Ａ領域を開始アドレスにセット」を参照）する。
【００４７】
（ステップＳ７３）ループカウンタ０？
ループカウンタが“０”であるか否かを判断する。上述したステップＳ７２でループカウンタを“０”にクリアした状態で、ステップＳ７３に進んだ場合には、ループカウンタは“０”である。後述するステップＳ８２でループカウンタを１つインクリメント（増加）（図５中のステップＳ８２では「ループカウンタインクリメント」を参照）して、後述するステップＳ８３を経由してステップＳ７３に戻った場合には、インクリメントされたループカウントの値に応じて判断する。ループカウンタが“０”の場合には次のステップＳ７４に進み、それ以外の場合にはステップＳ８５に進む。
【００４８】
（ステップＳ７４）エラーフラグ０？
エラーフラグが“０”であるか否かを判断する。上述したステップＳ７２でエラーフラグを“０”にクリアした状態で、ステップＳ７３を経由してステップＳ７４に進んだ場合には、エラーフラグは“０”である。後述するステップＳ８０でエラーフラグを反転し（図５中のステップＳ８０では「エラーフラグを反転（“１”→“０”ｏｒ“０”→“１”）」を参照）で、かつエラーフラグを“０”から“１”に反転して、後述するステップＳ８１、Ｓ８３を経由してステップＳ７４に戻った場合には、エラーフラグは“１”である。エラーフラグが“０”の場合には次のステップＳ７５に進み、エラーフラグが“１”の場合にはステップＳ８４に進む。
【００４９】
（ステップＳ７５）Ｂ−ＦＰＧＡ１領域を開始アドレスにセット
エラーフラグが“０”で、かつループカウンタが“０”の場合には、フラッシュメモリ制御部２４Ｃにリードする（読み出す）アドレスとして、コンフィギュレーションリード制御部２４ＢはＢ面領域２５ＢのＦＰＧＡ１領域２５ａの開始アドレスにセットする。
【００５０】
（ステップＳ７６）コンフィギュレーション動作
上述したステップＳ７５でＢ面領域２５ＢのＦＰＧＡ１領域２５ａの開始アドレスにセットして、ステップＳ７６に進んだ場合には、ＦＰＧＡ２１の所定動作のうちで全ての機能を含んだコンフィギュレーションデータを読み出す動作であるＦＰＧＡ２１のコンフィギュレーション動作を行う。後述するステップＳ８４でＡ面領域２５Ａの開始アドレスにセットして、ステップＳ７６に進んだ場合には、ＰＣ１０との通信機能を少なくとも含んだコンフィギュレーションデータを読み出す動作であるＦＰＧＡ２１のコンフィギュレーション動作を行う。後述するステップＳ８５でＢ面領域２５ＢのＦＰＧＡ２領域２５ｂの開始アドレスにセットして、ステップＳ７６に進んだ場合には、ＦＰＧＡ２２の所定動作のうちで全ての機能を含んだコンフィギュレーションデータを読み出す動作であるＦＰＧＡ２２のコンフィギュレーション動作を行う。
【００５１】
いずれの場合においても開始アドレスをセットするのと同時にタイマを“０”にリセットしてカウントを始める。フラッシュメモリ２５の各領域における開始アドレスからコンフィギュレーションデータを順次読み出して、１ビットずつＦＰＧＡ２１，２２に転送する。なお、フラッシュメモリからは８ビットずつ読み出す。
【００５２】
（ステップＳ７７）正常終了？
１ビットずつ転送するコンフィギュレーションデータの転送数をカウントするとともに、上述したタイマによって開始アドレスセット後の転送時間をカウントする。所定時間内にＦＰＧＡのコンフィギュレーションのデータ受信を正常に完了したら上述した「conf done」信号を、各ＦＰＧＡ２１，２２からコンフィギュレーションリード制御部２４Ｂを介してコンフィギュレーション動作監視部２４Ｄに転送する。「conf done」信号が所定時間内にコンフィギュレーション動作監視部２４Ｄに達した場合には、コンフィギュレーション動作が成功して正常に完了したとしたとコンフィギュレーション動作監視部２４Ｄは判断する。そして、ステップＳ８２に進む。
【００５３】
もし、例えば、フラッシュメモリ２５へのコンフィギュレーションデータの書き込み中に電源が切断して電源がオフになり、データ転送ミスなどのフラッシュメモリ２５への書き込みが正常に行われない場合、あるいは間違ったデータの書き込みを行った場合には、「conf done」信号が所定時間内に到達しない。その場合にはタイムアウトとなって、コンフィギュレーション動作が失敗したとコンフィギュレーション動作監視部２４Ｄは判断する。失敗して異常と判断された場合には、コンフィギュレーション動作監視部２４Ｄからコンフィギュレーションリード制御部２４Ｂに送信する。そして、次のステップＳ７９に進む。
【００５４】
（ステップＳ７９）ループカウンタ＞０？
ステップＳ７７で正常終了でないとして判断された場合に、ループカウンタが“１”以上である（“０”を超えている）か否かを判断する。ループカウンタが“１”以上である（“０”を超えている）場合にはステップＳ８２に進み、ループカウンタが“０”の場合には次のステップＳ８０に進む。
【００５５】
このステップＳ７９は、ステップＳ７７でループカウンタが“０”のときであるＦＰＧＡ２１のコンフィギュレーション動作が失敗の場合には、次のステップＳ８０でエラーフラグを反転するようにステップＳ８０に進むことを意味している。
【００５６】
また、このステップＳ７９は、ステップＳ７７でループカウンタが“１”のときであるＦＰＧＡ２２のコンフィギュレーション動作が失敗したとしても、ステップＳ８２でループカウンタを１つインクリメント（増加）（図５中のステップＳ８２では「ループカウンタインクリメント」を参照）して“２”にすることで、後述するステップＳ８３を経由してステップＳ７３に戻ってループすることなくループから脱出して図５のフローを終了するようにステップＳ８２に進むことを意味している。つまり、ＦＰＧＡ２２のコンフィギュレーション動作については失敗した場合には、ＦＰＧＡ２１のコンフィギュレーション動作が完了し、ＰＣ１０との通信が可能であれば、再びコンフィギュレーションのデータを書き込むことが可能であるので、無限ループの脱出を行う。
【００５７】
（ステップＳ８０）エラーフラグを反転（“１”→“０”ｏｒ“０”→“１”）
ステップＳ７９でループカウンタが０の場合には、後述するステップＳ８２のようにループカウンタを１つインクリメント（増加）（図５中のステップＳ８２では「ループカウンタインクリメント」を参照）せずに、エラーフラグを反転する。すなわち、ループカウンタは“０”の状態で、エラーフラグが“１”であれば“０”にエラーフラグを反転し、エラーフラグが“０” であれば“１” にエラーフラグを反転する。
【００５８】
ステップＳ７７でループカウンタが“０”のときであるＦＰＧＡ２１のコンフィギュレーション動作が失敗の場合に、このステップＳ８０でエラーフラグを反転する。上述したステップＳ７５でＢ面領域２５ＢのＦＰＧＡ１領域２５ａの開始アドレスにセットした場合でＦＰＧＡ２１のコンフィギュレーション動作が失敗の場合には、反転前のエラーフラグは“０”であるので“１”に反転する。後述するステップＳ８４でＡ面領域２５Ａの開始アドレスにセットした場合でＦＰＧＡ２１のコンフィギュレーション動作が再度に失敗の場合には、反転前のエラーフラグは“１”であるので“０”に反転する。
【００５９】
（ステップＳ８１）エラーフラグ０？
エラーフラグ反転後に、反転後のエラーフラグが“０”であるか否かを判断する。エラーフラグが“０”の場合には図５のフローを終了して、エラーフラグが“１”の場合にはステップＳ８３に進む。
【００６０】
このステップＳ８１は、ステップＳ７５でＢ面領域２５ＢのＦＰＧＡ１領域２５ａの開始アドレスにセットした場合でＦＰＧＡ２１のコンフィギュレーション動作が失敗の場合（反転前のエラーフラグは“０”、反転後のエラーフラグは“１”）には、ステップＳ８３を経由してステップＳ７３に戻ってループしてステップＳ８４でＡ面領域２５Ａの開始アドレスにセットした場合でのＦＰＧＡ２１のコンフィギュレーション動作が行えるようにステップＳ８３に進むことを意味している。
【００６１】
また、このステップＳ８１は、ステップＳ８４でＡ面領域２５Ａの開始アドレスにセットした場合でＦＰＧＡ２１のコンフィギュレーション動作が再度に失敗の場合（反転前のエラーフラグは“１”、反転後のエラーフラグは“０”）には、ステップＳ８３を経由してステップＳ７３に戻ってループすることなくループから脱出して図５のフローを終了することを意味している。つまり、ＦＰＧＡ２１のコンフィギュレーション動作が再度に失敗の場合には、ステップＳ８で述べたように装置の出荷時ではコンフィギュレーションデータがＡ面領域２５Ａに予め記憶されていないので、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作は失敗することを意味している。したがって、出荷時にはＰＣ１０との通信をＦＰＧＡ２１は確保していないので、図５のフローを終了させる。換言すれば、通常の使用時にはコンフィギュレーションデータがＡ面領域２５Ａに予め記憶されているので、ステップＳ８４でＡ面領域２５Ａの開始アドレスにセットした場合でＦＰＧＡ２１のコンフィギュレーション動作が再度に失敗することはない。
【００６２】
（ステップＳ８２）ループカウンタインクリメント
上述したステップＳ７２でループカウンタ、エラーフラグを“０”にクリアした状態で、ステップＳ７３に進んだ場合で、かつステップＳ７７でループカウンタが“０”のときであるＦＰＧＡ２１のコンフィギュレーション動作が成功して正常に完了した場合には、このステップＳ８２でループカウンタを１つインクリメント（増加）してループカウンタを“１”にする。また、エラーフラグの値に関わらずにステップＳ７９でループカウンタが“１”の場合にも、このステップＳ８２でループカウンタを１つインクリメント（増加）して“２”にする。そして、次のステップＳ８３に進む。
【００６３】
（ステップＳ８３）ループカウンタ＞１？
ステップＳ８１でエラーフラグが“１”の場合、あるいはステップＳ８２でループカウンタをインクリメントした場合には、ループカウンタが“２”以上である（“１”を超えている）場合にはステップ７３に戻ってループすることなくループから脱出して図５のフローを終了して、ループカウンタが“０”または“１”の場合にはステップ７３に戻ってループする。
【００６４】
（ステップＳ８４）Ａ領域を開始アドレスにセット
エラーフラグが“１”で、かつループカウンタが“０”の場合には、フラッシュメモリ制御部２４Ｃにリードする（読み出す）アドレスとして、コンフィギュレーションリード制御部２４ＢはＡ面領域２５Ａの開始アドレスにセットする。ステップＳ８４からステップＳ７６に進んで行われるコンフィギュレーション動作は、ＰＣ１０との通信機能を少なくとも含んだコンフィギュレーションデータを読み出す動作であるＦＰＧＡ２１のコンフィギュレーション動作である。
【００６５】
（ステップＳ８５）Ｂ−ＦＰＧＡ２領域を開始アドレスにセット
エラーフラグに関わらずループカウンタが“１”の場合には、フラッシュメモリ制御部２４Ｃにリードする（読み出す）アドレスとして、コンフィギュレーションリード制御部２４ＢはＢ面領域２５ＢのＦＰＧＡ２領域２５ｂの開始アドレスにセットする。ステップＳ８５からステップＳ７６に進んで行われるコンフィギュレーション動作は、ＦＰＧＡ２２の所定動作のうちで全ての機能を含んだコンフィギュレーションデータを読み出す動作であるＦＰＧＡ２２のコンフィギュレーション動作である。
【００６６】
本実施例に係るＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）およびその方法によれば、Ｂ面領域２５ＢのＦＰＧＡ１領域２５ａに記憶されたコンフィギュレーションデータを読み出してＦＰＧＡ２１に書き込むことで、ＦＰＧＡ２１の所定動作をコンフィギュレーション制御部２４は制御するとともに、コンフィギュレーション動作監視部２４Ｄによって読み出し動作であるコンフィギュレーション動作が失敗と判断された場合に、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータを読み出してＦＰＧＡ２１に書き込むことで、外部装置であるＰＣ１０との通信の機能を少なくとも含んだＦＰＧＡ２１の動作をコンフィギュレーション制御部２４は制御する。
【００６７】
ここで、Ｂ面領域２５Ｂには、ＦＰＧＡ２１およびＦＰＧＡ２２の所定動作のうちで全ての機能を含んだコンフィギュレーションデータを記憶するとともに、Ａ面領域２５Ａには、Ｂ面領域２５Ｂの各々のＦＰＧＡ１領域２５ａ／ＦＰＧＡ２領域２５ｂに記憶されたコンフィギュレーションデータに含まれる機能よりも少なく含み、かつＰＣ１０との通信機能を少なくとも含んだコンフィギュレーションデータを記憶している。したがって、Ａ面領域２５Ａには、Ｂ面領域２５Ｂに記憶されたコンフィギュレーションデータに含まれる機能よりも少なく含んだ分だけ、メモリの容量を低減させることができる。また、Ａ面領域２５Ａには、ＰＣ１０との通信機能を少なくとも含んだコンフィギュレーションデータを記憶しているので、コンフィギュレーション動作が失敗と判断された場合でも、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータを読み出してプログラマブルデバイスに書き込むことで、ＰＣ１０との通信の機能を少なくとも含んだＦＰＧＡ２１の動作を行うことができる。したがって、外部装置であるＰＣ１０との通信の機能を少なくとも確保していれば、上述した特許文献１のようなフラグ管理、コンフィギュレーションデータのコピー処理などを行わなくても、一連の制御を再度行うことができ、より簡易な制御を行うことができる。
【００６８】
また、本実施例では、少なくともＢ面領域２５ＢのＦＰＧＡ１領域２５ａ（実施例ではＦＰＧＡ１領域２５ａおよびＦＰＧＡ２領域２５ｂの両領域）の読み出しによるコンフィギュレーション動作が失敗か否かを管理するためのエラーフラグを、ステップＳ７１の装置の電源投入（電源オン）後に“０”にクリアする（ステップＳ７２）。そして、上述したエラーフラグが“０”の場合には（ステップＳ７４、Ｓ７５）、Ｂ面領域２５ＢのＦＰＧＡ１領域２５ａに相当するアドレス（本実施例では開始アドレス）を設定（セット）し（ステップＳ７５）、エラーフラグが“１”の場合には（ステップＳ７４、Ｓ８４）、Ａ面領域２５Ａに相当するアドレス（本実施例では開始アドレス）を設定（セット）する（ステップＳ８４）。そして、ステップＳ８５でのＢ面領域２５ＢのＦＰＧＡ２領域２５ｂの開始アドレスのセットを含んだステップＳ７５やステップ８４のセット後にセットに該当する領域に記憶されたコンフィギュレーションデータを読み出すコンフィギュレーション動作を行う（ステップＳ７６）。
【００６９】
そして、そのコンフィギュレーション動作が失敗と判断された場合に（ステップＳ７７）、エラーフラグを反転する（ステップＳ８０）。そして、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作が失敗した場合には（ステップＳ８４、Ｓ７６、Ｓ７７）、上述した反転後に図５のフローを終了して、Ｂ面領域２５ＢのＦＰＧＡ１領域２５ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作が失敗した場合には（ステップＳ７５〜Ｓ７７）、反転後にステップＳ７３に戻って、さらにステップＳ７５、Ｓ８４またはＳ８５に戻ることでループ部分のステップを繰り返し行う。このようなエラーフラグを用いることで、一連の制御を行うことができる。
【００７０】
なお、この制御フローでは、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作が失敗した場合には、外部装置であるＰＣ１０との通信機能でさえ確保できていない状態であるので、上述した反転後に終了するように制御する。このようなＡ面領域２５Ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作が失敗する場合には、例えば装置の出荷前などのようにＡ面領域２５Ａにコンフィギュレーションデータが予め記憶されていないときである。したがって、例えば装置の出荷後の通常の使用時にはＡ面領域２５Ａにコンフィギュレーションデータが予め記憶されているので、Ａ面領域２５Ａに記憶されたコンフィギュレーションデータの読み出しによるコンフィギュレーション動作は失敗しない。
【００７１】
この発明は、上記実施形態に限られることはなく、下記のように変形実施することができる。
【００７２】
（１）上述した実施例では、プログラマブルデバイスとして、ＦＰＧＡ(Field Programmable Gate Array)を例に採って説明したが、ＣＰＵ，ＤＳＰ，ＰＬＤなどに例示されるように、不揮発性メモリ（実施例ではフラッシュメモリ）に記憶された設定データ（実施例ではコンフィギュレーションデータ）を読み出してプログラマブルデバイスに書き込むことで、書き込んだ設定データに基づく動作を行うようなデバイスであれば、プログラマブルデバイスの具体的な種類については特に限定されない。
【００７３】
（２）上述した実施例では、不揮発性メモリとしてフラッシュメモリを例に採って説明したが、ＥＰＲＯＭ（Electrically Programmable Read-only Memory）やＥ２ＰＲＯＭ（Electrically Erasable Programmable Read-only Memory）などに代表される不揮発性メモリであれば、不揮発性メモリの具体的な種類については特に限定されない。
【００７４】
（３）上述した実施例では、ＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）は２つのプログラマブルデバイス（実施例ではＦＰＧＡ２１、２２）を備えたが、外部装置に対して通信可能に接続された少なくとも１つのプログラマブルデバイス（実施例ではＦＰＧＡ２１）を備えるのであれば、外部装置に対して通信可能に接続された１つのプログラマブルデバイスのみを備えてもよいし、外部装置に対して通信可能に接続された１つのプログラマブルデバイスを含んで３つ以上のプログラマブルデバイスを備えてもよい。また、外部装置に対して通信可能に接続されたプログラマブルデバイスは１つのみに限定されず、２つ以上備えてもよい。したがって、装置内の複数のプログラマブルデバイスの全てを、外部装置に対して通信可能に接続されるように構成してもよい。
【図面の簡単な説明】
【００７５】
【図１】実施例に係るＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）の概略ブロック図である。
【図２】フラッシュメモリの概略構成図である。
【図３】コンフィギュレーション制御部の概略構成図である。
【図４】コンフィギュレーション動作を含んだ一連のコンフィギュレーションデータの更新の流れを示すフローチャートである。
【図５】コンフィギュレーション動作を含んだ電源オン後の一連の流れを示すフローチャートである。
【符号の説明】
【００７６】
２０  …  ＦＰＧＡ制御装置（ＦＰＧＡ搭載基板）
２１，２２  …  ＦＰＧＡ
２４  …  コンフィギュレーション制御部
２４D  …  コンフィギュレーション動作監視部
２５  …  フラッシュメモリ
２５Ａ  …  Ａ面領域
２５Ｂ  …  Ｂ面領域
【図１】
2008182327.tif 000003
【図２】
2008182327.tif 000004
【図３】
2008182327.tif 000005
【図４】
2008182327.tif 000006
【図５】
2008182327.tif 000007