Synkrona sekvensnät: Tillståndsmaskiner. Moore och Mealy automat.
Synkrona sekvensnät: Tillståndsmaskiner. Moore och Mealy automat.
Synkrona sekvensnät: Tillståndsmaskiner. Moore och Mealy automat.
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
F9 : <strong>Synkrona</strong> Statemaskiner<br />
Sekvensiella System<br />
a(t)<br />
f(a(t))<br />
Ett sekvensiellt system har ett inbyggt minne - utsignalen beror därför<br />
BÅDE av insignalens NUVARANDE <strong>och</strong> FÖREGÅENDE värde(n)<br />
Föreläsning 8 - Föreläsning 13<br />
p. 2 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Hur får vi hårdvara att minnas<br />
någonting?<br />
Select f 1 f 0 f<br />
0 - f 0 f 0<br />
1 f 1 - f 1<br />
f 1<br />
f 0<br />
MUX<br />
1<br />
0<br />
f<br />
Select<br />
Om vi återkopplar <strong>och</strong> kopplar utgången f till en av ingångarna<br />
(tex f 0 ) så kommer Muxen att få ett nytt värde när den andra<br />
ingången selekteras (Select=1), <strong>och</strong> behålla detta värde när<br />
återkopplingen selekteras (Select=0)<br />
p. 3 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
D-vippan (eng. Flip-flop)<br />
D<br />
Clk<br />
Master<br />
D<br />
Slave Clk D Q Q<br />
↓ 0 0 1<br />
D<br />
Q<br />
↓ 1 1 0<br />
1 - M M<br />
Q<br />
Inverterar-ring på clk<br />
anger negativ flank.<br />
0 - M M<br />
↑<br />
D-vippa<br />
- M M<br />
Lösning: Koppla två D-latchar<br />
efter varandra!<br />
D<br />
Q<br />
Q<br />
p. 4 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
På vilket värde startar sekvensen?<br />
Set<br />
D<br />
Q<br />
Q<br />
Asynkron reset<br />
Q<br />
Reset<br />
Clk<br />
Reset<br />
Vippan kan ett- (Set=1) eller nollställas<br />
(Reset=1) vid behov.<br />
Synkron reset<br />
Q<br />
Reset<br />
Clk<br />
p. 5 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Sekvensmaskiner<br />
Nästa Värde (Tillstånd)<br />
Nuvarande Värde (Tillstånd)<br />
Vippa<br />
+1<br />
D Q(3..0) 0,1,2,3<br />
Clk<br />
Q(3..0)<br />
Uppräkning endast vid positiv flank på klockan<br />
p. 6 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Hur konstruerar vi en sekvens?<br />
Nuv. värde Utsignal Nästa värde<br />
Q 3 Q 2 Q 1 Q 0 f Q + 3 Q + 2 Q + +<br />
1 Q 0<br />
0 0 0 0 0 0 0 0 1<br />
0 0 0 1 1 0 0 1 0<br />
0 0 1 0 1 0 0 1 1<br />
0 0 1 1 0 0 1 0 0<br />
Osv.<br />
p. 7 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Grafiska metoder: Tillståndsmaskinens<br />
tillståndsdiagram<br />
0000 | 0 0001 | 1 0010 | 1 0011 | 0<br />
FSM - Finite State Machine<br />
p. 8 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Symboliska Tillstånds-maskiner<br />
S1 | 0<br />
S0 | 0<br />
k=1<br />
Statemaskiner vars utvärde<br />
endast beror av nuvarande<br />
tillstånd kallas för <strong>Moore</strong>-maskiner<br />
k=0<br />
S2 | 1<br />
På matematiskt språk kallas maskinerna för Automater.<br />
p. 9 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
<strong>Moore</strong>-Automaten (<strong>Moore</strong>-maskinen)<br />
Tillstånd (State)<br />
Nästa tillstånd<br />
(NEXT STATE<br />
DECODER)<br />
Tillståndsregister<br />
(STATE REGISTER)<br />
Utgångsavkodare<br />
(OUTPUT<br />
DECODER)<br />
Ingångssignaler<br />
Utgångssignaler<br />
Clk<br />
• I en <strong>Moore</strong>-<strong>automat</strong> beror utgångssignalerna bara<br />
på nuvarande tillstånd<br />
p. 10 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Input vs Output - <strong>Moore</strong><br />
Tillståndet (State) ändras här<br />
Input-sekvens<br />
I 1 I 2<br />
O 1 O 2<br />
Output-sekvens<br />
Output syns efter att tillståndet (state) har ändrats<br />
p. 11 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
<strong>Mealy</strong>-<strong>automat</strong>en (<strong>Mealy</strong>-maskinen)<br />
S1<br />
S0<br />
k=1 | 0<br />
k=0 | 1<br />
S2<br />
Statemaskiner vars utvärde<br />
beror både av nuvarande<br />
tillstånd samt av ingångens<br />
värde kallas för <strong>Mealy</strong>-maskiner.<br />
<strong>Moore</strong> är en delmängd av <strong>Mealy</strong>.<br />
p. 12 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
<strong>Mealy</strong>-Automaten (forts.)<br />
Tillstånd (State)<br />
Nästa tillstånd<br />
(NEXT STATE<br />
DECODER)<br />
Tillståndsregister<br />
(STATE REGISTER)<br />
Utgångsavkodare<br />
(OUTPUT<br />
DECODER)<br />
Ingångssignaler<br />
Utgångssignaler<br />
Clk<br />
• I en <strong>Mealy</strong>-Automat beror utgångssignalerna<br />
både på nuvarande tillstånd <strong>och</strong> ingångarna<br />
p. 13 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
13<br />
Input vs Output - <strong>Mealy</strong><br />
Tillståndet (State) ändras här<br />
Input-sekvens<br />
I 1 I 2<br />
O 1 O 2<br />
Output-sekvens<br />
Output syns direkt efter att input har ändrats<br />
p. 14 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
• Specifikation<br />
Exempel: Design Task -<br />
Bitsekvensdetektor<br />
– Sekvenskretsen har en ingång w <strong>och</strong> en utgång z<br />
– Om ingången w har varit 1 under nuvarande <strong>och</strong><br />
föregående klockcykel så ska utgången z sättas till 1<br />
– Använd en <strong>Moore</strong>-<strong>automat</strong> med D-vippor för att<br />
realisera konstruktionen<br />
p. 15 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Tillståndsdiagram<br />
• Det finns många olika sätt att rita ett<br />
tillståndsdiagram<br />
• Här följer vi notationen av kursboken<br />
(Brown/Vranesic)<br />
p. 16 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Tillståndsdiagram<br />
Bitsekvensdetektor<br />
Reset<br />
Tillstånd<br />
w = 0<br />
A /z=0<br />
w = 1<br />
B/z=0<br />
w = 0<br />
w = 0<br />
w = 1<br />
Tillståndsövergång<br />
Tillståndsbeteckning<br />
C/z=1<br />
Värde av utgångssignal<br />
w = 1<br />
p. 17 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Tillståndstabell<br />
Present Next state Output<br />
state<br />
w = 0 w = 1<br />
A A B 0<br />
B A C 0<br />
C A C 1<br />
z<br />
Tre tillstånd – två vippor behövs!<br />
p. 18 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Principbild för implementeringen av<br />
bitsekvensdetektorn<br />
w<br />
Y 1<br />
y 1<br />
Combinational<br />
circuit<br />
Combinational<br />
circuit<br />
z<br />
Y 2<br />
y 2<br />
Clock<br />
p. 19 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Designbeslut -<br />
Val av vippa <strong>och</strong> tillståndskodning<br />
• Designern måste bestämma vilka vippor som ska<br />
användas<br />
– D-, T-, eller JK-vippa<br />
• Designern måste välja koden för varje tillstånd<br />
p. 20 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Tillståndskodning -<br />
Bitsekvensdetektor<br />
• Utan några större analys använder vi för det här<br />
exemplet<br />
– D-vippor (enligt specifikationen)<br />
– Tillståndsavkodning A = 00, B = 01, C = 10<br />
– Koden 11 ska inte förekommer. Vi väljer don’t care.<br />
p. 21 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Tillståndskodning<br />
Bitsekvensdetektor<br />
Present<br />
Next state<br />
state w = 0 w = 1<br />
Output<br />
z<br />
y y Y Y Y Y 2 1 2 1 2 1<br />
A 00 00 01 0<br />
B 01 00 10 0<br />
C 10 00 10 1<br />
11 dd dd d<br />
p. 22 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Avkodare för nästa tillstånd<br />
• Vi måste nu ta fram ekvationerna för nästatillstånds-avkodare<br />
– Ingången till båda vipporna, dvs Y 1 <strong>och</strong> Y 2<br />
• För att få minimerade logikfunktioner använder vi<br />
Karnaugh-diagrammet<br />
p. 23 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Avkodare för nästa tillstånd<br />
y 2<br />
y 1<br />
w 00 01 11 10<br />
0<br />
0<br />
0<br />
d<br />
0<br />
1<br />
1 0<br />
d<br />
0<br />
Y 1<br />
= wy 1<br />
y 2<br />
w<br />
y y 2 1<br />
00 01 11 10<br />
0 0 0 d 0<br />
1 0 1 d 1<br />
Y 2<br />
= wy 1<br />
+ wy 2<br />
= w(y 1<br />
+ y 2<br />
)<br />
p. 24 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Utgångsavkodare<br />
• Nu tar man fram uttrycken för utgångsavkodaren<br />
y 1<br />
0<br />
y 2<br />
z = y 2<br />
0 1<br />
0<br />
1<br />
1<br />
0<br />
d<br />
p. 25 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Implementering<br />
Bitsekvensdetektor<br />
Y 2<br />
D<br />
Q<br />
y 2<br />
z<br />
Q<br />
w<br />
Y 1<br />
D<br />
Q<br />
y 1<br />
Q<br />
Clock<br />
Resetn<br />
p. 26 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Tidsdiagram<br />
Bitsekvensdetektor<br />
Clock<br />
1<br />
0<br />
t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10<br />
w<br />
y 1<br />
1<br />
0<br />
1<br />
0<br />
Tillståndsövergångar<br />
sker bara<br />
på den positiva<br />
klockflanken!<br />
1<br />
y 2<br />
0<br />
1<br />
z<br />
0<br />
p. 27 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Alternativ Tillståndskodning -<br />
Bitsekvensdetektor<br />
Present<br />
Next state<br />
state w = 0 w = 1<br />
Output<br />
z<br />
y y Y Y Y Y 2 1 2 1 2 1<br />
A 00 00 01 0<br />
B 01 00 11 0<br />
C 11 00 11 1<br />
10 dd dd d<br />
p. 28 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Alternativ tillståndskodning - resultat<br />
D<br />
Q<br />
z<br />
Q<br />
w<br />
D<br />
Q<br />
Clock<br />
Q<br />
Resetn<br />
p. 29 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Kod-alternativ 3 – One-Hot Encoding<br />
Present<br />
Next state<br />
state w = 0 w = 1<br />
Output<br />
y 3 y 2 y 1 Y 3 Y 2 Y 1 Y 3 Y 2 Y 1<br />
z<br />
A 001 001 010 0<br />
B 010 001 100 0<br />
C 100 001 100 1<br />
p. 30 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Bitsekvensdetektor<br />
<strong>Mealy</strong>-<strong>automat</strong><br />
• Tillståndsdiagrammet för <strong>Mealy</strong>-<strong>automat</strong>en<br />
behöver bara två tillstånd<br />
• Utsignalen beror på både tillstånd <strong>och</strong> insignaler<br />
Reset<br />
w = 1 ⁄ z = 0<br />
Värde av ingångssignal<br />
w = 0 ⁄ z = 0<br />
A<br />
B<br />
w = 1 ⁄ z = 1<br />
Tillståndsbeteckning<br />
w = 0 ⁄ z = 0<br />
Värde av utgångssignal<br />
p. 31 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
31<br />
Tillståndstabell<br />
Present Next state Output z<br />
state w = 0 w = 1 w = 0 w = 1<br />
A A B 0 0<br />
B A B 0 1<br />
p. 32 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Tillståndskodning<br />
Present Next state Output<br />
state w = 0 w = 1 w = 0 w = 1<br />
y Y Y z z<br />
A 0 0 1 0 0<br />
B 1 0 1 0 1<br />
p. 33 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Implementering<br />
z<br />
w<br />
D<br />
Q<br />
y<br />
Clock<br />
Q<br />
Resetn<br />
p. 34 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Tidsdiagram<br />
Clock<br />
w<br />
y<br />
z<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
1<br />
0<br />
t 0 t 1 t 2 t 3 t 4 t 5 t 6 t 7 t 8 t 9 t 10<br />
p. 35 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Grundläggande metod för<br />
konstruktion av statemaskiner<br />
1. Analysera specifikationen för kretsen<br />
2. Skapa tillståndsdiagram<br />
3. Ställ upp tillståndstabellen<br />
4. Minimera tillståndstabellen (nästa föreläsning)<br />
5. Tilldela koder för tillstånden<br />
6. Välj typ av vippor<br />
7. Realisera kretsen mha Karnaugh-diagram.<br />
p. 36 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Överblivna tillstånd<br />
• Ibland får man några states över när man väljer<br />
kod.<br />
• Överblivna states måste tas om hand så att inte<br />
statemaskinen låser sig vid uppstart (om man inte<br />
använder sig av reset vill säga)<br />
p. 37 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Exempel: Sekvensräknare (0,0,1)<br />
3 tillstånd => 2 vippor. Ett tillstånd över...<br />
S3 | -<br />
S1 | 0<br />
S0 | 0<br />
Om maskinen råkar<br />
starta i detta läge vid<br />
start så vill vi att den så<br />
snart som möjligt hittar<br />
in i sekvensen.<br />
S2 | 1<br />
p. 38 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Nextstate-funktionen<br />
S0<br />
S1<br />
S2<br />
Nuv. värde Utsignal Nästa värde D-vippa<br />
Q 1 Q 0 f Q + +<br />
1 Q 0 D 1 D 0<br />
0 0 0 0 1 0 1<br />
0 1 0 1 0 1 0<br />
1 0 1 0 0 0 0<br />
1 1 - - - (ej 11) - -<br />
p. 39 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
Karnaugh-diagram<br />
Q 0<br />
Q 1<br />
0 1<br />
0 0 1<br />
1 0 -<br />
Q 0<br />
Q 1<br />
0 1<br />
0 1 0<br />
1 0 -<br />
Q 0<br />
Q 1<br />
0 1<br />
0 0 0<br />
1 1 -<br />
D 1 =Q 0 D 0 = Q 1 Q 0 f =Q 1<br />
p. 40 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Grindnät för sekvensen<br />
f<br />
Q 1<br />
Q 0<br />
Q 1<br />
Q 0<br />
Clk<br />
p. 41 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
State-tabell efter Karnaughminimering<br />
Nuv. värde Utsignal Nästa värde D-vippa<br />
Q 1 Q 0 f Q + +<br />
1 Q 0 D 1 D 0<br />
0 0 0 0 1 0 1<br />
0 1 0 1 0 1 0<br />
1 0 1 0 0 0 0<br />
1 1 1 1 0 (ej 11) 1 0<br />
Dvs, det extra tillståndet går in i S2 i huvudsekvensen...<br />
p. 42 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
Exempel: Sekvensräknare (0,0,1)<br />
S3 | 1<br />
S1 | 0<br />
S0 | 0<br />
Om maskinen råkar<br />
starta i detta läge så<br />
kommer den att gå rakt<br />
till S2.<br />
S2 | 1<br />
p. 43 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
VHDL Modellering av FSMer<br />
• Alla statemaskiner beskrivs mha två eller tre<br />
processer<br />
– En för state registret<br />
– En för next-state funktionen<br />
– En för output funktionen<br />
• För att slippa skriva om/duplicera koden <strong>och</strong> göra<br />
den lättare att debugga skriver man ofta ihop<br />
next-state funktionen <strong>och</strong> output funktionen i en<br />
<strong>och</strong> samma process.<br />
p. 44 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
<strong>Moore</strong> Machine<br />
k=‘0’<br />
k=‘1’<br />
S0/1 S1/0<br />
k=‘0’<br />
k=‘1’<br />
p. 45 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
<strong>Moore</strong> Machine (ctd.)<br />
Next State logic State register Output logic<br />
Outputs<br />
Inputs<br />
Clk<br />
p. 46 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
<strong>Moore</strong> Machine (ctd.)<br />
Architecture moore of fsm is<br />
type state_type is (S0,S1);<br />
signal next_state,pres_state:state_type;<br />
begin<br />
logic:<br />
process(pres_state,k)<br />
begin<br />
next_state <br />
q
<strong>Mealy</strong> Machine<br />
k=‘0’/0<br />
k=‘1’/1<br />
S0<br />
S1<br />
k=‘0’/0<br />
k=‘1’/1<br />
p. 49 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES<br />
<strong>Mealy</strong> Machine (ctd.)<br />
Next State logic State register Output logic<br />
Outputs<br />
Inputs<br />
Clk<br />
p. 50 - IE1204 Digital Design – F9 - Johnny Öberg, ICT/ES
<strong>Mealy</strong> Machine (ctd.)<br />
Architecture mealy of fsm is<br />
type state_type is (S0,S1);<br />
signal next_state,pres_state:state_type;<br />
begin<br />
logic:<br />
regs:<br />
end mealy;<br />
process(pres_state,k)<br />
begin<br />
next_state <br />
q