Initial Commit and Notes from HS24
BIN
zusammenfassung/digitaltechnik/.DS_Store
vendored
Normal file
BIN
zusammenfassung/digitaltechnik/images/AddSub.jpg
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
zusammenfassung/digitaltechnik/images/Addition.jpg
Normal file
After Width: | Height: | Size: 32 KiB |
BIN
zusammenfassung/digitaltechnik/images/AsyncCounter.jpg
Normal file
After Width: | Height: | Size: 82 KiB |
BIN
zusammenfassung/digitaltechnik/images/AsyncCounter2.jpg
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
zusammenfassung/digitaltechnik/images/Asynchron.JPG
Normal file
After Width: | Height: | Size: 22 KiB |
BIN
zusammenfassung/digitaltechnik/images/Automat_1.JPG
Normal file
After Width: | Height: | Size: 45 KiB |
BIN
zusammenfassung/digitaltechnik/images/D-FF.jpg
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
zusammenfassung/digitaltechnik/images/D-Latch.jpg
Normal file
After Width: | Height: | Size: 33 KiB |
BIN
zusammenfassung/digitaltechnik/images/DRAM.jpg
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
zusammenfassung/digitaltechnik/images/Demultiplexer.jpg
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
zusammenfassung/digitaltechnik/images/Dynamik-FF.jpg
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
zusammenfassung/digitaltechnik/images/EPROM.jpg
Normal file
After Width: | Height: | Size: 163 KiB |
BIN
zusammenfassung/digitaltechnik/images/EPROM_2.jpg
Normal file
After Width: | Height: | Size: 187 KiB |
BIN
zusammenfassung/digitaltechnik/images/FF_Delay.jpg
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
zusammenfassung/digitaltechnik/images/Frequenzteiler.JPG
Normal file
After Width: | Height: | Size: 49 KiB |
BIN
zusammenfassung/digitaltechnik/images/Frequenzteiler2.JPG
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
zusammenfassung/digitaltechnik/images/Halbaddierer.jpg
Normal file
After Width: | Height: | Size: 25 KiB |
BIN
zusammenfassung/digitaltechnik/images/HardwareMult.jpg
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
zusammenfassung/digitaltechnik/images/JK-FF.JPG
Normal file
After Width: | Height: | Size: 66 KiB |
BIN
zusammenfassung/digitaltechnik/images/JK-MS-FF.JPG
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
zusammenfassung/digitaltechnik/images/JK-MS-FF2.JPG
Normal file
After Width: | Height: | Size: 322 KiB |
BIN
zusammenfassung/digitaltechnik/images/KVDia.jpg
Normal file
After Width: | Height: | Size: 27 KiB |
BIN
zusammenfassung/digitaltechnik/images/Laufzeit.jpg
Normal file
After Width: | Height: | Size: 77 KiB |
BIN
zusammenfassung/digitaltechnik/images/Logic-gate-index.png
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
zusammenfassung/digitaltechnik/images/MROM.jpg
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
zusammenfassung/digitaltechnik/images/Mealy_1.JPG
Normal file
After Width: | Height: | Size: 79 KiB |
BIN
zusammenfassung/digitaltechnik/images/Mealy_2.JPG
Normal file
After Width: | Height: | Size: 98 KiB |
BIN
zusammenfassung/digitaltechnik/images/Medwedjew.JPG
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
zusammenfassung/digitaltechnik/images/Moore_1.JPG
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
zusammenfassung/digitaltechnik/images/Moore_2.JPG
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
zusammenfassung/digitaltechnik/images/Multiplexer.jpg
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
zusammenfassung/digitaltechnik/images/Multiplikation.jpg
Normal file
After Width: | Height: | Size: 140 KiB |
BIN
zusammenfassung/digitaltechnik/images/PROM.jpg
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
zusammenfassung/digitaltechnik/images/PU_to_PD.jpg
Normal file
After Width: | Height: | Size: 293 KiB |
BIN
zusammenfassung/digitaltechnik/images/Packchen.jpg
Normal file
After Width: | Height: | Size: 16 KiB |
BIN
zusammenfassung/digitaltechnik/images/SR-FF.jpg
Normal file
After Width: | Height: | Size: 65 KiB |
BIN
zusammenfassung/digitaltechnik/images/SR-Latch.jpg
Normal file
After Width: | Height: | Size: 34 KiB |
BIN
zusammenfassung/digitaltechnik/images/SR-Latch_AND.jpg
Normal file
After Width: | Height: | Size: 31 KiB |
BIN
zusammenfassung/digitaltechnik/images/SRAM.jpg
Normal file
After Width: | Height: | Size: 84 KiB |
BIN
zusammenfassung/digitaltechnik/images/SRT-Latch.jpg
Normal file
After Width: | Height: | Size: 50 KiB |
BIN
zusammenfassung/digitaltechnik/images/Schieberegister.jpg
Normal file
After Width: | Height: | Size: 57 KiB |
BIN
zusammenfassung/digitaltechnik/images/SpeicherOrg.jpg
Normal file
After Width: | Height: | Size: 162 KiB |
BIN
zusammenfassung/digitaltechnik/images/Subtraktion.jpg
Normal file
After Width: | Height: | Size: 44 KiB |
BIN
zusammenfassung/digitaltechnik/images/SyncCounter.jpg
Normal file
After Width: | Height: | Size: 223 KiB |
BIN
zusammenfassung/digitaltechnik/images/SyncCounter2.jpg
Normal file
After Width: | Height: | Size: 109 KiB |
BIN
zusammenfassung/digitaltechnik/images/T-FF.JPG
Normal file
After Width: | Height: | Size: 37 KiB |
BIN
zusammenfassung/digitaltechnik/images/T-FF2.jpg
Normal file
After Width: | Height: | Size: 71 KiB |
BIN
zusammenfassung/digitaltechnik/images/TetradenCodes.jpg
Normal file
After Width: | Height: | Size: 127 KiB |
BIN
zusammenfassung/digitaltechnik/images/Transmissiongates.JPG
Normal file
After Width: | Height: | Size: 73 KiB |
BIN
zusammenfassung/digitaltechnik/images/UmwandlungZahlensys.jpg
Normal file
After Width: | Height: | Size: 83 KiB |
BIN
zusammenfassung/digitaltechnik/images/Volladdierer.jpg
Normal file
After Width: | Height: | Size: 47 KiB |
BIN
zusammenfassung/digitaltechnik/images/Zahler.JPG
Normal file
After Width: | Height: | Size: 58 KiB |
BIN
zusammenfassung/digitaltechnik/images/d_ff_cmos.jpeg
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
zusammenfassung/digitaltechnik/images/d_ff_cmos_2.jpeg
Normal file
After Width: | Height: | Size: 180 KiB |
BIN
zusammenfassung/digitaltechnik/images/dram_store.JPG
Normal file
After Width: | Height: | Size: 87 KiB |
BIN
zusammenfassung/digitaltechnik/images/forward_back_count.JPG
Normal file
After Width: | Height: | Size: 149 KiB |
BIN
zusammenfassung/digitaltechnik/images/nand.png
Normal file
After Width: | Height: | Size: 8.3 KiB |
BIN
zusammenfassung/digitaltechnik/images/nor.png
Normal file
After Width: | Height: | Size: 8.4 KiB |
BIN
zusammenfassung/digitaltechnik/images/not.png
Normal file
After Width: | Height: | Size: 4.9 KiB |
BIN
zusammenfassung/digitaltechnik/images/pnmosDetConv.png
Normal file
After Width: | Height: | Size: 13 KiB |
BIN
zusammenfassung/digitaltechnik/images/pnmosconv.png
Normal file
After Width: | Height: | Size: 61 KiB |
BIN
zusammenfassung/digitaltechnik/images/sram_read.JPG
Normal file
After Width: | Height: | Size: 113 KiB |
BIN
zusammenfassung/digitaltechnik/images/sram_write.JPG
Normal file
After Width: | Height: | Size: 200 KiB |
BIN
zusammenfassung/digitaltechnik/images/tg.jpeg
Normal file
After Width: | Height: | Size: 106 KiB |
@@ -0,0 +1,59 @@
|
||||
\section{Einfache Hardwarekomponente}
|
||||
|
||||
\subsection{Multiplexer und Demultiplexer}
|
||||
|
||||
Multiplexer ermöglichen das durch Steuersignale gewählte Aufschalten eines Eingangssignal aus mehreren möglichen:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Multiplexer.jpg}
|
||||
\end{center}
|
||||
|
||||
Demultiplexer nehmen Daten aus einem einzigen Kanal und verteilen es auf einen beliebigen Ausgang.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Demultiplexer.jpg}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Halb- und Volladdierer}
|
||||
|
||||
Halbaddierer sind Rechenschaltungen, die zwei Dualzahlen addieren. Ausgänge: SUM (Summe), CO (Carry, Übertrag)
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Halbaddierer.jpg}
|
||||
\end{center}
|
||||
|
||||
Volladdierer haben einen zusätzlichen Eingang CI (Carry in), dieser ermöglicht das Bilden von Mehrbit-Addierer.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Volladdierer.jpg}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Mehrbit-Addierer (Paralleladdierer)}
|
||||
|
||||
Ein \emph{Paralleladdierer} in Normalform ist sehr aufwendig zu realisieren, da $\sim n \cdot 2^{2n - 1}$ Min-/Maxterme verknüpft werden müssen. \emph{Vorteil}: Laufzeit unabhängig von Stellenanzahl \medskip
|
||||
|
||||
Ein \emph{Ripple-Carry Addierer} ist eine Kaskadierung von Volladdierer. Einfach skalierbar, leidet aber am 'ripple' Effekt, d.h. Laufzeiten addieren sich auf. \medskip
|
||||
|
||||
Der \emph{Carry-Look-Ahead Addierer} kombiniert die Vorteil der beiden, d.h. man kaskadiert die Addierer, aber berechnet die Überträge parallel zur Summenbildung. (Berechnungsaufwand linear zur Stellenanzahl, aber Laufzeit konstant)
|
||||
|
||||
|
||||
\subsubsection{Ripple-Carry Addierer mit Subtraktion}
|
||||
|
||||
Die Subtraktion erfolgt durch Bildung des 2er-Komplement:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/AddSub.jpg}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Hardware Multiplizierer}
|
||||
|
||||
Folgt dem Prinzip der Bitweisen Multiplikation. Besteht aus folgender Basiszelle:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/HardwareMult.jpg}
|
||||
\end{center}
|
||||
|
||||
Die Multiplikation mit negativen Zahlen im 2er-Komplement ist eher schwierig. Eine Möglichkeit ist der iterative Booth Algorithmus.
|
196
zusammenfassung/digitaltechnik/sections/automaten.tex
Normal file
@@ -0,0 +1,196 @@
|
||||
\section{Automaten}
|
||||
|
||||
Ein Automat beschreibt ein System, welches auf seine Eingänge reagiert und ein Ausgangsignal produziert, dass vom Eingangssignal und momentanen Zustand abhängt. \medskip
|
||||
|
||||
Endliche Automaten, bzw. Finite state machines (FSM), können nur vorprogrammierte Lagen passieren. Schaltungen mit Rückkopplungen sind typische Beispiele für FSM. \medskip
|
||||
|
||||
Bei synchronen Automaten sind alle FF gleich getaktet, d.h. Zustandsänderungen sind synchron mit dem Takt. \medskip
|
||||
|
||||
Mit $n$-D-FF kann eine FSM $2^n$ innere Zustände speichern.
|
||||
|
||||
|
||||
\subsection{Beschreibung von Automaten}
|
||||
|
||||
\subsubsection{Formelle Beschreibung von Automaten}
|
||||
|
||||
\begin{tabular}{l p{50mm}}
|
||||
$X_n = (x_1, \dots, x_e)$ & Eingangsalphabet \\
|
||||
$Y_n = (y_1, \dots, y_b)$ & Ausgangsalphabet \\
|
||||
$Z_n = (z_1, \dots, z_m)$ & Zustandsmenge \\
|
||||
$Z_0 \in Z$ & Anfangszustand \\
|
||||
$f_{c1}:(X_n, Z_n) \to Z_{n+1}$ & Folgezustandsfunktion \\
|
||||
$f_{c2}:(X_n, Z_n) \to Y_n$ & Ausgangsfunktion \\
|
||||
\end{tabular}
|
||||
|
||||
\subsubsection{Zustandsfolgetabellen (Folgezustandstabellen)}
|
||||
|
||||
Listet in Form einer Wahrheitstabelle alle Kombinationen des aktuellen Zustandvektors $Z_n$ und Eingangsvektor $X_n$, aus welchen der Ausgangsvektor $Y_n$ und Folgezustandvektor $Z_{n+1}$ entsteht.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/Automat_1.jpg}
|
||||
\end{center}
|
||||
|
||||
Man kann die verschiedenen Vektoren abstrahieren durch Dualzahlen oder ihnen sinnvolle Namen geben, welche den Zustand/Eingang/Ausgang erklären.
|
||||
\\
|
||||
Um die Anzahl Zeilen und Spalten einer Zustandsfolgetabelle zu bestimmen kann man die folgenden Formeln verwenden.
|
||||
|
||||
\eqbox{$Z = 2 ^{eb + zb}$}
|
||||
|
||||
\eqbox{$S = eb + (2 \cdot zb) + ab$}
|
||||
|
||||
$eb$ ist die Anzahl Eingangsbits, $zb$ die Anzahl Zustandsbits und $ab$ die Anzahl Ausgangsbits.
|
||||
|
||||
\subsubsection{Zustandsdiagramme (Zustandsgraphen)}
|
||||
|
||||
Äquivalente graphische Darstellung der Folgezustandstabelle. Zustandsdiagramme bestehen aus Kanten und Knoten, siehe spätere Abbildungen bei den verschiedenen Automatentypen.
|
||||
|
||||
|
||||
\subsection{Mealy-Automat}
|
||||
|
||||
Bei einem Mealy-Automat beinflussen Eingangsveränderungen das Ausgangsignal jederzeit, d.h. das Ausgangssignal ist Störungsanfällig. Ein Mealy-Automat hat folgende Struktur:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Mealy_1.jpg} \medskip
|
||||
|
||||
\eqbox{$Y_n = f_{C2}(X_n, Z_n) \qquad Z_{n+1} = f_{C1}(X_n, Z_n)$}
|
||||
\end{center}
|
||||
|
||||
Erst bei einem Taktwechsel $t_n \to t_{n + 1}$ schalten die D-FF, d.h. $Z_{n + 1} \to Z_n$.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Mealy_2.jpg}
|
||||
\end{center}
|
||||
|
||||
\vfill
|
||||
|
||||
\subsection{Moore-Automat}
|
||||
|
||||
Sonderfall des Mealy-Automat, wo $Y_n$ nur von getaktetem $Z_n$ abhängt. Aus diesem Grund ist er weniger Störungsanfällig.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Moore_1.jpg} \medskip
|
||||
|
||||
\eqbox{$Y_n = f_{C2}(Z_n) \qquad Z_{n+1} = f_{C1}(X_n, Z_n)$}
|
||||
\end{center}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Moore_2.jpg}
|
||||
\end{center}
|
||||
|
||||
Eine \emph{komplett störungssichere Automatenfunktion} ist jedoch nur möglich, wenn die Eingangswerte $X_n$ mit gleich getakteten D-FF synchronisiert werden.
|
||||
|
||||
|
||||
\subsection{Medwedjew-Automat}
|
||||
|
||||
Ausgangsvektor $Y_n$ ist identisch mit dem Zustandsvektor $Z_n$.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Medwedjew.jpg} \medskip
|
||||
|
||||
\eqbox{$Y_n = Z_n \qquad Z_{n+1} = f_{C1}(X_n, Z_n)$}
|
||||
\end{center}
|
||||
|
||||
\vfill
|
||||
|
||||
\subsection{Entwurf eines Automaten}
|
||||
|
||||
Die Normale Entwurfsabfolge ist, wie folgt:
|
||||
|
||||
\begin{enumerate}
|
||||
\item Auftrag lesen und analysieren
|
||||
\item Zustandsmenge bestimmen, daraus folgt Anzahl Zustandsvariablen und D-FF.
|
||||
\item Kodierung: Eingangs- und Ausgangsvariablen definieren
|
||||
\item Darstellung der Zustandsfolge in einem \emph{Zustandsdiagram}
|
||||
\item \emph{Zustandsfolgetabelle} aufstellen.
|
||||
\item Minimierung der Ausgangs- und Übergangsfunktionen mit \emph{KV-Diagrammen}
|
||||
\item Einfluss unbenutzter Zustände (Don't Cares) überprüfen!
|
||||
\item Schaltplan anhand der Schaltfunktion konstruieren
|
||||
\end{enumerate}
|
||||
|
||||
Wenn das Schaltwerk eines Automaten vorgegeben ist, wird die Reihenfolge vertauscht.
|
||||
|
||||
|
||||
\subsection{Umwandlung Mealy $\Leftrightarrow$ Moore}
|
||||
|
||||
Achtung: Bei der Umwandlung verändert sich das Zeitverhalten der Ausgänge.
|
||||
|
||||
\subsubsection{Moore $\to$ Mealy}
|
||||
|
||||
Die Moore zu Mealy Umwandlung ist einfach, da einfach die Ausgänge von den Knoten der Folgezustände auf die entsprechenden Kanten gewechselt werden müssen.
|
||||
|
||||
\subsubsection{Mealy $\to$ Moore}
|
||||
|
||||
Ein Mealy-Automat lässt sich immer in einen Moore-Automat mit gleicher Funktion umwandeln, dieser besitzt aber in der Regel mehr Zustände.
|
||||
|
||||
Eine direkte Moore Implementierung ist nur möglich, wenn jeder Zustand $Z_n$, unabhängig von $X_n$, immer das gleiche Ausgangssignal $Y_n$ produziert. Ist dies nicht der Fall, dann muss man neue Zustände definieren.
|
||||
|
||||
|
||||
\subsection{Asynchronzähler}
|
||||
|
||||
Ein einfacher Asynchron Vorwärtszähler aus T-FF sieht, wie folgt, aus:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/AsyncCounter.jpg}
|
||||
\end{center}
|
||||
|
||||
Will man einen Rückwärtszähler realisieren, dann muss man auf die positive Flanke gesteuerte FFs verwenden ($0 \to 1$) und statt $Q_i$ die invertierten Ausgänge $\not{Q}_i$ benutzen. \medskip
|
||||
|
||||
Die Problematik vom Asynchronzähler ist, dass die Zustandsänderungen einen 'ripple' Effekt aufzeigen, d.h. die FF-Verzögerungszeiten kumulieren sich entlang der Schaltung. Die maximale Taktfrequenz, für welche ein Asynchronzähler 'theoretisch' noch funktioniert, ist:
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$f_{max} = \dfrac{1}{\sum t_{pd,FFs}}$}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Modulo-n Zähler}
|
||||
|
||||
Ein Modulo-n Zähler zählt bis zu einem bestimmten Zustand $n$ und springt dann zum vorgegebenen Anfangszustand zurück. Dafür benötigt man FFs mit Asychronen Reset und Set Eingängen, welche benutzt werden um den Rücksprung zum Anfangszustand auszuführen.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/AsyncCounter2.jpg}
|
||||
\end{center}
|
||||
|
||||
Der Zustand $n+1$ ist kurzzeitig für die Durchlaufzeit des AND-Gatters vorhanden an den Ausgängen, bis der Rücksprung zum Anfangszustand durchgeführt wurde.
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{Synchronzähler}
|
||||
|
||||
Bei einem Synchronzähler haben alle FF den gleichen Takt. Synchronzähler sind meist Medwedjew-Automanten, wo der Steuereingang benutzt wird um zwischen Vorwärts- und Rückwartszählen zu wechseln. Beispiel anhand eines Modulo-6 Zählers mit Anfangszustand '1':
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/SyncCounter.jpg}
|
||||
\end{center}
|
||||
|
||||
Falls JK-FF verwendet werden müssen, dann muss man bei der Minimierung mit dem KV-Diagramm aufpassen, dass man die charakteristische Gleichung des JK-FF einhält.
|
||||
|
||||
|
||||
\subsection{Vorwärts-Rückwärtszähler (Reversible Zähler)}
|
||||
|
||||
Ein grosser reversibler Zähler ist relativ aufwendig zu realisieren als Automat. Einfacher ist es D-FFs geschickt mit einem Addierer zu kombinieren.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.2\textwidth]{images/SyncCounter2.jpg}
|
||||
\end{center}
|
||||
|
||||
Für das Wechseln zwischen Vorwärts- und Rückwärtszählen wechselt man beim Addierer einfach zwischen Addition und Subtraktion (2er Komplement).
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{Frequenzteiler mit einem Zähler}
|
||||
|
||||
Gegeben ist ein Zähler mit $N$ Zuständen und einem Anfangszustand $k$. Wenn der Zustand $N$ erreicht wird, dann wird bei der nächsten Taktflanke der Anfangszustand $k$ geladen und der T-FF wechselt seinen Zustand.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/Frequenzteiler2.jpg}
|
||||
\end{center}
|
||||
|
||||
Mit einer solchen Schaltung kann man einen Frequenzteiler realisieren, welcher flexibler ist in seinem Teilungsverhältnis als ein simpler Frequenzteiler aus nur T-FFs. \medskip
|
||||
|
||||
Der Ausgang vom T-FF hat die Frequenz:
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$f_{out} = \dfrac{f_{in}}{2 (N - k + 1)}$}
|
||||
\end{center}
|
||||
|
||||
|
96
zusammenfassung/digitaltechnik/sections/boolsche_algebra.tex
Normal file
@@ -0,0 +1,96 @@
|
||||
\section{Boolsche Algebra}
|
||||
|
||||
Es gelten folgende Grundgesetze, wie in der Algebra:
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{r l l} \toprule
|
||||
Kommutativität & $A \land B = B \land A$ \\
|
||||
& $A \lor B = B \lor A$ \\
|
||||
Assoziativität & $A \land (B \land C) = (A \land B) \land C$ \\
|
||||
& $A \lor (B \lor C) = (A \lor B) \lor C$ \\
|
||||
Distributivität & $(\textcolor{blue}{A\,\land}~B) \lor (\textcolor{blue}{A\,\land}\,C) = \textcolor{blue}{A\,\land}\,(B \lor C)$ \\
|
||||
& $(\textcolor{blue}{A\,\lor}~B) \land (\textcolor{blue}{A\,\lor}\,C) = \textcolor{blue}{A\,\lor}\,(B \land C)$ \\ \bottomrule
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
Aus diesem Grund gilt folgende für die Logikminimierung sehr nützliche Umwandlung:
|
||||
|
||||
\begin{center}
|
||||
\eqboxf{$\land \rightleftharpoons \cdot$ \qquad $\lor \rightleftharpoons +$}
|
||||
\end{center}
|
||||
|
||||
Zusätzlich zu den Grundregeln gelten folgende Regeln:
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{r l l} \toprule
|
||||
Nicht & $\overline{\overline{A}} = A$ & \\
|
||||
Null-Theorem & $A \lor 0 = A$ & $A \land 0 = 0$ \\
|
||||
Eins-Theorem & $A \lor 1 = 1$ & $A \land 1 = A$ \\
|
||||
Idempotenz & $A \lor A = A$ & $A \land A = A$ \\
|
||||
Verknüpfung mit Komplement & $A \lor \overline{A} = 1$ & $A \land \overline{A} = 0$ \\ \midrule
|
||||
Adsorptionsgesetze & \multicolumn{2}{l}{$A \lor (\overline{A} \land B) = A \lor B$} \\
|
||||
& \multicolumn{2}{l}{$A \land (\overline{A} \lor B) = A \land B$} \\
|
||||
Absorptionsgesetze & \multicolumn{2}{l}{$A \lor (A \land B) = A$} \\
|
||||
& \multicolumn{2}{l}{$A \land (A \lor B) = A$} \\
|
||||
Nachbarschafts Gesetze & \multicolumn{2}{l}{$(A \land B) \lor (\overline{A} \land B) = B$} \\
|
||||
& \multicolumn{2}{l}{$(A \lor B) \land (\overline{A} \lor B) = B$} \\ \bottomrule
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{De Morgan'sche Gesetze}
|
||||
|
||||
Beziehungen zwischen NAND/NOR und AND/OR:
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{r l} \toprule
|
||||
Erstes Gesetz: & $\overline{A \land \dots \land B} = \not{A} \lor \dots \lor \not{B}$ \\
|
||||
Zweites Gesetz: & $\overline{A \lor \dots \lor B} = \not{A} \land \dots \land \not{B}$ \\ \bottomrule
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
Daraus folgen zwei sehr nützliche Umwandlungen:
|
||||
|
||||
\begin{center}
|
||||
\eqboxf{$A \land \dots \land B = \overline{\not{A} \lor \dots \lor \not{B}} \qquad A \lor \dots \lor B = \overline{\not{A} \land \dots \land \not{B}}$}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Normalformen}
|
||||
|
||||
Der \emph{Minterm} ist eine AND-Verknüpfung, welcher $'1'$ ergibt für nur eine Kombination der Schaltungsvariablen. \medskip
|
||||
|
||||
Der \emph{Maxterm} ist eine OR-Verknüpfung, welcher $'0'$ ergibt für nur eine Kombination der Schaltungsvariablen. Bei der Bildung der Maxterme \emph{müssen die Variablen invertiert werden}!\medskip
|
||||
|
||||
\begin{center}
|
||||
\renewcommand{\arraystretch}{1.25}
|
||||
\begin{tabular}{|c c|c|c|c|} \hline
|
||||
A & B & Z & Minterme & Maxterme \\ \hline
|
||||
0 & 0 & 1 & $\overline{A} \land \overline{B}$ & \\
|
||||
0 & 1 & 0 & & $A \lor \overline{B}$ \\
|
||||
1 & 0 & 0 & & $\overline{A} \lor B$ \\
|
||||
1 & 1 & 1 & $A \land B$ & \\ \hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\subsubsection{Disjunktive Normalform DNF (ODER-Normalform)}
|
||||
|
||||
Besteht aus einer ODER-Verknüpfung aller Minterme:
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$Z = (\not{A} \land \not{B}) \lor (A \land B)$}
|
||||
\end{center}
|
||||
|
||||
\subsubsection{Konjunktive Normalform KNF (UND-Normalform)}
|
||||
|
||||
Besteht aus einer UND-Verknüpfung aller Maxterme:
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$\not{Z} = (A \lor \not{B}) \land (\not{A} \lor B)$}
|
||||
\end{center}
|
||||
|
||||
\subsubsection{Kanonische Normalform}
|
||||
|
||||
Die kanonische Normalform ist die unvereinfachte Normalform einer Wahrheitstabelle. Sie gibt also nicht notwendigerweise die einfachsten Funktionsgleichungen an.
|
||||
\vfill
|
134
zusammenfassung/digitaltechnik/sections/cmos.tex
Normal file
@@ -0,0 +1,134 @@
|
||||
\section{CMOS Gatter}
|
||||
|
||||
High Pegel ''H'': 0.9-0.7V \qquad Low Pegel ''L'': 0.15-0V \medskip
|
||||
|
||||
\begin{minipage}{0.48\linewidth}
|
||||
\subsubsection{NMOS}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\node[circ, label=90:{\small $V_{DD} = 0.8 \si{\volt}$}](origin) at (0,0) {};
|
||||
\node[thick, nmos, anchor=D] (nmos1) at(0, -2) {}
|
||||
(nmos1.gate) node[anchor=east] {G}
|
||||
(nmos1.drain) node[anchor=west, yshift=-0.15cm] {D}
|
||||
(nmos1.source) node[anchor=west,yshift=+0.15cm] {S};
|
||||
\draw[thick]
|
||||
(origin)
|
||||
to[R=$R$] (0,-1.8) node[circ] (ybase) {}
|
||||
to[] (0, -2);
|
||||
|
||||
|
||||
\draw[thick] (nmos1.S) -- (0, -4) coordinate(gnd);
|
||||
|
||||
\path[draw] (ybase) --++(right:10mm) node[point, label=0:Y] {};
|
||||
\path[draw, very thick] (-0.25, -4) -- (gnd) -- (0.25, -4);
|
||||
\end{circuitikz} \medskip
|
||||
|
||||
\begin{tabular}{c|c|c}
|
||||
G & Schalter & Y \\
|
||||
\hline
|
||||
0 & offen & 1 \\
|
||||
1 & zu & 0
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\vline
|
||||
\begin{minipage}{0.48\linewidth}
|
||||
\subsubsection{PMOS}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\coordinate (gnd) at (0, -4);
|
||||
\node[circ, label=90:{\small $V_{DD} = 0.8 \si{\volt}$}] (vdd) at (0,0) {};
|
||||
\node[pmos, thick] (pmos) at (0, -1){}
|
||||
(pmos.gate) node[anchor=east] {G}
|
||||
(pmos.source) node[anchor=west,yshift=-0.15cm] {S}
|
||||
(pmos.drain) node[anchor=west, yshift=+0.15cm] {D};
|
||||
|
||||
\draw[thick] (gnd)
|
||||
to[R=$R$] (0, -2)
|
||||
-- (0, -2) node[circ] (ybase) {}
|
||||
-- (pmos.D);
|
||||
|
||||
\draw[thick] (pmos.S) -- (vdd);
|
||||
|
||||
\path[draw] (ybase) --++(right:10mm) node[point, label=0:Y] {};
|
||||
\path[draw, very thick] (-0.25, -4) -- (gnd) -- (0.25, -4);
|
||||
\end{circuitikz} \medskip
|
||||
|
||||
\begin{tabular}{c|c|c}
|
||||
G & Schalter & Y \\
|
||||
\hline
|
||||
0 & zu & 1 \\
|
||||
1 & offen & 0
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage} \medskip
|
||||
|
||||
|
||||
Zustand NN: Potential an Source unbestimmt, ''free floating''
|
||||
|
||||
|
||||
\subsection{Konstruktion von CMOS-Gatter}
|
||||
|
||||
CMOS-Gatter benötigen \emph{pro} Eingang 1 NMOS + 1 PMOS. \medskip
|
||||
|
||||
Sie bestehen aus zwei ergänzenden Schaltungsteilen:
|
||||
|
||||
\begin{center}
|
||||
\begin{minipage}{0.3\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\node[circ, label=90:{\small $V_{DD} = 0.8 \si{\volt}$}] at (0,0) (origin) {};
|
||||
\node[draw, dotted](pmos) at(0,-0.5) {PMOS};
|
||||
\node[draw, dotted](nmos) at (0, -1.5) {NMOS};
|
||||
\coordinate(gnd) at (0, -2){};
|
||||
\draw[] (origin) -- (pmos)
|
||||
(pmos) -- (nmos)
|
||||
(nmos) -- (gnd);
|
||||
\path[draw] (0,-1) --++(right:5mm) node[fill = white] {Y};
|
||||
\path[draw, thick] (-0.25, -2) -- (gnd) -- (0.25, -2);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.55\linewidth}
|
||||
\begin{flushleft}
|
||||
\begin{tabular}{l l}
|
||||
Pull-u\textcolor{red}{p} Schaltung: & \textcolor{red}{P}MOS \\
|
||||
Pull-dow\textcolor{red}{n} Schaltung: & \textcolor{red}{N}MOS \\
|
||||
\end{tabular}
|
||||
\end{flushleft}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
|
||||
\subsubsection{Funktionsgleichung CMOS-Gatter}
|
||||
|
||||
\begin{tabular}{l l l}
|
||||
Pull-Up: & $Y_{\text{pu}} = 1$ & Eingänge Invertiert \\
|
||||
Pull-Down: & $Y_{\text{pd}} = 0$ & Eingänge nicht Invertiert \\
|
||||
\end{tabular}
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$Y_{\text{pu}} = \overbrace{\underbrace{(\not{A} \land \not{B})}_{\text{Seriell} } \lor \not{C}}^{\text{Paralell} } \quad \Leftrightarrow \quad$
|
||||
$Y_{\text{pd}} = \overbrace{\overline{\underbrace{(A \lor B)}_{\text{Paralell} } \land C}}^{\text{Seriell} }$}
|
||||
|
||||
\includegraphics[width = 0.32\textwidth]{images/pnmosDetConv.png}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{Umwandlung zwischen Pull-up und Pull-down}
|
||||
|
||||
\begin{enumerate}
|
||||
\item Schaltung in Parallele und Serielle Blöcke zerlegen
|
||||
\item Umwandeln: Parallele $\rightleftharpoons$ Serielle Blöcke
|
||||
\item 1),2) wiederholen bis einzelnen Transistoren übrig sind
|
||||
\item Umwandeln: PMOS $\rightleftharpoons$ NMOS
|
||||
\item Schaltungstyp entsprechend Y, GND bzw. VDD setzen
|
||||
\end{enumerate} \medskip
|
||||
|
||||
\includegraphics[width = 0.3\textwidth]{images/PU_to_PD.jpg}
|
||||
\vfill
|
||||
|
||||
\subsection{Zeitverhalten CMOS Gatter}
|
||||
|
||||
\includegraphics[width = 0.32\textwidth]{images/Laufzeit.jpg}
|
||||
|
||||
Durchschnittliche Verzögerung: \eqbox{$t_d = \dfrac{t_{pHL} + t_{pLH}}{2}$}
|
79
zusammenfassung/digitaltechnik/sections/codes.tex
Normal file
@@ -0,0 +1,79 @@
|
||||
\section{Codes}
|
||||
|
||||
\subsection{Tetraden-Codes}
|
||||
|
||||
\begin{itemize}
|
||||
\item \textbf{BCD}: Häufig benutzt, keine Rundungsfehler!
|
||||
\item \textbf{Excess-3 und Aiken}: Ziffern liegen symmetrisch im Binärfeld, günstige Verteilung für dezimale Rechenwerke
|
||||
\item \textbf{4-2-2-1}: Interessante Gewichtung für A/D Wandler
|
||||
\item \textbf{Gray und O'Brien}: Einschrittige Codes (Schwächere Auswirkung von Übertragungsfehlern), keine Fehlinformation bei Übergängen (Winkelkodierung)
|
||||
\end{itemize}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/TetradenCodes.jpg}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Parity-Bits}
|
||||
|
||||
Redundante Kodierung, welche Übertragungsfehler erkennen kann, solange \emph{höchstens} ein Fehler pro Bitgruppe geschieht. \medskip
|
||||
|
||||
Bitgruppe wird durch ein Parity-Bit ergänzt, welches die Bitgruppe auf geradzähligkeit ($P_E$) oder ungeradzähligkeit ($P_O$) überprüft. Der Datenempfänger kann so die Richtigkeit der Datenübertragung überprüfen.
|
||||
|
||||
\begin{center}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\subsubsection{Korrekt mit $P_E$}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\begin{pgfonlayer}{l1}
|
||||
\matrix (pm) [
|
||||
matrix of nodes,
|
||||
nodes in empty cells
|
||||
]{
|
||||
0 & 1 & 0 & 1 & 0 \\
|
||||
1 & 1 & 0 & 1 & 1 \\
|
||||
1 & 0 & 1 & 1 & 1 \\
|
||||
0 & 0 & 1 & 0 & 1 \\
|
||||
0 & 0 & 0 & 1 & 1 \\
|
||||
};
|
||||
\end{pgfonlayer}
|
||||
\begin{pgfonlayer}{l1}
|
||||
\draw[] (pm-4-1.south west) -- (pm-4-4.south east) -- (pm-1-4.north east);
|
||||
\end{pgfonlayer}
|
||||
\fill[draw, thick, darkgreen!80, rounded corners = 3pt, fill opacity = 0.3] ($(pm-5-1.north west) + (1.5pt, -1.5pt)$) rectangle ($(pm-5-5.south east) + (-1.5pt, 1.5pt)$);
|
||||
\begin{pgfonlayer}{bg}
|
||||
\fill[draw, thick, blue!80, rounded corners = 3pt, fill opacity = 0.3] ($(pm-1-5.north west) + (1.5pt, -1.5pt)$) rectangle ($(pm-5-5.south east) + (-1.5pt, 1.5pt)$);
|
||||
\end{pgfonlayer}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\subsubsection{Fehler mit $P_E$}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\begin{pgfonlayer}{l2}
|
||||
\matrix (pm) [
|
||||
matrix of nodes,
|
||||
nodes in empty cells
|
||||
]{
|
||||
0 & 1 & 0 & 1 & 0 \\
|
||||
1 & 1 & 1 & 1 & \node[text = blue] {\bfseries 1}; \\
|
||||
1 & 0 & 1 & 1 & 1 \\
|
||||
0 & 0 & 1 & 0 & 1 \\
|
||||
0 & 0 & \node[text = blue] {\bfseries 0}; & 1 & 1 \\
|
||||
};
|
||||
\end{pgfonlayer}
|
||||
\begin{pgfonlayer}{l1}
|
||||
\draw[] (pm-4-1.south west) -- (pm-4-4.south east) -- (pm-1-4.north east);
|
||||
\end{pgfonlayer}
|
||||
\begin{pgfonlayer}{bg}
|
||||
\fill[mred, draw, thick, fill opacity = 0.3, rounded corners = 3pt] (pm-1-3.north west) rectangle (pm-5-3.south east);
|
||||
\fill[mred, draw, thick, fill opacity = 0.3, rounded corners = 3pt] (pm-2-1.north west) rectangle (pm-2-5.south east);
|
||||
\end{pgfonlayer}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
\vfill
|
||||
|
||||
Für eine Fehlerkorrektur muss zusätzlich ein Prüfwort übertragen werden, welches Spaltenweise ein Parity-Bit bildet. Der Empfänger kann so das fehlerbehaftete Bit in der Matrixdarstellung (siehe Bsp.) erkennen und korrigieren.
|
306
zusammenfassung/digitaltechnik/sections/gates.tex
Normal file
@@ -0,0 +1,306 @@
|
||||
\section{Gatter}
|
||||
|
||||
\subsection{AND- und OR-Gatter}
|
||||
|
||||
\begin{minipage}{0.27\linewidth}
|
||||
\subsubsection{AND}
|
||||
\begin{equation*}
|
||||
Z = A \land B
|
||||
\end{equation*}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[and gate] (and) at (0,0) {};
|
||||
\node[] (iA) at (-1, 0.4) {A};
|
||||
\node[] (iB) at (-1, -0.4) {B};
|
||||
\node[] (oZ) at (1, 0) {Z};
|
||||
\draw (iA.east) --++ (right:2mm) |- (and.input 1);
|
||||
\draw (iB.east) --++ (right:2mm) |- (and.input 2);
|
||||
\draw (and.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\vline \,
|
||||
\begin{minipage}{0.27\linewidth}
|
||||
\subsubsection{OR}
|
||||
\begin{equation*}
|
||||
Z = A \lor B
|
||||
\end{equation*}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[or gate] (or) at (0,0) {};
|
||||
\node[] (iA) at (-1, 0.4) {A};
|
||||
\node[] (iB) at (-1, -0.4) {B};
|
||||
\node[] (oZ) at (1, 0) {Z};
|
||||
\draw (iA.east) --++ (right:2mm) |- (or.input 1);
|
||||
\draw (iB.east) --++ (right:2mm) |- (or.input 2);
|
||||
\draw (or.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.4\linewidth}
|
||||
\begin{tabular}{|c c|c|c|} \hline
|
||||
A & B & AND & OR \\ \hline
|
||||
0 & 0 & 0 & 0 \\
|
||||
0 & 1 & 0 & 1 \\
|
||||
1 & 0 & 0 & 1 \\
|
||||
1 & 1 & 1 & 1 \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
|
||||
|
||||
\subsection{NAND- und NOR-Gatter}
|
||||
|
||||
\begin{minipage}{0.25\linewidth}
|
||||
\subsubsection{NAND}
|
||||
\begin{equation*}
|
||||
Z = \overline{A \land B}
|
||||
\end{equation*}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[nand gate] (nand) at (0,0) {};
|
||||
\node[] (iA) at (-0.8, 0.4) {A};
|
||||
\node[] (iB) at (-0.8, -0.4) {B};
|
||||
\node[] (oZ) at (0.8, 0) {Z};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand.input 2);
|
||||
\draw (nand.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\vline \,
|
||||
\begin{minipage}{0.25\linewidth}
|
||||
\subsubsection{NOR}
|
||||
\begin{equation*}
|
||||
Z = \overline{A \lor B}
|
||||
\end{equation*}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[nor gate] (nor) at (0,0) {};
|
||||
\node[] (iA) at (-0.8, 0.4) {A};
|
||||
\node[] (iB) at (-0.8, -0.4) {B};
|
||||
\node[] (oZ) at (0.8, 0) {Z};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nor.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nor.input 2);
|
||||
\draw (nor.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\begin{tabular}{|c c|c|c|}
|
||||
\hline
|
||||
A & B & NAND & NOR \\
|
||||
\hline
|
||||
0 & 0 & 1 & 1 \\
|
||||
0 & 1 & 1 & 0 \\
|
||||
1 & 0 & 1 & 0 \\
|
||||
1 & 1 & 0 & 0 \\
|
||||
\hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.47\linewidth}
|
||||
\subsubsection{NAND}
|
||||
\includegraphics[height = 45mm]{images/nand.png}
|
||||
\end{minipage}
|
||||
\vline \,
|
||||
\begin{minipage}{0.47\linewidth}
|
||||
\subsubsection{NOR}
|
||||
\includegraphics[height = 45mm]{images/nor.png}
|
||||
\end{minipage}
|
||||
|
||||
|
||||
\subsection{NOT}
|
||||
|
||||
\begin{minipage}{0.3\linewidth}
|
||||
\begin{equation*}
|
||||
Z = \overline{A}
|
||||
\end{equation*}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[not gate] (not) at (0,0) {};
|
||||
\node[] (iA) at (-0.8, 0) {A};
|
||||
\node[] (oZ) at (0.8, 0) {Z};
|
||||
\draw (iA.east) -- (not.input);
|
||||
\draw (not.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.25\linewidth}
|
||||
\begin{tabular}{|c|c|} \hline
|
||||
A & NOT \\ \hline
|
||||
0 & 1 \\
|
||||
1 & 0 \\ \hline
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.3\linewidth}
|
||||
\includegraphics[height = 25mm]{images/not.png}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.46\linewidth}
|
||||
\subsubsection{NOT aus NOR}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[nor gate] (gate) at (0,0) {};
|
||||
\node[] (iA) at (-1, 0) {A};
|
||||
\node[] (oZ) at (1, 0) {Z};
|
||||
\draw (iA.east) --++ (right:2mm) |- (gate.input 1);
|
||||
\draw (iA.east) --++ (right:2mm) |- (gate.input 2);
|
||||
\draw (gate.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\vline \,
|
||||
\begin{minipage}{0.46\linewidth}
|
||||
\subsubsection{NOT aus NAND}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[nand gate] (gate) at (0,0) {};
|
||||
\node[] (iA) at (-1, 0) {A};
|
||||
\node[] (oZ) at (1, 0) {Z};
|
||||
\draw (iA.east) --++ (right:2mm) |- (gate.input 1);
|
||||
\draw (iA.east) --++ (right:2mm) |- (gate.input 2);
|
||||
\draw (gate.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{XOR und XNOR}
|
||||
|
||||
\begin{minipage}{0.47\linewidth}
|
||||
\subsubsection{XOR}
|
||||
\begin{tabular}{l l}
|
||||
$Z$ & $= A \oplus B$ \\
|
||||
& $= (A \land \overline{B}) \lor (\overline{A} \land B)$ \\
|
||||
\end{tabular}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[xor gate] (xor) at (0,0) {};
|
||||
\node[] (iA) at (-0.8, 0.4) {A};
|
||||
\node[] (iB) at (-0.8, -0.4) {B};
|
||||
\node[] (oZ) at (0.8, 0) {E};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (xor.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (xor.input 2);
|
||||
\draw (xor.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\vline \,
|
||||
\begin{minipage}{0.47\linewidth}
|
||||
\subsubsection{XNOR}
|
||||
\begin{tabular}{l l}
|
||||
$Z$ & $= \overline{A \oplus B}$ \\
|
||||
& $= (A \land B) \lor (\overline{A} \land \overline{B})$ \\
|
||||
\end{tabular}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[xnor gate] (xnor) at (0,0) {};
|
||||
\node[] (iA) at (-0.8, 0.4) {A};
|
||||
\node[] (iB) at (-0.8, -0.4) {B};
|
||||
\node[] (oZ) at (0.8, 0) {F};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (xnor.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (xnor.input 2);
|
||||
\draw (xnor.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{center}
|
||||
\begin{tabular}{|c c|c|c|}\hline
|
||||
A & B & XOR & XNOR \\\hline
|
||||
0 & 0 & 0 & 1 \\
|
||||
0 & 1 & 1 & 0 \\
|
||||
1 & 0 & 1 & 0 \\
|
||||
1 & 1 & 0 & 1 \\\hline
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
\subsection{Gatter aus NAND- und NOR-Gatter}
|
||||
\begin{minipage}{0.47\linewidth}
|
||||
\subsubsection{AND-Gatter aus NOR-Gatter}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[nor gate] (nor1) at (0,0) {};
|
||||
\node[nor gate] (nor2) at (0,-1.1) {};
|
||||
\node[nor gate] (nor3) at (1.1,-0.55) {};
|
||||
\node[] (iA) at (-0.8, 0) {A};
|
||||
\node[] (iB) at (-0.8, -1.1) {B};
|
||||
\node[] (oZ) at (2, -0.55) {Z};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nor1.input 1);
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nor1.input 2);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nor2.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nor2.input 2);
|
||||
\draw (nor1.output) --++ (right:1.5mm) |- (nor3.input 1);
|
||||
\draw (nor2.output) --++ (right:1.5mm) |- (nor3.input 2);
|
||||
\draw (nor3.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\vline \,
|
||||
\begin{minipage}{0.47\linewidth}
|
||||
\subsubsection{OR-Gatter aus NAND-Gatter}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[nand gate] (nand1) at (0,0) {};
|
||||
\node[nand gate] (nand2) at (0,-1.1) {};
|
||||
\node[nand gate] (nand3) at (1.1,-0.55) {};
|
||||
\node[] (iA) at (-0.8, 0) {A};
|
||||
\node[] (iB) at (-0.8, -1.1) {B};
|
||||
\node[] (oZ) at (2, -0.55) {Z};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand1.input 1);
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand1.input 2);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand2.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand2.input 2);
|
||||
\draw (nand1.output) --++ (right:1.5mm) |- (nand3.input 1);
|
||||
\draw (nand2.output) --++ (right:1.5mm) |- (nand3.input 2);
|
||||
\draw (nand3.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\subsubsection{XOR Gatter}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[nand gate] (nand2) at (1.3,0) {};
|
||||
\node[nand gate] (nand3) at (1.3,-1.1) {};
|
||||
\node[nand gate] (nand1) at (0.2,-0.55) {};
|
||||
\node[nand gate] (nand4) at (2.4,-0.55) {};
|
||||
\node[] (iA) at (-0.8, 0.17) {A};
|
||||
\node[] (iB) at (-0.8, -1.27) {B};
|
||||
\node[] (oZ) at (3.3, -0.55) {Z};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand1.input 1);
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand2.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand1.input 2);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand3.input 2);
|
||||
\draw (nand1.output) --++ (right:1.5mm) |- (nand2.input 2);
|
||||
\draw (nand1.output) --++ (right:1.5mm) |- (nand3.input 1);
|
||||
\draw (nand2.output) --++ (right:1.5mm) |- (nand4.input 1);
|
||||
\draw (nand3.output) --++ (right:1.5mm) |- (nand4.input 2);
|
||||
\draw (nand4.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\subsubsection{XNOR Gatter}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC, thick]
|
||||
\node[nand gate] (nand2) at (1.3,0) {};
|
||||
\node[nand gate] (nand3) at (1.3,-1.1) {};
|
||||
\node[nand gate] (nand1) at (0.2,-0.55) {};
|
||||
\node[nand gate] (nand4) at (2.4,-0.55) {};
|
||||
\node[nand gate] (nand5) at (3.5,-0.55) {};
|
||||
\node[] (iA) at (-0.8, 0.17) {A};
|
||||
\node[] (iB) at (-0.8, -1.27) {B};
|
||||
\node[] (oZ) at (4.4, -0.55) {Z};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand1.input 1);
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand2.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand1.input 2);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand3.input 2);
|
||||
\draw (nand1.output) --++ (right:1.5mm) |- (nand2.input 2);
|
||||
\draw (nand1.output) --++ (right:1.5mm) |- (nand3.input 1);
|
||||
\draw (nand2.output) --++ (right:1.5mm) |- (nand4.input 1);
|
||||
\draw (nand3.output) --++ (right:1.5mm) |- (nand4.input 2);
|
||||
\draw (nand4.output) --++ (right:1.5mm) |- (nand5.input 1);
|
||||
\draw (nand4.output) --++ (right:1.5mm) |- (nand5.input 2);
|
||||
\draw (nand5.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\vfill
|
261
zusammenfassung/digitaltechnik/sections/karnaugh.tex
Normal file
@@ -0,0 +1,261 @@
|
||||
\section{Karnaugh Diagramme (KVD)}
|
||||
|
||||
KV-Diagramme sind eine äquivalente Darstellungsform von Schaltfunktionen in Matrizenform. KVD ermöglichen die unkomplizierte Bildung der \emph{vereinfachten} DNF/KNF. \medskip
|
||||
|
||||
Schema zum ausfüllen eines 4 Variablen KV-Diagramm:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.4\linewidth]{images/KVDia.jpg}
|
||||
\end{center}
|
||||
|
||||
\begin{center}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\matrix (kv) [
|
||||
matrix of nodes,
|
||||
nodes in empty cells,
|
||||
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
||||
nodes = {
|
||||
rectangle,
|
||||
draw = black,
|
||||
text width = 5mm,
|
||||
text height = 5mm,
|
||||
align = center
|
||||
}
|
||||
]{
|
||||
$0$ & $1$ & $X$ & \\
|
||||
& & & \\
|
||||
& $\textcolor{blue}{1}$ & & \\
|
||||
& & & \\
|
||||
};
|
||||
|
||||
\path[draw, decorate, decoration=brace] (kv-1-1.north west) -- (kv-1-2.north east) node [midway, above] {$\not{A}$};
|
||||
\path[draw, decorate, decoration=brace] (kv-1-3.north west) -- (kv-1-4.north east) node [midway, above] {$A$};
|
||||
\path[draw, decorate, decoration=brace] (kv-2-1.south west) -- (kv-1-1.north west) node [midway, left] {$\not{C}$};
|
||||
\path[draw, decorate, decoration=brace] (kv-4-1.south west) -- (kv-3-1.north west) node [midway, left] {$C$};
|
||||
\path[draw, decorate, decoration=brace] (kv-2-4.north east) -- (kv-3-4.south east) node [midway, right] {$D$};
|
||||
\path[draw, decorate, decoration=brace] (kv-1-4.north east) -- (kv-1-4.south east) node [midway, right] {$\not{D}$};
|
||||
\path[draw, decorate, decoration=brace] (kv-4-4.north east) -- (kv-4-4.south east) node [midway, right] {$\not{D}$};
|
||||
\path[draw, decorate, decoration=brace] (kv-4-3.south east) -- (kv-4-2.south west) node [midway, below] {$B$};
|
||||
\path[draw, decorate, decoration=brace] (kv-4-1.south east) -- (kv-4-1.south west) node [midway, below] {$\not{B}$};
|
||||
\path[draw, decorate, decoration=brace] (kv-4-4.south east) -- (kv-4-4.south west) node [midway, below] {$\not{B}$};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\matrix (kv) [
|
||||
matrix of nodes,
|
||||
nodes in empty cells,
|
||||
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
||||
nodes = {
|
||||
rectangle,
|
||||
draw = black,
|
||||
text width = 5mm,
|
||||
text height = 5mm,
|
||||
align = center
|
||||
}
|
||||
]{
|
||||
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead, text = red] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
||||
\node[kvbinhead] {00}; & $0$ & $1$ & $X$ & \\
|
||||
\node[kvbinhead] {01}; & & & & \\
|
||||
\node[kvbinhead, text = darkgreen] {11}; & & $\textcolor{blue}{1}$ & & \\
|
||||
\node[kvbinhead] {10}; & & & & \\
|
||||
};
|
||||
|
||||
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {AB};
|
||||
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {CD};
|
||||
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
|
||||
\begin{center}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\matrix (kv) [
|
||||
matrix of nodes,
|
||||
nodes in empty cells,
|
||||
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
||||
nodes = {
|
||||
rectangle,
|
||||
draw = black,
|
||||
text width = 5mm,
|
||||
text height = 5mm,
|
||||
align = center,
|
||||
text = gray
|
||||
}
|
||||
]{
|
||||
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
||||
\node[kvbinhead] {00}; & & & & \\
|
||||
\node[kvbinhead] {01}; & & & & \\
|
||||
\node[kvbinhead] {11}; & & & & \\
|
||||
\node[kvbinhead] {10}; & & & & \\
|
||||
};
|
||||
|
||||
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {AB};
|
||||
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {CD};
|
||||
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
||||
|
||||
\begin{pgfonlayer}{tl3}
|
||||
\draw[thick, blue, ->, > = stealth] (kv-2-2.center) -- (kv-3-2.center) to[out = 180, in = 180] (kv-5-2.center) -- (kv-4-2.center);
|
||||
\draw[thick, blue, ->, > = stealth] (kv-2-3.center) -- (kv-3-3.center) to[out = 180, in = 180] (kv-5-3.center) -- (kv-4-3.center);
|
||||
\draw[thick, blue, ->, > = stealth] (kv-2-5.center) -- (kv-3-5.center) to[out = 180, in = 180] (kv-5-5.center) -- (kv-4-5.center);
|
||||
\draw[thick, blue, ->, > = stealth] (kv-2-4.center) -- (kv-3-4.center) to[out = 180, in = 180] (kv-5-4.center) -- (kv-4-4.center);
|
||||
\end{pgfonlayer}
|
||||
\begin{pgfonlayer}{tl2}
|
||||
\draw[thick, darkgreen, ->, > = stealth] (kv-4-2.center) -- (kv-2-3.center);
|
||||
\draw[thick, red, ->, > = stealth] (kv-4-3.center) -- (kv-2-5.center);
|
||||
\draw[thick, darkgreen, ->, > = stealth] (kv-4-5.center) -- (kv-2-4.center);
|
||||
\end{pgfonlayer}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\matrix (kv) [
|
||||
matrix of nodes,
|
||||
nodes in empty cells,
|
||||
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
||||
nodes = {
|
||||
rectangle,
|
||||
draw = black,
|
||||
text width = 5mm,
|
||||
text height = 5mm,
|
||||
align = center,
|
||||
text = gray
|
||||
}
|
||||
]{
|
||||
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
||||
\node[kvbinhead] {00}; & & & & \\
|
||||
\node[kvbinhead] {01}; & & & & \\
|
||||
\node[kvbinhead] {11}; & & & & \\
|
||||
\node[kvbinhead] {10}; & & & & \\
|
||||
};
|
||||
|
||||
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {CD};
|
||||
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {AB};
|
||||
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
||||
|
||||
\begin{pgfonlayer}{tl3}
|
||||
\draw[thick, blue, ->, > = stealth] (kv-2-2.center) -- (kv-2-3.center) to[out = 90, in = 90] (kv-2-5.center) -- (kv-2-4.center);
|
||||
\draw[thick, blue, ->, > = stealth] (kv-3-2.center) -- (kv-3-3.center) to[out = 90, in = 90] (kv-3-5.center) -- (kv-3-4.center);
|
||||
\draw[thick, blue, ->, > = stealth] (kv-5-2.center) -- (kv-5-3.center) to[out = 90, in = 90] (kv-5-5.center) -- (kv-5-4.center);
|
||||
\draw[thick, blue, ->, > = stealth] (kv-4-2.center) -- (kv-4-3.center) to[out = 90, in = 90] (kv-4-5.center) -- (kv-4-4.center);
|
||||
\end{pgfonlayer}
|
||||
\begin{pgfonlayer}{tl2}
|
||||
\draw[thick, darkgreen, ->, > = stealth] (kv-2-4.center) -- (kv-3-2.center);
|
||||
\draw[thick, red, ->, > = stealth] (kv-3-4.center) -- (kv-5-2.center);
|
||||
\draw[thick, darkgreen, ->, > = stealth] (kv-5-4.center) -- (kv-4-2.center);
|
||||
\end{pgfonlayer}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
|
||||
Bei 5 Schaltvariablen wird die 5te Schaltvariable mit einer ABCD Matrix für $E$ und einer für $\not{E}$ dargestellt (2D!).
|
||||
|
||||
|
||||
\subsection{Päckchen}
|
||||
|
||||
Orthogonal benachbarte Minterme (bzw. Maxterme) werden zu einem ''Päckchen'' zusammengefasst.
|
||||
|
||||
\begin{minipage}{0.48\linewidth}
|
||||
\hfill \includegraphics[width = 0.4\textwidth]{images/Packchen.jpg}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.48\linewidth}
|
||||
\begin{center}
|
||||
Implizite Anwendung des Nachbarschaftsgesetz: \medskip
|
||||
|
||||
$\Rightarrow (\not{A} \land \not{B}) \lor (A \land \not{B}) = \not{B}$
|
||||
\end{center}
|
||||
\end{minipage} \medskip
|
||||
|
||||
Es gelten folgende Regeln für Päckchen:
|
||||
|
||||
\begin{itemize}
|
||||
\item Päckchen sind rechteckig (Ausnahme: über Ecken)
|
||||
\item \emph{Umfassen möglichst grosse Zweierpotenz}.
|
||||
\item Dürfen über Ecken und Grenzen hinausgehen und sich überlappen.
|
||||
\end{itemize}
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{Don't Care Zustände}
|
||||
|
||||
Redundante oder unmögliche Kombinationen der Eingangsvariablen werden mit einem 'X' im KVD markiert. Man \emph{darf} solche Zustände benutzen um Päckchen zu bilden!
|
||||
|
||||
|
||||
\subsection{Hazard}
|
||||
|
||||
Hazards sind kurzzeitige, unerwünschte Änderung der Signalwerte, die durch Zeitverzögerung der Gatter entstehen.
|
||||
|
||||
\subsubsection{Strukturhazard (Statischer Hazard)}
|
||||
|
||||
Statische Hazards sind im KVD Stellen, an denen sich Päckchen orthogonal berühren, aber nicht überlappen.
|
||||
|
||||
\begin{center}
|
||||
\begin{minipage}{0.48\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\begin{pgfonlayer}{bg}
|
||||
\def\ppad{1.5pt}
|
||||
\matrix (kv) [
|
||||
matrix of nodes,
|
||||
nodes in empty cells,
|
||||
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
||||
nodes = {
|
||||
rectangle,
|
||||
draw = black,
|
||||
text width = 5mm,
|
||||
text height = 5mm,
|
||||
align = center
|
||||
}
|
||||
]{
|
||||
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
||||
\node[kvbinhead] {00}; & 0 & 1 & 1 & 0 \\
|
||||
\node[kvbinhead] {01}; & 0 & 1 & 1 & 0 \\
|
||||
\node[kvbinhead] {11}; & 1 & 1 & 0 & 0 \\
|
||||
\node[kvbinhead] {10}; & 1 & 1 & 0 & 0 \\
|
||||
};
|
||||
|
||||
|
||||
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {AB};
|
||||
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {CD};
|
||||
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
||||
\end{pgfonlayer}
|
||||
|
||||
\draw[blue] ($(kv-2-3.north west) + (1.5pt, -1.5pt)$) rectangle ($(kv-3-4.south east) + (-1.5pt, 1.5pt)$);
|
||||
\draw[blue] ($(kv-4-2.north west) + (1.5pt, -1.5pt)$) rectangle ($(kv-5-3.south east) + (-1.5pt, 1.5pt)$);
|
||||
\draw[darkgreen, thick, dashed] ($(kv-2-3.north west) + (1.5pt, -1.5pt)$) rectangle ($(kv-5-3.south east) + (-1.5pt, 1.5pt)$);
|
||||
|
||||
\begin{pgfonlayer}{tl3}
|
||||
\path[draw, <->, > = stealth, red] ($(kv-3-3.center) + (2pt, 0)$) to[in=45, out = -45] ($(kv-4-3.center) + (2pt, 0)$);
|
||||
\path[draw, <-, > = stealth, red] ($(kv-5-3.center) + (2pt, 0)$) to[in=90, out = -45] ($(kv-5-3.center) + (5pt, -3mm)$);
|
||||
\path[draw, <-, > = stealth, red] ($(kv-2-3.center) + (2pt, 0)$) to[in=270, out = 45] ($(kv-2-3.center) + (5pt, 3mm)$);
|
||||
\end{pgfonlayer}
|
||||
\begin{pgfonlayer}{tl2}
|
||||
\node[text = red, fill = white, fill opacity = 0.8, text opacity = 1, rounded corners = 4pt] at ($(kv-3-3.south east) + (4mm, 0mm)$) {\small Hazard};
|
||||
\node[text = red, fill = white, fill opacity = 0.8, text opacity = 1, rounded corners = 4pt] at ($(kv-5-3.south east) + (4mm, 0mm)$) {\small Hazard};
|
||||
\end{pgfonlayer}
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\emph{Lösung:} Berührendes \textcolor{blue}{Päck-}
|
||||
|
||||
\textcolor{blue}{chen} mit zusätzlichem \textcolor{darkgreen}{Päckchen} (möglichst gross) verbinden.
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
|
||||
\subsubsection{Funktionale Hazards}
|
||||
|
||||
Wenn sich Päckchen diagonal berühren, dann wechseln mindestens zwei Variablen. Dies ist ein funktionaler Hazard und kann \emph{nicht} leicht behoben werden.
|
337
zusammenfassung/digitaltechnik/sections/latches_flipflops.tex
Normal file
@@ -0,0 +1,337 @@
|
||||
\section{Latches und Flipflops}
|
||||
|
||||
Sequentielle Schaltungen welche Rückkopplungen enthalten.
|
||||
|
||||
|
||||
\subsection{Zustandgesteurte Latches}
|
||||
|
||||
\emph{Zustandsgesteuert}: Das Verhalten eines Latches hängt nicht nur von den aktuellen Eingangsvariablen ab, sondern auch von den intern gespeicherten Zuständen.
|
||||
|
||||
|
||||
\subsubsection{SR-Latch}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/SR-Latch.jpg} \medskip
|
||||
|
||||
\eqbox{$Q_{n+1} = S \lor (Q_n \land \not{R}) \quad \text{Bedingung: } R \land S = 0$}
|
||||
\end{center}
|
||||
|
||||
\begin{tabular}{c c|c l}
|
||||
S & R & $Q_{n + 1}$ & \\ \cline{1-3}
|
||||
$0$ & $0$ & $Q_n$ & speichern \\
|
||||
$0$ & $1$ & $0$ & reset \\
|
||||
$1$ & $0$ & $1$ & set \\
|
||||
$1$ & $1$ & - & unzulässig \\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
\subsubsection{$\overline{SR}$-Latch}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/SR-Latch_AND.jpg}
|
||||
\end{center}
|
||||
|
||||
\begin{tabular}{c c|c l}
|
||||
$\not{S}$ & $\not{R}$ & $Q_{n + 1}$ & \\ \cline{1-3}
|
||||
$0$ & $0$ & - & unzulässig \\
|
||||
$0$ & $1$ & $1$ & set \\
|
||||
$1$ & $0$ & $0$ & reset \\
|
||||
$1$ & $1$ & $Q_n$ & speichern \\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
\subsection{Taktzustandgesteuerte Latches}
|
||||
|
||||
\emph{Taktzustandgesteuert}: Änderungen am Eingang werden nur wahrgenommen, wenn das Taktsignal $T = 1$ ist. \medskip
|
||||
|
||||
Taktzustandgesteuerte Latches sind gegenüber Störimpulsen empfindlich, da bei $T=1$ jede Änderung am Eingang übernommen wird.
|
||||
|
||||
|
||||
\subsubsection{SRT-Latch}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/SRT-Latch.jpg}
|
||||
\end{center}
|
||||
|
||||
\begin{tabular}{c c c c c l}
|
||||
T & & $\text{S}_{\text{int}}$ & $\text{R}_{\text{int}}$ & & \\ \cline{1-4}
|
||||
$0$ & $\rightarrow$ & $0$ & $0$ & $\rightarrow$ & Datenspeicherung \\
|
||||
$1$ & $\rightarrow$ & S & R & $\rightarrow$ & Normales SR-Latch \\
|
||||
\end{tabular}
|
||||
|
||||
\vfill
|
||||
\subsubsection{D-Latch}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.2\textwidth]{images/D-Latch.jpg} \medskip
|
||||
|
||||
\eqbox{$Q_{n+1} = (Q_n \land \not{T}) \lor (D \land T)$}
|
||||
\end{center}
|
||||
|
||||
\begin{tabular}{c c c l}
|
||||
T & $Q_{n + 1}$ & & \\ \cline{1-2}
|
||||
$0$ & $Q_n$ & $\rightarrow$ & alter Ausgang gespeichert \\
|
||||
$1$ & D & $\rightarrow$ & Input übernommen \\
|
||||
\end{tabular}
|
||||
|
||||
\subsubsection{JK-Latch}
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\ctikzset{tripoles/european not symbol=circle}
|
||||
\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[nand port, number inputs=3](nand1){}
|
||||
(nand1.out)
|
||||
(srlatch.pin 3)--++(left:5mm)
|
||||
node[nand port, number inputs=3](nand2){}
|
||||
(nand2.out);
|
||||
\path[draw] (nand1.in 2) --++(left:10mm) node[point, label=180:J] {};
|
||||
\path[draw] (nand2.in 2) --++(left:10mm) node[point, label=180:K] {};
|
||||
\path[draw] (nand2.in 1) --++(up:6mm)--++(left:10mm) node[point, label=180:T] {};
|
||||
\path[draw] (nand1.in 3) --++(down:6mm);
|
||||
\path[draw] (srlatch.pin 4) --++(right:10mm);
|
||||
\path[draw] (srlatch.pin 4) --++(right:6mm) --++(up:23mm) --++(left:53mm) --++(down:3.2mm) --++(right:2mm);
|
||||
\path[draw] (srlatch.pin 6) --++(right:10mm);
|
||||
\path[draw] (srlatch.pin 6) --++(right:3mm) --++(down:23mm) --++(left:50mm) --++(up:3.2mm) --++(right:2mm);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\ctikzset{tripoles/european not symbol=circle}
|
||||
\tikzset{flipflop jklatch/.style={flipflop,
|
||||
flipflop def={t1=J, t2=T, t3=K, t6=Q, t4=$\bar{\text{Q}}$, n4=1}
|
||||
}}
|
||||
\path[draw] node[flipflop jklatch](jklatch){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
|
||||
\begin{tabular}{c c c|c l}
|
||||
T & J & K & $Q_{n + 1}$ & \\ \cline{1-4}
|
||||
$0$ & $X$ & $X$ & $Q_n$ & speichern \\
|
||||
$1$ & $0$ & $0$ & $Q_n$ & speichern \\
|
||||
$1$ & $0$ & $1$ & $0$ & reset \\
|
||||
$1$ & $1$ & $0$ & $1$ & set \\
|
||||
$1$ & $1$ & $1$ & $\bar{Q_n}$ & kippen \\
|
||||
\end{tabular}
|
||||
|
||||
\subsection{Flipflops}
|
||||
|
||||
\emph{Taktflankensteuerung}: Serieschaltung von zwei mit gegenphasigem Takt gesteuerten Latches(Master-Slave Aufbau).
|
||||
|
||||
\begin{center}
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\draw[thick] (-0.75, 0) -- (0,0)
|
||||
(0,0.4) -- (0,-0.4)
|
||||
(0,0.25) -- (0.5,0) -- (0,-0.25);
|
||||
\node[] at (1, 0) {CLK};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
Input beim Übergang von $0 \to 1$ von CLK wirksam.
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) -- (0.5, 0) -- (0.5, 0.3) -- (1, 0.3) -- (1, 0) -- (1.5, 0) -- (1.5, 0.3) -- (2, 0.3) -- (2, 0) -- (2.5, 0);
|
||||
\draw[very thick, red] (0.5, 0) -- (0.5, 0.3) (1.5, 0) -- (1.5, 0.3);
|
||||
\node[text width = 30mm] at (1.25, -0.5) {\small Positive/steigende Taktflanke};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\hfill
|
||||
\begin{minipage}{0.45\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\draw[thick] (-0.75, 0) -- (0,0)
|
||||
(0,0.4) -- (0,-0.4)
|
||||
(0,0.25) -- (0.5,0) -- (0,-0.25);
|
||||
\draw[thick, fill = white] (-0.1,0) circle [radius = 0.75mm];
|
||||
\node[] at (1, 0) {CLK};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
Input beim Übergang von $1 \to 0$ von CLK wirksam.
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\draw (0,0) -- (0.5, 0) -- (0.5, 0.3) -- (1, 0.3) -- (1, 0) -- (1.5, 0) -- (1.5, 0.3) -- (2, 0.3) -- (2, 0) -- (2.5, 0);
|
||||
\draw[very thick, blue] (1, 0.3) -- (1, 0) (2, 0.3) -- (2, 0);
|
||||
\node[text width = 30mm] at (1.25, -0.5) {\small Negative/fallende Taktflanke};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
|
||||
Vorteil: Sehr robust gegenüber Störimpulsen
|
||||
|
||||
\subsubsection{D-Flipflop}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/D-FF.jpg} \medskip
|
||||
|
||||
\eqbox{$Q_{n+1} = D_n \quad \text{Wenn CLK }0 \to 1$}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{SR-Flipflop}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/SR-FF.jpg} \medskip
|
||||
|
||||
\eqbox{$Q_{n+1} = [S \lor (Q_1 \land \not{R})]_n \quad \text{Reqs: } R \land S = 0, \text{CLK }0 \to 1$}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{JK-Flipflop}
|
||||
|
||||
Beim JK-Flipflop gibt es keinen unzulässigen Zustand mehr, dieser wurde durch eine Toggle Funktionalität ersetzt.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/JK-FF.jpg} \medskip
|
||||
|
||||
\eqbox{$Q_{n + 1} = \left(J \land \overline{Q_n}\right) \lor \left(\overline{K} \land Q_n\right) \quad \text{Wenn CLK }0 \to 1$}
|
||||
\end{center}
|
||||
|
||||
\begin{tabular}{c c | c c l}
|
||||
J & K & $Q_{n + 1}$ & $\not{Q}_{n + 1}$ & \\
|
||||
\cline{1-4}
|
||||
$0$ & $0$ & $Q_{n}$ & $\not{Q}_{n}$ & speichern \\
|
||||
$0$ & $1$ & $0$ & $1$ & reset \\
|
||||
$1$ & $0$ & $1$ & $0$ & set \\
|
||||
$1$ & $1$ & $\not{Q}_n$ & $Q_n$ & toggle \\
|
||||
\end{tabular} \medskip
|
||||
|
||||
Es gibt natürlich auch (takt)zustandsgesteuerte JK-Latches!
|
||||
|
||||
\vfill
|
||||
|
||||
\subsubsection{Toggle-Flipflop}
|
||||
|
||||
Schaltung welche bei jeder aktiven Taktflanke kippt.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/T-FF.jpg}
|
||||
|
||||
\eqbox{$Q_{n + 1} = \overline{Q_n} \quad \text{Wenn CLK } 0 \to 1$}
|
||||
\end{center}
|
||||
|
||||
Folgende Schaltung kippt nur bei Taktflanken wenn T=1:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/T-FF2.jpg}
|
||||
\end{center}
|
||||
|
||||
\subsection{Asynchroner Set/Reset Input}
|
||||
|
||||
Können gespeicherte Zustände asynchron zu CLK überschreiben, d.h. jederzeit auch ohne ein Taktflankensignal.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.075\textwidth]{images/Asynchron.JPG}
|
||||
\end{center}
|
||||
|
||||
\pagebreak
|
||||
\subsection{D-Flipflop in CMOS-Technik}
|
||||
|
||||
In den meisten Anwendungen werden D-Flipflops verwendet, da sie mit CMOS Technik effizient realisierbar sind.
|
||||
|
||||
\subsubsection{Transmission Gates (TG)}
|
||||
|
||||
TGs bestehen aus 2 Transistoren, einem NMOS und einem PMOS.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/Transmissiongates.jpg}
|
||||
\end{center}
|
||||
|
||||
Pro D-Latch sind 2 TG und 2 Inverter notwendig.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/d_ff_cmos.jpeg}
|
||||
\end{center}
|
||||
|
||||
Insgesamt sind also 8NMOS und 8PMOS notwendig.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/d_ff_cmos_2.jpeg}
|
||||
\end{center}
|
||||
\vfill
|
||||
|
||||
|
||||
\subsubsection{D-Flipflop $\Rightarrow$ JK-Flipflop}
|
||||
|
||||
Ein JK-FF kann \emph{nur} mit einem D-FF realisiert werden, wenn:
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$D_n = (J_n \land \not{Q}_n) \lor (\not{K}_n \land Q_n)$}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Verzögerungszeiten}
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/Dynamik-FF.jpg}
|
||||
\end{center}
|
||||
|
||||
\begin{flushleft}
|
||||
\begin{tabular}{r p{50mm}}
|
||||
Setup-Zeit ($t_s$) & Solange muss Signal an FF \underline{vor} aktiver Taktflanke stabil anliegen. \\
|
||||
Hold-Zeit ($t_h$) & Solange muss Signal an FF \underline{nach} aktiver Taktflanke stabil anliegen. \\
|
||||
Verzögerungszeit ($t_{pd}$) & Durchlaufzeit
|
||||
\end{tabular}
|
||||
\end{flushleft}
|
||||
|
||||
Bei Verletzung der Zusatzbedingungen $t_s, t_h$ kann der Zustand des FF unbestimmt oder metastabil werden.
|
||||
|
||||
|
||||
\subsubsection{Maximale Taktfrequenz bei seriellen FFs}
|
||||
|
||||
In einem Schaltnetz mit mindestens zwei Flipflops in Serie (kann auch der gleiche FF sein), ist die maximale Taktfrequenz des Clocks begrenzt.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/FF_Delay.jpg} \medskip
|
||||
|
||||
\eqbox{$T_{\text{min}} \geq t_{pd,ff1} + t_{pd,ks} + t_{s,ff2} \qquad f_{max} = \frac{1}{T_{min}}$}
|
||||
|
||||
wobei $t_{pd,ks}$ Verzögerungszeit kombinatorische Schaltung
|
||||
\end{center}
|
||||
|
||||
Bei komplizierten kombinatorischen Schaltungen begrenzt der Pfad mit der \emph{längsten} Zeitverzögerung die Taktfrequenz.
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{Master-Slave Flipflops (Zwischenspeicher FFs)}
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{r p{235pt}}
|
||||
- & Übernehmen Eingangssignal mit der steigenden (bzw. fallenden) Taktflanke. \\
|
||||
- & Geben das Ausgangssignal mit der nächsten fallenden (bzw. steigenden) Taktflanke aus. \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
JK-Master-Slave FF (mit SR-,D-,T-FF auch möglich):
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/JK-MS-FF.JPG}
|
||||
|
||||
\includegraphics[width = 0.3\textwidth]{images/JK-MS-FF2.JPG}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Frequenzteiler und Zähler}
|
||||
|
||||
T-FF können gut verwendet werden, um die Periode T eines periodischen Signals zu verlängern. Mit $n$-T-FFs kann die Frequenz durch den Faktor $2^n$ geteilt werden.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/Frequenzteiler.JPG}
|
||||
\end{center}
|
||||
|
||||
Eine andere wichtige Anwendung von FFs ist als digitale Dualzähler. Dafür müssen T-FFs mit Rückflankensteuerung ($1 \to 0$) verwendet werden. Mit $n$-T-FFs kann man von 0 bis $2^{n-1}$ zählen.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/Zahler.JPG}
|
||||
\end{center}
|
||||
\vfill
|
||||
|
||||
\pagebreak
|
||||
|
11
zusammenfassung/digitaltechnik/sections/misc.tex
Normal file
@@ -0,0 +1,11 @@
|
||||
\vfill\null
|
||||
\columnbreak
|
||||
|
||||
%\section{Diverses}
|
||||
|
||||
\section{Gate Varianten}
|
||||
|
||||
\begin{center}
|
||||
\rotatebox{90}{\includegraphics[width = 0.65\textwidth]{images/Logic-gate-index.png}}
|
||||
\end{center}
|
||||
|
126
zusammenfassung/digitaltechnik/sections/speicher.tex
Normal file
@@ -0,0 +1,126 @@
|
||||
\section{Speicher}
|
||||
|
||||
|
||||
\subsection{Schieberegister}
|
||||
|
||||
Ein Schieberegister ist ein Seriell-Parallel Wandler. Es ist eine Kette von D-FFs, durch welche die Seriellen Daten getaktet 'durchgeschoben' werden.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/Schieberegister.jpg}
|
||||
\end{center}
|
||||
|
||||
Schieberegister finden unter anderem Verwendung als Speicherregister um Daten zwischen 2 'Orten' zu speichern.
|
||||
|
||||
|
||||
\subsection{Halbleiterspeicher}
|
||||
|
||||
Bei Halbleiterspeicher muss unterschieden werden zwischen:
|
||||
|
||||
\begin{tabular}{r p{170pt}}
|
||||
ROM: & 'Read only memory' (Nur lesen) \\
|
||||
RAM: & 'Random access memory' (Schreiben \& Lesen, Wahlfreier Zugang) \\
|
||||
Flüchtig: & Abhängig von Versorgungsspannung \\
|
||||
Nicht flüchtig: & Unabhängig von Versorgungsspannung \\
|
||||
\end{tabular} \medskip
|
||||
|
||||
Halbleiterspeicher werden oft als Zellenarray oder Matrizen organisiert, die von einem Zeilen-Decoder und einem Spalten-Decoder angesteuert werden.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.2\textwidth]{images/SpeicherOrg.jpg}
|
||||
\end{center}
|
||||
|
||||
Dank den Decoder ist jede Speicherzelle einzeln ansprechbar mit nur linearem Wachstum in Adressleitungen bei höherer Zeilen-/Spaltenanzahl. Das Konstruktionsprinzip ist ein 'AND-Baum', wo jedes AND ein Minterm bildet. So besitzt jede Speicherzelle eine \emph{eindeutige} Adresse.
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{SRAM (Statische-RAM)}
|
||||
|
||||
SRAMs sind flüchtige Speicher, welche überall Anwendung finden, wo schneller Datenzugriff notwendig ist. Eine SRAM Zelle besteht aus 6 Transistoren. Mit der Adressleitung selektiert man die Speicherzelle.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.2\textwidth]{images/SRAM.jpg}
|
||||
\end{center}
|
||||
|
||||
An $V_L$ liegt der gespeicherte Wert der Speicherzelle und an $V_R$ der invertierte Wert. \medskip
|
||||
|
||||
CMOS sind symmetrische Bauteile, Source und Drain hängen vom Elektronenstrom ab. Dementsprechend schaltet der CMOS, wenn vom Gate zu einem der beiden symmetrischen Anschlüssen ein Spannungsabfall vorhanden ist.
|
||||
|
||||
|
||||
\subsubsection{Schreibevorgang}
|
||||
|
||||
Die Bitleitung wird beim Schreibevorgang fest auf GND/VCC geschaltet.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/SRAM_Write.jpg}
|
||||
\end{center}
|
||||
\vfill
|
||||
|
||||
|
||||
\subsubsection{Lesevorgang}
|
||||
|
||||
Die Bitleitung ist \emph{nicht} fest auf GND/VCC geschaltet und verhält sich wie ein Kondensator. Sie übernimmt deswegen den Wert der Speicherzelle.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/SRAM_Read.jpg}
|
||||
\end{center}
|
||||
|
||||
Links wird eine 1 ausgelesen und Rechts eine 0.
|
||||
|
||||
|
||||
\subsection{DRAM (Dynamische-RAM)}
|
||||
|
||||
DRAMs sind flüchtige Speicher, welche periodisch (20ms) wieder aufgefrischt werden müssen aufgrund des Leckstroms vom Kondensator. DRAMs besitzen eine höhere Dichte als SRAMs aber langsämere Zugriffszeiten.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.15\textwidth]{images/DRAM.jpg}
|
||||
\end{center}
|
||||
|
||||
Der Kondensator agiert als Speicher. Beim Schreibevorgang wird die Bitleitung fest auf GND/VCC geschaltet und der Kondensator aufgeladen (1) bzw. entladen (0). \medskip
|
||||
|
||||
Beim Lesevorgang ist die Bitleitung \emph{nicht} fest auf GND/VCC geschaltet und verhält sich wie ein Kondensator. Sie übernimmt deswegen den in der Zelle gespeicherten Wert.
|
||||
|
||||
|
||||
\subsection{MROMs (Maskable ROM)}
|
||||
|
||||
ROMs sind nichtflüchtige Speicher. Sie werden überall dort benötigt, wo ein System unveränderliche Daten-/Programmstrukturen benötigt. \medskip
|
||||
|
||||
MROM Speicherzellen werden durch spezielle 'Masken' bei der Herstellung als 0 oder 1 programmiert (Ideal für Massenproduktion).
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/MROM.jpg}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{PROMs (Programmable ROM)}
|
||||
|
||||
PROMs sind für kleinere Produktionsvolumen geeignet, weil sie durch den Benutzer einmalig programmiert werden können.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.15\textwidth]{images/PROM.jpg}
|
||||
\end{center}
|
||||
|
||||
Die Programmierung erfolgt durch die Schmelzsicherung. Für eine '0' muss man nichts machen und für eine '1' wird die Schmelzsicherung durch eine hohe Spannung durchgebrannt.
|
||||
|
||||
|
||||
\subsection{EPROM (Erasable PROM)}
|
||||
|
||||
EPROMs lassen sich durch UV-Bestrahlung optisch löschen und werden durch Anlegen einer hohen Spannung programmiert. Sie sind also mehrfach beschreibbar ($\approx$1'000-Mal).
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/EPROM.jpg}
|
||||
\end{center}
|
||||
|
||||
Floating-Gate Transistoren können negative Ladungen speichern, was die Kennline der für das Schalten notwendigen Gate-Source Spannung nach rechts verschiebt, als Folge reicht die $V_{DD} \approx 0.8V$ Spannung nicht mehr aus für das Schalten des Transistors.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/EPROM_2.jpg}
|
||||
\end{center}
|
||||
|
||||
Nach etwa 20 minütiger Bestrahlung durch UV-Licht sind die negativen Ladungen wieder aus dem Floating-Gate entfernt und der Transistor zeigt erneut normales Verhalten.
|
||||
|
||||
|
||||
\subsection{EEPROM (Electrically erasable PROM)}
|
||||
|
||||
Mit einer dünneren Oxidschicht beim Floating-Gate Transistor können die Gate Ladungen auch elektrisch gelöscht werden. Solche EEPROMs können ohne Probleme $10^6$-Mal neubeschrieben werden. \medskip
|
||||
|
||||
EEPROMs sind, unter anderem, die Grundbausteine von den heutzutage weit verbreiteten FLASH Speicher.
|
128
zusammenfassung/digitaltechnik/sections/zahlensysteme.tex
Normal file
@@ -0,0 +1,128 @@
|
||||
\section{Zahlensysteme}
|
||||
|
||||
\subsection{Polyadische Systeme}
|
||||
|
||||
Die Position einer Ziffer innerhalb einer Zahl gibt den Wert an, mit der die Basis des Zahlensystems an dieser Stelle potenziert wird. Umwandlung einer Zahl $D_{(R)}$ ins Dezimalsystem:
|
||||
|
||||
\begin{center}
|
||||
\begin{minipage}{0.55\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{c l}
|
||||
$R$ & Basis/Radix von $D_{R}$ \\
|
||||
$b_i$ & Koeffizienten (''Ziffern'') \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.40\linewidth}
|
||||
\begin{center}
|
||||
\eqbox{$D_{(10)} = \sum\limits_{i = -\infty}^{\infty} b_i \cdot R^i$}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\end{center}
|
||||
Darstellung von $D_{(R)}$ in Basis $R$: $\dots b_2 b_1 b_0 . b_{-1} b_{-2} \dots _{R}$
|
||||
\begin{flushleft}
|
||||
\begin{tabular}{l c l}
|
||||
Dezimal & $10$ & $b_i \in \{0, 1, \dots, 9\}$ \\
|
||||
Dual/Binär & $2$ & $b_i \in \{0, 1\}$ \\
|
||||
Oktal & $8$ & $b_i \in \{0, 1, \dots, 7\}$ \\
|
||||
Hexa (0x) & $16$ & $b_i \in \{0, 1, \dots, 9, A, B, C, D, E, F\}$ \\
|
||||
\end{tabular}
|
||||
\end{flushleft}
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{Umwandlung Dezimal $\to$ Zahlensystem R}
|
||||
|
||||
Für den Teil \emph{vor} dem Komma:
|
||||
|
||||
Wiederholte ganzzahlige Division durch Basis $R$ mit Rest $r$, der jeweilige Rest $r$ entspricht der Ziffer im neuen
|
||||
Zahlensystem, beginnend mit dem \textbf{L}east \textbf{S}ignificant \textbf{D}igit (LSD).
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$\dfrac{D_{(10)}}{R} = Q_0 + r_0$ und dann Rekursiv: $\dfrac{Q_i}{R} = Q_{i+1} + r_{i+1}$}
|
||||
\end{center}
|
||||
|
||||
Für den \emph{'Fraktionalteil'} $a_o$ hinter dem Komma:
|
||||
|
||||
Wiederholte Multiplikation von $a_0$ mit der Zahlenbasis $R$ und ausführen der Abrundungsfunktion floor(x) zur Berechnung von $K$, welches der Ziffer im neuen Zahlensystem entspricht, beginnend mit dem \textbf{M}ost \textbf{S}ignificant \textbf{D}igit (MSD).
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$a_i \cdot R = P_i \quad \to \text{floor}(P_i) = K_{i - 1}$, $a_{i-1} = P_i - K_{i - 1}$}
|
||||
\end{center}
|
||||
|
||||
Ein Zahlenbeispiel:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.32\textwidth]{images/UmwandlungZahlensys.jpg}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{Binär zu Dezimal}
|
||||
|
||||
\begin{center}
|
||||
\begin{tabular}{c|c|c|c|c|c|c|c}
|
||||
$2^7$ & $2^6$ & $2^5$ & $2^4$ & $2^3$ & $2^2$ & $2^1$ & $2^0$ \\
|
||||
$128$ & $64$ & $32$ & $16$ & $8$ & $4$ & $2$ & $1$ \\
|
||||
\end{tabular} \medskip
|
||||
|
||||
\begin{tabular}{c|c|c|c}
|
||||
$2^{-1}$ & $2^{-2}$ & $2^{-3}$ & $2^{-4}$ \\
|
||||
$0.5$ & $0.25$ & $0.125$ & $0.0625$ \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Zweierkomplement}
|
||||
|
||||
Für negative Dualzahlen wird das Zweierkomplement verwendet. Das MSB (sign Bit) hat eine \emph{negative} Wertigkeit. \medskip
|
||||
|
||||
Bildung Zweierkomplement für eine negative Zahl:
|
||||
|
||||
\begin{tabular}{r l}
|
||||
i) & Absolutbetrag der Zahl in Dualzahl umwandeln \\
|
||||
ii) & Dualzahl bitweise invertieren und beim LSB '+1' \\
|
||||
iii) & Zuvorderst das sign Bit hinzufügen \\
|
||||
\end{tabular}
|
||||
\vfill
|
||||
|
||||
|
||||
\subsection{Darstellung Rationaler Zahlen als Dualzahl (Q-Format)}
|
||||
|
||||
Vorzeichenbehaftete Zahlen mit rationalem Anteil werden im Q-Format dargestellt. Bei $m$ Vorkomma- und $n$ Nachkommabits sind insgesamt $k = 1 + m + n$ Binärstellen erforderlich.
|
||||
|
||||
\begin{center}
|
||||
\eqbox{$\displaystyle D_{(10)} = \underbrace{- b_m \cdot 2^m}_{\text{sign Bit}} + \sum_{i = 0}^{m - 1} b_i \cdot 2^i + \sum_{i = 1}^{n} b_i \cdot 2^{-i}$}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsection{Binäre Rechenoperationen}
|
||||
|
||||
|
||||
\subsubsection{Addition}
|
||||
|
||||
Schriftliche bitweise Addition mit Übertrag.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.2\textwidth]{images/Addition.jpg}
|
||||
\end{center}
|
||||
|
||||
|
||||
\subsubsection{Subtraktion}
|
||||
|
||||
Addition, aber in 2er-Komplement Darstellung.
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.2\textwidth]{images/Subtraktion.jpg}
|
||||
\end{center}
|
||||
|
||||
Minuend und Subtrahend müssen über gleiche Stellenanzahl verfügen, sonst kürzere Zahl linksbündig mit Vorzeichenbit erweitern. Überträge nach dem Vorzeichenbit ignorieren!
|
||||
|
||||
|
||||
\subsubsection{Multiplikation}
|
||||
|
||||
Multiplikation zweier vorzeichenloser Dualzahlen:
|
||||
|
||||
\begin{center}
|
||||
\includegraphics[width = 0.25\textwidth]{images/Multiplikation.jpg}
|
||||
\end{center}
|
||||
\vfill
|
@@ -0,0 +1,174 @@
|
||||
\documentclass[a4paper, fontsize = 10pt, landscape]{scrartcl}
|
||||
\usepackage[utf8]{inputenc}
|
||||
\usepackage[ngerman]{babel}
|
||||
\usepackage[T1]{fontenc}
|
||||
\usepackage{lmodern}
|
||||
\usepackage[left=5mm, right=5mm, bottom=5mm, top=5mm]{geometry}
|
||||
\usepackage{lastpage}
|
||||
\usepackage[explicit]{titlesec}
|
||||
\usepackage{ulem}
|
||||
\usepackage{bm}
|
||||
% Hyperref links, pdf metadata
|
||||
\usepackage{hyperref}
|
||||
|
||||
\usepackage{titling}
|
||||
\usepackage{calc}
|
||||
\usepackage[table]{xcolor}
|
||||
\usepackage{enumitem}
|
||||
\setlist{nolistsep, leftmargin = 4mm}
|
||||
|
||||
\usepackage{multicol}
|
||||
\usepackage{adjustbox}
|
||||
\usepackage{multirow}
|
||||
\usepackage{csvsimple}
|
||||
\usepackage{colortbl}
|
||||
|
||||
\usepackage{textcomp}
|
||||
\usepackage{amsmath}
|
||||
\usepackage{esint}
|
||||
\usepackage{amssymb} % \cdots
|
||||
\usepackage{cancel} % strike-through terms
|
||||
\usepackage{gensymb}
|
||||
\usepackage{siunitx}
|
||||
\sisetup{exponent-product = \cdot, per-mode = fraction, range-phrase = \dots}
|
||||
|
||||
\usepackage{tikz}
|
||||
\usepackage{pgfplots}
|
||||
\usetikzlibrary{positioning, calc, fit, matrix, decorations, angles, quotes, babel, 3d, arrows.meta, shadings, circuits.logic.IEC, circuits.ee.IEC, automata}
|
||||
\usepackage{circuitikz}
|
||||
\ctikzset{tripoles/pmos style/emptycircle}
|
||||
\usepackage{wrapfig}
|
||||
%% Formal tables
|
||||
\usepackage{booktabs}
|
||||
|
||||
% pgfplot layers
|
||||
\pgfplotsset{compat=1.7} % Version? für Plots
|
||||
\pgfdeclarelayer{bg}
|
||||
\pgfdeclarelayer{l1}
|
||||
\pgfdeclarelayer{l2}
|
||||
\pgfdeclarelayer{l3}
|
||||
\pgfdeclarelayer{tl1}
|
||||
\pgfdeclarelayer{tl2}
|
||||
\pgfdeclarelayer{tl3}
|
||||
\pgfsetlayers{bg,l3,l2,l1,main,tl1,tl2,tl3}
|
||||
|
||||
% custom colors
|
||||
\definecolor{darkgreen}{HTML}{008E00}
|
||||
\definecolor{darkred}{HTML}{990000}
|
||||
\definecolor{mred}{HTML}{e60000}
|
||||
\definecolor{burntorange}{HTML}{ff9a00}
|
||||
\definecolor{darkblue}{HTML}{000099}
|
||||
\definecolor{lightblue}{HTML}{99d6ff}
|
||||
\definecolor{lightgray}{HTML}{A9A9A9}
|
||||
\definecolor{darkyellow}{HTML}{FED600}
|
||||
\definecolor{limegreen}{HTML}{3ae32b}
|
||||
\definecolor{pastelmoss}{HTML}{A0C1B8}
|
||||
\definecolor{pastelaqua}{HTML}{709FB0}
|
||||
\definecolor{pastelviolet}{HTML}{726a95}
|
||||
|
||||
\definecolor{primaryheader}{HTML}{30475e}
|
||||
\definecolor{secondaryheader}{HTML}{f1935c}
|
||||
\definecolor{thirdheader}{HTML}{ba6b57}
|
||||
|
||||
\definecolor{numColor}{HTML}{000099}
|
||||
\definecolor{twoColor}{HTML}{008E00}
|
||||
|
||||
\newcommand{\clktag}{{\footnotesize C1}}
|
||||
|
||||
\tikzset{
|
||||
circ/.style = {circle, fill = black, minimum size=1mm, inner sep=0pt, outer sep=0pt},
|
||||
point/.style = {circle, draw = black, thick, minimum size=1mm, inner sep=0pt, outer sep=0pt},
|
||||
gnd/.style = {draw, fill, minimum width = 10mm, minimum height = 1pt},
|
||||
kvbinhead/.style = {draw = white, fill = secondaryheader!30, text = black},
|
||||
srLatch/.style = {flipflop, flipflop def = {t1 = S, t3 =R, t6={~}, n4 = 1}},
|
||||
srtLatch/.style = {flipflop, flipflop def = {t1 = S, t2 = T, t3 =R, t6={~}, n4 = 1}},
|
||||
dLatch/.style = {flipflop, flipflop def = {t1 = D, t2 = T, t6={~}, n4 = 1}},
|
||||
dFf/.style = {flipflop, flipflop def = {t1 = D, t2=\clktag, t6={~}, c2=1, n4=1}},
|
||||
srFf/.style = {flipflop, flipflop def = {t1 = S, t2=\clktag, t3=R, t6={~}, c2=1, n4=1}},
|
||||
jkFf/.style = {flipflop, flipflop def = {t1 = J, t2=\clktag, t3=K, t6={~}, c2=1, n4=1}},
|
||||
tFfv1/.style = {flipflop, flipflop def = {t2=\clktag, t6={~}, c2=1, n4=1}, label={[label distance =1.2mm]90:T}},
|
||||
tFfv2/.style = {flipflop, flipflop def = {t1=T, t2=\clktag, t6={~}, c2=1, n4=1}},
|
||||
tFfmin/.style = {flipflop, flipflop def = {t6={~}, c2=1}, label={[label distance =0mm]90:T}}
|
||||
}
|
||||
|
||||
\newcommand{\cirin}[1]{\textbf{\sffamily #1}}
|
||||
\newcommand{\cirout}[1]{\textit{\textbf{#1}}}
|
||||
\newcommand{\ciroutn}[1]{$\overline{\text{\textit{\textbf{#1}}}}$}
|
||||
|
||||
\newenvironment{circuit}[1][0.4]{
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\ctikzset{flipflops/scale = #1}
|
||||
\ctikzset{multipoles/flipflop/font = \normalsize}
|
||||
\ctikzset{multipoles/flipflop/clock wedge size=0.3}
|
||||
\ctikzset{tripoles/european not symbol=circle}
|
||||
\ctikzset{tripoles/european nor port/height=0.3}
|
||||
\ctikzset{tripoles/european nor port/width=0.6}
|
||||
\ctikzset{tripoles/european and port/height=0.3}
|
||||
\ctikzset{tripoles/european and port/width=0.6}
|
||||
\ctikzset{tripoles/european not port/height=0.3}
|
||||
\ctikzset{tripoles/european not port/width=0.5}
|
||||
}{
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\newcommand{\uunits}[2]{$\left[#1\right] = \si{#2}$}
|
||||
\newcommand{\floor}[1]{\text{floor}\left(#1\right)}
|
||||
|
||||
\newcommand{\cemph}[2][red]{\textcolor{#1}{\sffamily\bfseries\boldmath #2}}
|
||||
\newcommand{\cbmath}[2]{\textcolor{#1}{\bfseries\boldmath #2}}
|
||||
\newcommand{\twocom}{$2^{\text{er}}$}
|
||||
\newcommand{\nibp}[2]{#1\textcolor{blue}{#2}}
|
||||
|
||||
|
||||
|
||||
\newcommand{\overrideplainstyle}{
|
||||
\fancypagestyle{plain}{
|
||||
\fancyhf{}
|
||||
\rfoot{Seite \thepage \protect{ }von \pageref{LastPage}}
|
||||
\renewcommand{\headrulewidth}{0pt}
|
||||
\renewcommand{\footrulewidth}{0pt}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
\setlength{\columnseprule}{1pt}
|
||||
\def\columnseprulecolor{\color{black!20!white}}
|
||||
|
||||
\newcommand{\raisedrulefill}[2][0ex]{\leaders\hbox{\rule[#1]{1pt}{#2}}\hfill}
|
||||
|
||||
\titleformat{\section}{\sffamily\bfseries\boldmath\large}{}{-5pt}{\colorbox{primaryheader}{\parbox[c][3mm]{\linewidth + 4pt}{\textcolor{white}{#1}}}}
|
||||
\titleformat{\subsection}{\sffamily\bfseries\boldmath}{}{-5pt}{\colorbox{secondaryheader}{\parbox[c][2mm]{\linewidth + 4pt}{#1}}}
|
||||
\titleformat{\subsubsection}{\sffamily\bfseries\boldmath}{}{0pt}{\textcolor{thirdheader}{#1 \raisedrulefill[0.4ex]{0.5pt}}}
|
||||
\titleformat{\paragraph}[runin]{\sffamily\bfseries\boldmath}{}{-5pt}{\uline{#1}}
|
||||
|
||||
\parindent 0pt
|
||||
|
||||
\definecolor{formulabox}{RGB}{182,225,189}
|
||||
\renewcommand{\not}[1]{\overline{#1}}
|
||||
% equation box
|
||||
\newcommand{\eqbox}[1]{\fcolorbox{black}{white}{\hspace{0.5em}#1\hspace{0.5em}}}
|
||||
\newcommand{\eqboxf}[1]{\fcolorbox{black}{formulabox}{\hspace{0.5em}#1\hspace{0.5em}}}
|
||||
|
||||
|
||||
\begin{document}
|
||||
\begin{multicols*}{3}
|
||||
\begin{center}
|
||||
\Large{Digitaltechnik} \\
|
||||
\tiny{von Jirayu Ruh, \href{mailto:jirruh@ethz.ch}{jirruh@ethz.ch}}
|
||||
\end{center}
|
||||
|
||||
\input{sections/gates.tex}
|
||||
\input{sections/cmos.tex}
|
||||
\input{sections/boolsche_algebra.tex}
|
||||
\input{sections/karnaugh.tex}
|
||||
\input{sections/zahlensysteme.tex}
|
||||
\input{sections/codes.tex}
|
||||
\input{sections/EinfacheHardwarekomp.tex}
|
||||
\input{sections/latches_flipflops.tex}
|
||||
\input{sections/automaten.tex}
|
||||
\input{sections/speicher.tex}
|
||||
\input{sections/misc.tex}
|
||||
\end{multicols*}
|
||||
\end{document}
|