Hallo, ich habe eine Frage zu Automaten. Ich würde gerne wissen, ob es möglich ist einen ODER Automaten zu bauen, der als Eingabe eine Bitfolge erhält und diese dann ODER Verknüpft. Dann würde mich interessieren, ob es möglich ist einen UND Automaten zu bauen, der als Eingabe auch wieder eine Bitfolge erhält und dann diese Bitfolge UND Verknüpft. Meine Frage, geht das überhaupt, weil normalerweise benötigt man doch zwei Inputs sage ich mal. Das geht ja auch aus den Wahrheitstabellen hervor. daher hier die Frage, wie man sowas machen könnte? Ich habe mir selber schon Gedanken gemacht, das Problem ist nur, dass der Automat dann die Wahl hat, oder er jetzt und Verknüpft oder nicht.
Klar geht das. Was du suchst, ist ein Schieberegister. Und zwar eins mit seriellem Eingang und parallelem Ausgang. Zum Beispiel 74HC595.
Auto_MAT schrieb: > Eingabe eine Bitfolge erhält und diese dann ODER Verknüpft Mit WAS soll sie denn verknüpft werden?
"Mit WAS soll sie denn verknüpft werden?" Ja das frage ich mich auch. Also zu meinem Hintergrund, ich beschäftige mich gerade mit State Machines und da gab es genau so eine Aufgabe. Bauen sie eine State Machine die als Eingabe einen String 0,1 erhält und es soll die UND state Machine konstruiert werden, was mich halt etwas verwirrt, da man ja eigentlich etwas und VERKNÜPFT?
So knapp ohne Kontext kann ich mit der Aufgabe NICHTS anfangen. Was soll denn eine "UND state Machine" sein?
Vermutlich soll die State Machine die einzelnen Bits der Bitfolge miteinander Verknüpfen. Gruß Kai
Ok, ich frage mal anders: Mal angenommen ich habe eine Bitfolge 11001110 im Bild ist die "angebliche" SM für ODER angegeben. Akzeptiert die SM die Bitfolge oder nicht, und wenn ja warum?
Hier: http://www.cs.cmu.edu/~tom7/211/fsm1-answers.html daher habe ich das. Nur ich versteh das nicht so ganz. Meines Erachtens akzeptiert der Automat den String nicht...
Im einfachsen Fall werden 2 Bits verknüpft. Inputs wären also Bit1 und Bit2 Eine Statemachine besteht (in meinem Job) aus 4 Dingen: States, Events, Transitions und rules Im Laufe einer Entwicklung ergeben sich die notwendigen states, die events kommen mitunter aus dem Umgebung die Transitions erledigen den Job zwischen Source- und Destination state die rules beschreiben dann die state machine. Läßt sich herrlich mit UML designen :D der Ablauf hier scheint ein sequenzielle Eingabe der (beiden) bits zu sein. Bit1 kommt 'rein' event Bit1_low oder Bit1_high Dann kommt Bit2 'rein', Event Bit2_Low oder Bit2_High Wenn beide Bits 'im kasten' sind ist entsprechend der events nur ein Zielstate möglich welche bei 2 Bits 1 aus 4 ergeben müßte 00 01 10 oder 11 Also braucht es 4 States nach dem letze Schritt, 2 davor und einen idle StateIdle StateBit1Low StateBit1High StateBit1LowBit2Low StateBit1LowBit2High StateBit1HighBit2Low StateBit1HighBit2High die Rules: AddRule( source, Event, destination, transition) AddRule( StateIdle, EvtBit1Low, StateBit1Low, Trxxx) AddRule( StateIdle, EvtBit1High, StateBit1High, Trxxx) AddRule( StateBit1Low, EvtBit2Low, StateBit1LowBit2Low, Trxxx) AddRule( StateBit1Low, EvtBit2High, StateBit1LowBit2High, Trxxx) AddRule( StateBit1High, EvtBit2Low, StateBit1HighBit2Low, Trxxx) AddRule( StateBit1High, EvtBit2High, StateBit1HighBit2High, Trxxx) AddRule( StateBit1LowBit2Low, EvtReset, StateIdle, Trxxx) AddRule( StateBit1LowBit2High, EvtReset, StateIdle, Trxxx) AddRule( StateBit1HighBit2Low, EvtReset, StateIdle, Trxxx) AddRule( StateBit1HighBit2High, EvtReset, StateIdle, Trxxx) Das wäre eine Minimalversion, quasi der HappyDay In meiner state machine hat jeder state einen enter- und exit-Methode (c++) und jede Transition kann ebenfalls idividuelle Aktionen durchführen. Abhängig von der Anforderung UND | OR müssen in den 4 Endstates dann die möglichen Folgen programmiert werden, z.B. LED ansteuern oder so. StateBit1LowBit2Low::enter() { SetLED(false) } StateBit1LowBit2High::enter() { if(OR_MACHINE) SetLED(true) if(AND_MACHINE) SetLED(false) } StateBit1HighBit2Low::enter() { if(OR_MACHINE) SetLED(true) if(AND_MACHINE) SetLED(false) } StateBit1HighBit2High::enter() { SetLED(true) }
Habs, ich habe einfach zu kompliziert gedacht... Zur Lösung, es geht wirklich nur um die akzeptierenden Zustände, und auf die kommt man, indem man sich die Warheitstabelle ansieht. Kurzes Beispiel: zu Und: 1 und 1 wird akzeptiert, alles andere Nicht, 111 würde also akzeptiert werden 1011 beispielsweise nicht, weil damit kein stabiler Zustand erreicht werden kann. PS: war keine Hausaufgabe, schade, dass das hier jeder immer gleich denkt (bzw unterstellt), ist ja nicht so dass man sich mit solchen Sachen nicht auch in der Freizeit beschäftigen kann oder Selbststudium...
bezugnehmend auf deine Grafik mit den beiden States würde auch 1011 zum rechten state führen. Aus dem rechten state führt keine Kante mehr raus und als Event scheint nur 0 und 1 etwas zu bewirken, aber der state spielt ja nur noch mit sich selbst :O Da kannste Unmengen an Einsen und Nullen rein schieben ohne das sich was ändert. BetonState :)
NichtWichtig schrieb: > Da kannste Unmengen an Einsen und Nullen rein schieben ohne das sich was > ändert. Der Automat bleibt links stehen, wenn nur 0en hineingeschoben werden. Sobald eine 1 hineingesteckt wird, geht er auf den rechten Zustand über. Hier ist es egal, was dann noch kommt. Es ist also, wie schon gesagt, ein ODER. Links ist wohl der Ergebniszustand 0 und recht 1.
GENAU!
Mit dem besagten 1011 geht die SM auf jeden Fall in den rechten state
und deswegen ist die Aussage
>>>1011 beispielsweise nicht, weil damit kein stabiler Zustand erreicht
werden kann.<<<<
falsch!
Beitrag #5222703 wurde vom Autor gelöscht.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.