25.07.2013 Views

4.3. Kodiranje stanja - Univerzitet u Nišu

4.3. Kodiranje stanja - Univerzitet u Nišu

4.3. Kodiranje stanja - Univerzitet u Nišu

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

<strong>Univerzitet</strong> u <strong>Nišu</strong><br />

Elektronski fakultet Niš<br />

Mikroprocesorski sistemi<br />

- Opis konačnih automata pomoću VHDL-a-<br />

Student: Petrović Vladimir<br />

Broj indeksa: 10605


Sadržaj<br />

1. Uvod……………………………………………………………………………………..3<br />

2. Konačni automati FSM…………………………………………………………………..3<br />

3. Tabela <strong>stanja</strong> i dijagram <strong>stanja</strong>…………………………………………………………..6<br />

4. FSM dizajn i elementi projektovanja……………………………………………………8<br />

4.1. Stil HDL kodiranja……………………………………..……………………...9<br />

4.2. Resetovanje i bezbedno ponašanje………………………..…….…………….24<br />

<strong>4.3.</strong> <strong>Kodiranje</strong> <strong>stanja</strong> automata……………………………………..….…………..26<br />

4.4. Automat sa Moore-ovim i Mealy-evim tipom izlaza……………...………….41<br />

4.5. Logika za sekvenciranje narednog <strong>stanja</strong> i izlazna logika………….…..…….47<br />

4.6. Interaktivni automati……………………………………………………….…52<br />

5. Laboratorijaska vežba…………………………………………………………………..77<br />

5.1. Postupak rada………………………………………………………………....78<br />

6. Literatura……………………………………………………………………………..…91<br />

2


1. Uvod<br />

Projektanti digitalnih kola se neprestano suočavaju sa potrebama da projektuju kola koja će<br />

obavaljati specifične sekvence operacija. Tako na primer, kontroleri se koriste da upravljaju radom<br />

drugih kola. Konačni automati (Finite State Machine – FSM) predstavljaju veoma efikasno sredstvo<br />

za modeliranje kola tipa sekvencer. Kod modeliranja FSM-a opisanih na jednom od HDL-ova i<br />

korišćenja odgovarajućih sredstava za sintezu, projektanti se mogu usmeriti na modeliranje željenih<br />

sekvenci operacija bez da se razmatraju problemi implementacije kola, što se kasnije prepušta kao<br />

zadatak koji obavljaju sredstva za sintezu. FSM-ovi su važni deo hardverskog dizajna, a shodno<br />

tome modeliranju hardvera na HDL nivou.<br />

Projektant treba da razmotri različite aspekte FSM-a pre nego što pokuša da kreira model.<br />

Dobro kreirani model je veoma važan za korektnu funkcionalnost kola koje treba da ispuni zahteve<br />

na optimalan način. Loše kreiran model može da ne ispuni bilo koji od specificiranih kriterijuma. Iz<br />

tog razloga, od posebne važnosti je da se dobro razume rad FSM-a i da se bude familijaran sa<br />

različitim stilovima HDL modeliranja.<br />

2. Konačni automati (FSM)<br />

FSM je bilo koje kolo specifično projektovano da sekvencira kroz specifični niz <strong>stanja</strong> na<br />

unapred odredjen sekvenciran način, Koje se po svojoj strukturi opisuje kao ono dato na slici 1.a.<br />

Stanje se predstavlja binarnom vrednošću koja se pamti u regstru tekućeg <strong>stanja</strong> (Current State<br />

Register). FSM strukturu čine sledeća tri dela:<br />

a.<br />

b.<br />

3


c.<br />

Slika 1. a) Blok šema konačnog automata; b) FSM-ov referentni implementacioni model;<br />

c)Dekomponovanje kontrolne jedinice i staze podataka<br />

1. Registar tekućeg <strong>stanja</strong>.<br />

Registar tekućeg <strong>stanja</strong> – n-to bitni registar, korisiti se za čuvanje tekućeg <strong>stanja</strong><br />

FSM-a. Njegova vrednost odgovara tekućem stanju pojedine sekvence operacija, koje ovaj<br />

automat obavlja. U toku rada, on se taktuje taktnim signalom.<br />

2. Logika narednog <strong>stanja</strong>.<br />

Logika narednog <strong>stanja</strong> (Next State Logic) – kombincioni blok koji se koristi za<br />

generisanje narednog <strong>stanja</strong> u sekvenci. Izlaz naredno stanje zavisi od primarnih ulaza u<br />

mašinu i ulaza tekuće stanje.<br />

3. Izlazna logika.<br />

Izlazna logika (Output Logic) – kombinaciona logika koja se koristi za generisanje<br />

željenih izlaznih signala. Izlazi zavise od registra tekućeg <strong>stanja</strong> i verovatno od primarnih<br />

ulaza mašine.<br />

4


FSM-ovi su standardni modeli za izračunavanje koji se koriste od strane sistemskih<br />

projektanata već duži period. Uobičajno se FSM može predstaviti na nekoliko različitih načina,<br />

kakvi su:<br />

Grafički zasnovane prezentacije (dijagrami <strong>stanja</strong> i dijagrami toka)<br />

Tekstulano<br />

Ograničićemo se na korišćenje dijagrama toka. Princip modeliranja se bazira na<br />

karakterizaciji sistema u funkciji globalnih <strong>stanja</strong> u kojima se sistem može naći, i u funkciji uslova<br />

koji mogu da uzrokuju promene izmedju <strong>stanja</strong> (t.j. tranzicija izmedju <strong>stanja</strong>).<br />

Bazični FSM čine konačni skup <strong>stanja</strong> S (pri čemu se inicijalna vrednost specificira kao S0),<br />

skupa ulaznih signala I, skupa izlaznih signala O, izlazna funkcija f, i funkcija narednog <strong>stanja</strong> h.<br />

Izlazni signali i signali narednog <strong>stanja</strong> (f i h, respektivno) preslikavaju unakrsni proizvod S i I u S i<br />

O, respektivno (f: S × I → S, h: S × I → O). Dva osnovna modela koja se mogu razmatrati kod<br />

modeliranja izlaza su: a) Moore-ov tip mašine nazvan state-based FSM, kod koga su izlazi<br />

pridruženi aktiviranom stanju (i gde izlazna funkcija f samo vrši preslikavanje <strong>stanja</strong> S u izlaze O; i<br />

b) Mealy-ev tip mašine nazvan transition-based FSM, kod koga se izlazi pridružuju tranzicijama<br />

izmedju <strong>stanja</strong>. Važno je napomenuti da oba modela imaju iste mogućnosti za modeliranje.<br />

Sa tačke gledišta implementacije uobičajno je da se FSM dekomponuje na skup funkcija koje<br />

izračunavaju naredno stanje i izlaze, i skup promenljivih <strong>stanja</strong> - vidi kako je to predstavljeno na<br />

slici 1.b.<br />

Sa tačke gledišta izvršne semantike moguće je ralizovati sledeća dva referentna pristupa kod<br />

FSM-ova:<br />

1) sinhroni FSM-ovi<br />

2) asinhroni FSM-ovi<br />

Kod sinhronih FSM-ova izračunavanje i komunikacija se izvršavaju trenutno u dikretnim<br />

trenucima u ritmu upravljačkih takt signala. U tom smislu sa tačke gledišta aktivnih promena <strong>stanja</strong><br />

svaka tranzicija se eksplicitno AND-uje sa rastućom ili opadajućom ivicom taktnog signala.<br />

Kod asinhronih FSM-ova ponašanje procesa je slično kao i kod sinhronih FSM-ova, ali<br />

tranzicije nisu zavisne od promene taktnog signala. Asinhroni sistem je sistem kod koga dva<br />

dogadjaja ne mogu da imaju isti vremenski marker. U tom smislu dva asinhrona FSM-ova neće<br />

nikad istovremeno obaviti tranziciju.<br />

FSM sa stazom podataka predstavlja proširenje stadndardnog FSM-a i pruža podršku radu<br />

memoriji podataka i procesnoj jedinici. Ovaj tip FSM-a se naziva FSMD.<br />

FSMD dodaje osnovnom FSM-u skup promenljivih i redefiniše funkcije narednog <strong>stanja</strong> i<br />

funkciju izlaza. To znači da FSMD čini konačni skup <strong>stanja</strong> S (sa unapred specificiranim stanjem<br />

S0), skup ulaznih signala I, skup izlaznih signala O, skup promenljivih V, izlazna finkcija f, i<br />

funkcija narednog <strong>stanja</strong> h. Funkcija narednog <strong>stanja</strong> h preslikava unakrsni proizvod od S, I i V u S<br />

(f: S × I × V → S). Izlazna funkcija f preslikava tekuća <strong>stanja</strong> na izlaze i promenljive (h: S → O + V).<br />

Kao što je definisano, izlazna finkcija f samo podržava Moore-ov tip izlaza, a može se lako proširiti<br />

da se prilagodi na Mealy-ev tip izlaza.<br />

Sa implementacione tačke gledišta, FSM model se dekomponuje kako je to predstavljeno na<br />

slici 1.c., gde se upravljački deo može predstaviti pomoću jednostavnog FSM modela, a deo staze<br />

podataka se karakteriše kao RT (Register Transfer) arhitektura. To znači da se staza podataka<br />

dekomponuje na skup promenljivih koje se koriste za čuvanje operanada i rezultata, i skup procesnih<br />

blokova koji obavljaju izračunavanja nad ovim vrednostima. Napomenimo da struktura sa slike 1.c.<br />

odgovara jednoprocesorskom sistemu koji se najčešće implementira kod mikroprocesorskih rešenja.<br />

5


3. Tabela <strong>stanja</strong> i dijagram <strong>stanja</strong><br />

Dijagram <strong>stanja</strong> je grafička prezentacija sekvenvcijalnog rada mašine i često predstavlja<br />

direktni ulaz u komercijalnim sredstvima za sintezu na osnovu koga se može generisati<br />

sintetizovano kolo i HDL simulacioni model. Da li koristiti dijagram <strong>stanja</strong> ili HDL opis u najvećem<br />

broju slučajeva predstavlja izbor projektanta, a to zavisi od dostupnih sredstava za projektovanje sa<br />

kojima raspolaže. Ponekad kompanije diktiraju odredjenu metodologiju projektovanja tako da je<br />

izbor sredstava za projektovanje unapred odredjen.<br />

Na slici 2. prikazane su dve reprezentacije dijagrama <strong>stanja</strong> iste FSM koja ima pet <strong>stanja</strong>, a<br />

ekvivalentna tabela <strong>stanja</strong> data je u Tabeli 1. Ukažimo sada na detalje koji se odnose na dijagrame<br />

<strong>stanja</strong> sa slike 2.<br />

Krugovi odgovaraju stanjima, a linije i strelice predstavljaju prelaze izmedju <strong>stanja</strong> koje se<br />

dešavaju nakon svakog taktnog impulsa. Signal za taktovanje se implicitno podrazumeva da postoji,<br />

pa zbog toga on nije prikazan u dijagramu <strong>stanja</strong> niti u tabeli <strong>stanja</strong>.<br />

Binarni broj koji predstavlja vrednost registra <strong>stanja</strong> (prvi dijagram <strong>stanja</strong>), ili njegovim<br />

pridruženim imenom <strong>stanja</strong> (drugi dijagram <strong>stanja</strong>) su upisani unutar kruga. Ulazno-signalni uslovi<br />

koji diktiraju prelaz izmedju <strong>stanja</strong> su naznačena pored odgovarajuće linije ali pre (/) slash znaka.<br />

Slash znak se koristi da razdvoji ulazne od izlaznih signala. Dva ulazna signala A i Hold su<br />

prikazana pre slash-a. Vrednosti nakon slash znaka, ako postoje, ukazuju na vrednost izlaznih<br />

signala koje su funkcija kako od primarnih ulaza tako i od izlaza registra tekućeg <strong>stanja</strong>. Ovaj tip<br />

automata se naziva Mealy-ev tip automata. Kada je vrednost izlaznih signala funkcija samo izlaza<br />

registra tekućeg <strong>stanja</strong>, tada se oni prikazuju pored kruga koji predstavlja odgovarajuće stanje. Ovaj<br />

tip automata se naziva Moore-ov automat. Glavna razlika u drugom dijagramu <strong>stanja</strong> je ta što se<br />

ulazni i izlazni signali prikazuju samo kada su aktivni.<br />

Ulazi Tekuće stanje Naredno stanje<br />

Izlazi<br />

A Hold<br />

Y_Me Y_Mo<br />

0 X 000 (st0) 000 (st0) 1 0<br />

1 X 000 (st0) 001 (st0) 0 0<br />

0 X 001 (st1) 000 (st0) 0 1<br />

1 X 001 (st1) 010 (st0) 1 1<br />

X X 010 (st2) 011 (st0) 0 0<br />

X 1 011 (st3) 011 (st0) 1 1<br />

0 0 011 (st3) 000 (st0) 1 1<br />

1 0 011 (st3) 100 (st0) 0 1<br />

X X 100 (st4) 000 (st0) 0 1<br />

Tabela 1. Tabela <strong>stanja</strong> automata datih na slici 2<br />

6


Slika 2. Dijagrami <strong>stanja</strong> jednog automata<br />

7


4. FSM dizajn i elementi projektovanja<br />

Projektovanje FSM-a i njegovo modeliranje razmatraćemo kroz sledeće aspekte:<br />

1. Stil HDL kodiranja<br />

2. Resetovanje i bezbedno ponašanje<br />

3. <strong>Kodiranje</strong> <strong>stanja</strong> automata<br />

4. Automat sa Moore-ovim i Mealy-evim tipom izlaza<br />

5. Logika za sekvenciranje narednog <strong>stanja</strong> i izlazna logika<br />

6. Interaktivni automati<br />

Arhitektura automata može da ima jednu od sledećih triju formi, prikazanih na slici 3. FSM<br />

se sastoji od kombinacionog bloka “Logika narednog <strong>stanja</strong>”, sekvencijalni blok “Registar tekućeg<br />

<strong>stanja</strong>” i opcioni kombinacioni blok “Izlazna logika”. Blok Izlazna logika nije neophodan ako se<br />

izlazi vode direktno sa registra tekućeg <strong>stanja</strong>. Tekuće stanje se memoriše u flip-flop-ovima, lečevi<br />

uzrokuju oscilacije kod generisanja <strong>stanja</strong> kada oni rade u transparentnom režimu rada. Blok<br />

naredno stanje i izlazni blok mogu sadržati sekvencijalnu logiku, koja je nevidljiva u okviru tela<br />

modela, pa se zbog toga ne razmatraju kao deo automata. Automat u datom trenutku može da se<br />

nadje u samo jednom stanju, svaka aktivna tranzicija takta uzrokuje promenu od tekućeg ka<br />

narednom stanju i definisana je logikom bloka naredno stanje.<br />

Slika 3.Strukture Mealy-evog, Moore-ovog automata i kombinovanog automata<br />

8


Mašina sa n-to bitnim registrom za čuvanje tekućeg <strong>stanja</strong> ima 2 n binarnih brojeva koji se<br />

mogu koristiti da predstave <strong>stanja</strong>. Najčešće, svih 2 n brojeva se ne koriste, tako da se neiskorišćeni<br />

brojevi odgovaraju stanjima koja se ne mogu javiti u toku rada automata. Automat sa pet <strong>stanja</strong>, na<br />

primer zahteva minimum tri flip-flop-a pri čemu 2 3 -5=3 broja ostaju neiskorišćena.<br />

4.1. Stil HDL kodiranja<br />

Postoje različiti načini modeliranja FSM-ova, sa druge strane, male izmene u kodu mogu<br />

uzrokovati od modela da se drugačije ponaša od očekivanog. Zbog toga projektanti treba da budu<br />

svesni egzistencije različitih stilova modeliranja koji se podržavaju od strane sredstva za sintezu<br />

koje oni koriste, i treba da koriste modeliranje automata, koje je nezavisno od sredstava, što znači da<br />

oni mogu da primene stil modeliranja na bilo koji tip kola. Kakao je prikazano na slici 3. HDL kod<br />

se može struktuirati u tri posebna dela, koji odgovaraju triju različitih blokova u okviru automata.<br />

Pored toga, različite kombinacije blokova je moguće kombinovati u jedan model. Svaki put, stil<br />

kodiranja je nezavisan od automata koji se projektuje.<br />

Logika narednog <strong>stanja</strong> se najbolje modelira korišćenjem iskaza case, mada se ona može<br />

modelirati korišćenjem signal iskaza, što zanči da se FSM ne može modelirati u okviru jednog<br />

procesa. Direktivom others u okviru iskaza case se izbegava definisanje svih 2 n vrednosti t.j. ne<br />

definišu se nedodeljena <strong>stanja</strong> mašine.<br />

Primeri 1 i 2 ukazuju na loš i dobar stil modeliranja za FSM-ove za 3 i 4 <strong>stanja</strong>, respektivno.<br />

Model u primeru 2 ukazuje kako sva tri gradivna bloka automata mogu biti kombinovana, ili<br />

izdvojena u modelu, i kako se može obezbediti prenosivost izmedju sredstava za sintezu. Primer 3<br />

prikazuje modelirani automat sa ulaznim i tekućim stanjem, kao primarna branch direktiva.<br />

9


Primer 1. Loše i dobro opisani model automata sa tri <strong>stanja</strong><br />

Na narednim slikama su pomoću dijagrama <strong>stanja</strong> i kôdova prikazani, loše i dobro opisani<br />

modeli automata koji prolazi kroz tri <strong>stanja</strong>. Odgovarajući VHDL kôdovi koriste promenljive koje<br />

su važeće samo za jedno stanje i nabrojivog su tipa. To zači da će alat za sintezu automatski<br />

dodeljuje sekvencijalne binarne vrednosti stanjima.<br />

Podjimo od lošeg opisa zadatog konačnog automata koji prolazi kroz tri <strong>stanja</strong>:<br />

Prvi kôd koji se odnosi na model FSM1_BAD, je nekorektan iz dole navedenih razloga:<br />

a. Automat poseduje tri <strong>stanja</strong>, što zahteva ugradnju dva flip-flopa. Sa dva flip-flopa imaćemo<br />

četiri moguće binarne kombinacije, pa tako jedna kombinacija ostaje neiskorišćena. U opisu ne<br />

postoji RESET, kao ni vrednost narednog <strong>stanja</strong> definisanog za neiskorišćeno četvrto stanje. Ovo<br />

znači da se mašina nakon uključenja na napajanje može postaviti u nedefinisano stanje.<br />

b. Logika tekućeg <strong>stanja</strong>, logika narednog <strong>stanja</strong>, kao i logika izlaza su definisane u okviru<br />

jednog VHDL procesa. S obzirom da VHDL process sadrži wait iskaz, izlazima read i<br />

write se dodeljuju dva dodatna flip-flopa.<br />

c. Definicija promenljive za State u VHDL opisu, dobija inicijalnu vrednost ST_Read. Ovo<br />

je pogodno za simulaciju, ali ignorisano od strane sredstava za sintezu! Promenljive ili signali ne bi<br />

trebalo da budu inicijalizovani na ovaj način ako se želi da model bude sintetizovan; ne odgovaraju<br />

inicijalnom stanju samog realnog (stvarnog) hardvera.<br />

Napomena: U ovom primeru tip <strong>stanja</strong> kao i njegova deklaracija su lokalni za proccess.<br />

Slika 5. Prikaz kola loše opisanog automata<br />

10


Prikaz koda loše opisanog automata<br />

11


Dobro opisan model, pogodan za sintezu i simulaciju<br />

Model pod imenom FSM1_GOOD, prikazuje korektnu verziju. Sekvencijalna logika tekućeg<br />

<strong>stanja</strong> odvojena je od kombinovane, kombinacione logike narednog <strong>stanja</strong> i logike izlaza. VHDL<br />

opis sadrži i dalje wait iskaz, mada opšte je pravilo koristiti if iskaz. Pomoću if direktive može<br />

se modelovati sva sinhrona i asinhrona logika, a isto tako omogućuje kombinovanje sekvencijalne i<br />

kombinacione logike u okviru istog procesa.<br />

Slika 6. prikaz kola dobro opisanog automata.<br />

Slika 7. Dijagram <strong>stanja</strong> modela FSM1_GOOD<br />

12


Prikaz koda dobro opisanog automata<br />

13


Primer 2. Loše opisan i četiri dobro opisana konačna automata<br />

Jedan neispravan i četiri korektna opisa konačnog automata, kao i dijagram <strong>stanja</strong> koji važi<br />

za sve pomenute automate dati su na slici 8. Automat ima četiri <strong>stanja</strong> i koristi asinhroni reset. Kao i<br />

u prethodnom primeru, VHDL modeli koriste nabrojivi tip podataka za promenljive <strong>stanja</strong>.<br />

Prvi model FSM2_BAD, je nekorektno opisan iz istih razloga kao i nekorektan opis modela<br />

iz prethodnog primera. Dakle, flip-flopvi su sintetizovani u izlaznoj logici. Izlazi dati u VHDL<br />

opisu, su ovoga puta ispod iskaza “if rising_edge(clock)”.<br />

Dobro opisani modeli (od FSM2_GOOD1 do FSM2_GOOD4) prikazuju različite<br />

kombinacije, gde se logika narednog <strong>stanja</strong>, logika tekućeg <strong>stanja</strong> i logika izlaza međusobno<br />

kombinovati ili se izdvojiti, u zavisnosti od izabranog modela. Dakle, dobri opisi su izvedeni na<br />

sledeći način:<br />

FSM2_GOOD1 ZASEBNI LNS, LTS I IL;<br />

FSM2_GOOD2 ZASEBNI IL, KOMBINOVANI LTS I LNS;<br />

FSM2_GOOD3 ZASEBNI LTS, KOMBINOVANI IL I LNS;<br />

FSM2_GOOD4 KOMBINOVANI LNS, LTS I IL.<br />

Gde navedene skraćenice imaju sledeće značenje:<br />

LNS – Logika narednog <strong>stanja</strong>;<br />

LTS – Logika tekućeg <strong>stanja</strong>;<br />

IL – Izlazna logika.<br />

Što se samih šema realizacije tiče one su date na sledećim slikama. Na slici 9. prikazana je<br />

realizacija kola datog odgovarajućim kodom FSM2_BAD. Na njoj se jasno može uočiti dopunska<br />

logika izlaza, sačinjena od trobitnog “D” Flip-Flop-a. Na slici 10. prikazano je kolo korektno<br />

opisanog automata, a na slici 11. realizacija kola preko standardnih gejtova.<br />

a.<br />

14


.<br />

15


c.<br />

16


d.<br />

17


e.<br />

18


f.<br />

Slika 8. a) Dijagram <strong>stanja</strong> primera 2; b) Prikaz loše opisanog automata; c) Prikaz dobro<br />

opisanog automata prva varijanta; d) Prikaz koda dobro opisanog modela – druga verzija; e) Prikaz<br />

koda dobro opisanog automata – treća verzija; f) Prikaz koda dobro opisanog automata – treća<br />

verzija<br />

19


Slika 9. Kolo realizovano nekorektnim opisom opisom FSM2_BAD, datom na slici 8.b<br />

Slika 10. Kolo realizovano korektnim kôdom (od FSM2_GOOD1 do FSM2_GOOD4)<br />

20


Slika 11. Realizacija kola korektno opisanog automata pomoću standardnih gejtova za<br />

kodove sa slike 8.c, 8.d, 8.e, 8.f.<br />

Primer 3. Konačni automati sa ulaznim signalima ili stanjima<br />

datim kao primarne direktive grananja<br />

Konačni automat, odgovara dijagramu <strong>stanja</strong> koji je dat na slici 12, inače modelovan na dva<br />

različita načina. Dijagram <strong>stanja</strong> predstavlja kontroler brzine kretanja vozila. Prva verzija opisa,<br />

koristi Accelerate i Brake kao dve if direktive grananja, i u okviru svake od njih, koristeći case<br />

iskaz, dodeljuje nove vrednosti <strong>stanja</strong>. Druga verzija opisa prikazuje češće korišćeni metod, gde se<br />

vrednost <strong>stanja</strong> koristi kao primarna direktiva grananja.<br />

Slika 12. Dijagram <strong>stanja</strong> kontolera brzine<br />

Slika 13. Hardverska realizacija kontrolera brzine<br />

21


Prikaz koda datog primera<br />

22


Prikaz koda druge verzije<br />

23


4.2. Resetovanje i sigurno ponašanje automata<br />

U zavisnosti od aplikacije, reset signal ne mora da bude dostupan, može da bude sinhroni ili<br />

asinhroni, ili i jedno i drugo. da bi obezbedili bezbedno ponašanje u zavisnosti od tipa reseta moraju<br />

se obezbediti sledeće dve stvari:<br />

• Korišćenje asinhronog reseta. Ovo obezbedjuje da se automat uvek inicijalizira u<br />

poznato važeće stanje, pre prve aktivne tranzicije takta i početka normalnog rada. Ovaj pristup ima<br />

prednost jer ne zahteva da se dekodira bilo koja neiskorišćena vrednost koja predstavlja tekuće<br />

stanje, čime se minimizira logika narednog <strong>stanja</strong>.<br />

• Bez reseta ili sinhronog reseta. U odsustvu asinhronog reseta, nakon uključenja<br />

sistema na napajanje, ne postoji način za predikciju inicijalne vrednosti registra <strong>stanja</strong> kada se on<br />

implementira u integrisanom kolu. Moguće je da se neki ulazi postave na vrednosti koje će<br />

rezultirati da se automat postavi u nekodirano stanje. Svih 2 n binarnih vrednosti, moraju se zbog<br />

toga dekodirati u logici narednog <strong>stanja</strong>, nezavisno od toga da li oni pripadaju skupu dozvoljenih<br />

<strong>stanja</strong> ili ne. Zbog toga se ugradjuju posebna kola u logici narednog <strong>stanja</strong> koja imaju za cilj da<br />

postave automat u željeno stanje ali po ceni dodatne režije (overhead).<br />

Analiziraćemo sada automat sa deset <strong>stanja</strong> koji je modeliran korišćenjem Johnson-ovog<br />

kodiranja. Registar <strong>stanja</strong> se sastoji od pet flip-flopova i postoji 2 5 -10 neiskorišćenih <strong>stanja</strong>. Kada se<br />

koristi sinhroni reset umesto asinhronog, logika narednog <strong>stanja</strong> biće 11% veća.<br />

Kod VHDL-a asinhroni reset se može modelirati korišćenjem if iskaza, dok sinhroni reset<br />

se može modelirati korišćenjem bilo wait ili if iskaza; nedostatak korišćenja wait iskaza je taj<br />

da je ceo proces sinhron tako da se drugi if iskazi ne mogu koristiti za modeliranje kombinacione<br />

logike.<br />

Primer 4 pokazuje automat koji ima kombinovanu logiku tekućeg i narednog <strong>stanja</strong><br />

modeliranu sa: asinhronim resetom, sinhronim resetom i bez reseta.<br />

Ako se logika tekućeg i narednog <strong>stanja</strong> modelira svaka posebno u sekvencijalnoj logici<br />

tekućeg <strong>stanja</strong> mora da postoji asinhroni reset, dok kod sinhronog reseta on može da bude ugradjen<br />

bilo u logici tekućeg i narednog <strong>stanja</strong>. Nešto detaljnije, ugradnjom reseta u logici tekućeg <strong>stanja</strong><br />

ako se izvodi promena sa asinhrog na sinhroni reset i obratno, ako je to potrebno.<br />

Primer 4. Konfiguracije reset ulaza, konačnog automata<br />

Ovaj primer služi za prikaz kako u opisu konačnog automata, definisati asinhroni ili sinhroni<br />

reset. Na slikama 13. i 14. prikazani su primeri opisa asinhronog i sinhronog reseta, respektivno.<br />

Npomena: Kôdovi nisu potpuni i predstavljaju samo deo opisa.<br />

24


Slika 13. Asinhroni reset<br />

25<br />

Slika 14. Sinhroni reset


<strong>4.3.</strong> <strong>Kodiranje</strong> <strong>stanja</strong><br />

Način na koji se binarne vrednosti dodeljuju stanjima nazivamo kodiranje <strong>stanja</strong>. Postoje<br />

nekoliko različitih formata kodiranja <strong>stanja</strong> koja se uobičajno koriste, a to su:<br />

1. sekvencijalni<br />

2. Gray-ov<br />

3. Johnson-ov<br />

4. one-hot<br />

5. definisan od strane korisnika<br />

6. definisan sintezom<br />

Ovi formati su prikazani u Tabeli 2 za 16 <strong>stanja</strong>.<br />

No. Sekvencijalni Gray Johnson One-Hot<br />

0 0000 0000 00000000 0000000000000001<br />

1 0001 0001 00000001 0000000000000010<br />

2 0010 0011 00000011 0000000000000100<br />

3 0011 0010 00000111 0000000000001000<br />

4 0100 0110 00001111 0000000000010000<br />

5 0101 0111 00011111 0000000000100000<br />

6 0110 0101 00111111 0000000001000000<br />

7 0111 0100 01111111 0000000010000000<br />

8 1000 1100 11111111 0000000100000000<br />

9 1001 1101 11111110 0000001000000000<br />

10 1010 1111 11111100 0000010000000000<br />

11 1011 1110 11111000 0000100000000000<br />

12 1100 1010 11110000 0001000000000000<br />

13 1101 1011 11100000 0010000000000000<br />

14 1110 1001 11000000 0100000000000000<br />

15 1111 1000 10000000 1000000000000000<br />

Primer 6 prikazuje automat za Black-Jack kontroler koji koristi sve formate kodiranja <strong>stanja</strong>,<br />

a pored toga sadrži i definisane formate za sintezu. Primer takodje prikazuje efekat koje kodiranje<br />

<strong>stanja</strong> ima na kolo za sintezu ovog modela.<br />

26


1) Sekvencijalni format. Svakom stanju se dodeljuje binarni broj koji se<br />

inkrementira.<br />

2) Gray-ovo i Johnson-ovo kodiranje. Svakom stanju kod Gray-ovog ili<br />

Johnson-ovog kodiranja <strong>stanja</strong> se dodeljuju sukscesivni binarni brojevi pri čemu<br />

izmedju dva susedna broja postoji razlika samo na jednoj bit poziciji. Primarni razlog<br />

za korišćenje ovakvog kodiranja je smanjenje mogućnosti pogrešnih tranzicija<br />

uzrovanim promenama na asinhronim ulazima u trenutku postavljanja flip-flopova.<br />

Svih 2 n binarnih brojeva moguće je koristiti kod kodiranja <strong>stanja</strong> sa Gray-ovim<br />

kodom. Ali zbog rasporeda jedinica i nula kod Johnson-ovog kodiranja <strong>stanja</strong> potreban<br />

je veći broj flip flopova i uvek postoji veći broj neiskorišćenih binarnih brojeva. To<br />

znači da je poželjnije koristiti asinhroni reset, jer logika narednog <strong>stanja</strong> mora da<br />

dekodira svih 2 n binarnih vrednosti, a to rezultira složenijoj logici. Primer 5 pokazuje<br />

automat koji predstavlja kontroler pozicije platforme a koristi Johnson-ovo i Gray-ovo<br />

kodiranje <strong>stanja</strong><br />

3) One – hot. Kod One-hot kodiranja <strong>stanja</strong> svakom stanju je dodeljen po jedan<br />

flip-flop, što znači da za n <strong>stanja</strong> je potrebno n flip-flopova pri čemu samo jedan flipflop<br />

u datom trenutku se nalazi u pravom stanju. Povećani broj flip-flopova obično<br />

rezultuje većoj logici.<br />

4) Definisan kôd od strane korisnika. Svakom stanju se dodeljuje binarni broj u<br />

saglasnosti sa pojedinim zahtevom projektanta.<br />

5) Kôd definisan sintezom. Ovi formati se biraju od strane sredstava za sintezu i<br />

imaju cilj da minimizuju logiku narednog <strong>stanja</strong>. Nešto odredjednije stvarne dodele<br />

zavise od dizajnera. Da bi videli kako se to ostvaruje dodela projektant mora da<br />

konsultuje literaturu koja se odnosi na sredstva za sintezu.<br />

U daljem delu teksta, potrebno je obratiti pažnju na načine kodiranja <strong>stanja</strong>, kao i njihovog<br />

pozivanja u telu glavnog opisa modela.<br />

27


Primer 5. Konačni automat za kontrolu ugaone pozicije izveden<br />

Gray-ovim i Johnson-ovim načinom kodiranja<br />

Dijagram <strong>stanja</strong> konačnog automata dat na slici 15, prolazi kroz osam <strong>stanja</strong>. Stanja su<br />

kodirana bilo Gray-ovim ili Johnson-ovim načinom kodiranja i prikazuju željenu ugaonu poziciju<br />

rotora u koracima od po 45 stepeni. Kretanje <strong>stanja</strong> počinje od trenutnog <strong>stanja</strong> koje definiše trenutni<br />

položaj rotora do postavljenog željenog <strong>stanja</strong>, u kojem će se automat naći i koje je definisano od<br />

strane korisnika. Kretanje se ostvaruje pomerajima rotora u koracima od po 45 stepeni u smeru<br />

kazaljke na časovniku ili u suprotnom smeru u zavisnosti od zadatog.<br />

Iz razloga što spoljašnje sile mogu pomeriti rotor van željene pozicije, ulaz pod imenom<br />

PhysicalPosition se asinhrono menja (nezavisan je od clock-a). Iz tog razloga Gray-ov ili<br />

Johnson-ov način kodiranja je idealan. Ovo proističe iz činjenice da promena asinhronih ulaza, u<br />

toku postavljanja <strong>stanja</strong> na flip-flopovima registra <strong>stanja</strong>, neće dovesti automat u neka od<br />

nedefinisanih ili nestabilnih <strong>stanja</strong>. Tako, sa ostalim načinima kodiranja, postoji mala verovatnoća<br />

nepravilnog rada. Jedna od osnovnih nepravilnosti jeste da se zahteva kretanje rotora za 180 stepeni<br />

u jednom takt intervalu.<br />

Postoje dva načina specifikacije kodiranja <strong>stanja</strong>:<br />

1) Koristiti signal tipa broj, za koji je atribut sinteze primenjen. Ovo je konvencionalan<br />

način zadavanja načina kodiranja <strong>stanja</strong>, ali zbog specifičnosti imena atributa za odredjeni alat za<br />

sintezu, ime mora biti promenjeno, ako se želi korišćenje u drugim alatima za sintezu. Paket pod<br />

imenom ENUM_STATE_ENCODE_TYPES, definiše dva identična tipa kodiranja <strong>stanja</strong>, jedan za<br />

Gray-ov, a drugi za Johnson-ov način kodiranja. Dalje, različiti atributi su upotrebljeni za ove tipove<br />

kodiranja, gde su tri bit-a data na raspolaganje Gray-ovom načinu kodiranja, a četiri Johnson-ovom.<br />

Atribut je nazvan ENUM_TYPE_ENCODING za alat VeryBest tipa, za ostale alate za sintezu mora<br />

biti drugog imena (u našem primeru je korišćen alat za sintezu Sinplify Pro 7.7).<br />

2) Koristiti konstante za predstavljanje pojedinačnih vrednosti <strong>stanja</strong>. Model prikazuje<br />

dva paketa za dva metoda kodiranja. Celina entitet – arhitektura opisa ovog automata je identična<br />

kao za kodiranje dva <strong>stanja</strong>, izuzev use naredbe, koja se poziva iz odgovarajućeg paketa. Drugi<br />

paket prikazje korišćenje neoznačenog broja, u Gray-ovoj i Johnson-ovoj verziji kodiranja. Automat<br />

je modelovan, korišćenjem jednoprocesnog kôda, slično kao i u primeru 2. (FSM2_GOOD4). Ulaz i<br />

izlaz su tipa odredjenog na osnovu metode kodiranja – Gray ili Johnson.<br />

Slika 15. Dijagram <strong>stanja</strong> kontrolera ugla<br />

28


Prikaz VHDL opisa datog automata<br />

30


Primer 6. Formati za kodiranje <strong>stanja</strong> konačnih automata –<br />

BlackJack mašina za igru<br />

Model automata kod koga se kodiranje <strong>stanja</strong> može birati, dat je u ovom primeru. U<br />

konkretnom slučaju prikazan je uticaj kodiranja <strong>stanja</strong> na površinu Si-a, kao i tajming. Šeme koje se<br />

koriste za kodiranje <strong>stanja</strong> su bazirane na: sekvencijalnom kodiranju, Gray-ovom, Johnson-ovom,<br />

One-Hot i tri tipa Nova šeme kodiranja. Za prva četiri načina kodiranja definisani su HDL modeli.<br />

Za ostala tri koristi se Nova tip kodiranja, koja zahteva grafičku prezentaciju.<br />

Pošto je potrebno sačiniti kontroler BlackJack igre, potrebno je najpre upoznati se sa opštim<br />

pravililma igre. Igra se sa standardnim skupom od 52 karte. Bitne su vrednosti karata, Jack, Queen i<br />

King imaju vrednosti 10, dok je As najjači i može imati vrednosti od 1 do 11, koliko igrač želi. Igrač<br />

može u rukama imati najviše 21 poen. Poenta je pobediti dilera igre. Diler je igrač koji ima u zbiru<br />

17 ili više. Igrač gubi ako njegov totalni zbir padne ispod sume koju ima diler. Ako igrač želi da<br />

nastavi igru, upituje dilera za dobijanje još jedne karte. Ovo je poznato kao pozajmica. Ako je igrač<br />

zadovoljan sa skupom karata i njihovom sumom igra se nastavlja.<br />

Black Jack FSM kontroler ima 16 <strong>stanja</strong> i njegov dijagram <strong>stanja</strong> prikazan je na slici 18.<br />

Kada se HDL model sintetizuje, sredstvo za sintezu kreira poseban dizajn fajl za svaki proces. Da bi<br />

se analizirao efekat kodiranja <strong>stanja</strong> na logiku narednog <strong>stanja</strong>, tekućeg <strong>stanja</strong> i izlazne logike, u<br />

VHDL opisu su modelirani posebni procesi. Arhitektura Black Jack mašine, prikazana na slici 17,<br />

odgovara strukturi procesa u VHDL modelu.<br />

Definisanje kodiranja <strong>stanja</strong><br />

U svakom VHDL modelu postoje četiri iskaza koji se odnose na kodiranje <strong>stanja</strong>. U<br />

konkretnom slučaju kodiranje <strong>stanja</strong> je specificirano u VHDL modelu definisanjem dva signala<br />

CurrentState i NextState, i predstavljaju jedno od četiri tipa definisana u VHDL paketu<br />

STATE_ENCODE_TYPES. Ovaj paket prvo definiše atribut nazvan SYN_ENCODING kao tipa niz.<br />

Ovaj atribut je poznat sredstvu za sintezu Sinplicity 7.7 Pro, i specijalno se koristi za definisanje<br />

niza koji predstavlja podatke nabrojivog tipa. Četiri nabrojiva tipa podataka su definisani u paketu,<br />

pri čemu svaki ima 16 mogućih vrednosti koja odgovaraju stanju automata. Svaki tip ima svoj<br />

atribut, SYN_ENCODING, koji je pridružen tom tipu i predstavlja binarni niz koji odgovara<br />

pojedinom kodiranju <strong>stanja</strong>.<br />

Na narednim slikama prikazani su sintetizovano kolo i dijagram <strong>stanja</strong>, respektivno.<br />

31


Slika 18. Dijagram <strong>stanja</strong> automata datog primerom 6<br />

Da bi se na pravi način sagledala problematika opisa složenijih automata, potrebno je proći<br />

kroz opis samog automata. Kao i u prethodnim primerima, na odgovarajućim mestima u opisu dati<br />

su komentari koji olakšavaju razumevanje korišćenih naredbi i struktura. Dakle, na narednim<br />

slikama dati su opis automata i vremenski dijagram dešavanja u kolu.<br />

33


Prikaz opisa paketa koji definiše načine kodiranja koji se mogu koristiti prilikom eksploatacije<br />

automata<br />

34


Slika 19. Prikaz VHDL kôda automata za BlackJack igru kartama<br />

39


4.4.Tipovi izlaza automata<br />

Strukture Mealy-evog, Moore-vog i kombinovanog Mealy/Moore-ovog tipa automata<br />

prikazani su na slici 3. Mealy-ev tip automata ima izlaze, koji su funkcija signala sa primarnih ulaza<br />

i signala sa registra tekućeg <strong>stanja</strong>. Moore-ov tip automata, sa druge strane, poseduje izlaze, koji su<br />

funkcija samo signala sa registra tekućeg <strong>stanja</strong>. Ako izlazi automata dolaze direktno sa registra<br />

<strong>stanja</strong>, tada ne postoji izlazna logika. Kombinovani Mealy/Moore-ov automat ima oba tipa izlaza.<br />

Izbor koji od modela automata koristiti je apsolutno zavisan od problema zadatka (projekta).<br />

Primer 7. prikazuje isti automat, projektovan pomoću Mealy-evog ili Moore-vog tipa izlaza.<br />

Primer 8. ukazuje na kombinovani automat sa Murovim i Milijevim tipom izlaza.<br />

Primer 7. Konačni automat sa Milijevim ili Murovim tipom izlaza<br />

Konačni automati dati u ovom primeru, razlikuju se po tome što jedan ima Milijev, a srugi<br />

Murov tip izlaza. U primeru je opisano kako se generiše izlaz (NewColor) u zavisnosti ulaza (Red,<br />

Green i Blue). Na Narednim likama dati su dijagrami <strong>stanja</strong> ovih automata, kao i odgovarajući<br />

VHDL opisi, sa komentarima na koje treba obratiti pažnju prilikom projektovanja automata.<br />

Slika 21. Dijagram <strong>stanja</strong> automata sa Mealy-evim tipom izlaza<br />

41


Slika 22. Dijagram <strong>stanja</strong> automata sa Moore-ovim tipom izlaza<br />

42


43<br />

Prikaz VHDL opisa koji odgovara<br />

Mealy-evom tipu automata. Dijagram <strong>stanja</strong><br />

koji odgovara ovom opsu dat je na slici 21.


44<br />

Prikaz VHDL opisa koji<br />

odgovara Moor-ovom tipu automata.<br />

Odgovarajući dijagram <strong>stanja</strong> prikazan<br />

je na slici 22.


Primer 8. Konačni automat sa Mealy-evim i Moore-ovim tipom izlaza<br />

Ovaj model dat je na osnovu dijagrama <strong>stanja</strong> definisanog još na početku ovog rada, na slici<br />

2. Ista slika data je i ovde radi preglednosti. Na njoj se razlikuju dva načina opisivanja dijagrama<br />

<strong>stanja</strong>. Jasno se uočava da je Moore-ov izlaz zavisan samo od trenutnog <strong>stanja</strong> u kome se konačni<br />

automat nalazi, dok se kod Mealy-evog tipa izlaza uočava zavisnost i od trenutnog <strong>stanja</strong> i od<br />

trenutnih vrednosti signala na ulazu. Na narednim slikama dati su dijagrami <strong>stanja</strong> sa slike 2. kao i<br />

potrebni VHDL opis.<br />

Slika 2. Načini predstavljanja dijagrama <strong>stanja</strong> jednog konačnog automata sa pet <strong>stanja</strong><br />

45


46<br />

Prikaz VHDL opisa<br />

konačnog automata sa istovremenim<br />

posedovanjem i Mealy-evog i<br />

Moore-ovog tipa izlaza, kome<br />

odgovaraju dijagrami <strong>stanja</strong> dati na<br />

prethodnoj strani.


4.5. Sekvencijalna logika narednog <strong>stanja</strong> i logika izlaza<br />

Obe, logika narednog <strong>stanja</strong> i logika izlaza automata realizuju se kao kombinaciona logika.<br />

Ipak, u zavisnosti od tipa aplikacije moguće je da se ugradi dodatna sekvencijalna logika u oba<br />

bloka i to ugradi u kodu modela automata. Opisaćemo sada ulogu svake od ovih logika posebno.<br />

Sekvencijalna logia narednog <strong>stanja</strong>. Ova logika upravlja grananjem na nardno stanje na<br />

osnovu prethodnog skupa signala. Ovi signali treba da budu postavljeni kada je automat bio u<br />

drugom stanju, do koje se došlo preko odredjene sekvence <strong>stanja</strong>, ili zbog neke akumulirane<br />

vrednosti koja je rezultirala zbog izvršavanja u petlji odredjene sekvence sukscesivnog <strong>stanja</strong>.<br />

Upravljački ulazi narednog <strong>stanja</strong> mogu takodje da se koriste za generisanje izlaza automata. Primer<br />

9 prikazuje jedan takav model koji sadrži jedan upravljački flip-flop u logici narednog <strong>stanja</strong>.<br />

Sekvencijalna izlazna logika. Ova logika registruje činjenicu da se javilo odredjeno stanje<br />

ili sekvenca <strong>stanja</strong>. Primer 10 prikazuje tipičnu aplikaciju ovoga, gde se vrednost akumulatora<br />

inkrementira svaki put kada automat predje kroz odredjeno stanje.<br />

Primer 9. Konačni automat sa sekvencijalnom logikom narednog <strong>stanja</strong><br />

Konačni automat dat u ovom primeru koristi u delu izlazne logike extra Flip-Flop. Dijagram<br />

<strong>stanja</strong> dat je na narednoj slici i daje sliku kako ovaj automat funkcioniše. Za praćenje rada automata<br />

pogodnije je pratiti ga uz VHDL opis dat na narednoj strani. Ovaj automat prolazi kroz pet <strong>stanja</strong> u<br />

okviru jednog ciklusa njegovog rada, tri ulaza A, B i C utiču na to da se rad automata grana kroz tri<br />

<strong>stanja</strong> ThreeA, ThreeB i ThreeC, respektivno, na bazi prioritet kodiranja. Sinhroni Reset<br />

garantovano zadržava automat u početnom stanju za prva tri taktna intervala, koliko je dovoljno da<br />

se postave sva <strong>stanja</strong> u sistemu i da automat otpočne siguran rad.<br />

Slika 23. Dijagram <strong>stanja</strong> konačnog automata sa sekvencijalnom logikom narednog <strong>stanja</strong><br />

47


48<br />

Prikaz VHDL kôda automata sa<br />

sekvencijalnom logikom narednog <strong>stanja</strong><br />

sa pojedinim objašnjenjima koje mogu<br />

biti korisne pri projektovanju konačnih<br />

automata.


Slika 24. Prikaz sintetizovanog kola konačnog automata sa sekvencijalnom logikom narednog <strong>stanja</strong><br />

Primer 10. Konačni automat sa sekvencijalnom logikom izlaza<br />

Konačni automat je modelovan prema dijagramu <strong>stanja</strong> datog na slici 25. Prolazi kroz četiri<br />

<strong>stanja</strong> i sastoji se od konačnog automata i ogovarajuće izlazne logike, kako je to i prikazano na slici<br />

26.<br />

Nakon aktivnog signala RESET, automat započinje svoj rad iz <strong>stanja</strong> One, i izlazna logika<br />

postavlja izlaz na nulu. Prilikom rada automata uočavaju se dva grananja u okvru drugog <strong>stanja</strong>.<br />

Grananje se vrši kroz TwoCount ili TwoNoCount. Kada je ulaz EnableCount u stanju logičke<br />

jedinice, tada je u petlju uključeno stanje TwoCount i brojač broji. U suprotnom imamo da je<br />

aktivno stanje u petlji TwoNoCount i brojač u tom slučaju ne broji. Prikaz VHDL kôda se nalazi<br />

nakon dijagrama <strong>stanja</strong> i sintetizovanog kola.<br />

Slika 25. Dijagram <strong>stanja</strong> automata sa sekvencijalnom izlaznom logikom<br />

49


Slika 26. Sintetizovano kolo na kome se jasno uočava sekvencijalni izlaz<br />

50


Prikaz VHDL kôda konačnog automata sa sekvencijalom izlaznom logikom.<br />

51


4.6. Interaktivni automati<br />

Ako se tekuće stanje mašine ili izlazni signali koriste da bi uticali na rad drugih automata,<br />

tada se ti automati nazivaju interaktivni. Interakcija izmedju automata može da bude jednosmerna ili<br />

dvosmerna.<br />

Jednosmerna interakcija. Automati mogu biti hijerarhijski organizovani, pa u tom slučaju oni<br />

su pogodni za razbijanje komplikovanih upravljačkih struktura na veći broj manjih upravljačkih<br />

celina. Slika 27.a. prikazuje strukturu koju čine dva automata, pri čemu FSM1 ima jednosmerno<br />

upravljanje u odnosu na FSM2, a to znači da naredno stanje FSM2 zavisi kako od njegovih ulaza i<br />

tekućeg <strong>stanja</strong>, tako i od <strong>stanja</strong> FSM1. Primer 11 prikazuje tri različite konfiguracije automata koje<br />

se odnose na model upravljanjam, koji se koristi za upravljanje iste staze podataka. Kontroler je<br />

modeliran na tri različita načina:<br />

1) Master FSM koji upravlja sa tri subhijerahijska FSM-a.<br />

2) Tri FSM-a sa serijskim upravljanjem od jednog ka narednim<br />

3) Korišćenje jedinstvenog FSM-a.<br />

Dvosmerna interakcija. Automati koji imaju dvosmerno upravljanje jedan u odnosu na drugi<br />

korsni su za modeliranje kola koja zahtevaju Handshaking mehanizme (mehanizme rukovanja).<br />

Slika 27.b. prikazuje strukturu koju čine tri interaktivna automata pri čemu svaki automat ima<br />

izvedeno bidirekciono upravljanje u odnosu na ostala dva.<br />

52


Primer 11. Jednosmerni interaktivni konačni automati<br />

Tri različito modelovana interaktivna automata, iskorišćena su za kontrolu istog toka<br />

podataka. Ovo je učinjeno iz razloga da se uporede načini modelovanja i stekne znanje poterebno za<br />

što efikasnijim modelima. Prvi kontroler toka, modelovan je pomoću glavnog automata, koji<br />

kontroliše tri slave automata. Drugi kontroler toka podataka koristi tri automata, sa serijskom<br />

medjusobnom kontrolom. Treći način modelovanja baziran je na jednom konačnom automatu. Sva<br />

tri modela su funkcionalno evivalentna.<br />

Staza podataka<br />

Staza podataka ne vrši neku tačno definisanu funkciju, ali je problem dovoljan da<br />

demonstrira različite konfiguracije konačnih automata, upotrebljenih za njegovu kontrolu. Sa<br />

aspekta hardvera, Data Path prihvata tri ili četiri sekvence, četvorobitnih vrednosti na ulazu, zatim<br />

nakon procesiranja podataka, razvrstava podatke u dve ili tri sekvence sa devet bitova na izlaznim<br />

priključcima. Sama staza podataka je kontrolisana od strane kontrolera toka podataka, kako bi se<br />

izvršile dole navedene jednačine. Ulazni podaci su A, B, C i D, a izlazni Y1, Y2 i Y3.<br />

Četvoroulazna sekvenca data je kao:<br />

Y1=A*B+A*C<br />

Y2=A*D+B*C<br />

Y3=B*D+C*D<br />

Troulazna sekvenca data je kao:<br />

Y1=A*B+A*C<br />

Y4=B*C<br />

Zbog šest množenja koja su potrebna prilikom razmatranja četiri četvorobitna ulazna<br />

podatka, a postoji samo jedan množač, najbrže rešenje se dobija tek nakon šest takt intervala. Kada<br />

se radi sa tri četvorobitna broja, potrebna su samo tri množenja, što dovodi do bržeg rada.<br />

Kontrolne jedinice<br />

Na slici 27.c. na narednoj strani, prikazane su strukturne konfiguracije kontrolnih jedinica.<br />

Control Path 1. Galvni automat, FSM_MASTER, na svojim izlazima generiše kontrolne<br />

signale za tri automata StartFSM1, StartFSM2 i StartFSM3. Na osnovu ovih signala se trigeruju<br />

FSM1, FSM2 i FSM3. Konačni aujtomat, FSM1, je predodređen da omogući četiri signala dozvole,<br />

koji se inače koriste da taktuju serijski ulaz podataka u odgovarajući hold registar. Konačni automat<br />

FSM2, daje signale koji omogućuju selekciju koja od dva zadrzana ulaza da pomnoži zajedno, a<br />

takođe daje signale dozvole za upis rezulatata množenja u odgovarajuće regisre <strong>stanja</strong>. Automat,<br />

FSM3, omogućuje selekciju linija koje služe za slanje rezultata na odgovarajući izlaz.<br />

Control Path 2. Tri konačna automata generišu identične kontrolne signale kao i u opisu<br />

gore navedenom. Razlika je jedina u tome što FSM1 generiše izlazni kontrolni signal StartFSM2 za<br />

automat FSM2, a automat FSM2 generiše kontrolni signal StartFSM3 za automat FSM3.<br />

Control Path 3. Pošto je u pitanju samo jedan automat za kontrolu toka podataka,<br />

najjednostavnije je sagledati njegov dijagram <strong>stanja</strong> dat na slici 35.<br />

54


Slika 27.c. Prikaz varijanti strukture kontrolnih jedinica<br />

Na narednoj strani prikazana je hardverska realizacija Data Path kola.<br />

Data Path opis dat je u narednom delu teksta, nakon čega su dati VHDL opisi i realizacije<br />

načina kontrole istog.<br />

55


Kako je u pitanju jedan od komplikovanijih primera, krenimo najpre od prve varijante<br />

realizacije ovog sistema. Dakle, tri automata kontrolisana od strane glavnog - MASTER_FSM. Prvo<br />

prolazimo kroz kôd koji opisuje dato kolo, a zatim ćemo sagledati dijagrame <strong>stanja</strong> svakog od<br />

konačnih automata koji učestvuju u prvoj verziji realizacije.<br />

58


Control Path 1 – Tri automata kontrolisana glavnim MASTER_FSM automatom<br />

59


***-VHDL kodiranje <strong>stanja</strong> definisano je da počinje od st0, a ne od st1. Ovo se radi iz razloga, što<br />

alat za sintezu automatski dodeljuje sekvencijalna <strong>stanja</strong>, počev od 0, tako kada se izvrši simulacija<br />

stanju st1 se automatski dodeljuje stanje 1, a ne 0. ovim je izbegnuta nepotrebna konfuzija.<br />

****- inicijalizacija izlaza pre case naredbe se vrši da bi se izbegla nepotrebna latch kola na<br />

izlazu, kao i zbog tačnosti prolazaka automata kroz <strong>stanja</strong> prilikom rada.<br />

*****- pošto je postavljanje izlaza izvršeno pre case naredbe, nije potrebno to činiti u okviru when<br />

others dela. U suprotnom, u okviru when others dela potrebno je navesti inicijalne vrednosti<br />

izlaza.<br />

Prikaz kôda, prvog sistema za kontrolu Data Path, raelizovanog pomoću tri automata FSM1, FSM2 i<br />

FSM3, kontrolisanih automatom MASTER_FSM. Na narednim slikama nalaze se odgovarajući<br />

dijagrami <strong>stanja</strong>, gore navedenih automata.<br />

63


Slika 28. Dijagram <strong>stanja</strong> konačnog automata FSM1<br />

Slika 29. Dijagram <strong>stanja</strong> konačnog automata FSM2<br />

64


Slika 30. Dijagram <strong>stanja</strong> konačnog automata FSM3<br />

65


Slika 31. Dijagram <strong>stanja</strong> konačnog automata korišćenog za kontrolu ostalih automata u sistemu -<br />

MASTER_FSM<br />

U daljem delu teksta, problem realizacije se svodi na drugu verziju realizacije sistema za<br />

kontrolu Data Path dela kola.<br />

66


Control Ptah 2 – Serijski kontrolisana tri automata<br />

67


Prikaz koda za realizaciju Control Path sistema<br />

Na narednim slikama prikazani su dijagrami <strong>stanja</strong> konačnih automata FSM1, FSM2 i<br />

FSM3, koji upravljaju Data Path-om, ali u ovom delu primera BEZ glavnog automata za kontrolu<br />

rada MASTER_FSM. U ovom slučaju imamo serijsku kontrolu tri automata.<br />

Slika 32. Dijagram <strong>stanja</strong> automata FSM1<br />

70


Slika 33. Dijagram <strong>stanja</strong> konačnog automata FSM2<br />

71


Slika 34. Dijagram <strong>stanja</strong> konačnog automata FSM3<br />

72


Control Path 3 – Single FSM<br />

73


VHDL kôd, za slučaj kada samo jedan automat vrši kontrolu rada Data path-a.<br />

75


Slika 35. Dijagram <strong>stanja</strong> konačnoga automata, koji sam vrči kontrolu rada sistema<br />

DataPath<br />

76


LABORATORIJSKA VEŽBA<br />

Konačni automati (FSM)<br />

Predmet rada<br />

U ovoj vežbi biće analiziran konačni automat sa četiri <strong>stanja</strong>. Najpre ćemo pristupiti<br />

projektovanju istog, a zatim ćemo na osnovu rezultata simulacije sagledati rad datog automata.<br />

Projektovanje se bazira na unošenju kôda, koji opisuje ponašanje automata, njegovo kompajliranje i<br />

sagledavanje rezultata kompajliranja.<br />

Slika 36. Dijagram <strong>stanja</strong> automata na osnovu koga vršimo projektovanje istog<br />

77


Postupak rada<br />

Korak 1.<br />

Za pokretanje programa u Windows okruženju, biramo ikonu Active-HDL 5.1. Može se<br />

koristiti i Start→All Programs→Active-HDL 5.1. Kada se program startuje, na ekranu se pojavljuje<br />

dialog box dat na slici 37.<br />

Slika 37. Dialog box vezan za podešavanje parametara - vezano za licencu<br />

Postavljanjem parametara kao što je prikazano na slici 37 i pritiskom na Next, pojaviće se<br />

sledeći dialog box koji je vezan za konkretne primere i koji je prikazan na slici 38. Potrebno je samo<br />

čekirati Create new design i kliknuti na OK. Time smo započeli proces kreiranja novog projekta.<br />

Nakon ovih radnji pojavljuje se novi dialog box prikazan na slici 39.<br />

Slika 38. Dialog box koji omogućuje otvaranje postojećih ili kreiranje novih projekata<br />

78


Slika 39. Dilaog box za kontrolu resursa novog projekta<br />

U dialog box-u za kontrolu resursa, kako bi se kreirao potpuno nov projekat, potrebno je<br />

čekirati Create an empty design. Potrebno je kliknuti na Next nakon čega se pojavljuje nov dialog<br />

box vezan za alat za sintezu koji će se koristiti u projektu. O alatima za sintezu i problemima na koje<br />

treba obratiti pažnju, rečeno je u uvodu za ovu laboratorijsku vežbu. Prikaz kako treba biti popunjen<br />

dialog box nalazi se na slici 40.<br />

Slika 40. Prikaz dialog box-a za podešavanje alata za sintezu<br />

79


Nakon potvrdjivanja alata za sintezu i dodele imena projektu (prikazano je na narednoj slici<br />

kako dodeliti ime, gde grupa obeležava redni broj automata, datog u listi automata za vežbu - u<br />

daljem delu teksta).<br />

Slika 41. Dialog box za dodelu imena projektu<br />

Nakon pritiska tastera Next pojaviće se još jedan dialog box, koji ovde nije prikazan, a koji<br />

inače služi za potvrdu imena projekta. U okviru tog dialog box-a potrebno je samo kliknuti na<br />

Finish. Nakon toga pojavljuje se radno okruženje pomenutog programa. Na narednim slikama<br />

prikazano je radno okruženje sa zaokruženim stavkama koje se tokom projekta moraju izvršiti.<br />

80


Korak 2.<br />

Dakle, potrebno je kreirati kôd koji opisuje rad konačnog automata, datog dijagramom <strong>stanja</strong><br />

na slici 36. u koraku 1 prikazano je kako kreirati podlogu projekta (ime, alat za sintezu itd.). U ovom<br />

koraku biće prikazano kako kreirati i simulirati odgovarajući kôd.<br />

1. Duplim klikom na zonu obeleženu brojem 1, otvara se dialog box u kome je potrebno<br />

navesti ime konačnog automata. U istom dialog box-u potrebno je selektovati VHDL Source code i u<br />

prostoru ispod navesti ime automata. Sve ovo je prikazano na narednoj slici.<br />

81


2. Nakon pritiska tastera OK, otvara se editor kôda u kome se vrši opis automata<br />

pomoću jezika za opis hardvera. U prethodnom delu teksta, vezanog za načine opisivanja konačnih<br />

automata, skrenuta je pažnja kako i na koji način izbeći sve greške koje mogu da nastanu prilikom<br />

projektovanja istih. Iz tog razloga, ovde se nećemo zadržavati na tome.<br />

3. Posle unošenja kôda, potrebno je izvršiti kompilaciju datog projekta. Kôd je prikazan<br />

na slici 46. Na slici 45, prikazano je okruženje nakon unošenja kôda.<br />

Slika 45. Prikaz radnog okruženja nakon unošenja koda<br />

Jednim klikom na zonu koju obeležava broj 2 ili pritiskom na F11, vrši se komajliranje<br />

(Compile) unetog koda. U okviru zone označene brojem 3, nakon uspešnog kompajliranja, umesto<br />

znaka pitanja ?, pojaviće se zeleni znak √. U suprotnom, kompajler će prijaviti grešku (crveni znak<br />

χ), gde se greška odnosi na ispravnost korišćenja jezika, ali ne i funkcionalnu ispravnost. Tako se<br />

može desiti da je sam kôd ispravan, ali da projekat ne odgovara funkciji koja je zadata zadatkom.<br />

Kada je automat ispravno opisan prelazimo na naredni korak.<br />

82


Slika 46. Prikaz kôda, generisanog na osnovu dijagrama <strong>stanja</strong> datog na slici 36<br />

83


Korak 3.<br />

U okviru ovog koraka vrši se sagledavanje rezultata simulacije. Na narednoj slici<br />

predstavljen je proces generisanja Test Bench-a za dati primer. Test Bench nam omogućuje da<br />

testiramo uredjaj koji smo prethodno opisali, tako što ćemo definisati karakteristične signale ulaza i<br />

sagledati ponašanje izlaza u toku odredjenog vremenskog perioda. Tek nakon pozitivno ocenjenog<br />

odziva našeg novoprojektovanog sistema, možemo govoriti o ispravnosti njegovog rada.<br />

Slika 47. Generisanje Test Bench-a<br />

Nakon pritiska tastera u zoni na koju ukazuje broj 4, program automatski generiše Test<br />

Bench kôd. On se smešta u okviru osnovnog stabla Design Browser-a (na narednoj slici – polje na<br />

koje ukazuje broj 6). Potrebno je sada samo navesti, u okviru novog Test Bench koda, vremenske<br />

raspodele vrednosti ulaznih signala. Vrednosti ulaznih signala se navode u zoni na koju ukazuje broj<br />

5.<br />

Za naš konkretan primer, u odgovarajuću zonu 5, se unosi sledeći kod:<br />

clock


Korak 4.<br />

Slika 48. Definisanje ulaznih signala u okviru koda Test Bench-a<br />

Nakon simulacije (F11 ili klikom na zonu 2), generisan je u okviru Test Bench<br />

direktorijuma, fajl sa ekstenzijom *.do . Desnim klikom na ovaj fajl (koji se na slici 48. uočava u<br />

zoni 6 ispod koda Test Bench-a), javiće se padajući meni, na kome je potrebno odabrati opciju<br />

Execute. Nakon toga automatski će se otvoriti Waveform Editor, koji služi za posmatranje signala<br />

našeg projekta (prikazan na slici 49). U polju pod brojem 8, se nalazi opis strukture jedinice koja se<br />

testira (UUT-Unit Under Test). Pritiskom na polje koje je označeno brojem 8, izvršiće se prikaz<br />

signala u okviru Waveform Editor-a.<br />

85


Slika 49 i 50. Prikaz Waveform Editor-a koji preti signale na ulazu i izlazu<br />

86


Na prethodnoj slici vidimo da smo zadavanjem signala na ulazu, automat vodili kroz sva<br />

<strong>stanja</strong> od prvog do četvrtog, a zatim od četvrtog do prvog unazad. To direktno pokazuje signal pod<br />

imenom speed.<br />

Korak 5.<br />

Napisati odgovarajuće VHDL kodove za sledeće automate sa četiri <strong>stanja</strong>. Ulazni signali su<br />

A i B, dok je izlazni signal obeležen sa NextState.<br />

Grupa 1. Grupa 4.<br />

Grupa 2. Grupa 5.<br />

Grupa 3. Grupa 6.<br />

87


Grupa 7. Grupa 10.<br />

Grupa 8. Grupa 11.<br />

Grupa 9. Grupa 12.<br />

88


Grupa 13. Grupa 16.<br />

Grupa 14. Grupa 17.<br />

Grupa 15. Grupa 18.<br />

89


Grupa 19. Grupa 20.<br />

90


Literatura<br />

1. Gajski, D.D., Dutt, N.D., Wu, A.C.-H., Lin, S.Y.-L., "High-Level Synthesis An<br />

Introduction to Chip and System Design", New York, Kluwer-Academic, 1992<br />

2. HDL Synthesis Guide, Release 4.2, Copyright 1991-1998 Exemplar Logic, Inc.<br />

All Rights Reserved, Exemplar Logic, Inc. 6503 Dumbarton Circle, Fremont, CA<br />

94555, [Online], Dostupno: http://www.xilinx.com/support/library.htm<br />

3. Softverski paket, [Online], Dostupan:<br />

https://www.altera.com/support/software/download/altera_design/mp2_student/dnl-student.jsp<br />

4. Xilinx Data Sheets, [Online], Dostupno: http://www.xilinx.com/support/library.htm<br />

5. Softverski paket, [Online], Dostupan: http://www.xilinx.com/ise_eval/index.htm<br />

6. Softverski paket, [Online], Dostupan: http://www.xilinx.com/webpack/index.htm<br />

91

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

Saved successfully!

Ooh no, something went wrong!