Initial Commit and Notes from HS24
This commit is contained in:
49
hs24/digitaltechnik/latches_flipflops/einfuehrung.tex
Normal file
49
hs24/digitaltechnik/latches_flipflops/einfuehrung.tex
Normal file
@@ -0,0 +1,49 @@
|
||||
\section{Einführung in die Flipflops}
|
||||
|
||||
\subsection{SR- und D-Flipflops}
|
||||
|
||||
In Vergleich zu taktgesteuerten Latches ändern taktflankengesteuerte Latches (Flipflops) den Zustand ihres Ausgangs, nur wenn der Eingang beschaltet wird und wenn das Taktsignal seinen Zustand ändert (entweder $T=0 \rightarrow 1$ oder $T = 1 \rightarrow 0$). Ändert sich das Taktsignal nicht, so ändert sich der Zustand des Ausgangs nicht.
|
||||
|
||||
\dfn{D-Flipflops}{
|
||||
D-Flipflops haben die gleiche Funktion wie D-Latches. Der einzige Unterschied ist, dass D-Flipflops taktflankengesteuert sind.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop D, dot on notQ](tff1){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_17.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\dfn{SR-Flipflops}{
|
||||
Wie beim D-Flipflop haben SR-Flipflops die gleiche Funktion wie SR-Latches mit dem Unterschied, dass SR-Flipflops taktflankengesteuert sind.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop mySR/.style={flipflop,
|
||||
flipflop def={t1=S, t3=R, t6=Q, t4=$\bar{\text{Q}}$, c2=1, n4=1}}};
|
||||
\draw (0,0) node[flipflop mySR](tff1){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_18.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\subsection{Dynamik von Flipflops}
|
||||
|
||||
Wie bei logischen Gattern sind Flipflops limitiert durch Verzögerungszeiten.
|
||||
|
||||
\begin{itemize}
|
||||
\item $t_{pd}$: Verzögerungszeit $\rightarrow$ misst die Verzögerungszeit zwischen einer aktiven Taktflanke am Clock und ihrer Reaktion am Ausgang des Flipflops.
|
||||
\item $t_s$: Setup-Zeit $\rightarrow$ bestimmt wie lange ein Daten-Signal (hier D) vor der aktiven Taktflanke unverändert anliegen muss, um sicher in das Flipflop übernommen zu werden.
|
||||
\item $t_h$: Haltezeit $\rightarrow$ gibt an, wie lange ein Daten-Signal nach der aktiven Taktflanke unverändert anliegen muss, um sicher in das Flipflop übernommen zu werden.
|
||||
\end{itemize} \cite{Luisier2024}
|
||||
|
||||
Die Verzögerungszeiten von Flipflops beeinflusst die Frequenz vom Taktsignal. Ist die Frequenz zu hoch, so kann der Flipflop nicht rechtzeitig schalten. Die maximale Taktfrequenz eines Flipflops wird meistens durch den Hersteller gegeben.
|
102
hs24/digitaltechnik/latches_flipflops/grundlagen.tex
Normal file
102
hs24/digitaltechnik/latches_flipflops/grundlagen.tex
Normal file
@@ -0,0 +1,102 @@
|
||||
\section{Grundlagen der Latches}
|
||||
|
||||
\subsection{Rückkopplungsprinzip}
|
||||
|
||||
In den letzten paar Kapitel haben wir hauptsächlich kombinatorische Schaltungen untersucht. Kombinatorische Schaltungen nehmen mehrere Eingänge und kombinieren sie durch logische Bauelemente zu einem Ausgang. Im Gegensatz zu kombinatorische Schaltungen können sequentielle Schaltungen ihren Ausgang als Eingang wiederverwenden. Dieser wird auch Rückkopplung genannt.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_10.png} \cite{Luisier2024}
|
||||
|
||||
Dieses Prinzip der Rückkopplung ist eine essenzielle Basis für Bauelemente, deren Aufgabe es ist Informationen zu speichern. Diese fungieren meistens als Kippschaltungen (Latches). Wir unterscheiden zwischen zwei Verschiedene Latches.
|
||||
|
||||
\begin{enumerate}
|
||||
\item SR-Latch (Set/Reset Latch)
|
||||
\item D-Latch (Data Latch)
|
||||
\end{enumerate}
|
||||
|
||||
\dfn{SR-Latch}{
|
||||
Der SR-Latch ist ein Kippschalter, welcher 2 Eingänge hat und 2 Ausgänge, wobei einer der Ausgänge die Inversion des anderen ist. Eines der Eingänge setzt den Zustand des Ausgangs auf 1 während der andere Eingang den Ausgang auf 0 setzt (zurücksetzt). Werden beide Eingänge nicht beschaltet, so bleiben die Eingänge in ihren vorherigen Zustand.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[nor gate] (nor1) at (0,0) {};
|
||||
\node[nor gate] (nor2) at (0,-2) {};
|
||||
\path[draw] (nor1.input 1) --++(left:10mm) node[point, label=180:S] {};
|
||||
\path[draw] (nor2.input 2) --++(left:10mm) node[point, label=180:R] {};
|
||||
\path[draw] (nor1.input 2) --++(left:5mm) --++(down:5mm);
|
||||
\path[draw] (nor2.input 1) --++(left:5mm) --++(up:5mm);
|
||||
\path[draw] (nor1.output) --++(right:10mm) --++(1,-2) --++(right:10mm) node[point, label=0:$\bar{\text{Q}}$] {};
|
||||
\path[draw] (nor2.output) --++(right:10mm) --++(1,2) --++(right:10mm) node[point, label=0:$\text{Q}$] {};
|
||||
\path[draw] (nor1.output) --++(right:5mm) --++(down:5mm) --++ (-1.75,-0.85);
|
||||
\path[draw] (nor2.output) --++(right:5mm) --++(up:5mm) --++ (-1.75,0.85);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop srlatch/.style={flipflop,
|
||||
flipflop def={t1=S, t3=R, t6=Q, t4=$\bar{\text{Q}}$, n4=1}
|
||||
}}
|
||||
\node[flipflop srlatch]{};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{tabular}{| c | c | c | c |}
|
||||
S & R & $\text{Q}_{n+1}$ & $\bar{\text{Q}}_{n+1}$ \\
|
||||
\hline
|
||||
0 & 0 & $\text{Q}_n$ & $\bar{\text{Q}}_n$ \\
|
||||
0 & 1 & 0 & 1 \\
|
||||
1 & 0 & 1 & 0 \\
|
||||
1 & 1 & X & X \\
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
|
||||
\nt{
|
||||
Bei einem SR-Latch dürfen die Eingänge nicht gleichzeitig beschaltet werden, da dies zu einem Fehler führt.
|
||||
}
|
||||
}
|
||||
|
||||
SR-Latches können auch taktgesteuert sein. Dies bedeutet, dass der Ausgang nur verändert wird, sobald der Takteingang beschaltet ist.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop srlatch/.style={flipflop,
|
||||
flipflop def={t1=S, t3=R, t6=Q, t4=$\bar{\text{Q}}$, n4=1}
|
||||
}}
|
||||
\path[draw] node[flipflop srlatch](srlatch){}
|
||||
(srlatch.pin 1)--++(left:5mm)
|
||||
node[and port](and1){}
|
||||
(and1.out)
|
||||
(srlatch.pin 3)--++(left:5mm)
|
||||
node[and port](and2){}
|
||||
(and2.out);
|
||||
\path[draw] (and1.in 1) --++(left:10mm) node[point, label=180:S] {};
|
||||
\path[draw] (and2.in 2) --++(left:10mm) node[point, label=180:R] {};
|
||||
\path[draw] (and2.in 1) --++(up:6mm)--++(left:10mm) node[point, label=180:T] {};
|
||||
\path[draw] (and1.in 2) --++(down:6mm);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop srlatch/.style={flipflop,
|
||||
flipflop def={t1=S, t2=T, t3=R, t6=Q, t4=$\bar{\text{Q}}$, n4=1}
|
||||
}}
|
||||
\node[flipflop srlatch]{};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
|
||||
\subsection{D-Latch (Data-Latch)}
|
||||
|
||||
\dfn{D-Latch}{
|
||||
Der D-Latch ist ein Kippschalter, welcher 1 Eingang hat und 2 Ausgänge. Der Eingang ist in Vergleich zum SR-Latch allein zuständig für das Setzen und Rücksetzen des Ausgangs bzw. des invertierten Ausgangs. Wie beim SR-Latch können D-Latches auch Taktgesteuert sein.
|
||||
|
||||
|
||||
}
|
||||
|
||||
Taktgesteuerte Latches haben jedoch einen Nachteil. Sie sind sehr empfindlich zu Störungen. Deswegen eignet es sich eher, Flip-Flops zu verwenden, welche Taktflankengesteuert sind.
|
@@ -0,0 +1,6 @@
|
||||
\chapter{Latches und Flipflops}
|
||||
|
||||
\input{grundlagen.tex}
|
||||
\input{einfuehrung.tex}
|
||||
\input{mehr_grundlagen.tex}
|
||||
\input{schaltungen.tex}
|
179
hs24/digitaltechnik/latches_flipflops/mehr_grundlagen.tex
Normal file
179
hs24/digitaltechnik/latches_flipflops/mehr_grundlagen.tex
Normal file
@@ -0,0 +1,179 @@
|
||||
\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}
|
||||
}
|
18
hs24/digitaltechnik/latches_flipflops/schaltungen.tex
Normal file
18
hs24/digitaltechnik/latches_flipflops/schaltungen.tex
Normal file
@@ -0,0 +1,18 @@
|
||||
\section{Schaltungen mit Flipflops} \label{sec:ffcirc}
|
||||
|
||||
\subsection{Frequenzteiler und Zähler}
|
||||
|
||||
Mithilfe von T-Flipflops kann die Frequenz vom Taktsignal verringert werden. Jeder T-Flipflop verringert die Frequenz um den Faktor 2. Dies bedeutet mit $n$ Flipflops wird die Frequenz um den Faktor $2 ^{n}$ verringert.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop T, dot on notQ](tff1){}
|
||||
(tff1.pin 3) --++(left:10mm) node[point, label=180:CLK] {}
|
||||
(tff1.pin 6) --++(right:15mm) --++(down:17mm) --++(right:5mm)
|
||||
node[flipflop T, dot on notQ, anchor=pin 3](tff2){}
|
||||
(tff2.pin 6) --++(right:10mm) node[point, label=0:Q] {};
|
||||
\path[draw] (tff1.pin 6) --++(right:10mm) --++(up:10mm) node[point, label=90:M] {};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
|
||||
Mit zwei T-Flipflops kann auch ein zwei Bit Zähler erstellt werden. Dazu wird der Ausgang vom ersten Flipflop für den LSB verwendet und der Ausgang vom zweiten Flipflop als MSB verwendet. Die höchste Zahl hängt von der Anzahl Flipflops ab. Grundsätzlich kann man sagen, dass $n$ Flipflops von 0 bis $2 ^{n}-1$ zählen kann.
|
Reference in New Issue
Block a user