(57)【要約】【課題】複数の論理回路におけるプログラマブルデバイスを動作させたまま論理回路の更新を行う際の動作チェックを可能とすることを課題とする。【解決手段】格納されているデータが書き換えられることで、出力を変化させることができる論理回路１１８を複数有するとともに、論理回路１１８に格納されているデータを検査する検査回路１１４を有し、論理回路１１８のうち、所定の論理回路１１８において書き換えが行われている際に、書き換えが行われていない論理回路１１８において、検査回路１１４による検査が行われることを特徴とする。【選択図】図１
2017204664.tif 000002
【特許請求の範囲】
【請求項１】
格納されているデータが書き換えられることで、出力を変化させることができる論理回路を複数有するとともに、
前記論理回路に格納されているデータを検査する検査部を有し、
前記論理回路のうち、所定の論理回路において前記書き換えが行われている際に、前記書き換えが行われていない論理回路において、前記検査部による検査が行われる
ことを特徴とするプログラマブルデバイス。
【請求項２】
前記論理回路におけるデータの前記書き換えが行われていない時、それぞれの前記論理回路の出力を比較する比較部
を有することを特徴とする請求項１に記載のプログラマブルデバイス。
【請求項３】
前記プログラマブルデバイスは、２つの前記論理回路を有し、
当該２つの前記論理回路のうち、所定の論理回路の出力を出力する選択部を
有することを特徴とする請求項２に記載のプログラマブルデバイス。
【請求項４】
前記プログラマブルデバイスは、３つの前記論理回路を有し、
前記３つの前記論理回路のうち、１つの前記論理回路が書き換え中であり、２つの前記論理回路が書き換え前の状態である場合、及び、１つの前記論理回路が書き換え中で、２つの前記論理回路の書き換えが完了している状態である場合、前記比較部による比較が行われるが、前記検査部による検査は行われず、
１つの前記論理回路が書き換え中であるとともに、１つの前記論理回路が書き換え前の状態であり、かつ、１つの前記論理回路における前記書き換えが完了している状態である場合、前記比較部による比較は行われず、前記書き換え前の状態である前記論理回路のデータが、前記検査部によって検査される
ことを特徴とする請求項２に記載のプログラマブルデバイス。
【請求項５】
前記３つの前記論理回路の出力を選択して出力する選択部を有し、
前記選択部は、
前記３つの前記論理回路のすべてにおいて、書き換えが行われていない場合、前記３つの前記論理回路の出力の多数決に基づいて出力を行い、
前記３つの前記論理回路のうち、いずれかの前記論理回路において、前記書き換えが行われている場合、書き換えが行われていない前記論理回路のうち、所定の前記論理回路の出力が選択される
ことを特徴とする請求項４に記載のプログラマブルデバイス。
【請求項６】
前記選択部は、
前記書き換えが完了している前記論理回路と、前記書き換えが行われる前の前記論理回路とがある場合、前記書き換えが完了している前記論理回路の出力を優先する
ことを特徴とする請求項５に記載のプログラマブルデバイス。
【請求項７】
前記検査部は、
前記論理回路に書き込んだデータが変化していない否かの検査を行うことで、前記論理回路に格納されているデータを検査する
ことを特徴とする請求項１に記載のプログラマブルデバイス。
【請求項８】
前記論理回路に書き込んだデータが変化していない否かの検査は、ＣＲＣ（Cyclic Redundancy Check）チェックである
ことを特徴とする請求項７に記載のプログラマブルデバイス。
【請求項９】
前記論理回路に書き込んだデータが変化していない否かの検査は、ＥＣＣ（Error Correcting Code）チェックを行う
ことを特徴とする請求項７に記載のプログラマブルデバイス。
【請求項１０】
格納されているデータが書き換えられることで、出力を変化させることができる論理回路を複数有するとともに、
前記論理回路に格納されているデータを検査する検査部を有し、
前記論理回路のうち、所定の論理回路において前記書き換えが行われている際に、前記書き換えが行われていない論理回路において、前記検査部による検査が行われる
プログラマブルデバイスを備え、
外部装置からの入力を前記プログラマブルデバイスによって処理を行った後、前記処理の結果を出力する
ことを特徴とする制御装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路の書き換えが可能なプログラマブルデバイス及び該プログラマブルデバイスを備える制御装置の技術に関する。
【背景技術】
【０００２】
電力システムや産業システムでは、システムの制御にコントローラ（制御用コンピュータ）が使用される。コントローラは、各種センサを用いてシステムや周囲環境の状態を観測する。そして、コントローラは、計測した状態を基に制御条件を決定してモータ等のアクチュエータを操作することでシステムの制御を行う。コントローラにネットワーク機能を備えることにより、上位装置や遠隔地にあるサーバからの制御も可能になる。また、コントローラは、サーバのように計算機リソースにコストをかけることが困難である。そこで、コントローラとして、低コストであるマイクロコントローラ、ＤＳＰ（Digital Signal Processor）、ＦＰＧＡ（Field Programmable Gate Array）等が利用される。
【０００３】
マイクロコントローラは、メモリに記憶されている命令を読み出し、解読して実行するため、処理に時間がかかるが、プログラミングの自由度が高い。ＤＳＰは、積和演算等のある決まった計算を高速に処理できる。ＦＰＧＡは、ユーザが論理回路を書き換えることができ、ハードウェア処理による高速化が可能である。ＦＰＧＡでは、コントローラの電源投入後に、外部メモリに記憶されている構成データがＦＰＧＡに転送されることで、ＦＰＧＡのプログラミングが行われる。ここで、構成データとは、ＦＰＧＡの構成メモリであるＣＲＡＭ（Configuration Random Access Memory）に格納されるデータであり、具体的には、ルックアップテーブルである。
【０００４】
近年、ＦＰＧＡを動作させながら、論理回路の一部を書き換えることのできる再構成可能なＦＰＧＡも登場した。ここで、再構成とは、論理回路の一部を変更することである。
このようなＦＰＧＡでは、論理回路を二重化（もしくは多重化）することでＦＰＧＡが動作している最中でも自身の再構成が可能となる。ここで、ある論理回路の再構成は、書き換え対象以外の論理回路の動作には影響を与えない。このような再構成可能なＦＰＧＡを使えば、コントローラを止めずに、機能のアップデートが可能になるため、今後の活用に期待がかかっている。
【０００５】
さて、再構成可能なＦＰＧＡ（以下、単にＦＰＧＡと称する）は、構成データを保持するＣＲＡＭがＳＲＡＭ（Static Random Access Memory）で作られているＳＲＡＭ型ＦＰＧＡに分類される。ＳＲＡＭには、中性子線等の高エネルギー粒子が衝突すると、保持しているデータが反転するというソフトエラーの問題がある。ＣＲＡＭにソフトエラーが発生すると、論理回路機能が本来とは異なるものになり、動作が不正となってしまう。
【０００６】
このようなソフトエラーを検出する方法として、以下のような方法がある。まず、ＣＲＡＭを特定のアドレス範囲ごとにグループ化し、グループごとにＣＲＣ（Cyclic Redundancy Check）コードが付加される。そして、周期的に、ＣＲＡＭからグループの構成データとＣＲＣコードが読み出され、ＣＲＣチェックが行われる。
また、ソフトエラーを検出する方法として、論理回路を二重化し、マスタ／チェッカ方式で動作させ、マスタ回路とチェッカ回路の出力を常時比較する方法もある。この方法では、比較結果が一致すれば、マスタ回路とチェッカ回路は同一であり、どちらの回路も正しいと考えられる。一方、比較結果が不一致の場合、マスタ回路とチェッカ回路が異なっているため、どちらかが誤っていると考える。
【０００７】
特許文献１には、「ＬＡＮで接続され、それぞれがアクト系とスタンバイ系として動作する装置１と、これら装置１とＬＡＮ４を介して接続される信号制御部２とを具備し、前記装置１内には、パワーオン時にデバイスやＯＳの起動を行なうブート手段１ａと、ワークエリアとして、また転送データを一時的に使用し、またソフトウェアやデータベースを管理する機能を持つメモリ１ｂ〜１ｄと、を有し、アクト系装置１とスタンバイ系装置１とが、新版と旧版のソフトウェアを具備し、アクト系とスタンバイ系とで旧版と新版の切り替え運用を行なうように構成される」装置の二重化仮運用方法及び二重化システムが開示されている。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００７−２５７４４７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
ここで、マスタ／チェッカ方式で二重化（又は多重化）した論理回路を再構成するには、双方の論理回路が動作していないタイミングで行う必要がある。しかしながら、リアルタイム処理を行うコントローラは、処理を一時的に停止させることが困難である。
【００１０】
なお、特許文献１に記載の技術は、プログラムの更新中において、動作チェックを行うことができない。
【００１１】
このような背景に鑑みて本発明がなされたのであり、本発明は、複数の論理回路におけるプログラマブルデバイスを動作させたまま論理回路の更新を行う際の動作チェックを可能とすることを課題とする。
【課題を解決するための手段】
【００１２】
前記した課題を解決するため、本発明は、格納されているデータが書き換えられることで、出力を変化させることができる論理回路を複数有するとともに、前記論理回路に格納されているデータを検査する検査部を有し、前記論理回路のうち、所定の論理回路において前記書き換えが行われている際に、前記書き換えが行われていない論理回路において、前記検査部による検査が行われることを特徴とする。
その他の解決手段については、実施形態中において適宜記載する。
【発明の効果】
【００１３】
本発明によれば、複数の論理回路におけるプログラマブルデバイスを動作させたまま論理回路の更新を行う際の動作チェックを可能とすることができる。
【図面の簡単な説明】
【００１４】
【図１】第１実施形態に係るＦＰＧＡのハードウェア構成と、信号の流れとを示す図である。
【図２】第１実施形態に係る制御装置のハードウェア構成と、信号の流れとを示す図である。
【図３】第１実施形態に係るシステムのブロック図である。
【図４】第１実施形態に係るＦＰＧＡの簡略的な機能ブロック図である。
【図５】第１実施形態に係るＦＰＧＡの動作モードを表す表を示す図である。
【図６】第１実施形態に係る制御装置における全体フローチャートを示す図である。
【図７】第１実施形態に係るＦＰＧＡにおける再構成処理の手順を示すフローチャートである。
【図８】第２実施形態に係るＦＰＧＡの簡略的な機能ブロック図である。
【図９】第２実施形態に係るＦＰＧＡの動作モードを表す表を示す図である。
【図１０】第３実施形態に係るシステムを適用した風力発電装置の構成図である。
【発明を実施するための形態】
【００１５】
次に、本発明を実施するための形態（「実施形態」という）について、適宜図面を参照しながら詳細に説明する。
【００１６】
＜第１実施形態＞
（ＦＰＧＡ）
図１は、第１実施形態に係るＦＰＧＡのハードウェア構成と、信号の流れとを示す図である。
図１に示すＦＰＧＡ（プログラマブルデバイス）１０における論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂは、二重化した論理回路１１８で、論理回路Ｍ１１８ａの「Ｍ」はマスタ（Ｍａｓｔｅｒ）、論理回路Ｃ１１８ｂの「Ｃ」はチェッカ（Ｃｈｅｃｋｅｒ）の意味である。論理回路Ｍ１１８ａと、論理回路Ｃ１１８ｂとを総称して論理回路１１８と称することがある。
【００１７】
論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂは、同一の処理を同じタイミングで同期して実行する。そのため、論理回路Ｍ１１８ａの出力信号１３１ａ（１３１）と、論理回路Ｃ１１８ｂの出力信号１３１ｂ（１３１）は、クロックサイクル単位で値が一致する。
【００１８】
論理回路Ｍ１１８ａは、構成メモリとしてのＣＲＡＭＭ１１９ａ及び論理入出力回路Ｍ１２０ａを有している。同様に、論理回路Ｃ１１８ｂは、構成メモリとしてのＣＲＡＭＣ１１９ｂ及び論理入出力回路Ｃ１２０ｂを有している。ここで、ＣＲＡＭＭ１１９ａ及びＣＲＡＭＣ１１９ｂを総称して、ＣＲＡＭ１１９と適宜称する。また、論理入出力回路Ｍ１２０ａ及び論理入出力回路Ｃ１２０ｂを総称して、論理入出力回路１２０と適宜称する。
ＣＲＡＭ１１９には、論理回路１１８における入力と出力の関係が格納されているルックアップテーブルが格納されている。
【００１９】
ＣＲＡＭＭ１１９ａは、論理入出力回路Ｍ１２０ａの要素回路と接続されており、ＣＲＡＭＭ１１９ａのデータが書き換わると、論理回路Ｍ１１８ａの機能が変更される。
同様に、ＣＲＡＭＣ１１９ｂは、論理入出力回路Ｃ１２０ｂの要素回路と接続されており、ＣＲＡＭＣ１１９ｂのデータが書き換わると、論理回路Ｃ１１８ｂの機能が変更される。
すなわち、論理入出力回路１２０は、入力信号（デジタル信号６２）が入力されると、ＣＲＡＭ１１９に格納されているルックアップテーブルに従って、出力信号１３１（１３１ａ，１３１ｂ）を出力する。
具体的には、ＣＲＡＭ１１９のルックアップテーブルが書き換えられることで、論理回路１１８の構成が変更されることで、論理回路１１８の再構成が行われる。
【００２０】
具体的には、ＣＲＡＭ１１９はルックアップテーブルを格納しているＳＲＡＭであり、論理入出力回路１２０は、ＦＰＧＡ１０を構成するフリップフロップや、スイッチである。信号１４５ａ，１４５ｂ（１４５）は、ＣＲＡＭ１１９と、フリップフロップ、スイッチとの間を流れる信号である。
【００２１】
論理回路Ｍ１１８ａ及び論理回路Ｃ１１８ｂの再構成は、ＣＰＵ（Central Processing Unit）３０（図２参照）が、メモリ４０（図２参照）に記憶されているＦＰＧＡ１０の部分的な構成データをＦＰＧＡ１０に転送することで行われる。構成データはバス信号６４に含まれるデータである。なお、前記したように、構成データとは、ＣＲＡＭ１１９に格納されるルックアップテーブルのことである。
【００２２】
また、出力信号１３２は、選択回路（選択部）１１５が出力し、出力の確認等のために、論理入出力回路Ｍ１２０ａ及び論理入出力回路Ｃ１２０ｂへフィードバックされる信号である。なお、出力信号１３２は省略されてもよい。
【００２３】
ＦＰＧＡ１０がリセット信号６６を受け取ると、ＦＰＧＡ１０のレジスタが初期化される。初期化されるレジスタについては後記する。そして、リセット信号６６の出力が停止されると、ＦＰＧＡ１０が動作を開始する。バス信号６４には、再構成制御回路１１１に対して入力される構成データ、論理回路Ｍ１１８ａ、論理回路Ｃ１１８ｂに対して入力される制御信号、制御に必要なＣＲＡＭ１１９のアドレスを指定するアドレス信号等が含まれている。
【００２４】
符号６２はＡ／Ｄ（Analog/Digital）変換器２０（図２参照）から入力されるデジタル信号である。デジタル信号６２は、論理回路１１８（１１８ａ，１１８ｂ）への入力信号となる。
再構成制御回路１１１は、ＣＲＡＭ書き込み回路１１２、ＣＲＡＭ読み出し回路１１３、検査回路（検査部）１１４、選択回路１１５及び比較回路（比較部）１１６の制御を行う。
【００２５】
再構成制御回路１１１は、転送されてきたバス信号６４にＣＲＡＭ１１９への構成データが含まれていることを検出すると、それをＣＲＡＭ書き込み回路１１２に転送する（制御信号１３４）。
ＣＲＡＭ書き込み回路１１２は、再構成制御回路１１１から送られてきた構成データの書き込みアドレスを参照し、ＣＲＡＭＭ１１９ａ又はＣＲＡＭＣ１１９ｂに対して書き込みを行う（信号１４１ａ，１４１ｂ（１４１））。
【００２６】
選択回路１１５は、論理回路Ｍ１１８ａの出力信号１３１ａと、論理回路Ｃ１１８ｂの出力信号１３１ｂとを受け取ると、それらの出力信号１３１ａ，１３１ｂのうち、一方を選択し、バス信号６４及びアクチュエータ６（図２参照）への制御信号（ＦＰＧＡ１０による処理の結果）６３として出力する。バス信号６４として出力された選択回路１１５の出力はメモリ４０等に格納される。
論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂとの構成が同じであれば、選択回路１１５は論理回路Ｍ１１８ａの出力信号１３１ａを選択する。
【００２７】
比較回路１１６は、論理回路Ｍ１１８ａの出力信号１３１ａと、論理回路Ｃ１１８ｂの出力信号１３１ｂとをクロックサイクル単位で比較し、比較結果信号１３３を出力する。出力された比較結果信号１３３は、割り込み発生回路１１７に入力される。
論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂとの構成が同じであれば、比較回路１１６において、論理入出力回路Ｍ１２０ａの出力信号１３１ａと、論理入出力回路Ｃ１２０ｂの出力信号１３１ｂとを比較された結果は一致信号となる。
選択回路１１５及び比較回路１１６の制御は、再構成制御回路１１１から出力される制御信号１３６及び制御信号１３７により行われる。
【００２８】
論理回路１１８の再構成において、論理回路Ｍ１１８ａと、論理回路Ｃ１１８ｂとの双方が同時に書き換えられることはない。例えば、論理回路Ｍ１１８ａにおけるＣＲＡＭＭ１１９ａの内容が書き換えられた後、論理回路Ｃ１１８ｂにおけるＣＲＡＭＣ１１９ｂの内容が書き換えられる。
論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂとの、どちらか一方が再構成中のため、ＣＲＡＭＭ１１９ａとＣＲＡＭＣ１１９ｂが異なる構成となっている場合、選択回路１１５は再構成中ではない方の論理回路１１８の出力を選択する。また、論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂとの、どちらか一方が再構成中のため、ＣＲＡＭＭ１１９ａとＣＲＡＭＣ１１９ｂが異なる構成となっている場合、比較回路１１６は比較を行わない。
【００２９】
また、論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂとの、どちらか一方が再構成中のため、ＣＲＡＭＭ１１９ａとＣＲＡＭＣ１１９ｂが異なる構成となっている場合、ＣＲＡＭ読み出し回路１１３は、再構成中ではない方のＣＲＡＭ１１９に格納されている構成データ（ルックアップデータ）を読み出し（信号１４２ａ，１４２ｂ（１４２））、読み出した構成データを検査回路１１４に転送する（信号１４３）。なお、構成データには、ＣＲＣコードが予め付加されている。従って、ＣＲＡＭ読み出し回路１１３によって読みだされた構成データには、ＣＲＣコードが付加されている。
【００３０】
検査回路１１４は、ＣＲＡＭ読み出し回路１１３によって読みだされた構成データに付加されているＣＲＣコードに基づいてＣＲＣチェックを行い、ＣＲＣチェック結果信号１４４を割り込み発生回路１１７に入力する。割り込み発生回路１１７は、ＣＲＣチェック結果信号１４４がエラーを示す場合、ＣＰＵ３０に割り込み要求信号６５を出力する。
ＣＲＡＭ読み出し回路１１３及び検査回路１１４の制御は、再構成制御回路１１１から出力される制御信号１３５及び制御信号１３８により行われる。
【００３１】
割り込み発生回路１１７は、比較結果信号１３３が不一致を示す場合において、ＣＰＵ３０（図２参照）に対し、割り込み要求信号６５を出力する。割り込み要求信号６５を受信したＣＰＵ３０は、例えば、ＦＰＧＡ１０の動作を停止させ、上位装置４（図３）へのエラー通知を行う。
【００３２】
（制御装置）
図２は、第１実施形態に係る制御装置のハードウェア構成と、信号の流れとを示す図である。
制御装置１は、ＦＰＧＡ１０、Ａ／Ｄ変換器２０、ＣＰＵ３０、メモリ４０、通信ＬＳＩ（Large Scale Integration）５０等を有する。
Ａ／Ｄ変換器２０には、センサ５からのアナログ信号６１が入力される。そして、Ａ／Ｄ変換器２０は、このアナログ信号６１をデジタル信号６２に変換した後、変換したデジタル信号６２をＦＰＧＡ１０へ出力する。ＣＰＵ３０は、バス信号６４を介して、メモリ４０に記憶されている制御プログラムを実行する。制御装置１の電源投入後にＣＰＵ３０がメモリ４０に記憶されている構成データをバス信号６４によってＦＰＧＡ１０に転送する。ＦＰＧＡ１０は転送された構成データに従ってＣＲＡＭ１１９（１１９ａ，１１９ｂ；図１）を書き換える（論理回路１１８（図１）の再構成）ことにより、論理回路１１８（図１参照）における機能が決定する。ＦＰＧＡ１０に対する再構成のための構成データの転送が終了すると、ＣＰＵ３０は、ＦＰＧＡ１０にリセット信号６６を出力する。そして、ＣＲＡＭ１１９の書き換えが完了し、ＣＰＵ３０がリセット信号６６の出力を停止すると、ＦＰＧＡ１０は回路動作を開始する。
【００３３】
ＦＰＧＡ１０の各回路は、内部に制御用のレジスタ（不図示）を有している。ＣＰＵ３０は、バス信号６４に含まれている制御信号によってＦＰＧＡ１０のレジスタに対して書き込みを行うことができる。ＦＰＧＡ１０は、この制御用のレジスタの設定に従って動作する。また、ＦＰＧＡ１０は、バス信号６４に含まれている制御信号によって、メモリ４０に対する読み出し及び書き込みを行うことができる。さらに、ＦＰＧＡ１０は、動作における割り込み条件が成立すると（すなわち、図２における比較回路１１６からの比較結果信号１３３が不一致を示すか、検査回路１１４からのＣＲＣチェック結果信号１４４がエラーを示す場合）、ＣＰＵ３０に割り込み要求信号６５を出力する。
また、ＦＰＧＡ１０は制御信号６３をアクチュエータ６へ送信することによって、アクチュエータ６の制御を行う。
【００３４】
ＣＰＵ３０は、割り込み要求信号６５を受け取ると、メモリ４０に記憶されている割り込み処理プログラムを実行する。割り込み処理プログラムは、ＦＰＧＡ１０の動作を停止させ、上位装置４（図３）へのエラー通知等を行う。
通信ＬＳＩ５０は、通信処理装置２と通信を行う（通信用信号６７）。通信ＬＳＩ５０は、バス信号６４を介して受信したデータをメモリ４０に転送し、メモリ４０は転送されたデータを格納する。
ＣＰＵ３０又はＦＰＧＡ１０は、メモリ４０に転送されたデータに関する処理を行う。通信ＬＳＩ５０は、ＣＰＵ３０又はＦＰＧＡ１０メモリ４０に格納した処理結果のデータを読み出し、通信用信号６７として通信処理装置２に送信する。
【００３５】
（システム）
図３は、第１実施形態に係るシステムのブロック図である。
システムＺは、１つの上位装置４と、複数の制御装置１（本実施形態では２つ）とを有している。なお、図３において、上位装置４は１つとなっているが、２つ以上でもよい。
上位装置４と各制御装置１は、通信処理装置２を経由して、ネットワーク３に接続し、互いに通信可能である。
各制御装置１は、センサ５及びアクチュエータ６を有している。センサ５は、このセンサ５が搭載されている機器（不図示）の電圧、電流、温度、振動等を測定する。アクチュエータ６は、このアクチュエータ６が搭載されている機器（不図示）におけるリレーやモータ等である。
【００３６】
制御装置１はあらかじめ決められた周期に基づいて、センサ５のアナログ信号６１（図２参照）を取得し、デジタル変換し、内部に記憶している。上位装置４は、制御装置１からセンサ５のデータを通信により取得する。そして、上位装置４は、取得したデータを基に、システムＺ全体の制御を決定する。続いて、上位装置４は、決定した制御を制御装置１へ送信する。制御装置１は、受信した制御に基づいてアクチュエータ６を制御する。なお、本実施形態において、センサ５及びアクチュエータ６は、必須のものではない。
【００３７】
また、本実施形態において、通信は上位装置４と制御装置１の間、及び制御装置１同士の間で行われる。通信処理装置２は、上位装置４、制御装置１、及び他の通信処理装置２とネットワーク３によって接続されている。通信処理装置２は、パケットを受信すると、ヘッダを参照し、送信対象となっているポートからパケットを転送したり、パケットを廃棄したりする。
【００３８】
（二重化について）
図４は、第１実施形態に係るＦＰＧＡの簡略的な機能ブロック図である。
図４に示すように、ＦＰＧＡ１０では、論理回路１１８が論理回路Ｍ１１８ａと、論理回路Ｃ１１８ｂとで二重化している。
また、ＦＰＧＡ１０において、論理回路Ｍ１１８ａの出力信号１３１ａと論理回路Ｃ１１８ｂの出力信号１３１ｂとは、選択回路１１５と比較回路１１６に入力されている。なお、図４において、デジタル信号６２、制御信号６３及び比較結果信号１３３については、図１で説明済みであるので、ここでの説明を省略する。なお、図４において、検査回路１１４は図示省略してある。
【００３９】
図５は、第１実施形態に係るＦＰＧＡの動作モードを表す表を示す図である。適宜、図１及び図４を参照する。
図５に示す表において、「モード」は動作モードを示し、「書き込み対象」は構成データが書き込まれる対象を示している。「ＣＲＣチェック」は、ＣＲＣチェックが行われるか否かを示し、「選択」は論理回路１１８による出力選択が行われるか否かを示している。そして、「比較」は論理回路１１８の出力の比較が行われるか否かを示している。
つまり、以下において、「選択」とは、選択回路１１５による論理回路１１８の出力の選択のことである。また、「比較」とは、比較回路１１６による論理回路１１８の出力の比較である。そして、「ＣＲＣチェック」とは、検査回路１１４によるＣＲＣチェックである。
【００４０】
ここで、「モード１」は、ＦＰＧＡ１０の全体構成を行う動作モードであり、制御装置１が最初に起動したときに行われる動作モードである。例えば、この動作モードは、工場から出荷された後、初めて制御装置１に電源が入れられたときに行われるものである。図５に示すように、「モード１」において、書き込み対象は、全体、すなわち、ＣＲＡＭＭ１１９ａ及びＣＲＡＭＣ１１９ｂの双方に対して行われる。また、「モード１」において、ＣＲＣチェック、論理回路１１８の出力選択、論理回路Ｍ１１８ａの出力と論理回路Ｃ１１８ｂの出力との比較は行われない（「無」）。
【００４１】
「モード２」は、二重化モードである。「モード２」において、構成データの書き込み及びＣＲＣチェックは行われない（「無」）。また、ここでは、「モード２」において、論理回路１１８の出力として論理回路Ｍ１１８ａの出力が選択される、また、論理回路Ｍ１１８ａの出力と論理回路Ｃ１１８ｂの出力との比較が行われる（「有」）。なお、論理回路１１８の出力として、論理回路Ｃ１１８ｂの出力が選択されてもよい。
【００４２】
「モード３」は、論理回路Ｃ１１８ｂによる一重化モードである。「モード３」において、構成データの書き込み対象はＣＲＡＭＭ１１９ａである。また、「モード３」において、ＣＲＣチェックはＣＲＡＭＣ１１９ｂに対して行われる。そして、「モード３」において論理回路１１８の出力として論理回路Ｃ１１８ｂの出力が選択され、論理回路Ｍ１１８ａの出力と論理回路Ｃ１１８ｂの出力との比較は行われない（「無」）。
【００４３】
すなわち、「モード３」では、動作しているのが論理回路Ｃ１１８ｂのみであるので、論理回路１１８の出力比較は行うことができず、その代わりに、ＣＲＡＭＣ１１９ｂに対してＣＲＣチェックが行われることで、ＣＲＡＭＣ１１９ｂのチェックが行われる。また、動作しているのが論理回路Ｃ１１８ｂのみであるので、選択回路１１５は論理回路Ｃ１１８ｂの出力を選択することとなる。
【００４４】
「モード４」は、論理回路Ｍ１１８ａによる一重化モードである。「モード４」において、構成データの書き込みは、ＣＲＡＭＣ１１９ｂに対して行われる。また、「モード４」において、ＣＲＣチェックは、ＣＲＡＭＭ１１９ａに対して行われる。そして、「モード４」において、論理回路１１８の出力として論理回路Ｍ１１８ａの出力が選択され、論理回路Ｍ１１８ａの出力と論理回路Ｃ１１８ｂの出力との比較は行われない（「無」）。
【００４５】
すなわち、「モード４」では、動作しているのが論理回路Ｍ１１８ａのみであるので、論理回路１１８の出力比較は行うことができず、その代わりに、ＣＲＡＭＭ１１９ａに対してＣＲＣチェックが行われる。また、動作しているのが論理回路Ｍ１１８ａのみであるので、選択回路１１５は論理回路Ｍ１１８ａの出力を選択することとなる。
【００４６】
（全体フローチャート）
図６は、第１実施形態に係る制御装置における全体フローチャートを示す図である。適宜、図１及び図２を参照する。なお、図６の処理は、制御装置１が最初に起動したときに行われる処理である。例えば、工場から出荷された後、初めて制御装置１に電源が入れられたときに行われる処理である。
まず、ＣＰＵ３０は、ＦＰＧＡ１０の再構成制御回路１１１のレジスタに対し、以下の設定を行うことで、動作モードを図５における「モード１」とする（Ｓ１０１）。
（１）書き込み対象は「全体」である。すなわち、ＣＲＡＭＭ１１９ａ及びＣＲＡＭＣ１１９ｂの双方に対し、同時に構成データが書き込まれる。
（２）ＣＲＣチェックは行われない。
（３）選択回路１１５による出力選択は行われない。
（４）比較回路１１６による出力比較は行われない。
【００４７】
次に、ＣＰＵ３０は、メモリ４０に格納されているＦＰＧＡ１０の全体構成データを読み出し、ＦＰＧＡ１０に転送する（Ｓ１０２）。全体構成データは、ＣＲＡＭＭ１１９ａ及びＣＲＡＭＣ１１９ｂの双方に対し、同時に書き込まれる構成データであり、上位装置４等から送られてくるデータである。
そして、ＦＰＧＡ１０のＣＲＡＭ書き込み回路１１２は、全体構成データをＣＲＡＭＭ１１９ａ及びＣＲＡＭＣ１１９ｂに書き込む（Ｓ１０３）。ここで、ＣＲＡＭ書き込み回路１１２は、ＣＲＡＭＭ１１９ａ及びＣＲＡＭＣ１１９ｂの双方に対し、同時に全体構成データを書き込む。
【００４８】
次に、ＣＰＵ３０は、ＦＰＧＡ１０にリセット信号６６を出力する（Ｓ１０４）。これにより、ＦＰＧＡ１０におけるレジスタがリセットされる。ここで、リセットされるレジスタは、論理入出力回路Ｍ１２０ａ、論理入出力回路Ｃ１２０ｂ、選択回路１１５、比較回路１１６、割り込み発生回路１１７、ＣＲＡＭ読み出し回路１１３、検査回路１１４等のレジスタである。なお、リセットされるレジスタは、これらの回路に限らず、必要な回路のレジスタが適宜リセットされる。
【００４９】
そして、ＣＰＵ３０がリセット信号６６の出力を停止することで、ＦＰＧＡ１０は、レジスタのリセットを解除する（Ｓ１０５）。これにより、ＦＰＧＡ１０が動作を開始する。
このようにリセット解除することで、論理回路Ｍ１１８ａと論理回路Ｃ１１８ｂとの動作開始のタイミングを合わせることができる。
ＣＰＵ３０は、ＦＰＧＡ１０の再構成制御回路１１１のレジスタに対し、以下の設定を行うことで、動作モードを図５に示す「モード１」から「モード２」へ移行させる（Ｓ１０６）。
（１）書き込み対象はない。
（２）ＣＲＣチェックは行われない。
（３）選択回路１１５は、論理回路Ｍ１１８ａの出力を選択する。
（４）比較回路１１６による出力比較が行われる。
その後、ＦＰＧＡ１０は、二重化モードで動作を開始する（Ｓ１０７）。
【００５０】
（再構成処理）
図７は、第１実施形態に係るＦＰＧＡにおける再構成処理の手順を示すフローチャートである。ここで、図７に示される処理は、図６に示される処理の終了後、ＦＰＧＡ１０のアップデート時等で行われる処理である。適宜、図２及び図１を参照する。
なお、図７に示す処理は、例えば、１年に１回、１週間に１回又は１日に１回等といった周期で行われ、時間にして数分程度で終了するものである。
まず、通信ＬＳＩ５０（図２参照）は、上位装置４（図３参照）等から構成データを受信し（図７のＳ２０１）、メモリ４０に格納する。ここで受信される構成データは、論理回路１１８の再構成を行うための構成データである。
受信する構成データは、論理回路Ｍ１１８ａ（ＣＲＡＭＭ１１９ａ）の構成データと、論理回路Ｃ１１８ｂ（ＣＲＡＭＣ１１９ｂ）の構成データとの２つである。ここで、受信される構成データは、同じ内容を有している。
【００５１】
そして、ＣＰＵ３０は、メモリ４０に論理回路１１８の構成データが格納されたことを検知すると、ＦＰＧＡ１０の設定を行う。
ここで、論理回路１１８の更新は、論理回路Ｍ１１８ａ、論理回路Ｃ１１８ｂの順番に行われるものとする。これは、設計者等によって予め決められているものである。従って、動作モードが一致していれば、論理回路Ｃ１１８ｂ、論理回路Ｍ１１８ａの順に更新されてもよい。
【００５２】
ステップＳ２０２において、ＣＰＵ３０は、ＦＰＧＡ１０の再構成制御回路１１１のレジスタに対し、以下の設定を行うことで、図５に示す「モード２」から「モード３」へ動作モードを移行する（Ｓ２０２）。
（１）書き込み対象はＣＲＡＭＭ１１９ａである。
（２）ＣＲＡＭＣ１１９ｂに対して、ＣＲＣチェックが行われる（ＣＲＡＭ１１９ａに対するＣＲＣチェックは無効）。
（３）選択回路１１５は論理回路Ｃ１１８ｂの出力を選択する。
（４）比較回路１１６による出力比較は行われない。
【００５３】
次に、ＦＰＧＡ１０は、論理回路Ｃ１１８ｂによる一重化モードで動作を開始する（Ｓ２０３）。すなわち、ＦＰＧＡ１０では、論理回路Ｃ１１８ｂのみが動作し、ＣＲＡＭＭ１１９ａが書き換えられる。また、検査回路１１４は、ＣＲＡＭＣ１１９ｂに対してＣＲＣチェックを行う。
【００５４】
続いて、ＣＰＵ３０は、メモリ４０に格納されているＣＲＡＭＭ１１９ａの構成データを読み出し、読みだした構成データをＦＰＧＡ１０に転送する（Ｓ２０４）。
さらに、ＦＰＧＡ１０のＣＲＡＭ書き込み回路１１２は、転送されてきた構成データをＣＲＡＭＭ１１９ａに書き込む（Ｓ２０５）。
そしてＣＰＵ３０は、ＦＰＧＡ１０のＣＲＡＭＭ１１９ａの再構成が終了したか否かを判定する（Ｓ２０６）。
ステップＳ２０６の結果、ＣＲＡＭＭ１１９ａの再構成が終了していない場合（Ｓ２０６→Ｎｏ）、ＣＰＵ３０はステップＳ２０６へ処理を戻す。
【００５５】
ステップＳ２０６の結果、ＣＲＡＭＭ１１９ａの再構成が終了している場合（Ｓ２０６→Ｙｅｓ）、ＣＰＵ３０は、ＦＰＧＡ１０の再構成制御回路１１１のレジスタに対し、以下の設定を行うことで、図５に示す「モード３」から「モード４」へ動作モードを移行する（Ｓ２１１）。
（１）書き込み対象はＣＲＡＭＣ１１９ｂである。
（２）ＣＲＡＭ１１９ａに対して、ＣＲＣチェックが行われる（ＣＲＡＭＣ１１９ｂに対するＣＲＣチェックは無効）。
（３）選択回路１１５は論理回路Ｍ１１８ａの出力を選択する。
（４）比較回路１１６による出力比較は行われない。
【００５６】
次に、ＦＰＧＡ１０は、論理回路Ｍ１１８ａによる一重化モードで動作を開始する（Ｓ２１２）。すなわち、ＦＰＧＡ１０では、論理回路Ｍ１１８ａのみが動作し、ＣＲＡＭＣ１１９ｂが書き換えられる。また、検査回路１１４は、ＣＲＡＭＭ１１９ａに対してＣＲＣチェックを行う。
【００５７】
続いて、ＣＰＵ３０は、メモリ４０に格納されているＣＲＡＭＣ１１９ｂの構成データを読み出し、読み出した構成データをＦＰＧＡ１０に転送する（Ｓ２１３）。
そして、ＦＰＧＡ１０のＣＲＡＭ書き込み回路１１２は、転送された構成データをＣＲＡＭＣ１１９ｂに書き込む（Ｓ２１４）。
さらに、ＣＰＵ３０は、ＦＰＧＡ１０のＣＲＡＭＣ１１９ｂの再構成が終了したか否かを判定する（Ｓ２１５）。
ステップＳ２１５の結果、ＣＲＡＭＣ１１９ｂの再構成が終了していない場合（Ｓ２１５→Ｎｏ）、ＣＰＵ３０はステップＳ２１５へ処理を戻す。
【００５８】
ステップＳ２１５の結果、ＣＲＡＭＣ１１９ｂの再構成が終了している場合（Ｓ２１５→Ｙｅｓ）、ＣＰＵ３０は、ＦＰＧＡ１０の再構成制御回路１１１のレジスタに対し、以下の設定を行うことで、図５に示す「モード４」から「モード２」（二重化モード）へ動作モードを移行する（Ｓ２２１）。
（１）書き込み対象はない。
（２）ＣＲＣチェックは行われない。
（３）選択回路１１５は、論理回路Ｍ１１８ａの出力を選択する。
（４）比較回路１１６による出力比較が行われる。
その後、ＦＰＧＡ１０は、二重化モードで動作を開始する（Ｓ２２２）。
【００５９】
なお、本実施形態では、図７のステップＳ２０１において、論理回路Ｍ１１８ａ（ＣＲＡＭＭ１１９ａ）の構成データと、論理回路Ｃ１１８ｂ（ＣＲＡＭＣ１１９ｂ）の構成データの２つを受信しているが、これに限らない。例えば、ステップＳ２０１において、論理回路Ｍ１１８ａ（ＣＲＡＭＭ１１９ａ）の構成データを受信し、ステップＳ２１１の前で論理回路Ｃ１１８ｂ（ＣＲＡＭＣ１１９ｂ）の構成データを受信するようにしてもよい。
【００６０】
論理回路１１８を二重化したＦＰＧＡ１０において、論理回路１１８の再構成中ではマスタ／チェッカ方式による論理回路１１８のチェックができず、信頼性が低下しまう。本実施形態に示すＦＰＧＡ１０によれば、二重化した論理回路１１８のうち、再構成処理が行われていないＣＲＡＭ１１９に対して、ＣＲＣチェックを行うことで、再構成中における論理回路１１８の出力に対する信頼性を向上させることができる。
【００６１】
一般に、出力比較による出力チェックは、比較している論理回路１１８の出力が同じであれば、即、エラーを検出できる。これに対し、ＣＲＣチェックは、ＣＲＡＭ１１９の構成データをグループ毎に読み出し、順にすべてのグループについてＣＲＣチェックを行わなければならず、エラー検出に要する検出時間が出力比較による出力チェックよりもかかる。なお、前記したように、ＣＲＣコードは、グループ毎に分けられた構成データに対して、グループ毎に付加されている。
【００６２】
第１実施形態では、ＦＰＧＡ１０が動作している時間の大半を占める二重化モードでは、比較回路１１８による出力チェックを行うことで、動作チェックの即時性を高めることができる。
また、選択回路１１５を有することにより、二重化モードでＦＰＧＡ１０が動作している際において出力を１つにすることができ、制御装置１（図２参照）の動作を安定させることができる。
【００６３】
そして、再構成中におけるＣＲＣチェックの結果、エラーが検出された場合、運用者はシステムＺ（図３参照）の運用を停止させる等の安全措置をとることができ、システムＺの信頼性を向上させることができる。すなわち、近年のインフラストラクチャ業界では、ネットワーク機能や、ストレージ機能等のハードウェア資源を仮想化し、ソフトウェアで制御するＳＤＸ(Software-Defined Anything)の動きが始まっている。本実施形態によれば、このようなＳＤＸ技術におけるネットワーク機能や、ストレージ機能の高性能化に欠かせないプログラマブルデバイスを用いて、信頼性のレベルを維持しつつ、論理回路１１８のアップデートを可能とすることができる。
【００６４】
＜第２実施形態＞
次に、図８及び図９を参照して、本発明の第２実施形態を説明する。第２実施形態では、論理回路１１８を３重化したＦＰＧＡ１０ａについて説明する。
図８は、第２実施形態に係るＦＰＧＡの簡略的な機能ブロック図である。
ＦＰＧＡ１０ａでは、論理回路１１８が論理回路Ａ１１８Ａ、論理回路Ｂ１１８Ｂ及び論理回路Ｄ１１８Ｄとして３重化している。
そして、ＦＰＧＡ１０ａにおいて、論理回路Ａ１１８Ａの出力信号１３１Ａと、論理回路Ｂ１１８Ｂの出力信号１３１Ｂと、論理回路Ｄ１１８Ｄの出力信号１３１Ｄは、選択回路１１５と比較回路１１６に入力されている。また、検査回路１１４には、ＣＲＡＭ読み出し回路１１３によって読み出されたＣＲＡＭＤ１１９Ｄの構成データ（信号１４２，１４３）が入力されている。後記するように、第２実施形態の例では、ＣＲＡＭＤ１１９Ｄの構成データのみが検査回路１１４に入力されていればよい。以下において、「選択」とは、選択回路１１５による論理回路１１８の出力の選択のことである。また、「比較」とは、比較回路１１６による論理回路１１８の出力の比較である。そして、「ＣＲＣチェック」とは、検査回路１１４によるＣＲＣチェックである。
【００６５】
なお、図８において、デジタル信号６２、制御信号６３及び比較結果信号１３３については、図１におけるものと同様であるので、ここでの説明を省略する。
また、論理回路Ａ１１８ＡにはＣＲＡＭＡ１１９Ａ（１１９）が搭載され、論理回路Ｂ１１８ＢにはＣＲＡＭＢ１１９Ｂ（１１９）が搭載され、論理回路Ｄ１１８ＤにはＣＲＡＭＤ１１９Ｄ（１１９）が搭載されている。
なお、論理回路Ａ１１８Ａ、論理回路Ｂ１１８Ｂ及び論理回路Ｄ１１８Ｄの間に、第１実施形態のようなマスタ、チェッカの区別はない。
【００６６】
図９は、第２実施形態に係るＦＰＧＡの動作モードを表す表を示す図である。適宜、図１及び図８を参照する。また、図９における表示おいて、各項目は図５と同様であるので、ここでの説明は省略する。
「モード１」は、ＦＰＧＡ１０の全体構成を行う動作モードである。「モード１」において、構成データの書き込みは、ＣＲＡＭＡ１１９Ａと、ＣＲＡＭＢ１１９Ｂと、ＣＲＡＭＤ１１９Ｄに対して、すなわち、ＣＲＡＭ１１９全体に対して行われる。また、ＣＲＣチェック、論理回路１１８の出力の選択、論理回路Ａ１１８Ａ、論理回路Ｂ１１８Ｂ、論理回路Ｄ１１８Ｄの出力に対する比較は行われない（「無」）。なお、「モード１」は制御装置１が最初に起動したときに行われる処理である。例えば、工場から出荷された後、初めて制御装置１に電源が入れられたときに行われる処理である。
【００６７】
「モード２」は、３重化モードである。「モード２」において、ＣＲＡＭ１１９への構成データの書き込みと、ＣＲＣチェックは行われない（「無」）。また、「モード２」において、論理回路１１８の出力の選択は、論理回路Ａ１１８Ａ、論理回路Ｂ１１８Ｂ、論理回路Ｄ１１８Ｄの多数決結果となる。そして、「モード２」において、３つの論理回路Ａ１１８Ａ、論理回路Ｂ１１８Ｂ、論理回路Ｄ１１８Ｄの出力に対して比較が行われる（「有」）。
【００６８】
「モード３」は、論理回路Ｂ１１８Ｂと論理回路Ｄ１１８Ｄによる二重化モードである。「モード３」において、ＣＲＡＭ１１９への書き込みは、ＣＲＡＭＡ１１９Ａに対して行われる。また、「モード３」において、ＣＲＣチェックは行われない（「無」）。そして、「モード３」において、論理回路１１８の出力として論理回路Ｂ１１８Ｂの出力が選択される。さらに、論理回路Ｂ１１８Ｂの出力と論理回路Ｄ１１８Ｄの出力との比較が行われる（「有」）。
【００６９】
「モード３」では、ＣＲＡＭＡ１１９Ａが書き込み中であり、ＣＲＡＭＢ１１９Ｂ及びＣＲＡＭＤ１１９Ｄは書き込み前の状態である。このような場合、論理回路Ｂ１１８Ｂと論理回路Ｄ１１８Ｄとの出力の比較を行うことができるため、ＣＲＣチェックは行われず、論理回路Ｂ１１８Ｂ及び論理回路Ｄ１１８Ｄの出力とが比較されることでＦＰＧＡ１０ａの出力（動作）がチェックされる。また、選択回路１１５は、論理回路Ｂ１１８Ｂの出力を選択する。なお、ここで、選択回路１１５が選択する出力は設計者が適宜設定することができるものであり、論理回路Ｄ１１８Ｄの出力が選択されてもよい。
【００７０】
「モード４」は、論理回路Ｄ１１８Ｄによる一重化モードである。「モード４」において、構成データの書き込みは、ＣＲＡＭＢ１１９Ｂに対して行われる。また、「モード４」において、ＣＲＣチェックは、ＣＲＡＭＤ１１９Ｄに対して行われる。そして、「モード４」において、論理回路１１８の出力は、論理回路Ｄ１１８Ｄの出力が選択され、論理回路Ａ１１８Ａ、論理回路Ｂ１１８Ｂ、論理回路Ｄ１１８Ｄの出力に対する比較は行われない（「無」）。
【００７１】
「モード４」では、ＣＲＡＭＡ１１９Ａが書き込み完了の状態であり、ＣＲＡＭＢ１１９Ｂが書き込み中であり、ＣＲＡＭＤ１１９Ｄが書き込み前の状態である。このような状態では、動作可能な論理回路Ａ１１８Ａと、論理回路Ｄ１１８Ｄとの出力が異なる可能性があるため、論理回路Ａ１１８Ａと論理回路Ｄ１１８Ｄとの比較で出力チェックを行うことはできない。また、書き込み後のＣＲＡＭＡ１１９Ａ、及び、書き込み前のＣＲＡＭＤ１１９Ｄのうち、信頼性が高いのは書き込み前のＣＲＡＭＤ１１９Ｄである。従って、選択回路１１５は論理回路Ｄ１１８Ｄの出力を選択し、検査回路１１４はＣＲＡＭＤ１１９Ｄに対してＣＲＣチェックを行い、ＣＲＣチェック結果信号１４４を出力する。
【００７２】
「モード５」は、論理回路Ａ１１８Ａと論理回路Ｂ１１８Ｂによる二重化モードである。「モード５」において、書き込みはＣＲＡＭＤ１１９Ｄに対して行われる。また、「モード５」において、ＣＲＣチェックは行われない（「無」）。そして、「モード５」において、論理回路１１８の出力として論理回路Ａ１１８Ａの出力が選択される。また、論理回路Ａ１１８Ａの出力と論理回路Ｂ１１８Ｂの出力とが比較される（「有」）。
【００７３】
「モード５」では、ＣＲＡＭＡ１１９Ａ及びＣＲＡＭＢ１１９Ｂが書き込み完了の状態であり、ＣＲＡＭＤ１１９Ｄが書き込み中である。このような場合、論理回路Ａ１１８Ａと論理回路Ｂ１１８Ｂとの出力の比較を行うことができるため、ＣＲＣチェックは行われず、論理回路Ａ１１８Ａ及び論理回路Ｂ１１８Ｂの出力が比較されることでＦＰＧＡ１０ａの出力がチェックされる。また、選択回路１１５は、論理回路Ａ１１８Ａの出力を選択する。なお、ここで、選択回路１１５が選択する出力は設計者が適宜設定することができるものであり、論理回路Ｂ１１８Ｂの出力が選択されてもよい。
【００７４】
このように、第２実施形態では、「モード４」のみがＣＲＣチェックを行うため、図８に示すように、検査回路１１４はＣＲＡＭＤ１１９Ｄの構成データを取得するようにすればよい。
【００７５】
このように三重化を行うことで、再構成を行っている時間のうち、およそ６６％で比較を行うことができる。すなわち、第１実施形態では再構成を行っている間は、すべてＣＲＣチェックが行われることになるが、第２実施形態では、図９において再構成が行われている動作モード「モード３」〜「モード５」のうち、「モード３」及び「モード５」で比較回路１１６による論理回路１１８の出力比較を行うことができる。すなわち、再構成を行っている時間のうち２／３（およそ６６％）の時間で論理回路１１８の出力比較を行うことができる。
【００７６】
一般に、出力比較による出力チェックは、比較している論理回路１１８の出力が同じであれば、即、エラーを検出できる。これに対し、ＣＲＣチェックは、ＣＲＡＭ１１９の構成データをグループ毎に読み出し、順にすべてのグループについてＣＲＣチェックを行わなければならず、エラー検出に要する検出時間が出力比較による出力チェックよりもかかる。なお、前記したように、ＣＲＣコードは、グループ毎に分けられた構成データに対して、グループ毎に付加されている。
このように、出力比較による出力チェックは、ＣＲＣチェックよりもエラー検出の即時性に優れている。従って、第２実施形態に係る制御装置１は第１実施形態に係る制御装置１よりも即時性にすぐれた動作チェックを行うことができる。
【００７７】
また、第２実施形態に係るＦＰＧＡ１０では、「モード４」において、書き換えが完了したＣＲＡＭＡ１１９Ａと、書き換え中のＣＲＡＭＢ１１９Ｂと、書き換え前のＣＲＡＭＤ１１９Ｄとが混在している場合、選択回路１１５は信頼性の高い論理回路Ｄ１１８Ｄの出力を選択する。このようにすることで、ＦＰＧＡ１０ａは、信頼性の向上を図ることができる。
そして、選択回路１１５を有することにより、二重化モードでＦＰＧＡ１０ａが動作している際において出力を１つにすることができ、制御装置１（図２参照）の動作を安定させることができる。また、三重化モードでは、３つの論理回路１１８の出力の多数決を出力とすることで、三重化モードでＦＰＧＡ１０ａが動作している際において出力を１つにすることができ、制御装置１（図２参照）の動作を安定させることができる。
【００７８】
なお、第２実施形態における制御装置１で行われる論理回路更新処理は、図７に示す処理を三重化したものとすればよい。以下の動作モードは、図９に示す動作モードである。
すなわち、まず、ＦＰＧＡ１０ａは、図６の全体フローチャートの最後に三重化モード（「モード２」）で動作を開始する。
その後、ＦＰＧＡ１０ａが構成データを受信すると（図７のステップＳ２０１に相当）、ＣＰＵ３０は、ＦＰＧＡ１０ａの再構成制御回路１１１のレジスタに対し、動作モードを「モード２」から「モード３」へ移行する設定を行う。その後、ＦＰＧＡ１０ａは、論理回路Ｂ１１８Ｂ及び論理回路Ｄ１１８Ｄの二重化モードで動作し、ＣＲＡＭＡ１１９Ａの再構成が行われる。
【００７９】
そして、ＣＰＵ３０は、ＣＲＡＭＡ１１９Ａの再構成が終了したことを確認すると、ＣＰＵ３０は、ＦＰＧＡ１０ａの再構成制御回路１１１のレジスタに対し、動作モードを「モード３」から「モード４」へ移行する設定を行う。その後、ＦＰＧＡ１０ａは、論理回路Ｄ１１８Ｄの一重化モードで動作し、ＣＲＡＭＢ１１９Ｂの再構成が行われる。
【００８０】
さらに、ＣＰＵ３０は、ＣＲＡＭＢ１１９Ｂの再構成が終了したことを確認すると、ＣＰＵ３０は、ＦＰＧＡ１０ａの再構成制御回路１１１のレジスタに対し、動作モードを「モード４」から「モード５」へ移行する設定を行う。その後、ＦＰＧＡ１０ａは、論理回路Ａ１１８Ａ及び論理回路Ｂ１１８Ｂの二重化モードで動作し、ＣＲＡＭＤ１１９Ｄの再構成が行われる。
【００８１】
そして、ＣＰＵ３０は、ＣＲＡＭＤ１１９Ｄの再構成が終了したことを確認すると、ＣＰＵ３０は、ＦＰＧＡ１０ａの再構成制御回路１１１のレジスタに対し、動作モードを「モード５」から「モード２」へ移行する設定を行う。その後、ＦＰＧＡ１０ａは、三重化モードで動作する。
【００８２】
なお、図９に示す各動作モードは、ＣＲＡＭＡ１１９Ａ→ＣＲＡＭＢ１１９Ｂ→ＣＲＡＭＤ１１９Ｄの順に再構成が行われることを想定しているが、再構成の順番は、これに限らない。
つまり、再構成が行われている間において、
（１）最初のＣＲＡＭ１１９において再構成が行われている間、ＣＲＣチェックは行われない。また、選択回路１１５は再構成が行われていない論理回路１１８のうち、一方の論理回路１１８の出力を選択する。そして、比較回路１１６は再構成が行われていない論理回路１１８の出力比較を行う（図９の「モード３」に相当）。
【００８３】
（２）２番目のＣＲＡＭ１１９において再構成が行われている間、再構成が行われていないＣＲＡＭ１１９についてＣＲＣチェックが行われる。また、選択回路１１５は、再構成が行われていない論理回路１１８うち、一方の論理回路１１８の出力を選択する。ＣＲＣチェック及び出力選択の対象は、再構成が、まだ行われていない論理回路１１８が望ましい。そして、比較回路１１６による出力比較は行われない（図９の「モード４」に相当）。
【００８４】
（３）３番目のＣＲＡＭ１１９において再構成が行われている間、ＣＲＣチェックは行われない。また、選択回路１１５は再構成が行われていない論理回路１１８のうち、一方の論理回路１１８の出力を選択する。そして、比較回路１１６は再構成が行われていない論理回路１１８の出力比較を行う（図９の「モード５」に相当）。
【００８５】
＜第３実施形態＞
図１０は、第３実施形態に係るシステムを適用した風力発電装置の構成図である。
風力発電装置４００は、大きく４つの部分を含んで構成されている。１つめは、風を受けて回転する３枚のブレード４０１である。２つめは、ブレード４０１が取り付けられているロータヘッド４０２である。３つめは、増速機４０７や発電機４０９を収納するナセル４０３である。４つめは、ナセル４０３を支えるタワー４０４である。
【００８６】
ブレード４０１が風を受けて回転すると、ロータ軸４０５を通じて、増速機４０７でロータ軸４０５の回転が増幅される。軸受け４０６は、ロータ軸４０５を回転自在に支持する。増速機４０７の出力軸４０８は、発電を行う発電機４０９に接続される。振動センサ４１０は、軸受け４０６や発電機４０９に取り付けられ、出力信号がケーブル４１１を通じて状態監視装置４１２に伝達される。
【００８７】
状態監視装置４１２は、収集した振動センサ４１０の信号をデータ化する。振動センサ４１０のデータは、状態監視装置４１２の中で異常検出を行うための信号処理が行われる。あるいは、状態監視装置４１２が、通信ケーブル４１３を通じて、振動センサ４１０のデータをタワー４０４の下にある制御装置４１４に送る。制御装置４１４は、ケーブル４１５及びネットワーク３（図３参照）を介して、上位装置４（図３参照）や遠隔地にあるサーバに振動センサ４１０のデータを送って、解析を行わせることもできる。解析の結果、風力発電装置４００の機器に劣化や、故障の前兆がみられれば、その機器を交換する等といった、Ｏ＆Ｍ（Operation & Maintenance）を行うことができる。
【００８８】
図１０では、風力発電装置４００に本実施形態を適用した例を示したが、本実施形態に係る制御装置１の適用は、これに限らない。
【００８９】
本実施形態に係る制御装置１（図３参照）は、図１０の状態監視装置４１２に相当する。また、振動センサ４１０が図３のセンサ５に相当する。なお、図１０では、図３のアクチュエータ６に相当する構成は図示していない。この場合、状態監視装置４１２に再構成可能なＦＰＧＡ１０（図１参照）を使用して信号処理を行わせ、論理回路１１８（図１参照）を二重化してソフトエラーを検出できるようにする。また、制御装置１は、ネットワーク３（図３参照）を経由して、論理回路１１８のアップデートデータを入手し、二重化した論理回路１１８を再構成により動作させながら更新する。
【００９０】
本実施形態に係る制御装置１は、図１０に示す風力発電装置４００の他にも変電所内通信等に適用することが可能である。
また、本実施形態では、一重化処理の際におけるＣＲＡＭ１１９のチェック方法として、ＣＲＣチェックが行われているが、これに限らず、ＥＣＣ（Error Correcting Code）チェックが用いられてもよい。ＣＲＣチェックはチェックに必要なデータの容量がＥＣＣチェックよりも少なくてすみ、ＥＣＣチェックは生じた誤りを訂正することができる。
【００９１】
また、本実施形態では、原則として論理回路１１８の優先順位を定義していないが、複数の論理回路１１８の間の優先順位を、論理回路１１８の重要度に応じて予め決定しておいてもよい。この場合、例えば、制御装置１から検査回路１１４におけるＣＲＣチェックによるエラー情報を受信した上位装置４が、エラーを検出した論理回路１１８の重要度に応じて異なった表示をしてもよい。このようにすることにより、ユーザは、緊急にＦＰＧＡ１０，１０ａの交換を行うべきか否かを判断することができる。
【００９２】
さらに、論理回路１１８を細分化し、細分化した論理回路毎に出力の選択、比較、ＣＲＣチェックが行われてもよい。例えば、図１の論理入出力回路Ｍ１２０ａを前段の回路と、後段の回路とに分け、さらに、論理入出力回路Ｃ１２０ｂを前段の回路と、後段の回路とに分ける。そして、論理入出力回路Ｍ１２０ａを前段の回路の出力と、論理入出力回路Ｃ１２０ｂを前段の回路の出力を入力信号とする選択回路１１５及び比較回路１１６が設けられる。同様に、論理入出力回路Ｍ１２０ａを後段の回路の出力と、論理入出力回路Ｃ１２０ｂを後段の回路の出力を入力信号とする選択回路１１５及び比較回路１１６が設けられる。このように論理回路１１８を細分化することで、１つ１つの論理回路１１８の規模が小さくなり、再構成の時間を短くすることができる。
【００９３】
また、論理回路１１８を細分化することで、信頼性を必要とする重要度の高い部分と、それほど信頼性を必要としない重要度の低い部分とに分けることができる。そして、重要度の高い部分に該当するＣＲＡＭ１１９の部分のみについてＣＲＣチェックを行ったり、重要度の高い部分にエラーが検出された場合、優先的に再構成が行われたりする等、重要度に応じた対応を行うことができる。
【００９４】
本発明は前記した実施形態に限定されるものではなく、様々な変形例が含まれる。例えば、前記した実施形態は本発明を分かりやすく説明するために詳細に説明したものであり、必ずしも説明したすべての構成を有するものに限定されるものではない。また、ある実施形態の構成の一部を他の実施形態の構成に置き換えることが可能であり、ある実施形態の構成に他の実施形態の構成を加えることも可能である。また、各実施形態の構成の一部について、他の構成の追加・削除・置換をすることが可能である。
【００９５】
図１に示す各構成、機能等は、ＣＰＵ３０等のプロセッサがそれぞれの機能を実現するプログラムを解釈し、実行することによりソフトウェアで実現してもよい。例えば、図１に示す再構成制御回路１１１、ＣＲＡＭ書き込み回路１１２、ＣＲＡＭ読み出し回路１１３、検査回路１１４、選択回路１１５、比較回路１１６及び割り込み発生回路１１７がソフトウェアによって実現されてもよい。各機能を実現するプログラム、テーブル、ファイル等の情報は、ＨＤ（Hard Disk）に格納すること以外に、メモリ４０や、ＳＳＤ（Solid State Drive）等の記録装置、又は、ＩＣ（Integrated Circuit）カードや、ＳＤ（Secure Digital）カード、ＤＶＤ（Digital Versatile Disc）等の記録媒体に格納することができる。
また、各実施形態において、制御線や情報線は説明上必要と考えられるものを示しており、製品上必ずしもすべての制御線や情報線を示しているとは限らない。実際には、ほとんどすべての構成が相互に接続されていると考えてよい。
【符号の説明】
【００９６】
１      制御装置
２      通信処理装置
３      ネットワーク
４      上位装置
５      センサ
６      アクチュエータ
１０，１０ａ  ＦＰＧＡ（プログラマブルデバイス）
２０    Ａ／Ｄ変換器
３０    ＣＰＵ
４０    メモリ
５０    通信ＬＳＩ
６３    制御信号（処理の結果）
１１１  再構成制御装置
１１２  ＣＲＡＭ書き込み装置
１１３  ＣＲＡＭ読み出し装置
１１４  検査回路（検査部）
１１５  選択回路（選択部）
１１６  比較回路（比較部）
１１７  割り込み発生回路
１１８  論理回路
１１８ａ  論理回路Ｍ
１１８ｂ  論理回路Ｃ
１１８Ａ  論理回路Ａ
１１８Ｂ  論理回路Ｂ
１１８Ｄ  論理回路Ｄ
１１９  ＣＲＡＭ（構成メモリ）
１１９ａ  ＣＲＡＭＭ
１１９ｂ  ＣＲＡＭＣ
１１９Ａ  ＣＲＡＭＡ
１１９Ｂ  ＣＲＡＭＢ
１１９Ｄ  ＣＲＡＭＤ
１２０  論理入出力回路
１２０ａ  論理入出力回路Ｍ
１２０ｂ  論理入出力回路Ｃ
【図１】
2017204664.tif 000003
【図２】
2017204664.tif 000004
【図３】
2017204664.tif 000005
【図４】
2017204664.tif 000006
【図５】
2017204664.tif 000007
【図６】
2017204664.tif 000008
【図７】
2017204664.tif 000009
【図８】
2017204664.tif 000010
【図９】
2017204664.tif 000011
【図１０】
2017204664.tif 000012