リングカウンタとジョンソンカウンタ:設計、動作、実用応用
リングカウンタは、最後の段の出力が最初の段にフィードバックされる特殊なシフトレジスタです。クロックパルスを印加すると、データパターンが無限に循環します。
例えば、4段のリングカウンタではパターンが4クロックパルスごとに繰り返されますが、レジスタにはまずデータワードをロードする必要があります。単一の「1」(例:1000)をロードするのが最も一般的で、視覚化しやすいパターンを提供します。

1000をロードした後、各段の波形は1クロックサイクルの遅延を除いて同一です:

この構成は4分周カウンタとして機能し、クロック入力と任意の出力を比較すると4:1の周波数比が見られます。
任意の分周係数への対応
10分周カウンタを実現するには10段が必要です。単一の「1」が10クロックパルスごとに循環します。

初期化の必要性
リングカウンタは電源投入時に初期化が必須です。各フリップフロップの初期状態が未定義だからです。一度初期化すればパターンは持続すべきですが、ノイズによって時間経過とともに状態が破損し、シーケンスが壊れる可能性があります。
従来の同期バイナリカウンタは自己修正機能を持つため、長期運用ではより信頼性が高いことが多いです。

従来のカウンタとの比較
バイナリカウンタは2段とデコーダゲートを使用しますが、リングカウンタは自己デコーディング機能を持つものの、より多くの段を必要とします。デコード出力が必要で、ほとんどのロジックが単一シフトレジスタパッケージに収まる場合、リングカウンタが魅力的ですが、そうでなければシンプルなバイナリカウンタが好ましいです。

同期バイナリカウンタからのデコード波形はリングカウンタのものと一致します:(QA QB)が00, 01, 10, 11を循環します。
ジョンソンカウンタ
スイッチテールリングカウンタとも呼ばれるジョンソンカウンタは、最後の段の補数出力(Q′)を最初の段にフィードバックすることで、リングカウンタのいくつかの制約を克服します。これにより、所与の分周比に対して必要な段数を半分にできます。
例えば、4段ジョンソンカウンタは入力クロックを8分周しますが、4段リングカウンタは4分周のみです。
ジョンソンカウンタは通常、電源投入時に全ゼロでクリアされ、既知の状態を確立します。

単一の「1」を導入すると、カウンタは4つのゼロに続いて4つのワンのシーケンスを進み、8状態のサイクルを生成します。

多相出力の生成
4段ジョンソンカウンタは、4つの重なり合う50%デューティサイクルの位相を生成します。3段ジョンソンカウンタを360 Hzクロックで駆動すると、60 Hzで120°位相差の3つの矩形波が得られます。
状態のデコード
ジョンソンカウンタの各状態はシンプルな2入力ゲートでデコードできます。4段カウンタの場合、8つの状態を8つの2入力ANDゲートでデコードします。

カウンタ長に関わらず、2入力デコーダゲートのみが必要です。ANDゲートの入力を反転させるとロジックを簡素化できますが、以下の図はCD4022Bデータシートに忠実に従っています。

8つのデコード出力(G0〜G7)はそれぞれ、8クロックサイクル内で1クロック期間だけアクティブハイになります。例えば、G0はQAとQDの両方がローのときハイになります。

非許容状態とエラー訂正
4段シフトレジスタは16のバイナリ状態を表現できますが、ジョンソンカウンタではそのうち8つのみが有効です。残り8つは非許容状態です。CD4022Bには、2つのNORゲートで構成される非許容状態検出器が含まれます。
実際には、電源投入時にカウンタをリセットして非許容状態への移行を防ぎます。もし非許容状態(例:010)に陥った場合、NORゲートが次の入力をゼロに強制し、許容状態(例:000)に変換します。
数クロック後には、いかなる非許容状態も訂正されます。しかし、クリティカルなアプリケーションでは、常に電源投入時にカウンタをリセットしてください。
ジョンソンカウンタデバイス
デコード出力付きのICが4000シリーズと74HCファミリで提供されています。CD4017は10デコード出力(モジュロ10)、CD4022は8デコード出力(モジュロ8)を提供。74HC版は低電圧(2V〜6V)動作でより高い出力ドライブ能力を持ちます。
- CD4017 ジョンソンカウンタ、10デコード出力(CD4022 ジョンソンカウンタ、8デコード出力)
- 74HC4017 ジョンソンカウンタ、10デコード出力

実用的なアプリケーション
図1は、74HC4017が10個のLEDを駆動し、リング状に各5分の1秒ごとに1つずつ点灯させる例です。74HC4017の4 mA出力能力(VOH = 4.6 V at 4 mA)はLED点灯に十分ですが、一般的なLED電流は10〜20 mAです。

555タイマーがクロックパルスを提供し、555がカウンタのクロック入力を確実に駆動できない場合は追加バッファを挿入できます。
ジョンソンカウンタは3相矩形波の生成にも利用できます。P1 = QA, P2 = QC, P3 = QB′を選択すると、出力は120°ずつ位相がずれます。ローパスフィルタと増幅を通せば、電源やモータ駆動用の3相正弦波に変換可能です。

3相ステッピングモータの場合、重なり合う出力を非重なり波形(P0, P1, P2)にデコードし、ULN2003やディスクリートダーリントンペアなどのドライバICに適した形にします。

単一のCD4017を使用し、第3カウント後にリセットすることで、各状態が次のリセット前にフルクロック期間持続するようにできます。

関連ワークシート
- カウンタワークシート
- シフトレジスタワークシート
産業技術
- 555タイマーと4027フリップフロップによる3ビットバイナリカウンタ
- J-Kフリップフロップによる非同期4ビットアップカウンタの設計
- カウンタモダラス:現代システム向け最適化アルゴリズム
- リテイニングリング(止め輪)とは:設計・種類・材質・用途
- リングシャンクネイル(環状釘)の特徴と用途:抜けにくい釘で構造を強固に
- 液封式真空ポンプの仕組みと重要性:産業用途での長寿命技術
- ToughMet® 3AT リング AT (C72900) - 高強度、耐食性銅合金
- 4ビットカウンタ:0から15までの効率的なバイナリカウント
- Verilog Mod-Nカウンタ:パラメータ化モジュールとテストベンチ
- Verilogグレイカウンタ:4ビットグレイコード生成モジュール
- Python collections.Counter:効率的なカウント、更新、演算操作