Entwerfen Sie einen Moore-Zustandsautomaten, der 1 0 1 in aufeinanderfolgenden Ziffern im Eingangsstrom von 0 und 1 erkennt, der bei jedem Taktzyklus empfangen wird.
Die Schaltung sollte eine 1 ausgeben, wenn sie 1 0 1 als aufeinanderfolgende Ziffern erkennt. Implementieren Sie die FSM mit einer Kombination aus sequentieller und kombinatorischer Logik. Zeichnen Sie die Wahrheitstabelle für Eingänge, Ausgänge und Zustände. Zeichnen Sie die K-Karte für alles. Geben Sie an, wie viele Flip-Flops Sie verwenden werden. Zeichnen Sie die letzte Schaltung mit den Flip-Flops.
Example:
INPUT: 0 1 0 1 0 1 1 0 1 0 0...
OUTPUT: 0 0 0 1 0 1 0 0 1 0 0...
Dies ist meine bisherige Arbeit, die die Zustandsmaschine beschreibt:
S_i inp S_{i+1}
000 -> 0 -> 000
000 -> 1 -> 001
001 -> 0 -> 010
001 -> 1 -> 001
010 -> 0 -> 000
010 -> 1 -> 101
101 -> 0 -> 010
101 -> 1 -> 001
Da nur 4 Zustände beteiligt sind ("000", "001", "010" und "101"), stelle ich sie mit den Bits A und B dar:
A | B
-------
s_0 0 | 0 to represent state "000"
s_1 0 | 1 to represent state "001"
s_2 1 | 0 to represent state "010"
s_3 1 | 1 to represent state "101"
Ich habe dies mit der vorherigen Tabelle kombiniert, um die Anfangszustände I_A, I_B mit einigen neuen Eingaben X und dann die Zielzustände D_A und D_B darzustellen:
I_A I_B | X | D_A D_B
________________________
0 0 | 0 | 0 0
0 0 | 1 | 0 1
0 1 | 0 | 1 0
0 1 | 1 | 0 1
1 0 | 0 | 0 0
1 0 | 1 | 1 1
1 1 | 0 | 1 0
1 1 | 1 | 0 1
Ich habe die K-Maps für (I_A, I_B) vs. X für die Ausgabe D_A sowie (I_A, I_B) vs. X für die Ausgabe D_B geschrieben und diese Vereinfachung erhalten:
D_A = ¬X * I_B + X * I_A * ¬I_B
D_B = X
Ich bin mir ziemlich sicher, dass das soweit in Ordnung ist.
Allerdings ist mir unklar, wohin ich von hier aus gehen soll. Ich verstehe nicht wirklich, wie ich dies als tatsächliche Schaltung mit Flip-Flops modellieren soll. Ich weiß nicht, wie ich die Anfangszustände von A und B in ihre entsprechenden Endzustände überführen soll. Ich weiß nicht, wie ich eine 1 ausgeben soll, falls ich in den "101"-Zustand s_3 komme.
D_A = ¬X * I_B + X * I_A * ¬I_B
D_B = X
Ich weiß nicht wirklich, ob das richtig ist, aber so habe ich versucht, die Schaltung zu modellieren:
I_B ------o-------------------------o
| |
| v
| AND----->OR--------> D_A
| ^ ^
o---NOT---->A | |
N---->AND-----|--------o
I_A ----------------->D ^ |
| |
X --------o---NOT-------------------o
| |
| |
o------------------o-------------------------> D_B
Wo gehe ich von hier aus hin?
Ich habe keine Ausbildung zu Mealy und Moore. Ich bin nur "Bücherleser" und hatte vor dieser Lektüre nur viele, viele grundlegende Übungen darin, Dinge mit Zustandsmaschinen (offensichtlich endlich) zum Laufen zu bringen, ohne mir die Mühe zu machen, dem, was ich getan habe, Namen zuzuweisen. Ich kannte nur einige Denkwerkzeuge, das war alles, was gut funktionierte.
Soweit ich weiß, ist Tonys Schaltung ein Mealy FSM, nicht Moore. Abgesehen davon, dass er die Ausgabe "registriert" hat, was es meiner Meinung nach ermöglicht, der Moore-Maschinendefinition zu entsprechen. Ich werde erklären, warum ich das denke, indem ich Definitionen verwende, die ich im Internet finde, und sein Schema, um den Punkt zu verdeutlichen. Aber denken Sie daran, dass ich mit meinen Interpretationen falsch liegen kann, und ich bin sehr offen dafür, in Bezug auf das Folgende zur Rede gestellt zu werden.
Ich habe Ihr Schreiben über Ihren Ansatz völlig ignoriert. Es ist viel einfacher für mich, Tools zu verwenden, die ich gut kenne und verstehe. Hier ist das Ergebnis meines ersten Nachdenkens über das, was Sie geschrieben haben – ich konzentriere mich nur auf den Kommentar zu „101“.
Die Bezeichnung der Zustände zeigt die vorherigen zwei Bits. Die Kennzeichnung ist das jüngste Bit rechts und das vorherige Bit links.
Dieses Diagramm enthält einige Zustände, die Sie nicht aufgenommen haben, und zeigt den anfänglichen Übergang von "keine Bits gesehen" zu "ein Bit gesehen" und dann zu "mindestens zwei Bits gesehen". Wahrscheinlich möchten Sie jene Anfangszustände ignorieren, die zu den oben gezeigten inneren vier Zuständen führen. Was in Ordnung ist. Ich wollte nur darauf hinweisen, wie ich über diese Fragen "denke", wenn ich ihnen zum ersten Mal gegenüberstehe.
Hier sehen Sie die vier Zustände, die Sie erreicht haben, aber von einem etwas anderen Ansatz aus. Ich verfolge nur die beiden vorherigen Bits als Paar und zeige dann das eingehende Bit als Übergang zwischen Zuständen.
Schließlich habe ich einen roten Stern eingefügt, um den wichtigen Übergang anzuzeigen, an dem „101“ erkannt wird. (Das vorherige Zustandspaar muss "10" sein und muss von einer "1" als Übergang gefolgt werden.)
Hier ist eine destillierte Version:
Was wahrscheinlich eher dem entspricht, was Sie erreichen möchten.
Das Paar von D-Typ-FF, das für die jüngsten und auch die unmittelbar vorhergehenden Bits erforderlich ist, ist im oberen Diagramm gezeigt. Das untere Diagramm zeigt das fertige Ergebnis, auf das Tony hingewiesen hat.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Beachten Sie, dass dieses Schema sowohl die aktuellen Zustandsinformationen (die beiden im oberen Diagramm gezeigten FF) als auch den aktuellen Eingang (im unteren Diagramm als Draht gezeigt, der von DATA zu einem der Eingänge des AND-Gatters mit 3 Eingängen kommt ) erfordert ". Nur wenn der aktuelle Zustand und auch die Eingabe einige Kriterien erfüllen, wird der korrekte Ausgabestatus zwischengespeichert. Normalerweise glaube ich, dass dies das Ergebnis als Mealy-Maschine und nicht als Moore-Maschine qualifiziert. Aber die Tatsache, dass dies eine ist "registrierte Mealy-Maschine" macht sie zu einer gültigen Moore-Maschine.
Sie könnten dies direkter als Moore-Maschine tun, nehme ich an. Aber ich denke, das passt.
Simulieren Sie diese Schaltung – Mit CircuitLab erstellter Schaltplan
Diese Moore-Sequenz benötigt nur 2 vorherige Zustände von 01 für Reg 12, wobei Reg1 invertiert wird, um 11 zu erzeugen, und mit dem gegenwärtigen Eingang =1 in das 3in-UND kombiniert wird, um D=1 zu erzeugen, das mit dem nächsten Zustand getaktet wird, der die Sequenz von 101 ist.
Harry Swensson
Benutzer525966
Benutzer525966