25
Logičko projektovanje računarskih sistema 2 L06. Automati sa konačnim brojem stanja

Logičko projektovanje računarskih sistema - rt-rk.uns.ac.rs · Kako se ponaša sistem koji smo napravili? •U D-registrima je zapisano trenutno stanje sistema. •Kombinaciona

Embed Size (px)

Citation preview

Logičko projektovanje računarskih sistema 2

L06. Automati sa konačnim brojem stanja

Šta smo napravili prošli put?

09 Mar 2018 L06. Automati sa konačnim brojem stanja 2

dugmesvetlo [n+1]

svetlo [n]

svetlo [n]

trigger

Kombinaciona mreža

D-registar

Kako se ponaša sistem koji smo napravili?

• U D-registrima je zapisano trenutno stanje sistema.

• Kombinaciona mreža računa naredno stanje sistema kao logičku funkciju trenutne vrednosti ulaza i trenutnog stanja sistema.

• Sistem menja stanje periodično na svakoj rastućoj (ili opadajućoj) ivici takt signala.

• Izlaz sistema je jednak trenutnom stanju sistema.

09 Mar 2018 L06. Automati sa konačnim brojem stanja 3

U opštem slučaju, izlaz bi mogao biti funkcija trenutnog stanja i/ili ulaza!

Automati sa konačnim brojem stanja

09 Mar 2018 L06. Automati sa konačnim brojem stanja 4

Definicija automata

• Automat (Finite State Machine – FSM) sa konačnim brojem stanja je sistem definisan sledećim vrednostima:

• Skup stanja sistema

• Skup ulaza sistema

• Skup izlaza sistema

• Početno stanje sistema

• Funkcija prelaza sistema

• Funkcija izlaza sistema

09 Mar 2018 L06. Automati sa konačnim brojem stanja 5

Tipovi FSM

• Mealy-ev automat: izlaz je funkcija trenutnog stanja i trenutne vrednosti ulaza.

• Moore-ov automat: izlaz je funkcija samo trenutnog stanja.

09 Mar 2018 L06. Automati sa konačnim brojem stanja 6

Ostali tipovi automata

• Prema broju stanja:• Automati sa konačnim brojem stanja

• Automati sa beskonačnim brojem stanja

• Prema tipu funkcije prelaza:• Deterministički automati

• Nedeterministički automati

09 Mar 2018 L06. Automati sa konačnim brojem stanja 7

Kako realizovati automat kao digitalni sistem?

09 Mar 2018 L06. Automati sa konačnim brojem stanja 8

Q

QSET

CLR

DLogika za

sledeće stanje

CLK

RST

Ulaz

REG

FSM

Logika za izlaz Izlaz

Primer automata

• Hajde da napravimo digitalnu bravu koja otvara vrata ukoliko se unese šifra 0110.

• Registar – broj bita zavisi od broja stanja.

• Reset asinhron ili sinhron (MUX)

• Kombinaciona mreža – 4 funkcije od 4 promenljive

• Minimizacija (logičkim kolima) ili ROM

09 Mar 2018 L06. Automati sa konačnim brojem stanja 9

09 Mar 2018 L06. Automati sa konačnim brojem stanja

© 123RF

10

Drugi primer – RoboAnt!

09 Mar 2018 L06. Automati sa konačnim brojem stanja 11

Ulazi (senzori):• iLEFT (leva antena)• iRIGHT (desna antena)

Izlazi (aktuatori):• oFORWARD (napred)• oTURN_LEFT (10 stepeni)• oTURN_RIGHT (10 stepeni)

Ideja: MIT

Strategija

09 Mar 2018 L06. Automati sa konačnim brojem stanja 12

Ekvivalentna stanja

• Stanja su ekvivalentna ako i samo ako:

• Oba stanja imaju iste izlaze,

• Oba stanja imaju ekvivalentne prelaze, odn. za istu kombinaciju ulaza prelaze u stanja iste klase ekvivalencije.

09 Mar 2018 L06. Automati sa konačnim brojem stanja 13

Minimizacija automata

09 Mar 2018 L06. Automati sa konačnim brojem stanja 14

Primer minimizacije automata

S0 S1 S2 S3 S4 S5 S6 S7

W0 S0/Z0 S2/Z1 S0/Z1 S0/Z0 S3/Z1 S3/Z1 S5/Z1 S0/Z0

W1 S1/Z1 S0/Z0 S4/Z0 S6/Z1 S4/Z0 S4/Z0 S7/Z0 S1/Z1

W2 S7/Z1 S6/Z1 S1/Z0 S0/Z1 S1/Z1 S6/Z0 S1/Z1 S0/Z1

09 Mar 2018 L06. Automati sa konačnim brojem stanja 15

Procedura minimizacije automata

• Formirati trougaonu matricu prelaza između parova stanja• Ako dva stanja imaju iste izlaze, napisati različitosti u prelazima

• Ako dva stanja nemaju iste izlaze, precrtati polje

• Iterativno precrtati polja koja imaju parove prelaza koji nisu ekvivalentni, odn. koji su već precrtani

• Preostala polja su ekvivalentna stanja

• Formirati minimalni automat

09 Mar 2018 L06. Automati sa konačnim brojem stanja 16

Rešenje primera

09 Mar 2018 L06. Automati sa konačnim brojem stanja 17

1

0

2

3

4

5

6

7

1 – 6

0 – 7

0 – 7

2 – 5

0 – 7

1 – 6

0 – 3

1 – 6

1 – 6

2 – 3

0 – 4

1 – 6

3 – 5

4 – 7

A0 A1 A2 A3

W1 A0/Z0 A2/Z1 A0/Z1 A0/Z1

W2 A1/Z1 A0/Z0 A3/Z0 A3/Z0

W3 A0/Z1 A1/Z1 A1/Z0 A1/Z1

Stanje A0 – kome odgovaraju stanja S0, S3 i S7

Stanje A1 – kome odgovaraju stanja S1 i S6

Stanje A2 – kome odgovaraju stanja S2 i S5

Stanje A3 – kome odgovara stanje S4

VHDL opis automata

09 Mar 2018 L06. Automati sa konačnim brojem stanja 18

VHDL opis automata

• Skup stanja

type tSTATE is (S0, S1, S2);

signal sSTATE : tSTATE;

• Skup ulaza i skup izlaza

• Opisan u entitetu; obavezno koristiti tipove std_logic i std_logic_vector

• Početno stanje

• Definiše se u resetu sekvencijalnog procesa

09 Mar 2018 L06. Automati sa konačnim brojem stanja 19

VHDL opis funkcije prelaza – jedan proces

process (iCLK, inRST) begin

if (inRST = ‘0’) then

sSTATE <= <POČETNO_STANJE>;

elsif (iCLK’event and iCLK = ‘1’) then

<FUNKCIJA_PRELAZA>

end if;

end process;

09 Mar 2018 L06. Automati sa konačnim brojem stanja 20

VHDL opis funkcije prelaza – dva procesa(Kombinaciona logika i funkcija izlaza - primer)process (iA, sSTATE) begin

case (sSTATE) is

when S0 => sNEXT_STATE <= S1; oY <= ‘0’;

when S1 => if (iA = ‘0’) then

sNEXT_STATE <= S2; oY <= ‘1’;

else

sNEXT_STATE <= S0; oY <= ‘0’;

end if;

when others => sNEXT_STATE <= S0; oY <= ‘0’;

end process;

09 Mar 2018 L06. Automati sa konačnim brojem stanja 21

VHDL opis funkcije prelaza – dva procesa(Registar)process (iCLK, inRST) begin

if (inRST = ‘0’) then

sSTATE <= <POČETNO_STANJE>;

elsif (iCLK’event and iCLK = ‘1’) then

sSTATE <= sNEXT_STATE;

end if;

end process;

09 Mar 2018 L06. Automati sa konačnim brojem stanja 22

Varijante u funkciji izlaza

• Kombinaciona funkcija izlaza

• Sekvencijalna funkcija izlaza – buffer-ovan izlaz!

• Registar na izlazu kombinacione logike koja računa izlaz

• Opis funkcije izlaza u posebnom ili već postojećem procesu koji je sekvencijalan

• Izlaz će kasniti jedan takt u odnosu na stanje koje je u registru.

09 Mar 2018 L06. Automati sa konačnim brojem stanja 23

Verifikacija automata

Stimulus proces treba da počne sa resetom sistema

inRST <= ‘0’;

wait for 5 * iCLK_period;

inRST <= ‘1’;

Nakon toga vreme igra ulogu, promena stanja se vrši posle svake periode takta, u zavisnosti od tada postavljenog ulaza!

09 Mar 2018 L06. Automati sa konačnim brojem stanja 24

09 Mar 2018 L06. Automati sa konačnim brojem stanja 25