(57)【要約】【課題】論理回路を３重化せずに２重化された構成であっても、演算結果不一致時に正常な演算結果を得ることを可能とし、正常な演算結果を得るために費やす時間を短縮する。【解決手段】制御部７００は、演算結果比較部５００により２つの論理回路からの２つの演算結果が一致しないと判定されるまでは、ＣＲＡＭフレームに設定されている順序に沿ってＣＲＡＭフレームデータのエラー検知をサイクリックに行う通常エラー検知処理をエラー検知部２００に行わせ、演算結果比較部５００により２つの演算結果が一致しないと判定された際に、エラー検知部２００の通常エラー検知処理を中止させ、２つの論理回路のうちのいずれかの論理回路を先処理論理回路として選択し、先処理論理回路のＣＲＡＭフレームデータに対するエラー検知をエラー検知部２００に行わせる。【選択図】図１
2015115727.tif 000002
【特許請求の範囲】
【請求項１】
冗長化された２つの論理回路と、
前記２つの論理回路の回路構成が示される２つの回路構成情報に対して、回路構成情報ごとにエラー検知を行うエラー検知部と、
前記２つの論理回路が演算を行う度に、前記２つの論理回路からの２つの演算結果を比較し、前記２つの演算結果が一致するか否かを判定する演算結果比較部と、
前記演算結果比較部により前記２つの演算結果が一致しないと判定されるまでは、前記２つの回路構成情報に設定されている順序に沿って回路構成情報ごとのエラー検知をサイクリックに行う通常エラー検知処理を前記エラー検知部に行わせ、前記演算結果比較部により前記２つの演算結果が一致しないと判定された際に、前記エラー検知部の前記通常エラー検知処理を中止させ、前記２つの論理回路のうちのいずれかの論理回路を先処理論理回路として選択し、前記先処理論理回路の回路構成情報に対するエラー検知を前記エラー検知部に行わせる制御部とを有することを特徴とするプログラマブルロジックデバイス。
【請求項２】
前記制御部は、
前記エラー検知部によるエラー検知の結果、前記先処理論理回路の回路構成情報にエラーがない場合に、前記先処理論理回路からの演算結果を出力先に出力することを特徴とする請求項１に記載のプログラマブルロジックデバイス。
【請求項３】
前記制御部は、
前記エラー検知部によるエラー検知の結果、前記先処理論理回路の回路構成情報にエラーがある場合に、前記先処理論理回路以外の論理回路を後処理論理回路として選択し、前記後処理論理回路の回路構成情報に対するエラー検知を前記エラー検知部に行わせることを特徴とする請求項２に記載のプログラマブルロジックデバイス。
【請求項４】
前記制御部は、
前記エラー検知部によるエラー検知の結果、前記後処理論理回路の回路構成情報にエラーがない場合に、前記後処理論理回路からの演算結果を出力先に出力することを特徴とする請求項３に記載のプログラマブルロジックデバイス。
【請求項５】
前記エラー検知部は、
ＣＲＣ（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ）コードを用いたエラー検知を行うことを特徴とする請求項１に記載のプログラマブルロジックデバイス。
【請求項６】
前記プログラマブルロジックデバイスが、
前記２つの回路構成情報がＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ
Ｍｅｍｏｒｙ）に記憶されているＦＰＧＡ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ）であることを特徴とする請求項１に記載のプログラマブルロジックデバイス。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理回路が冗長化されたプログラマブルロジックデバイスに関する。
【背景技術】
【０００２】
電力系統の安定供給を行い異常状態時に電気回路を保護する保護継電器（保護リレー）は、社会インフラストラクチャーに利用され信頼性が要求される。
また、保護リレーは高機能化に対応するためマイクロコンピュータやプログラマブルロジックデバイスが利用されてきている。
近年、半導体技術の進歩により、半導体デバイスの微細化、低電圧による動作が可能となった反面、中性子等の高エネルギーな放射線によるソフトエラーが問題となっている。
プログラマブルロジックデバイスの信頼性向上の方法として、プログラマブルロジックデバイス内部で構成するユーザ論理回路を２重に冗長化する方法がある。
２重冗長化では、２重化したユーザ論理回路のそれぞれの演算結果を比較し、演算結果が一致していた場合は、ユーザ論理回路は正常に動作しているものとして演算結果を利用し、演算結果が不一致の場合は、ユーザ論理回路の一方または両方が異常な状態であると判断する。
【０００３】
フィールド・プログラマブル・ゲート・アレイ（Ｆｉｅｌｄ  Ｐｒｏｇｒａｍａｂｌｅ  Ｇａｔｅ  Ａｒｒａｙ（ＦＰＧＡ））はプログラマブルロジックデバイスの一種であり、ユーザ論理回路の構成情報を保持する。
ユーザ論理回路の構成情報を保持するためのコンフィグレーション用メモリ（コンフィグレーションＲＡＭ（ＣＲＡＭ））にＳＲＡＭ（Ｓｔａｔｉｃ  Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）を用いたＳＲＡＭ型ＦＰＧＡは、半導体技術の進歩により、大容量、低消費電力、高速動作の上で他の方式のＦＰＧＡに比べ有利である反面、ＣＲＡＭのデータ化け（ソフトエラー）が発生し易いという課題がある。
ＳＲＡＭ型ＦＰＧＡではＣＲＡＭをフレームと呼ぶ単位に分割し、ＣＲＡＭのソフトエラーを検出するためにフレーム毎に巡回冗長検査（Ｃｙｃｌｉｃ  Ｒｅｄｕｎｄａｎｃｙ  Ｃｈｅｃｋ（ＣＲＣ））コードを付加し、フレーム単位でのソフトエラー検出を行う。
ＦＰＧＡ全体では複数のフレームに対し順にＣＲＣコードの計算と付加されたＣＲＣコードが一致しているか否かをチェックする（ＣＲＣチェック）。
全フレームのＣＲＣチェックが完了すると、再度最初のフレームのＣＲＣチェックから行い、サイクリックにフレームのＣＲＣチェックを行う。
しかし、ユーザ論理回路がソフトエラーによって異常となり、その演算結果に問題がないかどうかフレームのＣＲＣチェックで確認しようとすると、ユーザ論理回路で演算した結果を得てから、最大でＦＰＧＡ内の全フレームをチェックする時間が経過した後にＣＲＣチェック結果が判明することになる。
ソフトエラーによる異常な演算結果が後段回路またはＦＰＧＡ外部に送出せず、正常な演算結果を出力させるまでの時間間隔は、システムの動作として許容できる間隔である必要がある。
つまり、演算結果を得てからＣＲＣチェックを経て正常な演算結果を出力するまでの時間が正常動作が可能な時間の許容範囲内であることを保証する必要があり、その為には、演算結果を得てからＣＲＣチェック完了までの時間間隔を短くすることが望ましい。
【０００４】
ＦＰＧＡ内のユーザ論理回路を２重化し、それぞれのユーザ論理回路の演算結果を比較する従来の方法は、演算結果が不一致であった場合に、２つの演算結果の内のどちらが正しいかを判断できないという課題がある。
この課題に対応する技術として、ユーザ論理回路を３重化し、多数決論理により解決する手法が特許文献１に開示されている。
また、特許文献２では、ＦＰＧＡ内の２重化構成とコンフィグレーション後にソフトエラーによる場合以外に変更されない固定情報を読み出すことによりソフトエラーを検出する方法が示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００６−１５７４８２号公報
【特許文献２】特開２００５−２３５０７４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
特許文献１の手法では、ユーザ論理回路を３重化するため、ユーザ論理回路が更に１つ多く必要となり、ＦＰＧＡの回路規模が増大するという課題がある。
特許文献２では、エラー検出によって運用中の回路と予備の回路の切り替えを行うことが記載されている。
特許文献２では、予備回路への切り替えが開示されているものの、エラーを検出した際の演算結果の処理は記載されておらず、また正常な演算結果の判定・選択の記載もないことから、演算結果は破棄されることが考えられる。
フレームに付加されたＣＲＣのチェック時に正常であっても、その後にソフトエラーが発生した状態で演算を行えば演算結果は異常となる。
このため、ＦＰＧＡ内の全フレームに対しＣＲＣチェックをサイクリックに行う必要がある。
正常な演算結果を後段回路またはＦＰＧＡ外部に出力するまでの時間は、システム要求に合った時間間隔内に収める必要があり、ＦＰＧＡ内の全フレームに対しＣＲＣチェックをサイクリックに行うと、システム要求を満たさない可能がある。
【０００７】
本発明は、このような事情に鑑みたものであり、論理回路を３重化せずに２重化された構成であっても、演算結果不一致時に正常な演算結果を得ることを可能とし、正常な演算結果を得るために費やす時間を短縮することを主な目的とする。
【課題を解決するための手段】
【０００８】
本発明に係るプログラマブルロジックデバイスは、
冗長化された２つの論理回路と、
前記２つの論理回路の回路構成が示される２つの回路構成情報に対して、回路構成情報ごとにエラー検知を行うエラー検知部と、
前記２つの論理回路が演算を行う度に、前記２つの論理回路からの２つの演算結果を比較し、前記２つの演算結果が一致するか否かを判定する演算結果比較部と、
前記演算結果比較部により前記２つの演算結果が一致しないと判定されるまでは、前記２つの回路構成情報に設定されている順序に沿って回路構成情報ごとのエラー検知をサイクリックに行う通常エラー検知処理を前記エラー検知部に行わせ、前記演算結果比較部により前記２つの演算結果が一致しないと判定された際に、前記エラー検知部の前記通常エラー検知処理を中止させ、前記２つの論理回路のうちのいずれかの論理回路を先処理論理回路として選択し、前記先処理論理回路の回路構成情報に対するエラー検知を前記エラー検知部に行わせる制御部とを有することを特徴とする。
【発明の効果】
【０００９】
本発明によれば、２つの演算結果が一致しないと判定された場合に、通常エラー検知処理を中止して、先処理論理回路の回路構成情報に対するエラー検知を行うので、先処理論理回路の回路構成情報に対するエラー検知を即座に開始することができ、エラー検知が完了するまでの時間を短縮することができる。
このため、論理回路が２重化された構成であっても、演算結果不一致時に正常な演算結果を得ることが可能であり、また、正常な演算結果を得るために費やす時間を短縮することができる。
【図面の簡単な説明】
【００１０】
【図１】実施の形態１に係るＦＰＧＡの内部構成例を示す図。
【図２】実施の形態１に係る配線情報管理テーブルの例を示す図。
【図３】実施の形態１に係る電源投入から通常エラー検知処理までのフローを示すフローチャート図。
【図４】実施の形態１に係る通常エラー検知処理のフローを示すフローチャート図。
【図５】実施の形態１に係る通常エラー検知処理から演算出力正常確認処理への切り替え動作フローを示すフローチャート図。
【図６】実施の形態１に係る演算出力正常確認処理のフローを示すフローチャート図。
【図７】実施の形態１に係る演算出力正常確認処理のフローを示すフローチャート図。
【発明を実施するための形態】
【００１１】
実施の形態１．
図１は、本実施の形態に係るＦＰＧＡ１の内部構成例を示す。
図１に示すＦＰＧＡ１は、例えばＳＲＡＭ型ＦＰＧＡである。
【００１２】
本実施の形態では、ＦＰＧＡ１は、冗長化された２つの論理回路３００、３１０を有する。
論理回路３００、３１０は、同じ演算を行う。
【００１３】
一時記憶部４００は論理回路３００の演算結果である演算出力値３０１を一時的に記憶し、一時記憶部４００は論理回路３１０の演算結果である演算出力値３１１を一時的に記憶する。
【００１４】
演算結果比較部５００は、論理回路３００からの演算出力値３０１と論理回路３１０からの演算出力値３１１とを比較し、２つの演算出力値が一致するか否かを判定する。
そして、演算結果比較部５００は、演算出力値比較結果５０１を制御部７００に出力する。
【００１５】
制御部７００は、演算出力値選択指示７０３を出力選択部６００に出力して後段回路又はＦＰＧＡ外部へ出力する演算出力値を選択する。
演算出力値選択指示７０３は、後段回路又はＦＰＧＡ外部へ出力する演算出力値を指定する信号である。
演算出力値選択指示７０３において演算出力値４０１が指定されている場合は、出力選択部６００は演算出力値４０１を後段回路又はＦＰＧＡ外部へ出力する。
演算出力値選択指示７０３において演算出力値４１１が指定されている場合は、出力選択部６００は演算出力値４１１を後段回路又はＦＰＧＡ外部へ出力する。
また、論理回路３００からの演算出力値３０１と論理回路３１０からの演算出力値３１１が一致しない場合は、制御部７００は、一時記憶部４００及び一時記憶部４１０に演算出力値保持指示７０２を出力する。
演算出力値保持指示７０２は、演算出力値の出力の保留を指示する信号である。
【００１６】
ＣＲＡＭフレーム１００は、論理回路３００の回路構成が示される回路構成情報（以下、ＣＲＡＭフレームデータ１０１ともいう）を格納するＣＲＡＭ上の領域である。
ＣＲＡＭフレーム１１０は、論理回路３１０の回路構成が示される回路構成情報（以下、ＣＲＡＭフレームデータ１１１ともいう）を格納するＣＲＡＭ上の領域である。
このように、論理回路３００と論理回路３１０は、異なるＣＲＡＭフレームに回路構成情報が格納されている。
【００１７】
ＣＲＣコード格納領域１２０、１３０は、それぞれ格納ＣＲＣコード値１２１、１３１を格納する。
【００１８】
エラー検知部２００は、格納ＣＲＣコード値１２１を用いてＣＲＡＭフレームデータ１０１のＣＲＣチェックを行い、また、格納ＣＲＣコード値１３１を用いてＣＲＡＭフレームデータ１１１のＣＲＣチェックを行う。
【００１９】
ＣＲＡＭフレーム番号記憶部８００は、配置情報を記憶する。
配置情報は、論理回路３００、３１０の回路構成情報がどのＣＲＡＭフレームに格納されるかを示す情報である。
配置情報は、配置配線時に生成される。
例えば、配線情報は、図２に示す配線情報管理テーブルによって論理回路の回路構成情報とＣＲＡＭフレームの対応を取る。
ＣＲＡＭフレーム番号記憶部８００の配置情報への設定は、ＦＰＧＡ１の電源投入後のコンフィグレーションによるＣＲＡＭフレーム１００、１１０への回路構成情報のロード後に行う。
ＣＲＡＭフレーム番号記憶部８００への配置情報の設定方法は問わない。
【００２０】
本実施の形態に係るＦＰＧＡ１は、以下の２つの動作モードを持ち、２つのモードを変更しながら動作する。
（１）通常エラー検知処理
（２）演算出力正常確認処理
【００２１】
通常エラー検知処理は、エラー検知部２００が、ＣＲＡＭフレームに格納された、回路構成情報からＣＲＣ値を計算し、計算したＣＲＣ値が、ＣＲＣコード格納領域の格納ＣＲＣコード値と一致しているか否かをチェックする処理（ＣＲＣチェック）である。
通常エラー検知処理でのＣＲＣチェックは、ＦＰＧＡ１内の全ＣＲＡＭフレームに対し行い、ＣＲＡＭフレームを順番に選択し、全ＣＲＡＭフレームが完了すると再び最初のＣＲＡＭフレームのＣＲＣチェックに戻り、サイクリックに行う。
【００２２】
演算出力正常確認処理は、通常エラー検知処理を中断し、エラー検知部２００が、演算出力値を出力する論理回路の回路構成情報が格納されたＣＲＡＭフレームのＣＲＣチェックを実行し、チェック対象のＣＲＡＭフレームのＣＲＣチェックで異常と判断されれば、論理回路が出力する演算出力値も異常と判断する。
【００２３】
より具体的には、演算結果比較部５００により演算出力値３０１と演算出力値３１１が一致しないと判定されるまでは、制御部７００は、エラー検知部２００に連続して通常エラー検知処理を行わせる。
演算結果比較部５００により演算出力値３０１と演算出力値３１１が一致しないと判定された際に、制御部７００は、演算出力値保持指示７０２を出力するとともに、エラー検知部２００の通常エラー検知処理を中止させ、２つの論理回路のうちのいずれかの論理回路を先処理論理回路として選択し、先処理論理回路のＣＲＡＭフレームデータに対するＣＲＣチェックをエラー検知部２００に行わせる。
そして、エラー検知部２００によるＣＲＣチェックの結果、先処理論理回路のＣＲＡＭフレームデータにＣＲＣエラーがない場合に、制御部７００は、演算出力値選択指示７０３を出力して、先処理論理回路からの演算出力値を後段回路又はＦＰＧＡ外部に出力する。
一方、エラー検知部２００によるＣＲＣチェックの結果、先処理論理回路のＣＲＡＭフレームデータにＣＲＣエラーがある場合に、制御部７００は、先処理論理回路以外の論理回路を後処理論理回路として選択し、後処理論理回路のＣＲＡＭフレームデータに対するＣＲＣチェックをエラー検知部２００に行わせる。
エラー検知部２００によるＣＲＣチェックの結果、後処理論理回路のＣＲＡＭフレームデータにＣＲＣエラーがない場合に、制御部７００は、演算出力値選択指示７０３を出力して、後処理論理回路からの演算出力値を後段回路又はＦＰＧＡ外部に出力する。
【００２４】
以下に、上記の各モードの動作と、モードの切り替え条件について説明する。
【００２５】
まず、通常エラー検知処理を説明する。
通常エラー検知処理は、図３に示すように、ＦＰＧＡ１に電源が投入され（ステップＳ１１）、ＦＰＧＡ１のコンフィグレーション（ＣＲＡＭへのＦＰＧＡ回路構成情報のロードおよびＣＲＡＭフレームのＣＲＣコード値のロード）が完了し（ステップＳ１２）、リセットが解除され（ステップＳ１３）、ＣＲＡＭフレーム番号記憶部８００への配置情報の設定（ステップＳ１４）が完了した後に行われる（ステップＳ１５）。
【００２６】
図４は、通常エラー検知処理のフローである。
通常エラー検知処理では以下を行う。
【００２７】
まず、制御部７００が、ＣＲＣチェックを行う最初のＣＲＡＭフレーム番号を設定する（ステップＳ１００）。
本実施の形態では最初のＣＲＡＭフレーム番号を「０」として設定する。
次に、制御部７００は、エラー検知部２００へＣＲＡＭフレーム番号７０１を出力する（ステップＳ１０１）。
最初に出力される値は、上記ステップＳ１００で設定した値であり、本実施の形態では「０」である。
【００２８】
エラー検知部２００は、ＣＲＡＭフレーム番号７０１で指定されたＣＲＡＭフレームに格納された回路構成情報を読み出し、ＣＲＣ値を計算する（ステップＳ１０２）。
次に、エラー検知部２００は、ＣＲＡＭフレーム番号７０１で指定されたＣＲＡＭフレームに対応するＣＲＣコード格納領域から、格納ＣＲＣコード値を読み出し、ステップＳ１０２で計算したＣＲＣ値と一致しているか否か比較する（ＣＲＣチェック）（ステップＳ１０３）。
エラー検知部２００は、ステップＳ１０３で得たＣＲＣチェック結果２０１を、制御部７００へ送出する（ステップＳ１０４）。
制御部７００は、ＣＲＣチェック結果２０１が「ＣＲＣが一致」の場合は、ＣＲＣチェック対象を次のＣＲＡＭフレームに変更する（ステップＳ１０５のＮｏに分岐）。
一方、ＣＲＣチェック結果２０１が「ＣＲＣが不一致」の場合は、制御部７００は、ＣＲＣの不一致が発生したことを通知する（ステップＳ１０５のＹＥＳの分岐およびステップＳ１０６）。
ＣＲＣ不一致の通知は、ＦＰＧＡ１内のステータス・レジスタにログとして格納してもよく、ＦＰＧＡ１の外部ピンに不一致発生したことの信号を有効にしてもよい。
ステップＳ１０５（Ｎｏの場合）またはステップＳ１０６の後、制御部７００は、ＦＰＧＡ１内の全ＣＲＡＭフレームのＣＲＣチェックが完了したか否か判定する（ステップＳ１０７）。
ステップＳ１０７にて、ＦＰＧＡ１内の全ＣＲＡＭフレームが完了した場合は、制御部７００は、次にＣＲＣチェックするＣＲＡＭフレーム番号をＣＲＣチェックを行った最初のＣＲＡＭフレーム番号にセットする。本実施の形態では「０」である（ステップＳ１０９）。
ＦＰＧＡ１内の全ＣＲＡＭフレームが完了していない場合は、制御部７００は、次にＣＲＣチェックするＣＲＡＭフレーム番号を現在のＣＲＡＭフレーム番号に＋１したものとする（ステップＳ１０８）。
ステップＳ１０８またはステップＳ１０９を実行後は、再びステップＳ１０１から実行する。
【００２９】
また、上記のステップＳ１００〜Ｓ１０９の通常エラー検知処理と平行して、論理回路３００、３１０から出力された、演算出力値３０１、３１１を、演算結果比較部５００に入力し、演算出力値比較結果５０１を、制御部７００へ送出する処理が行われる。
【００３０】
次に、モードの切り替えを説明する。
まず、通常エラー検知処理から演算出力正常確認処理へのモード切り替えを説明する。
図５は、通常エラー検知処理から演算出力正常確認処理への切り替えを行う時の動作フローである。
演算出力正常確認処理への切り替えは以下を行う。
【００３１】
制御部７００は、演算結果比較部５００から演算出力値比較結果５０１の受け取りを待つ（ステップＳ２００）。
ステップＳ２００で、演算出力値比較結果５０１を受け取った場合、演算出力値比較結果５０１が、論理回路３００、３１０から出力された演算出力値３０１、３１１が、一致していることを示す場合は、次の演算結果比較部５００から演算出力値比較結果５０１の受け取りを待つため、ステップＳ２００を実行する（ステップＳ２０１のＹＥＳ分岐）。
演算出力値比較結果５０１が、不一致だったことを示す場合（ステップＳ２０１のＮＯ分岐）は、制御部７００は、現在の通常エラー検知処理でのＣＲＣチェックを中断させる（ステップＳ２０２）。
ステップＳ２０２実行後、エラー検知部２００は、現在の通常エラー検知処理でＣＲＣチェックしていたＣＲＡＭフレーム番号を退避する（ステップＳ２０３）。
退避先は、制御部７００内でもＦＰＧＡ１の外部の記憶手段でもよい。
ステップＳ２０３を実行後、制御部７００は、演算出力正常確認処理を実行する動作モードに切り替え実行する（ステップＳ２０４）。
【００３２】
演算出力正常確認処理から通常エラー検知処理への切り替え（ステップＳ２０５）は、エラー検知部２００が、ステップＳ２０３で退避したＣＲＡＭフレーム番号を取り出し、通常エラー検知処理のステップＳ１０１から実行を再開する。
【００３３】
次に、演算出力正常確認処理を説明する。
図６及び図７は、演算出力正常確認処理のフローである。
演算出力正常確認処理では以下を行う。
【００３４】
制御部７００は、一時記憶部４００、４１０へ演算出力値保持指示７０２を出力する（ステップＳ３００）。
演算出力値保持指示７０２を受け取った一時記憶部４００、４１０は、論理回路３００、３１０から出力される演算出力値３０１、３１１を保持する。
次に、制御部７００は、論理回路３００、３１０から論理回路ＩＤ３０２、３１２を取得する（ステップＳ３０１）。
次に、制御部７００は、ステップＳ３０１で取得した論理回路ＩＤ３０２、３１２の内、１つを選択する（ステップＳ３０２）。ここでは、論理回路ＩＤ３０２を選択したものとする。
制御部７００は、ステップＳ３０２で選択した論理回路ＩＤ３０２を、ＣＲＡＭフレーム番号記憶部８００へ出力する（ステップＳ３０３）。
【００３５】
ＣＲＡＭフレーム番号記憶部８００は、ステップＳ３０３で出力される論理回路ＩＤ３０２を受け取り、配線情報管理テーブル（図２）を参照し、そのＩＤに対応するＣＲＡＭフレーム番号７０１を選択し、制御部７００へ出力する（ステップＳ３０４）。
制御部７００は、ステップＳ３０４で受け取った論理回路ＩＤ３０２に対応するＣＲＡＭフレーム番号７０１をエラー検知部２００へ出力する（ステップＳ３０５）。
エラー検知部２００は、ＣＲＡＭフレーム番号７０１で指定されたＣＲＡＭフレーム（１００）に格納された回路構成情報を読み出しＣＲＣ値を計算する（ステップＳ３０６）。
エラー検知部２００は、ＣＲＡＭフレーム番号７０１で指定されたＣＲＡＭフレーム１００に対応するＣＲＣコード格納領域１２０から、格納ＣＲＣコード値１２１を読み出し、ステップＳ３０６で計算したＣＲＣ値と一致しているか否か比較する（ＣＲＣチェック）（ステップＳ３０７）。
エラー検知部２００は、ステップＳ３０７で得たＣＲＣチェック結果２０１を、制御部７００へ送出する（ステップＳ３０８）。
【００３６】
制御部７００は、ＣＲＣチェック結果２０１でＣＲＣが一致しているか否か判定する（ステップＳ３０９）。
ステップＳ３０９で「ＣＲＣが一致」場合は、この時に選択している論理回路ＩＤ３０２の論理回路３００から出力され、一時記憶部４００に格納された演算出力値４０１を選択する演算出力値選択指示７０３を出力選択部６００へ出力する（ステップＳ３１３）。
出力選択部６００は、一時記憶部４００に格納された演算出力値４０１を、後段回路またはＦＰＧＡ外部へ出力する（ステップＳ３１４）。
【００３７】
ステップＳ３０９で「ＣＲＣが不一致」の場合は、制御部７００はステップＳ３０１で取得した論理回路ＩＤ２つに対しＣＲＣチェックしたか否か判定する（ステップＳ３１０）。
ステップＳ３１０で既に２つの論理回路ＩＤに対するＣＲＣチェックが完了している場合は、制御部７００は論理回路３００、３１０共に異常であると判断し、システム異常を通知する（ステップＳ３１２）。
システム異常の通知は、ＦＰＧＡ内のステータス・レジスタにログとして格納してもよく、ＦＰＧＡの外部ピンにシステム異常が発生したことの信号を有効にしてもよい。
【００３８】
ステップＳ３１０で、１つの論理回路ＩＤのＣＲＣチェックのみの場合は、制御部７００は、この時に選択している論理回路ＩＤ３０２と別の論理回路ＩＤ３１２を選択する（ステップＳ３１１）。
そして再度、ステップＳ３０３に戻る。
つまり、制御部７００は、ステップＳ３１１で選択した論理回路ＩＤ３１２を、ＣＲＡＭフレーム番号記憶部８００へ出力する（ステップＳ３０３）。
ＣＲＡＭフレーム番号記憶部８００は、ステップＳ３０３で出力される論理回路ＩＤ３１２を受け取り、配線情報管理テーブル（図２）を参照し、そのＩＤに対応するＣＲＡＭフレーム番号７０１を選択し、制御部７００へ出力する（ステップＳ３０４）。
制御部７００は、ステップＳ３０４で受け取った論理回路ＩＤ３１２に対応するＣＲＡＭフレーム番号７０１をエラー検知部２００へ出力する（ステップＳ３０５）。
エラー検知部２００は、ＣＲＡＭフレーム番号７０１で指定されたＣＲＡＭフレーム１１０に格納された回路構成情報を読み出しＣＲＣ値を計算する（ステップＳ３０６）。
エラー検知部２００は、ＣＲＡＭフレーム番号７０１で指定されたＣＲＡＭフレーム１１０に対応するＣＲＣコード格納領域１３０から、格納ＣＲＣコード値１３１を読み出し、ステップＳ３０６で計算したＣＲＣ値と一致しているか否か比較する（ＣＲＣチェック）（ステップＳ３０７）。
エラー検知部２００は、ステップＳ３０７で得たＣＲＣチェック結果２０１を、制御部７００へ送出する（ステップＳ３０８）。
制御部７００は、ＣＲＣチェック結果２０１でＣＲＣが一致しているか否か判定する（ステップＳ３０９）。
ステップＳ３０９で「ＣＲＣが一致」の場合は、この時に選択している論理回路ＩＤ３１２の論理回路３１０から出力され一時記憶部４１０に格納された演算出力値４１１を選択する演算出力値選択指示７０３を出力選択部６００へ出力する（ステップＳ３１３）。
出力選択部６００は、ステップＳ１３１で出力される一時記憶部４１０に格納された演算出力値４１１を、後段回路またはＦＰＧＡ外部へ出力する（ステップＳ３１４）。
ステップＳ３１４またはステップＳ３１２を実行した後、演算出力正常確認処理を終了し、図５のステップ２０５で示すモードの切り替え処理を行い通常エラー検知処理を実施する。
【００３９】
以上、本実施の形態では、２つの演算結果が一致しないと判定された場合に、通常エラー検知処理を中止して、先処理論理回路の回路構成情報に対するエラー検知を行うので、先処理論理回路の回路構成情報に対するエラー検知を即座に開始することができ、エラー検知に要する時間を短縮することができる。
このため、論理回路が２重化された構成であっても、演算結果不一致時に正常な演算結果を得ることが可能であり、また、正常な演算結果を得るために費やす時間を短縮することができる。
【符号の説明】
【００４０】
１  ＦＰＧＡ、１００  ＣＲＡＭフレーム、１０１  ＣＲＡＭフレームデータ、１１０  ＣＲＡＭフレーム、１１１  ＣＲＡＭフレームデータ、１２０  ＣＲＣコード格納領域、１２１  格納ＣＲＣコード値、１３０  ＣＲＣコード格納領域、１３１  格納ＣＲＣコード値、２００  エラー検知部、２０１  ＣＲＣチェック結果、３００  論理回路、３０１  演算出力値、３０２  論理回路ＩＤ、３１０  論理回路、３１１  演算出力値、３１２  論理回路ＩＤ、４００  一時記憶部、４０１  演算出力値、４１０  一時記憶部、４１１  演算出力値、５００  演算結果比較部、５０１  演算出力値比較結果、６００  出力選択部、６０１  正常演算出力値、７００  制御部、７０１  ＣＲＡＭフレーム番号、７０２  演算出力値保持指示、７０３  演算出力値選択指示、７０４  論理回路ＩＤ、８００  ＣＲＡＭフレーム番号記憶部。
【図１】
2015115727.tif 000003
【図２】
2015115727.tif 000004
【図３】
2015115727.tif 000005
【図４】
2015115727.tif 000006
【図５】
2015115727.tif 000007
【図６】
2015115727.tif 000008
【図７】
2015115727.tif 000009