jinyux’s diary

IT業界初心者です。勉強したことをまとめています。

Dフリップフロップ・レジスタ

Dラッチの復習

以前にDラッチについて勉強したが(ストレージ基礎(Dラッチ) - jinyux’s diary)、順序回路の勉強に入るにあたりもう一度復習する。
Dラッチの回路図を以下に再掲する。

SRラッチは2つの状態を持ち、1bitのデータを保存できる順序回路である。SRラッチはSとRに「どちらに何」を「どのようなタイミング」で入力するかが重要になってくる。「どちらに何」は次の状態を反映し、「どのようなタイミング」は文字通りいつ状態を反映させるかに対応する。SRラッチではこの2つの要素がS、Rの入力パターンとタイミングで指定されるわけだが、2つの要素が混在しているので設計上このままでは扱いにくい。そこでその2つの要素を切り分けたのがDラッチである。「どちらに何」はD入力のオン/オフで、「どのようなタイミング」はCLKのオン/オフでコントロールする。

CLK=1のとき、ラッチは透過状態であるといい、Dに入力されたデータがQにそのまま流れ出る。CLK=0のときは、不透過となりDにいかなるデータが入力されてもQは直前の値を維持し続ける。すなわちCLK=1のときにDの値が変化すると、Qの値もそれに応じて変化し続けることになる。次に考えたいことは、CLK=1のときずっと変化し続けるのではなくて、ある瞬間の値だけ反映する回路は作れないかということである。もっと具体的に言うと、CLKが0→1に変化した瞬間にのみ状態を更新するような回路である。

Dラッチをモジュール化した図は以下。

Dフリップフロップ

以下のような回路をDフリップフロップと呼び、前述の「ある瞬間にのみ状態を更新する回路」の一つの例である。

2つのDラッチを接続したものであり、左側(1番目)のラッチをマスタ、右側(2番目)をスレーブと呼ぶ。
CLK=0のとき、マスタラッチは透過状態となり、スレーブは不透過となる。それゆえDの値はN1まで透過するがその先には伝播しない。次にCLK=1になると、マスタは不透過となり、スレーブが透過状態となる。N1の値がスレーブを透過してQまで伝播する。一方、マスタに入力されるDはブロックされ、N1には反映しない。CLKが0→1に立ち上がる直前のDの値が、CLKが立ち上がった直後に出力Qにコピーされることになる。それ以外の安定状態のときには、DとQの間に常にブロックしているラッチが存在するのでQの値は変化しない。
まとめると、Dフリップフロップは「クロックの立ち上がりの瞬間にその時のDの値をQにコピーし、それ以外のときはQの値(状態)を保持し続ける」ということである。Dフリップフロップをモジュール化した図を以下に示す。


レジスタ

共通のCLK入力をもつ複数のDフリップフロップレジスタと呼ぶ。共通のCLKを持っているので、同じレジスタフリップフロップは全て同時に状態が更新される。下図は4bitのレジスタである。


参考:ディジタル回路設計とコンピュータアーキテクチャ