AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA. (VHDL i FPGA)

Size: px
Start display at page:

Download "AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA. (VHDL i FPGA)"

Transcription

1 Radovan D. Stojanović AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA (VHDL i FPGA) ENTITY half_adder IS PORT( x, y, enable: IN BIT; carry, result: OUT BIT); END half_adder; 2008

2 SADRŽAJ UVOD 5 1 VHDL Uvod Nivoi modelovanja i apstrakcije Struktura VHDL programa Entitet Arhitektura Entitet + Ahitektura Vježba 1 Unos, kompajliranje i simulacija VHDL programa Vježba 2 Unos, kompajliranje i simulacija šematskog kola Deklaracija biblioteke Deklaracije paketa Package Vježba 3 Upotreba biblioteka i paketa Komentari Tipovi podataka Operatori Atributi Generic Paralelno kodiranje Sekvencijalno kodiranje Strukturno modelovanje

3 2 FPGA Osnove Uvod Aplikaciono specifična integrisana kola (ASIC) PLD kola FPGA Tehnologije programiranja PLD kola Konfigurisanje FPGA čipova Quartus II Upustvo Uvod Postupak instalacije i pokretanja Quartus-a II Kreiranje projekta Unos projekta opisanog VHDL kodom Kompajliranje (prevodjenje) projekta Simulacija projekta Kreiranje simbola Unos šematskog projekta Pridruživanje pinova i konfigurisanje FPGA čipa Primjeri za vježbu Primjer 1: DFF Primjer 2: Full Adder

4 4.3 Primjer 3: Up-counter Primjer 4: Binarni komparator Primjer 5: Counter+Comparator Primjer 6: Mux2to1 vektorskih podataka sa promjenljivom Dužinom Primjer 7: Mux4to1 pomoću Mux2to Primjer 8: Shift registar sa promjenljivom dužinom Primjer 9: RAM memory Primjer 10: State Machine Napredni dizajn: Primjer realizacije Fleksibilnog FPGA baziranog IIR filtra Literatura Prilog 1: UP3 edukaciona ploča

5 Ivanu i Matiji 4

6 Uvod Da li je moguće projektovati kolo sa više od 200 miliona tranzistora? Ručno, ne automatski, da. Stoga se danas poluprovodnička tehnologija i EDA (Electronic Design Automatisation) moraju posmatrati kao jedinstvena cjelina. Nemoguće je zamisliti razvoj poluprovodnika bez računara i vice versa. Pored složenosti, EDA uspješno rešava i probleme heterogenosti, skraćuje vrijeme do izlaska na tržište (time to market), smanjenjuje dimenzije i presudno doprinosi obaranju cijena. To su samo djelimični razlozi zašto su programski jezici i softverski alati za kompjutersko projektovanje elektronskih kola postali standardi u poljima edukacije i profesionalne primjene. Ovaj materijal je kreiran za potrebe grupe kurseva koji se drže na Elektrotehničkom fakultetu, Univerziteta Crne, a može poslužiti i ostalim ciljnim grupama koje se bave ovom problematikom. Podijeljen je na pet tematskih cjelina, za koje smo smatrali da su neophodne projektantu digitalnih sistema da bi postao familijaran sa procesom automatizovanog projektovanja. U prvom dijelu, vezanom za logičko projektovanje, dati su osnovni pojmovi o VHDLu, programskom jeziku za opis digitalnog hardvera koji je danas postao jedan od standarda. Čitalac se upoznaje sa osnovnim principima jezika, strukturi koda, bibliotekama, tipovima podataka i sl. Drugi dio se bavi fizičkim projektovanjem tj. implementacijom digitalnih sistema na nivou FPGA čipova, koji predstavljaju vrstu PLD kola čije su glavne osobine: veliki kapacitet, rekonfigurabilnost na svim nivoima (interkonekcije, logički blokovi, I-O blokovi), velika brzina rada, 5

7 prihvatljiva cijena, mala potrošnja itd. Kao takvi predstavljaju idelnu platformu za optimalnu hardverizaciju složenih digitalnih sistema i vrlo brzo su postali veoma popularni i široko rasprostranjeni. Jedan od konkretnih softverskih paketa za razvoj i projektovanje digitalnih sistema, kao i njihovu implementaciju u FPGA čipovima se opisuje u trećem dijelu. Riječ je o Alterinoj Quartus II platformi koja sadrži sve potrebne alate za opis, prevoñenje, optimizaciju, analizu, simulaciju, verifikaciju kao i za konfiguraciju (programiranje) FPGA čipova. Četvrto poglavlje daje veliki broj primjera za vježbanje VHDLa na nivou programiranja kombinacionih i sekvencijalnih kola. U ovom poglavlju se daje i primjer složenijeg dizajna namijenjen naprednijem učenju. Prilozi su dati u okviru petog poglavlja. Ukratko se opisuje UP3 edukacioni kit koji je korišten u procesu provjere funkcionalnosti predloženih primjera i složenijih projekata. Cilj autora je bio da studenti kroz praktičan rad ovladaju spektrom tehnika koje se primenjuju u ovoj oblasti i da nakon odslušanog kursa (ili skupa bliskih disciplina) budu u spremni da projektuju digitalne sisteme niske i srednje složenosti primjenom jednog od savremenih razvojnih alata. Stoga, metodologija izlaganja odstupa od uobičajenih i bazira se na principu «učenja kroz primjere», koja se pokazala veoma «omiljenom» i posebno efikasnom. U tekstu se daje veliki broj praktičnih ilustracija, primjera koda, tehnika programiranja, simulacije, verifikacije, a na kraju i praktične implementacije. Ideja o ovom tekstu, kao i pojedinim kursevima, bi vjerovatno ostala mrtvo slovo na papiru da nije bilo pomoći TEMPUS programa koji je kroz svoj projekat CD_JEP_40017_2005 pružio odgovarajuću finansijsku i infrastrukturalnu pomoć Fakultetu i autoru. I ovom prilikom im se iskreno 6

8 zahvaljujem. Zahvaljujem se i svim generacijama studenata dodiplomskih i poslijediplomskih studija koji su slušali neki od kurseva iz ove oblasti. Veliki broj njih je svojim mišljenjima, sugestijama, diplomskim i magistarskim radovima dao značajan doprinos u osmišljavanju i poboljšanju ovog teksta. Naročito dugujem zahvlanost Zoranu Jakšiću, dipl. ing. koji je nesebično pomagao u izradi ovog priručnika. Biću naročito zahvalan onima koji mi ukažu na propuste ili daju predloge za unapredjenje sledećeg izdanja. Podgorica, avgust, 2008 Autor, Radovan D. Stojanović 7

9 1. VHDL 1.1 Uvod VHDL predstavlja programski jezik za opis hardvera. Skraćenica je za engleski naziv Very High Speed Integrated Circuit Hardware Description Language. Opisuje ponašanje digitalnog elektronskog kola ili sistema, na osnovu čega se isto/i može kasnije fizički implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se VHDL i Verilog najviše koriste. Postoje i njihove verzije za opis analognih kola, VHDL-AMS i Verilog-AMS. Danas, VHDL predstavlja industrijski standard u automatizovanom projektovanju. Počeo se razvijati krajem 70-ih godina, a poslije nekoliko revizija dobija prvu standardizaciju kao IEEE godine IEEE 1076 je revidovan u IEEE standard (uobičajeno VHDL93), koji je danas uglavnom u upotrebi. Poslednja revizija napravljena je godine. VHDL je namijenjen sintezi i simulaciji digitalnih kola. Treba napomenuti da je simulacija uvijek moguća, dok postoje slučajevi kada to nije slučaj sa sintezom. Značajna prednost VHDL-a je što je nezavistan od izbora implementacione platforme. Sistem koji je u njemu razvijen može se fizički implementirati u CPLD (Complex Programmable Logic Device), FPGA (Field-Programmable Gate Array), kao i u ASIC (Application- Specific Integrated Circuit) čipovima. Najčešće se upotrebljavaju CPLD i FPGA varijante, gdje se hardversko konfigurisanje (programiranje) čipa obavlja pomoću odgovarajućeg interfejsa, a isti (čip) se može ponovo prekonfigurisati. 8

10 VHDL po elementima sintakse podseća na Pascal, C, C++ itd., ali se od njih suštinski razlikuje. Osnovna razlika je u tome što je VHDL, u suštini, paralelan jezik, a ne samo strukturalan kao što je to slučaj sa Pascalom ili objektno orijentisan kao što je C++. Pod pojmom paralelan se podrazumijeva da se elementi programa u suštini izvršavaju paralelno (konkurentno, istovremeno), jer VHDL nastoji da opiše realni digitalni sistem, gdje se izlaz mijenja istovremeno sa stanjima na ulazima. U strukturalnim programskim jezicima program se izvršava sekvencijalno, naredba po naredba. Ali, i ovdje postoje izuzeci, jedino izrazi pisani u okviru procesa, funkcija ili procedura se izvršavaju sekvencijalno. U realnim digitalnim sistemima imamo odgovarajuća kašnjenja različite prirode i VHDL omogućava njihovo modelovanje. Dakle, pomoću VHDLa je moguće veoma vjerodostojno modelovati fizičko ponašanje digitalnog hardvera. Aktivnosti vezane za projektovanje digitalnog kola mogu se ilustrovati dijagramom sa slike 1.1, gdje se uočavaju dvije faze, faza logičkog projektovanja i faza fizičkog projektovanja. Naš akcenat će biti na fazi logičkog projektovanja. Počinje se opisom projekta (kola) i to VHDLu na nivou više abstrakcije. Logička sinteza predstavlja aktivnost tokom koje alat za sintezu (kompajler) tumači VHDL kod i prevodi ga u prepoznatljive logičke module. Moduli mogu biti definisani na različitim hijerarhijskim nivoima. Na RTL (Register Transfer Level) nivou to može biti sabirač, multiplekser i sl.. Razlaganje (partitioning) podrazumijeva prevoñenje logičkih modula sa višeg nivoa u osnovne logičke ćelije koje se nalaze u biblioteci ćelija (npr. sabirač se prevodi na nivo XOR). Zato je neophodno da se opisu projekta pridruže podaci o željenim bibliotekama. Pre-lejaut simulacija ima zadatak da proveri da li su ispunjeni projektni zahtjevi i njome se proverava opis projekta u domenu ponašanja (tajming, zauzimanje resursa, kašnjenja, funkcionalnost itd...). 9

11 Faza fizičkog projektovanja počinje planiranjem površine. Pravi se raspored većih logičkih modula. Pri tome se vodi računa o tome da se logički elementi u jednom modulu taktuju istom frekvencijom. Razmatra se meñusobni uticaj pojedinih modula i donose strateške odluke o organizaciji čipa, veličini najdužih veza, kritičnom kašnjenju itd. Zato efekte koji mogu da proisteknu iz ove faze treba uključiti u procenu što ranije, najbolje još prije razlaganja. Razmeštaj (placement) pojedinih logičkih ćelija obavlja se sa ciljem minimiziranja površine čipa ili dužine svih veza (ili najduže veze) odnosno da se ne prekorače zadati dinamički parametri (kašnjenje). Pri tome, uzimaju se u obzir samo informacije o broju meñusobnih veza izmeñu ćelija, a ne i njihov stvarni položaj. Povezivanje (routing) je aktivnost tokom koje se trasiraju veze izmeñu pojedinih ćelija. Tek po okončanju ove aktivnosti poznate su tačne dužine veza. Tada se dobijaju precizne informacije o kašnjenju duž veza. Ekstrakcijom parametara kola iz lejauta dostupni su podaci o mnogim fizičkim parametrima jer se znaju dimenzije i položaji svih djelova lejauta. Kao rezultat ove aktivnosti dobija se lista opisa kola na tranzistorskom nivou (net lista). Net lista sadrži sve parametre neophodne za detaljnu simulaciju ponašanja kola. Post lejaut simulacija treba da verifikuje ispravnost cjelokupnog projekta. Ako rezultati ove simulacije potvrñuju specifikacije projekta, projektovanje u užem smislu je završeno. Tada mogu da se ekstrahuju podaci za izradu maski, čime je projekat spreman za izradu prototipa, odnosno programiranje, ako se radi o FPGA čipovima. Treba napomenuti da je u slučaju FPGA dizajna faza fizičkog projektovanja dosta automatizovana i da projektanti obraćaju malu pažnju na njene efekte prije svega zbog velikog izbora FPGA čipova izdašnih i po kapacitetu i po brzini, a malih varijacija u cijene koštanja. 10

12 Slika 1.1: Ilustracija toka projektovanja. 1.2 Nivoi modelovanja i apstrakcije Glavni cilj u automatizovanom projektovanju elektronskih sistema je postići što viši nivo abstrakcije u opisu problema; što je i bio slučaj sa ostalim programskim jezicima. Npr. množenje dva broja u C-u možemo izraziti jednom programskom linijom (c=a*b), ne vodeći računa da se ona izvršava na specijalnom, ni malo jednostavnom, hardveru i zahtijeva nekoliko taktova. Takav je slučaj i sa VHDL-om, što je opis udaljeniji od konkretne hardverske implementacije to je njegov nivo abstrakcije veći. Medjutim, način izražavanja abstrakcije može biti različit i kod VHDLa se poistovećuje sa nivoima modelovanja, koji se najčešće dijele u tri grupe: 11

13 1) Funkcionalni ili nivo ponašanja (behavior). 2) Strukturalni (structural) i 3) Fizički ili geometrijski (physical). Prvi nivo opisuje ponašanje sistema i samim tim predstavlja najviši nivo abstrakcije, slika 1.2. Opis ponašanja specificira relaciju izmedju ulaznih i izlaznih signala. To može biti jednostavni logički ili aritmetički izraz ili složenije forme kao što su RTL i algoritamski opis. Drugi nivo modeluje strukturu sistema u smislu povezivanja pojedinih cjelina. Asocira na šemu medjusobno povezanih logičkih kapija. Najniži nivo abstrakcije i najkonkretniji je fizički nivo gde se programer može spustiti do fizickog nivoa tranzistora, diode itd. Za nas će biti interesantna samo prva dva nivoa, a konkretan način implementacije hardvera će biti prepušten softverskim alatima koji će se koristiti. Slika 1.2: Nivoi modelovanja u VHDLu. 12

14 1.3 Struktura VHDL programa Generalno gledano VHDL program se sastoji iz tri dijela, slika ) deklaracije biblioteka i paketa, 2) deklaracije entiteta (entity) i 3) opisa arhitekture (architecture) Najprostija varijanta programa može sadržati deklaraciju entiteta i opis arhitekture. Slika 1.3: Osnovni strukturalni elementi VHDL koda. 1.4 Entitet Entity opisuje interfejs modula koji je opisan VHDL kodom. Ako zamislimo da VHDL program opisuje ponašanje jedne crne kutije, onda dio koji opisuje entitet opisuje spoljašnje tačke (portove) preko kojih ta crna kutija komunicira sa spoljašnim svijetom. To je u stvari lista koja sadrži specifikaciju ulaznih i izlaznih pinova kola. Sintaksa eniteta je: 13

15 ENTITY entity_name IS PORT ( port_name : signal_mode signal_type; port_name : signal_mode signal_type;...); END entity_name; Signal_mode može biti IN, OUT, INOUT ili BUFFER. IN i OUT su unidirekcioni pinovi, dok je INOUT bidirekcioni pin. BUFFER se koristi kada postoji potreba za internom upotrebom izlaza. Tip signala može biti BIT, STD_LOGIC, INTEGER itd, dok ime entiteta može biti bilo koje ime osim rezervisanih tj. ključnih riječi. Posmatrajmo prosto NI (NAND) kolo sa dva ulaza (a i b) i jednim izlazmom (c), slika 1.4. Definisanje entiteta za dato kolo izgledala: Slika 1.4: Prosto NI kolo. ENTITY nand_gate IS PORT ( a, b : IN BIT; c : OUT BIT ); END nand_gate; Prethodno kolo je definisano tako da ima tri pina - dva ulaza i jedan izlaz. Svi signali su tipa BIT. Ime entiteta je nand_gate. 14

16 1.5 Arhitektura Arhitekturom se opisuje način na koji kolo treba da funkcioiše. Njena sitaksa je: ARCHITECTURE architecture_name OF entity_name IS [declarations] BEGIN (code) END architecture_name; Kako je prikazano, arhitektura se sastoji iz dva dijela: deklarativni dio koji je opcion, gdje se signali, konstante i sl. deklarišu i dio za kod (počevši od ključne riječi begin). Kao i u slučaju entiteta i arhitektura može imati bilo koje ime, osim rezervisanih riječi. Arhitektura za gornje NI kola bi izgledala. ARCHITECTURE myarch OF nand_gate IS BEGIN c <= a NAND b; END myarch; Kolo vrši NI operaciju nad ulaznim signalima a i b i dobijenu vrijednost prosljeñuje na pin c. Ime ove arhitekture je myarch, a mora se naglasiti da se odnosi na entitet nand_gate. Arhitektura ne posjeduje deklarativni dio, dok dio za kod sadrži samo prostu dodjelu rezultata. Arhitekturnih djelova može biti više. Za sada ćemo podrazumijevati samo jedan. 15

17 1.6 Entitet + Ahitektura Jednostavni VHDL program predstavlja skup Entity + Architecture. Za slučaju NI kola program nand_gate.vhd bi izgledalo: ENTITY nand_gate IS PORT ( a, b : IN BIT; c : OUT BIT ); END nand_gate; ARCHITECTURE myarch OF nand_gate IS BEGIN c <= a NAND b; END myarch; Treba napomenuti da je ime VHDL programa strogo vezano za ime entiteta i moraju se poklapati. Ekstenzija za VHDL program je obično.vhd. 1.7 Vježba 1 - Unos, kompajliranje i simulacija VHDL programa Gornji primjer pokazuje kako se spajanjem koda ENTITY i ARCHITECTURE može doći do prostog VHDL programa. Da bi se provjerila ispravnost bilo kojeg VHDL programa mora se isti unijeti u neki od tekstualnih editora, provjeriti ispravnost njegove sintakse, izvršiti kompajliranje i na kraju simulacija. Navedene operacije se obavljaju u nekom od VHDL razvojnih alata (compiler + simulator) od kojih su najpoznatiji Alterin Quartus II, Symphony EDA, Mentor Graphics ModelSim, Xilinx VHDL ISE Tool itd.. 16

18 U sledećem primjeru upoznaćemo se sa unosom VHDL koda, provjerom njegove ispravnosti i izvršiti njegovo kompajliranje i simulaciju. Poslužićemo se primjerom polu-sabirača (half_adder) sa slike 1.5, a kao kompajler biće upotrijebljen Alterin Quartus II.. Slika 1.5: Polu-sabirač, (lijevo) simbol na nivou crne kutije, (desno) šematski prikaz u obliku logičkih ćelija KORAK 1: Na osnovu dosadašnjeg znanja o Entity i Architecture VHDL program polu-sabirača bi izgledao. ENTITY half_adder IS PORT( x, y, enable: IN BIT; carry, result: OUT BIT); END half_adder; ARCHITECTURE half_adder_b OF half_adder IS BEGIN carry <= enable AND (x AND y); result <= enable AND (x XOR y); END half_adder_b; Ali, problem još uvijek nije riješen, jer ne znamo dali je naš program ispravan u smislu sintakse, a da ne govorimo u smislu funkcionalnosti. Da 17

19 bismo riješili datu dilemu moramo imati odgovarajući kompajler i simulator za VHDL kod. KORAK 2: Upoznajmo se sa instaliranjem, pokretanjem VHDL kompajlera i simulatora u sastavu Quartus II programskog alata u okviru kojeg ćemo unijeti kod half_adder.vhd i provjeriti njegovu funkcionalnost. U tom cilju predjite na Poglavlje 3, pročitajte i odvježbajte operacije date u izložene u paragrafima 3.1 do Vježba 2 Unos, kompajliranje i simulacija šematskog kola Koristeći VHDL kod i simbol polusabirača iz Primjera 1.7 može se realizovati kolo punog sabirača (full_adder) prema šemi na slici 1.6. Potrebno je još jedno XOR kolo. U tom cilju upoznajmo se kako se digitalno kolo može šematski unijeti, kompajlirati i simulirati. Slika 1. 6: Šematski prikaz punog sabirača izraženo preko polu-sabirača i jednog XOR kola. Predjite na Poglavlje 3, pročitajte i odvježbajte operacije u okviru paragrafa

20 1.9 Deklaracija biblioteke Osnovna struktura biblioteke prikazana je na slici 1.7. Kod je organizovan u obliku funkcija, procedura, komponenti i sl, koji su smješteni u package, i dalje organizovani u biblioteke. BIBLIOTEKA PACKAGE FUNKCIJE PROCEDURE KOMPONENTE KONSTANTE TIPOVI Slika 1.7: Osnovna struktura biblioteke. Da bi se deklarisala biblioteka, dakle da bi postala vidljiva ostatku koda, potrebno je unijeti dvije linije koda - prva sadrži ime biblioteke i druga počinje ključnom riječju use: LIBRARY library_name; USE library_name.package_name.package_parts; Obično su bar tri package-a, iz tri različite biblioteke potrebna za bilo koji dizajn: ieee.std_logic_1164 (ieee biblioteka) standard (std biblioteka) work (work biblioteka) Odgovarajuće deklaracije bi izgledale na sljedeći način: LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY std; 19

21 USE std.standard.all; LIBRARY work; USE work.all; Biblioteke std i work su vidljive po default-u, zato ih nema potrebe posebno deklarisati, samo se biblioteka ieee mora eksplicitno uključiti. Ova biblioteka sadrži nekoliko package-a: - std_logic_ specificira std_logic (8 nivoa) i ustd_logic (9 nivoa) multi-valued logički sistem. - std_logic_arith - specificira logičke i komparatorske operacije nad podacima tipa signed i unsigned. Sadrži takoñe nekoliko funkcija za konverziju tipova podataka: conv_integer(p). - conv_unsigned(p,b),conv_signed(p,b), conv_std_logic_vector(p,b). - std_logic_signed - sadrži funkcije koje omogućavaju operacije nad std_logic_vector podacima tipa signed. - std_logic_unsigned - sadrži funkcije koje omogućavaju operacije nad std_logic_vector podacima tipa unsigned Deklaracije paketa - Package PACKAGE predstavlja skup deklaracija koje se mogu koristiti u nekom narednom projektu. PACKAGE posjeduje dio za deklaraciju i opciono može sadržati tijelo tj. BODY. Deklaracija i tijelo se smeštaju u posebnom fajlu koji mora imati isti naziv kao i sam PACKAGE. U okviru jednog ovakvog skupa mogu se nalaziti definicije za različite fukcije, procedure, komponente i sl.. Sintaksa (PACKAGE, deklaracija): PACKAGE package-name IS type-declarations; 20

22 subtype-declarations; signal-declarations; variable-declarations; constant-declarations; component-declarations; function-declarations; procedure-declarations; END package-name; Sintaksa (PACKAGE, tijelo (body), deklaracija): PACKAGE BODY package-name IS function-definitions; -- za funkcije definisane u PACKAGE deklaraciji procedure-definitions; -- za procedure definisane u PACKAGE deklaraciji END package-name; Primjer: Library ieee; Use ieee.std_logic_1164.all; Package example_package is Type byte is std_logic_vector (7 downto 0); Fuction and8 (a, b:in byte) return byte; End example_package; Package body example_package is Fuction and8 (a, b:in byte) return byte; Return a AND b; End and8; End example_package; 21

23 Upotreba PACKAGEa Da bismo pozvali PACKAGE na početku programa ili prije njegovog poziva potrebno je uključiti LIBRARY i USE komandu za dati PACKAGE. Najčešće put biblioteke u kojem je smešten PACKAGE se označava kao WORK. Sintaksa: LIBRARY WORK; USE WORK.package-name.ALL; Primjer: LIBRARY WORK; USE WORK.example_package.ALL; Entity test_package is Port ( x,y : in byte; z :out byte ); End test_package; Architecture test_package_arch of test_package is Begin Z=and8(w,y); End test_package_arch; 1.11 Vježba 3 Upotreba biblioteka i paketa Ovaj primjer nas upoznaje sa osnovnom strukturom VHDL koda (Library Package, Entity, Architecture). Ujedno, pokazuje kako se pravi PACKAGE i kako se isti usadjuje u strukturu složenijeg kola. 22

24 a) Projektovati VHDL kod za multipleksor 2u1 (mux2to1.vhd) u PACKAGE obliku, gdje su ulazno-izlazni podaci tipa STD_LOGIC, slika 1.8(lijevo). Priložiti kod i simulacione dijagrame. b) Projektovati multipleksor 4u1 (mux4to1.vhd), slika 1.8(desno), koristeći razvijeni PACKAGE mux2to1.vhd. Priložiti kod i simulacione dijagrame. Slika 1.8: Multipleksor 4u1 (mux4to1) dobijen preko 2u1 (mux2to1). Problem rešavamo u dva koraka. U prvom, projektujemo komponentu mux2to1 kao PACKAGE mux2to1.vhd, i to kao svaki drugi.vhd program, slika 1.9, uključujući kompajliranje i simulaciju, slika Obratiti pažnju kako se u drugom dijelu programa definiše komponenta mux2to1 koje će se kasnije upotrijebiti. Komponenta se mora dodatno definisati jer PACKAGE može sadržati više njih od kojih se svaka odnosi na odgovarajući entitet i arhitekturu. Nakon kompajliranja PACKAGEa prelazimo na drugi korak u kojem projektujemo mux4to1 na osnovu mux2to1. Njegova arhitektura je strukturalnog tipa i daje način usadjivanja komponenti. Tri mux2to1 komponente (u1, u2 i u3) su ugradjene sa tačnim mapiranjem ulazno/izlaznih signala. Npr. u1: mux2to1 PORT MAP(w0, w1, 23

25 sel0, I1) označava da komponeta u1 unutar arhitekture mux4to1 predstavlja PORT tipa komponente mux2to1 čija su četiri pina vezana na signale w0, w1, sel0 (ulazni) i I1(izlazni). Prema slici 1.8 može se vidjeti da I1 predstavlja interni signal, koji se u samoj arhitekturi mux4to1 mora definisati u formi SIGNAL. Na kraju je izvršena simulacija mux4to1 sklopa, što se može vidjeti na slici Slika 1.9: PACKAGE kod i kod u kojem se poziva dati PACKAGE. Slika 1.10: Simulacija mux2to1 PACKAGEa. 24

26 Slika 1.11: Simulacija mux4to1 kola. NAPOMENA: Pri kompajliranju mux4to1.vhd kao projekta u Qurtusu II, nije dovoljno ukključiti package sa USE work.mux2to1_package.all; već treba mux2to1.vhd dodati projektu sa Project-> Add/Remove files in Project 1.12 Komentari Komentar od teksta kojim je predstavljen VHDL kod odvaja se sa dvije ctrice -- --Ovo je komentar --Jos jedan komentar 1.13 Tipovi podataka VHDL sadrži veliki broj predefinisanih tipova podataka, specificiranih standardom IEEE Definicija konkretnih tipova podataka nalazi se, kako je to već ranije rečeno, u bibliotekama std i ieee. Package std biblioteke standard definiše sledeće tipove podataka: BIT, BOOLEAN, INTEGER i REAL. Package std_logic_1164 biblioteke ieee definiše tipove podataka std_logic, std_ulogic, std_logic_vector kao i std_ulogic_vector. 25

27 Package std_arith biblioteke ieee definiše tipove podataka signed i unsigned BIT i BIT_VECTOR Ova dva tipa su predefinisani tipovi u VHDLu. Mogu imati vrijednost 0 ili 1. BIT_VECTOR je niz podataka tipa BIT. Vektor koji sadrži sve bitove iste vrijedniosti može biti napravljen korišćenjem ključne riječi OTHERS. Primjeri: SIGNAL x: BIT; -- x je deklarisan kao jednobitni signal SIGNAL y: BIT_VECTOR (3 DOWNTO 0); -- y signal dužine 4 bita, zadnji lijevi MSB SIGNAL z: BIT_VECTOR (0 TO 7); -- z signal dužine 8 bita, zadnji desni MSB STD_LOGIC i STD_LOGIC_VECTOR Ovi tipovi podataka pružaju mogućnost definisanja više vrijednosti podataka u odnosu na tip BIT. Mogu imati sledeće vrijednosti: 0 normalna 0 1 normalna 1 Z stanje visoke impedanse X neodredjeno stanje STD_LOGIC i STD_LOGIC_VECTOR tipovi nijesu predefinisani i ako želimo da ih koristimo sledeće dvije library komande moraju biti uključene: library ieee; 26

28 use ieee.std_logic_1164.all; Ukoliko se std_logic_vector koriste kao binarni brojevi u aritmetičko-logičim operacijama tada je potrebno uključiti jedan od package-a, std_logic_signed ili std_logic_unsigned koji se nalaze u biblioteci ieee. To se može postići jednom od dvije naredne komande: use ieee.std_logic_signed.all; --za znakovne aritmeti ke operacije; use ieee.std_logic_unsigned.all; --za bez-znakovne aritmeti ke operacije; Primjeri: library ieee; use ieee.std_logic_1164.all; SIGNAL x: std_logic; -- x je deklarisan kao jednobitni signal SIGNAL y: std_logic_vector (3 DOWNTO 0); -- y je deklarisan kao signal dužine 4 bita iji je -- zadnji lijevi bit MSB SIGNAL z: std_logic_vector (0 TO 7); -- z je deklarisan kao signal dužine 8 bita iji je -- zadnji desni bit MSB x<= 1 ; y<= 00Z1 ; z<=(others=> 0 ); 27

29 Vrlo sličan tipu podataka std_logic_vector su tipovi podataka signed i unsigned. Primjer: SIGNAL x: signed(3 DOWNTO 0); SIGNAL y: unsigned (3 DOWNTO 0); Std_logic_vector po defaultu compiler tumači kao signed binarni broj zapisan u notaciji sa dvojnim komplementom pa praktično da nema razlike izmeñu njega i signed tipa podataka. Za razliku od njih tip podataka unsigned kako mu samo ime naslućuje predstavlaj binarni vector čija je vrednost isključivo pozitivna. Lako se zaključuje da je maximalan vrednost unsigned binarnog vektora duplo veća od signed vektora iste dužine. Vrlo sličan std_logic tipu podataka je i std_ulogic. Generalno gledano jedina razlika izmedju ova dva tipa podatka je u tome što std_ulogic standard uvodi jos jedno stanje ( U -unresolved). Definicija, dodeljivanje vrednosti ovakvom tipu podataka i slično, potpuno je isto kao i sa std_logic tipom podataka. Rad sa ovim tipom podataka, takoñe zahteva uključenje već pomenutih biblioteka BOLEAN Bolean je predefinisani tip podataka koji može imati dvije vrijednosti: TRUE i FALSE Primjer: signal x: bolean; 28

30 INTEGER Integer je predefinisani tip slično integer-u u drugim programskim jezicima, npr. u C -u. Uobičajeno koristi 32 bita za aritmetiku sa znakom. U slučaju kada želimo skratiti bitovnu dužinu upotrebljava se ključna riječ RANGE. Primjer: signal x : integer; signal z : integer range -256 to 256; Tip podataka NATURAL je ustvari INTEGER tip podataka za vrednosti od 0 do 2,147,483, ENYMERATION Nenumerisani tip omogućava korisniku da definiše vrijednosti koje će dati tip podataka sadržati. Sintaksa: TYPE identifier IS (value1, value2, ); Primjer: Type state_type is (S1, S2, S3) Signal state: state_type; State<=S1; ARRAY Predstavlja nizovni tip podataka, grupiše podatke odredjenog tipa u jednodimenzioni ili višedimenzionalni niz (vektor). 29

31 Sintaksa: TYPE identifier IS ARRAY (range) of TYPE Primjer: Type byte is array (7 downto 0) of bit; Type memory is array (1 to 128) of byte; Signal memory: memory_type; Memory(4)= ; Dvodimenzioni niz Kao i u drugim programskim jezicima i u VHDL-u je moguće definisati dvodimenzioni niz. Najpoznatiji i najčešće korišćeni slučaj u dizajnu kada je potrebno definisati neki dvodimenzioni niz jeste kada je potrebno dizajnirati neki od tipova memorije (RAM, ROM). U primerima koji slede dati su neki od slučaja korišćenaj dvodimenzionih nizova. Primjer: TYPE matrix IS ARRAY (0 TO 3) OF STD_LOGIC_VECTOR(7 DOWNTO 0); Singal a:matrix;... A(1)= ; Matrica definisana na ovaj način predstavlja ustvari vector skupa podataka tipa std_logic_vector. Zato je signalu ovako definisanog tipa moguće pristupati (dodeljivati vrednost) kao na način prikazan u prethodnom kodu. Ukoliko se 2D niz definiše kao na način prikazan u narednom primeru pristupanje podacima je malo drukčije. 30

32 TYPE array3 IS ARRAY (0 TO 3, 7 DOWNTO 0) OF STD_LOGIC; Singal a: array3;... A(1)(4)= 0 ; Primećuje se da se na ovaj način svakom bitu iz matrice mora odvojeno pristupati SUBTYPE SUBTYPE (Podtip) je verzija odgovarajućeg tipa podataka, ali definisana za odredjenu oblastvaženja. Na taj način se odredjeni tip, npr integer, može predefinisati da važi u oblasti koja nije predefinisana Sintaksa: SUBTYPE identifier IS type RANGE range; Primjer: SUBTYPE integer4 IS integer RANGE -8 to 7; SUBTYPE cell IS std_logic_vector(4 downto 0); TYPE Memory IS ARRAY(1 to 15) of cell; Neki standardni podtipovi su: NATURAL, integer tipa od 0 INTEGER MAX POSITIVE, integer tipa od 1 - INTEGER MAX 31

33 Konverzija podataka CONV_INTEGER() Ova funkcija pretvara STD_LOGIC_VECTOR SIGNED i UNSIGNED tip podataka u INTEGER. Njena upoterba zahtijava uključenje sledeće biblioteke. LIBRARY IEEE; Use IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL; Sintaksa: CONV_INTEGER(std_logic_vector); Primjer: LIBRARY IEEE; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL;... Signal forbitstd : std_logic_vector(3 downto 0); Signal n : integer;... N=conv_integer(forbitstd) 32

34 CONV_STD_LOGIC_VECTOR, CONV_SIGNED, CONV_UNSIGNED Ove funkcije pretvaraju tipove CONV_STD_LOGIC_VECTOR, CONV_SIGNED, CONV_UNSIGNED, INTEGER u neki drugi tip. Da bi se koristile i ove funkcije takoñe je potrebno uključiti biblioteke koje se koriste i za funkciju conv_integer. Sintaksa CONV_STD_LOGIC_VECTOR(N, word_length); CONV_SIGNED(N, word_length); CONV_UNSIGNED(N, word_length); Primjer: LIBRARY IEEE; USE IEEE.STD_LOGIC_UNSIGNED.ALL; USE IEEE.STD_LOGIC_SIGNED.ALL;... Signal x : std_logic_vector(3 downto 0); Sigal z : signed(5 downto 0); Sigal y : unsigned(5 downto 0); Signal n : integer;... x=conv_std_logic_vector(z, 4); z=conv_signed(y, 6); y=conv_unsigned(n, 6); Prikaz tipova podataka koji se koriste u VHDL i njihov opseg vrijednosti je dat u Tabeli 1.1. Treba napomenuti da VHDL podržava još 33

35 neke tipove podataka (npr real koji predstavlja cifre prikazane sa pokretnim zarezom), ali ovakav kod nije sintezibilan. Tabela 1.1: Prikaz tipova podataka koji se mogu koristiti u VHDL-u i njihovih mogućih vrednosti Tip podataka Moguće vrijednosti BIT, BIT_VECTOR 0, 1 STD_LOGIC, STD_LOGIC_VECTOR STD_ULOGIC, STD_ULOGIC_VECTOR BOOLEAN X, 0, 1, Z X, 0, 1, Z True ili False. NATURAL od 0 do 2, 147, 483, 647. INTEGER od -2,147,483,647 do +2,147,483,647. SIGNED od -2,147,483,647 do +2,147,483,647. UNSIGNED od 0 do 2,147,483,647. User-defined integer type User-defined enumerated type SUBTYPE ARRAY Podset od INTEGER. Enumerisan od strane korisnika. Single-type kolekcija od bilo kojeg tipa. Niz bilo kojeg tipa. 34

36 1.14 Operatori Predefinisani operatori u VHDL su Logički (Logical), Aritmetički (Arithmetic), Relacioni (Relational) i Pomjerački (Shift). U Tabeli 1.2 je data njihova sintaksa i funkcionalni karakter. Tabela 1.2 Neki od najčešće korišćenih operatora. Logički Operator Operacija Primjer AND AND Z<=X AND Y OR OR Z<=X OR Y NOT NOT Z<=X NOT Y NAND NAND Z<=X NAND Y NOR NOR Z<=X NOR Y XOR XOR Z<=X XOR Y NXOR NXOR Z<=X NXOR Y Aritmetički Operator Operacija Primjer + Sabiranje Z<=X + Y - Oduzimanje Z<=X - Y * Množenje Z<=X * Y / Deljenje Z<=X / Y 35

37 ** Stepenovanje Z<=X **2 MOD MODUL Z<=X MOD Y REM Osttak Z<=X REM Y ABS Apsolutna Vrednost Z<= ABS(X) Opearatori poreñenja Operacija Primjer = Јеdnako If (a=b) then /= Različito If (a /=) then > Veće If (a >) then < Manje If (a <) then >= Veće ili jednako If (a >=) then =< Manje ili jednako If (a =<) then Operatori pomeranja SLL SRL Operacija Logičko pomeranje ulevo Logičko pomeranje udesno Primjer X<=Y SLL 2 X<=Y SRL 3 36

38 SLA SRA Aritmetičko pomeranje ulevo Aritmetičko pomeranje udesno X<=Y SLA 2 X<=Y SRA 4 ROL Rotiranje ulevo X<=Y ROL 3 ROR Rotiranje udesno X<=Y ROR 1 Primjer: U narednom primjeru dat je prikaz jednostavnog kola koje obavlja funkciju sabiranja. Kao ulazni i izlazni tip podataka izabran je tip podataka signed dužine 4 bita. Primenjuje se operator sabiranja Example in/out=signed LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_arith.all; ENTITY adder1 IS PORT ( a, b : IN SIGNED (3 DOWNTO 0); sum : OUT SIGNED (3 DOWNTO 0)); END adder1; ARCHITECTURE adder1 OF adder1 IS BEGIN sum <= a + b; END adder1; 37

39 Slika 1.12: Prikaz rezultata simulacije za prethodni primjer Atributi VHDL podržava nekoliko tipova atributa. Vezani su za signale, promjenljive i podatke tipa type. Označavaju se sa ( ) iza čega slijedi naziv atributa. Sledeća tabela pokazuje nekoliko attributa vezanih za signale. Tabela 1.3: Atributi vezani za siginale. Atribut signal_name event signal_name active Funkcija Vraća Boolean vrijednost True ako se dogadjaj vezan za signal desi, suprotno daje False. Vraća Boolean vrijednost True ako se promjena signala desi, suprotno daje False. signal_name transaction Vraća signal tipa bit svakog trenutka kada se desi promjena (0 na 1 ili 1 na 0). signal_name last_event signal_name last_active Vraća vremenski interval od trenutka zadnjeg dešavanja signala. Vraća vremenski interval od trenutka zadnje promjene signala. signal_name last_value Vraća vrijednost signala prije zadnjeg dogadjaja. 38

40 signal_name delayed(t) Signal uzima iste vrijednosti kao signal_name, ali je pomjeren za vrijeme T. Uobičajeno T=0. signal_name stable(t) Vraća Boolean vrijednost True ako se promjena signala desila i ako je pri tom ostao stabilan vrijeme T, suprotno daje False. Uobičajeno T=0. signal_name quiet(t) Vraća Boolean vrijednost True ako u intervalu T nije bilo promjene, suprotno daje False. Uobičajeno T=0. Primjer: if (CLOCK event and CLOCK= 1 ) then -- Ovaj izraz proverava dali je naisla uzlazna ivica kloka Nekoliko atributa podržava skalarne ili potake tipa type, Tabela 1.4. Tabela 1.4: Atributi vezani za type. Atribut Vrijednost scalar_type left Vraća prvi lijevi. scalar_type right Vraća prvi desni. scalar_type low Vraća najmanju vrijednost. scalar_type high Vraća najveću vrijednost. scalar_type value(s) Vraća vrijednost koja korenspondira indeksu s. Primjer: type my_index is range 3 to 15; vraća: my_index left 3 my_index value(5) 5 my_levels left low 39

41 my_levels low low my_levels high highz my_levels value(dontcare) dontcare Slično je i sa vektroskim tipovima podataka, Tabela 1.5. Tabela 1.5: Atributi vezani za vektorske tipove podataka. Atribut MATRIX left(n) MATRIX right(n) MATRIX high(n) MATRIX low(n) MATRIX length(n) MATRIX range(n) MATRIX reverse_range(n) Vraća Prvi lijevi od indeksa N Prvi desni od indeksa N Najveću od indeksa N Najmanji od indeksa N Broj elemenata od indeksa N Poredak up to Poredak downto Primjer: type MYARR1 is array (-2 to 4) of integer; vraća: MYARR1 left -2 MYARR1 right 4 MYARR1 high 4 MYARR1 reverse_range 4 downto to GENERIC Promjenljiva koja je deklarisana korišćenjem ključne riječi GENERIC predstavlja konstantu koja se može samo čitati. Ova riječ se upotrebljava najčešće kada je potrebno projektovati dizajn čiji se neki od parametara mogu mijenjati (npr. dubina i širina memorije, dužina registra i sl.). Za 40

42 dizajnera je mnogo jednostavnije da napravi komponentu koja se u daljem radu može koristiti nezavisno od parametara kakvi su već navedeni. Primjer: library ieee; use ieee.std_logic_1164.all; use ieee.numeric_std.all; entity signed_adder is generic (DATA_WIDTH : natural := 8); port ( a : in signed ((DATA_WIDTH-1) downto 0); b : in signed ((DATA_WIDTH-1) downto 0); result : out signed ((DATA_WIDTH-1) downto 0) ); end entity; Vrijednost generičke komponente takoñe može biti definisana pri deklaraciji ili usadjivanju komponente. Primjer: Component signed_adder generic (DATA_WIDTH : natural := 8); port ( a : in signed ((DATA_WIDTH-1) downto 0); b : in signed ((DATA_WIDTH-1) downto 0); result : out signed ((DATA_WIDTH-1) downto 0) ); End component; 41

43 Sada, ukoliko bi se ova komponenta koristila u nekom novom dizajnu parametrizacija se može obaviti vrlo jednostavno kako to pokazuje naredni primer. architecture slozeniji_dizajn Begin SA: signed_adder generic map(data_width=>8) port map(a=>x, b=>y, result=> z); 1.17 Paralelno kodiranje (Concurrent Code) VHDL kod može biti paralelan (concurrent) ili sekvencijalan. Ova podjela je vrlo bitna jer, omogućava bolje razumijevanje kakve se komande koriste gdje, kao i posledice primjene jednog odnosno drugog načina. Komande koje se koriste za pralelno kodiranje su WHEN i GENERATE. Pored njih koriste se i osnovni operatori (AND, OR, *..) i na kraju kao poseban vid pridruživanja, nazvan BLOK može se koristiti za ovakav način projektovanja WHEN Kao što je već pomenuto u uvodu ovog poglavlja, WHEN je jedna od fundamentalnih paralelnih komandi (zajedno sa operatorima i GENERATE). Javlja se u dva oblika: WHEN / ELSE (prosto WHEN) i WITH / SELECT / WHEN (selektovano WHEN). Sintaksa je prikazana u sledećem tekstu. WHEN / ELSE: assignment WHEN condition ELSE assignment WHEN condition ELSE...; WITH / SELECT / WHEN: 42

44 WITH identifier SELECT assignment WHEN value, Kad god je sintagma WITH / SELECT / WHEN korišćena, sve moguće kombinacije moraju biti predviñene kodom, pa se ključna riječ OTHERS vrlo često koristi. Još jedna vrlo bitna ključna riječ kod ove naredbe je UNAFFECTED, kada nije potrebno izvršiti nijednu akciju. Primjer: With WHEN/ELSE outp <= "000" WHEN (inp='0' OR reset='1') ELSE "001" WHEN ctl='1' ELSE "010"; ---- With WITH/SELECT/WHEN WITH control SELECT output <= "000" WHEN reset, "111" WHEN set, UNAFFECTED WHEN OTHERS; Primjer: Potreno je napisati VHDL code koji će obavljati funkciju multipleksera 4u1. 4 ulaza treba da budu tipa std_logic, dok selekcioni ulazi (2) trebaju da budu tipa std_logic_vector(1 downto 0). Kolo treba da ima jedan izlaz tipa std_logic. LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY mux IS PORT ( a, b, c, d: IN STD_LOGIC; sel: IN STD_LOGIC_VECTOR (1 DOWNTO 0); 43

45 y: OUT STD_LOGIC); END mux; ARCHITECTURE mux2 OF mux IS BEGIN WITH sel SELECT y <= a WHEN "00", -- notice "," instead of ";" b WHEN "01", c WHEN "10", d WHEN OTHERS; -- cannot be "d WHEN "11" " END mux2; GENERATE GENERATE je još jedna komanda koja se koristi u paralelnom programiranju. Ona je ekvivalentna sekvencijalnoj komandi LOOP koja će biti obajašnjena u nekom od narednih poglavlja. Ono što se omogućava ovom komandom je da se dio koda može ponoviti odreñeni broj puta. Osnovna konstrukcija FOR / GENERATE sintakse je data u sledećem tekstu. label: FOR identifier IN range GENERATE (concurrent assignments) END GENERATE; Pored kombinacije FOR/GENERATE postoji mogućnost gradjenja koda kombinacijom IF/GENERATE (ekvivalentno IF komandi u sekvencijalnom kodu). IF/GENERATE se može usaditi u FOR/GENERATE petlji što prikazuje naredna sintaksa. label1: FOR identifier IN range GENERATE 44

46 ... label2: IF condition GENERATE (concurrent assignments) END GENERATE;... END GENERATE; Primjer: SIGNAL x: BIT_VECTOR (7 DOWNTO 0); SIGNAL y: BIT_VECTOR (15 DOWNTO 0); SIGNAL z: BIT_VECTOR (7 DOWNTO 0);... G1: FOR i IN x'range GENERATE z(i) <= x(i) AND y(i+8); END GENERATE; Vrlo bitna stvar o kojoj se mora imati na umu kada se FOR/GENERATE sintaksa koristi je ta da obje granice opsega moraju biti statičke. Ukoliko je jedna od granica nestatički parametar kod u opšetm slučaju neće biti sintenzibilan Sekvencijalno programiranje Ovaj model omogućava programiranje tako da se naredbe odigravaju sekvencijalno, baš kao u kompjuterskom programu. Sekvencijalne naredbe uključuju veliki broj standardnih konstrukcija kao što je pridruživanje promenljivih, if-then-else naredbe i petlje. Vrlo bitna stvar kod sekvencijalnog koda je da on nije ograničen samo na sekvencijalnu logiku. Korišćenjem sekvencijalnog koda može se dizajnirati bilo sekvencijalna, bilo kombinaciona logička kola. 45

47 Sekvencijalni kod se još naziva i behavioral code. Naredbe o kojima će biti reči u ovo poglavlju su sve sekvencijalne i one se mogu koristiti samo u okviru PROCESS-a, funkcija i procedura. One su IF, WAIT, CASE, and LOOP. VARIABLE se takoñe mogu koristiti samo u sekvencijalnom kodu PROCESS Naredbe koje se obavljaju sekvencijalno moraju se nalaziti u PROCESS bloku. Meñutim sama PROCESS naredba je paralelna jer se više PROCESS blokova odvijaju nezavisno jedan od drugog tj. paralelno. Više process blokova se takodje mogu kombinovati zajedno sa paralelnim naredbama.. Sintaksa: process-name: PROCESS (sensitivity-list) variable-declarations; BEGIN sequentional-statements; END PROCESS process-name; Process počinje da se izvršava onog momenta kada neka od promenljivih u sensitivity-list promeni svoju vrijednost. Kada se zadnja naredba process-a izvrši process se zaustavlja sve do onog momenta kada se ponovo desi promena stanja nekog od signala u sensitivity-listi. Sintaksa: [label:] PROCESS (sensitivity list) [VARIABLE name type [range] [:= initial_value;]] BEGIN (sequential code) END PROCESS [label]; 46

48 Primjer: -- DFF LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff IS PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC); END dff; ARCHITECTURE behavior OF dff IS BEGIN PROCESS (clk, rst) BEGIN IF (rst='1') THEN q <= '0'; ELSIF (clk'event AND clk='1') THEN q <= d; END IF; END PROCESS; END behavior; Na ovom mjestu bi dobro bilo primijetiti razliku izmeñu pridruživanja naredbi signalu ili variabli odnosno operatorima koji se koriste u jednom odnosno drugom slučaju. 47

49 Ukoliko je nekom signal potrenbo dodati vrednost koristi se operator <=, a ukoliko se dodeljivanje vrednosti vrši nekoj variabli koristi se operator = WAIT Kada process sadrži sensitivnu listu sensitivity-list izvršavanje se prekida poslije zadnje komande unutar procesa. Jedna od alternativa senzitivnoj listi jeste WAIT komanda. U tom slučaju procesi p1 i p2 su ekvivalentni. p1: process is begin c <= a and b; wait on a, b; end process; ili p2: process (a, b) is begin c <= a and b; end process; Ukoiko umesto process sensitivitz liste programer radje koristi pristup sa WAIT naredbom često će koristiti WAIT UNTIL uslov. Primjer: PROCESS -- no sensitivity list BEGIN WAIT UNTIL (clk'event AND clk='1'); IF (rst='1') THEN output <= " "; ELSIF (clk'event AND clk='1') THEN 48

50 output <= input; END IF; END PROCESS; IF IF je sigurno jedna od najkorišćenijih naredbi. Gotovo svaki programski jezik poseduje IF naredbu pa tako i VHDL. Sintaksa IF naredbe u VHDL-u kao i jedan jednostavni primer dati su u tekstu koji sledi Sintaksa: IF conditions THEN assignments; ELSIF conditions THEN assignments;... ELSE assignments; END IF; Primjer: IF (x<y) THEN temp:=" "; ELSIF (x=y AND w='0') THEN temp:=" "; ELSE temp:=(others =>'0'); CASE CASE je još jedna naredba koja se koristi u sekvencijalnom kodu. Sintaksa: CASE identifier IS WHEN value => assignments; WHEN value => assignments;... 49

51 END CASE; Primjer: CASE control IS WHEN "00" => x<=a; y<=b; WHEN "01" => x<=b; y<=c; WHEN OTHERS => x<="0000"; y<="zzzz"; END CASE; CASE sekvencijalna naredba je vrlo slična sa naredbom WHEN kada se programiranje vrši paralelno. I ovde isto sve kombinacije za identifier moraju biti zadovoljene pa je i kod CASE naredbe vrlo česta upotreba ključne reči OTHERS. Još jedna vrlo korisna komanda koja se koristi u kombinaciji sa naredbom CASE je naredba NULL. Ova komanda se koristi kada nikakva akcija ne treba da se izvrši u nekom delu koda LOOP Kao što i sao ime ove naredbe naslućuje, LOOP se koristi kada je neki deo koda potrebno izvršiti odreñeni broj puta. Postoji više načina koji omogućavaju kreiranje petlji u VHDL FOR LOOP Ovo je petlja koja se izvršava tačno odreñeni broj puta. Sintaksa: [label:] FOR identifier IN range LOOP (sequential statements) END LOOP [label]; Primjer: FOR i IN 0 TO 5 LOOP x(i) <= enable AND w(i+2); 50

52 y(0, i) <= w(i); END LOOP; Korisno je primetiti sličnost izmeñu FOR LOOP sintakse u sekvencijalnom programiranju I kombinacije FOR GENERATE u paralelnom. I u ovom slučaju granice FOR petlje moraju biti statičke jer u protivnom kod neće biti sintentiyabilan WHILE LOOP Ovo je petlaj koja se ponavlja sve do onog momenta do koga je zadovoljen neki uslov. Sintaksa: [label:] WHILE condition LOOP (sequential statements) END LOOP [label]; Primjer: WHILE (i < 10) LOOP WAIT UNTIL clk'event AND clk='1'; (other statements) END LOOP; EXIT Ukoliko je potrebno petlju prekinuti u nekom momentu (kada je zadovoljen neki uslov) koristi se naredba EXIT. Primjer: FOR i IN data'range LOOP CASE data(i) IS WHEN '0' => count:=count+1; WHEN OTHERS => EXIT; END CASE; 51

53 END LOOP; NEXT Ukoliko neki uslov zahteva preskakanje jedne iteracije petlje I prelayak na narednu, koristi se naredba NEXT. Primjer: FOR i IN 0 TO 15 LOOP NEXT WHEN i=skip; -- jumps to next iteration (...) END LOOP; Funkcije i Procedure FUNCTION FUNCTION je dio sekvencijalnog koda. Namena ove ključne riječi je kreiranje funkcija koje će biti zamjena često ponavljanom setu naredbi (konverzija podataka, logičko aritmetičke operacije i sl). Pisanjem ovakvog koda omogućeno je lakše dijeljenje i ponovno korišćenje već urañenog posla. Funkcije se sastoje iz deklaracije i definicije. Sintaksa definicije funkcije: FUNCTION function_name [<parameter list>] RETURN data_type IS [declarations] BEGIN (sequential statements) END function_name; Pozivanje funkcije: 52

54 function-name(actuals); -- actuals su trenutni parametri koji se --prosledjuju u funkciju Primjer: Function body: FUNCTION positive_edge(signal s: STD_LOGIC) RETURN BOOLEAN IS BEGIN RETURN (s'event AND s='1'); END positive_edge; Function call: IF positive_edge(clk) THEN PROCEDURE Naredba PROCEDURE je vrlo slična naredbi FUNCTION. Jedina razlika izmeñu funkcije i procedure je ta što procedura kao rezultat može da vrati više od jedne vrednosti. Sintaksa: PROCEDURE procedure_name [<parameter list>] IS [declarations] BEGIN (sequential statements) END procedure_name; Primjer: Potrebno je napisati kod koji obavlja funkciju komparatora dva ulazna podatka. Ulazni i izlazni podaci su tipa integer. Najapre je potrebno 53

55 napisati proceduru koja će obaviti postavljeni tip zadatka pa posle tu proceduru pozvati u okviru process bloka. VHDL code: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY min_max IS GENERIC (limit : INTEGER := 255); PORT ( ena: IN BIT; inp1, inp2: IN INTEGER RANGE 0 TO limit; min_out, max_out: OUT INTEGER RANGE 0 TO limit); END min_max; ARCHITECTURE my_architecture OF min_max IS PROCEDURE sort (SIGNAL in1, in2: IN INTEGER RANGE 0 TO limit; SIGNAL min, max: OUT INTEGER RANGE 0 TO limit) IS BEGIN IF (in1 > in2) THEN max <= in1; min <= in2; ELSE max <= in2; min <= in1; END IF; END sort; BEGIN 54

56 PROCESS (ena) BEGIN IF (ena='1') THEN sort (inp1, inp2, min_out, max_out); END IF; END PROCESS; END my_architecture; Primjer sekvencijanog modelovanja Donji primjer opisuje BCD-SEDMOSEGMENTNI detektor. Za odredjenu BCD kombinaciju pali se odredjena kombinacija sedmosegmentnog dekodera. Kolo ima četiri ulaza i sedam izlaza Sequentional modeling example library ieee ; use ieee.std_logic_1164.all; entity bcd_7_seg is port( I: in std_logic_vector(3 downto 0); Segs: out std_logic_vector(1 to 7) ); end bcd_7_seg; architecture Behavioral of bcd_7_seg is BEGIN process(i) begin case I is when "0000" => Segs <= " "; when "0001" => Segs <= " "; when "0010" => Segs <= " "; when "0011" => Segs <= " "; 55

57 when "0100" => Segs <= " "; when "0101" => Segs <= " "; when "0110" => Segs <= " "; when "0111" => Segs <= " "; when "1000" => Segs <= " "; when "1001" => Segs <= " "; when others => Segs <= " "; end case; end process; end Behavioral; 1.19 Strukturno modelovanje Strukturno modelovanje omogućava manuelnu konekciju više komponenata u funkcionalnu cjelinu upotebom signala za povezivanje. Sve komponente koje se koriste moraju prethodno biti definisane svojim entitetom i arhitekturom što može biti u posebnim ili zajedničkom fajlu. Strukturno modelovanje je slično sastavljanju šeme složenog kola iz komponenti COMPONENT COMPONENT je još jedan način deljenja koda radi njegove lakše distribucije i višekratnog korišćenja. Na primjer, često korišćene komponente, kakve su flip-flopovi, brojači, multiplekseri itd, mogu biti smještene u odreñenu biblioteku tako da se mogu ponovo koristiti u nekom novom projktu bez potrebe za pisanjem njihovog koda. Da bi se odredjena komponenta (COMPONENT) mogla koristiti neophodno je prvo da bude deklarisana. Sintaksa deklaracije komponente: 56

58 COMPONENT component_name IS PORT ( port_name : signal_mode signal_type; port_name : signal_mode signal_type;...); END COMPONENT; Sintaksa povezivanja komponente: label: component_name PORT MAP (port_list); Deklaracije komponenti se najčešće smeštaju u neki PACKAGE. U primerima koji slede biće jasno prikazana deklaracija Primer deklaracije PACKAGE koji sadrži neke komponente: File my_components.vhd: LIBRARY ieee; USE ieee.std_logic_1164.all; PACKAGE my_components IS inverter: COMPONENT inverter IS PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC); END COMPONENT; input nand: --- COMPONENT nand_2 IS PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC); END COMPONENT; input nand: --- COMPONENT nand_3 IS PORT (a, b, c: IN STD_LOGIC; d: OUT STD_LOGIC); END COMPONENT;

59 END my_components; U prethodnom kodu dat je prikaz PACKAGE koji sadrži neke od osnovnih komponenti. Treba napomenuti da se dizjan ovih komponenti mora nalaziti u nekom drugom fajlu i da ENTITY svake od komponenti mora imati isti naziv kao i naziv komponente. Primer projekta u kome će se koristiti prethodno kreirani package sa datim komponentama: File project.vhd: LIBRARY ieee; USE ieee.std_logic_1164.all; USE work.my_components.all; ENTITY project IS PORT ( a, b, c, d: IN STD_LOGIC; x, y: OUT STD_LOGIC); END project; ARCHITECTURE structural OF project IS SIGNAL w: STD_LOGIC; BEGIN U1: inverter PORT MAP (b, w); U2: nand_2 PORT MAP (a, b, x); U3: nand_3 PORT MAP (w, c, d, y); END structural; PORT MAP Postoje dva načina da se komponente meñusobno povežu -poziciono i nominalno mapiranje. 58

60 Primjer pozicionog mapiranja: COMPONENT inverter IS PORT (a: IN STD_LOGIC; b: OUT STD_LOGIC); END COMPONENT;... U1: inverter PORT MAP (x, y); Primer nominalnog mapiranja: U1: inverter PORT MAP (x=>a, y=>b); Kao što se može zaključiti iz dva prethodna primjera, poziciono mapiranje je lakše za zapisivanje, ali je i verovatnoća da se greška u kodu napravi veća. Zato prvi način treba izbjegavati što je češće moguće osim kada se radi o nekim vrlo jednostavnim slučajevima GENERIC MAP Prilikom povezivanja komponenti moguće je takoñe izvršiti njihovu parametrizaciju. Slično kao što se komponenti definišu portovi prilikom povezivanja, isto tako na tome mestu je moguće definisati i njene generic parametre. Primjer: Dolje je dat prikaz koda koji bi trebao da obavlja funkciju detektora parnosti. Dužina ulaznog podatka se zadaje kao generic parametar. Pretpostaviti da je komponenta koja obavlja funkciju detektora parnosti ranije realizovana i da se definicija ove komponente nalazi u package-u parity_gen_package. Cilj vježbe je da se pokaže kako se u inicijalizaciji komponente vrši njena parametrizacija (generic parametar). 59

61 File my_code.vhd (actual project): LIBRARY ieee; USE ieee.std_logic_1164.all; LIBRARY work; USE work.parity_gen_package.all; ENTITY my_code IS GENERIC (n : POSITIVE := 2); -- 2 will overwrite 7 PORT ( inp: IN BIT_VECTOR (n DOWNTO 0); outp: OUT BIT_VECTOR (n+1 DOWNTO 0)); END my_code; ARCHITECTURE my_arch OF my_code IS COMPONENT parity_gen IS GENERIC (n : POSITIVE:=7); PORT (input: IN BIT_VECTOR (n DOWNTO 0); output: OUT BIT_VECTOR (n+1 DOWNTO 0)); END COMPONENT; BEGIN C1: parity_gen GENERIC MAP(n) PORT MAP(inp, outp); END my_arch; 60

62 2. FPGA Osnove 2.1 Uvod Integrisano kolo (IC), predstavlja čip napravljen od poluprovodničkog materijala koji obavlja različite funkcije: pojačavač, oscilator, tajmer, mokroprocesor, memorija itd. IC se satoji od velikog broja tranzistora, otpornika i kondenzatora. Postoji više parametara kojim se karakteriše jedno IC: implementaciona tehnologija, potrošnja, napajanje, brzina rada, složenost itd. U okviru ovog teksta za nas je značajna složenost i ona se obično mjeri stepenom integracije, koji predstavlja broj osnovnih elemenata (tranzistora, gejtova) realizovanih (integrisanih) u jednom kolu. Po stepenu integracije integrisana kola se mogu podijeliti u pet grupa: SSI (Small-Scale Integration). Kola malog stepena integracije. Sadrže do 100 osnovnih elemenata (logička kola, flip-flopovi). MSI (Medium-Scale Integration). Kola srednjeg stepena integracije,. Sadrže od 100 do 1000 osnovnih elemenata. (registri, brojači, aritmetička kola). LSI (Large-Scale Integration). Kola visokog stepena integracije. Sadrže od 1000 do elemenata. (8-bitni mikroprocesori, RAM, ROM). VLSI (Very Large Scale Integration), kola vrlo visokog stepena integracije sa do elemenata. (16- i 32-bitni mikroprocesori). ULSI (Ultra Large Scale Integration), kola ultra velikog stepena integracije, sa do i više osnovnih elemenata. 2.2 Aplikaciono specifična integrisana kola (ASIC) Prema metodlogiji projektovanja, integrisana kola možemo podeliti na: 61

63 Standardne komponente (Standard Integrated Circuits - SIC). U ovu grupu spadaju SSI, MSI, LSI, VLSI i ULSI kola, koja su, u tehnološkom smislu, proizvedena nezavisno od krajnjeg korisnika. Naime, kolo se proizvodi za nepoznatog korisnika, koji obično nema uticaj na njegove karakteristike. Takvo kolo se proizvodi u velikim serijama po niskoj cijeni. Primjeri su: analogni integrisani operacioni pojačavači, tajmeri, standardna digitalna kola (TTL, CMOS) itd. Aplikaciono orjentisana integrisana kola, ASIC (Application Specific Integrated Circuits). Ova kola su projektovana tako da odgovaraju specifičnoj namjeni. Za razliku od standardnih komponenata, funkciju ASIC kola definiše korisnik. ASIC kola se proizvode po narudžbi u velikim ili malim serijama što utiče na njihovu cijenu. Generalno gledano, mogu se izdvojiti dvije vrste ASIC kola: full-custom and semi-custom. 1. Full-custom kola se u potpunosti (do nivoa osnovnih elemenata) projektuje za tačno definisanu primjenu. Ova tehnologija omogućava najbolje karakterisike, ali je pojedinačna cijena dosta visoka. 2. Kod semi-custom kola, proizvoñač koristi pre-projektovane ili pre-fabrikovane (nedovršene) strukture koje doradom prilagoñava korisničkim zahtjevima. S obzirom da se na taj način skraćuje vrijeme pripremne proizvodnje, krajnja pojedinačna cena je niža, ali su performanse lošije u poreñenju sa full-custom dizajnom. U okviru semi-custom kola prepoznajemo sledeće kategorije: standard cell (standardne ćelije), kod kojih proizvoñač nudi veliki broj standardnih ćelija (logička kola, flipflopovi, ali i strukture SSI, MSI složenosti). Korisnik 62

64 isporučuje proizvoñaču šemu sačinjenu od standardnih ćelija, na osnovu koje se izrañuje čip. Pri tome proizvoñač ne startuje od početka već samo uklapa i povezuje pret-projektovane standardne ćelije. gate arrays (gejtovske matrice), koje se izrañuju na podlozi sačinjenoj od velikog broja pre-fabrikovanih jednostavnih logičkih elemenata ili MOS tranzistora koji nisu meñusobno povezani. Korisnik isporučuje proizvoñaču šemu do nivoa osnovnih elemenata na bazi koje on obavlja doradu, tj. metalizaciju, polaznog čipa. 3. PLD (Programmable Logic Devices), programabilna logička kola. To su integrisana kola koja se mogu konfigurisati (tj. programirati) od strane krajnjeg korisnika da bi ispunili zahteve koji se tiču konkretne aplikacije. Strukturu PLD kola čini fiksan skup komponenata kakvi su logički gejtovi, ili složeniji logički blokovi (LEs Logics Elements ili LCs Logic cells), meñusobno spojeni programabilnim vezama. Programiranjem ovih veza, krajnji korisnik definiše funkciju kola, a jednom programirana funkcija se može menjati u potpunosti ili delimično. Suštinska razlika u odnosu na ostale tipove ASIC kola je u tome da PLD kolo programira sam korisnik, čime je on u potpunosti nezavisan od proizvoñača. Ova su kola pretežno digitalnog karaktera, u novije vrijeme visokog kapaciteta. Idealna su za izradu prototipova ili manje serije. Cijena im je relativno prihvatljiva. 63

65 2.3 PLD kola Danas je na tržistu dostupan veliki broj tipova PLD kola, koji se razlikuju po načinu programiranja, složenosti (tj. logičkom kapacitetu, ili implementacionoj moći), unutrašnjoj strukturi, brzni rada, broju pinova. Broj dostupnih komponenata kod savremenih PLD-ova je veoma veliki tako da se sa aspekta složenosti ova kola protežu od MSI IC do VLSI IC. Raspoloživ logički kapacitet se kreće od nekoliko stotina do nekoliko stotina hiljada ekvivalentnih gejtova, a taktna učestanost od nekoliko desetina MHz do nekoliko stotina MHz. PLD kola se pakuju u kućištima sa nekoliko desetina do nekoliko stotina pinova. To znači da su PLD-ovi u stanju da implementiraju širok dijapazon kombinacionih i sekvencijalnih logičkih funkcija. Kao što je rečeno veoma su pogodna za brzu izradu prototipa, ali i konačnih rešenja koja će se proizvoditi u malim serijama. Vrijeme trajanja faze projektovanja kod ovih kola je veoma kratko. U slučaju da je potrebno kratko vrijeme pojavljivanja proizvoda na tržište ( time-to-market ), tada izbor PLD kola predstavlja pravo rešenje čak i sa aspekta cijene. Prema složenosti i organizaciji unutrašnje strukture, savremena PLD kola se mogu klasifikovati u sledeće tri kategorije: SPLD (Simple PLD). PLD kola srednjeg stepena integracije zasnovana na programabilnim AND-OR poljima, koja se koriste za implementaciju logičkih funkcija izraženih u formi suma proizvoda. CPLD (Complex PLD). Sastoje se od većeg broja programabilnih logičkih blokova povezanih preko centralizovane programabilne sprežne mreže. Po unutrašnjoj strukturi, logički blokovi su slični tipičnom SPLD kolu. 64

66 FPGA (Field Programmable Gate Array). PLD kola visokog stepena integracije koje se izvode kao polje velikog broja programabilnih logičkih blokova (ćelija) jednostavne strukture rasporeñenih na infrastrukturi koja ih meñusobno povezuje SPLD kola Glavni dio SPLD arhitekture čine dve programabilne logičke matrice: (i) AND matrica za formiranje logičkih proizvoda i (ii) OR matrica za sumiranje logičkih proizvoda. Pored AND-OR polja pojedine PLD arhitekture ovog tipa poseduju izlazni stepen koji tipično obezbeñuje: (1) povratne veze sa izlaza na ulaz, (2) mogućnost promjene polariteta izlaznog signala, (3) mogućnost da se pojedini eksterni priključci koriste bilo kao ulazi bilo kao izlazi i (4) memorijske elemente za memorisanje stanja izlazih signala, što omogućuje sintezu sekvencijalnih digitalnih kola. Uobičajeni naziv za SPLD kolo kod koga se obe logičke matrice mogu programirati je PLA (Programmable Logic Array). Pored PLA strukture u upotrebi su i AND-OR polja kod kojih je jedna od logičkih matrica fiksna, a druga programabilna. Konfiguracija fiksne matrice je permanentna, izvedena u toku fabrikacije kola i ne može se menjati od strane krajnjeg korisnika. AND-OR polje kod koga je AND matrica programabilna, a OR matrica fiksna se zove PAL (Programmable Array Logic). AND-OR polje sa fiksnom AND matricom i programabilnom OR matricom se zove ROM (Read Only Memory). U poreñenju sa ostalim tipovima PLD kola (CPLD i FPGA), SPLD kola se odlikuju relativno niskim logičkim kapacitetom (do nekoliko stotina ekvivalentnih gejtova). Glavna namena SPLD kola je zamena standardnih digitalnih kola niskog i srednjeg stepena integracije (Sl. 6) čime se postiže ušteda prostora na štampanoj ploči, pojeftinjuje proizvodnja i povećava pouzdanost u radu. Brzina rada SPLD kola je velika. Propagaciono kašnjenje od pina do pina je fiksno (ne zavisi od 65

67 implementirane funkcije i iznosi do nekoliko nanosekundi. SPLD kola su radjena u sklopu kurseva digitalne elektronike na BSc nivou studija pa im u ovom tekstu nećemo opširnije obradjivati CPLD Kao što je već rečeno, CPLD kola se sastoje od više logičkih blokova tipa SPLD, povezanih globalnom programabilnom sprežnom mrežom. Meñutim, čak i na nivou logičkih blokova, CPLD kola su obično značajno složenija od tipičnih SPLD kola. U većini slučajeva, logički blokovi koji se koristne kod CPLD kola se mogu smatrati nekom fomom proširenog PALa. Proširenje PAL se vrši u cilju ekonomičnijeg korišćenja logičkih proizvoda programabilne AND matrice. Kod klasičnih PAL-ova, raspodela logičkih proizvoda je fiksna u smislu da je svaki logički proizvod pridružen izlazu jednog izlaznog AND kola (tj. makroćelije). Logički proizvodi koji ostaju neiskorišćeni ne mogu se pridružiti nekoj drugoj makroćeliji. Takoñe, makroćelije ne mogu da imaju zajedničke logičke proizvode, pa u slučajevima kada se isti proizvod koristi za formiranje logičkih funkcija u više makroćelija, taj proizvod mora da se formira u svakoj makroćelji u kojoj se koristi. Kod savremenih CPLD kola, korišćenjem različitih tehnika, ovi nedostaci su u velikoj meri otklonjeni. Postoji više proizvodjača CPLD kola koja se i pored zajedničkih namjena razlikuju po unutrašnjoj arhitekturi Primjer CPLD kola, Altera Max Seria Firma Altera je razvila tri serije CPLD kola: Max 5000, 7000 i Sve tri serije imaju klasičnu CPLD arhitekturu koja se sastoji od skupa logičkih blokova, tj LAB blokova (Logic Array Block - LAB) meñusobno povezanih globalnom programabilnom prekidačkom matricom, tj. PIA matricom (Programmable Interconnect Matrix). 66

68 Arhitektura serije Max 7000 je prikazana na slici 2.1. Broj LAB blokova se kreće od 2 do 16, što zavisi od tipa kola. LAB blokovi imaju strukturu proširenog PAL-a i sadrže po 16 makroćelija svrstanih u dvije grupe od po 8 makroćelija. Kolo poseduje četiri pina posebne namene (globalni takt - GCLK, globalni reset - GCLR, dozvola izlaza OE1 i OE2). Preostali pinovi su bidirekcioni (U/I) i po potrebi se mogu konfigurisati bilo kao ulazi bilo kao izlazi. Svaki U/I pin je preko U/I bloka povezana sa jednom makroćelijom, kao što je to prikazano na slici 2.2. Kada se pin koristi kao izlaz, kontrola izlaznog trostatičkog bafera se ostvaruje pomoću jednog od dva globalna signala OE1 ili OE2. Kada se U/I pin koristi kao ulaz, izlaz tro-statičkog bafera je permanento postavljen u stanje visoke impedanse, a signal doveden na pin se vodi u PIA matricu, preko koje se može proslediti bilo kom LAB bloku. S obzirom da se izlaz svake makroćelije direktno vraća u PIA matricu, u slučajevima kada se U/I pin koristi kao ulaz odgovarajuća makroćelija ne ostaje neiskorišćene već se može upotrebiti za formiranje neke interne funkcije. 67

69 Slika 2.1: Altera Max 7000 CPLD Arhitektura Slika 2.2: U/I blok Altera Max 7000 CPLD serije. Struktura jedne makroćelije LAB bloka je prikazana na slici 2.3. Logičko polje je programabilna AND matrica, globalna na nivou LAB 68

70 bloka, koja se koristi za formiranje logičkih proizvoda. Za svaku makroćeliju, u logičkom polju se formira pet privatnih logičkih proizvoda. Mada se u praktičnim primenama većina potrebnih kombinacionih funkcija može realizovati sa pet logičkih proizvoda, neke kombinacione funkcije su složenije i zahtevaju veći broj logičkih proizvoda. Da bi se u takvim slučajevima obezbedilo ekonomično korišćenje raspoloživog logičkog kapaciteta LAB bloka, koriste se paralelni ekspanderi (parallel expanders) i deljivi ekspanderi (shared expanders). Paralelni ekspanderi predstavljaju varijantu koncepta preusmeravanja logičkih proizvoda kod koje makroćelija i može da pozajmi svoje logičke proizvode makroćeliji i+1 (ali ne i makroćeliji i-1). Dodatno ograničenje je da se logički proizvodi mogu preusmeravati samo unutar grupe od 8 makroćelija, ali ne i izmeñu ovih grupa ili izmeñu LAB blokova. Deljivi ekspanderi se formiraju tako što se po jedan privatni logički proizvod iz svake makroćelije invertuje i vraća u logičko polje, tako da se može pridodati bilo kom logičkim proizvodu koji se formira u LAB bloku. Takoñe, unakrsnim povezivanjem deljivih ekspandera mogu se formirati dodatni lečevi i flipflopovi. Makroćelija se sastoji od: logičkog alokoatora, OR kola za sumiranje logičkih proizvoda i programabilnog flipflopa. Posredstovom logičkog alokatora, na ulaze OR kola je moguće priključiti bilo koji podskup ulaznih logičkih proizvoda. Takoñe, bilo koji od ulaznih logičkih proizvoda se može koristiti za upravljanje flipflopom (taktovanje, asinhrono resetovanje i setovanje) i kontrolu polariteta kombinacione funkcije formirane na izlazu OR kola. Flipflop se može konfigurisati tako da funkcioniše kao D, T, JK ili SR flipflop. Za taktovanje i resetovanje flipflopa je moguće koristiti i globalne signale za takt i reset, što se reguliše multiplekserima 1 i 2. Makroćelija se može konfigurisati i da obavlja samo kombinacionu funkciju, tako što se multiplekserom 3 na U/I blok direktno priključuje izlaz EXOR kola. 69

71 Slika 2.3: MC serije MAX Zahvaljujući relativno velikoj brzini rada i širokom asortimanu, CPLD kola nalaze široku primjenu, počevši od implementacije jednostavne sprežne logike, do realizacije prototipova jednostavnijih ASIC kola. Važan razlog za sve veću primjenu CPLD kola je re-dizajn postojećih sistema baziranih na SPLD kolima, gdje se veći broj SPLD kola zamenjuje manjim brojem CPLD kola. Sistemi koji se sastoje od više meñusobno povezanih funkcionalnih modula mogu se efikasno realizovati pomoću CPLD kola, tako što se svaki modul realizuje jedim logičkim blokom. Opšte pravilo je da su za realizaciju u CPLD tehnologiji pogodni sistemi koji zahtijevaju složenu logiku sa malim brojem flip-flopova. Dobar primjer takve klase kola su konačni automati. Sva komercijalna CPLD kola su reprogramabilna, što omogućava jednostavnu i brzu izmjenu dizajna. CPLD kola koja su reprogramabilna u sistemu omogućavaju rekonfiguraciju hardvera (npr. izmena protokola kod kola za komunikaciju) bez isključenja napajanja. Zahvaljujući strukturi sprežne mreže, tajming se 70

72 može predvidjeti prije nego što je sistem realizovan, što predstavlja veoma bitnu prednost CPLD kola u odnosu na FPGA kola. 2.4 FPGA Uvod Kao što je već rečeno FPGA su PLD koja imaju vrlo visok kapacitet logike, slika 2.4. Osnovna razlika izmedju FPGA i CPLD kola ogleda se u tome što CPLD imaju logičke resurse sa velikim brojem ulaza ali ne raznolike, dok FPGA imaju veliki broj raznolikih logičkih elemenata. Slika 2.4: Fizički izgled FPGA čipova. FPGA kola sadrže oblasti ne angažovanih elemenata koji se nazivaju logički blokovi i raznih resursa za interkonekciju, a njihova konfiguracija se obavlja u toku programiranja od strane krajnjeg korisnika. Ilustracija tipične FPGA arhitekture je prikazana na slici

73 Slika 2.5: Ilustracija tipične FPGA arhitekture Postoje dvije osnovne kategorije FPGA kola : SRAM FPGA i Antifuse FPGA. Vodeći proizvodjači prve kategorije su Xilinx i Altera, a druge: Actel, Quicklogic and Cypress, Xilinx. Osnovna struktura Xilinx SRAM FPGA je matrično bazirana, što znači da svaki čip sadrži dvo dimenzionalnu matricu logičkih blokova koji mogu biti povezovani preko horizontalnih i vertikalnih kanala za rutiranje. Xilinx je uveo prvu FPGA familiju pod nazivom XC godine. Od tada su razvijene još tri serije XC3000, XC4000 i XC5000. Trenutno najpopularnija i najviše korištena familija XC4000 ima kapacitet više od ekvivalentnih gejtova. Logički blok ove familije, koji se naziva konfigurabilni logički blok (CLB) je zasnovan na look-up tabela (LUTs) konfiguraciji. LUT je mala, širine jedan bit, memoriska oblast koja ima svoju adresnu liniju a jedno bitni izlaz je ustvari LUT DATA izlaz. LUT sa k ulaza raspolaže sa 2 k x1 bitova memorije i može realizovati bilo koju logičku funkciju od njegovih k ulaza programiranjem tabela istine logičkih funkcija direktno u memoriji. XC4000 CLB sadrži tri odvojene LUT u konfiguraciji prikazanoj na slici 2.6. Dva četvorobitna LUT-a čine ulaze CLB-a, dok treći LUT 72

74 može služiti u kombinaciji sa druga dva. Osim toga svaki CLB sadrži po dva flip-flopa. Ovakva arhitektura dozvoljava da CLB inplementira širok opseg logičkih funkcija. Slika 2.6: Structura CLBa Xilinix SRAM FPGA. Jedna od namjena i osobina uredjaja sa velikom gustinom pakovanja je da mogu da podrže integraciju cijelog sistema, pa tako i čip XC4000 ima sistemski orjentisane osobine. Npr. svaki CLB sadrži kolo koje omogućava efikasno obavljanje aritmetičkih operacija, a LUT u CLB- u može biti konfigurisan kao read/write RAM. U seriji 4000E RAM blokovi su realizovani kao sinhroni RAM. Osim ovoga svaki XC4000 čip ima vrlo veliki broj AND kola na periferiji logičkih blokova što dozvoljava efikasnu implementaciju dekoderskih kola. Pored logike, druga ključna osobina FPGA kola su njihove strukture za interkonekciju. Kod XC4000 interkonekcija je aranžirana u obliku horizontalnih i vertikalnih kanala. Svaki kanal sadrži odredjeni broj kratkih žičanih segmenata koji obuhvataju jedan CLB, dužih segmenata koji obuhvataju dva CLB-a i vrlo dugih koji obuhvataju cijelu dužinu ili širinu čipa. Programabilni prekidači su sposobni povezati ulaze i izlaze CLB-a u 73

75 ožičeni segment ili povezati jedan ožičeni segment sa drugim. Šematski prikaz jednog dijela horizontalnih kanala za rutiranje unutar XC4000 je prikazan na slici 2.7. Na slici nisu dati CLB ulazi i izlazi i rutirajući prekidači. Slika 2.7: Horizontalni kanali za rutiranje kod XC Alterina FLEX 8000 serija, slika 2.8, je bazirana na hijerarhiji od tri nivoa, koja se mnogo češće sreće kod CPLD kola. Najniži nivo u ovoj hijerarhiji sadrži look-up tabele, što nije slučaj kod CPLD, pa je to jedan od razloga što je FLEX8000 kategorizovan u FPGA kola. Možda je najispravnije reći da je FLEX8000 kombinacija FPGA i CPLD tehnologije. FLEX je SRAM bazirana serija koja sadrži četiri ulazne LUT kao bazične logičke blokove. Kapacitet logike za ova kola kreće se od 4000 pa do više od gejtova. Šematski prikaz arhitekture je dat na donjoj slici. 74

76 Slika 2.8: Arhitektura Alterinog FLEX 8000 kola. Osnovni logički blok, koji se naziva logički elemenat (LE) sadrži četiri ulazne LUT, flip-flop i kolo prenosa specijalne namjene za aritmtička kola. LE osim toga, sadrži kaskadna kola koja omogućavaju efikasnu inplementaciju velikog broja AND funkcija. Detaljniji prikaz LE je dat na slici 2.9. Slika 2.9: Logički elemenat (LE) unutar FLEX

77 Kod FLEX 8000, LE su grupisani u setove od po osam i nazivaju se Logic Array Blocks (LAB). Kao što se vidi na slici 2.9, svaki LAB ima lokalnu interkonekciju i svaki lokalni provodnik može povezati bilo koji LE sa bilo kojim drugim LE u okviru istog LAB. Lokalne intekonekcije su takodje povezane na globalne koje se nazibaju Fast Track (FT). FT su slične kao duge linije kod Xlinx-a, tako da svaki FT se proteže na punu širinu ili dužinu kola. Glavna razlika izmedju FLEX 8000 i Xilinx čipa je u tome što FT sadrži samo duge linije. Ovo čini FLEX 8000 pogodnim za CAD alate za brzo konfigurisanje što je vrlo važna osobina. Sve FT horizontalne linije su identične, tako da su sva kašnjenja na interkonkcijama kod FLEX 8000 mnogo predvidivija nego kod FPGA kola koja sadrže mnogo kraćih segmenata, jer nema programabilnih svičeva. FLEX 8000 arhitektura je proširena u FLEX familiji.ova familija ima sve osobine FLEX 8000 familije sa dodatkom SRAM blokova promjenjive veličine, koji se nazivaju Embedded Array Blocks (EABs). Ideja je ilustrovana na slici 2.10, koja pokazuje da svaki red in FLEX čipu ima EAB na jednom kraju. Svaki EAB je konfigurabilan i služi kao SRAM blok sa različitim odnosom : 256x8, 512x4, 1Kx2, 2Kx1. U stvari, EAB može biti alternativno konfigurisan tako da može inplementirati kompleksna logička kola kao što su množači korištenjem velikog broja većih više izlaznih look up tabela. 76

78 Slika 2.10: Arhitektura FLEX kola Cyclone Seria FPGA Cyclone FPGA familija je bazirana na 1.5V, 0.13um, SRAM procesu sa gustinom do logičkih elemenata (LEs) i do 288 Kbita RAMa. Takodje posjeduje PLL strukture i veliki broj dodatnih pogodnosti. Ova familija je pogodna za interkonekciju različitih periferija, gdje podržava brzine transfera do 311 megabita po sekundi. Ovdje ćemo nešto više reći o njoj zato što se čipovi iz ove familje upotrebljavaju u okviru provjere kodova i šema datih u ovom priručniku. LE je najmanja, slika 2.11, logička jedinica u Cyclone arhitekturi. Omogućava napredne funkcije sa efikasnom upotrebom logičkih resursa. Svaka LE sadrži četiri LUT, a svaka od njih predstavlja funkcijski generator koji može realizovati bilo koju funkciju sa četiri promenljive. Dodatno, svaki LE sadrži programabilni registar i carry chain sa carry select opcijom. LE, takodje, podržava dinamičko sabiranje i množenje na nivou jednog bita, što se definiše pomoću stanja signala LAB. Svaki LE podržava sve tipove interkonekcije: unutar sebe same, izmedju kolona, redova, LUT chain-a itd. 77

79 Slika 2.11: LE Alterine Cyclone serije. Svaki programabilni registar logičkog elementa može biti konfigurisan za D, T, JK ili SR mod, a posjeduje true asynchronous load data, clock, clock enable, clear, and asynchronous load/preset ulaze. Globalni signali, U-I pinovi opšte namjene ili bilo koji element interne logike mogu pogoniti clock i clear signale, dok U-I pinovi ili interna logika mogu pogoniti clock enable, preset, asinhroni load i asinhroni data. Asinhroni load data ulazi dolaze sa data3. U slučaju kombinacione logike, izlazi LUT direktno se vezuju na izlaze LE, premošćavajući ostatak kola. Svaki LE ima tri izlaza koji pogone različitu logiku uključujući i povratnu spregu. Dodatno, pored tri generalna izlaza za rutiranje, LE u okviru jednog LAB (Logic Array Blocks) ima izlaze za LUT niz (chain) i registar niz. LUT niz izlazi omogućavaju spajanje LUTova u okviru istog LAB u kaskadu u cilju dobijanja funkcije sa više ulaza. Registar niz izlazi omogućavaju spajanje registara u okviru iste LAB u kaskadu. Takodje 78

80 registar izlazi se koriste za brzu interkonekciju u okviru LABs pri tome čuvajući interkonekcione resurse. Svaka LAB se sastoji od 10 LEs, LE carry nizova, LAB control signala, lokalnih interkonekcija, LUT nizova i linija za konekciju registarskih nizova. LE iz Cyclone familije može raditi u jedan od dva moda: (i) normalni mod i (ii) dinamički aritmetički mod. Normalni mod je podesan za kombinacione funkcije dok se dinamički aritmetički više upotrebljava za implementaciju sabirača, množača, akumulatora i komparatora. Cyclone ugradjena memorija se sastoji od banaka (kolona) M4K blokova. Svaki M4K blok može implementirati različite tipove memorije sa ili bez parnosti, uključujući i nekoliko vrsta dual port and single port RAM, ROM i FIFO. Ukupno sadrži 4,608 RAM bitova. U Cyclone arhitekturi konekcija izmedju LEta, M4K memorijskih blokova i I-O pinova je omogućena pomoću MultiTrack interconnect structure sa DirectDrive tehnologijom. 2.5 Tehnologije programiranja PLD kola Konfigurabilnost PLD kola omogućena je postojanjem internih programabilnih tačka koje, u suštini, predstavljaju prekidačke elemente koji se mogu programirati tako da se ponašaju kao kratko-spojeni ili otvoreni prekidači. U fazi programiranja kola, signali koji se dovode na ulaz kola otvaraju i zatvaraju programabilne tačke (elektronske prekidače) i na taj način ostvaruju željene oblike povezivanja internih komponenta. Kod prvih PLD kola za realizaciju programabilnih prekidača korišćeni su poluprovodnički osigurači. Inicijalno svi osigurači su "nesagoreni". Pobuñivanje kola nešto višim naponima od radnih uslovljava da kroz PLD protiču velike struje. Kao posledica, veze koje formiraju osigurači se raskidaju. Treba pri ovome naglasiti da ne postoji metod za rekonstrukciju 79

81 (obnavljanje) stanja prekidača, tj. njegovo sagorevanje je trajno ili bespovratno. Tipičan predstavnik ovakvih kola je programabilni ROM ili PROM. Danas, kod SPLD i CPLD kola, za realizaciju programabilnih prekidača, preovladavaju tehnologije zasnovane na tranzistorima sa izolovanim gejtom (floating-gate) EPROM ili EEPROM tipa, dok se kod FPGA uglavnom koriste SRAM (Static RAM) i antifuse tehnologije. SRAM tehnologija programiranja. Kod ove tehnologije, konfigurisanje kola se ostvaruje pomoću pass tanzistora i multipleksera koji se upravljaju SRAM ćelijama. Par SRAM ćelija - pass tranzistor se koristi kao programabilna veza izmeñu dva žičana segmenta (slika 2.12a). Kada je u SRAM ćeliji memorisana jedinica, pass tranzistor se ponaša kao zatvoren prekidač male serijske otpornosti. U suprotnom, kada je stanje SRAM ćelije nula, pass tranzistor je otvoren prekidač veoma velike serijske otpornosti. Za upravljanje multiplekserom, SRAM ćelije su vezane za selekcione ulaze multipleksera. Stanje SRAM ćelija odreñuje koji je od ulaza multipleksera povezan sa izlazom. S obzirom da SRAM ćelije gube memorisan sadržaj nakon isključenja napajanja, PLD kolo mora biti napunjeno konfiguracionim sadržjem pri svakom uključenju napajanja. To zahteva eksternu, permanentnu memoriju (tipa EPROM ili EEPROM) za čuvanje konfiguracionih bitova. U fazi punjenja, sve SRAM ćelije PLD kola su redno povezane u strukturu pomeračkog registra, a samo punjenje se vrši serijskim upisom konfiguracionih bitova. U zavisnosti od tipa i kapaciteta PLD kola, punjenje traje od nekoliko milisekundi do nekoliko desetina milisekundi. Glavna prednost SPRAM tehnologije, u odnosu na druge tehnologije programiranja, je mogućnost brzog reprogramiranja, koje može biti obavljeno u sistemu. Glavni 80

82 nedostaci su relativno velika površina koju na čipu zauzimaju SRAM ćelije (tipična SRAM ćelija se realizuje sa pet tranzistora) i neophodnost ugradnje eksterne memorije.sram tehnologija programiranja se koristi u FPGA kolima firmi: Xilinix, Plessey, Algotronix, Concurent Logic i Toshiba. Slika 2.12: Tehnologije programiranja PLD kola: (a) SRAM; (b) EEPROM; (c) antifjuz. Floating_Gate tehnologija. Radi se o istoj tehnologiji koja se sreće kod EPROM i EEPROM memorija. Programabilni prekidač je tranzistor sa izolovanim gejtom (EPROM tranzistor), koji se, programiranjem, može permanentno zakočiti (slika 2.12b). Ovo se postiže injektovanjem naelektrisanja na izolovani gejt tranzistora (gejt 2). Do injektovanja nelektrisanja dolazi kada se izmeñu 81

83 upravljačkog gejta (gejt 1) i drejna tranzistora dovede visok napon. Injektovano naelektrisanje povećava napon praga tranzistora, tako da on, u normalnom režimu rada, ostaje stalno zakočen (tj. neprovodan). Injektovano naelektrisanje se odstranjuje izlaganjem izolovanog gejta dejstvu ultraljubičastog svetla. EEPROM tehnologija je slična EPROM tehnologiji, s tom razlikom što se odstranjivnje injektovanog naelektrisanja može ostvariti električnim putem, bez ultraljubičastog svetla. EPROM tehnologija, kao i SPRAM, omogućava reprogramiranje. Prednost EPROM tehnologije je što ona ne zahteva eksternu memoriju za čuvanje konfiguracionih bitova, ali je zato proces reprogramiranja duži i može se obaviti samo izvan sistema. Pored toga, serijska otpornost provodnog EPROM tranzistora je veća (oko dva puta) od seriske otpornosti pass tranzistora koji se koristi kod SRAM tehnologije. Takoñe, statička potrošnja kola koje koristi EPROM tranzistore je zbog pull_up otpornika (vidi sliku ) veća od potrošnje kola koje koristi SRAM ćelije. EPROM tehnologija programiranja se koristi kod većine CPLD kola i kod FPGA kola firmi Altera i Plus Logic. Kod FPGA kola firmi AMD i Lattice koristi se EEPROM tehnologija. Antifuse tehnologija programiranja. Antifuse je komponenta sa dva kraja koja u neprogramiranom stanju poseduje veoma veliku serijsku otpornost (tj. predstavlja otvoren prekidač). Antifuse se sastoji od tri sloja. Krajnji slojevi su provodni, a sloj u sredini je dialektrik. Anifuse se postavlja izmeñu dva žičana segmenta, kao što je to prikazano na Sl. 4c. Neprogramiran, dalektrik izoluje provodne slojeve; programiran, on postaje permanentni spoj male otpornosti. Programiranje se vrši dovoñenjem visokog napona (od 11 do 20V, što zavisi od tipa antifusa) na krajeve antifuse-a. Dovoñenje napona za programiranje se vrši preko dodatnih pass tranzistora, koji moraju 82

84 da imaju širok kanal, kao bi propustili relativno veliku struju programiranja (oko 5mA). Glavna prednost anifuse-a su njegove male dimenzije. Ova prednost je donekle redukovana neizbežnim pass tranzistorima za programiranje. U poreñenju sa drugim tehnologijama, antifuse u programiranom stanju ima relativno malu serijsku otpornost i parazitnu kapacitivnostu. Antifuse je normalno otvoren prekidač, pa se prilikom konfigurisanja kola programiraju samo oni antifuse-ovi koje treba zatvoriti. S obzirom da je kod tipičnih aplikacija broj zatvorenih prekidača mnogo manji od broja otvorenih (tipično broj zatvorenih prekidača ne prelazi 2% od ukupnog broja prekidača u kolu), to programiranje kola koje koristi antifuse tehnologiju traje kraće od programiranja kola koje koristi EPROM tehnologiju. Glavni nedostatak antifuse tehnologije je nemogućnost reprogramiranja. Antifuse tehnologiju se sreće kod FPGA kola firmi: Actel, Quck Logic i Crosspoint. 2.6 Konfigurisanje FPGA čipova Način konfigurisanja FPGA čipa biće objašnjen na Alterinoj familiji FLEX Ova familija koristi SRAM ćelije za smještaj konfiguracionih podataka u čip. Ćelije moraju biti napunjene podacima svaki put kada se uključi napajanje. Proces fizičkog programiranja SRAM ćelija unutar FLEX 8000 uredjaja se naziva konfiguracija. Nakon konfiguracije FLEX 8000 resetuje njegove registre, omogućuje I/O pinove i počinje izvršenje programa kao logički uredjaj. Operacija resetovanja je poznata kao inicijalizacija. Proces konfiguracije i inicijalizacije zajedno se naziva komandni mod, dok se normalni rad kola in-circuit, naziva korisnički mod. SRAM tehnologija dozvoljava FLEX 8000 uredjajima da mogu biti rekonfigurisani in-circuit učitavanjem novih konfiguracionih podataka. 83

85 Rekonfiguracija u relanom vremenu se vrši prevodjenjem uredjaja u komandni mod preko odgovarajućeg pina uredjaja., učitavanjem drugih konfiguracionih podataka, reinicijalizacijom uredjaja i vraćanjem na korisnički mod. Čitav ovaj proces zahtjeva manje od 100 ms. Takodje je moguće apdejtovanje postojeće konfiguracije, da bi se sačuvala za naknadnu upotrebu. Konfiguracija uredjaja može biti bilo automatska po dobijanju napajanja sistema ili pod kontrolom eksterne logike. Inicijalizacija se kontroliše preko internog oscilatora ili preko ekstrenog klok signala. Predvidjeni pin za konfiguraciju uredjaja se koristi za kontrolu početka konfiguracije i inicijalizacije. Ovo svjstvo upravljanja i korištenja komandnog moda daje FLEX 8000 familiji izvanrednu fleksibilnost pri inplementaciji. Konfiguracija podataka kod FLEX 8000 uredjaja može biti uradjena u jednoj od šest konfiguracionih šema, koje se biraju u zavisnosti od aplikacije. Dijele se na pasivne i aktivne šeme. Kod aktivnih konfiguracionih šema FLEX 8000 upravlja procesom konfiguracije kontrolišući uredjaje eksterne memorije i inicijalizujući proces. Klok izvor za sve aktivne konfiguracione šeme je interni oscilator čija je tipična frekvencija izmedju 2 i 6 MHz. U pasivnim konfiguracionim šemamama eksterni kontroler upravlja konfiguracijom FLEX 8000 uredjaja koji tada radi kao slejv. U Tabeli 2.1 je dat pregled mogućih konfiguracionih šema za ove uredjaje. 84

86 Tabela 2.1: Pregled mogućih konfiguracionih šema Konfiguraciona šema Akronim Izvor podataka Aktivna serijska AS Konfiguracioni EPROM Aktivna paralelna gornja APU Paralelni EPROM Aktivna paralelna donja APD Paralelni EPROM Pasivna serijska PS Serijski kanal podataka Pasivna paralelna sinhrona PPS Inteligentni host Pasivna paralelna PPA Inteligentni host asinhrona Svaki FLEX 8000 uredjaj ima različite zahtjeve za veličinom konfiguracionih podataka, koji zavise od broja SRAM ćelija u čipu. Tabela 2.2 prikazuje približnu veličinu podataka, izraženu u bitima i Kbitima, neophodnu za konfiguraciju FLEX 8000 uredjaja. Ova tabela se koristi za proračun potrebnog prostora za podatke (npr. memoriski resursi) kod paralelenog ili serijskog izvora podataka u sistemima kod kojih je inkorporiran FLEX 8000 uredjaj. 85

87 Tabela 2.2: Veličina konfiguracionih podataka za familiju FLEX 8000 Uredjaj Veličina podataka (bit) Veličina podataka (Kbit) EPF8282,EPF8282V EPF EPF EPF EPF EPF Aktivna konfiguracija Kod ovog tipa konfiguracije FLEX 8000 uredjaj kontroliše cjelokupni proces konfiguracije i generiše sinhronizacione i kontrolne signale neophodne za sopstvenu konfiguraciju i inicijalizaciju iz eksterne memorije. Aktivna serijska (AS) konfiguraciona šema koristi Alterin konfiguracioni EPROM za smještaj konfiguracionih podataka. Aktivne paralelne šeme koriste paralelne formate memorije kao što je 32K x 8-bitni EPROM kao izvore podataka Pasivna konfiguracija Jedna od pasivnih konfiguracionih šema će biti korištena i u ovom radu pa će ovaj način konfiguracije biti nešto detaljnije objašnjen. U pasivnoj konfiguracionoj šemi FLEX 8000 uredjaj je inkorporiran u sistem sa inteligentnim hostom koji kontroliše konfiguracioni proces.host 86

88 selektuje serijske i paralelne izvore podataka te se podaci prezentuju FPGA kolu na zajedničkoj sabirnici podataka. U ovakvim sistemima konfiguracioni podaci mogu biti smješteni u mass-storage medijumima, kao što je hard disk ili jednostvano učitani putem disketa i sličnih memoriskih jedinica Pasivna serijska (PS) konfiguracija Izbor konfiguracione šeme, u praktičnim aplikacijama, zavisi od mnogo faktora kao što su prisustvo inteligentnog hosta u sistemu, potreba za rekonfiguracijom u realnom vremenu, te potreba za periodičnom instalacijom novih konfiguracionih podataka. Raspoloživi prostor na štampanoj ploči je takodje bitan pri izboru da li koristiti paralelni ili serijski EPROM za smještaj podataka. Kod razvoja prototipova uredjaja, preferira se primjena pasivne serijske (PS) veze za konfiguraciju jer uz pomoć MAX+PLUS II i Quartus II programera i odgovrajućeg interfejsa omogućava brzu iterativnu analizu. Programer može preko interfejsa direktno konfigurisati FLEX 8000 uredjaje na štampanoj ploči prototipa. Osim toga ako je FPGA čip inkorporiran u sistem sa inteligentnim hostom, on se može upotrebiti za kontrolu konfiguracionog procesa u jednoj od pasivnih konfiguracionih šema. Konfiguracija FLEX 8000 može, takodje, biti sinhronizovana sa inicijalizacijim drugih uredjaja u sistemu. U aplikacijama, koje zahtjevaju rekonfiguraciju u realnom vremenu uredjaja najbolji izbor je ponovo pasivna konfiguraciona šema. Rekonfigurabilnost dozvoljava da se logički resursi iskoriste na drugačiji način umjesto da se dizajnira druga logika ili koristi više kola u sistemu.pasivna konfiguracija lako podržava eventualnu potrebu za više izvora konfiguracionih podataka koja se može javiti. 87

89 PS konfiguraciona veza koristi eksterni kontroler za konfiguraciju FLEX 8000 uredjaja sa serijskim nizom bitova. Pri tome se FPGA čip tretira kao slejv uredjaj sa petožičanim interfejsom ka eksternom kontroleru. Eksterni kontroler može biti : - MAX+PLUS II ili Quartus II programer, korišten zajedno sa PL- MPU (Master Programming Unit), odgovarajućim adapterom i FLEX download kablom. - Inteligentni host kao što je mikrokontroler ili CPU. - Altera ByteBlaster kao RS-232 kompatabilni serijski download kabal. U našim primjerima korištena konfiguracija sa ByteBlaster kablom. Podaci se sinhronizuju sa eksternim klokom iz izvora podataka. Pri tome se koristi i ALTERA MAX+PLUS II ili Quartus II programer. Uredjaj se konfiguriše sa SRAM Object File (.sof) koji se generiše automatski u toku procesa kompalacije. Pri tome se FLEX uredjaji mogu konfigurisati kao pojedinačni uredjaji ili višestruki. Slika 2.13 pokazuje principijelnu šemu veze FLEX 8000 uredjaja za kofiguraciju u PS modu. Slika 2.13: Šema veze FLEX 8000 za konfiguraciju u PS modu 88

90 Kao što se vidi na slici kod PS konfiguracije biti podataka su na DATA0 ulazu sa najmanje značajnim bitom svakog bajta na prvom mjestu. DCLK strobuje sa visokim inpulsom za lečovanje podataka (slika 2.14). Kada se srijski prenos podataka završi pin CONF_DONE ide na viši logički nivo i time indicira da je čip potpuno konfigurisan. Nakon zadnjeg bajta podataka, DCLK pin mora imati deset klok inpulsa za FLEX 8000 uredjaj da bi bio promjenjen nivo na CONF_DONE i inicirao uredjaj. Na slici je prikazan vremenski dijagram serijske pasivne konfiguracije FLEX 8000 uredjaja, a u Tabeli 2.3 je dat tajming karakterističnih veličina sa vremenskog dijagrama. Slika 2.14: Vremenski dijagram važnijih signala pri konfiguraciji u PS modu. 89

91 Tabela 2.3: Tajming karakterističnih veličina sa vremenskog dijagrama Simbol Parametar min max jedin. T Cf2CD od nconfig nisko do CONF_DONE nisko 1 Μs t CF2ST od nconfig nisko do nstatus nisko 1 Μs t CFG nizak nivo nconfig 2 Μs t STATUS nizak nivo nstatus 2,5 Μs t CF2CK nconfig visoko do prve uzlazne ivice DCLK 5 Μs t DSU vrijeme setapa prije uzlazne ivice DCLK 50 Ns t DH vrijeme zadržavanja podataka nakon uzlazen ivice DCLK 0 Ns t CH DCLK na visokom nivou 80 Ns t CL DCLK na niskom nivou 80 Ns t CLK Period DCLK 160 Ns f max maksimalna frekvencija DCLK 6 MHz 90

92 Rekonfiguracija u kolu Nakon što FLEX 8000 uredjaj udje u korisnički mod moguće je zamjeniti konfiguraciju unutar čipa u bilo koje vrijeme. Ovaj proces se naziva rekonfiguracija u kolu.novi konfiguracioni podaci se biraju koristeći jedan od tri metoda, zavisno od konfiguracione šeme: - u pasivnoj konfiguracionoj vezi drugi fajl može biti učitan iz nekog memoriskog sistema. - u AS konfiguracionoj vezi višestruki set konfiguracionih podataka može biti smješten u jednom ili više serijskih konfiguracionih EPROM-a. Podaci se koriste sukcesivno. - u APU i APD konfiguracionim vezama novi konfiguracioni podaci se selektuju eksternim multipleksiranjem različitih EPROM-a preko sabirnice podataka ili pomoću kola koje pomoću ofset adresiranja selektuje različite strane u istom EPROM-u. S obzirom da SRAM ćelije, koje se koriste za funkcionalno konfigurisanje kod FLEX 8000 arhitekture, imaju mogućnost brisanja one mogu biti reprogramirane bez uklanjanja uredjaja iz kola. nconfig ulaz kontroliše rekonfiguraciju uredjaja. U aktivnim konfiguracionim vezama nconfig pin je vezan na Vcc i forsira čip na automatsku konfiguraciju kada se uspostavi napajanje sistema. Kod PPA i PPS konfiguracionih šema kontrolna logika koristi nconfig ulaz da odredi početak konfiguracije, tako da se ovaj pin povezuje na port nekog inteligentnog hosta koji se koristi za kontrolu konfiguracionog procesa. Ako je nconfig na niskom nivou, konfiguracioni proces se odlaže dokle je to potrebno. Npr. nconfig se drži na niskom nivou u toku sistemske 91

93 inicijalizacije, a nakon toga prebacuje na visoki nivo i tako omogućava konfiguraciju FPGA kola. U bilo koje vrijeme u toku sistemskih operacija bez obzira na trenutno stanje FPGA kola nconfig pin može biti iskorišten za restart konfiguracionog procesa. Kada se nconfig pin prebaci na nizak nivo, a onda ponovo na visok uredjaj se resetuje i pripremi za konfigurisanje. U aktivnoj konfiguracionoj šemi, nakon ovoga uredjaj trenutno počinje sa prijemom podataka iz eksternog EPROM-a, dok kod pasivne šeme on je spreman za prijem podataka iz inteligentnog hosta. Svi unešeni i registrovani podaci u toku rada će biti izgubljeni u toku rekonfiguracije, tako da bilo koja vrijednost kauntera ili tekuće stanje uredjaja koje se želi sačuvati mora biti smješteno bilo u memoriju hosta ili u neko eksterno kolo kao što je Alterin EPLD. Čitav rekonfiguracioni proces zahtjeva oko 100 ms. Sistem nastavlja normalne operacije nakon što čip promjeni stanje na CONF_DONE pinu i time indicira da je inicijalizacija kompletirana Programiranje Za programiranje FPGA čipova koristeći SP mod je neophodan odgovarajući interfejs. Altera je proizvela za ovu namjenu ByteBlasterMV Paralel Port Download Cable, koji se koristi kao interfejs za programiranje većine Alterinih familija kola, slika ByteBlasterMV kabal ima 25- to pinski muški heder za konekciju na PC pralelni port i 10-to pinski ženski port za konekciju na štampanu ploču. Izabran je PS način konfiguracije i nezavisna konfiguracija za svako kolo, tako da je na štampanoj ploči predvidjen nezavistan priključak za svako FPGA kolo. 92

94 Slika 2.15: Principijelna šema Byte Blastera MV. U Tabeli 2.4 je dat raspored pinova za 25-to pinski konektor u PS modu konekcije, sa nazivima signala. Tabela 2.4: Raspored pinova za 25-to pinski konektor. Pin Naziv signala u PS modu 2 DCLK 3 nconfig 8 DATA0 11 CONFIG_DONE 13 nstatus 15 VCC 18 do 25 GND 93

95 U narednoj Tabeli 2.5 je raspored pinva za 10-to pinski konektor, sa nazivima signala i njihovim opisom za PS konfiguracioni mod. Tabela 2.5: Raspored pinova za 10-to pinski konektor Pin Naziv signala Opis 1 DCLK Klok signal 2 GND Masa 3 CONF_DONE Kontrola konfiguracije 4 VCC Napajanje 5 nconfig Kontrola konfiguracije Nije spojen 7 nstatus Konfiguracioni status Nije spojen 9 DATA0 Konfiguracioni podaci 10 GND Masa Nakon kompajliranja željenog fajla Alterin alat automatski generiše SRAM Objekt File (.sof) za FLEX 10K i FLEX 8000 uredjaje ili Programmer Object File (.pof) za MAX 9000 uredjaje. Ovim fajlovima se konfigurišu FPGA kola. ByteBlasterMV kabal se spaja na paralelni port PC-a i sa 10-pinskim krajem na štampanu ploču uredjaja koji se razvija. Napajanje se obezbjedjuje preko štampane ploče. Ovdje treba napomenuti da je i Cyclone seriju primenljiv isti način SP i SA konfiguracije. 94

96 3. Quartus II Upustvo 3.1 Uvod Postoji više komercijalnih alata za projektovanje digitalnih sistema baziranim na PLD kolima. Većina proizvoñača posjeduje sopstveni alat, prilagoñen svojoj familiji čipova. Laboratorija za primenjenu elektroniku, Elektrotehničkog Fakulteta u Podgorici, već duže vrijeme radi na Alterinoj platformi, koristeći, prvobitno, MAX+PLUS II, a u novije vrijeme Quartus II koji se smatra njegovim naslednikom. Medjutim, Altera je omogućila jednostavnu migraciju sa MAX+PLUS II na Qaurtus II kako bi se korisnici prethodnog paketa mogli što jednostavnije prilagoditi. U ovom poglavlju dato je upustvo za korišćenje Quartus II alata i to od kreiranja projekta, njegovog unošenja putem koda ili šeme, kompajliranja, simulacije, zaključno sa dodeljivanjem pinova i konfigurisanjem (programiranjem) izabranog čipa. Tekst je pojednostavljen i namijenjen je prije svega studentima Elektrotetrotehničkog fakulteta (svi odsjeci), a mogu ga koristiti i ostali koje se bave ovom problematikom. U predvidjenom obimu nije bilo moguće elaborirati sve osobine ovog paketa, pa se za potrebe naprednog učenja preporučuju resursi proizvodjača ( kao i navedena literatura u štampanoj i elektronskoj formi. 3.2 Postupak instalacije i pokretanja Quartus II programskog paketa Instalacioni fajl Quartus II programskog paketa besplatno se može download-ovati sa website-a proizvoñača ( Postupak instalacije zahtijeva standardnu proceduru. Instalacioni fajl se startuje dvostrukim klikom lijevog tastera miša nakon čega se pojavi Wizard koji 95

97 će korisnika provesti kroz standardni postupak instalacije. Preporučuje se da se na svakom mjestu gde je potrebno napraviti bilo kakav izbor, odabere default-na vrendnost. Nakon instalacije Quartus II programskog paketa, potrebno je izvršiti njegovu registraciju. Sa istog website se može skinuti besplatna licenca (Web edition). Postupak preuzimanja licence zahteva registracju korisnika. Potrebno je ispoštovati uputstva koja nalaže proizvoñač. Pored standardnih podataka zahtijeva se i odgovarajući NIC number, slika 3.1. Slika 3. 1: NIC number. Da bi se došlo do tog broja u MS DOS promptu otkucamo odgovarajuću naredbu, slika 3.2, i identifikujemo NIC number kao fizičku adresu Ethernet adapter-a na našem računaru. U datom primjeru taj broj se poklapa sa 00C04FA392EF. Slika 3.2: Identifikovanje NIC broja u postupku licenciranja Quartus II programa. 96

98 Nakon odradjene procedure Altera šalje polugodišnju besplatnu licencu na koji je korisnik naznačio. Licenca je u obliku *.dat fajla i potrebno ju je smjestiti u jedan od naših direktorijuma. Obično ime licence asocira na NIC broj, koji se iz praktičnih razloga može preimenovati u cilju bližeg opisa, npr. moja_licenca_quartus.dat. Dvostrukim klikom lijevog tastera miša na ikonu programa, pokreće se Quartus II, nakon čega se pojavljuje korisnički interfejs prikazan na slici 3.3, koji nas pri prvom startovanju ili poslije isteka licence upozorava na potrebu njenog instaliranja/obnavljanja. Slika 3.3: Pokretanje Quartus II programa. Izaberite opciju Specify valid license file i povežite odgovarajući fajl, slika 3.4, nakon čega možemo vidjeti parametere licence i vrijeme njenog trajanja, slika 3.5. Licenca se može promijeniti ili instalirati i nakon prvog startovanja. To se postiže odabirom opcije Tools ->License Setup. 97

99 Slika 3.4: Specificiranje licence fajla. Slika 3.5: Parametri licence (trajanje ). Nakon instaliranja licence i potvrde sa OK Quartus je spreman za rad. 98

100 3.3 Kreiranje projekta Da bi se kreirao novi projekat potrebno je pratiti sledeću proceduru. Iz File menija, slika 3.6, izabere se opcija File->New Project Wizard. Pojaviće se New Project Wizard: Introduction, koji vas vodi kroz proceduru kreiranja novog projekta. Pošto je samo informativnog karaktera Introduction treba ukloniti za buduća pojavljivanja izborom Don t show me this introduction again. Prelazimo na sledeći korak izborom Next. Slika 3.6: Startovanje Project Wizarda. Prelazimo na naredni korak kreiranja projekta, slika 3.7. U ovom dijelu potrebno je specificirati direktrorijum u kojem želimo da smjestimo projekat, ime projekta kao i top level design entity, što predstavlja ime dizajna koji predstavlja najviši hijerarhijski nivo u okviru projekta. Po default-u dva zadnja imena su identična. Nakon specificiranja ovih parametara klikom na dugme Next prelazi se na naredni korak. 99

101 Slika 3.7: Specificiranje direktorijuma, imena projekta i vrha dizajna. Otvara se prozor prikazan na slici 3.8 preko koga je moguće projektu dodati fajlove koji već postoje (koji su npr. kreirani u okviru nekog drugog projekta) i priključiti korisničke biblioteke. Na ovom nivou učenja nećemo dodavati druge fajlove i odmah prelazimo na sledeći prozor, klikom na Next. 100

102 Slika 3.8: Dodavanje fajlova projektu. Prozor koji se otvara je prikazan na slici 3.9. Ovdje je potrebno specificirati familiju i tip FPGA kola u kojem se želi fizički implementirati projekat. Familiju se bira u boxu Family, npr. FLEX 10K. Automatski se izvršava popunjavanje polja sa raspoloživih čipova unutar date familije. Ako korisnik želi da zada tip programabilnog kola, neophodno je da setuje opciju Specific device selected in Available devices list. Ukoliko korisnik, pak, tek treba da se odluči po pitanju izbora adekvatnog kola, npr. na osnovu rezultata simulacija, može setovati opciju Auto devices selected by the Fitter, čime će odluka o izboru konkretnog kola iz specificirane familije biti ostavljena kompajleru, koji će o tome odlučiti na osnovu složenosti dizajna. U našem slučaju smo izabrali Alterinu FLEX10K familiju, čip EPF10K70RC Sledećim klikom na Next otvara se prozor na slici 3.10 koji omogućava korišćenje naprednijih tehnika u razvoju sistema, a koje se neće 101

103 koristiti na ovom nivou. Nastavlja se sa Next i pojavljuje se poslednji prozor Summary u kojem su izlistani parametri projekta, definisani pri njegovom formiranju. Ukoliko korisnik želi da promeni bilo koji od ovih parametara, to može učiniti pomoću Back. Ako nama potrebe za promenom parametara, proces formiranja projekta se završava klikom na Finish. Slika 3.9: Izbor familije FPGA čipova i konkretnog čipa. 102

104 Slika 3.10: Mogućnost izbora naprednih opcija. 3.4 Unos projekta opisanog VHDL kodom Prije unosa projekta opisanog VHDL kodom potrebno je formirati textualni fajl koji će sadžati odgovarajući program. Kreiranje VHDL fajla se vrši opcijom File->New, slika 3.11 (lijevo), nakon čega se pojavljuje prozor sa nazivom New prikazan na slici 3.11 (desno). U okviru ovog prozora je potrebno selektovati opciju VHDL File sa taba Device Design Files, i klikom na dugme OK preći u tektualni editor i uobičajeni fajl Vhdl1.vhd, slika Ovaj fajl je potrebno snimiti pod željenim imenom (takoñe sa ekstenzijom.vhd ) na željenu lokaciju izborom opcije menija File->Save As, slika U našem slučaju fajl će biti sačuvan pod imenom haff_adder.vhd što se poklapa sa imenom entiteta haff_adder. 103

105 Slika 3.11: Kreiranje VHDL fajla. Slika 3.12: Prazni editor.vhdl fajla. 104

106 Slika 3.13: Snimanje.vhd fajla pod novim imenom (obično ime projekta). Sada je sve spremno za unos VHDL koda u skladu sa projektinim zadatkom, u našem slučaju kod polu-sabirača, half_adder, slika Po završetku unosa, dizajn je neophodno snimiti, opcija File -> Save. Još jednom treba primijetiti da su imena entiteta i ime.vhd fajla medjusobno identična. 105

107 . Slika 3.14: Primjer unesenog VHDL koda half_adder.vhd. 3.5 Kompajliranje (prevodjenje) projekta Sledeći korak je kompajliranje projekta. U tu svrhu se koristi Quartus II Compiler Tool. Postupkom kompajliranja se vrši provjera sintakse koda, dodjela i povezivanje raspoloživih resursa programabilnog kola (specificiranog u postupku formiranja projekta), kao i formiranje fajlova koji će biti potrebni za postupak simulacije, vremenske analize signala i konfigurisanja (programiranja kola). Tu je i veliki broj izvještaja (reporta). Prije samog prevoñenja dizajna potrebno je izborom opcije menija Project -> Set as Top-Level Entity postaviti dizajn koji treba prevesti na najviši hijerarhijski nivo (jer u opštem slučaju sistem se može sastojati od više VHDL fajlova, a prevodilac prevodi onaj fajl koji je postavljen na najviši hijerarhijski nivo). U našem slučaju, pošto se radi o jednom fajlu, on je automatski postavljen na najviši hijararhijski nivo. 106

108 Kompajliranje se startuje izborom opcije Processing -> Start Compalation, ili ikone nakon čega se može pratiti njegov tok, slika Tokom trajanja postupka prevoñenja, u prozoru Processing koji se nalazi ispod prozora prevodioca ispisuju se odgovarajuće informacije o postupku prevoñenja (Info), upozorenja (Warning) i greške (Error) ukoliko postoje. Da bi projekat bio uspešno preveden, neophodno je da nakon prevoñenja u prozoru Processing ne bude ispisana nijedna greška (Error). U slučaju pojave grešaka, u prozoru Processing se ispisuje i komentar koji upućuje projektanta na mesto i uzrok greške u VHDL kodu. U tom slučaju je neophodno da projektant na osnovu tog komentara ispravi grešku (ili više njih) i da potom ponovo snimi ispravljeni dizajn (opcija iz menija File -> Save) i da ponovi postupak prevoñenja. Nakon uspješnog prevoñenja projekta (tj. bez grešaka), otvara se prozor sa porukom Full Compilation was successful. Klikom na prozor Compilation report prelazimo na seriju izvještaja, kao što su iskorišteni hardverski resursi, broj pinova, vremenska analiza uzeta u obzir itd., slika Slika 3.15: Prozor Quartus-a u fazi kompajliranja i poruka da je program uspješno kompajliran. 107

109 Slika 3.16: Compiler report prozor. 3.6 Simulacija projekta Simulacija ima za cilj provjeru funkcionalne ispravnosti projekta. Rezultati simulacije bliži su stvarnom stanju ukoliko je uzeto više parametara u obzir (kašnjenja, gličevi itd.). Na samom početku je potrebno definisati simulacioni fajl u kojem se specificiraju vremenski oblici ulaznih signala kao i unutrašnji ili izlazni signali koje želimo da posmatramo (takozvani Vaveform file). Takodje, možemo definisati, vrijeme trajanja simulacije, frekvenciju kloka, uzimanje realnih kašnjenja itd.. Potom se startuje proces simulacije i analiziraju dobijeni rezultati. U slučaju da se utvrdi da u dizajnu postoji greška, npr. da je dizajn funkcionalno neispravan, potrebno je izvršiti odgovarajuće modifikacije u VHDL kodu ili šemi sa ciljem otklanjanja grešaka i ponoviti postupak kompajlacije i simulacije sve dok se ne dobiju željeni rezultati. Definisanje simulacione datoteke se vrši pomoću editora vremenskih oblika ulaznih signala. Postupak započinje kreiranjem novog Vector Waveform fajla, izborom opcije menija File -> New, nakon čega se 108

110 pojavljuje prozor sa nazivom New prikazan na slici U okviru ovog prozora je potrebno selektovati opciju Vector Waveform File sa taba Other Files, i klikom na dugme OK otvoriti prozor prikazan na slici Dati prozor sadrži fajl sa ekstenzijom.vwf i uobičajenim imenom Vaweform1.vwf. Ovaj fajl je potrebno snimiti, pod imenom koje se poklapa sa.vhd fajlom, opcija File - > Save As. Na taj način smo došli do fajla half_adder.vwf, slika Slika 3.17: Izbor fajla za simulaciju. 109

111 Slika 3.18:.vwf fajl editor talasnih oblika U-I signala. 3.19:.vwf fajla pod imenom projekta opisanog u VHDLu, izbor signala. Zatim je potrebno izabrati signale (ulazne, unutrašnje i izlazne) koji će biti simulirani. Izbor signala se vrši na sledeći način. Dvostrukim klikom na kolonu Name ili Value at u prozoru sa slike 3.19, otvara se novi prozor prikazan na slici 3.20 (Insert Node or Bus). Ukoliko poznajete ime svakog od pinova u polje Name ih možete ukucati, meñutim mnogo lakši način je kliknuti na dugme Node Finder nakon čega se otvara prozor prikazan na slici Opciju Filter treba zatim podesiti na Pins:all, i kliknuti na dugme List čime se popunjava kolona Nodes Found svim raspoloživim signalima 110

112 za simulaciju u skladu sa izabranom opcijom filtera, slika Zatim je potrebno izabrati signale koji će biti simulirani i prebaciti ih u polje Selected Nodes (klikom na dugme >, <, >> ili << se može vršiti prebacivanje signala iz polja Nodes Found u polje Selected Node, i obratno), slika Nakon što su u polje Selected Nodes prebačeni svi signali koje je potrebno simulirati, klikom na dugme OK prozora Node Finder i klikom na dugme OK prozora Insert Node or Bus se završava specifikacija signala koji će biti simulirani i otvara prozor na slici Slika 3.20: Interfejs za unos pinova u simulacioni fajl. Slika 3.21: Prozor za automatsko nalaženje željenih pinova. 111

113 Slika 3.22: Popunjavanje kolone Nodes Found sa raspoloživim pinovima. Slika 3.23: Selektovanje pinova koji će se koristiti u procesu simulacije. 112

114 Slika 3.24: Izgled prozora za simulaciju prije zadavanja talasnih oblika ulaznih signala. Prije početka zadavanja talasnih oblika signala može se specificirati vremenski interval u kome se vrši simulacija. Uobičajeno on iznosi 100ns. Najpre se izborom opcije menija Edit -> End Time otvara prozor End Time, slika 3.25, u okviru kojeg je u polju Time potrebno zadati trajanje vremenskog intervala za koji će se vršiti simulacija, u našem slučaju 10us, i potvrditi izbor klikom na dugme OK. Zatim se izborom opcije menija Edit -> Grid Size otvara prozor Grid Size, slika 3.26, u okviru kojeg se zadaje vremenski interval za trajanje Grid-a (razmak izmeñu vertikalnih linija koje predstavljaju minimalni vremenski korak za predstojeće zadavanje vrednosti ulaznim signalima) na simulacionom dijagramu, koji se potvrñuje klikom na dugme OK. Da bismo vidjeli kompletnu novu vremensku podjelu treba izabrati View -> Fit in Window, slika

115 Slika 3.25: Izbor trajanja simulacije (end time). Slika 3.26: Vremenski interval podjele (grida). 114

116 Slika 3.27: Smještanje cjelokupnog vremena trajanja simulacije u jednom prozoru. Zadavanje željene vrednosti nekom ulaznom signalu se može izvršiti u čitavom intervalu, lijevim klikom na Name ili Value at, slika 3.28, pri čemu se interval osjenči. Zatim se predje na toolbar sa vrijednostima signala i klikom na ikonu 0, 1 zada njegova vrijednost. Zadavanje na dijelu intervala se obavlja prevlačenjem kursorom uz pritisnuti lijevi taster, čime se taj interval selektuje. Na taj način su selektovane i zadate vrijednosti signala x i y na slici Ukoliko je ulazni signal vektorskog tipa, vrijednost mu se za željeni interval vremena može zadati na sličan način klikom na ikonu? čime se otvara prozor Arbitrary Value u okviru kojeg je potrebno specificirati Radix (Unsigned Decimal, Signed Decimal, Hexadecimal, Octal, Binary,...) i vrijednost signala, koja se potom potvrñuje klikom na dugme OK. Ukoliko ulazni signal treba da bude signal takta, najlakši način za njegovo specificiranje je selektovanjem signala klikom na njegovo ime (lijevo od kolone Name u prozoru simulacionog dijagrama), zatim klikom na ikonu C čime se otvara prozor Count Value na čijoj kartici Timing se izborom opcije At absolute times i zadavanjem vrijednosti Count every i Multiplied by zadaje interval promene vrijednosti signala (jednak proizvodu vrijednosti Count every i Multiplied by). Na 115

117 sličan način je moguće zadati i vrijednosti signala vektorskog tipa čija vrijednost se povećava ili smanjuje za fiksnu vrijednost koraka (zadatu u polju Increment by na kartici Counting u prozoru Count Value), pri čemu je interval promjene vrijednosti signala zadat na način kao što je to već opisano (podešavanjem odgovarajućih vrijednosti na kartici Timing). Radix svakog signala ponaosob u simulacionom dijagramu se može specificirati ili modifikovati po potrebi i na sledeći način: desnim klikom mišem na ime signala u koloni Name i izborom opcije Properties otvara se prozor Node Properties u okviru koga treba u polju Radix selektovati željenu opciju (Unsigned Decimal, Signed Decimal, Hexadecimal, Octal, Binary,...). Slika 3.28: Žadavanje željene vrijednosti signala na čitavom intervalu. 116

118 Slika 3.29: Zadavanje željene vrijednosti na pojedinim intervalima selektovanog signala. Nakon što su specificirane vrednosti ulaznih signala, sama simulacija se pokreće izborom opcije menija Processing -> Start simulation, slika 3.30, nakon čega se otvara prozor prikazan na slici I ovaj prozor kao u slučaju kompajliranja sadrži mnoštvo dodatnih informacija: Reporti (Reports), Poruke (Message), Greške (Error) itd. Slika 3.30: Startovanje simulacije iz glavnog menija. 117

119 Slika 3.31: Uspješan završetak simulacije Po završetku simulacije pojavljuje se prozor sa porukom Simulator was successful, u slučaju da je simulacija prošla uspešno, ili suprotno. U našem slučaju simulacija daje rezultate date na slici 3.32, poslije View->Fit in window. Slika 3.32: Rezultat simulacije. Poslije izvršene simulacije i provjere vjerodostojnosti rezultata, projektant može biti upoznat sa karakteristikama svoga projekta putem velikog broja izvještaja i dodatnih funkcija u okviru odgovarajućih menija. 118

120 Takodje, dodatnom analizom grafika, npr. poslije zumiranja View-> Zoom in, može se uočiti odgovarajuće kašnjenje. Na slici 3.33 se vidi da izlaz result kasni (približno 20ns) u odnosu na promjene ulaza x i y. Slika 3.33: Detekcija kašnjenja. Quartus II uključuje alat kojim se može prikazati šema kola opisanog VHDL kodom. Šema je na RTL nivou, a alat koji se koristi nosi naziv RTL Viewer. Izaberite Tools->Netlist Viewers->RTL Viewer i dobićete izgled kola kao na slici 3.34, što predstavlja električnu šemu polu sabirača (half_adder) na nivou logičkih ćelija. Ova opcija je posebno dobra kada se dodatno želi provjeriti kolo kao i otkriti neke od grešaka koje lakše možemo detektovati na šematskom nivou (kao nedostajući elementi, pogrešne konekcije itd). 119

121 Slika 3.34: Šema kola na RTL nivou upotrebom RTL Viewer-a 3.7 Kreiranje simbola Nakon izvršene simulacije i provjere funkcionalnosti projekta može se napraviti poseban blok (simbol) koji će se kasnije upotrijebljavati unutar složenijih projekata kao jedna od sastavnih komponenti. Treba napomenuti da je na ovaj način kreirana komponenta potpuno ravnopravna sa onima koje se nalaze u pripadajućim bibliotekama U našem slučaju to će biti simbol half_adder, koji će podsjećati na blok sa 3 ulaza i 2 izlaza i iza koje se krije provjereni VHDL kod. Formiranje simbola obavljamo iz glavnog menija sa File->Create->Update>Create Symbol for Current File, slika Ako je sve o redu, pojaviće se poruka Create Symbol file was successful, slika Treba napomenuti da simbol može posjedovati unošenje parametara (u posebnom prozoru), npr. dužinu vektora ulaznih podataka, frekvenciju kloka, što je veoma podesno u postupku testiranja. 120

122 Slika 3.35: Postupak kreiranja simbola Slika 3.36: Poruka koja ukazuje da je simbol uspješno kreiran. 121

123 3.8 Unos šematskog projekta Obično, za studente kao i profesionalne projektante šematsko projektovanje predstavlja prirodniji način zbog toga što tokom svoga školovanja postaju familijarni sa velikim brojem aktivnih i pasivnih komponenti koje komponuju u složenije šeme. Npr. jedan pojačavač ili filtar može se predstaviti kao kolo u kojem su šematski vezani operacioni pojačavači, otpornici i kondenzatori. Quartus II sa velikim brojem svojih biblioteka i simbola od najednostavnijih gejtova do megafunkcija pruža moćnu platformu za ovaj način projektovanja ali u domenu digitalnih kola. Slika 1, primjer x, pokazuje kako se puni sabirač (full_adder) može napraviti pomoću dva polu-sabirača (half_adder) i jednog ex_ili kola (xor). Na tom primjeru će biti pokazano kako se kreira projekat u šemetskom okruženju. Otvaranje projekta se obavlja na isti način kao što je opisano u 3.3. Njegov naziv je full_adder, a izabrano je isto FPGA kolo kao u prethodnom slučaju. Sada je umjesto.vhd fajla potrebno formirati šematski fajl. To se postiže iz glavnog menija opcijom File->New i izborom Block Diagram/Schematic File, slika

124 Slika 3.37: Izbor šematskog fajla. Pojaviće se šematski editor sa uobičajenim Block1.bdf fajlom, pri čemu.bdf asocira na blok dijagram fajl, slika Fajl ćemo snimiti pod imenom koje se poklapa sa imenom projekta, full_adder.bdf, slika Sada je sve spremno za unošenje odgovarajuće šeme. Slika 3.38: Grafički editor za šematski unos. 123

125 Slika 3.39: Snimanje.bdf fajla pod imenom projekta. Duplim klikom na grafički editor pojaviće se prozor sa bibliotekama ili kreiranim simbolima. U direktorijumu Project nalazi se prethodno kreirani simbol half_adder kojeg ćemo selektovati a potom potvrdom na OK prebaciti u grafički editor, slika Na isti način smjestićemo i drugi half_adder, slika Potrebno je napomenuti da se drugi half_adder može dobiti jednostavnim kopiranjem prvog (selektovanje prvoga, desni klik, copy, biranje pozicije, desni klik, paste). 124

126 Slika Selektovanje simbola half_adder. Slika Dva simbola half_adder u grafičkom editoru. Potrebno ex_ili kolo ćemo izabrati iz ponudjene Alterine biblioteke primitives koja sadrži sva prosta logička kola kao što su i, ili, ni, nili, ex-ili itd, slika Kada smo izabrali i smjestili dva half_addera i jedno ex_ili kolo dolazimo do ulaznih i izlaznih pinova. Ulazni pinovi se označavaju 125

127 kao input, slika 3.43, a izlazni kao output. Klikom na pin_name editujemo naziv pina, npr. A,B, CARRY_IN, SUM itd. Nakon što su potrebna kola postavljena na radnu površinu, sada ih je potrebno povezati. Pokazivač miša je potrebno dovesti do početne tačke koju je potrebno povezati. Tada kursor promijeni oblik (njegov oblik postane znak + i oznaka koja asocira na spajanje). Potom se kursor miš povlači prema krajnjoj tački, slika Kada se kursor približi odgovarajućoj tački ili pinu na njemu se pojavi mali kvadrat koji označava da je njegova veza sa provodnikom uspostalvjena. Oslobadjenjem tastera uspostavlja se veza. Na slici 3.45 dat je prikaz povezanih komponenti. Ukoliko je odreñenu vezu potrebno izbrisati, lijevim tasterom miša potrebno je kliknuti na nju nakon čega ona promeni boju u odredjenom segmentu. Pritiskom na taster Delete veza se briše. Slika 3.42: Izbor ex_or kola iz biblioteke primitives. 126

128 Slika 3.43: Ulazni pin. Slika 3.44: Postupak povezivanja elemenata šeme. 127

129 Slika 3.45: Kompletirana šema u grafičkom editoru. Kreirani fajl je potrebno snimiti. Kao što je prethodno rečeno fajl treba snimiti sa istim imenom projekta. Imenovanje fajla istim imenom kao i projekat označava da je taj fajl prvi i najviši na hijerarhijskoj lestvici (top level design entity). Šta ovo znači? Svaki projekat može sadržati više design file-ova. Na primer, recimo da je u jednom fajlu realizovan multiplekser 2na1, i neka je taj fajl snimljen pod nazivom mux_2_1. Pretpostavimo da sad ovaj multiplekser treba iskoristiti za realizaciju nekog složenijeg kola (recimo multiplekser 4na1). Dakle, multiplekser 4na1 sadrži multiplekser 2na1. Recimo da je cilj projekta bio realizacija multipleksera 4na1. Multiplekser 4na1 se u konkretnom projektu nece korisiti za realiaciju nekog novog dizajna. Dakle multiplekser 4na1 je najviši na dizajnerskoj hijerajhijskoj lestvici, tj. on je top level design entity. Projekat iz ovog primera je prilično jednostavan, sadrži samo jedan file, pa on mora da ima isti naziv kao i sam projekat. Nakon unošenja šeme i definisanje projekta slijedi njegovo kompajliranje. Ono se obavlja na potpuno identičan način kao u slučaju kodnog unosa. Isto važi i za postupak simulacije i pridruživanja pinova. Slika 3.46 daje rezultate simulacije za kolo punog sabirača. 128

130 Slika 3.46: Simulacija punog-sabirača projektovanog u grafičkom editoru. 129

131 3.9 Pridruživanje pinova i konfigurisanje FPGA čipa Sledeći primjer pokazuje kako se odredjeno digitalno kolo možemo fizički implementirati u FPGA čipu i na taj način napraviti svoj čip koji će obavljati odredjenu funkciju. Zadatak je napraviti četvorobitni brojač koji se pogoni klokom od 1Hz ili 2Hz u zavisnosti od statusa pina sel_speed, slika Signal 2Hz se dobija dijeljenjem clk signala 48MHz, a potom se isti prosledjuje direktno na ulaz brojača ili dodatno dijeli sa 2 da bi se dobio klok od 1s. Na izlaz brojača out[3..0] vezane su led diode kako bi se vizuelno prikazala promjena njegovog sadržaja. Upaljena LED dioda odgovara logičkoj 1 odgovarajućeg izlaznog bita. Ulazni i izlazni signali su pridruženi odgovarajućim pinovima FPGA kola. Stanja ulaznih signala, sel_speed, en i rst, osim clk, se zadaju DIP SWITCHOM SW3 i tasterom PBSWITCH_5. Čip EP1C6Q240C8, kao i ostale periferije, se nalazi na Alterinoj razvojnoj ploči UP3. Čip EP1C6Q240C8 je velikog kapaciteta (5920 LCs) sa velikim brojem pinova (240 od kojih upotrebljivo 185) RAM memorijom (92160 bita) i dva PLL kola. Slika 3.47: Četvoro-bitni brojač pogonjen klokom 1Hz ili 2Hz. 130

132 Da bi se riješio dati problem trebe povezati sistem kao na slici ByteBlaster kabal služi za konfigurisanje (programiranje) FPGA čipa i povezuje se na paralelni port računara, a sa strane UP3 ploče na JTAG konektor. Jednosmerni napon se dovodi na power konektor (DC). Nakon uključivanja sistem je spreman za rad. Slika 3.48 Prikaz interfejsa za dodelu pinova. Potrebno je u VHDLu napraviti dva bloka (simbola) clk_div i counter i to u package formi, listinzi dati u sledećem tekstu. Clk_div ima promjenljiv parameter N, a counter word_lenght clk divider Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; entity clk_div is generic(n:integer:=2); port 131

133 ( clk: in std_logic; clk_new : out std_logic); end clk_div; architecture clk_div_behav of clk_div is signal clk_temp signal temp : std_logic; : integer range 0 to N-1; begin process(clk, clk_temp) begin if(clk'event and clk='0') then if(temp=n/2-1)then temp<=temp+1; clk_temp<='1'; elsif (temp=n-1) then temp <= 0; clk_temp<='0'; else temp<=temp+1; end if; clk_new<=clk_temp; end if; end process; end clk_div_behav; Library Ieee; Use ieee.std_logic_1164.all; 132

134 Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; package clk_div_package is component clk_div generic(n:integer:=2); port ( clk : in std_logic; clk_new : out std_logic); end component; end clk_div_package; Counter Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; entity counter is generic(word_length : integer:=4); port( clk, en, rst : in std_logic; output : out std_logic_vector(word_length-1 downto 0); comp: out std_logic ); end counter; 133

135 architecture counter_behav of counter is signal counting : std_logic_vector(word_length-1 downto 0); begin process(clk, rst, en) begin if rst='0' then output<=(others=>'0'); counting<=(others=>'0'); elsif clk'event and clk='1' then if en='1' then output<=counting; counting<=counting+'1'; -- else -- output<=(others=>'0'); -- counting<=(others=>'0'); end if; end if; end process; end architecture; --This counter is going to be used for discharge time determination Library Ieee; Use ieee.std_logic_1164.all; 134

136 Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; package counter_package is component counter generic(word_length : integer:=16); port( clk, en, rst : in std_logic; output : out std_logic_vector(word_length-1 downto 0); comp: out std_logic ); end component; end package counter_package; Kontrolna logika vezana za sel_speed realizovana je pomoću multipleksora 2u1 (21mux), D flip-flopa i jednog invertora. Otvori se projekat test i povežu komponete u fajlu test.bdf, kao što je prikazano na slici Prije toga smo odabrali odgovarajuće FPGA kolo Cyclone EP1C6Q240C8 koje se nalazi na UP3 ploči. 135

137 clk INPUT VCC clk_div inst1 clk clk_new Parameter Value N A B S 21mux Y inst5 MULTIPLEXER inst9 counter clk output[word_length-1..0] en rst inst Parameter Value w ord_length 4 OUTPUT out[3..0] NOT DFF D PRN Q CLRN inst8 sel_speed INPUT VCC en INPUT VCC rst INPUT VCC Slika 3.49: Šema sistema Izvrši se kompajliranje kola i opcijom Assigments -> Back-Annotate Assigments, OK vidimo na koji je način kompajler (automatski) pridružio pinove, slika clk PIN_29 INPUT VCC clk_div inst1 clk clk_new Parameter Value N A B S 21mux Y inst5 MULTIPLEXER inst9 NOT counter clk output[word_length-1..0] en rst inst Parameter Value w ord_length 4 OUTPUT out[3..0] PIN_220 PIN_216 PIN_218 PIN_217 DFF D PRN Q CLRN inst8 PIN_204 sel_speed en PIN_214 rst PIN_28 INPUT VCC INPUT VCC INPUT VCC Slika 3.50: Automatska dodjela pinova (nakon kompajliranja) Može se uočiti da na ovaj način pridruženi pinovi ne odgovaraju projektnom zadatku što nas upućuje da iste moramo manuelno rearanžirati, u skladu sa pozicijama na UP3 ploči. Iz glavnog menija se izabere Assigments -> Pin planner, slika 3.51, i pojavljuje se maska data na slici

138 Slika 3.51: Izbor Pin-planner-a Izaberemo Pins: all i što će izlistati sve ulazno-izlazne pinove korištene u projektu. U polju Location duplim klikom miša dobijamo formu za selektovanje odgovarajućeg pina koji se pridruzuje odgovarajućem ulazu/izlazu, slika Na taj način se kompletira cjelokupno pridruživanje, slika

139 Slika 3.52: Maska Pin-plannera Slika 3.53: Manuelno selektovanje i pridruživanje odredjenog pina. Slika 3.54: Pridruživanje pinova za sve signale. 138

140 Poslije vraćanja na šematski prikaz može se vidjeti nova distribucija pinova, slika clk PIN_29 INPUT VCC clk_div inst1 clk clk_new Parameter Value N A B S 21mux Y inst5 MULTIPLEXER inst9 NOT counter clk output[word_length-1..0] en rst inst Param eter Value w ord_length 4 OUTPUT out[3..0] PIN_56 PIN_55 PIN_54 PIN_53 DFF D PRN Q CLRN inst8 PIN_60 sel_speed en PIN_61 rst PIN_49 INPUT VCC INPUT VCC INPUT VCC Slika 3.55: Manuelno pridruženi pinovi Potrebno je izvršiti novo kompajliranje pa simulaciju i najzad verifikaciju u cilju provjere funkcionalnosti samog kola. Konfigurisanje počinjemo tako što iz glavnog menije izaberemo Tools->Programmer opciju, slika 3.56, ili kliknemo na odgovarajuću ikonicu programmer u Toolbaru. Pojaviće se glavna maska programa za konfigurisanje Programmera, slika Sistem je automatski detektovao na paralelnom portu LPT1 ByteBlaster II kao hardver za programiranje. Izaberemo JTAG mod i čekiramo box Program/Configure. Fajl koji će se uploadovati u FPGA konfiguracionu memoriju ima oznaku test.sof sa odgovarajućom check sumom. Opcija Hardware Setup nam omogućava setovanje drugog hardvera za programiranje (ako postoji), dok forma Mode služi za izbor metoda programiranja (In-socket, passive serial, active serial). Za start programiranja potrebno je pritisnuti Start, a bar Progress će poceti da prikazuje procenat sadrzaja koji je uploadovan, slika Ako je sve u redu, nakon kompletiranja programiranja, kolo na UP3 ploči počinje da obavlja zadatu operaciju, tj. diode se pale u ritmu 4-bitnog brojača. 139

141 Slika 3.56: Izbor opcije programmera. Slika 3.57: Maska programera. 140

142 Slika 3.58: Uspješno uploadovan program. 141

143 4. Primjeri za vježbu 4.1 Primjer 1: DFF U nastavku dat je primjer VHDL koda D flip-flopa. Ulazi flip flopa su clk (takt), D (data ulaz) i rst (asihroni reset), dok je izlaz označen promenljivom Q. Ako je rst=1 Q izlaz ima vrijednost 0. U suprotnom ulaz se preslikava na izlaz i to na pozitivnu ivicu takta (clk). VHDL code DFFa: LIBRARY ieee; USE ieee.std_logic_1164.all; ENTITY dff IS PORT (d, clk, rst: IN STD_LOGIC; q: OUT STD_LOGIC); END dff; ARCHITECTURE behavior OF dff IS BEGIN PROCESS (rst, clk) BEGIN IF (rst='1') THEN q <= '0'; ELSIF (clk'event AND clk='1') THEN q <= d; END IF; 142

144 END PROCESS; END behavior; Komentar: Deklaracija biblioteka nije neophodna u ovom slučaju jer su podaci tipa BIT. Linije 2-3: deklaracija biblioteka (ključna riječ use i ime biblioteke). Linije 5-8: entitet DFFa. Linije 10-20: arhitektura DFFa. Linija 6: ulazni portovi (in). U ovom slučaju svi su tipa std_logic. Linija 7: izlazni portovi (out, inout, buffer). Ovdje su i izlazni portovi tipa std_logic. Linije 11-19: dio koda kojim se definiše arhitektura, počevši od ključne riječi begin. Linije 12-19: proces (u okviru procesa instrukcije se izvršavaju sekvencijalno). Linija 12: proces se izvršava svaki put kad doñe do promjene nekog od signala koji se nalaze u sensitivity listi. U ovom slučaju, proces se izvršava svaki put kad doñe do promjene rst ili clk signala. Linije 14-15: kolo se resetuje svaki put kad rst ima vrijednost logičke jedinice, nezavisno od stanja takta - asinhroni reset. Linije 16-17: ukoliko rst ima vrijednost nula i ukoliko dodje do promjene logičkog stanja takta sa nule na jedan, ulazni signal d se smješta u flip-flop (q<=d). Linije 15 i 17: <= operatorom se dodjeljuje vrijednost signalu. Operator := se koristi ukoliko je riječ o promjenljivoj. Svi portovi su signali. 143

145 Linije 1, 4, 9 i 21: -- označava komentar. Ovdje služe samo za bolju organizaciju dizajna. VHDL nije case sensitive. Simulacija: Na slici 4.1 je dat simulacioni dijagram DFFa predstavljen gornjim kodom. Slika 4.1: Simulacioni dijagram DFF-a. 4.2 Primjer 2: Full Adder Potrebno je napisati VHDL code za kolo koje će obavljati funkciju punog sabirača. Ulazni pinovi su a, b, i cin dok su izlazni pinovi s i cout. Izlaz treba računati kao s=a xor b xor c i cout =a*b+b*cin+a*cin VHDL code: ENTITY full_ader IS PORT (a, b, cin: IN BIT; s, cout: OUT BIT); END full_ader; ARCHITECTURE dataflow OF full_ader IS BEGIN s <= a XOR b XOR cin; cout <= (a AND b) OR (a AND cin) OR (b AND cin); 144

146 END dataflow; Simulacija: Slika 4.2 Rezlutati simulacije za full-addera 4.3 Primjer 3: Up-counter Koristeći se Quartus II softverskim paketom potrebno je napisati VHDL kod za komponentu koja bi tebala da obavlja funkciju up countera. Ulazni pinovi treba da su: clk (globalni takt), rst (reset kola) i enable (kada je na ovom ulazu 1 stanje na brojaču se povećava za 1 a kada je 0 stanje na brojaču se ne mijenja). Izlazni pin treba da je niz bitova koji će označavati stanje na brojaču. Dužina izlaznog niza brojača se zadaju prije kompajliranja kao generic parametri. Potrebno je definisati projekat, napisati VHDL code, kompajlirati ga i izvršiti simulaciju. Nakon uspješno završenog posla portebno je napraviti grafičku komponentu (simbol) od pomenutog dizajna. VHDL code: counter Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; entity counter is generic(word_length : integer:=4); port( clk, en, rst: in std_logic; 145

147 output : out std_logic_vector(word_length-1 downto 0) ); end counter; architecture counter_behav of counter is signal counting : std_logic_vector(word_length-1 downto 0); begin process(clk, rst, en) begin if rst='1' then output<=(others=>'0'); counting<=(others=>'0'); elsif clk'event and clk='1' then if en='1' then output<=counting; counting<=counting+'1'; end if; end if; end process; end architecture; package Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; package counter_package is component counter generic(word_length : integer:=16); port( clk, en, rst: in std_logic; output : out std_logic_vector(word_length-1 downto 0) ); 146

148 end component; end package counter_package; Rezultati simulacije su dati na slici 4.3, dok slika 4.4 prikazuje izgled kreiranog simbola. Slika 4.3: Rezultat simulacije prethodnog VHDL koda Slika 4.4: Prikaz kreiranog grafičkog simbola. 4.4 Primjer 4: Binarni komparator Koristeći se Quartus II softverskim paketom potrebno je napraviti komponentu koja će obavljati funkciju komparatora. Ulazni pinovi treba da budu dva niza promenljive dužine. Dužina ulaznog niza se zadaje prije kompajliranja kao generic parametar. Izlazni pin teba da ima vrijednost 1 kada je vrijednost na ulaznim pinovima ista, a 0 ako to nije slučaj. Potrebno je definisati projekat, napisati VHDL code, kompajlirati ga i izvršiti simulaciju. Nakon uspešno završenog posla portebno je napraviti grafičku komponentu (simbol). VHDL code comparator Library Ieee; Use ieee.std_logic_1164.all; 147

149 Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; entity comparator is generic(word_length : integer:=8); port( input1 : in std_logic_vector(word_length-1 downto 0); input2 : in std_logic_vector(word_length-1 downto 0); clk, rst output : in std_logic; : out std_logic ); end comparator; architecture comparator_behav of comparator is begin process(clk, rst) begin if rst='1' then output<='0'; elsif clk'event and clk='1' then if input1=input2 then output<='1'; else output<='0'; end if; end if; end process; end architecture; package Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all;

150 package comparator_package is component comparator generic(word_length : integer:=8); port( input1 : in std_logic_vector(word_length-1 downto 0); input2 : in std_logic_vector(word_length-1 downto 0); clk, rst output : in std_logic; : out std_logic ); end component; end package comparator_package; Simulacija: Slika 4.5: Rezultat simulacije prethodnog VHDL koda Slika 4.6: Prikaz kreiranog grafičkog simbola 4.5 Primjer 5: Counter+Comparator Koristeći se prethodno kreiranim komponentama potrebno je realizovati sledeći projekat. Vrijednost pina na izlazu treba da bude 1 kada je vrijednost na osmobitnom brojaču 81 ( ). Potebno je 149

151 iskoristiti prethodno kreirane komponente kao i komponentu constant koja se nalazi u biblioteci megafunctions-> gates. Definisati projekat, kreirati grafički fajl, dodati korišćene fajlove u projekat, kompajlirati dizajn i izvršiti simulaciju. Nakon što je simulacijom potvrñena ispravnost funkcionalnosti kola potrebno je dodeliti pinove za neko proizvoljno izabrano FPGA kolo. Sistem je potebno ponovo kompajlirati. Slika 4.7: Prikaz kreiranog dizajna. Slika 4.8: Rezultat simulacije. 4.6 Primjer 6: Mux2to1 vektorskih podataka sa promjenljivom dužinom Koristeći se Quartus II softverskim paketom potrebno je kreirati multiplekser 2u1. Ulazi treba da su 2 podatka čija se dužina zadaje pre kompajliranja kao generic parametar. Izlaz treba da je niz iste dužine kako i 150

152 ulazni podaci. Multiplekser treba da sadrži i jedan kontrolni ulaz koji odreñuje koji će od podataka biti prosledjen na izlaz. Potrebno je napisati VHDL code kompajlirati dizajn i kreirati grafičku komponentu. Priložite adekvatni simulacioni dijagram. VHDL code data in multiplexer Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; entity mux2to1 is generic(word_length : integer:=16); port ( contr : in std_logic; input1 : in signed(word_length-1 downto 0); input2 : in signed(word_length-1 downto 0); output : out signed(word_length-1 downto 0) ); end mux2to1; architecture mux2to1_behav of mux2to1 is begin process(contr, input1, input2) begin if contr='1' then output<=input1; else output<=input2; end if; end process; 151

153 end mux2to1_behav; Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; package mux2to1_package is component mux2to1 generic(word_length : integer:=16); port ( contr : in std_logic; input1 : in signed(word_length-1 downto 0); input2 : in signed(word_length-1 downto 0); output : out signed(word_length-1 downto 0) ); end component; end mux2to1_package; Simulacija: Slika 4.9: Prikaz rezultata simulacije. 4.7 Primjer 7: Mux4to1 pomoću Mux2to1 Koristeći se prethodno razvijenim dizajnom potrebno je kreirati multiplekser 4u1. Potebno je kreirati projekat i u njega uključiti odgovarajući VHDL file. Zatim je potrebno napisati VHDL file za multiplekser 4u1. 152

154 Potrebno je priložiti simulacione dijagrame i od kreiranog fajla napraviti grafički objekat. VHDL code: Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; library work; use work.mux2to1_package.all; entity mux4to1 is generic(word_length : integer:=16); port ( contr : in std_logic_vector(1 downto 0); input1 : in signed(word_length-1 downto 0); input2 : in signed(word_length-1 downto 0); input3 : in signed(word_length-1 downto 0); input4 : in signed(word_length-1 downto 0); output : out signed(word_length-1 downto 0) ); end mux4to1; architecture mux4to1_behav of mux4to1 is signal temp1, temp2 : signed(word_length-1 downto 0); begin mux1def : mux2to1 generic map (word_length=>word_length) port map (input1=>input1, input2=>input2, contr=>contr(0),output=>temp1); mux2def : mux2to1 generic map (word_length=>word_length) port map (input1=>input3, input2=>input4, contr=>contr(0),output=>temp2); mux3def : mux2to1 generic map (word_length=>word_length) 153

155 port map (input1=>temp1, input2=>temp2, contr=>contr(1),output=>output); end mux4to1_behav; Library Ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; library work; use work.mux2to1_package.all; package mux4to1_package is component mux4to1 generic(word_length : integer:=16); port ( contr : in std_logic_vector(1 downto 0); input1 : in signed(word_length-1 downto 0); input2 : in signed(word_length-1 downto 0); input3 : in signed(word_length-1 downto 0); input4 : in signed(word_length-1 downto 0); output : out signed(word_length-1 downto 0) ); end component; end mux4to1_package; Simulacija: Slika 4.10: Prikaz rezultata simulacije multipleksera 4u1. 154

156 mux4to1 contr[1..0] input1[word_length-1..0] input2[word_length-1..0] input3[word_length-1..0] input4[word_length-1..0] Parameter Value w ord_length 16 output[word_length-1..0] inst Slika 4.11: Multiplexer 4u1, prikaz grafičkog simbola. 4.8 Primjer 8: Shift registar sa promjenljivom dužinom Koristeći se Quartuss II programskim paketom potrebno je kreirati dizajn koji će obavljati funkciju shift registra. Dužina registra se specificira prije kompajliranja kao generic parametar. Dizajn ima po jedan ulazni i izlazni data podatak. Pored ovih podataka shift registar trba da poseduje i ulaze clk (takt) kao i rst (globalni reset). Potrebno je napisati kod i priložiti simulacione dijagrame. Takaoñe, dati prikaz grafičkog dizajna. library ieee; use ieee.std_logic_1164.all; entity basic_shift_register is generic ( NUM_STAGES : natural := 64 ); port ( clk enable : in std_logic; : in std_logic; sr_in : in std_logic; 155

157 sr_out : out std_logic ); end entity; architecture rtl of basic_shift_register is -- Build an array type for the shift register type sr_length is array ((NUM_STAGES-1) downto 0) of std_logic; -- Declare the shift register signal signal sr: sr_length; begin process (clk) begin if (rising_edge(clk)) then if (enable = '1') then stage is lost 2) downto 0); -- Shift data by one stage; data from last sr((num_stages-1) downto 1) <= sr((num_stages- -- Load new data into the first stage sr(0) <= sr_in; end if; end if; end process; -- Capture the data from the last stage, before it is lost sr_out <= sr(num_stages-1); 156

158 end rtl; Simulacija: Slika 4.12: Prikaz rezultata simulacije. shif ter clk enable sr_in sr_out inst Param eter Value NUM_STAGES 4 Slika 4.13: Prikaz grafičkog simbola kreiranog shift registra. 4.9 Primjer 9: RAM memory Koristeći se Quartus II programskim paketom potrebno je napisati program koji će obavljati funkciju RAM memorije. Dizajn teba da ima jedan ulaz za podatke (std_logic_vector čija se dužina zadaje kao generic parametar prije kompajliranja) kao i ulaz koji će odredjivati u kojoj adresi se vrši upis/čitanje. Izlaz treba da je bit vector niz podataka. Dužina podataka kao i broj riječi koje se mogu upisati u memoriji se zadaje kao 157

159 generic parametar. Dizajn treba da ima još jedan ulaz koji će odreñivati da li se u memoriji u datom trenutku vrši čitanje ili upisivanje. Potebno je definisati projekat, napisati VHDL code, izvršiti kompajliranje i simulaciju. Priložiti VHDL file i simulacione dijagrame. VHDL code: Single port RAM library ieee; use ieee.std_logic_1164.all; entity single_port_ram is generic ( DATA_WIDTH : natural := 8; ADDR_WIDTH : natural := 6 ); port ( clk : in std_logic; addr : in natural range 0 to 2**ADDR_WIDTH - 1; data : in std_logic_vector((data_width-1) downto 0); we : in std_logic := '1'; q : out std_logic_vector((data_width -1) downto 0) ); end entity; architecture rtl of single_port_ram is -- Build a 2-D array type for the RAM 158

160 subtype word_t is std_logic_vector((data_width-1) downto 0); type memory_t is array(addr'high downto 0) of word_t; -- Declare the RAM signal. signal ram : memory_t; -- Register to hold the address signal addr_reg : natural range 0 to addr'high; begin process(clk) begin if(rising_edge(clk)) then if(we = '1') then ram(addr) <= data; end if; -- Register the address for reading addr_reg <= addr; end if; end process; q <= ram(addr_reg); end rtl; Simulacija: Slika 4.14: Prikaz rezultata simulacije 4.10 Primjer 10: State Machine Projektovati State Machinu Malyevog tipa (mašina čiji izlaz zavisi i od prethodnog stanja i stanja trenutnog ulaza). Mašina treba da obavlja 159

161 funkciju detektora sekvence Dizajn treba da ima clk i reset signale kao i jedan ulaz i izlaz. Potrebno je napisati VHDL kod, i dati prikaz simulacionih dijagrama. VHDL code: library ieee; use ieee.std_logic_1164.all; entity state_machine is port ( clk : in std_logic; input : in std_logic; reset : in std_logic; output : out std_logic ); end entity; architecture rtl of state_machine is -- Build an enumerated type for the state machine type state_type is (s0, s1, s2, s3); -- Register to hold the current state signal state : state_type; begin process (clk, reset) begin if reset = '1' then state <= s0; elsif (rising_edge(clk)) then case state is when s0=> if input = '1' then state <= s1; else 160

162 state <= s0; end if; when s1=> if input = '1' then state <= s2; else state <= s0; end if; when s2=> if input = '1' then state <= s3; else state <= s0; end if; when s3=> if input = '1' then state <= s3; else state <= s0; end if; end case; end if; end process; process (state, input) begin case state is when s0=> if input = '1' then output <= '0'; else output <= '0'; end if; when s1=> if input = '1' then 161

163 output <= '0'; else output <= '0'; end if; when s2=> if input = '1' then output <= '0'; else output <= '0'; end if; when s3=> if input = '1' then output <= '0'; else output <= '1'; end if; end case; end process; end rtl; Simulacija: Slika 4.15: Prikaz simulacionog dijagrama state machine 4.11 Napredni dizajn: Primjer realizacije Fleksibilnog FPGA baziranog IIR filtra U okviru ovog paragrafa dat je primjer realizacije jednog složenijeg sistema, konkretno IIR filtra. Upoznajmo se najpre sa osnovnom funkcijom tj jednačinom IIR sistema. 162

164 Opšta forma funkcije prenosa digitalnog sistema Svaki digitalni sistem se može predstaviti takozvanom funkcijom prenosa, čiji je opšti oblik dat formulom (4.1) 1 N A0 + A1 z AN z 1 M 1 M Y ( z) H ( z) = = 4.1 X ( z) 1 B z... B z Datoj funkciji prenosa u vremenskom domenu odgovara diferencna jednačina: y( n) = A x( n) + A x( n 1) A x( n N) + B y( n 1) B y( n M ) N 1 M Upravo ova jednačina poslužiće kao osnov realizacije IIR filtra Osnovni princip projektovanog digitalnog filtra. Opšta blok šema realizacje Na slici 4.16 data je opšta blok šema realizacije kompletnog sistema. 163

165 Slika 4.16: Opšta blok šema realizacije filtera Sistem se sastoji iz više blokova. Ključni dio je Filter Algorithm u kome se realizuje sama funkcija filtra. Naime, u njemu se obavljaju potrebne numeričke operacije (množenja i sabiranja - formula 4.2). Ovom bloku je paraleno potrebno proslediti vrednosti sa ulaza (i izlaza) i tu funkciju obavlja sklop Data Menager. Takoñe, bloku Filter Algorithm potrebno je prosledi koeficiente filtra. U tom cilju kreiran je dio Coef Menager. Funkcija ovog bloka je smještanje koeficienta koji se serijski upisuju preko ulaza coef_in. Sam blok se može shvatiti kao serijska veza više registara (broj registara jednak je broju množača koje poseduje ralizovan filtar). Prilikom upisivanja koeficienata (programiranje filtra) kontrolni signal write_coef potebno je postaviti na 1. Prvo se upisuju takozvani direktni koeficienti ( A 0, A 1, A 2,.. A N ), a zatim i povratni koeficienti ( B 0, B 1, B 2,.. B N ). Kada se upis obavi, signal coef_complete ima vrijednost 1 i time označava da je 164

166 upis završen, a filtar spreman za puštanje u rad. To se postiže kratkim pozitivnim impulsom na start ulazu. Signali data_valid i clk_out služe kao indikacija da su rezultati na izlazu spremni za preuzimanje, odnosno za sinhronizaciju sa ostatkom sistema. Podaci se preuzimaju kada je na izlazu clk_out ostvari pozitivna tranzicija. Ukoliko je filter potrebno reprogramirati, sistem prethodno mora biti resetovan (pozitivni impuls na ulazu rst) Primer realizacije, FPGA baziranog, IIR filtra U okviru primjera realizovan je fleksibilan core koji će obavljati funkciju IIR filtra. Na slici 4.17 dat je šematski prikaz ponuñenog rešenja. Slika 4.17: IIR core. Prikaz bloka (shematic file) Core je potpuno prilagoñen za različite dužine podataka kao i za različiti red filtra. Ove vrijednosti je prije kompajliranja potrebno unijeti kao generic parametre (word_length i order). Prilikom programiranja filtra potrebno je znati sledeće. Za njegovu realizaciju korištena je takozvana integer aritmetika. Pošto se u opštem slučaju prilikom računanja koeficienata filtra, dobijaju realni brojevi (u opsegu 1 1), dobijene vrednosti je pre unošenja potrebno preskalirati u _ 1 _ 1 odnosu na opseg 2 word length 2 word length, gde je word_length dužina riječi. _ 1 Dakle, dobijeni realni koeficienti se pomnože sa 2 word length i dobijeni rezultat se zaokruži na najbližu celobrojnu vrijednost. 165

167 Što se samog interfejsa tiče on je u potpunosti objašnjen u prethodnom poglavlju pa je ovdje samo dat prikaz jedne Quartus simulacije koja najbolje ilustruje gore pomenuto, slika Slika 4.18: IIR filtar. Prikaz Quartus simulacije Resursi utrošeni za realizaciju IIR filtra Na donjem grafiku, slika 4.19, dati su resursi potrebni poterbni za realizaciju predloženog rešenja IIR filtra. Grafik je dat za različite dužine podataka kao i za različit red filtra. Resursi su snimani za FPGA Cyclone - EP1C6Q240C8. Logic Cels Red Filtra 8 16 Slika 4.18: IIR filtar. Pregled utrošenih resursa za različiti red filtra i dužine podataka. 166

168 Komentar: Vidi se da je broj logičih kola potrebnih za realizaciju IIR filtra srazmjeran redu filtra. Bitno je naglasiti da se najveći resursi troše za paralelne množače kojih svaki IIR filtar ima 2 order. Ukoliko se za realizaciju opisanog rešenja izabere neko novije kolo koje sadrži DSP blokove broj logičkih kola potrebnih za ovakvu realizaciju će se znatno smanjiti naravno baš na uštrb DSP blokova. Za realizaciju paralelnog množača se može upotrebiti 1 DSP blok (ako je dužina reči manja od 9), odnosno 2 (ako je dužina reči manja od 18). U ovoj činjenici će se najbolje ogledati preraspodjela resursa ukoliko bi se za realizaciju koristio neki noviji FPGA čip. 167

169 VHDL code IIR filtra IIR filter iir filter Library ieee; Use ieee.std_logic_1164.all; Use Ieee.std_logic_arith.all; Use ieee.std_logic_unsigned.all; use work.add3_package.all; use work.clk_new_package.all; use work.jk_f_f_package.all; entity iir is generic ( word_length: integer :=16; order: integer :=6 ); port( clk_in, rst : in std_logic; start,write_coef, clk_coef : in std_logic; out_clk, data_valid : out std_logic; coef_complete : out std_logic; din_coef, data_in : in signed(word_length-1 downto 0); data_out : out signed(word_length-1 downto 0)

170 ); end iir; architecture iir_behav of iir is component add3 generic( word_length : integer:=8); port( clk, rst : in std_logic; inp1, inp2, inp3 : in signed(word_length-1 downto 0); output : out signed(word_length-1 downto 0) ); end component; Component JK_f_f Port ( j, k, clk, clr : in std_logic ; q : out std_logic); End Component; Component clk_new Port( clk, En :In std_logic; clk_out :Out std_logic); End Component; 169

171 type memo is array(natural range<>) of signed(word_length-1 downto 0); type memo_2x is array(natural range<>) of signed(2*word_length-1 downto 0); type memo_ord is array(natural range <>) of signed(word_length+order-1 downto 0); signal coefs : memo (0 to 2*order); signal multed : memo_2x (0 to order); signal multed_bek : memo_2x(1 to order); signal multed_scal_dir : memo(0 to order); signal multed_scal_bek : memo (1 to order); signal inp_temp : signed(word_length-1 downto 0); signal dat_val_temp, start_temp : std_logic; signal coef_complete_temp1 : std_logic; signal coef_complete_temp2 : std_logic; signal add_temp : memo_ord(0 to order); signal j : integer range 0 to 2*order+1; signal i : integer range 0 to order+2; begin process(clk_coef, rst, write_coef) begin if rst='1' then for i in 0 to 2*order loop coefs(i)<=(others=>'0'); end loop; 170

172 j<=0; coef_complete_temp1<='0'; elsif clk_coef'event and clk_coef='1' then if write_coef='1' then coefs(0 to 2*order-1)<=coefs(1 to 2*order); coefs(2*order)<=din_coef; if j<2*order then j<=j+1; else j<=0; end if; if j=2*order then coef_complete_temp1<='1'; else coef_complete_temp1<='0'; end if; else j<=0; end if; end if; end process; process(clk_in, rst, start_temp, write_coef) 171

173 begin if rst='1' or start_temp='0' then for i in 0 to order loop multed(i)<=(others=>'0'); end loop; i<=0; dat_val_temp<='0'; coef_complete_temp2<='1'; elsif clk_in'event and clk_in='1' then for i in 0 to order loop multed(i)<=coefs(i)*data_in; end loop; if coef_complete_temp1='1' then coef_complete_temp2<='0'; end if; if i=order+2 then dat_val_temp<='1'; else dat_val_temp<='0'; i<=i+1; end if; end if; 172

174 end process; coef_complete<=coef_complete_temp1 and coef_complete_temp2; process(multed, multed_scal_dir) begin for i in 0 to order loop multed_scal_dir(i)<=multed(i)(2*word_length-2 downto word_length-1); end loop; end process; add_generate: for i in 1 to order-1 generate add_def_i: add3 generic map(word_length=>word_length+order) port map(clk=>clk_in,rst=>rst, inp1=>conv_signed(multed_scal_dir(i),word_length+order), inp2=>add_temp(i+1), inp3=>-conv_signed(multed_scal_bek(i), word_length+order), output=>add_temp(i)); end generate add_generate; add_def_ord: add3 generic map(word_length=>word_length+order) port map(clk=>clk_in,rst=>rst, inp1=>conv_signed(multed_scal_dir(order),word_length+order), inp2=>(others=>'0'), inp3=>-conv_signed(multed_scal_bek(order),word_length+order), output=>add_temp(order)); 173

175 add_def_0 : add3 generic map(word_length=>word_length+order) port map(clk=>clk_in,rst=>rst, inp1=>conv_signed(multed_scal_dir(0),word_length+order), inp2=>conv_signed(add_temp(1),word_length+order), inp3=>(others=>'0'), output=>add_temp(0)); process(add_temp(0),multed_bek, multed_scal_bek, coefs) begin for i in 1 to order loop multed_bek(i)<=coefs(order+i)*(add_temp(0)(word_length-1 downto 0)); multed_scal_bek(i)<=multed_bek(i)(2*word_length-2 downto word_length-1); end loop; end process; jk_start_def: jk_f_f port map(clk=>clk_in, clr=>rst,j=>start, k=>write_coef, q=>start_temp); clk_out_def: clk_new port map(clk=>not clk_in, en=>dat_val_temp, clk_out=>out_clk); process(clk_in, rst, dat_val_temp, add_temp(0)) begin if rst='1' then data_valid<='0'; 174

176 elsif clk_in'event and clk_in='1' then if rst='1' then data_out<=(others=>'0'); else data_out<=add_temp(0)(word_length-1 downto 0); data_valid<=dat_val_temp; end if; end if; end process; end iir_behav; JK Flip flop JK Flip-Flop Library ieee; Use ieee.std_logic_1164.all; Entity JK_f_f is Port ( j, k, clk, clr : in std_logic ; q : out std_logic); End JK_f_f;

177 Architecture JK_f_f_behav of JK_f_f is Signal qtemp: std_logic; Begin Process(clk,clr) Begin if clr='1' then qtemp<='0'; elsif clk'event and clk = '1' then if j='1' and k='0' then qtemp<='1'; end if; if j='0' and k='1' then qtemp<='0'; end if; if j='0' and k='0' then qtemp<=qtemp; end if; if j='1' and k='1' then qtemp<= not qtemp; end if; End if ; End Process ; q<= qtemp; End JK_f_f_behav;

178 Library ieee; Use ieee.std_logic_1164.all; Package JK_f_f_package is Component JK_f_f Port ( j, k, clk, clr : in std_logic ; q : out std_logic); End Component; End JK_f_f_package; CLK_new Clk_New library ieee; use ieee.std_logic_1164.all; entity clk_new is port( clk, en : in std_logic; clk_out : out std_logic); end clk_new; architecture clk_new_behav of clk_new is signal Temp : std_logic; 177

179 begin process(clk) begin if clk'event and clk='0' then temp<=en; end if; end process; clk_out<=temp and clk; end clk_new_behav; library Ieee; use ieee.std_logic_1164.all; Package clk_new_package Is Component clk_new Port( clk, En :In std_logic; clk_out :Out std_logic); End Component; End Clk_new_package; 178

180 5. Literatura 1. Radovan Stojanović, "Automatizovani dizajn elektronskih kola (ADEK - CAED)", skripta, Elektrotehnički Fakultet, Univerzitet Crne Gore, James O. Hablen, Tyson S. Hall, Michael D Furman, "Rapid Prototyping of Digital Systems", Springer Science and Business Media, Inc., Clive "Max" Maxfield, "The Design Warrior's Guide to FPGAs", Mentor Graphics Corporation and Xilinx, Inc., Robert Dueck, "Digital Design with CPLD Applications and VHDL", Delmar/Thomson Learning, Peter J. Ashenden, "The VHDL Cookbook", Dept. Computer Science University of Adelaide, South Australia, Enoch O. Hwang, B, "Microprocessor Design, Principles and Practices with VHDL", Brooks/Cole, Mark Zwolinski, Digital System Design with VHDL 2 nd Edition, Pearson and Prentice Hall, Stephen Brown and Jonathan Rose, "Architecture of FPGAs and CPLDs: A Tutorial", IEEE Design and Test of Computers, Vol. 13, No. 2, pp , John F. Wakerly, Digital Design Principles and Practices, Pearson, Milena Jovanovic, Projektovanje digitalnih sistema upotrebom Quartus II razvojnog okruženja, diplomski rad, ETF Podgorica, 2004.

181 11. Jakšić Zoran, Primjena FPGA tehnologije u digitalnoj obradi signala, diplomski rad, ETF Podgorica, Nebojša Šolaja, Razvoj i realizacija rekonfigurabilnih elektronskih sistema za laserski bazirana mjerenja, magistarski rad, ETF Podgorica,

182 Prilog 1: UP3 edukaciona ploča Kompletno projektovanje, simulacija i verifikacija u primjerima u okviru ovog priručnika obavljeni su u Alterinom razvojnom okruženju Quartus II. Pri tom je korištena UP3 edukaciona ploča, slika P1.1, na kojoj je svaki dizajn eksperimentalno provjeren. UP3 kit sadrži Cyclone FPGA čip, eksterni SRAM, SDRAM, Flash memoriju i širok asortiman I/O uredaja i konektora. Alterina UP3 ploča dostupna je u dvije verzije: sa EP1C6Q240 FPGA ili nešto većim EP1C12Q240 FPGA čipom. Kao interfejs za programiranje FPGA kola može se upotrijebiti Byte Blaster II, koji se konektuje na PC paralelni port ili USB Blaster kabal (vidi 3.9). Za napajanje energijom se koristi eksterni 6V DC kabal ili AC -to-dc adapter. Slika P1.1: Izgled Alterine UP3 edukacione ploče. 181

183 P1.1 Karakteristike UP3-1C6 i UP3-1C12 edukacionih ploča Raspored odgovarajućih interfejsa i konektora na UP3-1C6 eksperimentalnoj ploči je dat na slici P1.2 Slika P1.2: Raspored interfejsa i konektora. Slijedi pregled karakteristika UP3-1C6 ploče: º Altera EP1C6Q240 FPGA cip i EPCS1 konfiguracioni uredaj º Podržava IP (Intelectual Property) bazirani dizajn sa ili bez mikroprocesora º USB 1.1 (najveca i najmanja brzina) º RS 232 Port º Parallel Port (IEEE 1284) º PS/2 Port º VGA Port º IDE (Integrated Drive Electronics) 182

184 º 2 kilobajta I2C PROM-a (proširiv) º 128 kilobajta SRAM-a º 2 megabajta Flash-a º 8 megabajta SDRAM-a º Podržava više clock-ova, poput CPU clock-a, USB clock-a, PCI clock-a, IOAPIC clock-a º JTAG i aktivni serijski download kapaciteti º 5V Santa Cruz long Expansion Header koji podrzava 74 I/O º 4-bitni switch blok º 4 prekidaca i globalni reset prekidac º 4 LED º 16x2 karaktera LCD modul º I2C Real Time Clock Razlike izmedju UP3-1C6 i UP3-1C12 ploče mogu se sumirati u: EP1C6Q240 i EP1C12Q240 čipovi imaju različit broj logičkih elemenata (LE), različit broj RAM blokova i internih RAM bitova (Tabela P.1). UP3-1C6 ploca podržava 74 I/O pina, a UP3-1C12 ploca podržava 62 I/O pina. Raspored pinova kod LCD modula, kao i kod memorijskih uredaja je razlicit. Bitno je i naznačiti da se mora kompajlirati dizajn za odgovarajući Cyclone čip, jer u suprotnom neće biti download-ovan. Ukoliko želimo u toku rada preći sa jedne ploče na drugu, potrebno je provjeriti oznake pinova pa, rekompajlirati dizajn za novi FPGA čip. 183

185 Tabela P1.1: Karakteristike Cyclone FPGA cipova na UP3 ploči. UP3 ploča obezbjeduje nekoliko eksternih ROM i RAM memorija čiji su kapaciteti znatno veći od Cyclone FPGA interne memorije, ali zahtijevaju i duže vrijeme pristupa (Tabela P1.2). FPGA procesori poput NIOS-a koriste eksternu memoriju kao programsku i data memoriju, a internu memoriju za registraciju i skladištenje. Flash i EEPROM koriste se za nepromjenljivo memorijsko skladištenje. EPCS1 serijski Flash čip koristi se za automatsko punjenje FPGA serijske konfiguracije u sistemima gdje se ne želi download-ovati dizajn u ploču preko Byte Blaster II kabla svaki put kada se priključi na napajanje. Tabela P1.2: Memorijske karakteristike UP3 ploče. P1.2 I/O karakteristike UP3 ploče Za većinu uredaja, hardver UP3 ploče obezbjeduje samo električni interfejs do FPGA I/O pinova. Logika koja obezbjeduje interfejs kontroler za uredaj mora se konstruisati pomoću FPGA interne logike. Cyclone FPGA je "surface-mount" čip direktno zalemljen na ploču. Jako je komplikovano, ako ne i nemoguće zamijeniti ovaj čip bez skupocjenog alata namijenjenog za tu operaciju. Zbog velike osjetljivosti I/O pinova 184

186 treba voditi računa o tome kako eksterne uredaje konektujemo na Cyclone I/O pinove. Takode, pinove treba označiti kao što piše u uputstvu i povezati ih sa odgovarajućim uredajima (Tabela P1.3). Tabela P1.3: Pregled karakteristika I/O pinova na UP3 ploči. U Tabeli P1.4 slijedi pregled naziva, tipova i funkcija najčešće korištenih I/O FPGA pinova u okviru UP3 ploče. 185

187 Tabela P1.4: Pregled najcešce korišcenih I/O FPGA pinova. 186

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije

Biznis scenario: sekcije pk * id_sekcije * naziv. projekti pk * id_projekta * naziv ꓳ profesor fk * id_sekcije Biznis scenario: U školi postoje četiri sekcije sportska, dramska, likovna i novinarska. Svaka sekcija ima nekoliko aktuelnih projekata. Likovna ima četiri projekta. Za projekte Pikaso, Rubens i Rembrant

More information

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri.

Ulazne promenljive se nazivaju argumenti ili fiktivni parametri. Potprogram se poziva u okviru programa, kada se pri pozivu navode stvarni parametri. Potprogrami su delovi programa. Često se delovi koda ponavljaju u okviru nekog programa. Logično je da se ta grupa komandi izdvoji u potprogram, i da se po želji poziva u okviru programa tamo gde je potrebno.

More information

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan.

SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan. SIMPLE PAST TENSE (prosto prošlo vreme) Građenje prostog prošlog vremena zavisi od toga da li je glagol koji ga gradi pravilan ili nepravilan. 1) Kod pravilnih glagola, prosto prošlo vreme se gradi tako

More information

Podešavanje za eduroam ios

Podešavanje za eduroam ios Copyright by AMRES Ovo uputstvo se odnosi na Apple mobilne uređaje: ipad, iphone, ipod Touch. Konfiguracija podrazumeva podešavanja koja se vrše na računaru i podešavanja na mobilnom uređaju. Podešavanja

More information

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević

GUI Layout Manager-i. Bojan Tomić Branislav Vidojević GUI Layout Manager-i Bojan Tomić Branislav Vidojević Layout Manager-i ContentPane Centralni deo prozora Na njega se dodaju ostale komponente (dugmići, polja za unos...) To je objekat klase javax.swing.jpanel

More information

SAS On Demand. Video: Upute za registraciju:

SAS On Demand. Video:  Upute za registraciju: SAS On Demand Video: http://www.sas.com/apps/webnet/video-sharing.html?bcid=3794695462001 Upute za registraciju: 1. Registracija na stranici: https://odamid.oda.sas.com/sasodaregistration/index.html U

More information

Uvod u relacione baze podataka

Uvod u relacione baze podataka Uvod u relacione baze podataka 25. novembar 2011. godine 7. čas SQL skalarne funkcije, operatori ANY (SOME) i ALL 1. Za svakog studenta izdvojiti ime i prezime i broj različitih ispita koje je pao (ako

More information

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings

Eduroam O Eduroam servisu edu roam Uputstvo za podešavanje Eduroam konekcije NAPOMENA: Microsoft Windows XP Change advanced settings Eduroam O Eduroam servisu Eduroam - educational roaming je besplatan servis za pristup Internetu. Svojim korisnicima omogućava bezbedan, brz i jednostavan pristup Internetu širom sveta, bez potrebe za

More information

Port Community System

Port Community System Port Community System Konferencija o jedinstvenom pomorskom sučelju i digitalizaciji u pomorskom prometu 17. Siječanj 2018. godine, Zagreb Darko Plećaš Voditelj Odsjeka IS-a 1 Sadržaj Razvoj lokalnog PCS

More information

Struktura indeksa: B-stablo. ls/swd/btree/btree.html

Struktura indeksa: B-stablo.   ls/swd/btree/btree.html Struktura indeksa: B-stablo http://cis.stvincent.edu/html/tutoria ls/swd/btree/btree.html Uvod ISAM (Index-Sequential Access Method, IBM sredina 60-tih godina 20. veka) Nedostaci: sekvencijalno pretraživanje

More information

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI

IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI IZDAVANJE SERTIFIKATA NA WINDOWS 10 PLATFORMI Za pomoć oko izdavanja sertifikata na Windows 10 operativnom sistemu možete se obratiti na e-mejl adresu esupport@eurobank.rs ili pozivom na telefonski broj

More information

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB.

KAPACITET USB GB. Laserska gravura. po jednoj strani. Digitalna štampa, pun kolor, po jednoj strani USB GB 8 GB 16 GB. 9.72 8.24 6.75 6.55 6.13 po 9.30 7.89 5.86 10.48 8.89 7.30 7.06 6.61 11.51 9.75 8.00 7.75 7.25 po 0.38 10.21 8.66 7.11 6.89 6.44 11.40 9.66 9.73 7.69 7.19 12.43 1 8.38 7.83 po 0.55 0.48 0.37 11.76 9.98

More information

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd,

AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje. Marko Eremija Sastanak administratora, Beograd, AMRES eduroam update, CAT alat za kreiranje instalera za korisničke uređaje Marko Eremija Sastanak administratora, Beograd, 12.12.2013. Sadržaj eduroam - uvod AMRES eduroam statistika Novine u okviru eduroam

More information

1.7 Predstavljanje negativnih brojeva u binarnom sistemu

1.7 Predstavljanje negativnih brojeva u binarnom sistemu .7 Predstavljanje negativnih brojeva u binarnom sistemu U decimalnom brojnom sistemu pozitivni brojevi se predstavljaju znakom + napisanim ispred cifara koje definišu apsolutnu vrednost broja, odnosno

More information

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA

CJENIK APLIKACIJE CERAMIC PRO PROIZVODA STAKLO PLASTIKA AUTO LAK KOŽA I TEKSTIL ALU FELGE SVJETLA KOŽA I TEKSTIL ALU FELGE CJENIK APLIKACIJE CERAMIC PRO PROIZVODA Radovi prije aplikacije: Prije nanošenja Ceramic Pro premaza površina vozila na koju se nanosi mora bi dovedena u korektno stanje. Proces

More information

OBJEKTNO ORIJENTISANO PROGRAMIRANJE

OBJEKTNO ORIJENTISANO PROGRAMIRANJE OBJEKTNO ORIJENTISANO PROGRAMIRANJE PREDAVANJE 3 DEFINICIJA KLASE U JAVI Miloš Kovačević Đorđe Nedeljković 1 /18 OSNOVNI KONCEPTI - Polja - Konstruktori - Metode - Parametri - Povratne vrednosti - Dodela

More information

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ

TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ TRENING I RAZVOJ VEŽBE 4 JELENA ANĐELKOVIĆ LABROVIĆ DIZAJN TRENINGA Model trening procesa FAZA DIZAJNA CILJEVI TRENINGA Vrste ciljeva treninga 1. Ciljevi učesnika u treningu 2. Ciljevi učenja Opisuju željene

More information

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE

CJENOVNIK KABLOVSKA TV DIGITALNA TV INTERNET USLUGE CJENOVNIK KABLOVSKA TV Za zasnivanje pretplatničkog odnosa za korištenje usluga kablovske televizije potrebno je da je tehnički izvodljivo (mogude) priključenje na mrežu Kablovskih televizija HS i HKBnet

More information

PROJEKTNI PRORAČUN 1

PROJEKTNI PRORAČUN 1 PROJEKTNI PRORAČUN 1 Programski period 2014. 2020. Kategorije troškova Pojednostavlj ene opcije troškova (flat rate, lump sum) Radni paketi Pripremni troškovi, troškovi zatvaranja projekta Stope financiranja

More information

POKAZNA VEŽBA 1 Osnovi projektovanja digitalnih sistema na nivou logičkih kola

POKAZNA VEŽBA 1 Osnovi projektovanja digitalnih sistema na nivou logičkih kola POKAZNA VEŽBA 1 Osnovi projektovanja digitalnih sistema na nivou logičkih kola Potrebno predznanje Osnovno poznavanje digitalne elektronike Bulova (Boolean) algebra Šta će biti naučeno tokom izrade vežbe?

More information

BENCHMARKING HOSTELA

BENCHMARKING HOSTELA BENCHMARKING HOSTELA IZVJEŠTAJ ZA SVIBANJ. BENCHMARKING HOSTELA 1. DEFINIRANJE UZORKA Tablica 1. Struktura uzorka 1 BROJ HOSTELA BROJ KREVETA Ukupno 1016 643 1971 Regije Istra 2 227 Kvarner 4 5 245 991

More information

Klasterizacija. NIKOLA MILIKIĆ URL:

Klasterizacija. NIKOLA MILIKIĆ   URL: Klasterizacija NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info Klasterizacija Klasterizacija (eng. Clustering) spada u grupu tehnika nenadgledanog učenja i omogućava grupisanje

More information

Kontrolna logika za praćenje i prikaz rezultata teniskog meča

Kontrolna logika za praćenje i prikaz rezultata teniskog meča Kontrolna logika za praćenje i prikaz rezultata teniskog meča Sandra Ilijin, Predrag Petković Најбољи рад младог истраживача на секцији EL Apstrakt U ovom radu predloženo je jedno rešenje kontrolne logike

More information

STRUČNA PRAKSA B-PRO TEMA 13

STRUČNA PRAKSA B-PRO TEMA 13 MAŠINSKI FAKULTET U BEOGRADU Katedra za proizvodno mašinstvo STRUČNA PRAKSA B-PRO TEMA 13 MONTAŽA I SISTEM KVALITETA MONTAŽA Kratak opis montže i ispitivanja gotovog proizvoda. Dati izgled i sadržaj tehnološkog

More information

Tutorijal za Štefice za upload slika na forum.

Tutorijal za Štefice za upload slika na forum. Tutorijal za Štefice za upload slika na forum. Postoje dvije jednostavne metode za upload slika na forum. Prva metoda: Otvoriti nova tema ili odgovori ili citiraj već prema želji. U donjem dijelu obrasca

More information

Nejednakosti s faktorijelima

Nejednakosti s faktorijelima Osječki matematički list 7007, 8 87 8 Nejedakosti s faktorijelima Ilija Ilišević Sažetak Opisae su tehike kako se mogu dokazati ejedakosti koje sadrže faktorijele Spomeute tehike su ilustrirae a izu zaimljivih

More information

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum:

Programiranje. Nastava: prof.dr.sc. Dražena Gašpar. Datum: Programiranje Nastava: prof.dr.sc. Dražena Gašpar Datum: 21.03.2017. 1 Pripremiti za sljedeće predavanje Sljedeće predavanje: 21.03.2017. Napraviti program koji koristi sve tipove podataka, osnovne operatore

More information

VBA moduli. mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice

VBA moduli. mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice VBA moduli mr Milovan Milivojević dipl. ing. Visa Poslovno Tehnička Škola - Užice Moduli (modules) ponašanje modula Ponašanje modula može se prilagoditi na 4 načina: Option Explicit Option Private Module

More information

Struktura i organizacija baza podataka

Struktura i organizacija baza podataka Fakultet tehničkih nauka, DRA, Novi Sad Predmet: Struktura i organizacija baza podataka Dr Slavica Aleksić, Milanka Bjelica, Nikola Obrenović Primer radnik({mbr, Ime, Prz, Sef, Plt, God, Pre}, {Mbr}),

More information

Priprema podataka. NIKOLA MILIKIĆ URL:

Priprema podataka. NIKOLA MILIKIĆ   URL: Priprema podataka NIKOLA MILIKIĆ EMAIL: nikola.milikic@fon.bg.ac.rs URL: http://nikola.milikic.info Normalizacija Normalizacija je svođenje vrednosti na neki opseg (obično 0-1) FishersIrisDataset.arff

More information

Diplomski rad Projektovanje integrisanog taksimetra primenom ADK alata

Diplomski rad Projektovanje integrisanog taksimetra primenom ADK alata Elektronski Fakultet u Nišu Katedra za Elektroniku Diplomski rad Projektovanje integrisanog taksimetra primenom ADK alata Zadatak: Projektovati integrisano kolo specifične namene pogodno za tarifiranje

More information

LabVIEW-ZADACI. 1. Napisati program u LabVIEW-u koji računa zbir dva broja.

LabVIEW-ZADACI. 1. Napisati program u LabVIEW-u koji računa zbir dva broja. LabVIEW-ZADACI 1. Napisati program u LabVIEW-u koji računa zbir dva broja. Startovati LabVIEW Birati New VI U okviru Controls Pallete birati numerički kontroler tipa Numerical Control, i postaviti ga na

More information

Advertising on the Web

Advertising on the Web Advertising on the Web On-line algoritmi Off-line algoritam: ulazni podaci su dostupni na početku, algoritam može pristupati podacima u bilo kom redosljedu, na kraju se saopštava rezultat obrade On-line

More information

Rešavanje problema pomoću računara

Rešavanje problema pomoću računara Rešavanje problema pomoću računara Vladimir Filipović vladaf@matf.bg.ac.rs Softversko inženjerstvo Šta podrazumevamo pod softverskim inženjerstvom? vladaf@matf.bg.ac.rs 2/16 Konstrukcija prevodilaca Prevođenje

More information

STABLA ODLUČIVANJA. Jelena Jovanovic. Web:

STABLA ODLUČIVANJA. Jelena Jovanovic.   Web: STABLA ODLUČIVANJA Jelena Jovanovic Email: jeljov@gmail.com Web: http://jelenajovanovic.net 2 Zahvalnica: Ovi slajdovi su bazirani na materijalima pripremljenim za kurs Applied Modern Statistical Learning

More information

A R H I T E K T U R A M I K R O S I S T E M A. - Materijal za pripremu ispita - SMER: Elektoronska kola i sistemi, IV semestar Godina: 2006

A R H I T E K T U R A M I K R O S I S T E M A. - Materijal za pripremu ispita - SMER: Elektoronska kola i sistemi, IV semestar Godina: 2006 A R H I T E K T U R A M I K R O S I S T E M A - Materijal za pripremu ispita - SMER: Elektoronska kola i sistemi, IV semestar Godina: 2006 S A D R Ž A J 1 Projektovanje digitalnih sistema...4 1.1 Stilovi

More information

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C

Implementacija sparsnih matrica upotrebom listi u programskom jeziku C INFOTEH-JAHORINA Vol. 10, Ref. E-I-15, p. 461-465, March 2011. Implementacija sparsnih matrica upotrebom listi u programskom jeziku C Đulaga Hadžić, Ministarstvo obrazovanja, nauke, kulture i sporta Tuzlanskog

More information

Alati za projektovanje

Alati za projektovanje Univerzitet u Nišu Elektronski fakultet Seminarski rad Alati za projektovanje - upotreba alata za projektovanje na konkretnim primerima - Goran Mišić, 12103 Niš, 24. 03. 2008. 1 Uvod Savremena elektronska

More information

Programiranje III razred

Programiranje III razred Tehnička škola 9. maj Bačka Palanka Programiranje III razred Istorijat programskih jezika Programski jezici Programski jezici su veštački jezici koji se mogu koristiti za kontrolu ponašanja mašine, naročito

More information

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT

Univerzitet u Novom Sadu. Fakultet tehničkih nauka. Odsek za računarsku tehniku i računarske komunikacije. Uvod u GIT Univerzitet u Novom Sadu Fakultet tehničkih nauka Odsek za računarsku tehniku i računarske komunikacije Uvod u GIT Šta je git? Sistem za verzionisanje softvera kao i CVS, SVN, Perforce ili ClearCase Orginalno

More information

MikroC biblioteka za PDU format SMS poruke

MikroC biblioteka za PDU format SMS poruke INFOTEH-JAHORINA Vol. 12, March 2013. MikroC biblioteka za PDU format SMS poruke Saša Vučičević Student prvog ciklusa studija Elektrotehnički fakultet Istočno Sarajevo, Republika Srpska, Bosna i Hercegovina

More information

1. Instalacija programske podrške

1. Instalacija programske podrške U ovom dokumentu opisana je instalacija PBZ USB PKI uređaja na računala korisnika PBZCOM@NET internetskog bankarstva. Uputa je podijeljena na sljedeće cjeline: 1. Instalacija programske podrške 2. Promjena

More information

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti

MRS. MRSLab03 Metodologija Razvoja Softvera Vežba 03 LAB Dijagram aktivnosti MRS LAB 03 MRSLab03 Metodologija Razvoja Softvera Vežba 03 Dijagrami aktivnosti 1. Dijagram aktivnosti Dijagram aktivnosti je UML dijagram koji modeluje dinamičke aspekte sistema. On predstavlja pojednostavljenje

More information

Upute za korištenje makronaredbi gml2dwg i gml2dgn

Upute za korištenje makronaredbi gml2dwg i gml2dgn SVEUČILIŠTE U ZAGREBU - GEODETSKI FAKULTET UNIVERSITY OF ZAGREB - FACULTY OF GEODESY Zavod za primijenjenu geodeziju; Katedra za upravljanje prostornim informacijama Institute of Applied Geodesy; Chair

More information

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU

KONFIGURACIJA MODEMA. ZyXEL Prestige 660RU KONFIGURACIJA MODEMA ZyXEL Prestige 660RU Sadržaj Funkcionalnost lampica... 3 Priključci na stražnjoj strani modema... 4 Proces konfiguracije... 5 Vraćanje modema na tvorničke postavke... 5 Konfiguracija

More information

11 Analiza i dizajn informacionih sistema

11 Analiza i dizajn informacionih sistema 11 Analiza i dizajn informacionih sistema Informatika V.Prof.dr Kemal Hajdarević dipl.ing.el 25.4.2014 11:58:28 1 1. Kompjuter, Internet, i mrežne osnove 2. Kompjuterska industrija Informatika u stomatologiji

More information

Bušilice nove generacije. ImpactDrill

Bušilice nove generacije. ImpactDrill NOVITET Bušilice nove generacije ImpactDrill Nove udarne bušilice od Bosch-a EasyImpact 550 EasyImpact 570 UniversalImpact 700 UniversalImpact 800 AdvancedImpact 900 Dostupna od 01.05.2017 2 Logika iza

More information

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY

INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY INSTALIRANJE SOFTVERSKOG SISTEMA SURVEY Softverski sistem Survey za geodeziju, digitalnu topografiju i projektovanje u niskogradnji instalira se na sledeći način: 1. Instalirati grafičko okruženje pod

More information

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020.

Idejno rješenje: Dubrovnik Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020. Idejno rješenje: Dubrovnik 2020. Vizualni identitet kandidature Dubrovnika za Europsku prijestolnicu kulture 2020. vizualni identitet kandidature dubrovnika za europsku prijestolnicu kulture 2020. visual

More information

Otpremanje video snimka na YouTube

Otpremanje video snimka na YouTube Otpremanje video snimka na YouTube Korak br. 1 priprema snimka za otpremanje Da biste mogli da otpremite video snimak na YouTube, potrebno je da imate kreiran nalog na gmailu i da video snimak bude u nekom

More information

TEHNOLOGIJA, INFORMATIKA I OBRAZOVANJE ZA DRUŠTVO UČENJA I ZNANJA 6. Međunarodni Simpozijum, Tehnički fakultet Čačak, 3 5. jun 2011.

TEHNOLOGIJA, INFORMATIKA I OBRAZOVANJE ZA DRUŠTVO UČENJA I ZNANJA 6. Međunarodni Simpozijum, Tehnički fakultet Čačak, 3 5. jun 2011. TEHNOLOGIJA, INFORMATIKA I OBRAZOVANJE ZA DRUŠTVO UČENJA I ZNANJA 6. Međunarodni Simpozijum, Tehnički fakultet Čačak, 3 5. jun 2011. TECHNOLOGY, INFORMATICS AND EDUCATION FOR LEARNING AND KNOWLEDGE SOCIETY

More information

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT

TRAJANJE AKCIJE ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT TRAJANJE AKCIJE 16.01.2019-28.02.2019 ILI PRETHODNOG ISTEKA ZALIHA ZELENI ALAT Akcija sa poklonima Digitally signed by pki, pki, BOSCH, EMEA, BOSCH, EMEA, R, A, radivoje.stevanovic R, A, 2019.01.15 11:41:02

More information

TEHNIKA I INFORMATIKA U OBRAZOVANJU

TEHNIKA I INFORMATIKA U OBRAZOVANJU TEHNIKA I INFORMATIKA U OBRAZOVANJU Konferencija 32000 Čačak 9-11. Maja 2008. UDK: 004 : 371 Stručni rad VEZA ZAVISNOSTI INSTANCE Munir Šabanović 1, Momčilo Vujičić 2 Rezime: Objektno orijentisani jezici

More information

1. MODEL (Ulaz / Zadržavanje / Stanje)

1. MODEL (Ulaz / Zadržavanje / Stanje) 1. MODEL (Ulaz / Zadržavanje / Stanje) Potrebno je kreirati model koji će preslikavati sledeći realan sistem: Svaki dan dolazi određen broj paleta u skladište Broj paleta na nivou dana se može opisati

More information

RANI BOOKING TURSKA LJETO 2017

RANI BOOKING TURSKA LJETO 2017 PUTNIČKA AGENCIJA FIBULA AIR TRAVEL AGENCY D.O.O. UL. FERHADIJA 24; 71000 SARAJEVO; BIH TEL:033/232523; 033/570700; E-MAIL: INFO@FIBULA.BA; FIBULA@BIH.NET.BA; WEB: WWW.FIBULA.BA SUDSKI REGISTAR: UF/I-1769/02,

More information

WWF. Jahorina

WWF. Jahorina WWF For an introduction Jahorina 23.2.2009 What WWF is World Wide Fund for Nature (formerly World Wildlife Fund) In the US still World Wildlife Fund The World s leading independent conservation organisation

More information

Upotreba selektora. June 04

Upotreba selektora. June 04 Upotreba selektora programa KRONOS 1 Kronos sistem - razina 1 Podešavanje vremena LAMPEGGIANTI 1. Kada je pećnica uključena prvi put, ili u slučaju kvara ili prekida u napajanju, simbol SATA i odgovarajuća

More information

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći:

Ciljevi. Poslije kompletiranja ove lekcije trebalo bi se moći: Pogledi Ciljevi Poslije kompletiranja ove lekcije trebalo bi se moći: Opisati pogled Formirati novi pogled Vratiti podatke putem pogleda Izmijeniti postojeći pogled Insertovani, ažurirati i brisati podatke

More information

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6.

PLAN RADA. 1. Počnimo sa primerom! 2. Kako i zašto? 3. Pejzaž višestruke upotrebe softvera 4. Frameworks 5. Proizvodne linije softvera 6. KOREKTAN PREVOD? - Reupotrebljiv softver? ( ne postoji prefiks RE u srpskom jeziku ) - Ponovo upotrebljiv softver? ( totalno bezveze ) - Upotrebljiv više puta? - Itd. PLAN RADA 1. Počnimo sa primerom!

More information

Nizovi. Sintaksa. ili. var pera,mika,laza,...,zoran1,zoran2,...,pera1254:real;

Nizovi. Sintaksa. ili. var pera,mika,laza,...,zoran1,zoran2,...,pera1254:real; Nizovi Standardni i nestandardni prosti tipovi podataka (celobrojni, realni, logički, znakovni, nabrojivi i intervalni) mogu biti sasvim dovoljni pri rešavanju manjih i jednostavnijih problema. Međutim,

More information

FAKULTET TEHNIČKIH NAUKA

FAKULTET TEHNIČKIH NAUKA UNIVERZITET U NOVOM SADU FAKULTET TEHNIČKIH NAUKA Nastavni predmet: Vežba br 6: Automatizacija projektovanja tehnoloških procesa izrade alata za brizganje plastike primenom ekspertnih sistema Doc. dr Dejan

More information

Projektovanje softvera. Dijagrami slučajeva korišćenja

Projektovanje softvera. Dijagrami slučajeva korišćenja Projektovanje softvera Dijagrami slučajeva korišćenja Uvod 2 Dijagram slučajeva korišćenja (use-case) prikazuje skup slučajeva korišćenja i aktera Tipično se koristi da specificira neku funkcionalnost

More information

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION

ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION VFR AIP Srbija / Crna Gora ENR 1.4 1 ENR 1.4 OPIS I KLASIFIKACIJA VAZDUŠNOG PROSTORA U KOME SE PRUŽAJU ATS USLUGE ENR 1.4 ATS AIRSPACE CLASSIFICATION AND DESCRIPTION 1. KLASIFIKACIJA VAZDUŠNOG PROSTORA

More information

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll)

Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll) Uputstvo za pravljenje i korišdenje biblioteka sa dinamičkim povezivanjem (.dll) pomodu razvojnog okruženja Microsoft Visual Studio 2010 Autor: dipl.ing. Nemanja Kojić, asistent Decembar 2013. Korak 1

More information

POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU

POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU POSTUPAK IZRADE DIPLOMSKOG RADA NA OSNOVNIM AKADEMSKIM STUDIJAMA FAKULTETA ZA MENADŽMENT U ZAJEČARU (Usaglašeno sa procedurom S.3.04 sistema kvaliteta Megatrend univerziteta u Beogradu) Uvodne napomene

More information

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA

POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA Master akademske studije Modul za logistiku 1 (MLO1) POSEBNA POGLAVLJA INDUSTRIJSKOG TRANSPORTA I SKLADIŠNIH SISTEMA angažovani su: 1. Prof. dr Momčilo Miljuš, dipl.inž., kab 303, mmiljus@sf.bg.ac.rs,

More information

MODEL OBJEKTI - VEZE KONCEPTI MODELA METODOLOGIJA MODELIRANJA

MODEL OBJEKTI - VEZE KONCEPTI MODELA METODOLOGIJA MODELIRANJA MODEL OBJEKTI - VEZE MODEL OBJEKTI - VEZE KONCEPTI MODELA METODOLOGIJA MODELIRANJA MODELI PODATAKA Model objekti-veze Relacioni model Objektni model Objektno-relacioni model Aktivne baze podataka XML kao

More information

IMPLEMENTACIJA PODLOGE ZA SARADNJU KROKI ALATA SA ALATIMA ZA UML MODELOVANJE OPŠTE NAMENE

IMPLEMENTACIJA PODLOGE ZA SARADNJU KROKI ALATA SA ALATIMA ZA UML MODELOVANJE OPŠTE NAMENE IMPLEMENTACIJA PODLOGE ZA SARADNJU KROKI ALATA SA ALATIMA ZA UML MODELOVANJE OPŠTE NAMENE IMPLEMENTATION OF BASIS FOR COOPERATION BETWEEN KROKI TOOL AND UML MODELING TOOLS Željko Ivković, Renata Vaderna,

More information

MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08

MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08 MRS MRSLab08 Metodologija Razvoja Softvera Vežba 08 LAB 08 Konceptualni model podataka Logički model podataka 1. Konceptualni model podataka Modeli podataka omogućavaju modelovanje semantičke i logičke

More information

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA

DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO DOO PODGORICA CRNA GORA (1}(02.17&r/4 Ver. O;:, fjr}/ ~ AGENCUA ZA ELEKTRONSKE KOM~~IKACUE J.O.O "\\ L\lax Montenegro" BrOJ o/-lj Podoor'ca.d:ioL 20/1g0d I POSTANSKU DEJATELNOST DOSTAVUANJE PONUDA ZA WIMAX MONTENEGRO

More information

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE)

Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE) Tema 2: Uvod u sisteme za podršku odlučivanju (VEŽBE) SISTEMI ZA PODRŠKU ODLUČIVANJU dr Vladislav Miškovic vmiskovic@singidunum.ac.rs Fakultet za računarstvo i informatiku 2013/2014 Tema 2: Uvod u sisteme

More information

Simulacija rada PIC mikrokontrolera

Simulacija rada PIC mikrokontrolera INFOTEH-JAHORINA Vol. 11, March 2012. Simulacija rada PIC mikrokontrolera Željko Gavrić, Stefan Tešanović studenti prvog ciklusa studija Fakultet za informacione tehnologije, Slobomir P Univerzitet Doboj,

More information

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU

ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU ELEKTROTEHNIČKI FAKULTET UNIVERZITETA U BEOGRADU VERIFIKACIJA KORISNIČKOG KOMUNIKACIONOG PROTOKOLA PRIMENOM ERM METODOLOGIJE Master rad Kandidat: Stefanija Dačić 2012/3032 Mentor: doc. dr Zoran Čiča Beograd,

More information

Naredba je uputa računalu za obavljanje određene operacije.

Naredba je uputa računalu za obavljanje određene operacije. OSNOVNI POJMOVI Naredba je uputa računalu za obavljanje određene operacije. Program je niz naredbi razumljivih računalu koje rješavaju neki problem. Postupak pisanja programa zovemo programiranje. Programski

More information

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09

MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09 MRS MRSLab09 Metodologija Razvoja Softvera Vežba 09 LAB 09 Fizički model podatka 1. Fizički model podataka Fizički model podataka omogućava da se definiše struktura baze podataka sa stanovišta fizičke

More information

Mindomo online aplikacija za izradu umnih mapa

Mindomo online aplikacija za izradu umnih mapa Mindomo online aplikacija za izradu umnih mapa Mindomo je online aplikacija za izradu umnih mapa (vrsta dijagrama specifične forme koji prikazuje ideje ili razmišljanja na svojevrstan način) koja omogućuje

More information

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP

ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP ECONOMIC EVALUATION OF TOBACCO VARIETIES OF TOBACCO TYPE PRILEP EKONOMSKO OCJENIVANJE SORTE DUHANA TIPA PRILEP M. Mitreski, A. Korubin-Aleksoska, J. Trajkoski, R. Mavroski ABSTRACT In general every agricultural

More information

3D GRAFIKA I ANIMACIJA

3D GRAFIKA I ANIMACIJA 1 3D GRAFIKA I ANIMACIJA Uvod u Flash CS3 Šta će se raditi? 2 Upoznavanje interfejsa Osnovne osobine Definisanje osnovnih entiteta Rad sa bojama Rad sa linijama Definisanje i podešavanje ispuna Pregled

More information

DEFINISANJE TURISTIČKE TRAŽNJE

DEFINISANJE TURISTIČKE TRAŽNJE DEFINISANJE TURISTIČKE TRAŽNJE Tražnja se može definisati kao spremnost kupaca da pri različitom nivou cena kupuju različite količine jedne robe na određenom tržištu i u određenom vremenu (Veselinović

More information

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine

UNIVERZITET U BEOGRADU RUDARSKO GEOLOŠKI FAKULTET DEPARTMAN ZA HIDROGEOLOGIJU ZBORNIK RADOVA. ZLATIBOR maj godine UNIVERZITETUBEOGRADU RUDARSKOGEOLOŠKIFAKULTET DEPARTMANZAHIDROGEOLOGIJU ZBORNIKRADOVA ZLATIBOR 1720.maj2012.godine XIVSRPSKISIMPOZIJUMOHIDROGEOLOGIJI ZBORNIKRADOVA IZDAVA: ZAIZDAVAA: TEHNIKIUREDNICI: TIRAŽ:

More information

Direktan link ka kursu:

Direktan link ka kursu: Alat Alice može da se preuzme sa sledeće adrese: www.alice.org Kratka video uputstva posvećena alatu Alice: https://youtu.be/eq120m-_4ua https://youtu.be/tkbucu71lfk Kurs (engleski) posvećen uvodu u Java

More information

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS

- Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS - Vežba 1 (dodatan materijal) - Kreiranje Web šablona (template) pomoću softvera Adobe Photoshop CS 1. Pokrenite Adobe Photoshop CS i otvorite novi dokument sa komandom File / New 2. Otvoriće se dijalog

More information

Korak X1 X2 X3 F O U R T W START {0,1}

Korak X1 X2 X3 F O U R T W START {0,1} 1) (8) Formulisati Traveling Salesman Problem (TSP) kao problem traženja. 2) (23) Dato je prostor stanja sa slike, sa početnim stanjem A i završnim stanjem Q. Broj na grani označava cijenu operatora, a

More information

Mogudnosti za prilagođavanje

Mogudnosti za prilagođavanje Mogudnosti za prilagođavanje Shaun Martin World Wildlife Fund, Inc. 2012 All rights reserved. Mogudnosti za prilagođavanje Za koje ste primere aktivnosti prilagođavanja čuli, pročitali, ili iskusili? Mogudnosti

More information

Dr.Miroljub Banković, prof. Kragujevac, 2008.

Dr.Miroljub Banković, prof. Kragujevac, 2008. VISOKA TEHNIČKA ŠKOLA STRUKOVNIH STUDIJA KRAGUJEVAC Skripta iz predmeta PROJEKTOVANJE INFORMACIONIH SISTEMA Dr.Miroljub Banković, prof. Kragujevac, 2008. SADRŽAJ OSNOVI TEORIJE SISTEMA... 3 DEFINICIJE

More information

MS Excel VBA za studente kemije

MS Excel VBA za studente kemije MS Excel VBA za studente kemije - podsjetnik - Ovaj podsjetnik sadrži kratka objašnjenja i pravilni način pisanja (sintaksu) za sve naredbe koje su obrađene tijekom održavanja Računalnog praktikuma 2.

More information

Programiranje za internet zimski semestar 2013/2014. Java kroz primjere (skripta je u fazi izradi)

Programiranje za internet zimski semestar 2013/2014. Java kroz primjere (skripta je u fazi izradi) Programiranje za internet zimski semestar 2013/2014 Java kroz primjere (skripta je u fazi izradi) Zadatak broj 1 Nacrtati kocku. (Zanimljiv teži problem za razmišljanje: Nacrtat kocku čije će dimenzije

More information

PROGRAMSKI JEZIK VISUAL BASIC ZBIRKA ZADATAKA

PROGRAMSKI JEZIK VISUAL BASIC ZBIRKA ZADATAKA Dr Srđan Damjanović Dr Predrag Katanić PROGRAMSKI JEZIK VISUAL BASIC ZBIRKA ZADATAKA FAKULTET POSLOVNE EKONOMIJE BIJELJINA, 2014. Recenzenti: Prof. dr Rade Stankić Prof. dr Slobodan Obradović Izdaje: FAKULTET

More information

Sl.1.Razvojna ploča-interfejs

Sl.1.Razvojna ploča-interfejs Nastavna jedinica: Praktični primeri upravljanja pomoću računara Predmet: Tehničko i informatičko obrazovanje Razred: VIII Tip časa: Obrada,Vežba Obrazovni cilj/ishod: Upravljanje raznim uređajima pomoću

More information

Osnovi računarstva II. Uvodne napomene Tipovi podataka i operacije Osnovni algoritamski koraci

Osnovi računarstva II. Uvodne napomene Tipovi podataka i operacije Osnovni algoritamski koraci Osnovi računarstva II Uvodne napomene Tipovi podataka i operacije Osnovni algoritamski koraci OSNOVI RAČUNARSTVA II Predmetni nastavnik: Prof. dr Vesna Popović-Bugarin kabinet 322 Konsultacije ponedjeljkom

More information

TEHNO SISTEM d.o.o. PRODUCT CATALOGUE KATALOG PROIZVODA TOPLOSKUPLJAJUĆI KABLOVSKI PRIBOR HEAT-SHRINKABLE CABLE ACCESSORIES

TEHNO SISTEM d.o.o. PRODUCT CATALOGUE KATALOG PROIZVODA TOPLOSKUPLJAJUĆI KABLOVSKI PRIBOR HEAT-SHRINKABLE CABLE ACCESSORIES TOPOSKUPJAJUĆI KABOVSKI PRIBOR HEAT-SHRINKABE CABE ACCESSORIES KATAOG PROIZVODA PRODUCT CATAOGUE 8 TEHNO SISTEM d.o.o. NISKONAPONSKI TOPOSKUPJAJUĆI KABOVSKI PRIBOR TOPOSKUPJAJUĆE KABOVSKE SPOJNICE kv OW

More information

3. Strukturna sistemska analiza... 2 3.1. Uvod... 2 3.1.1. Sadržaj... 2 3.1.2. Ciljevi... 3 3.2. Analiza sistema... 3 3.2.1. Sistem... 3 3.2.2. Analiza sistema... 4 3.2.3. Modelovanje sistema... 6 3.2.3.1.

More information

Interaktivni Generator Vizuelnih Simulatora Digitalnih Sistema (IGoVSoDS)

Interaktivni Generator Vizuelnih Simulatora Digitalnih Sistema (IGoVSoDS) Univerzitet u Beogradu Elektrotehnički fakultet dr Nenad M. Grbanović Interaktivni Generator Vizuelnih Simulatora Digitalnih Sistema (IGoVSoDS) Priručnik za korišćenje Beograd, avgust 2010. godine i Kratak

More information

ELEMENTI ELEKTRONIKE digitalna kola

ELEMENTI ELEKTRONIKE digitalna kola Univerzitet u Beogradu Elektrotehnički fakultet Dr Vujo Drndarević ELEMENTI ELEKTRONIKE digitalna kola Beograd, 26. Prof. dr Vujo Drndarević ELEMENTI ELEKTRONIKE digitalna kola Recenzenti Doc. dr Vladimir

More information

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik)

JEDINSTVENI PORTAL POREZNE UPRAVE. Priručnik za instalaciju Google Chrome dodatka. (Opera preglednik) JEDINSTVENI PORTAL POREZNE UPRAVE Priručnik za instalaciju Google Chrome dodatka (Opera preglednik) V1 OPERA PREGLEDNIK Opera preglednik s verzijom 32 na dalje ima tehnološke promjene zbog kojih nije moguće

More information

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. SEMINARSKI RAD U OKVIRU PREDMETA "Računalna forenzika" 2016/2017. GIF FORMAT (.

SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA. SEMINARSKI RAD U OKVIRU PREDMETA Računalna forenzika 2016/2017. GIF FORMAT (. SVEUČILIŠTE U ZAGREBU FAKULTET ELEKTROTEHNIKE I RAČUNARSTVA SEMINARSKI RAD U OKVIRU PREDMETA "Računalna forenzika" 2016/2017 GIF FORMAT (.gif) Renato-Zaneto Lukež Zagreb, siječanj 2017. Sadržaj 1. Uvod...

More information

CRNA GORA

CRNA GORA HOTEL PARK 4* POLOŽAJ: uz more u Boki kotorskoj, 12 km od Herceg-Novog. SADRŽAJI: 252 sobe, recepcija, bar, restoran, besplatno parkiralište, unutarnji i vanjski bazen s terasom za sunčanje, fitnes i SPA

More information

INTEGRISANO RAZVOJNO OKRUŽENJE VISUAL STUDIO 2013

INTEGRISANO RAZVOJNO OKRUŽENJE VISUAL STUDIO 2013 Dr Srđan Damjanović Dr Predrag Katanić INTEGRISANO RAZVOJNO OKRUŽENJE VISUAL STUDIO 2013 FAKULTET POSLOVNE EKONOMIJE BIJELJINA, 2017. INTEGRISANO RAZVOJNO OKRUŽENJE VISUAL STUDIO 2013 Autori: Prof. dr

More information

KABUPLAST, AGROPLAST, AGROSIL 2500

KABUPLAST, AGROPLAST, AGROSIL 2500 KABUPLAST, AGROPLAST, AGROSIL 2500 kabuplast - dvoslojne rebraste cijevi iz polietilena visoke gustoće (PEHD) za kabelsku zaštitu - proizvedene u skladu sa ÖVE/ÖNORM EN 61386-24:2011 - stijenka izvana

More information

EE382V: Embedded System Design and Modeling

EE382V: Embedded System Design and Modeling EE382V: Embedded System Design and Methodologies, Models, Languages Andreas Gerstlauer Electrical and Computer Engineering University of Texas at Austin gerstl@ece.utexas.edu : Outline Methodologies Design

More information