Konstruksjon av MOORE tilstandsmaskiner 1 Eksempel 1 1.1 BESKRIVELSE
2250mm
La oss se på et enkelt eksempel der vi skal konstruere en sekvenskrets som kontrollerer tilgangen til et felles prøverom mellom dame- og herreavdelingen i en klesbutikk. Det er 2 innganger til prøverommet, én fra hver avdeling. Dørene kan bare åpnes opp hvis det er ledig; dvs. at ingen av de 2 bryterne X og Y er aktivisert. De styrbare låsene for de 2 inngangene er kalt Q og P. Se skissen nedenfor.
3000mm.
P
Y
2250mm
3250mm
X
Q
900mm
Herrer
900mm
Damer
Det elektriske styresystemet kan skisseres som vist nedenfor. 2 innsignaler og 2 utsignaler. Vi skal designe dette systemet som en synkron sekvenskrets og trenger derfor et klokkesignal. Klokkesignalet betrakter vi her til å inngå i selve kretsen, slik at det ikke blir noen egen inngang på dette nivået.
Y
P
X
Q
1
1.2 TILSTANDSDIAGRAM Vi bestemmer oss videre for å designe kretsen som en MOORE sekvenskrets. Det betyr at utsignalene bare skal være direkte avhengige av kretsens tilstand og ikke av innsignalene. Virkemåten for kretsen kan da formaliseres i et tilstandsdiagram som vist: (not X) and (not Y)
PQ
TOM 00
X and (not Y)
Y
X
Y
DAM 01
HER 10
not X
not Y
Legg merke til at hvis det lite sannsynlige tilfellet at både X og Y aktiviseres samtidig inntreffer, vil Y prioriteres. Inne i tilstandsboblene er navnet på tilstanden skrevet sammen med verdiene til utsignalene P og Q.
1.3 NESTETILSTANDSTABELL PÅ SYMBOLSK FORM Basert på tilstandsdiagrammet, kan vi sette opp en nestetilstandstabell, som ikke er noe annet enn tilstandsdiagrammet på tabellform. Nåtilstand
Innsignaler
Nestetilstand
XY
Utsignaler PQ
TOM
0 0 1 1
0 1 0 1
TOM HER DAM HER
0 0 0 0
0 0 0 0
DAM
0 0 1 1
0 1 0 1
DAM DAM TOM TOM
0 0 0 0
1 1 1 1
HER
0 0 1 1
0 1 0 1
HER TOM HER TOM
1 1 1 1
0 0 0 0
2
Nestetilstandstabellen kan betraktes som en slags sannhetstabell, der Nåtilstanden og Innsignalene er de frie variablene og Nestetilstanden og Utsignalene er funksjonsverdiene. I MOORE-tilfellet er Utsignalene bare gitt av Nåtilstanden som vist.
1.4 TILSTANDSKODING Vi må nå bestemme antallet flipflopper vi ønsker å benytte i tilstandsminnet til kretsen. Antall flipflopper må være større eller lik det minste heltallet vi kan opphøye 2 i for å få antall tilstander. Vi har 3 tilstander i denne kretsen. Det betyr at vi må ha minst 2 flipflopper. Vi velger 2 flipflopper som er det mest økonomiske alternativet. Kaller flipfloppene A og B. Dette fører til at vi kan sette opp følgende modell for kretsen. Denne modellen vil være lik for alle MOORE sekvenskretser med 2 innganger, 2 utganger og 2 tilstandsvariable (flipflopper). Vå jobb blir nå å konstruere de to kombinatoriske logiske blokkene i figuren.
Y
D
SET
Q
P
A
X
CLR
Nestetilstandslogikk
D
SET
Q
Utgangslogikk Q
Q
B CLR
Q
Clk
Når vi kjenner antall flipflopper i kretsen, må vi for å komme videre, bestemme hvilke binærkoder som skal representere de enkelte tilstandene. Hvordan disse kodene velges, vil ha betydning for hvordan detaljene i kretsløsningen blir, men er ikke kritisk. Det finnes en del teori om hvordan denne kodingen kan gjøres optimalt, men vi skal velge kodingen ganske vilkårlig som vist nedenfor. Merk at utgangstilstanden som regel gis en kode med bare nuller. Dette gjøres for at det skal bli enkelt å sette kretsen i utgangstilstanden ved å aktivisere et felles Clear-signal til alle flipfloppene.
Tilstand
Kode AB
TOM
00
DAM
01
HER
11
3
Siden 2 bit gir 4 kombinasjoner, har vi en ubenyttet tilstandskode: 10. Vi trenger ikke denne, men vi må likevel forholde oss til denne fordi, de elektroniske kretsene ”ikke vet” at en av kodene ikke skal benyttes. Den komplette tabellen blir da som vist nedenfor med den ubenyttede tilstanden XXXX. Tilstand
Kode AB
TOM
00
DAM
01
XXXX
10
HER
11
1.5 TILSTANDSTABELL PÅ BINÆR FORM Nå kan vi sette opp tilstandstabellen på nytt, men denne gangen skal vi sette inn binærkodene for tilstandene i henhold til tabellene ovenfor. Nåtilstand
Innsignaler
Nestetilstand
Utsignaler
m
AB
XY
A+ B+
PQ
0 1 2 3
0 0 0 0
0 0 0 0
0 0 1 1
0 1 0 1
0 1 0 1
0 1 1 1
0 0 0 0
0 0 0 0
4 5 6 7
0 0 0 0
1 1 1 1
0 0 1 1
0 1 0 1
0 0 0 0
1 1 0 0
0 0 0 0
1 1 1 1
8 9 10 11
1 1 1 1
0 0 0 0
0 0 1 1
0 1 0 1
X X X X
X X X X
X X X X
X X X X
12 13 14 15
1 1 1 1
1 1 1 1
0 0 1 1
0 1 0 1
1 0 1 0
1 0 1 0
1 1 1 1
0 0 0 0
DA DB
Husk at flipfloppene A og B få verdier etter klokkepulsene som tilsvarer verdiene på Dinngangene når klokkepulsen inntreffer. Hvis vi konstruerer funksjoner for D-inngangene som tilsvarer nestetilstandene, kommer altså utgangene på flipfloppene ti å få riktige nestetilstandsverdier.
4
1.6 Nestetilstandsligninger og outputligninger Vi overfører nå verdiene fra tabellen til Karnaughdiagrammer for signalene DA, DB, P og Q og forenkler uttrykkene mest mulig.
1.6.1 Nestetilstandsligningene XY AB
00 00
0
01
4
11 10
01 1
10
3
2
5
7
6
12
13
15
8
X
1
1
11
X
9
1
11
1
14 10
X
X
11
10
DA
XY AB
00 0
00 01 11 10
4
1
12
01
1
1
3
1
5
7
13
15
1
1 x
8
2
1
6 14
1 x
DB
5
9
11
x
10
x
1.6.2 Outputligningene XY AB
00
01
11
10
00
0
1
3
2
01
4
5
7
6
12
11
1
10
x
8
13
1
9
x
15
1
11
14
1
10
x
x
11
10
P
XY AB
00 0
00 01 11 10
01
1
1
4
5
8
13 9
x
Q
6
2
7
1
1
12
x
3
15 11
x
6
1 14 10
x
1.7 Kretsløsning Nå kjenner vi de logiske utrykkene for alle variablene, og kan tegne opp den komplette løsningen på kretsen.
P Y
D
SET
Q
A CLR
X
D
SET
Q
Q
Q
B CLR
Q
Clk
Denne spesielle oppgan kan sikkert løses enklere ved å tenke gjennom hva som egentlig skal skje når signalene X og Y aktiveres. JK-flipflopper og andre hukommelseselementer kan benyttes for å huske om noen er inne i prøverommet eler ikke. Portkretser kan benyttes til å styre flipfloppene. Poenget med tilstandsmaskinkonstruksjoner, er at vi har innført en enhetlig metode for design av sekvenskretser enten de er enkle som denne eller kompliserte.
7
2 Eksempel 2 Dette eksempelet viser hvordan en låsemekanisme med trykknapper som skal aktiveres i en gitt sekvens, kan konstrueres. For at ikke eksempelet skal bli for stort, vises en konstruksjon med 2 knapper (X og Y) og 2 utsignaler (U og V). Etter er korrekt trykksekvens med X og Y åpnes låsen ved at et signal U aktiveres. Ved feil sekvens skal systemet gå i ”vranglås” og skal ikke kunne åpnes igjen på normal måte – signalet V aktiveres. Knappene kan trykkes ned så lenge man vil, hvis de bare trykkes riktig i forhold til hverandre: X – X (X og Y) Y X
U
Y
V
X Y U
Signalet U skal være et enkelt pulssignal. Når dette er blitt aktivert, kan går kretsen tilbake til utgangstilstanden og kan knappene kan trykkes på nytt. Signalet U kan dermed for eksempel kobles til klokkeinngangen på en T-vippe for å realisere låsing og åpning av en kodelås.
2.1 Tilstandsdiagram I dette tilstandsdiagrammet for kretsen er det forutsatt at alle inputkombinasjoner som ikke er vist, vil få systemet til å gå til tilstanden Err. 00
--
Start 00
10
XY 10
S1 00
UV OK 10
00 --
00
Err 01
00
S2 00
S5 00
01
10
01
S3 00
S4 00
10
11 11
Sekvenskretsen har 8 tilstander og er modellert som en MOORE-maskin.
8
2.2 Symbolsk nestetilstandstabell Tilstandsdiagrammet ovenfor kan overføres til følgende nestetilstandstabell. Nåtilstand
Innsignaler
Nestetilstand
XY
Utsignaler UV
Start
0 0 1 1
0 1 0 1
Start Err S1 Err
0 0 0 0
0 0 0 0
S1
0 0 1 1
0 1 0 1
S2 Err S1 Err
0 0 0 0
0 0 0 0
S2
0 0 1 1
0 1 0 1
S2 Err S3 Err
0 0 0 0
0 0 0 0
S3
0 0 1 1
0 1 0 1
Err Err S3 S4
0 0 0 0
0 0 0 0
S4
0 0 1 1
0 1 0 1
Err S5 Err S4
0 0 0 0
0 0 0 0
S5
0 0 1 1
0 1 0 1
OK S5 Err Err
0 0 0 0
0 0 0 0
OK
0 0 1 1
0 1 0 1
Start Start Start Start
1 1 1 1
0 0 0 0
Err
0 0 1 1
0 1 0 1
Err Err Err Err
0 0 0 0
1 1 1 1
2.3 Tilstandskoding Etter å ha satt opp tilstandstabellen, må man ta stilling til hvilken koding som skal benyttes for tilstandsvariablene i alle tilstander. Hovedregelen er at vi for starttilstanden (etter at spenning er satt på kretsen) velger at alle tilstandsvariablene skal ha verdien 0. Dette på grunn av enkel hardware reset av de benyttede flipfloppene. Siden det er 8 tilstander i systemet, må man minst benytte 3 flipflopper. Vi gå her for minimumsantallet. Deretter må man velge kodingen for disse 8 tilstander. Det finnes flere strategier for å velge koding, men for oversiktens skyld, skal vi her velge en ren binær tellerekkefølge:
9
Tilstand
Tilstandsvariable ABC
Start
000
S1
001
S2
010
S3
011
S4
100
S5
101
OK
110
Err
111
Setter så kodene for A, B og C inn for tilstandsnavnene i tilstandstabellen.
2.4 Binær nestetilstandstabell Nåtilstand
Innsignaler
Nestetilstand
Utsignaler
ABC
XY
A+ B+ C+
UV
0 0 0 0
0 0 0 0
0 0 0 0
0 0 1 1
0 1 0 1
0 1 0 1
0 1 0 1
0 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 1 1
0 1 0 1
0 1 0 1
1 1 0 1
0 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
0 0 1 1
0 1 0 1
0 1 0 1
1 1 1 1
0 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1
0 0 1 1
0 1 0 1
1 1 0 1
1 1 1 0
1 1 1 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
0 0 0 0
0 0 1 1
0 1 0 1
1 1 1 1
1 0 1 0
1 1 1 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 1 1
0 1 0 1
1 1 1 1
1 0 1 1
0 1 1 1
0 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1
0 0 0 0
0 0 1 1
0 1 0 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
1 1 1 1
1 1 1 1
0 0 1 1
0 1 0 1
1 1 1 1
1 1 1 1
1 1 1 1
0 0 0 0
1 1 1 1
10
For å lett kunne overføre tabellen til K-diagrammer når ligningene for utsignaler og eksiteringssignaler skal settes opp, bytter vi rekkefølgen på radene i tabellen, slik at variablene BC og XY listes på Gray-kodeform. (Dette er ikke nødvendig hvis man klarer å holde oversikten likevel.) Nåtilstand
Innsignaler
Nestetilstand
Utsignaler
A+ B+ C+ DA DB DC
UV
A
BC
XY
0 0 0 0
0 0 0 0
0 0 0 0
0 0 1 1
0 1 1 0
0 1 1 0
0 1 1 0
0 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 1 1
0 1 1 0
0 1 1 0
1 1 1 0
0 1 1 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1
0 0 1 1
0 1 1 0
1 1 1 0
1 1 0 1
1 1 0 1
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
0 0 1 1
0 1 1 0
0 1 1 0
1 1 1 1
0 1 1 1
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
0 0 0 0
0 0 1 1
0 1 1 0
1 1 1 1
1 0 0 1
1 1 0 1
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
1 1 1 1
0 0 1 1
0 1 1 0
1 1 1 1
1 0 1 1
0 1 1 1
0 0 0 0
0 0 0 0
1 1 1 1
1 1 1 1
1 1 1 1
0 0 1 1
0 1 1 0
1 1 1 1
1 1 1 1
1 1 1 1
0 0 0 0
1 1 1 1
1 1 1 1
1 1 1 1
0 0 0 0
0 0 1 1
0 1 1 0
0 0 0 0
0 0 0 0
0 0 0 0
1 1 1 1
0 0 0 0
11
2.5 Logiske uttrykk med forenklinger 2.5.1 Nestetilstandsligninger Løser for DA:
A=0 XY BC
00 00
0
01
4
11
12
1
8
10
01
1 1
1 5
13
1 1
9
11 3
2
7
6
15
14
11
10
1 1 1 1
10
DA
A=1 XY BC
00 00
1
01
1
11
1
10
0 4
12
01
1 1 1
1 5
13
8
9
DA
12
11
1 1 1
3 7
15 11
10
1 1 1
2 6
14 10
Løser for DB:
A=0 XY BC
00 0
00 01
1
4
12
11
1
10
1
8
01
1 1
1 5
11
1 1
13
1
9
3
2
7
6
15
1
1
10
11
14
1
10
1
DB
A=1 XY BC
00 00
1
01
1
11
1
10
01
0
1
4
5
12
1
13
8
9
DB
13
11 3
1 1
7
15 11
10
1 1 1
2 6
14 10
Løser for DC:
A=0 XY BC
00 00
0
01
4
11
12
1
8
10
01
1 1
1 5
11
1 1
13 9
7
15
1 1
3
1
11
10
1 1
2 6
14
1
10
1
DC
A=1 XY BC
00 00
1
4
01 11 10
0
1
12
01
1 1 1
1 5
13
8
11
9
DC
14
3
1 1
7
15 11
10
1 1 1
2 6
14 10
2.5.2 Outputligninger BC A
00
01
11
0
0
1
3
1
4
5
7
10 2
1
6
U
BC A
00
01
11
0
0
1
1
4
5
1
10
3
2
7
6
V
2.6 Kretsskjema Siden dette er et ganske omfattende sekvenskrets, blir også det konkrete kretsskjemaet ganske stort. Den detaljerte kretsløsningen vises ikke, men kretsen realiseres etter følgende modell, der de logiske uttrykkene som er utviklet, bestemmer de logiske nettverkene på forsiden og baksiden av tilstandsminnet. I den aktuelle kretsen er det 3 flip-flopper: A, B og C. X
D
SET
Q
U
A
Y
Nestetilstandslogikk
CLR
Q
---------
D
SET
Q
V
C CLR
Clk
15
Utgangslogikk
Q