説明

FPGAの異常診断方法及び装置

【課題】充分に高い診断精度を確保することが可能なFPGAの異常診断方法及び装置を提供すること。
【解決手段】FPGA1を構成する全ての回路ブロックCIRa〜CIRdにはそれぞれカウンタCOUa〜COUdが設けられており、これらはカウンタCOUa,COUb,COUd,COUcの順に順次直列接続されてカウンタ直列接続体を形成している。発振器2からの発振信号は、I/OブロックIOaの入力ピンを介してカウンタCOUaに入力され、また、カウンタCOUcからは、I/OブロックIOcの出力ピンを介して、順次分周された発振信号がカウンタクリア信号としてウォッチドッグタイマ3に出力される。ウォッチドッグタイマ3の動作に基づき正常と診断した場合には、全ての回路ブロックが必ず正常であることが保証される。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、FPGAの異常診断方法及び装置に関するものである。
【背景技術】
【0002】
FPGA(フィールド・プログラマブル・ゲート・アレイ)とは、所望の機能を有する論理回路構成を、ユーザ側でPC等を用いてプログラミングすることにより実現することが可能なICである。勿論、ユーザは所望の機能を有するICを、ICメーカに発注して入手することは可能であるが、その場合、一定以上の個数を発注しなければコスト的に引き合わなくなり、更に、製作後の仕様変更に容易に対処することができなくなるというデメリットを甘受しなければならない。また、ユーザは、作成したソフトウエアに従ってCPUに所定の動作を行わせることにより所望の機能を実現することも可能である。しかし、この場合も、CPUを動作させるためのソフトウエアに対するバグを完全に除去するのが困難であるというデメリットを甘受しなければならない。これらの理由により、近時は、比較的これらのデメリットが緩和されているFPGAが広汎に用いられるようになってきている。
【0003】
ところで、FPGAの動作が異常であるか否かについての診断は、FPGAが配置された同一基板上に実装されているCPUを用いて行うのが一般的である(例えば特許文献1参照)。しかし、CPUの動作環境によっては、FPGAの異常発生によってCPUが動作を停止することもある。そこで、FPGAに対する異常診断をCPUを用いずに、ウォッチドッグタイマを用いて行う手法も実施されている。
【0004】
図5は、このウォッチドッグタイマを用いて行う従来のFPGAの異常診断方法及び装置の説明図である。この装置の構成を説明すると、FPGA1は複数個(4個)のI/OブロックIOa〜IOd及び複数個(4個)の回路ブロックCIRa〜CIRdを有している。これら4個の回路ブロックCIRa〜CIRdのうち回路ブロックCIRaのみにプリスケーラ(分周器)として機能するカウンタCOUaが設けられている。そして、FPGA1の外部には発振器2及びウォッチドッグタイマ3が設置されている。発振器2からの発振信号は、I/OブロックIOaの入力ピンを介してカウンタCOUaに入力されるようになっており、また、カウンタCOUaからの出力信号はI/OブロックIOaの出力ピンを介してウォッチドッグタイマ3のクリア信号入力端子に出力されるようになっている。
【0005】
上記の構成では、4個の回路ブロックのうちの1個のみにしかカウンタを設けていないので、その分コストを低減することができ、また、異常診断のために使用するI/Oブロックの入出力ピン数もカウンタ1個分だけとなるので、本来の用途に割り当てる入出力ピン数を多く確保することが可能になっている。
【0006】
次に、この装置を用いた異常診断方法につき説明する。FPGA1の通常動作中に、発振器2は所定周波数の発振信号をI/OブロックIOaの入力ピンを介してカウンタCOUaに出力する。カウンタCOUaは、入力した発振信号を予め設定された分周比に分周し、この分周した発振信号をカウンタクリア信号として、ウォッチドッグタイマ3のクリア信号入力端子に出力する。
【0007】
ウォッチドッグタイマ3は、所定のクリア期間内にカウンタCOUaからのカウンタクリア信号を入力すればタイマカウント動作を再スタートさせるが、所定のクリア期間内にカウンタクリア信号を入力せずタイムアップした時にエラー信号ERRを出力する。このエラー信号ERRが出力された場合は、FPGA1が異常と診断される。
【先行技術文献】
【特許文献】
【0008】
【特許文献1】特開2004−302727号公報
【発明の概要】
【発明が解決しようとする課題】
【0009】
上述した従来の異常診断方法及び装置では、複数個(4個)の回路ブロックCIRa〜CIRdのうち回路ブロックCIRaのみにカウンタCOUaを組み込み、このカウンタCOUaからの出力信号を用いてFPGA1の異常の有無を診断している。このように、4個の回路ブロックのうちの1個のみにカウンタを設けて異常診断を行う手法は、異常の有無については4個の回路ブロック同士の相関性が高いことを前提としている。つまり、回路ブロックCIRaが正常であれば他の回路ブロックCIRb〜CIRdも正常であり、また、回路ブロックCIRaが異常であれば他の回路ブロックCIRb〜CIRdも異常であると見做すものである。
【0010】
しかし、最近はFPGAの容量が次第に増大してFPGA1内の回路ブロックの個数も多くなってきており、また、診断精度についても高いレベルが要求されてきているため、複数個の回路ブロックのうちの1個のみにカウンタを設ける構成では、充分に高い診断精度を確保することが困難な情況になっている。
【0011】
つまり、回路ブロックCIRaに設けたカウンタCOUaからの出力信号に基づきFPGA1を正常と診断した場合でも、実際には、他の回路ブロックCIRb〜CIRdが異常である場合がかなり含まれている可能性が高くなってきている。
【0012】
本発明は上記事情に鑑みてなされたものであり、充分に高い診断精度を確保することが可能なFPGAの異常診断方法及び装置を提供することを目的としている。
【課題を解決するための手段】
【0013】
上記課題を解決するための手段として、請求項1記載の発明は、FPGAを構成する複数の回路ブロックの全てに入力信号を分周するカウンタを設けると共に、これら複数のカウンタを直列接続することによりカウンタ直列接続体を形成し、発振器の発振信号を、前記カウンタ直列接続体の一端側に一端側I/Oブロックを介して入力させると共に、このカウンタ直列接続体の他端側から他端側I/Oブロックを介して出力される分周された発振信号を、カウンタクリア信号としてウォッチドッグタイマに入力させ、このウォッチドッグタイマがタイムアップによりエラー信号を出力した場合にFPGAを異常と診断するようにした、ことを特徴とする。
【0014】
請求項2記載の発明は、請求項1記載の発明において、前記カウンタ直列接続体は、各カウンタが設けられた回路ブロックのI/Oブロックを介して、隣接するカウンタ同士が接続されたものである、ことを特徴とする。
【0015】
請求項3記載の発明は、入力信号を分周するカウンタを、FPGAを構成する複数の回路ブロックの全てに設け、これら複数のカウンタを直列接続することにより形成したカウンタ直列接続体と、前記カウンタ直列接続体の一端側に一端側I/Oブロックを介して発振信号を入力させる発振器と、前記カウンタ直列接続体の他端側から他端側I/Oブロックを介して出力される分周された発振信号を、カウンタクリア信号として入力し、タイムアップ時のエラー信号を異常診断信号として出力するウォッチドッグタイマと、を備えたことを特徴とする。
【0016】
請求項4記載の発明は、FPGAを構成する回路ブロック内に設けられている、互いに同一構成を有する複数の機能回路からの各出力信号を入力する故障検出回路を同じ回路ブロック内に設け、前記故障検出回路が、前記入力した各出力信号を比較し、本来互いに同一であるべき各出力信号のうちの一部又は全部について不一致であることを検出した場合に、FPGAを異常と診断するようにした、ことを特徴とする。
【発明の効果】
【0017】
本発明によれば、充分に高い診断精度を確保することができる。
【図面の簡単な説明】
【0018】
【図1】本発明の第1の実施形態の説明図。
【図2】本発明の第2の実施形態の説明図。
【図3】本発明の第3の実施形態の説明図。
【図4】本発明の第3の実施形態に係るFPGAを制御装置等に用いた場合におけるFPGA及びその出力側の構成を示す参考例。
【図5】従来の異常診断方法及び装置についての説明図。
【発明を実施するための形態】
【0019】
図1は、本発明の第1の実施形態の説明図である。FPGA1は、図5に示す従来の異常診断装置の場合と同様に、複数個(本実施形態では4個)のI/OブロックIOa〜IOd及び複数個(本実施形態では4個)の回路ブロックCIRa〜CIRdを有している。図5では、4個の回路ブロックCIRa〜CIRdのうち回路ブロックCIRaのみにプリスケーラ(分周器)として機能するカウンタCOUaが設けられていたが、本実施形態では全ての回路ブロックCIRa〜CIRdにそれぞれカウンタCOUa〜COUdが設けられている。
【0020】
これら4個のカウンタCOUa〜COUdは、カウンタCOUa,COUb,COUd,COUcの順に順次直列接続されてカウンタ直列接続体を形成している。FPGA1の外部には、図5の場合と同様に、発振器2及びウォッチドッグタイマ3が設置されているが、発振器2からの発振信号は、一端側I/OブロックであるI/OブロックIOaの入力ピンを介して、上記のカウンタ直列接続体の一端側に位置するカウンタCOUaに入力されるようになっている。
【0021】
また、上記のカウンタ直列接続体の他端側に位置するカウンタCOUcからは、他端側I/OブロックであるI/OブロックIOcの出力ピンを介して、4個のカウンタCOUa,COUb,COUd,COUcにより順次分周された発振信号がカウンタクリア信号としてウォッチドッグタイマ3のクリア信号入力端子に出力されるようになっている。
【0022】
次に図1の動作につき説明する。FPGA1の通常動作中に、発振器2からの発振信号が、一端側I/OブロックであるI/OブロックIOaの入力ピンを介して、カウンタ直列接続体の一端側に位置するカウンタCOUaに入力される。この入力された発振信号は、カウンタ直列接続体を形成するカウンタCOUa,COUb,COUd,COUcにより順次分周される。そして、この分周された発振信号は、カウンタ直列接続体の他端側に位置するカウンタCOUcから、他端側I/OブロックであるI/OブロックIOcの出力ピンを介し、カウンタクリア信号としてウォッチドッグタイマ3のクリア信号入力端子に出力される。
【0023】
ウォッチドッグタイマ3は、所定のクリア期間内にカウンタCOUcからのカウンタクリア信号を入力すればタイマカウント動作を再スタートさせるが、所定のクリア期間内にカウンタクリア信号を入力せずタイムアップした時にエラー信号ERRを出力する。このエラー信号ERRが出力された場合は、FPGA1が異常と診断される。
【0024】
なお、カウンタCOUa〜COUdは、回路ブロックCIRa〜CIRdの論理回路構成とは回路的に別ブロックで構成されているので、論理回路構成に影響を与えることはなく、FPGA1の動作期間中は常時異常診断を行うことができる。
【0025】
上記のように、本実施形態では、FPGA1を構成する全ての回路ブロックCIRa〜CIRdにそれぞれ直列接続されたカウンタCOUa〜COUdを設けているので、ウォッチドッグタイマ3の動作に基づき正常と診断した場合には従来に比べて充分に高い診断精度が確保される。
【0026】
また、異常診断のために使用するI/Oブロックの入出力ピン数は、一端側I/OブロックであるI/OブロックIOaの入力ピン、及び他端側I/OブロックであるI/OブロックIOcの出力ピンだけであり、図5の場合と実質的に同じとなるので、本来の用途に割り当てる入出力ピン数を多く確保することが可能になっている。
【0027】
なお、図5のでは、ウォッチドッグタイマ3に入力されるカウンタクリア信号は、1個のカウンタCOUaにより分周された発振信号であるのに対し、本実施形態では4個のカウンタCOUa,COUb,COUd,COUcにより分周された発振信号であるが、これらのカウンタの分周比やウォッチドッグタイマ3のクリア期間は適宜調整可能なので問題はない。
【0028】
図2は、本発明の第2の実施形態の説明図である。前述した第1の実施形態におけるカウンタ直列接続体は、直列接続されたカウンタCOUa,COUb,COUd,COUcにより形成されたものであったが、この第2の実施形態におけるカウンタ直列接続体は、各カウンタが設けられた回路ブロックのI/Oブロックを介して(すなわち、I/OブロックIOaの入力ピン、I/OブロックIObの入出力ピン、I/OブロックIOdの入出力ピン、I/OブロックIOcの出力ピンを介して)、隣接するカウンタ同士が接続されている。
【0029】
このように、本実施形態では、カウンタ直列接続体を、各I/Oブロックを介して隣接するカウンタ同士を接続することにより形成しているので、ウォッチドッグタイマ3の動作に基づき正常と診断した場合には、全ての回路ブロックに加えて、全てのI/Oブロックも必ず正常であることが保証されている。したがって、第1の実施形態に比べて一層高い診断精度が確保される。
【0030】
また、異常診断のために使用するI/Oブロックの入出力ピン数は、第1の実施形態よりも多くなるので、通常動作において使用するI/Oブロックの入出力ピン数がそれほど多くない場合に本実施形態の構成を適用するのが好ましい。なお、本実施形態の動作は、第1の実施形態と略同一なので重複した説明を省略する。
【0031】
図3は、本発明の第3の実施形態の説明図である。本実施形態は、回路ブロック内に機能回路と共に、この機能回路の故障を検出するための故障検出回路を設けた構成である。
【0032】
すなわち、本実施形態におけるFPGA1は、回路ブロックCIR、及びI/OブロックIO1,IO2を有してる。そして、回路ブロックCIR内には、複数個(本実施形態では2個)の機能回路BLKa,BLKb、及び1個の故障検出回路BLKcが設けられている。
【0033】
機能回路BLKa,BLKbは、回路ブロックCIRの本来の機能に必要な演算動作を行うものであり、互いに同一構成を有するものである。FPGA1の外部からの信号は、I/OブロックIO1を介して機能回路BLKa,BLKbの双方に入力されるが、これらの機能回路BLKa,BLKbから出力される信号については、いずれか一方のみ(本実施形態では機能回路BLKaからの出力信号のみ)がI/OブロックIO2を介して外部に出力される。
【0034】
そして、機能回路BLKaの出力信号の一部、及びこれに対応する機能回路BLKbの出力信号の一部が故障検出回路BLKcに入力されるようになっている。故障検出回路BLKcは、これらの信号の入力に基づき、機能回路BLKa,BLKbの故障の有無を検出し、故障を検出した場合にはエラー信号ERRをI/OブロックIO2を介して外部に出力するようになっている。
【0035】
次に、図3の動作につき説明する。FPGA1の外部からの信号は、I/OブロックIO1を介して機能回路BLKa,BLKbの双方に入力され、機能回路BLKaからの出力信号のみがI/OブロックIO2を介して外部に出力される。
【0036】
このとき、機能回路BLKa,BLKbの各出力信号の一部が故障検出回路BLKcに入力されている。機能回路BLKa,BLKbは互いに同一構成を有するものであるから、各出力信号も互いに同一の信号になっているはずである。したがって、故障検出回路BLKcは、入力した両回路の各出力信号を比較し、不一致である信号が検出された場合にはエラー信号ERRを出力する。それ故、この故障検出回路BLKcがエラー信号ERRを出力した場合には、FPGA1に異常が発生していると診断することができる。
【0037】
このように、本実施形態では、回路ブロックCIR内に故障検出回路BLKcを設け(従来は、この故障検出回路BLKcに相当する回路は、FPGA1の外部に設けられているのが通常であった)、この故障検出回路BLKcが機能回路BLKa,BLKbの各出力信号を入力して故障検出を行っているので、FPGA1の動作期間中は常時異常診断を行う結果となっている。つまり、FPGA1自身に自己診断機能を持たせることができ、このFPGA1の信頼性をより向上させることが可能である。
【0038】
なお、本実施形態では、故障検出回路BLKcが、機能回路BLKa,BLKbの各出力信号の一部のみを入力して、これらの一致又は不一致を判別する構成となっているが、各出力信号の全部を入力して、これらの一致又は不一致を判別する構成としてもよい。
【0039】
また、機能回路BLKbの出力信号のうち、故障検出回路BLKcに入力されるもの以外の信号は本実施形態では「捨てられた」状態となっているが、外部に引き出して何らかの用途に活用することも可能である。
【0040】
ところで、制御装置又は電子機器等を設計する場合、図3に示した第3の実施形態に係るFPGAを用いることにより、信頼性及び安全性をより向上させることができる。このような制御装置等に用いられるFPGA、及びその出力側の構成を参考例として図4に示す。
【0041】
図4において、機能回路BLKa,BLKbから出力される信号のうち、故障検出回路BLKcに入力されるものを信号S1a,S2a及び信号S1b,S2bとし、これらの信号線をワイヤードORで接続する。
【0042】
また、I/OブロックIO2の出力ピンのモードをオープンコレクタ設定とし、上記のワイヤードORの各接続点側にプルアップ抵抗R1,R2の各一端側を接続すると共に、このプルアップ抵抗R1,R2の他端側を共通接続して電源電圧Vccに接続する。そして、これらの信号線の出力を信号S1,S2とする。
【0043】
上記のようにワイヤードOR接続され、且つオープンコレクタ設定とされた信号線の出力信号S1,S2によりアクチュエータ等(例えばドア開閉駆動機構など)を駆動しようとする場合、信号S1(ドアを閉めるための信号)及び信号S2(ドアを開くための)がHレベルのときに駆動するようにし、信号S1,S2がLレベルのときに駆動停止するように(つまり、安全側の動作を行うように)設定することで、より安全性を高めることができる。なお、I/OブロックIO2からの出力信号のうち信号S1,S2以外の信号は安全性とは特に関係ないため、機能回路BLKaの出力信号がそのまま制御信号として制御装置に対して出力される。
【0044】
例えば、ドアを閉めようとする場合(信号S1がHレベルとなるべき場合)、機能回路BLKa,BLKbの双方が正常であれば信号S1a,S2aは共にHレベルとなるので信号S1もHレベルとなり、ドアが閉められる。この場合は問題がない。
【0045】
しかし、機能回路BLKa,BLKbのいずれかが異常となり、信号S1a,S2aの一方がHレベルで他方がLレベルになると、信号S1はLレベルとなるのでドアが閉められることはない。したがって、FPGA1が異常になったとしてもドアに挟まれる事故を防止することができる。ここで、正常側の信号がLレベルで異常側の信号がHレベルの場合は予定通りの駆動停止動作となるが、正常側の信号がHレベルで異常側の信号がLレベルの場合、この駆動停止動作は結果としては誤動作となる。しかし、この誤動作は駆動停止という安全側動作であるため許容し得る誤動作である。
【0046】
このように、機能回路BLKa,BLKbのいずれかが異常となり、信号S1a,S2aが互いに不一致となる状態が発生すると信号S1は必ずLレベルとなる。それ故、信号S1がLレベルであるときには、制御装置等が安全側の動作を行うように設定しておくことにより、より安全性を高めることができる。
【符号の説明】
【0047】
1:FPGA(フィールド・プログラマブル・ゲート・アレイ)
2:発振器
3:ウォッチドッグタイマ
CIRa〜CIRd:回路ブロック
IOa〜IOd:I/Oブロック
COUa〜COUd:カウンタ
CIR:回路ブロック
IO1,IO2:I/Oブロック
BLKa,BLKb:機能回路
BLKc:故障検出回路

【特許請求の範囲】
【請求項1】
FPGAを構成する複数の回路ブロックの全てに入力信号を分周するカウンタを設けると共に、これら複数のカウンタを直列接続することによりカウンタ直列接続体を形成し、
発振器の発振信号を、前記カウンタ直列接続体の一端側に一端側I/Oブロックを介して入力させると共に、このカウンタ直列接続体の他端側から他端側I/Oブロックを介して出力される分周された発振信号を、カウンタクリア信号としてウォッチドッグタイマに入力させ、
このウォッチドッグタイマがタイムアップによりエラー信号を出力した場合にFPGAを異常と診断するようにした、
ことを特徴とするFPGAの異常診断方法。
【請求項2】
前記カウンタ直列接続体は、各カウンタが設けられた回路ブロックのI/Oブロックを介して、隣接するカウンタ同士が接続されたものである、
ことを特徴とする請求項1記載のFPGAの異常診断方法。
【請求項3】
入力信号を分周するカウンタを、FPGAを構成する複数の回路ブロックの全てに設け、これら複数のカウンタを直列接続することにより形成したカウンタ直列接続体と、
前記カウンタ直列接続体の一端側に一端側I/Oブロックを介して発振信号を入力させる発振器と、
前記カウンタ直列接続体の他端側から他端側I/Oブロックを介して出力される分周された発振信号を、カウンタクリア信号として入力し、タイムアップ時のエラー信号を異常診断信号として出力するウォッチドッグタイマと、
を備えたことを特徴とするFPGAの異常診断装置。
【請求項4】
FPGAを構成する回路ブロック内に設けられている、互いに同一構成を有する複数の機能回路からの各出力信号を入力する故障検出回路を同じ回路ブロック内に設け、
前記故障検出回路が、前記入力した各出力信号を比較し、本来互いに同一であるべき各出力信号のうちの一部又は全部について不一致であることを検出した場合に、FPGAを異常と診断するようにした、
ことを特徴とするFPGAの異常診断方法。

【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate


【公開番号】特開2011−81665(P2011−81665A)
【公開日】平成23年4月21日(2011.4.21)
【国際特許分類】
【出願番号】特願2009−234411(P2009−234411)
【出願日】平成21年10月8日(2009.10.8)
【出願人】(000003078)株式会社東芝 (54,554)
【Fターム(参考)】