180 lines
7.0 KiB
TeX

\section{Mehr über Flipflop Grundlagen}
\subsection{JK und T-Flipflops}
\dfn{JK-Flipflops (Jump-Kill Flipflops)}{
\begin{minipage}{0.5\linewidth}
Der JK-Flipflop ist eine Erweiterung des SR-Flipflops. Beim SR-Flipflop war das Problem, dass beide Eingänge nicht gleichzeitig beschaltet werden dürfen, da dies zu einem Fehler führt. Dieses Problem existiert nicht mehr, da JK-Flipflops einfach die Ausgänge invertiert (Toggeln).
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{tabular}{| c | c | c | c |}
J & K & $\text{Q}_{1n+1}$ & $\text{Q}_{2n+1}$ \\
\hline
0 & 0 & $\text{Q}_{1n}$ & $\text{Q}_{2n}$ \\
0 & 1 & 0 & 1 \\
1 & 0 & 1 & 0 \\
1 & 1 & $\overline{\text{Q}_{1n}}$ & $\overline{\text{Q}_{2n}}$ \\
\end{tabular}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{circuitikz}[european]
\draw (0,0) node[flipflop JK, dot on notQ](tff1){};
\end{circuitikz}
\end{center}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\includegraphics[width=\linewidth]{fig/Fig_19.png} \cite{Luisier2024}
\end{minipage}
\nt{
JK-Latches existieren auch.
}
}
\dfn{T-Flipflops (Toggle Flipflops)}{
Beim T-Flipflop gibt es zwei Varianten.
\\
Bei der ersten Variante hat der T-Flipflop nur den Takteingang. Die Aufgabe dieses Flipflops ist es, den Zustand vom Ausgang zu invertieren, sobald das Taktsignal seinen Zustand ändert.
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{circuitikz}[european]
\draw (0,0) node[flipflop T, dot on notQ, external pins width=0](tff){};
\path[draw] (tff.bpin 3) --++(left:2.5mm);
\path[draw] (tff.bpin 4) --++(right:2.5mm);
\path[draw] (tff.bpin 6) --++(right:2.5mm);
\end{circuitikz}
\end{center}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\includegraphics[width=\linewidth]{fig/Fig_20.png} \cite{Luisier2024}
\end{minipage}
Bei der zweiten Variante hat der T-Flipflop 2 Eingänge. Bei diesem Flipflop wird der Ausgang invertiert, sobald der Toggle Eingang beschaltet ist und das Taktsignal seinen Zustand ändert.
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{circuitikz}[european]
\draw (0,0) node[flipflop T, dot on notQ](tff1){};
\end{circuitikz}
\end{center}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\includegraphics[width=\linewidth]{fig/Fig_21.png} \cite{Luisier2024}
\end{minipage}
}
\subsection{D-Flipflops in CMOS Technik}
Um D-Flipflops durch Transistoren realisieren zu können, benötigen wir Transmission Gates.
\dfn{Transmission Gates}{
Transmission Gates sind Bauelemente, welche für den Aufbau von Logikgattern benötigt wird. Sie bestehen aus einem PMOS Transistor und einem NMOS Transistor. Dadurch können sie High- als auch Low-Pegel übertragen. \cite{Vasylyev2024}
\begin{minipage}{0.5\linewidth}
\begin{tabular}{| c | c | c | c |}
T & IN & Wiederstand & OUT \\
\hline
0 & 0 & hochohmig & - \\
0 & 1 & hochohmig & - \\
1 & 0 & niederohmig & 0 \\
1 & 1 & niederohmig & 1 \\
\end{tabular}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\includegraphics[width=\linewidth]{fig/Fig_22.png} \cite{Luisier2024}
\end{minipage}
}
Das Verhalten von Transmission Gates hängt von der Eingangsspannung $V_{\text{in}}$ ab. Ist das Taktsignal beschaltet und die Eingangsspannung $<0$, so ist die Gate-Source Spannung $V_{\text{gs}}$ des PMOS Transistors $-V_{\text{in}}$ und der PMOS Transistor leitet. Dies ist anders beim NMOS Trasistor, welcher gesperrt bleibt. Wenn $V_{\text{in}} >0$ dann ist es die umgekehrte Situation und der NMOS Transistor leitet.
\dfn{D-FlipFlops in CMOS Technik}{
Um ein D-Flipflop mit Transmission Gates zu realisieren, benötigt man vier Transmission Gates und vier Inverter bzw. zwei Transmission Gates und zwei Inverter pro Latch.
\includegraphics[width=\linewidth]{fig/Fig_23.png} \cite{Luisier2024}
Mit CMOS Transistoren würde die vorherige Schaltung wie folgt aussehen.
\includegraphics[width=\linewidth]{fig/Fig_24.png} \cite{Luisier2024}
$\Rightarrow$ Für ein D-Flipflop werden acht PMOS- und acht NMOS-Transistoren benötigt.
}
\subsection{Weitere Flipflop Eigenschaften}
Ein JK-Flipflop kann immer durch ein D-Flipflop ersetzt werden. Neben den D-Flipflop selbst werden zwei AND und ein OR zusätzlich benötigt.
\begin{center}
\begin{circuitikz}[european]
\path[draw] node[flipflop D, dot on notQ](dff){}
(dff.pin 4) --++(right:15mm) node[point, label=0:$\bar{\text{Q}}$]{}
(dff.pin 6) --++(right:15mm) node[point, label=0:Q]{}
(dff.pin 3) --++ (left:10mm) node[point, label=180:CLK]{}
(dff.pin 1) --++(left:5mm)
node[or port, anchor=out](or){}
(or.in 1) --++(left:5mm)
node[and port, anchor=out](and1){}
(and1.in 2) --++(left:10mm) node[point, label=180:J]{}
(or.in 2) --++(left:5mm) --++(down:20mm) --++(left:5mm)
node[and port, anchor=out](and2){}
node [notcirc, left] at (and2.bin 1) {}
(and2.in 1) --++(left:10mm) node[point, label=180:K]{}
(dff.pin 4) --++(right:5mm) --++(up:30mm) --++(left:77mm) --++(down:9mm)
(dff.pin 6) --++(right:10mm) --++(down:30mm) --++(left:86.5mm) --++(up:5.5mm);
\end{circuitikz}
\end{center}
Flipflops können zusätzlich noch einen zusätzlichen Setz- bzw. Rücksetzkontakt haben. Dieser tut den Ausgang, egal in welchen Zustand das Taktsignal oder die Eingänge sind, setzen bzw. rücksetzen.
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{circuitikz}[european]
\path[draw] node[flipflop D, dot on notQ, add async SR](dff){};
\end{circuitikz}
\end{center}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{circuitikz}[european]
\path[draw] node[flipflop JK, dot on notQ, add async SR](dff){};
\end{circuitikz}
\end{center}
\end{minipage}
\dfn{JK-LF-Flipflops (Jump-Kill-Leader-Follower Flipflops)}{
JK-LF-Flipflops (Zwischenspeicher Flipflops) sind in der Lage Signale zwischenzuspeichern und erst bei der nächsten fallenden Taktflanke zum Ausgang weiterzuleiten.
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{circuitikz}[european]
\path[draw] node[flipflop JK, dot on notQ](jkff1){}
(jkff1.pin 1) --++(left:10mm) node[point, label=180:J]{}
(jkff1.pin 2) --++(left:10mm) node[point, label=180:CLK]{}
(jkff1.pin 3) --++(left:10mm) node[point, label=180:K]{}
(jkff1.pin 6) --++(right:10mm)
node[flipflop JK, dot on notQ, anchor=pin 1](jkff2){}
node [notcirc, left] at (jkff2.bpin 2) {}
(jkff1.pin 4) --++(right:10mm)
(jkff2.pin 4) --++(right:10mm) node[point, label=0:Q]{}
(jkff2.pin 6) --++(right:10mm) node[point, label=0:$\bar{\text{Q}}$]{}
(jkff1.pin 2) --++(left:5mm) --++(down:15mm) --++(right:33mm) --++(up:15mm) --++(right:5mm);
\end{circuitikz}
\end{center}
\end{minipage}
\begin{minipage}{0.5\linewidth}
\begin{center}
\begin{circuitikz}
\tikzset{flipflop JKLF/.style={flipflop,
flipflop def={t1=J, t2=CLK, t3=K, t4=$\neg$, t6=$\neg$, c2=1, n4=1}
}}
\node [flipflop JKLF]{};
\end{circuitikz}
\end{center}
\end{minipage}
}