カウンタ|信号や事象の回数を数える計数回路

カウンタ

カウンタ(counter)とは、クロックなどのパルス信号が入力された回数を計数し、その結果を2進数などの符号として出力するデジタル回路である。フリップフロップを縦続接続した順序回路の一種であり、論理回路の中でも最も基本的かつ応用範囲の広い機能ブロックに位置付けられる。周波数の分周、時間計測、イベント数の記録、ステートマシンの状態管理など用途は多岐にわたり、単体のロジックICとして供給されるほか、マイコンのタイマ機能やFPGA内部の論理としても大量に実装されている。フリップフロップをn段接続すれば2n通りの状態を計数でき、例えば4段構成なら0から15までの16進カウンタが構成される。

計数の原理とフリップフロップ

カウンタの基礎となるのは、クロック入力のたびに出力が反転するトグル動作である。JKフリップフロップのJ・K両入力を1に固定するか、Dフリップフロップの反転出力を自身のD入力へ帰還させると、クロック2回で出力が1周期変化する。すなわち1段のフリップフロップは入力周波数を1/2に分周する。この段を4つ重ねれば1/16分周となり、同時に各段の出力Q0~Q3が4ビットの2進数として計数値を表す。デジタル回路における計数と分周が本質的に同じ動作である点は、カウンタを理解するうえでの要点といえる。水晶振動子の32.768kHz出力を15段の2進カウンタで分周すると正確に1Hzが得られるため、この構成は腕時計や時計用ICで広く採用されてきた。

非同期式と同期式

構成方法により、カウンタは非同期式(リプルカウンタ)と同期式に大別される。非同期式は前段の出力を次段のクロックとして用いる単純な構造であり、回路規模が小さい。ただし各段の伝搬遅延が累積するため、段数が増えるほど出力が確定するまでの時間が延び、遅延中に一瞬だけ誤った符号(ひげ状のグリッチ)が現れる欠点を持つ。同期式は全段に共通のクロックを供給し、各段の反転可否をゲート回路で制御する方式で、全ビットが同時に更新されるため高速動作に適する。両者の特徴を以下に整理する。

項目 非同期式(リプル) 同期式
クロック供給 前段出力を次段へ接続 全段共通
遅延 段数分だけ累積 1段分のみ
回路規模 小さい 制御ゲート分だけ大きい
代表IC 74HC393、CD4040 74HC161、74HC163

計数方式による種類

計数の進み方に着目すると、加算するアップカウンタ、減算するダウンカウンタ、切り替え可能なアップダウンカウンタに分類される。10進1桁を4ビットで表すBCDカウンタ(10進カウンタ)は表示器との親和性が高く、プリセット機能付きアップダウンカウンタの74HC192は生産数量表示などの定番として長く使われてきた。シフトレジスタの終端を先頭へ帰還させたリングカウンタや、反転帰還を用いるジョンソンカウンタも実務上は重要である。ジョンソンカウンタは2n段で2n状態を巡回し、隣接状態間で変化するビットが常に1つであるためグリッチが出にくい。デコード出力を10本備えたCD4017はLEDの順次点灯やシーケンス制御に多用され、1970年代のCMOS4000シリーズ登場以来のロングセラーとなっている。

マイコン・計測機器での役割

現代の組み込みシステムでは、カウンタは単体ICよりもマイコン内蔵のタイマ・カウンタモジュールとして使われる場面が圧倒的に多い。ソースクロックをプリスケーラで分周して計数し、比較一致でPWM波形や周期割込みを生成する仕組みは、モータ制御からOSのティック生成まであらゆる用途の土台となる。ロータリエンコーダの2相信号を計数する専用モードを備えた製品も一般的で、UARTやSPIといった通信周辺回路(USICのような統合モジュールを含む)でもボーレート生成にカウンタが内蔵されている。計測分野では周波数カウンタがその代表であり、1秒のゲート時間内に入力パルスを計数すれば分解能1Hzで周波数を直読できる。GHz帯の測定ではプリスケーラで1/64などに前置分周してから計数する構成が普通である。

設計・実務上の注意点

汎用ロジックでカウンタを組む場合、まず問題になるのが動作速度と消費電力の両立であり、CMOS標準ロジックの74HCシリーズなら電源5Vで数十MHz程度までの計数が目安となる。それ以上の周波数では74AC系や専用プリスケーラICを選定するのが実務的な判断である。押しボタンでカウントする装置では接点のチャタリングにより1回の操作で数回計数してしまう誤動作が頻発するため、10ms前後の時定数を持つフィルタやシュミットトリガによる波形整形が事実上必須となる。FPGAやASICの論理設計では、非同期リプル構成はタイミング解析を困難にするため原則として同期式で記述し、電源投入直後の不定状態を避けるリセット回路を必ず設ける。桁数の大きいカウンタを複数の非同期クロックドメインへ渡す場合には、1クロックで1ビットしか変化しないグレイコード化が定石である。部品調達の面では、単体カウンタICは1個数十円と安価だが、点数が増えるならば小規模マイコンやCPLDに置き換えたほうが基板面積と総コストを抑えられるケースが多い。

コメント(β版)