利用者:加藤勝憲/リング・カウンタ
リング・カウンタは、シフト レジスタに接続されたフリップフロップで構成されるカウンタの一種で、最終段のフリップフロップの出力が初段のフリップフロップの入力に供給され、「循環」または「リング」構造を形成するものをいう。
リング・カウンタには次の2種類がある。
- ワンホットカウンタとも呼ばれるストレート リング・カウンタは、最後のシフト レジスターの出力を最初のシフト レジスター入力に接続し、1(または0) ビットをリング上で循環させる。
- ツイストリング・カウンタは、スイッチテールリング・カウンタ、ウォーキングリング・カウンタ、ジョンソンカウンタ、メビウスカウンタとも呼ばれ、最終段のシフトレジスタの出力の補数を初段のレジスタの入力に接続し、1の後に0が続くストリームをリングの周りに循環させるものである。
4ビット リング・カウンタ シーケンス
[編集]ストレートリング・カウンタ | ジョンソンカウンタ | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
州 | Q0 | Q1 | Q2 | Q3 | 州 | Q0 | Q1 | Q2 | Q3 | |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | |
1 | 0 | 1 | 0 | 0 | 1 | 1 | 0 | 0 | 0 | |
2 | 0 | 0 | 1 | 0 | 2 | 1 | 1 | 0 | 0 | |
3 | 0 | 0 | 0 | 1 | 3 | 1 | 1 | 1 | 0 | |
0 | 1 | 0 | 0 | 0 | 4 | 1 | 1 | 1 | 1 | |
1 | 0 | 1 | 0 | 0 | 5 | 0 | 1 | 1 | 1 | |
2 | 0 | 0 | 1 | 0 | 6 | 0 | 0 | 1 | 1 | |
3 | 0 | 0 | 0 | 1 | 7 | 0 | 0 | 0 | 1 | |
0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
特性
[編集]リング・カウンタは、ハードウェア設計でよく使用され、例えばASICおよびFPGAを使って有限オートマトンを作成する。バイナリ・カウンタは、リング・カウンタよりもかなり複雑な加算回路を必要とし、ビット数が増加するにつれて伝搬遅延が大きくなるが、リング・カウンタの伝搬遅延は、コード内のビット数に関係なくほぼ一定である。
ストレート型とツイスト型では特性が異なり、それぞれに長所と短所がある。
リング・カウンタの一般的な欠点は、状態番号の通常のバイナリ・エンコードよりも密度の低いコードであることである。バイナリ・カウンタは 2^N個の状態 (N はコードのビット数) を表現できるのに対し、ストレート リング・カウンタは N個の状態、ジョンソン カウンタは2N個の状態しか表すことができない。このことは、レジスタが組み合わせロジックよりも高価なハードウェア実装では重要な考慮事項になる。
ジョンソンカウンタは、同じ数のシフトレジスタから2倍のカウント状態を提供し、開始時に最初のカウントビットを外部から注入する必要がなく、すべてゼロの状態から自己初期化できるため、時々好まれます。 -上。ジョンソン カウンタは、グレー コードのように、隣接する状態が 1ビットだけ異なる (つまり、ハミング距離が 1である) コードを生成します。これは、ビット パターンが非同期的にサンプリングされる場合に役立ちます。
一部のシーケンス コントローラのように、カウンタ状態の完全にデコードされた表現またはワンホット表現が必要な場合は、ストレート リング・カウンタが優先されます。ワンホット プロパティは、コードのセットが2の最小ハミング距離で区切られていることを意味するため、シングル ビット エラーが検出可能です (1ビットをオンにして 1ビットをオフにする以外のエラー パターンと同様)。 .
双方向またはアップダウン リング・カウンタを作成できるように、双方向シフト レジスタが使用される場合があります (マルチプレクサを使用して各フリップフロップの入力を左または右の隣から取得します)。
論理図
[編集]ストレート リング・カウンタの論理構造は次のとおりです。
最初のワンホットパターンを設定するリセット ラインの代わりに、最後の出力を除くすべての出力に分散フィードバック ゲートを使用して、ストレート リングが自己初期化されることがあります。最後の段階以外のどの段階にも 1はありません。
ロバート・ロイス・ジョンソンにちなんで名付けられたジョンソンカウンタは、反転したリングです。これは 4ビットのジョンソン カウンタです。
最初の D 入力にフィードバックする前の最後のシフト レジスタからの Q 信号の反転を示す小さなバブルに注意してください。これはジョンソン カウンタになります。
歴史
[編集]デジタル コンピューティング時代が到来する以前には、放射性崩壊におけるアルファ粒子やベータ粒子のような不規則な事象の速度を測定するためにデジタル カウンタが使用されていた**(デジタルカウンタの回路例図版の挿入)**。
高速な「事前スケーリング」カウンタにより、ランダム イベントの発生率がより管理しやすく、より定期的な発生率に低下しました。 CE Wynn-Williamsによって開発されたものなど、1940年より前に 10の (10の累乗) スケーラーを作成するために、2で除算するスケーラーと共に 5ステート リング・カウンタが使用された。
初期のリング・カウンターは、1段ごとに1つの能動素子(真空管、あるいはトランジスタ)のみを使用し、ローカルな双安定フリップフロップではなくグローバル・フィードバックに依存して、ワンホット状態以外の状態を抑制した。例えば、1941年に、National Cash Registor Company(NCR)のRobert E. Mumma[1]が提出した特許では、このようにされている。Wilcox P. Overbeckは、単一の真空管で複数の陽極を使用するバージョンを発明しました 彼の業績が認められて、リング・カウンタは「オーバーベック リング」と呼ばれることもあります (そして 2006年以降、ウィキペディアが 2006年から 2018年までこの用語を使用していたため、「オーバーベック カウンタ」と呼ばれることもあります)。
ENIACでは、10ステートのワンホット リング・カウンタに基づく 10進演算を使用しました。 NCR の Mumma と MIT の Overbeck は、ENIAC 技術に関するJ. Presper EckertとJohn Mauchlyの特許を無効にした特許庁によって調査された先行技術作品の 1つです。
1950年代までに、ステージごとに真空管を2個、あるいはツイン トライオード フリップフロップを備えたリング・カウンタが登場した。
Robert Royce Johnson は、可能な限り単純なフィードバック ロジックでさまざまな数の状態を作成することを目的として、多数のさまざまなシフト レジスタ ベースのカウンタを開発し、1953年に特許を申請しました。 ジョンソンカウンタは、これらの中で最も単純な構成になっている。
応用例
[編集]リング・カウンタの初期の用途は、周波数プリスケーラー (ガイガー カウンタなどの機器など)、 暗号解読におけるパターンの出現回数をカウントするカウンタ (たとえば、ヒース ロビンソン暗号解読機やコロッサス コンピューター)、 およびアキュムレータとしてでした。バイ 5進法(Colossus のように) または 10状態のワンホット ( ENIACのように) 表現のいずれかを使用して、コンピューターと電卓の 10進演算のカウンタ要素。
ストレート リング・カウンタは、完全にデコードされたワンホット コードを生成します。このコードは、循環制御サイクルの各状態で特定のアクションを有効にするためによく使用されます。ワンホット コードは、状態ごとに 1つのゲートを使用して、ジョンソン カウンタからデコードすることもできます。
ジョンソン カウンタは、ワンホット コードと周波数プリスケーラーを生成する効率的な代替方法であるだけでなく、グリッチなしで非同期にサンプリングできる偶数の状態のサイクルをエンコードする簡単な方法でもあります。グレイコードのような時間。 初期のコンピュータ マウスは、アップダウン (双方向)2ビット ジョンソンまたはグレイ エンコーディングを使用して、2つの次元のそれぞれの動きを示しましたが、マウスでは、これらのコードは通常、フリップフロップのリングによって生成されませんでした (代わりに、電気機械または光学直交エンコーダ)。 2ビットのジョンソン コードと2ビットのグレイ コードは同一ですが、3ビット以上の場合、グレイ コードとジョンソン コードは異なります。 5ビットの場合、コードはLibaw–Craig codeと同じです。 10進数の場合。
ジョンソン カウンタとも呼ばれるウォーキング リング・カウンタといくつかの抵抗器によって、正弦波のグリッチのない近似値を生成できます。調整可能なプリスケーラと組み合わせると、これはおそらく最も単純な数値制御発振器になります。このような2つのウォーキング リング・カウンタは、おそらく、デュアルトーン マルチ周波数信号と初期のモデムトーンで使用される連続位相周波数シフト キーイングを生成する最も簡単な方法です。 [2]
|
|
|
|
|
|
|
|
参照
[編集]注釈
[編集]引用エラー: <references>
グループ「nb」で定義されている、nameが「NB1」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「nb」で定義されている、nameが「NB1」の <ref>
タグに内容がありません。
脚注・参考文献
[編集]- ^ “Oral history interview with Robert E. Mumma”. ミネソタ大学. 2022年11月21日閲覧。
- ^ Don Lancaster.
引用エラー: <references>
グループ「」で定義されている、nameが「Dokter_1973」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Dokter_1975_1」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Dokter_1975_2」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Steinbuch_1962」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Steinbuch_1967」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Steinbuch-Weber_1974」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Pedroni_2013」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Mengibar_2003」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Stan_1997」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Holdsworth_2002」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Lewis_1942」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Mumma_1941」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Overbeck_1943」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Dayton」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「RAMAC_1959」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「US_1960」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Randall_2014」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Higinbotham_1949」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Johnson_1953」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Copeland_2010」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Langholz_1998」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Lyon_1981」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Libaw-Craig_1953」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Powell_1968」の <ref>
タグに内容がありません。
引用エラー: <references>
グループ「」で定義されている、nameが「Holten_1982」の <ref>
タグに内容がありません。
[[Category:デジタル回路]]