非同期カウンター:動作、タイプ、タイミングのトレードオフ

公開済み 11月 04, 2026

非同期カウンターは、カスケード式のフリップフロップによってクロックパルスをカウントします。これは、外部クロックを受け取るのは第1段のみで、その後の各段は前の出力からトリガーされます。このリップル伝播により設計はシンプルですが、累積遅延(標準74HCシリーズロジックでは通常1段あたり5〜15ns)が発生し、周波数分割や低速イベントカウントには適していますが、すべての出力ビットが同時に更新される必要がある場合には問題があります。以下では、リップルメカニズム、実用的なタイミング制約、そしてこのアーキテクチャがまだ意味のある場所について説明します。

主なポイント:

  • リップル遅延はステージ数に応じて線形にスケールします。74HC73フリップフロップから作られた4ビット非同期カウンタは、最悪ケース伝搬速度が約40nsに達し、約10 MHz未満の安定した動作を制限します。
  • 非同期カウンターは周波数分割に優れており(各段階で入力周波数が半分になります)、高速クロックツリーをすべてのフリップフロップにルーティングする必要はありません。
  • マルチビット遷移中の一時的なグリッチ状態(例:0111→1000)は、沈降後に出力がストロボされない限り、下流ロジックで誤ったトリガーを引き起こすことがあります。
  • 同期カウンタはリップル遅延やグリッチを排除しますが、より多くのルーティングリソースを必要とし、すべての段階にクロックを分配する際により多くの電力を消費します。

リップル伝播の仕組み

最初のフリップフロップはすべての入力クロックエッジで切り替えます。その出力は2つ目のフリップフロップをクロックし、トグルの頻度は半分になります。その出力が第3段をクロックし、という具合です。各段階は前の段階が安定するのを待つため、最終出力ビットは最後に更新されます。このカスケード遅延がシグネチャーリップル効果となります。

実用的な観点からは、オシロスコープでこれが明確にわかります。最低位ビット(LSB)をプローブすると入力クロックを追跡します。4ビットカウンタの最上位ビット(MSB)を探ると、約4つの伝播遅延後に遷移するのがわかります。このずらしたタイミングは、/16クロック分圧器の生成のような用途には問題ありませんが、すべてのビットを並列にサンプリングする回路、例えばマイコンがカウント値を読み取ったり、コンパレータが端子数をチェックしたりするような回路を壊してしまいます。

種類と数 方向性

アップカウンター: 各フリップフロップは前の段階の非反演出力でクロックされるため、カウントは標準的な2進数(0000、0001、0010、...、1111、そして0000にラップ)で増加します。

ダウンカウンター: 各フリップフロップは前段階の補完出力(Q̄)でクロックされ、シーケンス(1111, 1110, 1101, ..., 0000)が逆になります。

選択は、どのフリップフロップ出力を次のクロック入力に接続するかにかかっています。J-KおよびTフリップフロップは、トグルモードが外部ロジックを最小限に必要とするため一般的です。単にJとKを高く結ぶか、Tを高く保つだけです。Dフリップフロップは動作しますが、反回転出力をD入力にフィードバックし、ゲートを加える必要があります。

無視できないタイミングの制約

累積伝搬遅延: 各フリップフロップはクロックから出力への遅延(tp)を加算します。nビットカウンターの場合、最悪のリップル時間はn/t×tpです。74HC73フリップフロップ(5Vで10 ns≈tp)の場合、4ビットカウンタは~40 nsで安定します。8ビットカウンタは80nsを押し出します。もしアプリケーションがカウントを安定する前にサンプリングしているなら、それはゴミと読み取れます。

グリッチ状態: 複数のビットが反り返る遷移(例えば0111→1000)では、中間出力が一時的に不正な状態(0110、0100、0000、1000の連続)を示します。マイクロコントローラのプロジェクトで誤ってトリガーされる割り込みロジックのグリッチを見たことがあります。解決策としては、リップル完了を待つ遅延イネーブル信号で出力をストロボにするか、すべてのビットが同時に変化する同期カウンタに切り替える方法があります。

最大クロック周波数: 入力クロック周期は、下流ロジックのリップル遅延とセットアップ時間の合計を超えなければなりません。4ビットの74HCカウンタの場合、実用的な最大入力周波数は約10〜12 MHzです。それを超えて進めると、メタスタブルやミスカウントが発生します。

Figure 1. Ripple delay accumulation in a 4-bit asynchronous counter

非同期カウンターがまだ意味をなすとき

周波数分割: MSB出力だけを気にして中間ビットを無視すれば、リップル遅延は問題になりません。4ビットカウンタに1 MHzクロックを供給すると、MSBでクリーンな62.5 kHzの方波を供給し、グリッチや同期は不要です。私はこれをクロックプリスケーラー回路でよく使っています。

遅い入力でのイベントカウント: 機械式スイッチクロージャー、センサーパルス、または100kHz以下の信号をカウントしても、タイミング制限に達することはほとんどありません。74HC393デュアル4ビットカウンターは同期同等の機器のごく一部しかコストがかからず、クロック分配のためのPCBスペースを必要としません。

ASIC/FPGAのゲート数が少ない: FPGAは同期設計を好むが、非同期カウンターは超低消費電力や面積制約のあるブロックでフリップフロップを節約できる。

彼らの苦手な点: アドレス生成、ディスプレイ多重化、端末カウント検出など、全カウントを並列に読み込むアプリケーション、または数メガヘルツ以上で動作するアプリケーション。そうした場合、リップル遅延が機能エラーを引き起こすか、出力ラッチやストロボ生成などの外部ロジックを大量に追加せざるを得ず、同期カウンターが単純化されます。

デザインチェックリスト

→ 最悪ケースのリップル遅延を計算します:n × tp。ここでnは段数、tpはフリップフロップのデータシートから取られます。 → 入力クロック周期をリップル遅延≥+ダウンストリームセットアップ時間+マージン(私は20%マージンを使っています)を検証します。 → もしどの論理回路でもカウントをサンプリングする場合は、少なくともリップル時間の遅延を経た出力ストロボを追加するか、同期カウンタを使用します。 → 割り除いの用途では、最終段階をタップし、中間出力は無視します。リップルは問題になりません。 → フリップフロップファミリー(HC、AC、LV)が速度と電圧の要件を満たしているか確認してください。古い74LSはTP≈20ナ秒で、4ビット構成では10 MHzに達しません。 → スコープだけでなく、ロジックアナライザで全カウントシーケンスをテストします。スコープでタイムベースを遅く設定すると、バグは見逃しやすいです。

非同期対同期:本当のトレードオフ

アスペクト 非同期 同期
クロック分布 第一段階に至るまで すべてのビーチサンダルへ
出力タイミング リップル遅延、ビットは順次更新 すべてのビットは同じ辺(クロックスキュー内で)で更新されます
最高速度 n × tp(通常4ビットで<20 MHz)で制限 単一TP+組み合わせ論理に制限(100MHzを超えることあり)
グリッチの記述 マルチビット遷移時に存在する 設計が全期間同期的であれば不存在
ゲートカウント n ビーチサンダル n フリップフロップ+次の状態
パワー(動的) 下位 - トグル段のみが電流を消費します ハイアー - クロックツリーとすべてのフリップフロップは毎サイクルトグル
最適なユースケース 周波数分割器、遅いイベントカウンター、最小限のボードスペース プロセッサバス、高速データパス、任意の並列読み出し

この表は、非同期カウンターが遅いにもかかわらずニッチな役割で持続する理由を示しています。UARTの10 MHzシステムクロックを1 MHzに分割する場合、非同期カウンタは3つのフリップフロップとルーティング混雑ゼロでその役割を果たします。しかし、DRAMリフレッシュ用のアドレスカウンタやCPUが直接読み取るタイマー周辺機器を作る場合、同期型が唯一の実用的な選択肢です。

Figure 2. Comparison of output timing between asynchronous and synchronous 4-bit counters

実用回路ノート

プリセットおよびクリア: ほとんどのカウンタIC(74HC393、74HC4040)は非同期クリア入力を含みます。一部は同期負荷を追加します。非同期クリアを使って非2のべき乗モジュラス(例:10カウンタ)を設定する方法はうまくいきますが、ターミナルカウントをデコードしクリアをパルスするゲートが必要で、クリアがすべての段階が終末状態にリップルする前にクリアが到達するレースコンディションに注意してください。

4ビットを超えてカスケード: 4ビットカウンタICは、MSBのキャリー出力を次のパッケージのクロック入力に供給することでチェーン化できます。4ビットステージが増えるごとにさらに40nsの遅延が加わるため、2基の74HC393から作られた8ビットカウンタは約80nsのリップルを持ち、現実的には最大5MHzの入力周波数を達成します。

マイクロコントローラとのインターフェース: 非同期カウンタをマイコンで読み取る必要がある場合は、MSBでトリガーされる入力キャプチャタイマー(1ビットのみを気にする)を使うか、74HC373透過ラッチで出力をラッチし、リップルが終わるまでラッチの有効を低く保ちます。「ランダム」カウントエラーをデバッグするのに何時間も費やしましたが、実はMCUのサンプリングが波紋の途中だったのです。

業界の進むべき方向

非同期カウンターはコストに敏感な設計、特にLEDドライバー、家電タイマー、自動車用ダスボード回路に依然として登場しますが、同期アーキテクチャはマイクロプロセッサやFPGAを含むものでは支配的です。74HC590(出力レジスタ付き8ビットバイナリカウンタ)と74HC4040(12ビットリップルカウンタ)は現在も生産されており、需要はまだありますが、新しいICファミリー(TIのSN74AUPシリーズなど)は同期トポロジーに重点を置いています。なぜなら、モバイルやIoTアプリケーションはゲート数よりも低遅延を重視しているからです。

デジタル設計を教えているなら、非同期カウンターを理解する価値があります。なぜなら、伝搬遅延やメタ安定性を具体的に明らかにしてくれるからです。これらは完全同期システムでも重要な概念です。製品を設計するなら、制限が気にならない場所、例えば周波数分割、孤立イベントカウント、あるいはリップル遅延を許容できる(あるいは観測しない)場所でのみ使用してください。それ以外の点では、同期カウンターのクリーンタイミングはフリップフロップクロックの追加負荷に見合う価値があります。