81
RTL Projektovanje

RTL Projektovanje

  • Upload
    leoma

  • View
    75

  • Download
    2

Embed Size (px)

DESCRIPTION

RTL Projektovanje. RTL Projektovanje. Projektovanje na registarskom (mikroarhitekturalnom) nivou apstrakcije Sistem se opisuje do nivoa registara i kombinacionih blokova S vi registri imaju zajednički takt (s inhroni sistemi ) RTL metodologija : Konverzija algoritma u RTL hardver - PowerPoint PPT Presentation

Citation preview

Page 1: RTL Projektovanje

RTL Projektovanje

Page 2: RTL Projektovanje

Arhitektura mikrosistema

RTL Projektovanje Projektovanje na registarskom (mikroarhitekturalnom) nivou apstrakcije

Sistem se opisuje do nivoa registara i kombinacionih blokova Svi registri imaju zajednički takt (sinhroni sistemi)

RTL metodologija: Konverzija algoritma u RTL hardver Do nivoa taktnih ciklusa opisuje ponašanje digitalnog sistema Opis se kreira u VHDL-u, simulira u VHDL simulatoru i sintetiše alatom za

sintezu

Registar

Kombinaciona logika

Registar

CLK CLK

Ulazni podaci

Takt

Izlazni podaci

Page 3: RTL Projektovanje

Arhitektura mikrosistema

Algoritamsize = 4;sum = 0;for i in (0 to size-1) do { sum = sum + a(i);}q = sum / 8;r = sum rem 8;if(r > 3) { q = q + 1;}outp = q;

Detaljan opis toka izvršenja nekog zadatka ili postupka rešavanja nekog problema u

vidu sekvence akcija ili koraka

Osnovne karakteristika algoritma:

Sekvencijalno izvršenje - ˝naredba po naredba˝ u strogo definisanom redosledu

Korišćenje promenljivih - ime promenljive ukazuje na simboličku adresu memorijske lokacije gde se smešta vrednost promenljive.

Prilagođen načinu rada računara

Pseudo-kod

Page 4: RTL Projektovanje

Arhitektura mikrosistema

Pseudo-kod u VHDLsize = 4;sum = 0;for i in (0 to size-1) do { sum = sum + a(i);}q = sum / 8;r = sum rem 8;if(r > 3) { q = q + 1;}outp = q;

. . .CONSTANT size : INTEGER := 4;SIGNAL outp : STD_LOGIC_VECTOR(7 DOWNTO 0);. . .PROCESS(a) VARIABLE sum,q,r : STD_LOGIC_VECTOR(7 DOWNTO 0);BEGIN sum := a(0); FOR i IN 1 TO size-1 LOOP sum := sum + a(i); END LOOP; q <= „000“ & sum(7 DOWNTO 3); r <= „00000“ & sum(2 DOWNTO 0); outp <= q + 1 WHEN (r > 3) ELSE q;END PROCESS;

Direktno prevođenje

Page 5: RTL Projektovanje

Arhitektura mikrosistema

Pseudo-kod u VHDL

sum0 := a(0);sum1 := sum0 + a(1);sum2 := sum1 + a(2);sum3 := sum2 + a(3);q <= „000“ & sum(7 DOWNTO 3);r <= „00000“ & sum(2 DOWNTO 0);outp <= q + 1 WHEN (r > 3) ELSE q;

Nakon razmotavanja FOR LOOP petlje

+a(0)a(1) +a(2)

+

a(3)

sum0sum1

sum2 & T

F

+1

& >3

sum3

q

r

outp

OK: Pojedine operacije se obavljaju u paraleli, što dovodi do ubrzanja rada

Promenljive postaju signali, a operacije hardverski kombinacioni blokovi

NOT OK: Rešenje nije univerzalno

Šta ako se size promeni s 4 na 20?

- umesto 3, biće potrebno 19 sabirača

Šta ako size nije konstanta, već promenljiva?

- Hardver ne može dinamički da se ˝širi˝ i ˝skuplja˝

Page 6: RTL Projektovanje

Arhitektura mikrosistema

Realizacija algoritma u hadveru Registri se koriste kao zamena za promenljive Hardver koji obavlja operacije sadržane u algoritmu

(kao npr. +, -, *, ...) realizuju se u vidu funkcionalnih jedinica (sabirač, oduzimač, množač ...).

Staza podataka (data path) = Registri + funkcionalne jedinice + mux i veze za povezivanje reg. i funkc. jed.

Hardver koji reguliše redosled izvršenja operacija u stazi podataka realizuje se u vidu upravljačke jedinice - konačni automat

Page 7: RTL Projektovanje

Arhitektura mikrosistema

Algoritam -> RTL hardver

Algoritam Hardver

a = a + b reg_A ← reg_A + reg_B

a

b

reg_A

reg_B

+ Sabirač

Promenljive Registri

Algoritamski korak

Naredba registarskog prenosa

Obavlja se u JEDNOM taktnom ciklusu

Page 8: RTL Projektovanje

Arhitektura mikrosistema

Naredba registarskog prenosa

rdest ← f(rsrc1, rsrc2, ..., rsrcn)

Izvorni registri

Odredišni registar

Funkcija - bilo koja funkcija koja se može realizovati u

hadveru u vidu kombinacione mreže

Izračunavanje funkcije Upis u rdest

Izvršava se u jednom taktnom ciklusu:

Na izlazima izvornih reg. dostupne su nove

vrednosti

Page 9: RTL Projektovanje

Arhitektura mikrosistema

Naredbe registarskog prenosa - primeri

r ← 1 U registar r se upisuje konstanta 1

r ← r U registar r se upisuje njegov tekući sadržaj. Sadržaj registra r, naravno, ostaje nepromenjen.

r ← r << 2 Sadržaj registra r se pomera za dve bitske pozicije ulevo, a zatim upisuje u isti registar.

r0 ← r1 Sadržaj registra r1 se upisuje (prenosi) u registar r0

n ← n + 1 Sadržaj registra n se uvećava za 1 i rezultat se upisuje u isti registar.

s ← a2 + b2 Zbir kvadrata sadržaja registara a i b se smešta u registar s.

Page 10: RTL Projektovanje

Arhitektura mikrosistema

Realizacija naredbe registarskog prenosa

nxD FF

d q

nxD FF

d q

+

clk

r2_reg

r1_reg

r1_next

TaddToq

r2_reg

r1_next

r1_reg

clk

2

3 5 7

1 3 5din

r1 ← r1 + r2

Page 11: RTL Projektovanje

Arhitektura mikrosistema

+

+1

n x DFF

d q

n x DFF

d q

r1_next1

r1_reg

clk

selekcija

r2_regdin

Šta ako više naredbi registarskog prenosa imaju isti odredišni registar ?

r1 ← 1r1 ← r1 + r2r1 ← r1 + 1r1 ← r1

Staza podataka

Bira narebu koja će se izvršiti

MU

X

Page 12: RTL Projektovanje

Arhitektura mikrosistema

Paralelno izvršenje operacija

x = A;y = B;y = x + y;y = y + 1;x = x + 1;

Izračunavanje koje treba realizovati u hardveru

ciklus 1: rx ← A;ciklus 2: ry ← B;ciklus 3: ry ← rx + ry;ciklus 4: ry ← ry + 1;ciklus 5: rx ← rx + 1;

Promenljive postaju registri, a programske naredbe postaju naredbe registarskog prenosa

ciklus 1: rx ← A; ry ← B;ciklus 2: ry ← rx + ry;ciklus 3: ry ← ry + 1; rx ← rx + 1;

U hardveru je dopušteno paralelno izvršenje međusobno nezavisnih operacija

Pralelizacija dovodi do ubrzanja rada

Page 13: RTL Projektovanje

Arhitektura mikrosistema

Staza podatakaciklus 1: rx ← A; ry ← B;ciklus 2: ry ← rx + ry;ciklus 3: ry ← ry + 1; rx ← rx + 1;

n x DFF

d q

n x DFF

d q+

+1

“1”

rx

ry

A

B 0

00

1

0

1

s0

s1

0110

s2

2

Ciklus Operacije s0 s1 s2 1. rx ← A

ry ← B ˝00˝ 0 x

2. ry ← rx + ry ˝10˝ 1 0 3. ry ← ry + 1

rx ← rx + 1 ˝01˝ 1 1

Staza podataka nije dovoljna !

Page 14: RTL Projektovanje

Arhitektura mikrosistema

Upravljačka jednica

n x DFF

d q

n x DFF

d q+

+1

“1”

rx

ry

AB

0

00

1

0

1

01

10

2

Upravljačka jedinica

s0

s1

s2

start

rdy

rx

ry

ciklus 1: rx ← A; ry ← B;ciklus 2: ry ← rx + ry;ciklus 3: ry ← ry + 1; rx ← rx + 1;

U svakom taktnom ciklusu bira operacije koje će se izvršiti u stazi podataka

rdy = ´0´s0 = ˝10˝;s1 = ´1´s2 = ´0´

rdy = ´0´s0 = ˝01˝;s1 = ´1´s2 = ´1´

rdy = ´0´s0 = ˝00˝;s1 = ´0´s2 = ´0´

C1

C2

C3

start

rdy = ´1´s0 = ˝00˝;s1 = ´0´s2 = ´0´

C0

0

1

Opisuje se u vidu konačnog automata

Page 15: RTL Projektovanje

Arhitektura mikrosistema

Blok dijagram RTL sistema

UPRAVLJACKA JEDINICA

STAZA PODATAKA

Komande – interni upravljacki signali

Interni statusni signali

Ulazi podataka

Upravljacki i statusni ulazi

Upravljacki i statusni izlazi

Izlazi podataka

DIGITALNI SISTEM

Sprovodi algoritam:U svakom taktnom ciklusu bira operacije koje će se izvršiti u stazi podataka.Realizuje se u vidu konačnog automata

Sadrži hardverske resurse:RegistreFunkcionalne jediniceMultipleksere i Veze

Page 16: RTL Projektovanje

Arhitektura mikrosistema

Primer složene staze podataka

Multiplekser

R1

Multiplekser

R2 R3

[abs/min] [abs/max/+/-]>> 1 >> 3

Ul1 Ul2

Izl

Multiplekser

Višefunkcionalne jedinice

Selekcioni signali i tatkni signal nisu prikazani

U svakom taktnom ciklusu može da obavi nekoliko od više različitih naredbi registarskog prenosa

Page 17: RTL Projektovanje

Arhitektura mikrosistema

ASMD dijagram (ASM + Data patah)regA ← ardy

IDLE

start 0

regB ← 0

1

regA ← regA >>1

regA ≠ 0

regA(0)

regB ← regB + 1

1

0

SHIFT

NE

DA

rdy

la, eardy

IDLE

start 0

lb,eb

1

ea

z

a0

eb

1

0

SHIFT

NE

DA

rdy

ASM dijagram: definiše rad upravljačke jedinicestart, z, a0 - ulazni signaliia, ea, eb, rdy - izlazni signali

ASMD dijagram:Sadrži naredbe registarskog prenosa - definiše rad celog sistema (upravljačka jedinica + staza podataka)

Page 18: RTL Projektovanje

Arhitektura mikrosistema

Odložena dodela

r1 ← r1 + r2y

S0

S1

S2

clk

S0 S1 S2stanje

y

2r2(r2_reg)

3 5

3 5r1

(r1_reg)

r1_nexty je signal koji je aktivan

za sve vreme dok je sistem u stanju S1

U toku stanja S1 izračunava se r1+r2, ali se upis u r1 vrši tek sledećom ivicom takta, onda

kada sistem prelazi u S2 !

y je neaktivan. Kao da piše: y=´0´r1 zadržava (memoriše) tekuću vrednost.Kao da piše: r1←r1

Page 19: RTL Projektovanje

Arhitektura mikrosistema

Pristupi projektovanju Dva pristupa rešavanju problema:

¨odozdo-naviše¨ (bottom-up) ¨odozgo-naniže¨ (top-down)

Page 20: RTL Projektovanje

Arhitektura mikrosistema

Projektovanje ¨odozdo-naviše¨ ¨Odozdo-naviše¨ (bottom-up)

Projektant rešava izdvojene detalje celokunog problema koje potom ugrađuje u konačno rešenje

Rešeni detalji se obično međusobo ne uklapaju idealno

Najveći deo ukupnog projektantskog vremena troši na uklapanje nezavisnih detalja, što često uključuje i prepravku već rešenih delova opšteg problema

Nije pogodno za projektovanje složenih digitalnih sistem

Interfejs

Komponenta

Page 21: RTL Projektovanje

Arhitektura mikrosistema

Projektovanje ¨odozgo-naniže¨ Projektant započinje rad na problemu razradom

globalnog plana sveobuhvatno sagledavanje problema, razrada strategije rešavanja problema, dekompozicija problema na potprobleme manjeg

obima definisanje odnosa (interfejsa) između potproblema projektant ne rešava odmah uočene potprobleme,

već ih tretira kao apstraktne sklopove (crne kutije) koje međusobno uklapa i povezuje

U nastavku Projektant razrađuje i rešava potprobleme Problem uklapanja ne postoji (interfejsi su definisani

u prvoj fazi)

Page 22: RTL Projektovanje

Arhitektura mikrosistema

Projektovanje ¨odozgo-naniže¨ - faze projektovanja Faze

Opis ponašanja (sistem koja se projektuje opisuje se na algoritamskom nivou, npr. u vidu ASMD dijagrama )

Razrada (podela sistema na dva upravljačku jedinicu i staza podataka )

Realizacija (realizacija hardvera sistema)

Page 23: RTL Projektovanje

Arhitektura mikrosistema

Opis ponašanja Najvažnija faza celokupnog procesa

projektovanja Sistem koja se projektuje opisuje se na

algoritamskom nivou, npr. u vidu ASMD dijagrama

Sistem se tretira kao crna kutija sa naznačenim ulazima i izlazima koja se ponaša na način koji je opisan algoritmom

Page 24: RTL Projektovanje

Arhitektura mikrosistema

Opis ponašanja - Interfes Interfejs (značenje reči) - mesto na kome se dva nezavisna

sistema susreću ili spajaju (ili sredstvo koje koriste) radi zajedničkog dejstva ili međusobne komunikacije.

Digitalni sistem u toku rad ineraguje sa svojim okruženjem (drugi digitalni sistemi, ne-digitalni uređaji, pa čak i čovek koji posredstvom odgovarajućih ulazno-izlaznih uređaja komunicira sa sistemom)

Za definisanje interfesa potrebno je znati koje informacije se razmenjuju između sistema i okruženja i na koji način sistem komunicira sa okruženjem

Specifikacija interfejsa digitalnog sistema uključuje specifikaciju ulaza i izlaza (tj. portova) proširenu pravilima za korišćenje sistema od strane korisnika

Page 25: RTL Projektovanje

Arhitektura mikrosistema

Opis ponašanja - Interfejs Dva tipa ulaznih i izlaznih informacija:

Upravljački i statusni signali (najčešće jednobitni signali) Upravljački ulazi - iniciraju naku aktivnost sistema Statusni ulazi - sistem dobija informaciju o trenutnom stanju

okruženja Upravljački izlazi - sistem inicira neku aktivnost u okruženju Statusni izlazi - obaveštava okruženje o svom trenutnom stanju Signali takta i resetovanja - prisutni kod svih sistema

Podaci Ulazni podaci - informacija koju

sistem treba da obradi Izlazni podaci - rezultat obrade

RTLSISTEM

...

...

...

...

statusni/upravljacki

ulazi

ulazipodataka

statusni/upravljacki

izlazi

izlazipodataka

rstclk

Page 26: RTL Projektovanje

Arhitektura mikrosistema

Interfes - Primer (Sekvencijalni delitelj) Pre aktiviranja upravljačkog ulaza start

(start=1) korisnik, treba da postavlja deljenik i delilac na ulazima podatak x i y. Korisnik ne sme da menja x i y za vreme dok traje izračunavanje (dok je rdy=0).

Trajanje signala start mora biti tačno jedan taktni period.

Korisnik je u obavezi da pre sledećeg aktiviranja signala start čeka barem dva taktna ciklusa nakon što je sistem završio prethodno izračunavanje

PASIVNO

10

Blokovi stanja, grananja i uslovnog izlaza koji

realizuju izracunavanje kolicnika. (ova stanja ne

postavljaju signal rdySEKVENCIJALNI

DELITELJ

start

x

rdy

qy

rdy

start

Ulazi podataka

Upravljački ulaz

Izlaz podataka

Statusni izlaz

Spada u specifiakciju

interfejsa

Page 27: RTL Projektovanje

Arhitektura mikrosistema

Interfes - Primer (Handshake interfejs ) Handshake - način koordinacije dva podsistema

putem dva signala: req (request - zahtev) i ack (acknowladge - potvrda)

PREDAJNIK PRIJEMNIK

req

ack

data

(1)

(2)

(3)

(4)

(1)req

data

ack

Page 28: RTL Projektovanje

Arhitektura mikrosistema

Interfes - Primer (Handshake interfejs )

PREDAJNIK PRIJEMNIK

req

ack

data

(1)

(2)

(3)

(4)

(1)req

data

ack

Predajnik Prijemnik

Rout <- datareq

ack

1

0

ack1

0

S1

S2. . .

. . .

req

Rin <- bus

ack

req

0

0

1

1

R1

R2

. . .

. . .

Page 29: RTL Projektovanje

Arhitektura mikrosistema

Konverzija algoritma u ASMD dijagram

B = 0;while(A≠0) do if(A0 = 1) then B = B + 1; end if; A = A >> 1;end while;

B <- 0A <- a

S0

start

A <- A >> 1

A=0

A(0)

B <- B + 1

Kraj

S1 S2

0

1

0

1

da

ne

Osnova za softversko rešenje datog problema

Osnova za hardversko

rešenje

?

Sekvencijalno izvršenje algoritamskih koraka

Ne sadrži informaciju o trajanju operacija

Dozvoljava paralelizam (sve operacije obuhvaćene jednim stanjem izvršavaju se istovremeno)

Nameće diskretizaciju vremena (jedno stanje, jedan taktni ciklus)

Page 30: RTL Projektovanje

Arhitektura mikrosistema

Paralelizacija sekvencijalnog kôda

a = b + cd = a – ef = b - g

...

...

a ← b + cd ← a – ef ← b - g

...

...

a ← b + c

d ← a – e

f ← b - g

...

...

a ← b + c

d ← a – ef ← b - g

...

...

Softverski blok naredbi - sekvencijalno izvršenje

ASMD - sve naredbe u bloku se izvršavaju paralelno.

maksimalan paralelizam - neispravno rešenje jer nisu uvažene zavisnosti između naredbi

ASMD - sekvencijalno izvršenje naredbi

Ispravno (očuvane su sve zavisnosti), ali sporo

ASMD - Optimalno rešenje

Nezavisne naredbe u paraleli

Page 31: RTL Projektovanje

Arhitektura mikrosistema

Konverzija algoritma u (sekvencijalni) ASMD dijagram Algoritam je teže predstaviti u obliku ASMD dijagrama

nego u obliku softverskog pseudo koda. => Opis ponašanja digitalnog sistema tipično počinje kreiranjem

softverskog algoritma, koji se potom konvertuje u ekvivalentni ASMD dijagram

Pravila za konverziju: Svaka naredba dodele iz softverskog algoritma prevodi

se u naredbu registarskog prenosa koja se smešta u zaseban blok stanja ASMD dijagrama .

Svaka naredba grananja (npr. if, while) iz softverskog algoritma se prevodi u prazan blok stanja posle kojeg sledi blok grananja s upisanom relacijom iz softverske naredbe .

Page 32: RTL Projektovanje

Arhitektura mikrosistema

Primer direktne konverzija algoritma u ASMD dijagram - sekvencijalni delitelj

r1 = x;r2 = 0;while (r1 >= y) { r2 = r2 + 1; r1 = r1 – y;}

PASIVNO

r1 <- xrdy

start10

r2 <- 0

r1 <- r1 - y

INIT

TEST

r2 <- r2 + 1

C1r1 >= y

1

0

C2

PASIVNO

r1 <- xrdy

start10

r2 <- 0

r1 <- r1 - y

INIT

TEST

r2 <- r2 + 1

C1

r1 >= y1

0

C2

PASIVNO

10

Blokovi stanja, grananja i uslovnog izlaza koji

realizuju izracunavanje kolicnika. (ova stanja ne

postavljaju signal rdySEKVENCIJALNI

DELITELJ

start

x

rdy

qy

rdy

start

Izlaz iz r2

Bez TEST, ispitivanje r1>=y koristilo bi staru vrednost r1 !!!

Page 33: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaOptimizacija (eliminacija stanja TEST)

PASIVNO

r1 <- xrdy

start10

r2 <- 0

r1 <- r1 - y

INIT

r2 <- r2 + 1

C1

r1 >= y1

0

C2

PASIVNO

r1 <- xrdy

start10

r2 <- 0

INIT

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

PASIVNO

r1 <- xrdy

start10

r2 <- 0

r1 <- r1 - y

INIT

TEST

r2 <- r2 + 1

C1r1 >= y

1

0

C2

PASIVNO

r1 <- xrdy

start10

r2 <- 0

r1 <- r1 - y

INIT

TEST

r2 <- r2 + 1

C1

r1 >= y1

0

C2

3+2q 4+3q

Page 34: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaOptimizacija (eliminacija stanja INIT)

PASIVNO

r1 <- xrdy

start10

r2 <- 0

r1 <- r1 - y

INIT

r2 <- r2 + 1

C1

r1 >= y1

0

C2

PASIVNO

r1 <- xrdy

start10

r2 <- 0

INIT

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

Algoritmaski ispravno.

Problem u korisničkom interfejsu: rezultat (u r2) je dostupan za očitavanje samo 1 taktni ciklus

PASIVNO

10

Blokovi stanja, grananja i uslovnog izlaza koji

realizuju izracunavanje kolicnika. (ova stanja ne

postavljaju signal rdySEKVENCIJALNI

DELITELJ

start

x

rdy

qy

rdy

start

Page 35: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaOptimizacija (eliminacija stanja INIT)

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

r3 <- r2

C3

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

r3 <- r2

C3

r1 >= y

r3 <- 0

0 1

N3

Uvodi se još jedan registar (r3) koji čuva rezultat

Šta ako je količnik 0 ?

2+3q

Page 36: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaOptimizacija (Paralelizacija petlje)

PASIVNO

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 - y

C1

r1 >= y

r3 <- 0

0 1

N3

r3 <- r2

C3

r2 <- r2 + 1

C2

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 - y

C1

r1 >= y

r3 <- 0

0 1

N3

r2 <- r2 + 1r3 <- r2

C23

Neuspešni pokušaji

Preuranjen upis u r3

Page 37: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaOptimizacija (Paralelizacija petlje)

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 – yr2 <- r2 + 1

r3 <- r2

C123

r1 >= y

r3 <- 0

0 1

N3

Stanje C123 se izvršava jedanput više, ali se zato u

r3 upisuje jadnput manje

2+q

Page 38: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaOptimizacija (Eliminacija stanja N3)

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 – yr2 <- r2 + 1

r3 <- r2

C123

r1 >= y

r3 <- 0

0 1

N3

PASIVNO

r1 <- xr2 <- 0

rdy

start10

start | r1 >= y1

0 r1 <- r1 – yr2 <- r2 + 1

r3 <- r2

C123

2+q

Page 39: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagrami Milijevog tipa

BRZINA=3

ZELENO

ZUTO

CRVENO

STOPBRZINA=1

BROJAC<-BROJAC+1

STOPBROJAC<-BROJAC+2

BROJAC /= 0

0

1

NAPUSTI

OSTANI

Vre Stanje Signali i promenljive

0.0 ZELENO STOP=0 BRZINA=3 BROJAČ=000 OSTANI = 0 NAPUSTI = 0

0.5 ŽUTO STOP=1 BRZINA=1 BROJAČ=000 OSTANI = 0 NAPUSTI = 1

1.0 CRVENO STOP=1 BRZINA=0 BROJAČ=001 OSTANI = 0 NAPUSTI = 0

1.5 ZELENO STOP=0 BRZINA=3 BROJAČ=011 OSTANI = 0 NAPUSTI = 0

2.0 ŽUTO STOP=1 BRZINA=1 BROJAČ=011 OSTANI = 1 NAPUSTI = 0

2.5 ŽUTO STOP=1 BRZINA=1 BROJAČ=100 OSTANI = 1 NAPUSTI = 0

3.0 ŽUTO STOP=1 BRZINA=1 BROJAČ=101 OSTANI = 1 NAPUSTI = 0

3.5 ŽUTO STOP=1 BRZINA=1 BROJAČ=110 OSTANI = 1 NAPUSTI = 0

4.0 ŽUTO STOP=1 BRZINA=1 BROJAČ=111 OSTANI = 1 NAPUSTI = 0

4.5 ŽUTO STOP=1 BRZINA=1 BROJAČ=000 OSTANI = 0 NAPUSTI = 1

5.0 CRVENO STOP=1 BRZINA=0 BROJAČ=001 OSTANI = 0 NAPUSTI = 0

5.5 ZELENO STOP=0 BRZINA=3 BROJAČ=011 OSTANI = 0 NAPUSTI = 0

6.0 ŽUTO STOP=1 BRZINA=1 BROJAČ=011 OSTANI = 1 NAPUSTI = 0

… … …

Uslovne operacije

Page 40: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaMilijeva verzija (Eliminacija stanja INIT)

PASIVNO

r1 <- xr2 <- 0

rdy

start10

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

r2 se resetuje u stanju PASIVO,

pod uslovom ako je start=1Umesto da uvedemo r3

PASIVNO

r1 <- xrdy

start10

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

r2 <- 0

Problem s preranim brisanjem r2 u stanju PASIVNO

Page 41: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaMilijeva verzija (Spajanje stanja C1 i C2)

PASIVNO

r1 <- xrdy

start10

r1 >= y1

0 r1 <- r1 – yr2 <- r2 + 1

C12

r2 <- 0

r2 se inkrementira jedanput više

PASIVNO

r1 <- xrdy

start10

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

r2 <- 0

Page 42: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaMilijeva verzija (Spajanje stanja C1 i C2)

PASIVNO

r1 <- xrdy

start10

r1 >= y1

0 r1 <- r1 - y

C

r2 <- 0

r2 <- r2 + 1

r1 >= y

0

1

PASIVNO

r1 <- xrdy

start10

r1 >= y1

0 r1 <- r1 – yr2 <- r2 + 1

C12

r2 <- 0

2+q

Page 43: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram sekvencijalnog deliteljaMilijeva verzija (Ranije postavljanje signala rdy)

PASIVNO

r1 <- xrdy

start10

r1 >= y1

0 r1 <- r1 - y

C

r2 <- 0

r2 <- r2 + 1

r1 >= y

0

1

PASIVNO

r1 <- xrdy

start10

r1 >= y1

0 r1 <- r1 - y

C

r2 <- 0

r2 <- r2 + 1

r1 >= y01

rdy

2+q takta i

2 registra

Page 44: RTL Projektovanje

Arhitektura mikrosistema

Razrada Cilj da polazni problem, prethodno precizno opisan ASM

dijagramom, podeliti na dva dela: staza podataka

registri za čuvanje vrednosti promenljivih; kombinaciona logika za obavljanje izračunavanja iz naredbi

registarskog prenosa i relacija. upravljačku jedinicu - sprovodi algoritam

UPRAVLJACKA JEDINICA

STAZA PODATAKA

Komande – interni upravljacki signali

Interni statusni signali

Ulazi podataka

Upravljacki i statusni ulazi

Upravljacki i statusni izlazi

Izlazi podataka

DIGITALNI SISTEM

Page 45: RTL Projektovanje

Arhitektura mikrosistema

Projektovanje staze podataka

PASIVNO

r1 <- xr2 <- 0

rdy

start10

start | r1 >= y1

0 r1 <- r1 – yr2 <- r2 + 1

r3 <- r2

C123

r1 ← x

r1 ← r1-y

r2 ← 0

r2 ← r2 + 1

r3 ← r2

r1 >= y

registar + oduzimač

brojač

registar

komparator

Page 46: RTL Projektovanje

Arhitektura mikrosistema

Projektovanje staze podataka(metodička staza podataka)

mux

01

r1n

(-)n

Kom

p.

n

nld

r2 r3n

inc clr ld

n

y x

q

Upravljacka jedinica

muxctrl

ldr1

r1geyldr3

clrr2incr2 Staza

podataka

start

rdy

clk

rst

rst

n n

r1 ← x

r1 ← r1-y

r2 ← 0

r2 ← r2 + 1

r3 ← r2

r1 >= y

registar + oduzimač

brojač

registar

komparator

r1 ← x (muxctrl=0, ldr1=1)

r1 ← r1-y (muxctrl=1, ldr1=1)

r2 ← 0 (clrr2=0)

r2 ← r2 + 1 (incr2=1)

r3 ← r2 (ldrr3=1)

r1 >= y (r1gey)

Page 47: RTL Projektovanje

Arhitektura mikrosistema

Projektovanje upravljačke jedinicePASIVNO

r1 <- xr2 <- 0

rdy

start10

start | r1 >= y1

0 r1 <- r1 – yr2 <- r2 + 1

r3 <- r2

C123

r1 ← x (muxctrl=0, ldr1=1)

r1 ← r1-y (muxctrl=1, ldr1=1)

r2 ← 0 (clrr2=1)

r2 ← r2 + 1 (incr2=1)

r3 ← r2 (ldrr3=1)

r1 >= y (r1gey)

PASIVNO

start10

start | r1gey1

0ldr1incr2ldr3muxctrl

C123

ldr1clrr2rdy

Page 48: RTL Projektovanje

Arhitektura mikrosistema

Upravljačka jedinica (strukturna varijanta ASM dijagrama)

PASIVNO

start10

start | r1gey1

0ldr1incr2ldr3muxctrl

C123

ldr1clrr2rdy

PASIVNOr1 ← xr2 ← 0

rdy

start

1

0

10

r1 ← r1 – yr2 ← r2 + 1

r3 ← r2

C123

r1 ≥ y

Page 49: RTL Projektovanje

Arhitektura mikrosistema

Staza podataka zasnovana na ALUsekvencijalna staza podataka

PASIVNO

r1 <- xrdy

start10

r2 <- 0

r1 <- r1 - y

INIT

r2 <- r2 + 1

C1

r1 >= y1

0

C2

PASIVNO

r1 <- xrdy

start10

r2 <- 0

INIT

r1 >= y1

0 r1 <- r1 - y

r2 <- r2 + 1

C1

C2

r1

ldr1

r2

ldr2

01

muxctrl

2

x

q

ALU

y

aluctrl

r1y

a

b

n

n

nn

n

n

2

4

c

d

Na osnovu sekvencijanog ASMD

Operacija aluctrl c d Propuštanje 000 a - ˝Sve nule˝ 001 0 - Oduzimanje 011 a-b - Inkrementiranje 010 a+1 - Veće-jednako 100 - a≥b

Manja hardverska složenost, ali po cenu dužeg vremena izvršenja

Page 50: RTL Projektovanje

Arhitektura mikrosistema

Staza podataka zasnovana na ALUsekvencijalna staza podataka

+1

-

0

a

baluctrl

c

d

0

1

2

3

d

others

01

00|11

01

10

a

0

b

10|11

00|010

1

+

sa

sb

cout

cin

scc

aluctrl

r1

ldr1

r2

ldr2

01

muxctrl

2

x

q

ALU

y

aluctrl

r1y

a

b

n

n

nn

n

n

2

3

c

d

Neoptimizovana ALU Optimizovana ALU

Operacija aluctrl sa sb cin

Propuštanje (c = a)

00 a 0 0

Sve nule (c = 0)

01 0 0 0

Oduzimanje (c = a – b)

10 a b 1

Inkrement (c = a + 1)

11 a 0 1

Page 51: RTL Projektovanje

Arhitektura mikrosistema

Realizacija Kreiranje VHDL opisa Simulacija Sinteza

Page 52: RTL Projektovanje

Arhitektura mikrosistema

Kreiranje VHDL opisa(organizacija projekta)

mux

01

r1n

(-)n

Kom

p.

n

nld

r2 r3n

inc clr ld

n

y x

q

Upravljacka jedinica

muxctrl

ldr1

r1geyldr3

clrr2incr2 Staza

podataka

start

rdy

clk

rst

rst

n n

delitelj.vhd datapath.vhd

control.vhd

Page 53: RTL Projektovanje

Arhitektura mikrosistema

Kreiranje VHDL opisa(datapath.vhd)

mux

01

r1n

(-)n

Kom

p.

n

nld

r2 r3n

inc clr ld

n

y x

q

Upravljacka jedinica

muxctrl

ldr1

r1geyldr3

clrr2incr2 Staza

podataka

start

rdy

clk

rst

rst

n n

Tri procesa

Microsoft Word Document

Page 54: RTL Projektovanje

Arhitektura mikrosistema

Kreiranje VHDL opisa(control.vhd)

mux

01

r1n

(-)n

Kom

p.

n

nld

r2 r3n

inc clr ld

n

y x

q

Upravljacka jedinica

muxctrl

ldr1

r1geyldr3

clrr2incr2 Staza

podataka

start

rdy

clk

rst

rst

n n

Microsoft Word Document

PASIVNOldr1crl2rdy

start

1

0

10

muxctrlldr1inc2ldr3

C123

r1y

Page 55: RTL Projektovanje

Arhitektura mikrosistema

Kreiranje VHDL opisa(delitelj.vhd)

PASIVNO

10

Blokovi stanja, grananja i uslovnog izlaza koji

realizuju izracunavanje kolicnika. (ova stanja ne

postavljaju signal rdySEKVENCIJALNI

DELITELJ

start

x

rdy

qy

rdy

start

Microsoft Word Document

Page 56: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinica Brojač jedinica (bit_counter) je kolo koje

određuje broj 1-ca u ulaznom binarnom vektoru

bit_counter

a b

clk

rst

start

rdy

n log2n

clk

a

start

b

rdy

A

B

IzracunaranjeRezultat dostupna

za ocitavanjeRezultat dostupna

za ocitavanje

Upis ulaznog vektora

0 1 . . .

Page 57: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaAlgoritam

B = 0; while(A≠0) do if(A0 = 1) then B = B + 1; end if; A = A >> 1; end while;

A, B => regA, regB

bit_counter

a b

clk

rst

start

rdy

n log2nregBregA

Page 58: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaInterfejs

regA ← ardy

IDLE

start0

regB ← 0

1

Izracunavanje

clk

a

start

b

rdy

A

B

IzracunaranjeRezultat dostupna

za ocitavanjeRezultat dostupna

za ocitavanje

0 1 . . .

Page 59: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaKonverzija algoritma u ASM

B = 0; while(A≠0) do if(A0 = 1) then B = B + 1; end if; A = A >> 1; end while;

regA ← ardy

IDLE

start0

regB ← 0

1

regA ≠ 0

TEST

regA(0)

regB ← regB + 1

INCR

regA ← regA >>1

1

0

SHIFT

NE

DA

Page 60: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaAnaliza ASMregA ← ardy

IDLE

start 0

regB ← 0

1

regA ≠ 0

TEST

regA(0)

regB ← regB + 1

INCR

regA ← regA >>1

1

0

SHIFT

NE

DA

CLK START Tekuce stanje

regA regB Sledecestanje

rdy

0 1 IDLE xxxx xx TEST 1

1 0 TEST 0101 00 INCR 0

2 0 INCR 0101 00 SHIFT 0

3 0 SHIFT 0101 01 TEST 0

4 0 TEST 0010 01 SHIFT 0

5 0 SHIFT 0010 01 TEST 0

6 0 TEST 0001 01 INCR 0

7 0 INCR 0001 01 SHIFT 0

8 0 SHIFT 0001 10 TEST 0

9 0 TEST 0000 10 IDLE 0

10 0 IDLE 0000 10 IDLE 1

11 0 IDLE xxxx 10 IDLE 1

Za a = 0101

Page 61: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaOptimizacja: stanje INCR pripojeno stanju TEST

regA ← ardy

IDLE

start 0

regB ← 0

1

regA ≠ 0

TEST

regA(0)

regB ← regB + 1

regA ← regA >>1

1

0

SHIFT

NE

DA

CLK START Tekuce stanje

regA regB Sledecestanje

rdy

0 1 IDLE xxxx xx TEST 1

1 0 TEST 0101 00 SHIFT 0

2 0 SHIFT 0101 01 TEST 0

3 0 TEST 0010 01 SHIFT 0

4 0 SHIFT 0010 01 TEST 0

5 0 TEST 0001 01 SHIFT 0

6 0 SHIFT 0001 10 TEST 0

7 0 TEST 0000 10 IDLE 0

8 0 IDLE 0000 10 IDLE 1

9 0 IDLE xxxx 10 IDLE 1

Page 62: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaOptimizacja: spajanje stanja TEST i SHIFT

regA ← ardy

IDLE

start 0

regB ← 0

1

regA ≠ 0

TEST

regA(0)

regB ← regB + 1

regA ← regA >>1

1

0

SHIFT

NE

DA

regA ← ardy

IDLE

start0

regB ← 0

1

regA ← regA >>1

regA ≠ 0

regA(0)

regB ← regB + 1

1

0

SHIFT

NE

DA

Page 63: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaOptimizacja: spajanje stanja TEST i SHIFT

regA ← ardy

IDLE

start0

regB ← 0

1

regA ← regA >>1

regA ≠ 0

regA(0)

regB ← regB + 1

1

0

SHIFT

NE

DA

CLK START Tekuce stanje

regA regB Sledecestanje

rdy

0 1 IDLE xxxx xx TEST 1

1 0 SHIFT 0101 00 SHIFT 0

2 0 SHIFT 0010 01 SHIFT 0

3 0 SHIFT 0001 01 SHIFT 0

4 0 SHIFT 0000 10 IDLE 0

5 0 IDLE 0000 10 IDLE 1

6 0 IDLE xxxx 10 IDLE 1

Page 64: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaOptimizacja: ranije postavljanje signala rdy

regA ← ardy

IDLE

start 0

regB ← 0

1

regA ← regA >>1

regA ≠ 0

regA(0)

regB ← regB + 1

1

0

SHIFT

NE

DA

rdy

CLK START Tekuce stanje

regA regB Sledecestanje

rdy

0 1 IDLE xxxx xx TEST 1

1 0 SHIFT 0101 00 SHIFT 0

2 0 SHIFT 0010 01 SHIFT 0

3 0 SHIFT 0001 01 SHIFT 0

4 0 SHIFT 0000 10 IDLE 1

5 0 IDLE 0000 10 IDLE 1

Page 65: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaRazrada

regA ← ardy

IDLE

start0

regB ← 0

1

regA ← regA >>1

regA ≠ 0

regA(0)

regB ← regB + 1

1

0

SHIFT

NE

DA

rdy

regA ← a

regA ← regA >> 1

regA ≠ 0

regB ← 0

regB ← regB +1

Pomerački registar sa paralelnim upisom

n-ulazno ILI kolo

Brojač sa sinhronim resetom

Page 66: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaRazrada - staza podataka

shift(regA)

ldena

q

din

n

counter(regB)

q

dinldena

log2n

0

log2n

Upravljačka jedinica

n

laea

lbeb

z

a0Staza podataka

b

start

rdy

a

regA ← a (la=1,ea=1)

regA ← regA >> 1 (la=0, ea=1)

regA ≠ 0 (signal z)

regB ← 0 (lb=eb=1)

regB ← regB +1 (lb=0, eb=1)

Page 67: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaRazrada - ASM dijagram upravljačke jedinice

regA ← ardy

IDLE

start 0

regB ← 0

1

regA ← regA >>1

regA ≠ 0

regA(0)

regB ← regB + 1

1

0

SHIFT

NE

DA

rdy

regA ← a (la=1,ea=1)

regA ← regA >> 1 (la=0, ea=1)

regA ≠ 0 (signal z)

regB ← 0 (lb=eb=1)

regB ← regB +1 (lb=0, eb=1)

la, eardy

IDLE

start0

lb,eb

1

ea

z

a0

eb

1

0

SHIFT

NE

DA

rdy

Page 68: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaRealizacija - VHDL opis staze podataka

shift(regA)

ldena

q

din

n

counter(regB)

q

dinldena

log2n

0

log2n

Upravljačka jedinica

n

laea

lbeb

z

a0Staza podataka

b

start

rdy

a

procesi

ENTITY datapath IS PORT(a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); b : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); la,ea,lb,eb : IN STD_LOGIC; a0,z : OUT STD_LOGIC; clk : IN STD_LOGIC; rst : IN STD_LOGIC);END datapath;

Microsoft Word Document

Page 69: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaRealizacija - VHDL opis upravljačke jedinice

shift(regA)

ldena

q

din

n

counter(regB)

q

dinldena

log2n

0

log2n

Upravljačka jedinica

n

laea

lbeb

z

a0Staza podataka

b

start

rdy

a

ENTITY control IS PORT(start: IN STD_LOGIC; rdy : OUT STD_LOGIC; z, a0 : IN STD_LOGIC; la,ea,lb,eb : OUT STD_LOGIC; clk : IN STD_LOGIC; rst : IN STD_LOGIC);END control;

Microsoft Word Document

Page 70: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaRealizacija - VHDL opis sek. brojača jedinica

bit_counter

a b

clk

rst

start

rdy

n log2n

ENTITY bit_counter IS PORT(a : IN STD_LOGIC_VECTOR(7 DOWNTO 0); b : OUT STD_LOGIC_VECTOR(3 DOWNTO 0); start : IN STD_LOGIC; rdy : OUT STD_LOGIC; clk : IN STD_LOGIC; rst : IN STD_LOGIC);END bit_counter;

Microsoft Word Document

Page 71: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni brojač jedinicaSimulacija

Page 72: RTL Projektovanje

Arhitektura mikrosistema

Sekvencijalni delitelj (ubrzani algoritam)

A B Q140 : 9 = 15 9---- 50- 9---- 5 <- R

A B Q10001100 : 1001 = 1111-1001----- 10001 -1001 ----- 10000 -1001 ----- 01110 -1001 ------ 0101 <- R

R A Q

00000000 10001100 00000000

0) 00000001 00011000 00000000

1) 00000010 00110000 00000000

2) 00000100 01100000 00000000

3) 00001000 11000000 00000000

4) 00010001 10000000 00000000 -00001001 <- B -------- 00001000 10000000 00000001

5) 00010001 00000000 -00001001 <- B -------- 00001000 00000000 00000011

6) 00010000 00000000 -00001001 <- B -------- 00000111 00000000 00000111

7) 00001110 00000000 -00001001 <- B -------- 00000101 00000000 00001111

“Ručno” deljenje

Pomeranje/oduzimanje

Traje n taktnih ciklusa

Page 73: RTL Projektovanje

Arhitektura mikrosistema

Algoritam

R = 0; for C = 0 to N-1 do (R,A) = (R,A) << 1; if(R ≥ B) then QC = 1; R = R - B; else QC = 0; end if; end for;

R = 0; for C = 0 to N-1 do (R,A) = (R,A) << 1; if(R ≥ B) then Q = (Q << 1)1; R = R - B; else Q = (Q << 1)0; end if; end for;

R = 0; C = N-1; do (R,A) = (R,A) << 1; if(R ≥ B) then Q = (Q << 1)1; R = R - B; else Q = (Q << 1)0; end if; C = C – 1; while(C≥0);

(a) (b) (c)

Generiše bitove količnika, Qc, počev od bita najmanje težine

Prikupljanje bitova količnika u pomeračkom registru

Zamena for petlje do-while petljom

Serijski upis jedinice

Serijski upis nule

Page 74: RTL Projektovanje

Arhitektura mikrosistema

Funkcionalni ASM dijagram

PASIVNO

rdyB ← bA ← aC ← n-1

start

R <- 0

(R,A) ← (R,A) << 1

C ← C - 1

R ≥ B

Q ← (Q << 1)0Q ← (Q << 1)1

R ← R - B

C ≥ 0

SHRA

SHQ1 SHQ2

SUBB

PASIVNO

rdyB ← bA ← aC ← n-1

start

R <- 0

(R,A) ← (R,A) << 1

R ≥ B

Q ← (Q << 1)0Q ← (Q << 1)1

R ← R - B

C ≥ 0

SHRA

TEST1

SHQ1 SHQ2

SUBB

1 0

0 1

1

0

C ← C - 1

TEST2

DECR

0 1

1 0

1

0

PASIVNO

rdyB ← bA ← aC ← n-1

start

R <- 0

(R,A) ← (R,A) << 1

C ← C - 1

R ≥ B

Q ← (Q << 1)0Q ← (Q << 1)1

R ← R - B

C > 0

SHRA

1 0

0 1

1

0

DECR

DECR

Page 75: RTL Projektovanje

Arhitektura mikrosistema

Razrada - komponente

B ← b

A ← a

C ← n-1

R ← 0

(R,A) ← (R,A) << 1

Q ← (Q << 1)1

Q ← (Q << 1)0

R ← R - B

C ← C - 1

Registri:

B - prihvatni registar

A - pomerački registar sa paralelnim upisom

C - brojač osnove n sa paralelnim upisom

R - pomerački registar sa paralelnim upisom

Q - pomerački registar

Page 76: RTL Projektovanje

Arhitektura mikrosistema

Razrada - funkcionalne jedinice

R ≤ B

Umesto komparatora, koristimo izlazni prenos sabirača

R ← R - B

(R i B su označeni brojevi u dvojičnom komplementu)

+

R B

cin

R - B

1

+

R B

cin

R - B

1cout

1 za R ≤ B0 za R > B

C > 0

Isto što i C ≠ 0

nC

C > 0

Page 77: RTL Projektovanje

Arhitektura mikrosistema

Razrada - staza podataka

shift(reg R)

si

ldena

q

dinlr

er

mux

n

0

rsel 01

shift(reg A)

si

ldena

q

din

0

n

a

reg.(reg B)ena

q

din

qn-1laea

eb

n

b

(+) cincout

shift(reg Q) siena

q

n

r

1

n

q

control

cout

start

rdy

datapath

counter(C)

q

dinldena

log2n

n-1

lcecz

eq

qr

regB

regB_not

sum qc

dr

Page 78: RTL Projektovanje

Arhitektura mikrosistema

Realizacija naredbi registarskog prenosaB ← b eb = 1

A ← a ea = 0, la = 1

C ← n-1 lc = 1, ec = 0

R ← 0 rsel = 0, lr = 1, er = 0

(R,A) ← (R,A) << 1 er = 1, lr = 0, ea = 1, la = 0

Q ← Q << 1 eq = 1

R ← R - B rsel = 1, er = 0, lr = 1

C ← C - 1 lc = 0, ec = 1

Page 79: RTL Projektovanje

Arhitektura mikrosistema

ASM dijagram upravljačke jedinicePASIVNO

rdyeb; la; ea; lc; ec

start

lr; er

er; ea

ec

cout

eqeq; rsel; lr; er

z

SHRA

INCR

1 0

0 1

1

0

PASIVNO

rdyB ← bA ← aC ← n-1

start

R <- 0

(R,A) ← (R,A) << 1

C ← C - 1

R ≥ B

Q ← (Q << 1)0Q ← (Q << 1)1

R ← R - B

C ≥ 0

SHRA

SHQ1 SHQ2

SUBB

PASIVNO

rdyB ← bA ← aC ← n-1

start

R <- 0

(R,A) ← (R,A) << 1

R ≥ B

Q ← (Q << 1)0Q ← (Q << 1)1

R ← R - B

C ≥ 0

SHRA

TEST1

SHQ1 SHQ2

SUBB

1 0

0 1

1

0

C ← C - 1

TEST2

DECR

0 1

1 0

1

0

PASIVNO

rdyB ← bA ← aC ← n-1

start

R <- 0

(R,A) ← (R,A) << 1

C ← C - 1

R ≥ B

Q ← (Q << 1)0Q ← (Q << 1)1

R ← R - B

C > 0

SHRA

1 0

0 1

1

0

DECR

DECR

Page 80: RTL Projektovanje

Arhitektura mikrosistema

Realizacija - komponente COMPONENT shift IS GENERIC (N : INTEGER); PORT (si,ld,ena,rst,clk : IN STD_LOGIC; din : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)); END COMPONENT;COMPONENT counter IS GENERIC (N : INTEGER); PORT (ld,ena,rst,clk : IN STD_LOGIC; din : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); q : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0)); END COMPONENT;COMPONENT adder IS GENERIC (N : INTEGER); PORT (cin : IN STD_LOGIC; x,y : IN STD_LOGIC_VECTOR(N-1 DOWNTO 0); s : OUT STD_LOGIC_VECTOR(N-1 DOWNTO 0); cout: OUT STD_LOGIC); END COMPONENT;

Page 81: RTL Projektovanje

Arhitektura mikrosistema

Realizacija - staza podataka i upravljačka jedinica

Microsoft Word Document