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