(57)【要約】  コンフィギュレーションメモリ９を有するプログラマブルデバイス１００において、コンフィギュレーションメモリの診断手段として、コンフィギュレーションメモリのデータをリード、ライトするリードライト部２と、コンフィギュレーションメモリのデータに対してエラーチェックを行う機能ブロック部７と、リードライト部と機能ブロック部に対し、コンフィギュレーションメモリ内の所定の領域のデータを所定の順序でエラーチェックを行うよう制御するシーケンサ部５と、を備える構成とする。これにより、コンフィギュレーションメモリ９のソフトエラー発生時の検出時間および訂正時間を短縮させる。
2015068285.tif 000002
【特許請求の範囲】
【請求項１】
コンフィギュレーションメモリを有するプログラマブルデバイスにおいて、
前記コンフィギュレーションメモリの診断手段として、
前記コンフィギュレーションメモリのデータをリード、ライトするリードライト部と、
前記コンフィギュレーションメモリのデータに対してエラーチェックを行う機能ブロック部と、
前記リードライト部と前記機能ブロック部に対し、前記コンフィギュレーションメモリ内の所定の領域のデータを所定の順序でエラーチェックを行うよう制御するシーケンサ部と、
を備えることを特徴とするプログラマブルデバイス。
【請求項２】
請求項１に記載のプログラマブルデバイスであって、
前記コンフィギュレーションメモリの診断手段には、
前記コンフィギュレーションメモリ内のエラーチェックを行う領域情報を格納する領域テーブルと、
前記コンフィギュレーションメモリのエラーチェックを実行する順序情報を格納する実行順序テーブルと、
を備えることを特徴とするプログラマブルデバイス。
【請求項３】
請求項１または２に記載のプログラマブルデバイスであって、
前記コンフィギュレーションメモリの診断手段には、少なくとも１つの入力ポートを有する割込信号入力部を有し、該入力ポートから入力する割込信号に基づいて指定されたエラーチェックの割り込み動作を実行することを特徴とするプログラマブルデバイス。
【請求項４】
請求項１乃至３のいずれかに記載のプログラマブルデバイスであって、
前記コンフィギュレーションメモリの診断手段には、該診断手段自身の正常動作を確認する内部診断部を備え、
該内部診断部は、前記コンフィギュレーションメモリへエラーデータを挿入するエラーデータ挿入部と、挿入したエラー情報と、検出されたエラー情報を比較する比較部で構成されることを特徴とするプログラマブルデバイス。
【請求項５】
請求項１乃至４のいずれかに記載のプログラマブルデバイスであって、
前記機能ブロック部は、前記コンフィギュレーションメモリのエラー検出と訂正処理を行うものであって、処理内容に応じて複数の機能ブロックから構成され、各機能ブロックは必要に応じて追加・削除することが可能なモジュール構成としたことを特徴とするプログラマブルデバイス。
【請求項６】
請求項１乃至５のいずれかに記載のプログラマブルデバイスであって、
前記コンフィギュレーションメモリの診断手段には、前記機能ブロック部からのエラー信号を入力し、外部で必要な形式のエラー信号に変換して出力するエラー信号出力部を備えたことを特徴とするプログラマブルデバイス。
【請求項７】
請求項１乃至６のいずれかに記載のプログラマブルデバイスを搭載した電子システム装置であって、
当該電子システム装置は複数のユニットで構成され、前記プログラマブルデバイスは各ユニットに搭載されていることを特徴とする電子システム装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、プログラマブルデバイス及びこれを用いた電子システム装置に関する。
【背景技術】
【０００２】
本技術分野の背景技術として、米国登録特許ＵＳ８３３２７２２号（特許文献１）“Method and architecture for performing scrubbing of an FPGA's configuration memory”がある。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許第８３３２７２２号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
ＦＰＧＡ（Field Programmable Gate Array）などのプログラマブルデバイスでは、コンフィギュレーションメモリ（以下、ＣＲＡＭと記す）に放射線起因のソフトエラーが発生すると、ユーザロジックの構成情報が一時的に破壊され、誤動作を引き起こす可能性がある。そこで、従来のプログラマブルデバイスでは、ＣＲＡＭに格納されるデータを固定長のデータフレームに分割し、フレーム毎に巡回しながらエラーチェックする回路を用意されている。ユーザは、この回路のＣＲＡＭソフトエラー検出信号をトリガとして、プログラマブルデバイスの再コンフィグレーションや、装置再起動などのリカバリ処理を実施することで、ソフトエラー状態から復旧でき、装置の信頼性を向上させることができる。【０００５】
しかし、従来のエラーチェック方法ではＣＲＡＭ全領域をフレーム順にチェックするため、プログラマブルデバイスの大容量化が進むと、ソフトエラー検出時間が遅くなってしまう。例えば、２重化を採用する通信装置では、異常時の装置切替え時間を数十ミリ秒以内にすることが求められるため、装置に搭載されるプログラマブルデバイスは上記時間以内にエラーを検出し、訂正できることが望ましい。しかし、大容量化が進むプログラマブルデバイスでは、単純にエラー検出までに１００ミリ秒以上要する場合もあり、切替え時間内でのリカバリが困難になってきている。そのため、ＣＲＡＭに発生した環境放射線ソフトエラーの検出および訂正時間を短縮し、装置の停止時間やリカバリ時間を短縮することが必要となる。また、エラー検出に加え、ＣＲＡＭ内のソフトエラーを短時間で訂正することが求められる。【０００６】
特許文献１によれば、ＣＲＡＭに発生するソフトエラーを検出・訂正する回路（スクラビング回路）について記載されている。スクラビング回路はユーザ論理回路の一部としてＦＰＧＡに実装され、ＣＲＡＭデータをフレームと呼ばれる固定長データ単位で読み出し、ＣＲＣによるエラー検出や、ＥＣＣによるエラー訂正ができる。また、外部ＲＯＭに格納された正常データを再度ＣＲＡＭに上書きすることで複数ビットエラーを訂正できる。【０００７】
また、スクラビング回路は構成要素としてＦＰＧＡ内部のソフトプロセッサを使用し、命令メモリ内に格納された命令コードに従って、ＣＲＡＭの任意フレームのエラーチェックを行うことができる。しかし、特許文献１ではＣＲＡＭのエラー検出時間や訂正時間については考慮されておらず、エラー検出時間や訂正時間を短くするための手段や効果について積極的に言及されていない。【０００８】
本発明の目的は、ソフトエラー発生時の検出時間および訂正時間を短縮させるプログラマブルデバイス及びこれを用いた電子システム装置を提供することにある。
【課題を解決するための手段】
【０００９】
上記課題を解決するために、例えば請求の範囲に記載の構成を採用する。その一例を挙げるならば、コンフィギュレーションメモリを有するプログラマブルデバイスにおいて、コンフィギュレーションメモリの診断手段として、コンフィギュレーションメモリのデータをリード、ライトするリードライト部と、コンフィギュレーションメモリのデータに対してエラーチェックを行う機能ブロック部と、リードライト部と機能ブロック部に対し、コンフィギュレーションメモリ内の所定の領域のデータを所定の順序でエラーチェックを行うよう制御するシーケンサ部と、を備える構成とする。
【発明の効果】
【００１０】
本発明によれば、ソフトエラー発生時の検出時間および訂正時間を短縮し、稼働時間を長くすることで、プログラマブルデバイス及びこれを用いた電子システム装置の信頼性が向上する。
【図面の簡単な説明】
【００１１】
【図１】実施例１に係るプログラマブルデバイスの構成図。
【図２】領域テーブル３の格納データ構造を示す図。
【図３】チェック領域の設定例を示す図。
【図４】実行順序テーブル４の格納データ構造を示す図。
【図５】機能ブロック部７の構成を示す図。
【図６】エラー信号出力部８の構成例を示す図。
【図７】実施例２に係るプログラマブルデバイスの構成図。
【図８】実施例２における実行順序テーブル４Ａを示す図。
【図９】プログラマブルデバイスを搭載した電子システム装置（通信装置）の一例を示す構成図（実施例３）。
【図１０】通信装置９０のエラー発生時の制御フローを示す図。
【図１１】エラー情報の表示例を示す図。
【図１２】プログラマブルデバイスを搭載した電子システム装置の一例（モータ制御システム）を示す構成図（実施例４）。
【図１３】実施例５に係るプログラマブルデバイスの構成図。
【発明を実施するための形態】
【００１２】
本発明に係るプログラマブルデバイス及びこれを用いた電子システム装置の実施例を、図面を用いて説明する。
【実施例１】
【００１３】
図１は、実施例１に係るプログラマブルデバイスの構成図である。本実施例のプログラマブルデバイス１００は、ユーザロジックの回路構成情報を格納するためのコンフィギュレーションメモリ（ＣＲＡＭ）９と、ＣＲＡＭ内に発生したソフトエラーを検出・訂正するＣＲＡＭ制御部１を有する。ここで、ＣＲＡＭ９は、格納されるデータをフレームと呼ばれる固定長のデータに分割され、ＣＲＡＭ制御部１はそのデータフレーム単位でソフトエラーの検出・訂正を行う。また、ＣＲＡＭ制御部１は、ユーザロジックの一部としてプログラマブルデバイス１００に実装する。【００１４】
プログラマブルデバイス１００では、ＣＲＡＭ制御部１によってＣＲＡＭ９のソフトエラー検出および訂正動作を行う。基本的な動作としては、ＣＲＡＭ９からデータフレームを読み出し、エラービットの有無をチェックして、エラービットが有った場合はデータを訂正する。エラーが無ければ次に指定されたデータフレームをリードし、エラーをチェックする、という動作を繰り返す。【００１５】
もしエラー訂正ができない場合は、ユーザロジックにも接続できる信号としてエラー信号８ａやエラー情報８ｂを出力する。エラー信号８ａ，８ｂは複数種類の情報を有し、必要に応じてユーザロジックへ接続するか、そのままプログラマブルデバイス１０の外部に出力してもよい。【００１６】
ＣＲＡＭ制御部１の構成は次の通りである。ＣＲＡＭリードライト部２は、ＣＲＡＭ９のデータフレームをリード、ライトする。領域テーブル３は、エラーをチェックするＣＲＡＭの領域情報を格納する。実行順序テーブル４は、ＣＲＡＭ９に対してエラーをチェックする領域の順序や、エラー検出および訂正などのデータ処理の種類、繰返し回数など、チェックシーケンスの情報を格納する。機能ブロック部７は、エラー検出や訂正などＣＲＡＭのデータ処理に関する複数種類の機能ブロックを有する。セレクタ部６は、使用する機能ブロックを選択する。エラー信号出力部８は、機能ブロック部７からの複数のエラー信号を必要な種類のエラー信号に変換して出力する。シーケンサ部５は、領域テーブル３および実行順序テーブル４の情報を基にＣＲＡＭ９のエラーチェック動作を実行する。【００１７】
ここにＣＲＡＭリードライト部２は、ＣＲＡＭ９とのインタフェース部を内蔵し、指定したＣＲＡＭ９の物理アドレスに従ってデータフレームのリードおよびライト動作を行う。また、ＣＲＡＭリードライト部２は、ＣＲＡＭ９以外にプログラマブルデバイス１０に接続された外部ＲＯＭ５０とのインタフェースを有し、外部ＲＯＭ５０のリードおよびライト動作を行うことができる。外部ＲＯＭ５０には、プログラマブルデバイス１０を起動した際にＣＲＡＭ９にコンフィギュレーションするためのユーザロジックの回路構成情報が格納されている。ＣＲＡＭリードライト部２によれば、例えば、外部ＲＯＭ５０から読み出したデータをＣＲＡＭ９に書き込むことができる。【００１８】
図２は、領域テーブル３の格納データ構造を示す図である。前述したようにＣＲＡＭ９は固定長のデータフレームで分割されており、それぞれのフレームには固有のアドレスが割り当てられている。本テーブルの行方向がデータフレームのアドレスを示しており、列方向には複数のチェック領域Ａ０〜Ａｎを設定できるテーブルが用意されている。各フレームアドレスの欄には、チェックする／しないを示す１ビット情報を格納している。例えば、領域番号Ａ２ではデータフレームアドレスＦ２，Ｆ３をチェックすることを示す。【００１９】
図３は、チェック領域の設定例を示す図である。領域テーブル３によれば、図中のＡ０〜Ａ４のように複数の異なるチェック領域を設定することができる。また、各チェック領域は、吹き出しに示したようにデータフレーム１０のグループとして設定するため、領域の形状はＡ１〜Ａ３のような矩形の領域でなくてもよい。Ａ０のように、Ｌ字型の領域や、離れた領域を１つの領域として設定できる。また、Ａ２とＡ３のように複数の領域が重なりあうように指定してもよい。この場合、Ａ２とＡ３には同一のデータフレームが含まれる。【００２０】
但し、一般的にユーザロジックのレイアウトは、ＦＰＧＡベンダが用意する専用のマッピングツールによって、ユーザロジックの動作タイミングを満足するように自動的に最適配置される。そのため、領域を分けずにＣＲＡＭ全面をチェックする場合には、最適配置後のユーザロジックのレイアウトを基に、使用しているデータフレームのみをチェックするように領域テーブルを設定する。【００２１】
また、ＦＰＧＡベンダからＣＲＡＭのユーザ使用ビット情報が提供される場合は、その情報を基に、使用しているビットが含まれるデータフレームのみをチェックするよう領域テーブルを設定することが望ましい。また、一般的にユーザロジックは、図３のＡ１のように階層化設計されるため、各モジュールＡ１０〜Ａ１２のレイアウトに合わせて、チェック領域を設定する。その場合、ユーザロジックがＡ１０〜Ａ１２内にレイアウトされるように、配置を指定してマッピングする。
このように領域テーブル３によってチェックする領域を限定することで、無駄なチェック時間を省き、ＣＲＡＭ９内のソフトエラー検出時間を短縮することができる。【００２２】
図４は、実行順序テーブル４の格納データ構造を示す図である。ＣＲＡＭ制御部１におけるエラーチェックは、テーブル４に格納されたシーケンス情報に従って実行される。実行順序テーブル４には、実行番号とチェック領域番号、処理番号、リピート回数、次の実行番号、で構成されるシーケンス情報を格納する。実行番号は本テーブルのアドレスを示す。アドレスが指定された場合はその実行番号から実行を開始する。指定が無ければ実行番号０から実行を開始する。チェック領域番号は領域テーブル４に設定された領域番号を示す。処理番号は機能ブロック部７の機能ブロック番号を示す。リピート回数は実行番号を連続で実行する繰返し回数を示す。次の実行番号には、次に実行する実行番号を設定する。これより、同じ実行番号を繰り返したり、前の実行番号に戻って動作を繰り返すことができる。【００２３】
例えば、図４に示す実行順序テーブルでは、まずは実行番号０を実行し、チェック領域Ａ１のデータフレームについてエラー処理番号＃０（エラー検出）の処理を１回行う。Ａ１内の全てのデータフレームのチェックが終わったら、次の実行番号１に進む。実行番号１では、領域Ａ０のデータフレームについて処理番号＃１（エラー検出および訂正）の処理を４回繰返し、次の実行番号２に進む。実行番号２では、領域Ａ２のデータフレームについて処理番号＃０（エラー検出）の処理を２回繰返し、次に実行番号０へ戻る。そして、以上のチェック動作を繰り返す。【００２４】
実行順序テーブル４を用いることにより、稼動率や重要度が高い回路モジュールの領域については繰返し回数を多くし、エラーチェック頻度を増やすことで、他の領域に比べて重点的にエラーの検出を行うことができる。【００２５】
シーケンサ部５は、これら領域テーブル３および実行順序テーブル４の格納情報を基に、ＣＲＡＭ９のエラーチェックを実行する。実行順序テーブル４で指定された領域番号を基に領域テーブル３を参照し、リードするデータフレームのアドレスをＣＲＡＭリードライト部２に通知する（５ａ）。同時に、エラー処理番号に従って使用する機能ブロックを選択する（５ｃ）。ＣＲＡＭリードライト部２によってリードされたデータフレーム２ａは、選択された機能ブロック部７に入力され、エラーチェック処理を行う。【００２６】
機能ブロック部７は、ＣＲＡＭデータに対するソフトエラー対策処理機能を持った回路ブロック群である。ＣＲＡＭ制御部１は、複数種類の機能ブロックを内蔵した機能ブロック部７を有し、ユーザは目的に合わせてこれを選択して使用する。【００２７】
図５は、機能ブロック部７の構成を示す図である。機能ブロック部７には複数種類の機能ブロック＃０〜＃ｎを内蔵する。ここでは＃０（７０）としてＣＲＣ（Cyclic Redundancy Code）によるエラー検出機能ブロックを、＃１（７１）としてＥＣＣによる１ビットエラー訂正機能ブロックを例に示す。【００２８】
機能ブロック＃０（７０）は、ＣＲＣエラーチェック部１１と、冗長ビット格納部１２と、ＣＲＣ冗長ビット生成部１３で構成される。ＣＲＣエラーチェック部１１は、順次入力されるＣＲＡＭリードデータフレームを、予め冗長ビット格納部１２に格納した冗長ビットと比較することで、データフレーム内のエラービット有無を検出する。ＣＲＣ冗長ビット生成部１３は、ＣＲＡＭ制御部１の起動時に全データフレームの冗長ビットを自動生成し、冗長ビット格納部１２に格納する。これにより、データフレーム内のソフトエラーを検出できる。ＣＲＣエラー検出時は、エラー検出を表すエラー信号Ｅ１を出力すると共に、エラーが検出された領域番号や、フレームアドレス、エラー種類などのエラー情報を同時に出力する。【００２９】
なお、冗長ビット格納部１２に格納する冗長ビット情報は、ＣＲＡＭ制御部１の起動時にＣＲＣ冗長ビット生成部１３により生成するものとしたが、ＣＲＡＭ９のデータフレームに付加しておいてもよい。また、エラーの検出アルゴリズムや、エラービットの訂正アルゴリズムについては特に限定しない。複数種類の機能ブロックを搭載しても良いが、許容できる回路規模の範囲で搭載する機能ブロックを限定してもよい。【００３０】
機能ブロック＃１（７１）は、エラーチェック訂正部１４と、冗長ビット格納部１５と、冗長ビット生成部１６で構成される。エラーチェック訂正部１４は、順次入力されるＣＲＡＭリードデータフレームを、予め冗長ビット格納部１５に格納したＥＣＣ冗長ビットと比較することで、データフレーム内のエラービット有無を検出する。そして、エラーを検出した時はこれを訂正し、ＣＲＡＭライトデータフレームとして出力する。冗長ビット生成部１６は、ＣＲＡＭ制御部１の起動時に全データフレームのＥＣＣ冗長ビットを自動生成し、冗長ビット格納部１５に格納する。これにより、データフレーム内のソフトエラーを検出できる。ＥＣＣエラー検出時は、エラー検出を表すエラー信号Ｅ１およびエラー訂正成功を表すエラー信号Ｅ２を出力する。さらに、エラービット数が１ビット以上の場合で訂正できなかった場合は、訂正不可通知としてエラー信号Ｅ３を出力する。さらに、エラー検出・訂正および訂正不可と判定されたデータフレームのアドレスやエラー種類などのエラー情報を同時に出力する。【００３１】
また、前述したように、ＣＲＡＭ制御部１はユーザロジックの一部としてプログラマブルデバイスに実装するため、回路規模が大きくなるとＣＲＡＭ制御部自身の中性子ソフトエラー率が大きくなってしまう。そのため、本実施例における機能ブロックはモジュール構成となっており、必要な機能ブロックのみを選択して実装することができる。不要なブロックについては切り離して、プログラマブルデバイスに実装しないことで、ＣＲＡＭ制御部自身の回路規模を縮小し、ソフトエラー障害を低減できる。【００３２】
図６は、エラー信号出力部８の構成例を示す図である。エラー信号出力部８では、機能ブロック部７からの複数のエラー信号を外部で必要な形式（種類、本数、信号形状(レベル、パルス)、タイミング）のエラー信号に変換して出力する。図６では、機能ブロック部（＃０〜＃ｎ）からのエラー信号Ｅ１〜Ｅ３、およびエラー情報を、論理和８０〜８３でまとめて、エラー信号Ｅ１’、Ｅ２’、Ｅ３’およびエラー情報として出力する。
このように、本実施例におけるプログラマブルデバイス１００では、ＣＲＡＭ制御部１によって、ＣＲＡＭ９の複数の任意領域に対するエラーチェック順序、チェック内容（エラー処理番号）、繰返し回数を自由に設定することができる。これより、ＣＲＡＭ９内の指定した領域を重点的にエラーチェックすることで、エラー検出処理の効率が向上し、エラー検出時間を短縮できる。【００３３】
例えば、ＦＰＧＡベンダから提供されるＣＲＡＭのユーザ使用ビット情報を基に、そのビットが含まれるデータフレームのみをチェックするように領域テーブル３を設定することで、チェックするフレーム数が限定されるため、エラー検出時間を短縮できる。また、本実施例のプログラマブルデバイスを搭載した電子システム装置では、プログラマブルデバイスにおいてソフトエラーの検出・訂正が従来に比べて短時間で完了するため、すばやくリカバリ処理を実行することができ、装置全体の復旧時間を短縮できる。【００３４】
また、本実施例におけるプログラマブルデバイス１００では、領域テーブル４の設定情報を基に、エラーが検出された領域情報を通知、または領域別にエラー信号を通知できる。ＣＲＡＭ領域情報とその領域に格納されるユーザロジックの構成情報は対応しているため、エラーが発生したＣＲＡＭ領域が特定できれば、エラーとなったユーザロジック部分が特定でき、そのユーザロジックに合わせて必要最低限の最適なリカバリ処理を行うことができる。【００３５】
なお、本実施例では、ＣＲＡＭ制御部１はプログラム可能なユーザロジックの一部としてＣＲＡＭ９に実装しており、実行順序テーブル４および領域テーブル３は、プログラマブルデバイス内部のブロックＲＡＭに格納している。ＣＲＡＭ制御部１はＣＲＡＭに実装する以外に、プログラマブルデバイス内部の専用ハードウェア回路として実装してもよい。また、ＣＲＡＭ制御回路１を外部デバイスに実装した構成でもよい。また、上記のエラー検出ブロック７０ではＣＲＣを用いたが、エラーを検出するための方法をＣＲＣに限定するものではない。【００３６】
また、図示していないが、機能ブロックの種類には、複数ビットのソフトエラーを検出・訂正できる回路ブロックなどを含む。訂正手段はＥＣＣなどの訂正符号技術を使用してもよいし、外部メモリに格納されているコンフィギュレーションデータをフレーム単位で呼び出してＣＲＡＭに上書きする訂正手法を使用してもよい。さらに、全てのフレームに対して、エラー検出有無に関わらず、常に上書きする強制訂正手法を使用してもよい。また、他の機能ブロックとして、訂正後または訂正直後に再度エラーチェックを１回乃至複数回行うことで訂正不可（ハードウェア故障）を検出するハードエラー検出ブロックなどが含まれる。【００３７】
以上のことから、本実施例によれば、電子システム製品に用いるプログラマブルデバイスにおいて、コンフィギュレーションメモリ内の重要なデータ領域のみをエラーチェックすることで、コンフィギュレーションメモリのエラー検出時間を短縮することができる。さらに、本実施例のプログラマブルデバイスを搭載した製品では、高速にコンフィギュレーションメモリのエラーを検知でき、装置のリカバリ時間を短縮でき、高信頼化および可用性の向上を図ることができる。これより、ソフトエラー検出時間を短縮し、信頼性を向上したプログラマブルデバイス及びこれを用いた電子システム装置を提供することができる。
【実施例２】
【００３８】
図７は、実施例２に係るプログラマブルデバイスの構成図である。本実施例のプログラマブルデバイス１０１は、実施例１のＣＲＡＭ制御部１において、デバイス外部からの割込み信号によってＣＲＡＭ９のエラーチェック順序を制御できるように構成している。【００３９】
ＣＲＡＭ制御部１Ａ内のシーケンサ部５には、外部からの割り込み信号を入力する割込信号インタフェース（ＩＦ）１７を接続している。割込信号ＩＦ１７には０〜ｎ番の複数の割り込み信号が入力できる。割り込み信号が入力されると、インタフェースの入力ポート番号に従って、シーケンサ部５に割込み番号を通知する（１７ａ）。シーケンサ部５はその割込み番号に従って、実行中のＣＲＡＭエラーチェックの途中に、指定されたＣＲＡＭエラーチェック処理を割り込ませて実行する。【００４０】
図８は、本実施例における実行順序テーブル４Ａを示す図である。通常は、テーブルの内容に従って実行番号０→１→３→０という順序で、領域Ａ０〜Ａ２に対するＣＲＡＭエラー検出・訂正の動作を繰り返し実行している。例えば、ここで割り込みＩＦ１７のポート２に割込み信号が入力された場合、割込信号ＩＦ１７はシーケンサ部５に割り込み番号（＝２）を通知する。割込み番号を受信したシーケンサ部は優先的にこの割込み番号（＝２）に従って、実行順序テーブル４Ａの実行番号２の処理を実行する。図８の例では、ＣＲＡＭ９の全面領域Ａ５に対するエラー検出および訂正動作が実行される。また、実行番号２のテーブルの次の実行番号には、通常のエラーチェック動作（実行番号０）を設定することで、割り込み信号による動作が終了後、自動的に通常のエラーチェック動作に復旧させることができる。【００４１】
このように、本実施例におけるプログラマブルデバイス１０１では、ＣＲＡＭ制御部１Ａに割込信号ＩＦ１７を追加するよって、ＣＲＡＭ９内の通常のエラーチェックだけでなく、外部からの割込み信号によって、指定したエラーチェックを強制実行することができる。例えば、通常は部分的な領域のエラーチェックを実行している場合でも、強制的にＣＲＡＭ全領域のエラーチェックを割り込み実行できる。また、ユーザロジックの各回路モジュールや、プログラマブルデバイス１０１に接続される他のデバイスや、プログラマブルデバイスを搭載した装置側からの異常信号をＣＲＡＭ制御部１Ａで受信し、その異常に関連するプログラマブルデバイスのＣＲＡＭ領域のみをエラー検出・訂正することができ、エラー検出効率が向上しエラー検出時間を短縮できる。【００４２】
以上のことから、本実施例のプログラマブルデバイスでは、割り込み信号を使ってユーザが指定した領域のみエラーチェックすることで、ＣＲＡＭ内のソフトエラー検出時間を短縮することができる。また、本実施例のプログラマブルデバイスを搭載した装置では、高速にＣＲＡＭのエラーを検知でき、装置のリカバリ時間を短縮でき、高信頼化および可用性の向上を図ることができる。これより、ソフトエラー検出時間を短縮し、信頼性を向上したプログラマブルデバイス及びこれを用いた電子システム装置を提供することができる。
【実施例３】
【００４３】
図９は、プログラマブルデバイスを搭載した電子システム装置の一例を示す構成図である。本実施例では、電子システム装置として通信装置を例に挙げ、またプログラマブルデバイスとしてＦＰＧＡ（Field Programmable Gate Array）を用いた場合を示している。【００４４】
通信装置９０は、コールドスタンバイと呼ばれる待機系の２重化構成となっており、現用系９１と、予備系９２で構成される。現用系９１のユニットが稼動状態（ＡＣＴ）のときは、予備系９２は電源ＯＦＦの状態で待機（ＳＢＹ）している。ここで、何らかの原因により現用系９１に異常が発生した場合は、予備系９２に動作（ＡＣＴ）を切替えて装置稼動を継続する。【００４５】
それぞれの系は、複数種類のユニットで構成されている。通信制御ユニット９１ｃ，９２ｃは、主に通信用パケットデータを入力し、そのパケットデータに付加される送り先データに従って出力先を選択する。診断ユニット９１ｂ，９２ｂは、この通信制御ユニット９１ｃ，９２ｃが正常に動作しているかを診断する。監視ユニット９１ａ，９２ａは、通信制御ユニット９１ｃ，９２ｃおよび診断ユニット９１ｂ，９２ｂの動作開始、リセット、搭載しているプロセッサやプログラマブルデバイスの初期化等、ユニット動作の制御を行う。本例では、全てのユニットに、実施例１のＣＲＡＭ制御部１を実装したＦＰＧＡ９３，９４が搭載されている。【００４６】
図１０は、通信装置９０のエラー発生時の制御フローを示す図である。ここでは、現用系９１が稼動状態で、予備系９２が待機状態のとき、現用系９１側でエラーが検出された場合の例を示す。【００４７】
通信装置を稼動（Ｓ０）後、診断ユニット９１ｂは各ユニットのＦＰＧＡからのＣＲＡＭエラー検出信号を監視する（Ｓ１）。ＣＲＡＭエラーが検出された場合（Ｓ２）、直ちに現用系９１と予備系９２の系切り替え処理を行う（Ｓ３）。本例では、予備系９２を稼動状態へ、現用系９１を待機状態へ切り替える。装置としては予備系９２で稼動を継続する。一方で、エラーが検出された現用系９１の監視ユニット９１ａは、エラーを発生したＦＰＧＡに関連するユニット（例えば通信制御ユニット９１ｃ）の一時的停止処理を行う（Ｓ４）。このとき診断ユニット９１ｂは、エラー情報をログファイルに出力する。ログファイルには、エラー発生時刻と、検出や訂正成功、訂正不可などのエラーモードの情報や、エラーが発生したデータフレームのアドレス情報などが記録される（Ｓ５）。【００４８】
また、図１１のように、モニタ画面１８上のユーザインタフェース画面１９に、取得したエラー情報の内容を表示してもよい（Ｓ５）。その後、通信制御ユニット９１ｃのＦＰＧＡはＣＲＡＭのエラー訂正処理を行い（Ｓ６）、監視ユニット９１ａはＦＰＧＡのリセット処理を行う（Ｓ７）。また監視ユニット９１ａは、装置のファームウエアによるエラー検出前後のパケット廃棄、再送によるリカバリ処理を行い（Ｓ８）、待機状態として次の系切り替えに備える。復旧後に系切り戻しが必要な装置などでは、ここで再度系切り替えを実施する。【００４９】
本実施例によるプログラマブルデバイスを用いて通信装置を構成すると、従来リカバリ処理時間の多くを費やすコンフィグレーションメモリエラーの検出時間（Ｓ１〜Ｓ２）を短縮することができ、装置復旧処理時間を短縮することが可能となる。【００５０】
例えば、図９に示す予備系９２を持つ通信装置９０の場合、何らかの原因により現用系９１で異常が発生した場合、装置を利用しているユーザに影響のない時間で系を切り替える必要がある。この場合、予備系９２への切り替えが短時間であれば、装置を利用しているユーザには影響が無いようにすることができる。また、通常停止している予備系９２も、切り替え直後に障害が発生することがある。環境放射線による障害、いわゆるソフトエラー障害に対し、本実施例のように系切り替え時間内に現用系９１を復旧することで、予備系９２の障害発生に備えることができる。これは、通信装置のような信頼性、可用性を求める装置において有効である。【００５１】
また、電力削減を目的として、待機系のクロックを停止する等で、即動作可能な状態で、動作のみ停止させて待機することがあるが、この場合、待機系のプログラマブルデバイスが、待機から実行モードに移った直後にプログラマブルデバイス内のコンフィギュレーションメモリのデータ反転が検出されることも考えられ、その場合も系切替時間として許される時間内での復旧を行うことができる。【００５２】
また、本実施例におけるプログラマブルデバイス９３、または９４では、領域テーブル４の設定情報を基に、エラーが検出された領域情報を通知、または領域別にエラー信号を通知できる。ＣＲＡＭ領域情報とその領域に格納されるユーザロジックの構成情報は対応しているため、エラーが発生したＣＲＡＭ領域情報によって、エラーとなったユーザロジック部分が特定でき、そのユーザロジックに合わせて必要最低限の最適なリカバリ処理を行うことができる。本実施例では、例えば、ある領域１におけるエラーについてはＣＲＡＭ訂正のみを行うが、ユーザロジックのステートマシンなどの制御部が含まれた別の領域２でエラーが発生した場合はＦＰＧＡをリコンフィギュレーションするなど、エラー発生領域によって異なるリカバリ処理を行う。【００５３】
以上のことから、本実施例によれば、電子システム装置に搭載するプログラマブルデバイスのユーザが指定した領域のみエラーチェックすることで、ＣＲＡＭ内のソフトエラー検出時間を短縮することができる。また、本実施例のプログラマブルデバイスを搭載した装置では、高速にＣＲＡＭのエラーを検知でき、装置のリカバリ時間を短縮でき、高信頼化および可用性の向上を図ることができる。これより、ソフトエラー検出時間を短縮し、信頼性を向上したプログラマブルデバイス及びこれを用いた電子システム装置を提供することができる。
【実施例４】
【００５４】
実施例４では、プログラマブルデバイスを搭載した電子システム装置として、圧延装置やエレベータ、水道制御ポンプなどで使用されるモータ制御システムを例に挙げて説明する。【００５５】
図１２は、モータ制御システム２００の構成例を示す図である。本システム２００は、モータ制御装置２０、モータ２６、システム環境を監視する監視カメラ２５、オペレータが稼動状態などを確認するためのモニタ２４で構成される。モータ制御装置２０は、実施例１のＣＲＡＭ制御部１が実装されたＦＰＧＡ２１と、外部装置群とのインタフェースを行う入出力ＩＦ２３で構成される。本システム２００では、制御装置２０からモータの回転量を示す制御値２６ａを出力し、同時に現時点の回転量２６ｂを、モータ２６内部に搭載されたセンサ（図示せず）で監視し、制御装置２０側へフィードバックすることで、所望の回転量を保つなどのモータ制御動作を行っている。ここで、モータ２６の回転量制御にＦＰＧＡ２１を用いるため、ＣＲＡＭ内に発生するソフトエラーによってユーザロジック２２が破壊されると、制御値が急激に変わり、異常な高速回転状態や、停止状態など、予期せぬシステム障害発生の可能性がある。【００５６】
本実施例では、ＣＲＡＭ制御部１によって、ＦＰＧＡ２１のＣＲＡＭに発生するソフトエラー検出および訂正を行う。特に、モータ制御に関係するユーザロジック２２の構成情報が格納されるＣＲＡＭ領域のみをチェックするため、モータ２６のフィードバック制御サイクル以内でのＣＲＡＭ内のエラーチェック・訂正を可能とし、モータ停止などのシステム障害を回避することができる。【００５７】
また、実施例２に示した割込信号ＩＦ１７を有するＣＲＡＭ制御部１を使用した場合、モータ２６の惰性動作時間や、非稼働時間情報を利用したＦＰＧＡ２１のエラーチェックが可能なため、さらに効率良くモータ２６の異常発生率を抑制することができる。【００５８】
本実施例によれば、プログラマブルデバイスにおけるソフトエラーの検出時間を短縮することができ、ＦＰＧＡソフトエラーに起因する装置異常から短時間で復旧することができ、電子システム装置の信頼性を向上することができる。
【実施例５】
【００５９】
図１３は、実施例５に係るプログラマブルデバイスの構成図である。前記実施例におけるＣＲＡＭ制御部１および１Ａは、ＦＰＧＡのユーザロジックとして実装されるため、ＣＲＡＭ制御部自身がソフトエラーによって破壊される可能性がある。そこで本実施例では、プログラマブルデバイス１０２内のＣＲＡＭ制御部１Ｂは、ＣＲＡＭ制御部自身の動作をチェックするための内部診断部２７を有する構成とした。【００６０】
内部診断部２７は、エラーデータ挿入部２８と比較部２９で構成される。エラーデータ挿入部２８は、ＣＲＡＭ９から読み出した任意のデータフレーム２ａに対し、意図的にエラーデータを挿入して再度ＣＲＡＭ９へ書き戻す（２８ａ）。その後比較部２９は、エラー検出ブロック＃０またはエラー訂正ブロック＃１から出力されるエラー情報（発生アドレスおよびデータ）８ｂと、故意に書き込んだエラー情報２８ａとを比較する。比較結果が一致しない場合、ＣＲＡＭ制御部１Ｂが何らかの異常状態であるとしてＦＰＧＡまたは外部にエラー信号２７ａを出力する。
内部診断部２７も他の機能ブロック同様、領域テーブル３および実行順序テーブル４の設定データに従って、シーケンサ部５の制御信号５ｃによって動作する。【００６１】
また、図示していないが、上記内部診断部２７では、ＣＲＡＭ９の各データフレームのリードライトチェックを複数回実施することで異常部位を弁別することができる。例えば、全領域のフレームに対してＡＬＬ“０”またはＡＬＬ“１”のリードライトチェックを行い、複数回同じデータフレームでエラーが検出される場合はＣＲＡＭ９側の異常とする。また、エラーを挿入してもエラー検出信号が出力されない場合や違うアドレスのデータフレームでエラーが検出される場合は、ＣＲＡＭ制御部１Ｂの異常と判断できる。また、外部ＲＯＭ５０に格納されたコンフィギュレーションデータによる上書き訂正を使用し、リードライトチェックで異常が検出された場合は外部ＲＯＭ５０の異常と判断できる。【００６２】
また、本診断手法では、ＣＲＡＭデータに異常値を書き込むため、通常ユーザロジックが動作している時間帯に診断を実施する場合は、ユーザロジックが使用していないデータフレームを利用して上記チェックを行う。ＦＰＧＡの起動直後などでユーザロジックをまだ動作させていない時間帯に診断を実施できる場合には、ＣＲＡＭ９の全データフレームを対象としたチェックを実施する。【００６３】
また、ＣＲＡＭ制御部１Ｂでは、上記診断に加え、ＣＲＡＭ制御部１Ｂ自身の回路情報が格納されたＣＲＡＭ領域を領域テーブル４に設定し、その領域のＣＲＡＭデータを定期的にチェックすることによってＣＲＡＭ制御部１Ｂの診断を行う構成としてもよい。また、ＣＲＡＭ制御部１Ｂの主要部分を全て２重化し、出力値の比較を行なうことでＣＲＡＭ制御部自身の異常をＦＰＧＡ側へ通知する構成としても良い。【００６４】
また、内部診断部２７のエラーデータ挿入部２８を使えば、ＣＲＡＭ内に意図的に誤ったエラーデータを挿入できる。そのため、ＦＰＧＡに擬似的なソフトエラー障害を発生させ、ソフトエラー発生時のシステム挙動の検証に使用しても良い。【００６５】
本実施例によれば、ＣＲＡＭ制御部自身のソフトエラー率を低減し、高信頼なＣＲＡＭエラー検出・訂正を実現することで、システム装置の装置異常を短時間で復旧することができ、電子システム装置の信頼性を向上することができる。
【符号の説明】
【００６６】
１，１Ａ，１Ｂ：ＣＲＡＭ御部、
２：ＣＲＡＭリードライト部、
３：領域テーブル、
４：実行順序テーブル、
５：シーケンサ部、
６：セレクタ部、
７：機能ブロック部、
８：エラー信号出力部、
９：コンフィギュレーションメモリ（ＣＲＡＭ）、
１０：データフレーム、
１１：ＣＲＣエラーチェック部、
１２，１５：冗長ビット格納部、
１３：ＣＲＣ冗長ビット生成部、
１４：エラーチェック訂正部、
１６：冗長ビット生成部、
１７：割込信号ＩＦ、
２０：モータ制御装置、
２７：内部診断部、
２８：エラーデータ挿入部、
２９：比較部、
５０：外部ＲＯＭ、
９０：通信装置、
１００，１０１，１０２：プログラマブルデバイス（ＦＰＧＡ）、
２００：モータ制御システム。
【図１】
2015068285.tif 000003
【図２】
2015068285.tif 000004
【図３】
2015068285.tif 000005
【図４】
2015068285.tif 000006
【図５】
2015068285.tif 000007
【図６】
2015068285.tif 000008
【図７】
2015068285.tif 000009
【図８】
2015068285.tif 000010
【図９】
2015068285.tif 000011
【図１０】
2015068285.tif 000012
【図１１】
2015068285.tif 000013
【図１２】
2015068285.tif 000014
【図１３】
2015068285.tif 000015
【手続補正書】
【提出日】平成28年4月12日(2016.4.12)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
コンフィギュレーションメモリを有するプログラマブルデバイスを搭載する電子システム装置において、
前記プログラマブルデバイスは、前記コンフィギュレーションメモリの診断手段として、
前記コンフィギュレーションメモリのデータをリード、ライトするリードライト部と、
前記コンフィギュレーションメモリのデータに対してエラーチェックを行う機能ブロック部と、前記リードライト部と前記機能ブロック部に対し、ユーザロジックの回路構成と対応した前記コンフィギュレーションメモリ内の領域情報に基づいて、所定の領域を所定の順序でエラーチェックを行うよう制御するシーケンサ部と、
前記エラーチェックでエラーが検出された場合、前記機能ブロック部からのエラーが検出された領域情報を含むエラー信号を入力し、前記電子システム装置に出力するエラー信号出力部と、
を備えることを特徴とする電子システム装置。
【請求項２】
請求項１に記載の電子システム装置であって、
前記コンフィギュレーションメモリの診断手段には、
前記コンフィギュレーションメモリ内のエラーチェックを行う、ユーザロジックの回路構成と対応した前記領域情報を格納する領域テーブルと、
前記コンフィギュレーションメモリのエラーチェックを実行する順序情報を格納する実行順序テーブルと、
を備えることを特徴とする電子システム装置。
【請求項３】
請求項１または２に記載の電子システム装置であって、
前記コンフィギュレーションメモリの診断手段には、少なくとも１つの入力ポートを有する割込信号入力部を有し、該入力ポートから入力する割込信号に基づいて指定されたエラーチェックの割り込み動作を実行することを特徴とする電子システム装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の電子システム装置であって、
前記コンフィギュレーションメモリの診断手段には、該診断手段自身の正常動作を確認する内部診断部を備え、
該内部診断部は、前記コンフィギュレーションメモリへエラーデータを挿入するエラーデータ挿入部と、挿入したエラー情報と、検出されたエラー情報を比較する比較部で構成されることを特徴とする電子システム装置。
【請求項５】
請求項１乃至４のいずれか一項に記載の電子システム装置であって、
前記機能ブロック部は、前記コンフィギュレーションメモリのエラー検出と訂正処理を行うものであって、処理内容に応じて複数の機能ブロックから構成され、各機能ブロックは必要に応じて追加・削除することが可能なモジュール構成としたことを特徴とする電子システム装置。
【請求項６】
請求項１乃至５のいずれか一項に記載の電子システム装置であって、
当該電子システム装置は複数のユニットで構成され、前記プログラマブルデバイスは各ユニットに搭載されていることを特徴とする電子システム装置。
【請求項７】
コンフィギュレーションメモリを有するプログラマブルデバイスにおいて、
前記コンフィギュレーションメモリの診断手段として、
前記コンフィギュレーションメモリのデータをリード、ライトするリードライト部と、
前記コンフィギュレーションメモリのデータに対してエラーチェックを行う機能ブロック部と、前記リードライト部と前記機能ブロック部に対し、ユーザロジックの回路構成と対応した前記コンフィギュレーションメモリ内の領域情報に基づいて、所定の領域を所定の順序でエラーチェックを行うよう制御するシーケンサ部と、
前記機能ブロック部からのエラーが検出された領域情報を含むエラー信号を入力し、外部に出力するエラー信号出力部と、
を備えることを特徴とするプログラマブルデバイス。
【請求項８】
請求項７に記載のプログラマブルデバイスであって、
前記コンフィギュレーションメモリの診断手段には、
前記コンフィギュレーションメモリ内のエラーチェックを行う、ユーザロジックの回路構成と対応した前記領域情報を格納する領域テーブルと、
前記コンフィギュレーションメモリのエラーチェックを実行する順序情報を格納する実行順序テーブルと、
を備えることを特徴とするプログラマブルデバイス。
【請求項９】
請求項７または８に記載のプログラマブルデバイスであって、
前記コンフィギュレーションメモリの診断手段には、少なくとも１つの入力ポートを有する割込信号入力部を有し、該入力ポートから入力する割込信号に基づいて指定されたエラーチェックの割り込み動作を実行することを特徴とするプログラマブルデバイス。
【請求項１０】
請求項７乃至９のいずれか一項に記載のプログラマブルデバイスであって、
前記コンフィギュレーションメモリの診断手段には、該診断手段自身の正常動作を確認する内部診断部を備え、
該内部診断部は、前記コンフィギュレーションメモリへエラーデータを挿入するエラーデータ挿入部と、挿入したエラー情報と、検出されたエラー情報を比較する比較部で構成されることを特徴とするプログラマブルデバイス。
【請求項１１】
請求項７乃至１０のいずれか一項に記載のプログラマブルデバイスであって、
前記機能ブロック部は、前記コンフィギュレーションメモリのエラー検出と訂正処理を行うものであって、処理内容に応じて複数の機能ブロックから構成され、各機能ブロックは必要に応じて追加・削除することが可能なモジュール構成としたことを特徴とするプログラマブルデバイス。
【国際調査報告】
2015068285.tif 000016
2015068285.tif 000017
2015068285.tif 000018
2015068285.tif 000019