現在の入力と過去の状態の両方で出力が決まる、記憶を持つ論理回路。
順序回路とは、現在の入力と「過去の状態」の両方を使って出力を決める、記憶を持った論理回路のことです。状態を覚えるためにフリップフロップ(=1ビットの 0/1 を記憶できる部品)を使います。
身近な例で考えると、エレベーターのボタンに似ています。同じ「上ボタン」を押しても、いま1階にいるか5階にいるか(=過去からの状態)で次に向かう階が変わります。今の操作だけでなく、これまでの状態が結果を左右するのです。
上のツールで▶ボタンを押すと、クロック(=一定間隔で 0/1 を刻む合図)が来るたびに状態 Q が更新され、0 と 1 を行き来する様子をタイムチャートで確認できます。
論理回路は組合せ回路と順序回路の2種類に分けられます。違いは「記憶を持つかどうか」と「クロックで動くかどうか」の2点に集約できます。
| 項目 | 組合せ回路 | 順序回路 |
|---|---|---|
| 記憶 | 持たない | 持つ(フリップフロップ) |
| 出力が決まる要素 | 現在の入力だけ | 現在の入力+過去の状態 |
| クロック | 不要 | 必要(合図で更新) |
| 同じ入力での出力 | 必ず同じ | 状態次第で変わる |
ツールの例でいうと、入力 T=1 を与え続けても、出力 Q はあるときは 1、別のときは 0 になります。入力が同じでも、その瞬間の状態によって出力が変わるのが順序回路です。入力だけで一通りに決まる組合せ回路との決定的な差です。
順序回路は「状態を覚えておく」働きを生かして、コンピュータの中のさまざまな部品に使われています。
代表的な用途は次のとおりです。
・レジスタ:データ(複数ビット)を一時的に覚えておく入れもの。CPU が計算途中の値を保持するのに使う
・カウンタ:クロックが来るたびに数を 1 ずつ増やし、回数を数える。時計やタイマーの土台になる
・シフトレジスタ:記憶したビット列をクロックごとに横へずらす。直列⇔並列のデータ変換に使う
身近な例で考えると、カウンタは野球の得点ボードに似ています。1点入るたびにボタンを押すと表示が 1 ずつ増えますが、これは「今の得点を覚えていて、そこに 1 を足す」動作です。覚える働きがあるからこそ実現できる、まさに順序回路の典型です。