ディジタル回路の構成要素から見直し。
SRラッチ
構造はNORゲートのたすき掛け。入力はS(Set)とR(Reset)の2つ、出力はNORゲート2つの出力がそれぞれQ, Q'。(R, S) = (0, 0)のとき不確定となり、入力以前のQ_prevを参照して出力が決定する。
(S, R) = (0, 1)であれば、QはResetされ0。 (S, R) = (1, 0)であればQはSetされて1。 (S, R) = (1, 1)のときは、Q = Q' = 0となるので禁止入力である。
Dラッチ
SRラッチにおける(S, R) = (1, 1)の不具合を解消する。
Dラッチの入力は(CLK, D)の2つであり、出力は同様に(Q, Q')。
(CLK and D)がSRラッチのS、(CLK and (not D))がSRラッチのRに入力されるようになっており、CLKはどのタイミングで出力するか、Dは何を出力するかを決定する。CLK = 1の状態をトランスペアレント(透過状態)と呼び、この状態ではDの値がQに通過する。CLK = 0の状態では以前の値を保持する。
Dフリップフロップ
DラッチではCLK = 1の間Qを更新し続ける。これを修正する。入力は(CLK, D)の2つであり、出力は(Q, Q')。
DフリップフロップはDラッチを2つ接続した形となっており、入力側はマスタ、出力側はスレーブと呼ばれる。
スレーブのCLKを反転した信号がマスタのCLKに入力される。マスタの出力QがスレーブのDに入力される構造となっている。以下ではスレーブのCLKをCLKと呼ぶ。また、QとDを接続するノードをN1とする。
CLK = 0のときはマスタが透過状態であり、入力DがN1まで到達する。しかし、スレーブは透過状態ではないため、出力までは到達しない。この状態でCLK = 1とすると、スレーブが透過状態となり、N1が出力Qまで到達する。この状態ではマスタはブロックされているため、入力Dを変動させても出力Qは変わらない。
よって、DフリップフロップではCLKの立ち上がり時に入力Dを出力に到達させる構造となっていることがわかる。共通のCLKを持つN個のフリップフロップをNビットのレジスタと呼ぶ。
同期式順序回路
・全ての回路の要素はレジスタ / 組み合わせ回路
・1つの要素は少なくともレジスタ
・すべてのレジスタのCLKは共通
・すべての巡回パスには一つはレジスタが入っている
を満たす回路を同期式順序回路と呼ぶ。