21.12.2013 Views

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.

SHOW MORE
SHOW LESS

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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!