カウンタ (電子回路)

カウンタ (: counter)とは、クロックパルスを数えることにより数値の処理を行うための論理回路デジタル回路)である。カウンタにより計数された2進数、あるいは2進化10進数を、デコーダを通して7セグメントLEDなどで表示される数字に変換することにより、人間が認識できる情報となる。また、情報をエンコーダにより2進数などに変換することで、カウンタによる計数処理を行うことができる。

水晶振動子を用いた発振回路によって発生された非常に高い周波数(例えば215=32,768Hz)の電気信号を、低い周波数(例えば1Hz)の信号に変換するためにも用いられる。このための回路を分周器(プリスケーラ)と呼ぶ。分周器は1926年日本人古賀逸策によって発明された。

カウンタの形式

必要とする出力・対雑音特性・速度などに応じて各種のカウンタが使用される。

各ビットの重み付けがあり変化の周期が違うものをウェイティング・カウンタ (weighting counter) と呼び、バイナリ・カウンタ、グレイ・コード・カウンタはこれに含まれる。対して、各ビットに重み付けがないものをノンウェイティング・カウンタ (nonweighting counter) と呼び、リング・カウンタ、ジョンソン・カウンタ、ワンホット・ステート・カウンタはこれに含まれる。線形帰還シフトレジスタ (Linear feedback Shift Register) と呼ばれ、任意のビット列をクロック・パルスごとに隣りのフリップフロップへ移動していく機能を持つレジスタがあり、ノンウェイティング・カウンタにはこれがよく用いられる。

また、ビット列の組み合わせを全て使用するものをフィルド・コード・カウンタ (filled code counter) と呼ぶ。ビット列を全て使用するため、大きな数のカウントに適するが、デコーダは複雑になる。バイナリ・カウンタ、グレイ・コード・カウンタ、2ビットのジョンソン・カウンタはこれに含まれる。対して、ビット列の組み合わせを制限したものをアンフィルド・コード・カウンタ (unfilled code counter) と呼ぶ。使用していない組み合わせになった場合の回復回路が必要だが、デコード回路が小さく高速化が可能である。リニア・フィードバック・シフト・レジスタ、リング・カウンタ、3ビット以上のジョンソン・カウンタ、ワンホット・ステート・カウンタはこれに含まれる。

バイナリ・カウンタ

D型フリップフロップによる4ビット同期型カウンタ

バイナリ・カウンタ (binary counter) とは、2進数を出力するカウンタである。D型フリップフロップ出力をD入力および次段のCLK入力に接続し、各段からのQ出力を設けた回路である。このような接続により、初段に入力されたクロックパルスの立ち上がりが1個増えるごとに、Q出力の0と1が反転を繰り返すため、初段からの出力は入力されたクロックパルスの数を2進数表示した場合の最下位の桁、2段目は下から2番目の桁…というように、2進数による出力を行うことができる。

n段のバイナリ・カウンタは、クロックの周波数を1/2nに変換すると見ることもできる。2進化10進数でカウンタ動作を行うには、各桁の出力が1010(10進数の『10』)に達した場合に0000にリセットする回路を設ける。同様に、数値を検出してリセットすることにより、クロックパルスの周波数を 1/(任意の数) に変換できる。

4段バイナリ・カウンタの動作

  0123456789ABCDEF
Q10101010101010101
Q20011001100110011
Q30000111100001111
Q40000000011111111

グレイ・コード・カウンタ

グレイ・コード・カウンタ (Gray code counter) とは、同時に1つのビットしか変化しないよう、数値にグレイ・コードを割り当て、デコード時のスタティック・ハザード(短時間のスパイク状のノイズ)を防止したものである。

4段グレイ・コード・カウンタの動作

  0123456789ABCDEF
Q10110011001100110
Q20011110000111100
Q30000111111110000
Q40000000011111111

リング・カウンタ

リング・カウンタ (ring counter) とは、最終段の出力を1段目の入力に接続したもので、特定の初期値をフリップフロップにロードしておき、そのビット列をクロック・パルスごとに隣りのフリップフロップへ移動して行くもの。シフトレジスタに似ているが、すべてのビット列をシフトし終えた(以下の例では太字の列)次のステップで初期値にリセットされる点が異なる。

初期値を0011とした4ビットのリング・カウンタの動作(Q1が最上位ビット、Q4が最下位ビットである)

  01234
Q110011
Q211001
Q301100
Q400110

ジョンソン・カウンタ

ジョンソン・カウンタ (Johnson counter) とは、2つのビットをデコードするだけで、任意の信号を取り出せるようにコードを割り当てたもの。"1"と"0"の期間が同じ対称形のものと、不均一な非対称型とがあるが、いずれもスタティック・ハザードはない。

4ビットの対称形ジョンソン・カウンタの動作

  01234567
Q101111000
Q200111100
Q300011110
Q400001111

ワンホット・ステート・カウンタ

ワンホット・ステート・カウンタ (one-hot state counter) とは、計数に対応するフリップフロップのみを1とし、他は0としてデコードを不要としたものである。数える数だけフリップフロップが必要なためカウンタ本体の回路規模は最も大きくなる、外来ノイズなどによって動作が化けたなどの場合の検出は複雑である、といった点が不利である。一方、デコーダが不要ないし極く単純、次の状態を決定する論理をそのまま埋め込むことができる、以上によりカウンタ本体も総合的にも高速、といった点が有利である。

4ビットのワンホット・ステート・カウンタの動作

  0123
Q11000
Q20100
Q30010
Q40001

各種機能

次のような機能を持つカウンタもある。

アップ・ダウン機能
通常の、数値を順に加算して計数する機能に加えて、数値を減算して計数したり、またこれらの機能を切り替えできる機能。
プリセット機能
0以外の初期値をあらかじめセットしておき、その値から計数を行う機能。

関連項目