Der erste Schritt zur Implementierung einer Zustandsmaschine besteht darin, das Zustandsdiagramm zu zeichnen, das sie implementieren wird. Ein Zustandsdiagramm zeigt jeden Zustand, in dem sich die Maschine befinden kann, zusammen mit allen Bedingungen, die dazu führen, dass sie von einem Zustand in einen anderen wechselt (oder nicht).
Ein Zeitdiagramm ist eigentlich eine unvollständige Spezifikation für eine Zustandsmaschine, da es nicht alle möglichen Kombinationen aus aktuellem Zustand und Eingängen abdeckt. Das bedeutet, dass Sie eine mögliche Antwort finden können, aber es kann auch andere geben. In diesem Fall sollten Sie die einfachste Antwort auswählen, die die Anforderungen erfüllt.
Die Ausgänge sind einfach; Wir können sehen, dass OUT1 dem Zustand B und OUT2 dem Zustand D entspricht.
Im gegebenen Zeitdiagramm sehen wir die folgenden Übergänge:
Die folgenden Kombinationen sind nicht spezifiziert:
Eine Interpretation besteht darin, anzunehmen, dass die nicht spezifizierten Kombinationen keine Zustandsübergänge verursachen.
Andere Interpretationen sind möglich – zum Beispiel
Zusammen decken diese Annahmen alle nicht spezifizierten Übergänge ab.
Erst nachdem Sie ein vollständiges Zustandsdiagramm haben, können Sie mit dem Entwerfen der Logik für eine Implementierung beginnen. Das Schöne an "One-Hot"-Designs (ein FF pro Zustand) ist, dass die Logik ziemlich genau dem Zustandsdiagramm eins zu eins folgt.
Tut mir leid, keine vollständigen Lösungen für Hausaufgaben, nur Quidance!
Nehmen Sie 4 ff:s vom D-Typ. Nennen wir sie a, b, c und d entsprechend den Zuständen. Alle bekommen die gleiche Uhr. Jeder hat ein anderes Gate, das den D-Eingang für das ff erzeugt. Das Gatter am D-Eingang von ff X sollte genau dann 1 ausgeben, wenn die Variablen eine solche Kombination haben, dass der nächste Zustand X sein sollte.
Einer der Zustände sollte der Reset-Zustand sein. Das Master-Reset-Signal setzt dieses ff und setzt andere zurück.
NACHTRAG: Dies ist ein schwierigerer Fall als ich dachte (nicht die Schaltung, es ist einfach). Aber lassen Sie uns einige Klarstellungen hinzufügen.
Das Pulsdiagramm hat für die Maschine die Zustände a, b, c und d benannt. Es ist besonders einfach, weil die ursprüngliche Forderung war, dass die Zustände direkt von den Ausgängen der Flip-Flops angezeigt werden (= ein ff pro Zustand). Deshalb habe ich die Flip-Flops als Staaten bezeichnet. Im Zustand a ist nur der Ausgang von ff a 1, im Zustand b ist nur der Ausgang von ff b 1 usw.
Das D-Typ-Flip-Flop kopiert den logischen Wert von seinem D-Eingang zu seinem Ausgang Q jedes Mal, wenn der Taktimpuls von 0 auf 1 springt. Um den Q-Ausgang von ff a im richtigen Moment auf 1 zu bringen, muss 1 zugeführt werden seinen D-Eingang gerade dann, wenn erwartet wird, dass die Maschine aus einem anderen Zustand oder aus dem Zustand a in den Zustand a springt .
Das Impulsdiagramm gibt mehrere verschiedene Fälle an, wenn der nächste Zustand ein ist . Somit ist eine ziemlich komplexe Gatterschaltung erforderlich, um eine geeignete Eingabe für den D-Eingang von ff a zu erzeugen.
Die Bedingungen, die zu Zustand b führen, sind einfacher. Die Maschine springt genau dann in den Zustand b (= setzt den Ausgang von ff b auf 1), wenn der aktuelle Zustand a und der Eingang IN1 1 ist. Verbinden Sie also mit dem D-Eingang von ff b den Ausgang eines UND-Gatters. Die Eingänge dieses AND sind der Q-Ausgang von ff a und das Signal IN1. Zu D von ff b ist wirklich nichts mehr nötig. Eigentlich ist das Impulsdiagramm verkürzt. Es lässt mich davon ausgehen, dass IN2 den Übergang von a nach b nicht beeinflusst .
Das Impulsdiagramm zeigt 4 verschiedene Fälle, in denen D von ff a =1 sein sollte. sie sind:
Sie benötigen eine Gatterschaltung (= Verknüpfungsschaltung), die gerade in diesen Fällen 1 bis D von ff a erzeugt. Ich sehe, es braucht ein Multi-Input-OR und ein paar UNDs und Inverter.
Jetzt: Versuchen Sie fortzufahren
Hoffentlich können Sie sehen, wie OUT1 und OUT2 erzeugt werden.
DNN