48
Osnovne jezičke konstrukcije

Osnovne je zičke konstrukcije

  • Upload
    liliha

  • View
    40

  • Download
    0

Embed Size (px)

DESCRIPTION

Osnovne je zičke konstrukcije. Osnovne jezičke konstrukcije u VHDL-u. Leksički elementi (identifikatori, komentari, rezervisane reči, brojevi, karakteri, stringovi) Objekti (signali, varijable, konstante) - PowerPoint PPT Presentation

Citation preview

Page 1: Osnovne je zičke konstrukcije

Osnovne jezičke konstrukcije

Arhitektura mikrosistema

Osnovne jezičke konstrukcije u VHDL-u Leksički elementi (identifikatori komentari

rezervisane reči brojevi karakteri stringovi) Objekti (signali varijable konstante) Tipovi podataka (integer boolean bit

bit_vector std_logic std_logic_vector signed unsigned)

Arhitektura mikrosistema

Identifikatori Imena objekata u VHDL-u (signala promenljivih entiteta

arhitektura itd) Pravila za pisanje identifikatora

Može sadržati samo slova decimalne cifre i crtu za podvlačenje Prvi karakter mora biti slovo Poslednji karakter ne može biti crta za podvlačenje Dve uzastopne crte za podvlačenje nisu dozvoljene

Ispravno A11 sledece_stanje NextState addr_en

Neispravno x8 _x3 5linija a10_ ab__cd

Arhitektura mikrosistema

Komentari Komentar počinje sa dve crtice ˝--˝ posle

kojih sledi tekst komentara Komentari se koriste radi dokumentacije i

nemaju uticaja na procesiranje kocircd (Prilikom kompajliranja celokupan tekst počev od ˝--˝ pa do kraja tekuće linije se ignoriše)

Arhitektura mikrosistema

Rezervisane (službene) reči VHDL-a Imaju posebno značenje u VHDL-u i ne mogu se

koristiti kao identifikatori abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto else elsif end entity exit file for function generate generic guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process pure range record register reject rem report return rol ror select severity shared signal sla sll sra srl subtype then to transport type unaffected units until use variable wait when while with xnor xor

Arhitektura mikrosistema

Brojevi Celi

0 123456 i 98E7 (= 98107) Realni

00 12345 ili 682E6 (= 682106) Dozvoljeno je korišćenje crte za podvlačenje

12_3456 isto što i 123456

Arhitektura mikrosistema

Karakteri i stringovi Karakteri se pišu pod jednostukim

navodnicima A alsquo 7

Stringovi se pišu pod dvostrukim navodnicima ˝Alo˝ ˝1000111˝

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 2: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Osnovne jezičke konstrukcije u VHDL-u Leksički elementi (identifikatori komentari

rezervisane reči brojevi karakteri stringovi) Objekti (signali varijable konstante) Tipovi podataka (integer boolean bit

bit_vector std_logic std_logic_vector signed unsigned)

Arhitektura mikrosistema

Identifikatori Imena objekata u VHDL-u (signala promenljivih entiteta

arhitektura itd) Pravila za pisanje identifikatora

Može sadržati samo slova decimalne cifre i crtu za podvlačenje Prvi karakter mora biti slovo Poslednji karakter ne može biti crta za podvlačenje Dve uzastopne crte za podvlačenje nisu dozvoljene

Ispravno A11 sledece_stanje NextState addr_en

Neispravno x8 _x3 5linija a10_ ab__cd

Arhitektura mikrosistema

Komentari Komentar počinje sa dve crtice ˝--˝ posle

kojih sledi tekst komentara Komentari se koriste radi dokumentacije i

nemaju uticaja na procesiranje kocircd (Prilikom kompajliranja celokupan tekst počev od ˝--˝ pa do kraja tekuće linije se ignoriše)

Arhitektura mikrosistema

Rezervisane (službene) reči VHDL-a Imaju posebno značenje u VHDL-u i ne mogu se

koristiti kao identifikatori abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto else elsif end entity exit file for function generate generic guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process pure range record register reject rem report return rol ror select severity shared signal sla sll sra srl subtype then to transport type unaffected units until use variable wait when while with xnor xor

Arhitektura mikrosistema

Brojevi Celi

0 123456 i 98E7 (= 98107) Realni

00 12345 ili 682E6 (= 682106) Dozvoljeno je korišćenje crte za podvlačenje

12_3456 isto što i 123456

Arhitektura mikrosistema

Karakteri i stringovi Karakteri se pišu pod jednostukim

navodnicima A alsquo 7

Stringovi se pišu pod dvostrukim navodnicima ˝Alo˝ ˝1000111˝

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 3: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Identifikatori Imena objekata u VHDL-u (signala promenljivih entiteta

arhitektura itd) Pravila za pisanje identifikatora

Može sadržati samo slova decimalne cifre i crtu za podvlačenje Prvi karakter mora biti slovo Poslednji karakter ne može biti crta za podvlačenje Dve uzastopne crte za podvlačenje nisu dozvoljene

Ispravno A11 sledece_stanje NextState addr_en

Neispravno x8 _x3 5linija a10_ ab__cd

Arhitektura mikrosistema

Komentari Komentar počinje sa dve crtice ˝--˝ posle

kojih sledi tekst komentara Komentari se koriste radi dokumentacije i

nemaju uticaja na procesiranje kocircd (Prilikom kompajliranja celokupan tekst počev od ˝--˝ pa do kraja tekuće linije se ignoriše)

Arhitektura mikrosistema

Rezervisane (službene) reči VHDL-a Imaju posebno značenje u VHDL-u i ne mogu se

koristiti kao identifikatori abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto else elsif end entity exit file for function generate generic guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process pure range record register reject rem report return rol ror select severity shared signal sla sll sra srl subtype then to transport type unaffected units until use variable wait when while with xnor xor

Arhitektura mikrosistema

Brojevi Celi

0 123456 i 98E7 (= 98107) Realni

00 12345 ili 682E6 (= 682106) Dozvoljeno je korišćenje crte za podvlačenje

12_3456 isto što i 123456

Arhitektura mikrosistema

Karakteri i stringovi Karakteri se pišu pod jednostukim

navodnicima A alsquo 7

Stringovi se pišu pod dvostrukim navodnicima ˝Alo˝ ˝1000111˝

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 4: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Komentari Komentar počinje sa dve crtice ˝--˝ posle

kojih sledi tekst komentara Komentari se koriste radi dokumentacije i

nemaju uticaja na procesiranje kocircd (Prilikom kompajliranja celokupan tekst počev od ˝--˝ pa do kraja tekuće linije se ignoriše)

Arhitektura mikrosistema

Rezervisane (službene) reči VHDL-a Imaju posebno značenje u VHDL-u i ne mogu se

koristiti kao identifikatori abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto else elsif end entity exit file for function generate generic guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process pure range record register reject rem report return rol ror select severity shared signal sla sll sra srl subtype then to transport type unaffected units until use variable wait when while with xnor xor

Arhitektura mikrosistema

Brojevi Celi

0 123456 i 98E7 (= 98107) Realni

00 12345 ili 682E6 (= 682106) Dozvoljeno je korišćenje crte za podvlačenje

12_3456 isto što i 123456

Arhitektura mikrosistema

Karakteri i stringovi Karakteri se pišu pod jednostukim

navodnicima A alsquo 7

Stringovi se pišu pod dvostrukim navodnicima ˝Alo˝ ˝1000111˝

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 5: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Rezervisane (službene) reči VHDL-a Imaju posebno značenje u VHDL-u i ne mogu se

koristiti kao identifikatori abs access after alias all and architecture array assert attribute begin block body buffer bus case component configuration constant disconnect downto else elsif end entity exit file for function generate generic guarded if impure in inertial inout is label library linkage literal loop map mod nand new next nor not null of on open or others out package port postponed procedure process pure range record register reject rem report return rol ror select severity shared signal sla sll sra srl subtype then to transport type unaffected units until use variable wait when while with xnor xor

Arhitektura mikrosistema

Brojevi Celi

0 123456 i 98E7 (= 98107) Realni

00 12345 ili 682E6 (= 682106) Dozvoljeno je korišćenje crte za podvlačenje

12_3456 isto što i 123456

Arhitektura mikrosistema

Karakteri i stringovi Karakteri se pišu pod jednostukim

navodnicima A alsquo 7

Stringovi se pišu pod dvostrukim navodnicima ˝Alo˝ ˝1000111˝

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 6: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Brojevi Celi

0 123456 i 98E7 (= 98107) Realni

00 12345 ili 682E6 (= 682106) Dozvoljeno je korišćenje crte za podvlačenje

12_3456 isto što i 123456

Arhitektura mikrosistema

Karakteri i stringovi Karakteri se pišu pod jednostukim

navodnicima A alsquo 7

Stringovi se pišu pod dvostrukim navodnicima ˝Alo˝ ˝1000111˝

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 7: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Karakteri i stringovi Karakteri se pišu pod jednostukim

navodnicima A alsquo 7

Stringovi se pišu pod dvostrukim navodnicima ˝Alo˝ ˝1000111˝

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 8: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Objekti Služe za reprezentaciju i čuvanje vrednosti

podataka Signali Varijable Konstante

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 9: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Signali Za povezivanje komponenti i razmenu podataka između

entiteta (kao električne veze u fizičkom kolu) Deklaracija signala (u deklarativnom delu arhitekture)

SIGNAL ime_signala ime_signala TIP_PODATAKA Pr Deklaracija tri signala tipa std_logic

SIGNAL x y z STD_LOGIC

Inicijalna (početna) vrednost signala SIGNAL x y z STD_LOGIC = acute0acute Dozvoljeno u simulaciji ali ne i u sintezi

Dodela vrednosti signalu ime_signala lt= izraz

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 10: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Varijable Za čuvanje lokalnih podataka u procesu ili

proceduri (odgovaraju promenljivama iz programskih jezika)

Deklaracija (u deklarativnoj sekciji procesa) VARIABLE ime_var ime_var TIP_PODATAKA

Dodela vrednosti varijabli ime_varijable = izraz

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 11: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Konstante Sadrži nepromenljivu vrednost Može se deklarisati u entitetu arhitekturi ili

paketu CONSTANT ime_konstante TIP_PODATAKA = izraz

Npr CONSTANT M INTEGER = 32 CONSTANT N INTEGER = M4

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 12: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Upotreba konstanti

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGICBEGIN p = acute0acute FOR i IN 77 DOWNTO 0 LOOP P = p AND a(i) END LOOP

ARCHITECTURE arch OF parity IS SIGNAL x STD_LOGIC CONSTANT N INTEGER = 7CONSTANT N INTEGER = 7BEGIN p = acute0acute FOR i IN NN DOWNTO 0 LOOP P = p AND a(i) END LOOP

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 13: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Tipovi podataka Tip podataka definiše skup vrednosti i skup operacija

koje se mogu primeniti nad podacima datog tipa VHDL je strogo tipiziran jezik operacije su legalne

samo ako su tipovi operanada usklađeni Podela tipova podataka

Predefinisani ugrađeni u jeziku (bit bit_vector boolean integer )

Standardni dostupni kroz standardizovane pakete (std_logic std_logic_vector unsigned signed )

Korisnički - uvodi ih projektant

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 14: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

BIT i BIT_VECTOR Definiše dvonivovsku logiku Dozvoljene vrednosti ΄0΄ i ΄1΄ BIT_VECTOR je vektorska varijanta tipa BIT definiše niz

(vektor) bitova

SIGNAL x BIT -- deklariše x kao jednobitni signal tipa BITSIGNAL y BIT_VECTOR(3 DOWNTO 0)-- y je 4-bitni vektor Krajnji levi bit je bit najveće težine (MSB)SIGNAL w BIT_VECTOR(0 TO 7)-- w je 8-bitni vektor Krajnji desni bit je bit najveće težine (MSB)SIGNAL z BIT = acute1acute-- z je jednobitni signal inicijalne vrednost acute1acute

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 15: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Skalari i vektori Skalar

SIGNAL x BIT Vektor

SIGNAL y BIT_VECTOR(3 DOWNTO 0)

SIGNAL w BIT_VECTOR(0 TO 7)

Definiše dužinu vektora opseg i poredak indeksa

x

3 2 1 0y

3210 4 5 6 7w

MSB LSB

MSBLSB

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 16: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Skalari i vektori

x lt= ΄1΄ jednobitnom signalu x dodeljuje se vrednost lsquo1΄ koriste se jednostruki znaci navoda ΄ ΄

y lt=˝0111˝ 4-bitnom signalu dodeljuje se vrednost ˝0111˝ (MSB=΄0΄ binarna vrednost

7) Vektori se pišu pod dvostrukim navodnicima (˝ ˝) Elementi vektora y(3) y(2) y(1) y(0) (koriste se male zagrade) x lt= y(2) -- skalaru x dodelje element vektora y sa indeksom 2

w lt=˝01110001˝ 8-bitnom signalu w dodeljuje vrednost ˝01110001˝ (MSB=΄1΄ binarna

vredost 142)

SIGNAL x BIT SIGNAL y BIT_VECTOR(3 DOWNTO 0) SIGNAL w BIT_VECTOR(0 TO 7)

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 17: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Operatori Operatori (kao + -

AND NOT) pridruženi su definiciji tipa podataka i mogu se primenjivati samo na objekte tog tipa

Operatori u VHDL-u

Operacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Logičke operacije NOT a negacija boolean bit

bit_vector boolean bit

bit_vector a AND b I a OR b ILI a XOR b isključivo ILI a NOR b NILI a NAND b NI a XNOR b isključivo NILI

boolean bit bit_vector

isti kao a isti kao a

Aritmetičke operacije a + b sabiranje a - b oduzimanje a b množenje a b deljenje a b stepenovanje a MOD b moduo a REM b ostatak

integer integer integer

ABS a apsolutna vrednost - a negacija

integer

integer

Operacije poređenja a = b jednako a = b različito

bilo koji isti kao a boolean

a lt b manje a gt b veće a lt= b manje ili jednako a gt= b veće ili jednako

skalar ili 1-D polje

isti kako a boolean

Operacije pomeranja a sll b logičko pomeranje ulevo a srl b logičko pomeranje udesno a sla b aritmetičko pomeranje ulevo a sra b aritmetičko pomeranje udesno a rol b rotacija na levo a ror b rotacija na desno

bit_vector integer bit_vector

Konkatenacija a amp b konkatenacija (nadovezivanje) 1D polje element 1D polje element 1D polje

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 18: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Logički operatori Za logičke operacije

NOT AND OR NAND NOR XOR XNOR

Definisani za sledeće predefinisane tipove podataka BIT BOOLEAN STD_LOGIC

i odgovarajuća 1D polja BIT_VECTOR STD_LOGIC_VECTOR i

Operator NOT je unarni i ima viši prioritet od svih ostalih operatora

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 19: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad skalarima

SIGNAL a b c y STD_LOGIC y lt= NOT a AND b -- (a΄b) y lt= NOT (a AND b) -- (ab)΄y lt= a NAND b -- (ab)΄

Operatori NAND i NOR nisu asocijativni Zbog toga sledeća sintaksa nije ispravnay lt= a NAND b NAND c

Neophodne su zagradey lt= (a NAND b) NAND c

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 20: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Logički operatoriLogičke operacije nad vektorima

Izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora

Vektori moraju biti iste dužineSIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0)

a lt= ˝00111010˝

b lt= ˝10000011˝

c lt= NOT a -- c dobija vrednost ˝11000101˝

c lt= a OR b -- c dobija vrednost ˝10111011˝

c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 21: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Aritmetički operatori

+ Sabiranje

ndash Oduzimanje

Množenje

Deljenje

Stepenovanje

MOD Deljenje po modulu

REM Ostatak deljenja

ABS Apsolutna vrednost

U kodu za sintezu Sabiranje oduzimanje i

množenje ndash bez ograničenja Deljenje ndash samo ako je

delilac stepen dvojke (2k) Stepenovanje ndash samo za

definisanje vrednosti konstante

MOD REM i ABS ndash nisu podržani u sintezi

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 22: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Operatori poređenja

= Jednako

= Različito

lt Manje

gt Veće

lt= Manje ili jednako

gt= Veće ili jednako

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 23: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Prioriteti operatora

Prioritet Operator

Najviši ABS NOT

darr

MOD REM

- (negacija)

amp + -

sll srl sla sra rol ror

= = lt lt= gt gt=

Najniži and or nand nor xor xnor

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 24: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Prioriteti operatora a + b gt c OR a lt d

1 22 3

Isto što i((a + b) gt c) OR (a lt d)

a + b + c + d isto što i

(((a + b) + c) + d)

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 25: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Efekat zagrada

abcd

f

f = a AND b AND c AND d

f

ab

cd

f = (a AND b) AND (c AND d)

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 26: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Tipovi podataka iz paketa std_logic_1164 STD_LOGIC ndash skalarni tip STD_LOGIC_VECTOR ndash vektorski tip Uopštenje tipova BIT i BIT_VECTOR Namenjeni sintezi

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 27: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Definiše 8-nivovski logički sistem Dozvoljene vrednosti

΄X΄ Nepoznata vrednost

΄0΄ Nizak logički nivo Sintetiše se kao logička ΄0΄

΄1΄ Visok logički nivo Sintetiše se kao logička ΄1΄

΄Z΄ Visoka impedansa Sintetiše se kao tro-statički bafer

΄W΄ ˝Slaba˝ nepoznata vrednost

΄L΄ ΄˝Slab˝ nizak nivo

΄H΄ ΄˝Slab˝ visok nivo

΄-΄ Proizvoljna vrednost

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 28: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR

lsquo0rsquo lsquo1rsquo

OE

Trostaticki bafer

lsquo0rsquo lsquo1rsquo lsquoZrsquo

VCC

lsquo0rsquo lsquoHrsquo lsquoLrsquo lsquo1rsquo

poll-up

poll-down

Dozvoljeno u sintezi

a b y0 0 00 1 11 0 11 1 -

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 29: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTOR Automatsko razrešavanje konflikta

X 0 1 Z W L H -

X X X X X X X X X

0 X 0 X 0 0 0 0 X

1 X 0 1 1 1 1 1 X

Z X 0 1 Z W L H X

W X 0 1 W W W W X

L X 0 1 L W L W X

H X 0 1 H W W H X

- X X X X X X X X

lsquo1rsquo

lsquo0rsquo

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 30: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

STD_LOGIC i STD_LOGIC_VECTORSIGNAL x STD_LOGIC -- deklariše x kao jednobitni (skalarni) signal tipa STD_LOGIC

SIGNAL y STD_LOGIC_VECTOR(3 DOWNTO 0) = ˝0001˝-- deklariše y kao 4-bitni vektor i dodeljuje mu inicijalnu vrednost ˝0001˝ -- Inicijalna vrednost je opciona a dodeljuje se operatorom ˝=˝

-- Krajnji levi bit je bit najveće težine (MSB)

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 31: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Operacija nad tipom STD_LOGIC

Preklopljeni operator

Tip operanda a

Tip operanda b

Tip rezultata

NOT a std_logicstd_logic_vector

isti kao a

a AND b

std_logicstd_logic_vector

isti kao a isti kao a

a OR b

a XOR b

a NOR b

a XNOR b

Dozvoljeni su logički ali ne i aritmetički operatori

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 32: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Logičke operacije nad operandima tipa std_logic_vector

Logičke operacije nad vektorima izvršavaju se nezavisno nad svakim parom odgovarajućih bitova dva vektora Pri tom vektori moraju biti iste dužine

SIGNAL a b c STD_LOGIC_VECTOR(7 DOWNTO 0) a lt= ˝00111010˝b lt= ˝10000011˝c lt= NOT a -- c dobija vrednost ˝11000101˝c lt= a OR b -- c dobija vrednost ˝10111011˝c lt= a XOR b -- c dobija vrednost ˝10111001˝

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 33: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Funkcije za konverziju iz paketa std_logic_1164

Funkcija Tip operanda a Tip rezultata

to_bit(a) std_logic bit

to_stdlogic(a) bit std_logic

to_bitvector(a) std_logic_vector bit_vector

to_stdlogicvector(a) bit_vector std_logic_vector

Iz tipa std_logic (std_logic_vector) u tip bit (bit_vector) i obrnuto

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 34: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Konverzija tipa

Pretpostavimo da su s1 s2 s3 b1 i b2 signali definisani na sledeći način SIGNAL s1 s2 s3 STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL b1 b2 BIT_VECTOR(7 DOWNTO 0)Sledeće naredbe dodele su neispravne zbog neusklađenosti tipova

s1 lt= b1 -- signalu tipa std_logic_vector se dodeljuje -- vrednost signala tipa bit_vector

b2 lt= s1 AND s2 -- vrednost tipa std_logic_vector se dodeljuje -- signalu tipa bit_vector

s3 lt= b1 OR s2 -- operacija or nije definisana između vrednosti -- tipa bit_vector i std_logic_vector Treba ovakos1 lt= to_stdlogicvector(b1) b2 lt= to_bitvector(s1 AND s2)s3 lt= to_stdlogicvector(b1) OR s2 ilis3 lt= to_stdlogicvector(b1 OR to_bitvector(s2))

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 35: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Konkatenacija Nadovezivanje (spajanje) manjih vektora

segmenata vektora ili skalara u jedan veći vektor

Operator konkatenacije je znak ˝amp˝

y lt= x amp ldquo10000000rdquo -- ako je x = ΄1΄ tada y lt= ˝11000000˝y lt= ˝00˝ amp a(7 DOWNTO 0) -- ekvivalentno pomeranju vektora a za dve pozicije udesnoy lt= a(1 DOWNTO 0) amp a(7 DOWNTO 2)-- ekvivalentno rotaciji vektora a za dve pozicije udesno

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 36: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

KonkatenacijaSIGNAL dbus STD_LOGIC_VECTOR(0 TO 7)SIGNAL ctrl STD_LOGIC_VECTOR(1 DOWNTO 0)SIGNAL en rw STD_LOGICSIGNAL count STD_LOGIC_VECTOR(0 TO 3)

dbus lt= ctrl amp en amp rw amp count

ctrlenrw

countdbus

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 37: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Operatori konkatenacije - primer Pomeranje pomoću konkatenacije

SIGNAL a b STD_LOGIC_VECTOR(0 TO 7)

a lt= b(5 DOWNTO 0) amp ldquo00rdquo -- a lt= b ltlt 2

Da su a i b tipa BIT_VECTOR isti efekat ima a lt= b sll 2 Za STD_LOGIC_VECTOR

a lt= b sll 2 je isto što i a lt= b(5 DOWNTO 0) amp ldquoXXrdquo Zbog STD_LOGIC = (΄X΄ ΄0΄ ΄1΄ ΄Z΄ ΄W΄ ΄L΄ ΄H΄ ΄-΄)

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 38: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

AgregacijaSIGNAL w STD_LOGIC_VECTOR(7 DOWNTO 0) w lt= ldquo00001001rdquo w lt= (rsquo0rsquorsquo0rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo rsquo0rsquo rsquo0rsquo rsquo1rsquo)

w lt= (7=gtrsquo0rsquo1=gtrsquo0rsquo5=gtrsquo0rsquo6=gtrsquo0rsquo0=gtrsquo1rsquo4=gtrsquo0rsquo3=gtrsquo1rsquo2=gtrsquo0rsquo)

w lt= (7|6|5|4|2|1 =gtrsquo0rsquo 3|2 =gtrsquo1rsquo)

w lt= (0=gt1 3=gt1 OTHERS =gt 0)

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 39: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Agregacija Dodela svih nula vektoru

w lt= (OTHERS =gt 0)

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 40: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Tipovi podataka iz paketa IEEE numeric_std Uključuje se sa

LIBRARY IEEE USE IEEENUMERIC_STDALL

Podrška za aritmetičke operacije Uvodi dva tipa podataka

UNSIGNED ndash za neoznačene binarne brojeve SIGNED ndash za označene binarne brojeve

SIGNAL a b SIGNED(7 DOWNTO 0)

SIGNAL x UNSIGNED(7 DOWNTO 0)

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 41: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Označeni i neoznačeni brojevi Šta predstavlja ˝˝1100˝ Zavisi od konteksta (tipa signalavarijable kome se dodeljuje) a lt= ˝1100˝

a je tipa std_logic_vector Niz od 4 nezavisna bita

a lt= ˝˝1100˝ a je tipa unsigned Neoznačen binarni broj vrednosti 12

a lt= ˝˝1100˝ a je tipa signed Označen binarni broj vrednosti -4

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 42: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNEDOperacija Opis Tip operanda a

Tip operanda b

Tip rezultata

Aritmetičke operacije

a + b sabiranje

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

unsignedunsignedsignedsigned

a - b oduzimanje

a b množenje

a b deljenje

a MOD b moduo

a REM b ostatak

ABS a apsolutna vrednostsigned signed

- a negacija

Operacije poređenja

a = b jednako

unsignedunsigned naturalsignedsigned integer

unsigned naturalunsignedsigned integersigned

booleanbooleanbooleanboolean

a = b različito

a lt b manje

a gt b veće

a lt= b manje ili jednako

a gt= b veće ili jednako

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 43: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Operacije nad UNSIGNED i SIGNED

SIGNAL au bu cu du eu UNSIGNED(7 DOWNTO 0)SIGNAL as bs cs ds SIGNED(7 DOWNTO 0) au lt= bu + cu -- unsigned i unsigneddu lt= cu + 1 -- unsigned i naturaleu lt= (3 + au + bu) - cu -- unsigned i naturalas lt= bs + cs -- signed i signedds lt= bs ndash 1 -- signed i integer

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 44: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Dozvoljene i nedozvoljene operacijeLIBRARY IEEEUSE IEEESTD_LOGIC_1164ALLUSE IEEENUMERIC_STDALL SIGNAL a b c SIGNED(7 DOWNTO 0)SIGNAL x y z STD_LOGIC_VECTOR(7 DOWNTO 0) c lt= a + b -- ispravno aritmetičke operacije su dozvoljene nad tipom signedc lt= a AND b -- neispravno logičke operacije nisu dozvoljene nad tipom signedz lt= x + y -- neispravno aritmetičke operacije nisu dozvoljene nad -- tipom std_logic_vectorz lt= x AND y -- ispravno logičke operacije su dozvoljene u tipu std_logic_vector

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 45: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Relacije nad UNSIGNEDSIGNED Da li važi ˝011˝ gt ˝1000˝ Ako su

Std_logic_vector NETAČNO Unsigned NETAČNO

˝011˝ je 3 a ˝1000˝ je 8

Signed TAČNO ˝011˝ je 3 a ˝1000˝ je -8

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 46: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Funkcije za konverziju iz paketa numeric_std

Iz tipa U tipFunkcija za konverziju eksplicitna konverzija

unsigned signed std_logic_vector std_logic_vector(a)

signedstd_logic_vector

unsigned unsigned(a)

unsigned std_logic_vector

signed signed(a)

unsigned signed integer to_integer(a)

natural unsigned to_unsigned(a size)

integer signed to_signed(a size)

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 47: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Eksplicitna konverzija tipa

SIGNAL u1 u2 UNSIGNED(7 DOWNTO 0)SIGNAL v1 v2 STD_LOGIC_VECTOR(7 DOWNTO 0) u1lt= UNSIGNED(v1) -- konvertuje std_logic_vector u unsignedv2lt= STD_LOGIC_VECTOR(u1) -- konvertuje unsigned u std_logic_vector

Za konverziju podataka između tipova std_logic_vector unsigned i signed

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje

Page 48: Osnovne je zičke konstrukcije

Arhitektura mikrosistema

Funkcija za konverziju

SIGNAL u UNSIGNED(7 DOWNTO 0)

u lt= 5 -- neispravno neusklađeni tipovi

u lt= TO_UNSIGNED(5 8)

Treba ovako Broj bita u rezultujućoj

binarnoj vrednosti

Vrednost koja se

konvertuje