リセット機能付きカウンタ

この記事はセルオートマトンによるCPU作成連載記事の11本目です。(2022/12/22)

以前に単純なカウンタを作成しました。今回は値の設定が可能なカウンタです。クロックが来るごとにカウントアップした値を出力しますが、SETボタンが押されているときは左からの入力値を出力します。SETボタンが解除されたらその時点の値からカウントアップを再開します。

SETボタンがOff状態ではこれまでのカウンタ回路と同じ動きです。SETボタンがOnになると、左側の入力と右側のクロック入力の両方に作用します。左側では、SETボタンがOnのときには自己保持回路としてのループバックを切断して、左からの入力を受け入れるようになります。右側では、SETボタンがOnのときにはクロックがすべての桁に届くように切り替わります。

この回路はデバッグ作業に便利なので作成しました。CPUの中でもプログラムカウンタで利用します。

CPUには実行中の命令番地を保存しているレジスタがあります。命令を実行するごとにこのレジスタの値をカウントアップし、その値のメモリ番地に保存されている命令コードをメモリから読み込み、次の命令を実行するというサイクルです。このレジスタをプログラムカウンタといいます。クロックが来るごとにカウントアップすればよいので、このカウンタをそのままプログラムカウンタとして利用できます。CPUはループや条件分岐のためにジャンプすることがあります。ジャンプするときにはプログラムカウンタを任意の値に書き換えることが必要です。そこでこのリセット機能が役に立ちます。

連載目次に戻る