2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1...

49
2 Upravljačka jedinica Na osnovu do sada izučavane materije iz predmeta Embedded sistemi saznali smo da staza- podataka (datapath- DP), izvršava operaciju koja je specificirana sadržajem upravljačke reči (control words). Upravljačka reč se dovodi na ulazu DP-a. Pri tome, u svakom taktnom intervalu upravlajčka jedinica (control unit- CU) generiše po jednu upravljačku reč. U okviru mikroprocesora CU se realizuje kao konačni automat (Finite State Machine FSM). Prolaskom kroz niz stanja, CU upravlja radom DP-a. U svakom stanju CU-e izlazna logika CU-a generiše upravljačke signale. Na osnovu vrednosti upravljačkih siganala DP obavlja odgovarajuću operaciju nad podacima. Operacije se odnose na prenos podataka izmedju registara ( register transfer operations). Svaku operaciju registarski-prenos čine sledeće aktivnosti: 1) čitanje sadržaja registra, 2) modifikacija sadržaja registra od strane jedne od funkcionalnih jedinica, i 3) upis modifikovane vrednosti ponovo u isti registar ili u neki drugi registar. S obzirom da je CU kolo tipa FSM njegovu strukturu čine sledeći gradivni blokovi: a) lopgika narednog stanja, b) memorijski elemenat u kome se pamti tekuće stanje automata, i c) izlazna logika. Ipak, strukture sintetizovanih FSM-ova koje su studenti već izučavali iz predmeta Mikroarhitekture sistema po svojoj koncepciji više podsećaju na samostalne (stand alone) konačne automate koji se na žalost ne, u takvoj formi, ne koriste kao gradivni blokovi nekog složenog kola kakvi su mikroprocesori. Ono što je od interesa za izučavanje iz predmeta Embedded sistemi odnosi se na sintezu FSM-a kao CU u okviru mikroprocesora. Glavna razlika izmedju samostalnih FSM-ova i FSM-ova realizovanih kao CU ogleda se u načinu korišćenja, sagledavanju funkcija, kao i uloge koje imaju ulazno-izlazni signali FSM-a. Modeli samostalnoih FSM-ova, tipa Moore-ov i Mealy-ev automat, prikazuju samo da FSM ima ulazne i izlazne signale bez ulaženja u detalje ko ih generiše i kome su namenjeni. Kod CU-a je neophodno specificirati sledeće detalje: i) odakle dolaze ulazni signali, ii) gde se usmeravaju izlazni signali, i iii) zašto se ulazni i izlazni signali koriste. (a)

Transcript of 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1...

Page 1: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

2 Upravljačka jedinica

Na osnovu do sada izučavane materije iz predmeta Embedded sistemi saznali smo da staza-podataka (datapath- DP), izvršava operaciju koja je specificirana sadržajem upravljačke reči (control words). Upravljačka reč se dovodi na ulazu DP-a. Pri tome, u svakom taktnom intervalu upravlajčka jedinica (control unit- CU) generiše po jednu upravljačku reč. U okviru mikroprocesora CU se realizuje kao konačni automat (Finite State Machine – FSM). Prolaskom kroz niz stanja, CU upravlja radom DP-a. U svakom stanju CU-e izlazna logika CU-a generiše upravljačke signale. Na osnovu vrednosti upravljačkih siganala DP obavlja odgovarajuću operaciju nad podacima. Operacije se odnose na prenos podataka izmedju registara (register transfer operations). Svaku operaciju registarski-prenos čine sledeće aktivnosti:

1) čitanje sadržaja registra, 2) modifikacija sadržaja registra od strane jedne od funkcionalnih jedinica, i 3) upis modifikovane vrednosti ponovo u isti registar ili u neki drugi registar.

S obzirom da je CU kolo tipa FSM njegovu strukturu čine sledeći gradivni blokovi: a) lopgika narednog stanja, b) memorijski elemenat u kome se pamti tekuće stanje automata, i c) izlazna logika.

Ipak, strukture sintetizovanih FSM-ova koje su studenti već izučavali iz predmeta Mikroarhitekture sistema po svojoj koncepciji više podsećaju na samostalne (stand alone) konačne automate koji se na žalost ne, u takvoj formi, ne koriste kao gradivni blokovi nekog složenog kola kakvi su mikroprocesori. Ono što je od interesa za izučavanje iz predmeta Embedded sistemi odnosi se na sintezu FSM-a kao CU u okviru mikroprocesora. Glavna razlika izmedju samostalnih FSM-ova i FSM-ova realizovanih kao CU ogleda se u načinu korišćenja, sagledavanju funkcija, kao i uloge koje imaju ulazno-izlazni signali FSM-a. Modeli samostalnoih FSM-ova, tipa Moore-ov i Mealy-ev automat, prikazuju samo da FSM ima ulazne i izlazne signale bez ulaženja u detalje ko ih generiše i kome su namenjeni. Kod CU-a je neophodno specificirati sledeće detalje:

i) odakle dolaze ulazni signali, ii) gde se usmeravaju izlazni signali, i iii) zašto se ulazni i izlazni signali koriste.

(a)

Page 2: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(b)

(c)

Slika 2.0 Modeli FSM-ova; (a) Moore-ov FSM; (b) Mealy-ev FSM; (c) kombinacija Moore-og i Mealy-

og tipa Kada se govori o CU-i kažemo da postoje po dva tipa ulaznih signala i po dva tipa izlaznih signala. Upravljački ulazi (control inputs) su primarni eksterni ulazni signali CU-a. To su spoljašnji signali koji kontrolišu rad mikroprocesora. Tako na primer, signal Start signalizira mikroprocesoru da počne sa izvršenjem, dok signal Reset postaviće memoriju tekućeg stanja u inicijalno stanje. Statusni signali (status signals) su ulazni signali kojih generiše DP. Obično, u cilju odredjivanja uslova koji imaju uticaj na izvršenje instrukcija uslovnih grananja, koriste se komparatori u okviru DP-a. Komparatori kao hardverske jedinice DP-a generišu statusne signale (na primer, generiše se test signal, loopend, čije stanje ukazuje na to da li treba ponoviti izvršenje tela petlje ili ne). Ova dva tipa ulaznih signala dovode se na ulaz FSM-ove logike koja u sledećem taktnom intervalu odredjuje u kom će narednom stanju preći FSM. Upravljački izlazi (control outputs) su primarni izlazni signali od mikroprocesora ka spoljnem svetu. Tako na primer, kada mikroprocesor izvrši neki algoritam, on aktivira signal Done čije stanje ukazuje korisniku da je predvidjena aktivnost obavljena i da je podatak koji je prisutan na izlazu DP-a validan. Upravljački signali (control words) su verovatno najvažniji ulazno-izlazni signali iz razloga što su to signali koji direktno kontrolišu izvršenje operacija DP-a. U toku svakog taktnog intervala, CU generiše različit skup upravljačkih signala na osnovu kojih DP obavlja odgovarajuću operaciju tipa registarski prenos. FSM-ove koje ćemo mi na dalje izučavati su namenjeni za kontrolisanje (upravljanje) toka izvršenja operacija tipa registarski prenos u okvoru DP-a. Izlazni signali ovih FSM-ova su upravljački signali za DP, a neki od njih se koriste za punjenje (load) registara na nove vrednosti. Nove vrednosti koje se upisuju u registre mogu se koristiti od strane komparatora za testiranje uslova. Rezultati uslovnih testova su statusni signali kojih koristi CU da bi odredila u koje će naredno stanje preći. Konačno, na osnovu različitih stanja, generišu se različiti upravljački signali. Zbog toga, za CU, statusni (ulazni) signali i upravljački (izlazni) signali su medjusobno zavisni signali. To znači da kada se generišu statusni signali neophodno je biti siguran da su oni rezultat testiranja stanja nekih registarskih vrednosti. Jedna od veoma važnih stvari na koju treba obratiti pažnju prilikom konstruisanja FSM kola odnosi se na realizaciju dijagrama stanja (state diagram). Kod izvodjena dijagrama stanja CU-a mora

Page 3: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

strogo da se vodi računa o tajmingu operacija tipa registarski prenos. Ključna stavka u ovom slučaju je sledeća: Kada se u neki registar upisuje vrednost, tada ta vrednost nije dostupna sve dok ne počne naredni taktni interval. S toga, ako čitamo sadržaj registra u tekućem taktnom intervalu tada ćemo pročitati staru vrednost registra, a ne novu vrednost koja se upisuje u registar. Da bi se nekako lakše sagledali i efikasnije rešili problemi koji se odnose na tajming projektanti često za opis ponašanja CU-a preferiraju korišćenje ASM dijagrama (Algorithmic State Machine chart) ili tablicu akcije stanja (state action table). 2.1 Konstruisanje upravljačke jedinice U poglavlju Staza-podataka analizirali smo kako se konstruiše hardver DP-a (staze-podataka) koji je u stanju da implementira odredjeni algoritam. Postupak je bio sledeći: Sve instrukcije koje u algoritmu manipulišu podacima se konvertuju u upravljačke reči, pri čemu svaka upravljačka reč obavlja po jednu operaciju tipa registarski prenos i izvršava se za jedan taktni interval. Pri tome CU (upravljačka jedinica) se koristi za generisanje odgovarajućih upravljačkih signala u upravljačkoj reči tako da PD može automatski da izvrši sve zahtevane operacije tipa registarski prenos. Upravljački signali su izlazni signali izlazne-logike koja je osnovni gradivni blok svake FSM (U suštini, FSM je konačni automat Moore-og ili Mealy-evog tipa). Pored generisanja upravljačkih signala, CU je takodje namenjena da upravlja sekvenciranjem instrukcija u algoritmu. Pri ovome je važno imati u vidu sledeće činjenice: S obzirom da izvršava operacije tipa registarski-prenos, DP je onaj gradivni blok u okviru procesora koji je zadužen za manipulisanje podacima. Zadatak CU-a, sa druge strane, je da odredi kada će se svaka operacija tipa registarski-prenos izvršiti i kakav će biti njen redosled. Sekvenciranje koje se izvodi od strane CU-a se odredjuje u toku kreiranja dijagrama-stanja. Dijagram-stanja prikazuje: a) u kom će se stanju koja operacija tipa registarski- prenos izvršiti; i b) kako se ostvaruje sekvenciranje izvršenja operacija tipa registarski- prenos. Pri tome, za svaku upravljačku reč se kreira po jedno stanje, a svako stanje se izvršava za jedan taktni interval. Potezi u dijagramu-stanja su odredjeni sekvencom (redosledom) po kojoj se izvršavaju instrukcije algoritma. Sekvencijalno izvršenje instrukcija se predstavlja bezuslovnim tranzicijama izmedju stanja (to su potezi bez oznake (labele)). Izvršenje grananja u algoritnu se predstavlja uslovnim tranzicijama iz stanja koje ima dva izlazna potega (grane). Jedan poteg ima oznaku koja važi kada je uslov grananja istinit (true), a drugi se karakteriše oznakom koja važi kada je uslov grananja naistinit (false). Ako postoji više od jedan uslov grananja, tada se sve moguće kombinacije ovih uslova, na izlaznim potezima iz svakog stanja moraju označiti. Ovi uslovi odgovaraju statusnim signalima, generišu se od strane DP-a i dovode (sprovode) na ulaz logike CU-a kojom se odredjuje naredno stanje FSM-a. Nakon što je dijagram-stanja kreiran, aktuelni postupak za konstrukciju CU-a se sprovodi standardnim pristupom za sintezu FSM-a koji je već izučavan u okviru predmeta Arhitekture mikrosistema. U daljem tekstu, kroz primere, ukazaćemo kako se konstruišu jednostavne CU-ove. 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira dijagram-stanja CU-e koja se koristi za upravljanje namenske DP-a sa slike 1.16. Napomenimo da je DP sa slike 1.16 namenjena za generisanje brojeva od 1 do 10. Algoritam (slika 1.15), namenska DP-a (slika 1.16), i sadržaj upravljačkih reči (slika 1.17) radi preglednijeg sagledavanja problematike su namerno ponovljene na slici 2.1.

Page 4: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Slika 2.1 Problem brojanja od 1 do 10: (a) algoritam; (b) namenska staza podataka; i (c) upravljačke reči

Na osnovu algoritma prikazanog na slici 2.1 a) zaključujemo da postoje tri instrukcije koje manipulišu podacima. One odgovaraju linijama 1, 3 i 4. Linija 2 nije naredba tipa manipulisanje podacima nego je upravljački iskaz. Na osnovu slike 2.1 c) vidimo da postoje tri upravljačke reči koje se koriste za upravljanje radom namenske DP-a prikazane na slici 2.1 b), tj., tri instrukcije koje su namenjene za manipulisanje podacima. Analizu ćemo početi na sledeći način. U dijagramu stanja svakoj upravljačkoj reči (slika 2.1 c)) dodelićemo po jedno posebno stanje (vidi sliku 2.2 a)). Stanjima su dodeljena simbolička imena s0, s1, s2 i s3. Svako stanje je komentarisano pomoću odgovarajuće kontrolne reči i instrukcije koja je dodeljena tom stanju radi izvršenja. U stanju s0, CU generiše upravljačku reč 1 i izvršava instrukciju

1 i = 0 2 WHILE (i ≠ 10) { 3 i = i + 1 4 OUTPUT i 5 } (a)

(b)

upravljačka

reč instrukcija iLoad Clear Out

1 i = 0 0 1 0 2 i = i + 1 1 0 0 3 OUTPUT i 0 0 1

(c)

Page 5: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

i=0. U stanju s1, CU generiše upravljačke signale za upravljačku reč 2 radi izvršenja instrukcije i=i+1. U stanju s2 izvršava se instrukcija OUTPUT i. Stanje s3 je dodatno, a potrebno je radi izvršenja WHILE petlje i zaustavljanja (halt) izvršenja algoritma.

(a)

naredno stanje Q1nared Q0nared

tekuće stanje Q1 Q0 (i≠10)' (i≠10)

s0 00 s3 11 s1 01 s1 01 s2 10 s2 10 s2 10 s3 11 s1 01 s3 11 s3 11 s3 11 (b)

naredno stanje D1D0

tekuće stanje Q1 Q0 (i≠10)' (i≠10)

00 11 01 01 10 10 10 11 01 11 11 11

(c)

(d)

Q1 Q0 iLoad Clear Out 00 0 1 0 01 1 0 0 10 0 0 1 11 0 0 0

(e)

(f)

Page 6: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(g)

Slika 2.2 Realizacija CU-e za brojanje brojeva od 1 do 10: (a) dijagram-stanja; (b) tabela naredno-stanje; (c) implementaciona tabela koja koristi D flip-flopove; (d) Karnaugh-ove mape i jednačine

izvršenja; (e) tabela izlaza; (f) jednačine izlaznih signala za sva tri upravljačka signala; (g) kolo Redosled po kome se vtrši povezivanja stanja u saglasnosti je sa sekvenciranjem instrukcija u algoritmu. FSM startuje od stanja reset s0, koje incijalizira i na 0. Nakon izvršenja linije 1, izvršenje linije 3 zavisi od uslova u WHILE petlji. S obzirom da se linija 1 izvršava u stanju s0, a linija 3 se izvršava u stanju s1 to prelaz iz stanja s0 u s1 zavisi od test uslova (i≠10). Ovaj uslov je predstavljen pomoću dva izlazna potega iz stanja s0, tako što je jedan poteg usmeren ka stanju s1, ima oznaku (i≠10) a važi za uslov istinit (true), dok je drugi poteg usmeren ka stanju s3, ima oznaku (i≠10)’ i važi za uslov neistinit (false). Izvršenje linije 4 sledi neposredno nakon linije 3, pa zbog toga postoji bezuslovni poteg iz stanja s1 u s2. Iz stanja s2, postoje takodje dva uslovna potega kao i kod stanja s0, koji se u ovom slučaju koriste za potrebe testiranja uslova da li treba ponoviti izvršenje WHILE petlje ili ne treba ponoviti. Ako je uslov (i≠10) istinit, tada se FSM vraća u stanje s1, inače napušta WHILE petlju i prelazi u stanje s3. FSM se zaustavlja u stanje s3, tj bezuslovno se vrti u stanju s3 . U stanju s3 ne izvršava se bilo kakva operacija tipa registarski prenos. Na osnovu izvedenog dijagrama stanja, aktuelna konstrukcija CU-a se ostvaruje na isti način kao i što se i konstruišu FSM kola opšte namene. Tabela naredno-stanje je prikazana na slici 2.2 b). S obzirom da postoje četiri stanja, to znači da treba ugraditi dva flip-flopa koji će se koristiti za kodiranje tih stanja. Radi pojednostavljenja, za potrebe kodiranja koristićemo pravu šemu za binarno kodiranje. To znači da se stanje s0 kodira kao Q1Q0=00, stanje s1 kao Q1Q0=01, i td. Kod tabele naredno-

Page 7: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

stanje, za četiri stanja postoje četiri vrste, pri čemu je svaka vrsta označena imenom stanja i odgovarajućim kodom. Pored četiri tekuća stanja izlistana u vrstama tabele (slika 2.2 b)), treba napomenuti da naredno stanje FSM-a zavisi od statusnog signala koji se odnosi na test uslov (i≠10). Zbog toga na slici 2.2 b) postoje još dve kolone. Jedna kolona je označena sa (i≠10)’ i važi kada je uslov testiranja neistinit, a druga kolona je označena sa (i≠10) i važi kada je uslov testiranja istinit. 2.1.2 Jednostavna IF-THEN-ELSE upravljačka jedinica Konstruisaćemo sada dijagram stanja CU-a koja se koristi za upravljanje radom staze podataka sa slika 1.12, 1.13, i 1.14, a odnosi se na realizaciju jednostavnog IF-THEN-ELSE problema. Algoritam, namenska DP, i upravljačke reči sa slika 1.12, 1.13, i 1.14, respektivno, radi preglednosti, su ponovljene na slici 2.3.

Slika 2.3 Problem IF-THEN-ELSE: (a) algoritam; (b) namenska DP; (c) upravljačke reči Ukazaćemo sada na jedan “naivan” način kako se obavlja kreiranje dijagrama stanja tako što ćemo dodeliti po jedno stanje svakoj upravljačkoj reči kao što smo to uradili i u primeru sa slike 2.2. Ipak, na osnovu dijagrama-stanja kreiran, za ovaj problem, na jedan ovakav način, videćemo da se neće dobiti korektno rešenje iz razloga što je generisani statusni signal nekorektan. U sledećem primeru dat na slikama 2.5 i 2.6 videćemo kako se izvodi korektno rešenje.

1 INPUT A 2 IF(A = 5)THEN 3 B = 8 4 ELSE 5 B = 15 6 END IF 7 OUTPUT B (a)

(b)

upravljačka reč instrukcija ALoad Muxsel BLoad Out 1 INPUT A 1 x 0 0 2 B = 8 0 1 1 0 3 B = 15 0 0 1 0 4 OUTPUT B 0 x 0 1

(c)

Page 8: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

2.1.2.1 Izvodjenje nekorektnog dijagrama stanja Sagledajmo sada kako se izvodi dijagram-stanja za CU namenjena za upravljanje radom DP-a sa slike 1.13 kojom se rešava problem IF-THEN-ELSE. Na osnovu algoritma prikazan na slici 2.3 a) vidimo da postoje četiri instrukcije koje manipulišu podacima, a one odgovaraju linijama 1, 3, 5 i 7. Linija 2 odgovara upravljačkom iskazu. Kao što se vidi sa slike 2.3 c) postoje četiri instrukcije za manipulisanje podacima koje se koriste za upravljanje radom namenske staze podataka sa slike 2.3 b). Ponovo, kako je prikazano na slici 2.4 a), analizu počinjemo tako što ćemo četirima upravljačkim rečima sa slike 2.3 c) dodeliti četiri posebna stanja u dijagramu-stanja sa slike 2.4 a). Svako od četiri stanja ima svoje simboličko ime, koja se u konkretnom slučaju, nazivaju s_input, s_equal, s_notequal i s_output. Svako stanje (vidi sliku 2.4 a)) je komentarisano pomoću odgovorajajuće upravljačke reči i instrukcije koja ga prati. Tako na primer, u stajnu s_input CU treba da generiše upravljačku reč 1 i signalizira izvršenje instrukcije INPUT A, a u stanju s_equal CU treba da generiše upravljačku reč 2 i signalizira izvršenje instrukcije B =8. Nakon instrukcije INPUT A, izvršenje sledeće dve instrukcije B=8 i B=15, zavisi od uslova iskaza IF. S obzirom da su ove instrukcije dodeljene trima stanjima: s_input, s_equal i s_notequal, respektivno, prelaz iz stanja s_input u ostala dva stanja zavisi od uslova ( A=5) u iskazu IF. Uslovno izvršenje je prikazano pomoću dva izlazna potega iz stanja s_input: jedan poteg je usmeren ka stanju s_equal i označen je sa (A=5) što odgovora uslovu istinit (true), a drugi poteg je usmeren ka stanju s_notequal i označen je sa (A=5)’ što odgovara uslovu neistinit (false). Instrukcija OUTPUT B se izvršava bezuslovno nakon izvršenja instrukcija B=8 ili B=15. To znači da nakon stanja s_equal ili s_notequal postoji bezuslovni prelaz (poteg) ka stanju s_output. Nakon izvršenja OUTPUT B algoritam se zaustavlja (halt), što znači da se FSM bezuslovno "vrti" u stanje s_output. U saglavsnosti sa algoritmom (slika 2.3 a)), nakon prihvatanja vrednosti A u stanje s_input (slika 2.4 a)), neophodno je testirati uslov (A=5). Ako je uslov istinit prelazi se u stanje s_equal i izvršava instrukcija B=8, u suprotnom se prelazi u stanje s_notequal i izvršava se instrukcija B=15. Iz bilo kog od oba stanja, s_equal ili s_notequal, prelazi se u konačno stanje s_output. Usvojimo da se stanje s_input izvršava u taktnom intervalu 1 (clock cycle 1). U taktnom intervalu 2 (clock cycle 2) izvršavaju se stanja s_equal ili s_notequal. Nakon toga, u taktnom intervalu 3 (clock cycle 3) izvršava se stanje s_output. Postoje sada dve važne stvari na koje moramo obratiti posebnu pažnju i razumeti ih, a to su sledeće stavke:

1) Sa pojavom usponske ivice taktnog impulsa, ako je upravljački signal Load aktivan vrši se punjenje registra na novu vrednost,

2) Na svaku usponsku ivicu taktnog impulsa FSM ulazi u novo stanje koje nazvivamo naredno stanje (next state)

Kao i u svim prethodnim primerima, i u ovom slučaju koristimo usponsku ivicu taktnog

impulsa kao aktivnu ivicu. Razlog za stavku 1 je taj što u realizacijama FSM-ova se koriste D flip-flopovi koji se okidaju na pozitivnu ivicu. To znači da ako je rad flip-flopa dozvoljen, tada će ulazni podataka biti zapamćen u flip-flop sa pojavom naredne usponske ivice taktnog impulsa. Stavka 2 ukazuje da za registar koji pamti stanje FSM-a se takodje koristi D flip-flop koji se okida na pozitivnu

Page 9: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

ivicu. Smatrajmo sada da je ovim flip-flopovima uvek dozvoljen rad, tj. signal enable je uvek aktivan. Pod ovakvim uslovima, sa pojavom usponske ivice taktnog impulsa nova vrednost iz logičkog bloka naredno-stanje biže zapamćena u registar koji se koristi za memorisanje stanja, pa zbog toga FSM ulazi u novo-stanje sa svakom usponskom ivicom taktnog impulsa.

(a)

(b)

Slika 2.4 Primer nekorektnog rešenja: a) nekorektni dijagram stanja; b) nekorektni tajming dijagram

Ako konstruišemo CU zasnovano na dijagramu stanja sa slike 2.4 a), tada će se desiti sledeći scenario. Sa prvom usponskom ivicom taktnog impulsa FSM ulazi u stanje s_input. Nakon kratkog vremena od ulaska u stanje s_input, FSM aktivira se upravljački signal ALoad da bi napunila vrednost promenljive A. S obzirom da se registar puni na usponsku ivicu taktnog impulsa, a prva usponska ivica je prošla, u konkretnom slučaju to znači da će vrednost A biti napunjenja u registar, REGA, sa narednom usponksom ivicom taktnog impulsa (tj. na početku taktnog intrvala 2). Ali na početku taktnog intervala 2 treba naglasiti da FSM treba da predje u naredno stanje koje može biti s_equal ili s_notequal. Sa ciljem da FSM zna u koje od ova dva stanja treba da predje, FSM mora da zna ishod uslova (A=5), i to dok se još nalazi u stanju s_input. Dilema koja postoji je ta što se statusni signal generiše od strane komparatora testa (A = 5) u stanju s_input, a to znači da test kolo

Page 10: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

treba da korsiti ulaznu promenljivu A. Na žalost vrednost A nije još dostupna do početka narednog taktnog intervala. Zbog toga, ono što će komparator, COMP, prihvatiti sa izlaza, REGA, u taktnom intervalu 1 odgovaraće staroj (ili tekućoj) vrednosti A, a ne novoj ulaznoj vrednosti. Na slici 2.4 b) prikazan je tajming dijagram za ovaj dijagram stanja sa nekorektno generisanim rezultatom. Dijagram prikazuje da se vrednost 5 puni u REGA u trenutku 200 ns (početak taktnog intervala 2). S obzirom da je ulazna vrednost 5, test (A =5) treba da je istinit, a izlaz treba da je 8. Na žalost, u tajming dijagramu vidimo da se stanje FSM-a u trenutku 200 ns menja u s_notequal. Razlog ovome je taj što se za uslovno testiranje čita stara vrednost promenljive A koja iznosi 0, a ne nova vrednost koja je 5. Zbog toga na izlazu dobijamo nekorektnu vrednost 15. Malo je čudno zbog čega dijagram-stanja sa slike 2.2 a) je korektan, dok je dijagram-stanja sa slike 2.4 a) nekorektan. Prve dve linije ova dva algoritma su veoma slične. U prvoj liniji se dodeljuje vrednost promenljivoj (u jednoma algoritmu se prihavta konstanta 0, a u drugom se prihvata podataka sa porta Input), dok se u drugoj liniji testira uslov koji se odnosi na vrednost promenljive. Pitanje koje se sada postavlja je sledeće: Šta je to što uzrokuje da test uslov iz primera sa slike 2.2 a) bude korektan, a test uslov iz primera sa slike 2.4 a) bude nekorektan ? Razlog je taj što je tajming dodeljivanja vrednosti za ove dve promenljive različit. U primeru sa slike 2.2 a) promenljivoj i se dodeljuje vrednost 0, aktiviranjem asinhronog signala Clear koji se dovodi na ulaz registra. Pošto se brisanje (clear) obavlja asinhrono, vrednost i se trenutno postavlja na 0 pa zbog toga ne mora da se čeka da naidje naredni taktni interval. Imajući ovo u vidu, za ovaj test kažćemo da je korektan. U primeru sa slike 2.4 koristimo signal ALoad za punjenje vrednosti u REGA. To znači da nova vrednost neće biti dosutpna sve do pojave narednog taktnog intervala. Kako je za potrebe uslovnog testiranja potrebna vrednost u tekućem taktnom intervalu zaključujemo da će test uslov biti nekorektan. 2.1.2.2 Izvodjenje korektnog dijagrama stanja i korektne upravljačke jedinice U primeru sa slike 2.3 i pored toga što komparator testira uslov (A=5) on ne dobija korektnu vrednost za A u taktnom intervalu kada je testiranje tog rezultata potrebno. Sa ciljem da komparator dobije korektnu vrednost za A potrebno je da se sačeka na vrednost koja se u narednom taktnom intervalu puni u REGA. Jedan od jednostavnijih načina da se reši ova tajming (vremensko sinhronizirajuća) greška ogleda se u sledećem: U dijagramu stanja se dodaje ekstra stanje nakon unošenja (prihvatanja) vrednosti A, tako da se vrednost može upisati u REGA pre nego što se ponovo čita radi testiranja. Ekstra stanju se ne dodeljuje upravljačka reč. Modifikovani dijagram stanja je prikazan na slici 2.5a), a odgovarajući tajming dijagram sa korigovanim rezultatom na slici 2.5b). Ista izlazna vrednost 5 se puni u REGA u trenutku 200 ns na početku drugog taktnog intervala 2 (clock czcle 2). Ipak, čitanje REGA radi uslovnog testiranja se obavlja za kratki period nakon vremena 200 ns. S toga, rezultat testa je "=", pa FSM prelazi u stanje s_equal i generiše se korektna vrednost na izlazu koja u ovom slučaju iznosi 8.

Page 11: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(a)

(b)

Slika 2.5. Korektni dijagram stanja za IF-THEN-ELSE: (a) korektnii dijagram stanja; (b) korektni

tajming dijagram Nakon što smo izvevli korektni dijagram stanja konstrukcija CU-a se obavlja na isti način kao i u prethodnom slučaju. Tabela naredno-stanje je prikazana na slici 2.6b). S obzirom da postoje pet stanja potrebno je ugraditi tri flip-flopa koji se koriste za kodiranje tih stanja. Tako na primer, stanje s_input se kodira sa Q2Q1Q0=000, stanje s_extra se kodira sa Q2Q1Q0=001, itd. Ostala tri koda (101, 110 i 111) se ne koriste. Ipak, zbog uticaja šumova ili gličeva u kolu, FSM može da pređe u jedno od ova tri neiskorišćena stanja. Zbog ovoga, dobra je ideja postaviti da naredno stanje za sva neiskorišćena stanja bude reset stanje. Sa druge strane, ako nije od važnosti koje će naredno stanje biti za ova neiskorišćena stanja, tada je moguće koristiti vrednosti koje nisu od značaja (don't-care

Page 12: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

values), što dovodi (rezultira) do jednostavnijih jednačina pobude. U konkretnom slučaju, u tabeli naredno-stanje dodate su tri vrste koje se koriste za sva tri neiskorišćena stanja. Njihovo naredno stanje za sve ulazne uslove je reset stanje, 000.

(a)

naredno stanje

Q2naredno Q1naredno Q0naredno tekuće stanje Q2 Q1 Q0 (A=5)' (A=5)

s_input 000 s_extra 001 s_extra 001 s_extra 001 s_notequal 010 s_equal 011 s_notequal 010 s_output 100 s_output 100 s_equal 011 s_output 100 s_output 100 s_output 100 s_output 100 s_output 100 neiskorišćeno 101 000 000 neiskorišćeno 110 000 000 neiskorišćeno 111 000 000

(b)

naredno stanje D2 D1 D0 tekuće stanje

Q2 Q1 Q0 (A=5)' (A=5) 000 001 001 001 010 011 010 100 100

Page 13: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

011 100 100 100 100 100 101 000 000 110 000 000 111 000 000

(c) ''' QQQQQD 012122 += 0121 QQQD ''= ( )5120120 =+= AQQQQQD ''''' (d)

Q2 Q1 Q0 instrukcija ALoad Muxsel BLoad Out 000 INPUT A 1 x 0 0 001 Nop 0 x 0 0 010 B = 8 0 1 1 0 011 B = 15 0 0 1 0 100 OUTPUT B 0 x 0 1 101 Nop 0 x 0 0 110 Nop 0 x 0 0 111 Nop 0 x 0 0

(e) * Nop = No-operation (operacija bez efekta) ''' QQQALoad 012= '' QQQMuxsel 012= 12QQBLoad '= '' QQQOut 012= (f)

Page 14: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(g)

Slika 2.6. Konstrukcija CU-a za primer IF-THEN-ELSE: (a) dijagram stanja; (b) tabela naredno-stanje; (c) implementacija tabele koristeći D flip-flopove; (d) jednačine pobude; (e) tabela izlaza; (f) jednačine

izlaza za četiri upravljačka signala; (g) kolo Odgovarajuća implementaciona tabela (koristi D flip-flopove) i rezultantne jednačine za pobudu (eksitaciju) kola su prikazane na slici 2.6c) i 2.6d), respektivno. Napomenimo da jednačine pobude izlistane na slici 2.6d) nisu jedine korektne jednačine, tj. postoje i druge korektne jednačine za pobudu. Tako na primer, ako se vrednosti koje nisu od značaja (don't-care values), koriste za naredna stanja kod sva tri neiskorišćena stanja, tada se jednačine pobude mogu još više pojednostaviti. Kolo izlazna-logika FSM-a se zasniva na signalima upravljačkih reči i stanja kojima su te upravljačke reči dodeljene. Postoji po jedna izlazna jednačina za svaki signal upravljačke reči, i ove jednačine su zavisne samo od stanja FSM-a (tj. od Q vrednosti flip-flopova). Da bi izveli tablicu istinitosti za ove izlazne jednačine, treba poći od tabele upravljlačkih reči i zameniti sve brojeve upravljačkih reči sa aktuelno kodiranim stanjem (tj. vrednosti Q-a) kojima se ta kontrolna reč dodeljuje. Na osnovu tabele-izlaza lako se izvode jednačine izlaza, kako je to prikazano na slici 2.6e) i 2.6f).

Page 15: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Nakon što smo izveli jednačine pobude i jednačine izlaza, moguće je nacrtati CU kolo (vidi sliku 2.6g)). Memoriju stanja čine tri D flip-flopa. Kolo naredno-stanje i kolo izlazna-logika se izvode kao kombinaciona logika, a konstruišu se na osnovu jednačina-pobude i jednačina-izlaza, respektivno. 2.2 Generisanje statusnih signala U poglavlju Staza podataka, kroz nekoliko primera, pokazali smo kako se generišu statusni signali. U situacijama kada treba testirati sadržaj registra ukazali smo kako se na izlazu registra povezuje komparator. No, postoje situacije kod kojih povezivanje komapratora na izlazu registra dovodi do generisanja nekorektnog (pogrešnog) statusnog signala iz razloga što komaprator upoređuje nekorektnu vrednost. U primerima sa slika 2.4, 2.5, i 2.6 uočili smo da, ako se u istom taktnom intervalu čita iz registra u kome je upravo obavljen upis, tada će se pročitati stara, a ne nova vrednost. Rešenje koje se predlaže i koristi u primeru sa slike 2.5 sastoji se u umetanju ekstra stanja čekanja sa ciljem da se sačeka na korektan upis vrednosti u registar kako bi se korektna vrednost učinila dostupnom na izlazu registra. Ono što čini problem teškim (ali i interesantim) je to što u toku različitih taktnih intervala različite vrednosti prolaze kroz istu tačku u stazi podataka, DP. Tako na primer, izlaz iz multipleksera tipa 2-u-1 može da ima dve različite vrednosti u toku dva razlličita trenutka, jer u jednom taktnom intervalu, select linija multipleksera može biti aktivirana, dok u drugom taktnom intervalu, select linija se može deaktivirati - pa to dovesti do prenosa podataka od različitih izvorišta ka izlazu. Druga komponenta DP-a koja može da generiše razlličite vrednosti u različitim trenucima je RF registarsko polje. Ako RF polju dovedemo različite adrese za operaciju Read, RF polje će na svojim izlazima generisati vrednosti sa različitih lokacija. Na osnovu ove diskusije može se zaključiti sledeće: Sa ciljem da se na izlazu komparatora dovede korektna vrednost za testiranje, neophodno je odrediti ne samo tačno mesto u DP-u odakle treba pribaviti vrednost, nego i tačno odrediti trenutak kada će se obaviti testiranje. Informacija o tajmingu se dobija iz dijagrama stanja. Dijagram stanja nam ukazuje: a) u kom je stanju statusni signal potreban; b) u kom trenutku se FSM nalazi u tom stanju; c) koja se instrukcija za manipulisanje podataka u datom trenutku obavlja; i d) koji su podaci u različitim tačkama DP-a dostupni. Na pomenute detalje ukazaćemo sada kroz jedan primer. 2.2.1 Generisanje korektnog statusnog signala povezivanjem komparatora u različitim tačkama staze podataka Dijagram stanja sa slike 2.4a) izveden za DP sa slike 2.3b) je nekorektan, jer u stanju s_input (kada je statusni signal potreban za kompariranje), na izlazu komparatora se ne dovodi korektna ulazna vrednost. Nedostatak rešenja sa slike 2.5 ogleda se u uvođenju ekstra taktnog intervala, tj. da bi se algoritam korektno izvršio potrebno je uvesti stanje s_extra. Jedan drugi način da se reši tajming problem sastoji se u povezivanju komparatora u različitim tačkama DP-a, umesto da se ubaci ekstra stanje. Dijagram stanja na slici 2.4a) prikazuje da je upravo u stanju s_input za potrebe kompariranja (A=5) neophodno koristiti vrednost podataka sa ulaza. DP prikazana na slici 2.3b) ima komparator povezan na izlazu REGA. Zbog ovakvog načina povezivanja potrebno je ubaciti ekstra stanje sa ciljem da se sačeka upis vrednosti sa ulaza u REGA pre nego što ta vrednost postane dostupna za testiranje.

Page 16: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Umesto da komparator COMP povežemo na izlazu registra REGA, on se može direktno povezati na primarni ulaz (tj. na ulaz REGA), kako je to prikazano na slici 2.7. Na ovaj način ne treba čekati da se ulazna vrednost prvo upiše u REGA, nego će ona biti odmah dostupna još u stanju s_input. Kao rezultat, COMP će generisati korektnu vrednost kako bi se obavio test u pravom trenutku, a sa druge strane ne postoji sada potreba za ubacivanjem ekstra stanja, s_extra, u dijagramu stanja.

Slika 2.7. Generisanje korektnog statusnog signala za primer sa slike 2.5 i 2.6

2.2.2 Sumiranje od n naniže ka 1 Kreiraćemo sada dijagram stanja i generisati korektni statusni signal za stazu podataka opšteg tipa sa slike 1.32 kojom se realizuje sumiranje brojeva od n naniže ka 1, pri čemu je n broj koji se prihvata sa ulaza, Input. Radi bolje preglednosti, algoritam sa slike 1.31, staza podataka sa slike 1.32, i upravlljačke reči sa slike 1.33 su ponovo skupno prikazane na slici 2.8. Na slici 2.8c) prikazane su pet upravljačke reči koje se koriste za upravljanje radom staze podataka sa slike 2.8b) kojom se obavlja algoritamm dat na slici 2.8a). 1 suma = 0 2 INPUT n 3 WHILE (n≠0) { 4 suma = suma + n 5 n= n -1 6 } 7 OUTPUT suma (a)

Page 17: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(b) up. reč

instrukcija

IE 15

WE 14

WA1,0 13-12

RAE 11

RAA1,0 10-9

RBE 8

RBA1,0 7-6

ALU2,1,0 5-3

SH1,0 2-1

OE 0

1 suma=0 0 1 00 1 00 1 00 101 (sub)

00 0

2 INPUT n 1 1 01 0 xx 0 xx xxx xx 0 3 suma=

suma+n 0 1 00 1 00 1 01 100

(add) 00 0

4 n=n-1 0 1 01 1 01 0 xx 111 (dec)

00 0

5 OUTPUT suma

x 0 xx 1 00 0 xx 000 (pass)

00 1

(c)

Page 18: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Slika 2.8. Problem sumiranja iz primera sa slika 1.31, 1.32 i 1.33: (a) algoritam; (b) opšta staza podataka; (c) upravljačke reči

Na slici 2.9a) prikazan je prvi pokušaj izvođenja dijagrama-stanja za algoritam sa slike 2.8a). Svim pet instrukcijama za manipulisanje podacima se dodeljuju pet stanja. Nakon reseta FSM počinje od stanja s0, pri čemu se suma inicijalizira na 0, i čeka na signal Start. Signal Start ukazuje CU-ci kada je ulazni podatak spreman kako bi se počelo sa izvršenjem algoritma. (Signal Start je sličan funkciji dirke Enter koju srećemo kod tastature na PC mašini). Ostali potezi dijagrama stanja slede sekvencu izvršenja algoritma. Stanje s1 izvršava upravljačku reč 2 radi unosa broja n. Stanje s2 izvršava upravljačku reč 3 u cilju sumiranja n. Stanje s3 izvršava upravljačku reč 4 kada se dekrementira n. Konačno, stanje s4 izvršava upravljačku reč 5 radi generisanja vrednosti suma na izlazu sistema. U stanju s1, unosi se vrednost n i odmah testira uslov (n≠0). Na sličan način, u stanju s3 izvršava se instrukcija n=n-1 i odmah testira uslov (n≠0). Ipak iz primera sa slike 2.5 treba napomenuti da nije moguće obaviti testiranje za uslov u situacijama kada se vrednost upisuje u registar u istom taktnom intervalu kada se vrši i testiranje. Ako pokušamo da rešimo ovaj problem na način kao na slici 2.5 dobićemo dijagram-stanja kao na slici 2.9b), gde je dodato jedno dodatno stanje čekanja, s_wait. Sa druge strane, iz primera sa slike 2.7 vidimo da ponekad nije neophodno umetnuti stanje čekanja ako se pronađe tačka u DP-u koja se povezuje na COMP tako da se obezbedi uslov za korektno generisanje statusnog signala.

(a)

Page 19: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(b)

Slika 2.9. Dva moguća dijagrama stanja za rešavanje problema sa slike 2.8: (a) bez ekstra stanja

čekanja; (b) sa ekstra stanjem čekanja Sa aspekta optimizacije, dijagram stanja sa slike 2.9a) predstavlja bolji izbor za slučaj da se generiše korektan statusni signal, iz razloga što se zahteva jedno stanje manje. S toga, problem se sastoji u pronalaženju lokacije u DP-u na koju treba povezati COMP tako da u pravom trenutku COMP generiše korektan signal za test uslov (n≠0). Dijagram stanja na slici 2.9a) prikazuje da je statusni signal potreban u stanjima s1 i s3. Zbog toga je potrebno pronaći tačku u DP-u takvu da je korektna vrednost za n dostupna u trenucima kada se izvršavaju stanja s1 i s3. U stanju s3, izvršava se instrukcija n=n-1. Da bi DP izvršila n=n-1, vrednost n-a mora biti prisutna kao operand A na ulazu ALU-a (tačka C na slici 2.8b)), a rezultat dekrementiranja n-1, u toku istog taktnog intervala, je dostupan na izlazu ALU-a (tačka D na slici 2.8b)). U saglasnosti sa dijagramom stanja prikazanim na slici 2.9a), potrebno je obaviti testiranje n-a nakon dekrementiranja. Ako se komparator COMP poveže na ulazni operand A od ALU-a u tački C, u toku ovog taktnog intervala, kompariraće se vrednost n pre dekrementiranja. Šta više, vrednost n-a nije više dostupna u tački C u toku narednog taktnog intervala. Razlog je taj što se u toku narednog taktnog intervala izvršava stanje s2 ili s4, i za oba ova stanja potrebna je vrednost suma. To znači da je u narednom taktnom intervalu, vrednost suma, a ne vrednost n, dostupna u tački C. S obzirom da je rezultat

Page 20: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

dekrementiranja, u toku tekućeg taktnog intervala, dostupan u tački D, komparator COMP treba povezati na izlaz ALU-a u tački D. Problem se sada javlja i što je vrednost n-a potrebna i u stanju s1. U stanju s1, izvršava se instrukcija INPUTn, a vrednost n se upisuje u RF polje. Analizom slike 2.8b) vidimo da u toku taktnog intervala kada DP izvršava instrukciju INPUTn, vrednost n je dostupna samo na primarnom ulazu podataka DP-a u tački A i na izlazu multipleksera MUX u tački B. S obzirom da se upisivanje n-a u RF polje vrši sa narednom usponskom ivicom taktnog impulsa, vrednost n nije dostupna na izlazu RF polja u toku tog istog taktnog intervala, nego samo na izlazu ALU-a. Zbog toga, da bi statusni signal (n≠0) bio korektan u stanju s1, potrebno je povezati COMP bilo na primarni ulaz podataka u tački A ili na izlaz MUX-a u tački B. Zbog stanja s3, neophodno je povezati COMP u tački D, ali zbog stanja s1 potrebno je povezati COMP bilo u tački A ili B. Da bi generisali korektan statusni signal za oba stanja, COMP treba povezati u tački koja je korektna za oba slučaja. Napomenimo da izvršenje instrukcije n=n-1 u stanju s3 zahteva da izlaz ALU-a u tački D, u okviru istog taktnog intervala, bude usmeren nazad na izlaz MUX-a u tački B, tako da se dekrementirana vrednost n može upisati u RF polje sa nailaskom usponske ivice taktnog impulsa. Ovo je moguće ostvariti jer su pomerač SHR i multiplekser MUX kombinaciona kola. To znači da, novo dekrementirana vrednost za n koja je potrebna radi kompariranja u stanju s3 neće biti dostupna samo u tački D, nego će takođe biti dostupna i u tačkama E i B. Na osnovu ovoga možemo zaključiti da povezivanjem komparatora COMP na izlaz multipleksera MUX u tački B moguće je generisati korektan statusni signal za potrebe upoređivanja (n≠0) u oba stanja s1 i s3, kako je to prikazano na slici 2.10.

Page 21: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

SH1 SHRSH0

8TB

Data Output

21

0 OE

A

Q7-0

ALU2

ALU0

ALUALU1

8

B5

34

8

01MUX

IE

Data Input

88

15

8

8

8

4 x 8WE

RAE RFWA1,0

14

11

13-12

Clock

RAA1,0

Clock

10-9

RBE

RBA1,0

A B8

7-68

8(n 0)

statusni signal ka

CU

Slika 2.10. Generisanje statusnog signala (n≠0) u stazi podataka za primer sa slike 2.5

Zadnja stvar na koju treba ukazati je sledeća: S obzirom da je COMP kombinaciono kolo, ono konstantno na svom izlazu generiše vrednost. Kada se FSM nalazi u stanju koje je različito od s1 ili s3, COMP upoređuje drugu vrednost sa 0. Tako na primer, u stanju s2 ALU upoređuje suma+n sa 0. Ipak ovaj rezultat COMP-a neće uticati na korektan rad CU-a, jer u stanju s2, logika naredno-stanje ne koristi statusni signal da bi odredila koje će biti naredno stanje. Zbog toga, i pored toga što COMP u stanju s2 generiše nekorektni signal, CU neće koristiti vrednost tog statusnog signala. Kada je statusni signal iz COMP-a potreban u stanjima s1 ili s3, on će predstavljati rezultat korektne komparacije.

Page 22: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Nakon izvođenja korektnog dijagrama stanja prikazanog na slici 2.9a) i korektnog statusnog signala iz DP-a kako je to prikazano na slici 2.10, moguće je sada završiti sa konstrukcijom CU kola, kako je to prikazano na slici 2.11. Na osnovu dijagrama stanja, kreira se tabela naredno-stanje (vidi sliku 2.11b)). Tri flip-flopa Q2, Q1, i Q0 su potrebna za kodiranje pet stanja. Pored tekućih stanja izlistanih u tabeli (slika 2.11b)), naredno stanje FSM-a takođe zavisi od upravljačkog signala Start i statusnog signala (n≠0) (četiri kolone na slici 2.11b). Oznake za sve četiri kolone se odnose na sve četiri kombinacije dvaju ulaznih signala Start i (n≠0). Tako na primer, kolona označena sa 10 označava da je ulazni signal Start istinit (tj. Start=1), a statusni signal (n≠0) lažan (tj. (n≠0)=0). Na slici 2.11c) prikazana je odgovarajuća implementaciona tabela koja koristi D flip-flopove. Za izvođenje jednačina pobude (slika 2.11d)), izlaznih jednačina (slika 2-11f)), i konačno kompletno CU kolo (slika 2.11d)), važi ista procedura kao i ona koja se odnosi na sintezu DP-a opšteg tipa. Upravljački signal Done se koristi da obavesti spoljni svet da je izvršenje algoritma kompletirano i da je podatak na portu Data Output validan.

(a)

Page 23: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

naredno stanje Q2naredno Q1naredno Q0naredno

Start, (n≠0) tekuće stanje

Q2 Q1 Q0 00 01 10 11

s0 000 s0

000 s0 000 s1 001 s1 001

s1 001 s4

100 s2 010 s4 100 s2 010

s2 010 s3

011 s3 011 s3 011 s3 011

s3 011 s4

100 s2 010 s4 100 s2 010

s4 100 s4

100 s4 100 s4 100 s4 100

neiskorišćeno 101 s0

000 s0 000 s0 000 s0 000

neiskorišćeno 110 s0

000 s0 000 s0 000 s0 000

neiskorišćeno 111 s0

000 s0 000 s0 000 s0 000

(b)

implementacija D2 D1 D0

Start, (n≠0) tekuće stanje

Q2 Q1 Q0 00 01 10 11

000 000 000 001 001 001 100 010 100 010 010 011 011 011 011 011 100 010 100 010 100 100 100 100 100 101 000 000 000 000 110 000 000 000 000 111 000 000 000 000

(c)

Page 24: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

1 1

1 1

00 01 11 10

00

01

11

10

Start, (n 0)Q2=0D2

Q1Q0

1 1 1 1

00 01 11 10

Q2=1

Q2'Q0(n ' Q2Q1'Q0'

D2 = Q2Q1'Q0' + Q2'Q0(n '

1 1

1 1

1 1 1 1

00 01 11 10

00

01

11

10

Start, (n 0)Q2=0D1

Q1Q0 00 01 11 10

Q2=1

Q2'Q0'(n 'Q2'Q1Q0'

D1 = Q2'Q1Q0' + Q2'Q0(n

1 1

1 1 1 1

00 01 11 10

00

01

11

10

Start, (n 0)Q2=0D0

Q1Q0 00 01 11 10

Q2=1

Q2'Q0'StartQ2'Q1Q0'

D0 = Q2'Q1Q0' + Q2'Q0'Start (d)

State

Q2 Q1 Q0 IE 15

WE 14

WA1 13

WA0 12

RAE 11

RAA1 10

RAA0 9

RBE 8

RBA1 7

RBA0 6

ALU2 5

ALU1 4

ALU0 3

SH1 2

SH0 1

OE 0

000 0 1 0 0 1 0 0 1 0 0 1 0 1 0 0 0 001 1 1 0 1 0 x x 0 0 0 x x x x x 0 010 0 1 0 0 1 0 0 1 1 0 1 0 0 0 0 0 011 0 1 0 0 1 0 1 0 1 0 1 1 1 0 0 0 100 x 0 x x 1 0 0 0 0 1 0 0 0 0 0 1 101 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 110 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 111 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0

(e)

(f)

Page 25: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(g)

Slika 2.11. Konstrukcija CU-a za primer sa slike 2.10: (a) dijagram stanja; (b) tabela naredno-stanje; (c)

implementaciona tabela; (d) Karnaough-ove mape za jednačine pobude; (e) tabela izlaza; (f) jednačine izlaza; i (g) kolo

2.3 Tipična rešenja sa kontrolerima U toku dosadašnjih teoretskih sagledavanja ukazali smo da se upravljačka jedinica koristi kao kontroler staze podataka. No, upravljačka jedinica može da bude nezavisna od staze podataka i da se koristi kao samostalni (stand-alone) kontroler za upravljanje radom eksternih uređaja. Postoji veliki broj elektronskih uređaja koji koriste stand-alone upravljačku jedinicu za njihovo upravljanje (na primer, kontroleri za mikrotalasne peći, mašina za pravljenje sode, semafor, pacemaker, itd.). Svi ovi uređaji ne zahtevaju da se obavljaju neka izračunavanja ili manipulisanje nad podacima tako da oni, u suštini, i ne zahtevaju korišćenje staze podataka. Kontroleri koji se ugrađuju u ove uređaje se, u principu, koriste za uključivanje ili isključivanje prekidača, ili za kontrolisanje rada nekih spoljnih uređaja. Kod semafora postoje tri skupa sijalica (zelena, žuta i crvena) pa njihovim uključivanjem ili isključivanjem usmerava se saobraćaj na raskrsnici u četiri smera. U tekstu koji sledi ukazaćemo na konstrukciju stand-alone kontrolera kroz nekoliko primera.

Page 26: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

2.3.1. Rotirajuća svetla Implementirajmo kontroler koji će učiniti da se osvetljenost šest periferijskih segmenata od sedmosegmentnog LED displeja okreće u smeru kazaljke na satu ili u suprotnom, u zavisnonsti od ulaza prekidača W. Pošto postoje šest svetlećih oblika, jedan za svaki LED koji je uključen a ostali isključeni, moguće je koristiti šest stanja i dodeliti po jedan svetleći oblik svakom stanju. Svako stanje prelazi u naredno stanje kod sekvencijalnog kretanja u smeru kazaljke na satu kada je prekidač W pritisnut, i u prethodno stanje kod sekvencijalnog kretanja u smeru suprotno od kazaljke na satu kada W nije pritisnut. Rezultujući dijagram stanja je sličan onom koji odgovara brojaču modula 6 koji broji naviše i prikazan je na slici 2.12a). Šest izlaznih signala (a, b, c, d, e, i f) odgovaraju šest periferijskih segmenata kod sedmosegmentnog LED-a. Vrednost "1" koja se dovodi na ulaz segmenta uključuje LED, a vrednost "0" isključuje. Tabela narednog stanja koja se izvodi na osnovu dijagrama stanja i odgovarajuća implementaciona tabela, koristeći D flip-flopove, su prikazane na slici 2.12b). Rezultujuće jednačine pobude (izvedene na osnovu implementacione tabele) su prikazane na slici 2.12c). Tabela izlaza kao i rezultujuće jednačine izlaza su prikazane na slici 2.12d) i 2.12e), respektivno. Konačni izgled kola kontrolera je prikazan na slici 2.12f). Da bi videli kako se svetlo kreće, šest izlaznih signala se povezuje na šest segmenata sedmosegmentnog LED-a, a taster dugme se povezuje na W ulaz, kako je to prikazano na slici 2.12g).

(a)

(b)

Page 27: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(c)

(d)

Page 28: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(e)

(f)

(g)

Slika 2.12. Kontroler za rotirajuća svetla: a) dijagram stanja; b) tabela naredno stanje (implementacija); c) K-mape i jednačine pobude; d) tabela izlaza; e) jednačine izlaza; f) kolo kontrolera; g) intefejs kola

Page 29: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

2.3.2. PS/2 tastaturni kontroler Projektovaćemo i implementiraćemo nešto realističniji i praktičniji kontroler, koji se koristi za tastaturu PS/2 mašine. Na UP2 razvojnoj ploči postoji 6-pinski mini-DIN konektor koji se koristi za povezivanje bilo PS/2 tastature, bilo PS/2 miša. Projektovaćemo i implementiraćemo kontroler za tastaturu na FPGA čipu. Rad tastature i kontrolera je sledeći. Komunikacija između tastature i kontrolera (koji će biti implementiran na FPGA čipu) koristi dva signala, KeyboardClock i KeyboardData. Kada ne postoji aktivnost, a to znači, kada nije pritisnut ni jedan taster na tastaturi, oba signala KeyboardClock i KeyboardData su postavljeni na 1. Kada se taster pritisne (ili otpušti), tastatura šalje jedinstveni kod za taj taster kontroleru serijskim putem preko KeyboardData linije. Serijski podatak na KeyboardData liniji je u sinhronizmu sa taktnim signalima koje tastatura predaje preko KeyboardClock linije. Podatak za svaki taster koji se šalje preko KeyboardData linije sastoji se od 11 bitova. Ovih 11 bitova su: "0" za start bit, 8 bitova podataka za kod tastera počevši od LS bita ka MS bitu, bit neparne parnosti i 1 stop bit (klasičan asinhroni prenos). Na slici 2.13 prikazani su neki od kodova tastera koje generiše tastatura u trenutku kada se pritisne odgovarajući taster. Kada se taster oslobodi, generiše se različiti kôd. Bit neparne parnosti se postavlja tako da ukupan broj jedinica u 8-bitnom podatku plus bit parnosti čine neparan broj.

Slika 2.13. Delimična lista kôdova tastera generisanih od strane tastature

Slika 2.14. Uzorak tajming dijagrama za predaju podatka koji se odnosi na kôd tastera 4E

Na slici 2.14 prikazan je deo tajming dijagrama za predaju podatka koji se odnosi na kôd tastera crtica, 4E (01001110 binarno). Dijagram počinje od neaktivnog stanja u kome su obe linije KeyboardData i KeyboardClock postavljene na 1, prenos počinje start bitom postavljanjem KeyboardData linije na 0. Tastatura zatim šalje podatke i bit parnosti na liniju KeyboardData brzinom od jednog bita po taktnom intervalu, pri čemu se taktni impuls prenosi po KeyboardClock liniji. Taktne impulse na KeyboardClock liniji generiše tastatura. Bit parnosti za kôd dirke 4E je 1,

Page 30: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

pošto se osam bitova podatka sastoje od parnog broja jedinica, pa prema tome, da bi se ostvarila neparna parnost, bit parnosti mora biti 1. Dijagram stanja za tastaturni kontroler prikazan na slici 2.15(a) izveden je na osnovu vremenskog dijagrama prikazanog na slici 2.14. U svakom od 8 stanja koji se odnose na prenos podatka, d0,d1,...,d7, prihvata se po jedan odgovarajući bit podatka sa ulazne linije KeyboardData. Na primer, pretpostavimo da se koristi 8-bitni registar nazvan Keycode radi memorisanja 8 bitova podatka. Tada u stanju d0, KeyboardData se dodeljuje izlazu Keycode0 (tj. 0-ti bit Keycode registra), a u stanju d1, KeyboardData se dodeljuje izlazu Keycode1, i tako dalje za svih osam bitova podatka. Ovo je moguće zato što je prelaz FSM-a iz jednog stanja u drugo sinhronizovan sa taktnim signalom tastature KeyboardClock. Radi pojednostavljenja, nećemo proveravati start bit, bit parnosti, i stop bit. Tabela sledećeg stanja i implementaciona tabela koje koriste četiri D flip-flopa za kodiranje 11 stanja prikazane su na slici 2.15(b). Jednačine pobude izvedene na osnovu implementacione tabele prikazane su na slici 2.15(c). Ovo kolo kontrolera u suštini ne upravlja radom tastature jer ne generiše upravljačke signale za rad tastature. Umesto toga, ovo kolo prima serijski signale podataka sa tastature, i pakuje ih u bajtove podataka. Izlaz kontrolera su bajtovi podataka, koji predstavljaju kôd dirke pritisnute na tastaturi. Tabela izlaza prikazana je na slici 2.15(d) i odgovarajuće jednačine izlaza na slici 2.15(e). U stanju d0, bit prisutan na KeyboardData liniji loaduje se u bit 0 Keycode registra; u stanju d1, bit prisutan na KeyboardData liniji load-uje se u bit 1 Keycode registra; i tako dalje. Svaki bit Keycode registra mora, zbog toga, da bude u stanju da se load-uje u KeyboardData nezavisno, a svaka linija za dozvolu punjenja se aktivira pomoću odgovarajućeg kodiranog stanja. Shodno tome, svaka od izlaznih jednačina prikazanih na slici 2.15(e) nije implementirana kao 5-ulazno AND kolo. Umesto toga, D flip-flop sa dozvolom rada koristi se za generisanje svakog izlaznog signala. D ulaz flip-flopa povezan je na KeyboardData liniju. Signal dozvole punjenja flip-flopa, E, aktivira se AND operacijom nad četiri Q vrednosti koje odgovaraju tom stanju. Koristeći jednačine pobude za kolo naredno-stanje, četiri D flip-flopa za memoriju-stanja, i izlazne jednačine za izlazno kolo, dobija se kompletno kolo kontrolera kako je prikazano na slici 2.15(f). Implementacija kola kontrolera koje koristi FPGA čip prikazana je na slici 2.15(g) i dostupna je na odgovarajućem CDROM-u u fajlu UP2FLEX.GDF.

(a)

Page 31: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(b)

Page 32: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(c)

(d)

(e)

Page 33: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(f)

(g)

Slika 2.15. Kontroler: (a) dijagram stanja; (b) tabela naredno stanje (implementaciona tabela); (c) K-

mape i jednačine pobude; (d) izlazna tabela; (e) jednačine izlaza; (f) kolo kontrolera; i (g) interfejs kola U praksi, kontroleri se obično projektuju manuelno, kao što smo i mi to uradili. Svrha ove vežbe je da obezbedi studentima razumevanje kako se kontroleri projektuju. U sekciji 2.5. prikazaćemo kako se kontroleri automatski sintetizuju koristeći behavioral VHDL kôd (koji daje opis na nnivou ponašanja).

Page 34: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

2.3.3 Kontroler VGA monitora Jednostavni kontroler VGA monitora može se konstruisati koristeći skup standardnih sekvencijalnih komponenata. U primeru VGA kontroler - verzija 1 projektovaćemo i implementirati kontroler VGA monitora koristeći FSM kao njegovu upravljačku jedinicu. Ipak, treba istaći da kontroler VGA monitora je jednostavan i može se konstruisati bez potrebe za ugradnjom FSM-a. U primeru VGA kontroler - verzija 2 prikazaćemo kako se kontroler VGA monitora može implementirati bez FSM-a. Razvojno sredstvo UP2 poseduje 15-pinski Dsub konektor radi povezivanja na standardni VGA monitor. Signali sa Dsub konektora su direktno povezani na FPGA kolo koje se nalazi na ploči pa ćemo s toga implementirati naš kontroler na FPGA čip. Sa ciljem da se projektuje VGA kontroler neophodno je da se prvo razume kako VGA monitor radi. Ekran monitora za standardni VGA format sadrži 640 (kolona) x 480 (vrsti) elemenata slike koje zovemo pixel-ima (vidi sliku 2.16). Slika se prikazuje na ekranu aktiviranjem i deaktiviranjem odgovarajućih pixel-a. Mada uključenje samo jednog pixel-a ne doprinosi velikoj sjajnosti slike, kada je veći broj pixel-a aktiviran, kombinacija pixel-a je ta koja daje utisak o slici. Monitor kontinualno vrši analizu slike preko celog ekrana uključujući i isključujući po jedan pixel u datom trenutku, i to sa velikom brzinom. I pored toga što je samo po jedan pixel u datom trenutku aktiviran, imajući u vidu da se analiza ekrana vrši veoma brzo, posmatrač dobija utisak da su svi pixeli u datom trenutku aktivni. Na slici 5 je pokazano da analiza startuje od vrste 0, kolone 0, sa leve gornje strane ekrana, pri čemu se mlaz pomera s leva na desno sve dok ne pristigne do zadnje kolone u vrsti. Kada analiza stigne do zadnje vrste mlaz se vraća na početak naredne vrste. Kada analiza pristigne do zadnjeg pixel-a na desnom uglu ekrana, on se ponovo vraća na levi gornji ugao ekrana i analiza slike ponovo počinje. Sa ciljem da se izbegne fliker efekat (efekat treperenja) ekran se mora analizirati 60 puta u sekundi ili više. U toku horizontalnog i vertikalnog povratka mlaza svi pixel-i se zatamnjuju (deaktiviraju). Rad VGA monitora se kontroliše pomoću 5 signala: crveni, zeleni, plavi signal, impuls za horizontalnu i impuls za vertikalnu sinhronizaciju. Tri kolor signala, poznati kao RGB signal, koriste se da odrede boju pixel-a za datu lokaciju na ekranu. Sva tri signala boje na razvojnoj ploči UP2 su povezani tako da se mogu individualno uključivati i isključivati, pa shodno tome, svaki pixel se može prikazati samo u jednoj od 8 boja. Sa ciljem da generišemo veći broj boja svaki analogni kolor signal se može dovesti sa naponskim nivoom između 0 i 0.7V radi menjanja intenziteta boja na ulaz monitora. Horizontalni i vertikalni sinhronizacioni signali se koriste da upravljaju tajmingom i brzinom analize slike. Horizontalni sinhronizacioni signal određuje vreme analize vrste, dok vertikalni sinhronizacioni signal određuje vreme analize celog ekrana. Manipulisanjem sa svih pet signala kreiraju se slike na ekranu monitora. Tajming dijagram za horizontalne i vertikalne sinhronizacione signale je prikazan na slici 2.17. Kada nisu aktivni, oba sinhronizaciona signala su postavljena na 1. Početak analize vrste počinje sa horizontalnim sinhronizacionim signalom koji se postavlja na nisko za 3.77μs kao što je to prikazano u regionu B na slici 2.17. Iza toga sledi period od 1.79μs kada je ovaj signal na visoko, kako je to prikazano u regionu C. Nakon toga, podaci za sva tri kolor signala se predaju (po jedan pixel u datom trenutku) za sve 640 kolone, kako je to prikazano u regionu D za period od 25.42μs. Konačno, nakon prikaza zadnjeg pixel-a u koloni, sledi period od 0.79μs u toku koga RGB signali su neaktivni, vidi region E. Iza toga sledi signal za horizontalnu signalizaciju. Ukupno vreme da se kompletira jedna analizirana vrsta je 31.77μs.

Page 35: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Tajming za vertikalni sinhronizacioni signal analogni je horizontalnom sinhronizacionom signalu. Vertikalni sinhronizacioni signal aktivan kao niski za period od 64μs resetuje analizu i postavlja mlaz na levi gornji ugao ekrana, kao što je to prikazano u regionu P, iza čega sledi 1020μs kada je ovaj signal na visoko (vidi region Q). Nakon toga, postoji analiza od 480 vrsti, svaka trajanja 31.77μs, što ukupno predstavlja 15250μs, kako je to prikazano u regionu R. Konačno, nakon analize zadnje vrste, u periodu od 450μs, kako je to prikazano u regionu S, pre nego što vertikalni sinhronizacioni signal ponovo postavi na nisko sa ciljem da startuje druga analiza slike, mlaz se vraća na gornji kraj ekrana. Ukupno vreme da se kompletira jedna cela analiza ekrana iznosi 16784μs. Sa ciljem da monitor korektno radi, treba dovesti horizontalne i vertikalne sinhronizacione signale, a zatim na ulaze RGB povezati linije za podatke. Kvarcni oscilator na UP2 ploči ima frekvenciju od 25.178MHz. Njegova taktna perioda je 1/25.178*106 što odgovara 0.0397μs po taktnom periodu. Za region B u horizontalnom sinhronizacionom signalu potrebno je 3.77μs što aplroksimativno iznosi 3.77/0.0397=95 taktnih intervala. Za region C potrebno je 1.79μs, što aproksimativno odgovara 45 taktnih intervala. Na sličan način potrebno je 64 taktna intervala za region D za 640 kolona pixel-a i 20 taktnih intervala za region E. Ukupan broj taktnih intervala potreban za analizu svake vrste je zbog toga 800 taktnih intervala. Naglasimo da sa kristalnim oscilatorom od 27.175MHz, za region D su potrebna tačno 640 taktna intervala, što rezultira 640 kolona po vrsti. U principu, različite taktne frekvencije generisaće slika na ekranu sa različitim rezolucijama. Vertikalni tajminzi su multipli horizontalnih ciklusa. Na primer, region P je 64μs, što aproksimativno odgovara dvema horizontalnim linijama (2x31.77). Izračunavanje za region R su 15250μs/31.77μs=480. Naravno, treba da bude tačno 480 vremenskih jedinica jer se na ekranu prikazuje 480 vrsta (linija). Pored generisanja korektnih horizontalnih i vertikalnih sinhronizacionih signala, kolo mora da bude u sinhronizmu sa tekućom kolonom u okviru regiona D i sa tekućom vrstom u okviru regiona R kako bi analiza slike počela od specificiranog pixel-a. Da bi neki pixel učinili zelenim, potrebno je da se testiraju vrednosti brojača kolone i vrste. Ako su one jednake lokaciji pixel-a koga želimo da prikažemo tada aktiviramo zeleni signal, pa će kao rezultat pixel biti zelene boje.

Page 36: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Slika 2.16. VGA monitor sa 640 kolona x 480 vrsta. Analiza slike počinje od vrste 0 kolone 0 i ide ka desnoj strani i nadole sve dok ne dostigne vrstu 479 i kolonu 639.

Slika 2.17. Tajming dijagram za horizontalne i vertikalne sinhronizacione signale

2.3.3.1 VGA kontroler - verzija 1 Da bi se ostvario korektna horizontalna i vertikalna sinhronizacija, moguće je projektovati FSM sa 800 stanja koji se izvršavaju sa taktnom periodom od 25.175MHz. U toku prvih 95 stanja generisaće se 0 za horizontalni sinhronizacioni signal H_Sync. U toku narednih 45+640+20 = 705 stanja generisaće se 1 za H_Sync. Problem sa ovakvim pristupom se ipak sastoji u tome što je teško manuelno kreirati FSM kolo sa 800 stanja. Jednostavnije rešenje je da se koriste samo 2 stanja: jedno kada H_Sync je 0 u regionu B, a jedno kada je 1 u regionima C,D, i E. Da bi se ovo ostvariolo koristi se brojač koji radi istom taktnom frekvencijom kao i FSM čije stanje ukazuje na to koliko vremena FSM treba da ostane u određenom stanju. Za prvo stanje treba da se odbroji do vrednosti 95 pre nego što se pređe na naredno stanje, a u narednom stanju treba da se odbroji 705 pre nego što se pređe u prvo stanje. U toku prvog stanja izlaz H_Sync biće na 0, a u toku drugog na 1. Takođe je potrebno čuvati trag o triju primarnih signala na osnovu kojih se generiše dodatni H_Data_on signal na isti način kao što se generisao i H_Sync signal. H_Data_on signal je aktivan u regionu D, a deaktivira se u regionima B,C, i E. To znači da brojač modula 640 se koristi za njegovo ponavljanje u stanju regiona D. Primera radi, postavićemo H_Data_on signal na 1 i 0 u periodu D u trajanju od 640 taktnih intervala, a na 0 u periodima B, C, i E koji traju 160 taktnih intervala. Kombinovanjem dvaju stanja za H_Sync i dvaju stanja za H_Data_on u jednu celinu rezultiraće konačnom dijagramu stanja koji odgovara horizontalnom tajmingu kako je to prikazano na slici 2.18(a). FSM ima četiri odgovarajuća stanja koja se odnose na četiri regiona B, C, D, i E. Brojač se inicijalno postavlja u stanje 0 i inkrementira za 1 na svaki taktni interval. U stanju H_B za region B, FSM generiše 0 za oba signala H_Data_on i H_Sync. FSM ostaje u stanju H_B za 95 impulsa.

Page 37: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Uslov (H_cnt=B) proverava sa ciljem da ustanovi da li je brojač jednak vrednosti B pri čemu je B= 95. Kada je brojač jednak 95 FSM prelazi u stanje H_C, koje odgovara regionu C. U stanju H_C FSM generiše 0 za H_Data_on i 1 za H_Sync u trajanju od 45 intervala (tj. sve dok H_cnt je B+C=95+45=140). Kada H_cnt dostigne vrednost 140 FSM prelazi u stanje H_D, i generiše 1 na oba izlaza H_Data_on i H_Sync. Kada H_cnt dostigne vrednost B+C+D=95+45+640=780, FSM prelazi u stanje H_E i generiše 0 na izlazima H_Data_on i H_Sync. FSM ostaje u stanju H_E za 20 taktnih intervala sve dok H_ctn ne bude H_ctn=B+C+D+E=95+45+640+20=800, a zatim prelazi ponovo u stanje H_B. Kada FSM se ponovo vrati u stanje H_B, H_ctn se resetuje na 0 a zatim proces ponovo počinnje sa analizom naredne vrste (linije). Za vertikalnu sinhronizaciju tajming je analogan horizontalnom sinhronizacionom tajmingu, tako da možemo izvesti istu logiku koristeći drugi brojač kao drugi FSM. Ovaj drugi vertikalni FSM je identičan horizontalnom FSM-u. Jedina razlika je u tajmingu. Analizirajući tajming za svaki region u vertikalnom sinhronizacionom signalu na slici 2.17, vidimo da 64 μs za region P je aproksimativno dva puta više od ukupnog trajanja horizontalne linije, tj. 31.77 μs. Period od 1020 μs odgovara regionu Q i aproksimativno iznosi 32 horizontalne linije (1020/31.77≈32). Za region R, period iznosi 480 horizontalnih ciklusa, a za region S aproksimativno 14 horizontalnih ciklusa. Saglasno prethodnom, takt kako za vertikalni brojač tako i vertikalni FSM predstavlja horizontalni brojač. Vertikalni sinhronizacioni impuls se dobija na svakih 800 horizontalnih impulsa. Tabele narednih stanja za horizontalni FSM i vertikalni FSM su prikazane na slici 2.18(c) i (d), respektivno. Uočimo da uprkos četiri brojačkih uslova, obe tabele su skoro iste. Zbog toga, mi možemo da koristimo ista FSM kola za oba slučaja. Jedina razlika se sastoji u tome što njihovi statusni ulazni signali za sva četiri uslova brojanja se generišu od strane različitih komparatora brojanja. Izlazna tabela je takođe ista za oba FSM-a i prikazana je na slici 2.18(e). Ukupno postoje dva izlazna signala koje treba generisati: H_Data_on i H_Sync za horizontalni FSM i V_Data_on i V_Sync za vertikalni FSM. Konačno FSM kolo je prikazano na slici 2.18(f).

(a)

Page 38: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(b)

(c)

(d)

Page 39: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(e)

(f)

(g)

Page 40: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(h)

(i)

Slika 2.18. Kontroler za VGA monitor: (a) dijagram stanja za horizontalnu sinhronizaciju; (b) dijagram stanja za vertikalnu sinhronizaciju; (c) tabela naredno stanje za horizontalnu sinhronizaciju; (d) tabela

naredno stanje za vertikalnu sinhronizaciju; (e) tabela izlaza; (f) FSM kolo za horizontalnu i vertikalnu

Page 41: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

sinhronizaciju; (g) brojač horizontalne sinhronizacije; (h) brojač vertikalne sinhronizacije; (i) kompletno kolo VGA kontrolera

Potrebno je koristiti dve kopije instance ovog FSM kola: jednu za horizontalni FSM, a drugi za vertikalni FSM. Taktna frekvencija za horizontalni FSM je 21.175 MHz, dok se takt za vertikalni FSM dobija kao izlaz iz horizontalnog brojača. Četiri statusta signala za četiri uslova brojanja generišu se od strane dvaju brojača: horizontalni brojač i vertikalni brojač. Horizontalni brojač, HCount, sa četiri komparatora za (H_cnt= B), (H_cnt= B+C), (H_cnt = B+C+D), (H_cnt = B+C+D+E) je prikazan na slici 2.18(g). 10-bitni brojač je potreban za brojanje od 0 do 800. 10-ulazno AND kolo se koristi za svaki od četiri komparatora. Ulazi svakog AND kola se postavljaju da odgovaraju ekvivalentu binarne vrednosti za B=95, B+C=95+45=140, B+C+D=95+45+640=780, i B+C+D+E=95+45+640+20=800, respektivno. Brojač se ponovo postavlja na 0 aktiviranjem linije Load kada brojač dostigne 800 i puni se na vrednost 0. Izlaz iz komparatora (H_cnt=800) je brojački signal Rollover koji se koristi kao vertikalni taktni signal za vertikalni brojač, vertikalni FSM, i brojač vrsta (linija). Vertikalni brojač, VCount, sa četiri komparatora za (V_cnt=P), (V_cnt=P+Q), (V_cnt=P+Q+R), i (V_cnt=P+Q+R+S), prikazan je na slici 2.18(h). Kolo za ovaj brojač je slično horizontalnom brojaču, sa izuzetkom to što vrednosti komparatora različite, i po tome što nema potrebe da se taktni signal generiše na konceptu rollover (kad stigne do kraja da ponovo počne od početka). Takt za ovaj brojač je vertikalni taktni signal Rollover koji se generiše od strane horizontalnog brojača. Kompletno kolo VGA monitora je prikazano na slici 2.18(i). Kako bi bili sigurnni da sva tri RGB signala koja se dovode na ulaz monitora budu validna, neophodno je da ih aktiviramo (ako je potrebno) samo u regionima D i R. Zbog toga, obavlja se AND operacija nad trima kolor izlaznim signalima Red_out, Green_out, i Blue_out i signalima H_Data_on i V_Data_on. Na primer, ako ulazni signal Red je 1, izlazni signal Red_out biće 1 samo kada se vrši analiza slike u okviru oblasti D i R. Konačno, da bi se aktivirao specificirani pixel, kolo mora da čuva trag analize koji se odnosi na tekuću kolonu u okviru D regiona i tekuću vrstu u okviru R regiona. Za ovu namenu se koriste dva dodatna brojača, Column i Row. Pošto oni treba da broje samo kada se vrši analiza slike u regionima D i R, respektivno, zbog toga, Count ulaz za Column brojač se aktivira od strane H_Data_on signala, dok Count ulaz za Row brojač se aktivira od strane V_Data_on signala. Pošto brojanje dostigne vrednost 640 i 480, respektivno, to znači da su ova dva regiona prošla, i da brojači ne treba više da broje. Zbog toga će se oni resetovati na 0 u bilo kom trenutku pre nego što analiza slike ponovo dođe na početak ova dva regiona. U kolu, dve Load linije se aktiviraju kada se dva respektivna brojača ponovo vrate na 0. Konačno, Column brojački impuls se dobija od taktne frekvencije 27.175 MHz, a Row brojački impuls se izdvaja od vertikalnog taktnog izvorišta Rollover koji se izdvaja od horizontalnog brojača. Da bi prikazali neki sadržaj na ekranu, neophodno je da se proveri tekuća kolona i vrsta na kojoj se analizatorski mlaz nalazi, a nakon toga aktivira RGB signal ako želimo da se prikaže neki pixel na toj lokaciji. Tako na primer, ako želimo da aktiviramo Red signal kao kontinualan, tada svi pixel-i treba da budu crveni, što znači da će ceo ekran biti crven. Sa druge strane, ako želimo da prva vrsta pixel-a bude crvena, tada treba da aktiviramo Red signal samo kada je stanje Row brojača 0. Da bi dobili crveni obod oko ekrana, neophodno je aktivirati signal Red kada je Row=0, ili Row=639, ili Column=0, ili Column=479. Na slici 2.19 prikazano je kolo za iscrtavanje crvene ivice po celoj slici ekrana koristeći kolo VGA kontrolera sa slike 2.18(i).

Page 42: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Slika 2.19. Kolo koje koristi VGA kontroler za generisanje crvenog okvira po celom ekranu

2.3.3.2 VGA kontroler - verzija 2 Ako smo razumeli konstrukciju VGA kontrolera - verzija 1 odmah nam pada u oči da kolo kontrolera možemo da učinimo jednostavnijim. U tom cilju učinićemo sledeće dve redukcije: 1) eliminisati brojače vrsta i kolona, i 2) eliminisati horizontalne i vertikalne FSM-ove. Prvo, brojač kolona je uvek 140 (regioni B+C=95+45=140) plus horizontalni brojač kada je aktiviran signal H_Data_on, a brojač vrste je uvek 34 (regioni P+Q=2+32=34) plus vertikalni brojač kada je signal V_Data_on aktiviran. Zbog toga, ako pomerimo horizontalni broj tako da broj 0 je uvek na početku regiona D, a zadnji broj 800 je na kraju regiona C, tada nema potrebe za dodatnim brojačem kolone. Slično, ako pomerimo vertikalni broj tako da broj 0 odgovara početku regiona R, a zadnji broj 528 kraju regiona Q, tada brojač vrsta ne treba da postoji. Da bi eliminisali oba FSM-a, ukažimo da se FSM-ovi koriste samo za aktiviranje dva para signala: H_Sync, H_Data_on i V_Sync, V_Data_on. Aktiviranje ova četiri signala zavisi samo od horizontalnih i vertikalnih brojača. Zbog toga, koristićemo samo horizontalno i vertikalno odbrojavanje da bi aktivirali ove signale direktno. Ipak, neophodno je očuvati ove signale nepromenjene sve dok se ne dostigne određena vrednost brojanja. Za svaki signal se koristi SR flip-flop koji setuje signal na 0 ili 1 u pravom trenutku. SR flip-flop radi na sličan način kao i SR leč, sa izuzetkom da se izlaz menja samo sa aktivnom (usponskom) ivicom taktnog signala. Kada se S aktivira, flip-flop se popstavlja, i Q=1. Kada se R aktivira, flip-flop se resetuje i Q=0. Na primer, signal H_Sync_out ima vrednost 1 kada brojanje dostigne 95 i više, a 0 kada brojač ima vrednost 800, a ponovo se vraća 0 itd. Zbog toga, neophodno je povezati izlaz komparatora za (H_cnt=95) sa S ulazom SR flip-flopa i izlaza drugog koomparatora za (H_cnt=800) na R ulaz. Izlaz Q flip-flopa je signal H_Sync_out. Kao rezultat, signal se postavlja na 1 kada brojač dostigne 95, i ostaje na 1 sve dok se ne resetuje na 0 kada brojanje dostigne vrednost 800. Tri druga signala H_Data_on i V_Sync_out, i V_Data_on se generišu na sličan način.

Page 43: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Kompletna verzija 2 kola VGA monitor kontroler je prikazana na slici 2.20. Modifikovani horizontalni brojač, HCount, i vertikalni brojač, VCount, su prikazani na slici 2.20(a) i 2.20(b), respektivno. Napopmenimo da sva četiri izlaza uslova za svaki od obadva brojača su različita s obzirom da imamo pomerene vrednosti odbrojavanja tako da brojanja startuju sa početkom regiona D i R, za horizontalne i vertikalne brojače, respektivno. Kompletno kolo monitora je prikazano na slici 2.20(c). Moguće je implementirati i testirati drugu verziju monitor koontrolera koristeći isto kolo kao ono prikazano na slici 2.19, pri čemu je kontroler zamenjen svojom novom verzijom.

(a)

(b)

Page 44: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

(c)

Slika 2.20. Druga verzija VGA monitor kontrolera: (a) horizontalni brojač, HCount; (b) vertikalni

brojač, VCount; (c) kompletno kolo kontrolera 2.4 ASM dijagrami i tabele akcija stanja Nedostatak pristupa koji koristi dijagram stanja sastoji se u opisu ponašanja sekvencijalnog kola i u tome što ne oslikava precizno tajming informaciju, koja je veoma važna za korektni rad kola. Algorithmic State Machine (ASM) dijagrami i tabele akcije stanja (state action tables) su dva alternativna metoda za opisivanje rada sekvencijalnih kola na jedan tačniji i koncizniji način. Tabela akcije stanja koristi tabelarni format, dok ASM dijagram koristi grafički format. 2.4.1 ASM dijagrami ASM dijagrami se koriste za grafičku predstavu rada FSM-a na jedan tačniji način. Oni su slični dijagramima toka koji se koriste kod programiranja u računarstvu ali koriste različito formirane oblike, kako je to prikazano na slici 2.21, u cilju opisa sekvenci akcija. ASM dijagram prikazuje sličnu informaciju kao i onaj koji se odnosi na dijagram stanja. Ipak, i pored toga što on opisuje sekvencu akcija kakav je slučaj i sa dijagramom stanja, ASM dijagrami dodatno opisuju i definišu relacije između stanja.

Page 45: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Pravougaonik, nazvan state box, prikazan na sliici 2.21(a) odgovara stanju i kome se nalazi FSM. Svaki state box se izvršava za jedan taktni interval i sličan je čvoru u dijagramu stanja. Stanje kod FSM-a se koristi za obavljanje manipulacije nad podacima kao i obavljanje ulazno/izlaznih akcija. Svaki state box sadrži bezuslovne operacije za registarski prenos (Moore-ov tip) koje se obavljaju u tom stanju. Postoji samo jedan put koji ulazi u state box i jedan put koji izlazi iz state box-a. Van pravougaonika na gornjem levom uglu stoji simboličko ime stanja, dok na gornjem desnom uglu stoji oznaka binarno kodiranog stanja (ako je poznato). Na primer, na slici 2.21(b) prikazan je state box koji obavlja register transfer operaciju, Count=0. Simboličko ime dodeljeno tom stanju je s2, a binarna vrednost kodiranog stanja je 010. Kada je FSM u stanju s2, registar za memorisanje promenljive Count je resetovan na 0. Kada za specifični registar u state box-u operacija za registarski transfer nije specificirana, usvaja se da sadržaj tog registra ostaje nepromenjen. Registar menja svoju vrednost u stanju samo kada operacija registar transfeer upisuje u taj registra u tom state box-u. Romb oblik, nazvan decision box, prikazan na slici 2.21(c) odgovara bloku odluke. Svrha decision box-a je da testira da li dati uslov upisan u rombu je true ili false. Postoji jedan put koji ulazi u decision box, i dva puta koji napustaju romb. Putevi koji izlaze iz decision box-a se označavaju sa 1 i 0. Ako je uslov true, tada se grananje vrši po putu označan kao 1, inače se grananje vrši po putu označen kao 0. Sam po sebi decision box ne predstavlja stanje i ne preuzimaju se aktivnosti unutar bloka. Umesto toga, on se koristi da odredi naredno stanje na koje se prelazi. To je kao uslov koji se označava na potezima dijagrama stanja. Decision box se takođe koristi kod opisa FSM Mealy-evog tipa gde se akcije obavljaju u zavisnosti od uslova koji postoje na ulazu. U ovom slučaju, decision box se koristi u zajedništvu sa condition box (koga ćemo objasniti u tekstu koji sledi), radi obavljanja uslovnih akcija. Ovalno oblikovani condition box prikazan na slici 2.21(d) se takođe koristi za obavljanje registar transfer operacija na sličan način kao i state box. Ipak, nasuprot state box-u condition box se koristi za uslovne manipulaciije podacima kod FSM-ova Mealy-evog tipa. Aktuelno testiranje uslova se ne obavlja u okviru condition box-a nego u okviru decision box-a. Sam po sebi condition box nije ekvivalentan jednom stanju. On mora da se koristi zajedno sa decision box-om u okviru ASM bloka. ASM blok prikazan na slici 2.21(e) omogućava state box-u i nula ili većem broju decision i condition box-ova da budu zajednički grupisani kako bi formirali jedno stanje. Sve specificirane akcije unutar ASM bloka se izvršavaju u okviru jednog stanja ili jednog taktnog intervala. Na sličan način kao i state box ASM blok se markira imenom stanja na gornjem spoljnjem levom uglu i kodom stanja na gornjem desnom uglu. ASM blok mora da startuje jednim state box-om koji sadrži 0 ilil većim brojem bezuslovnih registar transfer operacija. Nakon state box-a, mogu da postoje nula ili veći broj decision i condition box-ova. ASM blok ima samo jednu ulaznu tačku, i jedan ili veći broj izlaznih puteva koji vode ka drugim stanjima. Na slici 2.21(f) prikazan je primer ASM bloka. Simboličko ime stanja je s0 i koristi binarni kod 00. Kada FSM uđe u ovo stanje, promenljiva sum se inicijalizira na 0 a signal Start se testira. Ako ne postoji signal Start tj. Start=0, FSM ponovo ulazi u ovo stanje sa narednim taktnim intervalom. Ako postoji Start signal, obavlja se operacija ulaz kojom se prihvata promenljiva n. Aktuelni upisi novih vrednosti u registre sum i n obavljaju se narednom aktivnom ivicom taktnog impulsa. Drugim rečima, registar sum se ne postavlja na 0 sve dok ne naiđe naredni taktni interval, a ulazna vrednost n nije dostupna sve dok ne naiđe naredni taktni interval.

Page 46: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Slika 2.21. Simboli koji se koriste u ASM dijagramima: (a) state box; (b) primer state box-a;

(c) decision box; (d) condition box; (e) ASM blok; (f) primer ASM bloka 2.4.1.1 Moore-ov ASM dijagram U ovom primeru mi ćemo izvesti ASM dijagram za FSM Moore-ovog tipa koji se odnosi na algoritam i stazu podataka prikazane na slici 2.3(a) i 2.3(b), a odnose se na problem IF-THEN-ELSE (Poglavlje Upravljačka jedinica). Linija 1 iz algoritma se smešta u state box koji se označava kao s_input, a kodira 000, kako je to prikazano na slici 2.22(a). Decision box se koristi za uslovni test iz linije 2 i mora biti postavljen unutar ASM bloka. Test zavisi od vrednosti koja se dobija u stanju s_input; zbog toga, on se ne može obaviti u istom stanju kao i linija 1 pa se dodeljuje stanju s_extra. U stanju s_extra ne postoji akcija koja se može obaviti bezuslovno u toku ovog taktnog intervala; s toga inicijalni state box je prazan. Ako smestimo obe linije 1 i 2 u isti ASM blok, kako je to prikazano na slici 2.22(b), tada tajming će biti nekorektan jer ponovo pokušavamo da čitamo iz registra vrednost koja još nije ažurirana. Kod FSM Moore-ovog tipa, akcije se obavljlaju bezuslovno; zbog toga, linije 3 i 5 u algoritmu su smeštene u dva izdvojena state box-a. Dva izlazna puta iz decision box-a su usmerena ka ova dva state box-a; jedan kada je uslov true a drugi kada je uslov false. Konačno, oba stanja,

Page 47: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

s_notequal i s_equal, prelaze u stanje s_output kako bi se obavila operacija izlaz. Ako se obavi operacija izlaz u stanjima s_notequal i s_equal, kako je to prikazano na slici 11(c), tada ponovo, će izlaz biti nekorektan pošto će se čitati iz registra B pre nego što je njegova vrednost ažurirana. Ako želimo da obavimo operaciju izlaz zajedno sa operacijom dodele vrednosti registru B u istom stanju, tada ono što možemo da obavimo je da generišemo na izlazu konstantnu vrednost koja će se upisati u registar B, a ne generisati izlaz iz registra B.

Slika 2.22. Moore-ov ASM dijagram za problem IF-THEN-ELSE (Poglavlje Upravljačka jedinica):

(a) korektni ASM dijagram; (b) pogrešan ASM blok; i (c) pogrešan izlaz 2.4.1.2 Mealy-ev ASM dijagram Izvedimo sada ASM dijagram koji se odnosi na algoritam i stazu podataka prikazane na slici 2.3(a) i 2.3(b), a odnose se na problem IF-THEN-ELSE (Poglavlje Upravljačka jedinica) za Mealy-ev FSM. Rezultujući ASM dijagram je prikazan na slici 2.23. Glavna razlika između ovog dijagrama i onog prikazanog na slici 2.22(a) sastoji se u uslovnim dodelama (linije 3 i 5 u algoritmu) koje se obavlljaju u okviru istog stanja kao u s_extra. Obe uslovne dodele su smeštene u dva izdvojena ovalna condition box-a. Putevi koji su usmereni ka njima su isti kao u prethodnom slučaju. Pošto su condition box-ovi smešteni u isti ASM blok, ASM blok ima sada samo jedan izlaz ka s_output kojim se obavlja operacija izlaz.

Page 48: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

Slika 2.23. Mealy-ev ASM dijagram za problem IF-THEN-ELSE (Poglavlje Upravljačka jedinica)

Prednost Mealy-eve mašine ne sastoji se samo u činjenici da ona koristi manji broj stanja, što rezultira jednostavnijoj upravljačkoj jedinici, nego i u tome što zahteva manji broj taktnih intervala za izvršenje algoritma. 2.4.2 Tabele akcije stanja Tabela akcija stanja je drugi način da se opiše ponašanje sekvencijalnog kola. Dok je ASM dijagram sličan dijagramu stanja, tabela akcije stanja je slilčna tabeli naredno-stanje i tabeli izlaza kada se one zajednički kombinuju. Tabela akcije stanja ima sledeće tri kolone: tekuće stanje, naredno stanje, i akcije staze podataka. Ulazi naredno stanje i akcije staze podataka mogu biti bezuslovne ili uslovne. Ipak, umesto numerisanja svih mogućih uslova i njihovog listanja u kolonama kao što je to izvedeno kod tabele naredno stanje, uslov se upisuje na početku ulaza naredno stanje uvek kada je to neophodno. Ako se ispred ulaza naredno stanje ne upiše uslov, tada je to bezuslovno naredno stanje (FSM prelazi u to stanje bezuslovno). Ako se naredno stanje kvalifikuje uslovom, tada će FSM preći u to stanje samo ako je uslov true. Grananje u dijagramu stanja odgovara narednom stanju sa uslovom, tako da ulaz koji odgovara tom narednom stanju ima pridruženi uslov. Akcije staza podataka su slične informaciji koja postoji u tabeli upravljačke reči. Na sličan način kao i naredna stanja, i akcije staze podataka mogu biti uslovne ili bezuslovne. Ako akcija nije označena sa uslovom koji je prethodno naglašen, tada je akcija bezuslovna. Inače, to je uslovna akcija, a akcija se obavlja samo ako je uslov true. Sve akcije staze podataka za Moore-ov FSM ne karakterišu se uslovom, pošto akcije Moore-ove staze podataka zavise samo od tekućeg stanja. Kod Mealy-eve FSM za neke od ulaza koji se odnose na akcije staze podataka postoje uslovne akcije. Na slici 2.24 prikazan je Moore-ov tip tabele akcije stanja za odgovarajući ASM dijagram iz primera za Moore-ov ASM sa slike 2.22. Iz tekućeg stanja s_input, FSM bezuslovno obavlja akciju INPUT A, a zatim bezuslovno prelazi u stanje s_extra. U stanju s_extra FSM može preći bilo u stanje s_notequal, ili s_equal, u zavisnosti od uslova (A=5). U ovom stanju se ne obavlja akcija. U stanju s_notequal obavlja se akcija B=15, a zatim FSM bezuslovno prelazi u stanje s_output.

Page 49: 2 Upravljačka jedinicaes.elfak.ni.ac.rs/es/Materijal/Pog.39-Upravljacka... · 2013-12-06 · 2.1.1 Projektovanje CU za problem brojanja od 1 do 10 Analiziraćemo sada kako se kreira

U stanju s_equal, obavlja se akcija B=8, FSM obavlja akciju OUTPUT B i zaustavlja se u tom stanju vreteći se stalno u istom stanju. Sve akcije u ovoj tabeli akcije stanja se obavljaju bezuslovno; zbog toga je to FSM Moore-ovog tipa. Kada FSM uđe u stanje, on uvek obavllja bezuslovnu akciju (akcije) dodeljene tom stanju, a nakon toga određuje koje će biti naredno stanje. Ovo je ekvivalentno ASM bloku gde se bezuslovni state box uvek upisuje pre nego što se donese bilo kakva odluka u decision box-u.

Slika 2.24. Jednostavna tabela akcije stanja za Moore-ov tip FSM-a

Na slici 2.25 prikazana je tabela akcije stanja za Mealy-ev tip koja odgovara ASM dijagramu iz primera sa slike 2.22. U tekućem stanju s_extra, izvršava se jedna od dve uslovne akcije, što zavisi od rezultata uslovnog testa. Nakon obavljanja akcije, FSM bezuslovno prelazi u stanje s_output.

Slika 2.25. Jednostavna tabela akcije stanja za Mealy-ev tip FSM-a