Wie würde ich dieses Miniprojekt beenden (Emission von 1, wenn 101 gelesen wird)?

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?

Wer hat Ihnen das Eingabebeispiel gegeben? So wie es jetzt geschrieben ist, ist es mehlig und es ist unmöglich, dass es Moore ist. - Und was erwartest du dir als Ziel? Eine physische Schaltung mit tatsächlichen ICs? Eine physikalische Schaltung mit Transistoren und Widerständen? Ein Code, der es auf einem Mikrocontroller macht? - " Wohin gehe ich von hier aus? " ist sehr weit gefasst, wenn Sie uns nicht sagen, was Ihr Endziel ist. - Man könnte sagen, dass Sie technisch fertig sind, wenn Ihre Schaltung das tut, was sie tun soll (habe es noch nicht überprüft). - Übrigens, wo ist deine Ausgabe?
@HarrySvensson Es wurde in das Problem eingebaut, nur ein Beispiel dafür, wie die Ausgabe jedes Mal eine 1 anzeigt, wenn wir einen 101-Zustand erreicht haben, um zu verdeutlichen, was los war.
Und ja, ich glaube, das Ziel ist es, die Schaltung mit den ICs und den Flip-Flops zu zeichnen und diese Zustandsmaschine in etwas zu übersetzen, das wir auf Hardware modellieren können

Antworten (2)

Geständnis

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.

Zustandsdiagramm

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“.

Geben Sie hier die Bildbeschreibung ein

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:

Geben Sie hier die Bildbeschreibung ein

Was wahrscheinlich eher dem entspricht, was Sie erreichen möchten.

Zustandspaar

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.

schematisch

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.

Wie haben Sie diese erstaunlichen Zustandsdiagramme erstellt?
@ user525966 Ich habe das Paint-Programm von Microsoft verwendet. Nichts Besonderes. Ich suche seit mehr als 20 Jahren nach einem anständigen Programm für Datenflussdiagramme (das auch für Zustandsdiagramme verwendet werden kann). Bisher kosteten sie entweder ein Vermögen, das ihrer mageren Fähigkeiten nicht würdig war, oder sie waren frei, aber immer noch viel zu begrenzt, um viel zu tun. Also benutze ich Paint. Wenn jemand ein gutes, flexibles Werkzeug hat, insbesondere eines, das eine nivellierte Diagrammerstellung mit Diagrammen der obersten Ebene ermöglicht, die bei Bedarf in detailliertere Diagramme absteigen können, würde ich gerne davon hören.

schematisch

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.

Ich kann nicht sagen, wie das genau funktioniert? Was ist was hier?
Ich sollte hinzufügen, dass ich ein Anfänger bin, der nur versucht, dieses Zeug zu lernen, das sind keine Hausaufgaben oder so und ich bin nicht in einer Klasse, also interessiere ich mich mehr für den Prozess und wie Sie dorthin gelangen, nicht nur für das Ende Ergebnis
Das Suchen nach einem seriellen Muster ist wie ein langes eindeutiges SYNC-Muster am Anfang eines langen Rahmens synchroner Daten, um die Flanke des 1. Bits des 1. Wortes zu definieren, das als nächstes kommt. . Also habe ich gerade ein Schieberegister mit 3 Ds erstellt und das Muster 101 "UND" verknüpft, um die Ausgabe zu erstellen.