Sida 1 av 4

State Maskin ?

Postat: 3 oktober 2020, 16:57:55
av 4kTRB
Ska bygga en logikkrets med standardkretsar som levererar enligt state-diagrammet.

Så har jag tagit fram en tabell men vet inte riktigt hur jag ska fylla i utsignalen Y.
A och B är inputs och C motsvarar current state och N next state.
Det kan hända jag gjort fel eller missat något.
StateDiagram.png
StateTable.png

Re: State Maskin ?

Postat: 3 oktober 2020, 20:20:30
av adent
Jag tror du har snurrat bort dig lite. Som det är ritat nu är en varje kombination av A och B ett state. D.v.s. cirlarna. Men så beskriver du det inte i texten.

Rita om med en cirkel per state, sen ritar du vilken kombination av A och B som ska ta dig mellan state:n d.v.s. A och B på pilarna. När du är klar med detta kan du rita in vad Y ska vara i varje state.

Edit: eller kanske det är så du vill ha det?

MVH: Mikael

Re: State Maskin ?

Postat: 3 oktober 2020, 20:42:42
av 4kTRB
Att Y ska vara state beroende på vad A och B har för värde?
Verkar logiskt. Ska rita om.

Re: State Maskin ?

Postat: 4 oktober 2020, 12:05:56
av rvl
Mealy... I varje state kan Y vara både 0 och 1, beroende på vilket state den kom ifrån. Själv är jag mer bekant med Moore, där utgångarna är beroende enbart av state och förflyttningar mellan state är rena förflyttningar, utan ändring av utgångar.

Loop back bågarna brukar vara underförstådda, som produkten (and) av negationerna av övriga utgående bågar. Nuvarande loop back bågar verkar gälla, när båda verkliga utgående gäller och skall tydligen ges prioritet? Kanske kunde vara tydligare, om både A och B kraven nämdes på samtliga utgående, där man byter state.

Re: State Maskin ?

Postat: 4 oktober 2020, 14:16:39
av 4kTRB
Jag har analyserat ingångsvärdena A och B mer noga nu.
Det hela går ut på att jag har 2 st läsgafflar där den ena är monterad lite förskjuten,
något mer eller mindre än 90 grader.

Det ger ett antal olika fall beroende på hur skivan snurrar.
2 basic fall är rotation åt ena eller andra hållet.
2 fall där rotationen växlar och ena sensorn växlar signal, rotationen ändras då hålet i skivan är mitt för sensorn,
2 fall om rotationen står och växlar så det endast påverkar den ena sensorn.

Y är utsignalen som talar om rotationsriktningen.

Så om jag ritar ett statediagram med Y som state ska det bli enligt schemat.

Två klipp som jag tror mig kunna ha hjälp av:


SM_Sensor_000.png
SM_Diagram_000.png

Re: State Maskin ?

Postat: 4 oktober 2020, 16:22:18
av 4kTRB
Om jag nu uppfattat det hela korrekt så har jag 8st state som måste ha ett eget id.
Kan jag använda 3st vippor, exempelvis JK-vippor att representera x, y och z ?

Det är 24 olika pilar i state-diagrammet och jag får en tabell med 24 rader.
SM_Tabell_000.png

Re: State Maskin ?

Postat: 4 oktober 2020, 18:47:08
av Nerre
Ja, det är väl rätt uppenbart att varje tillstånd måste ha ett eget ID? Hur ska du annars veta vilket tillstånd du befinner dig i? Det handlar ju i grunden om att maskinen på nåt så måste komma ihåg vilket tillstånd den befinner sig i. Den behöver alltså nån slags minne.

Vippor brukar väl vara det normala sättet att lösa detta.

Sen brukar man ju försöka förenkla det hela, jag har glömt vad diagrammen heter där man försöker förenkla villkoren... Man tittar efter mönster i villkoren för att förenkla.

Re: State Maskin ?

Postat: 4 oktober 2020, 20:10:36
av 4kTRB
Karnaugh-diagram. Men med 5 variabler blir det knöligt.
Tyvärr blir boolska utrycken inte så kul i detta fall men det finns online tabeller att fylla i som ger minimiformer.

x+ ger en 5-grinds OR med mellan 3 och 5-grinds AND/NAND och inverterare alternativt NAND
y+ en 7-grinds OR med mellan 3 och 5-grinds AND och inverterare alternativt NAND
z+ en 8-grinds OR med 4-grinds AND och inverterare alternativt NAND

Exempelvis z+ ser ut så här:
~x~ya~b + ~x~yz~b + ~xy~ab + xy~a~b + ~xyzb + x~yab + x~yzb + xyz~b

NAND-Logik
(a NAND NOT b) NAND (a NAND x NAND NOT y) NAND (NOT a NAND b NAND y) NAND (NOT a NAND x NAND y) NAND (NOT a NAND x NAND z) NAND (NOT b NAND z) NAND (NOT x NAND y NAND z)

NOR-Logik
(NOT a NOR NOT b NOR NOT x NOR NOT y) NOR (NOT a NOR NOT b NOR x NOR z) NOR (a NOR b NOR x NOR z) NOR (a NOR y NOR z) NOR (NOT b NOR x NOR y)

Fast det borde jag kanske testa i någon simulator.

Re: State Maskin ?

Postat: 4 oktober 2020, 21:42:48
av 4kTRB
Den där räknaren jag använde var inget bra.

Re: State Maskin ?

Postat: 4 oktober 2020, 23:38:36
av 4kTRB
Fick tag i ett riktigt program.

x+

xplus = x' y' z' a' b + x' y' z a' b' + x' y z' a b' + x' y z a b + x y' z' a b + x y' z a b' + x y' z a b + x y z' a' b' + x y z' a' b + x y z' a b' + x y z a' b' + x y z a' b;

Minimized:
xplus = x y a' + x y' z a + x y' a b + y z' a b' + x' y z a b + x' y' z' a' b + x' y' z a' b';


y+

yplus = x' y' z a' b' + x' y' z a b + x' y z' a' b + x' y z' a b' + x' y z' a b + x' y z a' b + x y' z a' b + x y' z a b' + x y z' a' b' + x y z' a b' + x y z' a b + x y z a' b';

Minimized:
yplus = y z' a + x' y a' b + x y a' b' + x' y' z a b + x y' z a' b + x y' z a b' + x' y' z a' b';


z+

zplus = x' y' z' a b' + x' y' z a' b' + x' y' z a b' + x' y z' a' b + x' y z a' b + x' y z a b + x y' z' a b + x y' z a' b + x y' z a b + x y z' a' b' + x y z a' b' + x y z a b';

Minimized:
zplus = x' y z b + x y' z b + x y' a b + x' y a' b + x y z b' + x' y' z b' + x' y' a b' + x y a' b';
xplus.png
yplus.png
zplus.png

Re: State Maskin ?

Postat: 5 oktober 2020, 16:09:47
av 4kTRB
Jag kollade klippet på youtube.
Maskinen ska alltså ha dessa 2 block och sedan återkopplat.
Utsignalen Y är helt enkelt inverterade värdet av xplus.
D-vippor blir nog bra. 3 stycken.
SM_Block.png
Det skulle gå bra att använda Arduino som state maskin.
Vet inte riktigt hur det ska gå till bara.
Jag måste i vilket fall avsätta 2 digitala pinnar som ingång för A och B och eventuellt en utgång för X.
Resten ska väl kunna fixas till i koden?

Re: State Maskin ?

Postat: 5 oktober 2020, 18:11:17
av baron3d
Skall bara tipsa om att du kan använda 74HC151 för en del logik.

Re: State Maskin ?

Postat: 5 oktober 2020, 19:15:15
av Nerre
Ja, men poängen med karnaughdiagrammen är att förenkla de där rutorna "logik".

Ibland kan det bli så så enkelt som att bara en eller två av ingångarna används.


Men ska du koda det på en Arduino finns det bättre sätt att göra det, t.ex. switch-case för varje state och så lite if-satser inom varje case-block.

Ett snabb framgooglat exempel (de första exemplen på sidan är lite väl enkla dock, men scrolla ner lite).
https://blogs.itemis.com/en/how-to-use- ... -statement

Re: State Maskin ?

Postat: 5 oktober 2020, 20:11:52
av 4kTRB
Om jag har en statemaskin på aurdinon så blir det nog tvunget att köra den som en egen tråd. Jag ska ha den till annat samtidigt.

Det hela verkar vara orimligt komplicerat bara för ta reda på rotationsriktningen men de flesta frågor rörande detta har liknande lösningar. Dock en som påstod att det går lösa med en jk-vippa eller två.

För att lösa logiken krävs minst 15 ST ic-kapslar standardkapslar. NOR- OR- och NAND-grindar.

Re: State Maskin ?

Postat: 5 oktober 2020, 20:17:49
av Nerre
Om du använder den ena signalen som flank-triggad klocka och den andra som data till en D-vippa så kommer den att indikera riktningen. Dock är problemet att det blir lite eftersläpning, så vill du ha puls på varje flank blir det krångligare.

Men om du enbart vill ha en riktningssignal (som kan få vara lite fördröjd) räcker det med en flanktriggad D-vippa.

Kolla här t.ex.
https://electronics.stackexchange.com/q ... een-turned