(57)【要約】  論理処理装置は、複数の領域毎にロジックをプログラム可能なプログラマブルロジックデバイス（３０１）と、前記プログラマブルロジックデバイスの複数の領域のうちの異なる領域を未使用領域として前記未使用領域以外の領域を使用領域として相互に同じ機能を実現するための複数のコンフィグレーションデータを記憶するコンフィグレーションメモリ（ＭＥＭ１〜ＭＥＭｎ）と、前記複数のコンフィグレーションデータのうちのいずれか１個を選択して前記プログラマブルロジックデバイスのロジックをプログラムさせる選択回路（３０３）とを有し、前記選択回路は、前記複数のコンフィグレーションデータのうちの前記プログラマブルロジックデバイスの動作に基づくエラーが発生しないコンフィグレーションデータを選択する。
2014147780.tif 000002
【特許請求の範囲】
【請求項１】
複数の領域毎にロジックをプログラム可能なプログラマブルロジックデバイスと、
前記プログラマブルロジックデバイスの複数の領域のうちの異なる領域を未使用領域として前記未使用領域以外の領域を使用領域として相互に同じ機能を実現するための複数のコンフィグレーションデータを記憶するコンフィグレーションメモリと、
前記複数のコンフィグレーションデータのうちのいずれか１個を選択して前記プログラマブルロジックデバイスのロジックをプログラムさせる選択回路とを有し、
前記選択回路は、前記複数のコンフィグレーションデータのうちの前記プログラマブルロジックデバイスの動作に基づくエラーが発生しないコンフィグレーションデータを選択することを特徴とする論理処理装置。
【請求項２】
前記選択回路は、前記複数のコンフィグレーションデータを順に選択し、前記プログラマブルロジックデバイスがエラー信号を出力したときのコンフィグレーションデータを選択せず、前記プログラマブルロジックデバイスがエラー信号を出力しないときのコンフィグレーションデータを選択して、前記プログラマブルロジックデバイスのロジックをプログラムさせることを特徴とする請求項１記載の論理処理装置。
【請求項３】
さらに、前記プログラマブルロジックデバイスがエラー信号を出力したときには、前記選択回路に次のコンフィグレーションデータを選択させるプロセッサを有することを特徴とする請求項２記載の論理処理装置。
【請求項４】
前記コンフィグレーションメモリは、前記複数のコンフィグレーションデータをそれぞれ記憶する複数のコンフィグレーションメモリを有し、
前記選択回路は、前記複数のコンフィグレーションメモリのうちの１個のコンフィグレーションメモリを選択することを特徴とする請求項１記載の論理処理装置。
【請求項５】
前記コンフィグレーションメモリは、異なるアドレスに前記複数のコンフィグレーションデータをそれぞれ記憶し、
前記選択回路は、前記複数のアドレスのうちの１個のアドレスを選択することを特徴とする請求項１記載の論理処理装置。
【請求項６】
前記未使用領域は、前記プログラマブルロジックデバイス内の１個又は複数の領域であることを特徴とする請求項１記載の論理処理装置。
【請求項７】
さらに、前記プログラマブルロジックデバイスの出力信号を用いて処理する外部装置を有し、
前記選択回路は、前記複数のコンフィグレーションデータのうちの前記外部装置がエラーを発生したコンフィグレーションデータを選択せず、前記複数のコンフィグレーションデータのうちの前記外部装置がエラーを発生しないコンフィグレーションデータを選択することを特徴とする請求項１記載の論理処理装置。
【請求項８】
前記プログラマブルロジックデバイスは、前記複数の領域毎にエラー信号を発生可能であり、
前記選択回路は、前記プログラマブルロジックデバイスがエラー信号を発生したときには、前記エラー信号を基に、前記プログラマブルロジックデバイスの複数の領域のうちの前記エラー信号が発生した領域を未使用領域とするコンフィグレーションデータを選択することを特徴とする請求項１記載の論理処理装置。
【請求項９】
前記プログラマブルロジックデバイスは、前記複数の領域毎のエラー信号を記憶するエラー表示レジスタを有し、
前記選択回路は、前記エラー表示レジスタに記憶されているエラー信号を基に、前記エラー信号が発生した領域を未使用領域とするコンフィグレーションデータを選択することを特徴とする請求項８記載の論理処理装置。
【請求項１０】
複数の領域毎にロジックをプログラム可能なプログラマブルロジックデバイスと、
前記プログラマブルロジックデバイスの複数の領域のうちの異なる領域を未使用領域として前記未使用領域以外の領域を使用領域として相互に同じ機能を実現するための複数のコンフィグレーションデータを記憶するコンフィグレーションメモリとを有する論理処理装置の処理方法であって、
前記複数のコンフィグレーションデータのうちの前記プログラマブルロジックデバイスの動作に基づくエラーが発生しないコンフィグレーションデータを選択し、
前記選択されたコンフィグレーションデータを基に、前記プログラマブルロジックデバイスのロジックをプログラムさせることを特徴とする論理処理装置の処理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、論理処理装置及びその処理方法に関する。
【背景技術】
【０００２】
自己修復機能付き情報処理装置が知られている（例えば、特許文献１参照）。論理処理部は、論理構成要素により構成され所定機能を実現する。予備論理処理部は、論理構成要素により再構成可能に構成され論理処理部の所定機能を再現しうる。データ保持手段は、論理処理部の構成データを保持する。障害検出手段は、論理処理部での障害発生を検出する。再構成手段は、障害検出手段による障害発生検出時にデータ保持手段から読み出した構成データに基づき予備論理処理部を論理処理部と同一の論理回路構成になるように再構成する。【０００３】
また、複数の論理構成要素から成る回路の再構成が可能な集積回路が知られている（例えば、特許文献２参照）。機能構成部は、論理構成要素から成る所定の機能を備える複数の機能回路部と予備機能回路部とを備える。共通バスは、入出力信号をインタフェースする。第１の構成選択部は、複数の機能回路部のいずれかの故障に対応して第１の構成種別テーブルで指定される第１の構成種別データを選択する。第１のメモリは、機能回路部相互間の接続状態を指定する第１の配置配線データを記憶する。第１の転送部は、第１の配置配線データを抽出して、回路部相互間の接続と予備機能回路部の回路とを書き込む。【０００４】
また、再構成可能なディジタル論理ユニットが知られている（例えば、特許文献３参照）。複数の論理セルは、構成可能な特性を有する。メモリは、複数の論理セルの関数性に関する情報を含んだ複数のマイクロプログラムを有し、マイクロプログラムの少なくとも１つが定められたアプリケーションに関係して少なくとも論理ユニットの現在の動作中に再プログラム可能である。第１の手段は、少なくとも１つのマイクロプログラムを選択する。第２の手段は、少なくとも論理ユニットの現在の動作中に選択されたマイクロプログラムの関数性情報に応じて論理セルを構成する。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平８−４４５８１号公報
【特許文献２】特開２００９−１４０３５３号公報
【特許文献３】特表２００５−５１０９０１号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
情報処理装置は、論理処理部と予備論理処理部とを有する。論理処理部での障害発生を検出すると、予備論理処理部を論理処理部と同一の論理回路構成になるように再構成する。この場合、予備論理処理部に障害がある場合には、修復することができない。【０００７】
また、予備論理処理部は、複数の論路処理部のうちの最大セル数の論理処理部と同じセル数を持つ必要がある。なぜなら、予備論理処理部が論理処理部を代替するためには、予備論理処理部は論理処理部と同じセル数が必要だからである。そのため、予備論理処理部は、必要とするセル数が多くなり、非常に非効率である。また、論理処理部及び予備論理処理部にセル数の制限があるため、設計に制限がある。【０００８】
本発明の目的は、短時間でプログラマブルロジックデバイスの内部故障を修復することができる論理処理装置及びその処理方法を提供することである。
【課題を解決するための手段】
【０００９】
論理処理装置は、複数の領域毎にロジックをプログラム可能なプログラマブルロジックデバイスと、前記プログラマブルロジックデバイスの複数の領域のうちの異なる領域を未使用領域として前記未使用領域以外の領域を使用領域として相互に同じ機能を実現するための複数のコンフィグレーションデータを記憶するコンフィグレーションメモリと、前記複数のコンフィグレーションデータのうちのいずれか１個を選択して前記プログラマブルロジックデバイスのロジックをプログラムさせる選択回路とを有し、前記選択回路は、前記複数のコンフィグレーションデータのうちの前記プログラマブルロジックデバイスの動作に基づくエラーが発生しないコンフィグレーションデータを選択する。
【発明の効果】
【００１０】
コンフィグレーションメモリに複数のコンフィグレーションデータを記憶させることにより、短時間でプログラマブルロジックデバイスの内部故障を修復することができる。
【図面の簡単な説明】
【００１１】
【図１】図１は、第１の実施形態によるプログラマブルロジックデバイスの複数のコンフィグレーションデータの例を示す図である。
【図２】図２は、プログラマブルロジックデバイスの修復方法を説明するための図である。
【図３】図３は、第１の実施形態による論理処理装置の構成例を示す図である。
【図４】図４は、プログラマブルロジックデバイスのエラー検出方法を示す図である。
【図５】図５は、図３の選択回路の処理方法を示すフローチャートである。
【図６】図６は、第２の実施形態による論理処理装置の構成例を示す図である。
【図７】図７は、図６の選択回路の処理方法を示すフローチャートである。
【図８】図８は、第３の実施形態による論理処理装置の構成例を示す図である。
【図９】図９は、図８のコンフィグレーションメモリの構成例を示す図である。
【図１０】図１０は、図８の選択回路の処理方法を示すフローチャートである。
【図１１】図１１は、第４の実施形態によるプログラマブルロジックデバイスの複数のコンフィグレーションデータの例を示す図である。
【図１２】図１２は、プログラマブルロジックデバイスの修復方法を説明するための図である。
【図１３】図１３は、第５の実施形態による論理処理装置の構成例を示す図である。
【図１４】図１４は、第６の実施形態による論理処理装置の構成例を示す図である。
【図１５】図１５は、コンフィグレーションデータの例を示す図である。
【図１６】図１６は、図１４のプログラマブルロジックデバイスの一部の構成例を示す図である。
【図１７】図１７は、図１４のＲＯＭに記憶されるテーブルの構成例を示す図である。
【図１８】図１８は、図１４の選択回路の処理方法を示すフローチャートである。
【図１９】図１９は、図１４のプロセッサの処理方法を示すフローチャートである。
【発明を実施するための形態】
【００１２】
（第１の実施形態）
図１は、第１の実施形態によるプログラマブルロジックデバイス（ＰＬＤ）の複数のコンフィグレーションデータＣＦ１〜ＣＦ９の例を示す図である。プログラムロジックデバイスは、例えば、ＦＰＧＡ（Field Programmable Gate Array）であり、プログラム可能な論理ゲートとプログラム可能な配線とを有し、再構成可能なロジックデバイスである。論理ゲートは、複数の論理セルで構成される。論理ゲート及び配線をプログラムするには、ユーザがハードウエア記述言語（ＨＤＬ）などで設計を行い、コンパイルによって論理ゲートの配置及び配線情報を含むバイナリファイルを生成する。プログラマブルロジックデバイスが、このバイナリファイルを読み込んで、内部回路を生成することをコンフィグレーションと呼ぶ。また、このバイナリファイルのことをコンフィグレーションデータと呼ぶ。
【００１３】
プログラマブルロジックデバイスは、内部の論理セル領域を複数の領域Ｒ１〜Ｒ９に分割し、複数の領域Ｒ１〜Ｒ９毎にロジックをプログラム可能である。領域Ｒ１〜Ｒ９は、全ての論理セルを一切使用しない未使用領域と、論理セルを使用することができる使用領域に分けられる。本実施形態では、複数の領域Ｒ１〜Ｒ９のうちの異なる領域を未使用領域として未使用領域以外の領域を使用領域として相互に同じ機能を実現するための複数のコンフィグレーションデータＣＦ１〜ＣＦ９を生成する。
【００１４】
例えば、コンフィグレーションデータＣＦ１は、領域Ｒ１を未使用領域とし、領域Ｒ２〜Ｒ９を使用領域としてコンフィグレーションするためのデータである。コンフィグレーションデータＣＦ２は、領域Ｒ２を未使用領域とし、領域Ｒ１、Ｒ３〜Ｒ９を使用領域としてコンフィグレーションするためのデータである。コンフィグレーションデータＣＦ９は、領域Ｒ９を未使用領域とし、領域Ｒ１〜Ｒ８を使用領域としてコンフィグレーションするためのデータである。コンフィグレーションデータＣＦ１〜ＣＦ９は、相互に未使用領域が異なり、全領域Ｒ１〜Ｒ９に対して少なくとも１度は未使用領域が割り当てられるように生成する。図１の例では、コンフィグレーションデータＣＦ１〜ＣＦ９は、それぞれ、１個の領域を未使用領域として、８個の領域を使用領域とする。
【００１５】
プログラマブルロジックデバイスは、コンフィグレーションデータＣＦ１〜ＣＦ９のうちのいずれか１つを選択することにより、任意の領域Ｒ１〜Ｒ９を未使用領域にすることができる。プログラマブルロジックデバイスは、どの領域Ｒ１〜Ｒ９で故障が起きるか予想できないため、プログラマブルロジックデバイスの故障発生時には故障個所が未使用領域に一致するコンフィグレーションデータＣＦ１〜ＣＦ９を選択することにより、プログラマブルロジックデバイスの故障を修復する。
【００１６】
図２は、プログラマブルロジックデバイスの修復方法を説明するための図である。例えば、プログラマブルロジックデバイスの領域Ｒ２で故障が発生した例を説明する。コンフィグレーションデータＣＦ１によりコンフィグレーションした場合、故障が発生した領域Ｒ２は使用領域であるため、プログラマブルロジックデバイスは、正常に動作することができない。これに対し、コンフィグレーションデータＣＦ２によりコンフィグレーションした場合、故障が発生した領域Ｒ２は未使用領域であるため、プログラマブルロジックデバイスは、正常に動作することができる。このようにして、故障が発生した領域が未使用領域になるように、コンフィグレーションデータＣＦ１〜ＣＦ９を選択することにより、プログラマブルロジックデバイスを修復することができる。
【００１７】
図３は、第１の実施形態による論理処理装置の構成例を示す図である。論理処理装置は、プログラマブルロジックデバイス３０１、ｎ個のコンフィグレーションメモリＭＥＭ１〜ＭＥＭｎ、及び選択回路３０３を有する。ここで、図１の場合、ｎ＝９である。選択回路３０３は、不揮発メモリ３０４を有する。
【００１８】
プログラマブルロジックデバイス３０１は、例えばＦＰＧＡであり、ｎ個の領域Ｒ１〜Ｒｎ毎にロジックをプログラム可能である。複数のコンフィグレーションメモリＭＥＭ１〜ＭＥＭｎは、例えばＲＯＭ（Read Only Memory）であり、図１のように、プログラマブルロジックデバイス３０１の複数の領域Ｒ１〜Ｒｎのうちの異なる領域を未使用領域として未使用領域以外の領域を使用領域として相互に同じ機能を実現するための複数のコンフィグレーションデータＣＦ１〜ＣＦｎをそれぞれ記憶する。選択回路３０３は、不揮発メモリ３０４に記憶されたコンフィグレーションデータ番号に応じて、選択信号ＳＥＬ１〜ＳＥＬｎのいずれか１個を有効にする。すなわち、選択回路３０３は、複数のコンフィグレーションメモリＭＥＭ１〜ＭＥＭｎのうちの１個のコンフィグレーションメモリを選択する。コンフィグレーションメモリＭＥＭ１〜ＭＥＭｎは、選択信号ＳＥＬ１〜ＳＥＬｎのうちの有効の信号に応じて、複数のコンフィグレーションデータＣＦ１〜ＣＦｎのうちのいずれか１個を、バス３０２を介して、プログラマブルロジックデバイス３０１に出力する。次に、選択回路３０３は、リセット信号ＲＳをプログラマブルロジックデバイス３０１に出力する。プログラマブルロジックデバイス３０１は、リセット信号ＲＳを入力すると、コンフィグレーションメモリＭＥＭ１〜ＭＥＭｎのいずれかから入力したコンフィグレーションデータを基にコンフィグレーションを行う。以上のように、選択回路３０３は、複数のコンフィグレーションデータＣＦ１〜ＣＦｎのうちのいずれか１個を選択してプログラマブルロジックデバイス３０１のロジックをプログラムさせる。次に、プログラマブルロジックデバイス３０１は、論理処理を行い、領域Ｒ１〜Ｒｎのいずれかでエラーが発生した場合には、エラー信号ＥＲを出力する。選択回路３０３は、エラー信号ＥＲを検出すると、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号を変更し、上記と同様の動作を繰り返す。エラー信号ＥＲが検出されなければ、不揮発メモリ３０４内のコンフィグレーションデータ番号は確定する。そのコンフィグレーションデータ番号に対応するコンフィグレーションデータＣＦ１〜ＣＦｎでは、エラーが発生した領域Ｒ１〜Ｒｎが未使用領域となっており、プログラマブルロジックデバイス３０１は、正常に動作することができる。また、選択回路３０３は、すべてのコンフィグレーションデータＣＦ１〜ＣＦｎにおいてエラー信号ＥＲが発生した場合には、フォルト信号ＦＴを出力し、修復不能であることを知らせる。
【００１９】
図４は、プログラマブルロジックデバイス３０１のエラー検出方法の一例を示す図である。プログラマブルロジックデバイス３０１は、内部バス４００と、機能ブロック４０１と、機能ブロック４０２とを有する。機能ブロック４０１及び４０２は、それぞれ、領域Ｒ１〜Ｒｎのうちの１個又は複数の領域で構成される。例えば、図１のコンフィグレーションデータＣＦ１の場合、機能ブロックブロック４０１は、ハードディスクドライブコントローラであり、領域Ｒ２〜Ｒ５により構成される。機能ブロックブロック４０２は、ＵＳＢ（Universal Serial Bus）コントローラであり、領域Ｒ６〜Ｒ９により構成される。このように、各機能ブロック４０１及び４０２を複数の領域で構成することにより、各領域Ｒ１〜Ｒ９内の論理セルの数の制限をなくすことができる。すなわち、各領域Ｒ１〜Ｒ９内の論理セルの数は、機能ブロック４０１及び４０２のうちの最大の論理セル数にする必要がなくなる。
【００２０】
機能ブロック４０１は、フリップフロップ４１１及びエラー検出回路４１２を有する。フリップフロップ４１１は、例えば、論理セルの入力ノードに接続されるフリップフロップ、又は論理セルの出力ノードに接続されるフリップフロップなどであり、プログラマブルロジックデバイス３０１内に通常配置されている複数のフリップフロップである。フリップフロップ４１１は、例えば、４ビットデータ及びそのパリティビットを記憶する。エラー検出回路４１２は、フリップフロップ４１１に記憶されている４ビットデータを基にパリティビットを演算し、その演算したパリティビットとフリップフロップ４１１内のパリティビットが等しいときには正常と判断してエラー信号を出力せず、異なるときにはエラー信号を出力する。エラー検出回路４１２は、プログラマブルロジックデバイス３０１内のすべて又は一部のフリップフロップ４１１に接続される。プログラマブルロジックデバイス３０１は、複数のエラー検出回路４１２のいずれかがエラー信号を出力すると、エラー信号ＥＲを選択回路３０３に出力する。
【００２１】
機能ブロック４０２は、処理ブロック４２１及び監視部４２２を有する。処理ブロック４２１は、機能を実現するための論理処理を行うブロックである。監視部４２２は、スタート信号ＳＴを処理ブロック４２１に出力する。処理ブロック４２１は、スタート信号ＳＴを入力すると、論理処理を開始し、論理処理を終了すると、完了信号ＤＮを監視部４２２に出力する。監視部４２２は、スタート信号ＳＴを出力してから規定時間内に完了信号ＤＮを入力すれば正常と判断してエラー信号を出力せず、規定時間内に完了信号ＤＮを入力しない場合にはエラー信号ＥＲを出力する。
【００２２】
なお、機能ブロック４０１のエラー検出方法と機能ブロック４０２のエラー検出方法の２種類を説明したが、すべての機能ブロックを同じ方法でエラーを検出してもよいし、異なる方法でエラーを検出してもよい。また、その他、ＥＣＣ（Error Correction Code）又はＣＲＣ（Cyclic
Redundancy Check）を用いてエラーを検出してもよい。また、フリップフロップ４１１は、レジスタ又はステートマシンであってもよい。
【００２３】
図５は、図３の選択回路３０３の処理方法を示すフローチャートである。例えば、論理処理装置の電源が投入されると、選択回路３０３は、図５の処理を行う。
【００２４】
まず、ステップＳ５０１では、選択回路３０３は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出す。ここで、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号の初期値は、１である。
【００２５】
次に、ステップＳ５０２では、選択回路３０３は、読み出したコンフィグレーションデータ番号に応じて、選択信号ＳＥＬ１〜ＳＥＬｎのうちの１個を有効にして、残りを無効にする。例えば、コンフィグレーションデータ番号が１の場合、選択信号ＳＥＬ１が有効になり、残りの選択信号ＳＥＬ２〜ＳＥＬｎが無効になる。コンフィグレーションメモリＭＥＭ１〜ＭＥＭｎのうち、選択信号ＳＥＬ１〜ＳＥＬｎが有効であるコンフィグレーションメモリはコンフィグレーションデータをプログラマブルロジックデバイス３０１に出力し、選択信号ＳＥＬ１〜ＳＥＬｎが無効であるコンフィグレーションメモリはコンフィグレーションデータを出力しない。例えば、コンフィグレーションデータ番号が１の場合、コンフィグレーションメモリＭＥＭ１がコンフィグレーションデータＣＦ１をプログラマグルロジックデバイス３０１に出力する。
【００２６】
次に、ステップＳ５０３では、選択回路３０３は、リセット信号ＲＳをプログラマブルロジックデバイス３０１に出力する。プログラマブルロジックデバイス３０１は、リセット信号ＲＳを入力すると、バス３０２を介して入力したコンフィグレーションデータに基づくコンフィグレーションを行う。その後、プログラマブルロジックデバイス３０１は、論理処理を行い、エラーが発生するとエラー信号ＥＲを出力し、正常動作をすればエラー信号ＥＲを出力しない。
【００２７】
次に、ステップＳ５０４では、選択回路３０３は、エラー信号ＥＲを検出したか否かをチェックし、エラー信号ＥＲが検出されれば、ステップＳ５０５に進む。
【００２８】
ステップＳ５０５では、選択回路３０３は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号をインクリメントする。これにより、コンフィグレーションデータ番号は、１から２に変更される。
【００２９】
次に、ステップＳ５０６では、選択回路３０３は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号がｎより大きいか否かをチェックする。大きくない場合には、ステップＳ５０２に戻り、変更後のコンフィグレーションデータ番号について上記の処理を繰り返す。プログラマブルロジックデバイス３０１が正常動作した場合には、ステップＳ５０４で、エラー信号ＥＲが検出されず、不揮発メモリ３０４のコンフィグレーションデータ番号は、確定する。その結果、コンフィグレーションデータも確定し、プログラマブルロジックデバイス３０１の故障が修復される。次回、電源を投入した時、ステップＳ５０１において、選択回路３０３は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出すので、修復後のコンフィグレーションデータが選択され、プログラマブルロジックデバイス３０１は、正常に動作する。
【００３０】
ステップＳ５０６において、コンフィグレーションデータ番号がｎより大きくなると、すべてのコンフィグレーションデータＣＦ１〜ＣＦｎについてエラー信号ＥＲが検出されたことを意味するので、ステップＳ５０７へ進む。
【００３１】
ステップＳ５０７では、選択回路３０３は、フォルト信号ＦＴを出力し、プログラマブルロジックデバイス３０１が修復不能であることを知らせる。フォルト信号ＦＴが発生した後、論理処理装置は、動作を停止してもよい。また、宇宙線などによるプログラマブルロジックデバイス３０１の一過性のソフトエラーである可能性があるため、論理処理装置は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号を初期値に戻して、再度、上記の処理を繰り返してもよい。
【００３２】
以上のように、選択回路３０３は、複数のコンフィグレーションデータＣＦ１〜ＣＦｎのうちのプログラマブルロジックデバイス３０１の動作に基づくエラーが発生しないコンフィグレーションデータを選択する。具体的には、選択回路３０３は、複数のコンフィグレーションデータＣＦ１〜ＣＦｎを順に選択し、プログラマブルロジックデバイス３０１がエラー信号ＥＲを出力したときのコンフィグレーションデータを選択せず、プログラマブルロジックデバイス３０１がエラー信号ＥＲを出力しないときのコンフィグレーションデータを選択して、プログラマブルロジックデバイス３０１のロジックをプログラムさせる。
【００３３】
これにより、本実施形態は、プログラマブルロジックデバイス３０１の故障の修復を短時間に自動で行うことができる。また、本実施形態は、未使用領域に必要な論理セル数の制限がなく、任意のサイズの領域Ｒ１〜Ｒｎを設けることができる。また、未使用領域以外の領域は、一つのブロックとして使用できるので、回路設計を柔軟に行うことができる。また、本実施形態は、未使用領域以外の領域のブロック内に任意の大きさの機能ブロックを複数割り当てることができる。
【００３４】
（第２の実施形態）
図６は、第２の実施形態による論理処理装置の構成例を示す図である。論理処理装置は、例えばコンピュータシステムである。本実施形態（図６）は、第１の実施形態（図３）に対して、プロセッサ６０１、ＲＯＭ６０２、ＲＡＭ（Random Access Memory）６０３、ビデオコントローラ６０４、バス６０５、ハードディスクドライブ装置６２１、ＰＣＩ（Peripheral Component Interconnect）エクスプレスカード６２２、ＬＡＮ（Local Area Network）６２３及びＵＳＢ装置６２４を追加したものである。以下、本実施形態が第１の実施形態と異なる点を説明する。
【００３５】
バス６０５には、プロセッサ６０１、ＲＯＭ６０２、ＲＡＭ６０３、ビデオコントローラ６０４及びプログラマブルロジックデバイス３０１が接続される。プロセッサ６０１は、例えば中央処理装置（ＣＰＵ）である。ＲＯＭ６０２は、ブート用プログラムなどを記憶する。ＲＡＭ６０３は、メインメモリである。ビデオコントローラ６０４は、表示装置に表示するためのコントローラである。
【００３６】
ハードディスクドライブ装置６２１は、ハードディスクにデータを記憶することができる。ＰＣＩエクスプレスカード６２２は、ＳＣＳＩ（Small Computer System Interface）などのインターフェースに変換することができる。ＬＡＮ６２３は、ローカルエリアネットワークであり、他のネットワーク装置を接続することができる。ＵＳＢ装置６２４は、例えば、キーボード、マウス又はＤＶＤ（Digital Versatile Disc）装置である。
【００３７】
プログラマブルロジックデバイス３０１は、例えば、コンフィグレーションにより、ハードディスクドライブコントローラ６１１、ＰＣＩエクスプレスコントローラ６１２、ＬＡＮコントローラ６１３及びＵＳＢコントローラ６１４の機能ブロックを有する。ハードディスクドライブコントローラ６１１は、ハードディスクドライブ装置６２１を制御する。ＰＣＩエクスプレスコントローラ６１２は、ＰＣＩエクスプレスカード６２２を制御する。ＬＡＮコントローラ６１３は、ＬＡＮ６２３を制御する。ＵＳＢコントローラ６１４は、ＵＳＢ装置６２４を制御する。
【００３８】
プロセッサ６０１は、カウントアップ信号ＣＵを選択回路３０３に出力することができる。選択回路３０３は、カウントアップ信号ＣＵを入力すると、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号をインクリメントする。
【００３９】
プロセッサ６０１は、リセット信号ＲＳをプログラマブルロジックデバイス３０１に出力することができる。プログラマブルロジックデバイス３０１は、リセット信号ＲＳを入力すると、バス３０２を介して入力したコンフィグレーションデータを基にコンフィグレーションを行う。プログラマブルロジックデバイス３０１は、論理動作により、エラーが発生すると、エラー信号ＥＲをプロセッサ６０１に出力する。
【００４０】
プログラマブルロジックデバイス３０１は、内部の１個の論理セルの故障によっても、正常に動作しなくなる可能性がある。本実施形態では、コンフィグレーションデータＣＦ１〜ＣＦｎの設定により、プログラマブルロジックデバイス３０１の故障を修復する。
【００４１】
図７は、図６の選択回路３０３の処理方法を示すフローチャートである。例えば、論理処理装置の電源が投入されると、選択回路３０３は、図７の処理を行う。
【００４２】
まず、ステップＳ７０１では、選択回路３０３は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出す。ここで、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号の初期値は、１である。
【００４３】
次に、ステップＳ７０２では、選択回路３０３は、読み出したコンフィグレーションデータ番号に応じて、選択信号ＳＥＬ１〜ＳＥＬｎのうちの１個を有効にして、残りを無効にする。例えば、コンフィグレーションデータ番号が１の場合、選択信号ＳＥＬ１が有効になり、残りの選択信号ＳＥＬ２〜ＳＥＬｎが無効になる。コンフィグレーションメモリＭＥＭ１〜ＭＥＭｎのうち、選択信号ＳＥＬ１〜ＳＥＬｎが有効であるコンフィグレーションメモリはコンフィグレーションデータをプログラマブルロジックデバイス３０１に出力し、選択信号ＳＥＬ１〜ＳＥＬｎが無効であるコンフィグレーションメモリはコンフィグレーションデータを出力しない。例えば、コンフィグレーションデータ番号が１の場合、コンフィグレーションメモリＭＥＭ１がコンフィグレーションデータＣＦ１をプログラマグルロジックデバイス３０１に出力する。
【００４４】
次に、プロセッサ６０１は、選択回路３０３が次の選択信号ＳＥＬ１〜ＳＥＬｎを有効にする時間を考慮して、必要な時間が経過後に、リセット信号ＲＳをプログラマブルロジックデバイス３０１に出力する。プログラマブルロジックデバイス３０１は、リセット信号ＲＳを入力すると、バス３０２を介して入力したコンフィグレーションデータに基づくコンフィグレーションを行う。その後、プログラマブルロジックデバイス３０１は、論理処理を行い、エラーが発生するとエラー信号ＥＲを出力し、正常動作をすればエラー信号ＥＲを出力しない。プロセッサ６０１は、エラー信号ＥＲを入力すると、カウントアップ信号ＣＵを選択回路３０３に出力する。
【００４５】
次に、ステップＳ７０３では、選択回路３０３は、カウントアップ信号ＣＵを検出したか否かをチェックし、カウントアップ信号ＣＵが検出されれば、ステップＳ７０４に進む。
【００４６】
ステップＳ７０４では、選択回路３０３は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号をインクリメントする。これにより、コンフィグレーションデータ番号は、１から２に変更される。
【００４７】
次に、ステップＳ７０５では、選択回路３０３は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号がｎより大きいか否かをチェックする。大きくない場合には、ステップＳ７０２に戻り、変更後のコンフィグレーションデータ番号について上記の処理を繰り返す。プログラマブルロジックデバイス３０１が正常動作した場合には、ステップＳ７０３で、カウントアップ信号ＣＵが検出されず、不揮発メモリ３０４のコンフィグレーションデータ番号は、確定する。その結果、コンフィグレーションデータも確定し、プログラマブルロジックデバイス３０１の故障が修復される。次回、電源を投入した時、ステップＳ７０１において、選択回路３０３は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出すので、修復後のコンフィグレーションデータが選択され、プログラマブルロジックデバイス３０１は、正常に動作する。
【００４８】
ステップＳ７０５において、コンフィグレーションデータ番号がｎより大きくなると、すべてのコンフィグレーションデータＣＦ１〜ＣＦｎについてカウントアップ信号ＣＵが検出されたことを意味するので、ステップＳ７０６へ進む。
【００４９】
ステップＳ７０６では、選択回路３０３は、フォルト信号ＦＴを出力し、プログラマブルロジックデバイス３０１が修復不能であることを知らせる。
【００５０】
以上のように、プロセッサ６０１は、プログラマブルロジックデバイス３０１がエラー信号ＥＲを出力したときには、選択回路３０３に次のコンフィグレーションデータＣＦ１〜ＣＦｎを選択させる。本実施形態は、第１の実施形態と同様の効果を得ることができる。
【００５１】
（第３の実施形態）
図８は、第３の実施形態による論理処理装置の構成例を示す図である。本実施形態（図８）は、第２の実施形態（図６）に対して、ｎ個のコンフィグレーションメモリＭＥＭ１〜ＭＥＭｎを１個のコンフィグレーションメモリＭＥＭに変更した点が異なる。以下、本実施形態が第２の実施形態と異なる点を説明する。
【００５２】
コンフィグレーションメモリＭＥＭは、例えばＲＯＭであり、異なるアドレスに複数のコンフィグレーションデータＣＦ１〜ＣＦｎをそれぞれ記憶する。選択回路３０３は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号に応じて、上記の複数のアドレスのうちの１個のアドレスＡＤを選択して、コンフィグレーションメモリＭＥＭに出力する。コンフィグレーションメモリＭＥＭは、アドレスＡＤに記憶されているコンフィグレーションデータを、バス３０２を介して、プログラマブルロジックデバイス３０１に出力する。
【００５３】
図９は、図８のコンフィグレーションメモリＭＥＭの構成例を示す図である。コンフィグレーションメモリＭＥＭは、ｎ個のアドレスＡＤ１〜ＡＤｎを開始アドレスとしてｎ個のコンフィグレーションデータＣＦ１〜ＣＦｎをそれぞれ記憶する。コンフィグレーションメモリＭＥＭは、アドレスＡＤを入力し、アドレスＡＤに記憶されているコンフィグレーションデータを、バス３０２を介して、プログラマブルロジックデバイス３０１に出力する。例えば、アドレスＡＤがアドレスＡＤ１の場合には、コンフィグレーションメモリＭＥＭは、アドレスＡＤ１に記憶されているコンフィグレーションデータＣＦ１をプログラマブルロジックデバイス３０１に出力する。選択回路３０３は、複数のアドレスＡＤ１〜ＡＤｎのうちの１個のアドレスを選択して出力する。
【００５４】
図１０は、図８の選択回路３０３の処理方法を示すフローチャートである。例えば、論理処理装置の電源が投入されると、選択回路３０３は、図１０の処理を行う。
【００５５】
まず、ステップＳ１００１では、選択回路３０３は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出す。ここで、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号の初期値は、１である。
【００５６】
次に、ステップＳ１００２では、選択回路３０３は、読み出したコンフィグレーションデータ番号に応じて、読み出し開始アドレスＡＤを出力する。例えば、コンフィグレーションデータ番号が１の場合、読み出し開始アドレスＡＤは、アドレスＡＤ１になる。コンフィグレーションメモリＭＥＭは、読み出し開始アドレスＡＤに記憶されているコンフィグレーションデータをプログラマブルロジックデバイス３０１に出力する。例えば、読み出し開始アドレスＡＤがアドレスＡＤ１の場合、コンフィグレーションメモリＭＥＭは、コンフィグレーションデータＣＦ１をプログラマグルロジックデバイス３０１に出力する。
【００５７】
次に、プロセッサ６０１は、選択回路３０３が次の選択信号ＳＥＬ１〜ＳＥＬｎを有効にする時間を考慮して、必要な時間が経過後に、リセット信号ＲＳをプログラマブルロジックデバイス３０１に出力する。プログラマブルロジックデバイス３０１は、リセット信号ＲＳを入力すると、バス３０２を介して入力したコンフィグレーションデータに基づくコンフィグレーションを行う。その後、プログラマブルロジックデバイス３０１は、論理処理を行い、エラーが発生するとエラー信号ＥＲを出力し、正常動作をすればエラー信号ＥＲを出力しない。プロセッサ６０１は、エラー信号ＥＲを入力すると、カウントアップ信号ＣＵを選択回路３０３に出力する。
【００５８】
次に、ステップＳ１００３では、選択回路３０３は、カウントアップ信号ＣＵを検出したか否かをチェックし、カウントアップ信号ＣＵが検出されれば、ステップＳ１００４に進む。
【００５９】
ステップＳ１００４では、選択回路３０３は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号をインクリメントする。これにより、コンフィグレーションデータ番号は、１から２に変更される。
【００６０】
次に、ステップＳ１００５では、選択回路３０３は、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号がｎより大きいか否かをチェックする。大きくない場合には、ステップＳ１００２に戻り、変更後のコンフィグレーションデータ番号について上記の処理を繰り返す。プログラマブルロジックデバイス３０１が正常動作した場合には、ステップＳ１００３で、カウントアップ信号ＣＵが検出されず、不揮発メモリ３０４のコンフィグレーションデータ番号は、確定する。その結果、コンフィグレーションデータも確定し、プログラマブルロジックデバイス３０１の故障が修復される。次回、電源を投入した時、ステップＳ１００１において、選択回路３０３は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出すので、修復後のコンフィグレーションデータが選択され、プログラマブルロジックデバイス３０１は、正常に動作する。
【００６１】
ステップＳ１００５において、コンフィグレーションデータ番号がｎより大きくなると、すべてのコンフィグレーションデータＣＦ１〜ＣＦｎについてカウントアップ信号ＣＵが検出されたことを意味するので、ステップＳ１００６へ進む。
【００６２】
ステップＳ１００６では、選択回路３０３は、フォルト信号ＦＴを出力し、プログラマブルロジックデバイス３０１が修復不能であることを知らせる。本実施形態は、第２の実施形態と同様の効果を得ることができる。
【００６３】
（第４の実施形態）
図１１は、第４の実施形態によるプログラマブルロジックデバイス３０１の複数のコンフィグレーションデータＣＦ１〜ＣＦ３６の例を示す図である。以下、本実施形態が第１〜第３の実施形態と異なる点を説明する。
【００６４】
プログラマブルロジックデバイス３０１は、内部の論理セル領域が例えば９個の領域Ｒ１〜Ｒ９に分割される。本実施形態では、９個の領域Ｒ１〜Ｒ９のうちの相互に異なる２個の領域を未使用領域として未使用領域以外の領域を使用領域として相互に同じ機能を実現するための３６個のコンフィグレーションデータＣＦ１〜ＣＦ３６を生成する。
【００６５】
例えば、コンフィグレーションデータＣＦ１は、領域Ｒ１及びＲ２を未使用領域とし、領域Ｒ３〜Ｒ９を使用領域としてコンフィグレーションするためのデータである。コンフィグレーションデータＣＦ２は、領域Ｒ１及びＲ３を未使用領域とし、領域Ｒ２、Ｒ４〜Ｒ９を使用領域としてコンフィグレーションするためのデータである。コンフィグレーションデータＣＦ３６は、領域Ｒ８及びＲ９を未使用領域とし、領域Ｒ１〜Ｒ７を使用領域としてコンフィグレーションするためのデータである。コンフィグレーションデータＣＦ１〜ＣＦ３６は、相互に未使用領域が異なり、領域Ｒ１〜Ｒ９のうちのすべての２個の領域の組み合わせが未使用領域として割り当てられるように生成される。
【００６６】
プログラマブルロジックデバイス３０１は、コンフィグレーションデータＣＦ１〜ＣＦ３６のうちのいずれか１つを選択することにより、任意の２個の領域Ｒ１〜Ｒ９を未使用領域にすることができる。プログラマブルロジックデバイス３０１は、１個又は２個の領域で故障が発生した場合に、故障個所が未使用領域に一致するコンフィグレーションデータＣＦ１〜ＣＦ３６を選択することにより、プログラマブルロジックデバイス３０１の故障を修復する。
【００６７】
図１２は、プログラマブルロジックデバイス３０１の修復方法を説明するための図である。例えば、プログラマブルロジックデバイス３０１の領域Ｒ１及びＲ３で故障が発生した例を説明する。コンフィグレーションデータＣＦ１によりコンフィグレーションした場合、故障が発生した領域Ｒ３は使用領域であるため、プログラマブルロジックデバイス３０１は、正常に動作することができない。これに対し、コンフィグレーションデータＣＦ２によりコンフィグレーションした場合、故障が発生した領域Ｒ１及びＲ３は未使用領域であるため、プログラマブルロジックデバイス３０１は、正常に動作することができる。このようにして、故障が発生した領域が未使用領域になるように、コンフィグレーションデータＣＦ１〜ＣＦ３６を選択することにより、プログラマブルロジックデバイス３０１を修復することができる。なお、未使用領域が３個以上になるように、コンフィグレーションデータを生成するようにしてもよい。
【００６８】
図１１に示す通り、９個の領域Ｒ１〜Ｒ９のうちの２個の領域を未使用領域にすると、生成されるコンフィグレーションデータの組み合わせは、次式で計算することができ、３６個のコンフィグレーションデータＣＦ１〜ＣＦ３６を生成すればよい。
【００６９】
９Ｃ２＝９Ｐ２／２！
＝９！／｛（９−２）！×２！｝
＝９×８／２
＝３６
【００７０】
また、プログラマブルロジックデバイス３０１の内部をｎ分割し、ｍ個の未使用領域を設定する場合、コンフィグレーションデータの組み合わせは、次式で計算することができる。
【００７１】
ｎＣｍ＝ｎＰｍ／ｍ！
＝ｎ！／｛（ｎ−ｍ）！×ｍ！｝
【００７２】
これにより、ｎ個の領域で故障が発生しても、プログラマブルロジックデバイス３０１は、故障を修復し、正常に動作することができる。以上のように、未使用領域は、１個の領域でもよいし、複数の領域でもよい。
【００７３】
（第５の実施形態）
図１３は、第５の実施形態による論理処理装置の構成例を示す図である。本実施形態（図１３）は、第３の実施形態（図８）に対して、コンピュータ１３０１及び論理和（ＯＲ）回路１３０２を追加したものである。以下、本実施形態が第３の実施形態と異なる点を説明する。
【００７４】
ハードディスクドライブ装置６２１、ＰＣＩエクスプレスカード６２２、コンピュータ１３０１、及びＵＳＢ装置６２４は、プログラマブルロジックデバイス３０１の出力信号を用いて処理する外部装置である。
【００７５】
ハードディスクドライブコントローラ６１１は、プログラマブルロジックデバイス３０１の領域Ｒ１〜Ｒ９の一部により構成される。ハードディスクドライブコントローラ６１１を構成する領域Ｒ１〜Ｒ９で故障が発生すると、ハードディスクドライブ装置６２１は、エラーが発生し、エラー信号ＥＲ１を出力する。
【００７６】
ＰＣＩエクスプレスコントローラ６１２は、プログラマブルロジックデバイス３０１の領域Ｒ１〜Ｒ９の一部により構成される。ＰＣＩエクスプレスコントローラ６１２を構成する領域Ｒ１〜Ｒ９で故障が発生すると、ＰＣＩエクスプレスカード６２２は、エラーが発生し、エラー信号ＥＲ２を出力する。
【００７７】
コンピュータ１３０１は、ＬＡＮ６２３に接続される。ＬＡＮコントローラ６１３は、プログラマブルロジックデバイス３０１の領域Ｒ１〜Ｒ９の一部により構成される。ＬＡＮコントローラ６１３を構成する領域Ｒ１〜Ｒ９で故障が発生すると、コンピュータ１３０１は、エラーが発生し、エラー信号ＥＲ３を出力する。
【００７８】
ＵＳＢコントローラ６１４は、プログラマブルロジックデバイス３０１の領域Ｒ１〜Ｒ９の一部により構成される。ＵＳＢコントローラ６１４を構成する領域Ｒ１〜Ｒ９で故障が発生すると、ＵＳＢ装置６２４は、エラーが発生し、エラー信号ＥＲ４を出力する。
【００７９】
論理和回路１３０２は、エラー信号ＥＲ１〜ＥＲ４の論理和信号を、エラー信号ＥＲとしてプロセッサ６０１に出力する。プロセッサ６０１は、第３の実施形態と同様に、エラー信号ＥＲを入力すると、カウントアップ信号ＣＵを選択回路３０３に出力する。
【００８０】
選択回路３０３は、複数のコンフィグレーションデータＣＦ１〜ＣＦｎのうちの外部装置６２１，６２２，６２４，１３０１がエラーを発生したコンフィグレーションデータを選択せず、複数のコンフィグレーションデータＣＦ１〜ＣＦｎのうちの外部装置６２１，６２２，６２４，１３０１がエラーを発生しないコンフィグレーションデータを選択する。
【００８１】
プログラマブルロジックデバイス３０１が自己の内部故障を検出できず、ハードディスクドライブ装置６２１、ＰＣＩエクスプレスカード６２２、コンピュータ１３０１、又はＵＳＢ装置６２４の外部装置がエラーを検出する場合がある。本実施形態は、外部装置６２１，６２２，６２４，１３０１がエラーを検出した場合に、上記と同様に、コンフィグレーションデータＣＦ１〜ＣＦｎの切り替えを行い、故障を修復する。
【００８２】
（第６の実施形態）
図１４は、第６の実施形態による論理処理装置の構成例を示す図である。本実施形態（図１４）は、第３の実施形態（図８）に対して、エラー表示レジスタ１４０１を追加したものである。以下、本実施形態が第３の実施形態と異なる点を説明する。
【００８３】
エラー表示レジスタ１４０１は、プログラマブルロジックデバイス３０１内に設けられる。不揮発メモリ３０４は、バス６０５を介して、プロセッサ６０１に接続される。プロセッサ６０１は、不揮発メモリ３０４内のコンフィグレーションデータ番号を読み書きすることができる。本実施形態は、エラー表示レジスタ１４０１を用いて、プログラマブルロジックデバイス３０１内の故障領域を特定し、その故障領域を未使用領域とするコンフィグレーションデータを一度で選択する。
【００８４】
図１５は、図１に対応し、コンフィグレーションデータＣＦ１〜ＣＦ９の例を示す図である。コンフィグレーションデータＣＦ１〜ＣＦ９は、それぞれ、１個の未使用領域ＮＲ及び８個の使用領域Ｕ１〜Ｕ８を有する。
【００８５】
図１６は、図１４のプログラマブルロジックデバイス３０１の一部の構成例を示す図である。プログラマブルロジックデバイス３０１は、８個の領域Ｒ２〜Ｒ９及びエラー表示レジスタ１４０１を有する。領域Ｒ２〜Ｒ９は、初期のコンフィグレーションデータＣＦ１において使用領域Ｕ１〜Ｕ８に設定されている領域である。エラー表示レジスタ１４０１は、８ビットのエラー信号を記憶する。各領域Ｒ１〜Ｒ９は、１個の機能ブロックを構成することが好ましい。
【００８６】
領域Ｒ２は、論理和回路ＬＧ２を有し、図４の複数のエラー検出回路４１２により出力されるエラー信号の論理和信号を、エラー信号ＥＲ２として出力する。複数のエラー検出回路４１２が出力するエラー信号のうちのいずれか１個でも「１」になれば、エラー信号ＥＲ２は「１」になる。エラー信号ＥＲ２は、「１」がエラー発生を示し、エラー表示レジスタ１４０１のビット０に書き込まれる。
【００８７】
同様に、領域Ｒ９は、論理和回路ＬＧ９を有し、図４の複数のエラー検出回路４１２により出力されるエラー信号の論理和信号を、エラー信号ＥＲ９として出力する。複数のエラー検出回路４１２が出力するエラー信号のうちのいずれか１個でも「１」になれば、エラー信号ＥＲ９は「１」になる。エラー信号ＥＲ９は、「１」がエラー発生を示し、エラー表示レジスタ１４０１のビット７に書き込まれる。
【００８８】
領域Ｒ２〜Ｒ９のエラー信号ＥＲ２〜ＥＲ９は、それぞれエラー表示レジスタ１４０１のビット０〜ビット７に書き込まれる。エラー表示レジスタ１４０１は、各領域Ｒ２〜Ｒ９のエラー検出回路４１２によって検出されたエラー信号ＥＲ２〜ＥＲ９を各ビットに割り当てる。プロセッサ６０１は、初期のコンフィグレーションデータＣＦ１の使用時に、領域Ｒ２〜Ｒ９のエラー信号ＥＲ２〜ＥＲ９を検出した時に、エラー表示レジスタ１４０１に記憶されているエラー信号ＥＲ２〜ＥＲ９を読み出すことにより、使用領域Ｕ１〜Ｕ８のうちのどの領域が故障したのかを認識できる。
【００８９】
図１７は、図１４のＲＯＭ６０２に記憶されるテーブルの構成例を示す図である。テーブルは、エラー検出レジスタ１４０１の各ビット番号１７０１と、そのビット番号１７０１に対応する領域Ｕ１〜Ｕ８を未使用領域ＮＲに設定しているコンフィグレーションデータＣＦ２〜ＣＦ９の番号１７０２との対応関係を記憶する。例えば、エラー表示レジスタ１４０１のビット０が「１」の場合、故障領域Ｕ１が未使用領域ＮＲとなるコンフィグレーションデータＣＦ２が設定される。これにより、プロセッサ６０１は、エラー表示レジスタ１４０１に記憶されているエラー信号ＥＲ２〜ＥＲ９を基に、このテーブルによってその故障領域を未使用領域ＮＲとするコンフィグレーションデータＣＦ２〜ＣＦ９の番号を一意で得ることができる。
【００９０】
図１８は、図１４の選択回路３０３の処理方法を示すフローチャートである。例えば、論理処理装置の電源が投入されると、選択回路３０３は、図１８の処理を行う。
【００９１】
まず、ステップＳ１８０１では、選択回路３０３は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出す。ここで、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号の初期値は、１である。
【００９２】
次に、ステップＳ１８０２では、選択回路３０３は、読み出したコンフィグレーションデータ番号に応じて、読み出し開始アドレスＡＤを出力する。例えば、コンフィグレーションデータ番号が１の場合、読み出し開始アドレスＡＤは、アドレスＡＤ１になる。コンフィグレーションメモリＭＥＭは、読み出し開始アドレスＡＤに記憶されているコンフィグレーションデータをプログラマブルロジックデバイス３０１に出力する。例えば、読み出し開始アドレスＡＤがアドレスＡＤ１の場合、コンフィグレーションメモリＭＥＭは、コンフィグレーションデータＣＦ１をプログラマグルロジックデバイス３０１に出力する。
【００９３】
次に、ステップＳ１８０３では、選択回路３０３は、プロセッサ６０１からの書き込み指示を検出したか否かをチェックする。検出した場合には、ステップＳ１８０４に進む。
【００９４】
ステップＳ１８０４では、選択回路３０３は、プロセッサ６０１から書き込み指示されたコンフィグレーションデータ番号を、不揮発メモリ３０４に書き込む。その後、ステップＳ１８０１に戻り、上記と同様の処理を繰り返す。
【００９５】
図１９は、図１４のプロセッサ６０１の処理方法を示すフローチャートである。例えば、論理処理装置の電源が投入されると、プロセッサ６０１は、図１９の処理を行う。
【００９６】
まず、ステップＳ１９０１では、プロセッサ６０１は、不揮発メモリ３０４からコンフィグレーションデータ番号を読み出す。ここで、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号の初期値は、１である。
【００９７】
次に、ステップＳ１９０２では、プロセッサ６０１は、必要な時間が経過後に、リセット信号ＲＳをプログラマブルロジックデバイス３０１に出力する。プログラマブルロジックデバイス３０１は、リセット信号ＲＳを入力すると、バス３０２を介して入力したコンフィグレーションデータに基づくコンフィグレーションを行う。その後、プログラマブルロジックデバイス３０１は、論理処理を行い、エラーが発生するとエラー信号ＥＲを出力し、正常動作をすればエラー信号ＥＲを出力しない。
【００９８】
次に、ステップＳ１９０３では、プロセッサ６０１は、エラー信号ＥＲを検出したか否かをチェックし、エラー信号ＥＲが検出されれば、ステップＳ１９０４に進む。エラー信号ＥＲが検出されなければ、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号は、「１」の初期値に確定し、故障の修復を行う必要はない。プログラマブルロジックデバイス３０１は、正常に動作することができる。
【００９９】
ステップＳ１９０４では、プロセッサ６０１は、対象のコンフィグレーションデータ番号が初期値のコンフィグレーションデータ番号であるか否かをチェックする。初期値であれば、ステップＳ１９０５に進む。
【０１００】
ステップＳ１９０５では、プロセッサ６０１は、エラー表示レジスタ１４０１に記憶されているエラー信号ＥＲ２〜ＥＲ９を読み出す。
【０１０１】
次に、ステップＳ１９０６では、プロセッサ６０１は、図１７のテーブルを用いて、エラーが発生した領域Ｕ１〜Ｕ８を未使用領域にするコンフィグレーションデータ番号を取得する。
【０１０２】
次に、ステップＳ１９０７では、プロセッサ６０１は、取得したコンフィグレーションデータ番号を不揮発メモリ３０４に書き込み、ステップＳ１９０２に戻る。すると、選択回路３０３は、図１８のステップＳ１８０２において、コンフィグレーションデータ番号に応じて、読み出し開始アドレスＡＤを出力する。そして、コンフィグレーションメモリＭＥＭは、読み出し開始アドレスＡＤに記憶されているコンフィグレーションデータをプログラマブルロジックデバイス３０１に出力する。
【０１０３】
ステップＳ１９０２では、プロセッサ６０１は、必要な時間が経過後に、リセット信号ＲＳをプログラマブルロジックデバイス３０１に出力する。プログラマブルロジックデバイス３０１は、リセット信号ＲＳを入力すると、バス３０２を介して入力したコンフィグレーションデータに基づくコンフィグレーションを行う。その後、プログラマブルロジックデバイス３０１は、論理処理を行い、エラーが発生するとエラー信号ＥＲを出力し、正常動作をすればエラー信号ＥＲを出力しない。通常、コンフィグレーションデータ番号は、故障領域を未使用領域とするコンフィグレーションデータ番号に変更されているので、エラー信号ＥＲは出力されない。
【０１０４】
次に、ステップＳ１９０３では、プロセッサ６０１は、エラー信号ＥＲを検出したか否かをチェックし、エラー信号ＥＲが検出されれば、ステップＳ１９０４に進む。エラー信号ＥＲが検出されなければ、不揮発メモリ３０４に記憶されているコンフィグレーションデータ番号は確定し、故障の修復が終了する。プログラマブルロジックデバイス３０１は、正常に動作することができる。
【０１０５】
次に、ステップＳ１９０４では、プロセッサ６０１は、対象のコンフィグレーションデータ番号が初期値のコンフィグレーションデータ番号であるか否かをチェックする。この場合、コンフィグレーションデータ番号は、変更されており、初期値ではないので、ステップＳ１９０８に進む。
【０１０６】
ステップＳ１９０８では、プロセッサ６０１は、フォルト信号ＦＴを出力し、プログラマブルロジックデバイス３０１が修復不能であることを知らせる。
【０１０７】
以上のように、プログラマブルロジックデバイス３０１は、複数の領域Ｒ２〜Ｒ９毎にエラー信号ＥＲ２〜ＥＲ９を発生可能である。選択回路３０３は、プログラマブルロジックデバイス３０１がエラー信号を発生したときには、エラー信号を基に、プログラマブルロジックデバイス３０１の複数の領域Ｒ２〜Ｒ９のうちのエラー信号が発生した領域を未使用領域とするコンフィグレーションデータを選択する。
【０１０８】
エラー表示レジスタ１４０１は、複数の領域Ｒ２〜Ｒ９毎のエラー信号を記憶する。選択回路３０３は、エラー表示レジスタ４０１に記憶されているエラー信号ＥＲ２〜ＥＲ９を基に、エラー信号が発生した領域を未使用領域とするコンフィグレーションデータを選択する。
【０１０９】
本実施形態は、第３の実施形態と同様の効果を得ることができる。また、本実施形態は、エラー発生後の１度のコンフィグレーションで、プログラマブルロジックデバイス３０１内の故障領域が未使用領域に割り当てられるため、第１〜第５の実施形態のようにコンフィグレーションを繰り返すことがなく、早急にプログラマブルロジックデバイス３０１の故障を修復することができる。
【０１１０】
なお、上記実施形態は、何れも本発明を実施するにあたっての具体化の例を示したものに過ぎず、これらによって本発明の技術的範囲が限定的に解釈されてはならないものである。すなわち、本発明はその技術思想、又はその主要な特徴から逸脱することなく、様々な形で実施することができる。
【産業上の利用可能性】
【０１１１】
コンフィグレーションメモリに複数のコンフィグレーションデータを記憶させることにより、短時間でプログラマブルロジックデバイスの内部故障を修復することができる。
【図１】
2014147780.tif 000003
【図２】
2014147780.tif 000004
【図３】
2014147780.tif 000005
【図４】
2014147780.tif 000006
【図５】
2014147780.tif 000007
【図６】
2014147780.tif 000008
【図７】
2014147780.tif 000009
【図８】
2014147780.tif 000010
【図９】
2014147780.tif 000011
【図１０】
2014147780.tif 000012
【図１１】
2014147780.tif 000013
【図１２】
2014147780.tif 000014
【図１３】
2014147780.tif 000015
【図１４】
2014147780.tif 000016
【図１５】
2014147780.tif 000017
【図１６】
2014147780.tif 000018
【図１７】
2014147780.tif 000019
【図１８】
2014147780.tif 000020
【図１９】
2014147780.tif 000021
【手続補正書】
【提出日】平成28年7月22日(2016.7.22)
【手続補正１】
【補正対象書類名】特許請求の範囲
【補正対象項目名】全文
【補正方法】変更
【補正の内容】
【特許請求の範囲】
【請求項１】
複数の領域毎にロジックをプログラム可能な論理セル部を含むプログラマブルロジックデバイス部と、
互いに同じ機能を実現するとともに、前記複数の領域のうち論理セル部を使用する領域である使用領域と前記複数の領域のうち論理セル部を使用しない領域である未使用領域との配置の組み合わせが互いに異なる複数のコンフィグレーションデータを記憶するコンフィグレーションメモリ部と、
コンフィグレーションデータ番号を記憶するデータ番号メモリ部と、
前記複数のコンフィグレーションデータのうち、前記データ番号メモリ部が記憶するコンフィグレーションデータ番号に対応するいずれか一のコンフィグレーションデータを選択して前記プログラマブルロジックデバイス部のロジックをプログラムさせるとともに、エラーが発生した場合、前記エラーが発生しなくなるまで前記コンフィグレーションデータ番号の変更を繰り返し、変更された前記コンフィグレーションデータ番号に対応する１個のコンフィグレーションデータを選択して前記プログラマブルロジックデバイス部のロジックをプログラムさせる選択部と
を有することを特徴とする論理処理装置。
【請求項２】
前記選択部は、前記複数のコンフィグレーションデータを順に選択した結果、前記複数のコンフィグレーションデータの全てにおいてエラーが発生した場合、フォルト信号を出力することを特徴とする請求項１記載の論理処理装置。
【請求項３】
前記選択部は、前記プログラマブルロジックデバイス部がエラー信号を出力した場合、前記データ番号メモリ部が記憶するコンフィグレーションデータ番号をインクリメントすることを特徴とする請求項１又は２記載の論理処理装置。
【請求項４】
前記論理処理装置はさらに、前記プログラマブルロジックデバイス部がエラー信号を出力した場合に、カウントアップ信号を出力するプロセッサ部を有し、
前記選択部は、前記プロセッサ部が前記カウントアップ信号を出力した場合、前記データ番号メモリ部が記憶するコンフィグレーションデータ番号をインクリメントすることを特徴とする請求項１〜３のいずれか１項に記載の論理処理装置。
【請求項５】
前記コンフィグレーションメモリ部は、前記複数のコンフィグレーションデータをそれぞれ記憶する複数のコンフィグレーションメモリ部を有し、
前記選択部は、前記複数のコンフィグレーションメモリ部のうち、いずれか一のコンフィグレーションメモリ部を選択することを特徴とする請求項１〜４のいずれか１項に記載の論理処理装置。
【請求項６】
前記コンフィグレーションメモリ部は、複数のアドレスに前記複数のコンフィグレーションデータの各々をそれぞれ記憶し、
前記選択部は、前記複数のアドレスのうち、いずれか一のアドレスを選択することを特徴とする請求項１〜４のいずれか１項に記載の論理処理装置。
【請求項７】
前記未使用領域は、前記プログラマブルロジックデバイス部内の１個又は複数の領域であることを特徴とする請求項１〜６のいずれか１項に記載の論理処理装置。
【請求項８】
前記論理処理装置はさらに、前記プログラマブルロジックデバイス部の出力信号を用いて処理する外部装置部を有し、
前記選択部は、前記外部装置部がエラー信号を出力した場合、前記データ番号メモリ部が記憶するコンフィグレーションデータ番号をインクリメントすることを特徴とする請求項１又は２記載の論理処理装置。
【請求項９】
複数の領域毎にロジックをプログラム可能な論理セル部を含むプログラマブルロジックデバイス部と、互いに同じ機能を実現するとともに、前記複数の領域のうち論理セル部を使用する領域である使用領域と前記複数の領域のうち論理セル部を使用しない領域である未使用領域との配置の組み合わせが互いに異なる複数のコンフィグレーションデータを記憶するコンフィグレーションメモリ部と、コンフィグレーションデータ番号を記憶するデータ番号メモリ部とを有する論理処理装置の制御方法において、
前記論理処理装置が有する選択部が、
前記複数のコンフィグレーションデータのうち、前記データ番号メモリ部が記憶するコンフィグレーションデータ番号に対応するいずれか一のコンフィグレーションデータを選択して前記プログラマブルロジックデバイス部のロジックをプログラムさせ、
エラーが発生した場合、前記エラーが発生しなくなるまで前記コンフィグレーションデータ番号の変更を繰り返すとともに、変更された前記コンフィグレーションデータ番号に対応する１個のコンフィグレーションデータを選択して前記プログラマブルロジックデバイス部のロジックをプログラムさせることを特徴とする論理処理装置の制御方法。
【手続補正３】
【補正対象書類名】明細書
【補正対象項目名】０００１
【補正方法】変更
【補正の内容】
【０００１】
本発明は、論理処理装置及びその制御方法に関する。
【手続補正４】
【補正対象書類名】明細書
【補正対象項目名】０００８
【補正方法】変更
【補正の内容】
【０００８】
本発明の目的は、短時間でプログラマブルロジックデバイス部の内部故障を修復することができる論理処理装置及びその制御方法を提供することである。
【手続補正５】
【補正対象書類名】明細書
【補正対象項目名】０００９
【補正方法】変更
【補正の内容】
【０００９】
論理処理装置は、複数の領域毎にロジックをプログラム可能な論理セル部を含むプログラマブルロジックデバイス部と、互いに同じ機能を実現するとともに、前記複数の領域のうち論理セル部を使用する領域である使用領域と前記複数の領域のうち論理セル部を使用しない領域である未使用領域との配置の組み合わせが互いに異なる複数のコンフィグレーションデータを記憶するコンフィグレーションメモリ部と、コンフィグレーションデータ番号を記憶するデータ番号メモリ部と、前記複数のコンフィグレーションデータのうち、前記データ番号メモリ部が記憶するコンフィグレーションデータ番号に対応するいずれか一のコンフィグレーションデータを選択して前記プログラマブルロジックデバイス部のロジックをプログラムさせるとともに、エラーが発生した場合、前記エラーが発生しなくなるまで前記コンフィグレーションデータ番号の変更を繰り返し、変更された前記コンフィグレーションデータ番号に対応する１個のコンフィグレーションデータを選択して前記プログラマブルロジックデバイス部のロジックをプログラムさせる選択部とを有する。
【手続補正６】
【補正対象書類名】明細書
【補正対象項目名】００１０
【補正方法】変更
【補正の内容】
【００１０】
コンフィグレーションメモリ部に複数のコンフィグレーションデータを記憶させることにより、短時間でプログラマブルロジックデバイス部の内部故障を修復することができる。
【国際調査報告】
2014147780.tif 000022
2014147780.tif 000023