automatizovano projektovanje digitalnih sistema … · osnovu čega se isto/i može kasnije fizi...

189
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

Upload: duongcong

Post on 01-Apr-2019

221 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

Radovan D. Stojanović

AUTOMATIZOVANO PROJEKTOVANJE

DIGITALNIH SISTEMA

(VHDL i FPGA)

ENTITY half_adder ISPORT( x, y, enable: IN BIT;carry, result: OUT BIT);END half_adder;

2008

Page 2: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

1

SADRŽAJ

UVOD 5

1 VHDL ................................................................................... 8

1.1 Uvod .............................................................................................. 8

1.2 Nivoi modelovanja i apstrakcije ...................................................... 11

1.3 Struktura VHDL programa .............................................................. 13

1.4 Entitet ............................................................................................... 13

1.5 Arhitektura ....................................................................................... 15

1.6 Entitet + Ahitektura ....................................................................... 16

1.7 Vježba 1 – Unos, kompajliranje i simulacija VHDL programa ..... 16

1.8 Vježba 2 – Unos, kompajliranje i simulacija šematskog kola ......... 18

1.9 Deklaracija biblioteke ..................................................................... 19

1.10 Deklaracije paketa – Package .......................................................... 20

1.11 Vježba 3 – Upotreba biblioteka i paketa .......................................... 23

1.12 Komentari ......................................................................................... 25

1.13 Tipovi podataka ................................................................................ 26

1.14 Operatori ........................................................................................... 35

1.15 Atributi .............................................................................................. 38

1.16 Generic .............................................................................................. 41

1.17 Paralelno kodiranje .......................................................................... 42

1.18 Sekvencijalno kodiranje .................................................................. 46

1.19 Strukturno modelovanje ................................................................... 57

Page 3: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

2

2 FPGA – Osnove ............................................................. 63

2.1 Uvod .......................................................................................... 63

2.2 Aplikaciono specifična integrisana kola (ASIC) …………….. 63

2.3 PLD kola .................................................................................... 66

2.4 FPGA ......................................................................................... 73

2.5 Tehnologije programiranja PLD kola ……………………….... 81

2.6 Konfigurisanje FPGA čipova ......................................................86

3 Quartus II – Upustvo ……………………………….... 97

3.1 Uvod ........................................................................................... 97

3.2 Postupak instalacije i pokretanja Quartus-a II ........................... 97

3.3 Kreiranje projekta ...................................................................... 101

3.4 Unos projekta opisanog VHDL kodom ..................................... 105

3.5 Kompajliranje (prevodjenje) projekta ....................................... 108

3.6 Simulacija projekta ................................................................... 110

3.7 Kreiranje simbola .................................................................... 122

3.8 Unos šematskog projekta ......................................................... 124

3.9 Pridruživanje pinova i konfigurisanje FPGA čipa .................... 132

4 Primjeri za vježbu ........................................................ 144

4.1 Primjer 1: DFF .......................................................................... 144

4.2 Primjer 2: Full Adder ............................................................... 146

Page 4: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

3

4.3 Primjer 3: Up-counter .............................................................. 147

4.4 Primjer 4: Binarni komparator ................................................ 149

4.5 Primjer 5: Counter+Comparator ............................................ 152

4.6 Primjer 6: Mux2to1 vektorskih podataka sa promjenljivom

Dužinom ................................................................................... 153

4.7 Primjer 7: Mux4to1 pomoću Mux2to1 .................................... 155

4.8 Primjer 8: Shift registar sa promjenljivom dužinom ................ 157

4.9 Primjer 9: RAM memory .......................................................... 160

4.10 Primjer 10: State Machine ........................................................ 162

4.11 Napredni dizajn: Primjer realizacije Fleksibilnog FPGA

baziranog IIR filtra .................................................................. 166

5. Literatura .................................................................................. 182

Prilog 1: UP3 edukaciona ploča .........................................................184

Page 5: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

4

Ivanu i Matiji

Page 6: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

5

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,

Page 7: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

6

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

Page 8: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

7

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ć

Page 9: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

8

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 1987. dobija prvu standardizaciju kao IEEE 1076. 1993. godine

IEEE 1076 je revidovan u IEEE 1076-1993 standard (uobičajeno

VHDL93), koji je danas uglavnom u upotrebi. Poslednja revizija

napravljena je 2002. 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 pre-

konfigurisati.

Page 10: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

9

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 VHDL-

a 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...).

Page 11: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

10

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.

Page 12: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

11

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:

Page 13: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

12

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.

Page 14: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

13

1.3 Struktura VHDL programa

Generalno gledano VHDL program se sastoji iz tri dijela, slika 1.3.

1) 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:

Page 15: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

14

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 .

Page 16: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

15

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.

Page 17: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

16

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..

Page 18: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

17

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

Page 19: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

18

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 3.7.

1.8 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 3.8.

Page 20: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

19

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.

FUNKCIJE

PROCEDURE

KOMPONENTE

KONSTANTE

TIPOVI

PACKAGE

BIBLIOTEKA

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;

Page 21: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

20

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_1164 - 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.

1.10 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;

Page 22: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

21

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;

Page 23: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

22

1.10.1 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.

Page 24: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

23

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 1.10. 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,

Page 25: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

24

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 1.11.

Slika 1.9: PACKAGE kod i kod u kojem se poziva dati PACKAGE.

Slika 1.10: Simulacija mux2to1 PACKAGEa.

Page 26: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

25

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 1164. 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 .

Page 27: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

26

Package std_arith biblioteke ieee definiše tipove podataka signed i

unsigned .

1.13.1 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

1.13.2 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;

Page 28: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

27

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’);

Page 29: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

28

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.

1.13.3 BOLEAN

Bolean je predefinisani tip podataka koji može imati dvije vrijednosti:

TRUE i FALSE

• Primjer:

signal x: bolean;

Page 30: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

29

1.13.4 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,647.

1.13.5 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;

1.13.6 ARRAY

Predstavlja nizovni tip podataka, grupiše podatke odredjenog tipa u

jednodimenzioni ili višedimenzionalni niz (vektor).

Page 31: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

30

• 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)=“0001101“;

• 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)=”00110111”;

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.

Page 32: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

31

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.

1.13.7 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

Page 33: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

32

1.13.8 Konverzija podataka

1.13.8.1 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)

Page 34: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

33

1.13.8.2 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š

Page 35: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

34

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

‘X’, ‘0’, ‘1’, ‘Z’

STD_ULOGIC,

STD_ULOGIC_VECTOR

‘X’, ‘0’, ‘1’, ‘Z’

BOOLEAN 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 Podset od INTEGER.

User-defined enumerated type Enumerisan od strane korisnika.

SUBTYPE „Single-type kolekcija“ od bilo

kojeg tipa.

ARRAY Niz bilo kojeg tipa.

Page 36: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

35

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

Page 37: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

36

** 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 Operacija Primjer

SLL Logičko pomeranje

ulevo X<=Y SLL 2

SRL Logičko pomeranje

udesno X<=Y SRL 3

Page 38: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

37

SLA Aritmetičko pomeranje

ulevo X<=Y SLA 2

SRA Aritmetičko pomeranje

udesno 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;

Page 39: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

38

Slika 1.12: Prikaz rezultata simulacije za prethodni primjer.

1.15 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 Funkcija

signal_name’event Vraća Boolean vrijednost True ako se dogadjaj

vezan za signal desi, suprotno daje False.

signal_name’active 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 Vraća vremenski interval od trenutka zadnjeg

dešavanja signala.

signal_name’last_active Vraća vremenski interval od trenutka zadnje

promjene signala.

signal_name’last_value Vraća vrijednost signala prije zadnjeg

dogadjaja.

Page 40: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

39

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 ivic a 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

Page 41: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

40

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 Vraća

MATRIX‘ left(N)

MATRIX’ right (N)

MATRIX’ high(N)

MATRIX’ low(N)

MATRIX’ length(N)

MATRIX’ range(N)

MATRIX’ reverse_range(N)

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 -2

1.16 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

Page 42: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

41

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;

Page 43: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

42

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.

1.17.1 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:

Page 44: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

43

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);

Page 45: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

44

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;

--------------------------------------------

1.17.2 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

Page 46: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

45

...

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.

1.18 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.

Page 47: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

46

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.

1.18.1 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];

Page 48: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

47

• 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.

Page 49: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

48

Ukoliko je nekom signal potrenbo dodati vrednost koristi se operator

<=, a ukoliko se dodeljivanje vrednosti vrši nekoj variabli koristi se

operator =.

1.18.2 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 <= "00000000";

ELSIF (clk'EVENT AND clk='1') THEN

Page 50: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

49

output <= input;

END IF;

END PROCESS;

1.18.3 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:="11111111";

ELSIF (x=y AND w='0') THEN temp:="11110000";

ELSE temp:=(OTHERS =>'0');

1.18.4 CASE

CASE je još jedna naredba koja se koristi u sekvencijalnom kodu.

• Sintaksa:

CASE identifier IS

WHEN value => assignments;

WHEN value => assignments;

...

Page 51: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

50

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.

1.18.5 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.

1.18.5.1 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);

Page 52: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

51

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.

1.18.5.2 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;

1.18.5.3 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;

Page 53: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

52

END LOOP;

1.18.5.4 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;

1.18.6 Funkcije i Procedure

1.18.6.1 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:

Page 54: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

53

function-name(actuals); -- actuals su trenutni para metri

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...

...

------------------------------------------------

1.18.6.2 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

Page 55: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

54

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

Page 56: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

55

PROCESS (ena)

BEGIN

IF (ena='1') THEN sort (inp1, inp2, min_out,

max_out);

END IF;

END PROCESS;

END my_architecture;

1.18.7 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 <= "1111110";

when "0001" => Segs <= "0110000";

when "0010" => Segs <= "1101101";

when "0011" => Segs <= "1111001";

Page 57: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

56

when "0100" => Segs <= "0110011";

when "0101" => Segs <= "1011011";

when "0110" => Segs <= "1011111";

when "0111" => Segs <= "1110000";

when "1000" => Segs <= "1111111";

when "1001" => Segs <= "1110011";

when others => Segs <= "0000000";

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.

1.19.1 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:

Page 58: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

57

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;

------ 2-input nand: ---

COMPONENT nand_2 IS

PORT (a, b: IN STD_LOGIC; c: OUT STD_LOGIC);

END COMPONENT;

------ 3-input nand: ---

COMPONENT nand_3 IS

PORT (a, b, c: IN STD_LOGIC; d: OUT STD_LOGIC);

END COMPONENT;

------------------------

Page 59: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

58

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;

1.19.2 PORT MAP

Postoje dva načina da se komponente meñusobno „povežu“-poziciono i

nominalno mapiranje.

Page 60: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

59

• 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.

1.19.3 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).

Page 61: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

60

------ 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;

Page 62: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

61

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 10000 elemenata. (8-bitni mikroprocesori, RAM,

ROM).

• VLSI (Very Large Scale Integration), kola vrlo visokog stepena

integracije sa 10000 do 100000 elemenata. (16- i 32-bitni

mikroprocesori).

• ULSI (Ultra Large Scale Integration), kola ultra velikog stepena

integracije, sa 100000 do 1.000.000 i više osnovnih elemenata.

2.2 Aplikaciono specifična integrisana kola (ASIC)

Prema metodlogiji projektovanja, integrisana kola možemo podeliti na:

Page 63: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

62

• 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, flip-

flopovi, ali i strukture SSI, MSI složenosti). Korisnik

Page 64: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

63

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.

Page 65: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

64

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.

Page 66: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

65

• 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.

2.3.1 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

Page 67: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

66

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.

2.3.2 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 PAL-

a. 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.

2.3.2.1 Primjer CPLD kola, Altera Max Seria

Firma Altera je razvila tri serije CPLD kola: Max 5000, 7000 i 9000.

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).

Page 68: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

67

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.

Page 69: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

68

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

Page 70: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

69

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.

Page 71: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

70

Slika 2.3: MC serije MAX 7000.

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

Page 72: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

71

može predvidjeti prije nego što je sistem realizovan, što predstavlja veoma

bitnu prednost CPLD kola u odnosu na FPGA kola.

2.4 FPGA

2.4.1 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 2.5.

Page 73: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

72

Slika 2.5: Ilustracija tipi čne FPGA arhitekture

Postoje dvije osnovne kategorije FPGA kola : SRAM FPGA i Anti-

fuse 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 XC2000 1985 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

15 000 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

2kx1 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

Page 74: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

73

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

Page 75: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

74

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 4000.

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 15 000 gejtova. Šematski prikaz arhitekture je dat na donjoj slici.

Page 76: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

75

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 8000.

Page 77: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

76

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 10 000 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 10

000 č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.

Page 78: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

77

Slika 2.10: Arhitektura FLEX 10 000 kola.

2.4.2 Cyclone Seria FPGA

Cyclone FPGA familija je bazirana na 1.5V, 0.13um, SRAM procesu

sa gustinom do 20060 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.

Page 79: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

78

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

Page 80: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

79

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

Page 81: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

80

(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

Page 82: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

81

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

Page 83: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

82

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

Page 84: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

83

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 8000. 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.

Page 85: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

84

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.

Page 86: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

85

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

asinhrona

PPA Inteligentni host

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.

Page 87: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

86

Tabela 2.2: Veličina konfiguracionih podataka za familiju FLEX 8000

Uredjaj Veličina podataka

(bit)

Veličina podataka

(Kbit)

EPF8282,EPF8282V 40 000 5

EPF8452 64 000 8

EPF8636 96 000 12

EPF8820 128 000 16

EPF81188 192 000 24

EPF81500 250 000 31

2.6.1 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.

2.6.2 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

Page 88: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

87

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.

2.6.2.1 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 .

Page 89: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

88

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

Page 90: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

89

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.

Page 91: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

90

Tabela 2.3: Tajming karakterističnih veličina sa vremenskog dijagrama

Simbol Parametar min max jedin.

TCf2CD od nCONFIG nisko do

CONF_DONE nisko

1 Μs

tCF2ST od nCONFIG nisko do nSTATUS

nisko

1 Μs

tCFG nizak nivo nCONFIG 2 Μs

tSTATUS nizak nivo nSTATUS 2,5 Μs

tCF2CK nCONFIG visoko do prve uzlazne

ivice DCLK

5 Μs

tDSU vrijeme setapa prije uzlazne ivice

DCLK

50 Ns

tDH vrijeme zadržavanja podataka

nakon uzlazen ivice DCLK

0 Ns

tCH DCLK na visokom nivou 80 Ns

tCL DCLK na niskom nivou 80 Ns

tCLK Period DCLK 160 Ns

fmax maksimalna frekvencija DCLK 6 MHz

Page 92: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

91

2.6.2.2 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

Page 93: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

92

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.

2.6.2.3 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 2.15. “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.

Page 94: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

93

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

Page 95: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

94

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

6 --- Nije spojen

7 nSTATUS Konfiguracioni status

8 --- 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.

Page 96: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

95

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

(www.altera.com) 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 (www.altera.com). Postupak

instalacije zahtijeva standardnu proceduru. Instalacioni fajl se startuje

dvostrukim klikom lijevog tastera miša nakon čega se pojavi Wizard koji

Page 97: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

96

ć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.

Page 98: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

97

Nakon odradjene procedure Altera šalje polugodišnju besplatnu licencu

na e-mail 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.

Page 99: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

98

Slika 3.4: Specificiranje licence fajla.

Slika 3.5: Parametri licence (trajanje…).

Nakon instaliranja licence i potvrde sa OK Quartus je spreman za rad.

Page 100: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

99

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.

Page 101: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

100

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.

Page 102: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

101

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 EPF10K70RC240-4.

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

Page 103: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

102

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.

Page 104: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

103

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 3.12 . Ovaj fajl je potrebno snimiti pod željenim

imenom (takoñe sa ekstenzijom „.vhd“) na željenu lokaciju izborom opcije

menija File->Save As, slika 3.13. U našem slučaju fajl će biti sačuvan pod

imenom haff_adder.vhd što se poklapa sa imenom entiteta haff_adder.

Page 105: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

104

Slika 3.11: Kreiranje VHDL fajla.

Slika 3.12: Prazni editor .vhdl fajla.

Page 106: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

105

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 3.14. 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.

Page 107: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

106

.

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.

Page 108: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

107

Kompajliranje se startuje izborom opcije Processing -> Start

Compalation, ili ikone nakon čega se može pratiti njegov tok, slika

3.15. 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 3.16.

Slika 3.15: Prozor Quartus-a u fazi kompajliranja i poruka da je program

uspješno kompajliran.

Page 109: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

108

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

Page 110: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

109

pojavljuje prozor sa nazivom New prikazan na slici 3.17. 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 3.18. 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 3.19.

Slika 3.17: Izbor fajla za simulaciju.

Page 111: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

110

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 3.21. Opciju Filter treba zatim podesiti na Pins:all, i kliknuti na dugme

List čime se popunjava kolona Nodes Found svim raspoloživim signalima

Page 112: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

111

za simulaciju u skladu sa izabranom opcijom filtera, slika 3.22. 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 3.23. 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 3.24.

Slika 3.20: Interfejs za unos pinova u simulacioni fajl.

Slika 3.21: Prozor za automatsko nalaženje željenih pinova.

Page 113: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

112

Slika 3.22: Popunjavanje kolone Nodes Found sa raspoloživim pinovima.

Slika 3.23: Selektovanje pinova koji će se koristiti u procesu simulacije.

Page 114: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

113

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 3.27

Page 115: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

114

Slika 3.25: Izbor trajanja simulacije (end time).

Slika 3.26: Vremenski interval podjele (grida).

Page 116: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

115

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 3.29. 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

Page 117: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

116

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.

Page 118: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

117

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 3.31. 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.

Page 119: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

118

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.

Page 120: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

119

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).

Page 121: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

120

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 3.35. Ako je sve o redu, pojaviće se poruka Create Symbol file

was successful, slika 3.36. 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.

Page 122: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

121

Slika 3.35: Postupak kreiranja simbola

Slika 3.36: Poruka koja ukazuje da je simbol uspješno kreiran.

Page 123: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

122

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 3.37..

Page 124: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

123

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 3.38. Fajl ćemo snimiti

pod imenom koje se poklapa sa imenom projekta, full_adder.bdf, slika

3.39. Sada je sve spremno za unošenje odgovarajuće šeme.

Slika 3.38: Grafički editor za šematski unos.

Page 125: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

124

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 3.40. Na isti način smjestićemo i drugi

half_adder, slika 3.41. Potrebno je napomenuti da se drugi half_adder

može dobiti jednostavnim kopiranjem prvog (selektovanje prvoga, desni

klik, copy, biranje pozicije, desni klik, paste).

Page 126: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

125

Slika 3.40. Selektovanje simbola half_adder.

Slika 3.41. 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 3.42. Kada smo izabrali i smjestili dva half_addera i jedno ex_ili

kolo dolazimo do ulaznih i izlaznih pinova. Ulazni pinovi se označavaju

Page 127: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

126

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 3.44. 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.

Page 128: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

127

Slika 3.43: Ulazni pin.

Slika 3.44: Postupak povezivanja elemenata šeme.

Page 129: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

128

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.

Page 130: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

129

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

Page 131: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

130

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 3.47. 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.

Page 132: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

131

Da bi se riješio dati problem trebe povezati sistem kao na slici 3.48.

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

Page 133: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

132

( clk: in std_logic;

clk_new : out std_logic);

end clk_div;

--------------------------------------------------- --------

architecture clk_div_behav of clk_div is

signal clk_temp : std_logic;

signal temp : 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;

Page 134: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

133

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;

Page 135: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

134

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 ti me

determination

Library Ieee;

Use ieee.std_logic_1164.all;

Page 136: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

135

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 3.49. Prije toga smo odabrali odgovarajuće FPGA kolo Cyclone

EP1C6Q240C8 koje se nalazi na UP3 ploči.

Page 137: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

136

VCCen INPUT

VCCclk INPUT

VCCrst INPUT

VCCsel_speed INPUT

out[3..0]OUTPUT

w ord_length 4Parameter Value

clk

en

rst

output[word_length-1..0]

counter

inst

MULTIPLEXER

S

B

A

Y

21mux

inst5

CLRN

DPRN

Q

DFF

inst8

NOT

inst9N 24000000Parameter Value

clk clk_new

clk_div

inst1

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 3.50.

PIN_214VCC

en INPUT

PIN_29VCC

clk INPUT

PIN_28VCC

rst INPUT

PIN_204

VCCsel_speed INPUT

PIN_220PIN_216PIN_218PIN_217

out[3..0]OUTPUT

w ord_length 4Parameter Value

clk

en

rst

output[word_length-1..0]

counter

inst

MULTIPLEXER

S

B

A

Y

21mux

inst5

CLRN

DPRN

Q

DFF

inst8

NOT

inst9N 24000000Parameter Value

clk clk_new

clk_div

inst1

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 re-

aranž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 3.52.

Page 138: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

137

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 5.53. Na taj način se kompletira cjelokupno

pridruživanje, slika 3.54.

Page 139: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

138

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.

Page 140: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

139

Poslije vraćanja na šematski prikaz može se vidjeti nova distribucija

pinova, slika 3.55.

PIN_61VCC

en INPUT

PIN_29VCC

clk INPUT

PIN_49VCC

rst INPUT

PIN_60

VCCsel_speed INPUT

PIN_56PIN_55PIN_54PIN_53

out[3..0]OUTPUT

w ord_length 4Parameter Value

clk

en

rst

output[word_length-1..0]

counter

inst

MULTIPLEXER

S

B

A

Y

21mux

inst5

CLRN

DPRN

Q

DFF

inst8

NOT

inst9N 24000000Parameter Value

clk clk_new

clk_div

inst1

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 3.57. 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 3.58. 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.

Page 141: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

140

Slika 3.56: Izbor opcije programmera.

Slika 3.57: Maska programera.

Page 142: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

141

Slika 3.58: Uspješno uploadovan program.

Page 143: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

142

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;

Page 144: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

143

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.

Page 145: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

144

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);

Page 146: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

145

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;

Page 147: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

146

output : out std_logic_vector(word_length-1 downt o 0)

);

end counter;

--------------------------------------------------- --------

architecture counter_behav of counter is

signal counting : std_logic_vector(word_length-1 do wnto 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 downt o 0)

);

Page 148: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

147

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;

Page 149: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

148

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 : in std_logic;

output : 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;

--------------------------------------------------- ----------------

Page 150: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

149

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 : in std_logic;

output : 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 (01010001). Potebno je

Page 151: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

150

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

Page 152: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

151

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

-------------2 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;

Page 153: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

152

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.

Page 154: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

153

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_le ngth)

port map (input1=>input1, input2=>input2,

contr=>contr(0),output=>temp1);

mux2def : mux2to1 generic map (word_length=>word_le ngth)

port map (input1=>input3, input2=>input4,

contr=>contr(0),output=>temp2);

mux3def : mux2to1 generic map (word_length=>word_le ngth)

Page 155: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

154

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.

Page 156: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

155

contr[1..0]

input1[word_length-1..0]

input2[word_length-1..0]

input3[word_length-1..0]

input4[word_length-1..0]

output[word_length-1..0]

mux4to1

inst

w ord_length 16Parameter Value

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 : in std_logic;

enable : in std_logic;

sr_in : in std_logic;

Page 157: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

156

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

-- Shift data by one stage; data from last

stage is lost

sr((NUM_STAGES-1) downto 1) <= sr((NUM_STAGES-

2) downto 0);

-- 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);

Page 158: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

157

end rtl;

• Simulacija:

Slika 4.12: Prikaz rezultata simulacije.

clk

enable

sr_in

sr_out

shif ter

inst

NUM_STAGES 4Parameter Value

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

Page 159: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

158

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

Page 160: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

159

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

Page 161: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

160

funkciju detektora sekvence „1110“. 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

Page 162: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

161

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

Page 163: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

162

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.

Page 164: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

163

4.11.1 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)

10 1

11

...( )( )

( ) 1 ...

NN

MM

A A z A zY zH z

X z B z B z

− −

− −

+ + += =− − −

4.1

Datoj funkciji prenosa u vremenskom domenu odgovara diferencna

jednačina:

0 1 1( ) ( ) ( 1) ... ( ) ( 1) ... ( )N My n A x n A x n A x n N B y n B y n M= + − + + − + − + + − 4.2

Upravo ova jednačina poslužiće kao osnov realizacije IIR filtra.

4.11. 2 Osnovni princip projektovanog digitalnog filtra. Opšta blok

šema realizacje

Na slici 4.16 data je opšta blok šema realizacije kompletnog sistema.

Page 165: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

164

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“

( 0 1 2, , ,.. NA A A A ), a zatim i „povratni koeficienti“ (0 1 2, , ,.. NB B B B ). Kada se

upis obavi, signal coef_complete ima vrijednost „1“ i time označava da je

Page 166: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

165

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).

4.11.3 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

odnosu na opseg _ 1 _ 12 2word length word length− −− ÷ , gde je word_length dužina riječi.

Dakle, dobijeni realni koeficienti se pomnože sa _ 12word length− i dobijeni

rezultat se zaokruži na najbližu celobrojnu vrijednost.

Page 167: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

166

Š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 4.18.

Slika 4.18: IIR filtar. Prikaz Quartus simulacije

4.11.4 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.

0

500

1000

1500

2000

2500

3000

3500

4000

4500

LogicCels

2 3 4 5 6Red Filtra

8

16

Slika 4.18: IIR filtar. Pregled utrošenih resursa za različiti red filtra i dužine

podataka.

Page 168: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

167

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.

Page 169: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

4.11.5 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_logi c;

out_clk, data_valid : out std_logic;

coef_complete : out std_logic;

din_coef, data_in : in signed(word_len gth-1 downto 0);

data_out : out signed(word_length-1 dow nto 0)

Page 170: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

169

);

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;

Page 171: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

170

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;

Page 172: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

171

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)

Page 173: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

172

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;

Page 174: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

173

end process;

coef_complete<=coef_complete_temp1 and coef_comple te_temp2;

process(multed, multed_scal_dir)

begin

for i in 0 to order loop

multed_scal_dir(i)<=multed(i)(2*word_length-2 do wnto 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_leng th+order)

port map(clk=>clk_in,rst=>rst,

inp1=>conv_signed(multed_scal_dir(i),word_leng th+order),

inp2=>add_temp(i+1),

inp3=>-conv_signed(multed_scal_bek(i), word_le ngth+order),

output=>add_temp(i));

end generate add_generate;

add_def_ord: add3 generic map(word_length=>word_le ngth+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));

Page 175: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

174

add_def_0 : add3 generic map(word_length=>word_le ngth+order)

port map(clk=>clk_in,rst=>rst,

inp1=>conv_signed(multed_scal_dir(0),word_leng th+order),

inp2=>conv_signed(add_temp(1),word_length+orde r),

inp3=>(others=>'0'),

output=>add_temp(0));

process(add_temp(0),multed_bek, multed_scal_bek, c oefs)

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=>rs t,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';

Page 176: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

175

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;

-------------------------------------------------

Page 177: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

176

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;

---------------------------------------------------

Page 178: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

177

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;

Page 179: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

178

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;

Page 180: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

5. Literatura

1. Radovan Stojanović, "Automatizovani dizajn elektronskih kola

(ADEK - CAED)", skripta, Elektrotehnički Fakultet, Univerzitet

Crne Gore, 2005.

2. James O. Hablen, Tyson S. Hall, Michael D Furman, "Rapid

Prototyping of Digital Systems", Springer Science and Business

Media, Inc., 2006.

3. Clive "Max" Maxfield, "The Design Warrior's Guide to FPGAs",

Mentor Graphics Corporation and Xilinx, Inc., 2004.

4. Robert Dueck, "Digital Design with CPLD Applications and VHDL",

Delmar/Thomson Learning, 2005.

5. Peter J. Ashenden, "The VHDL Cookbook", Dept. Computer Science

University of Adelaide, South Australia, 2003.

6. Enoch O. Hwang, B, "Microprocessor Design, Principles and

Practices with VHDL", Brooks/Cole, 2004.

7. Mark Zwolinski, “Digital System Design with VHDL” 2nd Edition,

Pearson and Prentice Hall, 2004.

8. Stephen Brown and Jonathan Rose, "Architecture of FPGAs and

CPLDs: A Tutorial" , IEEE Design and Test of Computers, Vol. 13,

No. 2, pp. 42-57, 1996.

9. John F. Wakerly, “Digital Design Principles and Practices”,

Pearson, 2001.

10. Milena Jovanovic, “Projektovanje digitalnih sistema upotrebom

Quartus II razvojnog okruženja”, diplomski rad, ETF Podgorica,

2004.

Page 181: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

180

11. Jakšić Zoran, “Primjena FPGA tehnologije u digitalnoj obradi

signala”, diplomski rad, ETF Podgorica, 2006.

12. Nebojša Šolaja, “Razvoj i realizacija rekonfigurabilnih elektronskih

sistema za laserski bazirana mjerenja”, magistarski rad, ETF

Podgorica, 2005.

13. www.altera.com

14. www.xilinx.com

Page 182: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

181

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.

Page 183: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

182

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)

Page 184: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

183

º 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.

Page 185: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

184

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

Page 186: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

185

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.

Page 187: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

186

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

Page 188: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

187

P1.3 UP3core biblioteka funkcija

IP (Intelectual Property) cores često se koriste u kompleksnim

hijerarhijskim dizajnima. IP core predstavlja prethodno razvijen,

sintetizovan hardverski dizajn koji obezbjeduje gotove, frekventno

korištene funkcije. Komercijalne, licencirane IP cores obuhvataju i složene

funkcije poput mikroprocesora, mikrokontrolera, multimedijalnih i DSP

(Digital Signal Processing) funkcija, komunikacijskih kontrolera. IP cores

promovišu dizajn za višekratnu upotrebu I redukuju vrijeme potrebno za

razvoj dizajna tako što nude slicne hardverske funkcije u gotovom dizajnu.

UP3core funkcije (Tabela P1.5) su dizajnirane da pojednostave

upotrebu djelova UP3 ploče poput tastera, tastature, miša, LCD displeja,

video izlaza. Ove funkcije mogu se upotrebljavati kao simboli iz UP3core

biblioteke (gdje su deklarisani u VHDL modulu) ili kao komponente u

drugim VHDL ili Verilog fajlovima. Da bi UP3core funkcija odradila tačnu

operaciju mora se znati tačno naziv I/O pinova i uredaji koji se na njih

konektuju. Neke od UP3core funkcija zahtijevaju i clock ulaze, a ukoliko

su im potrebni sporiji clock signali – to im obezbjeduje clock djelitelj, koji

je takode UP3core funkcija. Naš zadatak je da izvršimo kratak pregled

karakteristika ovih funkcija.

Page 189: AUTOMATIZOVANO PROJEKTOVANJE DIGITALNIH SISTEMA … · osnovu čega se isto/i može kasnije fizi čki implementirati. Osim VHDL-a, u upotrebi su i Verilog, AHDL, ABEL, CUPL, ali se

R. Stojanović VHDL i FPGA

______________________________________________________________________

188

Tabela P1.5: Naziv i opis UP3core funkcija.