(57)【要約】【課題】充分に高い診断精度を確保することが可能なＦＰＧＡの異常診断方法及び装置を提供すること。【解決手段】ＦＰＧＡ１を構成する全ての回路ブロックＣＩＲa〜ＣＩＲdにはそれぞれカウンタＣＯＵa〜ＣＯＵdが設けられており、これらはカウンタＣＯＵa，ＣＯＵb，ＣＯＵd，ＣＯＵcの順に順次直列接続されてカウンタ直列接続体を形成している。発振器２からの発振信号は、Ｉ／ＯブロックIOaの入力ピンを介してカウンタＣＯＵaに入力され、また、カウンタＣＯＵcからは、Ｉ／ＯブロックIOcの出力ピンを介して、順次分周された発振信号がカウンタクリア信号としてウォッチドッグタイマ３に出力される。ウォッチドッグタイマ３の動作に基づき正常と診断した場合には、全ての回路ブロックが必ず正常であることが保証される。【選択図】図１
2011081665.tif 000002
【特許請求の範囲】
【請求項１】
ＦＰＧＡを構成する複数の回路ブロックの全てに入力信号を分周するカウンタを設けると共に、これら複数のカウンタを直列接続することによりカウンタ直列接続体を形成し、
発振器の発振信号を、前記カウンタ直列接続体の一端側に一端側Ｉ／Ｏブロックを介して入力させると共に、このカウンタ直列接続体の他端側から他端側Ｉ／Ｏブロックを介して出力される分周された発振信号を、カウンタクリア信号としてウォッチドッグタイマに入力させ、
このウォッチドッグタイマがタイムアップによりエラー信号を出力した場合にＦＰＧＡを異常と診断するようにした、
ことを特徴とするＦＰＧＡの異常診断方法。
【請求項２】
前記カウンタ直列接続体は、各カウンタが設けられた回路ブロックのＩ／Ｏブロックを介して、隣接するカウンタ同士が接続されたものである、
ことを特徴とする請求項１記載のＦＰＧＡの異常診断方法。
【請求項３】
入力信号を分周するカウンタを、ＦＰＧＡを構成する複数の回路ブロックの全てに設け、これら複数のカウンタを直列接続することにより形成したカウンタ直列接続体と、
前記カウンタ直列接続体の一端側に一端側Ｉ／Ｏブロックを介して発振信号を入力させる発振器と、
前記カウンタ直列接続体の他端側から他端側Ｉ／Ｏブロックを介して出力される分周された発振信号を、カウンタクリア信号として入力し、タイムアップ時のエラー信号を異常診断信号として出力するウォッチドッグタイマと、
を備えたことを特徴とするＦＰＧＡの異常診断装置。
【請求項４】
ＦＰＧＡを構成する回路ブロック内に設けられている、互いに同一構成を有する複数の機能回路からの各出力信号を入力する故障検出回路を同じ回路ブロック内に設け、
前記故障検出回路が、前記入力した各出力信号を比較し、本来互いに同一であるべき各出力信号のうちの一部又は全部について不一致であることを検出した場合に、ＦＰＧＡを異常と診断するようにした、
ことを特徴とするＦＰＧＡの異常診断方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＦＰＧＡの異常診断方法及び装置に関するものである。
【背景技術】
【０００２】
ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）とは、所望の機能を有する論理回路構成を、ユーザ側でＰＣ等を用いてプログラミングすることにより実現することが可能なＩＣである。勿論、ユーザは所望の機能を有するＩＣを、ＩＣメーカに発注して入手することは可能であるが、その場合、一定以上の個数を発注しなければコスト的に引き合わなくなり、更に、製作後の仕様変更に容易に対処することができなくなるというデメリットを甘受しなければならない。また、ユーザは、作成したソフトウエアに従ってＣＰＵに所定の動作を行わせることにより所望の機能を実現することも可能である。しかし、この場合も、ＣＰＵを動作させるためのソフトウエアに対するバグを完全に除去するのが困難であるというデメリットを甘受しなければならない。これらの理由により、近時は、比較的これらのデメリットが緩和されているＦＰＧＡが広汎に用いられるようになってきている。
【０００３】
ところで、ＦＰＧＡの動作が異常であるか否かについての診断は、ＦＰＧＡが配置された同一基板上に実装されているＣＰＵを用いて行うのが一般的である（例えば特許文献１参照）。しかし、ＣＰＵの動作環境によっては、ＦＰＧＡの異常発生によってＣＰＵが動作を停止することもある。そこで、ＦＰＧＡに対する異常診断をＣＰＵを用いずに、ウォッチドッグタイマを用いて行う手法も実施されている。
【０００４】
図５は、このウォッチドッグタイマを用いて行う従来のＦＰＧＡの異常診断方法及び装置の説明図である。この装置の構成を説明すると、ＦＰＧＡ１は複数個（４個）のＩ／ＯブロックIOa〜IOd及び複数個（４個）の回路ブロックＣＩＲa〜ＣＩＲdを有している。これら４個の回路ブロックＣＩＲa〜ＣＩＲdのうち回路ブロックＣＩＲaのみにプリスケーラ（分周器）として機能するカウンタＣＯＵaが設けられている。そして、ＦＰＧＡ１の外部には発振器２及びウォッチドッグタイマ３が設置されている。発振器２からの発振信号は、Ｉ／ＯブロックIOaの入力ピンを介してカウンタＣＯＵaに入力されるようになっており、また、カウンタＣＯＵaからの出力信号はＩ／ＯブロックIOaの出力ピンを介してウォッチドッグタイマ３のクリア信号入力端子に出力されるようになっている。
【０００５】
上記の構成では、４個の回路ブロックのうちの１個のみにしかカウンタを設けていないので、その分コストを低減することができ、また、異常診断のために使用するＩ／Ｏブロックの入出力ピン数もカウンタ１個分だけとなるので、本来の用途に割り当てる入出力ピン数を多く確保することが可能になっている。
【０００６】
次に、この装置を用いた異常診断方法につき説明する。ＦＰＧＡ１の通常動作中に、発振器２は所定周波数の発振信号をＩ／ＯブロックIOaの入力ピンを介してカウンタＣＯＵaに出力する。カウンタＣＯＵaは、入力した発振信号を予め設定された分周比に分周し、この分周した発振信号をカウンタクリア信号として、ウォッチドッグタイマ３のクリア信号入力端子に出力する。
【０００７】
ウォッチドッグタイマ３は、所定のクリア期間内にカウンタＣＯＵaからのカウンタクリア信号を入力すればタイマカウント動作を再スタートさせるが、所定のクリア期間内にカウンタクリア信号を入力せずタイムアップした時にエラー信号ERRを出力する。このエラー信号ERRが出力された場合は、ＦＰＧＡ１が異常と診断される。
【先行技術文献】
【特許文献】
【０００８】
【特許文献１】特開２００４−３０２７２７号公報
【発明の概要】
【発明が解決しようとする課題】
【０００９】
上述した従来の異常診断方法及び装置では、複数個（４個）の回路ブロックＣＩＲa〜ＣＩＲdのうち回路ブロックＣＩＲaのみにカウンタＣＯＵaを組み込み、このカウンタＣＯＵaからの出力信号を用いてＦＰＧＡ１の異常の有無を診断している。このように、４個の回路ブロックのうちの１個のみにカウンタを設けて異常診断を行う手法は、異常の有無については４個の回路ブロック同士の相関性が高いことを前提としている。つまり、回路ブロックＣＩＲaが正常であれば他の回路ブロックＣＩＲb〜ＣＩＲdも正常であり、また、回路ブロックＣＩＲaが異常であれば他の回路ブロックＣＩＲb〜ＣＩＲdも異常であると見做すものである。
【００１０】
しかし、最近はＦＰＧＡの容量が次第に増大してＦＰＧＡ１内の回路ブロックの個数も多くなってきており、また、診断精度についても高いレベルが要求されてきているため、複数個の回路ブロックのうちの１個のみにカウンタを設ける構成では、充分に高い診断精度を確保することが困難な情況になっている。
【００１１】
つまり、回路ブロックＣＩＲaに設けたカウンタＣＯＵaからの出力信号に基づきＦＰＧＡ１を正常と診断した場合でも、実際には、他の回路ブロックＣＩＲb〜ＣＩＲdが異常である場合がかなり含まれている可能性が高くなってきている。
【００１２】
本発明は上記事情に鑑みてなされたものであり、充分に高い診断精度を確保することが可能なＦＰＧＡの異常診断方法及び装置を提供することを目的としている。
【課題を解決するための手段】
【００１３】
上記課題を解決するための手段として、請求項１記載の発明は、ＦＰＧＡを構成する複数の回路ブロックの全てに入力信号を分周するカウンタを設けると共に、これら複数のカウンタを直列接続することによりカウンタ直列接続体を形成し、発振器の発振信号を、前記カウンタ直列接続体の一端側に一端側Ｉ／Ｏブロックを介して入力させると共に、このカウンタ直列接続体の他端側から他端側Ｉ／Ｏブロックを介して出力される分周された発振信号を、カウンタクリア信号としてウォッチドッグタイマに入力させ、このウォッチドッグタイマがタイムアップによりエラー信号を出力した場合にＦＰＧＡを異常と診断するようにした、ことを特徴とする。
【００１４】
請求項２記載の発明は、請求項１記載の発明において、前記カウンタ直列接続体は、各カウンタが設けられた回路ブロックのＩ／Ｏブロックを介して、隣接するカウンタ同士が接続されたものである、ことを特徴とする。
【００１５】
請求項３記載の発明は、入力信号を分周するカウンタを、ＦＰＧＡを構成する複数の回路ブロックの全てに設け、これら複数のカウンタを直列接続することにより形成したカウンタ直列接続体と、前記カウンタ直列接続体の一端側に一端側Ｉ／Ｏブロックを介して発振信号を入力させる発振器と、前記カウンタ直列接続体の他端側から他端側Ｉ／Ｏブロックを介して出力される分周された発振信号を、カウンタクリア信号として入力し、タイムアップ時のエラー信号を異常診断信号として出力するウォッチドッグタイマと、を備えたことを特徴とする。
【００１６】
請求項４記載の発明は、ＦＰＧＡを構成する回路ブロック内に設けられている、互いに同一構成を有する複数の機能回路からの各出力信号を入力する故障検出回路を同じ回路ブロック内に設け、前記故障検出回路が、前記入力した各出力信号を比較し、本来互いに同一であるべき各出力信号のうちの一部又は全部について不一致であることを検出した場合に、ＦＰＧＡを異常と診断するようにした、ことを特徴とする。
【発明の効果】
【００１７】
本発明によれば、充分に高い診断精度を確保することができる。
【図面の簡単な説明】
【００１８】
【図１】本発明の第１の実施形態の説明図。
【図２】本発明の第２の実施形態の説明図。
【図３】本発明の第３の実施形態の説明図。
【図４】本発明の第３の実施形態に係るＦＰＧＡを制御装置等に用いた場合におけるＦＰＧＡ及びその出力側の構成を示す参考例。
【図５】従来の異常診断方法及び装置についての説明図。
【発明を実施するための形態】
【００１９】
図１は、本発明の第１の実施形態の説明図である。ＦＰＧＡ１は、図５に示す従来の異常診断装置の場合と同様に、複数個（本実施形態では４個）のＩ／ＯブロックIOa〜IOd及び複数個（本実施形態では４個）の回路ブロックＣＩＲa〜ＣＩＲdを有している。図５では、４個の回路ブロックＣＩＲa〜ＣＩＲdのうち回路ブロックＣＩＲaのみにプリスケーラ（分周器）として機能するカウンタＣＯＵaが設けられていたが、本実施形態では全ての回路ブロックＣＩＲa〜ＣＩＲdにそれぞれカウンタＣＯＵa〜ＣＯＵdが設けられている。
【００２０】
これら４個のカウンタＣＯＵa〜ＣＯＵdは、カウンタＣＯＵa，ＣＯＵb，ＣＯＵd，ＣＯＵcの順に順次直列接続されてカウンタ直列接続体を形成している。ＦＰＧＡ１の外部には、図５の場合と同様に、発振器２及びウォッチドッグタイマ３が設置されているが、発振器２からの発振信号は、一端側Ｉ／ＯブロックであるＩ／ＯブロックIOaの入力ピンを介して、上記のカウンタ直列接続体の一端側に位置するカウンタＣＯＵaに入力されるようになっている。
【００２１】
また、上記のカウンタ直列接続体の他端側に位置するカウンタＣＯＵcからは、他端側Ｉ／ＯブロックであるＩ／ＯブロックIOcの出力ピンを介して、４個のカウンタＣＯＵa，ＣＯＵb，ＣＯＵd，ＣＯＵcにより順次分周された発振信号がカウンタクリア信号としてウォッチドッグタイマ３のクリア信号入力端子に出力されるようになっている。
【００２２】
次に図１の動作につき説明する。ＦＰＧＡ１の通常動作中に、発振器２からの発振信号が、一端側Ｉ／ＯブロックであるＩ／ＯブロックIOaの入力ピンを介して、カウンタ直列接続体の一端側に位置するカウンタＣＯＵaに入力される。この入力された発振信号は、カウンタ直列接続体を形成するカウンタＣＯＵa，ＣＯＵb，ＣＯＵd，ＣＯＵcにより順次分周される。そして、この分周された発振信号は、カウンタ直列接続体の他端側に位置するカウンタＣＯＵcから、他端側Ｉ／ＯブロックであるＩ／ＯブロックIOcの出力ピンを介し、カウンタクリア信号としてウォッチドッグタイマ３のクリア信号入力端子に出力される。
【００２３】
ウォッチドッグタイマ３は、所定のクリア期間内にカウンタＣＯＵcからのカウンタクリア信号を入力すればタイマカウント動作を再スタートさせるが、所定のクリア期間内にカウンタクリア信号を入力せずタイムアップした時にエラー信号ERRを出力する。このエラー信号ERRが出力された場合は、ＦＰＧＡ１が異常と診断される。
【００２４】
なお、カウンタＣＯＵa〜ＣＯＵdは、回路ブロックＣＩＲa〜ＣＩＲdの論理回路構成とは回路的に別ブロックで構成されているので、論理回路構成に影響を与えることはなく、ＦＰＧＡ１の動作期間中は常時異常診断を行うことができる。
【００２５】
上記のように、本実施形態では、ＦＰＧＡ１を構成する全ての回路ブロックＣＩＲa〜ＣＩＲdにそれぞれ直列接続されたカウンタＣＯＵa〜ＣＯＵdを設けているので、ウォッチドッグタイマ３の動作に基づき正常と診断した場合には従来に比べて充分に高い診断精度が確保される。
【００２６】
また、異常診断のために使用するＩ／Ｏブロックの入出力ピン数は、一端側Ｉ／ＯブロックであるＩ／ＯブロックIOaの入力ピン、及び他端側Ｉ／ＯブロックであるＩ／ＯブロックIOcの出力ピンだけであり、図５の場合と実質的に同じとなるので、本来の用途に割り当てる入出力ピン数を多く確保することが可能になっている。
【００２７】
なお、図５のでは、ウォッチドッグタイマ３に入力されるカウンタクリア信号は、１個のカウンタＣＯＵaにより分周された発振信号であるのに対し、本実施形態では４個のカウンタＣＯＵa，ＣＯＵb，ＣＯＵd，ＣＯＵcにより分周された発振信号であるが、これらのカウンタの分周比やウォッチドッグタイマ３のクリア期間は適宜調整可能なので問題はない。
【００２８】
図２は、本発明の第２の実施形態の説明図である。前述した第１の実施形態におけるカウンタ直列接続体は、直列接続されたカウンタＣＯＵa，ＣＯＵb，ＣＯＵd，ＣＯＵcにより形成されたものであったが、この第２の実施形態におけるカウンタ直列接続体は、各カウンタが設けられた回路ブロックのＩ／Ｏブロックを介して（すなわち、Ｉ／ＯブロックIOaの入力ピン、Ｉ／ＯブロックIObの入出力ピン、Ｉ／ＯブロックIOdの入出力ピン、Ｉ／ＯブロックIOcの出力ピンを介して）、隣接するカウンタ同士が接続されている。
【００２９】
このように、本実施形態では、カウンタ直列接続体を、各Ｉ／Ｏブロックを介して隣接するカウンタ同士を接続することにより形成しているので、ウォッチドッグタイマ３の動作に基づき正常と診断した場合には、全ての回路ブロックに加えて、全てのＩ／Ｏブロックも必ず正常であることが保証されている。したがって、第１の実施形態に比べて一層高い診断精度が確保される。
【００３０】
また、異常診断のために使用するＩ／Ｏブロックの入出力ピン数は、第１の実施形態よりも多くなるので、通常動作において使用するＩ／Ｏブロックの入出力ピン数がそれほど多くない場合に本実施形態の構成を適用するのが好ましい。なお、本実施形態の動作は、第１の実施形態と略同一なので重複した説明を省略する。
【００３１】
図３は、本発明の第３の実施形態の説明図である。本実施形態は、回路ブロック内に機能回路と共に、この機能回路の故障を検出するための故障検出回路を設けた構成である。
【００３２】
すなわち、本実施形態におけるＦＰＧＡ１は、回路ブロックＣＩＲ、及びＩ／ＯブロックＩＯ1，ＩＯ2を有してる。そして、回路ブロックＣＩＲ内には、複数個（本実施形態では２個）の機能回路ＢＬＫa，ＢＬＫb、及び１個の故障検出回路ＢＬＫcが設けられている。
【００３３】
機能回路ＢＬＫa，ＢＬＫbは、回路ブロックＣＩＲの本来の機能に必要な演算動作を行うものであり、互いに同一構成を有するものである。ＦＰＧＡ１の外部からの信号は、Ｉ／ＯブロックＩＯ1を介して機能回路ＢＬＫa，ＢＬＫbの双方に入力されるが、これらの機能回路ＢＬＫa，ＢＬＫbから出力される信号については、いずれか一方のみ（本実施形態では機能回路ＢＬＫaからの出力信号のみ）がＩ／ＯブロックＩＯ2を介して外部に出力される。
【００３４】
そして、機能回路ＢＬＫaの出力信号の一部、及びこれに対応する機能回路ＢＬＫbの出力信号の一部が故障検出回路ＢＬＫcに入力されるようになっている。故障検出回路ＢＬＫcは、これらの信号の入力に基づき、機能回路ＢＬＫa，ＢＬＫbの故障の有無を検出し、故障を検出した場合にはエラー信号ERRをＩ／ＯブロックＩＯ2を介して外部に出力するようになっている。
【００３５】
次に、図３の動作につき説明する。ＦＰＧＡ１の外部からの信号は、Ｉ／ＯブロックＩＯ1を介して機能回路ＢＬＫa，ＢＬＫbの双方に入力され、機能回路ＢＬＫaからの出力信号のみがＩ／ＯブロックＩＯ2を介して外部に出力される。
【００３６】
このとき、機能回路ＢＬＫa，ＢＬＫbの各出力信号の一部が故障検出回路ＢＬＫcに入力されている。機能回路ＢＬＫa，ＢＬＫbは互いに同一構成を有するものであるから、各出力信号も互いに同一の信号になっているはずである。したがって、故障検出回路ＢＬＫcは、入力した両回路の各出力信号を比較し、不一致である信号が検出された場合にはエラー信号ERRを出力する。それ故、この故障検出回路ＢＬＫcがエラー信号ERRを出力した場合には、ＦＰＧＡ１に異常が発生していると診断することができる。
【００３７】
このように、本実施形態では、回路ブロックＣＩＲ内に故障検出回路ＢＬＫcを設け（従来は、この故障検出回路ＢＬＫcに相当する回路は、ＦＰＧＡ１の外部に設けられているのが通常であった）、この故障検出回路ＢＬＫcが機能回路ＢＬＫa，ＢＬＫbの各出力信号を入力して故障検出を行っているので、ＦＰＧＡ１の動作期間中は常時異常診断を行う結果となっている。つまり、ＦＰＧＡ１自身に自己診断機能を持たせることができ、このＦＰＧＡ１の信頼性をより向上させることが可能である。
【００３８】
なお、本実施形態では、故障検出回路ＢＬＫcが、機能回路ＢＬＫa，ＢＬＫbの各出力信号の一部のみを入力して、これらの一致又は不一致を判別する構成となっているが、各出力信号の全部を入力して、これらの一致又は不一致を判別する構成としてもよい。
【００３９】
また、機能回路ＢＬＫbの出力信号のうち、故障検出回路ＢＬＫcに入力されるもの以外の信号は本実施形態では「捨てられた」状態となっているが、外部に引き出して何らかの用途に活用することも可能である。
【００４０】
ところで、制御装置又は電子機器等を設計する場合、図３に示した第３の実施形態に係るＦＰＧＡを用いることにより、信頼性及び安全性をより向上させることができる。このような制御装置等に用いられるＦＰＧＡ、及びその出力側の構成を参考例として図４に示す。
【００４１】
図４において、機能回路ＢＬＫa，ＢＬＫbから出力される信号のうち、故障検出回路ＢＬＫcに入力されるものを信号S1a，S2a及び信号S1b，S2bとし、これらの信号線をワイヤードＯＲで接続する。
【００４２】
また、Ｉ／ＯブロックＩＯ2の出力ピンのモードをオープンコレクタ設定とし、上記のワイヤードＯＲの各接続点側にプルアップ抵抗Ｒ1，Ｒ2の各一端側を接続すると共に、このプルアップ抵抗Ｒ1，Ｒ2の他端側を共通接続して電源電圧Ｖccに接続する。そして、これらの信号線の出力を信号S1，S2とする。
【００４３】
上記のようにワイヤードＯＲ接続され、且つオープンコレクタ設定とされた信号線の出力信号S1，S2によりアクチュエータ等（例えばドア開閉駆動機構など）を駆動しようとする場合、信号S1（ドアを閉めるための信号）及び信号S2（ドアを開くための）がＨレベルのときに駆動するようにし、信号S1，S2がＬレベルのときに駆動停止するように（つまり、安全側の動作を行うように）設定することで、より安全性を高めることができる。なお、Ｉ／ＯブロックＩＯ2からの出力信号のうち信号S1，S2以外の信号は安全性とは特に関係ないため、機能回路ＢＬＫaの出力信号がそのまま制御信号として制御装置に対して出力される。
【００４４】
例えば、ドアを閉めようとする場合（信号S1がＨレベルとなるべき場合）、機能回路ＢＬＫa，ＢＬＫbの双方が正常であれば信号S1a，S2aは共にＨレベルとなるので信号S1もＨレベルとなり、ドアが閉められる。この場合は問題がない。
【００４５】
しかし、機能回路ＢＬＫa，ＢＬＫbのいずれかが異常となり、信号S1a，S2aの一方がＨレベルで他方がＬレベルになると、信号S1はＬレベルとなるのでドアが閉められることはない。したがって、ＦＰＧＡ１が異常になったとしてもドアに挟まれる事故を防止することができる。ここで、正常側の信号がＬレベルで異常側の信号がＨレベルの場合は予定通りの駆動停止動作となるが、正常側の信号がＨレベルで異常側の信号がＬレベルの場合、この駆動停止動作は結果としては誤動作となる。しかし、この誤動作は駆動停止という安全側動作であるため許容し得る誤動作である。
【００４６】
このように、機能回路ＢＬＫa，ＢＬＫbのいずれかが異常となり、信号S1a，S2aが互いに不一致となる状態が発生すると信号S1は必ずＬレベルとなる。それ故、信号S1がＬレベルであるときには、制御装置等が安全側の動作を行うように設定しておくことにより、より安全性を高めることができる。
【符号の説明】
【００４７】
１：ＦＰＧＡ（フィールド・プログラマブル・ゲート・アレイ）
２：発振器
３：ウォッチドッグタイマ
ＣＩＲa〜ＣＩＲd：回路ブロック
IOa〜IOd：Ｉ／Ｏブロック
ＣＯＵa〜ＣＯＵd：カウンタ
ＣＩＲ：回路ブロック
ＩＯ1，ＩＯ2：Ｉ／Ｏブロック
ＢＬＫa，ＢＬＫb：機能回路
ＢＬＫc：故障検出回路
【図１】
2011081665.tif 000003
【図２】
2011081665.tif 000004
【図３】
2011081665.tif 000005
【図４】
2011081665.tif 000006
【図５】
2011081665.tif 000007