Forum: Mikrocontroller und Digitale Elektronik Automat für UND und ODER


von Auto_MAT (Gast)


Lesenswert?

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.

von Stefan F. (Gast)


Lesenswert?

Klar geht das. Was du suchst, ist ein Schieberegister. Und zwar eins mit 
seriellem Eingang und parallelem Ausgang. Zum Beispiel 74HC595.

von Stefan S. (chiefeinherjar)


Lesenswert?

Auto_MAT schrieb:
> Eingabe eine Bitfolge erhält und diese dann ODER Verknüpft

Mit WAS soll sie denn verknüpft werden?

von Auto_MAT (Gast)


Lesenswert?

"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?

von Stefan F. (Gast)


Lesenswert?

So knapp ohne Kontext kann ich mit der Aufgabe NICHTS anfangen.

Was soll denn eine "UND state Machine" sein?

von Stefan S. (chiefeinherjar)


Lesenswert?

Das riecht für mich etwas nach VHDL und vor allem Hausaufgaben...

von Kai S. (kai1986)


Lesenswert?

Vermutlich soll die State Machine die einzelnen Bits der Bitfolge 
miteinander Verknüpfen.

Gruß Kai

von Auto_MAT (Gast)


Angehängte Dateien:

Lesenswert?

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?

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Auto_MAT schrieb:
> Akzeptiert die SM die Bitfolge
Definiere, was du unter "akzeptiert" verstehst.

von Auto_MAT (Gast)


Lesenswert?

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

von NichtWichtig (Gast)


Lesenswert?

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)
}

von Auto_MAT (Gast)


Lesenswert?

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

von NichtWichtig (Gast)


Lesenswert?

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

:)

von Sauerei (Gast)


Lesenswert?

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.

von NichtWichtig (Gast)


Lesenswert?

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
Noch kein Account? Hier anmelden.