From b03172ff7be0d06f01feb15316a2d773fefba4fd Mon Sep 17 00:00:00 2001 From: Andre Meyering Date: Tue, 1 Aug 2017 14:40:40 +0200 Subject: [PATCH] =?UTF-8?q?[Kapitel]=20Hinzuf=C3=BCgen=20der=20Kapitel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Kapitel/00_Vorwort.tex | 9 + Kapitel/01_Einstieg.tex | 48 + Kapitel/02_Codierung.tex | 93 ++ Kapitel/03_SWS.tex | 924 +++++++++++++ Kapitel/05_Signale.tex | 480 +++++++ Kapitel/06_Boolesche_Algebra.tex | 2136 ++++++++++++++++++++++++++++++ Kapitel/07_Uebungsklausur.tex | 451 +++++++ 7 files changed, 4141 insertions(+) create mode 100644 Kapitel/00_Vorwort.tex create mode 100644 Kapitel/01_Einstieg.tex create mode 100644 Kapitel/02_Codierung.tex create mode 100644 Kapitel/03_SWS.tex create mode 100644 Kapitel/05_Signale.tex create mode 100644 Kapitel/06_Boolesche_Algebra.tex create mode 100644 Kapitel/07_Uebungsklausur.tex diff --git a/Kapitel/00_Vorwort.tex b/Kapitel/00_Vorwort.tex new file mode 100644 index 0000000..458b1b0 --- /dev/null +++ b/Kapitel/00_Vorwort.tex @@ -0,0 +1,9 @@ +\chapter{Vorwort} + +Herr Röthig schreibt alles, was für seine Klausuren von Bedeutung ist, an die Tafel. Es ist daher nur zu empfehlen, alles mitzuschreiben, da er kein Skript besitzt und auch keinen Foliensatz. Der Unterricht ist im Vergleich zu anderen Dozenten unterscheidet sich darin, dass während der Klausur keine Hilfsmittel verwendet werden dürfen. Dafür besteht die Klausur zu 90\% nur aus Abfrageaufgaben. + +Dieses Skript enthält \textit{alles}, was Herr Röthig 2017 an Wissen voraussetzt. Auf den letzten Seiten dieses Skripts findet sich zusätzlich noch eine Übungsklausur. Die Klausuren unterscheiden sich jedes Jahr nur um einige wenige Aufgaben. Ist man zwei, drei Übungsklausuren durchgegangen, so ist die Klausur einfach zu bestehen. + +Zusammen mit meinem Kurs TINF16B2 haben wir dieses Skript ausgedruckt und korrigiert. Inhaltliche Fehler sollten daher (fast) keine mehr enthalten sein. + +Ich wünsche dir viel Erfolg bei Herrn Röthig im Fach Digitaltechnik (Technische Informatik). Solltest du diese Skript erweitern wollen, so kannst du dich an \href{mailto:dhbw@andremeyering.de}{dhbw@andremeyering.de} wenden. \ No newline at end of file diff --git a/Kapitel/01_Einstieg.tex b/Kapitel/01_Einstieg.tex new file mode 100644 index 0000000..5df4a96 --- /dev/null +++ b/Kapitel/01_Einstieg.tex @@ -0,0 +1,48 @@ +\chapter{Einstieg in die Vorlesung} + +\begin{tabular}{ll} + Dozent: & Prof. Dr. Jürgen Röthig \\ + Modul: & Technische Informatik \RNum{1} \\ + Fach: & Digitaltechnik +\end{tabular} + + +\section{Digitaltechnik (Vorlesung)} + +\begin{itemize}[noitemsep] + \item 48h Präsenzzeit, 150h Workload $\Rightarrow$ 102h Selbststudium + \item Klausur (dieses Semester): 120min (evtl. 90min; ohne Hilfsmittel) + \item kein Skript, kein Foliensatz +\end{itemize} + +\subsection{Übersicht} + +\begin{enumerate}[noitemsep] + \item Begriffe, Motivation + \item Codierung, insbesondere Zahlencodierung + \item Boolesche Algebra, insbesondere Schaltalgebra + \item Schaltnetze + \item Schaltwerk + \item Halbleiterspeicher +\end{enumerate} + +\subsection{Was ist analog/digital?}\index{analog}\index{digital} + +\begin{table}[h] + \begin{tabular}{p{74mm}|p{74mm}} + \toprule + \rule[-1ex]{0pt}{2.5ex} Digital & Analog \\ + \midrule + \rule[-1ex]{0pt}{2.5ex} Werte diskret & Werte kontinuierlich \\ + \midrule + \rule[-1ex]{0pt}{2.5ex} in einem endlichen Wertebereich gibt es nur eine endliche Zahl von Werten; aber trotzdem unendliche Wertemenge möglich $\Rightarrow$ Bsp. natürliche Zahlen & unendlich viele Zwischenwerte zwischen zwei beliebigen (ungleichen) Werten \\ + \midrule + \rule[-1ex]{0pt}{2.5ex} oft auch zeitdiskret & überlicherweise auch zeitkontinuierlich \\ + \midrule + \rule[-1ex]{0pt}{2.5ex} Arbeitsweise der heute üblichen Rechner & die reale Welt (alles!) \\ + \bottomrule + \end{tabular} + + \caption{Übersicht Digital/Analog} + +\end{table} diff --git a/Kapitel/02_Codierung.tex b/Kapitel/02_Codierung.tex new file mode 100644 index 0000000..8989144 --- /dev/null +++ b/Kapitel/02_Codierung.tex @@ -0,0 +1,93 @@ +\chapter{Codierung}\index{Codierung} + +Was versteht man unter Codierung? + +\begin{description} + \item[Codierung] Codierung ist die Darstellung von Informationen (analoge oder digitale Infos möglich) mit einem Alphabet (codierte Informationen sind bei uns also immer digital!). + \item[Alphabet] endliche Menge von Symbolen. + \item[Signal] physikalisch messbare Größe (\zB Spannung, Strom) +\end{description} + +Es gibt verschiedene Codierungsgruppen +\begin{enumerate}[noitemsep] + \item \textbf{Zahlencodierung}: Es werden Zahlenwerte dargestellt + \item \textbf{Zeichencodierung/Textcodierung}: Es werden Zeichen der Schriftsprache dargestellt + \begin{itemize}[noitemsep] + \item Unicode\index{Unicode} in Form von \textit{UTF-8} oder \textit{UTF-16} (potenziell unbeschränkt; + erste 128 Zeichen entsprechen der ASCII Codierung) + \item \textit{ASCII} (7-bit Code: 128 Zeichen) + \item \textit{ISO-8859-X} (8-bit, 256 Zeichen; ASCII Zeichensatz, nur um 1 bit erweitert) + $x \in \{1,2,3,...,15,...\}$ + \begin{enumerate}[noitemsep] + \item \enquote{$-1 $} ursprüngliche westeuropäische Variante + \item \enquote{$-15$} heutige westeuropäische Variante (inkl. € Euro Zeichen) + \end{enumerate} + \end{itemize} + + \item \textbf{Anwendungscodierung}: Es werden Dokumente einer speziellen Anwendung dargestellt, + \zB \textit{JPEG, MP3, DOCX, ODT, HTML, usw.} + \item \textbf{Verschlüsselung} (Information wird umcodiert, damit sie ohne Kentniss des + Verschlüsselungsverfahrens \enquote{informationslos}, also wertlos ist.) + \item \textbf{Signalcodierung}: Zuordnung von (abstrakter) Info zu einem Signal \newline + $\Rightarrow$ im späteren Verlauf der Vorlesung dazu mehr \ldots + +\end{enumerate} + +$\Rightarrow$ \textbf{Codierung ist wichtig für Speicherung oder Übertragung von Informationen!} + + +\section{Zahlencodierung - Abzählsysteme} + +\begin{description} + \item[Fingerabzählsystem] $Symbolmenge \{ Finger \}$ \newline + Wert = Anzahl gezeigter Finger \newline + Jedes Symbol hat einen Symbolwert, nämlich hier $ Finger \overset{\wedge}{=} 1$ \newline + Der Gesamtwert ist die Summe aller dargestellten Symbolwerte \newline + \textbf{Hinweis}: Potenziell kann jedes Symbol mehrfach auftreten! + + Bewertung: + \begin{itemize}[noitemsep] + \item $\oplus$ Darstellung und Verständnis extrem einfach. + \item $\oplus$ Addition und Subtraktion extrem einfach + \item $\ominus$ sehr kleiner beschränkter Wertebereich (max. 10 [Finger]) + \item $\ominus$ keine negativen Zahlen + \item $\ominus$ keine Teile von ganzen Zahlenwerten + \item \textcircled{$\pm$} Multiplikation (und Division) mit erhöhtem Aufwand darstellbar + \item $\ominus$ komplexere Rechenoperationen nicht darstellbar + \end{itemize} + + \item[Strichliste] $Symbolmenge \{ I \}$ \newline + Wert: $| = 1$ \newline + Bewertung wie beim Fingerabzählsystem, zusätzlich: + \begin{itemize}[noitemsep] + \item $\oplus$ Substraktion ist ein wenig schwieriger durch das Entfernen von Strichen (aber immer noch einfach) + \item $\ominus$ beschränkte Übersichtlichkeit: ab etwa 10 gleichen Symbolen unübersichtlich + \item $\oplus$ unbeschränkter Wertebereich nach oben, \dash beliebig große Zahlen (aber weiterhin keine negativen Zahlen und keine Nicht-Ganzzahlen) + \end{itemize} + + \item[Lattenzaunsystem] \hfill\newline + Strichliste mit Querstrich $\rightarrow$ jeder 5. Strich wird als Querstrich über die vorangegangenen vier Striche notiert. \newline + $Symbole \{ |, \bcancel{||||} \}$ $\Rightarrow$ zwei verschiedene Symbole + Wert (|) = 1; Wert (\bcancel{||||}) = 5 \newline + \textbf{Regel}: Symbole mit höherer Wertigkeit stehen immer link ($\rightarrow$ Wertigkeit absteigend) + + Bewertung wie bei der Strichliste, zusätzlich: + \begin{itemize}[noitemsep] + \item $\ominus$ Verständnis erschwert + \item $\oplus$ etwas übersichtlicher + \item $\pm/-$ Übersichtlichkeit beschränkt auf Werte bis etwa $10\times 5 = 50$ + \item $\ominus$ erschwerte Addition und Subtraktion aufgrund von Umsortierung und Neugruppierung bzw. Entgruppierung + \end{itemize} + + \item[römisches Zahlensystem] \hfill\newline + Symbole und Symbolwerte: $\RNum{1} = 1$, $V = 5$, $X = 10$, $L = 50$, $C = 100$, $D = 500$, $M = 1000$ \newline + \textbf{Spezialregel}: ein Symbol mit niedrigerer Wertigkeit notiert \textit{vor} einem Symbol mit höherer Wertigkeit $\Rightarrow$ Symbolwert wird abgezogen. + + Bewertung: + \begin{itemize}[noitemsep] + \item $\oplus$ potenziell übersichtlich bis etwa $10\times 1000 = 10.000$ + \item $\ominus$ Einfachheit und Verständnis + \item $\ominus$ Addition und Subtraktion recht komplex + \end{itemize} + +\end{description} \ No newline at end of file diff --git a/Kapitel/03_SWS.tex b/Kapitel/03_SWS.tex new file mode 100644 index 0000000..40d3ca3 --- /dev/null +++ b/Kapitel/03_SWS.tex @@ -0,0 +1,924 @@ +\chapter{\acl{SWS}}\index{Stellenwertsysteme} +\acf{SWS} sind gekennzeichnet durch eine Basis $b$, wobei $b \in \mathbb{N}\setminus\{0,1\}$. \newline +Der Aufbau einer n-stelligen Zahl ist: $z_{n-1}, z_{n-2}, \ldots, z_2, z_1, z_0$ mit $z \in \{k-1, \ldots, 0\}$. \newline +Der Wert der Zahl ist die Summe aus $Ziffernwert (Symbolwert) \times Stellenwert$ + +$\text{Anzahl(Symbole)} = b$ ($b$ = Basis, bei dezimal $b = 10$) \newline +Wert(kleinstwertigstes Symbol) = $0$ \newline +Wert(höchstwertigstes Symbol) = $b - 1$ + +$\Rightarrow$ $b \in \mathbb{N} \setminus \{0,1\}$ \dash $b > 1$ bzw. $b \geq 2$ \newline +$\Rightarrow$ Es gibt unendlich viele (aber abzählbar viele) \acl{SWS} + +\begin{tabular}{rlll} + \textbullet & Dezimalsystem & $b = 10$ & $\text{Symbolmenge} \, \{0,1,2,3,4,5,6,7,8,9\}$ \\ + \textbullet & Dual-/Binärsystem & $b = 2$ & $\text{Symbolmenge} \, \{0,1\}$\\ + \textbullet & Hexadezimalsystem & $b = 16$ & $\text{Symbolmenge} \,\{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F\}$ \\ + \textbullet & Oktalsystem: & $b = 8$ & $\text{Symbolmenge} \, \{0,1,2,3,4,5,6,7\}$ \\ + \textbullet & Tetralsystem: & $b = 4$ & $\text{Symbolmenge} \, \{0,1,2,3\}$ +\end{tabular} + + +\begin{Hinweis} + Die Bestimmung von Werten in Stellenwertsystemen kann über folgende Formel erfolgen: + \begin{equation} + \label{eq:umrechnung_b_zu_10} + Wert(z_{n-1}, z_{n-2}, \ldots, z_1, z_0) = \sum\limits_{i=0}^{n-1} |z_i| \cdot b^i = z_{n-1} \cdot b^{n-1} + z_{n-2} \cdot b^{n-2} + \ldots + z_1 \cdot b^1 + z_0 \cdot b^0 + \end{equation} +\end{Hinweis} + + +\textit{Hinweis}: Es gibt unendlich viele \acl{SWS}. + +\section{Umrechnung verschiedener Basen}\index{Umrechnung} + +\subsection{Umrechnung von $b$ nach $b=10$} + +Die Umrechnung von einer beliebigen Basis $b$ zur Basis $b=10$ (\enquote{Dezimalsystem}) kann über die Formel \ref{eq:umrechnung_b_zu_10} erfolgen. + +\textbf{Beispiel} +\begin{equation} + \begin{aligned} + 11010_2 & = 0\cdot 2^0 + 1\cdot 2^1 + 0\cdot 2^2 + 1\cdot 2^3 + 1\cdot 2^4 \\ + & = 26_{10} + \end{aligned} +\end{equation} + +\subsection{Umrechnung von $b_1=10$ nach $b$ (beliebiges System)} + +Die Umrechnung vom Dezimalsystem in ein anderes System funktioniert durch Ganzzahldivision und Restebildung (Division durch Zielbasis). + +\textbf{$26_{10} = ?_2$ mit $b_2=2$} + +\columnratio{0.4} +\begin{paracol}{2} + \begin{equation*} + \begin{aligned} + 26:2 &= 13 & R0 \rightarrow z_0 \\ + 13:2 &= 6 & R1 \rightarrow z_1 \\ + 6:2 &= 3 & R0 \rightarrow z_2 \\ + 3:2 &= 1 & R1 \rightarrow z_3 \\ + 1:2 &= \textcolor{red}{0} & R1 \rightarrow z_4 \\ + 0:2 &= \textcolor{red}{0} & R0 \rightarrow z_5 + \end{aligned} + \end{equation*} + + \switchcolumn + + Die Abbruchbedingung ist erfüllt, wenn die Division $0$ ergibt. + Weitere Durchläufe sind möglich, führen jedoch nur zu führenden Nullen. + + Das Ergebnis ist somit $26_{10}=11010_2$. +\end{paracol} + +\textbf{Beispiel $42_{10} = ?_7$ mit $b_2=7$} +\columnratio{0.55} +\begin{paracol}{2} + \begin{equation*} + \begin{aligned} + 42:7 &= 6 & R0 \rightarrow z_0 \\ + 6:7 &= \textcolor{red}{0} & R6 \rightarrow z_1 + \end{aligned} + \end{equation*} + + \switchcolumn + + Das Ergebnis ist somit $42_{10}=60_7$. + + \textbf{Probe}: $60_7=0\cdot 7^0 + 6\cdot 7^1 = 42_{10}$ \textcolor{green}{\Large{$\checkmark$}} +\end{paracol} + +\textbf{Beispiel $0815_{10} = ?_8$ mit $b_2=8$} + +\columnratio{0.55} +\begin{paracol}{2} + + Umrechnung von Dezimalsystem in Oktalsystem. + \begin{equation*} + \begin{aligned} + 815:8 &= 101 & R7 \rightarrow z_0 \\ + 101:8 &= 12 & R5 \rightarrow z_1 \\ + 12:8 &= 1 & R4 \rightarrow z_2 \\ + 1:8 &= \textcolor{red}{0} & R1 \rightarrow z_3 \\ + \end{aligned} + \end{equation*} + + \switchcolumn + + Das Ergebnis ist somit $815_{10}=1457_8$. + \begin{flalign*} + & \textbf{Probe}: & & 7\cdot 8^0 + 5\cdot 8^1 + 4\cdot 8^2 + 1\cdot 8^3 & \\ + & & = & 7 + 40 + 256 + 512 & \\ + & & = & 815 \textcolor{green}{\Large{\checkmark}} & + \end{flalign*} + +\end{paracol} + + +\textbf{Hinweis:} Bei Klausuren den Rechenweg mit aufschreiben. Dies wird fast immer gefordert! + + +\subsection{Gängige Basen} + +\begin{tabular}{rlll} + \textbullet & $b = 10$ & \enquote{Dezimalsystem} & $z \in \{0,1,2,3,4,5,6,7,8,9\}$ \\ + \textbullet & $b = 2$ & \enquote{Binärsystem} & $z \in \{0,1\}$ \\ + & \multicolumn{3}{l}{$\Rightarrow$ Computer stellen Zahlen im Binärsystem dar und rechnen im Binärsystem} \\ + \textbullet & $b = 8$ & \enquote{Oktalsystem} & $z \in \{0,1,2,3,4,5,6,7\}$ \\ + \textbullet & $b = 16$ & \enquote{Hexadezimalsystem} & $z \in \{0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F\}$ \\ + & \multicolumn{3}{l}{$\Rightarrow$ Wert von $|A| = 10$, $|B| = 11$, $|C| = 12$, $|D| = 13$, $|E| = 14$, $|F| = 15$} \\ +\end{tabular} + + +\subsection{Umrechnung von $b_1$ nach $b_2$ ($b_1\neq 10 \wedge b_2\neq 10$)} + +Die Umrechnung von einer Basis $b_1$ in eine andere Basis $b_2$ ($b_1 \neq 10$, $b_2 \neq 10$) findet üblicherweise über das Dezimalsystem statt, also in 2 Schritten! +Eine direkte Umrechnung wäre über die Ganzzahldivision durch $b_2$ möglich, wenn wir diese Umrechnung im System zur Basis $b_1$ durchführen würden. +Eine direkte Umrechnung ist auch in Spezialfällen möglich, nämlich dann, wenn die eine Zahl eine Potenz der anderen ist (\zB $b_1=2$ und $b_2=16$, vgl.~\autoref{tbl:hexToDez}). + +\begin{itemize}[noitemsep] + \item $2^4=16$ \dash 4 Stellen im Binärsystem entsprechen einer Stelle im Hexadezimalsystem + \item $2^3=8 $ \dash 3 Stellen im Binärsystem entsprechen einer Stelle im Oktalsystem +\end{itemize} + +\begin{table} + \centering + \begin{tabular}{c|c|c} + Ziffer & Wert & Binär \\ + \midrule + 0 & 0 & 0000 \\ + 1 & 1 & 0001 \\ + 2 & 2 & 0010 \\ + 3 & 3 & 0011 \\ + 4 & 4 & 0100 \\ + 5 & 5 & 0101 \\ + 6 & 6 & 0110 \\ + 7 & 7 & 0111 \\ + \end{tabular} + \begin{tabular}{c|c|c} + Ziffer & Wert & Binär \\ + \midrule + 8 & 8 & 1000 \\ + 9 & 9 & 1001 \\ + A & 10 & 1010 \\ + B & 11 & 1011 \\ + C & 12 & 1100 \\ + D & 13 & 1101 \\ + E & 14 & 1110 \\ + F & 15 & 1111 \\ + \end{tabular} + \caption{Werte im Hexadezimalsystem} + \label{tbl:hexToDez} +\end{table} + +\subsection[Andere Basen bei Computern]{Wozu das Oktal- bzw. Hexadezimalsystem in \textit{computernahen} Umgebungen?} +\begin{itemize}[noitemsep] + \item 3 (bzw. 4) Ziffern im Binärsystem entsprechen einer Ziffer im + Oktal- bzw. Hexadezimalsystem + \item einfache stellenweise Umrechnung + \item deutlich bessere Übersichtlichkeit +\end{itemize} + +\vspace{-6mm} + +\begin{align*} + \underbrace{0011}_{3} \underbrace{1100}_{C} \underbrace{1010}_{A} \underbrace{1111_2}_{F_{16}} + & \qquad & + \underbrace{011}_{3} \underbrace{110}_{6} \underbrace{010}_{2} \underbrace{101}_{5}\underbrace{111_2}_{7_8} +\end{align*} + + +\subsection{Umwandlung in andere \acs{SWS}} + +Eine direkte Umwandlung ist auch möglich, wenn $b_1 = b^{n}$ und $b_{2}=b^{m}$ \newline +(es gibt ein $b$ mit $b_1=b^n$, $b_2=b^m$, $n,m \in \mathbb{N}, b \in \mathbb{N}\setminus\{1\}$) + + +\begin{paracol}{2} + + \textbf{Beispiel}: Oktal und Hexadezimalsystem: + + \hspace*{6mm} $b_1=8=2^3$ \newline + \hspace*{6mm} $b_2=16=2^4$ + + \switchcolumn + + \begin{displaymath} + \begin{aligned} + b_1^n &= b_2^m \\ + 8^4 &= 16^3 \\ + 2^{3^4} &= 2^{4^3} \\ + 2^{12} &= 2^{12} \textcolor{green}{\Large{\checkmark}} + \end{aligned} + \end{displaymath} + +\end{paracol} + + +$\Rightarrow$ 4 Stellen im Oktalsystem entsprechen 3 Stellen im Hexadezimalsystem. + +$\Rightarrow$ dann ist direkt eine Umrechnung der Ziffernblöcke möglich! + +Wenn $b_1^n = b_2^m$, dann entsprechen $n$ Stellen im System zur Basis $b_1$ genau $m$ Stellen im System zur Basis $b_2$ \newline +$\Rightarrow$ dann auch Umrechnung über Tabelle mit $b_1^n$ oder $b_2^m$ [Bei Oktal $\Leftrightarrow$ Hexdezimal: $4096$ ($2^{4^3}$)] Zeilen möglich $\Rightarrow$ zu Groß für Erstellung der Tabelle. Deshalb wieder Umrechnung über Zwischensystem, aber nicht in das Dezimalsystem, sondern in das System zur Basis $b$ mit $b^m=b_1$ und $b^n=b_2$ + + +\section{Bewertung Stellenwertsysteme} + +\begin{itemize}[noitemsep] + \item $\oplus$ Übersichtlichkeit der Zahlendarstellung ist deutlich besser als bei Abzählsystemen (exponentielles Wachstum mit der Basis vs. lineares Wachstum mit Wert des höchstwertigen Symbols). Wird erst unübersichtlich ab $\sim b^{10}$ + \item $\pm$ erhöhte Komplexität, bis das System verstanden wurde. Danach ist der Umgang mit dem System gut möglich. + \item $\oplus$ unbeschränkter Wertebereich (auch Erweiterung auf negative, nicht ganze Zahlen,\ldots) + \item $\oplus$ alle Grundrechenarten (Addition, Subtraktion, Multiplikation, Division) sind mit moderatem Aufwand und mäßig komplexen Verfahren machbar + \item $\ominus$ Übersichtlichkeit sinkt mit steigender Anzahl veschiedener/voneinander zu unterscheidener Symbole und damit mit der Basis. \newline + $\Rightarrow$ das Ganze ist also auch eine Sache der Gewohnheit! +\end{itemize} + +\section{Darstellung negativer Zahlen} + +\subsection{Betrag und Vorzeichen} +$ 42 \rightarrow -42$ bzw. $+42 \rightarrow -42$ (positives Vorzeichen wird [meist] weggelassen) \newline +Nachteil: Addition von negativen Zahlen benötigt ein anderes Verfahren +als die Addition von Positiven Zahlen (unpraktisch für Computer). + +\subsection{\href{https://de.wikipedia.org/wiki/Einerkomplement}{\textbf{Einerkomplement}}}\index{Einerkomplement} +Die erste \enquote{Ziffer} gibt das Vorzeichen an ($0 \overset{\wedge}{=} positiv$, $1 \overset{\wedge}{=} negativ$), der Rest der Ziffern ist bei negativen Zahlen der komplementierte Betrag in Binärdarstellung (komplementiert: $1=\lnot 0$ und $0=\lnot 1$, also \enquote{invertiert}) \newline +\textit{Wichtig}: Vorher genaue Stellenanzahl festlegen (wegen \enquote{erste Ziffer}). + +\pagebreak +\textbf{Beispiel}: 1. Umcodierung ins Binärsystem + +\begin{paracol}{2} + \begin{equation*} + \begin{aligned} + 42:2 &= 21 & R0 \rightarrow z_0 \\ + 21:2 &= 10 & R1 \rightarrow z_1 \\ + 10:2 &= 5 & R0 \rightarrow z_2 \\ + 5:2 &= 2 & R1 \rightarrow z_3 \\ + 2:2 &= 1 & R0 \rightarrow z_4 \\ + 1:2 &= \textcolor{red}{\textbf{0}} & R1 \rightarrow z_5 \\ + & 42_{10} = 101010_2 + \end{aligned} + \end{equation*} + + \switchcolumn + \begin{equation*} + \begin{aligned} + 13:2 &= 6 & R1 \rightarrow z_0 \\ + 6:2 &= 3 & R0 \rightarrow z_1 \\ + 3:2 &= 1 & R1 \rightarrow z_2 \\ + 1:2 &= \textcolor{red}{\textbf{0}} & R1 \rightarrow z_3 \\ + & 13_{10} = 1101_2 + \end{aligned} + \end{equation*} +\end{paracol} + + +\begin{tabular}{rllll} + \textbullet & $42_{10} $ & $ = 101010_2 $ & $= 0101010_2$ & (mit Vorzeichen)\\ + \textbullet & $13_{10} $ & $ = 1101_2 $ & $= 0001101_2$ & (mit Vorzeichen, auch sieben Stellen)\\ + \textbullet & $-42_{10} $ & & $ = 1010101_2$ & (1er-Komplement)\\ + \textbullet & $-13_{10} $ & & $ = 1110010_2$ & (1er-Komplement)\\ +\end{tabular} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\textbf{\textsf{Addition:}} +Für die Addition der beiden obigen Zahlen reichen 7 Stellen im Binärsystem aus (da $42+13 < 2^6 \Leftrightarrow 55 < 64$). +\medskip + +\columnratio{0.3} +\begin{paracol}{2} + \begin{tabular}{l|c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c} + \enskip $-42$ & & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\ + \enskip $+13$ & + & 0 & 0 & 0 & 1 & 1 & 0 & 1 \\ + Übertrag & & & 1 & 1 & 1 & & 1 & \\ + \hline + & & \textcolor{blue}{\textbf{1}} & 1 & 0 & 0 & 0 & 1 & 0 + \end{tabular} + + \switchcolumn + + Da die erste Ziffer eine \textbf{\textcolor{blue}{1}} ist, handelt es sich um eine negative Zahl. + Deshalb muss vom Ergebnis nun noch das 1er-Komplement gebildet werden. ist. + + $=0011101 = \textbf{29} \rightarrow$ Das Ergebnis ist $-29$ +\end{paracol} + +\columnratio{0.3} +\begin{paracol}{2} + \begin{tabular}{lc@{\,}|c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c} + \enskip $+42$ & & & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\ + \enskip $-13$ & & + & 1 & 1 & 1 & 0 & 0 & 1 & 0 \\ + Übertrag & & 1 & 1 & & & & 1 & & \\ + \hline + & & \textcolor{red}{\textbf{1}} & \uline{\textcolor{blue}{\textbf{0}}} & 0 & 1 & 1 & 1 & 0 & 0 + \end{tabular} + + \switchcolumn + Die rote \textcolor{red}{1} wird ignoriert, weil sie nicht in den 7 Stellen enthalten ist. + Da die Zahl positiv ist (siehe \uline{\textcolor{blue}{0}}), muss kein Komplement gebildet werden. + + $=0011100 = \textbf{28}$ + + Hieran erkennt man auch schon den ersten Nachteil des 1er-Komplements: In manchen Fällen ist die Addition offenbar nicht ganz korrekt! + +\end{paracol} + +In der 1er-Komplement-Darstellung gibt es zudem zwei verschiedene Darstellungen der $0$. Einmal \enquote{$+0$}~$=00000$ und einmal \enquote{$-0$}~$=11111$ (zweiter Nachteil). + +\textbf{Hinweis}: Sicherheitshalber hätte man 8 Stellen nehmen können. Dies hätte am falschen Ergebnis jedoch nichts geändert. + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\textbf{Wertebereiche} + +\begin{enumerate}[noitemsep] + \item[a)] bei nicht-negativen, ganzen Binärzahlen mit n Stellen: + \begin{itemize}[noitemsep] + \item kleinste Zahl = 0 + \item größte Zahl $= 111\ldots 111$ $(n \times "1") = 2^{n} - 1$ + \item $\Rightarrow$ insgesamt $2^n$ verschiedene Zahlen, die dargestellt werden können + \end{itemize} + + \item[b)] bei 1er-Komplement-Darstellung mit $n$ Stellen + \begin{itemize}[noitemsep] + \item größte Zahl $= 0111\ldots 111~((n-1) \times "1") = 2^{n-1} - 1$ + \item kleinste Zahl $= 100\ldots 000 ((n-1) \times "0")\xrightarrow{\text{1er Komplement}} 0111\ldots 111 = 2^{n-1} - 1$\newline + $\Rightarrow -(2^{n-1} - 1) = -2^{n-1} + 1$ + \item $\Rightarrow$ insgesamt $2^{n-1}$ positive Zahlen, $2^{n-1}$ negative Zahlen, sowie die Null, also insgesamt ($2^n - 1$) verschiedene Zahlen, \dash es ist ein Zahlenwert weniger als mit $n$ Stellen möglich, darstellbar (dritter Nachteil). + \end{itemize} +\end{enumerate} + +\subsection{\href{https://de.wikipedia.org/wiki/Zweierkomplement}{Zweierkomplement}}\index{Zweierkomplement} + +\textit{Bildungsregel}: Komplementierung aller Ziffern und nachfolgender Addition von \enquote{+1} (plus eins) auf das Komplement. + +\begin{itemize}[noitemsep] + \item $42_{10} = 0101010_2 \xrightarrow{\text{1er Komplement}} 1010101_2 \xrightarrow{\text{plus 1}} 1010110 = -42_{10}$ + \item $13_{10} = 0001101_2 \xrightarrow{\text{1er Komplement}} 1110010_2 \xrightarrow{\text{plus 1}} 1110011 = -13_{10}$ +\end{itemize} + +\bigskip + +\begin{Hinweis}[frametitle={Wichtig für die Klausur}] + \begin{itemize}[noitemsep] + \item (Für das Binärsystem bei negativen Zahlen): Genügend Stellen verwenden (zur Not eine Stelle ungenutzt lassen). + \item \enquote{Welche Berücksichtigung mussten sie bei der Darstellung der Zahlen noch machen?} \newline + $\Rightarrow$ Betrag, Vorzeichen, \ldots + \end{itemize} +\end{Hinweis} + +\bigskip + +\columnratio{0.3} +\begin{paracol}{2} + \begin{tabular}{lc@{\,}|c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c} + \enskip $+42$ & & & 0 & 1 & 0 & 1 & 0 & 1 & 0 \\ + \enskip $-13$ & & + & 1 & 1 & 1 & 0 & 0 & 1 & 1 \\ + Übertrag & & 1 & 1 & & & & 1 & & \\ + \hline + & & \textcolor{red}{\textbf{1}} & \uline{\textcolor{blue}{\textbf{0}}} & 0 & 1 & 1 & 1 & 0 & 1 + \end{tabular} + + \switchcolumn + + Die rote \textcolor{red}{1} wird ignoriert, weil sie nicht in den 7 Stellen enthalten ist. + Die Zahl ist positiv (siehe blaue \uline{\textcolor{blue}{0}}). + + $=0011101 = 1 + 4 + 8 + 16 = \textbf{29}$ + + Im Gegensatz zum 1er Komplement ist die Addition in diesem Fall korrekt! + +\end{paracol} + + +\bigskip + + +\columnratio{0.3} +\begin{paracol}{2} + \begin{tabular}{l|c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c} + \enskip $-42$ & & 1 & 0 & 1 & 0 & 1 & 1 & 0 \\ + \enskip $+13$ & + & 0 & 0 & 0 & 1 & 1 & 0 & 1 \\ + Übertrag & & & 1 & 1 & 1 & & & \\ + \hline + & & \textcolor{blue}{\textbf{1}} & 1 & 0 & 0 & 0 & 1 & 1 + \end{tabular} + + \switchcolumn + + Da die erste Ziffer eine \textcolor{blue}{\textbf{1}} ist, handelt es sich um eine negative Zahl. + Deshalb muss vom Ergebnis nun noch das Komplement gebildet werden und danach noch 1 aufaddiert werden. + + 1100011 $\Rightarrow$ 0011100 + 1 $\Rightarrow$ 0011101 $\Rightarrow 1 + 4 + 8 + 16 = 29 \Rightarrow \textbf{-29}$ + +\end{paracol} + + +\bigskip + + +\columnratio{0.3} +\begin{paracol}{2} + \begin{tabular}{l|c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c@{\,}c} + \enskip $-19$ & & 1 & 1 & 1 & 0 & 0 & 1 & 1 \\ + \enskip $-42$ & + & 1 & 0 & 1 & 0 & 1 & 1 & 0 \\ + Übertrag & 1 & 1 & 1 & & & 1 & & \\ + \hline + & (1) & \textcolor{blue}{1} & 0 & 0 & 1 & 0 & 0 & 1 + \end{tabular} + + \switchcolumn + $1001001_2 \xrightarrow{\text{Komplement}} 0110110_2 \xrightarrow{\text{plus eins}} 0110111_2 \rightarrow 1+2+4+16+32=55_{10}$ + + Die blaue eins bedeutet, dass es sich um eine negative Zahl handelt. Somit ist das Endergebnis $-55_{10}$ + +\end{paracol} + +\newpage +\begin{enumerate}[noitemsep] + \item Alle Additionsergebnisse sind korrekt \textcolor{green}{\cmark} + \item $-0 = ?$ \newline + Im 2er-Komplement: \newline + $00000000_2$ (positive null) $\xrightarrow{\text{1er~Komplement}} 11111111_2 \xrightarrow{\text{plus eins}} (1)\textcolor{blue}{0}0000000_2$ \newline + Es kommt eine positive \enquote{0} raus. Durch Addieren von eins verhindern wir das Auftreten zweier Nullen! + + \item Wertebereich, Beispiel: 8-Stellig + + größte Zahl: $\textcolor{blue}{0}1111111_2 = 1+2+4+8+16+32+64 = \textbf{127}$ \newline + kleinste Zahl:: $10000000_2 \xrightarrow{\text{invertieren (wird pos.) / 1er~Komplement}} 011111111 \xrightarrow{\text{plus 1}} \textcolor{red}{1}0000000$. Die rote $1$ ist in diesem Fall die positive $\textbf{128}$, nicht das Vorzeichen! + \item Insgesamt $2^8 = 256$ verschiedene Werte mit 8-Bit. + \item $\ominus$ Nachteil: unsymmetrischer Wertebereich, \dash für die kleinste + (betragsmäßig größte) negative Zahl gibt es kein positives \enquote{Äquivalent} + (eigentlich \enquote{Komplement} im Wertebereich) + \item Computer stellen (ganze) Zahlen (mit einem auch nicht-negativen Wertebereich) + meist im Zweier-Komplement dar. + +\end{enumerate} + + +\section{Darstellung von nicht-ganzen Zahlen} +Darstellung von nicht-ganzen Zahlen (zunächst von nicht-negativen Zahlen). Im folgenden werden verschiedene Darstellungsmöglichkeiten gezeigt. + +\subsection{Darstellung als Bruch}\index{Bruch} + +$\frac{2}{3}$ oder $5\frac{1}{2}$ + +\begin{itemize}[noitemsep] + \item $\ominus$ Jede Zahl hat unendlich viele Darstellungen, \zB \newline + $\frac{1}{2} = \frac{2}{4} = \frac{3}{6} = \ldots $, $2 = \frac{2}{1} = \frac{4}{2} = \ldots $ + \item $\ominus$ Viele reele Zahlen sind nicht darstellbar (die Zahlen, welche keine rationalen Zahlen sind) +\end{itemize} + +\subsection{Festkommadarstellung}\index{Festkommadarstellung} + +Neben den Ziffern gibt es ein weiteres Symbol, nämlich das \enquote{Komma} [\enquote{~,~}] (bzw. den Punkt [\enquote{~.~}] im englischen Sprachraum). + +\begin{itemize}[noitemsep] + \item jede Zahl hat einen Vorkommaanteil (feste Anzahl $n$ an Vorkommaziffern) und einen Nachkommaanteil (feste Anzahl $m$ an Nachkommaziffern). Dazwischen steht \textit{genau ein} Komma. + \item Darstellung: $z_{n-1}z_{n-2}z_{n-3}\ldots z_{1}z_{0} ~\textbf{,}~ z_{-1}z_{-2}\ldots z_{-m+1}z_{-m}$ +\end{itemize} + +\subsubsection*{Formel zur Wertbestimmung} +\begin{itemize}[noitemsep] + \item Vorkommaanteil: $\sum_{i=0}^{n-1}|z_i|\cdot b^i$ + \item Nachkommaanteil: $\sum_{i=1}^{m}|z_i|\cdot b^{-i}$ + \item Zusammen: $\sum_{i=-m}^{n-1}|z_i|\cdot b^{i}$ + + \item auch wieder mit beliebigen Basen $b, b\in \mathbb{N}, b>1$ möglich, \zB + \begin{align*} + &1101,11001101_2 \\ + &1_31_20_11_0,1_{-1}1_{-2}0_{-3}0_{-4}1_{-5}1_{-6}0_{-7}1_{-8} \\ + &2^3+2^2+2^0+2^{-1}+2^{-2}+2^{-5}+2^{-6}+2^{-8} \\ + =&8+4+1+\frac{1}{2}+\frac{1}{4}+\frac{1}{32}+\frac{1}{64}+\frac{1}{256} \\ + =&13+\underbrace{0,80078125}_{\text{kann nie Übertrag geben}}\\ + =&13,80078125 + \end{align*} + +\end{itemize} + + +\subsubsection*{Wertbestimmung in andere Richtung: $13,80078125_{10} = ?,?_2$} +Vor- und Nachkommaanteil können getrennt behandelt werden. + +Im nächsten Beispiel wird die Zahl $13,80078125$ (siehe oben) verwendet. + +\bigskip + +\columnratio{0.65} +\begin{paracol}{2} + \textbf{Vorkommaanteil}: Ganzzahldivision und Restebildung durch die Zahlbasis. + + Somit ist $13_{10} = 1101_2$. \textcolor{green}{\cmark} + + \switchcolumn + \vspace*{-10mm} + \begin{align*} + 13:2=6 & R1 \\ + 6:2=3 & R0 \\ + 3:2=1 & R1 \\ + 1:2=\textcolor{red}{0} & R1 \\ + \end{align*} + +\end{paracol} + + +\textbf{Nachkommaanteil}: +\begin{itemize}[noitemsep] + \item Multiplikation mit Zielbasis und Aufteilung in +Vor- und Nachkommaanteil + \item Vorkommaanteil ist nächste Nachkommastelle + \item Nachkommaanteil wird weiter bearbeitet +\end{itemize} + + +\begin{align*} + 0,80078125\cdot 2 &= \underbrace{1}_{\text{1.~NKS}},\underbrace{6015625 }_{\text{fortfahren}} \\ + 0,6015625\cdot 2 &= \underbrace{1}_{\text{2.~NKS}},203125 \\ + 0,203125\cdot 2 &= 0,40625 \\ + 0,40625\cdot 2 &= 0,8125 \\ + 0,8125\cdot 2 &= 1,625 \\ + 0,625\cdot 2 &= 1,25 \\ + 0,25\cdot 2 &= 0,5 \\ + 0,5\cdot 2 &= 1,\textcolor{red}{0} \Rightarrow \textit{Abbruchbedingung} \\ + 0,0\cdot 2 &= \textcolor{blue}{0},0 \Rightarrow \textit{kann weggelassen werden} \\ + & \Rightarrow 11001101 +\end{align*} + +Die Abbruchbedingung ist, dass der Nachkommaanteil gleich null ist! + +\begin{Achtung} + Falls vorher festgelegt, so müssen alle Nachkommastellen aufgefüllt werden, auch wenn alle folgenden Stellen null sind! Ist dies nicht der Fall, so können weitere nullen weggelassen werden, da sie nichts am Wert ändern. +\end{Achtung} + + +\textbf{Ein anderes Beispiel:} + +\begin{align} + & \hspace*{4mm} 0,1_{10} = \textbf{?}_{2} = 0,\textcolor{red}{000110} + \label{eq:01inBinaer} \\ + & \hspace*{3mm} 0,1\cdot 2 = 0,2 \nonumber \\ + \text{wiederholt sich} & \left\{ + \begin{aligned} + 0,\textcolor{blue}{2}\cdot 2 &= 0,4 \\ + 0,4\cdot 2 &= 0,8 \\ + 0,8\cdot 2 &= 1,6 \\ + 0,6\cdot 2 &= 1,\textcolor{blue}{2} + \end{aligned}\nonumber + \right. \\ + & \hspace*{4mm} 0,2\cdot 2 = 0,4 \nonumber +\end{align} + +Wie \autoref{eq:01inBinaer} zeigt, ist $0,1_{10}$ im Binärsystem als Kommazahl nicht exakt darstellbar, denn die Abbruchbedingung wird nie erreicht! + +Bei der Wandlung von Dezimalbrüchen in Binärbrüche treten bei sehr vielen Zahlen Rundungsfehler auf! + + +\section{Gleit-/Fließkommazahlen}\label{sec:gleitkommazahlen}\index{Kommazahlen} + +\begin{description} + \item[Gleit-/Fließkommazahl] Zahl in Darstellung mit Mantisse und Exponent (auch \textit{Exponentialdarstellung genannt}). \newline + $\text{Zahl} = \text{Mantisse} \cdot b^{\text{Exponent}}$ + \item[Mantisse] Festkommazahl mit potentiell sowohl Vor- als auch Nachkommastellen. + \item[Exponent] Ganze Zahl, welche die Anzahl der Stellen angibt, um welche das Komma bei der Mantisse verschoben werden muss, um den Zahlenwert zu erhalten. +\end{description} + + +\begin{tabular}{ll} + $103,578\cdot 10^{2} = 10357,8$ & $\Rightarrow$ Komma wird um zwei Stellen nach rechts verschoben. \\ + $103,578\cdot 10^{-2} = 1,03578$ & $\Rightarrow$ Komma wird um zwei Stellen nach links verschoben. +\end{tabular} + +\begin{Tipp} +Eine Kommaverschiebung gibt es, wenn mit einer Potenz der Basis multipliziert wird. Ansonsten muss gerechnet werden. +\end{Tipp} + +\begin{Hinweis} + Im Computer ist $b=2$. Die Darstellung von Mantisse und Exponent findet als Gleitkommazahl bzw. als ganze Zahl zur Basis $2$ statt. +\end{Hinweis} + +\vspace{-8mm} +\begin{align*} + 1_{10} & = 1,0 = 1,0 \cdot 10^0 = 0,1\cdot 10^1 = 0,01\cdot 10^2 \\ + & = 10,0\cdot 10^{-1} = 100,0\cdot 10^{-2} +\end{align*} + +$\Rightarrow$ jede Zahl kennt unendliche viele Darstellungen als Fließkommazahl, \dash es gibt keine eindeutige Darstellung! + + +Gegenmaßnahme: \textbf{Normierung}!\index{Normierung} + +Achtung: Es gibt verschiedene Normierungsbedingungen. Jede Normierungsbedingung sorgt für eine eindeutige Darstellung jeder Zahl, aber die gleiche Zahl hat unterschiedliche Darstellungen bei verschiedenen Normierungsbedingungen. + + +Zwei gängige Normierungsbedingungen: + +\qquad Mantisse: $m_{n-1}m_{n-2}\ldots m_{1}m_{0} , m_{-1}m_{-2}\ldots m_{-k}$ + +\begin{enumerate}[noitemsep] + \item $n=1$, \dash eine Vorkommastelle, $m_0 \neq 0$ + \item alle Vorkommastellen $m_i=0$ mit $i\geq 0$, \dash de facto keine Vorkommastelle (und nur Nachkommastellen) und $m_{-1} \neq 0$, \dash die erste Nachkommastelle ist ungleich 0. +\end{enumerate} + +\textbf{Problem} (bei allen Normierungsbedingungen): Es gibt keine normierte Darstellung der $0$! + +\textbf{Abhilfe}: Neben der Mantisse, welche (natürlich) nur aus \enquote{0} bestehen, darf, wird für \enquote{0} auch der Wert des Exponenten festgelegt (\zB auf den kleinsten mit dem Exponenten darstellbaren Wert). + + + + +\subsection{Normierung} + + +$\text{mantisse} \cdot b^{\text{exponent}}$ \newline +mantisse: Festkommazahl \newline +exponent: Ganzzahl + +Eine bestimmte \enquote{erste Stelle} muss ungleich 0 sein. Es sind zwei Varianten gebräuchlich $\Rightarrow$ entweder ist die erste Stelle vor dem Komma oder die erste Stelle nach dem Komma ungleich null, um der Mehrfachdarstellung von Zahlen zu entgehen ($1,5\cdot 10^1$ ist das gleiche wie $0,15\cdot 10^{2}$). + +\textit{Wichtig}: Die Basis ist immer gleich! Im Computer ist die Basis $b=2$, so gilt diese Basis auch für die Mantissendarstellung! + + +\subsection{Normierung zur Basis $b=2$} + +Ist die erste Ziffer $\neq 0$, ist muss die Ziffer $= 1$ sein. + +\begin{itemize}[noitemsep] + \item[$\Rightarrow$] diese Ziffer muss nicht explizit gespeichert werden. + \item[$\Rightarrow$] diese bei der Speicherung weggelassene Ziffer ist das sogenannte \enquote{\href{https://de.wikipedia.org/wiki/Gleitkommazahl\#Hidden_bit}{\textbf{Hidden Bit}}}\index{Hidden Bit}. Dadurch kann eine weitere Nachkommastelle gespeichert werden (das \enquote{Hidden Bit} ist nur bei der Basis 2 möglich, da bei dieser Basis darauf geschlossen werden kann, um welche Ziffern es sich handelt) +\end{itemize} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\textbf{Problem}: Darstellung der \enquote{0}! + +\textbf{Lösung}: Ein spezielles Bitmuster stellt die \enquote{0} dar (alle Mantissen- und Exponentenbits sind \enquote{0}). In diesem Fall muss auch das \enquote{Hidden Bit} $=0$ gesetzt werden. + +In allen anderen Fällen ist das \enquote{Hidden Bit} $=1$! + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\textbf{Beispiel} (mit 8~Bit):\newline +$1,011000_{2}$ für Zweierkomplement: $01,011000_2 \xrightarrow{\text{1er-Komplement}}$ 10,100111 $\xrightarrow{\text{+1}}$ 10,101000 + +\textbf{Aufgabe}: Komma um \zB vier Stellen nach vorne verschieben: $\Rightarrow 0,0001011000_2$ + +\textbf{Problem}: + +\begin{itemize}[noitemsep] + \item Kommaverschiebung bei negativen Zahlen bedeutet anfügen von \enquote{1} anstatt \enquote{0} + \item Normierung bedeutet: Bestimmte Stelle $=0$ statt $=1$ bei negativen Zahlen. + \item[$\Rightarrow$] 2er-Komplement wird für Mantisse (meist) nicht verwendet. +\end{itemize} + + +\textit{Stattdessen: Vorzeichen und Betrag als übliche Darstellung der Mantisse bei Gleitkommazahl.} + + +\subsection{Negative Zahlen beim Exponenten?} + +Herangehensweise beim Größenvergleich zweier Gleitkommazahlen: +\begin{enumerate}[noitemsep] + \item Vergleich der Mantissenvorzeichen + \item Vergleich der Exponenten. Beispiel: \newline + $1,111\cdot b^{-5} = 0,00001111$ ist kleiner als \newline + $1,000\cdot b^{+3} = 1010,0$ + \item stellenweiser Vergleich\newline + Problem: positives Vorzeichen: (\enquote{0}) ist größer als negatives Vorzeichen (\enquote{1}) + \item Mantissenvergleich +\end{enumerate} + + +Für Exponent: Aus potentiell negativem Exponenten wird immer ein nicht negativer Zahlenwert:\newline +\hspace*{6mm} $exp_{reell} + Bias = exp_{gespeichert}$ + +\subsubsection*{Bias}\index{Bias} +Der Bias ist eine festgelegte Konstante für die jeweilige Zahlendarstellung, welche den Betrag der kleinsten negativen Zahl angibt. + +Typischer Bias: bei 8 Bit Exponenten: 127 (\dash $-127\leq exp_{reell}\leq +128$). \newline +Achtung: Dieser Wertebereich ist gegenüber dem mit 2er-Komplement erzielbaren Wertebereich um \enquote{1} verschoben (beim 2er-Komplement reicht der Wertebereich von $-128$ bis $+127$)! + +\textbf{Beispiele} +\begin{table}[h] + \centering + \begin{tabular}{c|cc} + Bias & gespeichert & reell \\ + \midrule + 127 & $2^{0}$ & $2^{-127}$ \\ + 127 & $2^{127}$ & $2^{0}$ \\ + 127 & $2^{50}$ & $2^{-77}$ \\ + 127 & $2^{255}$ & $2^{128}$ \\ + \end{tabular} + \caption{Gleitkommazahlen - Beispiele für Bias} +\end{table} + + +\subsection{Speicherung von Gleitkommazahlen gemäß IEEE 754}\index{IEEE 754} + +\begin{table}[h] + \begin{tabular}{l|cccc|r} + & Anzahl Bit & Vorzeichen & Mantisse & Exponent & Bias \\ + \midrule + + \code{float} (bzw. Single) & 32 & 1 & 23 & 8 & 127\\ + + \code{double} & 64 & 1 & 52 & 11 & 1023 \\ + \code{short/half} (Nachtrag 200x) & 16 & 1 & 10 & 5 & 15 + \end{tabular} + \caption{IEEE 754 -- Anzahl Bits -- \acs{GKZ}} +\end{table} + + +\subsection{Wertebereich mit 32~Bit (\code{single/float} vs. Festkommazahl)} + +\subsubsection{Festkommazahl} +32~Bit mit 16~Bit Vor- und 16~Bit Nachkommastellen und keine negativen Zahlen. + +\begin{description} + \item[größte Zahl] $\Rightarrow$ alles \enquote{1}: + + \begin{align*} + \underbrace{1111111111111111}_{\text{16mal}},\underbrace{1111111111111111}_{\text{16mal}} \\ + =(2^{16}-1) + (1-2^{-16}) = 2^{16} -2^{-16} = 65536 - \frac{1}{65536} = 65535,9999847412 + \end{align*} + + \item[kleinste Zahl] 0 + \item[kleinste Zahl >0] $2^{-16} = \frac{1}{65536} \approx 0,00001$ $\Rightarrow$ gleichzeitig der kleinste unterscheidbare Abstand zweier (benachbarter) Zahlen. +\end{description} + +%%%%%%%%%%%%%%% + +\subsubsection{bei Gleitkommazahlen/Single Precision IEEE 754} + +Reihenfolge: \quad Vorzeichen \quad |\quad Exponent \quad |\quad Mantisse\newline +\enquote{Hidden Bit} = \enquote{1} als 1. Vorkommastelle + +\begin{Hinweis} + Ich bin mir sicher, dass Herr Röthig gesagt hat, dass alle Exponentenbits für die größtmögliche Zahl auf 1 gesetzt werden. Laut IEEE 754 handelt es sich aber um \acs{NaN} bzw. Unendlich, wenn alle Exponentenbits gesetzt sind. + + \textit{Siehe auch \url{https://de.wikipedia.org/wiki/IEEE_754}}. +\end{Hinweis} + + +\begin{description} + \item[größte \acs{GKZ}] + \begin{align*} + \underbrace{0}_{\text{VZ}}\underbrace{1~~1~~1~~1~~1~~1~~1~~1}_{\text{Exp.} = 255 - Bias = 128}\underbrace{11111111111\ldots 111111111}_{\text{23 mal -- Mantisse -- } 1 + (1 - 2^{-23})} + \end{align*} + + Damit: $(2-2^{-23})\cdot 2^{128} = 2^{129} - 2^{105} \approx (10^3)^{13} \cdot \frac{1}{2}-(10^3)^{10}\cdot 2^5$ (die $\frac{1}{2}$, da es nicht 130 sind). + + \item[kleinste \acs{GKZ}] wie die größte Zahl, aber mit negativem Vorzeichen. + + \item[kleinste \acs{GKZ} $> 0$] + \begin{align*} + \underbrace{0}_{\text{Vz}}\underbrace{0~~0~~0~~0~~0~~0~~0~~0}_{\text{Exp.} = 0 - \text{Bias} = -127}\underbrace{0~0~0~0~0~0~\ldots 0~0~0~0~0~0~0~1}_{\text{22 mal die 0 -- Mantisse -- } 1 + 2^{-23}} + \end{align*} + + $\Rightarrow$ $(1+2^{-23}) \cdot 2^{-127} = 2^{-127} + 2^{-150} \approx \frac{1}{\ldots}$ + + \item[nächstgrößere GKZ nach der kleinsten > 0] + \begin{align*} + \underbrace{0}_{\text{Vz}}\underbrace{0~0~0~0~0~0~0~0}_{\text{Exponent} = 0 - \text{Bias} = -127}\underbrace{000\ldots 00010}_{\text{Mantisse}} + \end{align*} + + $\Rightarrow$ $(1+2^{-22}) \cdot 2^{-127}$, \dash Abstand ist $2^{-150}$ + + \dash der kleinste Abstand zwischen zwei (benachbarten) Zahlen ist bei Gleitkommazahlen nicht konstant, sondern hängt vom jeweiligen Exponenten der Zahl ab! + +\end{description} + +Bei Überläufen ergibt sich \enquote{\acf{NaN}}, welches durch ein spezielles Bitmuster dargestellt wird. +\begin{Achtung} + Der Vergleich von NaN mit NaN ergibt \textit{immer} \code{false}! Dies ist im Standard definiert. + \begin{center} + $NaN \neq NaN$ + \end{center} +\end{Achtung} + +\subsection[Umrechnung in GKZ zur Basis 2]{Umrechnung einer Zahl in die Darstellung als Gleitkommazahl zur Basis 2 im Computer} + +$\Rightarrow 4,2\cdot 10^{-1}$ + +\begin{enumerate}[noitemsep] + \item Feststellung des Vorzeichens. Weitere Rechnung mit Betrag durchführen. + \item Schritt: Umrechnung in eine Festkommazahl + $4,2\cdot 10^{-1} = 0,42$ + \item Umrechnung der Festkommazahl in die Zielbasis 2: $0,\textcolor{red}{0110101110000}$ + + \begin{table*}[h] + \centering + \begin{tabular}{l} + $0,42\cdot 2 = \textcolor{red}{0},84$ \\ + $0,84\cdot 2 = 1,68$ \\ + $0,68\cdot 2 = 1,56$ \\ + $0,56\cdot 2 = 0,72$ \\ + $0,72\cdot 2 = 1,44$ \\ + $0,44\cdot 2 = 0,88$ \\ + $0,88\cdot 2 = 1,76$ \\ + \end{tabular} + \begin{tabular}{l} + $0,76\cdot 2 = 1,52$ \\ + $0,52\cdot 2 = 1,04$ \\ + $0,04\cdot 2 = 0,08$ \\ + $0,08\cdot 2 = 0,16$ \\ + $0,16\cdot 2 = 0,32$ \\ + $0,32\cdot 2 = 0,64$ \\ + \\ + \end{tabular} + \end{table*} + + + Solange weiter rechnen, bis die relevante Anzahl signifikanter Mantissenbits erreicht ist (die ersten nullen sind \textit{nicht} signifikant! Erst die erste \enquote{1} ist signifikant. \textit{Achtung}: Bei \enquote{Hidden Bit} eine Stelle mehr). + + \item Komma verschieben für Normierung, Exponent entsprechend setzen + $1,\underbrace{1010111000}_{\text{10 Stellen}}(0) \cdot 2^{-2}$ + + \item Exponent plus Bias: $-2 + 15 = 13$ + \item Exponent ins Binärsystem umrechnen und mit führenden Nullen auffüllen + + $13_{10} = 1101_2 (= 1+4+8) = 01101_2$ + \item Fließkommazahl als Bitmuster + \begin{align*} + \underbrace{0}_{\text{Vz}}\underbrace{01101}_{\text{Exponent}}\underbrace{1010111000}_{\text{Mantisse}} + \end{align*} +\end{enumerate} + +\begin{Hinweis} + Für die Klausur müssen nur die Gesamtanzahl der Bits auswendig gelernt werden (\texttt{float}, \texttt{double}, \texttt{half}). Der Rest (also Anzahl Bits der Mantisse,\ldots) muss \textit{nicht} auswendig gelernt werden! +\end{Hinweis} + + + +\section{Weitere Zahlencodierungen} + +Zahlencodierung wird unterschieden in: + +\begin{description} + \item[Wertcodierung] Wert der Zahl als ganzes wird betrachtet und codiert. + \item[Zifferncodierung] Zahl wird Ziffernweise codiert \newline + Beispiel: + \begin{itemize}[noitemsep] + \item direkte Umrechnung von 2er ins 16er-System (oder ähnliches). + \item Zahlendarstellung im Text (als Ziffernfolge) + \item \acf{BCD} \newline + $\Rightarrow$ binär (mit 4 Bit) kodierte \enquote{Dezimalstellen} + \end{itemize} +\end{description} + +\subsection{\acf{BCD}}\index{BCD} + +\begin{table}[h] + \centering + \begin{tabular}{c|c} + 4~Bit & Dezimalziffer \\ + \midrule + 0000 & 0 \\ + 0001 &1 \\ + 0010 &2 \\ + 0011 & 3\\ + 0100 & 4\\ + 0101 & 5\\ + \end{tabular} + \begin{tabular}{c|c} + 4~Bit & Dezimalziffer \\ + \midrule + 0110 & 6\\ + 0111 & 7\\ + 1000 & 8\\ + 1001 & 9\\ + 1010 & \\ + & \\ + \end{tabular} + \begin{tabular}{c|c} + 4~Bit & Dezimalziffer \\ + \midrule + 1011 & \\ + 1100 & \\ + 1101 & \\ + 1110 & \\ + 1111 & \\ + & \\ + \end{tabular} + \caption{\acs{BCD} zu Dezimalziffer} +\end{table} + +Die übrigen Bitmuster sind individuell zugeordnet (das Vorzeichen \enquote{+/-}, das Komma \enquote{~,~}, der Dezimalpunkt \enquote{~.~})! + +$\Rightarrow$ Damit \textit{kann} mit einem Byte der Wertebereich von 0 bis 99 abgedeckt werden. +Zum Vergleich: +\begin{itemize}[noitemsep] + \item Textcodierung mit einem Byte:\qquad Wertebereich 0 bis 9 + \item Binärcodierung mit einem Byte:\qquad 0 bis 255 +\end{itemize} + +\textbf{Reales Beispiel}: 6502-CPU (Apple \RNum{2}, Commodore C64) konnte in Maschinensprache mit BCD-Zahlen rechnen! + + + + + + diff --git a/Kapitel/05_Signale.tex b/Kapitel/05_Signale.tex new file mode 100644 index 0000000..613e790 --- /dev/null +++ b/Kapitel/05_Signale.tex @@ -0,0 +1,480 @@ + +\chapter{Einschrittiger Code} + +\begin{description} + \item[Einschrittiger Code] Zahlencode, bei dem sich zwischen zwei jeweils aufeinander folgenden Werten nur genau eine Stelle ändert! Beispiel: Gray-Code\index{Einschrittiger Code} +\end{description} + +\section{Gray-Code}\index{Gray-Code} + +Der Gray-Code gehört weder zu den Stellenwertsystemen noch zu den Abzählsystemen! + +\begin{table}[h] + \centering + \begin{tabular}{c|c} + Gray-Code & Dezimalsystem \\ + \midrule + 0\textcolor{blue}{000} & 0 \\ + 0001 & 1 \\ + 0011 & 2 \\ + 0010 & 3 \\ + 0\textcolor{green}{110} & 4 \\ + 0111 & 5 \\ + 0101 & 6 \\ + 0\textcolor{red}{100} & 7 \\ + \end{tabular} + \begin{tabular}{c|c} + Gray-Code & Dezimalsystem \\ + \midrule + 1\textcolor{red}{100} & 8 \\ + 1101 & 9 \\ + 1111 & 10 \\ + 1\textcolor{green}{110} & 11 \\ + 1010 & 12 \\ + 1011 & 13 \\ + 1001 & 14 \\ + 1\textcolor{blue}{000} & 15 \\ + \end{tabular} + \caption{4-stelliger Gray-Code} + \label{tbl:gray_code} +\end{table} + +Es gibt zwei Varianten zur Bildung: + +\begin{enumerate}[noitemsep] + \item Die Position \enquote{0} wird durch eine Folge von \enquote{0}-Symbolen repräsentiert und die jeweils nächste Position ergibt sich, indem wir die nächste (\enquote{rechteste}) Stelle ändern, bei welcher sich kein bislang verwendetes Bitmuster ergibt. + \item Erweiterung eines n-stelligen Gray-Code auf $n+1$ Stellen, indem bei den ersten $2^n$ Positionen eine \enquote{0} vorangestellt wird und bei den neuen $2^n$ Positionen die bisherigen Bitmuster in umgekehrter Reihenfolge mit vorangestellter \enquote{1} verwendet werden (siehe \autoref{tbl:gray_code}). +\end{enumerate} + +\textbf{Anwendung einschrittiger Codes (Gray-Code):} \newline +Immer dann, wenn bei fortlaufenden Zahlenwerten (und deren paralleler Übertragung) falsche Zwischenwerte aufgrund unterschiedlicher Verzögerung der einzelnen Stellen verhindert werden soll, wird Gray-Code verwendet. + +\textbf{Nachteil von Gray-Code}:\newline +Die Wertebestimmung ist kompliziert und es gibt keine praktisch sinnvoll anwendbare Rechenregeln. + + +\chapter{Signalcodierung} + +Bei Signalcodierung geht es \textit{nicht} darum, \textit{was} codiert wird, sondern darum, \textit{wie} codiert wird! Und zwar als Signal, \dash als eine physisch messbare Größe. + +Mögliche Signale: +\begin{itemize}[noitemsep] + \item Spannung ($V$) + \item Stromstärke ($A$) + \item Licht + \item Schall + \item elektromagnetische Wellen + \item Druck (Pneumatik, Hydraulik) + \item \ldots +\end{itemize} + +Insbesondere elektrische Signale, also Spannung und Stromstärke sind für uns interessant. + +\section{Elektrische Signale} +\subsection{Spannung} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=0.9] + \draw[ultra thick] + (0,1.5) -- (0,2.5) -- (5,2.5) -- (5,1.5) node[below]{Empfänger}; + \draw[ultra thick] + (0,1) -- (0,0) -- (5,0) -- (5,1); + \draw + (0,1.5) node[below]{Sender}; + \path[thick, ->] + (1,0) edge (1,2.5); + \draw (1,1.25) node[right]{5V}; + \end{tikzpicture} + \caption{Elektrische Signale zwischen Sender und Empfänger} + \label{fig:strom_spannung} +\end{figure} + +\begin{figure}[h] + \begin{align} + U&=R\cdot I \\ + \label{eq:URI} + P&=U\cdot I \\ + Q&=C\cdot U + \end{align}\vspace{-7mm} + \caption{Wichtige Formeln für elektrische Signale} +\end{figure} + +In \autoref{fig:strom_spannung} beträgt die Spannung zwischen Sender und Empfänger $5V$. Tatsächlich liegt sie aber unter $5V$, da die Leitung selbst ein Widerstand $R$ ist und aus \autoref{eq:URI} hervorgeht, dass diese für die Berechnung der Spannung ausschlaggebend ist, genauso wie der Strom $I$. + +Außerdem kann es zu Spannungsänderungen durch elektromagnetische Störstrahlung kommen! + +\textit{Doch welche Spannung wird genutzt und welche Werte bedeuten was?}\newline +Hierfür wird \zB der \acs{TTL} Pegel genutzt\footnote{siehe \url{https://de.wikipedia.org/wiki/Transistor-Transistor-Logik}} (eingeführt Anfang der 1960er Jahre von Texas Instruments, um standardisierte Pegelwerte und interoperable Bausteine zu ermöglichen).\newline +\hspace*{5mm}$0 \hat{=} 0V$ \quad und \quad $1 \hat{=} 5V$ + +Innerhalb des Rechners sind heute eher niedrigere Spannungshübe üblich (\zB $3,3V$, $1,6V$), jedoch sind diese störanfälliger gegen Störeinstrahlung! Der Vorteil ist ein schnelleres Erreichen einer Spannung nahe der Nennspannung (kapazitive Wirkung).\newline +Nachteil größerer Spannungen ist zudem ein höherer Energieverbrauch und damit auch eine höhere Wärmeentwicklung und eine niedrigere Lebenserwartung der Bauteile. + +\subsection{Strom} + +Dem gegenüber steht der Strom: Es gibt keine Anfälligkeit für Störungen oder Spannungsabfälle durch hohe Leitungswiderstände $\Rightarrow$ beim Empfänger fließt immer der gleiche Strom wie beim Sender (denn in einem geschlossenen Stromkreis ist der Strom $I$ immer gleich). + +Nachteil: Es gibt einen viel höheren Energieverbrauch (um den Strom fließen lassen zu können, auch bei hohem Leitungswiderstand ist eine sehr hohe Spannung notwendig, \ldots). + +$\Rightarrow$ In Rechnern sind deshalb Spannungen die üblichen Signale (heutzutage kleine Spannungen). + + + +\section{Übertragung von mehr als 1~Bit} + +\begin{itemize}[noitemsep] + \item gleichzeitig/parallel: \zB mehrere Leitungen (Raum-Multiplex) + \item sequenziell/nacheinander: \zB getaktete Übertragung. Es kann eine Taktleitung geben, die die Dauer/den Takt für die Übertragung vorgibt (siehe \autoref{fig:takt}) +\end{itemize} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=0.9] + \draw[ultra thick] + node[left]{Takt} (0,0)--(1,0)--(1,1)--(2,1)--(2,0)--(3,0) + --(3,1)--(4,1)--(4,0)--(5,0)--(5,1)--(6,1) + --(6,0)--(7,0)--(7,1)--(8,1)--(8,0)--(9,0); + \end{tikzpicture} + + \begin{tikzpicture}[scale=0.9] + \draw[ultra thick] + node[left]{Daten} (0,0)--(1,0)--(1,1)--(2,1) + --(3,1)--(4,1)--(4,0)--(5,0)--(5,1)--(6,1) + --(6,0)--(7,0)--(8,0)--(9,0); + \draw + (1.25,0.5) node[right]{1} + (2.25,0.5) node[right]{1} + (3.25,0.5) node[right]{1} + (4.25,0.5) node[right]{0} + (5.25,0.5) node[right]{1} + (6.25,0.5) node[right]{0} + (7.25,0.5) node[right]{0} + (8.25,0.5) node[right]{0}; + \end{tikzpicture} + \caption{Getaktete Signale} + \label{fig:takt} +\end{figure} + +\section{Getaktete Übertragung} + +Es werden vier Verfahren zur getakteten Übertragung aufgezeigt. Für jedes Verfahren werden folgende vier Eigenschaften beschrieben: + +\begin{description} + \item[a) \acf{TRG}]\footnote{siehe auch \url{https://de.wikipedia.org/wiki/Taktr\%C3\%BCckgewinnung}}\index{Taktrückgewinnung}\hfill\newline + Möglichkeit, beim Empfänger den Takt des Senders nur aus den empfangenen Daten zu resynchronisieren. Grundsätzlich ist dies immer dann möglich, wenn ein Pegelwechsel zu einem vorgegebenen Zeitpunkt stattfindet. + + + \item[b) \acf{BBB}]\index{Bandbreitenbedarf} \hfill\newline + \textit{Aussage: Jeder Übertragungskanal ist bandbreitenbeschränkt.} + + \textbf{Shannon/Nyquist-Theorem}\index{Shannon-Theorem}\newline + Schrittrate $=$ doppelte Bandbreite (bei Datenübertragung/bei Frequenzabtastung). + + Der \acf{BBB} gibt an, welche Bandbreite\footnote{siehe auch \url{https://de.wikipedia.org/wiki/Bandbreite}} bei einer bestimmten Schrittrate und Signalcodierungsverfahren auf dem Übertragungskanal benötigt wird (zu ersehen aus der höchsten Frequenz auf der Leitung bei einem beliebigen Bitmuster). + + + \item[c) \acf{GSF}]\index{Gleichstromfreiheit} \hfill\newline + Im Mittel sollen \enquote{0V} auf der Leitung liegen, um eine Potentialverschiebung beim Empfänger zu verhindern (Pseudoargument für \acs{GSF}: keine Energieübertragung vom Sender zum Empfänger). + + Grundvoraussetzung für \acs{GSF} sind (bei fast jedem Verfahren) symmetrische Pegel, \zB $5V\hat{=}1$ und $-5V\hat{=}0$. + + + \item[d) \acf{SSH}]\index{Störsicherheit} \hfill\newline + Unanfälligkeit des Verfahrens gegenüber Spannungsänderungen auf der Leitung, welche von außen induziert werden $\Rightarrow$ direkt abhängig von der Anzahl zu unterscheidender Spannungspegel. +\end{description} + + +\subsection{1. \acf{NRZ}}\index{NRZ} + +Während der gesamten Takt-/Schritt-/Bitzeit wird der Pegel angelegt, welcher dem zu übertragenden Bit (\enquote{0} oder \enquote{1}) entspricht. + +\subsubsection{a) \acl{TRG} bei \acs{NRZ}} + +Immer bei \enquote{10}- oder \enquote{01}-Folgen im Datenstrom \newline +Keine \acs{TRG} bei \acs{NRZ}, falls über längere Zeit nur \enquote{0} oder nur \enquote{1} übertragen werden. + +Abhilfe, um TRG bei NRZ immer vor einer gewissen Anzahl von Bits zu ermöglichen: + +\textit{\uline{1. Startbitsequenz}} \zB \enquote{01} vor jedem Byte/ jeder 8-Bit-Folge + +Frage: \textit{Wie genau müssen dann die Uhren laufen?}\newline +Die Uhren dürfen während der gesamten Sequenz (Startbitsequenz + Daten) um maximal $\frac{1}{2}$ Schrittzeit voneinander abweichen. + +Jeder der beiden (Sender \& Empfänger) darf jeweils nur um $\frac{1}{4}$ Schrittzeit vom Normaltakt abweichen! + +$Abweichung_{erlaubt_{max}} = \frac{\frac{1}{4} Schrittzeit}{(2+8) Schrittzeit} = \frac{\frac{1}{4}}{10} = 2,5\%$ + +Falls die Uhren ungenauer sind $\Rightarrow$ häufigeres Senden der Startbitsequenz. + +Nachteil: kleinere Nettodatenrate (= Verhältnis Nutzdaten zu Schritten). + +Schrittrate = Baudrate\footnote{siehe \url{https://de.wikipedia.org/wiki/Baud}} \index{Baudrate} \newline +Nutzrate = Bitrate\index{Nutzrate} + +$\text{Bitrate} = \frac{\text{Anzahl Nutzdatenbit}}{\text{Anzahl Schritte}} \cdot \text{Baudrate} = \frac{8}{2+8} = 80\% \cdot \text{Baudrate}$\index{Bitrate} + + +\textit{\uline{2. Bitstuffing}} (\enquote{Bitstopfen})\footnote{siehe \url{https://de.wikipedia.org/wiki/Bitstopfen}}]\index{Bitstuffing}\hfill\newline + Nach jeweils $n$ ($n$ ist eine feste, vorgegebene Zahl, \zB $n=4$) gleichen Nutzdatenbits wird ein Bit mit dem entgegengesetzten Wert eingefügt (\enquote{eingestopft}). + +0010000\uline{1}0011101111\uline{0}1111\uline{0}0000\uline{1}11 \quad $\Rightarrow$ \quad Die unterstrichenen Zahlen werden \enquote{eingestopft}. + +Beim Empfänger wird nach $n$ gleichen Bits das nächste empfangene Bit als Stopfbit aus dem Nutzdatenstrom entfernt, sofern es den entgegengesetzten Wert hat.\newline +Bei gleichem Wert $\Rightarrow$ Fehlermeldung! + +Vorteil: In jedem Fall bessere Nettodatenrate als bei Startbitsequenz: Im Besten Fall Nettodatenrate = Schrittrate. Im schlechtesten Fall Nettodatenrate = $\frac{n}{n+1}\cdot Schrittrate$ + +Nachteile: +\begin{itemize}[noitemsep] + \item komplexes Verfahren und damit fehleranfällig + \item keine konstante Nutzdatenrate +\end{itemize} + +Bitstuffing wird nicht nur verwendet, um TRG zu ermöglichen, sondern auch, um bestimmte Bitmuster in den Nutzdaten auszuschließen $\Rightarrow$ \enquote{Frame Delimiter} bei Ethernet. + + +\subsubsection{b) \acl{BBB} bei \acs{NRZ}} + +Halbe Schrittrate, also minimal (H. Shannan/Nyquist) -- entspricht der Frequenz beim Bitmuster \enquote{1010101010\ldots}. + + +\subsubsection{c) \acl{GSF} bei \acs{NRZ}} + +Die \acl{GSF} ist bei \acs{NRZ} erfüllt, falls \#\enquote{1} $=$ \#\enquote{0} ist, bzw. falls \enquote{1} und \enquote{0} im Datenstrom gleichverteilt sind und es symmetrische Pegel sind! $\Rightarrow$ Davon können wir oft nicht ausgehen! + +\begin{Hinweis} + Bei Verschlüsselung kann davon ausgegangen werden, dass Nullen und Einsen gleich verteilt sind, da dadurch keine Häufigkeitsanalyse möglich ist! Hier wäre eine \acl{GSF} möglich. +\end{Hinweis} + + +\subsubsection{d) \acl{SSH} bei \acs{NRZ}} + +Die \acl{SSH} ist bei \acs{NRZ} optimal, da nur zwei Spannungen unterschieden können werden müssen. + + +\subsection{2. \acf{RZ}} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=0.9] + \draw + (0.25,2) node[right]{1} + (1.25,2) node[right]{0} + (2.25,2) node[right]{1} + (3.25,2) node[right]{0} + (4.25,2) node[right]{1} + (5.25,2) node[right]{1} + (6.25,2) node[right]{1} + (7.25,2) node[right]{0} + (8.25,2) node[right]{0} + (9.25,2) node[right]{0} + (10.25,2) node[right]{0} + (11.25,2) node[right]{1} + (12.25,2) node[right]{1}; + + \draw[ultra thick] + (0,0.5) node[left]{NRZ} (0,1)--(1,1)--(1,0)--(2,0)--(2,1)--(3,1)--(3,0)-- + (4,0)--(4,1)--(5,1)--(7,1)--(7,0)--(11,0)--(11,1)--(13,1)--(13,0); + + \draw[ultra thick] + (0,-1.5) node[left]{RZ} (0,-1)--(0.5,-1)--(0.5,-2)--(2,-2)--(2,-1)-- + (2.5,-1)--(2.5,-2)--(4,-2)--(4,-1)--(4.5,-1)--(4.5,-2)--(5,-2)--(5,-1)-- + (5.5,-1)--(5.5,-2)--(6,-2)--(6,-1)--(6.5,-1)--(6.5,-2)--(11,-2)--(11,-1)-- + (11.5,-1)--(11.5,-2)--(12,-2)--(12,-1)--(12.5,-1)--(12.5,-2)--(13,-2); + + \path[thick,red!80!black,<->] + (2,0.7) edge (3,0.7) + (1,0.3) edge (3,0.3); + + \draw[red!80!black] (2.5,1.1) node[above] {Schrittzeit} + (2,-0.6) node[above] {Periodendauer}; + + \path[thick,red!80!black,<->] + (4,-1.3) edge (5,-1.3) + (4,-1.7) edge (5,-1.7); + + \draw[red!80!black] (4.5,-1) node[above] {Schrittzeit} + (4.5,-2.6) node[above] {Periodendauer}; + \end{tikzpicture} + \caption{NRZ und RZ im Vergleich} + \label{fig:nrz_rz_vergleich} +\end{figure} + +Im Unterschied zu \acs{NRZ} wird bei \acs{RZ} jede Schrittzeit in zwei Hälften eingeteilt. Während der ersten Hälfte wird derselbe Pegel wie bei \acs{NRZ} übertragen, während der zweiten Hälfte wird jedoch immer der \enquote{0}-Pegel übertragen! Dies wird in \autoref{fig:nrz_rz_vergleich} dargestellt. + + +\subsubsection{a) \acl{TRG} bei \acs{RZ}} + +\acl{TRG} gibt es bei jeder \enquote{1}. Nur bei nur \enquote{0} gibt es keine \acs{TRG}. + +\textit{\uline{1. Startbitsequenz}}\newline +Ein einfaches Startbit \enquote{1} reicht aus! + +\textit{\uline{2. Bitstuffing}} \newline +Stopfbit nur nach $n$ \enquote{0}-Bit notwendig! +$\Rightarrow$ Jeweils nur noch ungefähr halber Overhead gegenüber Einsatz bei \acs{NRZ}! + + +\subsubsection{b) \acl{BBB} bei \acs{RZ}} +Ganze Schrittrate, also doppelt so viel wie nötig (entspricht der Frequenz beim Bitmuster \enquote{1111111\ldots}). \newline +\autoref{fig:nrz_rz_vergleich} zeigt beispielhaft die unterschiedliche Schrittzeit und Periodendauer zwischen \acs{NRZ} und \acs{RZ}. + + +\subsubsection{c) \acl{GSF} bei \acs{RZ}} + +\acl{GSF} bei \acs{RZ}: +\begin{itemize}[noitemsep] + \item bei symmetrischem Pegel: nur \enquote{1} + \item bei \enquote{single-ended}-Pegeln: nur \enquote{0} + \item bei \#\enquote{1} $=$ \#\enquote{0}: andere Pegel notwenig, \zB $1\hat{=}7,5V$, $0\hat{=}-2,5V$ +\end{itemize} + +De facto nie \acs{GSF} bei \acs{RZ}. + +\subsubsection{d) \acl{SSH} bei \acs{RZ}} + +Die \acl{SSH} ist bei \acs{RZ} optimal, da nur zwei Spannungen unterschieden können werden müssen. + + +\subsection{3. \acf{AMI}}\index{Alternate Mark Inversion} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=0.9] + \draw + (0.25,0.5) node[right]{0} + (1.25,0.5) node[right]{1} + (2.25,0.5) node[right]{0} + (3.25,-0.5) node[right]{1} + (4.25,0.5) node[right]{0} + (5.25,0.5) node[right]{1} + (6.25,-0.5) node[right]{1} + (7.25,0.5) node[right]{1} + (8.25,0.5) node[right]{0} + (9.25,0.5) node[right]{0} + (10.25,0.5) node[right]{0}; + + \draw[ultra thick] + (0,0) node[left]{AMI} (0,0)--(1,0)--(1,1)--(2,1)--(2,0)--(3,0)--(3,-1)-- + (4,-1)--(4,0)--(5,0)--(5,1)--(6,1)--(6,-1)--(7,-1)--(7,1)--(8,1)--(8,0)-- + (11,0); + + \end{tikzpicture} + \caption{\acl{AMI}} + \label{fig:ami} +\end{figure} + +Ähnlich wie \acs{NRZ} mit \enquote{single-ended} Pegeln, aber Einsen (\enquote{1}) werden abwechselnd mit jeweils entgegengesetzten symmetrischen Regeln (\zB $+5V$ und $-5V$) übertragen. \autoref{fig:ami} zeigt dies. + + +\subsubsection{a) \acl{TRG} bei \acs{AMI}} +Bei jeder \enquote{1} (wie bei \acs{RZ}, entsprechend Startbit bzw. Bitstuffing). + + +\subsubsection{b) \acl{BBB} bei \acs{AMI}} +Halbe Schrittrate, also minimal (laut H. Shannan/Nyquist). + +\subsubsection{c) \acl{GSF} bei \acs{AMI}} +Nach jeder zweiten \enquote{1} (also bei einer geraden Anzahl an Einsen). $\Rightarrow$ Der Gleichstrom-Anteil ist bei entsprechend großer Anzahl Bit vernachlässigbar). + +\subsubsection{d) \acl{SSH} bei \acs{AMI}} +Die \acl{SSH} ist bei \acs{AMI} schlecht, da für ein Bit drei Spannungen notwendig sind. + + +\subsection{4. Manchester-Codierung} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=0.9] + \path[black,ultra thick,->] + (0,0) node[left]{Manchester} + + (0,0) edge (0.5,1) + (1,1) edge (1.5,0) + (2,0) edge (2.5,1) + (3,1) edge (3.5,0) + (4,0) edge (4.5,1) + (5,0) edge (5.5,1) + (6,1) edge (6.5,0) + (7,1) edge (7.5,0); + + \path[blue!50!black,thick,->] + (4.75,1) edge (4.75,0) + (6.75,0) edge (6.75,1); + + \end{tikzpicture} + \caption{Manchester-Codierung} + \label{fig:manchester} +\end{figure} + +Datenbit wird über einen Pegelwechsel zur Mitte der Schrittzeit definiert. + +Steigende Flanke $\hat{=}$ \enquote{1}, Fallende Flanke $\hat{=}$ \enquote{0} (kann auch umgekehrt definiert sein. \textit{Hinweis:} Flanke $=$ Pegelwechsel) + + +Gegebenenfalls muss ein weiterer Pegelwechsel zu Beginn der Schrittzeit eingefügt werden (siehe blaue Pfeile in \autoref{fig:manchester}). + +\subsubsection{a) \acl{TRG} bei Manchester} + +Immer (bei allen übertragenen Daten) in jeder Schrittzeit möglich (aber: Abweichung darf insgesamt nur $\frac{1}{4}$~Schrittzeit betragen). + + +\subsubsection{b) \acl{BBB} bei Manchester} + +Entspricht der Schrittrate und damit doppelt so viel wie nötig (Frequenz tritt bei \enquote{111111\ldots} und \enquote{00000\ldots} auf). + + +\subsubsection{c) \acl{GSF} bei Manchester} + +Immer (bei symmetrischen Pegeln), da sich die Pegel in der ersten und zweiten Hälfte jeder Schrittzeit ausgleichen. + + +\subsubsection{d) \acl{SSH} bei Manchester} + +Optimal, da nur zwei Pegel verwendet werden. + +\bigskip + +\begin{table}[ht] + \subsection{Vergleich der Signalcodierungsverfahren} + + \centering + \begin{tabular}{p{20mm}|p{30mm}|p{49mm}|p{19mm}|p{22mm}} + & \acs{TRG} + & \acs{GSF} (Grundvoraussetzung: symmetrische Pegel) + & \acs{BBB} + & \acs{SSH} + \\ \midrule + + \acs{NRZ} + & \textcircled{--} \textcircled{--} bei jeder \enquote{01}- oder \enquote{10}-Folge + & \textcircled{--} bei $\#1=\#0$ ($1$ und $0$ gleichverteilt) + & \textcircled{+} halbe Schrittrate + & \textcircled{+} optimal (2 Pegel) + \\ \midrule + + \acs{RZ} + & \textcircled{--} bei jeder \enquote{1} + & \textcircled{--}\textcircled{--} nur 1 (bei symmetrischen Pegeln) bzw. nur 0 (bei single-ended Pegel) bzw. komischen Pegelverhältnis (bei $\#1=\#0$) + & \textcircled{--} ganze Schrittrate + & \textcircled{+} optimal (2 Pegel) + \\ \midrule + + \acs{AMI} + & \textcircled{--} bei jeder \enquote{1} + & \textcircled{+} bei jeder zweiten $1$, also praktisch immer + & \textcircled{+} halbe Schrittrate + & \textcircled{--} schlechter (3 Pegel) + \\ \midrule + + Manchester + & \textcircled{+} immer + & \textcircled{+} \textcircled{+} wirklich immer + & \textcircled{--} ganze Schrittrate + & \textcircled{+} optimal (2 Pegel) + \\ + \end{tabular} + \caption{Vergleich der Signalcodierungsverfahren} +\end{table} + diff --git a/Kapitel/06_Boolesche_Algebra.tex b/Kapitel/06_Boolesche_Algebra.tex new file mode 100644 index 0000000..e146a55 --- /dev/null +++ b/Kapitel/06_Boolesche_Algebra.tex @@ -0,0 +1,2136 @@ +\chapter{Boolesche Algebra} + +\textit{George Boole (1815-1864)} + +\begin{itemize}[noitemsep]\index{Boolesche Algebra} + \item eine Art Rechensystem mit Werten, Operatoren und Regeln + \item die Wertemenge ist beschränkt $\Rightarrow$ es gibt eine endliche Anzahl von Werten + \item es gibt zwei zweistellige Operatoren ($\oplus$, $\otimes$) für die die Abgeschlossheit gilt. + + \hspace*{8mm}$a,b\in \mathbb{W}$ \qquad + $a\otimes b\in \mathbb{W}$ \qquad + $a\oplus b\in \mathbb{W}$ + \item Es müssen die vier Huntingston'schen Axiome gelten: + +\end{itemize} + +\section{Huntington'sche Axiome}\index{Huntington'sche Axiome} +\columnratio{0.5} +\begin{paracol}{2} + \begin{description} + \item[H1: Kommutativgesetz]\hfill\newline + $a\otimes b = b\otimes a$\newline + $a\oplus b = b\oplus a$ + + \item[H2: Distributivgesetz]\hfill\newline + $a\oplus (b\otimes c)=(a\oplus b)\otimes(a\oplus c)$\newline + $a\otimes (b\oplus c)=(a\otimes b)\oplus (a\otimes c)$ + + \item[H3: Neutrales Element]\hfill\newline + Es existieren zwei Elemente $e,n\in\mathbb{W}$ mit\newline + $a\oplus n=a$\newline + $a\otimes e=a$ + \end{description} + \switchcolumn + \begin{description} + \item[H4: Inverses Element]\hfill\newline + Für alle $a\in\mathbb{W}$ gibt es $\overline{a}\in\mathbb{W}$ mit\newline + $a\otimes\overline{a}=n$\newline + $a\oplus\overline{a}=e$ + + \textit{Hinweis: Verknüpfung mit dem inversen Element ergibt das + neutrale Element der jeweils anderen Verknüpfung.} + \end{description} +\end{paracol} + +\section{Schaltalgebra}\index{Schaltalgebra} +\textbf{Definition}: Schaltalgebra ist ein Spezialfall der Booleschen Algebra mit 2 Werten in der Wertemenge. + +\begin{tabular}{ll} + Wertemenge:& $\{1,0\}=\{true, false\}=\{wahr, falsch\}=\{ein, aus\}$\\ + Operatoren:& $\wedge, \vee$, $UND, ODER$ \\ + neutrale Elemente:& $n~\hat{=}~0$, $e~\hat{=}~1$ (\textbf{N}ull, \textbf{E}ins)\\ + Inverses Element:& $a=\overline{a}$ +\end{tabular} +\bigskip + +\textit{Warum heißt die Schaltalgebra Schaltalgebra?} + +Die beiden Operatoren lassen sich einfach mit elektrischen Schaltkreisen und einfachen Ein-/Ausschaltern nachbilden. In \autoref{fig:und_verknuepfung} und \autoref{fig:oder_verknuepfung} auf Seite~\pageref{fig:oder_verknuepfung} wird dies anhand einer \texttt{UND}- und einer \texttt{ODER}-Verknüpfung dargestellt. + +\begin{figure}[ht] + \centering + \begin{circuitikz}[font=\sffamily] + \draw % l steht für label + (0,0) to [battery1] (0,2) to [switch, l=a] (2.5,2) to [switch,l=b] (5,2) to [lamp] (5,0) + (0,0) -- (5,0) + ; + \node[] at (2.5,1) {$a\wedge b$}; + %\node [label=0:$-$] at ([xshift=12.5pt]batt.west) {}; + \end{circuitikz} + \caption{\texttt{UND}-Verknüpfung} + \label{fig:und_verknuepfung} +\end{figure} + +\begin{figure}[ht] + \centering + \begin{circuitikz}[font=\sffamily] + \draw % l steht für label + (0,0) to[battery1] (0,2) -- (1,2) to[switch,l=a, *-*] (4,2) -- (5,2) -- (5,0) -- (0,0) + (1,2) -- (1,3) + to[switch,l=b] (4,3) -- (4,2) + ; + \node[] at (2.5,1) {$a\vee b$}; + %\node [label=0:$-$] at ([xshift=12.5pt]batt.west) {}; + \end{circuitikz} + \caption{\texttt{ODER}-Verknüpfung} + \label{fig:oder_verknuepfung} +\end{figure} + +Zudem gibt es die Darstellung mit einer Wahrheitstabelle/Funktionstabelle/Wertetabelle. In \autoref{tbl:werte_und_oder} auf Seite~\pageref{tbl:werte_und_oder} werden hierzu die \texttt{UND}- und die \texttt{ODER}-Verknüpfung dargestellt. + +\begin{table}[ht] + \centering + \begin{tabular}{c|c|c} + b & a & $a\wedge b$ \\ + \midrule + 0 & 0 & 0\\ + 0 & 1 & 0\\ + 1 & 0 & 0\\ + 1 & 1 & 1\\ + \end{tabular} + \hspace*{5mm} + \begin{tabular}{c|c|c} + b & a & $a\vee b$ \\ + \midrule + 0 & 0 & 0\\ + 0 & 1 & 1\\ + 1 & 0 & 1\\ + 1 & 1 & 1\\ + \end{tabular} + \caption{Wertetabelle für die \texttt{UND} und \texttt{ODER} Verknüpfung in der Schaltalgebra} + \label{tbl:werte_und_oder} +\end{table} + + + +\begin{Tipp}[frametitle={Tipp: Wie am einfachsten $\vee$ und $\wedge$ merken?}] + Am einfachsten merkt man sich $\vee$ und $\wedge$ durch folgende Eselsbrücke: + + \textbf{\uline{U}}ND ist nach \textbf{\uline{u}}nten geöffnet: $\wedge$\newline + \textbf{\uline{O}}DER ist nach \textbf{\uline{o}}ben geöffnet: $\vee$ +\end{Tipp} + +%\newpage + +\subsection{Huntington'sche Axiome in der Schaltalgebra}\index{Huntington'sche Axiome -- Schaltalgebra} + +\columnratio{0.5} +\begin{paracol}{2} + \begin{description} + \item[H1: Kommutativgesetz]\label{H1}\hfill\newline + $\forall a,b\in\mathbb{W}$\newline + $a\wedge b = b\wedge a$ + $a\vee b = b\vee a$ + + \item[H2: Distributivgesetz]\label{H2}\hfill\newline + $a\wedge(b\vee c)=(a\wedge b)\vee (a\wedge c)$ \newline + $a\vee(b\wedge c)=(a\vee b)\wedge (a\vee c)$ + + \item[H3: Neutrales Element]\label{H3}\hfill\newline + $a\wedge 1 = a$\newline + $a\vee 0 = a$ + + \item[H4: Inverses Element]\label{H4}\hfill\newline + $\forall a \exists\overline{a}$ mit\newline + $a\wedge \overline{a}=0$\newline + $a\vee \overline{a}=1$ $\Rightarrow$ $\overline{1}=0$, $\overline{0}=1$ + + \end{description} + + \switchcolumn + weitere (abgeleitete) Gesetze: + + \begin{description} + \item[Assoziativgesetz] \hfill\newline + $a\wedge(b\wedge c) = (a\wedge b)\wedge c$\newline + $a\vee(b\vee c) = (a\vee b)\vee c$ + + \item[Idempotenzgesetz] \hfill\newline + $a\wedge a = a$ \newline + $a\vee a = a$ + + \item[Absorptionsgesetz] \hfill\newline + $a\wedge (a\vee b) = a$ \newline + $a\vee (a\wedge b) = a$ + + \item[De-Morgan-Gesetz] \hfill\newline + $\overline{a\wedge b} = \overline{a}\vee\overline{b}$\newline + $\overline{a\vee b} = \overline{a}\wedge\overline{b}$ + \end{description} + +\end{paracol} +\subsection{Beweis von Gesetzen} +Es werden drei Varianten zum Beweisen von Gesetzen vorgestellt: + +\subsubsection{1. Ableitung/Umformung} +Mit Hilfe der Huntington'schen Axiome (und ggf. weiterer \textit{bereits bewiesene} Gesetze) kann eine Verknüpfung umgeformt und dadurch bewiesen werden. Beispiel: +\begin{align*} + a &\overset{!}{=} a\wedge a\\ + a&\overset{H3}{=}a\wedge 1 \\ + &\overset{H4}{=}a\wedge(a\vee\overline{a})\\ + &\overset{H2}{=}(a\wedge a)\vee(a\wedge\overline{a})\\ + &\overset{H4}{=}(a\wedge a)\vee 0 \\ + &\overset{H3}{=}a\wedge a \text{ \textcolor{green}{\cmark}} +\end{align*} + + +\subsubsection{2. Wertetabelle erstellen und ablesen} + +Als Beispiel wird das Absorptionsgesetz bewiesen, indem eine Wertetabelle erstellt wird. +\begin{align*} + a\wedge(a\vee b)\overset{!}{=}a +\end{align*} + +\begin{center} + \begin{tabular}{c|c|c|c|cl} + b & a & $a\vee b$& $a\wedge(a\vee b)$& a&\\ + \midrule + 0 & 0 & 0 & 0 & 0 &\textcolor{green}{\cmark}\\ + 0 & 1 & 1 & 1 & 1 &\textcolor{green}{\cmark}\\ + 1 & 0 & 1 & 0 & 0 &\textcolor{green}{\cmark}\\ + 1 & 1 & 1 & 1 & 1 &\textcolor{green}{\cmark}\\ + \end{tabular} +\end{center} + +\subsubsection{3. Existenz des Inversen Elements (über \hyperref[H4]{H4})} +\begin{align*} + \forall a\exists\overline{a}: a\wedge \overline{a}= 0 \\ + a\vee \overline{a}=1 +\end{align*} + +Somit gilt für folgendes: +\begin{align*} + a\wedge b = 0 \\ + a\vee b = 1\\ + \Rightarrow a=\overline{b} +\end{align*} + + +%%%%%%%%%%%%%%%%%%%%% + +Damit können wir den Beweis von De Morgan durchführen: $\overline{a\wedge b} \overset{!}{=} \overline{a}\vee \overline{b}$\newline +Wir wollen beweisen: +\begin{align} + \overline{~\overline{a\wedge b}~}\wedge (\overline{a}\wedge \overline{b}) \overset{!}{=}0\label{eq:de_morgan_1} \\ + \overline{~\overline{a\wedge b}~}\vee (\overline{a}\vee \overline{b})\overset{!}{=}1\label{eq:de_morgan_2} +\end{align} + +Bevor wir diese Gesetze jedoch beweisen können, müssen wir zuerst einige andere beweisen. + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\textbf{Gesetz der doppelten Negation}: $\overline{\overline{x}}\overset{!}{=}x$ + +\columnratio{0.5} +\begin{paracol}{2} + Über eine Wertetabelle + \begin{center} + \begin{tabular}{l|l|ll} + x & $\overline{x}$ & $\overline{~\overline{x}~}$\\ + \midrule + 0 & 1 & 0 & \textcolor{green}{\cmark} \\ + 1 & 0 & 1 & \textcolor{green}{\cmark} \\ + \end{tabular} + \end{center} + \switchcolumn + Über die Interpretation von \hyperref[H4]{H4}: + \begin{align*} + \overline{\overline{x}}\wedge \overline{x}\overset{H4}{=}0 \\ + \overline{\overline{x}}\vee \overline{x}\overset{H4}{=}1 + \end{align*} +\end{paracol} + +%%%%%%%%%%%%%%%%%%%%%%% +\columnratio{0.5} +\begin{paracol}{2} + \textbf{Beweis der 0-Absorption}: + \begin{align*} + x\wedge 0 &\overset{!}{=}0 \\ + x\wedge 0 &\overset{H4}{=} x\wedge(x\wedge\overline{x})\\ + &\overset{Ass.}{=} (x\wedge x)\wedge\overline{x}\\ + &\overset{Idempot.}{=}x\wedge\overline{x}\\ + &\overset{H4}{=}0\text{~\textcolor{green}{\cmark}} + \end{align*} + \switchcolumn + \textbf{Beweis der 1-Absorption}: + \begin{align*} + x\vee 1 &= 1 \\ + x\vee 1 &\overset{H4}{=} x\vee (x\vee\overline{x})\\ + &\overset{Ass.}{=}(x\vee x)\vee\overline{x}\\ + &\overset{Idempot.}{=}x\vee \overline{x}\\ + &\overset{H4}{=}1\text{~\textcolor{green}{\cmark}} + \end{align*} +\end{paracol} + + + +\textbf{Beweisen von \autoref{eq:de_morgan_1}.} +\begin{align*} + \overline{~\overline{a\wedge b}~} \wedge (\overline{a}\vee \overline{b}) &\overset{dopp.~Neg}{=} (a\wedge b) \wedge (\overline{a}\vee b)\\ + &\overset{H2}{=}~(a\wedge b \wedge \overline{a})\vee (a\wedge b \wedge \overline{b})\\ + &\overset{H1}{=}~(b\wedge a \wedge \overline{a})\vee (a\wedge b \wedge \overline{b})\\ + &\overset{H4}{=}~(b\wedge 0)\vee (a\wedge 0)\\ + &\overset{0-Absorption}{=}0\vee 0\\ + &\overset{Idempot.}{=}~0\text{~\textcolor{green}{\cmark}} +\end{align*} + +\textbf{Wir beweisen \autoref{eq:de_morgan_2}} +\begin{align*} + \overline{~\overline{a\wedge b}~}\vee (\overline{a}\vee \overline{b})&\overset{!}{=}1 \\ + \overline{\overline{a\wedge b}} \vee (\overline{a}\vee\overline{b})&\overset{dopp.~Neg.}{=}(a\wedge b)\vee (\overline{a}\vee\overline{b})\\ + &\overset{H2}{=}(a\vee\overline{a}\vee\overline{b})\wedge(b\vee\overline{a}\vee\overline{b})\\ + &\overset{H1}{=}(a\vee\overline{a}\vee\overline{b})\wedge(\overline{a}\vee b\vee \overline{b})\\ + &\overset{H4}{=}(1\vee\overline{b})\wedge(\overline{a}\vee 1)\\ + &\overset{\textit{1-Absorp.}}{=}1\wedge 1\\ + &\overset{Idempot.}{=}1\text{~\textcolor{green}{\cmark}} +\end{align*} + +\textbf{Wir beweisen das Assiozativgesetz über eine Wertetabelle:} + +\begin{table}[h] + \centering + \begin{tabular}{c|ccc|c|c|c|cl} + Nr. & $c$ & $b$ & $a$ & $(a\vee b)$ & $(a\vee b)\vee c$ & $(b\vee c)$ & $a\vee (b\vee c)$ \\ + \midrule + 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & \textcolor{green}{\cmark} \\ + 1 & 0 & 0 & 1 & 1 & 1 & 0 & 1 & \textcolor{green}{\cmark} \\ + 2 & 0 & 1 & 0 & 1 & 1 & 1 & 1 & \textcolor{green}{\cmark} \\ + 3 & 0 & 1 & 1 & 1 & 1 & 1 & 1 & \textcolor{green}{\cmark} \\ + 4 & 1 & 0 & 0 & 0 & 1 & 1 & 1 & \textcolor{green}{\cmark} \\ + 5 & 1 & 0 & 1 & 1 & 1 & 1 & 1 & \textcolor{green}{\cmark} \\ + 6 & 1 & 1 & 0 & 1 & 1 & 1 & 1 & \textcolor{green}{\cmark} \\ + 7 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & \textcolor{green}{\cmark} \\ + \end{tabular} + \caption{Beweis des Assoziativgesetzes} +\end{table} + +\subsection{Boolescher Ausdruck} + +\begin{Hinweis} + Wenn Herr Röthig im Unterricht \enquote{boolescher Ausdruck} sagt, meint er einen Ausdruck der Schaltalgebra. +\end{Hinweis} + +Ein boolescher Ausdruck besteht aus Konstanten, Variablen und Operatoren! + +\textbf{Operatoren}: +\begin{itemize}[noitemsep] + \item zweistellige Operatoren: $\wedge, \vee \Rightarrow$ verknüpfen zwei Werte, welche links und rechts des Operators notiert sind. + \item einstelliger Operator: $\overline{x} \Rightarrow$ bezieht sich auf nur einen Wert. + \item Alternative Schreibweisen: + \begin{itemize}[noitemsep] + \item $\neg x = \overline{x}$ + \item $x \wedge y = x\cdot y=xy$ + \item $x\vee y = x+y$ (selten verwendet) + \end{itemize} + + \item Operatorenbindungskraft:\newline + Beispiel: $\neg x\vee y\neq \neg(x\vee y)$ bzw. $\overline{x}\vee y\neq \overline{x\vee y}$ + \begin{itemize}[noitemsep] + \item $\neg$ bindet stärker als $\wedge$ + \item $\wedge$ bindet stärker als $\vee$ + \end{itemize} + + Ausdrücke stärker bindender Operatoren werden zuerst ausgewertet. Die Reihenfolge der Auswertung kann auch mit Klammern gezielt beeinflusst werden, \dash Klammern binden stärker als jeder Operator\newline + $\Rightarrow$ die Auswertung von booleschen Ausdrücken erfolgt immer \enquote{von innen nach außen}. +\end{itemize} + +\subsubsection{Belegung und Funktionen} +\begin{description} + \item[Belegung]\index{Belegung} + Zuordnung eines bestimmten Wertes zu jeder Variablen. + + \item[Funktion]\index{Funktion} Zuweisung einer Ausgangsbelegung + (\enquote{Funktionswert}) zu jeder Eingangsbelegung. +\end{description} + +\textbf{Hinweis}: Es gibt auch mehrstellige Funktionen, welche einer Eingangsbelegung +gleichzeitig mehrere Ausgangsbelegungen (in festgelegter Reihenfolge) zuweisen. + +Eine $n$-stellige Funktion kann durch $n$ einstellige Funktionen dargestellt werden. + +Darstellung (\enquote{Definition}) einer booleschen Funktion: + +\begin{enumerate}[label=\alph*)] + \item über einen booleschen (Funktions-)Ausdruck. \newline + Beispiel: $f(a,b)=a\wedge b$ $\Rightarrow$ Funktion abhängig von + zwei Variablen $a$ und $b$.\newline + \phantom{Beispiel:} $f(a)\phantom{,b} = \neg a\phantom{\wedge ,}$ $\Rightarrow$ Funktion abhängig von einer Variablen $a$. + + zweistellige Operatoren lassen sich als Funktionen von zwei Variablen darstellen.\newline + einstellige Operatoren lassen sich als Funktionen von einer Variablen darstellen. + + \textit{Wie viele verschiedene Funktionen abhängig von $n$ Variablen gibt es?}\newline + $f(a)=\neg a=\neg\neg\neg a=\neg\neg\neg\neg\neg a=\neg(a\wedge a)$ + + Zwei Funktionen heißen äquivalent, wenn: + \begin{itemize}[noitemsep] + \item beide booleschen Funktionsausdrücke die gleiche Wertetabelle aufweisen \textit{oder} + \item der eine Funktionsausdruck in den anderen Ausdruck umgeformt werden kann. + \end{itemize} + + So sind die Funktionsausdrücke im Beispiel oben alle äquivalent. + + Die Umformung funktioniert auch bei Funktionen von Zahlen, während die + Wertetabelle bei zahlen nicht funktioniert, da es unendlich viele Werte gibt! + + + \textbf{Funktion abhängig von 0-Variablen:} + \begin{equation*} + \left.\begin{aligned} + f_0=0 \text{ \enquote{Nullfunktion}} \\ + f_1=1 \text{ \enquote{Einsfunktion}} + \end{aligned}\right\rbrace + \Rightarrow \text{zwei verschiedene Funktionen abhängig von keiner Variablen} + \end{equation*} + + + \textbf{Funktionen abhängig von 1 Variable:} + \begin{center} + \begin{tabular}{l|l|l|l|l} + a & $f_0$ & $f_1$ & $f_2$ & $f_3$\\ + \midrule + 0 & 0 & 1 & 0 & 1 \\ + 1 & 0 & 0 & 1 & 1 + \end{tabular} + \end{center} + + \begin{align*} + \left.\begin{aligned} + f_2(a)&=a \text{ \enquote{Identität von a}} \\ + f_1(a)&=\overline{a} \text{ \enquote{Negation von a}} \\ + f_0(a)&=0 \text{ \enquote{Nullfunktion}} \\ + f_3(a)&=1 \text{ \enquote{Einsfunktion}} \\ + \end{aligned}\right\rbrace + \Rightarrow \text{vier verschiedene Funktionen abhängig von einer Variablen} + \end{align*} + + + \textbf{Funktionen abhängig von 2 Variablen:} + + \begin{tabular}{l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l|l} + b & a & $f_0$ & $f_1$ & $f_2$ & $f_3$ & $f_4$ & $f_5$ & $f_6$ & $f_7$ & $f_8$ & $f_9$ & $f_{10}$ & $f_{11}$ & $f_{12}$ & $f_{13}$ & $f_{14}$ & $f_{15}$\\ + \midrule + 0 & 0 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 & 0 & 1 \\ + 0 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 & 0 & 0 & 1 & 1 \\ + 1 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 \\ + 1 & 1 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 0 & 1 & 1 & 1 & 1 & 1 & 1 & 1 & 1 \\ + \midrule + + \multicolumn{2}{c|}{$f(a,b)$} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{0}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$\neg(a\vee b)$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$\overline{a\rightarrow b}$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$\overline{b}$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$\overline{b\rightarrow a}$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$\overline{a}$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$(a\vee b)\wedge\neg(a\wedge b)=a\overline{b}\vee\overline{a}b$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$\neg(a\wedge b)$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$a\wedge b$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$a \leftrightarrow b$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{a}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$b\rightarrow a$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{b}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$a\rightarrow b$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{$a\vee b$}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{1}} \\ + \midrule + + \multicolumn{2}{c|}{\parbox[t]{2mm}{\rotatebox[origin=c]{90}{Bezeichnung}}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Nullfunktion}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Nicht-ODER}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Inhibition (negierte Implikation)}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Negation von b}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Inhibition (negierte Implikation)}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Negation von a}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Exklusiv-Oder / Antivalenz}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Nicht-UND}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{UND-Funktion}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Äquivalenz}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Identität von a}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Implikation (aus b folgt a)}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Identität von b}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Implikation (aus a folgt b)}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{ODER-Funktion}} + & \parbox[t]{2mm}{\rotatebox[origin=c]{90}{Einsfunktion}} + \end{tabular} + + \bigskip + + $\Rightarrow$ insgesamt \textbf{16} verschiedene Funktionen abhängig von 2 Variablen! + \begin{Hinweis}[frametitle=Hinweis -- Implikation] + Implikation: $a\rightarrow b$ \enquote{Wenn $a$ gilt, gilt auch $b$} + + \zB $a\hat{=}$ \enquote{es regnet}\newline + \phantom{\zB}$b\hat{=}$ \enquote{der Hof ist nass} + \end{Hinweis} + +\end{enumerate} + +Alle Funktionen abhhängig von $n$ Variablen, werden in \autoref{tbl:n_funktionen} auf Seite~\pageref{tbl:n_funktionen} dargestellt. +Die Anzahl unterschiedlicher Funktionen wächst mit steigender Anzahl von Eingangsvariablen rasant! + +\begin{table}[h] + \centering + \begin{tabular}{c|c|c} + $n$ & \#Fkt = ${2^2}^n$ & \#ZeilenWertetabelle = $2^n$ \\ + \midrule + 0 & 2 & 1 \\ + 1 & 4 & 2 \\ + 2 & 16 & 4 \\ + 3 & 256 & 8 \\ + 4 & 65536 & 16 \\ + 5 & $\approx 4 Mrd.$ & 32 \\ + 6 & $\approx 16 Trillionen$ & 64 + \end{tabular} + \caption{Boolesche Algebra -- Anzahl Funktionen und Zeilen in einer Wertetabelle} + \label{tbl:n_funktionen} +\end{table} + + +\begin{description} + \item[vollständiges Operatorensystem]\index{Operatorensystem} \hfill\newline + Ein vollständiges Operatorensystem ist eine Menge an (ein- und zweistelligen) Operatoren, mit deren Hilfe wir jede Funktion (abhängig von beliebig vielen Variablen) als algebraischen Funktionsausdruck darstellen können! +\end{description} + +\begin{satz} + $\{\wedge,\vee,\neg\}$ sind ein vollständiges Operatorensystem der Booleschen Algebra. +\end{satz} +\textsf{\textbf{Beweis}}: Definition der Booleschen Algebra\ldots + +\begin{satz} + $\{\wedge,\neg\}$ ist ein vollständiges Operatorensystem der Booleschen Algebra. +\end{satz} +\textsf{\textbf{Beweis}}: $a\vee b \overset{dopp.~Neg.}{=} \overline{~\overline{a\vee b}~}~\overset{de~Morgan}{=}~\overline{\overline{a}\wedge\overline{b}}$ + +\begin{satz} + $\{\vee,\neg\}$ ist ein vollständiges Operatorensystem der Booleschen Algebra. +\end{satz} +\textsf{\textbf{Beweis}}: $a\wedge b \overset{dopp.~Neg.}{=} \overline{~\overline{a\wedge b}~}~\overset{de~Morgan}{=}~\overline{\overline{a}\vee\overline{b}}$ + +\begin{satz} + $\{\overline{\wedge}\}$ ist ein vollständiges Operatorensystem der Booleschen Algebra +\end{satz} +\textsf{\textbf{Beweis}}: $\neg a\overset{Idempot.}{=}\neg(a\wedge a)=a\overline{\wedge}a$\newline +\phantom{\textsf{\textbf{Beweis:}}} $a\wedge b \overset{dopp.~Neg.}{=} \overline{~\overline{a\wedge b}~}=\overline{(a\overline{\wedge}b)}\overset{Idempot.}{=}\overline{(a\overline{\wedge}b)\wedge(a\overline{\wedge}b)} = (a\overline{\wedge}b)\overline{\wedge}(a\overline{\wedge}b)$ + +\begin{satz} + $\{\overline{\vee}\}$ ist ein vollständiges Operatorensystem der Booleschen Algebra. +\end{satz} +\textsf{\textbf{Beweis}}: $\neg a\overset{Idempot.}{=}\neg(a\vee a)=a\overline{\vee}a$\newline +\phantom{\textsf{\textbf{Beweis:}}} $a\vee b \overset{dopp.~Neg.}{=} \overline{~\overline{a\vee b}~}=\overline{(a\overline{\vee}b)}\overset{Idempot.}{=}\overline{(a\overline{\vee}b)\vee(a\overline{\vee}b)} = (a\overline{\vee}b)\overline{\vee}(a\overline{\vee}b)$ + +Anwendung: IC-Design, \zB Bausteine in \enquote{NAND-Technologie} realisiert. + +\begin{Hinweis} + Wir arbeiten üblicherweise mit $\{\neg,\wedge,\vee\}$ als vollständiges Operatorensystem. +\end{Hinweis} + +\textit{Frage}: Wie können wir feststellen, ob zwei Funktionen $f$ und $g$ äquivalent sind? +\begin{itemize}[noitemsep] + \item Vergleich anhand der Wertetabelle $\Rightarrow$ einfach + \item Vergleich der Booleschen Ausdrücke $\Rightarrow$ schwierig, denn für die Umformung gibt es immer viele Möglichkeiten. + +\end{itemize} + +Gibt es vielleicht \enquote{spezielle Boolesche Ausdrücke}, welche wir \enquote{einfach} vergleichen könnten? + +$\Rightarrow$ Wir suchen einen \enquote{standardisierten}/\enquote{normierten} Funktionsausdruck! + +Die Wertetabelle ist quasi \enquote{standardisiert} $\Rightarrow$ Wie kann man aus der Wertetabelle einen Funktionsausdruck gewinnen? + +\begin{table}[h] + \centering + \begin{tabular}{c|ccc|cl} + Nr. & $c$ & $b$ & $a$ & $f(a,b,c)$ \\ + \midrule + 0 & 0 & 0 & 0 & 0 & \\ + 1 & 0 & 0 & 1 & 1 & $\Leftarrow$ $\overline{c}~\overline{b}~ a$ \\ + 2 & 0 & 1 & 0 & 1 & $\Leftarrow$ $\overline{c}~b~\overline{a}$ \\ + 3 & 0 & 1 & 1 & 1 & $\Leftarrow$ $\overline{c}~b~a$ \\ + 4 & 1 & 0 & 0 & 0 & \\ + 5 & 1 & 0 & 1 & 0 & \\ + 6 & 1 & 1 & 0 & 1 & $\Leftarrow$ $c~b~\overline{a}$ \\ + 7 & 1 & 1 & 1 & 0 & \\ + \end{tabular} + \caption{Boolesche Algebra -- Von Wertetabelle zur Funktion} + \label{tbl:von_wertetabelle_zur_funktion} +\end{table} + +Wir betrachten nur die \enquote{1}-Belegung von $f$ $\Rightarrow$ die Vollkonjunktion $\overline{c}~\overline{b}~ a$ ergibt nur für Zeile 1 eine \enquote{1}, für alle anderen Zeilen ergibt sich eine \enquote{0}. Somit ergeben alle Vollkonjunktionen verodert den entsprechenden Funktionsterm!\newline +$\overline{c}~\overline{b}~ a \vee \overline{c}~b~\overline{a} \vee \overline{c}~b~a \vee c~b~\overline{a}$ $\Rightarrow$ \acf{DNF} von $f$ + +\begin{description} + \item[\acl{DNF}]\index{Disjunkte Normalform} \hfill\newline + Die \acf{DNF} einer Funktion $f$ ist die Disjunktion (\texttt{ODER}-Verknüpfung) aller Vollkonjunktionen der Funktion $f$. + + \item[Vollkonjunktion]\index{Vollkonjunktion} \hfill\newline + Eine Konjunktion (\texttt{UND}-Verknüpfung) von Literalen (für jede Variable ein Literal), für welche die Funktion den Funktionswert \enquote{1} ergibt, heißt Vollkonjunktion der Funktion $f$. + + \item[Literal]\index{Literal} \hfill\newline + Eine Eingangsvariable in negierter oder nicht-negierter Form heißt Literal. +\end{description} + +\begin{satz} + Die \acs{DNF} einer Funktion ist eindeutig bis auf die Reihenfolge der Vollkonjunktionen, sowie die Reihenfolge der Literale in den Vollkonjunktionen. +\end{satz} +\textsf{\textbf{Beweis}}: Über Wertetabelle bzw. die Regeln, wie wir die \acs{DNF} aus der Wertetabelle bilden. + +\subsection{Darstellung von booleschen Funktionen} + +\begin{enumerate}[noitemsep] + \item boolescher Ausdruck (allgemein)\newline + Spezialformen: \acs{DNF} (im weiteren Verlauf der Vorlesung lernen wir weitere kennen) + \item Wertetabelle + \item \hyperref[sec:schaltnetz]{Schaltnetz} + \item \hyperref[sec:kv_diagramm]{KV-Diagramm} +\end{enumerate} + +\subsection{Schaltnetz}\label{sec:schaltnetz} + +Darstellung einer booleschen Funktion als Graph. Graphen bestehen aus Knoten und Kanten. Knoten sind \enquote{Gatter} und entsprechen den Operatoren. Kanten sind die Verbindungen/\enquote{Leitungen} zwischen den Gattern. + +Genauer: Schaltnetze sind gerichtete Graphen, \dash die Kanten haben jeweils eine Richtung (anders gesagt: Die Knoten haben Aus- und Eingänge). + +\newpage +\subsubsection{Gatter} +% +%\begin{Achtung} +% Im folgenden gibt es leider eine technische Einschränkung. Das NICHT kann mit dem verwendeten Paket nicht auf die \enquote{deutsche Art} dargestellt werden. Beispiel: +% \begin{center} +% \begin{circuitikz}[font=\sffamily, circuit logic IEC] +% \draw (5,0) node[european xnor port] (port) {}; +% \draw (0,0) node[xnor gate] (port) {}; +% \end{circuitikz} +% \end{center} +% Die linke Seite zeigt ein korrektes XNOR, während auf der rechten Seite anstatt des \enquote{Kringels} ein schräger Strich am Ausgang gezeichnet wird. Alle Negationen enthalten im folgenden den schrägen Strich, auch wenn der \enquote{Kringel} die korrekte Darstellung ist! +%\end{Achtung} + +\columnratio{0.4} +\begin{paracol}{2} + \begin{description} + \item[Identer] \enquote{eine Art Verstärker} + + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols] + \node[buffer gate, draw] at (0, 0) (BUFFER) {}; + \node (a) at ($(BUFFER.input) - (0.5, 0)$) {a}; + \node (b) at ($(BUFFER.output) + (0.6, 0)$) {a}; + + \draw (a) -- (BUFFER.input); + \draw (b) -- (BUFFER.output); + \end{tikzpicture} + + \item[Negation] Inverter/NOT/$\neg a$ + + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols] + \node[not gate, draw] at (0, 0) (nota) {}; + \node (a) at ($(nota.input) - (0.5, 0)$) {a}; + \node (b) at ($(nota.output) + (0.6, 0)$) {$\neg a$}; + + \draw (a) -- (nota.input); + \draw (b) -- (nota.output); + \end{tikzpicture} + + \item[Konjunktion] UND/AND + + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols] + \node[and gate, inputs={nn}] at (0,0) (AND) {}; + \draw (AND.output) -- ++(right:5mm); + \foreach \a in {1,...,2} { + \draw (AND.input \a -| -0.8,0) -- (AND.input \a); + } + + \node at (AND.input 1 -| -1.0,0) {a}; + \node at (AND.input 2 -| -1.0,0) {b}; + \node at (AND.output -| 1.5,0) {$a\wedge b$}; + \end{tikzpicture} + \end{description} + \switchcolumn + \begin{description} + \item[Disjunktion] ODER/OR + + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols] + \node[or gate, inputs={nn}] at (0,0) (OR) {}; + \draw (OR.output) -- ++(right:5mm); + \foreach \a in {1,...,2} { + \draw (OR.input \a -| -0.8,0) -- (OR.input \a); + } + + \node at (OR.input 1 -| -1.0,0) {a}; + \node at (OR.input 2 -| -1.0,0) {b}; + \node at (OR.output -| 1.5,0) {$a\vee b$}; + \end{tikzpicture} + + \item[Antivalenz] XOR/Exklusiv ODER (nur zwei Eingänge) + + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols] + \node[xor gate, inputs={nn}] at (0,0) (XOR) {}; + \draw (XOR.output) -- ++(right:5mm); + \foreach \a in {1,...,2} { + \draw (XOR.input \a -| -0.8,0) -- (XOR.input \a); + } + + \node at (XOR.input 1 -| -1.0,0) {a}; + \node at (XOR.input 2 -| -1.0,0) {b}; + \node at (XOR.output -| 1.5,0) {$\overline{a \longleftrightarrow b}$}; + \end{tikzpicture} + + \item[Äquivalenz] XNOR (nur zwei Eingänge) + + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols] + \node[xnor gate, inputs={nn}] at (0,0) (XNOR) {}; + \draw (XNOR.output) -- ++(right:4mm); + \foreach \a in {1,...,2} { + \draw (XNOR.input \a -| -0.8,0) -- (XNOR.input \a); + } + + \node at (XNOR.input 1 -| -1.0,0) {a}; + \node at (XNOR.input 2 -| -1.0,0) {b}; + \node at (XNOR.output -| 1.6,0) {$a \longleftrightarrow b$}; + \end{tikzpicture} + + \end{description} + +\end{paracol} + +Die Richtung der Kanten wird (meist) nicht explizit (\zB durch Pfeile), sondern implizit gegeben, dass die Eingänge sich bei den Gattern links (oder oben) und die Ausgänge rechts (oder unten) befinden. +Beispiel: siehe \autoref{fig:beispiel_gatter}. + +\begin{figure}[ht] + \centering + \begin{circuitikz}[font=\sffamily] + \draw + (0,1) node[european and port] (orport) {} + node[below right=0mm of orport, european or port] (portAB) {} + node[below left=0mm and 20mm of portAB] (portC) {c} + (orport.in 1) node[anchor=east] {a} + (orport.in 2) node[anchor=east] {b} + (portAB.out) node[anchor=west] {$f(a,b,c)=(a\wedge b)\vee c$} + (orport.out) -| (portAB.in 1) + (portC) -| (portAB.in 2) + ; + \end{circuitikz} + \caption{Beispiel für Gatter} + \label{fig:beispiel_gatter} +\end{figure} + +\textbf{Weitere Regeln}: Jeder Ausgang und Eingang kann mit Hilfe eines \enquote{Kringels} ($\circ$, nicht ausgefüllter Kreis), negiert werden. + +\texttt{UND}- und \texttt{ODER}-Gatter können auch mehr als zwei Eingänge haben. Vergleiche hierzu \autoref{fig:gatter_mehrere_eingaenge_1} und \autoref{fig:gatter_mehrere_eingaenge_2}. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[and gate, inputs={in}] at (0,2) (PORT) {}; + \node[and gate, inputs={nn}] at (1.5,1) (PORT2) {}; + \node[] at (-1,0) (C) {c}; + + \draw (PORT.input 1 -| -0.8,0) -- (PORT.input 1); + \draw (PORT.input 2 -| -0.8,0) -- (PORT.input 2); + \node at (PORT.input 1 -| -1.0,0) (A) {a}; + \node at (PORT.input 2 -| -1.0,0) (B) {b}; + + \draw (PORT.output) -| ([xshift=-5mm]PORT2.input 1) -- (PORT2.input 1); + \draw (C) -| ([xshift=-5mm]PORT2.input 2) -- (PORT2.input 2); + \draw (PORT2.output) -- ([xshift=8mm]PORT2.output); + \node[right=of PORT2.output] {$\overline{a}\wedge b\wedge c$}; + + \end{tikzpicture} + \caption{Gatter -- Mehrere Eingänge -- Variante 1} + \label{fig:gatter_mehrere_eingaenge_1} +\end{figure} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[and gate, inputs={inn}] at (0,0) (PORT) {}; + + \draw (PORT.input 1 -| -0.8,0) -- (PORT.input 1); + \draw (PORT.input 2 -| -0.8,0) -- (PORT.input 2); + \draw (PORT.input 3 -| -0.8,0) -- (PORT.input 3); + \node at (PORT.input 1 -| -1.0,0) (A) {a}; + \node at (PORT.input 2 -| -1.0,0) (B) {b}; + \node at (PORT.input 3 -| -1.0,0) (C) {c}; + + \draw (PORT.output) -- ([xshift=8mm]PORT.output); + \node[right=of PORT.output] {$\overline{a}\wedge b\wedge c$}; + + \end{tikzpicture} + \caption{Gatter -- Mehrere Eingänge -- Variante 2} + \label{fig:gatter_mehrere_eingaenge_2} +\end{figure} + + +\begin{figure}[h] + \centering + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[and gate, inputs={nn}] at (0,2) (PORT) {}; + \draw (PORT.input 1 -| -1.8,0) -- (PORT.input 1); + \draw (PORT.input 2 -| -0.8,0) -- (PORT.input 2); + \node at (PORT.input 1 -| -2.0,0) (A) {a}; + \node at (PORT.input 2 -| -1.0,0) (B) {b}; + + \node[and gate, inputs={nn}] at (0,0) (PORT2) {}; + \draw (PORT2.input 2 -| -0.8,0) -- (PORT2.input 2); + \node at (PORT2.input 2 -| -1.0,0) {c}; + \draw (A) ++(right:5mm) |- (PORT2.input 1); + \node[knoten] at ([xshift=5mm]A) {}; + + \node[or gate, inputs={nn}] at (2,1) (PORT3) {}; + + \draw (PORT.output) -- ++(right:7mm) |- (PORT3.input 1); + \draw (PORT2.output) -- ++(right:7mm) |- (PORT3.input 2); + + \draw ([xshift=8mm]PORT3.output) -- (PORT3.output); + \node[right=of PORT3.output] {$\overline{a \longleftrightarrow b}$}; + + \end{tikzpicture} + \caption{Gatter -- $(a\wedge b)\vee(a\wedge c)$} + \label{fig:gatter_leitung_aufspaltung} +\end{figure} + +Wie \autoref{fig:gatter_leitung_aufspaltung} zeigt, sind Aufspaltungen von Leitungen möglich, indem die Leitungen über einen ausgefüllten Kreis ($\bullet$) miteinander verbunden werden. + +Die \acs{DNF}: $\overline{c}~\overline{b}~ a \vee \overline{c}~b~\overline{a} \vee \overline{c}~b~a \vee c~b~\overline{a}$ ergibt das Gatter, wie es in \autoref{fig:gatter_dnf} auf Seite~\pageref{fig:gatter_dnf} dargestellt wird. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + \node at (0.5,5.5) (C) {c}; + \node at (1,5.5) (B) {b}; + \node at (1.5,5.5) (A) {a}; + + + \node[and gate, inputs={nii}] at (3,4.5) (PORT1) {}; + \node[and gate, inputs={ini}] at (3,3) (PORT2) {}; + \node[and gate, inputs={nni}] at (3,1.5) (PORT3) {}; + \node[and gate, inputs={inn}] at (3,0) (PORT4) {}; + \node[or gate, inputs={nnnn}] at (5,2) (PORT5) {}; + + \draw (PORT1.output) -- ([xshift=7mm]PORT1.output) |- (PORT5.input 1); + \draw (PORT2.output) -- ([xshift=5mm]PORT2.output) |- (PORT5.input 2); + \draw (PORT3.output) -- ([xshift=5mm]PORT3.output) |- (PORT5.input 3); + \draw (PORT4.output) -- ([xshift=7mm]PORT4.output) |- (PORT5.input 4); + % -| nutzt nur eine Koordinate + \draw (A) |- (PORT1.input 1); \node[knoten] at (PORT1.input 1 -| A) {}; + \draw (A) |- (PORT2.input 1); \node[knoten] at (PORT2.input 1 -| A) {}; + \draw (A) |- (PORT3.input 1); \node[knoten] at (PORT3.input 1 -| A) {}; + \draw (A) |- (PORT4.input 1); \node[knoten] at (PORT4.input 1 -| A) {}; + + \draw (B) |- (PORT1.input 2); \node[knoten] at (PORT1.input 2 -| B) {}; + \draw (B) |- (PORT2.input 2); \node[knoten] at (PORT2.input 2 -| B) {}; + \draw (B) |- (PORT3.input 2); \node[knoten] at (PORT3.input 2 -| B) {}; + \draw (B) |- (PORT4.input 2); \node[knoten] at (PORT4.input 2 -| B) {}; + + \draw (C) |- (PORT1.input 3); \node[knoten] at (PORT1.input 3 -| C) {}; + \draw (C) |- (PORT2.input 3); \node[knoten] at (PORT2.input 3 -| C) {}; + \draw (C) |- (PORT3.input 3); \node[knoten] at (PORT3.input 3 -| C) {}; + \draw (C) |- (PORT4.input 3); \node[knoten] at (PORT4.input 3 -| C) {}; + + \draw (PORT5.output) -- ([xshift=8mm]PORT5.output); + \node[right=of PORT5.output] {$\overline{c}~\overline{b}~ a \vee \overline{c}~b~\overline{a} \vee \overline{c}~b~a \vee c~b~\overline{a}$}; + + \end{tikzpicture} + \caption{Gatter -- DNF Beispiel für $\overline{c}~\overline{b}~ a \vee \overline{c}~b~\overline{a} \vee \overline{c}~b~a \vee c~b~\overline{a}$} + \label{fig:gatter_dnf} +\end{figure} + +\begin{Hinweis} + Sich überkreuzende Leitungen sind ohne ausgefüllten Kreis nicht miteinander verbunden! +\end{Hinweis} + +\begin{Hinweis} + + \enquote{Zusammenführen} von Leitungen ist verboten (elektrotechnisch würde dies einem Kurzschluss entsprechen! + + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + \node at (0,1) (A) {a}; + \node at (0,0.5) (B) {b}; + \draw ([xshift=5mm]A) -- (1,1) -- (1,0); + \draw ([xshift=5mm]B) -- (1,0.5); + \node[knoten] at (1,0.5) {}; + \draw[red, thick] (-0.1,-0.1) -- (1.1,1.1) (1,-0.1) -- (-0.1,1.1); + \end{tikzpicture} + +\end{Hinweis} + + +\enquote{Bauchgefühl}: Die Realisierung der \acs{DNF} als Schaltnetz erfordert (zu) viel \enquote{Aufwand}! +\newpage +\textbf{Was ist Aufwand?}\newline +Hier: Aufwand = \enquote{Hardware-Aufwand}, \dash wie viel kostet die Realisierung? + +\textbf{Wie messen wir Aufwand?} +\begin{itemize}[noitemsep] + \item \textbf{Anzahl Gatter}: Hat ein Gatter mit 42 Eingängen denselben Aufwand wie ein + Gatter mit zwei Eingängen? + Unterschied Aufwand für \texttt{UND} und \texttt{ODER}? Was ist mit Negationen? + + \item \textbf{Anzahl Transistoren}: Auf \acsp{IC} werden die Gatterfunktionen über + Transistoren als Schalter realisiert. \newline + \autoref{fig:npn_transistor} zeigt einen $npn$ Transistor. Es fließt Strom, falls + $U_{Basis} > U_{Emitter}$ \newline + \autoref{fig:pnp_transistor} zeigt einen $pnp$ Transistor. Es fließt Strom, falls + $U_{Basis} < U_{Emitter}$ + + \medskip + + $\Rightarrow$ Für die Realisierung eines \texttt{UND}- oder \texttt{ODER}-Gatters mit $n$ Eingängen + werden $n$ Transistoren benötigt.\newline + $\Rightarrow$ Abschätzung des Aufwands in Transistoren über die Anzahl der Eingänge + der verwendeten \enquote{Basisgatter} (\texttt{UND}, \texttt{ODER}) + + $\Rightarrow$ Negation an Eingängen können ohne zusätzlichen Aufwand realisiert + werden (einfaches Argument: Ersatz des $npn$- durch $pnp$-Transistor)! + + $\Rightarrow$ Negation am Ausgang kann ohne zusätzlichen Aufwand realisiert werden (einfaches Argument: Austausch von \enquote{1}- und Erd-Spannung an den Widerständen, siehe \autoref{fig:transistor_mit_pull_widerstaenden})! + + Damit ist der Aufwand für die Realisierung der obigen \acs{DNF}: 16 Transistoren (4 \texttt{UND} mit jeweils 3 Eingängen und 1 \texttt{ODER} mit 4 Eingängen). +\end{itemize} + + +\begin{figure}[ht] + \centering + \begin{circuitikz} + \draw + (0,0) node[npn] (npn) {} + (npn.base) node[anchor=east] {Basis} + (npn.emitter) node[anchor=north] {Emitter} + (npn.collector) node[anchor=south] {Kollektor} + ; + \end{circuitikz} + \caption{$npn$ Transistor}\index{Transistor!npn} + \label{fig:npn_transistor} +\end{figure} + +\begin{figure}[ht] + \centering + \begin{circuitikz} + \draw + (0,0) node[pnp] (pnp) {} + (pnp.base) node[anchor=east] {Basis} + (pnp.collector) node[anchor=north] {Kollektor} + (pnp.emitter) node[anchor=south] {Emitter} + ; + \end{circuitikz} + \caption{$pnp$ Transistor}\index{Transistor!pnp} + \label{fig:pnp_transistor} +\end{figure} + +\begin{figure}[ht] + \centering + \begin{circuitikz}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + \node at (0,0) (eins) {\enquote{1}}; + \node[draw,below=of eins,label={[left]$R_{Pullup}$}] (widerstand) {}; + \node at (widerstand |- 0,-2) (ecke) {}; + + \draw (ecke -| 1,0) node[nmos,rotate=-90] (mos) {}; + \draw (ecke -| 2.5,0) node[nmos,rotate=-90] (mos2) {}; + + \draw (mos2.source) -- (mos.drain); + \draw (mos2.source) -- (mos.drain); + \draw (widerstand) -- (eins); + \draw (widerstand) |- (mos.source); + \draw (mos2.drain) -- ([xshift=5mm]mos2.drain); + \node[knoten] at ([xshift=5mm]mos2.drain) (knoten) {}; + \node[draw,below=of knoten,label={[right]$R_{Pulldown}$}] (widerstand2) {}; + \draw (widerstand2) -- (knoten); + \node[ground] at ([yshift=-5mm]widerstand2) (G) {}; + \draw (widerstand2) -- (G); + + \node at (1,-3.5) {$R_{Pullup} < R_{Pulldown}$}; + \end{circuitikz} + \caption{Transistor - $R_{Pullup} $ und $ R_{Pulldown}$} + \label{fig:transistor_mit_pull_widerstaenden} +\end{figure} + + +\newpage +\section{Schaltnetzanalyse}\index{Schaltnetzanalyse} +In \autoref{fig:schaltnetzanalyse_1} wird ein Schaltnetz dargestellt, welches nun untersucht werden soll, um einen booleschen Funktionsterm zu erstellen. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + \node[and gate, inputs={ni}] at (0,2) (AND1) {}; + \node[and gate, inputs={ni}] at (0,0) (AND2) {}; + \node[or gate, inputs={nn}] at (2,1) (OR) {}; + + \node at (AND1.input 1 -| -15mm,0) (B) {b}; + \node at (B |- 0,10mm) (A) {a}; + \node at (AND2.input 2 -| -15mm,0) (C) {c}; + + + \draw (B)-- (AND1.input 1); + \draw (C)-- (AND2.input 2); + \draw (A) -- (A -| -8mm,0) |- (AND1.input 2); + \draw (A -| -8mm,0) |- (AND2.input 1); + \node[knoten] at (A -| -8mm,0) {}; + + \draw (AND1.output) -- ([xshift=5mm]AND1.output) |- (OR.input 1); + \draw (AND2.output) -- ([xshift=5mm]AND2.output) |- (OR.input 2); + + \draw (OR.output) -- ([xshift=10mm]OR.output); + \node[anchor=west] at ([xshift=10mm]OR.output) {?}; + + \end{tikzpicture} + \caption{Schaltnetz für Schaltnetzanalyse -- $g(a,b,c)=(b\wedge\overline{a})\vee(a\wedge\overline{c})$} + \label{fig:schaltnetzanalyse_1} +\end{figure} + +Es ergibt sich folgender Funktionsterm: $g(a,b,c)=(b\wedge\overline{a})\vee(a\wedge\overline{c})$ + +Dies als Wertetabelle geschrieben ergibt die \autoref{tbl:wertetabelle_schaltnetzanalyse}. + +\begin{table}[h] + \centering + \begin{tabular}{c|ccc|c|c|c|c} + Nr. & c & b & a & $x_1 = b\overline{a}$ & $x_2 = a\overline{c}$ & $g=x_1\vee x_2$ & \\ + \midrule + 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\ + 1 & 0 & 0 & 1 & 0 & 1 & 1 & $\overline{c}\overline{b}a$ \\ + 2 & 0 & 1 & 0 & 1 & 0 & 1 & $\overline{c}b\overline{a}$ \\ + 3 & 0 & 1 & 1 & 0 & 1 & 1 & $\overline{c}ba$ \\ + 5 & 1 & 0 & 0 & 0 & 0 & 0 & \\ + 5 & 1 & 0 & 1 & 0 & 0 & 0 & \\ + 6 & 1 & 1 & 0 & 1 & 0 & 1 & $cb\overline{a}$ \\ + 7 & 1 & 1 & 1 & 0 & 0 & 0 & \\ + \end{tabular} + \caption{Wertetabelle aus Schaltnetz} + \label{tbl:wertetabelle_schaltnetzanalyse} +\end{table} + +Es ergibt sich, dass diese \autoref{tbl:wertetabelle_schaltnetzanalyse} äquivalent zur \autoref{tbl:von_wertetabelle_zur_funktion} auf Seite~\pageref{tbl:von_wertetabelle_zur_funktion} ist, dabei aber weniger \texttt{UND} und \texttt{ODER} Gatter enthält. +Der Aufwand für $g(a,b,c)$ beträgt 6 Transistoren (entspricht der Anzahl der Eingänge der Elementargatter), während für \autoref{tbl:von_wertetabelle_zur_funktion} mit der Funktion $f(a,b,c)$ 16 Transistoren verwendet werden mussten. + +\newpage + +(1) und (3) verodert ergibt: \quad +$\overline{c}\overline{b}a\vee\overline{c}ba\overset{\hyperref[H2]{H2}}{=}\overline{c}a\wedge(\overline{b}\vee b)\overset{\hyperref[H4]{H4}}{=}\overline{c}a\wedge 1\overset{\hyperref[H3]{H3}}{=}\overline{c}a$ \quad (\acs{PI} und \acs{KPI}) + +(2) und (6) verodert ergibt: \quad +$\overline{c}b\overline{a}\vee cb\overline{a}\overset{\hyperref[H2]{H2}}{=}(\overline{c}\vee c)\wedge b \overline{a}\overset{\hyperref[H4]{H4}}{=}1\wedge b\overline{a}\overset{\hyperref[H3]{H3}}{=}b\overline{a}$ \quad (\acs{PI} und \acs{KPI}) + +(2) und (3) verodert ergibt: \quad +$\overline{c}b\overline{a}\vee \overline{c}ba = \overline{c}b$ \quad (\acs{PI}) + +Damit ergibt sich per allgemeiner Umformung: +$\overline{c}\overline{b}a\vee \overline{c}b\overline{a}\vee \overline{c}ba\vee cb\overline{a} = \overline{c}a \vee b\overline{a}$ + +\begin{satz} + Konjunktionen von Literalen können zu einer Konjunktion vereinfacht werden, wenn: + \begin{itemize}[noitemsep] + \item die beiden Konjunktionen sich nur in einem Literal unterscheiden + \item das unterscheidende Literal dieselbe Variable darstellt, einmal in negierter und einmal in nicht-negierter Form + \item \textit{es wird vereinfacht indem} das unterscheidende Literal in der vereinfachten Konjunktion weggelassen wird + \end{itemize} +\end{satz} + +\textsf{\textbf{Beweis}}: Siehe \autoref{eq:beweis_konjunktion_vereinfachung}. +\begin{align} + a\wedge x \vee \overline{a}\wedge x &\overset{!}{=}x \nonumber \\ + a\wedge x \vee \overline{a}\wedge x &\overset{\hyperref[H2]{H2}}{=}(a\vee \overline{a})\wedge x\overset{\hyperref[H4]{H4}}{=} 1 \wedge x \overset{\hyperref[H3]{H3}}{=} x \text{ \textcolor{green}{\cmark}} \label{eq:beweis_konjunktion_vereinfachung} +\end{align} + +\begin{description} + \item[Implikant] Eine Konjunktion von Literalen, bei der die Funktion $f$ immer \enquote{1} ergibt, heißt Implikant\index{Implikant} $i$ der Funktion $f$ \enskip ($i\rightarrow f$). +\end{description} + +\begin{satz} + Die Vollkonjunktion der Funktion $f$ (auch Minterm\index{Minterm} genannt) sind Implikanten der Funktion $f$. +\end{satz} +\begin{satz} + Die aus vorhandenen Implikanten gefundenen vereinfachten Konjunktionen sind ebenfalls Implikanten. +\end{satz} + +\begin{description} + \item[\acf{PI}] \hfill\newline + Ein Primimplikant\index{Primimplikant} der Funktion $f$ ist ein Implikant der Funktion $f$, welcher mit keinem anderen Implikanten der Funktion $f$ zusammengefasst werden kann. + + \item[\textit{Eine} \acf{DMF}] \hfill\newline + \textit{Eine} (\textit{nicht die}) \acf{DMF}\index{Disjunktive Minimalform} der Funktion $f$ ist eine Disjunktion von Primimplikanten der Funktion $f$, welche minimal ist. + + \item[minimal] \enquote{minimal} bedeutet: \hfill + \begin{itemize}[noitemsep] + \item kleinste Zahl an Implikanten + \item kleine Zahl an Literalen in den Implikanten + \end{itemize} +\end{description} + +Offensichtlich ist $\overline{c}a\vee b\overline{a}$ die \acs{DMF} von $f$! $\Rightarrow$ Der \acs{PI} $\overline{c}b$ wird für die \acs{DMF} nicht gebraucht! + +\begin{description} + \item[\acf{KPI}]\index{Kernprimimplikant} Ein \acl{KPI} der Funktion $f$ ist ein \acs{PI} der Funktion $f$, welcher mindestens eine \enquote{1} in der Wertetabelle exklusiv abdeckt, \dash eine \enquote{1-Zeile} wird von keinem anderen \acs{KPI} abgedeckt. +\end{description} + +\begin{satz} + Die \acs{DMF} enthält mindestens alle \acs{KPI} (siehe \autoref{satz:kv_dmf} auf Seite~\pageref{satz:kv_dmf}). +\end{satz} + + +\section{KV-Diagramm} \label{sec:kv_diagramm} \index{KV-Diagramm} + +Das \acf{KV}-Diagramm ist die graphische Darstellung der Wertetabelle. + +\subsection{\acs{KV}-Diagramm für Funktion abhängig von 1 Variable: $f(a)$} +\columnratio{0.5} +\begin{paracol}{2} + \centering + \begin{tabular}{c|c|c} + Nr. & a & $f(a)$ \\ + \midrule + 0 & 0 & $f(0)$ \\ + 1 & 1 & $f(1)$ \\ + \end{tabular} + \switchcolumn + \centering + \karnaughmap{1}{$f(a):$}{{$a$}}{}{} +\end{paracol} + +\subsection{\acs{KV}-Diagramm für Funktion abhängig von 2 Variablen: $f(a,b)$} +\columnratio{0.5} +\begin{paracol}{2} + \centering + \begin{tabular}{c|cc|c} + Nr. & b & a & $f(a,b)$ \\ + \midrule + 0 & 0 & 0 & $f(0,0)$ \\ + 1 & 0 & 1 & $f(1,0)$ \\ + 2 & 1 & 0 & $f(0,1)$ \\ + 3 & 1 & 1 & $f(1,1)$ \\ + \end{tabular} + \switchcolumn + \centering + \karnaughmap{2}{$f(a,b):$}{{$b$}{$a$}}{}{} +\end{paracol} + +\subsection{\acs{KV}-Diagramm für Funktion abhängig von 3 Variablen: $f(a,b,c)$} + +Die Werte stammen aus \autoref{tbl:wertetabelle_schaltnetzanalyse}. +\medskip + +\columnratio{0.5} +\begin{paracol}{2} + \centering + \begin{tabular}{c|ccc|c|c} + Nr. & c & b & a & $f(a,b)$ & \\ + \midrule + 0 & 0 & 0 & 0 & 0 & \\ + 1 & 0 & 0 & 1 & 1 & $\overline{c}\overline{b}a$ \\ + 2 & 0 & 1 & 0 & 1 & $\overline{c}b\overline{a}$ \\ + 3 & 0 & 1 & 1 & 1 & $\overline{c}ba$ \\ + 5 & 1 & 0 & 0 & 0 & \\ + 5 & 1 & 0 & 1 & 0 & \\ + 6 & 1 & 1 & 0 & 1 & $cb\overline{a}$ \\ + 7 & 1 & 1 & 1 & 0 & \\ + \end{tabular} + \switchcolumn + \centering + \karnaughmap{3}{$f(a,b,c):$}{{$c$}{$b$}{$a$}}{01110010}{% + \linethickness{0.44mm} + \put(0,0.5){\textcolor{green}{\oval(1.9,0.9)[r]}}% 0,0.5 ist der Mittelpunk des Kreises, 0.9 der Durchmesser + \put(4,0.5){\textcolor{green}{\oval(1.9,0.9)[l]}} + \put(1.5,1){\textcolor{red}{\oval(0.9,1.9)}} + \put(1,0.5){\textcolor{blue}{\oval(1.9,0.9)}} + } +\end{paracol} + + +\subsection{\acs{KV}-Diagramm für Funktion abhängig von 4 Variablen: $f(a,b,c,d)$} + +\columnratio{0.30} +\begin{paracol}{2} + \karnaughmap{4}{$f(a,b,c,d):$}{{$d$}{$c$}{$b$}{$a$}}{0011001100010001}{% + \linethickness{0.44mm} + \put(2,2){\textcolor{red}{\oval(1.9,1.9)}}% 2,2 ist der Mittelpunk des Kreises, 1.9 der Durchmesser + \put(2,2.5){\textcolor{blue}{\oval(3.9,0.9)}} + } + \switchcolumn + \begin{tabular}{lll} + Wenn & $3+7:$ & $ a\wedge b\wedge \overline{d}$ \\ + Wenn & $11+15:$ & $ a\wedge b\wedge d$ \\ + Wenn & \textcolor{red}{$3+7+11+15$}: &$a\wedge b$ + \end{tabular} + + Um etwas zusammenzufassen, muss es sich um einen Block (\enquote{ein Rechteck}) handeln. So kann \textcolor{blue}{$2+3+6+7$} als Block/\enquote{Linie} zusammengefasst werden, aber $2+3+6+7+11+15$ kann nicht zusammengefasst werden. Es muss in zwei Blöcke aufgeteilt werden. +\end{paracol} + + +Im \acs{KV}-Diagramm werden die \acs{PI} als maximal große, rechteckige Blöcke von $2^n$ \enquote{1}-Feldern abgebildet! Wenn ein \acs{PI} ein Feld besitzt, welches nur von diesen \acs{PI} (und keinem anderen \acs{PI}) überdeckt wird, dann ist dieser \acs{PI} ein \acs{KPI}. + +\subsection{\acs{KV}-Diagramm für Funktion abhängig von 5 Variablen: $f(a,b,c,d,e)$} + +\begin{center} + \karnaughmap{5}{$f(a,b,c,d,e):$}{{$e$}{$d$}{$c$}{$b$}{$a$}}{000100000000000000010000000000}{% + \linethickness{0.44mm} + \put(1.5,2.5){\textcolor{red}{\oval(0.9,0.9)}} + \put(6.5,2.5){\textcolor{red}{\oval(0.9,0.9)}} + } +\end{center} + +\begin{Achtung} + Hier können die Felder 3 und 19 verbunden werden! + + \enquote{Nachbar} eines Feldes bedeutet, dass sich die Belegung genau einer Variablen ändert. Im zweidimensionalen gibt es 4 Nachbarn $\Rightarrow$ 4 Variablen können sich ändern! + + Für 5 und 6 Variablen wird ein \textbf{3-dimensionales} \acs{KV}-Diagramm benötigt, um die 5 oder 6 Nachbarn darstellen zu können. +\end{Achtung} + + +\subsection{Beispiel für ein KV-Diagramm mit 4 Variablen} +\columnratio{0.35} +\begin{paracol}{2} + \karnaughmap{4}{$f(a,b,c,d):$}{{$d$}{$c$}{$b$}{$a$}}{0101000100000011}{% + \linethickness{0.44mm} + \put(2.5,2){\textcolor{red}{\oval(0.9,1.9)}}% 2,2 ist der Mittelpunk des Kreises, 1.9 der Durchmesser + \put(2,2.5){\textcolor{purple}{\oval(1.9,0.9)}} + \put(1.5,3){\textcolor{green}{\oval(0.9,1.9)}} + \put(3,1.5){\textcolor{blue}{\oval(1.9,0.9)}} + } + \switchcolumn + \begin{tabular}{lll} + \textcolor{green}{$1+3$} & $a\overline{c}\overline{d}$ & \acs{KPI} \\ + \textcolor{blue}{$14+15$} & $acd$ & \acs{KPI} \\ + \textcolor{purple}{$3+7$} & $ab\overline{d}$ & \acs{PI} (keine \acs{KPI}) \\ + \textcolor{red}{$7+15$} & $abc$& \acs{PI} (keine \acs{KPI}) + \end{tabular} + + \acs{DMF}: \newline + $f(a,b,c,d) = a\overline{c}\overline{d} \vee bcd \vee ab\overline{d}$\newline + $\phantom{f(a,b,c,d)} = a\overline{c}\overline{d}\vee bcd\vee abc$, denn es gibt zwei Möglichkeiten für die 7 (\textcolor{purple}{$3+7$} oder \textcolor{red}{$7+15$}). +\end{paracol} +\bigskip + +\begin{satz}\label{satz:kv_dmf} + Die \acs{DMF} besteht manchmal auch aus nicht-\acs{KPI}, also \enquote{einfachen} \acs{PI}, wenn nicht alle \enquote{1} vom \acs{KPI} abgedeckt werden. + + In diesem Fall kann die \acs{DMF} auch nicht-eindeutig sein! Sie kann aber trotzdem eindeutig sein, wenn die fehlenden Felder von \acsp{PI} mit unterschiedlicher Größe (und damit auch unterschiedlicher Variablenzahl) abgedeckt werden (möglich erst ab 5 Variablen)! +\end{satz} + + +\section{\acl{KNF} / \acl{KMF}} +\acs{DNF} und \acs{DMF} verknüpfen die \enquote{1}. + +Die \acf{KNF} und die \acf{KMF} verknüpfen die \enquote{0}, bzw. wird sie aus den Wertetabellen durch die Nullen gebildet. + +Beispiel: $(a\vee b\vee c)\wedge(\overline{a}\vee b\vee d)\wedge(c\vee d)$ + +\medskip + +\begin{center} + \begin{tabular}{ccc|c|c} + c & b & a & $f(a,b,c)$ & Maxterm \\ + \midrule + 0 & 1 & 0 & 0 & $c\vee \overline{b}\vee a$ + \end{tabular} +\end{center} + +\begin{figure}[h] + \centering + \includegraphics[scale=0.7]{Bilder/KNF-DNF-Wikipedia.png} + \caption{KNF und DNF im Vergleich -- Quelle: \href{https://de.wikipedia.org/wiki/Konjunktive\_Normalform}{Wikipedia KNF}} +\end{figure} + +\newpage +\section{Schaltwerke} +\begin{description} + \item[Schaltnetz] \index{Schaltnetz} + Realisierung einer booleschen Funktion. + \item[Funktion] \index{Funktion} + Ausgangsbelegung hängt unmittelbar und ausschließlich von der + Eingangsbelegung ab. + \item[Schaltwerke] \index{Schaltwerke} + Schaltwerke, bei denen auch Rückkopplungen von Aus- zu Eingängen möglich + und erlaubt sind. +\end{description} + + + +Die \autoref{fig:schaltwerk} zeigt ein Schaltwerk, jedoch keine Funktion, da hier die Ausgangsbelegung auch von Ausgängen abhängt. Es gilt: $x=\neg(R\vee y')$ und $y=\neg(S\vee x')$ für die linke Seite und $x=\neg(R\wedge y')$ und $y=\neg(S\wedge x')$ für die rechte Seite. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[nor gate, inputs={nn}] at (0,2) (PORT) {}; + \node[nor gate, inputs={nn}] at (0,0) (PORT2) {}; + + \node[left=of PORT.input 1] (A) {$S$}; + \node[left=of PORT2.input 2] (B) {$R$}; + \node[left=of PORT.input 2] (Y1) {$y'$}; + \node[left=of PORT2.input 1] (X1) {$x'$}; + + \node[right=of PORT.output] (X) {$x$ $(Q*)$}; + \node[right=of PORT2.output] (Y) {$y$ $(Q)$}; + + \draw (A) -- (PORT.input 1); + \draw (B) -- (PORT2.input 2); + \draw (Y1) -- (PORT.input 2); + \draw (X1) -- (PORT2.input 1); + \draw (X) -- (PORT.output); + \draw (Y) -- (PORT2.output); + + \node at (0.5,1.25) {//}; + \node at (0.5,0.7) {//}; + + \draw ($(X1)+(0.3,-0.02)$) -- ($(X1)+(0.3,0.6)$) -- ($(X)+(-0.85,-0.6)$) -- ($(X)+(-0.85,0)$); + \draw ($(Y1)+(0.3,0.02)$) -- ($(Y1)+(0.3,-0.6)$) -- ($(Y)+(-0.85,0.6)$) -- ($(Y)+(-0.85,0)$); + \node[knoten] at ($(X)+(-0.85,0)$) {}; + \node[knoten] at ($(Y)+(-0.85,0)$) {}; + \end{tikzpicture} + \qquad + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[nand gate, inputs={nn}] at (0,2) (PORT) {}; + \node[nand gate, inputs={nn}] at (0,0) (PORT2) {}; + + \node[left=of PORT.input 1] (A) {$S$}; + \node[left=of PORT2.input 2] (B) {$R$}; + \node[left=of PORT.input 2] (Y1) {$y'$}; + \node[left=of PORT2.input 1] (X1) {$x'$}; + + \node[right=of PORT.output] (X) {$x$ $(Q*)$}; + \node[right=of PORT2.output] (Y) {$y$ $(Q)$}; + + \draw (A) -- (PORT.input 1); + \draw (B) -- (PORT2.input 2); + \draw (Y1) -- (PORT.input 2); + \draw (X1) -- (PORT2.input 1); + \draw (X) -- (PORT.output); + \draw (Y) -- (PORT2.output); + + \node at (0.5,1.25) {//}; + \node at (0.5,0.7) {//}; + + \draw ($(X1)+(0.3,-0.02)$) -- ($(X1)+(0.3,0.6)$) -- ($(X)+(-0.85,-0.6)$) -- ($(X)+(-0.85,0)$); + \draw ($(Y1)+(0.3,0.02)$) -- ($(Y1)+(0.3,-0.6)$) -- ($(Y)+(-0.85,0.6)$) -- ($(Y)+(-0.85,0)$); + \node[knoten] at ($(X)+(-0.85,0)$) {}; + \node[knoten] at ($(Y)+(-0.85,0)$) {}; + \end{tikzpicture} + \caption{Schaltwerk -- RS-Flip-Flop mit \texttt{NAND} und \texttt{NOR}} + \label{fig:schaltwerk} +\end{figure} + +\section{Schaltwerksanalyse} +Analysiert das Verhalten des Schaltwerks. + +\begin{enumerate}[noitemsep] + \item Das Auftrennen der rückgekoppelten Eingängen von den Ausgängen und entsprechende Neubenennung. + \item Aufstellen der Wertetabelle, wobei die vormals rückgekoppelten Eingänge als erstes aufgeführt werden (siehe \autoref{tbl:wertetabelle_schaltwerksanalyse} auf Seite~\pageref{tbl:wertetabelle_schaltwerksanalyse}). + \item Markieren der Zeilen der Wertetabelle als stabil oder instabil, je nachdem, ob die Belegungen der rückgekoppelten Eingänge mit den Belegungen der entsprechenden Ausgänge übereinstimmt ($x=x'$ und $y=y'$). + \item Bei instabilen Zeilen: Benennen der Folgezeilen, bis eine stabile Zeile erreicht wird oder ein Zyklus auftritt, bei welchem nie eine stabile Zeile erreicht werden kann (markiert mit $\lightning$). + \item Benennung der Zustände des Schaltwerks über die Belegung der rückgekoppelten Eingänge und Identifizieren derselben in den Zeilen der Wertetabelle. + \item Aufstellen des Zustandsübergangsdiagramms (Moore-Automat; Alternative: Mealy), wobei die Zustände mit der Belegung der rückgekoppelten Eingänge und die Zustandsgruppe mit der Belegung der unabhängigen Eingänge bezeichnet werden. + \item Interpretation des Verhaltens anhand des Automaten +\end{enumerate} + +\subsection*{Beispiel zur Schaltwerksanalayse} + +\begin{table}[h] + \centering + Es gilt: $x=\neg(S\vee y')$ und $y=\neg(R\vee x')$\newline + + \begin{tabular}{c|cccc|cccl} + Nr. & $y'$ & $x'$ & $R$ & $S$ & $y$ & $x$ & stabil? & wird zu? \\ + \midrule + 0 & 0 & 0 & 0 & 0 & 1 & 1 & \textcolor{red}{\xmark} & $\rightarrow 12$ \textcolor{red}{$\lightning$} \\ + 1 & 0 & 0 & 0 & 1 & 1 & 0 & \textcolor{red}{\xmark} & $\rightarrow 9$ \\ + 2 & 0 & 0 & 1 & 0 & 0 & 1 & \textcolor{red}{\xmark} & $\rightarrow 6$ \\ + 3 & \textcolor{blue}{\textbf{0}} & \textcolor{blue}{\textbf{0}} & 1 & 1 & \textcolor{blue}{\textbf{0}} & \textcolor{blue}{\textbf{0}} & \textcolor{green}{\cmark} & \\ + \midrule + 4 & \textcolor{blue}{\textbf{0}} & \textcolor{blue}{\textbf{1}} & 0 & 0 & \textcolor{blue}{\textbf{0}} & \textcolor{blue}{\textbf{1}} & \textcolor{green}{\cmark} & \\ + 5 & 0 & 1 & 0 & 1 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 1 \rightarrow 9$ \\ + 6 & \textcolor{blue}{\textbf{0}} & \textcolor{blue}{\textbf{1}} & 1 & 0 & \textcolor{blue}{\textbf{0}} & \textcolor{blue}{\textbf{1}} & \textcolor{green}{\cmark} & \\ + 7 & 0 & 1 & 1 & 1 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 3$ \\ + \midrule + 8 & \textcolor{blue}{\textbf{1}} & \textcolor{blue}{\textbf{0}} & 0 & 0 & \textcolor{blue}{\textbf{1}} & \textcolor{blue}{\textbf{0}} & \textcolor{green}{\cmark} & \\ + 9 & \textcolor{blue}{\textbf{1}} & \textcolor{blue}{\textbf{0}} & 0 & 1 & \textcolor{blue}{\textbf{1}} & \textcolor{blue}{\textbf{0}} & \textcolor{green}{\cmark} & \\ + 10 & 1 & 0 & 1 & 0 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 2 \rightarrow 6$ \\ + 11 & 1 & 0 & 1 & 1 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 3$ \\ + \midrule + 12 & 1 & 1 & 0 & 0 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 0$ \textcolor{red}{$\lightning$} \\ + 13 & 1 & 1 & 0 & 1 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 1 \rightarrow 9$ \\ + 14 & 1 & 1 & 1 & 0 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 2 \rightarrow 6$ \\ + 15 & 1 & 1 & 1 & 1 & 0 & 0 & \textcolor{red}{\xmark} & $\rightarrow 3$ \\ + \end{tabular} + \caption{Wertetabelle für ein Schaltwerk -- RS-Flip-Flop} + \label{tbl:wertetabelle_schaltwerksanalyse} +\end{table} + +Ein allgemeines Zustandsübergangsdiagramm wird in \autoref{fig:zustanddiagramm_allgemein} dargestellt. +\begin{figure}[h] \centering + \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=4.2cm,semithick] + \tikzstyle{every state}=[fill=white,draw=red,text=black,thick,minimum size=1.1cm] + \node[state] at (0,0) (A) {$y'x'$}; + \node at (4,0) (B) {}; + \path (A) edge [bend left] node {$R$ $S$} (B); + \end{tikzpicture} + \caption{Zustandsübergangsdiagramm -- Allgemeines Beispiel} + \label{fig:zustanddiagramm_allgemein} +\end{figure} + + +\begin{figure}[h] + \centering + \begin{tikzpicture}[->,>=stealth',shorten >=1pt,auto,node distance=4.2cm,semithick] + \tikzstyle{every state}=[fill=white,draw=red,text=black,thick,minimum size=1.2cm] + + \node[state] (A) {$01$}; + \node[state] (B) [above right of=A] {$00$}; + \node[state] (C) [below right of=B] {$10$}; + \node[state] (D) [below right of=A] {$11$}; + + \path (B) edge [loop above] node {11} (B) + (A) edge [loop left] node {00,10} (A) + (C) edge [loop right] node {00,01} (C) + (A) edge [bend left] node {01} (C) + (C) edge [bend left] node {10} (A) + (A) edge [bend left] node {11} (B) + (B) edge [bend left] node {10} (A) + (C) edge [bend right] node {11} (B) + (B) edge [bend right] node {01} (C) + (D) edge [bend left] node {10} (A) + (D) edge [bend right] node {01} (C) + (D) edge node {11} (B) + + (B) edge [bend right] node {00} ($(B)+(-3,1)$) + (D) edge [bend left] node {00} ($(D)+(-3,-1)$) + ; + \node at ($(B)+(-3.2,1)$) {\Huge{\textcolor{red}{$\lightning$}}}; + \node at ($(D)+(-3.2,-1)$) {\Huge{\textcolor{red}{$\lightning$}}}; + + \end{tikzpicture} + \caption{Zustandsübergangsdiagramm -- \acs{RS-FF}} + \label{fig:rs_flip_flop} +\end{figure} + +Das gezeichnete und analysierte Schaltwerk in \autoref{fig:rs_flip_flop} ist ein \acl{RS-FF}. Ein Flip-Flop speichert 1~Bit an Informationen, \dash es gibt zwei (Arbeits-)Zustände! + +\begin{center} + \begin{tabular}{ll} + $R=0$ $S=1$ & $\Rightarrow$ Arbeitszustand, \enquote{10} (gesetzt) \\ + $R=1$ $S=0$ & $\Rightarrow$ Arbeitszustand \enquote{01} (gelöscht) \\ + $R=S=0$ & $\Rightarrow$ Arbeitszustand bleibt erhalten \\ + $R=S=1$ & $\Rightarrow$ nicht-Arbeitszustand \enquote{00} wird erreicht \\ + \end{tabular} +\end{center} + +\textit{Problem}: Die Änderung auf $R=S=0$ bewirkt ein endloses ein Hin- und Herwechseln zwischen \enquote{00} und \enquote{11} (vgl. Zeile 12) +$\Rightarrow$ deshalb wird die Eingangsbelegung $R=S=1$ \enquote{verboten}. + +\textit{Anwendungsbeispiel}: \acs{RS-FF}: Lichtschalter mit zwei getrennten Schaltstellen für \enquote{Ein} und \enquote{Aus}. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.6,0.6) (RSFF) {RS-FF}; + \node (R) {~R}; + \node[below=of R] (S) {~S}; + \node[right=of R] (Q1) {Q~~}; + \node[right=of S] (Q2) {Q*}; + + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \draw (R) -- ($(R) + (-1,0)$); + \draw (S) -- ($(S) + (-1,0)$); + \draw (Q1) -- ($(Q1) + (1,0)$); + \draw (Q2) -- ($(Q2) + (1,0)$); + + \end{tikzpicture} + \caption{Schaltsymbol -- RS-Flip-Flop} + \label{fig:rs_ff_symbol} +\end{figure} + +\begin{Hinweis} + In \autoref{fig:rs_ff_symbol} wird ein RS-FF gezeigt. Bei $Q*$ liegt ein negiertes $Q$ an, weshalb die Darstellung in Büchern die Ausgänge $Q_1$ und $Q_2$ bevorzugen, wobei $Q_2$ negiert ist. +\end{Hinweis} + +\subsection{\acl{TPS} und \acl{TFS}} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node (R) {~R}; + \node[below=of R] (S) {~S}; + \node[right=of R] (Q1) {Q~~}; + \node[right=of S] (Q2) {Q*}; + \node at ($(S) + (-2,0)$) (D) {D}; + + \node[thick,circle, draw=black, inner sep=0pt, minimum size=5pt] at ($(R) + (-0.35,0)$) {}; + + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \node at ($(Q1) + (1,0)$) (QOut) {Q}; + \draw (Q1) -- (QOut); + + \draw ($(R) + (-0.4,0)$) -- ($(R) + (-1,0)$) -- ($(S) + (-1,0)$); + \draw (S) -- (D); + \node[knoten] at ($(S) + (-1,0)$) (knoten) {}; + + \node at (-0.5,-2.2) (E) {$\hat{=}$~~~~D}; + \node[right=of E] (Q) {Q}; + \draw (E) -- (Q); + + \end{tikzpicture} + \caption{\enquote{falsches} Schaltsymbol -- D-Flip-Flop} + \label{fig:d_ff_symbol_simpel} +\end{figure} + +\begin{description} + \item[D-Flip-Flop] \index{D-FF}\enquote{Data}, nur ein Eingangssignal $D$, welches vom Flip-Flop übernommen und gespeichert wird. + $\Rightarrow$ Wie in \autoref{fig:d_ff_symbol_simpel} zu sehen ist, macht der D-Flip-Flop nur mit Taktsteuerung/Takt als Eingangssignal Sinn! +\end{description} + + +\begin{description} + \item[Takt]\index{Takt} + Ein weiteres Eingangssignal, welches bestimmt, ob die anderen Eingangssignale Auswirkungen auf die Ausgangssignale haben oder nicht. $\Rightarrow$ Nur bei aktivem Takt hat die Eingangsbelegung Auswirkung auf die Ausgangsbelegung. Bei inaktivem Takt bleibt die vorherige Ausgangsbelegung erhalten. + + $\Rightarrow$ ein \enquote{taktgesteuertes Schaltnetz} wird zum Schaltwerk. + + \item[\acf{TPS}]\index{Taktpegelsteuerung} Der Takt ist aktiv, solang der Takt einen bestimmten Pegel hat. + \begin{description} + \item[positive \acs{TPS}] Der Takt ist aktiv, solange Takt = \enquote{High}. \autoref{fig:rst_schaltwerk} zeigt diese als Schaltwerk und \autoref{fig:rst_ff_symbol} als Schaltzeichen. + \item[negative \acs{TPS}] Der Takt ist aktiv, solange Takt = \enquote{Low} + \end{description} +\end{description} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[nor gate, inputs={nn}] at (0,1) (OR1) {}; + \node[nor gate, inputs={nn}] at (0,-1) (OR2) {}; + \node[and gate, inputs={nn}, left=of OR1] (AND1) {}; + \node[and gate, inputs={nn}, left=of OR2] (AND2) {}; + + \node at (-3.5,0) (T) {T}; + \node[right=of OR1] (Q1) {Q*}; + \node[right=of OR2] (Q2) {Q~}; + + \node[left=of AND1.input 1] (S) {S}; + \node[left=of AND2.input 2] (R) {R}; + + \node[knoten] at (T -| S) (K) {}; + \node[knoten] at ($(Q1)+(-0.6,0)$) (K2) {}; + \node[knoten] at ($(Q2)+(-0.6,0)$) (K3) {}; + \draw (K2) -- ($(K2)+(0,-0.7)$) + -- ($(OR2.input 2) + (-0.4,0.5)$) + |- (OR2.input 1); + \draw (K3) -- ($(K3)+(0,0.7)$) + -- ($(OR1.input 2) + (-0.4,-0.5)$) + |- (OR1.input 2); + + \draw (T) -- (K) |- (AND1.input 2); + \draw (K) |- (AND2.input 1); + \draw (S) -- (AND1.input 1) (R) -- (AND2.input 2); + \draw (Q1) -- (OR1.output) (Q2) -- (OR2.output); + \draw (AND1.output) -| (OR1.input 1); + \draw (AND2.output) -| (OR2.input 2); + + \end{tikzpicture} + \caption{Schaltwerk -- RS-FF mit positiver \acl{TPS}} + \label{fig:rst_schaltwerk} +\end{figure} + + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.6,0.6) (RSFF) {RS-FF mit TPS}; + \node (R) {~R}; + \node[below=of R] (S) {~S}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.85,0)$) {T}; + \node[right=of R] (Q1) {Q~~}; + \node[right=of S] (Q2) {Q*}; + + \node at ($(Q1)+(1,0)$) (Q1Text) {Q}; + \node at ($(Q2)+(1,0)$) (Q2Text) {Q*}; + \node at ($(R)+(-1,0)$) (RText) {R}; + \node at ($(S)+(-1,0)$) (SText) {S}; + \node at ($(T)+(-0.8,0)$) (TText) {T}; + + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \draw (R) -- (RText); + \draw (S) -- (SText); + \draw (T) -- (TText); + \draw (Q1) -- (Q1Text); + \draw (Q2) -- (Q2Text); + + \draw ($(T)+(-0.1,-0.14)$) -- ++(0.25,0) -- ++(0,0.3) -- ++(-0.25,0); + \end{tikzpicture} + \caption{Schaltsymbol -- RS-FF mit \acl{TPS}} + \label{fig:rst_ff_symbol} +\end{figure} + + +\begin{description} + \item[\acf{TFS}]\index{Taktflankensteuerung} Der Takt ist aktiv, wenn der Takt den Pegel ändert. + \begin{description} + \item[positive \acs{TFS}] Takt wecheselt von \enquote{Low} nach \enquote{High}. + \item[negative \acs{TFS}] Takt wecheselt von \enquote{High} nach \enquote{Low}. + \end{description} +\end{description} + +\textit{Realisierung der \acs{TFS}:} Eine Variante mit wenig Aufwandist die Verwendung eines \enquote{modifizierten} Taktsignals $T_{modifiziert}$ mit nur kurzen \enquote{High} und langem \enquote{Low}-Pegel. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[] (TORG) {$T_{original}$}; + \node[below=of TORG] (TMOD) {$T_{modifiziert}$}; + + \node at ($(TMOD) + (0,-3.5)$) (TStrich) {$T_{neg}$}; + \node[below=of TStrich] (TX) {$T_X$}; + + \draw (TORG) -- ++(1.1,0)-- ++(0,0.5)-- ++(0.5,0)-- ++(0,-0.5) -- ++(0.5,0) -- ++(0,0.5) -- ++(0.5,0) -- ++(0,-0.5) -- ++(0.5,0) -- ++(0,0.5) -- ++(0.5,0) -- ++(0,-0.5) -- ++(0.5,0); + + \draw (TMOD) -- ++(1.1,0)-- ++(0,0.5)-- ++(0.15,0)-- ++(0,-0.5) -- ++(0.85,0) -- ++(0,0.5) -- ++(0.15,0) -- ++(0,-0.5) -- ++(0.85,0) -- ++(0,0.5) -- ++(0.15,0) -- ++(0,-0.5) -- ++(0.85,0); + + + \draw ($(TStrich)+(0.3,0.2)$) -- ++(0.8,0)-- ++(0,-0.5)-- ++(0.5,0)-- ++(0,0.5) -- ++(0.5,0) -- ++(0,-0.5) -- ++(0.5,0) -- ++(0,0.5) -- ++(0.5,0) -- ++(0,-0.5) -- ++(0.5,0) -- ++(0,0.5) -- ++(0.5,0); + + \draw (TX) -- ++(1.1,0)-- ++(0,0.5)-- ++(0.15,0)-- ++(0,-0.5) -- ++(0.85,0) -- ++(0,0.5) -- ++(0.15,0) -- ++(0,-0.5) -- ++(0.85,0) -- ++(0,0.5) -- ++(0.15,0) -- ++(0,-0.5) -- ++(0.85,0); + + + \node at (0,-3.5) (TAND) {$T_{original}$}; + \node[knoten] at (TAND -| 1.5,0) (K) {}; + \node[not gate,inputs={n}] at ($(K)+(0.7,0.8)$) (NOT) {}; + + \node[and gate, inputs={nn}] at ($(TAND)+(3.5,0)$) (AND) {}; + \node[right=of AND.output] (TXAND) {$T_{X}$}; + \draw (AND.output) -- (TXAND); + \draw (TAND) -- (K) |- (NOT) (K) |- (AND.input 2) + (NOT.output) -- ($(NOT.output)+(0.3,0)$) |- (AND.input 1); + + + + \draw[thick,orange,->] ($(TORG)+(1.1,0)$) .. controls (2.5,-1.5) and (0,-4) .. ($(TStrich)+(1.1,0)$); + \draw[thick,orange,->] ($(TORG)+(1.1,0)$) .. controls (2.5,-1.5) and (-0.3,-4.5) .. ($(TX)+(1.1,0.2)$); + \draw[thick,orange,->] ($(TORG)+(1.6,0)$) .. controls (3,-1.5) and (0.5,-4) .. ($(TStrich)+(1.6,0)$); + + \end{tikzpicture} + \caption{Verzögerung -- \acl{TFS}} + \label{fig:verzoegerung_tfs} +\end{figure} + +\autoref{fig:verzoegerung_tfs} veranschaulicht die \acl{TFS}. $T_{original}$ wird mit sich selbst negiert \texttt{UND}-verknpüft, sodass $T_X$ immer den Wert \enquote{0} hat. \autoref{tbl:verzoegerung_tfs} stellt dies in einer Wertetabelle dar. Da jedoch jedes Bauteil eine gewisse Verzögerung verursacht (in diesem Fall ist das \texttt{NOT} gemeint), hat $T_X$ für kurze Zeit den Wert \enquote{1}, nämlich dann, wenn $T_{original}$ von \enquote{0} auf \enquote{1} wechselt ($T_{original}$ und $T_{neg}$ haben dann kurz beide den Wert \enquote{1})! + +$\Rightarrow$ Damit verhalten sich \acs{TPS}-Flip-Flops wie \acs{TFS}-Flip-Flops gegenüber dem ursprünglichen Taktsignal $T_{Original}$. + +\autoref{fig:rst_d_ff_tfs_symbol} zeigt die Schaltsymbole für einen RS-FF und D-FF jeweils mit \acs{TFS}. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.6,0.6) (RSFF) {RS-FF mit TFS}; + \node (R) {~R}; + \node[below=of R] (S) {~S}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.85,0)$) {T}; + \node[right=of R] (Q1) {Q~~}; + \node[right=of S] (Q2) {Q*}; + + \node at ($(Q1)+(1,0)$) (Q1Text) {Q}; + \node at ($(Q2)+(1,0)$) (Q2Text) {Q*}; + \node at ($(R)+(-1,0)$) (RText) {R}; + \node at ($(S)+(-1,0)$) (SText) {S}; + \node at ($(T)+(-0.8,0)$) (TText) {T}; + + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \draw (R) -- (RText); + \draw (S) -- (SText); + \draw (T) -- (TText); + \draw (Q1) -- (Q1Text); + \draw (Q2) -- (Q2Text); + + \draw ($(T)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + \end{tikzpicture} + \hspace*{1cm} + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.65,0.6) (RSFF) {D-FF mit TFS}; + \node (R) {}; + \node[below=of R] (S) {~S}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.85,0)$) {T}; + \node[right=of S] (Q2) {Q}; + + \node at ($(Q2)+(1,0)$) (Q2Text) {Q~}; + \node at ($(S)+(-1,0)$) (DText) {D}; + \node at ($(T)+(-0.8,0)$) (TText) {T}; + + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \draw (S) -- (DText); + \draw (T) -- (TText); + \draw (Q2) -- (Q2Text); + + \draw ($(T)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + \end{tikzpicture} + \caption{Schaltsymbol -- RS-Flip-Flop und D-Flip-Flop je mit \acs{TFS}} + \label{fig:rst_d_ff_tfs_symbol} +\end{figure} + +\begin{table} + \centering + \begin{tabular}{c|c|c|c} + Nr. & $T_{orig}$ & $T'$ & $T_X$ \\ + \midrule + 0 & 0 & 1 & 0 \\ + 1 & 1 & 0 & 0 \\ + \end{tabular} + \caption{Wertetabelle - Verzögerung bei der \acl{TFS}} + \label{tbl:verzoegerung_tfs} +\end{table} + + +\textit{Anwendung D-FF}: als schneller Speicher, \zB im CPU-Register, L1-Cache $\Rightarrow$ als klassischer 1~Bit-Speicher + +\newpage +\subsubsection{JK-Flip-Flop} +\enquote{JK} steht für \enquote{Jack Kilby}, bzw. \enquote{Jump-Kill}. + +Er besitzt dasselbe Verhalten wie der RS-Flip-Flop, verhindert aber die verbotene Eingangsbelegung $R=S=1$ $\Rightarrow$ $J=K=1$ ist erlaubt, dann togglet das JK-Flip-Flop zwischen gesetzt und rückgesetzt. $\Rightarrow$ Bei Wechsel auf $J=K=0$ behält das JK-Flip-Flop in jedem Fall den letzten vorigen Zustand bei. + +\textit{Besonders gut}: JK-Flip-Flop mit \acl{TFS}: Der Flip-Flop toggelt bei $J=K=1$ und aktiver Tanktflanke genau \textit{ein} mal! + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.6,0.6) (RSFF) {RS-FF}; + \node (R) {~R}; + \node[below=of R] (S) {~S}; + \node[right=of R] (Q1) {Q~~}; + \node[right=of S] (Q2) {Q*}; + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \node[and gate, inputs={nn},left=of R] (AND1) {}; + \node[and gate, inputs={nn},left=of S] (AND2) {}; + + \node[left=of AND1.input 2] (K) {K}; + \node[left=of AND2.input 1] (J) {J}; + \draw (K) -- (AND1.input 2); + \draw (J) -- (AND2.input 1); + + \draw (R) -- (AND1) (S) -- (AND2); + \draw (Q1) -- ($(Q1) + (1.4,0)$); + \draw (Q2) -- ($(Q2) + (1.4,0)$); + + \node[knoten] at ($(Q1) + (0.8,0)$) (KN1) {}; + \node[knoten] at ($(Q2) + (0.8,0)$) (KN2) {}; + \draw (KN1) -- ++(0,1) -| ($(AND1.input 1) + (-0.5,0)$) -- (AND1.input 1); + \draw (KN2) -- ++(0,-0.8) -| ($(AND2.input 2)+ (-0.5,0)$) -- (AND2.input 2); + \end{tikzpicture} + \caption{JK-Flip-Flop} + \label{fig:kj_ff} +\end{figure} + + +\subsection{\acf{T-FF}} +Den \acf{T-FF} gibt es nur mit \acf{TFS}! Im Grunde ist es ein \acs{JK-FF} mit $J=K=1$, kann aber auch als \acs{D-FF} realisiert werden. \autoref{fig:jk_als_t_ff} und \autoref{fig:d_als_t_ff} stellen diese beiden Umsetzungen dar und \autoref{fig:symbol_t_ff} zeigt das Schaltsymbol bzw. Gatter des \acs{T-FF}. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.6,0.6) (RSFF) {JK-FF mit TFS}; + \node (R) {~J}; + \node[below=of R] (S) {~K}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.85,0)$) {T}; + \node[right=of R] (Q1) {}; + \node[right=of S] (Q2) {Q}; + + \node at ($(Q2)+(1,0)$) (Q2Text) {Q}; + \node at ($(R)+(-1,0)$) (RText) {\enquote{1}}; + \node at ($(S)+(-1,0)$) (SText) {\enquote{1}}; + \node at ($(T)+(-0.8,0)$) (TText) {T}; + + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.2,-0.3)$); + + \draw (R) -- (RText); + \draw (S) -- (SText); + \draw (T) -- (TText); + \draw (Q2) -- (Q2Text); + + \draw ($(T)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + \end{tikzpicture} + \caption{JK-FF als T-FF} + \label{fig:jk_als_t_ff} +\end{figure} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.6,0.9) (RSFF) {D-FF}; + \node (R) {}; + \node[below=of R] (S) {~D}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.85,0)$) {T}; + \node[right=of S] (Q2) {Q*}; + \node[above=of Q2] (Q1) {Q}; + + \node at ($(Q1)+(1,0)$) (Q1Text) {~Q}; + \node at ($(T)+(-0.8,0)$) (TText) {T}; + + \draw ($(R)+(-0.3,0.5)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \draw (T) -- (TText); + \draw (Q1) -- (Q1Text); + \draw (Q2) -| ($(Q2)+(1,-1)$) -| ($(S) + (-1,0)$) -- (S); + + \draw ($(T)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + \end{tikzpicture} + \caption{D-FF als T-FF} + \label{fig:d_als_t_ff} +\end{figure} + + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node at (0.6,0.6) (RSFF) {T-FF}; + \node (R) {~~}; + \node[below=of R] (S) {~~}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.75,0)$) {T}; + \node[right=of R] (Q1) {Q*~}; + \node[right=of S] (Q2) {Q~~}; + + \node at ($(Q1)+(1,0)$) (Q1Text) {Q*}; + \node at ($(Q2)+(1,0)$) (Q2Text) {Q}; + \node at ($(R)+(-1,0)$) (RText) {}; + \node at ($(S)+(-1,0)$) (SText) {}; + \node at ($(T)+(-0.7,0)$) (TText) {T}; + + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + + \draw (T) -- (TText); + \draw (Q1) -- (Q1Text); + \draw (Q2) -- (Q2Text); + + \draw ($(T)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + \end{tikzpicture} + \caption{Schaltsymbol/Gatter des T-FF} + \label{fig:symbol_t_ff} +\end{figure} + + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + + \node at (0.6,0.6) {T-FF}; + \node at (0,0) (R) {~~}; + \node[below=of R] (S) {~~}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.65,0)$) {T}; + \node[right=of S] (Q2) {Q~~}; + \node at ($(R)+(-1,0)$) (RText) {}; + \node at ($(S)+(-1,0)$) (SText) {}; + \node at ($(T)+(-0.6,0)$) (TText) {T}; + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + \draw (T) -- (TText); + \draw ($(T)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + + + \node at (3.6,0.6) {T-FF}; + \node at (3,0) (R2) {~~}; + \node[below=of R2] (S2) {~~}; + \node at ($(R2) + (-0.2,-0.65)$) (T2) {}; + \node at ($(T2) + (0.65,0)$) {T}; + \node[right=of S2] (Q22) {Q~~}; + \node at ($(Q22)+(1,0)$) (Q2Text2) {}; + \node at ($(R2)+(-1,0)$) (RText2) {}; + \node at ($(S2)+(-1,0)$) (SText2) {}; + \draw ($(R2)+(-0.3,0.3)$) rectangle ($(Q22)+(0.3,-0.3)$); + \draw (Q22) -- (Q2Text2); + \draw ($(T2)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + + + \node at (6.6,0.6) {T-FF}; + \node at (6,0) (R3) {~~}; + \node[below=of R3] (S3) {~~}; + \node at ($(R3) + (-0.2,-0.65)$) (T3) {}; + \node at ($(T3) + (0.65,0)$) {T}; + \node[right=of S3] (Q23) {Q~~}; + \node at ($(Q23)+(1,0)$) (Q2Text3) {}; + \node at ($(R3)+(-1,0)$) (RText3) {}; + \node at ($(S3)+(-1,0)$) (SText3) {}; + \draw ($(R3)+(-0.3,0.3)$) rectangle ($(Q23)+(0.3,-0.3)$); + \draw (Q23) -- (Q2Text3); + \draw ($(T3)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + + \draw (Q2) -- ($(Q2) + (1,0)$) |- (T2); + \draw (Q22) -- ($(Q22) + (1,0)$) |- (T3); + + \node at (2,-1.4) {$Q_0$}; + \node at (5,-1.4) {$Q_1$}; + \node at (8,-1.4) {$Q_2$}; + + \end{tikzpicture} + \vspace{5mm} + \begin{tabular}{c|ccc|ccc|c} + Takt $T$ & $Q_0$ & $Q_1$ & $Q_2$ & $Q_2$ & $Q_1$ & $Q_0$ & \\ + \midrule + 0 & 0 & 0 & 0 & 0 & 0 & 0 & \\ + 1 & 1 & 1 & 1 & 1 & 1 & 1 & 7 \\ + 0 & 1 & 1 & 1 & & & & \\ + 1 & 0 & 1 & 1 & 1 & 1 & 0 & 6 \\ + 0 & 0 & 1 & 1 & & & & \\ + 1 & 1 & 0 & 1 & 1 & 0 & 1 & 5 \\ + 0 & 1 & 0 & 1 & & & & \\ + 1 & 0 & 0 & 1 & 1 & 0 & 0 & 4 \\ + 0 & 0 & 0 & 1 & & & & \\ + 1 & 1 & 1 & 0 & 0 & 1 & 1 & 3 \\ + 0 & 1 & 1 & 0 & & & & \\ + 1 & 0 & 1 & 0 & 0 & 1 & 0 & 2 \\ + \multicolumn{7}{c}{\ldots} \\ + \end{tabular} + \caption{3~Bit~Zähler -- Rückwärtszähler} + \label{fig:3_bit_zaehler} +\end{figure} + +Wie in \autoref{fig:3_bit_zaehler} auf Seite~\pageref{fig:3_bit_zaehler} zu sehen ist, handelt es sich um einen Rückwärtszähler. Würde anstatt $Q$ $Q*$ verwendet werden, also der Ausgang jeweils negiert werden, aber weiterhin $Q$ für die Werteberechnung verwendet werden, so würde es sich um einen Vorwärtszähler handeln. Gegebenenfalls kann mit \texttt{XOR} and den Ausgängen $Q_0$ und $Q_1$ ein \enquote{Schalter} eingebaut werden, mit dem zwischen Vorwärts- und Rückwärtszähler gewechselt werden kann. + +Anwendungsen: +\begin{enumerate}[noitemsep] + \item Frequenzteiler (Frequenzhalbierer) + \item Zähler (Rückwärtszähler oder Vorwärtszähler) + \item Ein-/Ausschalter mit mehreren Bedienstellen, welche jeweils zum Ein- und Ausschalten gedacht sind. +\end{enumerate} + +\begin{figure}[h] + \centering + %\textit{Siehe Graphik Nr 5} + \textit{8 Transistoren (2 \texttt{AND} und 2 \texttt{NOR} mit jeweils 2 Eingängen)} + \medskip + + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[nor gate, inputs={nn}] at (0,1) (OR1) {}; + \node[nor gate, inputs={nn}] at (0,-1) (OR2) {}; + \node[and gate, inputs={in}, left=of OR1] (AND1) {}; + \node[and gate, inputs={nn}, left=of OR2] (AND2) {}; + + \node at (-3.5,0) (T) {T}; + \node[right=of OR1] (Q1) {Q*}; + \node[right=of OR2] (Q2) {Q~}; + + \node[left=of AND1.input 1] (S) {}; + \node[left=of AND2.input 2] (R) {}; + + \node[knoten] at (T -| S) (K) {}; + \node[knoten] at ($(Q1)+(-0.6,0)$) (K2) {}; + \node[knoten] at ($(Q2)+(-0.6,0)$) (K3) {}; + \draw (K2) -- ($(K2)+(0,-0.7)$) + -- ($(OR2.input 2) + (-0.4,0.5)$) + |- (OR2.input 1); + \draw (K3) -- ($(K3)+(0,0.7)$) + -- ($(OR1.input 2) + (-0.4,-0.5)$) + |- (OR1.input 2); + + \draw (T) -- (K) |- (AND1.input 2); + \draw (K) |- (AND2.input 1); + \draw (AND1.input 1) -- ($(AND1.input 1)+(-1.5,0)$) -| ($(R)+(-1.5,0)$); + \draw ($(R)+(-1.5,0)$) -- (AND2.input 2); + \draw ($(R)+(-1.5,0)$) -- ($(R)+(-2,0)$); + \node at ($(R)+(-2.4,0)$) {D}; + \draw (Q1) -- (OR1.output) (Q2) -- (OR2.output); + \draw (AND1.output) -| (OR1.input 1); + \draw (AND2.output) -| (OR2.input 2); + + \node[knoten] at ($(R)+(-1.5,0)$) {}; + + \end{tikzpicture} + \bigskip + + \textit{6 Transistoren (2 \texttt{NAND} mit jeweils 3 Eingängen)} + \medskip + + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[nand gate, inputs={inn}] at (0,1) (NAND1) {}; + \node[nand gate, inputs={nnn}] at (0,-1) (NAND2) {}; + + \node at (-2,0) (T) {T}; + \node[right=of NAND1] (Q1) {Q*}; + \node[right=of NAND2] (Q2) {Q~}; + + \node[knoten] at ($(Q1)+(-0.6,0)$) (K2) {}; + \node[knoten] at ($(Q2)+(-0.6,0)$) (K3) {}; + \draw (K2) -- ($(K2)+(0,-0.7)$) + -- ($(NAND2.input 2) + (-0.4,0.5)$) + |- (NAND2.input 1); + \draw (K3) -- ($(K3)+(0,0.7)$) + -- ($(NAND1.input 3) + (-0.4,-0.5)$) + |- (NAND1.input 3); + + \node[] at ($(NAND2.input 3) + (-2.8,0)$) (D) {D}; + + \draw (T) -- ($(T)+(1,0)$) |- (NAND1.input 2); + \draw ($(T)+(1,0)$) |- (NAND2.input 2); + \node[knoten] at ($(T)+(1,0)$) {}; + \draw (Q1) -- (NAND1.output) (Q2) -- (NAND2.output); + + \draw (NAND1.input 1) -- ($(NAND1.input 1) + (-2,0)$) |- ($(NAND2.input 3) + (-2,0)$) -- (NAND2.input 3); + \draw ($(NAND2.input 3) + (-2,0)$) -- ($(NAND2.input 3) + (-2.4,0)$); + \node[knoten] at ($(NAND2.input 3) + (-2.12,0)$) {}; + + \end{tikzpicture} + \caption{Hardwareaufwand für D-FF} + \label{fig:hw_aufwand_dff} +\end{figure} + +Wie in \autoref{fig:hw_aufwand_dff} auf Seite~\pageref{fig:hw_aufwand_dff} zu sehen ist, beträgt der Hardwareaufwand für den \acs{D-FF} 8 Transistoren bzw. 6 Transistoren bei 1-Bit Speicherkapazität. + +\subsection{Kondensator} +Andere Speichertechnologie mit weniger Aufwand. Für die Ladung gilt: $Q=C\cdot U$ \newline +Einsatz: \zB Hauptspeicher des Universalrechners + +\begin{itemize}[noitemsep] + \item speichert Ladung + \begin{itemize}[noitemsep] + \item Kondensator aufgeladen $\hat{=} 1$ + \item Kondensator entladen ~~ $\hat{=} 0$ + \end{itemize} +\end{itemize} + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + \draw[very thick] (0.3,-0.66) -- ++(0.4,0); + \draw[very thick] (0.2,-0.53) -- ++(0.58,0); + \draw[very thick] (0.1,-0.4) -- ++(0.8,0); + + \draw[thick] (0.5,-0.4) -- ++(0,0.7); + + \draw[very thick] (-0.1,0.3) -- (1.1,0.3) ++ (0,0.3) -- ++(-1.2,0); + + \draw[thick] (0.5,0.6) -- (0.5,1.5) -- ++(2,0) -- ++(0,-2.3); + \draw[ultra thick,<->,red] (2.5,1.1) -- ++(0,-1.2); + \node[] at (3.45,0.5) (text) {$Q=C\cdot V$}; + \end{tikzpicture} + \caption{Kondensator -- Wie messen, ob er geladen ist?} + \label{fig:kodensator_messen} +\end{figure} + +Um den Ladungszustand festzustellen, muss die Spannung gemessen werden (siehe \autoref{fig:kodensator_messen} auf Seite~\pageref{fig:kodensator_messen})! Wird die Spannung gemessen, so gibt es einen Stromfluss $\Rightarrow$ Die Ladung geht verloren! Siehe deshalb \autoref{fig:kondensator_select} auf Seite~\pageref{fig:kondensator_select}. + +\begin{figure}[h] + \centering + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + \draw[very thick] (0.3,-0.66) -- ++(0.4,0); + \draw[very thick] (0.2,-0.53) -- ++(0.58,0); + \draw[very thick] (0.1,-0.4) -- ++(0.8,0); + + \draw[thick] (0.5,-0.4) -- ++(0,0.7); + + \draw[very thick] (-0.1,0.3) -- (1.1,0.3) ++ (0,0.3) -- ++(-1.2,0); + + \draw[thick] (0.5,0.6) -- (0.5,1.5); + + \node[] at (1,1.8) (knoten1) {}; + \draw[thick] (0.5,1.5) -- ++(0.5,0) -- (knoten1); + \draw[very thick] ($(knoten1) + (-0.3,0)$) -- ++(0.6,0); + + \node[] at (2.2,1.8) (knoten2) {}; + \draw[very thick] ($(knoten2) + (-0.3,0)$) -- ++(0.6,0); + + \draw[thick] ($(knoten1) + (-0.3,0.4)$) -- ($(knoten2) + (0.3,0.4)$); + \draw[thick] (knoten2) -- ++(0,-0.3) -- ++(0.5,0) -- ++(0,-2.2); + + \draw[ultra thick,<->,red] (2.7,1.1) -- ++(0,-1.2); + \node[] at (4.5,0.5) (text) {read/write bzw. Data}; + \node[] at (1.5,2.6) (text) {Select}; + \end{tikzpicture} + \caption{Kondensator -- Speicherzustand messen oder halten über Transistor} + \label{fig:kondensator_select} +\end{figure} + +\begin{Hinweis} + Nach \textbf{jedem} Lesen muss der Speicherzustand wieder aufgefrischt werden.\newline + Dies macht eine Refresh-Logik. +\end{Hinweis} + +\textbf{2. Problem}: Leckströme führen zum ständigen/langsamen Ladungsverlust, sodass der gesamte Speicher zyklisch, also regelmäßig, komplett durchgelesen werden muss, damit er wieder \enquote{aufgefrischt} wird. + +Es ist kein \acs{D-FF} für jeden Kondensatorspeicher (Refreshlogik) notwendig, sondern nur so viele, wie vom Kondensatorspeicher gleichzeitig gelesen werden (\zB 64~Bit)! + +Schreiben des Kondensatorspeichers +$\Rightarrow$ Anlegen der entsprechenden Spannung für 1 oder 0 / \enquote{High} oder \enquote{Low} / $5V$ oder $0V$ zum Aufladen oder Entladen des Kondensators. +$\Rightarrow$ Spannung an \texttt{data} Anlegen statt zu Messen und \texttt{select=1}. + +\textit{Nachteil:} langsames Schreiben wegen Auf-/Entladekurve beim Kondensator (siehe \autoref{fig:ladekurve_kondensator} auf Seite~\pageref{fig:ladekurve_kondensator}). + +\begin{figure}[h] + \centering + \begin{tikzpicture} + + \begin{axis}[grid=both, + xmax=15,ymax=1, + axis lines=middle, + restrict y to domain=0:13, + enlargelimits] + \addplot[thick,green,domain=0:13] {(1-pow(2.71828,-x/2))} node[above] {Ladekurve}; + \addplot[thick,red,domain=0:13] {pow(2.71828,-x/2)} node[above] {Entladekurve}; + \end{axis} + + \end{tikzpicture} + \caption{(Ent-)Ladekurve des Kondensators} + \label{fig:ladekurve_kondensator} +\end{figure} + + +$\Rightarrow$ Auch beim Lesen wegen notwendigem Refresh! diff --git a/Kapitel/07_Uebungsklausur.tex b/Kapitel/07_Uebungsklausur.tex new file mode 100644 index 0000000..c97ce08 --- /dev/null +++ b/Kapitel/07_Uebungsklausur.tex @@ -0,0 +1,451 @@ + +\chapter{Übungsklausur} + +\begin{tabular}{ll} + Zeit: & 120min \\ + Punkte: & 100 (gesamt; eine eins ab \circa{92} Punkte; ab 46 Punkte eine 4) \\ + \multicolumn{2}{l}{Keine Hilfsmittel!} +\end{tabular} + +\begin{Tipp} + \begin{itemize}[noitemsep] + \item Vor Beginn der Klausur diese zuerst komplett durchgelesen. Dadurch kann doppelter Text vermieden werden. + \item Stichpunkte sind \textit{immer} erlaubt! + \end{itemize} +\end{Tipp} + +\section{Aufgabe 1 (34~P.)} + +\begin{enumerate}[label=\textsf{\textbf{\alph*)}},leftmargin=*] + \item Was ist Codierung? Erläutern Sie den Begriff allgemein und gehen Sie insbesondere auf die spezielle Form Zeichencodierung, Signalcodierung und Zahlencodierung ein! (\textsf{\textbf{4~P.}}) + + \begin{description} + \item[Codierung] Codierung ist die Darstellung von Informationen (analoge oder digitale Infos möglich) mit einem Alphabet (codierte Informationen sind bei uns also immer digital!). + \item[Alphabet] endliche Menge von Symbolen. + \item[Zeichencodierung] Es werden Zeichen der Schriftsprache dargestellt. Es geht nicht um das \textit{wie}, sondern um das \textit{was} dargestellt wird. + \item[Signalcodierung] Zuordnung von (abstrakter) Info zu einem Signal. Es geht darum \textit{wie} etwas codiert wird, aber nicht darum \textit{was} (\zB JPEGs, Videos, Text,\ldots) codiert wird. + \item[Zahlencodierung] Es werden Zahlenwerte dargestellt + \end{description} + + \item \acl{SSH} und \acl{GSF} sind Begriffe, welche im Zusammenhang mit einer der in Teilaufgabe a) genannten Codierungsformen stehen. Für welche? \newline + Erläutern Sie die beiden Begriffe \acl{SSH} und \acl{GSF} und warum diese eine Rolle bei diesen Codierungsformen spielen. Erläutern Sie für die Codierungen \acs{NRZ}, \acs{RZ}, Manchester und \acs{AMI} über welche Bedingungen diese jeweils Gleichstromfreiheit ermöglichen. + + $\Rightarrow$ \acs{SSH} und \acs{GSF} bei Signalcodierung. + + \begin{description} + \item[\acl{SSH}] Unanfälligkeit des Verfahrens gegenüber Spannungsänderungen auf der Leitung, welche von außen induziert werden $\Rightarrow$ durch Vermeidung von Störungen können Signale (besser) übertragen werden. + \item[\acl{GSF}] Im Mittel sollen \enquote{0V} auf der Leitung liegen, um eine Potentialverschiebung beim Empfänger zu verhindern (Pseudoargument für \acs{GSF}: keine Energieübertragung vom Sender zum Empfänger). $\Rightarrow$ dadurch kann auf eine \enquote{Masse}-Leitung verzichtet werden. + \begin{description} + \item[\acs{NRZ}] Wenn es symmetrische Pegel (\zB $5V$ und $-5V$) gibt und Einsen und Nullen gleichverteilt sind. + \item[\acs{RZ}] symmetrischen Pegeln: nur bei Einsern\newline + keine symmetrischen Pegel (also $0\hat{=}0V$ und ein höherer Pegel $\hat{=}1$): nur bei Null\newline + Wenn Gleichverteilung von \enquote{0} und \enquote{1} gewünscht ist, ergibt sich eine \enquote{seltsame} Verteilung der Spannungspegel. + \item[\acs{AMI}] Nach jeder zweiten \enquote{1}. + \item[Manchester] Bei symmetrischen Pegeln: Immer, denn die erste Hälfte der Schrittzeit und die zweite Hälfte gleichen sich genau aus. + \end{description} + \end{description} + + \begin{Achtung} + Es ist nur nach \acs{GSF} gefragt! Lese die Aufgabe gut durch. Laut Herrn Röthig erläutern auch viele die \acs{SSH}, was aber nicht gefragt ist. + + Wenn jedoch etwas falsches geschrieben wird, gibt es Punktabzüge, auch wenn das Geschriebene gar nicht gefordert wurde. + \end{Achtung} + + \item Zur Zahlencodierung lassen sich unter anderem Abzählsysteme und Stellenwertsysteme verwenden. Vergleichen Sie beide Systeme anhand ihrer Vor- und Nachteile und geben Sie je ein konkretes Abzähl- und Stellenwertsystem als Beispiel mit Erläuterung an. + + \begin{description} + \item[Abzählsysteme] \zB Fingerabzählsystem: Jeder Finger hat den Wert $1$ und man zählt die Anzahl an Fingern zusammen. + \begin{itemize}[noitemsep] + \item $\oplus$ sehr einfach + \item $\oplus$ übersichtlich + \item $\oplus$ Addition/Subtraktion einfach + \item $\ominus$ hoher Rechenaufwand für Multiplikation und Division $\Rightarrow$ komplex + \item $\ominus$ relativ kleiner Wertebereich + \item $\ominus$ beschränkter \textbf{übersichtlicher} Wertebereich (potenziell unbeschränkt) + \item \ldots + \end{itemize} + + \item[Stellenwertsysteme] \zB Dezimalsystem: Es gibt die Ziffern $0$ bis $9$ und es gibt einen Stellenwert, welcher sich aus $10^i$ berechnet. + + $Wert(z_{n-1}, z_{n-2}, \ldots, z_1, z_0) = \sum\limits_{i=0}^{n-1} |z_i| \cdot 10^i$ + + \begin{itemize}[noitemsep] + \item $\oplus$ geringer Aufwand beim Rechnen + \item $\ominus$ erstmaliges Lernen aufwändig + \item \ldots + \end{itemize} + + \end{description} + + \item Stellen Sie die Addition der Dezimalzahlen $-31$ und $-42$ nach Wahl im Binärcode oder als Strichliste dar. Begründen Sie Ihre Wahl der Codierung. Geben Sie das Ergebnis anschließend wieder als Dezimalzahl an. Zeigen Sie außerdem die genauen Teilschritte, welche Sie bei der Addition durchgeführt haben. Welche Entscheidungen mussten Sie bei der Darstellung der beiden Zahlen zusätzlich treffen? + + Strichliste: Grundsätzlich möglich, da es zwei negative Zahlen sind. Man kann die Beträge addieren, jedoch ist die Strichliste dann sehr lang und unübersichtlich! + + Deshalb wird das Binärsystem verwendet. Folgende Entscheidungen mussten noch getroffen werden: + \begin{itemize}[noitemsep] + \item 1er- oder 2er-Komplement? $\Rightarrow$ 2er-Komplement, um Rechenfehler zu vermeiden. + \item Die Stellenanzahl muss festgelegt werden! Es darf keine zu kurze Stellenanzahl gewählt werden, da ansonsten ein falsches Ergebnis rauskommt. + \end{itemize} + + + + \begin{center} + \textit{[Rechnung hier]} + + \small{\textit{[Teilschritte aufzeigen durch Rechnung (Ganzzahldivision, Addition von 2er-Potenzen, \ldots]}} + \end{center} + + \begin{Achtung} + \begin{itemize}[noitemsep] + \item Wenn du trotzdem eine Strichliste verwendest, zählt Herr Röthig nach! + \item Wird das 1er-Komplement verwendet, so muss auf evtl. Rechenfehler reagiert werden! + \item In der Aufgabe steht \enquote{welche Entscheidungen}, also der Plural! + \item Wenn eine zu kurze Stellenanzahl gewählt wird und am Ende \enquote{getrickst} wird, um das richtige Ergebnis zu erhalten, so wird dies dennoch als Fehler gewertet, denn mit korrekter Rechnung würde ein falsches Ergebnis rauskommen. + \item Die Teilschritte sollen aufgezeigt werden, denn ansonsten \enquote{hätte ja auch ein Taschenrechner verwendet werden können}. + \end{itemize} + + \end{Achtung} + \item Wie sieht die Darstellung der Dezimalzahl $-31$ als normierte Fließkommazahl im Binärsystem aus laut IEEE 754? Setze für das Vorzeichen 1~Bit, für die Mantisse 7~Bit und für den Exponenten 8~Bit bei einem Bias von $127$. Zeigen Sie auch hier die einzelnen Schritte, die Sie für die Berechnung der Darstellung vorgenommen haben. + + \begin{center} + \textit{[Wahl der Normierungsvariante hier]} + \vspace*{-2mm} + + \textit{\small{also ob die erste Stelle vor oder nach dem Komma \enquote{1} oder \enquote{0} ist, \enquote{Hidden~Bit}, \ldots}} + \vspace*{-2mm} + + \textit{[Rechnung hier]} + \end{center} + + \begin{Hinweis} + Alles, was nicht vorgegeben ist, kann von uns gewählt werden, allerdings muss es hingeschrieben werden. Auch ohne dass es gefordert ist, soll gesagt werden, dass es verschiedenen Varianten der Normierung gibt und welche Variante für die Darstellung genommen wird! + \end{Hinweis} +\end{enumerate} + + + +\section{Aufgabe 2 (8~P.)} + +\begin{enumerate}[label=\textsf{\textbf{\alph*)}},leftmargin=*] + \item Elektrische Schaltungen können als Schaltnetze oder Schaltwerke aufgebaut sein. Welche Eigenschaften, sowohl bezüglich Aufbau als auch Verhalten, unterscheiden ein Schaltwerk grundsätzlich von einem Schaltnetz? \textsf{\textbf{2~P.}} + + \begin{description} + \item[Schaltwerke] \hfill \newline + \textit{Aufbau}: Rückkopplung der Ausgänge \newline + \textit{Verhalten}: Speichert einen Zustand + \item[Schaltnetze] \hfill \newline + \textit{Aufbau}: keine Rückkopplung, Umsetzung einer booleschen Funktion\newline + \textit{Verhalten}: Hat keinen Zustand des Speicherns. + \end{description} + + \item Ein einfaches, ungetaktetes \acs{RS-FF} ist ein Beispiel für ein Schaltwerk. Zeichnen Sie das entsprechende Schaltwerk bestehend aus Elementargattern für ein ungetaktetes \acs{RS-FF} auf. Erläutern Sie die Eingänge und Ausgänge des Schaltwerks in Ihrer jeweiligen Funktion und Bedeutung. \textsf{\textbf{6~P.}} + + \begin{center} + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[nor gate, inputs={nn}] at (0,2) (PORT) {}; + \node[nor gate, inputs={nn}] at (0,0) (PORT2) {}; + + \node[left=of PORT.input 1] (A) {$S$}; + \node[left=of PORT2.input 2] (B) {$R$}; + \node[left=of PORT.input 2] (Y1) {$y'$}; + \node[left=of PORT2.input 1] (X1) {$x'$}; + + \node[right=of PORT.output] (X) {$x$ $(Q*)$}; + \node[right=of PORT2.output] (Y) {$y$ $(Q)$}; + + \draw (A) -- (PORT.input 1); + \draw (B) -- (PORT2.input 2); + \draw (Y1) -- (PORT.input 2); + \draw (X1) -- (PORT2.input 1); + \draw (X) -- (PORT.output); + \draw (Y) -- (PORT2.output); + + \node at (0.5,1.25) {//}; + \node at (0.5,0.7) {//}; + + \draw ($(X1)+(0.3,-0.02)$) -- ($(X1)+(0.3,0.6)$) -- ($(X)+(-0.85,-0.6)$) -- ($(X)+(-0.85,0)$); + \draw ($(Y1)+(0.3,0.02)$) -- ($(Y1)+(0.3,-0.6)$) -- ($(Y)+(-0.85,0.6)$) -- ($(Y)+(-0.85,0)$); + \node[knoten] at ($(X)+(-0.85,0)$) {}; + \node[knoten] at ($(Y)+(-0.85,0)$) {}; + \end{tikzpicture} + \end{center} + + \begin{itemize}[noitemsep] + \item $Q$ ist der Zustand des Schaltwerks + \item $Q*$ ist der invertierte Zustand des Schaltwerks + \item $R$ ist der Rücksetzeingang + \item $S$ ist der Setzeingang + \item $R=S=0$ bedeutet, dass der Zustand gehalten wird + \item $R=S=1$ ist verboten, damit \enquote{nichts Schlimmes passiert} + \item \textit{[alle Belegungen erklären]} + \end{itemize} + + + \begin{Tipp}[frametitle={Wie $Q$ und $Q*$ herleiten?}] + Ist $S=1$, so soll der Zustand auf 1 gesetzt werden. Jedoch liegt an dem \texttt{NOR}-Gatter von $S$ der Wert $0$ an. Deshalb ist hier $Q*$ bzw. $\neg Q$. + \end{Tipp} + +\end{enumerate} + +\section{Aufgabe 3 (36~P.)} + +\begin{enumerate}[label=\textsf{\textbf{\alph*)}},leftmargin=*] + \item Neben dem einfachsten Flip-Flop Typ, dem \acs{RS-FF}, gibt es weitere, in der Vorlesung behandelte Flip-Flop Typen. Nennen Sie diese Typen. Zeichnen Sie unter Verwendung von beliebig taktgesteuerten \acsp{RS-FF} und gegebenenfalls weiteren Elementargattern jeweils eine Schaltung dieses Flip-Flops und beschreiben Sie das jeweilige Verhalten. \textsf{\textbf{8~P.}} + + \begin{description} + \item[\acs{D-FF}] \textit{[Zeichnung hier]} + \item[\acs{JK-FF}] \textit{[Zeichnung hier]} \newline + Agiert eigentlich so wie das \acs{RS-FF}, aber \ldots + \item[\acs{T-FF}] \textit{[Zeichnung hier]} + \end{description} + + \begin{Tipp}[frametitle={Doppeltes vermeiden}] + Wenn ein Flip-Flop über den \acs{RS-FF} definiert wurde, so darf dieser als Baustein in den anderen verwendet werden! + \end{Tipp} + + \item Manche Flip-Flop-Typen lassen sich mit und manche ohne Taktsteuerung einsetzen. Erläutern Sie bei jedem der Flip-Flop-Typen (inklusive \acs{RS-FF}) ob das Flip-Flop mit und ohne Taktsteuerung eingesetzt werden kann und sollte und welche Steuerung (Taktsteuerung/Taktflankensteuerung) jeweils eingesetzt werden kann. \textsf{\textbf{8~P.}} + + + \begin{description} + \item[\acs{RS-FF}] \hfill + \begin{itemize}[noitemsep] + \item Sowohl \acs{TFS} als auch \acs{TPS} machen Sinn und sind möglich. + \item \textit{\acl{TPS}}: Nur während des High-Pegels (bzw. Low-Pegels bei negativer \acs{TPS}) kann der \acs{RS-FF} gesetzt oder rückgesetzt werden. + \item \textit{\acl{TFS}}: Nur während der Flanke kann der RS-Flip-Flop gesetzt oder rückgesetzt werden. Die Störanfälligkeit durch Störsignale wird durch die kurze Zeit der Taktflanke reduziert. + \end{itemize} + \item[\acs{D-FF}] \hfill + \begin{itemize}[noitemsep] + \item macht ohne Taktsteuerung keinen Sinn, da dann nichts gespeichert wird! + \item \acs{TFS} und \acs{TPS} sind beide gleichermaßen möglich. + \end{itemize} + \item[\acs{JK-FF}] \hfill + \begin{itemize}[noitemsep] + \item wie \acs{RS-FF}: sowohl \acs{TPS} als auch \acs{TFS} machen Sinn. + \end{itemize} + \item[\acs{T-FF}] \hfill + \begin{itemize}[noitemsep] + \item ohne Taktsteuerung würde der \acs{T-FF} durchgehend toggeln! Deshalb ist eine Taktsteuerung Voraussetzung für einen \acs{T-FF}! + \item \acl{TFS} ist die vorzuziehende Steuerung, da der \acs{T-FF} dann genau \textbf{einmal} toggelt. + \item \acl{TPS} macht keinen Sinn, da der \acs{T-FF} während des gesamten High-Pegels (bzw. Low-Pegels bei negativer \acs{TPS}) toggeln würde. + \end{itemize} + \end{description} + + \acs{TFS} dann, wenn die Anzahl der Toggle-Vorgänge, die bei manchen Flip-Flop-Typen passieren können, auf genau einmal toggeln begrenzen wollen. + + \begin{center} + \textit{[Für weitere, siehe auf die Mitschriften]} + \end{center} + + \begin{Achtung} + Hier steht in der Aufgabe \enquote{Erläutern}, \dash es reicht nicht nur zu sagen, ob das Flip-Flop mit Taktsteuerung eingesetzt werden kann/sollte, sondern auch \textit{warum}! + + \enquote{Erläutern Sie ausführlich} würde heißen, dass zwei oder drei Stichpunkte gewünscht sind. + \end{Achtung} + + + \item Die verschiedenen Flip-Flop-Typen weisen jeweils Zustände auf, von denen jeweils wiederum ein Teil sogenannte Arbeitszustände darstellen. Wie viele Zustände weist jeder der Flip-Flip-Typen aus Teilaufgabe a) auf und wie viele Zustände sind davon jeweils Arbeitszustände? Ändert sich durch den Einbau einer Taktsteuerung aus Teilaufgabe b) etwas an diesen Anzahlen von Zuständen? Mit Begründung. Geben Sie gegebenenfalls die jeweilige Anzahl an Zuständen bei Einbau von Taktsteuerung bei den jeweiligen Flip-Flop-Typen an. \textsf{\textbf{12~P.}} + + Jeder Flip-Flop Typ hat 4 Zustände, wobei davon 2 Arbeitszustände sind. + Denn jeder Flip-Flop ist als \acs{RS-FF} realisiert. Deshalb ist die Anzahl an Zuständen gleich. Die Rückkopplung findet nämlich nur intern am \acs{RS-FF} statt. + + \begin{center} + \small{\textit{[Erklärung, warum \acs{RS-FF} 4 Zustände hat und dass eine} + + \textit{Eingangsbelegung (nicht Zustand) verboten ist]}} + \end{center} + + Die Anzahl der Zustände ändert sich durch Einbau einer Taktsteuerung \textbf{nicht}. Der Takt gibt nur an, \textit{wann} der Zustand geändert werden kann. + + \item Welcher der Flip-Flop-Typen bietet sich zum Aufbau eines Binärzählers an? Bauen Sie für diesen Flip-Flop-Typ einen Zähler für eine 4-stellige Binärzahl. Wie viele Flip-Flops diesen Typs sind dafür notwendig? \textsf{\textbf{8~P.}} + + Es sind 4 \acsp{T-FF} notwendig für einen 4~Bit Zähler. + + Schaltbild für einen 4~Bit Rückwärtszähler: + + \medskip + \begin{tikzpicture}[scale=1.2,font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + + \node at (0.6,0.6) {T-FF}; + \node at (0,0) (R) {~~}; + \node[below=of R] (S) {~~}; + \node at ($(R) + (-0.2,-0.65)$) (T) {}; + \node at ($(T) + (0.65,0)$) {T}; + \node[right=of S] (Q2) {Q~~}; + \node at ($(R)+(-1,0)$) (RText) {}; + \node at ($(S)+(-1,0)$) (SText) {}; + \node at ($(T)+(-0.6,0)$) (TText) {T}; + \draw ($(R)+(-0.3,0.3)$) rectangle ($(Q2)+(0.3,-0.3)$); + \draw (T) -- (TText); + \draw ($(T)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + + + \node at (3.6,0.6) {T-FF}; + \node at (3,0) (R2) {~~}; + \node[below=of R2] (S2) {~~}; + \node at ($(R2) + (-0.2,-0.65)$) (T2) {}; + \node at ($(T2) + (0.65,0)$) {T}; + \node[right=of S2] (Q22) {Q~~}; + \node at ($(Q22)+(1,0)$) (Q2Text2) {}; + \node at ($(R2)+(-1,0)$) (RText2) {}; + \node at ($(S2)+(-1,0)$) (SText2) {}; + \draw ($(R2)+(-0.3,0.3)$) rectangle ($(Q22)+(0.3,-0.3)$); + \draw (Q22) -- (Q2Text2); + \draw ($(T2)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + + + \node at (6.6,0.6) {T-FF}; + \node at (6,0) (R3) {~~}; + \node[below=of R3] (S3) {~~}; + \node at ($(R3) + (-0.2,-0.65)$) (T3) {}; + \node at ($(T3) + (0.65,0)$) {T}; + \node[right=of S3] (Q23) {Q~~}; + \node at ($(Q23)+(1,0)$) (Q2Text3) {}; + \node at ($(R3)+(-1,0)$) (RText3) {}; + \node at ($(S3)+(-1,0)$) (SText3) {}; + \draw ($(R3)+(-0.3,0.3)$) rectangle ($(Q23)+(0.3,-0.3)$); + \draw (Q23) -- (Q2Text3); + \draw ($(T3)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + + + \node at (9.6,0.6) {T-FF}; + \node at (9,0) (R4) {~~}; + \node[below=of R4] (S4) {~~}; + \node at ($(R4) + (-0.2,-0.65)$) (T4) {}; + \node at ($(T4) + (0.65,0)$) {T}; + \node[right=of S4] (Q24) {Q~~}; + \node at ($(Q24)+(1,0)$) (Q2Text4) {}; + \node at ($(R4)+(-1,0)$) (RText4) {}; + \node at ($(S4)+(-1,0)$) (SText4) {}; + \draw ($(R4)+(-0.3,0.3)$) rectangle ($(Q24)+(0.3,-0.3)$); + \draw (Q24) -- (Q2Text4); + \draw ($(T4)+(-0.1,0.2)$) -- ++(0.25,-0.2) -- ++(-0.25,-0.2); + + \draw (Q2) -- ($(Q2) + (1,0)$) |- (T2); + \draw (Q22) -- ($(Q22) + (1,0)$) |- (T3); + \draw (Q23) -- ($(Q23) + (1,0)$) |- (T4); + + \node at (2,-1.4) {$Q_0$}; + \node at (5,-1.4) {$Q_1$}; + \node at (8,-1.4) {$Q_2$}; + \node at (11,-1.4) {$Q_3$}; + \end{tikzpicture} + + \begin{Hinweis} + Hier wurde nicht explizit nach einem Vorwärts- oder Rückwärtszähler oder gar einem Zähler in beide Richtungen gefragt, sodass es uns überlassen ist, was wir wählen. Es muss nur mit angegeben werden. + \end{Hinweis} + +\end{enumerate} + + +\section{Aufgabe 4 (22~P.)} + +\begin{enumerate}[label=\textsf{\textbf{\alph*)}},leftmargin=*] + \item Gegeben ist die folgende Schaltung. Welche logische Funktion wird durch diese Schaltung realisiert? Geben Sie die Wertetabelle sowie einen booleschen Funktionsterm an. Handelt es sich bei dieser Schaltung um ein Schaltnetz oder Schaltwerk? Begründen Sie ihre Antwort. \textsf{\textbf{4~P.}} + + \begin{center} + \begin{tikzpicture}[font=\sffamily, circuit logic IEC, large circuit symbols, + knoten/.style={circle,fill,draw,inner sep=0pt,minimum size=1.5mm}] + + \node[and gate, inputs={nn}] at (0,2) (PORT) {}; + \node[not gate] at (-1.8,2.5) (NOT) {}; + \node[or gate, inputs={nn}] at (1.5,1) (PORT2) {}; + \node[left=of PORT2.input 2] (C) {b}; + + \draw (PORT.input 1 -| -0.8,0) -- (PORT.input 1); + \draw (PORT.input 2 -| -0.8,0) -- (PORT.input 2); + + \node at ($(NOT.input)+(-1.4,-0.7)$) (A) {a}; + + \draw (NOT.input) -| ($(NOT.input)+(-0.8,-0.7)$) -- (A); + \draw (PORT.input 2) -| ($(NOT.input)+(-0.8,-0.7)$); + \node[knoten] at ($(NOT.input)+(-0.8,-0.7)$) {}; + + \draw (NOT.output) -- ($(NOT.output)+(0.5,0)$) |- (PORT.input 1); + + \draw (PORT.output) -| ([xshift=-5mm]PORT2.input 1) -- (PORT2.input 1); + \draw (C) -- (PORT2.input 2); + \draw (PORT2.output) -- ([xshift=8mm]PORT2.output); + \node[right=of PORT2.output] {?}; + + \end{tikzpicture} + \end{center} + + Es handelt es sich um ein Schaltnetz, da es keine Rückkopplung gibt. Es wird zudem eine boolesche Funktion realisiert und dies kann nur über ein Schaltnetz geschehen, nicht aber über ein Schaltwerk. + + Es wird die Funktion $(\overline{a}\wedge a) \vee b = 0 \vee b = b$ realisiert. + + \begin{center} + \begin{tabular}{cc|c|c} + $b$ & $a$ & $\overline{a}$ & $(\overline{a}\wedge a)\vee b$ \\ + \midrule + 0 & 0 & 1 & 0 \\ + 0 & 1 & 0 & 0 \\ + 1 & 0 & 1 & 1 \\ + 1 & 1 & 0 & 1 \\ + \end{tabular} + \end{center} + + + \item Als Darstellungsformen für die Funktionen von Schaltungen haben Sie in der Vorlesung boolesche Funktionsterme, Wertetabelle, \acs{KV}-Diagramme und Schaltnetze kennengelernt. Erläutern Sie diese Darstellungsformen in ihrem Zusammenhang untereinander sowie den Zusammenhang mit den Begriffen aus Teilaufgabe c) und b). \textsf{\textbf{6~P.}} + + Zusammenhang: + \begin{itemize}[noitemsep] + \item Das \acs{KV}-Diagramm ist eine andere Darstellung der Wertetabelle + \item Boolesche Funktionsterme stellen die Funktion des Schaltnetzes dar. + \item \textit{[weitere Zusammenhänge hier]} + \end{itemize} + + \begin{description} + \item[Min-Terme] Kann mit der Wertetabelle realisiert werden. + \item[Primimplikanten] Aus dem \acs{KV}-Diagramm (größtmögliche Blöcke) + \item[\acs{DNF}] Wertetabelle + \item[\acs{DMF}] Aus dem \acs{KV}-Diagramm ablesen (\acs{PI} verodern) + \end{description} + + \item Nennen Sie alle Min-Terme sowie alle Primimplikanten, welche die Schaltung bestitzt. Welche funktionalen Gemeinsamkeiten in Bezug auf die Funktion der Schaltung haben Min-Terme und Primimplikanten? Wofür benötigen Sie die Min-Terme und wofür die Primimplikanten? \textsf{\textbf{6~P.}} + + \begin{itemize}[noitemsep] + \item Min-Terme (aus Wertetabelle aus a) ): + \begin{itemize}[noitemsep] + \item $b\wedge\overline{a}$ + \item $b\wedge a$ + \end{itemize} + + \item Primimplikanten: $b$ (bei großen Wertetabellen über \acs{KV}-Diagramm). + \item \acs{DMF}: $b$ + \item \acs{DNF}: $(b\wedge a)\vee(b\wedge\overline{a})$ + \end{itemize} + + Min-Terme und Primimplikanten decken Einsen ab. Jeder Min-Term steht für eine \enquote{1} und jeder Primimplikant kann für mehrere Einsen stehen. + + \begin{description} + \item[Minterme] für \acf{DNF} + \item[\acl{PI}] für \acf{DMF} (wobei nicht unbedingt alle \aclp{PI} benötigt werden) + \end{description} + + \item Geben Sie die oder eine \acs{DNF} sowie \acs{DMF} für diese Schaltung an. Sind \acs{DNF} und \acs{DMF} grundsätzlich immer eindeutig? Mit Begründung. Wie sieht es mit der Eindeutigkeit von \acs{DNF} und \acs{DMF} bei der gegebenen Schaltung aus? Mit Begründung. \textsf{\textbf{6~P.}} + + \begin{description} + \item[\acs{DNF}] $(b\wedge a)\vee(b\wedge\overline{a})$ \newline + Ist immer eindeutig, \textit{außer} die Reihenfolge der Min-Terme und innerhalb der Min-Terme. + \item[\acs{DMF}] $b$ \newline + Ist in diesem Fall eindeutig, da es nur (einen) \aclp{KPI} gibt. Ansonsten ist die \acs{DMF} eindeutig, wenn es nur Primimplikanten gibt, die auch Kernprimimplikanten sind. Es kann sich jedoch die Reihenfolge unterscheiden. + \end{description} + +\end{enumerate} + + +\begin{Hinweis} + Aufgaben, die eventuell auch vorkommen können: + \begin{itemize}[noitemsep] + \item Beweisen eines Satzes (mit Angabe der verwendeten Gesetze) + \item Beweisen, dass eine Operatorenmenge ein vollständiges Operatorensystem ist. + \item Kondensatorspeicher -- Vor-/Nachteile (\enquote{andere Speicherprinzipe}) + \item Anwendungen für Flip-Flop-Typen (\zB Lichtschalter) + \end{itemize} + +\end{Hinweis} \ No newline at end of file