180 lines
7.0 KiB
TeX
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}
|
|
}
|