3.6 カウンタとシフトレジスタ 

順序回路の中でも良く使われるものにカウンタがある.
カウンタとは入力が入るごとに出力の値が+1または-1するもので,+1するものをアップカウンタ,
-1するものをダウンカウンタと呼んでいる.
4ビットの16進(24進)カウンタなら,"0000", "0001", "0010" ... "1111", "0000",…というように
出力が変化する.カウンターは単純な機能であるが,マイクロプロセッサのプログラムカウンタや,
パソコンのメインメモリのリフレッシュカウンターなど,色々な所に使用されている.
最も簡単な非同期式16進カウンタの例とそのタイムチャートを図3.11に示す.
T-FFの入力と出力をカスケード接続することにより,使用するT−FFの個数nによって任意の2n進カウンタを
作成することができる.ここで,T-FFは入力の立下りを検出して状態が変化するものを用い,
4個のT-FFを接続することによって,タイムチャートのようにy3を上位ビット,
y0を下位ビットとする16進アップカウンタを作成している.
入力の立ち上りを検出して状態が変化するT-FFを変わりに用いた場合は,16進ダウンカウンタとなる.

image329 図3.11 非同期式16進カウンタ
ここで示した非同期式カウンタの入力と出力との関係を詳しく見てみると,フリップフロップがカスケード接続 されているために入力の変化が出力のy0からy3まで順次伝播され,信号の遅れが生じることがわかる. フリップフロップの数が多いほど伝播遅延時間が長くなってしまうので,高速動作をさせる場合には注意が必要となる. 同期式回路においては同期式カウンタの方が利用しやすい.ここでは示さないが,同期式カウンタはクロック信号の 立ち上り,または立ち下りを検出してアップまたはダウンカウントを行う回路である.  データを一時的に記憶しておく回路のことをレジスタと呼んでおり,例えば4ビットのデータをひとまとまりとして 記憶するものを4ビットレジスタと呼ぶ.レジスタには通常R-S FFやD-FFを用いることが多い. シフトレジスタとは,1ビットずつのデータが記憶されたフリップフロップが必要ビット数並んでいて, 互いに隣り合ったフリップフロップで一定の向きに同時に1ビットずつそのデータが移動するようなレジスタである. D-FFを用いた4ビットシフトレジスタの例を図3.12に示す.D-FFがカスケード接続されており, クロック信号の立ち上がりにより前段の出力が次のD-FFの入力から取り込まれ,その結果D-FFの内容が互いに 1ビットずつ移動することになる.
image311 図3.12 4ビットシフトレジスタ