Initial Commit and Notes from HS24
7
hs24/digitaltechnik/automaten/automaten.tex
Normal file
@@ -0,0 +1,7 @@
|
||||
\chapter{Automaten}
|
||||
|
||||
\input{def.tex}
|
||||
\input{entwurf_analyse.tex}
|
||||
\input{garagenautomat_vertiefung.tex}
|
||||
\input{fortgeschritten.tex}
|
||||
\input{zaehler.tex}
|
56
hs24/digitaltechnik/automaten/def.tex
Normal file
@@ -0,0 +1,56 @@
|
||||
\section{Was sind Automaten?} \label{sec:auto}
|
||||
|
||||
\subsection{Definition und Grundlagen}
|
||||
|
||||
\dfn{Automat}{
|
||||
Ein Automat beschreibt ein System, welches auf sein Eingang reagiert und ein Ausgang produziert, der von dem Eingangssignal und von dem momentanen Zustand des Systems abhängt. \cite{Luisier2024} Ein typisches Beispiel für ein Automaten sind Schaltwerke.
|
||||
\\
|
||||
Wenn wir von Automaten sprechen, reden wir hauptsächlich von endlichen Automaten. Endliche Automaten haben nur die möglichkeit endlich viele Eingänge, Ausgänge und gespeicherte Zustände zu haben. Unendliche Automaten gibt es nicht.
|
||||
}
|
||||
|
||||
Bei den Automaten unterscheiden wir zwischen synchrone und asynchrone Automaten.
|
||||
\\
|
||||
\subsubsection*{Synchrone Automaten}
|
||||
|
||||
Bei synchrone Automaten haben alle Speicherelemente (Flipflops) das gleiche Taktsignal. Daraus folgt, dass interne Zustandsänderungen synchron mit dem Taktsignal laufen.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_33.png} \cite{Luisier2024}
|
||||
|
||||
\subsubsection*{Asynchrone Automaten}
|
||||
|
||||
In vergleich zu synchrone Automaten haben die Speicherelemente in asynchrone Automaten nicht das gleiche Taktsignal. Eine Zustandsänderung wird durch die Eingangssignale initiiert.
|
||||
\\
|
||||
\\
|
||||
Ein endlicher Automat wird durch ein 6-Tupel charakterisiert:
|
||||
|
||||
\begin{tabular}{ p{0.2\linewidth} p{0.8\linewidth} }
|
||||
$X = (x_1, x_2, ... , x_e)$ & Eingabealphabet mit $e$ Eingängen $x_i$, die durch binäre Eingangsvariablen $\{ 0,1 \}$ repräsentiert werden. \\
|
||||
$Y = (y_1, y_2, ... , y_b)$ & Ausgabealphabet mit $b$ Ausgängen $y_i$, die als Bits mit Wert $\{ 0,1 \}$ dargestellt werden. \\
|
||||
$Z = (z_1, z_2, ... , z_m)$ & Zustandsmenge mit $m$ inneren Zustansvariablen $z_i$, die einen Wert $z_i$, die einen Wert $\{ 0,1 \}$ haben können. Insfesamt gibt es $n_m = 2 ^{m}$ Zustände. \\
|
||||
$Z_0 \in Z$ & Anfangszustand \\
|
||||
$f_{c 1}: (X_n, Z_n) \rightarrow Z_{n+1}$ & Übergangs-, Überführungsfunktion \\
|
||||
$f_{c 1}: (X_n, Z_n) \rightarrow Y_n$ & Ausgangs-, Ausgabefunktion \\
|
||||
\end{tabular}
|
||||
|
||||
\subsection{Automatentypen: Mealy vs. Moore}
|
||||
|
||||
\dfn{Mealy Automat}{
|
||||
Ein Mealy Automat ist ein endlicher Automat, dessen Ausgang abhängig ist vom Eingang $X_n$, sowie den momentanen Zustand $Z_n$. Der Folgezustand $Z_{n+1}$ ist abhängig vom momentanen Zustand sowie dem Eingang.
|
||||
|
||||
\includegraphics[width=\textwidth]{fig/Fig_34.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\dfn{Moore Automat}{
|
||||
Im Vergleich zum Mealy Automat ist der Ausgang vom Moore Automat nur abhängig vom momentanen Zustand $Z_n$. Der Folgezustand $Z_{n+1}$ ist wie beim Mealy Automat abhängig vom momentanen Zustand, sowie dem Eingang.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_35.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
Eine weitere Art von Automat ist der Medwedjew Automat. Dieser unterscheidet sich vom Moore Automat dadurch, dass sein Ausgang gleich dem momentanen Zustand ist. Der Folgezustand ist wie beim Mealy Automat abhängig vom momentanen Zustand und dem Eingang.
|
||||
|
||||
\includegraphics[width=\textwidth]{fig/Fig_36.png} \cite{Luisier2024}
|
||||
|
||||
\nt{
|
||||
Medwedjew Automaten haben eine grosse Relevanz für Zähler.
|
||||
}
|
||||
|
44
hs24/digitaltechnik/automaten/entwurf_analyse.tex
Normal file
@@ -0,0 +1,44 @@
|
||||
\section{Entwurf und Analyse von Automaten}
|
||||
|
||||
\subsection{Zustandsdiagramm, Folgezustandstabelle}
|
||||
|
||||
Automaten können auf verschiedenen Weisen beschrieben werden.
|
||||
|
||||
\begin{itemize}
|
||||
\item Ausgangs- und Übergangsfunktionen
|
||||
\item Zustandsfolgetabellen (Folgezustandstabelle)
|
||||
\item Zustandsdiagramme oder Zustandsgraphen
|
||||
\item Karnaugh Diagramme
|
||||
\end{itemize}
|
||||
|
||||
In den meisten Fällen fängt man mit dem Zustandsdiagramm, da dieser sehr schnell generiert werden kann. Aus dem Zustandsdiagramm kann die Folgezustandstabelle konstruiert werden. Wenn diese vorhanden ist, kann ein Karnaugh-Diagramm für jede innere Zustandsvariable und für jeden Ausgang aufgesetzt werden. Damit werden die Gleichungen der Ausgangs- und Übergangsfunktionen minimiert. Am Ende wird ein Schaltwerk erzeugt. \cite{Luisier2024} Es ist aber auch möglich, dass der umgekehrte Fall auftritt.
|
||||
|
||||
\dfn{Zustandsdiagramm}{
|
||||
Ein Zustandsdiagramm ist eine graphische Darstellung der Funktion von Automaten, die aus Knoten und gericheteten Kanten besteht.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_26.png} \cite{Luisier2024}
|
||||
|
||||
Die Knoten bezeichnen die internen Zustände, die Kanten den Übergang zwischen zwei Zuständen. Die Eingangskombination $e$, die die Zustandsänderung bewirkt, und der Ausgang $a$ werden an der jeweiligen Kante vermerkt. \cite{Luisier2024}
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_27.png} \cite{Luisier2024}
|
||||
|
||||
Wichtig zu erwähnen ist, dass bei Moore Automaten die Knoten sowohl die internen Zustände als auch die Ausgänge bezeichnen.
|
||||
}
|
||||
|
||||
\dfn{Folgezustandstabelle}{
|
||||
Folgezustandstabellen zeigen alle möglichen Kombinationen eines Automaten an. Die Anzahl Reihen einer Folgezustandstabelle ist $2 ^{e + m}$, wobei $e$ die Anzahl Eingangsbits und $m$ die Anzahl Zustandsbits ist. Die Anzahl Spalten beträgt $e + 2m + b$, wobei $b$ die Anzahl Ausgangsbits ist.
|
||||
}
|
||||
|
||||
\subsection{Eingangs-, Ausgangs-, Zustandsvariablen}
|
||||
|
||||
Um einen Automaten zu entwerfen kann man das folgende Kochrezept befolgen.
|
||||
|
||||
\begin{enumerate}
|
||||
\item Zustandsmenge bestimmen, daraus folgt die Anzahl der Zustandsvariablen und der erforderlichen D-Flipflops
|
||||
\item Definition der Ein- und Ausgangsvariablen, Kodierung
|
||||
\item Darstellung der Zustandsfolge in einem Zustandsdiagramm
|
||||
\item Aufstellung der Zustandsfolgetabelle
|
||||
\item Bestimmung der minimierten Ausgangs- und Übergangsfunktionen mit der Hilfe von KV-Diagrammen
|
||||
\item Prüfung auf unbenutzte Zustände
|
||||
\item Konstruktion des Schaltplans anhand der Schaltfunktion
|
||||
\end{enumerate} \cite{Luisier2024}
|
7
hs24/digitaltechnik/automaten/fortgeschritten.tex
Normal file
@@ -0,0 +1,7 @@
|
||||
\section{Fortgeschrittene Automateneigenschaften}
|
||||
|
||||
\subsection{Gekoppelte Automaten}
|
||||
|
||||
In einigen Fällen ist es geeigneter komplexe Automaten aus mehreren Teilautomaten aufzubauen. Diese sind oft übersichtlicher.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_29.png} \cite{Luisier2024}
|
@@ -0,0 +1,8 @@
|
||||
\section{Garagenautomat: Vertiefung}
|
||||
|
||||
\subsection{Mealy $\leftrightarrow$ Moore Umwandlung}
|
||||
|
||||
Mealy und Moore Automaten lassen sich \textbf{immer} ineinander umwanden. \cite{Vasylyev2024} Wichtig dabei zu erwähnen ist, dass sich das zeitliche Verhalten der Eingangs- und Ausgangssignale sich ändert aufgrund von ihren verschiedenen Eigenschaften (Kapitel \ref{sec:auto}). Mealy Automaten sind sehr anfällig für Störungen, da ihr Ausgang abhängig ist vom Eingang und momentanen Zustand. Der Eingang ist nicht abhängig vom Taktsignal. Bei einer Störung am Eingang besteht die Möglichkeit, dass ein Ausgang beschaltet wird aber der Zustand nicht aktualisiert wird.
|
||||
\\
|
||||
\\
|
||||
Um dieses Problem zu bekämpfen könnte man den Eingang mit dem Taktsignal Synchronisieren.
|
61
hs24/digitaltechnik/automaten/zaehler.tex
Normal file
@@ -0,0 +1,61 @@
|
||||
\section{Zähler}
|
||||
|
||||
\subsection{Asynchronzähler}
|
||||
|
||||
In Kapitel \ref{sec:ffcirc} haben wir gelernt, dass man T-Flipfops verketten kann, um $n$-Bit Dualzähler zu erstellen. Das Problem mit diesen sogenannten Asynchronzähler ist die Zeitverzögerung der T-Flipflops. Je mehr Bits der Dualzähler hat, desto mehr T-Flipflops haben wir und desto länger braucht der letzte T-Flipflop zum Schalten für den MSB. Deshalb müssen bei Asynchronzähler die maximale Taktfrequenz des Taktsignals berücksichtigt werden. Dies limitiert die Geschwindigkeit des Dualzählers.
|
||||
|
||||
\subsection{Modulo-$n$ (mod-$n$) Zähler}
|
||||
|
||||
In manchen Fällen möchte man nicht das volle Pottential von Asynchronzähler verwenden. Man möchte nur bis zu einer bestimmten Dualzahl hochzählen. In diesem Fall kommen Modulo-$n$ Zähler ins Spiel. Wie die $n$-Bit Dualzähler bestehen Modulo-$n$ Zähler aus T-Flipfops mit dem Unterschied, dass die T-Flipflops einen Reset Eingang haben. Die Ausgänge der T-Flipflops sind mit einem AND Gatter verbunden. Sobald die Zahl $n+1$ am Ausgang liegt, werden die Reset-Eingänge von den Flipflops beschaltet und der Zähler fängt wieder bei 0 an. Soll der Zähler bei einer anderen Zahl anfangen zu zählen, so muss bei den Flipflops mit einem Set-Eingang gearbeitet werden.
|
||||
|
||||
\begin{minipage}{0.15\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_13.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop T, dot on notQ, add async SR](tff1){}
|
||||
(tff1.pin 3) --++(left:10mm) node[point, label=180:CLK] {}
|
||||
(tff1.pin 6) --++(right:10mm) --++(down:17mm) --++(right:5mm)
|
||||
node[flipflop T, dot on notQ, anchor=pin 3, add async SR](tff2){}
|
||||
(tff2.pin 6) --++(right:10mm) --++(down:17mm) --++(right:5mm)
|
||||
node[flipflop T, dot on notQ, anchor=pin 3, add async SR](tff3){}
|
||||
(tff3.pin 6) --++(right:5mm) --++(up:20mm) node[point, label=90:$\text{Q}_{III}$] {}
|
||||
(tff3.pin 6) --++(right:5mm) --++(up:5mm) --++(right:5mm)
|
||||
node[and port, number inputs=3, anchor=in 3](and){}
|
||||
node [notcirc, left] at (and.bin 1) {}
|
||||
(and.in 1) --++(left:80mm)
|
||||
(and.in 2) --++(left:42.5mm)
|
||||
(and.out) --++(down:35mm) --++(left:115.5mm)
|
||||
(tff1.down) --++(down:4mm)
|
||||
(tff2.down) --++(down:4mm)
|
||||
(tff3.down) --++(down:4mm);
|
||||
\path[draw] (tff1.pin 6) --++(right:5mm) --++(up:20mm) node[point, label=90:$\text{Q}_I$] {};
|
||||
\path[draw] (tff2.pin 6) --++(right:5mm) --++(up:20mm) node[point, label=90:$\text{Q}_{II}$] {};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\subsection{Synchronzähler}
|
||||
|
||||
Beim Asynchronzähler ist das Taktsignal der Flipflops immer vom vorherigen Ausgang des Flipflops abhängig (ausser beim ersten Flipflop). Im Gegensatz zu dem haben die Flipflops von Synchronzähler das gleiche Taktsignal und schalten gleichzeitig. Synchronzähler werden meistens als Medwedjew-Automaten implementiert.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_13.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_14.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
|
||||
\nt{
|
||||
Rückwärtszähler können auch durch Medwedjew-Automaten realisiert werden. Es muss zusätlich ein weiterer Eingang hinzugefügt werden, welcher die Zählrichtung bestimmt.
|
||||
|
||||
\includegraphics[width=0.25\linewidth]{fig/Fig_15.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\nt{
|
||||
In Kapitel \ref{sec:ffcirc} haben wir gesehen, dass T-Flipflops als Freqenzteiler fungieren können. Dies kann auch mit einem Medwedjew-Automaten und ein AND Gatter realisiert werden. Das AND Gatter ist mit einem T-Flipflop verbunden, welcher beschaltet wird, sobald die Zahl erreicht wird.
|
||||
|
||||
\includegraphics[width=\textwidth]{fig/Fig_16.png} \cite{Luisier2024}
|
||||
}
|
||||
|
4
hs24/digitaltechnik/cmos/cmos.tex
Normal file
@@ -0,0 +1,4 @@
|
||||
\chapter{CMOS Schaltungen}
|
||||
|
||||
\input{funktion.tex}
|
||||
\input{pullup_pulldown.tex}
|
151
hs24/digitaltechnik/cmos/funktion.tex
Normal file
@@ -0,0 +1,151 @@
|
||||
\section{Wie funktionieren MOS-Transistoren?}
|
||||
|
||||
\subsection{Kurzer Überblick}
|
||||
|
||||
In diesem Kapitel geht es um CMOS Transistoren. In Allgemeinen werden Transistoren verwendet, um Gatter zu bauen. Diese werden, wie in den letzten paar Kapitel besprochen in sehr vielen logischen Schaltungen verwendet, welche fundamental sind für viele elektronischen Geräte, welche uns begleiten.
|
||||
\\
|
||||
Wie durch den Namen zu erkennen fungieren die Transistoren durch die CMOS Technologie. CMOS steht für "Complementary Metal-Oxide-Semiconductor". Die Transistoren sind also Metalloxid-Halbleiter.
|
||||
\\
|
||||
\\
|
||||
\dfn{MOS Transistoren}{
|
||||
MOS Transistoren sind steuerbare Widerstände bestehend aus 3 Kontakten, namentlich Source, Drain und Gate. Die Ladungsträger fliessen von Source zu Drain. Der Gate wird verwendet, um den Fluss von Ladungsträger zu beeinflussen.
|
||||
}
|
||||
|
||||
\includegraphics[width=0.7\linewidth]{fig/Fig_28.png} \cite{Luisier2024}
|
||||
|
||||
MOS Transistoren verhalten sich wie Schalter. \cite{Luisier2024} Ihr Widerstand wird durch die Source-Gate Spannung ($V_{gs}$) gesteuert. Dabei spielt die Schwellspannung ($V_{th}$ $th$ für Threshhold) eine grosse Rolle. Ist $|V_{gs}| < |V_{th}|$ ist der Transistor hochohmig und der Schalter ist zu. Im umgekehrten Fall ist der Transistor niederohmig. Somit ist der Schalter auf.
|
||||
|
||||
\nt{
|
||||
Die Schwellspannung $V_{th}$ wird in diesem Semester keine grosse Rolle spielen. Es ist aber hilfreich fürs Verständnis.
|
||||
}
|
||||
|
||||
Was sind jetzt aber CMOS Transistoren. Es gibt 2 CMOS Transistoren und beide sind ihr gegenseitiges Komplementär. Daher kommt auch ihr Name. Grundsätzlich unterscheidet man zwischen zwei verschiedene CMOS Transistoren.
|
||||
|
||||
\dfn{NMOS-Transistor}{
|
||||
NMOS-Transistoren haben einen n-dotierten Innenwiderstand. Dadurch erhält er die Eigenschaft, dass der Transistor leitet, sobald eine Spannung am Gate liegt.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$G$ & NMOS & $Y$ \\
|
||||
\hline
|
||||
0 & Leitet nicht & 0 \\
|
||||
1 & Leitet & 1 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\node[thick, nmos, anchor=D] (nmos1) at(0, -2) {}
|
||||
(nmos1.gate) node[anchor=east] {G}
|
||||
(nmos1.drain) node[anchor=west, yshift=-0.15cm] {S}
|
||||
(nmos1.source) node[anchor=west,yshift=+0.15cm] {D};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\dfn{PMOS-Transistor}{
|
||||
PMOS-Transistoren haben einen p-dotierten Innenwiderstand. Dadurch erhält er die Eigenschaft, dass der Transistor leitet, sobald keine Spannung am Gate liegt.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$G$ & PMOS & $Y$ \\
|
||||
\hline
|
||||
0 & Leitet & 1 \\
|
||||
1 & Leitet nicht & 0 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\node[thick, pmos, anchor=D] (pmos1) at(0, -2) {}
|
||||
(pmos1.gate) node[anchor=east] {G}
|
||||
(pmos1.drain) node[anchor=west, yshift=-0.15cm] {D}
|
||||
(pmos1.source) node[anchor=west,yshift=+0.15cm] {S};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\nt{
|
||||
Die Eigenschaft, dass NMOS- bzw. PMOS-Transistoren bei einer gewissen Gate Spannung leitet hat eine bestimmte Funktion bezüglich $V_{gs}$. NMOS Transistoren leiten, sobald eine positive Spannung am Eingang ist. Ist die Spannung negativ, leitet sie nicht. Umgekehrt ist es beim PMOS Transistor.
|
||||
}
|
||||
|
||||
|
||||
NMOS- und PMOS Transistoren haben vor allem eine bedeutende Verwendung bei Pull-up und Pull-Down Schaltungen.
|
||||
|
||||
\dfn{Pull-down Schaltung}{
|
||||
Eine Pull-down ist eine Schaltung, welcher die Spannung $V_y$ von seinem Ausgang $Y$ in Abhängigkeit von der Gate Spannung definiert. ($V_{gs}$)
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$G$ & NMOS & $Y$ \\
|
||||
\hline
|
||||
0 & Leitet nicht & 1 \\
|
||||
1 & Leitet & 0 \\
|
||||
\end{tabular}
|
||||
|
||||
$\Rightarrow$ Leitend falls Eingang $V_G = 1$, 0 liegt am Ausgang.
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\node[circ, label=90:{\small $V_{DD}$}](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}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\dfn{Pull-up Schaltung}{
|
||||
Eine Pull-up ist eine Schaltung, welcher die Spannung $V_y$ von seinem Ausgang $Y$ in Abhängigkeit von der Gate Spannung definiert. ($V_{gs}$)
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$G$ & NMOS & $Y$ \\
|
||||
\hline
|
||||
0 & Leitet & 1 \\
|
||||
1 & Leitet nicht & 0 \\
|
||||
\end{tabular}
|
||||
|
||||
$\Rightarrow$ Leitend falls Eingang $V_G = 0$, 1 liegt am Ausgang.
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\coordinate (gnd) at (0, -4);
|
||||
\node[circ, label=90:{\small $V_{DD}$}] (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}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
}
|
186
hs24/digitaltechnik/cmos/pullup_pulldown.tex
Normal file
@@ -0,0 +1,186 @@
|
||||
\section{Pull-up und Pull-down Schaltungen}
|
||||
|
||||
\subsection{NOT, NAND, und NOR}
|
||||
|
||||
\dfn{NICHT Gatter in CMOS Technik}{
|
||||
Das NOT Gatter kann durch CMOS Gatter wie folgt dargestellt werden.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\node[circ, label=90:{\small $V_{DD}$}](origin) at (0,0) {};
|
||||
\node[thick, nmos, anchor=D] (nmos1) at(0, -2) {}
|
||||
(nmos1.gate) node[anchor=east] {}
|
||||
(nmos1.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(nmos1.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\node[thick, pmos, anchor=D] (pmos1) at(0, -1.5) {}
|
||||
(pmos1.gate) node[anchor=east] {}
|
||||
(pmos1.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(pmos1.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\draw[thick] (nmos1.S) -- (0, -4) coordinate(gnd);
|
||||
\draw[thick] (pmos1.D) -- (nmos1.D);
|
||||
\draw[thick] (pmos1.G) -- (nmos1.G);
|
||||
\path[draw] (0,-1.75) --++(right:10mm) node[point, label=0:Y] {};
|
||||
\path[draw] (-1,-1.75) --++(left:10mm) node[point, label=180:A] {};
|
||||
\path[draw, very thick] (-0.25, -4) -- (gnd) -- (0.25, -4);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\dfn{NAND Gatter in CMOS Technik}{
|
||||
Das NAND Gatter kann durch CMOS Gatter wie folgt dargestellt werden.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\node[circ, label=90:{\small $V_{DD}$}](origin) at (0,0) {};
|
||||
\node[thick, nmos, anchor=D] (nmos1) at(0, -2.25) {}
|
||||
(nmos1.gate) node[anchor=east] {}
|
||||
(nmos1.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(nmos1.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\node[thick, nmos, anchor=D] (nmos2) at(0, -4.25) {}
|
||||
(nmos2.gate) node[anchor=east] {}
|
||||
(nmos2.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(nmos2.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\node[thick, pmos, anchor=D] (pmos1) at(-1.5, -1.75) {}
|
||||
(pmos1.gate) node[anchor=east] {}
|
||||
(pmos1.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(pmos1.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\node[thick, pmos, anchor=D] (pmos2) at(1.5, -1.75) {}
|
||||
(pmos2.gate) node[anchor=east] {}
|
||||
(pmos2.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(pmos2.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\draw[thick] (nmos2.S) -- (0, -6.25) coordinate(gnd);
|
||||
\draw[thick] (pmos1.D) -- (pmos2.D);
|
||||
\draw[thick] (pmos1.S) -- (pmos2.S);
|
||||
\draw[thick] (origin) -- (0,-0.23);
|
||||
\draw[thick] (nmos1.S) -- (nmos2.D);
|
||||
\draw[thick] (0,-1.75) -- (nmos1.D);
|
||||
\draw[thick] (pmos1.G) -- (-2.5,-3);
|
||||
\draw[thick] (pmos2.G) -- (-1.25,-1);
|
||||
\draw[thick] (-1.25,-1) -- (-1.25, -5);
|
||||
\path[draw] (0,-2) --++(right:10mm) node[point, label=0:Y] {};
|
||||
\path[draw] (nmos1.G) --++(left:20mm) node[point, label=180:A] {};
|
||||
\path[draw] (nmos2.G) --++(left:20mm) node[point, label=180:B] {};
|
||||
\path[draw, very thick] (-0.25, -6.25) -- (gnd) -- (0.25, -6.25);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\dfn{NOR Gatter in CMOS Technik}{
|
||||
Das NOR Gatter kann durch CMOS Gatter wie folgt dargestellt werden.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\node[circ, label=90:{\small $V_{DD}$}](origin) at (0,0) {};
|
||||
\node[thick, nmos, anchor=D] (nmos1) at(-1.75, -3.5) {}
|
||||
(nmos1.gate) node[anchor=east] {}
|
||||
(nmos1.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(nmos1.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\node[thick, nmos, anchor=D] (nmos2) at(1.75, -3.5) {}
|
||||
(nmos2.gate) node[anchor=east] {}
|
||||
(nmos2.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(nmos2.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\node[thick, pmos, anchor=D] (pmos1) at(0, -1.5) {}
|
||||
(pmos1.gate) node[anchor=east] {}
|
||||
(pmos1.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(pmos1.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\node[thick, pmos, anchor=D] (pmos2) at(0, -3) {}
|
||||
(pmos2.gate) node[anchor=east] {}
|
||||
(pmos2.drain) node[anchor=west, yshift=-0.15cm] {}
|
||||
(pmos2.source) node[anchor=west,yshift=+0.15cm] {};
|
||||
\draw[thick] (nmos1.S) -- (-1.75, -5.25) coordinate(gnd1);
|
||||
\draw[thick] (nmos2.S) -- (1.75, -5.25) coordinate(gnd2);
|
||||
\draw[thick] (nmos1.D) -- (nmos2.D);
|
||||
\draw[thick] (pmos2.D) -- (0, -3.5);
|
||||
\draw[thick] (nmos1.G) -- (-2.75, -0.75);
|
||||
\draw[thick] (nmos2.G) -- (-1.5, -4.25);
|
||||
\draw[thick] (-1.5, -4.25) -- (-1.5, -2.25);
|
||||
\path[draw] (pmos2.D) --++(right:10mm) node[point, label=0:Y] {};
|
||||
\path[draw] (pmos1.G) --++(left:30mm) node[point, label=180:A] {};
|
||||
\path[draw] (pmos2.G) --++(left:30mm) node[point, label=180:B] {};
|
||||
\path[draw, very thick] (-2, -5.25) -- (gnd1) -- (-1.5, -5.25);
|
||||
\path[draw, very thick] (2, -5.25) -- (gnd2) -- (1.5, -5.25);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\subsection{Komplexe Schaltungen}
|
||||
|
||||
Jetzt wo wir wissen, wie logische Gatter durch CMOS Gatter dargestellt werden können, können wir komplexe logische Schaltungen durch CMOS Transistoren darstellen.
|
||||
|
||||
\dfn{Pull-up / Pull-down Prinzip}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Für die Darstellung von logischen Schaltungen durch CMOS Gattern gilt:
|
||||
|
||||
\begin{itemize}
|
||||
\item CMOS Gatter müssen aus genau so vielen NMOS und PMOS Transistoren bestehen.
|
||||
\item Bei $m$ Eingängen gibt es $m$ NMOS und $m$ PMOS Transistoren
|
||||
\end{itemize}
|
||||
\cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{minipage}{0.3\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}
|
||||
\node[circ, label=90:{\small $V_{DD}$}] 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{minipage}
|
||||
}
|
||||
|
||||
In den vorherigen Definitionen haben wir uns Pull-up und Pull-down Schaltungen von einzelnen logischen Gattern angeschaut. Wie wir aber in Kapitel \ref{sec:gat} gesehen haben, können logische Gatter miteinander verknüpft werden. Dies ist auch der Fall für CMOS Gatter. Um die verschiedenen logischen Gattern zu erkennen, kann man beim Pull-up bzw. beim Pull-down Pfad die Transistoren in Blöcke unterteilen. Dabei gelten die folgenden Regeln.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\subsection*{Pull-up}
|
||||
|
||||
\begin{itemize}
|
||||
\item 2 parallelgeschaltene PMOS Transistoren $\rightarrow$ ODER
|
||||
\item 2 seriegeschaltene PMOS Transistoren $\rightarrow$ UND
|
||||
\end{itemize}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\subsection*{Pull-down}
|
||||
|
||||
\begin{itemize}
|
||||
\item 2 parallelgeschaltene NMOS Transistoren $\rightarrow$ UND
|
||||
\item 2 seriegeschaltene NMOS Transistoren $\rightarrow$ ODER
|
||||
\end{itemize}
|
||||
\end{minipage}
|
||||
|
||||
Diese Regeln gelten nicht nur für einzelne Transistoren, sondern auch für Blöcke von Transistoren.
|
||||
|
||||
|
||||
\subsection{Zeitverzögerung}
|
||||
|
||||
CMOS Gatter können nicht unendlich schnell schalten. Ladungen (Elektronen und Löcher) müssen bewegt werden, was Laufzeit Verzögerungen verursacht. \cite{Luisier2024} In unserem Fall spielen der Propagation Delay von Low to High bzw. High to Low eine grosse Rolle. Aus der Tabelle kann man erkennen, dass es mehrere Faktoren hat, welche die Verzögerungszeit beeinflussen können. Wir fokussieren uns aber hauptsächlich auf die Propagation Delay.
|
||||
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$t_{pHL}$ & Verzögerungszeit (Propagation Delay High Low) & Beim Übergang H $\rightarrow$ L Gemessen bei 50\% des Pegelhubs \\
|
||||
$t_{pLH}$ & Verzögerungszeit (Propagation delay Low High) & Beim Übergang L $\rightarrow$ H Gemessen bei 50\% des Pegelhubs \\
|
||||
$r_r$ & Anstieg- (Rise-) Zeit Transition Low High & Gemessen zwischen 10\% und 90\% des Pegelhubs \\
|
||||
$t_{tLH}$ & Transition Low High & \\
|
||||
$t_f$ & Abfall- (Fall-) Zeit & Gemessen zwischen 90\% und 10\% des Pegelhubs \\
|
||||
$t_{tHL}$ & Transition High Low & \\
|
||||
\end{tabular}
|
||||
|
||||
In diesem Semester arbeiten wir hauptsächlich mit $t_d$ (Delay Time). Diese kann wie folgt bestimmt werden.
|
||||
|
||||
\[
|
||||
t_d = \frac{t_{pLH} + t_{pHL}}{2}
|
||||
.\]
|
12
hs24/digitaltechnik/disclaimer.tex
Normal file
@@ -0,0 +1,12 @@
|
||||
\section*{DISCLAIMER}
|
||||
|
||||
Diese Notizen wurden verfasst auf Basis der Vorlesung Digitaltechnik (HS24) von M. Luisier, sowie dem Übungsskript von M. Vasylyev.
|
||||
\\
|
||||
\\
|
||||
Ich übernehme keine Haftung über mögliche Fehler in den Notizen (Es hat sicherlich ein paar drinnen, da ich teils Sätze umformuliert habe und meine Persönliche Notizen beigefügt habe!).
|
||||
\\
|
||||
\\
|
||||
Falls nicht anders deklariert wurden alle Grafiken eigenhändig mit Manim \cite{MCD2024} oder CircuiTikz generiert.
|
||||
\\
|
||||
\\
|
||||
Fehler können per Mail an \href{mailto:jirruh@ethz.ch}{jirruh@ethz.ch} gemeldet werden.
|
3
hs24/digitaltechnik/einfuehrung/einfuehrung.tex
Normal file
@@ -0,0 +1,3 @@
|
||||
\chapter{Einführung in die digitale Welt}
|
||||
|
||||
\input{grundlagen.tex}
|
54
hs24/digitaltechnik/einfuehrung/grundlagen.tex
Normal file
@@ -0,0 +1,54 @@
|
||||
\section{Grundlagen der Elektronik} \label{sec:grund}
|
||||
|
||||
\subsection{Analog vs. Digital}
|
||||
|
||||
Signale haben in der Elektrotechnik eine grosse Bedeutung. Wir unterscheiden zwischen zwei verschiedenen Signalen.
|
||||
|
||||
\dfn{Das analoge Signal}{
|
||||
Analoge Signale haben kontinuierliche Werte und liefern deshalb unendlich genaue Informationen. \cite{Luisier2024}
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_1.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\dfn{Das digitale Signal}{
|
||||
Digitale Signale bestehen aus diskreten Werten und hängen von der Betrachtungsart ab. \cite{Luisier2024}
|
||||
|
||||
\includegraphics[width=\textwidth]{fig/Fig_2.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
In den meisten Fällen interessieren uns die Werte der digitalen Signale da diese ausreichend Daten liefern. Nun stellt sich die Frage welche Auflösung man haben möchte und wie sie dargestellt werden sollen.
|
||||
\\
|
||||
\\
|
||||
Die Auflösung hängt nach Anwendungsbereich ab. Je nachdem braucht man eine höhere oder eine tiefere Auflösung. Für die Darstellung werden hauptsächlich Bits verwendet.
|
||||
|
||||
\dfn{Bit}{
|
||||
Ein Bit (binäre Stelle, englisch: Binary digit) kann verwendet werden, um Zustände darzustellen. \cite{Luisier2024}
|
||||
}
|
||||
|
||||
Bits können zwei Zustände haben: 1 und 0. Mehrere Bits hintereinander nennt man Codierung. Das erste Bit wird "Most Significant Bit" (MSB, höchstes Gewicht) genannt, das letzte "Least Significant Bit" (LSB, niedriges Gewicht). Wie tut man nun mit Bits Daten darstellen?
|
||||
\\
|
||||
\\
|
||||
Bits können verschiedene Zustände annehmen. Diese Zustände können zu bestimmten Daten korrespondieren. Je mehr Bits man hat, desto mehr Daten kann man darstellen. Genauer gesagt kann man die Anzahl Zustände $z$ mit den Anzahl Bits $n$ wie folgt berechnen.
|
||||
|
||||
\[
|
||||
z = 2 ^{n}
|
||||
.\]
|
||||
|
||||
\subsection{Strom und Spannung}
|
||||
|
||||
In NUS I haben wir das Konzept von Strom und Spannung angeschaut. In der Digitaltechnik werden wir nun diese verwenden, um die Zustände von Bits darzustellen.
|
||||
\\
|
||||
\\
|
||||
Die Digitaltechnik verwendet zwei verschiedene Methoden, um Bits darzustellen.
|
||||
|
||||
\dfn{Darstellung der Bits durch Spannung}{
|
||||
Der Zustand vom Bit kann durch die Menge der Spannung bestimmt werden. Ist die Spannung auf High (0.8 - 1 $V$), so hat der Bit den Zustand 1. Hat die Spannung einen Wert von 0 - 0.15 $V$ (Low), so hat der Bit den Zustand 0.
|
||||
|
||||
\includegraphics[width=0.3\textwidth]{fig/Fig_3.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\dfn{Darstellung der Bits durch Schalter}{
|
||||
Bits können auch durch Schalter, genauer gesagt durch Relais dargestellt werden. Liegt beim Eingang vom Relais keine Spannung vor, so bleibt der Relais offen und der Zustand vom Bit ist 0. Im umgekehrten Fall schliesst sich der Relais und der Zustand vom Bit ist 1.
|
||||
|
||||
\includegraphics[width=0.8\textwidth]{fig/Fig_4.png} \cite{Luisier2024}
|
||||
}
|
BIN
hs24/digitaltechnik/fig/Fig_1.png
Normal file
After Width: | Height: | Size: 99 KiB |
BIN
hs24/digitaltechnik/fig/Fig_10.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
hs24/digitaltechnik/fig/Fig_11.png
Normal file
After Width: | Height: | Size: 202 KiB |
BIN
hs24/digitaltechnik/fig/Fig_12.png
Normal file
After Width: | Height: | Size: 63 KiB |
BIN
hs24/digitaltechnik/fig/Fig_13.png
Normal file
After Width: | Height: | Size: 64 KiB |
BIN
hs24/digitaltechnik/fig/Fig_14.png
Normal file
After Width: | Height: | Size: 80 KiB |
BIN
hs24/digitaltechnik/fig/Fig_15.png
Normal file
After Width: | Height: | Size: 133 KiB |
BIN
hs24/digitaltechnik/fig/Fig_16.png
Normal file
After Width: | Height: | Size: 110 KiB |
BIN
hs24/digitaltechnik/fig/Fig_17.png
Normal file
After Width: | Height: | Size: 108 KiB |
BIN
hs24/digitaltechnik/fig/Fig_18.png
Normal file
After Width: | Height: | Size: 174 KiB |
BIN
hs24/digitaltechnik/fig/Fig_19.png
Normal file
After Width: | Height: | Size: 94 KiB |
BIN
hs24/digitaltechnik/fig/Fig_2.png
Normal file
After Width: | Height: | Size: 92 KiB |
BIN
hs24/digitaltechnik/fig/Fig_20.png
Normal file
After Width: | Height: | Size: 111 KiB |
BIN
hs24/digitaltechnik/fig/Fig_21.png
Normal file
After Width: | Height: | Size: 104 KiB |
BIN
hs24/digitaltechnik/fig/Fig_22.png
Normal file
After Width: | Height: | Size: 96 KiB |
BIN
hs24/digitaltechnik/fig/Fig_23.png
Normal file
After Width: | Height: | Size: 251 KiB |
BIN
hs24/digitaltechnik/fig/Fig_24.png
Normal file
After Width: | Height: | Size: 244 KiB |
BIN
hs24/digitaltechnik/fig/Fig_25.png
Normal file
After Width: | Height: | Size: 268 KiB |
BIN
hs24/digitaltechnik/fig/Fig_26.png
Normal file
After Width: | Height: | Size: 364 KiB |
BIN
hs24/digitaltechnik/fig/Fig_27.png
Normal file
After Width: | Height: | Size: 392 KiB |
BIN
hs24/digitaltechnik/fig/Fig_28.png
Normal file
After Width: | Height: | Size: 902 KiB |
BIN
hs24/digitaltechnik/fig/Fig_29.png
Normal file
After Width: | Height: | Size: 114 KiB |
BIN
hs24/digitaltechnik/fig/Fig_3.png
Normal file
After Width: | Height: | Size: 56 KiB |
BIN
hs24/digitaltechnik/fig/Fig_30.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
hs24/digitaltechnik/fig/Fig_31.png
Normal file
After Width: | Height: | Size: 88 KiB |
BIN
hs24/digitaltechnik/fig/Fig_32.png
Normal file
After Width: | Height: | Size: 90 KiB |
BIN
hs24/digitaltechnik/fig/Fig_33.png
Normal file
After Width: | Height: | Size: 106 KiB |
BIN
hs24/digitaltechnik/fig/Fig_34.png
Normal file
After Width: | Height: | Size: 153 KiB |
BIN
hs24/digitaltechnik/fig/Fig_35.png
Normal file
After Width: | Height: | Size: 120 KiB |
BIN
hs24/digitaltechnik/fig/Fig_36.png
Normal file
After Width: | Height: | Size: 100 KiB |
BIN
hs24/digitaltechnik/fig/Fig_37.png
Normal file
After Width: | Height: | Size: 53 KiB |
BIN
hs24/digitaltechnik/fig/Fig_38.png
Normal file
After Width: | Height: | Size: 135 KiB |
BIN
hs24/digitaltechnik/fig/Fig_39.png
Normal file
After Width: | Height: | Size: 117 KiB |
BIN
hs24/digitaltechnik/fig/Fig_4.png
Normal file
After Width: | Height: | Size: 59 KiB |
BIN
hs24/digitaltechnik/fig/Fig_5.png
Normal file
After Width: | Height: | Size: 28 KiB |
BIN
hs24/digitaltechnik/fig/Fig_6.png
Normal file
After Width: | Height: | Size: 46 KiB |
BIN
hs24/digitaltechnik/fig/Fig_7.png
Normal file
After Width: | Height: | Size: 70 KiB |
BIN
hs24/digitaltechnik/fig/Fig_8.png
Normal file
After Width: | Height: | Size: 119 KiB |
BIN
hs24/digitaltechnik/fig/Fig_9.png
Normal file
After Width: | Height: | Size: 306 KiB |
49
hs24/digitaltechnik/latches_flipflops/einfuehrung.tex
Normal file
@@ -0,0 +1,49 @@
|
||||
\section{Einführung in die Flipflops}
|
||||
|
||||
\subsection{SR- und D-Flipflops}
|
||||
|
||||
In Vergleich zu taktgesteuerten Latches ändern taktflankengesteuerte Latches (Flipflops) den Zustand ihres Ausgangs, nur wenn der Eingang beschaltet wird und wenn das Taktsignal seinen Zustand ändert (entweder $T=0 \rightarrow 1$ oder $T = 1 \rightarrow 0$). Ändert sich das Taktsignal nicht, so ändert sich der Zustand des Ausgangs nicht.
|
||||
|
||||
\dfn{D-Flipflops}{
|
||||
D-Flipflops haben die gleiche Funktion wie D-Latches. Der einzige Unterschied ist, dass D-Flipflops taktflankengesteuert sind.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop D, dot on notQ](tff1){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_17.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\dfn{SR-Flipflops}{
|
||||
Wie beim D-Flipflop haben SR-Flipflops die gleiche Funktion wie SR-Latches mit dem Unterschied, dass SR-Flipflops taktflankengesteuert sind.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop mySR/.style={flipflop,
|
||||
flipflop def={t1=S, t3=R, t6=Q, t4=$\bar{\text{Q}}$, c2=1, n4=1}}};
|
||||
\draw (0,0) node[flipflop mySR](tff1){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_18.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\subsection{Dynamik von Flipflops}
|
||||
|
||||
Wie bei logischen Gattern sind Flipflops limitiert durch Verzögerungszeiten.
|
||||
|
||||
\begin{itemize}
|
||||
\item $t_{pd}$: Verzögerungszeit $\rightarrow$ misst die Verzögerungszeit zwischen einer aktiven Taktflanke am Clock und ihrer Reaktion am Ausgang des Flipflops.
|
||||
\item $t_s$: Setup-Zeit $\rightarrow$ bestimmt wie lange ein Daten-Signal (hier D) vor der aktiven Taktflanke unverändert anliegen muss, um sicher in das Flipflop übernommen zu werden.
|
||||
\item $t_h$: Haltezeit $\rightarrow$ gibt an, wie lange ein Daten-Signal nach der aktiven Taktflanke unverändert anliegen muss, um sicher in das Flipflop übernommen zu werden.
|
||||
\end{itemize} \cite{Luisier2024}
|
||||
|
||||
Die Verzögerungszeiten von Flipflops beeinflusst die Frequenz vom Taktsignal. Ist die Frequenz zu hoch, so kann der Flipflop nicht rechtzeitig schalten. Die maximale Taktfrequenz eines Flipflops wird meistens durch den Hersteller gegeben.
|
102
hs24/digitaltechnik/latches_flipflops/grundlagen.tex
Normal file
@@ -0,0 +1,102 @@
|
||||
\section{Grundlagen der Latches}
|
||||
|
||||
\subsection{Rückkopplungsprinzip}
|
||||
|
||||
In den letzten paar Kapitel haben wir hauptsächlich kombinatorische Schaltungen untersucht. Kombinatorische Schaltungen nehmen mehrere Eingänge und kombinieren sie durch logische Bauelemente zu einem Ausgang. Im Gegensatz zu kombinatorische Schaltungen können sequentielle Schaltungen ihren Ausgang als Eingang wiederverwenden. Dieser wird auch Rückkopplung genannt.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_10.png} \cite{Luisier2024}
|
||||
|
||||
Dieses Prinzip der Rückkopplung ist eine essenzielle Basis für Bauelemente, deren Aufgabe es ist Informationen zu speichern. Diese fungieren meistens als Kippschaltungen (Latches). Wir unterscheiden zwischen zwei Verschiedene Latches.
|
||||
|
||||
\begin{enumerate}
|
||||
\item SR-Latch (Set/Reset Latch)
|
||||
\item D-Latch (Data Latch)
|
||||
\end{enumerate}
|
||||
|
||||
\dfn{SR-Latch}{
|
||||
Der SR-Latch ist ein Kippschalter, welcher 2 Eingänge hat und 2 Ausgänge, wobei einer der Ausgänge die Inversion des anderen ist. Eines der Eingänge setzt den Zustand des Ausgangs auf 1 während der andere Eingang den Ausgang auf 0 setzt (zurücksetzt). Werden beide Eingänge nicht beschaltet, so bleiben die Eingänge in ihren vorherigen Zustand.
|
||||
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[nor gate] (nor1) at (0,0) {};
|
||||
\node[nor gate] (nor2) at (0,-2) {};
|
||||
\path[draw] (nor1.input 1) --++(left:10mm) node[point, label=180:S] {};
|
||||
\path[draw] (nor2.input 2) --++(left:10mm) node[point, label=180:R] {};
|
||||
\path[draw] (nor1.input 2) --++(left:5mm) --++(down:5mm);
|
||||
\path[draw] (nor2.input 1) --++(left:5mm) --++(up:5mm);
|
||||
\path[draw] (nor1.output) --++(right:10mm) --++(1,-2) --++(right:10mm) node[point, label=0:$\bar{\text{Q}}$] {};
|
||||
\path[draw] (nor2.output) --++(right:10mm) --++(1,2) --++(right:10mm) node[point, label=0:$\text{Q}$] {};
|
||||
\path[draw] (nor1.output) --++(right:5mm) --++(down:5mm) --++ (-1.75,-0.85);
|
||||
\path[draw] (nor2.output) --++(right:5mm) --++(up:5mm) --++ (-1.75,0.85);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop srlatch/.style={flipflop,
|
||||
flipflop def={t1=S, t3=R, t6=Q, t4=$\bar{\text{Q}}$, n4=1}
|
||||
}}
|
||||
\node[flipflop srlatch]{};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{tabular}{| c | c | c | c |}
|
||||
S & R & $\text{Q}_{n+1}$ & $\bar{\text{Q}}_{n+1}$ \\
|
||||
\hline
|
||||
0 & 0 & $\text{Q}_n$ & $\bar{\text{Q}}_n$ \\
|
||||
0 & 1 & 0 & 1 \\
|
||||
1 & 0 & 1 & 0 \\
|
||||
1 & 1 & X & X \\
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
|
||||
\nt{
|
||||
Bei einem SR-Latch dürfen die Eingänge nicht gleichzeitig beschaltet werden, da dies zu einem Fehler führt.
|
||||
}
|
||||
}
|
||||
|
||||
SR-Latches können auch taktgesteuert sein. Dies bedeutet, dass der Ausgang nur verändert wird, sobald der Takteingang beschaltet ist.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop srlatch/.style={flipflop,
|
||||
flipflop def={t1=S, t3=R, t6=Q, t4=$\bar{\text{Q}}$, n4=1}
|
||||
}}
|
||||
\path[draw] node[flipflop srlatch](srlatch){}
|
||||
(srlatch.pin 1)--++(left:5mm)
|
||||
node[and port](and1){}
|
||||
(and1.out)
|
||||
(srlatch.pin 3)--++(left:5mm)
|
||||
node[and port](and2){}
|
||||
(and2.out);
|
||||
\path[draw] (and1.in 1) --++(left:10mm) node[point, label=180:S] {};
|
||||
\path[draw] (and2.in 2) --++(left:10mm) node[point, label=180:R] {};
|
||||
\path[draw] (and2.in 1) --++(up:6mm)--++(left:10mm) node[point, label=180:T] {};
|
||||
\path[draw] (and1.in 2) --++(down:6mm);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop srlatch/.style={flipflop,
|
||||
flipflop def={t1=S, t2=T, t3=R, t6=Q, t4=$\bar{\text{Q}}$, n4=1}
|
||||
}}
|
||||
\node[flipflop srlatch]{};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
|
||||
\subsection{D-Latch (Data-Latch)}
|
||||
|
||||
\dfn{D-Latch}{
|
||||
Der D-Latch ist ein Kippschalter, welcher 1 Eingang hat und 2 Ausgänge. Der Eingang ist in Vergleich zum SR-Latch allein zuständig für das Setzen und Rücksetzen des Ausgangs bzw. des invertierten Ausgangs. Wie beim SR-Latch können D-Latches auch Taktgesteuert sein.
|
||||
|
||||
|
||||
}
|
||||
|
||||
Taktgesteuerte Latches haben jedoch einen Nachteil. Sie sind sehr empfindlich zu Störungen. Deswegen eignet es sich eher, Flip-Flops zu verwenden, welche Taktflankengesteuert sind.
|
@@ -0,0 +1,6 @@
|
||||
\chapter{Latches und Flipflops}
|
||||
|
||||
\input{grundlagen.tex}
|
||||
\input{einfuehrung.tex}
|
||||
\input{mehr_grundlagen.tex}
|
||||
\input{schaltungen.tex}
|
179
hs24/digitaltechnik/latches_flipflops/mehr_grundlagen.tex
Normal file
@@ -0,0 +1,179 @@
|
||||
\section{Mehr über Flipflop Grundlagen}
|
||||
|
||||
\subsection{JK und T-Flipflops}
|
||||
|
||||
\dfn{JK-Flipflops (Jump-Kill Flipflops)}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Der JK-Flipflop ist eine Erweiterung des SR-Flipflops. Beim SR-Flipflop war das Problem, dass beide Eingänge nicht gleichzeitig beschaltet werden dürfen, da dies zu einem Fehler führt. Dieses Problem existiert nicht mehr, da JK-Flipflops einfach die Ausgänge invertiert (Toggeln).
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{tabular}{| c | c | c | c |}
|
||||
J & K & $\text{Q}_{1n+1}$ & $\text{Q}_{2n+1}$ \\
|
||||
\hline
|
||||
0 & 0 & $\text{Q}_{1n}$ & $\text{Q}_{2n}$ \\
|
||||
0 & 1 & 0 & 1 \\
|
||||
1 & 0 & 1 & 0 \\
|
||||
1 & 1 & $\overline{\text{Q}_{1n}}$ & $\overline{\text{Q}_{2n}}$ \\
|
||||
\end{tabular}
|
||||
|
||||
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop JK, dot on notQ](tff1){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_19.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
|
||||
\nt{
|
||||
JK-Latches existieren auch.
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
\dfn{T-Flipflops (Toggle Flipflops)}{
|
||||
Beim T-Flipflop gibt es zwei Varianten.
|
||||
\\
|
||||
Bei der ersten Variante hat der T-Flipflop nur den Takteingang. Die Aufgabe dieses Flipflops ist es, den Zustand vom Ausgang zu invertieren, sobald das Taktsignal seinen Zustand ändert.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop T, dot on notQ, external pins width=0](tff){};
|
||||
\path[draw] (tff.bpin 3) --++(left:2.5mm);
|
||||
\path[draw] (tff.bpin 4) --++(right:2.5mm);
|
||||
\path[draw] (tff.bpin 6) --++(right:2.5mm);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_20.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
|
||||
Bei der zweiten Variante hat der T-Flipflop 2 Eingänge. Bei diesem Flipflop wird der Ausgang invertiert, sobald der Toggle Eingang beschaltet ist und das Taktsignal seinen Zustand ändert.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop T, dot on notQ](tff1){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_21.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\subsection{D-Flipflops in CMOS Technik}
|
||||
|
||||
Um D-Flipflops durch Transistoren realisieren zu können, benötigen wir Transmission Gates.
|
||||
|
||||
\dfn{Transmission Gates}{
|
||||
Transmission Gates sind Bauelemente, welche für den Aufbau von Logikgattern benötigt wird. Sie bestehen aus einem PMOS Transistor und einem NMOS Transistor. Dadurch können sie High- als auch Low-Pegel übertragen. \cite{Vasylyev2024}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{tabular}{| c | c | c | c |}
|
||||
T & IN & Wiederstand & OUT \\
|
||||
\hline
|
||||
0 & 0 & hochohmig & - \\
|
||||
0 & 1 & hochohmig & - \\
|
||||
1 & 0 & niederohmig & 0 \\
|
||||
1 & 1 & niederohmig & 1 \\
|
||||
\end{tabular}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_22.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
Das Verhalten von Transmission Gates hängt von der Eingangsspannung $V_{\text{in}}$ ab. Ist das Taktsignal beschaltet und die Eingangsspannung $<0$, so ist die Gate-Source Spannung $V_{\text{gs}}$ des PMOS Transistors $-V_{\text{in}}$ und der PMOS Transistor leitet. Dies ist anders beim NMOS Trasistor, welcher gesperrt bleibt. Wenn $V_{\text{in}} >0$ dann ist es die umgekehrte Situation und der NMOS Transistor leitet.
|
||||
|
||||
\dfn{D-FlipFlops in CMOS Technik}{
|
||||
Um ein D-Flipflop mit Transmission Gates zu realisieren, benötigt man vier Transmission Gates und vier Inverter bzw. zwei Transmission Gates und zwei Inverter pro Latch.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_23.png} \cite{Luisier2024}
|
||||
|
||||
Mit CMOS Transistoren würde die vorherige Schaltung wie folgt aussehen.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_24.png} \cite{Luisier2024}
|
||||
|
||||
$\Rightarrow$ Für ein D-Flipflop werden acht PMOS- und acht NMOS-Transistoren benötigt.
|
||||
}
|
||||
|
||||
\subsection{Weitere Flipflop Eigenschaften}
|
||||
|
||||
Ein JK-Flipflop kann immer durch ein D-Flipflop ersetzt werden. Neben den D-Flipflop selbst werden zwei AND und ein OR zusätzlich benötigt.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\path[draw] node[flipflop D, dot on notQ](dff){}
|
||||
(dff.pin 4) --++(right:15mm) node[point, label=0:$\bar{\text{Q}}$]{}
|
||||
(dff.pin 6) --++(right:15mm) node[point, label=0:Q]{}
|
||||
(dff.pin 3) --++ (left:10mm) node[point, label=180:CLK]{}
|
||||
(dff.pin 1) --++(left:5mm)
|
||||
node[or port, anchor=out](or){}
|
||||
(or.in 1) --++(left:5mm)
|
||||
node[and port, anchor=out](and1){}
|
||||
(and1.in 2) --++(left:10mm) node[point, label=180:J]{}
|
||||
(or.in 2) --++(left:5mm) --++(down:20mm) --++(left:5mm)
|
||||
node[and port, anchor=out](and2){}
|
||||
node [notcirc, left] at (and2.bin 1) {}
|
||||
(and2.in 1) --++(left:10mm) node[point, label=180:K]{}
|
||||
(dff.pin 4) --++(right:5mm) --++(up:30mm) --++(left:77mm) --++(down:9mm)
|
||||
(dff.pin 6) --++(right:10mm) --++(down:30mm) --++(left:86.5mm) --++(up:5.5mm);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
|
||||
Flipflops können zusätzlich noch einen zusätzlichen Setz- bzw. Rücksetzkontakt haben. Dieser tut den Ausgang, egal in welchen Zustand das Taktsignal oder die Eingänge sind, setzen bzw. rücksetzen.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\path[draw] node[flipflop D, dot on notQ, add async SR](dff){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\path[draw] node[flipflop JK, dot on notQ, add async SR](dff){};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\dfn{JK-LF-Flipflops (Jump-Kill-Leader-Follower Flipflops)}{
|
||||
JK-LF-Flipflops (Zwischenspeicher Flipflops) sind in der Lage Signale zwischenzuspeichern und erst bei der nächsten fallenden Taktflanke zum Ausgang weiterzuleiten.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\path[draw] node[flipflop JK, dot on notQ](jkff1){}
|
||||
(jkff1.pin 1) --++(left:10mm) node[point, label=180:J]{}
|
||||
(jkff1.pin 2) --++(left:10mm) node[point, label=180:CLK]{}
|
||||
(jkff1.pin 3) --++(left:10mm) node[point, label=180:K]{}
|
||||
(jkff1.pin 6) --++(right:10mm)
|
||||
node[flipflop JK, dot on notQ, anchor=pin 1](jkff2){}
|
||||
node [notcirc, left] at (jkff2.bpin 2) {}
|
||||
(jkff1.pin 4) --++(right:10mm)
|
||||
(jkff2.pin 4) --++(right:10mm) node[point, label=0:Q]{}
|
||||
(jkff2.pin 6) --++(right:10mm) node[point, label=0:$\bar{\text{Q}}$]{}
|
||||
(jkff1.pin 2) --++(left:5mm) --++(down:15mm) --++(right:33mm) --++(up:15mm) --++(right:5mm);
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}
|
||||
\tikzset{flipflop JKLF/.style={flipflop,
|
||||
flipflop def={t1=J, t2=CLK, t3=K, t4=$\neg$, t6=$\neg$, c2=1, n4=1}
|
||||
}}
|
||||
\node [flipflop JKLF]{};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
}
|
18
hs24/digitaltechnik/latches_flipflops/schaltungen.tex
Normal file
@@ -0,0 +1,18 @@
|
||||
\section{Schaltungen mit Flipflops} \label{sec:ffcirc}
|
||||
|
||||
\subsection{Frequenzteiler und Zähler}
|
||||
|
||||
Mithilfe von T-Flipflops kann die Frequenz vom Taktsignal verringert werden. Jeder T-Flipflop verringert die Frequenz um den Faktor 2. Dies bedeutet mit $n$ Flipflops wird die Frequenz um den Faktor $2 ^{n}$ verringert.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\draw (0,0) node[flipflop T, dot on notQ](tff1){}
|
||||
(tff1.pin 3) --++(left:10mm) node[point, label=180:CLK] {}
|
||||
(tff1.pin 6) --++(right:15mm) --++(down:17mm) --++(right:5mm)
|
||||
node[flipflop T, dot on notQ, anchor=pin 3](tff2){}
|
||||
(tff2.pin 6) --++(right:10mm) node[point, label=0:Q] {};
|
||||
\path[draw] (tff1.pin 6) --++(right:10mm) --++(up:10mm) node[point, label=90:M] {};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
|
||||
Mit zwei T-Flipflops kann auch ein zwei Bit Zähler erstellt werden. Dazu wird der Ausgang vom ersten Flipflop für den LSB verwendet und der Ausgang vom zweiten Flipflop als MSB verwendet. Die höchste Zahl hängt von der Anzahl Flipflops ab. Grundsätzlich kann man sagen, dass $n$ Flipflops von 0 bis $2 ^{n}-1$ zählen kann.
|
178
hs24/digitaltechnik/letterfonts.tex
Normal file
@@ -0,0 +1,178 @@
|
||||
% Things Lie
|
||||
\newcommand{\kb}{\mathfrak b}
|
||||
\newcommand{\kg}{\mathfrak g}
|
||||
\newcommand{\kh}{\mathfrak h}
|
||||
\newcommand{\kn}{\mathfrak n}
|
||||
\newcommand{\ku}{\mathfrak u}
|
||||
\newcommand{\kz}{\mathfrak z}
|
||||
\DeclareMathOperator{\Ext}{Ext} % Ext functor
|
||||
\DeclareMathOperator{\Tor}{Tor} % Tor functor
|
||||
\newcommand{\gl}{\opname{\mathfrak{gl}}} % frak gl group
|
||||
\renewcommand{\sl}{\opname{\mathfrak{sl}}} % frak sl group chktex 6
|
||||
|
||||
% More script letters etc.
|
||||
\newcommand{\SA}{\mathcal A}
|
||||
\newcommand{\SB}{\mathcal B}
|
||||
\newcommand{\SC}{\mathcal C}
|
||||
\newcommand{\SF}{\mathcal F}
|
||||
\newcommand{\SG}{\mathcal G}
|
||||
\newcommand{\SH}{\mathcal H}
|
||||
\newcommand{\OO}{\mathcal O}
|
||||
|
||||
\newcommand{\SCA}{\mathscr A}
|
||||
\newcommand{\SCB}{\mathscr B}
|
||||
\newcommand{\SCC}{\mathscr C}
|
||||
\newcommand{\SCD}{\mathscr D}
|
||||
\newcommand{\SCE}{\mathscr E}
|
||||
\newcommand{\SCF}{\mathscr F}
|
||||
\newcommand{\SCG}{\mathscr G}
|
||||
\newcommand{\SCH}{\mathscr H}
|
||||
|
||||
% Mathfrak primes
|
||||
\newcommand{\km}{\mathfrak m}
|
||||
\newcommand{\kp}{\mathfrak p}
|
||||
\newcommand{\kq}{\mathfrak q}
|
||||
|
||||
% number sets
|
||||
\newcommand{\RR}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{R}}{\mathbb{R}^{#1}}}}
|
||||
\newcommand{\NN}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{N}}{\mathbb{N}^{#1}}}}
|
||||
\newcommand{\ZZ}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{Z}}{\mathbb{Z}^{#1}}}}
|
||||
\newcommand{\QQ}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{Q}}{\mathbb{Q}^{#1}}}}
|
||||
\newcommand{\CC}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{C}}{\mathbb{C}^{#1}}}}
|
||||
\newcommand{\PP}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{P}}{\mathbb{P}^{#1}}}}
|
||||
\newcommand{\HH}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{H}}{\mathbb{H}^{#1}}}}
|
||||
\newcommand{\FF}[1][]{\ensuremath{\ifstrempty{#1}{\mathbb{F}}{\mathbb{F}^{#1}}}}
|
||||
% expected value
|
||||
\newcommand{\EE}{\ensuremath{\mathbb{E}}}
|
||||
\newcommand{\charin}{\text{ char }}
|
||||
\DeclareMathOperator{\sign}{sign}
|
||||
\DeclareMathOperator{\Aut}{Aut}
|
||||
\DeclareMathOperator{\Inn}{Inn}
|
||||
\DeclareMathOperator{\Syl}{Syl}
|
||||
\DeclareMathOperator{\Gal}{Gal}
|
||||
\DeclareMathOperator{\GL}{GL} % General linear group
|
||||
\DeclareMathOperator{\SL}{SL} % Special linear group
|
||||
|
||||
%---------------------------------------
|
||||
% BlackBoard Math Fonts :-
|
||||
%---------------------------------------
|
||||
|
||||
%Captital Letters
|
||||
\newcommand{\bbA}{\mathbb{A}} \newcommand{\bbB}{\mathbb{B}}
|
||||
\newcommand{\bbC}{\mathbb{C}} \newcommand{\bbD}{\mathbb{D}}
|
||||
\newcommand{\bbE}{\mathbb{E}} \newcommand{\bbF}{\mathbb{F}}
|
||||
\newcommand{\bbG}{\mathbb{G}} \newcommand{\bbH}{\mathbb{H}}
|
||||
\newcommand{\bbI}{\mathbb{I}} \newcommand{\bbJ}{\mathbb{J}}
|
||||
\newcommand{\bbK}{\mathbb{K}} \newcommand{\bbL}{\mathbb{L}}
|
||||
\newcommand{\bbM}{\mathbb{M}} \newcommand{\bbN}{\mathbb{N}}
|
||||
\newcommand{\bbO}{\mathbb{O}} \newcommand{\bbP}{\mathbb{P}}
|
||||
\newcommand{\bbQ}{\mathbb{Q}} \newcommand{\bbR}{\mathbb{R}}
|
||||
\newcommand{\bbS}{\mathbb{S}} \newcommand{\bbT}{\mathbb{T}}
|
||||
\newcommand{\bbU}{\mathbb{U}} \newcommand{\bbV}{\mathbb{V}}
|
||||
\newcommand{\bbW}{\mathbb{W}} \newcommand{\bbX}{\mathbb{X}}
|
||||
\newcommand{\bbY}{\mathbb{Y}} \newcommand{\bbZ}{\mathbb{Z}}
|
||||
|
||||
%---------------------------------------
|
||||
% MathCal Fonts :-
|
||||
%---------------------------------------
|
||||
|
||||
%Captital Letters
|
||||
\newcommand{\mcA}{\mathcal{A}} \newcommand{\mcB}{\mathcal{B}}
|
||||
\newcommand{\mcC}{\mathcal{C}} \newcommand{\mcD}{\mathcal{D}}
|
||||
\newcommand{\mcE}{\mathcal{E}} \newcommand{\mcF}{\mathcal{F}}
|
||||
\newcommand{\mcG}{\mathcal{G}} \newcommand{\mcH}{\mathcal{H}}
|
||||
\newcommand{\mcI}{\mathcal{I}} \newcommand{\mcJ}{\mathcal{J}}
|
||||
\newcommand{\mcK}{\mathcal{K}} \newcommand{\mcL}{\mathcal{L}}
|
||||
\newcommand{\mcM}{\mathcal{M}} \newcommand{\mcN}{\mathcal{N}}
|
||||
\newcommand{\mcO}{\mathcal{O}} \newcommand{\mcP}{\mathcal{P}}
|
||||
\newcommand{\mcQ}{\mathcal{Q}} \newcommand{\mcR}{\mathcal{R}}
|
||||
\newcommand{\mcS}{\mathcal{S}} \newcommand{\mcT}{\mathcal{T}}
|
||||
\newcommand{\mcU}{\mathcal{U}} \newcommand{\mcV}{\mathcal{V}}
|
||||
\newcommand{\mcW}{\mathcal{W}} \newcommand{\mcX}{\mathcal{X}}
|
||||
\newcommand{\mcY}{\mathcal{Y}} \newcommand{\mcZ}{\mathcal{Z}}
|
||||
|
||||
|
||||
%---------------------------------------
|
||||
% Bold Math Fonts :-
|
||||
%---------------------------------------
|
||||
|
||||
%Captital Letters
|
||||
\newcommand{\bmA}{\boldsymbol{A}} \newcommand{\bmB}{\boldsymbol{B}}
|
||||
\newcommand{\bmC}{\boldsymbol{C}} \newcommand{\bmD}{\boldsymbol{D}}
|
||||
\newcommand{\bmE}{\boldsymbol{E}} \newcommand{\bmF}{\boldsymbol{F}}
|
||||
\newcommand{\bmG}{\boldsymbol{G}} \newcommand{\bmH}{\boldsymbol{H}}
|
||||
\newcommand{\bmI}{\boldsymbol{I}} \newcommand{\bmJ}{\boldsymbol{J}}
|
||||
\newcommand{\bmK}{\boldsymbol{K}} \newcommand{\bmL}{\boldsymbol{L}}
|
||||
\newcommand{\bmM}{\boldsymbol{M}} \newcommand{\bmN}{\boldsymbol{N}}
|
||||
\newcommand{\bmO}{\boldsymbol{O}} \newcommand{\bmP}{\boldsymbol{P}}
|
||||
\newcommand{\bmQ}{\boldsymbol{Q}} \newcommand{\bmR}{\boldsymbol{R}}
|
||||
\newcommand{\bmS}{\boldsymbol{S}} \newcommand{\bmT}{\boldsymbol{T}}
|
||||
\newcommand{\bmU}{\boldsymbol{U}} \newcommand{\bmV}{\boldsymbol{V}}
|
||||
\newcommand{\bmW}{\boldsymbol{W}} \newcommand{\bmX}{\boldsymbol{X}}
|
||||
\newcommand{\bmY}{\boldsymbol{Y}} \newcommand{\bmZ}{\boldsymbol{Z}}
|
||||
%Small Letters
|
||||
\newcommand{\bma}{\boldsymbol{a}} \newcommand{\bmb}{\boldsymbol{b}}
|
||||
\newcommand{\bmc}{\boldsymbol{c}} \newcommand{\bmd}{\boldsymbol{d}}
|
||||
\newcommand{\bme}{\boldsymbol{e}} \newcommand{\bmf}{\boldsymbol{f}}
|
||||
\newcommand{\bmg}{\boldsymbol{g}} \newcommand{\bmh}{\boldsymbol{h}}
|
||||
\newcommand{\bmi}{\boldsymbol{i}} \newcommand{\bmj}{\boldsymbol{j}}
|
||||
\newcommand{\bmk}{\boldsymbol{k}} \newcommand{\bml}{\boldsymbol{l}}
|
||||
\newcommand{\bmm}{\boldsymbol{m}} \newcommand{\bmn}{\boldsymbol{n}}
|
||||
\newcommand{\bmo}{\boldsymbol{o}} \newcommand{\bmp}{\boldsymbol{p}}
|
||||
\newcommand{\bmq}{\boldsymbol{q}} \newcommand{\bmr}{\boldsymbol{r}}
|
||||
\newcommand{\bms}{\boldsymbol{s}} \newcommand{\bmt}{\boldsymbol{t}}
|
||||
\newcommand{\bmu}{\boldsymbol{u}} \newcommand{\bmv}{\boldsymbol{v}}
|
||||
\newcommand{\bmw}{\boldsymbol{w}} \newcommand{\bmx}{\boldsymbol{x}}
|
||||
\newcommand{\bmy}{\boldsymbol{y}} \newcommand{\bmz}{\boldsymbol{z}}
|
||||
|
||||
%---------------------------------------
|
||||
% Scr Math Fonts :-
|
||||
%---------------------------------------
|
||||
|
||||
\newcommand{\sA}{{\mathscr{A}}} \newcommand{\sB}{{\mathscr{B}}}
|
||||
\newcommand{\sC}{{\mathscr{C}}} \newcommand{\sD}{{\mathscr{D}}}
|
||||
\newcommand{\sE}{{\mathscr{E}}} \newcommand{\sF}{{\mathscr{F}}}
|
||||
\newcommand{\sG}{{\mathscr{G}}} \newcommand{\sH}{{\mathscr{H}}}
|
||||
\newcommand{\sI}{{\mathscr{I}}} \newcommand{\sJ}{{\mathscr{J}}}
|
||||
\newcommand{\sK}{{\mathscr{K}}} \newcommand{\sL}{{\mathscr{L}}}
|
||||
\newcommand{\sM}{{\mathscr{M}}} \newcommand{\sN}{{\mathscr{N}}}
|
||||
\newcommand{\sO}{{\mathscr{O}}} \newcommand{\sP}{{\mathscr{P}}}
|
||||
\newcommand{\sQ}{{\mathscr{Q}}} \newcommand{\sR}{{\mathscr{R}}}
|
||||
\newcommand{\sS}{{\mathscr{S}}} \newcommand{\sT}{{\mathscr{T}}}
|
||||
\newcommand{\sU}{{\mathscr{U}}} \newcommand{\sV}{{\mathscr{V}}}
|
||||
\newcommand{\sW}{{\mathscr{W}}} \newcommand{\sX}{{\mathscr{X}}}
|
||||
\newcommand{\sY}{{\mathscr{Y}}} \newcommand{\sZ}{{\mathscr{Z}}}
|
||||
|
||||
|
||||
%---------------------------------------
|
||||
% Math Fraktur Font
|
||||
%---------------------------------------
|
||||
|
||||
%Captital Letters
|
||||
\newcommand{\mfA}{\mathfrak{A}} \newcommand{\mfB}{\mathfrak{B}}
|
||||
\newcommand{\mfC}{\mathfrak{C}} \newcommand{\mfD}{\mathfrak{D}}
|
||||
\newcommand{\mfE}{\mathfrak{E}} \newcommand{\mfF}{\mathfrak{F}}
|
||||
\newcommand{\mfG}{\mathfrak{G}} \newcommand{\mfH}{\mathfrak{H}}
|
||||
\newcommand{\mfI}{\mathfrak{I}} \newcommand{\mfJ}{\mathfrak{J}}
|
||||
\newcommand{\mfK}{\mathfrak{K}} \newcommand{\mfL}{\mathfrak{L}}
|
||||
\newcommand{\mfM}{\mathfrak{M}} \newcommand{\mfN}{\mathfrak{N}}
|
||||
\newcommand{\mfO}{\mathfrak{O}} \newcommand{\mfP}{\mathfrak{P}}
|
||||
\newcommand{\mfQ}{\mathfrak{Q}} \newcommand{\mfR}{\mathfrak{R}}
|
||||
\newcommand{\mfS}{\mathfrak{S}} \newcommand{\mfT}{\mathfrak{T}}
|
||||
\newcommand{\mfU}{\mathfrak{U}} \newcommand{\mfV}{\mathfrak{V}}
|
||||
\newcommand{\mfW}{\mathfrak{W}} \newcommand{\mfX}{\mathfrak{X}}
|
||||
\newcommand{\mfY}{\mathfrak{Y}} \newcommand{\mfZ}{\mathfrak{Z}}
|
||||
%Small Letters
|
||||
\newcommand{\mfa}{\mathfrak{a}} \newcommand{\mfb}{\mathfrak{b}}
|
||||
\newcommand{\mfc}{\mathfrak{c}} \newcommand{\mfd}{\mathfrak{d}}
|
||||
\newcommand{\mfe}{\mathfrak{e}} \newcommand{\mff}{\mathfrak{f}}
|
||||
\newcommand{\mfg}{\mathfrak{g}} \newcommand{\mfh}{\mathfrak{h}}
|
||||
\newcommand{\mfi}{\mathfrak{i}} \newcommand{\mfj}{\mathfrak{j}}
|
||||
\newcommand{\mfk}{\mathfrak{k}} \newcommand{\mfl}{\mathfrak{l}}
|
||||
\newcommand{\mfm}{\mathfrak{m}} \newcommand{\mfn}{\mathfrak{n}}
|
||||
\newcommand{\mfo}{\mathfrak{o}} \newcommand{\mfp}{\mathfrak{p}}
|
||||
\newcommand{\mfq}{\mathfrak{q}} \newcommand{\mfr}{\mathfrak{r}}
|
||||
\newcommand{\mfs}{\mathfrak{s}} \newcommand{\mft}{\mathfrak{t}}
|
||||
\newcommand{\mfu}{\mathfrak{u}} \newcommand{\mfv}{\mathfrak{v}}
|
||||
\newcommand{\mfw}{\mathfrak{w}} \newcommand{\mfx}{\mathfrak{x}}
|
||||
\newcommand{\mfy}{\mathfrak{y}} \newcommand{\mfz}{\mathfrak{z}}
|
88
hs24/digitaltechnik/macros.tex
Normal file
@@ -0,0 +1,88 @@
|
||||
%From M275 "Topology" at SJSU
|
||||
\newcommand{\id}{\mathrm{id}}
|
||||
\newcommand{\taking}[1]{\xrightarrow{#1}}
|
||||
\newcommand{\inv}{^{-1}}
|
||||
|
||||
%From M170 "Introduction to Graph Theory" at SJSU
|
||||
\DeclareMathOperator{\diam}{diam}
|
||||
\DeclareMathOperator{\ord}{ord}
|
||||
\newcommand{\defeq}{\overset{\mathrm{def}}{=}}
|
||||
|
||||
%From the USAMO .tex files
|
||||
\newcommand{\ts}{\textsuperscript}
|
||||
\newcommand{\dg}{^\circ}
|
||||
\newcommand{\ii}{\item}
|
||||
|
||||
% % From Math 55 and Math 145 at Harvard
|
||||
% \newenvironment{subproof}[1][Proof]{%
|
||||
% \begin{proof}[#1] \renewcommand{\qedsymbol}{$\blacksquare$}}%
|
||||
% {\end{proof}}
|
||||
|
||||
\newcommand{\liff}{\leftrightarrow}
|
||||
\newcommand{\lthen}{\rightarrow}
|
||||
\newcommand{\opname}{\operatorname}
|
||||
\newcommand{\surjto}{\twoheadrightarrow}
|
||||
\newcommand{\injto}{\hookrightarrow}
|
||||
\newcommand{\On}{\mathrm{On}} % ordinals
|
||||
\DeclareMathOperator{\img}{im} % Image
|
||||
\DeclareMathOperator{\Img}{Im} % Image
|
||||
\DeclareMathOperator{\coker}{coker} % Cokernel
|
||||
\DeclareMathOperator{\Coker}{Coker} % Cokernel
|
||||
\DeclareMathOperator{\Ker}{Ker} % Kernel
|
||||
\DeclareMathOperator{\rank}{rank}
|
||||
\DeclareMathOperator{\Spec}{Spec} % spectrum
|
||||
\DeclareMathOperator{\Tr}{Tr} % trace
|
||||
\DeclareMathOperator{\pr}{pr} % projection
|
||||
\DeclareMathOperator{\ext}{ext} % extension
|
||||
\DeclareMathOperator{\pred}{pred} % predecessor
|
||||
\DeclareMathOperator{\dom}{dom} % domain
|
||||
\DeclareMathOperator{\ran}{ran} % range
|
||||
\DeclareMathOperator{\Hom}{Hom} % homomorphism
|
||||
\DeclareMathOperator{\Mor}{Mor} % morphisms
|
||||
\DeclareMathOperator{\End}{End} % endomorphism
|
||||
|
||||
\newcommand{\eps}{\epsilon}
|
||||
\newcommand{\veps}{\varepsilon}
|
||||
\newcommand{\ol}{\overline}
|
||||
\newcommand{\ul}{\underline}
|
||||
\newcommand{\wt}{\widetilde}
|
||||
\newcommand{\wh}{\widehat}
|
||||
\newcommand{\vocab}[1]{\textbf{\color{blue} #1}}
|
||||
\providecommand{\half}{\frac{1}{2}}
|
||||
\newcommand{\dang}{\measuredangle} %% Directed angle
|
||||
\newcommand{\ray}[1]{\overrightarrow{#1}}
|
||||
\newcommand{\seg}[1]{\overline{#1}}
|
||||
\newcommand{\arc}[1]{\wideparen{#1}}
|
||||
\DeclareMathOperator{\cis}{cis}
|
||||
\DeclareMathOperator*{\lcm}{lcm}
|
||||
\DeclareMathOperator*{\argmin}{arg min}
|
||||
\DeclareMathOperator*{\argmax}{arg max}
|
||||
\newcommand{\cycsum}{\sum_{\mathrm{cyc}}}
|
||||
\newcommand{\symsum}{\sum_{\mathrm{sym}}}
|
||||
\newcommand{\cycprod}{\prod_{\mathrm{cyc}}}
|
||||
\newcommand{\symprod}{\prod_{\mathrm{sym}}}
|
||||
\newcommand{\Qed}{\begin{flushright}\qed\end{flushright}}
|
||||
\newcommand{\parinn}{\setlength{\parindent}{1cm}}
|
||||
\newcommand{\parinf}{\setlength{\parindent}{0cm}}
|
||||
% \newcommand{\norm}{\|\cdot\|}
|
||||
\newcommand{\inorm}{\norm_{\infty}}
|
||||
\newcommand{\opensets}{\{V_{\alpha}\}_{\alpha\in I}}
|
||||
\newcommand{\oset}{V_{\alpha}}
|
||||
\newcommand{\opset}[1]{V_{\alpha_{#1}}}
|
||||
\newcommand{\lub}{\text{lub}}
|
||||
\newcommand{\del}[2]{\frac{\partial #1}{\partial #2}}
|
||||
\newcommand{\Del}[3]{\frac{\partial^{#1} #2}{\partial^{#1} #3}}
|
||||
\newcommand{\deld}[2]{\dfrac{\partial #1}{\partial #2}}
|
||||
\newcommand{\Deld}[3]{\dfrac{\partial^{#1} #2}{\partial^{#1} #3}}
|
||||
\newcommand{\lm}{\lambda}
|
||||
\newcommand{\uin}{\mathbin{\rotatebox[origin=c]{90}{$\in$}}}
|
||||
\newcommand{\usubset}{\mathbin{\rotatebox[origin=c]{90}{$\subset$}}}
|
||||
\newcommand{\lt}{\left}
|
||||
\newcommand{\rt}{\right}
|
||||
\newcommand{\bs}[1]{\boldsymbol{#1}}
|
||||
\newcommand{\exs}{\exists}
|
||||
\newcommand{\st}{\strut}
|
||||
\newcommand{\dps}[1]{\displaystyle{#1}}
|
||||
|
||||
\newcommand{\sol}{\setlength{\parindent}{0cm}\textbf{\textit{Solution:}}\setlength{\parindent}{1cm} }
|
||||
\newcommand{\solve}[1]{\setlength{\parindent}{0cm}\textbf{\textit{Solution: }}\setlength{\parindent}{1cm}#1 \Qed}
|
38
hs24/digitaltechnik/mikroprozessoren/mikro.tex
Normal file
@@ -0,0 +1,38 @@
|
||||
\section{Mikroprozessoren}
|
||||
|
||||
\subsection{Aufbau eines einfachen Rechners}
|
||||
|
||||
Ein funktionierender Computer soll:
|
||||
|
||||
\begin{itemize}
|
||||
\item logische Verknüpfungen von binären Zahlen durchführen können.
|
||||
\item Grundrechenarten beherschen können.
|
||||
\item Abläufe steuern können.
|
||||
\item sein Zustand andhand der Eingaben vom Benutzer ändern können.
|
||||
\end{itemize}
|
||||
|
||||
Aus diesem Grund benötigt ein Rechner
|
||||
|
||||
\begin{enumerate}
|
||||
\item Ein Speicherwerk, um das auszuführende Programm sowie Daten (z.B. Zwischenergebnisse) ablegen zu können
|
||||
\item Ein Rechenwerk (Arithmetic Logic Unit, ALU), um die arithmetischen und logischen Operationen durchzuführen
|
||||
\item Ein Steuerwerk, um den Programmablauf und die Kommunikation zwischen den verschiedenen Blöcken zu regeln
|
||||
\item Ein Ein-/Ausgabewerk, um mit der Aussenwelt kommunizieren zu können.
|
||||
\end{enumerate}
|
||||
|
||||
Die meisten universellen Rechner haben eine Grundstruktur nach der "von Neumann" Architektur. Der universelle Rechner durchläuft ein Zyklus bestehend aus fünf Teilschritten.
|
||||
|
||||
\begin{itemize}
|
||||
\item FETCH (Befehlsabruf): das Steuerwerk holt aus dem Programmspeicher den nächsten Befehl.
|
||||
\item DECODE (Dekodierung): ein Befehlswort, das aus einem Instruktionsteil (‚was soll getan werden‘) und aus einer Datenadresse (‚welche Daten sollen manipuliert werden‘) wird durch das Steuerwerk in Schaltinstruktionen aufgelöst.
|
||||
\item FETCH OPERANDS (Operandenabruf): aus dem Speicher werden die Operanden geholt, die durch den Befehl verändert werden sollen oder als Parameter verwendet werden.
|
||||
\item EXECUTE (Befehlsausführung): eine arithmetische oder logische Operation wird vom ALU ausgeführt.
|
||||
\item WRITE BACK (Rückschreiben): das Ergebnis der Berechnung wird in Register oder Speicher zurückgeschrieben.
|
||||
\end{itemize} \cite{Luisier2024}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_8.png}\cite{Luisier2024} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_9.png}\cite{Luisier2024} \cite{Luisier2024}
|
||||
\end{minipage}
|
@@ -0,0 +1,3 @@
|
||||
\chapter{Mikroprozessoren}
|
||||
|
||||
\input{mikro.tex}
|
10
hs24/digitaltechnik/notes.tex
Normal file
@@ -0,0 +1,10 @@
|
||||
\import{einfuehrung}{einfuehrung.tex}
|
||||
\import{verknuepfung}{verknuepfung.tex}
|
||||
\import{cmos}{cmos.tex}
|
||||
\import{schaltalgebra}{schaltalgebra.tex}
|
||||
\import{schaltungssynthese}{schaltungssynthese.tex}
|
||||
\import{zahlen_codes}{zahlen_codes.tex}
|
||||
\import{rechenschaltungen_datenpfadkomponenten}{rechenschaltungen_datenpfadkomponenten.tex}
|
||||
\import{latches_flipflops}{latches_flipflops.tex}
|
||||
\import{automaten}{automaten.tex}
|
||||
\import{mikroprozessoren}{mikroprozessoren.tex}
|
15
hs24/digitaltechnik/notizen_digitech_ruh_jirayu.bbl
Normal file
@@ -0,0 +1,15 @@
|
||||
\begin{thebibliography}{}
|
||||
|
||||
\bibitem[Luisier, 2024]{Luisier2024}
|
||||
Luisier, D.~M. (2024).
|
||||
\newblock Vorlesungsfolien.
|
||||
|
||||
\bibitem[{The Manim Community Developers}, 2024]{MCD2024}
|
||||
{The Manim Community Developers} (2024).
|
||||
\newblock {Manim – Mathematical Animation Framework}.
|
||||
|
||||
\bibitem[Vasylyev, 2024]{Vasylyev2024}
|
||||
Vasylyev, M. (2024).
|
||||
\newblock Übungen.
|
||||
|
||||
\end{thebibliography}
|
BIN
hs24/digitaltechnik/notizen_digitech_ruh_jirayu.pdf
Normal file
43
hs24/digitaltechnik/notizen_digitech_ruh_jirayu.tex
Normal file
@@ -0,0 +1,43 @@
|
||||
\documentclass{report}
|
||||
|
||||
\def\papertitle{Digitaltechnik}
|
||||
|
||||
\def\theorytitle{Theorie}
|
||||
\def\corollarytitle{Korollar}
|
||||
\def\proposaltitle{Vorschlag}
|
||||
\def\claimtitle{Behauptung}
|
||||
\def\exercisetitle{Aufgabe}
|
||||
\def\exampletitle{Beispiel}
|
||||
\def\questiontitle{Frage}
|
||||
\def\wrongctitle{Falscher Konzept}
|
||||
|
||||
\input{preamble}
|
||||
\input{macros}
|
||||
\input{letterfonts}
|
||||
|
||||
\title{\huge{\papertitle}}
|
||||
\author{\huge{Jirayu Ruh}}
|
||||
\date{}
|
||||
|
||||
\begin{document}
|
||||
|
||||
\maketitle
|
||||
\newpage% or \cleardoublepage
|
||||
% \pdfbookmark[<level>]{<title>}{<dest>}
|
||||
\pdfbookmark[section]{\contentsname}{toc}
|
||||
\tableofcontents
|
||||
\pagebreak
|
||||
|
||||
\input{disclaimer.tex}
|
||||
|
||||
\input{notes.tex}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% BIBLIOGRAPHY
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\addcontentsline{toc}{chapter}{References}
|
||||
\bibliographystyle{apalike}
|
||||
\bibliography{sources}
|
||||
|
||||
\end{document}
|
BIN
hs24/digitaltechnik/notizen_digitech_ruh_jirayu.zip
Normal file
809
hs24/digitaltechnik/preamble.tex
Normal file
@@ -0,0 +1,809 @@
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% PACKAGE IMPORTS
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\usepackage[ngerman]{babel}
|
||||
\selectlanguage{ngerman}
|
||||
\usepackage{tabularx}
|
||||
\usepackage[tmargin=2cm,rmargin=1in,lmargin=1in,margin=0.85in,bmargin=2cm,footskip=.2in]{geometry}
|
||||
\usepackage{amsmath,amsfonts,amsthm,amssymb,mathtools}
|
||||
\usepackage[varbb]{newpxmath}
|
||||
\usepackage{xfrac}
|
||||
\usepackage[makeroom]{cancel}
|
||||
\usepackage{mathtools}
|
||||
\usepackage{bookmark}
|
||||
\usepackage{enumitem}
|
||||
\usepackage{hyperref,theoremref}
|
||||
\hypersetup{
|
||||
pdftitle={Assignment},
|
||||
colorlinks=true, linkcolor=doc!90,
|
||||
bookmarksnumbered=true,
|
||||
bookmarksopen=true
|
||||
}
|
||||
\usepackage[most,many,breakable]{tcolorbox}
|
||||
\usepackage{xcolor}
|
||||
\usepackage{varwidth}
|
||||
\usepackage{varwidth}
|
||||
\usepackage{etoolbox}
|
||||
%\usepackage{authblk}
|
||||
\usepackage{nameref}
|
||||
\usepackage{multicol,array}
|
||||
\usepackage{tikz-cd}
|
||||
\usepackage[ruled,vlined,linesnumbered]{algorithm2e}
|
||||
\usepackage{comment} % enables the use of multi-line comments (\ifx \fi)
|
||||
\usepackage{import}
|
||||
\usepackage{xifthen}
|
||||
\usepackage{pdfpages}
|
||||
\usepackage{transparent}
|
||||
|
||||
\newcommand\mycommfont[1]{\footnotesize\ttfamily\textcolor{blue}{#1}}
|
||||
\SetCommentSty{mycommfont}
|
||||
\newcommand{\incfig}[1]{%
|
||||
\def\svgwidth{\columnwidth}
|
||||
\import{./figures/}{#1.pdf_tex}
|
||||
}
|
||||
|
||||
\definecolor{secondaryheader}{HTML}{f1935c}
|
||||
\definecolor{darkgreen}{HTML}{008E00}
|
||||
\usepackage{tikzsymbols}
|
||||
\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}
|
||||
\renewcommand\qedsymbol{$\Laughey$}
|
||||
\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}}
|
||||
}
|
||||
\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}
|
||||
|
||||
%\usepackage{import}
|
||||
%\usepackage{xifthen}
|
||||
%\usepackage{pdfpages}
|
||||
%\usepackage{transparent}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% SELF MADE COLORS
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
|
||||
\definecolor{myg}{RGB}{56, 140, 70}
|
||||
\definecolor{myb}{RGB}{45, 111, 177}
|
||||
\definecolor{myr}{RGB}{199, 68, 64}
|
||||
\definecolor{mytheorembg}{HTML}{F2F2F9}
|
||||
\definecolor{mytheoremfr}{HTML}{00007B}
|
||||
\definecolor{mylenmabg}{HTML}{FFFAF8}
|
||||
\definecolor{mylenmafr}{HTML}{983b0f}
|
||||
\definecolor{mypropbg}{HTML}{f2fbfc}
|
||||
\definecolor{mypropfr}{HTML}{191971}
|
||||
\definecolor{myexamplebg}{HTML}{F2FBF8}
|
||||
\definecolor{myexamplefr}{HTML}{88D6D1}
|
||||
\definecolor{myexampleti}{HTML}{2A7F7F}
|
||||
\definecolor{mydefinitbg}{HTML}{E5E5FF}
|
||||
\definecolor{mydefinitfr}{HTML}{3F3FA3}
|
||||
\definecolor{notesgreen}{RGB}{0,162,0}
|
||||
\definecolor{myp}{RGB}{197, 92, 212}
|
||||
\definecolor{mygr}{HTML}{2C3338}
|
||||
\definecolor{myred}{RGB}{127,0,0}
|
||||
\definecolor{myyellow}{RGB}{169,121,69}
|
||||
\definecolor{myexercisebg}{HTML}{F2FBF8}
|
||||
\definecolor{myexercisefg}{HTML}{88D6D1}
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% TCOLORBOX SETUPS
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\setlength{\parindent}{0cm}
|
||||
%================================
|
||||
% THEOREM BOX
|
||||
%================================
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=section]{Theorem}{\theorytitle}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = mytheorembg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{mytheoremfr},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = mytheoremfr,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, mytheoremfr},
|
||||
}
|
||||
{th}
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=chapter]{theorem}{\theorytitle}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = mytheorembg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{mytheoremfr},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = mytheoremfr,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, mytheoremfr},
|
||||
}
|
||||
{th}
|
||||
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcolorbox{Theoremcon}
|
||||
{%
|
||||
enhanced
|
||||
,breakable
|
||||
,colback = mytheorembg
|
||||
,frame hidden
|
||||
,boxrule = 0sp
|
||||
,borderline west = {2pt}{0pt}{mytheoremfr}
|
||||
,sharp corners
|
||||
,description font = \mdseries
|
||||
,separator sign none
|
||||
}
|
||||
|
||||
%================================
|
||||
% Corollery
|
||||
%================================
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=section]{Corollary}{\corollarytitle}
|
||||
{%
|
||||
enhanced
|
||||
,breakable
|
||||
,colback = myp!10
|
||||
,frame hidden
|
||||
,boxrule = 0sp
|
||||
,borderline west = {2pt}{0pt}{myp!85!black}
|
||||
,sharp corners
|
||||
,detach title
|
||||
,before upper = \tcbtitle\par\smallskip
|
||||
,coltitle = myp!85!black
|
||||
,fonttitle = \bfseries\sffamily
|
||||
,description font = \mdseries
|
||||
,separator sign none
|
||||
,segmentation style={solid, myp!85!black}
|
||||
}
|
||||
{th}
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=chapter]{corollary}{\corollarytitle}
|
||||
{%
|
||||
enhanced
|
||||
,breakable
|
||||
,colback = myp!10
|
||||
,frame hidden
|
||||
,boxrule = 0sp
|
||||
,borderline west = {2pt}{0pt}{myp!85!black}
|
||||
,sharp corners
|
||||
,detach title
|
||||
,before upper = \tcbtitle\par\smallskip
|
||||
,coltitle = myp!85!black
|
||||
,fonttitle = \bfseries\sffamily
|
||||
,description font = \mdseries
|
||||
,separator sign none
|
||||
,segmentation style={solid, myp!85!black}
|
||||
}
|
||||
{th}
|
||||
|
||||
|
||||
%================================
|
||||
% LENMA
|
||||
%================================
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=section]{Lenma}{Lenma}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = mylenmabg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{mylenmafr},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = mylenmafr,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, mylenmafr},
|
||||
}
|
||||
{th}
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=chapter]{lenma}{Lenma}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = mylenmabg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{mylenmafr},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = mylenmafr,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, mylenmafr},
|
||||
}
|
||||
{th}
|
||||
|
||||
|
||||
%================================
|
||||
% PROPOSITION
|
||||
%================================
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=section]{Prop}{\proposaltitle}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = mypropbg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{mypropfr},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = mypropfr,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, mypropfr},
|
||||
}
|
||||
{th}
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=chapter]{prop}{\proposaltitle}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = mypropbg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{mypropfr},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = mypropfr,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, mypropfr},
|
||||
}
|
||||
{th}
|
||||
|
||||
|
||||
%================================
|
||||
% CLAIM
|
||||
%================================
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=section]{claim}{\claimtitle}
|
||||
{%
|
||||
enhanced
|
||||
,breakable
|
||||
,colback = myg!10
|
||||
,frame hidden
|
||||
,boxrule = 0sp
|
||||
,borderline west = {2pt}{0pt}{myg}
|
||||
,sharp corners
|
||||
,detach title
|
||||
,before upper = \tcbtitle\par\smallskip
|
||||
,coltitle = myg!85!black
|
||||
,fonttitle = \bfseries\sffamily
|
||||
,description font = \mdseries
|
||||
,separator sign none
|
||||
,segmentation style={solid, myg!85!black}
|
||||
}
|
||||
{th}
|
||||
|
||||
|
||||
|
||||
%================================
|
||||
% Exercise
|
||||
%================================
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=section]{Exercise}{\exercisetitle}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = myexercisebg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{myexercisefg},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = myexercisefg,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, myexercisefg},
|
||||
}
|
||||
{th}
|
||||
|
||||
\tcbuselibrary{theorems,skins,hooks}
|
||||
\newtcbtheorem[number within=chapter]{exercise}{\exercisetitle}
|
||||
{%
|
||||
enhanced,
|
||||
breakable,
|
||||
colback = myexercisebg,
|
||||
frame hidden,
|
||||
boxrule = 0sp,
|
||||
borderline west = {2pt}{0pt}{myexercisefg},
|
||||
sharp corners,
|
||||
detach title,
|
||||
before upper = \tcbtitle\par\smallskip,
|
||||
coltitle = myexercisefg,
|
||||
fonttitle = \bfseries\sffamily,
|
||||
description font = \mdseries,
|
||||
separator sign none,
|
||||
segmentation style={solid, myexercisefg},
|
||||
}
|
||||
{th}
|
||||
|
||||
%================================
|
||||
% EXAMPLE BOX
|
||||
%================================
|
||||
|
||||
\newtcbtheorem[number within=section]{Example}{\exampletitle}
|
||||
{%
|
||||
colback = myexamplebg
|
||||
,breakable
|
||||
,colframe = myexamplefr
|
||||
,coltitle = myexampleti
|
||||
,boxrule = 1pt
|
||||
,sharp corners
|
||||
,detach title
|
||||
,before upper=\tcbtitle\par\smallskip
|
||||
,fonttitle = \bfseries
|
||||
,description font = \mdseries
|
||||
,separator sign none
|
||||
,description delimiters parenthesis
|
||||
}
|
||||
{ex}
|
||||
|
||||
\newtcbtheorem[number within=chapter]{example}{\exampletitle}
|
||||
{%
|
||||
colback = myexamplebg
|
||||
,breakable
|
||||
,colframe = myexamplefr
|
||||
,coltitle = myexampleti
|
||||
,boxrule = 1pt
|
||||
,sharp corners
|
||||
,detach title
|
||||
,before upper=\tcbtitle\par\smallskip
|
||||
,fonttitle = \bfseries
|
||||
,description font = \mdseries
|
||||
,separator sign none
|
||||
,description delimiters parenthesis
|
||||
}
|
||||
{ex}
|
||||
|
||||
%================================
|
||||
% DEFINITION BOX
|
||||
%================================
|
||||
|
||||
\newtcbtheorem[number within=section]{Definition}{Definition}{enhanced,
|
||||
before skip=2mm,after skip=2mm, colback=red!5,colframe=red!80!black,boxrule=0.5mm,
|
||||
attach boxed title to top left={xshift=1cm,yshift*=1mm-\tcboxedtitleheight}, varwidth boxed title*=-3cm,
|
||||
boxed title style={frame code={
|
||||
\path[fill=tcbcolback]
|
||||
([yshift=-1mm,xshift=-1mm]frame.north west)
|
||||
arc[start angle=0,end angle=180,radius=1mm]
|
||||
([yshift=-1mm,xshift=1mm]frame.north east)
|
||||
arc[start angle=180,end angle=0,radius=1mm];
|
||||
\path[left color=tcbcolback!60!black,right color=tcbcolback!60!black,
|
||||
middle color=tcbcolback!80!black]
|
||||
([xshift=-2mm]frame.north west) -- ([xshift=2mm]frame.north east)
|
||||
[rounded corners=1mm]-- ([xshift=1mm,yshift=-1mm]frame.north east)
|
||||
-- (frame.south east) -- (frame.south west)
|
||||
-- ([xshift=-1mm,yshift=-1mm]frame.north west)
|
||||
[sharp corners]-- cycle;
|
||||
},interior engine=empty,
|
||||
},
|
||||
fonttitle=\bfseries,
|
||||
title={#2},#1}{def}
|
||||
\newtcbtheorem[number within=chapter]{definition}{Definition}{enhanced,
|
||||
before skip=2mm,after skip=2mm, colback=red!5,colframe=red!80!black,boxrule=0.5mm,
|
||||
attach boxed title to top left={xshift=1cm,yshift*=1mm-\tcboxedtitleheight}, varwidth boxed title*=-3cm,
|
||||
boxed title style={frame code={
|
||||
\path[fill=tcbcolback]
|
||||
([yshift=-1mm,xshift=-1mm]frame.north west)
|
||||
arc[start angle=0,end angle=180,radius=1mm]
|
||||
([yshift=-1mm,xshift=1mm]frame.north east)
|
||||
arc[start angle=180,end angle=0,radius=1mm];
|
||||
\path[left color=tcbcolback!60!black,right color=tcbcolback!60!black,
|
||||
middle color=tcbcolback!80!black]
|
||||
([xshift=-2mm]frame.north west) -- ([xshift=2mm]frame.north east)
|
||||
[rounded corners=1mm]-- ([xshift=1mm,yshift=-1mm]frame.north east)
|
||||
-- (frame.south east) -- (frame.south west)
|
||||
-- ([xshift=-1mm,yshift=-1mm]frame.north west)
|
||||
[sharp corners]-- cycle;
|
||||
},interior engine=empty,
|
||||
},
|
||||
fonttitle=\bfseries,
|
||||
title={#2},#1}{def}
|
||||
|
||||
|
||||
|
||||
%================================
|
||||
% Solution BOX
|
||||
%================================
|
||||
|
||||
\makeatletter
|
||||
\newtcbtheorem{question}{\questiontitle}{enhanced,
|
||||
breakable,
|
||||
colback=white,
|
||||
colframe=myb!80!black,
|
||||
attach boxed title to top left={yshift*=-\tcboxedtitleheight},
|
||||
fonttitle=\bfseries,
|
||||
title={#2},
|
||||
boxed title size=title,
|
||||
boxed title style={%
|
||||
sharp corners,
|
||||
rounded corners=northwest,
|
||||
colback=tcbcolframe,
|
||||
boxrule=0pt,
|
||||
},
|
||||
underlay boxed title={%
|
||||
\path[fill=tcbcolframe] (title.south west)--(title.south east)
|
||||
to[out=0, in=180] ([xshift=5mm]title.east)--
|
||||
(title.center-|frame.east)
|
||||
[rounded corners=\kvtcb@arc] |-
|
||||
(frame.north) -| cycle;
|
||||
},
|
||||
#1
|
||||
}{def}
|
||||
\makeatother
|
||||
|
||||
%================================
|
||||
% SOLUTION BOX
|
||||
%================================
|
||||
|
||||
\makeatletter
|
||||
\newtcolorbox{solution}{enhanced,
|
||||
breakable,
|
||||
colback=white,
|
||||
colframe=myg!80!black,
|
||||
attach boxed title to top left={yshift*=-\tcboxedtitleheight},
|
||||
title=Solution,
|
||||
boxed title size=title,
|
||||
boxed title style={%
|
||||
sharp corners,
|
||||
rounded corners=northwest,
|
||||
colback=tcbcolframe,
|
||||
boxrule=0pt,
|
||||
},
|
||||
underlay boxed title={%
|
||||
\path[fill=tcbcolframe] (title.south west)--(title.south east)
|
||||
to[out=0, in=180] ([xshift=5mm]title.east)--
|
||||
(title.center-|frame.east)
|
||||
[rounded corners=\kvtcb@arc] |-
|
||||
(frame.north) -| cycle;
|
||||
},
|
||||
}
|
||||
\makeatother
|
||||
|
||||
%================================
|
||||
% Question BOX
|
||||
%================================
|
||||
|
||||
\makeatletter
|
||||
\newtcbtheorem{qstion}{\questiontitle}{enhanced,
|
||||
breakable,
|
||||
colback=white,
|
||||
colframe=mygr,
|
||||
attach boxed title to top left={yshift*=-\tcboxedtitleheight},
|
||||
fonttitle=\bfseries,
|
||||
title={#2},
|
||||
boxed title size=title,
|
||||
boxed title style={%
|
||||
sharp corners,
|
||||
rounded corners=northwest,
|
||||
colback=tcbcolframe,
|
||||
boxrule=0pt,
|
||||
},
|
||||
underlay boxed title={%
|
||||
\path[fill=tcbcolframe] (title.south west)--(title.south east)
|
||||
to[out=0, in=180] ([xshift=5mm]title.east)--
|
||||
(title.center-|frame.east)
|
||||
[rounded corners=\kvtcb@arc] |-
|
||||
(frame.north) -| cycle;
|
||||
},
|
||||
#1
|
||||
}{def}
|
||||
\makeatother
|
||||
|
||||
\newtcbtheorem[number within=chapter]{wconc}{\wrongctitle}{
|
||||
breakable,
|
||||
enhanced,
|
||||
colback=white,
|
||||
colframe=myr,
|
||||
arc=0pt,
|
||||
outer arc=0pt,
|
||||
fonttitle=\bfseries\sffamily\large,
|
||||
colbacktitle=myr,
|
||||
attach boxed title to top left={},
|
||||
boxed title style={
|
||||
enhanced,
|
||||
skin=enhancedfirst jigsaw,
|
||||
arc=3pt,
|
||||
bottom=0pt,
|
||||
interior style={fill=myr}
|
||||
},
|
||||
#1
|
||||
}{def}
|
||||
|
||||
|
||||
|
||||
%================================
|
||||
% NOTE BOX
|
||||
%================================
|
||||
|
||||
\usetikzlibrary{arrows,calc,shadows.blur}
|
||||
\tcbuselibrary{skins}
|
||||
\newtcolorbox{note}[1][]{%
|
||||
enhanced jigsaw,
|
||||
colback=gray!20!white,%
|
||||
colframe=gray!80!black,
|
||||
size=small,
|
||||
boxrule=1pt,
|
||||
title=\textbf{Bemerkung:-},
|
||||
halign title=flush center,
|
||||
coltitle=black,
|
||||
breakable,
|
||||
drop shadow=black!50!white,
|
||||
attach boxed title to top left={xshift=1cm,yshift=-\tcboxedtitleheight/2,yshifttext=-\tcboxedtitleheight/2},
|
||||
minipage boxed title=2.5cm,
|
||||
boxed title style={%
|
||||
colback=white,
|
||||
size=fbox,
|
||||
boxrule=1pt,
|
||||
boxsep=2pt,
|
||||
underlay={%
|
||||
\coordinate (dotA) at ($(interior.west) + (-0.5pt,0)$);
|
||||
\coordinate (dotB) at ($(interior.east) + (0.5pt,0)$);
|
||||
\begin{scope}
|
||||
\clip (interior.north west) rectangle ([xshift=3ex]interior.east);
|
||||
\filldraw [white, blur shadow={shadow opacity=60, shadow yshift=-.75ex}, rounded corners=2pt] (interior.north west) rectangle (interior.south east);
|
||||
\end{scope}
|
||||
\begin{scope}[gray!80!black]
|
||||
\fill (dotA) circle (2pt);
|
||||
\fill (dotB) circle (2pt);
|
||||
\end{scope}
|
||||
},
|
||||
},
|
||||
#1,
|
||||
}
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% SELF MADE COMMANDS
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
|
||||
\newcommand{\thm}[2]{\begin{Theorem}{#1}{}#2\end{Theorem}}
|
||||
\newcommand{\cor}[2]{\begin{Corollary}{#1}{}#2\end{Corollary}}
|
||||
\newcommand{\mlenma}[2]{\begin{Lenma}{#1}{}#2\end{Lenma}}
|
||||
\newcommand{\mprop}[2]{\begin{Prop}{#1}{}#2\end{Prop}}
|
||||
\newcommand{\clm}[3]{\begin{claim}{#1}{#2}#3\end{claim}}
|
||||
\newcommand{\wc}[2]{\begin{wconc}{#1}{}\setlength{\parindent}{1cm}#2\end{wconc}}
|
||||
\newcommand{\thmcon}[1]{\begin{Theoremcon}{#1}\end{Theoremcon}}
|
||||
\newcommand{\ex}[2]{\begin{Example}{#1}{}#2\end{Example}}
|
||||
\newcommand{\dfn}[2]{\begin{Definition}[colbacktitle=red!75!black]{#1}{}#2\end{Definition}}
|
||||
\newcommand{\dfnc}[2]{\begin{definition}[colbacktitle=red!75!black]{#1}{}#2\end{definition}}
|
||||
\newcommand{\qs}[2]{\begin{question}{#1}{}#2\end{question}}
|
||||
\newcommand{\pf}[2]{\begin{myproof}[#1]#2\end{myproof}}
|
||||
\newcommand{\nt}[1]{\begin{note}#1\end{note}}
|
||||
|
||||
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
|
||||
Wrong Concept \node[shape=circle,draw,inner sep=1pt] (char) {#1};}}
|
||||
\newcommand\getcurrentref[1]{%
|
||||
\ifnumequal{\value{#1}}{0}
|
||||
{??}
|
||||
{\the\value{#1}}%
|
||||
}
|
||||
\newcommand{\getCurrentSectionNumber}{\getcurrentref{section}}
|
||||
\newenvironment{myproof}[1][\proofname]{%
|
||||
\proof[\bfseries #1: ]%
|
||||
}{\endproof}
|
||||
|
||||
\newcommand{\mclm}[2]{\begin{myclaim}[#1]#2\end{myclaim}}
|
||||
\newenvironment{myclaim}[1][\claimname]{\proof[\bfseries #1: ]}{}
|
||||
|
||||
\newcounter{mylabelcounter}
|
||||
|
||||
\makeatletter
|
||||
\newcommand{\setword}[2]{%
|
||||
\phantomsection
|
||||
#1\def\@currentlabel{\unexpanded{#1}}\label{#2}%
|
||||
}
|
||||
\makeatother
|
||||
|
||||
|
||||
|
||||
|
||||
\tikzset{
|
||||
symbol/.style={
|
||||
draw=none,
|
||||
every to/.append style={
|
||||
edge node={node [sloped, allow upside down, auto=false]{$#1$}}}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
% deliminators
|
||||
\DeclarePairedDelimiter{\abs}{\lvert}{\rvert}
|
||||
\DeclarePairedDelimiter{\norm}{\lVert}{\rVert}
|
||||
|
||||
\DeclarePairedDelimiter{\ceil}{\lceil}{\rceil}
|
||||
\DeclarePairedDelimiter{\floor}{\lfloor}{\rfloor}
|
||||
\DeclarePairedDelimiter{\round}{\lfloor}{\rceil}
|
||||
|
||||
\newsavebox\diffdbox
|
||||
\newcommand{\slantedromand}{{\mathpalette\makesl{d}}}
|
||||
\newcommand{\makesl}[2]{%
|
||||
\begingroup
|
||||
\sbox{\diffdbox}{$\mathsurround=0pt#1\mathrm{#2}$}%
|
||||
\pdfsave
|
||||
\pdfsetmatrix{1 0 0.2 1}%
|
||||
\rlap{\usebox{\diffdbox}}%
|
||||
\pdfrestore
|
||||
\hskip\wd\diffdbox
|
||||
\endgroup
|
||||
}
|
||||
\newcommand{\dd}[1][]{\ensuremath{\mathop{}\!\ifstrempty{#1}{%
|
||||
\slantedromand\@ifnextchar^{\hspace{0.2ex}}{\hspace{0.1ex}}}%
|
||||
{\slantedromand\hspace{0.2ex}^{#1}}}}
|
||||
\ProvideDocumentCommand\dv{o m g}{%
|
||||
\ensuremath{%
|
||||
\IfValueTF{#3}{%
|
||||
\IfNoValueTF{#1}{%
|
||||
\frac{\dd #2}{\dd #3}%
|
||||
}{%
|
||||
\frac{\dd^{#1} #2}{\dd #3^{#1}}%
|
||||
}%
|
||||
}{%
|
||||
\IfNoValueTF{#1}{%
|
||||
\frac{\dd}{\dd #2}%
|
||||
}{%
|
||||
\frac{\dd^{#1}}{\dd #2^{#1}}%
|
||||
}%
|
||||
}%
|
||||
}%
|
||||
}
|
||||
\providecommand*{\pdv}[3][]{\frac{\partial^{#1}#2}{\partial#3^{#1}}}
|
||||
% - others
|
||||
\DeclareMathOperator{\Lap}{\mathcal{L}}
|
||||
\DeclareMathOperator{\Var}{Var} % varience
|
||||
\DeclareMathOperator{\Cov}{Cov} % covarience
|
||||
\DeclareMathOperator{\E}{E} % expected
|
||||
|
||||
% Since the amsthm package isn't loaded
|
||||
|
||||
% I prefer the slanted \leq
|
||||
\let\oldleq\leq % save them in case they're every wanted
|
||||
\let\oldgeq\geq
|
||||
\renewcommand{\leq}{\leqslant}
|
||||
\renewcommand{\geq}{\geqslant}
|
||||
|
||||
% % redefine matrix env to allow for alignment, use r as default
|
||||
% \renewcommand*\env@matrix[1][r]{\hskip -\arraycolsep
|
||||
% \let\@ifnextchar\new@ifnextchar
|
||||
% \array{*\c@MaxMatrixCols #1}}
|
||||
|
||||
|
||||
%\usepackage{framed}
|
||||
%\usepackage{titletoc}
|
||||
%\usepackage{etoolbox}
|
||||
%\usepackage{lmodern}
|
||||
|
||||
|
||||
%\patchcmd{\tableofcontents}{\contentsname}{\sffamily\contentsname}{}{}
|
||||
|
||||
%\renewenvironment{leftbar}
|
||||
%{\def\FrameCommand{\hspace{6em}%
|
||||
% {\color{myyellow}\vrule width 2pt depth 6pt}\hspace{1em}}%
|
||||
% \MakeFramed{\parshape 1 0cm \dimexpr\textwidth-6em\relax\FrameRestore}\vskip2pt%
|
||||
%}
|
||||
%{\endMakeFramed}
|
||||
|
||||
%\titlecontents{chapter}
|
||||
%[0em]{\vspace*{2\baselineskip}}
|
||||
%{\parbox{4.5em}{%
|
||||
% \hfill\Huge\sffamily\bfseries\color{myred}\thecontentspage}%
|
||||
% \vspace*{-2.3\baselineskip}\leftbar\textsc{\small\chaptername~\thecontentslabel}\\\sffamily}
|
||||
%{}{\endleftbar}
|
||||
%\titlecontents{section}
|
||||
%[8.4em]
|
||||
%{\sffamily\contentslabel{3em}}{}{}
|
||||
%{\hspace{0.5em}\nobreak\itshape\color{myred}\contentspage}
|
||||
%\titlecontents{subsection}
|
||||
%[8.4em]
|
||||
%{\sffamily\contentslabel{3em}}{}{}
|
||||
%{\hspace{0.5em}\nobreak\itshape\color{myred}\contentspage}
|
||||
|
||||
|
||||
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
% TABLE OF CONTENTS
|
||||
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
\usepackage{tikz}
|
||||
\definecolor{doc}{RGB}{0,60,110}
|
||||
\usepackage{titletoc}
|
||||
\contentsmargin{0cm}
|
||||
\titlecontents{chapter}[3.7pc]
|
||||
{\addvspace{30pt}%
|
||||
\begin{tikzpicture}[remember picture, overlay]%
|
||||
\draw[fill=doc!60,draw=doc!60] (-7,-.1) rectangle (-0.9,.5);%
|
||||
\pgftext[left,x=-3.5cm,y=0.2cm]{\color{white}\Large\sc\bfseries Kapitel\ \thecontentslabel};%
|
||||
\end{tikzpicture}\color{doc!60}\large\sc\bfseries}%
|
||||
{}
|
||||
{}
|
||||
{\;\titlerule\;\large\sc\bfseries Page \thecontentspage
|
||||
\begin{tikzpicture}[remember picture, overlay]
|
||||
\draw[fill=doc!60,draw=doc!60] (2pt,0) rectangle (4,0.1pt);
|
||||
\end{tikzpicture}}%
|
||||
\titlecontents{section}[3.7pc]
|
||||
{\addvspace{2pt}}
|
||||
{\contentslabel[\thecontentslabel]{2pc}}
|
||||
{}
|
||||
{\hfill\small \thecontentspage}
|
||||
[]
|
||||
\titlecontents*{subsection}[3.7pc]
|
||||
{\addvspace{-1pt}\small}
|
||||
{}
|
||||
{}
|
||||
{\ --- \small\thecontentspage}
|
||||
[ \textbullet\ ][]
|
||||
|
||||
\makeatletter
|
||||
\renewcommand{\tableofcontents}{%
|
||||
\chapter*{%
|
||||
\vspace*{-20\p@}%
|
||||
\begin{tikzpicture}[remember picture, overlay]%
|
||||
\pgftext[right,x=15cm,y=0.2cm]{\color{doc!60}\Huge\sc\bfseries \contentsname};%
|
||||
\draw[fill=doc!60,draw=doc!60] (13,-.75) rectangle (20,1);%
|
||||
\clip (13,-.75) rectangle (20,1);
|
||||
\pgftext[right,x=15cm,y=0.2cm]{\color{white}\Huge\sc\bfseries \contentsname};%
|
||||
\end{tikzpicture}}%
|
||||
\@starttoc{toc}}
|
||||
\makeatother
|
@@ -0,0 +1,74 @@
|
||||
\section{Addierer}
|
||||
|
||||
\subsection{Halb- und Volladdierer}
|
||||
|
||||
\dfn{Halbaddierer}{
|
||||
Ein Halbaddierer ist ein Bauelement, welches in der Lage ist zwei Bits zu addieren. Es nimmt 2 Bits als Eingang und hat die Summe, sowie der Übertrag als Ausgang.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[and gate] (and) at (0,-1.5) {};
|
||||
\node[xor gate] (xor) at (0,0) {};
|
||||
\path[draw] (xor.input 1) --++(left:20mm) node[point, label=180:A] {};
|
||||
\path[draw] (xor.input 2) --++(left:20mm) node[point, label=180:B] {};
|
||||
\path[draw] (and.input 1) --++(left:5mm) --++(up:11.7mm);
|
||||
\path[draw] (and.input 2) --++(left:10mm) --++(up:18.4mm);
|
||||
\path[draw] (xor.output) --++(right:10mm) node[point, label=0:SUM] {};
|
||||
\path[draw] (and.output) --++(right:10mm) node[point, label=0:CO] {};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop hsum/.style={flipflop,
|
||||
flipflop def={t1=A, t3=B, t6=SUM, t4=CO}
|
||||
}}
|
||||
\node[flipflop hsum]{$\sum$};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
Für Zahlen im Binärsystem reichen Halbaddierer nicht aus, da sie den Übertrag nicht beachten. Deswegen kommt der Volladdierer ins Spiel.
|
||||
|
||||
\dfn{Volladdierer}{
|
||||
Volladdierer sind Bauelemente, dessen Funktion es ist bei der Summe von 2 Bits den Übertrag mit einzubeziehen.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop fsum/.style={flipflop,
|
||||
flipflop def={t1=A, t2=B, t3=CIN, t4=CO, t6=SUM}
|
||||
}}
|
||||
\node [flipflop fsum]{$\sum$};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
}
|
||||
|
||||
\subsection{Mehrbit-Addierer und Subtrahierer}
|
||||
|
||||
Wir haben nun die Basis zur Erstellung einer logischen Schaltung zum addieren von Zahlen im Binärsystem. Der Prozess vom Addieren von Dualzahlen kann entweder bitseriell oder bitparallel erfolgen.
|
||||
|
||||
\begin{itemize}
|
||||
\item Bitseriell: Pro Taktperiode wird nur ein Bit addiert
|
||||
\item Bitparallel: In einer Taktperiode werden alle Bits addiert.
|
||||
\end{itemize}
|
||||
|
||||
Wird die Dualzahl seriell bzw. parallel addiert, so wird das Bauelement Serienaddierer bzw. Paralleladdierer. Bei den Paralleladdierer unterscheidet man zwischen den folgenden Methoden.
|
||||
|
||||
\begin{itemize}
|
||||
\item Paralleladdierer in der Normalform
|
||||
\item Ripple-Carry Addierer
|
||||
\item Carry-Look-Ahead Addierer
|
||||
\end{itemize}
|
||||
|
||||
Jedes dieser Paralleladdierer haben ihre Vor- und Nachteile.
|
||||
\\
|
||||
Beim Paralleladdierer in der Normalform wird die Normalform für jedes Ausgangsbit verwendet. Der Vorteil davon ist, dass durch die Normalform das Bauelement eine sehr geringe Propagation Delay hat. Die Normalform bringt aber auch Nachteile, da diese eine sehr komplizierte kombinatorische Schaltung ist.
|
||||
\\
|
||||
Im Vergleich zum Paralleladdierer in der Normalform ist der Ripple-Carry Addierer um einiges langsamer, da es die Bits nacheinander durch ein Halb- und mehrere Volladdierer addiert. Der Vorteil ist, dass die kombinatorische Schaltung einfacher zu realisieren ist.
|
||||
|
||||
\includegraphics[width=\textwidth]{fig/Fig_25.png} \cite{Luisier2024}
|
||||
|
||||
Der Carry-Look-Ahead Addierer ist ähnlich wie eine Ripple-Carry Addierer mit dem Unterschied, dass der parallel, während die Bits addiert werden der Carry-Out addiert wird und somit der Carry-Look-Ahead Addierer ein wenig schneller ist als der Ripple-Carry Addierer. Der Nachteil davon ist, dass die kombinatorische Schaltung immer komplizierter wird, wenn die Dualzahl grösser wird.
|
@@ -0,0 +1,20 @@
|
||||
\section{Was sind Datenpfadkomponenten?}
|
||||
|
||||
\subsection{Multiplexer und Code-Umsetzer}
|
||||
|
||||
\dfn{Multiplexer}{
|
||||
Multiplexer sind Bauelemente, welche durch eine Codierung als Eingang Daten als Ausgang schaltet. Multiplexer können auch erweitert werden indem man mehrere Kanäle einführt für den Dateneingang. Diese werden Daten Selektion genannt.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_38.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\dfn{Demultiplexer}{
|
||||
Demultiplexer haben die umgekehrte Funktion von Multiplexer. Demultiplexer sind Bauelemente, welche Daten als Eingang haben und eine Codierung als Ausgang haben. Wie beim Multiplexer kann auch eine Daten Selektion gebraucht werden für verschiedene Kanäle.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_39.png} \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\dfn{Code-Umsetzer}{
|
||||
Code-Umsetzer können eine Codierung als Eingang nehmen und diese dann umwandeln in eine andere Codierung umwandeln (Kapitel \ref{sec:code}).
|
||||
}
|
||||
|
@@ -0,0 +1,35 @@
|
||||
\section{Hardware Multiplizierer}
|
||||
|
||||
\subsection{Rechenregeln und Grundprinzipien}
|
||||
|
||||
Die Multiplikation von Bits entspricht das logische AND. Doch wie geht man vor? Grundsätzlich geht man vor wie wenn man Zahlen im Dezimalsystem schriftlich multipliziert.
|
||||
|
||||
\begin{enumerate}
|
||||
\item Den Multiplikand mit dem LSB vom Multiplikator multiplizieren und aufschreiben.
|
||||
\item Für die Codierung darunter eine Null als LSB einfügen. Für jede weitere Zeile eine Null mehr.
|
||||
\item Den ersten Schritt mit den nächsten Bit wiederholen.
|
||||
\end{enumerate}
|
||||
|
||||
Ein Multiplikator Bauelement besteht aus mehreren Basiszellen. Diese bestehen aus einem AND und einem Volladdierer.
|
||||
|
||||
\begin{center}
|
||||
\begin{circuitikz}[european]
|
||||
\tikzset{flipflop fsum/.style={flipflop,
|
||||
flipflop def={t1=A, t2=B, t3=CI, t6=SUM, t4=CO}
|
||||
}}
|
||||
\path[draw] node[flipflop fsum](fsum){$\sum$}
|
||||
(fsum.pin 1)--++(left:5mm)
|
||||
node[and port](and){}
|
||||
(and.out);
|
||||
\path[draw] (and.in 1) --++(left:10mm) node[point, label=180:a] {};
|
||||
\path[draw] (and.in 2) --++(left:10mm) node[point, label=180:b] {};
|
||||
\path[draw] (fsum.pin 2) --++(left:10mm) node[point, label=180:$\text{E}_1$] {};
|
||||
\path[draw] (fsum.pin 3) --++(left:10mm) node[point, label=180:$\text{E}_2$] {};
|
||||
\path[draw] (fsum.pin 4) --++(right:10mm) node[point, label=0:$\text{A}_2$] {};
|
||||
\path[draw] (fsum.pin 6) --++(right:10mm) node[point, label=0:$\text{A}_1$] {};
|
||||
\end{circuitikz}
|
||||
\end{center}
|
||||
|
||||
Ein 4-Bit Multiplikator sieht zusammen mit allen Basiszellen wie folgt aus.
|
||||
|
||||
\includegraphics[width=\linewidth]{fig/Fig_11.png} \cite{Luisier2024}
|
@@ -0,0 +1,5 @@
|
||||
\chapter{Rechenschaltungen und Datenpfadkomponenten}
|
||||
|
||||
\input{datenpfadkomponenten.tex}
|
||||
\input{addierer.tex}
|
||||
\input{hardware_multiplizierer.tex}
|
19
hs24/digitaltechnik/schaltalgebra/demorgan.tex
Normal file
@@ -0,0 +1,19 @@
|
||||
\section{Die De Morgan'schen Regeln} \label{sec:morgan}
|
||||
|
||||
\subsection{Beziehung zwischen UND und OR}
|
||||
|
||||
Es existieren Beziehungen zwischen den NOR/UND und zwischen den NAND/ODER Verknüpfungen, sodass ein gegenseitiger Austausch möglich ist: De Morgan‘sche Regeln. \cite{Luisier2024}
|
||||
|
||||
\subsection*{De Morgan'sche Regeln}
|
||||
|
||||
\begin{enumerate}
|
||||
\item Die NAND-Funktion kann durch eine ODER-Funktion mit invertierten Eingängen ersetzt werden. ($\overline{A \land B} = \bar{A} \lor \bar{B}$)
|
||||
\item Die NOR-Funktion kann durch eine UND-Funktion mit invertierten Eingängen ersetzt werden. ($\overline{A \lor B} = \bar{A} \land \bar{B}$)
|
||||
\end{enumerate} \cite{Luisier2024}
|
||||
|
||||
Mit den Grundgattern UND, ODER, NICHT kann jede logische Verknüpfung realisiert werden. Die De Morgan‘schen Regeln ermöglichen den Ersatz von Grundgattern. Jedes “Universalgatter„ NAND oder NOR allein ist ausreichend, um logische Verknüpfungen zu realisieren. \cite{Luisier2024}
|
||||
|
||||
\nt{
|
||||
Die Beziehung zwischen der Pull-up und Pull-down Schaltung ist durch die De Morgan‘schen Regeln gegeben. \cite{Luisier2024}
|
||||
}
|
||||
|
35
hs24/digitaltechnik/schaltalgebra/normalformen.tex
Normal file
@@ -0,0 +1,35 @@
|
||||
\section{Normalformen}
|
||||
|
||||
\subsection{Definition von Min- und Maxterm}
|
||||
|
||||
\dfn{Minterm}{
|
||||
Ein Minterm ist eine AND-Verknüpfte logische Schaltung. Bei $n$ Eingangsvariablen gibt es $2 ^{n}$ mögliche Minterme.
|
||||
}
|
||||
|
||||
Der Minterm kann bestimmt werden, indem man die AND-Verknüpfung aller vorhandenen Variablen bildet und die Variablen, die 0 sind, invertiert.
|
||||
|
||||
\nt{
|
||||
Beim Minterm haben die nicht-invertierten Variablen den Wert 1, die invertierten Variablen den Wert 0.
|
||||
}
|
||||
|
||||
\dfn{Maxterm}{
|
||||
Ein Maxterm ist eine OR-Verknüpfte logische Schaltung. Bei $n$ Eingangsvariablen gibt es $2 ^{n}$ mögliche Maxterme.
|
||||
}
|
||||
|
||||
Wie beim Minterm kann der Maxterm bestimmt werdem, indem man die OR-Verknüpfung aller vorhandenen Variablen bildet und die Variablen, die 1 sind, invertiert.
|
||||
|
||||
\nt{
|
||||
Beim Maxterm haben die nicht-invertierten Variablen haben den Wert 0, die invertierten Variablen den Wert 1.
|
||||
}
|
||||
|
||||
\subsection{DNF und KNF}
|
||||
|
||||
Ist die Wahrheitstabelle einer Schaltfunktion $f$ gegeben, so können zwei verschiedene Normalformen gebildet werden. Diese werden im späteren Teil des Semesters wichtig sein.
|
||||
|
||||
\dfn{Disjunktive Normalform (DNF)}{
|
||||
Die Disjunktive Normalform ist die OR-Verknüpfung der Minterme.
|
||||
}
|
||||
|
||||
\dfn{Konjunktive Normalform (KNF)}{
|
||||
Die Konjunktive Normalform ist die AND-Verknüpfung der Maxterme.
|
||||
}
|
5
hs24/digitaltechnik/schaltalgebra/schaltalgebra.tex
Normal file
@@ -0,0 +1,5 @@
|
||||
\chapter{Schaltalgebra (Bool'sche Algebra)}
|
||||
|
||||
\input{verknuepfungsgesetze.tex}
|
||||
\input{demorgan.tex}
|
||||
\input{normalformen.tex}
|
32
hs24/digitaltechnik/schaltalgebra/verknuepfungsgesetze.tex
Normal file
@@ -0,0 +1,32 @@
|
||||
\section{Verknüpfungsgesetze}
|
||||
|
||||
\subsection{Basis- und Vereinfachungsregeln} \label{sec:verein}
|
||||
|
||||
Logische Funktionen können sehr komplex werden. Glücklicherweise können sie vereinfacht werden durch Rechenoperationen, welche uns schon bekannt sind.
|
||||
|
||||
\begin{itemize}
|
||||
\item Die Reihenfolge der Variablen in UND-Verknüpfungen und in ODER-Verknüpfungen beeinflusst das Ergebnis nicht.
|
||||
\item Variablen können zu Gruppen zusammengefasst werden.
|
||||
\item Gemeinsame Variablen in UND- und ODER-Verknüpfungen können verteilt (ausmultipliziert, ausgeklammert) werden.
|
||||
\item $\bar{\bar{A}} = A$ (Nicht)
|
||||
\item $A \lor 0 = A$ / $A \land 0 = 0$ (Null-Theorem)
|
||||
\item $A \lor 1 = 1$ / $A \land 1 = A$ (Eins-Theorem)
|
||||
\item $A \lor A = A$ / $A \land A = A$ (Idempotenz)
|
||||
\item $A \lor \bar{A} = 1$ / $A \land \bar{A} = 0$ (Verknüpfung mit Komplement)
|
||||
\item $A \lor (\bar{A} \land B) = A \lor B$ / $A \land (\bar{A} \lor B) = A \land B$ (Adsorptionsgesetz)
|
||||
\item $A \lor (A \land B) = A$ / $A \land (A \lor B) = A$ (Absorptionsgesetz)
|
||||
\item $(A \land B) \lor (\bar{A} \land B) = B$ / $(A \lor B) \land (\bar{A} \lor B) = B$ (Nachbarschaftsgesetz)
|
||||
\end{itemize}
|
||||
|
||||
Für die Reihenfolge der Rechnungen gilt:
|
||||
|
||||
\begin{enumerate}
|
||||
\item Klammern
|
||||
\item Negation
|
||||
\item AND, NAND, OR, NOR vor XOR, XNOR
|
||||
\end{enumerate}
|
||||
|
||||
\nt{
|
||||
AND, NAND, OR, NOR, XOR und XNOR sind untereinander gleichwertig.
|
||||
}
|
||||
|
11
hs24/digitaltechnik/schaltungssynthese/dont_care.tex
Normal file
@@ -0,0 +1,11 @@
|
||||
\section{Don‘t Care Zustände (X)}
|
||||
|
||||
\subsection{Nicht benutzte Wertekombinationen}
|
||||
|
||||
Ab und zu bekommen wir mehr Codierungen als wir nötig haben. Aus diesem Grund verwenden wir Don't Care Zustände.
|
||||
|
||||
\dfn{Don't Care Zustände}{
|
||||
Don't Care Zustände kennzeichnen Codierungen, welche nicht relevant sind für die logische Funktion. Die Codierung wird mit einem $X$ gekennzeichnet. Don't Care Zustände können den Wert 0 oder 1 annehmen.
|
||||
}
|
||||
|
||||
Don't Care Zustände haben vorallem eine grosse Bedeutung für die Bildung von Päckchen. Da Don't Care Zustände den Wert 1 und 0 annehmen können, können grössere Päckchen gebildet werden.
|
16
hs24/digitaltechnik/schaltungssynthese/hazard.tex
Normal file
@@ -0,0 +1,16 @@
|
||||
\section{Was sind Hazards?}
|
||||
|
||||
\subsection{Identifizierung und Behandlung}
|
||||
|
||||
\dfn{Hazard}{
|
||||
Ein Hazard ist eine kurzzeitige und unerwünschte Änderung von Signalwerten. \cite{Luisier2024} Diese tritt meistens aufgrund der Zeitverzögerung von Gattern auf.
|
||||
}
|
||||
|
||||
Hazards können aber frühzeitig erkannt und eliminiert werden mit Hilfe des Karnaugh Diagramms. Für Hazards gilt wenn sich Päckchen orthogonal berühren, markieren diese kritische Werteänderungen (statische Hazards). \cite{Luisier2024} Durch ein zusätzliches Päckchen, welches die zwei orthogonal berührenden Min- bzw. Maxtermen in den Päckchen umschliesst kann der Hazard eliminiert werden.
|
||||
|
||||
\includegraphics[width=0.3\linewidth]{fig/Fig_37.png} \cite{Luisier2024}
|
||||
|
||||
\nt{
|
||||
Wenn sich Päckchen diagonal berühren entsteht ein funktionaler Hazard. Dieser kann nicht leicht behoben werden.
|
||||
}
|
||||
|
151
hs24/digitaltechnik/schaltungssynthese/kv_diagramm.tex
Normal file
@@ -0,0 +1,151 @@
|
||||
\section{Karnaugh-Diagramme}
|
||||
|
||||
\subsection{Einführung und Regeln}
|
||||
|
||||
Karnaugh Diagramme werden zur Vereinfachung von logischen Gleichungen verwendet. Wir haben zwar in Kapitel \ref{sec:verein} und \ref{sec:morgan} eine Methode gelernt, logische Gleichungen zu vereinfachen. Die Karnaugh Diagramme sind eine andere Methode, welche in manchen Fällen schneller ist.
|
||||
|
||||
\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] {$\bar{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] {$\bar{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] {$\bar{D}$};
|
||||
\path[draw, decorate, decoration=brace] (kv-4-4.north east) -- (kv-4-4.south east) node [midway, right] {$\bar{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] {$\bar{B}$};
|
||||
\path[draw, decorate, decoration=brace] (kv-4-4.south east) -- (kv-4-4.south west) node [midway, below] {$\bar{B}$};
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
|
||||
Karnaugh Diagramme können für logische Gleichungen mit mehreren Eingangsvariablen gebildet werden. Grundsätzlich gilt für $n$ Eingangsvariablen hat das Karnaugh Diagram $2 ^n$ Felder. Jedes Feld im Karnaugh Diagramm ist für ein Minterm oder ein Maxterm gedacht. Dabei gilt wie bei der Wahrheitstablle wenn die Ausgangsvariable 1 ist handelt es sich um ein Minterm. Ist die Ausgangsvariable 0, so ist es ein Maxterm.
|
||||
\\
|
||||
Das interessante an Karnaugh Diagrammen ist, dass man mit den Min- bzw. Maxtermen "Päckchen" bilden kann. Päckchen können wie folgt gebildet werden.
|
||||
|
||||
\begin{enumerate}
|
||||
\item Päckchen haben eine Grösse von $2 ^{n}$
|
||||
\item Die Päckchen bestehen entweder nur aus Min- bzw. Maxtermen.
|
||||
\item Es soll immer das grösstmögliche Päckchen gebildet werden.
|
||||
\item Päckchen können sich schneiden.
|
||||
\end{enumerate}
|
||||
|
||||
Durch das Bilden von Päckchen können neue Min- bzw. Maxterme gebildet werden, da in Päckchen Variablen in ihrer negierten und nicht negierten Form vorkommen. Diese gleichen sich aus und verschwinden.
|
||||
|
||||
\nt{
|
||||
Karnaugh Diagramme bestehend aus mehreren Eingangsvariablen können "eigenartige" Päckchen haben.
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\textwidth]{fig/Fig_6.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\textwidth]{fig/Fig_7.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\nt{
|
||||
Karnaugh Diagramme können unendlich viele Eingangsvariablen haben, jedoch beschränken wir uns auf maximal fünf Eingangsvariablen, da Karnaugh Diagramme mit mehr als fünf Eingangsvariablen unübersichtlich wird.
|
||||
}
|
||||
|
||||
Um das Karnaugh Diagramm mit einer Wahrheitstablle auszufüllen, gibt es eine bestimmte Vorgehensweise.
|
||||
|
||||
\begin{minipage}{0.5\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}
|
||||
\begin{minipage}{0.5\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}
|
@@ -0,0 +1,5 @@
|
||||
\chapter{Schaltungssynthese}
|
||||
|
||||
\input{kv_diagramm.tex}
|
||||
\input{dont_care.tex}
|
||||
\input{hazard.tex}
|
24
hs24/digitaltechnik/sources.bib
Normal file
@@ -0,0 +1,24 @@
|
||||
@Software{MCD2024,
|
||||
author = {{The Manim Community Developers}},
|
||||
license = {MIT},
|
||||
month = apr,
|
||||
ranking = {rank5},
|
||||
title = {{Manim – Mathematical Animation Framework}},
|
||||
url = {https://www.manim.community/},
|
||||
version = {v0.18.1},
|
||||
year = {2024},
|
||||
}
|
||||
|
||||
@Misc{Vasylyev2024,
|
||||
author = {Mischa Vasylyev},
|
||||
title = {Übungen},
|
||||
year = {2024},
|
||||
}
|
||||
|
||||
@Misc{Luisier2024,
|
||||
author = {Dr. Mathieu Luisier},
|
||||
title = {Vorlesungsfolien},
|
||||
year = {2024},
|
||||
}
|
||||
|
||||
@Comment{jabref-meta: databaseType:bibtex;}
|
145
hs24/digitaltechnik/verknuepfung/basisfunktionen.tex
Normal file
@@ -0,0 +1,145 @@
|
||||
\section{Basisfunktion}
|
||||
|
||||
\subsection{Nützliche Konzepte}
|
||||
|
||||
\dfn{Schaltfunktion}{
|
||||
Eine Schaltfunktion $f$ nimmt mehrere Variablen $X_i$, z.B. $N$, als Eingang und produziert eine einzige Variable $Y$ als Ausgang.
|
||||
|
||||
\begin{equation}
|
||||
Y = f(X_0, X_1, X_2, ... , X_{N-1})
|
||||
\end{equation}
|
||||
|
||||
Der Informationsgehalt der Variablen beträgt ein Bit (1 oder 0). \cite{Luisier2024}
|
||||
}
|
||||
|
||||
Schaltfunktionen sind nichts anderes als eine Codierung. Damit man die Verschiedenen Codierungen zu bestimmten Ausgängen zuteilen kann, verwendet man Wahrheitstabellen.
|
||||
\\
|
||||
\\
|
||||
Wahrheitstabellen nehmen in den linken Spalten die Wertekombinationen der Variablen $X_i$. In der rechten Spalte befindet sich das Ergebnis der Ausgangsvariable $Y$. Die grösse der Wahrheitstabelle hängt von der Anzahl der Variablen $X_i$ ab. Grundsätzlich kann man sich folgendes Merken für die Anzahl Spalten $S$ und Anzahl Zeilen $Z$.
|
||||
|
||||
\[
|
||||
S = i + 1
|
||||
.\]
|
||||
|
||||
\[
|
||||
Z = 2 ^{i}
|
||||
.\]
|
||||
|
||||
\subsection{UND, ODER, NICHT Verknüpfung} \label{sec:verk}
|
||||
|
||||
In diesem Kapitel schauen wir uns verschiedene Verknüpfungen an. Diese sind relevant für das Verständnis von Schaltfunktionen.
|
||||
|
||||
\dfn{AND Verknüpfung}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Wenn Aussage $A$ (Eingang) wahr \textbf{und} Aussage $B$ (Eingang) wahr sind, dann ist Aussage $Y$ (Ausgang) wahr. \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$A$ & $B$ & $Y$ \\
|
||||
\hline
|
||||
0 & 0 & 0 \\
|
||||
0 & 1 & 0 \\
|
||||
1 & 0 & 1 \\
|
||||
1 & 1 & 1 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
In einer logischen Gleichung wird das UND wie folgt gekennzeichnet.
|
||||
\[
|
||||
A \land B = Y
|
||||
.\]
|
||||
Das UND wird mit dem folgenden Schaltzeichen gekennzeichnet.
|
||||
\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}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_30.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\dfn{OR Verknüpfung}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Wenn Aussage $A$ (Eingang) wahr oder Aussage $B$ (Eingang) wahr ist, dann ist Aussage $Y$ (Ausgang) wahr. \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$A$ & $B$ & $Y$ \\
|
||||
\hline
|
||||
0 & 0 & 0 \\
|
||||
0 & 1 & 1 \\
|
||||
1 & 0 & 1 \\
|
||||
1 & 1 & 1 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
In einer logischen Gleichung wird das ODER wie folgt gekennzeichnet.
|
||||
\[
|
||||
Y = A \lor B
|
||||
.\]
|
||||
Das ODER wird mit dem folgenden Schaltzeichen gekennzeichnet.
|
||||
\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) |- (and.input 1);
|
||||
\draw (iB.east) --++ (right:2mm) |- (and.input 2);
|
||||
\draw (and.output) -- (oZ);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_31.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\dfn{NICHT Verknüpfung}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Wenn Aussage $A$ (Eingang) wahr ist, dann ist Aussage $Y$ (Ausgang) falsch. \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c |}
|
||||
$A$ & $Y$ \\
|
||||
\hline
|
||||
0 & 1 \\
|
||||
1 & 0 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
In einer logischen Gleichung wird das NICHT wie folgt gekennzeichnet.
|
||||
\[
|
||||
\bar{A} = Y
|
||||
.\]
|
||||
Das NICHT wird mit dem folgenden Schaltzeichen gekennzeichnet.
|
||||
\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.5\linewidth}
|
||||
\end{minipage}
|
||||
}
|
214
hs24/digitaltechnik/verknuepfung/schaltnetzanalyse.tex
Normal file
@@ -0,0 +1,214 @@
|
||||
\section{Schaltnetzanalyse}
|
||||
|
||||
\subsection{Zusammengesetzte Gatter} \label{sec:gat}
|
||||
|
||||
Die Darstellung von Schaltfunktionen kann mithilfe von Schaltnetzen realisiert werden. Die in Kapitel \ref{sec:verk} erwähnten Schaltzeichen spielen in diesem Kapitel eine grosse Rolle. Wichtig ist vor allem die Kombination von Verknüpfungen.
|
||||
|
||||
\dfn{NAND-Verknüpfung}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Invertierung der UND-Funktion
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[and gate] (and) at (-1,0) {};
|
||||
\node[not gate] (not) at (1,0) {};
|
||||
\node[] (iA) at (-2, 0.4) {A};
|
||||
\node[] (iB) at (-2, -0.4) {B};
|
||||
\node[] (oY) at (2, 0) {Y};
|
||||
\draw (iA.east) --++ (right:2mm) |- (and.input 1);
|
||||
\draw (iB.east) --++ (right:2mm) |- (and.input 2);
|
||||
\draw (and.output) -- (not.input);
|
||||
\draw (not.output) -- (oY);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$A$ & $B$ & $Y$ \\
|
||||
\hline
|
||||
0 & 0 & 1 \\
|
||||
0 & 1 & 1 \\
|
||||
1 & 0 & 1 \\
|
||||
1 & 1 & 0 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
In einer logischen Gleichung wird das NAND wie folgt gekennzeichnet.
|
||||
|
||||
\[
|
||||
\overline{A \land B} = Y
|
||||
.\]
|
||||
|
||||
Das NAND wird mit den folgenden Schaltzeichen gekennzeichnet.
|
||||
|
||||
\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[] (oY) at (0.8, 0) {Y};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nand.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nand.input 2);
|
||||
\draw (nand.output) -- (oY);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_12.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
|
||||
\dfn{NOR-Verknüpfung}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Invertierung der ODER-Funktion
|
||||
\begin{center}
|
||||
\begin{tikzpicture}[circuit logic IEC]
|
||||
\node[or gate] (or) at (-1,0) {};
|
||||
\node[not gate] (not) at (1,0) {};
|
||||
\node[] (iA) at (-2, 0.4) {A};
|
||||
\node[] (iB) at (-2, -0.4) {B};
|
||||
\node[] (oY) at (2, 0) {Y};
|
||||
\draw (iA.east) --++ (right:2mm) |- (or.input 1);
|
||||
\draw (iB.east) --++ (right:2mm) |- (or.input 2);
|
||||
\draw (or.output) -- (not.input);
|
||||
\draw (not.output) -- (oY);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$A$ & $B$ & $Y$ \\
|
||||
\hline
|
||||
0 & 0 & 1 \\
|
||||
0 & 1 & 0 \\
|
||||
1 & 0 & 0 \\
|
||||
1 & 1 & 0 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
In einer logischen Gleichung wird das NOR wie folgt gekennzeichnet.
|
||||
|
||||
\[
|
||||
\overline{A \lor B} = Y
|
||||
.\]
|
||||
|
||||
Das NOR wird mit den folgenden Schaltzeichen gekennzeichnet.
|
||||
|
||||
\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[] (oY) at (0.8, 0) {Y};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (nor.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (nor.input 2);
|
||||
\draw (nor.output) -- (oY);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\includegraphics[width=\linewidth]{fig/Fig_32.png} \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
|
||||
\dfn{XNOR-Verknüpfung}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Ein Gatter, das eine logische 1 liefert, wenn beide Eingänge gleich sind, sonst 0. \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$A$ & $B$ & $Y$ \\
|
||||
\hline
|
||||
0 & 0 & 1 \\
|
||||
0 & 1 & 0 \\
|
||||
1 & 0 & 0 \\
|
||||
1 & 1 & 1 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
In einer logischen Gleichung wird das XNOR wie folgt gekennzeichnet.
|
||||
|
||||
\[
|
||||
\overline{A \oplus B} = Y
|
||||
.\]
|
||||
|
||||
Das XNOR wird mit den folgenden Schaltzeichen gekennzeichnet.
|
||||
|
||||
\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[] (oY) at (0.8, 0) {Y};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (xnor.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (xnor.input 2);
|
||||
\draw (xnor.output) -- (oY);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\dfn{XOR-Verknüpfung}{
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
Ein Gatter, das eine logische 1 liefert, wenn beide Eingänge ungleich sind, sonst 0. \cite{Luisier2024}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\begin{center}
|
||||
\begin{tabular}{| c | c | c |}
|
||||
$A$ & $B$ & $Y$ \\
|
||||
\hline
|
||||
0 & 0 & 0 \\
|
||||
0 & 1 & 1 \\
|
||||
1 & 0 & 1 \\
|
||||
1 & 1 & 0 \\
|
||||
\end{tabular}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
In einer logischen Gleichung wird das XOR wie folgt gekennzeichnet.
|
||||
|
||||
\[
|
||||
A \oplus B = Y
|
||||
.\]
|
||||
|
||||
Das XOR wird mit den folgenden Schaltzeichen gekennzeichnet.
|
||||
|
||||
\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[] (oY) at (0.8, 0) {Y};
|
||||
\draw (iA.east) --++ (right:1.5mm) |- (xor.input 1);
|
||||
\draw (iB.east) --++ (right:1.5mm) |- (xor.input 2);
|
||||
\draw (xor.output) -- (oY);
|
||||
\end{tikzpicture}
|
||||
\end{center}
|
||||
\end{minipage}
|
||||
\begin{minipage}{0.5\linewidth}
|
||||
\end{minipage}
|
||||
}
|
||||
|
||||
\nt{
|
||||
Das XOR-Gatter wird auch EXCLUSIV-OR Gatter genannt. \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\subsection{Schaltungen aus Grundgatter}
|
||||
|
||||
Die Grundfunktionen und Schaltgatter sind nicht auf 2 Eingangsvariablen beschränkt. Grundsätzlich können Grundfunktionen und Schaltgatter $N$ Eingänge haben.
|
||||
\\
|
||||
\\
|
||||
Um die Komplexität von Schaltgattern mit mehreren Eingängen zu vereinfachen, kann man sie in mehreren Schaltgattern verwandeln, sodass die Logik der Schaltung lesbarer ist.
|
4
hs24/digitaltechnik/verknuepfung/verknuepfung.tex
Normal file
@@ -0,0 +1,4 @@
|
||||
\chapter{Logische Verknüpfung}
|
||||
|
||||
\input{basisfunktionen.tex}
|
||||
\input{schaltnetzanalyse.tex}
|
36
hs24/digitaltechnik/zahlen_codes/codes.tex
Normal file
@@ -0,0 +1,36 @@
|
||||
\section{Codes} \label{sec:code}
|
||||
|
||||
\subsection{Was ist ein Code?}
|
||||
|
||||
In Kapitel \ref{sec:grund} haben wir gelernt was eine Codierung ist. Codes kommen hauptsächlich in vierer Gruppen vor (Tetraden) und neben den Binär Codierung gibt es viele weitere Codes.
|
||||
|
||||
\subsection*{Codes mit Tetraden}
|
||||
|
||||
\begin{tabular}{| c | c | c | c | c | c | c |}
|
||||
Binär & BCD & Excess-3 & Aiken & 4-2-2-1 & Gray & O'Brien \\
|
||||
\hline
|
||||
0000 & 0 & & 0 & 0 & 0 & \\
|
||||
0001 & 1 & & 1 & 1 & 1 & \\
|
||||
0010 & 2 & & 2 & 2 & 3 & 0 \\
|
||||
0011 & 3 & 0 & 3 & 3 & 2 & \\
|
||||
0100 & 4 & 1 & 4 & & 7 & 4 \\
|
||||
0101 & 5 & 2 & & & 6 & 3 \\
|
||||
0110 & 6 & 3 & & 4 & 4 & 1 \\
|
||||
0111 & 7 & 4 & & 5 & 5 & 2 \\
|
||||
1000 & 8 & 5 & & & & \\
|
||||
1001 & 9 & 6 & & & & \\
|
||||
1010 & & 7 & & & & 9 \\
|
||||
1011 & & 8 & 5 & & & \\
|
||||
1100 & & 9 & 6 & 6 & 8 & 5 \\
|
||||
1101 & & & 7 & 7 & 9 & 6 \\
|
||||
1110 & & & 8 & 8 & & 7 \\
|
||||
1111 & & & 9 & 9 & & 8 \\
|
||||
\end{tabular}
|
||||
|
||||
Codes werden hauptsächlich verwendet, um Informationen zu speichern, Daten zu komprimieren und Fehlerkorrekturen und Verschlüsselungen von Nachrichtenübertragungen zu machen.
|
||||
|
||||
\subsection{Fehlererkennung und Fehlerkorrektur}
|
||||
|
||||
Bei der Übertragung von Codes können Fehler auftauchen. Deswegen werden neben den Codes auch Parity Bits übertragen. Parity kennzeichnen ob die Codierung gerade oder ungerade ist. Falls bei der Übertragung ein Fehler entstanden ist und der Parity Bit nicht übereinstimmt, so wird ein Fehler gemeldet.
|
||||
\\
|
||||
Eine weitere Stufe zur Fehlererkennung ist das Verwenden von einem Prüfwort. Das Prüfwort ist eine Codierung mit einem Parity Bit. Das Prüfwort wird gebildet durch die Addition von mehreren Codierungen, welche auf Fehler untersucht werden sollen. Dabei wird der Übertrag ignoriert. Hat das Prüfwort ein Fehler, so stimmt der Parity Bit nicht mehr überein und es wird nach der Falschen Codierung gesucht.
|
4
hs24/digitaltechnik/zahlen_codes/zahlen_codes.tex
Normal file
@@ -0,0 +1,4 @@
|
||||
\chapter{Zahlen und Codes}
|
||||
|
||||
\input{zahlensysteme.tex}
|
||||
\input{codes.tex}
|
56
hs24/digitaltechnik/zahlen_codes/zahlensysteme.tex
Normal file
@@ -0,0 +1,56 @@
|
||||
\section{Zahlensysteme}
|
||||
|
||||
\subsection{Was ist ein Zahlensystem?}
|
||||
|
||||
\dfn{Zahlensystem}{
|
||||
Ein Zahlensystem ist eine Methode, um Zahlen darzustellen. Wir Menschen sind gewohnt, das Dezimalsystem zu verwenden. In der Digitaltechnik sind jedoch andere Zahlensysteme von grosser Bedeutung.
|
||||
}
|
||||
|
||||
\subsection*{Zahlensysteme}
|
||||
|
||||
\begin{itemize}
|
||||
\item Dezimalsystem stellt Zahlen in Zehnerpotenzen dar. (Basis = 10)
|
||||
\item Oktalsystem stellt Zahlen in Achterpotenzen dar. (Basis = 8)
|
||||
\item Dualsystem (Binärsystem) stellt Zahlen in Zweierpotenzen dar. (Basis = 2)
|
||||
\item Hexadezimalsystem stellt Zahlen in sechszehnerpotenz dar. (Basis = 16)
|
||||
\end{itemize}
|
||||
|
||||
\nt{
|
||||
Da das Hexadezimalsystem über die Zahl 9 geht werden Buchstaben für die darauffolgenden Zahlen verwendet.
|
||||
}
|
||||
|
||||
\nt{
|
||||
Das Oktal- und Hexadezimalsystem wird verwendet um das Binärsystem kompakter zu machen. Sie können päckchenweise ineinander umgerechnet werden. \cite{Luisier2024}
|
||||
}
|
||||
|
||||
\subsection{Umwandlung zwischen Zahlensystemen}
|
||||
|
||||
Wie vorher schon erwähnt können binär Zahlen sehr einfach in Oktalzahlen und Hexadezimalzahlen umgewandelt werden. Die Umwandlung von Dezimalzahlen in ein anderes Zahlensystem ist ein wenig komplizierter.
|
||||
\\
|
||||
Grundsätzlich gilt, dass wenn man vom Dezimalsystem in ein anderes System umwandelt, dass man die Zahl durch die korrespondierende Basis dividiert. Der Rest entspricht jeweils die Ziffer in der Codierung. Bei der Division von Zahlen $>1$ entsteht bei der ersten Division der MSB und bei der letzten Division der LSB. Bei Zahlen $<1$ ist es umgekehrt.
|
||||
|
||||
\subsection{Negative Dualzahlen (Zweierkomplement)}
|
||||
|
||||
Für negative Zahlen ist es am einfachsten, die negative Zahl ins Binärsystem umzuwandeln und diese, wenn nötig in das gefragte Zahlensystem umzuwandeln. Dabei geht man wie folgt vor.
|
||||
|
||||
\subsection*{Umwandlung von negativen Zahlen}
|
||||
|
||||
\begin{enumerate}
|
||||
\item Den Betrag der negativen Zahl ins Binärsystem umwandeln.
|
||||
\item Die umgewandelte negative Zahl invertieren. ($0 \rightarrow 1$ und $1 \rightarrow 0$)
|
||||
\item Addiere 1 zum LSB.
|
||||
\item Vorzeichenbit als MSB einfügen.
|
||||
\end{enumerate}
|
||||
|
||||
\nt{
|
||||
Die negative Zahl im Binärsystem wird Zweierkomplement genannt. Ob das Binärsystem oder das Zweierkomplementsystem verwendet wird, wird meistens in der Aufgabe gesagt.
|
||||
}
|
||||
|
||||
Negative rationale Zahlen bestehen aus einem Vorzeichenbit, sowie $m$ Vorkomma- und $n$ Nachkommabits. Somit sind $1 + m + n$ Bits erforderlich. Das Komma wird vor den Vorkommabits eingefügt.
|
||||
|
||||
|
||||
\subsection{Rechenoperationen mit Dualzahlen}
|
||||
|
||||
Die Addition von zwei Dualzahlen erfolgt bitweise, beginnend mit den LSB, von rechts nach links \cite{Luisier2024}. Falls die Codierungen nicht die gleiche Anzahl an Bits haben werden Nullen hinzugefügt.
|
||||
\\
|
||||
Für die Subtraktion ist es am einfachsten, die Zahl, welche subtrahiert wird ins Zweierkomplement umzuwandeln und anschliessend zur anderen Codierung zu addieren.
|