Zur textuellen Beschreibung einer Schaltfunktion kann man benutzen:
(a) die Umgangssprache
(b) die übliche formale Notation
(c) eine spezielle Beschreibungssprache
(d) einen algebraischen Ausdruck
(e) eine Tabellenform
Als Beispiel wird der sog. 2-zu-1-Multiplexer mit den binären Variablen a, b, c in diesen fünf Möglichkeiten beschrieben:
(a) Eine mögliche Beschreibung des Multiplexers ist:
"f entspricht der Zusammenführung zweier Einbahnstraßen a und b in eine dritte x . Die Zusammenführung wird mit einer Ampel geregelt, die mit der Variablen c von der einen zur anderen Straße umgeschaltet wird: c = 0 liefert x = a , c = 1 liefert x = b "
Der umgangssprachlichen Beschreibung ist nicht unmittelbar anzusehen, ob sie auch so verstanden wird, wie der Schreibende es gemeint hat. Häufig ist solch eine Beschreibung auch unvollständig.
(b) Eine formale Notation ist die folgende
f(a,b,c) = a für c = 0 ; f(a,b,c) = b für c = 1
(c) Programmiersprachen dienen der Realisierung von Anwendungen auf dem Rechner. Hardwareentwurfssprachen sind dagegen so konzipiert, dass das Verhalten von Systemen beschrieben werden kann, ohne dass einer Realsierung vorgegriffen wird. Der Multiplexer ist aber ein sehr einfaches Beispiel, dass wir hier als Definition einer ablauffähigen MATLAB-Funktion schreiben wollen:
mux = inline('(a&~c)|(b&c)', 'a','b','c') % Definition der Schaltfunktion mux(a,b,c) in MATLAB
Nach diesem Aufruf ist die Schaltfunktion mux dem System bekannt und kann benutzt werden:
z = 0; for i=0:1 for j=0:1 for k=0:1 z = z + 1; tabelle(z,:) = [i j k mux(i,j,k)]; end end end result2fig(tabelle)
Eine sehr verbreitete Hardware-Beschreibungssprache ist VHDL. Der Multiplexer wird hierin wie folgt beschrieben:
library ieee; use ieee.std_logic_1164.all |
---|
entity mux2 is |
port(sel, d0, d1: in std_ulogic; |
z: out std_ulogic); |
end entity mux2; |
architecture demo of mux2 is |
begin |
out_select: process(sel, d0, d1) is |
begin |
case sel is |
when 0 => |
z <= d0; |
when 1 => |
z <= d1; |
end case; |
end process out_select; |
end architecture demo; |
(d) Der Multiplexer kann als schaltalgebraischer Ausdruck z.B. in folgender Form geschrieben werden:
Ein solcher Ausdruck kann bei entsprechender Syntax auch als Berechnungsvorschrift dienen.
(e) Die Funktionstabelle für den Multiplexer ist
binexp2bintab('(a&~c)|(b&c)',{'a';'b';'c'},2)
Mit der Reihenfolge der Variablen ändert sich die äußere Form der Tabelle:
binexp2bintab('(a&~c)|(b&c)',{'c';'a';'b'},2)