図1:リングカウンター
リングカウンターは特別な種類のシフトレジスタで、最後のフリップフロップからの出力が最初に送り返される閉ループ形式で設計されています。このループされた配置は、最終的なフリップフロップの後にデータフローが停止する標準シフトレジスタとは一線を画すものです。リングカウンターの操作は、フリップフロップのセットを中心に展開します。カウンターが直接保持できる状態の数は、回路で使用されるフリップフロップの数によって異なります。たとえば、4ビットリングカウンターには4つのフリップフロップが含まれています。実際には、各フリップフロップは特定のシーケンスに従い、リングカウンターがデジタルシステムでのタイミングやシーケンスなどの重要なタスクを処理できるようにします。
典型的なリングカウンターでは、クロックパルス(CLK)がすべてのフリップフロップの動作を同時に制御し、同期システムにします。各フリップフロップには、他の入力よりも優先される2つの特別な入力(Preset(PR)とClear(CLR))もあります。プリセット入力が低信号を受信すると、フリップフロップの出力を高くします。同様に、クリア入力が低信号を受信すると、フリップフロップの出力を低くリセットします。これらのプリセットで明確なコマンドは、出力が安定しており、他の入力またはクロック信号によって影響を受けないようにします。
図2:8ビットリングカウンター
8ビットリングカウンターは、連続ループに配置された8つのDタイプのフリップフロップで構成されるデジタル回路です。8番目のフリップフロップからの出力は、最初の入力に戻され、壊れていないサイクルを作成します。この閉ループ設計により、カウンターは一連の異なる状態を踏むことができ、各状態はフリップフロップの1つに対応しています。8ビット構成では、合計8つの一意の状態を処理できます。これにより、小さな構成と比較してカウンターの複雑さが増加します。
8ビットリングカウンターの操作は、最初のフリップフロップをアクティブな状態に設定し、残りのフリップフロップが非アクティブであることから始まります。その後、クロック信号がすべてのフリップフロップに均一に適用され、回路全体で状態遷移が同時に発生するようにします。クロックがパルスすると、アクティブな状態は、予測可能なサイクルで1つのフリップフロップから次のフロップに移行します。このシーケンシャルな切り替えは、最後のフリップフロップが出力を最初に戻し、ループを完成させるまで続きます。
図3:4ビットリングカウンター
4ビットリングカウンターを操作するには、通常、「0001」の開始状態で初期化されます。このセットアップでは、最初のフリップフロップ(FF0)が出力「1」に設定され、他の3つのフリップフロップ(FF1、FF2、およびFF3)は「0」にクリアされます。この初期構成により、1つのフリップフロップのみが「1」状態を保持し、各クロックサイクルで残りのフリップフロップを循環することが保証されます。
クロックがパルスすると、「1」がFF0からFF1、FF2、FF3にシフトし、最終的にFF0に戻り、繰り返しループを作成します。この進行は、各フリップフロップが交代で「1」状態を保持し、他のものは「0」のままであることを順番に続けます。状態の変化のパターンは、リングカウンターの基本的な動作を形成し、4つのフリップフロップすべてを循環する際に予測可能なシーケンスを確保します。
リングカウンターの動作をよりよく理解するために、XilinxなどのプラットフォームでVerilog HDLなどのツールを使用した波形シミュレーションが役立ちます。これらのシミュレーションは、カウンターの状態遷移のグラフィカルな表現を生成し、各クロックパルスで「1」が1つのフリップフロップから次のものにどのように移動するかを見ることができます。たとえば、あるクロックサイクル中に、「1」はFF0からFF1にシフトし、次のサイクルではFF2に移動し、FF3に達した後にFF0に戻るまで続きます。これらの視覚ツールは、シーケンシャルシフトの監視だけでなく、設計のタイミングと遷移の精度を確認するのにも役立ちます。リングカウンターがどのように機能するかについての明確なビューを提供します。これは、デバイスが実際のアプリケーションで正しく機能することを確認するのに適しています。
Truth Tableは、リングカウンターの入力状態と出力状態をマッピングするために使用される深刻なツールであり、カウンターがデジタル回路でどのように動作するかを明確に概説します。4ビットリングカウンターの場合、テーブルは、繰り返しサイクルで「1」状態が各フリップフロップ出力(Q0、Q1、Q2、Q3)をどのように移動するかを示しています。オーバーライド入力(ORI)やクロックパルス(CLK)などの入力もリストされており、それらが状態遷移にどのように影響するかを示します。このテーブルは、カウンターの循環動作をキャプチャします。ここでは、「1」が1つのフリップフロップから次のフロップに進み、最終的には出発点に戻ります。
各クロックサイクルで、「1」は1つの出力から次の出力に移行し、Q0からQ1、Q1、Q2、Q2に移動し、最終的にQ0に戻ります。このシーケンシャルな動きは、リングがどのように機能するかの本質であり、繰り返される予測可能なシーケンスに依存するシステムのニーズを直接サポートします。デジタルウォッチ、ローテーションセンサー、位置エンコーダーなどのデバイスはすべて、精度とタイミングが使用されるこの循環操作の恩恵を受けます。
図4:リングカウンター用のVerilog HDLプログラム
次のVerilog HDLプログラムは、モジュラーアプローチを使用してリングカウンターの動作をモデル化するように設計されています。コード内の各モジュールは、リングカウンターのフリップフロップに対応し、1つのモジュールからの出力が次の入力に直接フィードします。この接続チェーンは、すべてのフリップフロップにわたって状態遷移を同期させる上昇エッジクロックパルスによって制御され、システムが調整された方法で動作するようにします。
リングカウンターには、それぞれが独自の動作特性を備えた2つの主要なタイプがあります。ストレートリングカウンターとツイストリングカウンターです。どちらも、デジタルシステムのニーズに応じて異なる目的を果たします。
図5:ストレートリングカウンター(1ホットカウンター)
しばしば「ワンホット」カウンターと呼ばれるストレートリングカウンターは、一連のフリップフロップをループ内のシングル「1」を渡すことで動作します。各クロックパルスを使用すると、「1」は次のフリップフロップに移動し、他のすべてのフリップフロップは「0」に残ります。このシンプルで周期的な設計は、基本的なシーケンスジェネレーターやシフトレジスタなど、一度に1つのアクティブ状態のみを必要とするアプリケーションに最適です。ストレートリングカウンターの簡単な性質により、単純な繰り返しパターンが必要なシステムでの使いやすさと信頼性が保証されます。
図6:ツイストリングカウンター(ジョンソンカウンター)
ジョンソンカウンターとしても知られるツイストリングカウンターは、基本設計に大幅な変更を加えます。このバージョンでは、最後のフリップフロップの出力は、最初のフリップフロップの入力に戻される前に反転されます。この反転は、一連のゼロが続いて一連のゼロが続き、ストレートリングカウンターと比較して異なる状態の数を効果的に2倍にするシーケンスを作成します。その結果、ジョンソンカウンターはより複雑なタスクを処理でき、デジタルポジションエンコーダーやより高度なシーケンス操作など、より広範な状態を必要とするアプリケーションに適した選択肢になります。
リングカウンターとジョンソンカウンターの主な違いは、フィードバックループの処理方法にあります。これは、状態数と各カウンターの全体的な動作に影響します。
リングカウンター:リングカウンターでは、最後のフリップフロップからの出力が、変更なしで最初のフリップフロップの入力に直接戻されます。この直接ループのため、状態の総数はカウンター内のフリップフロップの数に等しくなります。たとえば、4つのフリップフロップがある場合、カウンターは4つの状態を循環します。各フリップフロップは、1つのクロックサイクルに対して高い( '1')を保持し、残りの時間は低い( '0')滞在し、シンプルで繰り返される状態シーケンスを作成します。
ジョンソンカウンター:一方、ジョンソンカウンターは、最後のフリップフロップの出力から最初の入力に戻る逆フィードバックを導入します。この反転により、カウンターはリングカウンターよりも多くの状態を生成することができ、数をダーにします。各フリップフロップは2つの段階を経て、最初に、反対側の状態に切り替える前に、高( '1')、次に低( '0')を保持します。これは、4フリップフロップのジョンソンカウンターが8つの州を循環することを意味します。さらに、この設計により出力周波数が減少し、出力周波数は入力クロック信号の半分です。
リングカウンターには、デジタル回路設計における適合性に影響を与える明確な利点と欠点があります。
シンプルなデザイン: リングカウンターの主な強度の1つは、その簡単な構造です。他のカウンターとは異なり、デコーダーなどの追加コンポーネントは必要ありません。このシンプルさにより、特に複雑なハードウェアなしで基本的なエンコードまたはデコードを必要とするシステムでは、実装がより簡単で費用対効果が高くなります。
コンポーネントの少ない: リングカウンターのフィードバックループ構造により、他のカウンタータイプと比較して、コンポーネントが少なくなると機能できます。この部品の削減は、コストを削減するだけでなく、信頼性を高めます。コンポーネントが少ないとハードウェア障害のリスクが少ないためです。
限られた数の州: リングカウンターの主要な制限は、状態の数がフリップフロップの数に直接結びついていることです。より多くの状態が必要な場合は、さらに多くの状態を要求するアプリケーションでは、さらにフリップフロップを追加する必要があります。
自己開始機能はありません: 通常、リングカウンターは任意の状態から開始できません。動作を開始するには特定のプリセット条件が必要です。これは、柔軟性と迅速な起動が必要なシステムでは不利な点となります。これは、カウンターが正しく初期化されるようにするために、追加のステップまたはコンポーネントが必要になる場合があることを意味します。
リングカウンターは、シンプルで効果的な循環操作のおかげで、さまざまなデジタルシステムで重要な役割を果たします。制御されたシーケンスで固定された数の状態を移動する能力により、さまざまなアプリケーションで非常に有用になります。
図7:周波数カウントとデジタル時計
リングカウンターは、周波数カウンターやデジタルクロックでよく使用されます。これは、正確さと信頼性を持つセット数の状態を循環できるためです。これにより、時間または頻度の正確な追跡が必要なタスクに最適になり、安定した予測可能な操作が確保されます。
図8:タイマー
タイミングアプリケーションでは、リングカウンターを使用して、間隔を測定し、特定のイベントをトリガーします。時計信号と同期して状態を進めることにより、タイミングを管理するための簡単な方法を提供し、カウンターの現在の状態に基づいて正しい瞬間にイベントが発生するようにします。
図9:有限状態マシン(FSM)
リングカウンターは、一般的に有限状態マシン、特にASIC(アプリケーション固有の統合回路)やFPGA(フィールドプログラム可能なゲートアレイ)デザインなどの環境で統合されています。予測可能な状態遷移により、これらのシステムの動作の流れを制御するのに理想的であり、各状態の変更がスムーズかつ正確に処理されるようにします。
図10:タイミング信号
リングカウンターは、より複雑な回路の動作を調整するのに役立つタイミング信号を生成するのにも役立ちます。これらの信号を通常の周期的な方法で生成することにより、回路のさまざまな部分が同期したままであることを確認するのに役立ちます。
図11:擬似ランダム数生成
暗号化システムでは、リングカウンターを使用して、暗号化アルゴリズムにとって危険な擬似ランダム数を生成します。出力のランダム性を維持しながら状態を予測可能にシフトするカウンターの能力は、この機密アプリケーションでそれらを有用にします。
図12:円形のストレージ管理
メモリシステムでは、リングカウンターが円形のキューの管理を支援し、データが効率的に保存および取得されるようにします。それらの周期的な性質により、彼らは制御された方法でデータの繰り返しサイクリングを処理することができ、それらは連続データフローに依存するバッファーやその他のストレージシステムの管理に最適です。
リングカウンターは、デジタル回路設計における究極の汎用性のあるコンポーネントを表しており、単純な構造と多数のアプリケーションにわたる効果的な動作を特徴としています。固定数の状態や自己開始能力の欠如などの制限にもかかわらず、リングカウンターのシンプルさと信頼性により、最新のデジタルシステムの設計に必要になります。
ジョンソンカウンターは、ツイストリングカウンターとしても知られており、主にデジタルエレクトロニクスで使用され、遅延タイマーを作成し、対称の正方形の波形を生成します。これらのカウンターは、タイムシーケンスのためのデジタルクロック、シーケンス操作を管理するdivide-nカウンターとしての制御システム、およびバイナリ値のセットを循環的に生成する数値ディスプレイを駆動する実用的なアプリケーションを見つけます。多くの場合、オペレーターは、他のカウンターよりもフリップフロップが少ない多くの州を生産する際の単純さと信頼性について、ジョンソンカウンターに依存しています。
リングカウンターは、運用の同期に基づいて分類されます。
同期リングカウンター: すべてのフリップフロップは一般的なクロック信号によって駆動され、すべてのフリップフロップでトランジションが同時に発生します。
非同期(または波紋)リングカウンター: 1つのフリップフロップの出力は次のフリップフロップの入力になり、カウンターを通って波及する順次遷移になります。
リングカウンターを効果的に使用するには:
初期化: 1つを除くすべてのフリップフロップを0に設定することから始めます。これは1に設定する必要があります。このセットアップは、リングを循環する単一の「1」を作成します。
クロック入力: クロックパルスを適用します。パルスごとに、「1」は1つのフリップフロップから次のフリップフロップから次の順番にシフトします。
監視出力: 各フリップフロップ出力を監視して、タイミングとシーケンス制御に役立つ回路の「1」の位置を追跡できます
リングカウンターは、デザインに応じて、同期または非同期にすることができます。
同期リングカウンター:すべてのフリップフロップは、クロック信号と同時に状態を変更します。
非同期リングカウンター: フリップフロップは、前のフリップフロップの活性化に続いて状態を連続的に変化させ、リップル効果を引き起こします。
リングカウンターとジョンソンカウンターの重要な違いは次のとおりです。
メモリ利用: nフリップフロップを備えたリングカウンターはn状態を表すことができますが、ジョンソンカウンターは2N州を表すことができ、ジョンソンはフリップフロップごとの状態表現の点でより効率的にカウンターします。
回路の複雑さ:ジョンソンカウンターは、リングカウンターと比較して追加の配線とセットアップが必要なため、より複雑です。
出力波形: ジョンソンカウンターは、より複雑な出力波形セットを生成します。これは、通信システムの波形生成など、詳細なタイミングパターンを必要とするアプリケーションで有利になる可能性があります。