同期式S-Rフリップフロップ・Dラッチ

ほかの技術知識

2019年12月24日 Dラッチ追記


同期式S-Rフリップフロップ

前回、S-Rフリップフロップはスイッチが2個あって面倒くさいから、これをどうにかしたい、というところで話は終わった。

この問題をどうにかするために、S-Rフリップフロップの左側(入力部分)にNANDゲートを付けたものが、同期式フリップフロップである。

『ゼロから学ぶディジタル論理回路』より

 結論から書けば、その動作は「C=1のときだけS-Rフリップフロップとして働き、C=0のときはS-Rフリップフロップが機能せずに元の値を保持する」ことになる。
-->本来はSとRという2つのスイッチが必要なところ、Cという1つのスイッチで(S’とR’の同期を取って)、Q,¬Qの変化するタイミングを制御できる。

Cを変えたときの挙動を考える

(参考) NANDゲートの性質を思い出す

NANDゲートの真理値表をよく見ると、 a とbどちらか一方の値を変えることによって、出力xがインバータになるか、出力「1」で一定になるかが定まることがわかる。

a =1:x=¬b、つまりインバータになる
a =0:bに関係なく、x=1で一定になる

Step1 C=0で開始

 左側に縦に並んだ2つNANDゲートのそれぞれについて、一方の入力が0になるので、NANDゲートの性質から、SとRとは無関係にS’=R’=1となる。したがって、出力Q,Q’の値はS,Rとは無関係に常に保持されることになる。

Step2 C=1にしたとき

 左側に立てに並んだ2つのNANDゲートはともにインバータとなる。仮にS=1,R=0とすると、S’=0,R’=1である。次に右側のS-Rフリップフロップに注目すると、入力S’=0より、出力Q=0がセットされて(Q,¬Q)=(1,0)で安定する。(S,R)=(0,1)のときは、単純に真逆なって(Q,¬Q)=(0,1)である。

Step3 ふたたびC=0にしたとき

また無条件でS’=R’=1となり、「2)C=1のとき」の結果のまま安定する。

『ゼロから学ぶディジタル論理回路』より

Dラッチ

 同期式S-Rフリップフロップの入力(S,R)を(D,¬D)に置き換えたものであり、その挙動は同期式S-Rフリップフロップと同様に考えてよい。
つまり、C=0のときは出力Q,Q’の値はとはDの状態とは無関係に常に保持され、C=1のときは、D=1であれば(Q,¬Q)=(1,0)、D=0であれば(Q,¬Q)=(0,1)となる。例によって真理値表にしてみると下図のようになる。

なぜDラッチと呼ぶのか?

 出力Qが変化するタイミングが、入力Dが与えられたタイミングではなく、C=1となるタイミングまで遅れる(delay)から。逆に言えば、C=のとき、入力Dの値の変化が出力Qに反映されないようにブロックする(latch,掛け金をかける)から。


残すところ、あと2つ(マスター・スレーブ式フリップフロップ・エッジトリガ式Dフリップフロップ)。年内にはアップしたい。