(57)【要約】【課題】  書き換えデータによるＦＰＧＡコンフィギュレーションが失敗してもプロテクト面のデータによりＦＰＧＡコンフィギュレーションを行う制御装置を提供する。【解決手段】  ＦＰＧＡにコンフィギュレーションをするＦＰＧＡコンフィギュレーション制御装置において、データ格納面表示フラグの領域並びにデータを格納する第１及び第２面を有するメモリと、データ格納面表示フラグが示すワークキング面に書き換えデータを格納するデータ書き換え部と、データ格納面表示フラグが示すワーキング面に格納された書き換えデータに基づきＦＰＧＡにコンフィギュレーションを行う第１コンフィギュレーション部と、コンフィギュレーションが失敗したならば、格納面表示フラグが示すワーキング面とは異なるプロテクト面に格納されたデータに基づきＦＰＧＡにコンフィギュレーションを行う第２コンフィギュレーション部とを具備して構成する。【選択図】図１
2005191872.tif 000002
【特許請求の範囲】
【請求項１】
ＦＰＧＡにコンフィギュレーションをするＦＰＧＡコンフィギュレーション制御方法において、
データ格納面表示フラグを設定する領域並びにデータを格納する第１及び第２面を有するメモリの前記データ格納面表示フラグが示すワーキング面に該当する前記第１及び第２面のいずれかに書き換えデータを格納する第１ステップと、
前記データ格納面表示フラグが示すワーキング面に格納された書き換えデータに基づき前記ＦＰＧＡにコンフィギュレーションを行う第２ステップと、
前記コンフィギュレーションが完了したならば、現在のワーキング面がプロテクト面、現在のプロテクト面がワーキング面となるよう前記データ格納面表示フラグを更新する第３ステップと、
前記コンフィギュレーションが失敗したならば、前記データ格納面表示フラグが示すワーキング面とは異なるプロテクト面に該当する第１及び第２面の何れかの面に格納されたデータに基づきＦＰＧＡにコンフィギュレーションを行う第４ステップと、
を具備したことを特徴とするＦＰＧＡコンフィギュレーション制御方法。
【請求項２】
前記第３ステップは前記データ格納面表示フラグが示すワークキング面に該当する第１及び第２面の何れかの面に格納されたデータを他方の面にコピーするステップを含むことを特徴とする請求項１記載のＦＰＧＡコンフィギュレーション制御方法。
【請求項３】
前記第４ステップは前記データ格納面表示フラグが示すワーキング面とは異なるプロテクト面に該当する第１及び第２面のいずれかの面に格納されたデータを他方の面にコピーするステップを含むことを特徴とする請求項１記載のＦＰＧＡコンフィギュレーション制御方法。
【請求項４】
前記第１及び第２面のいずれかの面に初期データを格納し、該初期データを格納した面がワーキング面となるように前記データ格納面表示フラグを設定するステップと、前記データ格納面表示フラグが示すワーキング面に格納された初期データに基づき前記ＦＰＧＡにコンフィギュレーションを行うステップとを更に含むことを特徴とする請求項１記載のＦＰＧＡコンフィギュレーション制御方法。
【請求項５】
ＦＰＧＡにコンフィギュレーションをするＦＰＧＡコンフィギュレーション制御装置において、
データ格納面表示フラグの領域並びにデータを格納する第１及び第２面を有するメモリと、
前記データ格納面表示フラグが示すワークキングに該当する前記第１及び第２面の何れかの面に、書き換えデータを格納するデータ書き換え部と、
前記データ格納面表示フラグが示すワーキング面に格納された書き換えデータに基づき前記ＦＰＧＡにコンフィギュレーションを行う第１コンフィギュレーション部と、
前記コンフィギュレーションが完了したならば、現在のワーキング面がプロテクト面、現在のプロテクト面がワーキング面となるよう前記データ格納面表示フラグを更新する面切り替え制御部と、
前記コンフィギュレーションが失敗したならば、前記データ格納面表示フラグが示すワーキング面とは異なるプロテクト面に該当する第１及び第２面の何れかの面に格納されたデータに基づきＦＰＧＡにコンフィギュレーションを行う第２コンフィギュレーション部と、
を具備したことを特徴とするＦＰＧＡコンフィギュレーション制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡ(Flexible Programmable Gate Array)のコンフィギュレーションを制御するＦＰＧＡコンフィギュレーション制御方法及びＦＰＧＡコンフィギュレーション制御装置に関するものである。
【背景技術】
【０００２】
ＦＰＧＡはコンフィギュレーションデータを書き換えることにより、ハード機能を変更することが可能な回路である。従来のＦＰＧＡのコンフィギュレーションデータの書き換えは、以下のようにして行われていた。
【０００３】
遠隔に位置する上位装置からコンフィギュレーションデータを動作中のＦＰＧＡを通してフラッシュメモリに書き込む。上位装置から動作中のＦＰＧＡにフラッシュメモリに書き込んだコンフィギュレーションデータに書き換えるよう指示する。ＦＰＧＡは上位装置からの指示に基づいてフラッシュメモリよりコンフィギュレーションデータを読み出して更新する。
【０００４】
一方、フラッシュメモリに書き込まれたデータからＦＰＧＡをコンフィギュレーションされる場合に、フラッシュメモリに書き込んだデータに不備があった、又はフラッシュメモリに誤ったデータを書き込んだ後、ＦＰＧＡコンフィギュレーションを開始した場合には正常にＦＰＧＡのコンフィギュレーションを完了させることができない。
【０００５】
従来、既に書き込まれたデータでＦＰＧＡコンフィギュレーションデータ未完了状態に陥ってしまった場合は、上位装置から動作していないＦＰＧＡに対して、コンフィギュレーションデータを送信して、再度、コンフィギュレーションを行うことはできない。
【０００６】
そこで、復旧させるためには人手によるＦＰＧＡ書き込み専用端末をＦＰＧＡに直接接続してデータを書き換えることによりＦＰＧＡコンフィギュレーションを完了させていた。
【０００７】
また、先行技術文献として以下の文献１，２がある。
【０００８】
文献１は、２組以上のコンフィギュレーションデータをコンフィギュレーションメモリに格納し、スイッチにより２組以上のコンフィギュレーションデータの中から一つを選択してルーチングマトリクスに出力して、コンフィギュレーションを行うことにより、ＦＰＧＡにおいて複数の論理関数を実現することを開示している。
【０００９】
文献２は、制御装置によりプログラム及びコンフィギュレーションデータが格納された不揮発性メモリからコンフィギュレーションデータを読み出して、ＦＰＧＡにコンフィギュレーションを行うこと、不揮発性メモリのデータの一部又は全部を書き換えることを開示している。
【特許文献１】特開平８−５１３５６号公報
【特許文献２】特開２００３−４４３０３号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
しかしながら、従来のＦＰＧＡコンフィギュレーション方法では、上述のように、既に書き込まれたデータでＦＰＧＡコンフィギュレーション完了しなかった場合には、自動的にＦＰＧＡコンフィギュレーションを再開することができなかった。
【００１１】
また、ＦＰＧＡコンフィギュレーションに失敗した場合にはＦＰＧＡ自体が正常に機能しないため、上位装置からＦＰＧＡデータ書き換えが不可能であり、装置を復旧させるには人手によるＦＰＧＡ書き込み専用端末を接続してデータを書き換える以外の手段しかなかったため、保守性が悪かった。
【００１２】
文献１は、複数の論理関数を一つのＦＰＧＡに実現できるが、コンフィギュレーションデータに誤りがあってコンフィギュレーションが失敗した場合については何ら開示していないので、上述した問題点を解決することができない。
【００１３】
文献２は、不揮発性メモリに格納されたコンフィギュレーションデータに誤り等があって、コンフィギュレーションが失敗して装置を復旧させるためには、ＣＰＵより不揮発性メモリのデータを書き換え、再度コンフィギュレーションを行う必要があるが、自動的で再コンフィギューションを行うものでないため、再コンフィギュレーションが完了するまでは、ＦＰＧＡの機能が停止したままであり、装置が動作しないという問題点がある。
【００１４】
本発明は上記を鑑みてなされたものであり、書き込んだＦＰＧＡデータに不備、誤りがあったとしても、正常にＦＰＧＡのコンフィギュレーションを完了させることのできるＦＰＧＡコンフィギュレーション制御方法及び制御装置を提供することである。
【課題を解決するための手段】
【００１５】
図１は本発明の原理図である。図１に示すように、ＦＰＧＡコンフィギュレーション制御装置は、メモリ２、データ書き換え部４、第１コンフィギュレーション部６、面切り替え部８及び第２コンフィギュレーション部１０を具備する。
【００１６】
メモリ２は、データ格納面表示フラグ１２の領域並びにデータを格納する第１及び第２面を有する。データ書き換え部４は、データ格納面表示フラグ１２が示すワークキング面に該当する第１及び第２面１４＃１，１４＃２の何れかの面に書き換えデータを格納する。
【００１７】
第１コンフィギュレーション部６は、データ格納面表示フラグ１２が示すワーキング面に格納された書き換えデータに基づきＦＰＧＡにコンフィギュレーションを行う。面切り替え部８は、コンフィギュレーションが完了したならば、現在のワーキング面がプロテクト面、現在のプロテクト面がワーキング面となるようデータ格納面表示フラグ１２を更新する。
【００１８】
第２コンフィギュレーション部１０は、コンフィギュレーションが失敗したならば、データ格納面表示フラグ１２が示すワーキング面とは異なるプロテクト面に該当する第１及び第２面１４＃１，１４＃２の何れかの面に格納されたデータに基づきＦＰＧＡにコンフィギュレーションを行う。
【００１９】
このようにコンフィギュレーションが失敗した場合でも、プロテクト面に格納された以前にコンフィギュレーションが完了したデータに基づいてコンフィギュレーションを自動的に行うので、専用端末を接続してコンフィギュレーションを行う必要がなくなる。
【発明の効果】
【００２０】
本発明によれば、ＦＰＧＡデータ格納面をワーキング面とプロテクト面の２面構成して、ワーキング面に格納された書き換えデータによるＦＰＧＡコンフギュレーションに失敗しても自動的にＦＰＧＡデータ書き換え前のデータを格納しているプロテクト面からＦＰＧＡコンフィギュレーションを開始することにより、システム故障を回避できる。
【００２１】
また、データ格納面表示フラグをメモリに格納して、制御するので、常に正常にＦＰＧＡデータ書き換えが終了したデータでの装置立ち上げが可能となるため信頼性を向上させることができる。
【００２２】
また、遠隔からのＦＰＧＡデータ書き換えによるＦＰＧＡコンフィギュレーションに失敗しても人手による専用端末での書き換え以外の復旧手段を実装したので、フィールドでの保守性は格段に向上する。
【発明を実施するための最良の形態】
【００２３】
図２は本発明の実施形態によるＦＰＧＡコンフィギュレーション制御装置の構成図である。図２に示すように、ＦＰＧＡコンフィギュレーション制御装置は、上位装置５０、下位装置５２及びＦＰＧＡデータ書き込み専用端末（以下、専用端末と略す）５４を具備する。
【００２４】
上位装置５０は、下位装置５２に対して、書き換えデータの送信及びコンフィギュレーション開始指示等のコンフィギュレーション書き換えに係わる処理及びその他の処理を行う装置であり、例えば、サーバ装置である。上位装置５０は、記憶部１００、ＣＰＵ１０２及びＩ／Ｏ部１０４を有する。
【００２５】
記憶部１００は、書き換えデータ等やコンフィギュレーション書き換え処理に係わるプログラムやその他のプログラム等を記憶するメモリである。ＣＰＵ１０２は記憶部１００に記憶されたコンフィギュレーション書き換えに係わるプログラム等を実行する。
【００２６】
コンフィギュレーション書き換えでは、Ｉ／Ｏ部１０４を通して、下位装置５２に書き換えデータの送信及びコンフィギュレーション開始指示を行う。Ｉ／Ｏ部１０４は、所定のインタフェースに従って下位装置５２との間で通信を行う。
【００２７】
下位装置５２はＦＰＧＡ１５８を含む装置であり、例えば、ルータである。下位装置５２は、ＳＤＲＡＭ１５０、ＢＯＯＴ１５２、ＣＰＵ１５４、Ｉ／Ｏ１５６＃０，１５６＃１、ＦＰＧＡ１５８、コンフィギュレーション制御部１６０、コネクタ１６２及びフラッシュメモリ１６４を有する。
【００２８】
ＳＤＲＡＭ１５０はＣＰＵ１５４が実行するコンフィギュレーション書き換えに係わるプログラム等を記憶するメモリである。コンフィギュレーション書き換えでは、（ｉ）Ｉ／Ｏ１５６＃０より書き換えデータを受信して、ＦＰＧＡ１５８にコンフィギュレーションデータをコンフィギュレーション制御部１６０に出力するよう指示する、（ｉｉ）Ｉ／Ｏ１５６＃０よりコンフィギュレーション開始指示を受信して、ＦＰＧＡ１５８にコンフィギュレーション開始をコンフィギュレーション制御部１６０に出力するよう指示するプログラムが記憶されている。
【００２９】
ＢＯＯＴ１５２は、ブートプログラムを格納するメモリである。ＣＰＵ１５４は、ＳＤＲＡＭ１５０やＢＯＯＴ１５２に格納されたプログラムを実行する。Ｉ／Ｏ１５６＃０は、上位装置５０に接続される外部ポートとバス１５５との間のインタフェースを司る。
【００３０】
即ち、上位装置５０よりＣＰＵ１５４宛のデータを受信してバス１５５に出力し、バス１５５より上位装置５０宛のデータを受信して、上位装置５０に送信する。Ｉ／Ｏ＃１は、外部ポートとバス１５５との間のインタフェースを行う。バス１５５は、ＣＰＵ１５４とＦＰＧＡ１５８，Ｉ／Ｏ１５６＃０，１５６＃１との間を通信するバスである。
【００３１】
ＦＰＧＡ１５８は、バス１５５間でデータの送受信をするインタフェース部並びに信号線１５９よりデータの受信及びコンフィギュレーション完了通知を信号線１５９に出力するインタフェース部を含み以下の機能を有する。
【００３２】
（ｉ）  バス１５５より所定インタフェースでデータを受信すると、該データがコンフィギュレーション制御部１６０宛であるとき、該データを信号線１５９に出力する。該当データは、コンフィギュレーションに係わるデータであり、書き換えデータ及びコンフィギュレーション開始指示が含まれる。
【００３３】
（ｉｉ）  バス１５５よりデータを受信して、該データがコンフィギュレーション制御部１６０宛でないとき、該データに基づいてハードウェアとして動作する。
【００３４】
（ｉｉｉ）  信号線１５９よりデータを受信して、データに該当するアドレスを有するレジスタに格納する。全データがレジスタに格納されてハードウェアとして動作することを確認すると、コンフィギュレーション完了通知を信号線１５９に出力する。
【００３５】
（ｉ），（ｉｉ）は、コンフィギュレーションが完了して、ＦＰＧＡ１６０が正常に動作している場合に機能する。
【００３６】
信号線１５９は、ＦＰＧＡ１５８とコンフィギュレーション制御部１６０との間を接続する。コンフィギュレーション制御部１６０は、ＦＰＧＡ１５８が接続される信号線１５９、専用端末５４が接続されるコネクタ１６２及びフラッシュメモリ１６４が接続される信号線１６３にそれぞれ接続され、ＦＰＧＡコンフィギュレーションに係わる後述の制御を行う。
【００３７】
図３は図２中のフラッシュメモリ１６４の構成図の一例である。図３に示すように、フラッシュメモリ１６４は、面管理情報領域２５０、Ａ面領域２５２＃Ａ及びＢ面領域２５２＃Ｂを含む。面管理情報領域２５０は、データ格納面表示フラグ２６０、ワーキング面書き込みフラグ２６２、データ格納面コピー完了フラグ２６４を有する。
【００３８】
データ格納面表示フラグ２６０は、２面実装しているデータ格納領域２５２＃Ａ，２５２＃Ｂのうち、Ａ面領域２５２＃Ａがワーキング面であるか、プロテクト面であるかを表示するフラグである。例えば、Ａ面２５２＃Ａがワーキング面ならば、“１”、Ｂ面２５２＃Ｂがワーキング面ならば、“０”が設定される。
【００３９】
ワーキング面書き込みフラグ２６２は、上位装置５０又は専用端末５４よりワーキング面に対してデータ書き込みが実施されたか否かを表示する。例えば、データ書き込みが実施された場合は“１”、それ以外の場合は“０”が書き込まれる。
【００４０】
このフラグ２６２が設定（“１”）されている場合には、ワーキング面とプロテクト面で格納されているデータに差分があるため、ワーキング面にデータを格納後、ＦＰＧＡコンフィギュレーションを実施し、正常に完了したワーキング面からプロテクト面の切り替え及びワーキング面からプロテクト面へデータコピーが必要であることを示す。
【００４１】
データ格納面コピー完了フラグ２６４は、データ格納面コピーを実施したか否かを表示する。ワーキング面へ初期データ又は書き換えデータが書き込まれたとき、フラグ２６４に、例えば、“０‘が書き込まれてフラグが解除される。また、データがコピーされると、フラグ２６４が設定（”１“）される。
【００４２】
上位装置５０からのコンフィギュレーション開示指示／電源オン／スイッチオンによりワーキング面のデータによるＦＰＧＡコンフィギュレーションが完了して、プロテクト面にデータがコピーされたとき、又はプロテクト面のデータによるＦＰＧＡコンフィギュレーションが完了して、ワーキング面にデータがコピーされたとき、フラグ２６４が設定（“１”）される。
【００４３】
Ａ面２５２＃Ａ，Ｂ面２５２＃Ｂは、フラッシュメモリ１６４が２面に分割されたデータ格納領域であり、例えば、データ領域がフラッシュメモリ１６４のアドレスにより２分割され、アドレスの小さい方をＡ面２５２＃Ａ、アドレスの大きい方をＢ面２５２＃Ｂとする。
【００４４】
専用端末５４は、コネクタ１６２を通して、Ａ，Ｂ面のいずれかの書き込み面を指定して、初期データをコンフィギュレーション制御部１６０に送信する。
【００４５】
図４は図２中のコンフィギュレーション制御部１６０の機能ブロック図である。コンフィギュレーション制御部１６０は、図４に示すように、初期データ書き込み部２００、データ書き換え処理部２０２、コンフィギュレーション部２０４及びデータコピー部２０６を有する。
【００４６】
初期データ書き込み部２００は、以下のようにして、専用端末５４から受信したデータをフラッシュメモリ１６４に書き込む。
【００４７】
図５は初期データ書き込み部２００の動作フローチャートである。ステップＳ２において、専用端末５４よりＡ面，Ｂ面書き込み指示受信したか否かを判定する。書き込み指示を受信したならば、ステップＳ４に進む。書き込み指示を受信していないとき、ステップＳ２でウェイトする。
【００４８】
ステップＳ３において、フラッシュメモリ１６４に書き込み中であるか否かを判断する。書き込み中でなければ、ステップＳ４に進む。書き込み中であれば、終了する。
【００４９】
ステップＳ４において、書き込み指示がＡ面であるか否かを判断する。書き込み指示面がＡ面ならば、ステップＳ６に進む。書き込み指示面がＢ面ならば、ステップＳ８に進む。
【００５０】
ステップＳ６において、専用端末５４より受信したデータをフラッシュメモリ１６４のＡ面２５２＃Ａに書き込みを実施する。即ち、データに該当するフラッシュメモリ１６４のＡ面２５２＃Ａのアドレス領域に順次書き込む。
【００５１】
ステップＳ８において、専用端末５４より受信したデータをフラッシュメモリ１６４のＢ面２５２＃Ｂに書き込みを実施する。専用端末５４より受信したデータをフラッシュメモリ１６４に書き込み中は上位装置５０からの書き込みが禁止される。
【００５２】
ステップＳ１０において、ワーキング面がＡ，Ｂ面のいずれであるかを示すフラッシュメモリ１６４のデータ格納面表示フラグ２６０が書き込み指示面を示すように設定する。例えば、書き込み指示面がＡ面ならば、データ格納面表示フラグ２６０に“１”を設定し、書き込み指示面がＢ面ならば、データ格納面表示フラグ２６０に“０”を設定する。
【００５３】
ステップＳ１２において、フラッシュメモリ１６４中のワーキング面にデータが格納されてプロテクト面に格納されたデータと不一致であることを示すようにワーキング面書き込みフラグ２６２に“１”を設定する。
【００５４】
ステップＳ１４において、ステップＳ６，８で書き込んだデータのプロテクト面へのコピーが完了していないことを示すデータ格納面コピー完了フラグ２６４を解除（“０”）する。
【００５５】
データ書き換え処理部２０２は、以下のようにして、ＦＰＧＡ１５８から受信したコンフィギュレーション書き換えデータをフラッシュメモリ１６４に書き込む。
【００５６】
図６はデータ書き換え処理部２０２の動作フローチャートである。ステップＳ５０において、ＦＰＧＡ１５８より書き込み指示受信したか否かを判定する。書き込み指示を受信したならば、ステップＳ５２に進む。書き込み指示を受信していないとき、ステップＳ５０でウェイトする。
【００５７】
ステップＳ５２において、フラッシュメモリ１６４に書き込み中であるか否かを判断する。書き込み中でなければ、ステップＳ５４に進む。書き込み中であれば、終了する。
【００５８】
ステップＳ５４において、データ格納面表示フラグ２６０をフラッシュメモリ１６４より取得する。ステップＳ５６において、データ格納面表示フラグ２６０によりワーキング面がＡ面であるか否かを判断する。ワーキング面がＡ面ならば、ステップＳ５８に進む。ワーキング面がＢ面ならば、ステップＳ６０に進む。
【００５９】
ステップＳ５８において、ＦＰＧＡ１５８より受信した書き換えデータをＡ面に書き込み実施する。ステップＳ６０において、ＦＰＧＡ１５８より受信した書き換えデータをＢ面に書き込み実施する。フラッシュメモリ１６４に書き換えデータ書き込み中は専用端末５４からの書き込みは禁止される。
【００６０】
ステップＳ６０において、フラッシュメモリ１６４のワーキング面に書き換えデータが書き込まれたことを示すワーキング面書き込みフラグ２６２を設定（“１”）する。ステップＳ６２において、プロテクト面にステップＳ５８，６０で格納した書き換えデータのコピーが完了していないことを示すデータ格納面コピー完了フラグ２６４を解除（“０”）する。
【００６１】
コンフィギュレーション部２０４は、以下のようにして、フラッシュメモリ１６４のワーキング面に格納されたデータでＦＰＧＡ１５８にコンフィギュレーションを行う。
【００６２】
図７はコンフィギュレーション部２０４の動作フローチャートである。ステップＳ１００において、ＦＰＧＡ１５８よりＦＰＧＡ開始指示受信／電源オン／スイッチオンされたか否かを判定する。ＦＰＧＡ開始指示受信／電源オン／スイッチオンがされたならば、ステップＳ１０２に進む。ＦＰＧＡ開始指示受信、電源オン及びスイッチオンされていないならば、ステップＳ１００でウェイトする。
【００６３】
ＦＰＧＡ開始指示は、書き換えデータによるＦＰＧＡコンフィギュレーションを行うために上位装置５０より下位装置５２になされる。電源オン／スイッチオンは、初期データによるＦＰＧＡコンフィギュレーションを行うためのトリガである。
【００６４】
ステップＳ１０２において、フラッシュメモリ１６４中のデータ格納面表示フラグ２６０により示されるワーキング面に格納されたデータによりＦＰＧＡコンフィギュレーションを開始する。即ち、ワーキング面よりデータを読み出して、データをＦＰＧＡ１５８の該当アドレスのレジスタに書き込む。
【００６５】
ステップＳ１０４において、コンフィギュレーション監視タイマを起動する。ステップＳ１０６において、ワーキング面に格納された全データがＦＰＧＡ１５８に書き込まれてＦＰＧＡ１５８が正常に動作を開始したことを示すコンフィギュレーション完了通知をＦＰＧＡ１５８より受信したか否かを判定する。
【００６６】
コンフィギュレーション完了通知を受信した場合は、ステップＳ１０７に進む。コンフィギュレーション完了通知を受信していない場合は、ステップＳ１０８に進む。ステップＳ１０７において、ＦＰＧＡ１５８及びＣＰＵ１５４を通して、上位装置５０にコンフィギュレーション完了通知を行う。
【００６７】
ステップＳ１０８において、コンフィギュレーション完了監視タイマがオーバフロー（タイムアウト）してか否かを判定する。タイムアウトしたならば、ステップＳ１１０に進む。タイムアウトしていなければ、ステップＳ１０６に戻る。
【００６８】
ステップＳ１１０において、リトライカウンタを１インクリメントする。尚、リトライカウンタはコンフィギュレーション開始したときは初期化されている。ステップＳ１１２において、ワーキング面でのリトライ回数が満了したか否かを判定する。
【００６９】
リトライ回数が満了したならば、ワーキング面に格納されたデータに不備があった、又は誤ったデータが書き込まれていたことによりＦＰＧＡが完了しなかったので、ステップＳ１１４に進む。リトライ回数が満了していないならば、ステップＳ１０２に戻る。
【００７０】
ステップＳ１１４において、フラッシュメモリ１６４中のデータ格納面表示フラグ２６０により示されるプロテクト面に格納されたデータによるＦＰＧＡコンフィギュレーションを開始する。
【００７１】
ステップＳ１１６において、コンフィギュレーション監視タイマを起動する。ステップＳ１１８において、コンフィギュレーション完了通知をＦＰＧＡ１５８より受信したか否かを判定する。コンフィギュレーション完了通知を受信した場合は、ステップＳ１０７に進む。コンフィギュレーション完了通知を受信していない場合は、ステップＳ１２０に進む。
【００７２】
ステップＳ１２０において、コンフィギュレーション完了監視タイマがオーバフロー（タイムアウト）してか否かを判定する。タイムアウトしたならば、ステップＳ１２２に進む。タイムアウトしていなければ、ステップＳ１１８に戻る。
【００７３】
ステップＳ１２２において、リトライカウンタを１インクリメントする。尚、リトライカウンタはコンフィギュレーション開始したときは初期化されている。ステップＳ１２４において、プロテクト面でのリトライ回数が満了したか否かを判定する。リトライ回数が満了したならば、ステップＳ１２６に進む。リトライ回数が満了していないならば、ステップＳ１１４に戻る。
【００７４】
ステップＳ１２６において、ＣＰＵ１５４を通して、上位装置５０に装置故障が発生したことをコンフィギュレーション正常終了通知が一定時間内に行われないことにより通知する。
【００７５】
装置故障が発生したものと判定しているのは、プロテクト面に格納されたデータは以前ＦＰＧＡコンフィギュレーションが正常終了したデータであり、データに誤りがないものと考えられるからである。
【００７６】
このように、ワーキング面に格納されたデータによるコンフィギュレーションが失敗した場合には、プロテクト面に格納されたデータでコンフィギュレーションを自動的に再開するので、専用端末５４を接続してコンフィギュレーションを行う必要がない。
【００７７】
図８はデータコピー部２０６の動作フローチャートである。ステップＳ１５０において、ワーキング面コンフィギュレーション完了したか否かを判定する。ワーキング面コンフィギュレーション完了したならば、ステップＳ１５２に進む。ワーキング面コンフィギュレーションが完了していなければ、ステップＳ１７０に進む。
【００７８】
ステップＳ１５２において、ワーキング面書き込みフラグ２６２の設定（“１”）が有るか否かを判定する。ワーキング面書き込みフラグ２６２の設定があれば、ステップＳ１５４に進む。ワーキング面書き込みフラグ２６２の設定がなければ、ワーキング面とプロテクト面には同一のデータが格納されていると識別し、データコピーは実施せず終了する。
【００７９】
ステップＳ１５４において、フラッシュメモリ１６４のデータ格納面表示フラグ２６０が示すワーキング面からプロテクト面にデータコピー開始する。ステップＳ１５６において、コピー完了したか否かを判定する。コピー完了したならば、ステップＳ１５８に進む。コピー完了していなければ、ステップＳ１５６でループしてデータコピーを続行する。
【００８０】
ステップＳ１５８において、フラッシュメモリ１６４のワーキング面書き込みフラグ２６２を解除（“０”）する。ステップＳ１６０において、データ格納面コピー完了フラグ２６４を解除（“０”）する。
【００８１】
ステップＳ１６２において、現在のワーキング面がプロテクト面、現在のプロテクト面がワーキング面となるように、データ格納面表示フラグ２６０を更新してワーキング面とプロテクト面の面切り替えを実施する。
【００８２】
これにより、ワーキング面とプロテクト面のデータが一致し、プロテクト面にはコンフィギュレーションが完了したデータが格納される。
【００８３】
ステップＳ１７０において、プロテクト面コンフィギュレーション完了したか否かを判定する。プロテクト面コンフィギュレーション完了したならば、ステップＳ１７２に進む。プロテクト面コンフィギュレーションが完了していなければ、終了する。
【００８４】
ステップＳ１７２において、フラッシュメモリ１６４のデータ格納面表示フラグ２６０が示すプロテクト面からワーキング面にデータコピー開始する。ステップＳ１７４において、コピー完了したか否かを判定する。コピー完了したならば、ステップＳ１７６に進む。コピー完了していなければ、ステップＳ１７４でループしてコピーを続行する。
【００８５】
ステップＳ１７６において、ワーキング面書き込みフラグ２６２を解除（“０”）する。ステップＳ１７８において、データ格納面コピー完了フラグ２６４を設定（“１”）する。
【００８６】
このとき、ワーキング面とプロテクト面の切り替えをしていないので、次回の書き換えデータはワーキング面に格納されて、ワーキング面におけるＦＰＧＡコンフィギュレーション完了する環境が構築される。
【００８７】
図９（ａ）〜（ｅ）はＦＰＧＡコンフィギュレーション方法を示す図である。以下、本発明のＦＰＧＡコンフィギュレーション方法の説明をする。
【００８８】
（ａ）  初期データの書き込み
専用端末５４は、Ａ，Ｂ面のいずれかの書き込み面を指定して、初期データをコンフィギュレーション制御部１６０にコネクタ１６２を通して送信する。
【００８９】
コンフィギュレーション制御部１６０は、上述したように、専用端末５４より初期データを受信して、図９（ａ）に示すように、フラッシュメモリ１６４内の指定された書き込み面、例えば、Ａ面２５２＃Ａに書き込むとともに書き込んだ面２５２＃Ａがワーキング面となるようにデータ格納面表示フラグ２６０を設定（“１”）、ワーキング面書き込みフラグ２６２を設定（“１”）及びデータ格納面コピー完了フラグ２６４を解除（“０”）する。
【００９０】
（ｂ）  初期データのＦＰＧＡコンフィギュレーション
電源がオン／スイッチがオンされると、コンフィギュレーション制御部１６０は、上述したようにワーキング面に格納されたデータによりＦＰＧＡ１５８にコンフィギュレーションを開始する。
【００９１】
コンフィギュレーションが完了すると、ワーキング面書き込みフラグ２６２が設定（“１”）されていることから、図９（ｂ）に示すように、ワーキング面に格納されたデータをプロテクト面にコピーして、ワーキング面書き込みフラグ２６２を解除（“０”）及びデータ格納面コピー完了フラグ２６４を設定（“１”）する。
【００９２】
現在のプロテクト面２６２＃Ｂがワーキング面、現在のワーキング面２６２＃Ａがプロテクト面となるようにデータ格納面表示フラグ２６０を更新（“０”）してワーキング面の切り替えを行う。
【００９３】
これにより、ＦＰＧＡ１５８に初期データがコンフィギュレーションされて、ＦＰＧＡ１５８が動作を開始する。また、プロテクト面には、コンフィギュレーションが完了したデータが格納される。尚、コンフィギュレーションに失敗した場合は、上記（ａ），（ｂ）を再実行する。
【００９４】
（ｃ）  データの書き換え
上位装置５０は、書き換えデータを下位装置５２のＣＰＵ１５４及びＦＰＧＡ１５８を通して、コンフィギュレーション制御部１６０に送信する。コンフィギュレーション制御部１６０は、図９（ｃ）に示すように、書き換えデータをデータ格納面表示フラグ２６０が示すワーキング面、例えば、Ｂ面１６２＃Ｂに格納するとともに、ワーキング面書き込みフラグ２６２を設定（“１”）及びデータ格納面コピー完了フラグ２６４を解除（“０”）する。
【００９５】
（ｄ）  書き換えデータのＦＰＧＡコンフィギュレーション
上位装置５０は、コンフィギュレーション開始指示を下位装置５２のＣＰＵ１５４及びＦＰＧＡ１５８を通して、コンフィギュレーション制御部１６０に行う。コンフィギュレーション制御部１６０は、コンフィギュレーション開始指示を受信すると、書き換えデータをデータ格納面表示フラグ２６０が示すワーキング面に格納されたデータをＦＰＧＡ１５８にコンフィギュレーションする。
【００９６】
コンフィギュレーションが完了すると、ワーキング面書き込みフラグ２６２が設定（“１”）されていることから、図９（ｄ）に示すように、ワーキング面、例えば、Ｂ面１６２＃Ｂに格納されたデータをプロテクト面にコピーして、ワーキング面書き込みフラグ２６２を解除（“０”）及びデータ格納面コピー完了フラグ２６４を設定（“１”）する。
【００９７】
現在のプロテクト面がワーキング面、現在のワーキング面がプロテクト面となるようにデータ格納面表示フラグ２６０を更新（“１”）してワーキング面の切り替えを行う。
【００９８】
コンフィギュレーションが失敗すると、プロテクト面に格納されたデータをＦＰＧＡ１５８にコンフィギュレーションする。コンフィギュレーションが完了すると、ワーキング面書き込みフラグ２６２が設定（“１”）されていることから、図９（ｅ）に示すように、プロテクト面、例えば、Ａ面２６２＃Ａに格納されたデータをワーキング面にコピーして、ワーキング面書き込みフラグ２６２を解除（“０”）及びデータ格納面コピー完了フラグ２６４を設定（“１”）する。
【００９９】
以上説明したように、装置故障が発生していない限り、ワーキング面に格納されたデータによるＦＰＧＡコンフィギュレーションが完了しなくてもプロテクト面での装置立ち上げが可能となる。また、この時、装置は上位装置よりＦＰＧＡデータを書き換える前の時点におけるＦＰＧＡデータとなる。
【０１００】
本発明は以下の付記を含む。
（付記１）  ＦＰＧＡにコンフィギュレーションをするＦＰＧＡコンフィギュレーション制御方法において、
データ格納面表示フラグを設定する領域並びにデータを格納する第１及び第２面を有するメモリの前記データ格納面表示フラグが示すワーキング面に該当する前記第１及び第２面のいずれかに書き換えデータを格納する第１ステップと、
前記データ格納面表示フラグが示すワーキング面に格納された書き換えデータに基づき前記ＦＰＧＡにコンフィギュレーションを行う第２ステップと、
前記コンフィギュレーションが完了したならば、現在のワーキング面がプロテクト面、現在のプロテクト面がワーキング面となるよう前記データ格納面表示フラグを更新する第３ステップと、
前記コンフィギュレーションが失敗したならば、前記データ格納面表示フラグが示すワーキング面とは異なるプロテクト面に該当する第１及び第２面の何れかの面に格納されたデータに基づきＦＰＧＡにコンフィギュレーションを行う第４ステップと、
を具備したことを特徴とするＦＰＧＡコンフィギュレーション制御方法。
（付記２）  前記第３ステップは前記データ格納面表示フラグが示すワークキング面に該当する第１及び第２面の何れかの面に格納されたデータを他方の面にコピーするステップを含むことを特徴とする付記１記載のＦＰＧＡコンフィギュレーション制御方法。
（付記３）  前記第４ステップは前記データ格納面表示フラグが示すワーキング面とは異なるプロテクト面に該当する第１及び第２面のいずれかの面に格納されたデータを他方の面にコピーするステップを含むことを特徴とする付記１記載のＦＰＧＡコンフィギュレーション制御方法。
（付記４）  前記第１及び第２面のいずれかの面に初期データを格納し、該初期データを格納した面がワーキング面となるように前記データ格納面表示フラグを設定するステップと、前記データ格納面表示フラグが示すワーキング面に格納された初期データに基づき前記ＦＰＧＡにコンフィギュレーションを行うステップとを更に含むことを特徴とする付記１記載のＦＰＧＡコンフィギュレーション制御方法。
（付記５）  ＦＰＧＡにコンフィギュレーションをするＦＰＧＡコンフィギュレーション制御装置において、
データ格納面表示フラグの領域並びにデータを格納する第１及び第２面を有するメモリと、
前記データ格納面表示フラグが示すワークキングに該当する前記第１及び第２面の何れかの面に、書き換えデータを格納するデータ書き換え部と、
前記データ格納面表示フラグが示すワーキング面に格納された書き換えデータに基づき前記ＦＰＧＡにコンフィギュレーションを行う第１コンフィギュレーション部と、
前記コンフィギュレーションが完了したならば、現在のワーキング面がプロテクト面、現在のプロテクト面がワーキング面となるよう前記データ格納面表示フラグを更新する面切り替え制御部と、
前記コンフィギュレーションが失敗したならば、前記データ格納面表示フラグが示すワーキング面とは異なるプロテクト面に該当する第１及び第２面の何れかの面に格納されたデータに基づきＦＰＧＡにコンフィギュレーションを行う第２コンフィギュレーション部と、
を具備したことを特徴とするＦＰＧＡコンフィギュレーション制御装置。
（付記６）  前記第１コンフィギュレーション部によるコンフィギュレーションが完了したならば、前記データ格納面表示フラグが示すワーキング面に格納されたデータをプロテクト面にコピーする第１データコピー部を更に具備したことを特徴とする付記５記載のＦＰＧＡコンフィギュレーション制御装置。
（付記７）  前記第２コンフィギュレーション部によるコンフィギュレーションが完了したならば、前記データ格納面表示フラグが示すワーキング面とは異なるプロテクト面に格納されたデータをワーキング面にコピーする第２データコピー部を更に具備したことを特徴とする付記６記載のＦＰＧＡコンフィギュレーション制御装置。
（付記８）  専用端末より初期データを受信して、前記データ格納面表示フラグが示すワーキング面に格納する初期データ書き込み部と、電源がオンされると、前記データ格納面表示フラグが示すワーキング面に格納された初期データに基づき前記ＦＰＧＡにコンフィギュレーションを行う第３コンフィギュレーション部と、前記第３コンフィギュレーション部よるコンフィギュレーションが完了したならば、前記データ格納面表示フラグが示すワーキング面に格納された初期データをプロテクト面にコピーする第３データコピー部とを更に具備したことを特徴とする付記５記載のＦＰＧＡコンフィギュレーション制御装置。
（付記９）  前記書き換えデータは上位装置により送信されて前記ＦＰＧＡを通して受信されることを特徴とする付記５記載のＦＰＧＡコンフィギュレーション制御装置。
【図面の簡単な説明】
【０１０１】
【図１】本発明の原理図である。
【図２】本発明の実施形態によるコンフィギュレーション制御装置の構成図である。
【図３】図２中のフラッシュメモリ構成図である。
【図４】図２中のコンフィギュレーション制御部の機能ブロック図である。
【図５】初期データ書き込み動作フローチャートである。
【図６】書き換えデータ書き込み動作フローチャートである。
【図７】ＦＰＧＡコンフィギュレーション動作フローチャートである。
【図８】データコピーの動作フローチャートである。
【図９】ＦＰＧＡコンフィギュレーション制御方法を示す図である。
【符号の説明】
【０１０２】
２  メモリ
４  データ書き換え部
６  第１コンフィギュレーション部
８  面切り替え部
１０  第２コンフィギュレーション部
１２  データ格納面表示フラグ
１４＃１  第１面
１４＃２  第２面
１６  ＦＰＧＡ
【図１】
2005191872.tif 000003
【図２】
2005191872.tif 000004
【図３】
2005191872.tif 000005
【図４】
2005191872.tif 000006
【図５】
2005191872.tif 000007
【図６】
2005191872.tif 000008
【図７】
2005191872.tif 000009
【図８】
2005191872.tif 000010
【図９】
2005191872.tif 000011