(57)【要約】【課題】  エラーが検出した際の誤動作による影響が最小限となるようにエラー回復処理を行う。【解決手段】  通常のプログラム実行状態から、エラーが発生すると、例外処理ベクタなどで示される所定のエラー処理ルーチンへ分岐する。ＣＰＵ２のエラー処理ルーチンには、オーバフロー周期を超えない間隔で、監視用タイマ８のタイマカウンタに０をライトする命令を実行しながら、制御対象システムに即して、致命的な動作の抑止を行う処理を行う。致命的な動作の抑止とは、たとえば、マイクロコンピュータ１の出力信号を非活性状態にする。エラー処理が完了した時点で監視用タイマ８を停止する処理を行い、通常のリセット処理ルーチンに遷移する。【選択図】  図１
2006171952.tif 000002
【特許請求の範囲】
【請求項１】
エラーを検出し、所定の処理ルーチンに分岐する中央処理装置と、
前記中央処理装置がエラーを検出した際に、エラー検出信号に基づいてカウントを開始する監視用タイマとを備え、
前記監視用タイマは、
前記中央処理装置が、検出したエラーに対応する処理を実行しないと判断した際にリセットを要求することを特徴とする半導体集積回路装置。
【請求項２】
請求項１記載の半導体集積回路装置において、
前記中央処理装置が検出するエラーは、不当命令、またはアドレスエラーの少なくとも１つであり、
前記監視用タイマに入力されるエラー検出信号は、前記中央処理装置、バスコントローラ、または割り込みコントローラのいずれかが出力することを特徴とする半導体集積回路装置。
【請求項３】
請求項１または２記載の半導体集積回路装置において、
前記監視用タイマは、前記中央処理装置が命令終了時に出力する命令実行終了信号を受けてカウントをリセットすることを特徴とする半導体集積回路装置。
【請求項４】
請求項１〜３のいずれか１項に記載の半導体集積回路装置において、
前記中央処理装置は、バスアクセスによって前記監視用タイマのカウントを制御することを特徴とする半導体集積回路装置。
【請求項５】
請求項１〜４のいずれか１項に記載の半導体集積回路装置において、
前記監視用タイマは、
前記中央処理装置がエラーを検出した際に、エラーステータス信号を前記バスコントローラに出力し、
前記バスコントローラは、
前記監視用タイマのエラーステータス信号を受けて、前記中央処理装置以外のバス権要求を受付けないことを特徴とする半導体集積回路装置。
【請求項６】
請求項１〜５のいずれか１項に記載の半導体集積回路装置において、
前記割り込みコントローラは、
前記中央処理装置がエラーを検出した際に、前記中央処理装置に対して割り込み要求信号を出力しないことを特徴とする半導体集積回路装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、半導体集積回路装置のエラー処理技術に関し、特に、不所望のエラーによる誤動作の影響を最小限にする回復処理に有効な技術に関する。
【背景技術】
【０００２】
半導体集積回路装置の１つであるシングルチップマイクロコンピュータは、中央処理装置（ＣＰＵ）を中心にしてプログラム保持用のＲＯＭ（Ｒｅａｄ  Ｏｎｌｙ  Ｍｅｍｏｒｙ）、データ保持用のＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）、およびデータの入出力を行うための入出力回路などの機能ブロックが１つの半導体基板上に形成されているものが知られている（非特許文献１参照）。
【０００３】
かかるシングルチップマイクロコンピュータには、ＣＰＵが、定義されていない命令コードを、命令として実行しようとしたときに、不当命令例外処理を実行するものがある。ＣＰＵは、不当命令例外処理ルーチンで、所要の制御を行う。
【０００４】
所要の制御とは、マイクロコンピュータが制御している機器の致命的な動作を抑止したりすることである。たとえば、モータを制御している場合は、モータを停止し、機器が回復不可能な状態になることを回避する。その後、リセットから動作を再開することになる。
【０００５】
一方、暴走監視用タイマ（ＷＤＴ：Ｗａｔｃｈ  Ｄｏｇ  Ｔｉｍｅｒ）を内蔵し、ＣＰＵによる暴走監視用タイマへのアクセスが所定の期間内に行われないと、ＣＰＵが暴走したものと判断し、マスク不可能な割り込み（ＮＭＩ：ノンマスカブル割り込み要求信号）をＣＰＵに要求したり、リセットを発生したりするマイクロコンピュータも存在する。
【０００６】
このマスク不可能な割り込みの場合は、上記不当命令と同様の制御を行う。リセットの場合は、マイクロコンピュータ自体が初期化され、その後、リセットから動作を再開することになる。
【０００７】
また、この種のマイクロコンピュータにおいては、命令デコード結果を判断して、解読異常検出を行い、解読異常を検出した場合、この状態を保持して解読異常の解消を待つとともに、この状態をカウントし、所定の基準値に達したときにリセットを発生させるものがある（特許文献１参照）。つまり、エラーが所定の時間内に解消しない場合に、リセットを発生するものである。
【０００８】
解読異常というエラーが検出した場合、それ以前に未検出のエラーが生じた可能性もあるので、検出したエラーが解消ないし回復するのを待つよりも、エラーに対処する処理を実行することが望ましい。
【０００９】
また、一時的にエラーがあっても、直ちに、ＣＰＵのエラー処理が不可能になる訳ではないし、エラーはＣＰＵのみに発生するとは限らないし、１回のみしか発生しないとは限らないし、常に検出可能とも限らない。
【００１０】
上記例では、一時的なエラー（基準の時間に達しないエラー、解消してしまうエラー）が繰返し発生しても、リセットは要求されずに、処理を継続してしまう。
【００１１】
半導体プロセスの微細化に従い、エラーの発生するポテンシャルは増加する。エラーの原因は、電磁波やノイズなどが考えられる。
【非特許文献１】社団法人  電子通信学会（編）「ＬＳＩハンドブック」、（株）オーム社発行、昭和５９年１１月３０日、Ｐ５４０，Ｐ５４１
【特許文献１】特開２００１−２７３１３６号広報
【発明の開示】
【発明が解決しようとする課題】
【００１２】
ところが、上記のような半導体集積回路装置におけるエラー検出時の回復処理技術では、次のような問題点があることが本発明者により見い出された。
【００１３】
マイクロコンピュータの動作時は、デバッグの完了したプログラムを実行するから、本来、不当な命令コードを実行することはありえない。すなわち、不当な命令コードの実行は、ノイズなどによる不所望のエラーにより、正規の命令コード（例えば、Ｈ’００００）が異なる命令コード（例えば、Ｈ’１０００）に変化するような場合に生じうる。
【００１４】
さらに、異なる命令コードに変化した結果が、当該ＣＰＵにとって、定義されていない命令である場合に、不当命令例外処理が実行される。換言すれば、命令コードが変化した場合も、変化した後の命令コードが、当該ＣＰＵの正しい命令コードに相当すれば、不当命令例外処理は実行されない。変化した後の命令コードが、そのまま実行されてしまう。
【００１５】
従って、不当命令例外処理を実行した場合には、それ以前に、命令コードが変化し、不当命令として検出されないまま実行されてしまい、既に、マイクロコンピュータの正しい状態ではなくなっていることが考えられる。同様に、ノイズなどによるエラーはＣＰＵのみに発生するとは限らない。
【００１６】
これらによって、ＣＰＵの例外処理の実行が阻害されることも考えられる。阻害とは、たとえば、割り込みが繰返し要求されたり、バスアクセスにウェイトが要求され続けたり、ほかのバスマスタが動作し続けたりすることである。
【００１７】
これらは、通常、直ちに誤動作とは判断できないが、ＣＰＵのエラー処理に優先するとは言えない。このような場合には、リセットを発生すれば、マイクロコンピュータ内部が初期化される。
【００１８】
しかしながら、リセットでは、マイクロコンピュータが制御している機器に即した処理が行われない場合も考えられる。たとえば、モータを制御している場合に、正しい手順で停止できないことも考えられる。
【００１９】
本発明の目的は、エラーを検出した際に、中央処理装置による例外処理ルーチン（半導体集積回路装置が制御している機器の致命的な動作を抑止する処理）の実行を待ち、該中央処理装置による例外処理ルーチンの実行が行われないと判断したときに、リセットを発生することにより、エラー発生による誤動作の影響を大幅に低減することのできる技術を提供することにある。
【００２０】
本発明の前記ならびにそのほかの目的と新規な特徴については、本明細書の記述および添付図面から明らかになるであろう。
【課題を解決するための手段】
【００２１】
本願において開示される発明のうち、代表的なものの概要を簡単に説明すれば、次のとおりである。
【００２２】
本発明による半導体集積回路装置は、エラーを検出し、所定の処理ルーチンに分岐する中央処理装置と、該中央処理装置がエラーを検出した際に、エラー検出信号に基づいてカウントを開始する監視用タイマとを備え、該監視用タイマは、中央処理装置が、検出したエラーに対応する処理を実行しないと判断した際にリセットを要求するものである。
【００２３】
また、本願の発明の内容をより具体的に説明すれば以下の通りである。
【００２４】
すなわち、本発明による半導体集積回路装置は、エラーを検出したときに例外処理（不当命令例外処理、アドレスエラー、ノンマスカブル割り込み要求信号）を受付け、例外処理ルーチンを実行可能な中央処理装置と、該例外処理の検出を検知し、その後、所定の状態に遷移して、中央処理装置の処理状態を監視し、該中央処理装置による例外処理ルーチンの実行が行われないことを判断し、その場合に、リセットを要求する監視用タイマと、該監視用タイマのリセット要求に従って、中央処理装置、およびそのほかの半導体集積回路装置の一部または全部の機能をリセットするリセット制御ブロックとを備えたものである。
【００２５】
また、前記監視用タイマが、エラーを検出して、所定の状態に遷移した場合には、中央処理装置のエラー処理を阻害する要因を抑止する。具体的には、そのほかのバスマスタのバス権要求を抑止したり、あるいは、そのほかのバスマスタをリセットしたり、割り込み要求を抑止したりする。
【００２６】
さらに、エラーを検出する論理ブロックを有する。これは、バスコントローラによる、アクセスアドレスの検出や、中央処理装置の未定義の命令の実行の検出である。
【００２７】
監視用タイマは、所定時間内に、中央処理装置からのアクセスがないことを検出して、上記判断を行う。これを、エラーの検出がない場合の（ユーザ資源）、暴走監視タイマと兼用する。または、監視用タイマは、中央処理装置による命令実行状態を監視して、上記判断を行う。中央処理装置の命令実行状態は命令実行終了信号などで判断できる。
【発明の効果】
【００２８】
本願において開示される発明のうち、代表的なものによって得られる効果を簡単に説明すれば以下のとおりである。
【００２９】
（１）エラーを検出した際に、直ちにリセットを発生することなく、半導体集積回路装置が制御する機器に即した、停止などの処理を実行することができるので、該半導体集積回路装置の信頼性を大幅に向上させることができる。
【００３０】
（２）また、中央処理装置の動作を阻害する要因が存在したりして、該中央処理装置による例外処理の実行が行われない場合にリセットを発生するので、半導体集積回路装置を確実に回復させることができる。
【００３１】
（３）上記（１）、（２）により、半導体集積回路装置を用いて電子システムを構成することにより、該電子システムの信頼性を高めることができる。
【発明を実施するための最良の形態】
【００３２】
以下、本発明の実施の形態を図面に基づいて詳細に説明する。なお、実施の形態を説明するための全図において、同一の部材には原則として同一の符号を付し、その繰り返しの説明は省略する。
【００３３】
図１は、本発明の一実施の形態によるマイクロコンピュータのブロック図、図２は、図１のマイクロコンピュータに設けられたＣＰＵのブロック図、図３は、図２に示したＣＰＵ２におけるアドレス空間を示した説明図、図４は、図１のマイクロコンピュータに設けられた監視用タイマの構成を示すブロック図、図５は、図４の監視用タイマにおけるタイマコントロールレジスタ、およびタイマカウンタのレジスタ構成の一例を示す説明図、図６は、図４の監視用タイマにおける状態遷移図、図７は、図４の監視用タイマにおけるタイミングチャート、図８は、図１のマイクロコンピュータにおけるエラー処理例を示す説明図である。
【００３４】
本実施の形態１において、マイクロコンピュータ（半導体集積回路装置）１は、図１に示すように、ＣＰＵ（中央処理装置）２、ＤＭＡ（Ｄｉｒｅｃｔ  Ｍｅｍｏｒｙ  Ａｃｃｅｓｓ）コントローラ３、ＲＯＭ４、ＲＡＭ５、バスコントローラ６、割り込みコントローラ７、監視用タイマ８、リセット制御部９、およびＩ／Ｏ（Ｉｎｐｕｔ／Ｏｕｔｐｕｔ）１０などから構成されており、これらが１つの半導体基板上に形成されたシングルチップマイクロコンピュータからなる。
【００３５】
Ｉ／Ｏ１０は、たとえば、タイマ、パルス出力回路、シリアルコミュニケーションインタフェース、Ａ／Ｄ変換器、入出力ポート、クロック発振器（ＣＰＧ）などの機能ブロック、またはモジュールから構成され、リセット入力端子、割り込み入力端子などを有する。
【００３６】
動作の主体となるのはＣＰＵ２であり、主にＲＯＭ４から命令を読込んで動作し、作業用のデータ領域としてＲＡＭ５をリード／ライトする。ＣＰＵ２のプログラム用メモリとしては、ＲＯＭ４のほかキャッシュメモリであってもよい。同様に、ＣＰＵ２のデータ用メモリとしても、キャッシュメモリを使用することもできる。
【００３７】
ＣＰＵ２は、実行すべき命令を検出して、当該命令が定義されていない場合、不当命令として検出し、ＯＰＥＲＲ信号を活性化するとともに、所定の例外処理を発生する。
【００３８】
また、バスコントローラ６は、ＣＰＵ２のアクセス内容を検出し、不当なアクセスの場合、アドレスエラー検出を行い、ＡＤＥＲＲ信号を活性化し、これを割り込みコントローラ７に伝達する。不当なアクセスとは、たとえば、メモリが接続されていない領域に対するリード／ライトなどである。
【００３９】
割り込みコントローラ７は、上記アドレスエラーＡＤＥＲＲ、および、外部から入力されるマスク不可能な割り込みであるノンマスカブル割り込み要求信号ＮＭＩ、そのほかを入力し、ＣＰＵ２に割り込み要求信号ＩＮＴＦを与える。上記アドレスエラーもマスク不可能な割り込みとして扱われる。割り込み要求が与えられると、ＣＰＵ２は、命令の切れ目で割り込み例外処理を行う。
【００４０】
ＣＰＵ２は、上記の不当命令例外処理、割り込み例外処理を行うことによって、実行中の処理を中断し、所定ベクタで示されるアドレスから、例外処理ルーチンの実行を開始する。監視用タイマ８からのエラーステータス信号ＥＲＲＳＴによって、割り込み受付けは抑止する。多重に例外処理を繰返し、エラー処理の実行が妨げられることを抑止する。
【００４１】
監視用タイマ８は、リセット要求信号ＲＳＴＲＱを活性化し、リセットを要求することができる。このリセットによって、マイクロコンピュータ１内部のリセットを行う。また、マイクロコンピュータ１外部にリセット信号を出力することができる。
【００４２】
ＤＭＡコントローラ３は、ＣＰＵ２とバスＢとを共有し、ＣＰＵ２に代ってデータ転送を行う。Ｉ／Ｏ１０、および入出力インタフェースは、ＤＭＡコントローラ３に起動要求を要求する。
【００４３】
ＤＭＡコントローラ３が起動要求を受付けて、データ転送を行うと、転送アクノレッジ信号などによって、起動要因をクリアする。起動要因の判定やクリアは割り込みコントローラ７が行ってもよい。
【００４４】
バスＢについては以下の通りである。
【００４５】
マイクロコンピュータ１は、Ｉバス、Ｐバス、外部バスをそれぞれ有し、これらのバスによって、前記機能ブロックは相互に接続される。これらＩバス、Ｐバス、および外部バスは、アドレスバス・データバスの他、バス権要求信号、バスアクノレッジ信号、バスコマンド（またはリード信号、ライト信号、バスサイズ信号）、レディ信号（またはウェイト信号）を含む。
【００４６】
Ｉバスは、ＣＰＵ２とＤＭＡコントローラ３、あるいはそのほかの内部バスマスタに直接接続されるバスである。メモリの高速アクセスのため、メモリもＩバスに接続される。メモリのアクセスは１ステートで行われる。
【００４７】
Ｐバスには、Ｉ／Ｏ１０に含まれる内部Ｉ／Ｏレジスタが接続される。ＩバスとＰバスを分離することによって、ＣＰＵ２のプログラムリードなどで、主として使用するＩバスの負荷を軽減し、高速化を図るとともに、未使用時のＰバスの状態を保持するなどして、低消費電力化が図れる。
【００４８】
ＣＰＵ２が、Ｐバスに接続される内部Ｉ／Ｏレジスタをアクセスする場合は、Ｉバス、ならびにバスコントローラ６を経由して行う。内部Ｉ／Ｏレジスタのアクセスは２ステートで行われる。これらのバスは、バスコントローラ６によってそれぞれ制御される。
【００４９】
内部バスと外部バスとは、Ｉ／Ｏ１０に設けられている外部バスバッファ回路（ＢＵＦ）１０ａによってインタフェースされる。外部バスバッファ回路１０ａは、入出力ポートに含まれる。
【００５０】
内部バスと周辺バスとは、バスコントローラ６によってインタフェースされる。内部バス（Ｉバス）はＣＰＵ２、ＤＭＡコントローラ３、ＲＯＭ４、ＲＡＭ５、外部バスバッファ回路１０ａ、およびバスコントローラ６にそれぞれ接続されている。
【００５１】
ＣＰＵ２とＤＭＡコントローラ３が、内部バスマスタとして、内部バス（Ｉバス）を使用することができ、それぞれのバス権要求信号に従って、バスアービタ６ａが調停する。このためには、ＣＰＵ２、およびそのほかのバスマスタがバス権要求信号を出力し、これをバスコントローラ６の調停回路が判定して、適宜１つの内部バスマスタにバス権を与える。すなわち、ＣＰＵ２、およびＤＭＡコントローラ３は、排他的にＩバスを使用する。
【００５２】
内部バスマスタは、バス権を与えられたことを確認して、ＩＡＢ（アドレス）やバスコマンドを出力して、バスアクセスを行う。バスアービタ６ａは、前記監視用タイマ８のエラーステータス信号ＥＲＲＳＴによって、ＣＰＵ２以外のバス権要求を受付けないようにする。
【００５３】
バスコントローラ６は、ＩＡＢの内容を確認して、メモリへのアクセスであれば、Ｉバスを使用した制御を行う。また、内部Ｉ／Ｏレジスタへのアクセスであれば周辺バスコントローラを起動し、バスレディ信号を非活性化し、内部バスマスタをウェイトさせる。
【００５４】
周辺バス（Ｐバス）は、バスコントローラ６、ＤＭＡコントローラ３、監視用タイマ８、Ｉ／Ｏ１０にそれぞれ接続される。
【００５５】
外部バスは、外部バスバッファ回路１０ａに接続され、および、マイクロコンピュータ１外部に接続されるシンクロナスＤＲＡＭなどに接続することができる。シンクロナスＤＲＡＭを接続する場合のアドレスマルチプレクスなどの制御も行う。
【００５６】
外部バスを使用できる、外部バスマスタは、内部バスマスタ、リフレッシュタイマ６ｂ、外部バス権要求があり、バスアービタ６ａが調停する。なお、リフレッシュタイマ６ｂは、一定時間毎にリフレッシュ要求を発生する。
【００５７】
たとえば、リフレッシュタイマ６ｂがバス権を獲得すると、シンクロナスＤＲＡＭのリフレッシュとして、ＣＡＳ（カラムアドレスストローブ）ビフォＲＡＳ（ロウアドレスストローブ）リフレッシュを行う。
【００５８】
また、外部バス権要求が外部バス権を獲得すると、外部バス（アドレスバス、データバス、制御信号）をハイインピーダンス状態にし、外部のバスマスタによる外部バスの利用を可能にするとともに、外部バス権アクノレッジ信号を活性状態にし、これを通知する。
【００５９】
ＤＭＡコントローラ３は、内部バスにバス権要求を出力できる。バス権要求を行った場合、内部バス権アクノレッジ信号を入力して、内部バス権の獲得を確認すると、内部バスコマンド、アドレスを発行して、内部バスアクセスを行う。内部バスを介して、周辺バス、外部バスを利用できる。
【００６０】
ＣＰＵ２は、内部バスに対して、バス権を要求でき、内部バスを介して、周辺バス・外部バスを利用できる。
【００６１】
ＲＯＭ４、およびＲＡＭ５は、内部バススレーブとして、また、Ｉ／Ｏ１０、入出力インタフェースの各機能ブロックは周辺バススレーブとして、ＣＰＵ２、またはＤＭＡコントローラ３によってリード／ライトされる。ＤＭＡコントローラ３は、その設定などを行うために、ＣＰＵ２によって周辺バススレーブとしてリード／ライトされる。
【００６２】
そのほかのマイクロコンピュータ１の機能の概略は以下の通りである。
【００６３】
割り込みコントローラ７は、Ｉ／Ｏ、入出力インタフェースの出力する割り込み信号を入力し、ＣＰＵ２に割り込み要求信号を出力する。入出力ポートは、外部バス信号（アドレスバス出力、データバス入出力、バス制御信号入出力）、Ｉ／Ｏ１０の入出力信号と兼用とされている。
【００６４】
そのほか、電源端子Ｖｃｃ、Ｖｓｓ、アナログ電源端子ＡＶｃｃ、ＡＶｓｓ、スタンバイ入力ＳＴＢＹ、クロック入力ＥＸＴＡＬ、ＸＴＡＬ、動作モード入力ＭＤ０、ＭＤ１、ＭＤ２などの入力端子がある。
【００６５】
図２は、ＣＰＵ２の構成を示すブロック図である。
【００６６】
ＣＰＵ２は、図示するように、制御部ＣＯＮＴと実行部ＥＸＥＣから構成される。
【００６７】
実行部ＥＸＥＣは、汎用レジスタＲ０〜Ｒ３１、プログラムカウンタＰＣ、コンディションコードレジスタＣＣＲ、算術論理演算器ＡＬＵ、ならびにバッファブロックＢＢを含む。
【００６８】
これらは、リードバスＡ／Ｂ、ライトバスＷによって相互に接続されている。バッファブロックはアドレスバッファやデータバッファである。
【００６９】
制御部ＣＯＮＴは、データバスの内容を入力する命令レジスタＩＲ、および未定義命令検出部ＭＫを有する。命令レジスタＩＲの内容が制御部ＣＯＮＴ内部で解読され、実行部ＥＸＥＣへの制御信号、バスの制御信号などを生成する。１つの命令終了時に、命令実行終了信号ＩＮＳＴを活性化する。
【００７０】
また、未定義命令検出部ＭＫは、命令レジスタＩＲの内容をデコードし、定義されたものであるかを検出する。未定義の命令であると、不当命令検出信号ＯＰＥＲＲを活性化する。これは、監視用タイマ８に出力されるとともに、命令レジスタＩＲの内容を、不当命令例外処理に相当する命令コードに変更し、不当命令例外処理の実行を開始する。
【００７１】
図３は、図２に示したＣＰＵ２におけるアドレス空間を示した説明図である。
【００７２】
ＣＰＵ２のアドレス空間は、たとえば、４Ｇバイトあり、８つのエリアに分割されている。これらのエリアは、バスコントローラ６（図１）の設定によって、独立して、バス幅アクセスステート数を設定可能にされ、外部バスコントローラによって制御される。
【００７３】
一方、マイクロコンピュータ１におけるＲＯＭ４、ＲＡＭ５、内部Ｉ／Ｏレジスタは、バスコントローラ６の設定にかかわらず、固有のバス幅、アクセスステート数で動作する。
【００７４】
前記のとおり、ＲＯＭ４、ＲＡＭ５は、内部バス（Ｉバス）で接続され、１ステートでリード／ライトを行う。内部Ｉ／Ｏレジスタは、周辺バス（Ｐバス）に接続され、２ステートでリード／ライトを行う。
【００７５】
内部Ｉ／Ｏレジスタ領域からプログラムをリードしたり、シングルチップモードで、ＲＯＭ４、またはＲＡＭ５以外からプログラムをリードしたりしたときに、バスコントローラ６は、アドレスエラーとして、アドレスエラー信号ＡＤＥＲＲを活性化し、割り込みコントローラ７（図１）に割り込みを要求する。アドレスエラーの検出自体は、公知であり、ここでは詳細な説明を省略する。
【００７６】
図４は、監視用タイマ８の構成を示すブロック図であり、図５は、監視用タイマ８におけるタイマコントロールレジスタ８ｂ、およびタイマカウンタ８ｃのレジスタ構成例を示す説明図である。
【００７７】
監視用タイマ８は、制御回路８ａ、タイマコントロールレジスタ（ＴＳＣＲ）８ｂ、タイマカウンタ（ＴＣＮＴ）８ｃ、クロック選択部８ｄ、およびリードライト制御部８ｅなどを有している。
【００７８】
タイマコントロールレジスタ８ｂとタイマカウンタ８ｃは、Ｐバスを介してリード／ライトが可能であるが、容易に書き換えられないように、事前に所定のキーワードをライトした後に、ライトすべきデータをライトするように、リードライト制御部８ｅによって制御される。これは、本発明に直接の関係はないので、詳細な説明は省略する。
【００７９】
ＣＰＵ２から不当命令検出信号ＯＰＥＲＲ、割り込みコントローラ７からエラー割り込み検出信号ＥＲＲＩＮをそれぞれ入力する。
【００８０】
タイマカウンタ８ｃは、所定の時間をカウントする。後述のエラー状態で、ＣＰＵ２の命令実行終了信号ＩＮＳＴによって、タイマカウンタ８ｃはクリアされる。このタイマカウンタ８ｃは、特に制限はされないものの、８ビットであり、該タイマカウンタ８ｃのカウントアップクロックは、タイマコントロールレジスタ８ｂのＣＫＳビットで選択された、システムクロックφを分周した信号であり、クロック選択部８ｄから供給される。
【００８１】
タイマコントロールレジスタ８ｂの、ビットＷＴＩＴ，ＴＭＥを１にそれぞれセットすることによって、監視タイマとして動作を行い、タイマカウンタ８ｃがカウントアップを行う。
【００８２】
タイマカウンタ８ｃがオーバフローすると、リセットを要求する。リセットを要求した場合、ビットＷＯＶＦが１にセットされる。ＣＰＵ２は、リセット処理ルーチンでこのフラグを参照することで、リセットの要因を判断できる。
【００８３】
ＣＰＵ２は、正常に動作している限り、タイマカウンタ８ｃがオーバフローする前にタイマカウンタ８ｃに０などをライトし、オーバフローを抑止する。ＣＰＵ２が正常な動作を行えなくなると、監視用タイマ８がオーバフローして、リセットを行う。リセットは、マイクロコンピュータ１内部をリセットするほか、外部にも出力可能である。
【００８４】
監視用タイマ８は、特に制限はされないものの、リセット後は停止状態である。ＣＰＵ２が監視用タイマ８のタイマコントロールレジスタ８ｂへの設定を行って、起動する。前記不当命令、アドレスエラー、ノンマスカブル割り込み要求信号が要求されていると、強制的に動作を開始される。
【００８５】
次に、本実施の形態における監視用タイマ８の作用について説明する。
【００８６】
図６は、監視用タイマ８の状態遷移を示した図である。この図６における状態遷移は、監視用タイマ８の制御ブロック内の論理によって実現される。
【００８７】
まず、リセット後は、停止状態ＳＴＯＰである（状態Ｊ１０１）。ビットＷＴＩＴ，ＴＭＥ（図４）を１にそれぞれセットすると、ウォッチドッグタイマモードＷＴ（図４）に遷移する（状態Ｊ１０２）。
【００８８】
この状態で、タイマカウンタ８ｃがオーバフローすると（状態Ｊ１０３）、リセット要求状態ＲＥＳに遷移し（状態Ｊ１０４）、ビットＣＫＳを固定値にし、所定のカウントを行いつつ、リセット要求を出力する。この状態Ｊ１０４においては、外部へのリセット要求を、内部へのリセット要求より短くするためにリセット要求状態を複数の状態に分かれるようにしてもよい。
【００８９】
その後、リセット終了状態ＥＮＤ（状態Ｊ１０５）を経て、監視用タイマ８それ自体を初期化して、ＳＴＯＰ状態に戻る（状態Ｊ１０１）。インターバルタイマモード（図４）として動作する場合には、インターバルタイマモードＩＴに遷移する（状態Ｊ１０６）。
【００９０】
前述した不当命令、アドレスエラー、ノンマスカブル割り込み要求信号が要求されていると、状態Ｊ１０１、状態Ｊ１０２、または状態Ｊ１０６のいずれの状態からも、エラー検出状態ＥＲＲに遷移する（状態Ｊ１０７）。
【００９１】
この状態では、エラーステータス信号ＥＲＲＳＴを、割り込みコントローラ７、バスコントローラ６のバスアービタ６ａに与え、ＣＰＵ２のエラー処理を優先させる。ビットＣＫＳを固定値にする。この状態でタイマカウンタ８ｃがオーバフローすると、前記同様に、リセット要求を出力する。
【００９２】
なお、ＣＰＵ２の命令実行終了信号ＩＮＳＴによるタイマカウンタ８ｃのクリアを行う場合には、ビットＣＫＳによるカウントアップクロックの指定を比較的小さくするとよい。
【００９３】
ＣＰＵ２の命令実行終了信号ＩＮＳＴによるタイマカウンタ８ｃのクリアを行わない構成とし、ＣＰＵ２のプログラム実行によってタイマカウンタ８ｃをクリアするようにしてもよく、この場合は、ビットＣＫＳによるカウントアップクロックの指定を比較的大きくするとよい。
【００９４】
エラー検出後に、ＣＰＵ２が正しくエラー処理を実行できていない場合には、リセットを発生し、初期化することができる。ＣＰＵ２が正しくエラー処理を実行できない要因としては、たとえば、ＤＭＡコントローラ３やリフレッシュタイマ６ｂ、あるいは外部バス権要求が継続して要求されることによって、ＣＰＵ２がバス権を獲得できないことがある。
【００９５】
エラーによって、内部Ｉ／Ｏレジスタの組合せなどが、正規の状態でありうる組合せ以外になっていると、ハードウェアが正しく動作せず、割り込み要求などが活性状態に固定されてしまいようなことも考えられる。
【００９６】
次に、監視用タイマ８における動作について図７のタイミングチャートを用いて説明する。
【００９７】
図７においては、上方から下方にかけて、ＣＰＵ２から出力されるステート、ビットＣＫＳ（図４）、タイマカウンタ８ｃのカウント値、監視用タイマ８から出力されるリセット要求ＲＳＴＲＱ、ならびに監視用タイマ８から出力されるエラーステータス信号ＥＲＲＳＴの信号タイミングをそれぞれ示している。
【００９８】
まず、監視用タイマ８が、ＳＴＯＰ状態、または、ウォッチドッグタイマモードＷＴ、インターバルタイマモードＩＴで、エラー検出によって、たとえば、不当命令検出信号ＯＰＥＲＲ＝１となると、監視用タイマ８は、ＥＲＲ状態に遷移し、エラーステータス信号ＥＲＲＳＴを活性化する。
【００９９】
ビットＣＫＳを、特に制限はされないものの、００１とし、φ／６４（図４）でカウントアップを開始する。タイマカウンタ８ｃが８ビットのとき、２０４８（２５６×８）ステート以内に、ＣＰＵ２が該タイマカウンタ８ｃへのライトを行わないと、ＲＥＳ状態に遷移し、リセット要求ＲＳＴＲＱを活性化し、マイクロコンピュータ１をリセットする。この時間は、ビットＣＫＳを０００とし、タイマカウンタ８ｃのオーバフローを待つことで計測する。その後、ＳＴＯＰ状態に遷移する。
【０１００】
ＣＰＵ２のエラー処理ルーチンには、上記２０４８ステートを超えない間隔で、タイマカウンタ８ｃに０をライトする命令をいれる。エラー処理が完了した時点で、監視用タイマ８を停止する処理をいれる。
【０１０１】
次に、前述したエラー処理の動作例について図８を用いて説明する。
【０１０２】
まず、通常のプログラム実行状態（図８の上方）から、エラーが発生（図８の下方、エラー処理ルーチン）すると、例外処理ベクタなどで示される所定のエラー処理ルーチンへＣＰＵ２の処理が分岐する。
【０１０３】
ＣＰＵ２のエラー処理ルーチンには、前記の通り、オーバフロー周期を超えない間隔で、タイマカウンタ８ｃに０をライトする命令を実行しながら、制御対象システムに即して、致命的な動作の抑止を行う処理を行う。致命的な動作の抑止とは、たとえば、マイクロコンピュータ１の出力信号を非活性状態にする。
【０１０４】
なお、監視用タイマ８から出力する信号によって、ＤＭＡコントローラ３のバス権要求や、割り込み要求を抑止しているので、エラー処理ルーチンで、これらの処理を行うことを不要にできる。
【０１０５】
エラー処理が完了した時点で、ビットＴＭＥを０にクリアして、監視用タイマ８を停止する処理を行い、通常のリセット処理ルーチンに遷移する。あるいは、監視用タイマ８を停止させる代わりに、タイマカウンタ８ｃに最大値をライトするなどして、意図的にオーバフローを発生させ、マイクロコンピュータ１をリセットしてもよい。リセットをすることで、マイクロコンピュータ１内部の不所望の状態を解除することができる。
【０１０６】
それにより、本実施の形態によれば、以下の効果を得ることができる。
【０１０７】
（１）エラーを検出した時点で、監視用タイマ８を起動することにより、ＣＰＵ２がエラー処理を正しく行えない場合であっても、リセットによる初期化を行い、システムの回復を行うことができる。この場合の、監視用タイマ８のオーバフロー周期を短くして、監視精度を向上できる。
【０１０８】
（２）上記起動後に、ＣＰＵ２の処理によって、監視用タイマ８を初期状態などに戻すことを可能にし、ＣＰＵ２の処理を継続させることができる。
【０１０９】
（３）ＣＰＵ２の内部信号を監視することによって、ＣＰＵ２がエラー処理を正しく行えないことをいち早く知り、リセットによる初期化を行い、システムの回復を行うことができる。
【０１１０】
（４）ユーザ資源としての監視タイマと共通化し、資源の有効活用を図ることができる。
【０１１１】
（５）監視用タイマ８が、バス権や割り込みなど、ＣＰＵ２のエラー処理を阻害する要因を排除することによって、エラー処理ルーチンで、ＤＭＡコントローラ３を停止したりする処理を不要にすることができる。
【０１１２】
（６）換言すると、エラーを発生した場合、一定時間後にリセットを発生することになるので、その間に、ＣＰＵ２によって緊急の処理を行うことができる。エラー処理を２段階にし、より確実に行うことができる。意図的に、エラーにより、誤動作を生じさせ、内部情報を得ることを防止することできる。
【０１１３】
以上、本発明者によってなされた発明を実施の形態に基づき具体的に説明したが、本発明は前記実施の形態に限定されるものではなく、その要旨を逸脱しない範囲で種々変更可能であることはいうまでもない。
【０１１４】
たとえば、監視用タイマのモードやレジスタ構成も任意に変更可能である。ユーザ資源の監視用タイマと兼用にするように説明したが、専用の機能を持ってもよい。あるいは、リフレッシュタイマなどの機能と兼用してもよい。
【０１１５】
ＣＰＵから供給される信号も命令実行終了信号によらず、ＣＰＵの命令実行状態を判断できるものであれば何でもよい。バスアクセスの状態でもよい。エラー発生時のオーバフロー周期は、一般の選択と共通にするほか、専用のものにしてもよい。
【０１１６】
外部に対するリセットは、なくてもよいし、選択可能にしてもよい。いずれにせよ、一般の選択よりは短いものが好適である。エラー状態で、さらにエラーが発生した場合は、直ちにリセット要求を発生するようにしてもよい。監視用タイマの状態遷移なども種々変更可能である。
【０１１７】
エラーの検出内容も、適宜変更することができる。未定義の命令の検出も、実行開始前や実行開始後など変更可能であるし、デコードの仕方も任意にできる。データ転送装置としては、ＤＭＡコントローラに限定されず、バス権を要求するコプロセッサなどであってもよい。
【０１１８】
マイクロコンピュータの構成やアドレス空間についても限定されない。そのほかや機能ブロックなども種々変更できる。
【０１１９】
以上の説明では主として本発明者によってなされた発明をその背景となった利用分野であるシングルチップマイクロコンピュータに適用した場合について説明したが、それに限定されるものではなく、その他の半導体集積回路装置、たとえば、デジタルシグナルプロセッサ（ＤＳＰ）を中心にした半導体集積回路装置にも適用可能であり、本発明は少なくとも、プログラムを実行するデータ処理装置を内蔵した半導体集積回路装置に適用することができる。
【産業上の利用可能性】
【０１２０】
本発明の半導体集積回路装置は、エラーなどによる誤動作の影響を最小限に抑える技術に適している。
【図面の簡単な説明】
【０１２１】
【図１】本発明の一実施の形態によるマイクロコンピュータのブロック図である。
【図２】図１のマイクロコンピュータに設けられたＣＰＵのブロック図である。
【図３】図２に示したＣＰＵにおけるアドレス空間を示した説明図である。
【図４】図１のマイクロコンピュータに設けられた監視用タイマの構成を示すブロック図である。
【図５】図４の監視用タイマにおけるタイマコントロールレジスタ、およびタイマカウンタのレジスタ構成の一例を示す説明図である。
【図６】図４の監視用タイマにおける状態遷移図である。
【図７】図４の監視用タイマにおけるタイミングチャートである。
【図８】図１のマイクロコンピュータにおけるエラー処理例を示す説明図である。
【符号の説明】
【０１２２】
１  マイクロコンピュータ（半導体集積回路装置）
２  ＣＰＵ（中央処理装置）
３  ＤＭＡコントローラ
４  ＲＯＭ
５  ＲＡＭ
６  バスコントローラ
６ａ  バスアービタ
６ｂ  リフレッシュタイマ
７  割り込みコントローラ
８  監視用タイマ
８ａ  制御回路
８ｂ  タイマコントロールレジスタ
８ｃ  タイマカウンタ
８ｄ  クロック選択部
８ｅ  リードライト制御部
９  リセット制御部
１０  Ｉ／Ｏ
１０ａ  外部バスバッファ回路
ＥＸＥＣ  実行部
ＣＯＮＴ  制御部
Ｒ０〜Ｒ３１  汎用レジスタ
ＰＣ  プログラムカウンタ
ＣＣＲ  コンディションコードレジスタ
ＡＬＵ  算術論理演算器
ＢＢ  バッファブロック
Ａ／Ｂ  リードバス
Ｗ  ライトバス
ＩＲ  命令レジスタ
ＭＫ  未定義命令検出部
Ｂ  バス
ＥＲＲＳＴ  エラーステータス信号
ＩＮＳＴ  命令実行終了信号
ＯＰＥＲＲ  不当命令検出信号
ＲＳＴＲＱ  リセット要求
ＩＮＴＦ  割り込み要求信号
ＮＭＩ  ノンマスカブル割り込み要求信号
【図１】
2006171952.tif 000003
【図２】
2006171952.tif 000004
【図３】
2006171952.tif 000005
【図４】
2006171952.tif 000006
【図５】
2006171952.tif 000007
【図６】
2006171952.tif 000008
【図７】
2006171952.tif 000009
【図８】
2006171952.tif 000010