261 lines
14 KiB
TeX
261 lines
14 KiB
TeX
\section{Karnaugh Diagramme (KVD)}
|
|
|
|
KV-Diagramme sind eine äquivalente Darstellungsform von Schaltfunktionen in Matrizenform. KVD ermöglichen die unkomplizierte Bildung der \emph{vereinfachten} DNF/KNF. \medskip
|
|
|
|
Schema zum ausfüllen eines 4 Variablen KV-Diagramm:
|
|
|
|
\begin{center}
|
|
\includegraphics[width = 0.4\linewidth]{images/KVDia.jpg}
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
\begin{minipage}{0.45\linewidth}
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\matrix (kv) [
|
|
matrix of nodes,
|
|
nodes in empty cells,
|
|
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
|
nodes = {
|
|
rectangle,
|
|
draw = black,
|
|
text width = 5mm,
|
|
text height = 5mm,
|
|
align = center
|
|
}
|
|
]{
|
|
$0$ & $1$ & $X$ & \\
|
|
& & & \\
|
|
& $\textcolor{blue}{1}$ & & \\
|
|
& & & \\
|
|
};
|
|
|
|
\path[draw, decorate, decoration=brace] (kv-1-1.north west) -- (kv-1-2.north east) node [midway, above] {$\not{A}$};
|
|
\path[draw, decorate, decoration=brace] (kv-1-3.north west) -- (kv-1-4.north east) node [midway, above] {$A$};
|
|
\path[draw, decorate, decoration=brace] (kv-2-1.south west) -- (kv-1-1.north west) node [midway, left] {$\not{C}$};
|
|
\path[draw, decorate, decoration=brace] (kv-4-1.south west) -- (kv-3-1.north west) node [midway, left] {$C$};
|
|
\path[draw, decorate, decoration=brace] (kv-2-4.north east) -- (kv-3-4.south east) node [midway, right] {$D$};
|
|
\path[draw, decorate, decoration=brace] (kv-1-4.north east) -- (kv-1-4.south east) node [midway, right] {$\not{D}$};
|
|
\path[draw, decorate, decoration=brace] (kv-4-4.north east) -- (kv-4-4.south east) node [midway, right] {$\not{D}$};
|
|
\path[draw, decorate, decoration=brace] (kv-4-3.south east) -- (kv-4-2.south west) node [midway, below] {$B$};
|
|
\path[draw, decorate, decoration=brace] (kv-4-1.south east) -- (kv-4-1.south west) node [midway, below] {$\not{B}$};
|
|
\path[draw, decorate, decoration=brace] (kv-4-4.south east) -- (kv-4-4.south west) node [midway, below] {$\not{B}$};
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\end{minipage}
|
|
\hfill
|
|
\begin{minipage}{0.45\linewidth}
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\matrix (kv) [
|
|
matrix of nodes,
|
|
nodes in empty cells,
|
|
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
|
nodes = {
|
|
rectangle,
|
|
draw = black,
|
|
text width = 5mm,
|
|
text height = 5mm,
|
|
align = center
|
|
}
|
|
]{
|
|
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead, text = red] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
|
\node[kvbinhead] {00}; & $0$ & $1$ & $X$ & \\
|
|
\node[kvbinhead] {01}; & & & & \\
|
|
\node[kvbinhead, text = darkgreen] {11}; & & $\textcolor{blue}{1}$ & & \\
|
|
\node[kvbinhead] {10}; & & & & \\
|
|
};
|
|
|
|
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {AB};
|
|
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {CD};
|
|
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\end{minipage}
|
|
\end{center}
|
|
|
|
\begin{center}
|
|
\begin{minipage}{0.45\linewidth}
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\matrix (kv) [
|
|
matrix of nodes,
|
|
nodes in empty cells,
|
|
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
|
nodes = {
|
|
rectangle,
|
|
draw = black,
|
|
text width = 5mm,
|
|
text height = 5mm,
|
|
align = center,
|
|
text = gray
|
|
}
|
|
]{
|
|
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
|
\node[kvbinhead] {00}; & & & & \\
|
|
\node[kvbinhead] {01}; & & & & \\
|
|
\node[kvbinhead] {11}; & & & & \\
|
|
\node[kvbinhead] {10}; & & & & \\
|
|
};
|
|
|
|
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {AB};
|
|
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {CD};
|
|
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
|
|
|
\begin{pgfonlayer}{tl3}
|
|
\draw[thick, blue, ->, > = stealth] (kv-2-2.center) -- (kv-3-2.center) to[out = 180, in = 180] (kv-5-2.center) -- (kv-4-2.center);
|
|
\draw[thick, blue, ->, > = stealth] (kv-2-3.center) -- (kv-3-3.center) to[out = 180, in = 180] (kv-5-3.center) -- (kv-4-3.center);
|
|
\draw[thick, blue, ->, > = stealth] (kv-2-5.center) -- (kv-3-5.center) to[out = 180, in = 180] (kv-5-5.center) -- (kv-4-5.center);
|
|
\draw[thick, blue, ->, > = stealth] (kv-2-4.center) -- (kv-3-4.center) to[out = 180, in = 180] (kv-5-4.center) -- (kv-4-4.center);
|
|
\end{pgfonlayer}
|
|
\begin{pgfonlayer}{tl2}
|
|
\draw[thick, darkgreen, ->, > = stealth] (kv-4-2.center) -- (kv-2-3.center);
|
|
\draw[thick, red, ->, > = stealth] (kv-4-3.center) -- (kv-2-5.center);
|
|
\draw[thick, darkgreen, ->, > = stealth] (kv-4-5.center) -- (kv-2-4.center);
|
|
\end{pgfonlayer}
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\end{minipage}
|
|
\hfill
|
|
\begin{minipage}{0.45\linewidth}
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\matrix (kv) [
|
|
matrix of nodes,
|
|
nodes in empty cells,
|
|
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
|
nodes = {
|
|
rectangle,
|
|
draw = black,
|
|
text width = 5mm,
|
|
text height = 5mm,
|
|
align = center,
|
|
text = gray
|
|
}
|
|
]{
|
|
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
|
\node[kvbinhead] {00}; & & & & \\
|
|
\node[kvbinhead] {01}; & & & & \\
|
|
\node[kvbinhead] {11}; & & & & \\
|
|
\node[kvbinhead] {10}; & & & & \\
|
|
};
|
|
|
|
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {CD};
|
|
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {AB};
|
|
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
|
|
|
\begin{pgfonlayer}{tl3}
|
|
\draw[thick, blue, ->, > = stealth] (kv-2-2.center) -- (kv-2-3.center) to[out = 90, in = 90] (kv-2-5.center) -- (kv-2-4.center);
|
|
\draw[thick, blue, ->, > = stealth] (kv-3-2.center) -- (kv-3-3.center) to[out = 90, in = 90] (kv-3-5.center) -- (kv-3-4.center);
|
|
\draw[thick, blue, ->, > = stealth] (kv-5-2.center) -- (kv-5-3.center) to[out = 90, in = 90] (kv-5-5.center) -- (kv-5-4.center);
|
|
\draw[thick, blue, ->, > = stealth] (kv-4-2.center) -- (kv-4-3.center) to[out = 90, in = 90] (kv-4-5.center) -- (kv-4-4.center);
|
|
\end{pgfonlayer}
|
|
\begin{pgfonlayer}{tl2}
|
|
\draw[thick, darkgreen, ->, > = stealth] (kv-2-4.center) -- (kv-3-2.center);
|
|
\draw[thick, red, ->, > = stealth] (kv-3-4.center) -- (kv-5-2.center);
|
|
\draw[thick, darkgreen, ->, > = stealth] (kv-5-4.center) -- (kv-4-2.center);
|
|
\end{pgfonlayer}
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\end{minipage}
|
|
\end{center}
|
|
|
|
Bei 5 Schaltvariablen wird die 5te Schaltvariable mit einer ABCD Matrix für $E$ und einer für $\not{E}$ dargestellt (2D!).
|
|
|
|
|
|
\subsection{Päckchen}
|
|
|
|
Orthogonal benachbarte Minterme (bzw. Maxterme) werden zu einem ''Päckchen'' zusammengefasst.
|
|
|
|
\begin{minipage}{0.48\linewidth}
|
|
\hfill \includegraphics[width = 0.4\textwidth]{images/Packchen.jpg}
|
|
\end{minipage}
|
|
\begin{minipage}{0.48\linewidth}
|
|
\begin{center}
|
|
Implizite Anwendung des Nachbarschaftsgesetz: \medskip
|
|
|
|
$\Rightarrow (\not{A} \land \not{B}) \lor (A \land \not{B}) = \not{B}$
|
|
\end{center}
|
|
\end{minipage} \medskip
|
|
|
|
Es gelten folgende Regeln für Päckchen:
|
|
|
|
\begin{itemize}
|
|
\item Päckchen sind rechteckig (Ausnahme: über Ecken)
|
|
\item \emph{Umfassen möglichst grosse Zweierpotenz}.
|
|
\item Dürfen über Ecken und Grenzen hinausgehen und sich überlappen.
|
|
\end{itemize}
|
|
\vfill
|
|
|
|
|
|
\subsection{Don't Care Zustände}
|
|
|
|
Redundante oder unmögliche Kombinationen der Eingangsvariablen werden mit einem 'X' im KVD markiert. Man \emph{darf} solche Zustände benutzen um Päckchen zu bilden!
|
|
|
|
|
|
\subsection{Hazard}
|
|
|
|
Hazards sind kurzzeitige, unerwünschte Änderung der Signalwerte, die durch Zeitverzögerung der Gatter entstehen.
|
|
|
|
\subsubsection{Strukturhazard (Statischer Hazard)}
|
|
|
|
Statische Hazards sind im KVD Stellen, an denen sich Päckchen orthogonal berühren, aber nicht überlappen.
|
|
|
|
\begin{center}
|
|
\begin{minipage}{0.48\linewidth}
|
|
\begin{center}
|
|
\begin{tikzpicture}
|
|
\begin{pgfonlayer}{bg}
|
|
\def\ppad{1.5pt}
|
|
\matrix (kv) [
|
|
matrix of nodes,
|
|
nodes in empty cells,
|
|
column sep=-\pgflinewidth, row sep=-\pgflinewidth,
|
|
nodes = {
|
|
rectangle,
|
|
draw = black,
|
|
text width = 5mm,
|
|
text height = 5mm,
|
|
align = center
|
|
}
|
|
]{
|
|
\node[kvbinhead] {}; & \node[kvbinhead] {00}; & \node[kvbinhead] {01}; & \node[kvbinhead] {11}; & \node[kvbinhead] {10}; \\
|
|
\node[kvbinhead] {00}; & 0 & 1 & 1 & 0 \\
|
|
\node[kvbinhead] {01}; & 0 & 1 & 1 & 0 \\
|
|
\node[kvbinhead] {11}; & 1 & 1 & 0 & 0 \\
|
|
\node[kvbinhead] {10}; & 1 & 1 & 0 & 0 \\
|
|
};
|
|
|
|
|
|
\node[] at ($(kv-1-1.north east) + (-6mm, +2mm)$) {AB};
|
|
\node[] at ($(kv-1-1.south west) + (-1mm, +5mm)$) {CD};
|
|
\draw[] ($(kv-1-1.north west) + (-3mm, 3mm)$) -- ($(kv-1-1.south east) + (-3.5mm, 3.5mm)$);
|
|
\end{pgfonlayer}
|
|
|
|
\draw[blue] ($(kv-2-3.north west) + (1.5pt, -1.5pt)$) rectangle ($(kv-3-4.south east) + (-1.5pt, 1.5pt)$);
|
|
\draw[blue] ($(kv-4-2.north west) + (1.5pt, -1.5pt)$) rectangle ($(kv-5-3.south east) + (-1.5pt, 1.5pt)$);
|
|
\draw[darkgreen, thick, dashed] ($(kv-2-3.north west) + (1.5pt, -1.5pt)$) rectangle ($(kv-5-3.south east) + (-1.5pt, 1.5pt)$);
|
|
|
|
\begin{pgfonlayer}{tl3}
|
|
\path[draw, <->, > = stealth, red] ($(kv-3-3.center) + (2pt, 0)$) to[in=45, out = -45] ($(kv-4-3.center) + (2pt, 0)$);
|
|
\path[draw, <-, > = stealth, red] ($(kv-5-3.center) + (2pt, 0)$) to[in=90, out = -45] ($(kv-5-3.center) + (5pt, -3mm)$);
|
|
\path[draw, <-, > = stealth, red] ($(kv-2-3.center) + (2pt, 0)$) to[in=270, out = 45] ($(kv-2-3.center) + (5pt, 3mm)$);
|
|
\end{pgfonlayer}
|
|
\begin{pgfonlayer}{tl2}
|
|
\node[text = red, fill = white, fill opacity = 0.8, text opacity = 1, rounded corners = 4pt] at ($(kv-3-3.south east) + (4mm, 0mm)$) {\small Hazard};
|
|
\node[text = red, fill = white, fill opacity = 0.8, text opacity = 1, rounded corners = 4pt] at ($(kv-5-3.south east) + (4mm, 0mm)$) {\small Hazard};
|
|
\end{pgfonlayer}
|
|
\end{tikzpicture}
|
|
\end{center}
|
|
\end{minipage}
|
|
\hfill
|
|
\begin{minipage}{0.5\linewidth}
|
|
\emph{Lösung:} Berührendes \textcolor{blue}{Päck-}
|
|
|
|
\textcolor{blue}{chen} mit zusätzlichem \textcolor{darkgreen}{Päckchen} (möglichst gross) verbinden.
|
|
\end{minipage}
|
|
\end{center}
|
|
|
|
\subsubsection{Funktionale Hazards}
|
|
|
|
Wenn sich Päckchen diagonal berühren, dann wechseln mindestens zwei Variablen. Dies ist ein funktionaler Hazard und kann \emph{nicht} leicht behoben werden. |