4.3. Kodiranje stanja - Univerzitet u Nišu
4.3. Kodiranje stanja - Univerzitet u Nišu
4.3. Kodiranje stanja - Univerzitet u Nišu
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