アプリケーションノート 4229

内部および外部ウォッチドッグタイマの比較

筆者: Eric Schlaepfer

要約: このアプリケーションノートでは、内部(マイクロプロセッサと一体化)と外部(ハードウェアベース)ウォッチドッグタイマ(WDT)の利点と不利点を比較します。アプリケーションノートでは、内部ウォッチドッグタイマは実装しやすいが故障しやすいことを明らかにしています。MAXQ2000マイクロコントローラのWDTが内部ウォッチドッグの例となります。ハードウェアベースのウォッチドッグタイマは、追加の基板スペースを必要としますが高い信頼性が最優先事項である場合は不可欠です。このアプリケーションノートの結論には、各WDTソリューションの主要な利点と不利点を示す比較マトリックスが掲載されています。

はじめに

ウォッチドッグタイマ(WDT)は、組込みマイクロプロセッサまたはマイクロコントローラに、無効なソフトウェア状態に応答してリセット(ハードウェアリセット)するように強制します。このような状態は、ソフトウェアバグ、宇宙線、またはEMI (電磁波妨害)などの現象が原因でトグルするレジスタビットと同じように単純である可能性があります。

このアプリケーションノートでは、アプリケーションに最適なタイマーを選択する際の考慮事項について検討します。

WDTの標準アプリケーション

マイクロプロセッサのロックアップ防止は、WDTの標準アプリケーションです。一般に、組込みソフトウェアは「メインループ」を持っていて、このメインループがさまざまなアクティビティを指令するいくつかのサブルーチンを読み込みます。その際に、WDTはループの最上部で一度リセットされます。ループが何らかの理由で正しく実行することができない場合、ウォッチドッグが起動してデバイスがリセットされます。

WDT搭載のシステムは特に、ビットエラーの検出に最適です。一時的なビットエラーは、ソフトメモリエラーやEMI放電を含む、メモリデバイスや各インタフェースへの割込みによって引き起こされます。これらのビットエラーは、組込みプロセッサに入出力されるデータの一時的なビット極性反転を引き起こします。プログラム情報の取得中にこのビットエラーが発生すると、マイクロプロセッサは誤ったコードを実行し始めます。場合によっては、プロセッサは、オペコードの代わりにオペランドを実行し始める可能性があります。プロセッサは、この不正コードを実行し始めると、ウォッチドッグのサービスを提供するコードを正しく実行しなくなります。タイムアウト間隔の経過後、ウォッチドッグはプロセッサリセットを発生させます。正しく設計されたシステムの場合、このリセットは元のエラーを訂正します。

また、WDTはフォルトを瞬時に検出することができないことに注意してください。定義によって、WDTはプロセッサをリセットするには、設定済みの時間間隔の最後まで伸ばす必要があります。この事実は、WDTが制御不能状態を訂正可能になるまでの可能な最短タイムアウト間隔で期限切れになるように選択する必要がある理由を明らかにしています。

内部対外部WDT

WDTは、MAXQ2000マイクロコントローラなどのマイクロプロセッサに内蔵することも、スタンドアロンICとして外付けすることも、また、サポートASICの一部として組み込むこともできます。WDTが内部または外部であるかどうかに関係なく、各デバイスタイプには利点と不利点があります。内部タイマーはコスト節減になりますが、暴走コードに影響される場合があります。実装に多少コストがかかりますが、外部WDTは個別クロックソースを持っているため、信頼性が向上します。正しく構成されると、外部WDTは、暴走コードによってバイパスまたはディセーブルされることはできません。

基本的なWDT動作

各WDTの中心はカウンタレジスタです。クロックソースは、カウンタレジスタを連続的にインクリメントし、オーバフローすると、ウォッチドッグロジックはシステムリセットを強制します。このリセットを防ぐには、「servicing the watchdog」というプロシージャでカウンタレジスタを定期的にクリアする必要があります。外部WDT ICは、ディジタル入力を備え、ローハイまたはハイロー遷移ごとにカウンタレジスタをクリアします。内部WDTの場合、「servicing」の実装はさまざまに異なります。たとえば、MAXQ2000のWDTは、レジスタビット(MOVE WDCN.0, #1)を設定することによってサービスを提供することができます。PICマイクロコントローラ、およびその他のマイクロプロセッサは、専用の命令(CLRWDT)を使用し、カウンタレジスタにサービスを提供します。

正しく動作するソフトウェアは、カウンタレジスタがオーバフローしないように十分な規則性でディジタル信号遷移を提供する必要があります。しかし、カウンタレジスタがクリアされないように、ソフトウェアが無限ループにスタックするか、暴走する恐れがあります。この状態は最終的にリセットをトリガします。WDT期間は、カウンタのオーバフローに要する時間です。リセットを防ぐには、ウォッチドッグのサービス間隔をタイムアウト期間より短くする必要があります。

一部のWDTは、基本的なカウンタ-レジスタアーキテクチャよりも高度な機能を備えています。一般的なバリエーションは、「ウィンドウ型」または「最小/最大値」WDTです。この機能は、ウォッチドッグのサービスが遅すぎるか早すぎる場合、リセットを知らせます。カウンタレジスタの数値が特定のスレショルドより低いときにカウンタレジスタをクリアする信号が着信した場合、デバイスはシステムリセットをトリガします。簡単に言えば、ウォッチドッグはそのサービスの提供が早すぎる場合、システムリセットを発行することによって、水晶発振器が水晶の公称周波数の高調波で実行し始める場合にマイクロプロセッサが動作するのを防ぎます。もう1つの機能は、ロジック入力(外部ウォッチドッグ)またはレジスタビット(内部ウォッチドッグ)からWDTをディセーブルにします。

マイクロプロセッサの内部ウォッチドッグタイマ

この短いアプリケーションノートでは、マイクロプロセッサ(µP) WDTのすべてのバリエーションをカバーすることはできませんが、代わりに、MAXQ2000マイクロコントローラの内部WDTについて検討します。このタイマーは、上述の基本的なカウンタレジスタWDTよりも多少複雑ですが、多くの市販のマイクロコントローラチップに内蔵されているWDTと類似しています。

サービスが提供されない場合、MAXQ2000のWDTはオーバフローし、割込みをトリガし、512の追加システムクロックサイクルをカウントし、自身をリセットします。この割込みは、デバッグ情報を保存する「最後のチャンス」を提供します。このチャンスは、回路開発とトラブルシューティング時に役立つと大部分の設計者が認めるものです。また、デバッグ情報を保存する代わりに、割込みはエラーから回復しウォッチドッグをクリアするために使用することができます。ただし、後者の方法はシステムの信頼性を損なう場合があります。

他の内部WDTと同様に、MAXQ2000のウォッチドッグはソフトウェアによってディセーブルにすることができます。しかし、この能力は諸刃の剣であることに注意してください。暴走コードはウォッチドッグをディセーブルにし暴走し続ける可能性があります。

一部のマイクロプロセッサは各WDTをシステムクロックと別個の内部発振器に接続します。MAXQ2000のWDTのクロックがシステムクロックから派生していますが、メイン発振器にエラーが発生すると、MAXQ2000のクロック回路はバックアップRC発振器に切り替わります。

ウォッチドッグタイマIC

専用の外部WDT ICは、幅広い機能を提供し、多くのメーカーで提供されています。MAX6752など、一部は「ウィンドウ型ウォッチドッグ」機能を備えています。また、MAX6752では、外付けコンデンサを使用してウォッチドッグタイムアウト期間とリセットパルス幅を調整することによって、マイクロプロセッサやアプリケーションの要件に整合させることができます。

MAX6369 WDTのロジック入力端子は、タイマーをディセーブルし、リセットを防ぐことができます。ロジック端子をマイクロプロセッサに接続することは魅力的ですが、そうすると、システムの信頼性を損なうリスクがあります。これは、暴走コードが誤ってウォッチドッグをディセーブルにする可能性があるためです。多くの場合、ウォッチドッグは、マイクロプロセッサがブートしている間、スタートアップ時にディセーブルされる必要があります。MAX6369は、リセットから抜けた後に特別長いウォッチドッグ期間を提供します。通常期間のタイムアウトは、ウォッチドッグが初めてサービスを提供された後に戻ります。この方法は、ウォッチドッグタイマの明示的なディセーブルやリイネーブルよりはるかに高い信頼性を備えています。

外部ウォッチドッグタイマもVCC電源を監視し、この電圧が指定スレッショルドを下回ったときにシステムリセットをアサートすることができます。一部のタイマーは、デバウンスおよびESD保護されたリセットスイッチ入力を備えています。このようなICの電圧モニタは、一般に、一部のマイクロプロセッサに搭載されている内部ブラウンアウト回路よりも全動作温度範囲で精度が高くなります。

結論

表1は、外部および内部WDTの利点と不利点を示しています。外部ウォッチドッグタイマICは、より高価であるため、より高い信頼性が必要な重要システムに使用される必要があります。しかし、WDTのディセーブル入力をマイクロプロセッサに接続(ソフトウェアによるウォッチドッグリセットのディセーブルが可能)する事は、内部ウォッチドッグタイマの信頼性を損う事となり、それ故、マイクロプロセッサ内部のウォッチドッグタイマは、重要性の低いシステムやコスト削減に主として適しています。

表1. ウォッチドッグタイマ比較チャート
  外部WDT 内部WDT
長所
  • 正しく設計された場合、ソフトウェアから誤ってディセーブルすることはできない
  • システムクロックと別個のクロックソース
  • 最小/最大ウォッチドッグタイムアウト期間で利用可能
  • リセット出力は、リセットが必要な別のシステムICに接続可能
  • 1つ以上の電源レイルを監視(一部のマイクロプロセッサの内部ブラウンアウト回路はあまり高精度ではない)
  • タイムアウト期間はコンデンサを使って完全に調整可能
  • コストは基本的にゼロ
  • デバッグ情報を保存するために、リセットする前に割込みをトリガすることができる
  • 使いやすい
  • 多くの場合、双方向リセット端子をリセットが必要な他のシステムICに接続することができる
  • プロセッサが高速から低速またはスリープモードに変化したときに、タイムアウトを変更することができる
  • ウォッチドッグタイムアウト期間は温度であまり変動しない
短所
  • 実装にコストがかかる
  • 温度でタイムアウト期間が大幅に異なる
  • 1本のマイクロプロセッサI/Oラインが必要
  • マイクロプロセッサの省電力機能のため、タイムアウトは高速および低速クロックモードの両方にマッチングするように計算する必要がある
  • ほとんどがソフトウェアによってディセーブル可能(それほど信頼できない)

同様の記事が、「Electronic Products Magazine」の2007年9月号に掲載されています。