\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} }