You are on page 1of 35

ProgramiranjeI_sylabus.

doc

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

PROJEKTOVANJE DIGITALNIH LOGIKIH KOLA


U zadnjih desetak godina dolo je do promjena u nainu dizajniranja hardvera. Razvoj kompjuterskih sistema i informacijskih tehnologija uopte, imao je znaajnog uticaja i na dizajn hardvera. Savremeni dizajn se oslanja na softverska rjeenja, poznatija kao CAD (Computer Aided Design) softveri, i programabilne ureaje na koje je lahko aplicirati pomodu softvera kreiran dizajn. Vie je faktora koji su uticali na ovakav razvoj dogaaja, a meu njima su i slijededi: jednostavnost projektovanja sistema koritenjem raunara, nasuprot crtanju na papiru; mogudnost jednostavne replikacije jednom kreirane eme, u cjelini, ili njenog dijela; opravdanost investicije u proizvodnju, i same proizvodnje velikih koliina programabilnih ureaja, koji bi svojom cijenom konkurisali logikim kolima za specifinu namjenu; - mogudnost brzog kreiranja prototipova hardvera i jednostavnost njihove izmjene, prema uoenim nedostacima, ili drugim potrebama. Za klasino projektovanje digitalnih logikih kola iskustvom su se kreirale formalne i neformalne specifikacija koraka u projektovanju, nazvanih najboljom praksom. Savremeni dizajn se, praktino, naslonio na ta iskustva, unaprijeujudi upravo dijelove koji su bili vremenski najzahtjevniji, a intelektualno, uslovno reeno frustrirajudi. Koraci definisani jednom od najboljih praksi su: 1. 2. 3. 4. 5. Identifikacija problema dokuite ta je cilj; Identifikacija raspoloivih resursa pogledajte ta je to to Vam je dato, definiite ulaze; Identifikacija izlaza znate cilj, definiite ta je izlaz; Funkcionalnost razdvojite ta je sutina, a ta kozmetika; razmislite ta je to to mrea mora da zadovolji, a ta je dodato kao posebna pogodnost; Konvencija o logikim stanjima definiite ta je za Vas A=0 ili A=1 i slino. (recimo A = 0 znai da kada je na ulazu A logiko 0, svjetlo je ugaeno itd.); to pomae Vama u toku rada, a pomae i onome ko tumai Vae rjeenje da bolje razumije Va tok misli; Kreiranje tabele istine Vaa tabela istine sadri ulaze i izlaze koje ste identifikovali; primijenite logiku, ta bi trebalo biti na izlazu kada je na ulazu odreena kombinacija; izlistajte sve mogude kombinacije (2n kombinacija za n ulaza); Pisanje Bulove jednaine napiite izraz, jednainu za izlaz u funkciji ulaznih varijabli; provjerite trai li se od Vas neka specifina forma (disjunktivna ili konjuktivna Sum Of Products ili Product Of Sums u engleskoj literaturi, respektivno), te prema tome napiite odgovarajudi izraz; Minimizacija Minimizirajte izraz koritenjem neke od metoda minimizacije (algebarsko pojednostavljivanje, K mape i dr.) ; Crtanje logike mree iskoristite simbole za logika kola, prikaite veze izmeu logikih kola, jasno oznaite ulaze i izlaze; Provjera obavezno provjerite da li ste svaku fazu dobro izveli; ovo je posao u kojem se zahtjeva dosta panje i vrlo lahko se napravi previd. Ne dopustite da Vae rjeenje bude netano zbog trenutka nepanje!

6.

7.

8. 9. 10.

Kao to i sami vidite, to je zapravo potpuno prirodan slijed analize problema i njegovog rjeavanja. Rezultat ovog procesa je logika struktura, predstavljena grafikim simbolima ili Bulovom jednainom. Jednom osmiljenu logiku strukturu, rezultat, je trebali ispitati. Projektantima je vano saznati da li su signali na izlazu u adekvatnoj zavisnosti od ulaza i drugih parametara projektovane strukture. Prije dvadesetak godina, to bi znailo kupiti integrisana logika kola, napraviti tampanu plou sa iscrtanim vezama meu njenim elementima. Ukoliko bi se uoila greka, nakon to se ispravi dizajn ponovo se kreirao prototip. To je bio zahtjevan proces, u svakom smislu. Danas je to znatno drugaije. Pomodu CAD softvera i standardiziranih programskih jezika za opis hardvera moe se napraviti programski kod koji sadri opis logike strukture. Taj se opis jednostavno
AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

prenosi na programabilne ipove, meu kojima su sve popularniji FPGA (Field Programmable Gate Aray) ipovi. Oni sadre mreu konfigurabilnih logikih blokova ije se meuveze mogu programirati (slika 1.). Logiki su blokovi rasporeeni u dvodimenziono polje, a po obodu polja su ulazno/izlazni blokovi.

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

Slika 1. FPGA arhitektura blok ema Ono to ini ove ureaje posebnim jesu programabilne meuveze. Na slici 2. se mogu vidjeti razliiti spojevi u dijelovima ipa u kojima se vri uspostava projektovanih veza meu logikim blokovima. Ovi se dijelovi nazivaju komutacioni ili prekidaki blokovi. S obzirom da je u mnogim aplikacijama potrebna memorija, proizvode se i ipovi sa ugraenom memorijom (slika 3.).

Slika 2. Mogude pozicije prekidaa za horizontalne i vertikalne meuveze meu logikim blokovima u FPGA ipu.

AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

Slika 3. FPGA ipovi sa ugraenom memorijom. Krajnji rezultat projektovanja logikih struktura je konfiguraciona datoteka. Ona se sa raunara prenosi na programabilni ureaj, ime se projektovana struktura pretvara u hardver. Ovakav sistem projektovanja i proizvodnje hardvera je posebno interesantan kada se treba ispitati novi dizajn, ili proizvesti hardver ija proizvodnja ne treba predi par desetina hiljada primjeraka. ak se i prototipovi nekih Intel-ovih procesora razvijaju na FPGA ureajima. Trend dananjice su embedded sistemi. Engleski termin embedded se u literaturi na jezicima naroda u BiH prevodi kao ugnijedeni, ugraeni ili usaeni. No, najede se termin koristi u izvornom obliku. Embedded sistem je namjenski raunar ugraen u neki ureaj, koji ukljuuje i drugi hardver i mehanike dijelove. Za razliku od procesora opte namjene koji izvravaju instrukcije opisane programom, embedded procesori su dizajnirani namjenski za mali broj operacija. S obzirom na razvoj trita, sve vedu prodaju mobilnih telefona, pametnih maina, automatsku kontrolu procesa u automobilima, avionima, itd., sve je veda i potreba za embedded procesorima. U jednom kanadskom magazinu navedeno je da 96% svih proizvedenih procesora zavri u embedded sistemima. U resursno oskudnom okruenju u koje se smjetaju embedded procesori dizajn je presudan. Od interesa su raunska efikasnost, potronja energije i sl. Upravo zbog toga je interesantno analizirati razne varijante rjeenja, ne samo zbog cijene proizvodnje, ved i zbog isplativosti njihovog rada. I u ovom domenu, kao i u domenu projektovanja procesora opte namjene programabilni ureaji imaju velikog znaaja. U svrhu opisivanja hardvera za CAD softvere, potrebno je bilo napraviti softversko okruenje koje de pratiti slijed mentalnih procesa pri projektovanju logikih struktura. Do sada je bilo vie jezika koji su nastajali i, prije ili poslije nestajali. Do danas su se odrali VHDL i Verilog. Na ovom predmetu de se koristiti VHDL, okruenje/simulator ModelSim (www.model.com, ModelSim PE Student Edition).

AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

VHDL UKRATKO

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

VHDL je jezik za automatizaciju projektovanja i implementacije digitalnih logikih, najede upotrebljavan u kombinaciji sa programabilnim nizovima logikih kapija (field-programmable gate array FPGA). FPGA ureaji se sastoje od skupa osnovnih logikih kola, poput AND, OR, NOR, i slinih, i programabilnim vezama meu ovim kolima. VHDL je skradenica za Very-High-Speed Integrated Circuits Hardware Description Language. U toj skradenici slovo V predstavlja nekoliko rijei, Very-High-Speed Integrated Cricuits, ili VHSIC. To je bio naziv projekta amerikog Ministarstva odbrane, pokrenut 1980 godine, i rezultirao je znaajnim napretkom u oblasti integrisanih kola, litografije, pakovanja i kreiranja kombjuterskih alata za dizajn integrisanih kola. Jedan od rezultata ovog projekta bio je i sam VHDL. VHDL je zamisljen da bude standard IEEE i kao takav je i prihvaden u Decembru 1987 po nazivom IEEE 1076. Dvije osnovne primjene VHDL-a su u polju ureaja sa programabilnom logikom (ukljuujudi CPLDs Complex Programmable Logic Device i FPGAs Field Programmable Gate Arrays ) i u polju aplikacijski specifinih integriranih kola (ASICs Application Specific Integrated Circuits).

Osnovni elementi sintakse VHDLa

Komentari Komentari zapoinju znakovima '--' (dvije crtice) i proteu se do kraja linije. Identifikatori Identifikatori (VHDL rezervisane rijei ili nazivi koje je definisao programer) u VHDL jeziku moraju biti napisani potujudi sljedede konvencije: karakteri mogu biti ili alfanumeriki (A...Z, a...z, 0...9) ili _ (underscore - donja crta). velika i mala slova se isto tretiraju prvi karakter mora biti slovo posljednji karakter ne moe biti donja crta (_) dvije donje crte ne mogu biti jedna do druge.

Deklaracija objekata
Tri su tipa objekata: Signal predstavlja logike signale na ici u krugu. Signal nema memoriju, tako da ukoliko se njegov izvor ukloni, signal nede imati vrijednost. Varijabla se koristi za lokalnu pohranu privremenih podataka, vidljivih samo unutar procesa.

AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Konstanta, ovi objekti moraju biti inicijalizirani sa deklarisanom vrijednosti i ta vrijednost ne moe biti izmijenjena.

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

Primjer: SIGNAL x: BIT; VARIABLE y: INTEGER; CONSTANT one: STD_LOGIC_VECTOR (3 DOWNTO 0):=0001;

Tipovi podataka

Bit i BIT_VECTOR Bit i BIT_VECTOR tipovi su predefinisani u VHDL. Objekti ovih tipova mogu imati vrijednosti '0' i '1'. BIT_VECTOR tip je jednostavno vektor tipa BIT. Vektor sa svim bitovima iste vrijednosti mogu se dobiti koristedi OTHERS kljunu rije. Primjer: SIGNAL x: BIT; SIGNAL y: BIT_VECTOR (7 DOWNTO 0); x <= '1'; y <= '00000010'; y <= (OTHERS => '0'); -- isto kao i '0000000'

STD_LOGIC i STD_LOGIC_VECTOR Ovi tipovi omoguduju vie vrijednosti nego tip BIT za modeliranje realnih krugova accurately. Objekti ovih tipova mogu imati sljedede vrijednosti: '0' normalna 0 '1' normalna 1 'Z' visoka impedansa (mora se koristiti veliko slovo)...

INTEGER Predefinisani integer tip definie binarni brojni objekt za koritenje sa aritmetikim operatorima. Po defaultu integer signal koristi 32 bita za reprezentaciju oznaenih brojeva. Integer koristi nekoliko bita koji takoe mogu biti deklarisani sa RANGE kljunom rijei. Primjer: SIGNAL x: BIT; SIGNAL y: INTEGER RANGE -64 TO 64;

BOOLEAN
AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

PREDEFINISANI boolean tip definie objekte koji mogu imati dvije vijednosti TRUE and FALSE.

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

Primjer: SIGNAL x: BOOLEAN;

ENUMERATION TYPE Ovaj tip omogudava korisniku da specificira vrijednosti koje taj tip podataka moe imati. Sintaksa: TYPE identifikator IS (value1, value2,...);

Primjer: TYPE state_type IS (S1, S2, S3); SIGNAL state: state_type; state <= S1;

NIZ Niz grupie pojedinane objekte podataka istog tipa zajedno u jednodimenzionalni ili multidimenzionalni niz. Sintaksa: TYPE identifikator IS ARRAY (range) OF type;

Primjer:

TYPE byte IS ARRAY (7 DOWNTO 0) OF BIT; TYPE memory_type IS ARRAY (1 to 128) OF byte; SIGNAL memory: memory type; memory (3) <= 00101101;

AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Dijelovi VHDL koda

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

Svaki VHDL model sastoji se od tri dijela: dio (blok) ENTITY i dio ARCHITECTURE, i dio za deklaraciju biblioteka (LIBRARYs)

Blok ENTITY definie ulaze i izlaze sklopa. Blok ARCHITECTURE opisuje ponaanje i/ili strukturu sklopa.

ENTITET U ENTITY deklaraciji deklariu se eksterni ili korisniki intefejs modula slino deklaraciji funkcije. Specificira imena entiteta i njegov interfejs. Interfejs se sastoji od signala koji se prosljeuju entitetu ili van njega koristedi dvije kljune rijei IN i OUT. Sintaksa: ENTITY entity-name IS PORT (list-of-port-names-and-types); END entity-name;

Primjer: LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL;

ENTITY Siren IS PORT ( M: D: V: S: END Siren; IN STD_LOGIC; IN STD_LOGIC; IN STD_LOGIC; OUT STD_LOGIC) ;

AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc
ARHITEKTURA

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

Dio ARHITECTURE definie aktuelnu implementaciju funkcionalnosti entiteta. Ovo je slino definiciji ili implementaciji funkcije. Sintaksa za arhitekturu zavisi od modela koji se koristi. Sintaksa za dataflow model

ARHITECTURE architecture-name OF entity-name IS signal declarations; BEGIN concurrent-statement; END architecture-name;

Konkurentni iskazi se izvravaju konkurentno.

Sintaksa za behavioral model ARHITECTURE architecture-name OF entity-name IS signal declarations; function-definitions; procedure-definition; BEGIN PROCESS-blocks; concurrent-statement; END architecture-name;

Iskazi unutar PROCESS bloka izvravaju se sekvencijalno. Sam PROCESS blok se izvrava kao konkurentni iskaz.

Sintaksa za structural model

ARHITECTURE architecture-name OF entity-name IS component declarations; signal declarations; BEGIN


AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc
instance-name: PORT MAP statements; concurrent-statement; END architecture-name;

Fakultet informacijskih tehnologija edina@fit.ba leid@fit.ba

Za deklarciju svake koritene komponente, mora biti odgovarajudi entitet i arhitektura za te komponente. PORT MAP iskazi su konkurentni iskazi.

Deklaracija biblioteka (LIBRARYs)

Za deklaraciju BIBLIOTEKE(odnosno uciniti je vidljivom u dizajnu) potrebne su najmanje dvije linije koda, od kojih jedna predstavlja ime(name) biblioteke, a druga use izraz:

LIBRARY library_name; USE library_name.package_name.package_parts;

Najmanje tri paketa (package) iz tri razliite biblioteke su potreben u dizajnu: ieee.std_logic_1164 standard work

AKS::Predavanje,Vjezbe,Workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

OPERATORI I ATRIBUTI U VHDL JEZIKU, KONKURENTNI KOD


Gotovo je nemogue ili slabo produktivno pisati bilo koji kod efikasno ako se prije toga ne upoznamo sa tri stvari : tipovi podataka, operatori i atributi. Kao i kod svakog drugog jezika potrebno je savladati osnove da bi mogli pisati bilo jednostavniji bilo kompliciraniji program. U nastavku emo predstaviti vie vrsta operatora i atributa.

OPERATORI
VHDL prua nekoliko vrsta predefiniranih operatora: Operatori dodjele Logiki operatori Artimetiki operatori Relacijski operatori Operatori pomaka Operatori grupiranja

Svaku od ovih kategorija emo predstaviti zasebno!

OPERATORI DODJELE
Operatori dodjele se koriste da bi dodjelili vrijednosti signalima, varijablama i konstantama. Oni su : <= Koristi se da bi se dodjelila vrijednost SIGNALU := Koristi se da bi se dodjelila vrijednost VARIJABLI, KONSTANTI ILI GENERIC. Tako er se koristi da bi se uspostavile poetne tj. inicijalne vrijednosti => Koristi se za dodjelu vrijednosti individualnim elementima vektora, ili sa OTHERS Primjer : SIGNAL x : STD_LOGIC VARIABLE y : STD_LOGIC_VECTOR(3 DOWNTO 0); --- Lijevi bit je MSB (Most Significant Bit) SIGNAL w: STD_LOGIC_VECTOR(0 to 7) ----Desni bit je MSB

Sljedee dodjele se smatraju ispravnim:

1
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

x <= 1; -- 1 je dodjeljen SIGNALU x koristei <= y := 0000; -- 0000 je dodijeljeno varijabli y koristei operator := w <= 10000000; ----LSB je 1, ostali su 0

w <= (0 =>1, OTHERS =>0); ----LSB je 1, ostali su 0

LOGIKI OPERATORI
Koriste se naravno da bi se izvele logike operacije. Podaci moraju biti tipa BIT, STD_LOGIC ili STD_ULOGIC (ili tipovi podataka ekstenzija BIT_VECTOR, STD_LOGIC_VECTOR, ili STD_ULOGIC_VECTOR). Logiki operatori su : NOT AND OR NAND NOR XOR XNOR

Napomena: Operator NOT ima prvenstvo nad ostalim operatorima. XNOR operator je uveden u VHDL93. Primjer operatora: y <= NOT a AND b; y <= NOT (a AND b) y <= a NAND b; --- (a.b) --- (a.b) --- (a.b)

ARTIMETIKI OPERATORI
Koriste se da bi se izvele artimetike operacije. Podaci mogu biti tipa INTEGER, SIGNED, UNSIGNED ili REAL. Tako er, ako se koriste std_logic_signed ili std_logic_unsigned paketi ieee biblioteke, tada se STD_LOGIC_VECTOR moe tako er koristiti u operacijama dodavanja i oduzimanja. Artimetiki operatori su : + Sabiranje - Oduzimanje * Mnoenje / Dijeljenje * Eksponenecije MOD -Modul REM - Ostatak

2
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

ABS Absolutna vrijednost

Nema nekih sintetikih ogranienja to se tie sabiranja i oduzimanja, i generalno isto vrijedi i za mnoenje. Za eksponenciju, dozvoljene su samo statike vrijednosti za bazu i eksponent. to se tie mod i rem operatora, y mod x vraa ostatak od y/x sa znakom x, a y rem x vraa ostatak od y/x sa znakom y.

KOMPARACIJSKI OPERATORI
Koriste se za usporedbe vrijednosti podataka. Podaci mogu biti bilo kojeg tipa koji su ve predhodno navedeni. Komparacijski operatori su: = Jednako /= Razliito < Manje od > Vee od <= Manje ili jednako >= Vee ili jednako

OPERATORI POMAKA
Uvedeni su u VHDL93. Sintaksa operatora pomaka je sljedea: <lijevi operand><operacija pomaka><desni operand>. Lijevi operand mora biti tipa BIT_VECTOR, dok desni operand mora biti INTEGER (doputen je + ili ispred ovog operanda). Shift operatori su : sll Shift left logic -pozicije na desno su popunjene 0 srl Shift right logic pozicije na lijevo su popunjene 0 sla Shift left arithmetic najdesniji bit je repliciran > sra Shift right arithmetic- lijevi bit repliciran na < rol Rotate left logic ror Rotate right logic

Primjer operatora pomaka: Recimo da je x<=01001 . Tada: y y y y y y <= <= <= <= <= <= x x x x x x sll 2; --logiki shift na lijevo za 2:y<=00100 sla 2;--artimetiki pomak na lijevo za 2:00111 srl 3;--logiki shift na desno za 3:y>=00001 sra 2;--artimetiki pomak na desno za 3:00001 rol 2;--rotacija na lijevo za 2: y<=00101 srl -2;--isto kao sll 2

3
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

OPERATORI GRUPISANJA
Kao to njihovo ime kae koriste se za grupiranje vrijednosti. Podaci mogu biti bilo kojeg tipa vee predhodno nacedenog. Operatori grupiranja su: Primjer: z <=x & 1000000 ako je x<=1, tada z<=11000000 z<= (1, 1, 0, 0, 0, 0, 0, 0, ) & (, , ,)

ATRIBUTI
Svrha atributa je da prue vie fleksibilnosti VHDL jeziku, tako er omoguavaju izgradnju generikih dijelova koda (kod koji e npr. raditi za bilo koji vektor ili niz). Atributi su podijeljeni u dvije grupe: Atributi podataka: Vraaju informaciju (vrijednost) u vezi sa vektorom podataka Atributi signala: Slui za praenje (monitoring signala), i vraa TRUE ili FALSE U oba sluaja, da bi koristili atribute moraju se koristiti apostrofi (). Pored liste predefiniranih atributa, VHDL prua i korisniki definisane atribute.

ATRIBUTI PODATAKA
Predefinirani atributi podataka su : Primjer: SIGNAL d: STD_LOGIC_VECTOR (7 DOWNTO 0) Tada: dLOW =0, dRIGHT=1, dLEFT=7, dRIGHT=0, dLENGTH=8, dRANGE= (7 downto 0), dREVERSE_RANGE (0 to 7) Primjer: SIGNAL x: STD_LOGIC_VECTOR (7 DOWNTO 0) Tada bi sve 4 LOOP izjave bile ispravne i jednake! dLOW: Vraa nii indeks niza dHIGH: Vraa vii indeks niza dLEFT: Vraa leftmost indeks niza dRIGHT: Vraa rightmost indeks niza dLENGTH: Vraa veliinu niza dRANGE: Vraa raspon niza dREVERSE_RANGE: Vraa raspon niza, ali u obrnutom redoslijedu

4
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

FOR FOR FOR FOR

i i i i

IN IN IN IN

0 TO 7 LOOP ... xRANGE LOOP ... xLOW TO xHIGH LOOP ... 0 TO xLENGTH-1 LOOP ...

Ako je signal brojanog tipa, onda: dVAL(pozicija); Vraa vrijednost na tano specificiranoj poziciji dPOS(vrijednost); Vraa poziciju specificirane vrijednosti dLEFTOF(vrijednost); Vraa vrijednost na poziciji lijevo od specificirane vrijenosti dVAL(red, kolona); Vraa vrijednost na specifiranoj poziciji

ATRIBUTI SIGNALA
U opisu dolje, s je signal. sEVENT: Vraa TRUE kada se deava promjena, neki dogaaj na s(tj. kad se mijenja vrijednost s) sSTABLE[t]: Vraa TRUE ako se ne deava nikakva promjena na s tijekom nekog vremenskog intervala t sACTIVE: Vraa TRUE kada se transakcija (dodjela) vri na s sQUIET[t]: Vraa TRUE ako se nikakva transakcija (dodjela vri na s tokom vremenskog intervala t) sLAST_VALUE: Vraa vrijednost s prije posljedneg doga aja (eq UNDO) sLAST_EVENT: Vraa vrijeme koje je prolo od zadnjeg doga aja s-a sLAST_ACTIVE: Vraa vrijeme koje je proo od zadnje transakcije (dodjele) s-a Veina ovih atributa gore navedenih se koristi za simulaciju, a najee koriteni atribut je sEVENT Primjer: IF (clkEVENT AND clk=1)... IF (NOT clkSTABLE AND clk=1) WAIT UNTIL (clkEVENT AND clk=1)

KORISNIKI DEFINISANI ATRIBUTI


VHDL dozvoljava izgradnju korisnikih definiranih atributa. Da bi mogli koristiti korisniki definirane atribute, moramo izvriti njihovu deklaraciju i specifikaciju. Deklaracija atributa

5
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

ATTRIBUTE attribute_name:attribute_type; Specifikacija atributa ATTRIBUTE attribute_name OF target_name: class IS value; gdje su: attribute_type: Bilo koji tip podatka(BIT, INTEGER, STD_LOGIC_VECTOR, itd.) class: TYPE, SIGNAL, FUNCTION, itd. value: 0, 27, 00 11 10 01, itd. Primjer: ATTRIBUTE number_of_inputs: INTEGER; --deklaracija ATTRIBUTE number_of_inputs OF nand3: SIGNAL IS 3; --specifikacija ...... inputs <= nand3number_of_pins; --poziv atributa, vraa 3

PREKLAPANJE OPERATORA
Kao to atributi mogu biti korisniki definisani, tako mogu i operatori. Na primjer, operacija sabiranja doputa samo sabiranje izme u INTEGER vrijednosti, ne dozvoljava sabiranje varijabli tipa primjer BIT. Dakle da bi bilo mogue tako neto potrebno je preklopiti operatore. Korisnici mogu sami definirati vlastite operacije, koristei isto ime kao i predefinirana operacija. Primjer: Ako elimo zbrojiti INTEGER sa binarnim 1-bitnim brojem, tada moemo koristiti FUNCTION. Slijedi primjer preklopljenog operatora + FUNCTION + (a: INTEGER, b: BIT) RETURN INTEGER IS BEGIN IF (b=1 ) THEN RETURN a+1; ELSE RETURN a; END IF; END + Poziv ove funkcije izgleda ovako: SIGNAL inp1, outp: INTEGER RANGE 0 TO 15;

6
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

SIGNAL inp2:BIT; (...) outp <= 3 + inp1 + inp2; (...)

GENERIC
Kao to samo ime kae, GENERIC je nain specificiranja generikog parametra (a to je statiki parametar koji moe biti veoma lako modificiran i prilago en razliitim aplikacijama). Ovi generiki parametri omoguavaju fleksibilnost i ponovnu upotrebu koda. GENERIC kada se koristi, mora biti deklariran u ENTITY dijelu koda. Specificirani parametar e tada uistinu biti globalan (vidljiv cijelom dizajnu). Njegova sintaksa je prikazana dole: GENERIC (parameter_name : parameter_type := parameter_value); Primjer: Generika izjava dolje specificira parametar n, tipa INTEGER, ija defaultna vrijednost je 8. Stoga, kad god se n nalazi u ENTITY ili u ARCHITECTURE njegova vrijednost e biti 8. ENTITY my_entity IS GENERIC (n : INTEGER :=8); PORT(...); END my_entity Moe biti specificirano vie generikih parametara u ENTITY Npr. GENERIC (n: INTEGER :=8; vector: BIT_VECTOR (7 DOWNTO 0) := 00001111 );

KONKURENTNI KOD
VHDL kod moe biti konkurentan i sekvencijalan. Ova podjela je jako bitna, zato jer doputa razumijevanje koji izrazi su namjenjeni za koji dio koda, kao i posljedice koritenje jednog ili drugog tipa koda. Konkuretni izrazi u VHDL jeziku su WHEN i GENERATE. Pored njih operatori dodjele (AND, NOT, +, *, sll, itd.) se tako er mog koristiti za kreiranje konkurentnog koda. I jo jedan izraz, specijalni oblik dodjele, zvani BLOCK, moe tako er biti koriten u ovom tipu koda.

KOMBINACIJSKA VS SEKVENCIJALNA LOGIKA


Kombinacijska logika je ta gdje output logikog kola ovisi samo o trenutnim ulazima. Tada je jasno da sistem ne zahtjeva memorije i da moe biti implementiran koristei uobiajna logika kola. Sekvencijalna logika je ta gdje output ovisi o prijanjim stanjima. Stoga, potrebna su takozvana spremita elemenata, koji su povezani sa

7
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

kombinacijskim logikim blokom kroz feedback petlju, tako da e sada pohranjena stanja tako er imati utjecaja na output. No, ne moe se rei da svako logiko kolo koje posjeduje spremite je sekvencijalno (RAM). Primjer je RAM memorija, gdje se ovo spremite elemenata pojavljuje u forward putanji, prije nego u feedback petlji. Operacija itanja memorije ovisi samo o adresi vektora trenutno primjenjenoj na RAM input, sa dobijenom vrijednou koja nema veze sa predhodnim pristupima memoriji.

KONKURETNI VS SEKVENCIJALNI KOD


VHDL kod je inherentno konkurentan (paralelan). Samo izrazi smjeteni u PROCESS, FUNCTION ili PROCEDURE su sekvencijalni. Blok u cijelosti, osim ovih izraza koji se izvravaju sekvencijalno, je konkurentan. Konkuretni kod se jo zove dataflow kod. Generalno gledajui, mi jedino moemo graditi kombinacijska logika kola sa konkurentnim kodom. Da bi napravili sekvencijalna logika kola, mora biti koriten sekvencijalni kod. Tako er mogue je implementirati i kombinacijska i sekvencijalna kola. U konkuretnom kodu moe biti koriteno sljedee : Operatori Izraz WHEN (WHEN/ELSE ili WITH/SELECT/WHEN) Izraz GENERATE Izraz BLOCK

Neto vie rei emo o prve tri stavke, s odgovarajuim primjerima, a o BLOCK izrazu navesti osnovne stvari.

KORITENJE OPERATORA
Ovo je najjednostavniji nain kreiranja konkurentnog koda. Operatori mogu biti koriteni da impelmetiraju bilo koje kombinacijsko kolo. No, kao to ete i sami moi primjetiti kasnije kompleksna kola se lake prave koristei sekvencijalni kod, iako kolo u sebi ne sadri sekvencijalnu logiku. Sljedei primjer e prikazati kreiranje konkurentnog koda koristei samo logike operatore.

8
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

IZRAZ WHEN
When je jedan od osnovnih konkuretnih izraza. Pojavljuje se u dvije ve navedene forme. WHEN/ELSE: assignment WHEN condition ELSE assignment WHEN condition ELSE

WITH / SELECT / WHEN WITH identifier SELECT assignment WHEN value, assignment WHEN value, ...; Kao primjer za izraz WHEN uzet emo isti multiplekser kao i maloprije: Kod izgleda:

9
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

WITH/SELECT/WHEN
Za primjer ovog izraza opet emo se posliiti multiplekserom da bi dobili jasniju predodbu o razlikama izme u ovih izraza:

GENERATE
GENERATE je jo jedan konkurentni izraz. Taj izraz moemo uporediti sa sekvencijalnim LOOP izrazom, zato to dozvoljava da se jedan dio koda ponavlja nekoliko puta, kreirajui nekolko instanci iste dodjele. Njegova pravilna forma je FOR / GENERATE sa sljedeom sintaksom: label: FOR identifier IN range GENERATE (concurrent assignments) END GENERATE; Osim ove forme postoji jo i IF / GENERATE, koja moe biti ugnje ena u FOR/GENERATE. label1: FOR identifier IN range GENERATE ... label2: IF conditon GENERATE (concurrent assignments) END GENERATE; ... END GENERATE; Primjer:

10
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

Bitna stvar za napomenuti je da kod GENERATE izraza obje krajnje granice petlje moraju biti statike. Kao primjer razmotrit emo kod ispod, gdje je choice input (ne-statiki parametar). Ovaj dio koda nije sintesizabilan!

BLOCK
Postoje dvije vrste BLOCK izraza: Simple i Guarded. Simple BLOCK BLOCK izraz, u svojoj simple formi, predstavlja samo nain lokalne podjele koda. On dozvoljava setu konkurentnih izraza da budu clustered tj. grupisane u BLOCK-ove, sa ciljem da kod bude lake upravljiv i itljiv. Njegova sintaksa izgleda ovako: label: BLOCK [declarative part] BEGIN (concurrent statement) END BLOCK label; Glavni aspekt tzv. blokiranja koda izgleda ovako:

11
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1114@fit.ba (antonija zeli); edina@fit.ba

Guarded BLOCK je specijalna vrsta bloka, koja ukljuuje dodatne izraze, zvane guard izrazi. Guarded izrazi u guarded BLOCK-u se oekivaju jedino kada je guard expression TRUE. Sintaksa izgleda ovako: label: BLOCK (guar expression) [declarative part] BEGIN (concurrent guarded and unguarded END BLOCK label; statement)

12
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija edina@fit.ba

SIGNALI I VARIJABLE

Vhdl nudi dva objekta za rad sa ne-statikim vrijednostima podatka: SIGNAL i VARIJABLA. Tako e omoguava i dodjeljivanje defaultne (statike) vrijednosti sa: GENERIC i CONSTANT. CONSTANT i SIGNAL mogu biti globalne i mogu biti koritene u drugim tipovima koda (konkurentni ili sekvencijalni). Varijable su lokalne, koriste se unutar dijela sekvecnijalnog koda i njihova vrijednost nikad direktno ne moe biti proslije ivana van. Odabir izmedju signala i varijabli nije uvijek lak, jer nekada cijele sekcije i primjeri mogu biti unapred upropateni.

CONSTANT
CONSTANT slui za utvr ivanje defaultne vijednosti. Sintaksa: CONSTANT name : type := value; Primjer: CONSTANT set_bit : BIT := '1'; CONSTANT datamemory : memory := (('0' , '0' , '0' , '0' ), ('0' , '0' , '0' , '1' ), ('0' , '0' , '1' , '1' )); Konstanta moe biti deklarisana u paketu, entitetu ili arhitekturi. Kada je deklarisana u paketu ona je globalna. Kada je deklarisana unutar entiteta (iza PORT) globalna je za sve arhitekture koje su poslije tog entiteta. Kada je deklarisana unutar arhitekture (u njenom deklarativnom dijelu) globalna je samo za tu arhitekturu. Najee se deklarie u arhitekturi ili u paketu.

SIGNAL
SIGNAL omoguava proslije ivanje vrijednosti u i van kola. Zapravo, signal reprezentuje veze unutar kola. Svi portovi i entiteti su signali po defaultu. Sintaksa: SIGNAL name : type [range] [:=initial_value]; Primjer: SIGNAL control: BIT :='0'; SIGNAL count: INTEGER RANGE 0 TO 100;

1
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc SIGNAL y: STD_LOGIC_VECTOR (7 downto 0);

Fakultet informacijskih tehnologija edina@fit.ba

Deklaracija signala moe biti na istom mjestu kao i deklaracija konstante. Vaan aspekt signala je da kad se koristi unutar sekcije sekvencijalnog koda (process, npr.) njegov update (izmjena vrijednosti) nije trenutan tj. njegova nova vrijednost se ne moe koristiti prije izvrenja procesa, funkcije ili procedure. Operator dodjeljivanja za signal je <= . Ono to je jo vano kod signala je: mogunost dodjeljivanja vie iskaza istom signalu.

VARIABLE
Suprotno konstantama i signalima, varijabla reprezentuje samo lokalne informacije.moe biti koritena unutar procesa, funkcije ili procedure. Njena izmjena vrijednosti je direktna, to znai da se nova vrijednost moe koristiti odmah u narednoj liniji koda. Sintaksa: VARIABLE name : type [range] [:=initi_value]; Primjer VARIABLE control: BIT :='0'; VARIABLE count: INTEGER RANGE 0 TO 100; VARIABLE y: STD_LOGIC_VECTOR (7 downto 0) := 10001000; Varijabla moe biti koritena samo unutar sekvencijalnog koda, a deklarie se samo u deklarativnom dijelu procesa, funkcije ili procedure. Operator dodjeljivanja za varijablu je := .

SIGNAL VS VARIABLE
Kao to je reeno prije, nije lako odabrati izme u signala i varijable. Glavne razlike su predstavljenje u tabeli ispod. SIGNAL Dodjela Zadatak <= Predstavlja unutranje veze VARIABLE := Predstavlja lokalne informacije lokalno Izmjena vrijednosti mogua trenutno U procesu, funkciji ili proceduri.

Scope Ponaanje

globalno Izmjena vrijednosti nije mogua trenutno U paketu, entitetu ili arhitekturi

Koritenje

2
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija edina@fit.ba

U kodu ispod prikazane su razlike izme u signala i varijabli... MULTIPLEKSER 4U1 koritenje signala ------------------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------------------------------------------------ENTITY mux IS PORT (a, b, c, d, so, s1 : IN STD_LOGIC; Y: OUT STD_LOGIC); END mux; ------------------------------------------------------------------------------------ARCHITECTURE not_ok OF mux IS SIGNAL sel : INTEGER RANGE 0 to 3; BEGIN PROCESS (a, b, c, d, s0, s1) BEGIN sel <=0; IF (s0='1') then sel <=sel+1; END IF; IF (s1='1') THEN sel <=sel+2; END IF; CASE sel IS WHEN 0 =>y<=a; WHEN 1 =>y<=b; WHEN 2 =>y<=c; WHEN 3 =>y<=d; END CASE; END PROCESS; END not_ok;

3
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc MULTIPLEKSER 4U1 koritenje varijabli

Fakultet informacijskih tehnologija edina@fit.ba

------------------------------------------------------------------------------------LIBRARY ieee; USE ieee.std_logic_1164.all; ------------------------------------------------------------------------------------ENTITY mux IS PORT (a, b, c, d, so, s1 : IN STD_LOGIC; Y: OUT STD_LOGIC); END mux; ------------------------------------------------------------------------------------ARCHITECTURE ok OF mux IS PROCESS (a, b, c, d, s0, s1) VARIABLE sel : INTEGER RANGE 0 TO 3; BEGIN sel :=0; IF (s0='1') then sel :=sel+1; END IF; IF (s1='1') THEN sel :=sel+2; END IF; CASE sel IS WHEN 0 =>y<=a; WHEN 1 =>y<=b; WHEN 2 =>y<=c; WHEN 3 =>y<=d; END CASE; END PROCESS; END ok;

4
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc Rezultati simulacije:

Fakultet informacijskih tehnologija edina@fit.ba

Za not_ok mux

za ok mux

5
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

PROJEKTOVANJE SKLOPA I OSNOVNI TIPOVI PODATAKA U VHDL-U


Design flow Jedna od osnovnih prednosti jezika VHDL je to omoguava sintezu logikih kola ili sistema u programibilni ure aj(PLD ili FPGA) ili ASIC. Dizajn zapoinjemo pisanjem VHDL koda koji se zatim spremi u file s ekstenzijom .vhd i ima isto ime kao i ENTITET Prvi korak u procesu sinteze je kompajliranje. Kompajliranje je proces prevo enja VHDL (high-level) koda, koji opisiva kolo na RTL-u (Register Transfer Level) u netlist-u na najniem nivou (gate level). Slijedei korak je optimizacija. U njemu se dizajn moe simulirati, jer se izvodi na nivou logikih kola (AND, OR, NOT). Nakon sto se izvri optimizacija, slijedi generiranje fizikog izgleda za PLD/FPGA ipove, taj se korak zove razmjetanje i povezivanje (Place and Route) VHDL se moe iskoristiti da bi se za opis sklopovlja koristila tri pristupa. Ova tri razliita pristupa su strukturalna, podatkovna, i funkcionalna metoda za opis sklopovlja (hardvera). Projektovanje sklopa Projektovanje nekog sklopa sastoji se od niza koraka od kojih je svaki idui korak na nioj razini apstrakcije, tj. blii je samom sklopovlju. U nastavku je dan redoslijed po kojemu se obavlja projektiranje, a masnim slovima oznaeni su pojmovi specifini za modeliranje sklopova: Opis funkcionalnosti sklopa Simulacija sklopa Implementacija sklopa u ciljnoj tehnologiji Izrada prototipa Otvaranje novog projekta Dodavanje VHDL modela projektu

Opis funkcionalnosti sklopa Sklop je mogue opisati na dva naina. Prvi nainslian programiranju, tj. izradi programa opisivanje je ponaanja sklopa. U tom sluaju govorimo funkcijskom (odnosno ponaajnom) modelu. Druga mogunost je da opiemo sastavne elemente od kojih se sklop sastoji i nain me usobnog povezivanja elemenata. U ovom sluaju govorimo o strukturnom modelu. Elementi koje koristimo prilikom strukturnog opisivanja sklopa nazivaju se komponente te su i one opisane bilo ponaajno ili strukturno. Simulacija sklopa Nakon to je sklop opisan potrebno je provjeriti ispravnost opisa to se obavlja simulacijom. Ulaz simulatora je niz ispitnih uzoraka koje simulator postavlja na ulaze sklopa koji se simulira te se rauna odziv, tj. izlaz. na osnovu izlaza moe se zakljuiti da li je sklop ispravno opisan. Npr. ako elimo testirati procesor potrebno mu je dodati RAM

1
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

i ROM kako bi se on mogao testirati, te u tom sluaju govorimo o ispitnoj okolini koja se sastoji od RAM-a i ROM-a i ispitivane komponente procesora. Implementacija sklopa u ciljnoj tehnologiji U ovom koraku opisani sklop se prevodi u eljenu tehnologiju (FPGA, CPLD, ASIC, itd.). To se esto izvodi automatizirano budui da se radi o dosta kompleksnom koraku. Podaci ovog koraka mogu se koristiti u prethodnom koraku kako bi se poboljala tonost simulacije. Recimo, u ovom koraku saznajemo kanjenja na sklopu koja se u koraku 2. nisu uzimala u obzir, ali koja mogu utjecati na dizajn. Izrada prototipa Uprkos simulaciji jo nije sigurno da e sklop nakon proizvodnje ispravno raditi te je potrebno izvesti probne primjerke (prototipove) i testirati ih kako bi se utvrdila njihova ispravnost. U sluaju FPGA i CPLD ure aja izrada probnih primjeraka svodi se na programiranje sklopova, dok se u sluaju ASIC-a tvornici alju podaci dobiveni u koraku 3 na osnovi kojih tvornica izra uje ipove. Apstrakcijski nivoi Algoritam, Nivo prijenosa na registre(RTL), i Nivo ulaza i izlaza (Gate level).

Algoritme nije mogue sintetizirati, RTL je input za sintezu, nivo ulaza/izlaza je output sinteze. Razlika izme u ova tri nivoa apstrakcije je u vremenskom definiranju. Gate level opis se sastoji od mree ulaza , izlaza i registara iz tehnoloke biblioteke, koje sadre kanjenja ovisna o tehnologiji za svako kolo. Opis sadri listu kola (komponenti) koritenih u dizajnu. Drugi dio sadri instanciranje komponenata i njihovu povezanost.

2
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

RTL (Register Transfer Level) model, dizajn je odvojen u spremine elemente, i.e. Flip/Flop-ove ili registre, i kombinatorika koja ima funkciju prijenosa od jednog registra do sljedeeg.

TIPOVI PODATAKA

Primjer jednostavnog projekta

Komponente (ponavljanje) Entity (entitet) blok HDL dizajna se koristi za deklaraciju I/O portova na kolu, dok se opisni kod nalazi unutar architecture bloka. Proces se sastoji od konkurentih naredbi, postoji samo unutar arhitekture, nekoliko procesa se moe izvravati konkurentno, izvrenje se kontrolira bilo listom osjetljivosti ili wait iskazima.

3
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc Osnovni tipovi podataka

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

Svi tipovi dozvoljeni u VHDL-u se sastoje od svega, od skalarnih brojanih tipova do sloenih nizova i unosa za tipove fajl-ova.Prvi korak u odra ivanju tipova podataka je razmatranje VHDL objekta koji mogu sadravati razliite tipove podataka. Tipovi objekata VHDL objekti mogu biti nesto od navedenog: Signal, koji predstavlja povezivajue ice koje spajaju portove instanciranja komponenti. Varijabla se koristi za lokalnu pohranu privremenih procesa. Konstanta, predstavlja specifinu, konkretnu vrijednost. Signali ovdje nisu mogli biti koriteni za skladitenje podataka iz slijedeih razloga: Varijable su uinkovitije jer se dodjela vrijednosti (inicijalizacija) vri odmah prilikom deklaracije, dok je taj dio kod signala odgo en za kasnije. Varijable zauzimaju manje memorije, dok signali trebaju vie informacije za atribute i podatke o kasnijoj inicijalizaciji. Konstante Konstantni objekti su nazivi kojima su dodjeljene specifine(konkretne) vrijednosti tipa. Slue za bolju dokumentaciju modela i lake auriranje. Kod koritenja vrijednosti 3.1414, lake je definisati konstantu nego je koristiti direktno u modelu: CONSTANT OI: REAL := 3.1414; Openito: CONSTANT ime_konstante {, ime_konstante} : naziv_tipa[:=vrijednost]; Konstante imaju ista pravila za opseg vrijednosti kao i signali. Novi korisniki tip Da bismo definirali novi tip moramo napraviti deklaraciju tipa. Deklaracija definira ime tipa i opseg vrijednosti tipa. Deklaracija tipova podataka se navode u dijelu koda sa deklaracijom paketa, deklaracijom entiteta, arhitektura, podprograma i procesa. Deklaracija tipa izgleda ovako : TYPE naziv_tipa IS oznaka_tipa; 4 su glavne kategorije tipa podataka: skalarni, kompozitni, pristupni i file tipovi. Skalarni tipovi ulkljuuju sve jednostavne kao to su integer i real. Kompozitni ukljuuju nizove i recorde. Tipovi pristupa su ekvivalentni pointerima u tipinim programskim jezicima i file tipovi daju mogunost deklaracije file objekata sa korisniki definisanim tipovima. podataka, vidljivih samo unutar

4
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc Primjer:

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

Signali Za razliku od uobiajenih programskih jezika, VHDL osim varijabli poznaje i tzv. signale koji slue za modeliranje vodia te logikih i memorijskih elemenata u sklopovima. Primjerice, sljedei izraz definira logika I vrata s dva ulaza: sigA <= sigB AND sigC; dok sljedei izraz povezuje izlaz prethodnih logikih vrata na ulaz nekog drugog signala sigD <= sigA;

Primjeri SIGNAL x : BIT; -- x je signal tipa BIT SIGNAL y: BIT_VECTOR (3 DOWNTO 0); --y je 4bitni vektor sa krajnjim lijevim bitom MSB SIGNAL w: BIT_VECTOR (0 TO 7);--w je 8bitni signal sa krajnjim desnim bitom MSN Postavljanje vrijednosti: x <= 1; -- x je jednobitni signal ija je vrijednost 1 y <= 0111; -- y je 4bitni signal vrijednosti 0111 sa -- MSB-om 0. w <= 01110001 --(8bitni signal sa MSB=1) STD_LOGIC STD_LOGIC i STD_LOGIC_VECTOR je 8bitni logiki sistem
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

Veina std_logic nivoa je namijenjena samo za simulaciju (nije mogua sinteza), ali su 0, 1, Z (visoka impedansa) sintetizibilni. Tipovi: BOOLEAN: True ili False INTEGER: 32-bitni integeri NATURAL: ne-negativni integeri REAL: realni brojevi. Fiziki literali: za opisivanje npr.voltae i sl. Fizikih vrijednosti(nije ih mogue sintetizirati) Literali karakteri: ASCII karakteri (nesintetizibilni) SIGNED i UNSIGNED(u std_logic_arith paketu ieee biblioteke) dozvoljavaju aritmetike operacije

Aliasi Alias definira drugo ime za signal ili dio signala. Obino se koriste za izuzimanje odre enih dijelova bit_vectora. signal instruction: bit vector(31 down to 0); alias epode: bit_vector(6 downto 0) is instruction(31 downto 25); ... opcode <= "1010101"; -- Set the opcode part of an instruction code. Primjeri x0 <= 0 --bit, std_logic ili std_ulogic --vrijednost 0

X1 <= 00011111 -bit vector, std_logic_vector x2 <= 101111 -- 47 binarno x3 <= B10111 --moe i ovako x4 <= O47 x6 <= X2F n <= 1200; IF ready THEN y <= 1.2E-5 SIGNAL a: BIT; SIGNAL b: BIT_VECTOR(7 DOWNTO 0); SIGNAL c: STD_LOGIC; SIGNAL d: STD_LOGIC_VECTOR(7 DOWNTO 0) SIGNAL e: INTEGER RANGE 0 TO 255; --oktalno 47 --heksadecimalno 47 --integer --boolean koji se izvrava --kada je signal ready = TRUE --realni, nesintetizibilni

6
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc a<=b(5); --correct(isti skalarni tip: BIT) b(0)<=a; --correct(isti skalarni tip: BIT); c<=d(5); --correct(isti skalarni tip: STD_LOGIC) d(0)<=c; --correct(isti skalarni tip: STD_LOGIC) a<=c; b<=d; e<=b; e<=d; --incorrect(razliiti tipovi: BITxSTD_LOGIC) --incorrect(razliiti vektori: BIT i STD_LOGIC)

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

--incorrect(razliiti tipovi: INTEGER i BIT_VECTOR) --incorrect(razliiti tipovi: INTEGER i std_logic_vector)

Korisniki definirani tipovi Predefiniran definiran integer: TYPE integer IS RANGE -2147483647 TO 2147483647 Predefiniran definiran natural: TYPE natural IS RANGE 0 TO +2147483647; Korisniki definiran set integera: TYPE my_integer IS RANGE -32 TO 32; Korisniki definiran set integera: TYPE student_grade IS RANGE 0 TO 100; Korisniki definiran BIT_VECTOR: TYPE bit_vector IS ARRAY (NATURAL RANGE <>) OF BIT; Korisniki definiran enumerated tip: TYPE color IS (red, green, blue, white); Podtipovi SUBTYPE my_logic IS STD_LOGIC RANGE 0 TO Z; --Budui da u STD_LOGIC spada(X, 0, 1, Z, W, L, H,-), tako da je podtip my_logic = (0, 1,Z); Kod ukljuivanja biblioteka koristi se kljuna rije library, a za ukljuivanje paketa se koristi kljuna rije use: library lib_name; -- make library visible use lib_name.pkg_name.all; -- make package visible

Nizovi Nizovi su kolekcije objekata istog tipa. Mogu biti:


Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

1D(vektor), 2D(niz skalara) ili 1Dx1D(niz vektora), mogu postojati nizovi veih dimenzija, ali onda nisu sintetizibilni. Skalari mogu biti neki od slijedeih tipova: BIT, STD_LOGIC, STD_LOGIC i BOOLEAN Vektori: BIT_VECTOR, STD_LOGIC_VECTOR, STD_ULOGIC_VECTOR INTEGER, SIGNED, UNSIGNED i

Ne postoje predefinirani 2D ili 1Dx1D nizovi, oni se moraju specificirati od strane korisnika. Da bi to uradili, moramo prvo definirati tip koji emo koristiti, zatim emo koristei taj tip definirati signal, varijablu ili konstantu. TYPE ime_tipa IS ARRAY (specifikacija) OF tip_podatka; Da bismo iskoristili novi niz deklariramo signal: SIGNAL ime_signala: tip_signala [:=inicijalna_vrijednost]; Inicijalna vrijednost je opcionalna, samo je za simulaciju. Primjer: 1Dx1d niz Primjerice, elimo kreirati 1Dx1D niz vektora, svaki 8 bita dug. Svaki vektor je red, a niz je matrica. Recimo da elimo da krajnji lijevi bit svakog vektora bude MSB, a gornji red je red 0. Slijedi implementacija niza: Prvi nain: TYPE row IS ARRAY (7 DOWNTO 0) OF STD_LOGIC; --1D niz TYPE matrica IS ARRAY (0 TO 3) OF row; --1Dx1D niz SIGNAL x: matrica;--1Dx1D signal Drugi nain: TYPE matrica IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR (7 DOWNTO 0); 2D niz: TYPE matrica2D IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC; Inicijalizacija signala ili varijable: ...:= 0001; --za 1D niz ...:=(0,0,0,1) --za 1D niz

...:=((0,1,1,1),(1,1,1,0)); --2D niz Niz portova

8
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

ProgramiranjeI_sylabus.doc

Fakultet informacijskih tehnologija 1236@fit.ba (marija herceg); edina@fit.ba

U specifikaciji input i output pinova(PORTS) kola mogue je specificirati i portove kao nizove vektora. S obzirom da nije dozvoljeno definirati TYPE izraze u ENTITY bloku, rjeenje je deklarirati takve korisnike tipove u bloku PACKAGE koji e biti vidljiv u cijelom dizajnu ukljuujui ENTITY: LIBRARY ieee; USE ieee.std_logic_1164.all; PACKAGE my_data_types IS TYPE vector_array IS ARRAY (NATURAL RANGE <>) OF STD_LOGIC_VECTOR (7 DOWNTO 0); END my_data_types; Main code: LIBRARY ieee; USE ieee.std_logic_1164.all; USE work.my_data_types.all; --korisniki definiran paket ENTITY mux IS PORT (inp: IN VECTOR_ARRAY (0 TO 3); .....); END mux; ...;

9
Arhitektura kompjuterskih sistema::Vjezbe i workshop http://dl.fit.ba/

You might also like