同期2進カウンタ:設計、アップ/ダウン動作、エンコーダ応用
同期カウンタとは?
同期カウンタは、すべての出力ビットが同時に状態変化する点で、非同期(リップル)カウンタと異なります。すべてのフリップフロップのクロック入力を同じクロックパルスに結ぶことで、リップルカウンタの特徴であるリップル遅延を回避します。
J-Kフリップフロップ使用時、クロック入力を配線して各デバイスが全く同じクロックエッジを同時に受け取るようにします:

課題はJとK入力の設定です。2進カウントを生む2分の1周波数分割を維持するには、各フリップフロップが適切な瞬間にトグルモード(J=K=1)で動作しなければなりません。単純にすべてのJとK入力をVccに結ぶと、毎クロックパルスで全フリップフロップがトグルし、2進シーケンスが破壊されます:

代わりに、2進シーケンスの予測可能なパターンを利用します:ビットは、すべての下位ビットがハイになる直前にトグルします。このパターンにより、各フリップフロップのトグルを前段出力状態で条件付けできます。

同期アップカウンタ
同期アップカウンタでは、各J-Kフリップフロップはすべての下位出力がハイのときのみトグル可能になります。最初(最下位)フリップフロップは毎クロックパルスでトグルするため、JとKを常時ハイ(Vcc)に結線。2番目フリップフロップは最初の出力がハイのときトグル—ゲート不要。高位フリップフロップでは、ANDゲートで全前段出力の論理積をJとK入力に供給します。

結果は、すべての段が同じクロックエッジで反応するためリップルなしで2進カウントシーケンスを再現する4ビット同期アップカウンタです。
同期ダウンカウンタ
ダウンカウントはトグル条件を反転:ビットはすべての下位ビットがローになる直前に反転。J-KフリップフロップのQ'出力が必要な「ロー」信号を提供するため、各フリップフロップのトグルは下位出力がローのときにイネーブルされます。


選択可能モード付きアップ/ダウンカウンタ
「アップ」と「ダウン」ANDゲートネットワーク間で選択する制御ラインを追加することで、両方向カウント可能な単一カウンタを構築できます。ORゲートが選択されたANDゲート出力を各フリップフロップのJとK入力に供給します。

制御ラインでどちらのANDゲートネットワークをアクティブにするか切り替え:ハイでアップカウント、ローでダウンカウント。非アクティブ部分をグレー表示した例図:


実用応用
アップ/ダウンカウンタはモーション制御に不可欠。ロータリシャフトエンコーダがクロックパルスを生成し、カウンタを駆動して位置を追跡。総変位のみ必要なら単チャネルエンコーダで十分。方向も取得するには、位相差のある2信号を出力するクアドラチャエンコーダを使用。

D型フリップフロップが2エンコーダ信号の位相関係を判別し、カウンタをインクリメントまたはデクリメントに設定。

こうした回路は、ロボティクス、CNC工作機械、可逆機械運動の精密測定を必要とするあらゆるアプリケーションの基盤となっています。
関連ワークシート
- 同期カウンタワークシート
産業技術
- 555タイマーと4027フリップフロップによる3ビットバイナリカウンタ
- J-Kフリップフロップによる非同期4ビットアップカウンタの設計
- カウンタモダラス:現代システム向け最適化アルゴリズム
- リングカウンタとジョンソンカウンタ:設計、動作、実用応用
- デジタルランプ(カウンタ)ADC:動作、利点、限界
- トラッキングADC:アップ/ダウンカウンタによる高速連続信号変換
- 同期モーター:設計、動作原理、応用
- 4ビットカウンタ:0から15までの効率的なバイナリカウント
- Verilog Mod-Nカウンタ:パラメータ化モジュールとテストベンチ
- Verilogグレイカウンタ:4ビットグレイコード生成モジュール
- Python collections.Counter:効率的なカウント、更新、演算操作