HSG |
|
Das Beispiel stammt aus der Begleitschrift zur Vorlesung ' Rechnersysteme' von Herrn Dr.habil. Bernd Schürmann, TU Kaiserslautern
Ist der Biergarten geschlossen, wird er erst bei sehr gutem Wetter (kein Regen und kein Wind) geöffnet. Umgekehrt wird der Biergarten erst bei sehr schlechtem Wetter (Regen und Wind) wieder geschlossen. Sollte es nur regnen, wird der geöffnete Biergarten noch nicht geschlossen, solange kein Wind weht (dafür haben wir ja den Schirm). Bei Wind ohne Regen werden die Gäste auch noch nicht nach Hause geschickt. Der Schirm soll nur dann geöffnet sein, wenn der Biergarten geöffnet ist und kein Wind weht.
Kopie aus der Begleitschrift
Das Zustandsdiagramm ergibt, dass bei schönem Wetter der Biergarten mit aufgespanntem Schirm geöffnet wird, vielleicht als Sonnenschutz? Jedenfalls ist der Schirm bei Windstille offen, ganz gleich, ob es regnet oder nicht. Bei Wind wird der Schirm geschlossen, vielleicht damit er nicht zerrissen wird. In obigem Diagramm ist an einigen Stellen bei der Kontrolle von Vollständigkeit und Eindeutigkeit der Strich über R und W fälschlich 'zusammengelaufen'.
Da die Übergänge durch das Eintreten bestimmter Funktionen von R und W ausgelöst werden, ist es bequem, diese Funktionen zunächst darzustellen.
R W | /R /W RW /R/W /RW R+W ------+------------------------- 0 0 | 1 1 0 1 0 0 0 1 | 1 0 0 0 1 1 1 0 | 0 1 0 0 0 1 1 1 | 0 0 1 0 0 1
Das Schaltnetz gibt an, wie sich die Folgezustände aus den aktuellen Zuständen und den Eingaben ergeben. Die Zustände werden so kodiert: 'geöffnet bei Windstille': 00, 'geöffnet bei Wind': 01, 'geschlossen': 10, der Zustand 11 kommt im Automat nicht vor. Sollte das Schaltwerk durch einen Fehler in diesen Zustand geraten, so soll es beim nächsten Takt in den Anfangszustand 10 übergehen.
z1 z0 R W | Z1' z0' Bedingung -----------+-------------------- 0 0 0 0 | 0 0 /W 0 0 0 1 | 0 1 /RW 0 0 1 0 | 0 0 /W 0 0 1 1 | 1 0 RW -----------+-------------------- 0 1 0 0 | 0 0 /W 0 1 0 1 | 0 1 /RW 0 1 1 0 | 0 0 /W 0 1 1 1 | 1 0 RW -----------+-------------------- 1 0 0 0 | 0 0 /R/W 1 0 0 1 | 1 0 R+W 1 0 1 0 | 1 0 R+W 1 0 1 1 | 1 0 R+W -----------+-------------------- 1 1 0 0 | 1 0 1 1 0 1 | 1 0 1 1 1 0 | 1 0 1 1 1 1 | 1 0 -----------+--------------------
1-Zeilen für z1' 0011 0111 1001 1010 1011 1100 1101 1110 1111 1-Zeilen für z0' 0001 0101
Ein Quine-McCluskey-Optimierer liefert:
z1' = z1z0 + z1R + z1W + RW (a & b v a & c v a & d v c & d) z0' = /z1/RW (~a & ~c & d)
Man kann durch 'Ausmultiplizieren' weiter vereinfachen
z1' = z1z0 + z1R + z1W + RW = z1z0 + z1(R+W) + RW
So nebenbei, wie beweist man, dass immer ab + ac = a(b + c) gilt? Gilt auch a + bc = (a+b)(a+c)?
Geht man davon aus, dass man nie in den Zustand 11 gerät, so wird z1z0 immer 0 sein und kann in der Disjunktion weggelassen werden.
Ebenso erhält man den einfacheren Term z1' = z1(R+W) + RW, wenn man in der Wertetabelle die Zeile 1100 10 zu 1100 00 abändert. Das darf man, wenn man die Werte für den nicht auftretenden Zustand 11 als 'don't care' einstuft. Jedenfalls erreicht man so eine Übereinstimmung mit der in der Begleitschrift angegebenen Lösung.
Kopie aus der Begleitschrift
S = /z1/z0
Das verwendete FlipFlop ist ein flankengetriggertes Daten-FlipFlop mit einem asynchronen Reset (hades.models.flipflops.Dffr). Eine mögliche Hardwarerealisierung wäre mit dem Baustein 74HCT74 zu erreichen.
Erstelle nach obigem Vorbild ein Schaltwerk, das folgenden Automaten realisiert.
Das Zustandsdiagramm ergibt, dass bei schönem Wetter der Biergarten mit geschlossenem Schirm geöffnet wird, es regnet ja nicht. Sollte es anfangen zu regnen, so wird der Schirm als Regenschutz geöffnet. Sollte zu dem Regen noch Wind hinzukommen, so wird der Biergarten und der Schirm geschlossen. In diesem Modell ist 'geschlossen' der Startzustand.