SSE Karnough Minimierung
Logik-Vereinfachung mittels Karnough-Tafeln ist praktisch, aber mühsam. Deshalb gibt es Software, die dabei hilft. Für den einfachen Fall, in dem man die Logik für nur einen Ausgang vereinfachen will, kann man das Skript /home2/vlsi00/prz-root/local/Scripts/Karnough.tcl verwenden. Die Anleitung zu diesem Skript befindet sich am Ende desselben. Das Script ist in der Umgebung des Entwurfslabors wie folgt anzuwenden (Auszug aus dem Script):
Aufruf:
>Karnough.tcl infile_care outfile
oder
>Karnough.tcl infile_care infile_dontcare outfile
jeder filename kann durch '-' ersetzt werden, was stdin bzw stdout bedeutet (Ein-, Ausgabe über Terminal)
Eingabe:
Care-Terme sind die Input-Belegungen, bei denen einer der gewünschten Outputs (0 oder 1) erscheint. Don't care-Terme sind die Input-Belegungen, bei denen der Output bedeutungslos ist. Die in beiden Term-Listen nicht genannten Terme gehören dann zu dem jeweils anderen gewünschten Output (1 oder 0)
Beispiel (Wertetabelle):
input out
ABCD Y
0000 0
0001 0
0010 0
0011 1 care
0100 ? dontcare
0101 ? dontcare
0110 0
0111 ? dontcare
1000 0
1001 1 care
1010 0
1011 ? dontcare
1100 0
1101 0
1110 0
1111 ? dontcare
infile_care (Textdatei mit folgendem Inhalt):
1001
0011
infile_dontcare (Textdatei mit folgendem Inhalt):
0100
0101
0111
1111
1011
output (Kommandozeilenausgabe bzw. Textdatei, die nach dem Aufruf entsteht):
10x1
xx11
Das bedeutet:
Y = ( A & ~B & D ) | ( C & D )
Die Terme für care und don't care können vereinfacht eingegeben werden, wenn sie ihrerseits solche Stellen enthalten. In obigem Beispiel lässt sich die Liste für die don't care-Terme wie folgt vereinfachen:
dontcare:
010x # aus 0100 und 0101
x111 # aus 0111 und 1111
1011
Auch Überschneidungen der Terme mit don't care-Stellen sind zulässig:
dontcare:
010x # aus 0100 und 0101
x111 # aus 0111 und 1111
1x11 # aus 1011 und 1111
Für Anwendung in anderen Umgebungen (Linux/Windows) ist folgendes zubeachten:
Karnough.tcl ist ein Tcl-Script. Damit Sie es ausführen können, brauchen Sie
- Tcl/Tk (in /usr/local/ActiveTcl installiert)
- muss in der ersten Zeile des Scripts der Pfad zum Tcl-Interpreter tclsh stehen. Im LD_LIBRARY_PATH müssen die Tcl-Bibliotheken eingetragen sein. Für Freunde anderer Platformen gibt es Tcl/Tk u.a. bei tcl.sourceforge.net.