10.1 Nicht-getaktete Schaltwerke

Bei nichtgetakteten Schaltwerken muss das Zustandsdiagramm anders interpretiert werden als bei getakteten. Im Falle des getakteten Schaltwerks gilt:

Zwischen zwei Takten ändert sich der Zustand nicht. Die δ- und λ-Schaltnetze sind jedoch zeit-kontinuierlich in Aktion, so dass sich der Folgezustand znext und bei Mealy-Schaltnetzen auch die Ausgabe y bei Änderung der Eingabe x zwischen den Takten ändern kann. Jedoch wird nur der zur Zeit der relevanten Taktflanke gerade berechnete Folgezustand znext tatsächlich als neuer Zustand z angenommen. Das Zustandsdiagramm kann also wie folgt interpretiert werden: Der Zustand ruht zwischen den Taktzeiten in einem der Knoten und springt zu den Taktzeiten zum Folgezustand.

Als Beispiel sei das folgende Schaltwerk betrachtet;

demofsm( [2 1; 3 4; 3 4; 4 1] , {'A';'B';'C';'D'} , 4 )

Die Interpretation beim nicht-getakteten Schaltwerk ist dagegen: Jeder berechnete Folgezustand znext wird nach der aktuellen Verzögerung der Rückkopplung auch angenommen und aufgrund der darauf folgenden Neuberechnung des Folgezustand möglicherweise gleich wieder verlassen. Der Zustand wandert also permanent längs des durch die Eingabe gesteuerten Weges im Diagramm mit nicht genau bekannter Geschwindigkeit. Ein definiertes Verharren in einem Zustand gibt es nur, wenn der Folgezustand znext gleich dem aktuellen z ist, also im Falle einer Schlinge. Man nennt diesen einen stabilen Zustand. Für ein sinnvolles Verhalten muss ein nicht-getaktetes Schaltwerk wenigstens zwei Schlingen besitzen, zwischen denen durch entsprechende Eingabe gezielt gewechselt werden kann.

Das selbe Schaltwerk wie oben, jedoch mit Verzögerungen anstelle der getakteten Zeitglieder:

demofsm( [2 1; 3 4; 3 4; 4 1] , {'A';'B';'C';'D'} , 1 , 1 )

Der Input kann wie bisher bei selektiertem Zustandsdiagramm durch die Tasten 1 und 2 gewählt werden oder bei selektierter Übergangstabelle durch Mausklick auf den Input in der obersten Zeile.

Der stabile Zustand D kann nur durch genau auf die individuellen Verzögerungen abgestimmte schnelle Wechsel des Inputs erreicht werden. Da die Verzögerungen nie genau bekannt sind, ist dieser Zustand in der Praxis nicht gezielt erreichbar. Man muss aber berücksichtigen, dass er möglicherweise erreicht wird.

Die stabilen Zustände sind die wesentlichen Zustände eines nicht-getakteten Schaltwerks.

Damit die stabilen Zustände auch in der tabellarischen Form besser zu erkennen sind, benutzt man im Falle nicht-getakteter Schaltwerke die sog. Flusstafel und Ausgangstafel anstelle der Übergangs- bzw. Ausgangstabellen, bei denen sowohl der Zustand wie auch der Input als Eingangsvariablen der Schaltfunktionen im linken Teil der Tabelle und die Funktionswerte jeweils als eine Spalte rechts dargestellt werden. Wir haben der Übersichtlichkeit halber auch bei den getakteten Schaltwerken schon die Flusstafel gezeigt. Im Falle von nicht-getakteten Schaltwerken werden die stabilen Zustände in der Flusstafel durch Einkreisen besonders hervorgehoben. Alle anderen Zustände sind nur kurzzeitige Durchgangsstationen.

Das Verhalten eines nicht-getakteten Schaltwerks lässt sich nur dann eindeutig verfolgen, wenn man die Eingabe in folgender Weise einschränkt:

(1) Der Eingang x ändert sich nur, wenn das Schaltwerk sich in einem stabilen Zustand befindet.

(2) Der Eingang x ändert sich nur einschrittig.

Unter dieser Voraussetzung kann im vorigen Beispiel der Zustand D nicht erreicht werden.

Durch die Bedingung (2) werden Funktionshasards vermieden, die bei gleichzeitiger Änderung mehrerer Inputwerte entstehen. Es können sich aber auch durch die Änderung einer einzigen Inputvariablen mehrere Bits des Zustands ändern. Diese Bits führen durch die Zeitglieder des Schaltwerkmodells zum Eingang des δ-Schaltnetzes einen Wettlauf durch. Der nachfolgende Zustand hängt dann vom Ausgang des Wettlaufs ab. Wenn die stabilen Zustände, die durch den Wettlauf direkt oder als Folge erreicht werden, unterschiedlich sind, ist das Verhalten des Schaltwerks nicht beherrschbar. Man nennt den Wettlauf dann kritisch, im anderen Fall unkritisch.

Eine Möglichkeit Wettläufe zu vermeiden ist die Benutzung einer einschrittigen Codierung der Zustände. Damit ist hier gemeint, dass sämtliche Kanten des Zustandsdiagramms zwischen Zuständen verlaufen, deren Codierung sich um höchstens ein Bit unterscheidet. Das ist aber viel schwieriger als nur die Einführung einer neuen Codierung, da ja die Schaltnetze selbst wieder von der Codierung abhängen.

Einen weiteren Fall, den man vermeiden sollte, zeigt das folgende Schaltwerk. Hier kann der Zustand Z1 nicht unter Einhaltung der oben genannten Voraussetzungen verlassen werden. Dies bedeutet, dass ein so realisiertes Schaltwerk tatsächlich im Zustand Z1 hängen bleibt oder diesen erst nach vielen Versuchen verlässt. Das Verhalten mehrerer völlig gleich realisierter Schaltwerke kann dabei unterschiedlich sein, da es stark von den individuellen Verzögerungen abhängt.

demofsm( [1 2; 4 3; 3 2; 1 4] , {'RR';'Go';'Z1';'Z2'} , 3 , 1 )