Initial Commit and Notes from HS24

This commit is contained in:
2025-02-24 08:06:04 +01:00
parent 2475ac9866
commit 1a445ee6fe
898 changed files with 24179 additions and 1 deletions

18
zusammenfassung/README.md Normal file
View File

@@ -0,0 +1,18 @@
# Zusammenfassung
Ich habe für die folgenden Fächer eine Zusammenfassung geschrieben **ODER** eine von der AMIV Plattform modifiziert.
- [Digitaltechnik](https://eth.jirayuruh.ch/hs24/digitech/)
- [Technische Mechanik](https://eth.jirayuruh.ch/hs24/techmech/)
Für die Fächer welche nicht aufgelistet wurden, habe ich entweder die Zusammenfassung 1:1 von AMIV genommen oder mir wurde eine Zusammenfassung zur Verfügung gestellt oder es war nicht erlaubt eine Zusammenfassung zu verwenden.
## DISCLAIMER!!!
Ich übernehme keine Haftung über mögliche Fehler in den Zusammenfassungen (Es hat sicherlich ein paar drinnen, da ich teils Sätze umformuliert habe und meine Persönliche Notizen beigefügt habe!).
Fehler können per Discord, WhatsApp, Mail und Moodle gemeldet werden. Sie sind in der Fehlerliste ersichtlich.
---
Made by JirR02 in Switzerland 🇨🇭

BIN
zusammenfassung/digitaltechnik/.DS_Store vendored Normal file

Binary file not shown.

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 32 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 120 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 33 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 59 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 92 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 163 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 187 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 49 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 63 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 25 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 66 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 80 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 322 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 27 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 77 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 79 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 98 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 64 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 90 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 140 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 53 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 293 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 16 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 65 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 34 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 31 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 84 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 44 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 223 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 109 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 58 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 88 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 180 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.4 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.9 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 13 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 61 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 200 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 KiB

View File

@@ -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.

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

View 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

View 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}$}

View 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.

View 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

View 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.

View 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

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

View 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.

View 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

View File

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

Binary file not shown.

After

Width:  |  Height:  |  Size: 50 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 233 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 69 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 22 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 23 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 21 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 37 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 39 KiB

Some files were not shown because too many files have changed in this diff Show More