リングカウンタ
リングカウンタは、シフトレジスタを形成するように接続されたフリップフロップから構成されるカウンタ回路の一種である。最後のフリップフロップの出力を最初のフリップフロップの入力へ与えるので、「循環」あるいは「リング」構造を形成する。
リングカウンタには2種類ある。
ストレート・リングカウンタ(ワンホットカウンタとしても知られている)は、シフトレジスタの最後の出力をシフトレジスタの最初の入力へ接続し、リング内で単一の1の値のビット(One-hot)あるいは、単一の0の値のビット(One-cold)を循環させる。
ジョンソンカウンタ(ツイステッド・リングカウンタ、スイッチテイル・リングカウンタ、ウォーキング・リングカウンタ、あるいはメビウスカウンタとも呼ばれる)は、シフトレジスタの最後の出力を反転させて、シフトレジスタの最初の入力へ接続し、リング内で0000の後に1111が続くような流れを循環させる(後述)。
シフトレジスタのビット数の2倍のカウント状態を表現できるからである。ジョンソンカウンタは、全0状態から自己初期化することが可能なので、開始時に外部から注入される第一ビットを要求することはない。 ジョンソンカウンタは、隣接する状態が1ビットだけ異なる符号を生成する(ハミング距離が1である)。グレイコードと同様であり、ビットパターンが非同期的にサンプリングされる場合に役立つ。
カウンタ状態の完全に復号された表現、あるいはOne-hotによる表現が必要とされるとき、いくつかのシーケンスコントローラーと同様にストレート・リングカウンタが好まれる。 One-hotは、符号の集合の最小ハミング距離が2という特性があるので、あらゆる1ビットエラーを検出できる(1ビットをオンして1ビットをオフする以外のあらゆるエラーパターンも同様に検出できる)。
双方向あるいはアップダウン・リングカウンタを作るために双方向シフトレジスタが使われることがある(左右の隣接したフリップフロップから各フリップフロップのための入力を得るためにマルチプレクサを使用する)。