(57)【要約】【課題】半導体装置の実使用中に故障診断が可能なウォッチドッグタイマを提供することにある。【解決手段】ウォッチドッグタイマを備える半導体装置において、前記ウォッチドッグタイマは、カウンタと、前記カウンタのカウント値のリフレッシュ期間に、前記カウント値を所望の値へ変更するカウンタ制御回路と、故障診断モジュールと、を備える。前記故障診断モジュールは、前記リフレッシュ期間に、ウォッチドッグタイマの外部へのリセット信号の発生を抑制させる回路、および前記リセット信号を保持する保持回路と、を有する。【選択図】図２
2018107679.tif 000002
【特許請求の範囲】
【請求項１】
ウォッチドッグタイマを備える半導体装置であって、
前記ウォッチドッグタイマは、
カウンタと、
前記カウンタのカウント値のリフレッシュ期間に、前記カウント値を所望の値へ変更するカウンタ制御回路と、
故障診断モジュールと、を備え、
前記故障診断モジュールは、
前記リフレッシュ期間に、前記ウォッチドッグタイマの外部へのリセット信号の発生を抑制させる回路と、
前記リセット信号を保持する第１保持回路と、
を備える半導体装置。
【請求項２】
請求項１の半導体装置において、
前記所望の値は、前記カウント値のオーバーフローの直前の値である、半導体装置。
【請求項３】
請求項２の半導体装置において、
前記故障診断モジュールは、さらに、故障診断回路を有し、
前記故障診断回路は、前記リフレッシュ期間において、前記第１保持回路に前記リセット信号が保持されないとき、故障検知信号を発生する、半導体装置。
【請求項４】
請求項２の半導体装置において、さらに、
ＣＰＵと、
内部バスと、を有し
前記ウォッチドッグタイマは、
トリガレジスタ、を有し、
前記トリガレジスタは、前記内部バスを介して前記ＣＰＵから所定値が書き込まれた場合、前記カウンタ制御回路へトリガ信号を発生し、
前記カウンタ制御回路は、前記トリガ信号に従って、前記カウンタのカウント値を前記リフレッシュ期間に、前記所望の値へ変更する、半導体装置。
【請求項５】
請求項４の半導体装置において、
前記第１保持回路は、前記ＣＰＵからの選択信号により、前記内部バスに結合される、半導体装置。
【請求項６】
請求項１の半導体装置において、
前記故障診断モジュールは、さらに、
前記リフレッシュ期間に、前記ウォッチドッグタイマの外部への割り込み信号の発生を抑制させる回路と、
前記割り込み信号を保持する第２保持回路と、を備える半導体装置。
【請求項７】
請求項６の半導体装置において、
前記故障診断モジュールは、さらに、
故障診断回路、を有し、
前記故障診断回路は、前記リフレッシュ期間において、前記２保持回路に前記割り込み信号が保持されないとき、故障検知信号を発生する、半導体装置。
【請求項８】
請求項１の半導体装置において、
前記カウンタは、前記カウント値を出力する出力回路を、有し
前記カウンタ制御回路は、前記リフレッシュ期間において、前記出力回路の値を変更可能なビット制御回路を有する、半導体装置。
【請求項９】
ウォッチドッグタイマを備える半導体装置であって、
前記ウォッチドッグタイマは、
カウンタと、
前記カウンタのカウント値のリフレッシュ期間に、前記カウント値を所望の値へ変更するカウンタ制御回路と、
故障診断モジュールと、を備え、
前記故障診断モジュールは、
前記リフレッシュ期間に、前記ウォッチドッグタイマの外部への割り込み信号の発生を抑制させる回路と、
前記割り込み信号を保持する第１保持回路と、
を備える半導体装置。
【請求項１０】
請求項９の半導体装置において、
前記所望の値は、前記割り込み信号の発生を規定する前記カウント値の直前の値である、半導体装置。
【請求項１１】
請求項９の半導体装置において、
前記故障診断モジュールは、さらに、故障診断回路を有し、
前記故障診断回路は、前記リフレッシュ期間において、前記第１保持回路に前記割り込み信号が保持されないとき、故障検知信号を発生する、半導体装置。
【請求項１２】
請求項９の半導体装置において、さらに、
ＣＰＵと、
内部バスと、を有し
前記ウォッチドッグタイマは、
トリガレジスタ、を有し、
前記トリガレジスタは、前記内部バスを介して前記ＣＰＵから所定値が書き込まれた場合、前記カウンタ制御回路へトリガ信号を発生し、
前記カウンタ制御回路は、前記トリガ信号に従って、前記カウンタのカウント値を前記リフレッシュ期間に、前記所望の値へ変更する、半導体装置。
【請求項１３】
請求項１２の半導体装置において、
前記第１保持回路は、前記ＣＰＵからの選択信号により、前記内部バスに結合される、半導体装置。
【請求項１４】
請求項９の半導体装置において、
前記故障診断モジュールは、さらに、
前記リフレッシュ期間に、前記ウォッチドッグタイマの外部へのリセット信号の発生を抑制させる回路と、
前記リセット信号を保持する第２保持回路と、を備える半導体装置。
【請求項１５】
請求項１４の半導体装置において、
前記故障診断モジュールは、さらに、
故障診断回路、を有し、
前記故障診断回路は、前記リフレッシュ期間において、前記２保持回路に前記リセット信号が保持されないとき、故障検知信号を発生する、半導体装置。
【請求項１６】
中央処理装置と、
内部バスと、
ウォッチドッグタイマと、を具備し、
前記ウォッチドッグタイマは、
前記中央処理装置が前記内部バスを介して所定値を書き込み可能とされたトリガレジスタと、
カウンタと、
前記トリガレジスタへの前記所定値に書き込みにより、前記ウォッチドッグタイマがリフレッシュ期間とされた場合、前記リフレッシュ期間において、前記カウンタのカウント値を所望の値へ変更可能なカウンタ制御回路と、
故障診断モジュールと、を備え、
前記故障診断モジュールは、
前記リフレッシュ期間に、前記ウォッチドッグタイマの外部へのリセット信号の発生を抑制させる第１ＡＮＤ回路と、
前記リセット信号を保持するリセットフラグ回路と、
前記リフレッシュ期間に、前記ウォッチドッグタイマの外部への割り込み信号の発生を抑制させる第２ＡＮＤ回路と、
前記割り込み信号を保持する割り込みフラグ回路と、
故障診断回路と、を備え、
前記カウンタ制御回路は、前記割り込み信号の発生を制御する制御レジスタを有する、
半導体装置。
【請求項１７】
請求項１６の半導体装置において、
前記故障診断回路は、前記リフレッシュ期間に、前記リセットフラグ回路または割り込みフラグ回路の保持する値に基づいて、故障検知信号を発生する、半導体装置。
【請求項１８】
請求項１６の半導体装置において、
前記リセットフラグ回路および前記割り込みフラグ回路は、前記中央処理装置からの選択信号により、前記内部バスに結合される、半導体装置。
【請求項１９】
請求項１６の半導体装置において、
前記カウンタは、前記カウント値を出力する出力回路を、有し
前記カウンタ制御回路は、前記リフレッシュ期間において、前記出力回路の値を変更可能なビット制御回路を有する、半導体装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本開示は半導体装置に関し、例えば、ウォッチドッグタイマを備える半導体装置に適用可能である。
【背景技術】
【０００２】
特許文献１には、「半導体装置は、ウォッチドッグタイマと中央処理装置とモード端子とを有する。前記中央処理装置は、前記ウォッチドッグタイマのタイムアウト制御を制御する。前記ウォッチドッグタイマは、前記モード端子を介して、前記ウォッチドッグタイマのタイマ周期を前記中央処理装置のタイムアウト制御による周期よりも短くする指示を外部から与えられる。前記ウォッチドッグタイマは、前記指示に応答して、前記中央処理装置によるタイムアウト制御よりも先に、タイムアウトを検出する。」ことが開示されている。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１０−８７９５９号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
特許文献１の開示は、ウォッチドッグタイマの評価を行う場合、半導体装置を評価モードに設定した後、ウォッチドッグタイマの評価を行う技術であり、半導体装置の実動作時には適用できない。そのため、特許文献１の開示は、特に、車載用半導体装置の機能安全の観点では課題を有する。
【０００５】
本開示の課題は、半導体装置の実動作中において、故障診断が可能なウォッチドッグタイマを備える半導体装置を提供することにある。
【０００６】
その他の課題と新規な特徴は、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【０００７】
本開示のうち代表的なものの概要を簡単に説明すれば下記の通りである。
【０００８】
すなわち、ウォッチドッグタイマを備える半導体装置において、前記ウォッチドッグタイマは、カウンタと、前記カウンタのカウント値のリフレッシュ期間に、前記カウント値を所望の値へ変更するカウンタ制御回路と、故障診断モジュールと、を備える。前記故障診断モジュールは、前記リフレッシュ期間に、ウォッチドッグタイマの外部へのリセット信号の発生を抑制させる回路、および前記リセット信号を保持する保持回路と、を有する。
【発明の効果】
【０００９】
上記半導体装置によれば、半導体装置の実動作中に、ウォッチドッグタイマの故障の診断が可能である。
【図面の簡単な説明】
【００１０】
【図１】実施例に係る半導体装置を説明するためのブロック図である。
【図２】実施例に係るウォッチドッグタイマの構成を示す図である。
【図３】実施例に係るウォッチドッグタイマの通常動作時とリセット出力故障時の動作フローを説明するための図である。
【図４】実施例に係るウォッチドッグタイマのオーバーフロー時の動作フローを説明するための図である。
【図５】変形例１に係るウォッチドッグタイマの構成を示す図である。
【図６】変形例１に係るウォッチドッグタイマの通常動作時とリセット故障及び割り込み故障時における動作フローを説明するための図である。
【図７】変形例１に係るウォッチドッグタイマの通常動作時とリセット故障及び割り込み故障時における他の動作フローを説明するための図である。
【図８】変形例２に係るカウンタ制御回路を説明するための図である。
【図９】ビット制御回路の動作フローを説明するための図である。
【発明を実施するための形態】
【００１１】
以下、実施例について、図面を用いて説明する。ただし、以下の説明において、同一構成要素には同一符号を付し繰り返しの説明を省略することがある。
【実施例】
【００１２】
［半導体装置の構成］
図１は、実施例に係る半導体装置を説明するためのブロック図である。図１には、ウォッチドッグタイマ（ＷＤＴ）１０を搭載する半導体装置１のブロック図が例示される。半導体装置１は車載制御用のマイクロコンピュータであり、１つの半導体チップに形成される。
【００１３】
マイクロコンピュータ１は、プログラムを実行する中央処理装置（ＣＰＵ）２、前記プログラムを格納するＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）３、前記中央処理装置２のワーク領域とされるＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）４、を有する。
【００１４】
マイクロコンピュータ１は、外部に接続される自動車ネットワークの１つであるＬＩＮ（Local Interconnect Network）バスＬＩＮＢＵＳとのインターフェース回路であるＬＩＮモジュール（ＬＩＮＭ）５を有する。マイクロコンピュータ１は、外部に接続される自動車ネットワークの他の１つであるＣＡＮ（コントローラエリアネットワーク）バスＣＡＮＢＵＳとのインターフェース回路であるＣＡＮモジュール（ＣＡＮＭ）６を有する。ＬＩＮＢＵＳおよびＣＡＮＢＵＳのそれぞれには、複数の車載制御用の電子制御ユニット（ＥＣＵ１，ＥＣＵ２）がそれぞれ接続される。
【００１５】
マイクロコンピュータ１は、さらに、外部端子（図示せず）を介して外部と情報の入出力を行うポート（ＰＯＲＴ）７、システム制御回路（ＳＣＮＴ）８、クロック生成回路（ＯＣＯ）９、ウォッチドッグタイマ（ＷＤＴ）１０、内部バス１１、を有する。内部バス１１は、マイクロコンピュータ１内の各部（２，３，４，５，６，７，８，１０）を相互に接続する。
【００１６】
システム制御回路（ＳＣＮＴ）８は、システムの動作モードの制御やシステムを初期化する制御を行う。システム制御回路（ＳＣＮＴ）８は、クロック生成回路（ＯＣＯ）９の設定およびその設定の確認のため、クロック生成回路（ＯＣＯ）９に結合される。
【００１７】
クロック生成回路（ＯＣＯ）９は、マイクロコンピュータ１の各部（２，３，４，５，６，７，８）にクロック信号ＣＬＫを供給する。マイクロコンピュータ１の実動作中において、中央処理装置２は、クロック信号ＣＬＫに同期して、ＲＯＭ３に格納されたプログラムを実行する。クロック生成回路（ＯＣＯ）９は、また、ウォッチドッグタイマ１０向けのカウントソースクロックとされるクロック信号ＷＣＬＫを発生する。クロック生成回路（ＯＣＯ）９は、クロック信号ＷＣＬＫを発生する専用のクロック生成回路（ＷＤＴＯＣＯ）を内蔵しても良い。
【００１８】
ウォッチドッグタイマ１０は、マイクロコンピュータ１の実動作中において、クロック信号ＷＣＬＫをカウント（計数）することにより、前記中央処理装置２が実行するプログラムの設計ミス等によって生じる無限ループや前記中央処理装置２の暴走等を検出する。
【００１９】
ウォッチドッグタイマ１０は、中央処理装置２によって予め設定された値（カウンタ値のオーバーフロー値ＯＶＦＶ）に向かってクロック信号ＷＣＬＫをカウント(計数)し、カウントした値が設定された値に到達したときオーバーフローを検出するタイマである。ウォッチドッグタイマ１０は、このオーバーフローを抑止するために、中央処理装置２が実行するプログラムによって、カウントした値が定期的に初期化（リフレッシュ）される。従って、中央処理装置２がプログラムを正常に実行していれば、ウォッチドッグタイマ１０によってカウントされた値がオーバーフローすることはない。一方、中央処理装置２が暴走していれば、ウォッチドッグタイマ１０によってカウントした値が初期化（リフレッシュ）されないため、ウォッチドッグタイマ１０によってオーバーフローが検出される。なお、この明細書では、オーバーフローの検出について説明するが、アンダーフローの検出へ変更されてもよい。この場合、中央処理装置２によって予め設定された値からカウントダウンを行うことで、アンダーフローが検出される。
【００２０】
ウォッチドッグタイマ１０は、システム制御回路（ＳＣＮＴ）８に対して、後述されるように、リセット信号６０、割り込み信号６１、および故障検知信号６２などの複数の出力信号ＳＯＵＴを発生する。
【００２１】
［ウォッチドッグタイマの構成］
図２は、実施例に係るウォッチドッグタイマの構成を示す図である。ウォッチドッグタイマ（ＷＤＴ）１０は、ウォッチドッグタイマ回路部（ウォッチドッグタイマモジュール）２０と故障診断回路部（故障診断モジュール）４０とを有する。
【００２２】
ウォッチドッグタイマモジュール２０は、カウンタ２１、リセット出力制御回路２２、割り込み出力制御回路２３、トリガレジスタ２４、およびカウンタ制御回路２５、を具備する。
【００２３】
カウンタ２１は、カウントソースクロックＷＣＬＫをカウントアップし、カウント値２６を出力する。内部リセット信号２７の出力を制御する回路（リセット出力制御回路）２２は、カウンタ２１のカウント値２６が予め設定された値（オーバーフロー値ＯＶＦＶ）に到達してオーバーフローしたことを検知した時、内部リセット信号２７を出力する。内部リセット信号２７は、後述されるＡＮＤ回路（第１ＡＮＤ回路）４１によりマスク（無効化）されない時、リセット信号６０としてシステム制御回路８へ出力される。
【００２４】
内部割り込み信号２９の出力を制御する回路（割り込み出力制御回路）２３は、カウンタ２１のカウント値２６がある特定のカウント値ＩＮＴＶ（例えば、オーバーフロー値ＯＶＦＶの５０％、または７５％等）である時に、それを検知し、内部割り込み信号２９をアサートする。内部割り込み信号２９は、後述されるＡＮＤ回路（第２ＡＮＤ回路）４５によりマスク（無効化）されない時、割り込み信号６１としてシステム制御回路８に出力される。
【００２５】
トリガレジスタ（ＴＲＲＥＧ）２４は、内部バス１１に信号配線１４を介して接続され、中央処理装置２によってそのレジスタ値の読み出しおよび書き込みが可能である。中央処理装置２は、オーバーフローの抑止、すなわち、ウォッチドッグタイマ１０のカウント値の初期化（リフレッシュ）のため、トリガレジスタ２４に所定の第１値（例えば、所定の第１固定値）の書込みを行う。それにより、トリガレジスタ２４はトリガ信号３０をアサートする。
【００２６】
カウンタ制御回路２５はカウンタ２１のカウント値２６の初期化動作、すなわち、カウント値２６のリフレッシュ動作を制御する回路である。カウンタ制御回路２５は、トリガ信号３０がアサートされたことをトリガとして、オーバーフロー直前のカウント値（ＢＯＶＦ）の書き込みを指示する書き込み信号（第１書込み信号）３１をアサートし、カウンタ２１に、直接、オーバーフロー直前のカウント値（ＢＯＶＦ）の書き込みを行う。このとき併せて、カウンタ制御回路２５は、オーバーフロー直前のカウント値の書き込み状態を示す書き込みステータス信号（第１書込み状態信号）３２を出力する。
【００２７】
また、カウンタ制御回路２５はカウント値の初期化を制御する機能も有する。この場合、カウンタ制御回路２５は、カウンタ値の初期化（リフレッシュ）を指示するためのリフレッシュ信号３３をアサートする。リフレッシュ信号３３のアサートは、故障診断モジュール４０から出力されるリセット出力正常信号３４のアサートをトリガとして行われる。
【００２８】
オーバーフロー直前のカウント値（ＢＯＶＦ）とは、カウンタ２１がカウントアップ動作を行う８ビットのカウンタで、カウント値のオーバーフロー値（ＯＶＦＶ）が１１１１１１１１（２進数表記）の場合、たとえば、１１１１００１１（２進数表記）や１１１１０１１１（２進数表記）等の様な値である。すなわち、オーバーフロー直前のカウント値（ＢＯＶＦ）とは、クロック信号ＷＣＬＫを数クロック分だけカウントアップすると、オーバーフロー値（ＯＶＦＶ）となる様な値である。オーバーフロー直前のカウント値（ＢＯＶＦ）は、任意とされるが、後述されるリフレッシュ期間の長さを考慮して決めるのが良い。カウンタ２１がカウントダウン動作を行う８ビットのカウンタで、カウント値のアンダーフロー値が００００００００（２進数表記）の場合、アンダーフロー直前のカウント値は、たとえば、０００００１０００（２進数表記）、０００００１１１（２進数表記）等の様な値、すなわち、クロック信号ＷＣＬＫを数クロック分だけカウントダウンするとアンダーフロー値となる様な値である。
【００２９】
故障診断モジュール４０はウォッチドッグタイマモジュール２０の故障を診断する回路である。故障診断モジュール４０は、ＡＮＤ回路（第１ＡＮＤ回路）４１、リセットフラグ回路（第１保持回路）４２、ＡＮＤ回路（第２ＡＮＤ回路）４５、および割り込みフラグ回路（第２保持回路）４６を有する。リセットフラグ回路４２は内部リセット信号２７のアサートを検出し、それをリセットフラグとして保持する保持回路（第１保持回路）である。割り込みフラグ回路４６は内部割り込み信号２９のアサートを検出し、それを割り込みフラグとして保持する保持回路（第２保持回路）である。
【００３０】
先ず、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がアサートされている場合について説明する。この場合、ＡＮＤ回路（第１ＡＮＤ回路）４１により内部リセット信号２７が抑制（マスク）されるので、システム制御回路８へのリセット信号６０の発行が阻止される。その代わりに、リセットフラグ回路（第１保持回路）４２は内部リセット信号２７のアサートを検出し、それをリセットフラグとして保持する保持回路としての機能を有する。リセットフラグ回路４２はリセットフラグ信号４３をアサートし、故障診断回路４４に通知する。
【００３１】
また、ＡＮＤ回路（第２ＡＮＤ回路）４５により内部割り込み信号２９が抑制（マスク）されるので、システム制御回路８への割り込み信号６１の発行が阻止される。その代わりに、割り込みフラグ回路（第２保持回路）４６は内部割り込み信号２９のアサートを検出し、それを割り込みフラグとして保持する保持回路としての機能を有する。割り込みフラグ回路４６は割り込みフラグ信号４７をアサートし、故障診断回路４４に通知する。
【００３２】
故障診断回路４４は、リセットフラグ信号４３のアサートにより、内部リセット信号２７が正常に出力されたことを示すリセット出力正常信号３４をアサートする。リセットフラグ信号４３がアサートされない場合、故障診断回路４４は故障検知信号６２をアサートし、システム制御回路８に警告する。その結果、システム制御回路８は、例えば、システムリセット信号を発生し、マイクロコンピュータ１のシステム全体のリセット動作を指示する。
【００３３】
次に、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がネゲートされている場合について説明する。この場合、ＡＮＤ回路４１は内部リセット信号２７を抑制（マスク）しないため、システム制御回路８にリセット信号６０として発行される。また、この場合、リセットフラグ回路４２は、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２のネゲートにより、リセットされる。
【００３４】
リセットフラグ回路４２および割り込みフラグ回路４６は、内部バス１１からの選択信号ＳＥＬにより選択可能にされている。ＣＰＵ２が選択信号ＳＥＬを発生し、リセットフラグ回路４２および割り込みフラグ回路４６を選択すると、リセットフラグ回路４２および割り込みフラグ回路４６に保持されるリセットフラグ信号４３および割り込みフラグ信号４７はリードデータＲＤとして内部バス１１を介してＣＰＵ２により取得可能である。リセットフラグ信号４３および割り込みフラグ信号４７の信号状態を確認することが出来るので、ウォッチドッグタイマ（ＷＤＴ）１０の故障の解析が容易にできる。
【００３５】
［実施例に係る動作フロー］
図３は、実施例に係るウォッチドッグタイマの通常動作時とリセット出力故障時の動作フローを説明するための図である。図３において、各信号は図２の信号に対応している。また、ステータスＳＴはウォッチドッグタイマモジュール２０と故障診断モジュール４０の状態を示す。カウンタ値２６はカウンタ２１がカウントアップされている様子を模式的に表したものである。ＯＶＦＶは、カウント値のオーバーフロー値を示す。図３において、実線が通常動作時を示しており、太い点線がリセット出力故障時を示している。
【００３６】
最初に、ステータスＳＴについて説明する。ステータスＳＴに示されるように、時刻ｔ０から時刻ｔ１の期間はウォッチドッグタイマモジュール２０のカウントアップ動作の期間であり、時刻ｔ１から時刻ｔ３の期間はウォッチドッグタイマモジュール２０のリフレッシュ動作の期間および故障診断モジュール４０の故障診断の動作の期間である。また、時刻ｔ３以降はウォッチドッグタイマモジュール２０のカウントアップ動作の期間である。また、ウォッチドッグタイマ１０の実動作中のカウントアップ動作の期間において、カウンタ２１はカウントアップ動作を行っているものとする。
【００３７】
「通常動作時」
時刻ｔ１において、ウォッチドッグタイマ１０の実動作中に、ＣＰＵ２のプログラム実行によりトリガレジスタ２４への所望の固定値の書き込みが行われる。この書込みがトリガとなり、リフレッシュ動作が開始される。先ず、カウンタ制御回路２５により、オーバーフロー直前の値の書き込み信号（第１書込み信号）３１がアサートされ、カウンタ２１にオーバーフロー直前の値（ＢＯＶＦ）が書きこまれる。併せて、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がハイレベルとしてアサートされる。これにより、リセット出力正常信号３４が故障診断回路４４によりロウレベルへクリアされる。
【００３８】
時刻ｔ２において、カウントソースクロックＷＣＬＫの数カウント後、カウンタ２１のカウント値がオーバーフロー値（ＯＶＦＶ）に到達し、オーバーフローとなる。オーバーフローとなるため、内部リセット信号２７がリセット出力制御回路２２により発行されるが、故障診断モジュール４０内のＡＮＤ回路（第１ＡＮＤ回路）４１によりマスクされているため、リセット信号６０はロウレベルを維持する。そのため、システム制御回路８にはリセット信号６０は発行されない。代わりに、リセットフラグ４２がセットされ、リセットフラグ信号４３がハイレベルとしてアサートされる。
【００３９】
続いて、故障診断回路４４は、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がアサートされてからある所定の期間内にリセットフラグ回路４２がハイレベルとしてアサートされたか否かを、リセットフラグ信号４３を通して確認する。リセットフラグ信号４３がハイレベルにセットされていた場合（実線）、故障診断回路４４はリセット出力を正常動作と診断し、リセット出力正常信号３４をハイレベルとしてアサートする。
【００４０】
時刻ｔ３において、リセット出力正常信号３４のアサートを受け、カウンタ制御回路２５はカウンタ２１の初期化(リフレッシュ)を行い、次のカウントアップ動作を開始させる。それと同時に、カウンタ制御回路２５はオーバーフロー直前の値（ＢＯＶＦ）の書き込みステータス信号（第１書込み状態信号）３２をロウレベルとしてネゲートする。これにより、リセットフラグ信号４３がロウレベルへクリアされる。
【００４１】
［リセット故障時］
時刻ｔ１で、カウンタ２１にオーバーフロー直前の値（ＢＯＶＦ）が書きこまれる。併せて、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がハイレベルとしてアサートされる。これにより、リセット出力正常信号３４が故障診断回路４４によりロウレベルへクリアされる。
【００４２】
この後、例えば、カウンタ２１が故障し、カウント値がオーバーフロー値に到達しないものとする（太い点線）。この場合、リセットフラグ信号４３はロウレベルでクリアされたまま（時刻ｔ２−時刻ｔ３の太い点線）であるので、リセット信号が発生しない故障と見做される。そのため、故障診断回路４４はリセット信号発生経路の回路の故障と診断し、リセット出力正常信号３４をロウレベルのままとし、故障検知信号６２をハイレベルとしてアサートし、システム制御回路８に警告する。なお、上記ではカウンタ２１の故障の例を説明したが、リセット信号が発生しない故障としては、リセット出力制御回路２２やリセットフラグ回路４２の故障も考えられる。
【００４３】
［暴走時］
図４は、実施例に係るウォッチドッグタイマのオーバーフロー時の動作フローを説明するための図である。図４には、図３との比較のため、オーバーフロー直前の値（ＢＯＶＦ）の書込みのタイミングを点線で例示的に示した。
【００４４】
時刻ｔ０に、カウンタ２１がカウントアップ動作を開始し、時刻ｔ１でカウンタ２１のカウント値がオーバーフローに到達した場合である。言いかえると、ＣＰＵ２はプログラムの暴走などによりトリガレジスタ２４へ所定の第１固定値の書込みを行うことが出来ず、リフレッシュ動作に入る前に、カウンタ２１のカウント値がオーバーフローした場合である。この場合、オーバーフローにより、リセット出力制御回路２２は内部リセット信号２７をハイレベルとしてアサートする。ただし、カウンタ制御回路２５は、トリガ信号３０がアサートされないため、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２をロウレベルとしてネゲートに維持する。このため、内部リセット信号２７はＡＮＤ回路（第１ＡＮＤ回路）４１にマスクされることなく、アサートされたリセット信号６０として、システム制御回路８へ発行される。その結果、システム制御回路８は、例えば、システムリセット信号を発生し、マイクロコンピュータ１のシステム全体のリセット動作が行われる。リセット期間ＴＲ経過後の時刻ｔ２において、マイクロコンピュータ１がリセットスタートされ、カウンタ２１のカウントアップ動作が開始される。
【００４５】
実施例によれば、カウンタ２１にオーバーフロー直前の値（ＢＯＶＦ）を書き込み可能なカウンタ制御回路２５がウォッチドッグタイマ（ＷＤＴ）１０に設けられる。カウンタ制御回路２５は、ウォッチドッグタイマ（ＷＤＴ）１０実動作中のリフレッシュ動作時に、カウンタ２１にオーバーフロー直前の値（ＢＯＶＦ）を書き込み可能である。そのため、リフレッシュ動作の期間において、意図的に、カウンタ２１のカウント値２６をオーバーフローさせて、内部リセット信号２７を発生させることが出来る。そのため、リセット信号を発生させる回路の故障を診断できる。
【００４６】
リフレッシュ動作の期間に発生される内部リセット信号２７はＡＮＤ回路４１でマスクされるので、リセット信号６０としてシステム制御回路８へは発生されない。また、内部リセット信号２７はリセットフラグ回路４２により検知および保持できる様にした。
【００４７】
上記により、ＣＰＵ２のプログラム実行中において、ウォッチドッグタイマ（ＷＤＴ）１０の実動作中におけるリフレッシュ動作の期間に、ウォッチドッグタイマ（ＷＤＴ）１０の自己診断（リセット出力の故障検出）が可能となる。また、ウォッチドッグタイマ（ＷＤＴ）１０の自己診断は、プログラムの暴走の検知を妨げることなく、ウォッチドッグタイマ（ＷＤＴ）１０の実動作中に行うことができる。
【００４８】
図２に示されるように、簡易な回路構成により、ウォッチドッグタイマ（ＷＤＴ）１０の自己診断を実現できるため、冗長構成（ウォッチドッグタイマを複数設け、それらの動作を比較する等）の様に回路規模を大きくすることなく、ウォッチドッグタイマ（ＷＤＴ）１０のリセット信号を発生させる回路部分の故障診断が可能である。
【００４９】
［変形例１］
図５は、変形例１に係るウォッチドッグタイマの構成を示す図である。図５に示されるウォッチドッグタイマ１０Ａは、図２に示されるウォッチドッグタイマ１０の変形例である。
【００５０】
図２に示されるウォッチドッグタイマ１０はリセット信号の発生経路の回路の故障検出に関して説明されたが、図５に示されるウォッチドッグタイマ１０Ａはリセット信号の発生経路の回路の故障検出、および割り込み信号の発生経路の回路の故障検出も検出可能にするものである。
【００５１】
図２に示されるウォッチドッグタイマ１０と異なる部分が説明される。
【００５２】
カウンタ制御回路２５は、さらに、割り込み信号の発生の可能・不可能を制御する制御レジスタ（割り込みイネーブルレジスタ、ＩＮＴＥＲＥＧ）５０を具備する。カウンタ制御回路２５は、さらに、割り込み直前の値（ＢＩＮＴ）の書き込み信号（第２書込み信号）５１をカウンタ２１へ出力し、割り込み直前の値（ＢＩＮＴ）の書き込みステータス信号（第２書込み状態信号）５２を故障診断回路４４へ出力し、また、割り込みフラグ回路４６から割り込みフラグ信号４７を入力される。カウンタ制御回路２５への割り込みフラグ信号４７の入力は、ウォッチドッグタイマ１０の動作フローが後述される図６の変形例１に係る動作フロー１とされるか、図７の変形例１に係る動作フロー２とされるかを決定するのに利用される。
【００５３】
故障診断回路４４は、さらに、割り込み出力正常信号５４をカウンタ制御回路２５へ出力し、フラグ初期化信号５７をリセットフラグ回路４２と割り込みフラグ回路４６とのそれぞれのリセット入力へ出力する。また、ＯＲ回路５５が設けられ、オーバーフロー直前の値の書き込みステータス信号（第１書込み信号）３２と割り込み直前の値（ＢＩＮＴ）の書き込みステータス信号（第２書込み状態信号）５２との論理ＯＲを取った信号５６がＡＮＤ回路（第１ＡＮＤ回路、第２ＡＮＤ回路）４１、４５のそれぞれ入力端子へ入力される。
【００５４】
割り込みイネーブルレジスタ（ＩＮＴＥＲＥＧ）５０のレジスタ値がデータ“１”に設定されると、割り込み出力制御回路２３はカウンタ２１のカウント値２６がある特定のカウント値ＩＮＴＶ（例えば、オーバーフロー値ＯＶＦＶの７５％）である時、それを検知し、内部割り込み信号２９を出力する。ＩＮＴＥＲＥＧ５０のレジスタ値がデータ“０”に設定されると、割り込み出力制御回路２３は内部割り込み信号２９を発生しない。
【００５５】
割り込みイネーブルレジスタ（ＩＮＴＥＲＥＧ）５０のレジスタ値がデータ“１”に設定されている場合のＣＰＵ２の動作の一例が以下に説明される。なお、以下に説明されるＣＰＵ２の動作の一例は、後述される図６の動作フローに対応するものであり、内部割り込み信号２９の発生の前にカウンタ値２６の第１リフレッシュ動作が行われるものである。一方、ＣＰＵ２の動作の他の一例は、後述される図７の動作フロー関するものである。図７の動作フローにおいては、内部割り込み信号２９、および割り込み信号６１の発生の後に、カウンタ値２６の第２リフレッシュ動作が行われるものである。
【００５６】
プログラムを実行する中央処理装置２は、内部割り込み信号２９の発生を規定する割り込みカウント値（ＩＮＴＶ）にカウント値２６が到達する前に、すなわち、カウント値２６の初期化（リフレッシュ）のため、トリガレジスタ２４に所定の第２値（例えば、所定の第２固定値）の書込みを行う。それにより、トリガレジスタ２４はトリガ信号３０をアサートする。
【００５７】
カウンタ制御回路２５は、トリガ信号３０がアサートされたことをトリガとして、カウンタ２１へ割り込み直前の値（ＢＩＮＴ）の書込みを指示する書き込み信号（第２書込み信号）５１をアサートし、カウンタ２１に、直接、割り込み直前の値（ＢＩＮＴ）の書込みを行うことで、カウント値２６を割り込み直前の値（ＢＩＮＴ）へ変更する。この時併せて、カウンタ制御回路２５は、割り込み直前の値の書き込みステータスを示す書き込みステータス信号（第２書込み状態信号）５２をアサートし、故障診断回路４４に通知する。
【００５８】
リフレッシュ期間（第１リフレッシュ動作）において、カウンタ２１は割り込み直前の値（ＢＩＮＴ）からカウントを継続し、カウント値２６が割り込みカウント値（ＩＮＴＶ）に到達すると、割り込み出力制御回路２３はそれを検知し、内部割込み信号２９をアサートする。
【００５９】
割り込み直前の値（ＢＩＮＴ）の書き込みステータス信号（第２書込み状態信号）５２がアサートされている場合、ＡＮＤ回路(第２ＡＮＤ回路)４５により内部割り込み信号２９が抑制（マスク）されるので、システム制御回路８への割り込み信号６１の発行が阻止される。その代わりに、割り込みフラグ回路４６は内部割り込み信号２９のアサートを検出し、それを割り込みフラグ信号４７として保持する。割り込みフラグ回路４６は割り込みフラグ信号４７をアサートし、故障診断回路４４に通知する。故障診断回路４４は、割り込みフラグ信号４７のアサートにより、内部割込み信号２９が正常に出力されたことを示す割り込み出力正常信号５４をアサートする。一方、割込みフラグ信号４７がアサートされない場合、故障診断回路４４は故障検知信号６２をアサートし、システム制御回路８に警告する。これにより、割り込み信号経路の回路の故障検出が行われる。
【００６０】
割り込み直前の値（ＢＩＮＴ）の書き込みステータス信号（第２書込み状態信号）５２がネゲートされている場合、内部割り込み信号２９はＡＮＤ回路４５にマスクされることなく、アサートされた割り込み信号６１として、システム制御回路８へ発行される。
【００６１】
カウント値２６が割り込みカウント値（ＩＮＴＶ）に到達した後、カウンタ２１のカウントアップ動作は継続されているが、割り込み出力正常信号５４のアサートにより、カウント値２６がオーバーフロー直前の値（ＢＯＶＦ）にされる。これに併せて、割り込み直前の値（ＢＩＮＴ）の書き込みステータス信号（第２書込み状態信号）５２がクリア（ネゲート）され、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がアサートされる。以降、図３およびその説明と同様なリフレッシュ動作（後述される図６および図７において、リフレッシュ動作２として示される）が行われる。これにより、リセット信号の発生経路の回路の故障検出が行われる。
【００６２】
なお、割り込みイネーブルレジスタ（ＩＮＴＥＲＥＧ）５０のレジスタ値がデータ“１”に設定されている場合、上記の様に、トリガレジスタ２４へ所定の第２値（例えば、所定の第２固定値）によって、カウント値２６を割り込み直前の値（ＢＩＮＴ）へ変更するようにしたが、これに限定されない。中央処理装置２によるトリガレジスタ２４への書込みは、所定の第１値（例えば、所定の第１固定値）とし、トリガ信号３０の発生時点において、カウンタ制御回路２５により、割り込みフラグ回路４６がアサートされた割り込みフラグ信号４７を保持しているか否かを判断することで、カウント値２６への書込み値を変更できる。例えば、割り込みフラグ回路４６がアサートされた割り込みフラグ信号４７を保持していない場合、カウンタ制御回路２５はカウント値２６を割り込み直前の値（ＢＩＮＴ）へ変更する（図６参照）。一方、割り込みフラグ回路４６がアサートされた割り込みフラグ信号４７を保持する場合、カウンタ制御回路２５はカウント値２６をオーバーフロー直前の値（ＢＯＶＦ）へ変更する（図７参照）。
【００６３】
［変形例１に係る動作フロー１］
図６は、変形例１に係るウォッチドッグタイマの通常動作時とリセット故障及び割り込み故障時における動作フローを説明するための図である。図６の動作フローの前提は、割り込みイネーブルレジスタ５０のレジスタ値がデータ“１”に設定されて、ウォッチドッグタイマ１０から割り込み信号６１およびリセット信号６０を発生させる動作とされ、かつ、内部割り込み信号２９の発生の前に、リフレッシュ動作１が行われる場合である。
【００６４】
図６において、各信号は図５の信号に対応している。図中、実線が通常動作時を示し、太い点線がリセット故障及び割り込み故障時を示す。ステータスＳＴはウォッチドッグタイマモジュール２０と故障診断モジュール４０の状態を示す。カウンタ値２６はカウンタ２１がカウントアップされている様子を模式的に表したものである。ＯＶＦＶはオーバーフローを規定するオーバーフローカウント値を示し、ＩＮＴＶは内部割り込み信号２９の発生を規定する割り込みカウント値を示す。
【００６５】
［通常動作時］
最初に、ステータスＳＴについて説明する。ステータスＳＴに示されるように、時刻ｔ０から時刻ｔ１の期間はウォッチドッグタイマモジュール２０のカウントアップ動作の期間であり、時刻ｔ１から時刻ｔ４の期間はウォッチドッグタイマモジュール２０の第１リフレッシュ動作（リフレッシュ動作１と示す）の期間および故障診断モジュール４０の割り込みに関する故障診断の動作の期間である。時刻ｔ４から時刻ｔ７は、期間はウォッチドッグタイマモジュール２０の第２リフレッシュ動作（リフレッシュ動作２と示す）の期間および故障診断モジュール４０のリセットに関する故障診断の動作の期間である。時刻ｔ７以降は、ウォッチドッグタイマモジュール２０のカウントアップ動作の期間である。ウォッチドッグタイマ１０の実動作中のカウントアップ動作の期間において、カウンタ２１はカウントアップ動作を行っているものとする。
【００６６】
時刻ｔ１において、ウォッチドッグタイマ１０の実動作中、割り込みが発行される前に、プログラムを実行するＣＰＵ２がトリガレジスタ２４へ所定の第２値（所定の第２固定値）の書き込みを行う。これがトリガとなり、トリガ信号３０がアサートされ、カウンタ制御回路２５へ入力される。カウンタ制御回路２５はトリガ信号３０のアサートにより、割り込みフラグ信号４７の値を参照する。この場合、割り込みフラグ信号４７の値は、“０”クリア状態であり、リフレッシュ動作１が開始される。
【００６７】
先ず、カウンタ制御回路２５より、割り込み直前の値の書き込み信号（第２書込み信号）５１がアサートされ、カウンタ２１に割り込み直前のカウント値（ＢＩＮＴ）が書きこまれる。併せて、割り込み直前の値の書き込みステータス信号（第２書込み状態信号）５２がアサートされる。これにより、割り込み出力正常信号５４がクリアされる。
【００６８】
時刻ｔ２において、カウントソースクロックＷＣＬＫの数クロック後、カウンタ値２６が割り込み発行の値（ＩＮＴＶ）に到達する。割り込み出力制御回路２３は、これを検知し、内部割り込み信号２９を発行する。一方、故障診断モジュール４０内のＡＮＤ回路４５によりマスクされるため、割り込み信号６１までは伝わらず、システム制御回路８への割り込み信号６１の発行が阻止される。代わりに、割り込みフラグ回路４６がセットされ、割り込みフラグ信号４７がアサートされる。
【００６９】
時刻ｔ３において、故障診断回路４４は割り込み直前の値の書き込みステータス信号（第２書込み状態信号）５２がアサートされてからある期間内に割り込みフラグ回路４６がセットされているかどうかを、割り込みフラグ信号４７を通して確認する。割り込みフラグ回路４６がセットされていた場合（実線）、正常動作と診断し、割り込み出力正常信号５４をアサートする。その後、割り込み直前値書き込みステータス信号（第２書込み状態信号）５２をネゲートする。一方、割り込みフラグ回路４６がクリアされたままでセットされていない場合（太い点線）、割り込み故障と診断し、故障検知信号６２をアサートし、システム制御回路８へ警告する。
【００７０】
時刻ｔ４以降は、図３の動作フローにおける、時刻ｔ１−ｔ３のリフレッシュ動作（故障診断）と同様な動作を実施する。
【００７１】
ただし、図３の動作フローにおいて、時刻ｔ１のカウンタ２１へのオーバーフロー直前の値（ＢＩＮＶ）の書き込みは、ユーザプログラムをトリガとしたものではなく、図６の時刻ｔ４の様に、故障診断回路４４から出力される割り込み出力正常信号５４のアサートをトリガとしたものへ変更される。また、図３の動作フローにおいて、時刻ｔ３のリセット出力正常信号３４のセットは、図６の時刻ｔ６のように、リセットフラグ信号４３だけでなく、割り込みフラグ信号４７も確認し、正常動作かを故障診断回路４４により診断する。正常動作の場合、故障診断回路４４は、リセット出力正常信号３４をアサートし、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２をネゲートするとともに、１パルスのフラグ初期化信号５７を出力してリセットフラグ回路４２及び割り込みフラグ回路４６をクリアする。
【００７２】
［リセット故障及び割り込み故障時］
割り込み故障時、時刻ｔ１で、カウンタ２１に割り込み直前の値（ＢＩＮＴ）が書きこまれる。併せて、割り込み直前の値の書き込みステータス信号（第２書込み状態信号）５２がハイレベルとしてアサートされる。これにより、割り込み出力正常信号５４が故障診断回路４４によりロウレベルへクリアされる。
【００７３】
この後、例えば、カウンタ２１が故障し、カウント値２６が割り込みカウント値（ＩＮＴＶ）に到達しないものとする（太い点線）。この場合、割り込みフラグ信号４７はロウレベルでクリアされたまま（太い点線）であるので、割り込みフラグ信号４７が発生しない故障と見做される。
そのため、故障診断回路４４は割り込み信号発生経路の回路の故障と診断し、割り込み出力正常信号５４をロウレベルのままとし、故障検知信号６２をハイレベルとしてアサートし、システム制御回路８に警告する。なお、上記ではカウンタ２１の故障の例を説明したが、割り込み信号が発生しない故障としては、割り込み出力制御回路２３や割り込みフラグ回路４６の故障も考えられる。
【００７４】
リセット故障時、時刻ｔ４で、カウンタ２１にオーバーフロー直前の値（ＢＯＶＦ）が書きこまれる。併せて、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がハイレベルとしてアサートされる。これにより、リセット出力正常信号３４が故障診断回路４４によりロウレベルへクリアされる。
【００７５】
この後、例えば、カウンタ２１が故障し、カウント値がオーバーフローに到達しないものとする（太い点線）。この場合、リセットフラグ信号４３はロウレベルでクリアされたままであるので、リセット信号が発生しない故障と見做される。そのため、故障診断回路４４はリセット信号発生経路の回路の故障と診断し、リセット出力正常信号３４をロウレベルのままとし、故障検知信号６２をハイレベルとしてアサートし、システム制御回路８に警告する。なお、上記ではカウンタ２１の故障の例を説明したが、リセット信号が発生しない故障としては、リセット出力制御回路２２やリセットフラグ回路４２の故障も考えられる。
【００７６】
［暴走時］
ＣＰＵ２はプログラムの暴走などによりトリガレジスタ２４へ所定の第２固定値の書込みを行うことが出来ず、リフレッシュ動作１に入る前に、カウンタ２１のカウント値がオーバーフローした場合、割り込み直前の値の書き込みステータス信号（第２書込み状態信号）５２およびオーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２はネゲートされたままである。そのため、ＡＮＤ回路４５およびＡＮＤ回路４１は、割り込み出力制御回路２３から発生される内部割り込み信号２９およびリセット出力制御回路２２から発生される内部リセット信号２７のそれぞれをマスクしないので、割り込み信号６１およびリセット信号６０がシステム制御回路８へ通知される。システム制御回路８は、例えば、割り込み信号６１を受けて、所定の準備処理(退避処理等)を実施し、リセット信号６０を受けて、システムリセット信号を発生する。
【００７７】
［変形例１に係る動作フロー２］
図７は、変形例１に係るウォッチドッグタイマの通常動作時とリセット故障及び割り込み故障時における他の動作フローを説明するための図である。図７の動作フローの前提は、割り込みイネーブルレジスタ５０のレジスタ値がデータ“１”に設定されて、ウォッチドッグタイマ１０から割り込み信号６１およびリセット信号６０を発生させる動作とされ、かつ、内部割り込み信号２９の発生の後に、リフレッシュ動作２が行われる場合である。すなわち、図６のリフレッシュ動作１が行われない場合の動作フローである。
【００７８】
［通常動作時］
時刻ｔ１において、カウンタ２１のカウント値２６が割り込み発行の値（ＩＮＴＶ）に到達する。割り込み出力制御回路２３は、これを検知し、内部割り込み信号２９を発行する。これにより、割り込みフラグ回路４６がセットされ、割り込みフラグ信号４７が発生される。割り込み直前の値の書き込みステータス信号（第２書込み状態信号）５２はネゲートされているため、ＡＮＤ回路(第２ＡＮＤ回路)４５は、割り込み出力制御回路２３から発生される内部割り込み信号２９をマスクしないので、割り込み信号６１がシステム制御回路８へ通知される。システム制御回路８は、割り込み信号６１の受信により、ＣＰＵ２に割り込み信号６１に従う割り込み処理を指示する。この割り込み処理は、例えば、トリガレジスタ２４への所定の第１値（所定の第１固定値）の書き込みの処理である。
【００７９】
時刻ｔ２において、ＣＰＵ２はトリガレジスタ２４への所定の第１値（所定の第１固定値）の書き込みを行う。これがトリガとなり、トリガ信号３０がアサートされ、カウンタ制御回路２５へ入力される。
【００８０】
カウンタ制御回路２５はトリガ信号３０のアサートにより、割り込みフラグ信号４７の値を参照する。この場合、割り込みフラグ信号４７の値は、“１”セット状態であり、リフレッシュ動作１がスキップされ、リフレッシュ動作２が開始される。カウンタ制御回路２５は、前記同様に、カウンタ２１のカウント値２６をオーバーフロー直前の値（ＢＯＶＦ）に書き換える。これに併せて、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がアサートされ、リセット出力正常信号３４がクリアされる。
【００８１】
時刻ｔ３において、カウントソースクロックＷＣＬＫの数カウント後、カウンタ２１のカウント値がオーバーフロー値（ＯＶＦＶ）に到達し、オーバーフローとなる。オーバーフローとなるため、内部リセット信号２７がリセット出力制御回路２２により発行されるが、ＡＮＤ回路(第１ＡＮＤ回路)４１によりマスクされているため、リセット信号６０はロウレベルを維持する。そのため、システム制御回路８にはリセット信号６０は発行されない。代わりに、リセットフラグ回路４２がセットされ、リセットフラグ信号４３がハイレベルとしてアサートされる。
【００８２】
時刻ｔ４では、故障診断回路４４は、オーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２がアサートされてからある所定の期間内にリセットフラグ回路４２および割り込みフラグ回路４６がハイレベルとしてアサートされたか否かを、リセットフラグ信号４３および割り込みフラグ信号４７を通して確認する。リセットフラグ信号４３および割り込みフラグ信号４７がハイレベルにセットされていた場合（実線）、故障診断回路４４は正常動作と診断し、リセット出力正常信号３４をアサートし、１パルスのリセット初期化信号５７を出力してリセットフラグ回路４２及び割り込みフラグ回路４６をクリアする。
【００８３】
時刻ｔ５において、故障診断回路４４はオーバーフロー直前の値の書き込みステータス信号（第１書込み状態信号）３２をネゲートする。リセット出力正常信号３４のアサートを受け、カウンタ制御回路２５はリフレッシュ信号３３をアサートし、カウンタ２１のカウント値２６の初期化(リフレッシュ)を行い、次のカウントアップ動作を開始させる。
【００８４】
［リセット故障時または割り込み故障時］
時刻ｔ２−時刻ｔ５の期間、すなわち、リフレッシュ動作２の期間は、故障診断モジュール４０の故障診断の動作の期間である。この期間において、リセットフラグ回路４２及び／または割り込みフラグ回路４６がハイレベルにセットされていない場合(太い点線)、障診断回路４４はリセット故障および／または割り込み故障と診断し、故障検知信号６２をアサートし、システム制御回路８へ警告する。これにより、リセット信号の発生経路の回路の故障検出や割り込み信号経路の回路の故障検出が行われる。
【００８５】
変形例１によれば、カウンタ２１に割り込み直前の値（ＢＩＮＴ）およびオーバーフロー直前の値（ＢＯＶＦ）を書き込み可能なカウンタ制御回路２５がウォッチドッグタイマ（ＷＤＴ）１０に設けられる。カウンタ制御回路２５は、ウォッチドッグタイマ（ＷＤＴ）１０実動作中のリフレッシュ動作時（リフレッシュ動作１、リフレッシュ動作２）に、カウンタ２１に割り込み直前の値（ＢＩＮＴ）およびオーバーフロー直前の値（ＢＯＶＦ）を書き込み可能である。そのため、リフレッシュ動作の期間において、意図的に、カウンタ２１のカウント値をオーバーフロー（ＯＶＦＶ）や割り込みが発生するカウント値（ＩＮＴＶ）に到達させて、内部割り込み信号２９および内部リセット信号２７を発生させることが出来る。そのため、割り込み信号を発生させる回路の故障およびリセット信号を発生させる回路の故障を診断できる。
【００８６】
リフレッシュ動作の期間に発生される内部割り込み信号２９および内部リセット信号２７はＡＮＤ回路(第２ＡＮＤ回路)４５、ＡＮＤ回路（第１ＡＮＤ回路）４１でマスクされるので、割り込み信号６１、リセット信号６０としてシステム制御回路８へは発生されない。また、内部割り込み信号２９および内部リセット信号２７は割り込みフラグ回路４６およびリセットフラグ回路４２により検知および保持しできる様にした。
【００８７】
上記により、ＣＰＵ２のプログラム実行中において、ウォッチドッグタイマ（ＷＤＴ）１０の実動作中におけるリフレッシュ動作の期間に、ウォッチドッグタイマ（ＷＤＴ）１０の自己診断（リセット出力の故障検出、割り込み出力の故障検出）が可能となる。また、ウォッチドッグタイマ（ＷＤＴ）１０の自己診断は、プログラムの暴走の検知を妨げることなく、ウォッチドッグタイマ（ＷＤＴ）１０の実動作中に行うことができる。
【００８８】
図５に示されるように、簡易な回路構成により、ウォッチドッグタイマ（ＷＤＴ）１０の自己診断を実現できるため、冗長構成（ウォッチドッグタイマを複数設け、それらの動作を比較する等）の様に回路規模を大きくすることなく、ウォッチドッグタイマ（ＷＤＴ）１０のリセット信号を発生させる回路部分の故障診断が可能である。
【００８９】
［変形例２］
図８は、変形例２に係るカウンタ制御回路を説明するための図である。図８に記載のカウンタ制御回路２５は、図２の実施例および図５の変形例１に記載のカウンタ制御回路２５の変形例であり、実施例および変形例１の構成も併せて記載される。
【００９０】
カウンタ制御回路２５は、制御回路２５０、割り込みイネーブルレジスタ（ＩＮＴＥＲＥＧ）５０を有する。制御回路２５０はトリガレジスタ２４からのトリガ信号３０、および、制御信号（３４，５４，４７）を入力され、制御信号（第１書込み状態信号３２，第２書込み状態信号５２）を出力し、カウンタ制御回路２５の全体の動作の制御を司る。制御信号（３４，５４，４７、３２，５２）は、図２の実施例および図５変形例１の信号の番号と同じである。
【００９１】
カウンタ制御回路２５は、さらに、初期化回路２５１、ＢＯＶＦ値書込み回路２５２、ＢＩＮＴ値書込み回路２５３、ビット制御回路２５４を含む。初期化回路２５１は、カウンタ２１内のカウンタ回路２１１のカウント値２６を格納および出力する出力回路（ＦＦ１−ＦＦ８）の値を初期化するための回路である。ＢＯＶＦ値書込み回路２５２は、出力回路（ＦＦ１−ＦＦ８）の値を、オーバーフロー直前の値（ＢＯＶＦ）へ書き換えるための回路である。ＢＩＮＴ値書込み回路２５３は、出力回路（ＦＦ１−ＦＦ８）の値を、割り込み直前の値（ＢＩＮＴ）へ書き換えるための回路である。初期化回路２５１、ＢＯＶＦ値書込み回路２５２、ＢＩＮＴ値書込み回路２５３の出力のそれぞれは、信号３３，３１，５１として、出力回路（ＦＦ１−ＦＦ８）へ供給される。信号３３，３１，５１は、図２の実施例および図５変形例の信号の番号と同じである。
【００９２】
ビット制御回路２５４は、出力回路（ＦＦ１−ＦＦ８）の個々のフリップフロップＦＦの値を、自由に、“１”および“０”に書き込めるように構成され、出力回路（ＦＦ１−ＦＦ８）の全ビット分の故障検出を可能にする。この場合、ビット制御回路２５４は、出力回路（ＦＦ１−ＦＦ８）に対して、制御信号７０を発生し、個々のフリップフロップＦＦの値を所望に変更する。
【００９３】
制御回路２５０は、初期化回路２５１、ＢＯＶＦ値書込み回路２５２、ＢＩＮＴ値書込み回路２５３、およびビット制御回路２５４の内、どれを動作させるかを選択する機能を有する。
【００９４】
図９は、ビット制御回路の動作フローを説明するための図である。
【００９５】
ステップＳ１で、プログラムを実行するＣＰＵ２により、トリガレジスタ２４に所定の固定値が書き込まれる。これがトリガなり、リフレッシュ動作が開始される。
【００９６】
ステップＳ２では、ビット制御回路２５４により、カウンタ２１の出力回路（ＦＦ１−ＦＦ８）に、１１１１０１１１の様なカウント値、すなわち、全ビットの中で１ビットだけに“０”を、それ以外のビットに“１”を書き込む。
【００９７】
ステップＳ３では、ビット制御回路２５４により、１１１１０１１１の様なカウント値のうち、“０”のビットを“１”へ書き換える。
【００９８】
ステップＳ４では、オーバーフローを発生させて、リセットフラグ回路４２をセットする。
【００９９】
ステップＳ５では、リセットフラグ回路４２が“１“にセットされたか否かをリセットフラグ信号４３で確認することで、故障診断回路４４により故障診断が行われる。リセットフラグ回路４２が“１“にセットされていれば、ステップＳ６へ遷移し、リフレッシュが完了する。リセットフラグ回路４２が“１“にセットされておらずクリアされたままであれば、ステップＳ７へ遷移し、故障診断回路４４は、故障と判断し、故障検知信号６２をアサートし、システム制御回路８に警告する。
【０１００】
上記ステップＳ２−ステップＳ５を、リフレッシュ動作が開始毎に、カウンタ２１の出力回路のＦＦ１−ＦＦ８の異なるＦＦに対して繰り返し実行することで、ＦＦ１−ＦＦ８全回路の故障検出が可能である。
【０１０１】
変形例２によれば、実施例および変形例1では、カウンタ２１の異常のうちオーバーフロー直前〜オーバーフローの間のカウンタ２１の異常のみしか検出できない。即ち、カウンタ２１の異常のうち、下位数ビットのみの異常しか検出できないことになる。それに対し、変形例２では、実施例や変形例１のリフレッシュ動作を上記の様に変更することにより、カウンタ２１の全ビット分の故障検出が可能となる。
【０１０２】
以上、本発明者によってなされた発明を実施形態および実施例に基づき具体的に説明したが、本発明は、上記実施形態および実施例に限定されるものではなく、種々変更可能であることはいうまでもない。
【０１０３】
例えば、カウンタ２１をリセット用カウンタと割り込み用カウンタとに分割する。そして、リセット用カウンタにはリセット用カウントソースクロックを供給し、割り込み用カウンタには割り込み用カウントソースクロックを供給する。ここで、リセット用カウントソースクロックの周波数と、割り込み用カウントソースクロックの周波数とを異なるものにする。この様に構成することで、割り込みの発生時間と、リセットの発生時間を細かく調整することが出来る。
【符号の説明】
【０１０４】
１：半導体装置、２：中央処理装置（ＣＰＵ）、３：ＲＯＭ、４：ＲＡＭ、５：ＬＩＮモジュール（ＬＩＮＭ）、６：ＣＡＮモジュール（ＣＡＮＭ）、７：ポート、８：システム制御回路（ＳＣＮＴ）、９：クロック生成回路（ＯＣＯ）、１０：ウォッチドッグタイマ（ＷＤＴ）、１１：内部バス、ＬＩＮＢＵＳ：ＬＩＮ（Local Interconnect Network）バス、ＣＡＮＢＵＳ：ＣＡＮ（コントローラエリアネットワーク）バス、ＥＣＵ１，ＥＣＵ２：電子制御ユニット、２０：ウォッチドッグタイマ回路部（ウォッチドッグタイマモジュール）、２１：カウンタ、２２：リセット出力制御回路、２３：割り込み出力制御回路、２４：トリガレジスタ、２５：カウンタ制御回路、３１：オーバーフロー直前のカウント値（ＢＯＶＦ）の書き込みを指示する書き込み信号（第１書込み信号）、３２：オーバーフロー直前のカウント値の書き込み状態を示す書き込みステータス信号（第１書込み状態信号）、４０：故障診断回路部（故障診断モジュール）、４１：ＡＮＤ回路（第１ＡＮＤ回路）、４２：リセットフラグ回路、４４障診断回路、４５：ＡＮＤ回路（第２ＡＮＤ回路）、４６：割り込みフラグ回路、５０：割り込みイネーブルレジスタ（ＩＮＴＥＲＥＧ）、５１：割り込み直前の値（ＢＩＮＴ）の書き込み信号（第２書込み信号）、５２：割り込み直前の値（ＢＩＮＴ）の書き込みステータス信号（第２書込み状態信号）
【図１】
2018107679.tif 000003
【図２】
2018107679.tif 000004
【図３】
2018107679.tif 000005
【図４】
2018107679.tif 000006
【図５】
2018107679.tif 000007
【図６】
2018107679.tif 000008
【図７】
2018107679.tif 000009
【図８】
2018107679.tif 000010
【図９】
2018107679.tif 000011