出力信号の書き込みが一定時間以上停止したら、リセットするというのを、
いろいろ事情があってハードウェア的に実現したものがあって、
そこで使われていたのが74123(実際には74VHC123とかだけど)というロジックICである。
単安定マルチバイブレータとか昔授業で聞いたかなぁという感じだが。
シンプルに言えば、A入力の立ち下がりまたはB入力の立ち上がりをトリガとして、外部の部品定数で決まる時間のパルスが出力されるというもの。
ポイントとしては、パルスが出ている間にトリガを入れると、パルス出力が延長されるので、
トリガを入れ続けている間はHi出力が続くが、一定時間以上途切れるとLo出力になると、
これを出力ラッチのリセット信号として使うことで、
一定時間以上、更新が途絶えたら出力信号をリセットするという動作になる。
出力時にトリガを入れてリセットが解除すれば、ラッチに格納可能になる。
で、これをマイコンのウォッチドッグタイマーとして使ったものもあった。
普通はマイコンの内部で持っているウォッチドッグタイマーを使うと思うが、
これもまたいろいろ事情があって外部に持たせているようである。
ただ、トリガを入力するマイコン自身のリセットに74123を使う場合、
いろいろ考えたんだが、74123を2回路使わないと実現できない気がする。
74123は2回路入りのICなので、IC1個で実現できるとも言えるのだが。
先ほどの出力回路同様に74123の出力が途切れた状態をリセット、出力が開始されればリセット解除として使う場合、
電源の立ち上がりで最初のトリガを入力するような細工はできるので、
電源立ち上がりでリセット解除というのは実現できるのだが、
その後、トリガが途絶えてリセットを発生させるところまでは問題ない。
問題は、その後にリセットを解除させることができないのである。
トリガを入力するマイコンは停止しているし、他の信号もなかなかない。
で、この逆に74123の出力が出ている状態をリセットとして使うわけである。
トリガ信号の長短によらず、一定時間のパルスを出力するという機能を74123で実現することは多いらしい。
ある製品の回路図を見たら、この目的でリセット回路周りに74123が置かれていた。
1個目の74123でトリガが途絶えたら立ち下がりとなる信号を生成する。
そして、2個目の74123ではその立ち下がりをトリガとしてパルス出力を行い、
この信号をマイコンのリセット信号とすれば、一定時間後にはリセットが解除される。
少し違うのだがマイコンを含むシステム全体をリセットするために、
リセットICのマニュアルリセット信号をマイコンから入力する方法を使っていて、
リセットが発生するとマイコンがリセットされるため、マニュアルリセットは初期状態に戻り、
リセットICは一定時間経過後にシステム全体のリセットを解除する。
こういう仕組みに比べると複雑だなと直感的に思ったのだが、こういう理屈で説明できると思った。
74123は無出力の初期状態とパルス出力状態の2状態がある。
ウォッチドッグタイマーの目的で使う場合、無出力状態をリセットに割り付けることとなる。
リセット入力や時間経過で無出力状態に戻すことは出来るのだが、
パルス出力状態に戻すには誰かがパルスを入れなければならない。
この逆にパルス出力状態をリセット、初期状態をリセット解除とすれば、
リセット発生後、時間経過あるいは74123のリセットによりリセット解除される。
リセットICのマニュアルリセット信号の使い方もこれに近くて、
マイコンのリセットや時間経過でリセット解除状態に戻れるから、IC1個で実現できているようだ。
どちらかというとトリガを入れるとリセット発生、時間経過でリセット解除という使い方が多いのかなと思った。
自分を含むシステムの異常を検出して、リセットを発生させるのはよいが、
誰かに解除してもらわないといけないので、それを74123でやると。
再度トリガを入れるとパルス出力が延長されるという性質から、
冒頭に書いたようなトリガが途絶えたらリセットという使い方も想定されているが、
それを自分自身のリセットに応用する場合はもう1つ必要だなと。