D フリップフロップ回路

2021-12-05

1ビットのデータを記憶する回路をリレーで作ります。

\[ \newcommand{dn}[3]{\frac{\mathrm{d}^{#3} #1}{\mathrm{d} #2^{#3}}} \newcommand{\d}[2]{\frac{\mathrm{d} #1}{\mathrm{d} #2}} \newcommand{\dd}[2]{\frac{\mathrm{d}^2 #1}{\mathrm{d} {#2}^2}} \newcommand{\ddd}[2]{\frac{\mathrm{d}^3 #1}{\mathrm{d} {#2}^3}} \newcommand{\pdn}[3]{\frac{\partial^{#3} #1}{\partial {#2}^{#3}}} \newcommand{\pd}[2]{\frac{\partial #1}{\partial #2}} \newcommand{\pdd}[2]{\frac{\partial^2 #1}{\partial {#2}^2}} \newcommand{\pddd}[2]{\frac{\partial^3 #1}{\partial {#2}^3}} \newcommand{\p}{\partial} \newcommand{\D}[2]{\frac{\mathrm{D} #1}{\mathrm{D} #2}} \newcommand{\Re}{\mathrm{Re}} \newcommand{\Im}{\mathrm{Im}} \newcommand{\bra}[1]{\left\langle #1 \right|} \newcommand{\ket}[1]{\left|#1 \right\rangle} \newcommand{\braket}[2]{\left\langle #1 \middle|#2 \right\rangle} \newcommand{\inner}[2]{\left\langle #1 ,#2 \right\rangle} \newcommand{\l}{\left} \newcommand{\m}{\middle} \newcommand{\r}{\right} \newcommand{\f}[2]{\frac{#1}{#2}} \newcommand{\eps}{\varepsilon} \newcommand{\ra}{\rightarrow} \newcommand{\F}{\mathcal{F}} \newcommand{\L}{\mathcal{L}} \newcommand{\t}{\quad} \newcommand{\intinf}{\int_{-\infty}^{+\infty}} \newcommand{\R}{\mathcal{R}} \newcommand{\C}{\mathcal{C}} \newcommand{\Z}{\mathcal{Z}} \newcommand{\bm}[1]{\boldsymbol{#1}} \]

これは リレーから始める CPU 自作 Advent Calendar 2021 5 日目の記事です。 <<< 4 日目

この記事では、論理回路の中でも一番の山場、D フリップフロップ回路(DFF)を解説します。

DFF の仕事

DFF は信号を記憶する素子です。

CLK が立ち上がったタイミングの D の状態が記憶されて、Q に出力されます。

回路図と動作

複雑な回路ですが、ひとつずつ追っていけばわかる、はずです…!

D=1

  1. D が ON になると、 X が ON になる。
  2. CLK が立ち上がると、① の経路は切れるが、② の経路は導通しているので、 X は ON を維持する。このとき、CLK が立ち上がってる間に、D が OFF になったとしても、X は ON を維持する。
  3. X と CLK が ON なので、Q が ON になる。
  4. CLK が立ち下がると、③ の経路は切れるが、④ の経路は導通しているので、Q は ON を維持する。

D=0

  1. D が OFF になると、X が OFF になる。
  2. CLK が立ち上がると、Q が ON であったとしても、Q が OFF になる。このとき、CLK が立ち上がってる間に、D が ON になったとしても、X は OFF を維持する。
  3. X と CLK が ON なので、Q が OFF になる。
  4. CLK が立ち下がっても、Q は OFF を維持する。

>>> 6 日目