(57)【特許請求の範囲】
【請求項１】
正常動作中のＣＰＵ（２）からアクセスされる毎に初期値或いは任意の設定値からカウント動作を実行するように設けられ、上記ＣＰＵ（２）の暴走により限度値までのカウント動作が終了したときは上記ＣＰＵ（２）へ異常信号を出力すると共に停止指令を受けた状態でカウント動作を停止するカウント手段（１０）と、
エミュレーションプログラム実行中の前記ＣＰＵ（２）により自己のアドレスに対して特定の第１のデータの書込み動作が行われたときに停止指令を出力すると共に当該第１のデータと異なる特定の第２のデータの書込み動作が行われたときに停止指令の出力を停止する停止指令出力手段（９）と、
外部からの指令に応じて前記停止指令出力手段（９）による停止指令の出力状態を前記ＣＰＵ（２）へ出力する出力状態出力手段（１８）と、
外部からの指令に応じて前記カウント手段（１０）のカウント値を前記ＣＰＵ（２）へ出力するカウント値出力手段（２３）と、
エミュレーションプログラム実行中の前記ＣＰＵ（２）からのアクセスに応じて前記出力状態出力手段（１８）及び前記カウント値出力手段（２３）に対して指令を与える制御回路（１１）とを備えたことを特徴とするウォッチドッグタイマ。
【請求項２】
請求項１のウォッチドッグタイマを備えたことを特徴とするマイクロコンピュータ。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、ＣＰＵが暴走したときに当該ＣＰＵをリセットしたり或いは割込みをかけるためのウォッチドッグタイマ及び斯様なウォッチドッグタイマを備えたマイクロコンピュータに関する。
【０００２】
【従来の技術】
従来より、ウォッチドッグタイマとして、特開平３−１９４６２８号公報のものが提案されている。このものは、エミュレーション時に、特別に設けられた外部端子の信号レベルをハイレベルとすることによりウオッチドッグタイマを停止するように構成されており、その外部端子に切替えのための信号を与えるだけで済むので、デバッグ等も容易になる。
【０００３】
【発明が解決しようとする課題】
しかしながら、上記構成のものでは、ウォッチドッグタイマを停止させるための信号を当該ウォッチドッグタイマの外部端子に与えなければならず、その接続が極めて面倒であった。
【０００４】
本発明は上記事情に鑑みてなされたもので、その目的は、プログラム開発のデバッグ作業の際に、面倒な接続を行うことなく簡単に機能検査を行うことができるウォッチドッグタイマ及び斯様なウォッチドッグタイマを備えたマイクロコンピュータを提供することにある。
【０００５】
【課題を解決するための手段】
請求項１の発明によれば、ＣＰＵが正常に動作しているときは、ＣＰＵは、ウォッチドッグタイマに所定周期毎にアクセスするので、カウント手段は、カウント動作を繰返して実行する。この場合、ウォッチドッグタイマのカウント値が限度値となることはない。
【０００６】
そして、ＣＰＵが暴走したときは、ＣＰＵはウォッチドッグタイマにアクセスしなくなるので、カウント手段のカウント値が限度値となる。これにより、カウント手段は異常信号をＣＰＵへ出力するので、ＣＰＵはリセットされたり或いは割込みをかけられることにより暴走状態が停止する。
【０００７】
さて、エミュレーション時においてウォッチドッグタイマの動作を検査するためにカウント手段のカウント動作を一時停止するときは、ＣＰＵによるエミュレーションプログラムの実行により停止指令発生手段に対して第１のデータの書込みを行う。
【０００８】
すると、停止指令発生手段は、カウント手段へ停止指令を出力するので、カウント手段はカウント動作を停止する。この状態でウォッチドッグタイマの動作状態を検査する。
【０００９】
また、カウント手段のカウント動作を再開するときは、停止指令発生手段に対してＣＰＵにより第２のデータの書込みを行う。すると、停止指令発生手段は、カウント手段に対する停止指令の出力を停止する。これにより、カウント手段がカウント動作を再開するようになる。
【００１４】
この場合、停止指令出力手段による停止指令の出力状態を確認するときは、エミュレーションプログラム実行中のＣＰＵは制御回路にアクセスする。
すると、制御回路は、出力状態出力手段に指令を与え、それに応じて出力状態出力手段は、停止指令発生手段による停止指令の出力状態を出力するので、その出力によりＣＰＵは停止指令の出力状態を確認することができる。
【００１５】
また、カウント手段のカウント値を確認したいときは、エミュレーションプログラム実行中のＣＰＵは制御回路にアクセスする。
すると、制御回路は、カウント値出力手段に指令を与え、それに応じてカウント値出力手段は、カウント手段のカウント値を出力するので、その出力によりＣＰＵはカウント手段のカウント値を確認することができる。
従って、ＣＰＵによるエミュレーションプログラムの実行により任意のタイミングでウォッチドッグタイマを停止したり、再動作させたりすることができるので、ウォッチドッグタイマに配線を接続することなくプログラム開発のデバッグ作業ができる。
【００１６】
【発明の実施の形態】
以下、本発明の一実施例を図面を参照して説明する。
図１はワンチップマイクロコンピュータの概略構成を示すと共に、ワンチップマイクロコンピュータが有するウォッチドッグタイマの電気的構成を示している。この図１において、ワンチップマイクロコンピュータ１は、ＣＰＵ２、プログラムが記憶されたＲＯＭ３、ワーキングデータ記憶用のＲＡＭ４及び周辺回路５に加えてウォッチドッグタイマ６を備えて構成されている。
【００１７】
ＣＰＵ２とＲＯＭ３、ＲＡＭ４、周辺回路５及びウォッチドッグタイマ６とはアドレスバス７及びデータバス８などのシステムバスを通じて接続されており、ＣＰＵ１とそれらの間でシステムバスを通じてデータの授受が行われるようになっている。
【００１８】
ウォッチドッグタイマ６は、カウントイネーブル発生回路９（停止指令出力手段に相当し、以下、ＣＥ発生回路と称する）、ダウンカウンタ１０（カウント手段に相当）及び制御回路１１を主体として構成されている。
【００１９】
ＣＥ発生回路９において、ラッチ回路１２のデータ入力端子Ｄにはデータバス８のＤＢ０（データバスのビット０）が接続されており、クロック端子ＣがハイレベルとなったタイミングでデータバスＤＢ０のビットパターンがラッチ回路１２に記憶されて出力端子Ｑから出力される。
【００２０】
ラッチ回路１２のリセット端子Ｒには電源投入時にシステムリセット信号が入力されるようになっており、システムスタート時においてはラッチ回路１２の出力端子Ｑの出力レベルはローレベルとなっている。
【００２１】
ラッチ回路１２のクロック端子Ｃにはアンド回路１３の出力端子が接続されている。このアンド回路１３の入力端子にはアドレスバスデコーダ１４（以下、Ａバスデコーダと称する）、データバスキーパターンデコーダ１５（以下、Ｄバスキーパターンデコーダと称する）が接続されていると共に、ＣＰＵ２からのライト信号ＩＷＲＥ、ＣＰＵ駆動用のクロック信号ＣＫ１が入力するように接続されている。
【００２２】
Ａバスデコーダ１４はアドレスバス７のビットパターンが所定パターンとなったことを検出するためのもので、例えばＣＥ発生回路９に予め設定されたアドレスが［０４１Ｃ］ｈだとすると、アドレスデータが［０４１Ｃ］ｈとなった状態でハイレベル信号を出力する。
Ｄバスキーパターンデコーダ１５はデータバス８のビットパターンが所定パターンとなったことを検出するためのものである。
【００２３】
図２はＤバスキーパターンデコーダ１５の具体的回路を示している。この図２において、データバスＤＢ５（ビット５）〜ＤＢ１（ビット１）が所定のキーパターンとなったときにアンド回路１３からの出力がハイレベルとなるように構成されている。つまり、データバスＤＢ１，ＤＢ３，ＤＢ５はアンド回路１６の入力端子に直接接続され、データバスＤＢ２，ＤＢ４はインバータ１７を介してアンド回路１６の入力端子に接続されている。
【００２４】
従って、このような接続関係にあっては、ＤＢ５〜ＤＢ１のビットパターンが［１０１０１］ｂとなったときのみアンド回路１６のアンド条件が成立してハイレベル信号を出力し、これ以外のビットパターンではアンド回路１６からハイレベル信号を出力することはない。
【００２５】
以上の構成により、ＣＥ発生回路９は、アドレスバス７のビットパターンが［０４１Ｃ］ｈで且つデータバス８のＤＢ５〜ＤＢ０のビットパターンが［１０１０１１］ｂとなった状態で（第１のアクセス条件、第１のデータの書込み動作に相当）、ＣＰＵ２からライト信号ＩＷＲＥが入力し且つクロック信号ＣＫ１が入力したタイミングでハイレベルのカウントイネーブル信号（以下、ＣＥ信号と称する）と称する。
【００２６】
また、ＣＥ発生回路９は、アドレスバス７のビットパターンが［０４１Ｃ］ｈで且つデータバス８のＤＢ５〜ＤＢ０のビットパターンが［１０１０１０］ｂとなった状態で（第２のアクセス条件、第２のデータの書込み動作に相当）、ＣＰＵ２からライト信号ＩＷＲＥが入力し且つクロック信号ＣＫ１が入力したタイミングでＣＥ信号の出力を停止する。
【００２７】
ＣＥ発生回路９からのＣＥ信号はバッファ回路１８に与えられる。このバッファ回路１８の出力端子は所定のデータバスと接続されており、データバス８を通じてＣＰＵ２がバッファ回路１８の出力レベルを読取れるようになっている。
【００２８】
ダウンカウンタ１０において、選択器１９は制御回路１１により決定された側のデータを入力してラッチ部２０によりラッチすることによりダウンカウンタ１０の値を更新するようになっている。つまり、選択器１９は、選択端子Ｓがローレベルの状態においては入力端子ＩＮ０からの入力データを選択して出力すると共に、選択端子Ｓがハイレベルの状態においては入力端子ＩＮ１の入力データを選択して出力するようになっている。この場合、選択器１９の入力端子ＩＮ１はデータバス８と接続されており、選択端子ＳがハイレベルとなったタイミングでＣＰＵ２からのカウント初期値をデータバス８を通じてダウンカウンタ１０に取込むようになっている。
【００２９】
ラッチ部２０は、ＣＰＵ駆動用のクロックＣＫ１の入力タイミングで選択器１９からの出力データをラッチして記憶すると共にその記憶データを出力する。この場合、ラッチ部２０は記憶したデータが０となったときはＣＰＵ２へボロー信号（異常信号に相当）を出力するようになっている。
【００３０】
デクリメント部２１は、ラッチ部２０からの出力データを入力し、その入力データから１を減算した値を出力する。
ラッチ部２２は、Ｃ端子にハイレベルが入力したタイミングでデクリメント部２１からの出力データを記憶すると共にその記憶データを出力する。このラッチ部２２の出力端子は選択器１９の入力端子ＩＮ０と接続されている。
【００３１】
以上の構成により、ダウンカウンタ１０は、所定タイミングでＣＰＵ２によりカウント初期値が設定されると共に、所定周期毎にカウント値が１ずつ減数される。
【００３２】
バッファ回路２３は、ダウンカウンタ１０のカウント値をＣＰＵ２がリードするための回路であり、制御回路１１からＷＤＴリード信号を入力したタイミングでダウンカウンタ１０からのカウント値をデータバス８を通じてＣＰＵ２へ出力する。
【００３３】
一方、アンド回路２４は、ダウンカウンタ１０がデクリメント動作を実行するためのパルス信号を発生すると共に、ＣＥ発生回路９から出力されるＣＥ信号に応じてダウンカウンタ１０に対するパルス信号の出力を禁止する機能を有する。つまり、アンド回路２４の入力端子はＣＥ発生回路９からのＣＥ信号をインバータ２５を介して入力するように接続されていると共に、ＣＰＵ駆動用のクロック信号ＣＫ２及び制御回路１１からのタイマクロック信号を入力するように接続されている。
【００３４】
従って、アンド回路２４は、ＣＥ発生回路９からハイレベルのＣＥ信号の非出力状態でクロック信号ＣＫ２が入力し且つ制御回路１１からタイマクロック信号が入力したタイミングでアンド条件が成立してハイレベル信号をダウンカウンタ１０へ出力する。
【００３５】
制御回路１１は、ウォッチドッグタイマ６全体の動作を制御するためのものである。つまり、制御回路１１は、ＣＰＵ２により所定のアドレスにアクセスされた状態でリード信号が与えられたタイミングでカウント値ライト信号をダウンカウンタ１０へ出力する。
また、制御回路１１は、例えば１μｓ毎にタイマクロック信号をアンド回路２４へ出力する機能を有する。
【００３６】
また、制御回路１１は、自己に設定された所定のアドレスがアクセスされた状態でＣＰＵ２からリード信号が与えられたタイミングでＣＥリード信号を出力する。この場合、ＣＥリード信号はバッファ回路１８の制御端子に与えられるもので、その制御端子のレベルがハイレベルとなった状態でＣＥ発生回路９からのＣＥ信号の出力状態がバッファ回路１８からデータバス８を通じてＣＰＵ２へ出力される。
【００３７】
また、制御回路１１は、自己に設定された所定のアドレス（ＣＥリード信号出力用のアドレスとは異なる）がアクセスされた状態でＣＰＵ２からリード信号が与えられたタイミングでＷＤＴリード信号を出力する。この場合、ＷＤＴリード信号はバッファ回路２３の制御端子に与えられるもので、その制御端子のレベルがハイレベルとなった状態でダウンカウンタ１０のカウント値がバッファ回路２３からデータバス８を通じてＣＰＵ２へ出力される。
【００３８】
さらに、制御回路１１は、ＣＰＵ２によりウォッチドッグタイマ１０に対するカウント初期値ライトタイミングとダウンカウンタ１０に対するタイマクロック信号の出力タイミングとが重なった場合のタイミング調整するためのシーケンサ機能を有する。
【００３９】
以上のように構成されたウォッチドッグタイマ６はＣＰＵ２の暴走を検出するためのものであり、ＣＰＵ２が正常に動作している状態では、ウォッチドッグタイマ値が０となる前に当該ウォッチドッグタイマ値がＣＰＵ２により更新されるようになっている。
【００４０】
具体的には、更新値（カウント初期値）を例えば［Ｃ０００］ｈとした場合、ＣＰＵ２が暴走したときは、ウォッチドッグタイマ値が［００００］ｈになる前に更新されないことなるので、ウォッチドッグタイマ値が０になり、ウォッチドッグタイマ６のダウンカウンタ１０からボロー信号が発生してＣＰＵ２に対して暴走を知らせるために割込みをかけたり、強制的にリセットするようになる。
【００４１】
尚、上述のようにウォッチドッグタイマ５に設定された各アドレスはメモリ空間に配列されるものであるが、ＲＯＭ３或いはＲＡＭ３のアドレスとは一致しないように設定されている。
【００４２】
次に上記構成の作用について説明する。
ワンチップマイクロコンピュータ１を用いてプログラム開発する場合、デバッグのためのエミュレーションプログラムにより動作を検査する必要がある。この場合、エミュレーションプログラムの実行方法には、ＲＯＭ３内に予め格納したのを使用したり、外部とのパソコン等とシリアル通信などを介してＲＡＭ上にエミュレーションプログラムを転送して実行させたり、ＩＣＥを用いたりする方法がある。
【００４３】
さて、ＣＰＵ２は、エミュレーションプログラムの実行にしたがって、まず、ウォッチドッグタイマ６に対して［Ｃ０００］ｈを書込む。すると、制御回路１１の制御により、ダウンカウンタ１０のラッチ部２０には［Ｃ０００］ｈが書込まれる。
ここで、制御回路１１は、タイマクロック信号を１μｓ毎に出力するので、ダウンカウンタ１０は１μｓ毎に［Ｃ０００］ｈから１ずつ減算する。
【００４４】
一方、ＣＰＵ２は、ウォッチドッグタイマ６に対して所定周期毎に［Ｃ０００］ｈを再書込みするので、ウォッチドッグタイマ６には所定周期毎にカウント初期値が書込まれる。この結果、ウォッチドッグタイマ６のカウント値が０となることはないので、ウォッチドッグタイマ６からボロー信号がＣＰＵ２に対して出力されてしまうことはなく、ＣＰＵ２はエミュレーションプログラムの動作を継続する。
【００４５】
さて、ＣＰＵ２は、エミュレーションプログラムの実行にしたがってウォッチドッグタイマ６の機能を検査するために当該ウォッチドッグタイマ６を停止するときは、アドレス［０４１Ｃ］ｈに［００２Ｂ］ｈを書込む動作を実行する（図３参照）。
【００４６】
この結果、アドレスバス７のビットパターンが［０４１Ｃ］ｈとなると共に、データバス８においてＤＢ５〜ＤＢ０が［１０１０１］ｂとなるので、Ａバスデコーダ１４及びＤバスキーパターンデコーダ１５からハイレベル信号が出力される。
【００４７】
そして、この状態でＣＰＵ２からライト信号ＩＷＲＥが出力され且つクロック信号ＣＫ１が出力されたタイミングで、アンド回路１３からハイレベル信号が出力されるので、ラッチ回路１２は、そのタイミングでデータバスにおけるＤＢ０のビットパターン［１］を出力端子Ｑから出力する。
【００４８】
以上の動作により、ＣＥ発生回路９からハイレベルのＣＥ信号が出力されるので、アンド回路２４の入力端子の１つのレベルがローレベルとなり、アンド回路２４からローレベル信号が出力されるようになる。従って、ダウンカウンタ１０のカウント動作が停止して当該ダウンカウンタ１０のカウント値が変化しなくなる（図３及び図４参照）。
【００４９】
上述のようにしてウォッチドッグタイマ６を停止させたＣＰＵ２は、エミュレーションプログラムの実行にしたがってウォッチドッグタイマ６の動作状態を読取る。
【００５０】
即ち、ＣＰＵ２は、ＣＥ発生回路９からの出力状態を読取るために制御回路１１に設定されたＣＥ発生回路９に対応したアドレスを出力する。
すると、制御回路１１は、自己に設定されたアドレスのうちＣＥ発生回路９に対応したアドレスが選択された状態で、ＣＰＵ２からライト信号ＩＷＲＥを入力したときは、ＣＥリード信号をＣＥ発生回路９に接続されたバッファ回路１８に出力する。
【００５１】
これにより、バッファ回路１８が有効となって、バッファ回路１８からＣＥ発生回路９からのＣＥ信号の出力状態がデータバス８へ出力されるので、ＣＰＵ２は、ＣＥ発生回路９のＣＥ信号の出力状態を読取ることができる。
【００５２】
続いて、ＣＰＵ２は、ウオッチドッグタイマ６のカウント値を読取るために制御回路１１に設定されたダウンカウンタ１０に対応するアドレスを出力する。
すると、制御回路１１は、自己に設定されたアドレスのうちダウンカウンタ１０に対応したアドレスが選択された状態で、ＣＰＵ２からライト信号ＩＷＲＥを入力したときは、ＷＤＴリード信号をダウンカウンタ１０に接続されたバッファ回路２３に出力する。
【００５３】
これにより、バッファ回路２３が有効となって、バッファ回路２３からダウンカウンタ１０のカウント値がデータバス８へ出力されるので、ＣＰＵ２は、ダウンカウンタ１０の現在のカウント値を読取ることができる。
【００５４】
従って、ＣＰＵ２が読取ったウォッチドッグタイマ６の動作状態に基づいて、エミュレーションプログラムに設定された所定のタイミングでもってマイクロコンピュータ１による動作状態を確認することができる。
【００５５】
上述のようにしてウォッチドッグタイマ６の動作状態を読取ったＣＰＵ２は、ウォッチドッグタイマ６を再動作させる。つまり、アドレス［０４１Ｃ］ｈに対して［００２Ａ］ｈを書込む動作を実行する（図３参照）。
【００５６】
これにより、ＣＥ発生回路９が選択されて、ラッチ回路１２にはデータバス８のＤＢ０のレベルである［０］が書込まれるので、ＣＥ発生回路９からのＣＥ信号の出力が停止する。
この結果、ダウンカウンタ１０が有効となり、カウント動作を再開するようになる（図３及び図４参照）。
【００５７】
上記構成のものによれば、ＣＰＵ２によるエミュレーションプログラムの実行によりウォッチドッグタイマ６のＣＥ発生回路９に対してアクセスすることによりダウンカウンタ１０をソフト的に停止させたり再動作させるように構成したので、ウォッチドッグタイマを停止させるための専用端子を有し、その専用端子に信号を与えることによりウォッチドッグタイマを停止させる従来構成のものと違って、面倒な接続を行うことなくウォッチドッグタイマ６を所定タイミングで簡単に停止させることができ、プログラム開発のデバッグが容易になる。さらに、プログラムの実行途中に割り込んでエミュレーションを実行させる場合にも、その間のみＣＥ発生回路９の出力をローレベルとして、エミュレーション終了後、ＣＥ発生回路９の出力をハイレベルにすることで、通常動作に復帰できるため、非常に使い易いものとなる。
【００５８】
また、ウォッチドッグタイマ６を停止させた状態で、ＣＰＵ２によりウォッチドッグタイマ６のＣＥ発生回路９の動作状態及びダウンカウンタ１０のカウント値を読取るようにしたので、デバッグを一層容易に行うことができる。
【００５９】
さらに、ウォッチドッグタイマ６を停止するためのアドレス及び当該ウォッチドッグタイマ６の動作状態を読取るためのアドレスをメモリ空間に配列しながら、ＲＯＭ３及びＲＡＭ４のアドレスと一致しないようにしたので、ＣＰＵ２が実際のプログラムを実行した際に、ウォッチドッグタイマ６が不用意にアクセスされることがなく、ウォッチドッグタイマ６のカウント動作に支障を生じることはない。
【００６０】
本発明は、上記実施例にのみ限定されるものではなく、次のように変形または拡張できる。
ダウンカウンタ１０の代わりに、アップカウンタを設け、アップカウンタのカウンタ値が限度値なったときにキャリー信号をＣＰＵ２に対する異常信号として出力するようにしてもよい。
【００６１】
Ｄバスキーパターンデコーダとしては、［１０１０１］ｂというビットパターンに限定されるものではないと共に、５ビットのキーパターンに限定されるものではない。さらに、ＣＥ発生回路９用のＡバスデコーダ１４とは別にＤパスキーパターンデコーダ１５専用のアドレスを設定し、Ｄパスキーパターンデコーダ１５が有効になった状態でのみＣＥ発生回路９の動作を有効化することにより、誤動作を一層防止することができる。
【００６２】
また、ウォッチドッグタイマ６のアドレスをメモリ空間に配列したが、Ｉ／Ｏアドレス空間に配列するようにしてもよい。この場合、ウォッチドッグタイマ６にアクセスするには、ＣＰＵ２によるＩ／Ｏ命令の実行による。
【００６３】
また、ウォッチドッグタイマ６を停止させた状態でその動作状態を読取る手段としては、ウォッチドッグタイマ６をＣＰＵ２から切離し、データバス８を通じてウォッチドッグタイマ６にアクセスするようにしてもよい。
【図面の簡単な説明】
【図１】本発明の一実施例におけるワンチップマイクロコンピュータの全体構成を示す概略図
【図２】Ｄパスキーパターンデコーダの具体的構成を示す図
【図３】ウォッチドッグタイマの動作を示す各種信号の波形図
【図４】ウォッチドッグタイマのタイマカウント値の変化を示す図
【符号の説明】
１はワンチップマイクロコンピュータ、２はＣＰＵ、６はウォッチドッグタイマ、９はカウントイネーブル発生回路（停止指令出力手段）、１０はダウンカウンタ（カウント手段）、１８はバッファ回路（出力状態出力手段）、２３はバッファ回路（カウント値出力手段）である。
【図１】
0003951371.tif 000002
【図２】
0003951371.tif 000003
【図３】
0003951371.tif 000004
【図４】
0003951371.tif 000005