(57)【特許請求の範囲】
【請求項１】
コンフィグレーションデータが格納された第１のコンフィグレーションＲＯＭ及び第２のコンフィグレーションＲＯＭと、
電源投入後に前記第１のコンフィグレーションＲＯＭまたは前記第２のコンフィグレーションＲＯＭのうち少なくともどちらか一方に格納された前記コンフィグレーションデータを読み込むことによりＦＰＧＡの回路の構築を開始し、前記ＦＰＧＡの回路の構築が成功するとコンフィグレーション完了信号を出力し、前記ＦＰＧＡの回路の構築が失敗するとコンフィグレーションエラー検出信号を出力するＦＰＧＡと、
前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのデータにアクセスすることが可能なＣＰＵと、
電源投入後に最初は前記第１のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成し、前記ＦＰＧＡから前記コンフィグレーションエラー検出信号が出力された場合、前記第２のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成するとともに、前記ＦＰＧＡが出力する前記コンフィグレーション完了信号が出力されたこと及び前記コンフィグレーションデータを前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのどちらから読み込んだのかを示すコンフィグレーション成功ＲＯＭ通知信号を出力するＲＯＭ制御信号切替回路と、
を有するコンフィグレーション冗長化装置。
【請求項２】
コンフィグレーションデータが格納された第１のコンフィグレーションＲＯＭ及び第２のコンフィグレーションＲＯＭと、
電源投入後に前記第１のコンフィグレーションＲＯＭまたは前記第２のコンフィグレーションＲＯＭのうち少なくともどちらか一方に格納された前記コンフィグレーションデータを読み込むことによりＦＰＧＡの回路の構築を開始し、前記ＦＰＧＡの回路の構築が成功するとコンフィグレーション完了信号を出力し、前記ＦＰＧＡの回路の構築が失敗するとコンフィグレーションエラー検出信号を出力するＦＰＧＡと、
前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのデータにアクセスすることが可能なＣＰＵと、
電源投入後に最初は前記第１のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成し、前記ＦＰＧＡから前記コンフィグレーションエラー検出信号が出力された場合、前記第２のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成するＲＯＭ制御信号切替回路と、
前記ＦＰＧＡの回路の構築が失敗すると前記コンフィグレーションエラー検出信号が出力されるように前記第１のコンフィグレーションＲＯＭの前記コンフィグレーションデータの一部もしくは全部を書き換えるのに必要な間、電源遮断時に電圧を保持する電圧保持回路と、
電源が遮断したことを検出し、電源が遮断したことを前記電圧保持回路に出力する電源遮断検出回路と、
を有するコンフィグレーション冗長化装置。
【請求項３】
前記コンフィグレーションデータが格納された前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭの空き領域に前記コンフィグレーションデータの誤り検出符号が付加されている請求項１又は２記載のコンフィグレーション冗長化装置。
【請求項４】
前記コンフィグレーションデータが格納された前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭの空き領域に、前記コンフィグレーションデータのバージョン情報が付加されており、
外部から前記コンフィグレーションデータを受け取ることができる通信ポートと、
を有する請求項３記載のコンフィグレーション冗長化装置。
【請求項５】
前記第１のコンフィグレーションＲＯＭからコンフィグレーションして前記コンフィグレーション完了信号が出力した後に、前記ＦＰＧＡまたは前記ＣＰＵのうち少なくともどちらか一方からアクセスが無ければ、前記ＲＯＭ制御信号切替回路に対して、コンフィグレーション経路を前記第２のコンフィグレーションＲＯＭに変更して前記第２のコンフィグレーションＲＯＭからコンフィグレーションを開始する信号を出力するＦＰＧＡ起動確認レジスタを有する請求項１又は２記載のコンフィグレーション冗長化装置。
【請求項６】
電源投入後に最初から前記ＦＰＧＡが前記第２のコンフィグレーションＲＯＭに格納さ
れた前記コンフィグレーションデータを読み込むことにより前記ＦＰＧＡの回路の構築を開始するように設定できる不揮発性である起動ＲＯＭ選択レジスタと、
電源投入後に前記起動ＲＯＭ選択レジスタの状態を確認することにより、最初は前記第１のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成し、前記ＦＰＧＡから前記コンフィグレーションエラー検出信号が出力された場合、前記第２のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成するか、または最初から前記第２のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成するＲＯＭ制御信号切替回路と、
を有する請求項１又は２記載のコンフィグレーション冗長化装置。
【請求項７】
前記ＣＰＵが前記ＦＰＧＡに内蔵されている請求項１又は２記載のコンフィグレーション冗長化装置。
【請求項８】
電源投入後に第１のコンフィグレーションＲＯＭ及び第２のコンフィグレーションＲＯＭに格納されたコンフィグレーションデータをＦＰＧＡが読み込むことによりＦＰＧＡをコンフィグレーションする手法において、
最初に前記ＦＰＧＡは前記第１のコンフィグレーションＲＯＭからコンフィグレーションを開始する処理と、
前記第１のコンフィグレーションＲＯＭからのコンフィグレーションしているときに、前記ＦＰＧＡからコンフィグレーションエラー検出信号が出力された場合は、コンフィグレーション経路を前記第２のコンフィグレーションＲＯＭに切り替え、前記第２のコンフィグレーションＲＯＭからコンフィグレーションを開始する処理と、
前記ＦＰＧＡが前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのどちらからのコンフィグレーションでコンフィグレーションが成功したのかを示すコンフィグレーション成功ＲＯＭ通知信号をＲＯＭ制御信号切替回路が出力する処理と、
を有するコンフィグレーション手法。
【請求項９】
前記ＦＰＧＡが前記第２のコンフィグレーションＲＯＭからコンフィグレーションが成功した場合、コンフィグレーション成功後に前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が前記第２のコンフィグレーションＲＯＭのデータを検証する処理と、
前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が前記第２のコンフィグレーションＲＯＭのデータを前記第１のコンフィグレーションＲＯＭにコピーする処理と、
前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が前記第１のコンフィグレーションＲＯＭのデータを検証する処理と、
を有する請求項８記載のコンフィグレーション手法。
【請求項１０】
前記ＦＰＧＡがコンフィグレーション成功後に前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭに格納されているコンフィグレーションデータを更新する手法において、
更新コンフィグレーションデータを通信ポートから受け取る処理と、
受け取った前記更新コンフィグレーションデータのバージョンが正しいことを確認する処理と、
前記第２のコンフィグレーションＲＯＭに前記更新コンフィグレーションデータを書き込み検証する処理と、
前記第１のコンフィグレーションＲＯＭに前記更新コンフィグレーションデータを書き込み検証する処理と、
を有する請求項８記載のコンフィグレーション手法。
【請求項１１】
前記ＦＰＧＡが前記第１のコンフィグレーションＲＯＭからのコンフィグレーションによりコンフィグレーションが成功した場合、前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方がＦＰＧＡ起動確認レジスタにアクセスをするＦＰＧＡ起動確認処理と、
前記ＦＰＧＡ起動確認処理が無い場合、コンフィグレーション経路を前記第２のコンフィグレーションＲＯＭに切り替え、前記第２のコンフィグレーションＲＯＭからコンフィグレーションを開始する処理を有する請求項８記載のコンフィグレーション手法。
【請求項１２】
電源遮断時に前記ＦＰＧＡの回路の構築が失敗すると前記コンフグレーションエラー検出信号が出力されるように、前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が前記第１のコンフィグレーションＲＯＭのコンフィグレーションデータの一部もしくは全部を書き換える処理を有する請求項８記載のコンフィグレーション手法。
【請求項１３】
前記第１のコンフィグレーションＲＯＭにアクセスする前に、次回の電源投入時は最初から前記第２のコンフィグレーションＲＯＭからコンフィグレーションが開始するように前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が、不揮発性である起動ＲＯＭ選択レジスタに設定する処理と、
前記第１のコンフィグレーションＲＯＭにアクセスした後に、次回の電源投入時は通常通り前記第１のコンフィグレーションＲＯＭからコンフィグレーションが開始するように前記ＦＰＧＡまたは前記ＣＰＵのうち少なくともどちらか一方が、前記起動ＲＯＭ選択レジスタに設定する処理と、
を有する請求項８記載のコンフィグレーション手法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はコンフィグレーションＲＯＭに格納されたコンフィグレーションデータを読み込むことによりプログラム可能なＦＰＧＡにおいて、コンフィグレーションＲＯＭを複数持つことによりコンフィグレーションの信頼性を高めたコンフィグレーション冗長化装置および、コンフィグレーションデータが正常であることを検証することによりコンフィグレーションの信頼性を高めるコンフィグレーション手法に関する。
【背景技術】
【０００２】
従来、コンフィグレーションＲＯＭを複数持つことによりＦＰＧＡのコンフィグレーションの信頼性を高めた装置が下記の文献に記載されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−６６９６１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
しかしこの装置では、コンフィグレーションデータがデータ化けを起こしている場合、タイマのタイムアウトでコンフィグレーションの失敗を判断しているので時間がかかる。
また、１度目のコンフィグレーションが実施されるコンフィグレーションＲＯＭのデータがデータ化けをしている場合であっても、次回以降の起動時にはそのデータ化けを起こしているコンフィグレーションＲＯＭからコンフィグレーションを試み、起動を失敗した後に２度目のコンフィグレーションが実施されるコンフィグレーションＲＯＭからコンフィグレーションを実施するため、起動に時間がかかるという課題がある。
【０００５】
そこで上記課題を解決するために本発明では、電源を投入してからＦＰＧＡが起動するまでの時間を短縮しつつ、ＦＰＧＡの起動を保証することが可能なコンフィグレーション冗長化装置、及びコンフィグレーション手法を提案することを目的とする。
【課題を解決するための手段】
【０００６】
上記課題を解決するために、本発明の一態様によれば、
コンフィグレーションデータが格納された第１のコンフィグレーションＲＯＭ及び第２のコンフィグレーションＲＯＭと、
電源投入後に前記第１のコンフィグレーションＲＯＭまたは前記第２のコンフィグレーションＲＯＭのうち少なくともどちらか一方に格納された前記コンフィグレーションデータを読み込むことによりＦＰＧＡの回路の構築を開始し、前記ＦＰＧＡの回路の構築が成功するとコンフィグレーション完了信号を出力し、前記ＦＰＧＡの回路の構築が失敗するとコンフィグレーションエラー検出信号を出力するＦＰＧＡと、
前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのデータにアクセスすることが可能なＣＰＵと、
電源投入後に最初は前記第１のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成し、前記ＦＰＧＡから前記コンフィグレーションエラー検出信号が出力された場合、前記第２のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成するＲＯＭ制御信号切替回路とを有するコンフィグレーション冗長化装置が提供される。
ここで、本発明でいう第１のコンフィグレーションＲＯＭ及び第２のコンフィグレーションＲＯＭは、書き換え可能であり、かつ電源が遮断されてもデータが保持される不揮発性のメモリである。
また、本発明でいうＦＰＧＡは電源投入される毎にコンフィグレーションデータを外部から読み込むことにより回路を構築し、電源が遮断されると構築した回路が失われるデバイスである。
これにより、前記第１のコンフィグレーションＲＯＭのコンフィグレーションデータがデータ化けを起こしていた場合、タイムアウトを待たなくても前記第２のコンフィグレーションＲＯＭからコンフィグレーションを開始できるため、起動時間が短縮する。
【０００７】
また、本発明の一態様によれば、
前記ＦＰＧＡが出力する前記コンフィグレーション完了信号が出力されたこと及び前記コンフィグレーションデータを前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのどちらから読み込んだのかを示すコンフィグレーション成功ＲＯＭ通知信号を前記ＲＯＭ制御信号切替回路が出力する上記のコンフィグレーション冗長化装置が提供される。
これにより、前記ＦＰＧＡが前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのどちらから起動したのかわかる。
このため、前記第２のコンフィグレーションＲＯＭから起動した場合は、前記第１のコンフィグレーションＲＯＭの前記コンフィグレーションデータを修復することにより、次回起動時は前記第１のコンフィグレーションＲＯＭから起動するため、起動時間が短縮する。
【０００８】
また、本発明の一態様によれば、
前記コンフィグレーションデータが格納された前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭの空き領域に前記コンフィグレーションデータの誤り検出符号が付加されている上記のコンフィグレーション冗長化装置が提供される。
これにより、前記第１のコンフィグレーションＲＯＭまたは前記第２のコンフィグレーションＲＯＭの前記コンフィグレーションデータを修復する際に、前記誤り検出符号により前記コンフィグレーションデータが正常に修復されたことを保証できる。
【０００９】
また、本発明の一態様によれば、
前記コンフィグレーションデータが格納された前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭの空き領域に、前記コンフィグレーションデータのバージョン情報が付加されており、
外部から前記コンフィグレーションデータを受け取ることができる通信ポートと、
を有する上記のコンフィグレーション冗長化装置が提供される。
これにより、通信ポートから前記コンフィグレーションデータを受信することにより、前記コンフィグレーションデータを更新する際も誤ったバージョンの前記コンフィグレーションデータが更新されることを防止できる。
【００１０】
また、本発明の一態様によれば、
前記第１のコンフィグレーションＲＯＭからコンフィグレーションして前記コンフィグレーション完了信号が出力した後に、前記ＦＰＧＡまたは前記ＣＰＵのうち少なくともどちらか一方からアクセスが無ければ、前記ＲＯＭ制御信号切替回路に対して、コンフィグレーション経路を前記第２のコンフィグレーションＲＯＭに変更して前記第２のコンフィグレーションＲＯＭからコンフィグレーションを開始する信号を出力するＦＰＧＡ起動確認レジスタを有する上記のコンフィグレーション冗長化装置が提供される。
これにより、前記第１のコンフィグレーションＲＯＭから前記コンフィグレーションデータの内容通りに前記ＦＰＧＡの回路の構築は完了したが、その他の要因によりＦＰＧＡが正常に動作しない場合でも、前記第２のコンフィグレーションＲＯＭから再びコンフィグレーションを実施することができる。
【００１１】
また、本発明の一態様によれば、
前記ＦＰＧＡの回路の構築が失敗すると前記コンフィグレーションエラー検出信号が出力されることを保証するために、前記第１のコンフィグレーションＲＯＭの前記コンフィグレーションデータの一部もしくは全部を書き換えるのに必要な間、電源遮断時に電圧を保持する電圧保持回路と、
電源が遮断したことを検出し、電源が遮断したことを前記電圧保持回路に出力する電源遮断検出回路と、
を有する上記のコンフィグレーション冗長化装置が提供される。
これにより、前記ＣＰＵが前記第１のコンフィグレーションＲＯＭにアクセス中に電源が遮断した場合でも、次回起動時に前記ＦＰＧＡの回路の構築が失敗すると前記コンフィグレーションエラー検出信号が出力されることが保証されるため、前記第２のコンフィグレーションＲＯＭによるコンフィグレーションに切り替えることができる。
【００１２】
また、本発明の一態様によれば、
電源投入後に最初から前記ＦＰＧＡは前記第２のコンフィグレーションＲＯＭに格納された前記コンフィグレーションデータを読み込むことにより前記ＦＰＧＡの回路の構築を開始するように設定できる不揮発性である起動ＲＯＭ選択レジスタと、
電源投入後に前記起動ＲＯＭ選択レジスタの状態を確認することにより、最初は前記第１のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成し、前記ＦＰＧＡから前記コンフィグレーションエラー検出信号が出力された場合、前記第２のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成するか、または最初から前記第２のコンフィグレーションＲＯＭから前記コンフィグレーションデータを前記ＦＰＧＡが読み込むようにデータ経路を構成するＲＯＭ制御信号切替回路と、
を有する上記のコンフィグレーション冗長化装置が提供される。
これにより、前記ＣＰＵが前記第１のコンフィグレーションＲＯＭにアクセス中に電源が遮断した場合、次回電源投入時は最初から前記第２のコンフィグレーションＲＯＭによるコンフィグレーションを行うことができる。
【００１３】
また、本発明の一態様によれば、
前記ＣＰＵが前記ＦＰＧＡに内蔵されている上記のコンフィグレーション冗長化装置が提供される。
これによりデバイスの数が少なくなるため、信頼性が増すこと及び、デバイス管理が容易になること及び、ハードウェア仕様変更が容易になること及び、価格が安くなることなどのメリットがある。
【００１４】
また、本発明の一態様によれば、
電源投入後に第１のコンフィグレーションＲＯＭまたは第２のコンフィグレーションＲＯＭのうち少なくともどちらか一方に格納されたコンフィグレーションデータをＦＰＧＡが読み込むことによりＦＰＧＡをコンフィグレーションする手法において、
最初に前記ＦＰＧＡは前記第１のコンフィグレーションＲＯＭからコンフィグレーションを開始する処理と、
前記第１のコンフィグレーションＲＯＭからのコンフィグレーションしているときに、前記ＦＰＧＡからコンフィグレーションエラー検出信号が出力された場合は、コンフィグレーション経路を前記第２のコンフィグレーションＲＯＭに切り替え、前記第２のコンフィグレーションＲＯＭからコンフィグレーションを開始する処理と、
を有するコンフィグレーション手法が提供される。
これにより、前記第１のコンフィグレーションＲＯＭが破壊されていた場合、タイムアウトを待たなくても前記第２のコンフィグレーションＲＯＭに切り替えることができるため、起動時間が短縮する。
【００１５】
また、本発明の一態様によれば、
前記ＦＰＧＡが前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのどちらからのコンフィグレーションでコンフィグレーションが成功したのかを示すコンフィグレーション成功ＲＯＭ通知信号をＲＯＭ制御信号切替回路が出力する処理を有する上記のコンフィグレーション手法が提供される。
これにより、前記ＦＰＧＡが前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭのどちらから起動したのかわかる。
このため、前記第２のコンフィグレーションＲＯＭから起動した場合は、前記第１のコンフィグレーションＲＯＭの前記コンフィグレーションデータを修復することにより、次回起動時は前記第１のコンフィグレーションＲＯＭから起動するため、起動時間が短縮する。
【００１６】
また、本発明の一態様によれば、
前記ＦＰＧＡが前記第２のコンフィグレーションＲＯＭからコンフィグレーションが成功した場合、コンフィグレーション成功後に前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が前記第２のコンフィグレーションＲＯＭのデータを検証する処理と、
前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が前記第２のコンフィグレーションＲＯＭのデータを前記第１のコンフィグレーションＲＯＭにコピーする処理と、
前記ＦＰＧＡまたはＣＰＵのうち少なくともどちらか一方が前記第１のコンフィグレーションＲＯＭのデータを検証する処理と、
を有する上記のコンフィグレーション手法が提供される。
これにより、前記第１のコンフィグレーションＲＯＭまたは前記第２のコンフィグレーションＲＯＭの前記コンフィグレーションデータを修復する際に、前記コンフィグレーションデータを検証することにより、前記コンフィグレーションデータが正常に修復されたことを保証できる。
【００１７】
また、本発明の一態様によれば、
前記ＦＰＧＡがコンフィグレーション成功後に前記第１のコンフィグレーションＲＯＭ及び前記第２のコンフィグレーションＲＯＭに格納されているコンフィグレーションデータを更新する手法において、
更新コンフィグレーションデータを通信ポートから受け取る処理と、
受け取った前記更新コンフィグレーションデータのバージョンが正しいことを確認する処理と、
前記第２のコンフィグレーションＲＯＭに前記更新コンフィグレーションデータを書き込み検証する処理と、
前記第１のコンフィグレーションＲＯＭに前記更新コンフィグレーションデータを書き込み検証する処理と、
を有する上記のコンフィグレーション手法が提供される。
これにより、通信ポートから前記コンフィグレーションデータを受信することにより、前記コンフィグレーションデータを更新する際も誤ったバージョンの前記コンフィグレーションデータが更新されることを防止できる。
【００１８】
また、本発明の一態様によれば、
前記ＦＰＧＡが前記第１のコンフィグレーションＲＯＭからのコンフィグレーションによりコンフィグレーションが成功した場合、前記ＦＰＧＡまたは前記ＣＰＵのうち少なくともどちらか一方がＦＰＧＡ起動確認レジスタにアクセスをするＦＰＧＡ起動確認処理と、
前記ＦＰＧＡ起動確認処理が無い場合、コンフィグレーション経路を前記第２のコンフィグレーションＲＯＭに切り替え、前記第２のコンフィグレーションＲＯＭからコンフィグレーションを開始する処理を有する上記のコンフィグレーション手法が提供される。
これにより、前記第１のコンフィグレーションＲＯＭから前記コンフィグレーションデータの内容通りに前記ＦＰＧＡの回路の構築は完了したが、その他の要因によりＦＰＧＡが正常に動作しない場合でも、前記第２のコンフィグレーションＲＯＭから再びコンフィグレーションを実施することができる。
【００１９】
また、本発明の一態様によれば、
電源遮断時に前記ＦＰＧＡの回路の構築が失敗すると前記コンフグレーションエラー検出信号が出力されるように、前記ＦＰＧＡまたは前記ＣＰＵのうち少なくともどちらか一方が前記第１のコンフィグレーションＲＯＭのコンフィグレーションデータの一部もしくは全部を書き換える処理を有する上記のコンフィグレーション手法が提供される。
これにより、前記ＣＰＵが前記第１のコンフィグレーションＲＯＭにアクセス中に電源が遮断した場合でも、次回起動時に前記ＦＰＧＡの回路の構築が失敗すると前記コンフグレーションエラー検出信号が出力されるため、前記第２のコンフィグレーションＲＯＭによるコンフィグレーションに切り替えることができる。
【００２０】
また、本発明の一態様によれば、
前記第１のコンフィグレーションＲＯＭにアクセスする前に、次回の電源投入時は最初から前記第２のコンフィグレーションＲＯＭからコンフィグレーションが開始するように前記ＦＰＧＡまたは前記ＣＰＵのうち少なくともどちらか一方が、不揮発性である起動ＲＯＭ選択レジスタに設定する処理と、
前記第１のコンフィグレーションＲＯＭにアクセスした後に、次回の電源投入時は通常通り前記第１のコンフィグレーションＲＯＭからコンフィグレーションが開始するように前記ＦＰＧＡまたは前記ＣＰＵのうち少なくともどちらか一方が、前記起動ＲＯＭ選択レジスタに設定する処理と、
を有する上記のコンフィグレーション手法が提供される。
これにより、前記ＣＰＵが前記第１のコンフィグレーションＲＯＭにアクセス中に電源が遮断した場合、次回電投入時は最初から前記第２のコンフィグレーションＲＯＭによるコンフィグレーションを行うことができる。
【発明の効果】
【００２１】
以上説明したように本発明によれば、電源を投入してからＦＰＧＡが起動するまでの時間を短縮しつつ、ＦＰＧＡの起動を保証することが可能なコンフィグレーション冗長化装置、及びコンフィグレーション手法を提案することが可能になる。
【図面の簡単な説明】
【００２２】
【図１】本発明の第１実施形態におけるコンフィグレーション冗長化装置である。
【図２】本発明の第１実施形態におけるコンフィグレーションＲＯＭのデータ構成である。
【図３】本発明の第１実施形態におけるコンフィグレーションフローチャートである。
【図４】本発明の第１実施形態における復帰処理フローチャートである。
【図５】本発明の第１実施形態におけるデータ更新フローチャートである。
【図６】本発明の第２実施形態におけるコンフィグレーション冗長化装置である。
【図７】本発明の第２実施形態におけるコンフィグレーションフローチャートである。
【図８】本発明の第３実施形態におけるコンフィグレーション冗長化装置である。
【図９】本発明の第３実施形態におけるコンフィグレーションフローチャートである。
【図１０】本発明の第４実施形態におけるコンフィグレーション冗長化装置である。
【図１１】本発明の第４実施形態におけるコンフィグレーションフローチャートである。
【図１２】本発明の第４実施形態における復帰処理フローチャートである。
【図１３】本発明の第４実施形態におけるデータ更新フローチャートである。
【発明を実施するための形態】
【００２３】
以下に図面を参照して、この発明を実施するための形態を例示的に詳しく説明する。
【００２４】
（第１実施形態）
図１は本実施形態の構成を表したブロック図である。
ＦＰＧＡ１０１はコンフィグ専用回路１０１１と、論理回路１０１２と、ＣＰＵ１０１３とを備える。
コンフィグ専用回路１０１１はＦＰＧＡ１０１の起動時にコンフィグレーションを制御する。具体的には、電源投入後にＲＯＭ制御信号切替回路１０３に接続されているコンフィグレーションデータ読込み信号Ｓ１０３を経由してコンフィグレーションＲＯＭ１（１０４）またはコンフィグレーションＲＯＭ２（１０５）からコンフィグレーションデータを読み込む。コンフィグレーションが成功した場合はコンフィグレーション完了信号Ｓ１０４をＲＯＭ制御信号切替回路１０３に出力し、コンフィグレーションが失敗した場合はコンフィグレーションエラー検出信号Ｓ１０５をＲＯＭ制御信号切替回路１０３に出力する。
論理回路１０１２はＦＰＧＡ１０１のコンフィグレーションにより構成された回路である。
ＣＰＵ１０１３はコンフィグレーション完了後にＲＯＭアクセス信号Ｓ１０６とＲＯＭ制御信号切替回路１０３を通してコンフィグレーションＲＯＭ１（１０４）またはコンフィグレーションＲＯＭ２（１０５）にアクセスできる。ＣＰＵ１０１３がコンフィグレーションＲＯＭ１（１０４）またはコンフィグレーションＲＯＭ２（１０５）のどちらにアクセスするのかはＲＯＭ選択信号Ｓ１０７により決定する。また、ＣＰＵ１０１３はＦＰＧＡリセット信号Ｓ１１１を起動制御回路１０２に出力することにより、ＦＰＧＡをリコンフィグすることができる。
起動制御回路１０２は電源投入を検出すると、リセット信号Ｓ１０１をＲＯＭ制御信号切替回路１０３に出力する。また、ＦＰＧＡ１０１からＦＰＧＡリセット信号Ｓ１１１を受け取った場合も、リセット信号Ｓ１０１をＲＯＭ制御信号切替回路１０３に出力する。
ＲＯＭ制御信号切替回路１０３は起動制御回路１０２からリセット信号Ｓ１０１を受け取ると、コンフィグレーション開始信号Ｓ１０２をＦＰＧＡ１０１に出力する。また、ＲＯＭ制御信号切替回路１０３は電源投入後、コンフィグレーションデータ読込み信号Ｓ１０３とコンフィグレーションＲＯＭ１アクセス信号Ｓ１０９を接続し、ＦＰＧＡ１０１がコンフィグレーションＲＯＭ１（１０４）からコンフィグレーションされる状態にする。その後、ＦＰＧＡ１０１からコンフィグレーションエラー検出信号Ｓ１０５が出力された場合は、ＲＯＭ制御信号切替回路１０３はコンフィグレーションデータ読込み信号Ｓ１０３とコンフィグレーションＲＯＭ２アクセス信号Ｓ１１０を接続し、ＦＰＧＡ１０１がコンフィグレーションＲＯＭ２（１０５）からコンフィグレーションされる状態に切り替える。また、ＲＯＭ制御信号切替回路１０３はＣＰＵ１０１３の説明で述べたように、ＦＰＧＡ１０１のコンフィグレーションが完了後、ＣＰＵ１０１３がコンフィグレーションＲＯＭ１（１０４）またはコンフィグレーションＲＯＭ２（１０５）のどちらにアクセスするのかをＣＰＵ１０１３により制御されたＲＯＭ選択信号Ｓ１０７により切り替える。また、コンフィグレーションＲＯＭ１（１０４）またはコンフィグレーションＲＯＭ２（１０５）のどちらのＲＯＭからコンフィグレーションが成功したのかをコンフィグレーション成功ＲＯＭ通知信号Ｓ１０８により、ＦＰＧＡ１０１に通知する。
通信ポート１０６はＦＰＧＡが装置外部とデータを送受信するためのインタフェースであり、例えばＬＡＮポートを意味する。通信ポート１０６を用いる事により、装置外部からコンフィグレーションデータを受信し、ＦＰＧＡ１０１、ＲＯＭ制御信号切替回路１０３を通して、コンフィグレーションＲＯＭ１（１０４）及びコンフィグレーションＲＯＭ２（１０５）に受信したコンフィグレーションデータを書き込むことができる。
【００２５】
図２に示すコンフィグレーションＲＯＭデータ１２１は、本実施形態のコンフィグレーションＲＯＭ１（１０４）及びコンフィグレーションＲＯＭ２（１０５）に格納されているデータの構成を示す。
コンフィグレーションＲＯＭデータ１２１は、コンフィグレーションデータ１２１１と、誤り検出符号１２１２と、バージョン情報１２１３と、空き領域１２１４とを備える。
コンフィグレーションデータ１２１１はＦＰＧＡ１０１が回路を構築するのに必要なデータであり、ＦＰＧＡ１０１供給元の独自のフォーマットである。
誤り検出符号１２１２はコンフィグレーションデータ１２１１が正常であることを検証するための符号であり、例えばＣＲＣ符号がある。
バージョン情報１２１３はコンフィグレーションデータ１２１１のバージョンを示すデータであり、例えばコンフィグレーションデータ１２１１に対して一意の値をとる。
空き領域１２１４はコンフィグレーションＲＯＭデータ１２１のうち、コンフィグレーションデータ１２１１と、誤り検出符号１２１２と、バージョン情報１２１３以外のデータであり、本装置では意味を持たない。
【００２６】
図３はコンフィグレーションのフローチャートを示す。
電源投入すると、起動制御回路１０２はリセット信号Ｓ１０１をＲＯＭ制御信号切替回路に出力し、ＲＯＭ制御信号切替回路１０３はコンフィグレーション開始信号Ｓ１０２をＦＰＧＡ１０１に出力する。このコンフィグレーション開始信号Ｓ１０２をＦＰＧＡ１０１が受け取ると、ＦＰＧＡ１０１はコンフィグレーションＲＯＭ１（１０４）に格納されたコンフィグレーションデータ１２１によりコンフィグレーションを開始する（Ａ−１０１）。
その後、ＦＰＧＡ１０１によりコンフィグレーションエラー検出信号Ｓ１０５が出力されず（Ｓ１０３）、かつコンフィグレーション完了信号Ｓ１０４が出力すると（Ｓ１０４）、ＦＰＧＡはコンフィグレーションＲＯＭ１（１０４）により正常に起動したことになる。また、ＦＰＧＡ１０１によりコンフィグレーションエラー検出信号Ｓ１０５が出力されると（Ｓ１０３）、ＲＯＭ制御信号切替回路１０３はコンフィグレーション経路をコンフィグレーションＲＯＭ２（１０５）に切り替える（Ａ−１０２）。
その後、ＦＰＧＡ１０１によりコンフィグレーションエラー検出信号Ｓ１０５が出力されず（Ｓ１０５）、かつコンフィグレーション完了信号Ｓ１０４が出力すると（Ｓ１０６）、ＦＰＧＡはコンフィグレーションＲＯＭ２（１０５）により正常に起動したことになる。この場合、ＦＰＧＡ１０１起動後は、後述の復帰処理が始る。また、ＦＰＧＡ１０１によりコンフィグレーションエラー検出信号Ｓ１０５が出力されると（Ｓ１０５）、ＦＰＧＡは起動せず、装置故障と判断される。
【００２７】
前述のように、ＦＰＧＡ１０１がコンフィグレーションＲＯＭ１（１０４）からのコンフィグレーションに失敗して、コンフィグレーションＲＯＭ２（１０５）からのコンフィグレーションに成功して正常に起動した場合、ＦＰＧＡ１０１はコンフィグレーションＲＯＭ１（１０４）のコンフィグレーションデータ１２１１の復帰処理を行う。
図４は復帰処理のフローチャートを示す。
まず、ＦＰＧＡ１０１内のＣＰＵ１０１３が、コンフィグレーションＲＯＭ２（１０５）のコンフィグレーションデータ１２１１が正常であることを誤り検出符号１２１２を用いて検証し（Ｓ−１０５）、正常である場合はコンフィグレーションＲＯＭ２（１０５）のコンフィグレーションデータ１２１１をコンフィグレーションＲＯＭ１（１０４）にコピーする（Ａ−１０４）。ここでコンフィグレーションＲＯＭ２（１０５）のコンフィグレーションデータ１２１１が正常でない場合は、復帰処理失敗となる。
その後、ＦＰＧＡ１０１内のＣＰＵ１０１３が、コンフィグレーションＲＯＭ２（１０５）のコンフィグレーションデータ１２１１が正常であることを誤り検出符号１２１２を用いて検証し（Ｓ−１０６）、正常である場合は復帰処理完了となり、正常でない場合はコンフィグレーションＲＯＭ２（１０５）のコンフィグレーションデータ１２１１検証（Ｓ−１０５）に戻る。
【００２８】
本実施形態では、ＦＰＧＡ１０１起動後にコンフィグレーションＲＯＭ１（１０４）及びコンフィグレーションＲＯＭ２（１０５）のコンフィグレーションＲＯＭデータ１２１を更新することができる。
図５は、データ更新のフローチャートを示す。
まず、ＦＰＧＡ１０１は通信ポート１０６を通して更新データを受け取り（Ａ−１０５）、更新データのバージョン情報１２１３が正常であるか検証する（Ｓ−１０７）。
更新データが正常であった場合は、ＦＰＧＡ１０１はコンフィグレーションＲＯＭ２（１０５）に更新データを書き込み（Ａ−１０６）、正常に書き込まれたかを誤り検出符号１２１２を用いて確認後（Ａ−１０７）、コンフィグレーションＲＯＭ１（１０４）に更新データを書き込み（Ａ−１０８）、正常に書き込まれたかを誤り検出符号１２１２を用いて確認する(Ａ−１０９)。その後、ＦＰＧＡ１０１がリコンフィグを行うことにより（Ａ１１０）、ＦＰＧＡ１０１は更新データで起動し（Ａ−１１１）、データ更新が完了する。
【００２９】
（第２実施形態）
図６は本実施形態の構成を表したブロック図であり、第１実施形態を示した図１にＦＰＧＡ起動確認レジスタ２０３を追加した構成である。
ＦＰＧＡ起動確認レジスタ２０３は装置実装時の初期状態が０である不揮発性メモリで構成されており、ＦＰＧＡ２０１によりデータを書き換えることができ、またＲＯＭ制御信号切替回路２０２はデータを読み込むことができる。
ＦＰＧＡ２０１はコンフィグ専用回路１０１１と、論理回路１０１２と、ＣＰＵ２０１３とを備える。
コンフィグ専用回路１０１１及び論理回路１０１２は図１で説明した内容と同じである。
ＣＰＵ２０１３は図１で説明した内容に加えて、ＦＰＧＡ起動後にＦＰＧＡ起動確認レジスタ書込み信号Ｓ２０１を通してＦＰＧＡ起動確認レジスタ２０３に「１」を書き込む。
ＲＯＭ制御信号切替回路２０２は図１で説明した内容に加えて、コンフィグレーションＲＯＭ１によりＦＰＧＡが起動後に、ＦＰＧＡ起動確認レジスタ読込み信号Ｓ２０２を通してＦＰＧＡ起動確認レジスタ２０３のデータを読み込む。ここで、読み込んだ値が「０」の場合は、コンフィグレーション経路をコンフィグレーションＲＯＭ２（１０５）に切り替える。
起動制御回路１０２及び通信ポート１０６は図１で説明した内容と同じ機能を持つ。
コンフィグレーションＲＯＭ１（１０４）及びコンフィグレーションＲＯＭ２（１０５）は図２で説明した内容と同じデータ構成を持つ。
【００３０】
図７はコンフィグレーションのフローチャートを示しており、第１実施形態を示した図３にＦＰＧＡ起動確認レジスタ２０３にデータを書き込む処理（Ａ−２０１）及び、ＦＰＧＡ起動確認レジスタ２０３のデータを読み込むことによりその後の処理を判断する処理（Ｓ−２０１）を追加したフローチャートである。
電源投入後、図３で説明した内容と同じフローを実施し、ＦＰＧＡ１０１がコンフィグレーションＲＯＭ１（１０４）に格納されたコンフィグレーションデータ１２１によりコンフィグレーションが成功して、ＦＰＧＡ１０１がコンフィグレーション完了信号をＳ１０４を出力すると（Ｓ−１０２）、ＦＰＧＡ１０１内のＣＰＵ２０１３はＦＰＧＡ起動確認レジスタ２０３に「１」を書き込む。その後、ＲＯＭ制御信号切替回路２０２はＦＰＧＡ起動確認レジスタ２０３のデータを読み込み、データが「１」の場合、ＦＰＧＡはコンフィグレーションＲＯＭ１（１０４）により正常に起動したことになる。データが「０」の場合、ＲＯＭ制御信号切替回路２０２はコンフィグレーション経路をコンフィグレーションＲＯＭ２（１０５）に切り替える。
その後は図３で説明した内容と同じフローを実施する。
【００３１】
（第３実施形態）
図８は本実施形態の構成を表したブロック図であり、第１実施形態を示した図１に電源遮断検出回路３０２と電源保持回路３０３を追加した構成である。
電源遮断検出回路３０２は電源が遮断したことを検出し、電源保持回路３０３及びＦＰＧＡ３０１に電源遮断検出信号Ｓ３０１を出力する。
電源保持回路３０２は電源遮断検出信号Ｓ３０１を受け取ると一定時間電源電圧を保持し、ＦＰＧＡ１０１とＲＯＭ制御信号切替回路１０３とコンフィグレーションＲＯＭ１（１０４）とコンフィグレーションＲＯＭ２（１０５）と通信ポート１０６が動作できる状態にする。
ＦＰＧＡ３０１はコンフィグ専用回路１０１１と、論理回路１０１２と、ＣＰＵ３０１３とを備える。
コンフィグ専用回路１０１１及び論理回路１０１２は図１で説明した内容と同じである。
ＣＰＵ３０１３は図１で説明した内容に加えて、電源遮断検出回路から電源遮断検出信号Ｓ３０１を受け取ったときにコンフィグレーションＲＯＭ１（１０４）にアクセス中であった場合、コンフィグレーションＲＯＭ１（１０４）のコンフィグレーションデータ（１２１１）を、コンフィグレーション失敗時に必ずンフグレーションエラー検出信号が出力されるように書き換える。
起動制御回路１０２及びＲＯＭ制御信号切替回路１０３及び通信ポート１０６は図１で説明した内容と同じ機能を持つ。
コンフィグレーションＲＯＭ１（１０４）及びコンフィグレーションＲＯＭ２（１０５）は図２で説明した内容と同じデータ構成を持つ。
【００３２】
コンフィグレーションのフローチャートは第１実施形態を示した図３と同じである。
図９は電源遮断時のフローチャートを示す。
電源遮断すると、電源遮断検出回路３０２は電源が遮断したことを検出し（Ａ−３０１）、電源保持回路３０３は電源電圧の保持を開始する（Ａ−３０２）。
それと同時にＦＰＧＡ３０１内のＣＰＵ３０１３はコンフィグレーションＲＯＭ１（１０４）のコンフィグレーションデータ（１２１１）を、コンフィグレーション失敗時に必ずコンフグレーションエラー検出信号が出力されるように書き換える（Ａ−３０３）。
【００３３】
（第４実施形態）
図１０は本実施形態の構成を表したブロック図であり、第１実施形態を示した図１に起動ＲＯＭ選択レジスタ４０３を追加した構成である。
起動ＲＯＭ選択レジスタ４０３は装置実装時の初期状態が「０」である不揮発性メモリで構成されており、ＦＰＧＡ４０１によりデータを書き換えることができ、またＲＯＭ制御信号切替回路４０２はデータを読み込むことができる。
ＦＰＧＡ４０１はコンフィグ専用回路１０１１と、論理回路１０１２と、ＣＰＵ４０１３とを備える。
コンフィグ専用回路１０１１及び論理回路１０１２は図１で説明した内容と同じである。
ＣＰＵ４０１３は図１で説明した内容に加えて、ＦＰＧＡ起動後に起動ＲＯＭ選択レジスタ書込み信号Ｓ４０１を通して起動ＲＯＭ選択レジスタ４０３にデータを書き込むことができる。
ＲＯＭ制御信号切替回路４０２は、電源投入すると起動ＲＯＭ選択レジスタ４０３のデータを読み込むことにより、最初からコンフィグレーションＲＯＭ２（１０５）によりコンフィグレーションを開始するか、または図１で説明したように最初はコンフィグレーションＲＯＭ１（１０４）によりコンフィグレーションを開始するかどうかを判断する。
起動制御回路１０２及び通信ポート１０６は図１で説明した内容と同じ機能を持つ。
コンフィグレーションＲＯＭ１（１０４）及びコンフィグレーションＲＯＭ２（１０５）は図２で説明した内容と同じデータ構成を持つ。
【００３４】
図１１はコンフィグレーションのフローチャートを示しており、第１実施形態を示した図３に起動ＲＯＭ選択レジスタ４０３のデータによる条件分岐（Ｓ−４０１）を追加したフローチャートである。
電源投入すると、ＲＯＭ制御信号切替回路４０２は起動ＲＯＭ選択レジスタ４０３のデータを読み込み（Ｓ−４０１）、データが「０」の場合はコンフィグレーションＲＯＭ１（１０４）によりコンフィグレーションを開始し（Ａ−１０１）、その後は図３で説明した内容と同じフローを実施する。データが「１」の場合はコンフィグレーションＲＯＭ２（１０５）によりコンフィグレーションを開始し（Ａ−１０２）、その後は図３で説明した内容と同じフローを実施する。
【００３５】
図１２は復帰処理のフローチャートを示しており、第１実施形態を示した図４に起動ＲＯＭ選択レジスタ４０３へのデータ書き込み（Ａ−４０１、Ａ−４０２）を追加したフローチャートである。
コンフィグレーションＲＯＭ２（１０５）のデータをコンフィグレーションＲＯＭ１（１０４）にコピーする（Ａ−１０４）前に、ＦＰＧＡ４０１内のＣＰＵ４０１３は起動ＲＯＭ選択レジスタ４０３に１を書き込む（Ａ−４０１）。そして、コンフィグレーションＲＯＭ２（１０５）のデータをコンフィグレーションＲＯＭ１（１０４）にコピーした（Ａ−１０４）後に、ＦＰＧＡ４０１内のＣＰＵ４０１３は起動ＲＯＭ選択レジスタ４０３に０を書き込む（Ａ−４０２）。
【００３６】
図１３はデータ更新のフローチャートを示しており、第１実施形態を示した図５に起動ＲＯＭ選択レジスタ４０３へのデータ書き込み（Ａ−４０３、Ａ−４０４）を追加したフローチャートである。
コンフィグレーションＲＯＭ１（１０４）に更新データを書き込む（Ａ−１０８）前に、ＦＰＧＡ４０１内のＣＰＵ４０１３は起動ＲＯＭ選択レジスタ４０３に１を書き込む（Ａ−４０３）。そして、コンフィグレーションＲＯＭ１（１０４）に更新データを書き込み（Ａ−１０８）後に、ＦＰＧＡ４０１内のＣＰＵ４０１３は起動ＲＯＭ選択レジスタ４０３に０を書き込む（Ａ−４０４）。
【符号の説明】
【００３７】
１０１    ＦＰＧＡ
１０１１  コンフィグ専用回路
１０１２  論理回路
１０１３  ＣＰＵ
１０２    起動制御回路
１０３    ＲＯＭ制御信号切替回路
１０４    コンフィグレーションＲＯＭ１
１０５    コンフィグレーションＲＯＭ２
１０６    通信ポート
１２１    コンフィグレーションＲＯＭデータ
１２１１  コンフィグレーションデータ
１２１２  誤り検出符号
１２１３  バージョン情報
１２１４  空き領域
２０１    ＦＰＧＡ
２０１３  ＣＰＵ
２０２    ＲＯＭ制御信号切替回路
２０３    ＦＰＧＡ起動確認レジスタ
３０１    ＦＰＧＡ
３０１３  ＣＰＵ
３０２    電源遮断検出回路
３０３    電圧保持回路
４０１    ＦＰＧＡ
４０１３  ＣＰＵ
４０２    ＲＯＭ制御信号切替回路
４０３    起動ＲＯＭ選択レジスタ
Ｓ１０１  リセット信号
Ｓ１０２  コンフィグレーション開始信号
Ｓ１０３  コンフィグレーションデータ読込み信号
Ｓ１０４  コンフィグレーション完了信号
Ｓ１０５  コンフィグレーションエラー検出信号
Ｓ１０６  ＲＯＭアクセス信号
Ｓ１０７  ＲＯＭ選択信号
Ｓ１０８  コンフィグレーション成功ＲＯＭ通知信号
Ｓ１０９  コンフィグレーションＲＯＭ１アクセス信号
Ｓ１１０  コンフィグレーションＲＯＭ２アクセス信号
Ｓ１１１  ＦＰＧＡリセット信号
Ｓ２０１  ＦＰＧＡ起動確認レジスタ書込み信号
Ｓ２０２  ＦＰＧＡ起動確認レジスタ読込み信号
Ｓ３０１  電源遮断検出信号
Ｓ４０１  起動ＲＯＭ選択レジスタ書込み信号
Ｓ４０２  起動ＲＯＭ選択レジスタ読込み信号
【図１】
0005685117.tif 000002
【図２】
0005685117.tif 000003
【図３】
0005685117.tif 000004
【図４】
0005685117.tif 000005
【図５】
0005685117.tif 000006
【図６】
0005685117.tif 000007
【図７】
0005685117.tif 000008
【図８】
0005685117.tif 000009
【図９】
0005685117.tif 000010
【図１０】
0005685117.tif 000011
【図１１】
0005685117.tif 000012
【図１２】
0005685117.tif 000013
【図１３】
0005685117.tif 000014