Z80 CTC

Z80 CTCはZ80システムに周期的割り込みや一定周期のパルス出力作成機能(ビットレートジェネレータ)や時間計測の機能を付与する、8 bitのカウンタ・タイマを4回路分集積したLSIです。CTCはCounter/Timer Circuitの略とされています。

Z80 CTC
左はSHARPのセカンドソース品でLH0082B。右はTOSHIBA製のTMPZ84C30A-8でCMOS版8 MHzクロックのもの。Zilog流の4桁型番ではZ80 CTCはZ8430という表記になり、右側の東芝のものもそれに準じている。ただしクロック周波数バリエーションが増えてからはクロック周波数を2桁にして末尾に付けて、Z0843004とかZ0843006という表記が使われるようになっている。

カウンタモードでは、CLK/TRG端子に入力されるクロック信号の立ち上がりか立ち下がりの回数を数えます。カウンタの初期値をあらかじめ設定しておき、カウンタの内容をクロック信号が与えられるたびにデクリメントします。カウンタの内容をCPUが読み出すこともでき、カウンタの内容が0になった時に割り込みを発生させることもできます。割り込み以外にもカウンタの内容が0になった時にはZC/TO信号端子にパルスが出力されて、外部回路で利用することができるようになっています。カウンタの内容が0になったら、再び設定されている初期値がカウンタに自動的にロードされます。
カウンタに入力可能なクロック信号のパルス幅は、システムクロック周波数の周期の2倍以上必要とされます。それさえ満足すれば、たとえば周期的信号をクロック信号として入力して、それを分周した周期信号を作成することにも使えます。もちろんクロック信号に与えられたイベントを数えるのにも使えて、その際に別のチャネルを後述のタイマモードでプログラムして一定時間後に割り込みを発生させるようにしておいて、その割り込みタイミングでカウンタを読み出せば、一定時間内のイベント数、つまり周波数を求めることもできます。
また、カウンタの初期値として1を設定して割り込みを許可しておけば、CLK/TRG端子の信号変化によって、ただちに割り込みを発生させられます。Z80 CPUのモード2割り込みはZ80 CTCを含む専用周辺LSIでないと利用するのが面倒です。しかし専用周辺LSIの価格が比較的高かったので、Intel系の8080A用の周辺LSIを使用して、このように割り込みコントローラとしてCTCの空いているチャネルを用いることもありました。
なお、カウンタが0になった時の再初期化は自動的に行われるので、単発でカウンタを使用する場合には割り込みルーチン内でカウンタの再設定を行わなくてはなりません。

タイマモードでは、個別に与えられるクロック信号ではなくてシステムクロックをプリスケーラで分周したものを数えます。プリスケーラは1/16か1/256を選べます。やはりダウンカウント動作で、設定された初期値からプリスケーラ出力ごとにカウンタ内容をデクリメントし、カウンタの内容が0になった時に割り込みを発生させたりZC/TO信号端子にパルス出力を行えます。やはりカウンタ内容の再初期化も自動的に行えます。ただし、カウントを開始するタイミングは、設定直後からというのも選べますが、CLK/TRG端子の信号が変化した直後とすることもできます。そのため、外部信号から一定時間後にZC/TO信号にパルス出力を行うといった使い方もできます。
システムクロックとして、2.5 MHzでなくて2.4576 MHzを用いれば、タイマモードで簡単にシリアル通信のビットレートクロックを発生させることができます。

各チャネルはほぼ同等ですが、チャネル0から3の内のチャネル3だけにパッケージのピン数の都合上かZC/TO端子が省略されています。そのため、チャネル3だけは外部回路のコントロールに使用することができず、割り込み発生専用にしか使えません。

カウンタ・タイマを集積したLSIとしては初期の製品であったため、その便利さを多くの技術者に印象付けた功績はありますが、いささか設計が古く、これ以降に開発された同様のLSIでは16 bit単位のカウンタになっていたり多数のカウンタ・タイマモードをそなえるなどの改良がなされて、後の時代には少々見劣りしました。特に1回路あたり8 bitのカウンタというのが精度的につらく、ちょっとした応用でも複数チャネルを組み合わせて1本のカウンタに見せ掛けねばならないため、チャネル数が4回路となっていても実質2チャネルにしかならなかったりするのが不便でした。

Return to IC Collection