Upload
others
View
13
Download
0
Embed Size (px)
Citation preview
VGA KONTROLER U FPGA TEHNOLOGIJI
Specijalistički rad
Kandidat: Mentor:
Saša Knežević, 47/10 Prof. dr Radovan Stojanović
Podgorica, jul 2011.
UNIVERZITET CRNE GORE
ELEKTROTEHNIČKI FAKULTET
UNIVERZITET CRNE GORE
ELEKTROTEHNIČKI FAKULTET
Broj: Podgorica, 2011. godine
Kandidat : Saša Knežević
Broj indeksa : 47/10
Naziv rada:
VGA KONTROLER U FPGA TEHNOLOGIJI
Datum izdavanja rada: Datum predaje rada:
Mentor: Kandidat:
Prof. dr Radovan Stojanović Saša Knežević
IZJAVA O SAMOSTALNOM RADU
Ovim izjavljujem da sam specijalistički rad uradio samostalno uz pomoć konsultacija sa
mentorom i navedene literature.
Kandidat:
Saša Knežević
Specijalistički rad je odbranjen dana ___. ___. 2011. godine pred Komisijom u sastavu:
1. (Predsjednik)
2. (Mentor)
3. (Član)
sa ocjenom _____ ( )
Sažetak:
Rad opisuje simulaciju, sintezu i implementaciju digitalnog sistema za generisanje video signala pomoću
alata za automatizovano projektovanje zasnovanog na VHDL-u i FPGA implementacione platforme. Signali
dobijeni na izlazima FPGA čipa su dovedeni do VGA konektora i iskorišćeni za prikazivanje tekstualnih i
grafičkih podataka. Predstavljena je realizacija VGA Kontrolera koji prenosi signale do VGA konektora
monitora i koji se sa ostalim dizajniranim digitalnim kolima koristi za prikazivanje slike, teksta i animacije.
Ovaj dizajn ostvaruje zahtjev prikazivanja video slike sa rezolucijom 800 x 600 piksela i osam boja. Dati su
rezultati eksperimentalnog testiranja realizovanih rješenja, kao i pregled utrošenih logičkih resursa za
njihovu hardversku realizaciju.
Abstract:
The paper describes the simulation, synthesis and implementation of digital system for generating
video signals using automated design tool based on VHDL and FPGA implementation platform. The signals
obtained from FPGA chip outputs are driven to the VGA connector and used for displaying text and
graphical data. Realization of a VGA Controller which transmits signals to the VGA connector of the
monitor and which is used with other designed digital circuits to display image, text and animation is
presented. This design achieves a request in displaying video image with a resolution of 800 x 600 pixels
and eight colors. The results of experimental testing of implemented solutions, and an overview of logical
resources spent for their hardware realization are given.
Sadržaj
1 Uvod .................................................................................................................................................... 1
2 VGA...................................................................................................................................................... 2
2.1 Tehnologija Video Prikaza ............................................................................................................... 2
2.2 Osvježavanje ekrana ....................................................................................................................... 3
2.3 VGA sinhronizacija .......................................................................................................................... 5
2.4 VGA Kontroler ................................................................................................................................ 7
3 FPGA tehnologija.................................................................................................................................. 9
3.1 Uvod u FPGA................................................................................................................................... 9
3.2 SRAM FPGA tehnologija .................................................................................................................. 9
3.3 Cyclone FPGA familija ................................................................................................................... 16
4 Predloženo rješenje............................................................................................................................ 18
4.1 Hardver iskorišćen za realizaciju predloženog rješenja .................................................................. 18
4.2 Arhitektura predloženog rješenja .................................................................................................. 22
4.2.1 Realizacija VGA Kontrolera .................................................................................................... 22
4.2.2 Prikazivanje boja na ekranu ................................................................................................... 25
4.2.3 Skladištenje i prikazivanje slika .............................................................................................. 27
4.2.4 Realizacija ROM memorije za karaktere ................................................................................. 31
4.2.5 Prikazivanje teksta na ekranu ................................................................................................. 36
4.2.6 Karakter Generator ................................................................................................................ 39
4.2.7 Prikazivanje animacije i upravljanje objektom prikazanim na ekranu...................................... 41
4.2.8 Istovremeno prikazivanje animacije i teksta ........................................................................... 47
4.2.9 Pregled utrošenih resursa za realizaciju u FPGA tehnologiji .................................................... 48
5 Rezultati testiranja predloženog rješenja ............................................................................................ 50
6 Zaključak ............................................................................................................................................ 54
7 Prilog ................................................................................................................................................. 55
8 Literatura ........................................................................................................................................... 56
Popis slika
Slika 2.1 CRT i fosforne tačke na površini ekrana ........................................................................................ 2
Slika 2.2 Raspored 640 x 480 piksela na ekranu .......................................................................................... 3
Slika 2.3 Tajming signala za vertikalnu sinhronizaciju za 640 x 480 na 60Hz ................................................ 4
Slika 2.4 Tajming signala za horizontalnu sinhronizaciju za 640 x 480 na 60Hz ............................................ 4
Slika 2.5 Tajming linije piksela .................................................................................................................... 5
Slika 2.6 Tajming jednog frejma.................................................................................................................. 5
Slika 2.7 Dijelovi ekrana kod rezolucije 640 x 480 piksela ............................................................................ 6
Slika 2.8 Raspored dijelova ekrana za različite rezolucije i frekvencije osvježavanja .................................... 7
Slika 2.9 Arhitektura VGA Kontrolera .......................................................................................................... 8
Slika 3.1 Fizički izgled FPGA čipova ............................................................................................................. 9
Slika 3.2 Ilustracija tipične FPGA arhitekture ............................................................................................ 10
Slika 3.3 SRAM-bazirana programabilna ćelija .......................................................................................... 10
Slika 3.4 MUX-bazirani logički blok ........................................................................................................... 11
Slika 3.5 LUT bazirana na transmisionim kapijama .................................................................................... 12
Slika 3.6 Pojednostavljeni izgled Xilinx LC ................................................................................................. 12
Slika 3.7 Slice koji sadrži dvije logičke ćelije .............................................................................................. 13
Slika 3.8 CLB koji sadrži četiri slice-a (broj slice-a zavisi od FPGA familije) .................................................. 14
Slika 3.9 Pogled na čip sa kolonama ugrađenih RAM blokova ................................................................... 14
Slika 3.10 Pogled na čip sa ugrađenim jezgrom van glavnog fabrikata....................................................... 15
Slika 3.11 Pogled na čip koji pokazuje grupe pinova opšte namjene......................................................... 16
Slika 3.12 LE Alterine Cyclone serije ......................................................................................................... 17
Slika 4.1 Izgled UP3-1C6 ploče .................................................................................................................. 19
Slika 4.2 Komponente UP3-1C6 ploče ....................................................................................................... 20
Slika 4.3 VGA Port UP3-1C6 ploče ............................................................................................................. 21
Slika 4.4 VGA kabl .................................................................................................................................... 22
Slika 4.5 Push Button prekidači ................................................................................................................ 22
Slika 4.6 Quartus II simbol VGA_Contoller-a ............................................................................................. 23
Slika 4.7 Simulacioni dijagram rada VGA_Controller-a .............................................................................. 24
Slika 4.8 Simulacioni dijagram rada VGA_Controller-a na intervalu 15ms ................................................. 25
Slika 4.9 Quartus II simbol RGB_Input-a ................................................................................................... 25
Slika 4.10 Quartus II simulacija rada RGB_ Input-a .................................................................................... 26
Slika 4.11 Blok dijagram fajl projekta VGA_RGB_Input.............................................................................. 26
Slika 4.12 Sačuvana crno-bijela slika ......................................................................................................... 27
Slika 4.13 Quartus II simbol Image_Storage-a ........................................................................................... 27
Slika 4.14 Quartus II simulacija rada Stored_Image-a................................................................................ 29
Slika 4.15 Blok dijagram fajl projekta Display_Image_Storage................................................................... 30
Slika 4.16 Quartus II simulacija rada Display_Image_Storage-a ................................................................. 30
Slika 4.17 MIF fajl karakteri.mif ................................................................................................................ 32
Slika 4.18 Quartus II simbol ROM memorije za karaktere ......................................................................... 32
Slika 4.19 Quartus II simbol komponente lpm_rom .................................................................................. 33
Slika 4.20 Pristupanje fontu karaktera pomoću ROM-a ............................................................................. 35
Slika 4.21 Quartus II simulacija rada modula Character_ROM_Memory ................................................... 36
Slika 4.22 Quartus II simbol bloka Char_Pos_And_Addr1 .......................................................................... 37
Slika 4.23 Quartus II simulacioni dijagram rada bloka Char_Pos_And_Addr1 ............................................ 38
Slika 4.24 Blok dijagram projekta Character_Display ................................................................................ 39
Slika 4.25 Quartus II simbol String_Input-a ............................................................................................... 39
Slika 4.26 Quartus II simulacioni dijagram rada String_Input-a ................................................................. 40
Slika 4.27 Quartus II simulacioni dijagram rada String_Input-a - slanje adresa sa ulaza kola ...................... 41
Slika 4.28 Blok dijagram Character_Generator-a ...................................................................................... 41
Slika 4.29 Quartus II simbol bloka Wall_Racket_And_Ball ......................................................................... 42
Slika 4.30 Quartus II simulacioni dijagram rada bloka Wall_Racket_And_Ball ........................................... 45
Slika 4.31 Blok dijagram projekta VGA_Animation .................................................................................... 46
Slika 4.32 Quartus II simulacija projekta VGA_Animation ......................................................................... 46
Slika 4.33 Blok dijagram projekta VGA_Anim_And_Char_Disp .................................................................. 47
Slika 4.34 Quartus II simulacija rada projekta VGA_Anim_And_Char_Disp ................................................ 48
Slika 4.35 Pregled logičkih resursa za realizaciju osnovnih kola iz rada ...................................................... 48
Slika 4.36 Pregled logičkih resursa za realizaciju kola većeg stepena integracije ........................................ 49
Slika 5.1 Eksperimentalna oprema i testiranje projekta VGA_RGB_Input .................................................. 51
Slika 5.2 Rezultat testiranja projekta Display_Image_Storage ................................................................... 51
Slika 5.3 a) Testiranje projekta Character_Display pomoću UP3-1C6 ploče i VGA monitora; b) Rezultat
testiranja Character_Display-a .................................................................................................................. 52
Slika 5.4 Testiranje projekta Character_Generator ................................................................................... 52
Slika 5.5 Prikaz eksperimentalne opreme i testiranje projekta VGA_Animation ........................................ 53
Slika 5.6 Rezultati testiranja projekta VGA_Anim_And_Char_Disp ............................................................ 53
Popis tabela
Tabela 2.1 Tro-bitne kombinacije boja na izlazu VGA Kontrolera ................................................................ 8
Tabela 3.1 Karakteristike čipova iz FPGA familije Cyclone ......................................................................... 17
Tabela 4.1 Karakteristike Cyclone EP1C6Q240 uređaja ............................................................................. 20
Tabela 4.2 Konfiguracija VGA Porta .......................................................................................................... 21
Tabela 4.3 Portovi komponente lpm_rom ................................................................................................ 33
Tabela 4.4 Parametri komponente lpm_rom ............................................................................................ 33
Tabela 4.5 Adrese simbola u font ROM-u ................................................................................................. 36
Tabela 5.1 Dodjela FPGA pinova za VGA_Controller................................................................................. 50
Tabela 5.2 FPGA pinovi za tastere ............................................................................................................ 50
Popis skraćenica
ASIC Application-Specific Integrated Circuit
CLB Configurable Logic Block
CRT Cathode Ray Tube
DSP Digital Signal Processing
FPGA Field Programmable Gate Array
HBP Horizontal Back Porch
HDL Hardware Description Language
HFP Horizontal Front Porch
IDE Integrated Drive Electronics
IP Intelectual Property
JTAG Joint Test Action Group
LAB Logic Array Block
LC Logic Cell
LCD Liquid Crystal Display
LE Logic Element
LED Light-Emitting Diode
LPM Library of Parametrized Modules
LUT Look-Up Table
MUX Multiplexer
PC Personal Computer
RGB Red, Green, and Blue
SRAM Static Random Access Memory
TTL Transistor-Transistor Logic
USB Universal Serial Bus
VBP Vertical Back Porch
VFP Vertical Front Porch
VGA Video Graphics Array
VHDL Very High Speed Integrated Circuits Hardware Description Language
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
1
1 Uvod
Cilj rada je predstavljanje upotrebe FPGA (Field Programmable Gate Array) tehnologije u realizaciji
digitalnih kola za generisanje video slike. U tu svrhu, drugo poglavlje rada daje osnovne informacije o video
prikazu i načinu na koji se on realizuje. Treće poglavlje rada je uvod u FPGA tehnologiju i opisuje
arhitekturu FPGA kola.
Na početku četvrtog poglavlja je opisan hardver koji je iskorišćen u praktičnom radu, a u nastavku
poglavlja su predstavljena realizovana rješenja. Dio rada koji je posvećen opisu izvršenog istraživanja
počinje predstavljanjem realizacije VGA (Video Graphics Array) Kontrolera koji ima ulogu generisanja
aktivnih video signala. Rad prezentuje mogućnosti upotrebe VGA Kontrolera, počev od prikazivanja boja i
teksta do prikazivanja animacije i upravljanja kretanjem objekta prikazanog na VGA monitoru. Opisana je
realizacija ROM memorije za karaktere. U radu su data konkretna rješenja realizacije kola za prikazivanje
slike, generisanje teksta i prikazivanje animiranog objekta. Rad sadrži blok dijagrame predloženih rješenja i
njihove simulacione dijagrame.
Peto poglavlje rada prezentuje rezultate testiranja pomoću Alterinog UP3 Edukacionog Kompleta. Date
su fotografije eksperimentalne opreme i rezultata testiranja realizovanih rješenja.
Sa zaključkom su predstavljene mogućnosti proširenja rada, a na kraju je dat pregled literature.
Elektronska verzija rada je zajedno sa kreiranim izvornim kodovima, fotografijama i video snimcima
eksperimentalne verifikacije, data na CD-u koji je dio rada.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
2
2 VGA
VGA je analogni video standard koji se uglavnom koristi kod personalnih računara. VGA se odnosi na
sistem za prikazivanje slike koji je uveden od strane IBM-a 1987. godine sa rezolucijom 640 x 480 piksela u
grafičkom modu i rezolucijom 720 x 400 piksela u tekstualnom modu. Do danas su uvedene mnoge revizije
ovog standarda.
Da bi se razumjelo kako je moguće generisati video sliku pomoću FPGA razvojne ploče, neophodno je
prvo razumjeti različite komponente VGA video signala. VGA video signal sadrži 5 aktivnih signala. Dva
signala, signal za horizontalnu i signal za vertikalnu sinhronizaciju, koriste se za sinhronizaciju video signala
i oni su kompatibilni sa TTL (Transistor-Transistor Logic) logičkim nivoima. Tri analogna signala sa 0.7-1.0V
peak-to-peak nivoima se koriste za kontrolu boje. Signali boje su: signal crvene, zelene i plave boje. Oni se
često kolektivno nazivaju RGB (Red, Green, and Blue) signali. Promjenom analognih nivoa tri RGB signala
proizvode se sve ostale boje.
2.1 Tehnologija Video Prikaza
Prirodu video signala je diktirala prva tehnologija koja se koristila za prikaz video slike. Iako su LCD
(Liquid Crystal Display) monitori sada u uobičajenoj upotrebi, glavna komponenta u ranim VGA
računarskim monitorima je bila katodna cijev prikazana na Slici 2.1. Ekran je matrica elemenata slike koji
su poznati kao pikseli. Svaki piksel može da ima svoju boju i osvjetljenost. U cilju stvaranja iluzije kretanja,
određeni broj frejmova se prikazuje svake sekunde.
Slika 2.1 CRT i fosforne tačke na površini ekrana
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
3
Da bi se generisala slika, elektronski snop mora da skenira ekran u nizu horizontalnih linija. Sistem za
skretanje koristi magnetna ili elektrostatička polja da skrene elektronski snop na odgovarajući položaj na
površini CRT-a (Cathode Ray Tube). RGB informacija u video signalu se koristi za kontrolu snage snopa
elektrona. Svjetlost se generiše kada video signal uključi snop, a snop udari kolornu fosfornu tačku ili liniju
na površini CRT-a. Površina kolornog CRT-a sadrži niz redova sa tri različita fosfora. Po jedan tip fosfora se
koristi za svaku od osnovnih boja: crvenu, zelenu i plavu.
U standardnom VGA formatu, ekran sadrži 640 x 480 elemenata slike ili piksela. Video signal mora da
pređe cijeli ekran 60 puta u sekundi da bi se obezbjedilo kretanje na slici i da bi se smanjilo treperenje.
Ovaj period se naziva osvježavanje. Ljudsko oko može da otkrije treperenja na frekvenciji osvježavanja
manjoj od 30Hz. Da bi se smanjilo treperenje zbog interferencije sa fluorescentnim izvorima osvjetljenja,
ponekad se kod monitora koriste frekvencije osvježavanja veće od 60Hz, npr. oko 70Hz.
Boja svakog piksela je određena vrijednošću RGB signala kada snop prelazi preko piksela. Kod rezolucije
640 x 480 piksela , sa frekvencijom osvježavanja od 60Hz, to je vrijeme od oko 40ns po pikselu. Takt od 25
MHz koji se koristi za rad monitora ima periodu od 40ns. Neznatno veći takt će proizvesti veću stopu
osvježavanja.
2.2 Osvježavanje ekrana
Kao i bilo koji video format, VGA video je sastavljen od frejmova. Svaki frejm se sastoji od niza
horizontalnih linija, a svaka linija se sastoji od niza piksela. Linije u svakom kadru se emituju od vrha do
dna , a pikseli u svakom redu se prenose sa lijeva na desno.
Proces osvježavanja ekrana rezolucije 640 x 480 piksela koji se vidi na Slici 2.2 počinje u gornjem lijevom
uglu ekrana i oslikava jedan piksel u jednom trenutku sa lijeva na desno. Na kraju prvog reda, red se
uvećava za jedan i adresa kolone se resetuje na adresu prve kolone. Svaki red se oslikava dok se ne prikažu
svi pikseli iz reda. Kada se cio ekran oslikao, proces osvježavanja počinje ponovo.
Slika 2.2 Raspored 640 x 480 piksela na ekranu
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
4
Video signal oslikava ili osvježava sliku koristeći sledeći proces. Signal vertikalne sinhronizacije signala, kao što je prikazano na slici (Slika 2.3) signalizira monitoru da počne prikazivanje nove slike ili frejma, a monitor počinje prikazivanje u gornjem lijevom uglu sa pikselom 0,0. Signal horizontalne sinhronizacije signala, kao što je prikazano na slici (Slika 2.4), signalizira monitoru da osvježi još jedan red od 640 piksela. Nakon što je 480 redova piksela osvježeno sa 480 signala horizontalne sinhronizacije, signal vertikalne sinhronizacije resetuje monitor na gornji lijevi ugao i proces se nastavlja. Tokom vremena kada se podaci ne prikazuju i snop se vraća u krajnju lijevu kolonu da pokrene još jedno horizontalno skeniranje, RGB signali treba da budu postavljena na crnu boju (sve nule).
Slika 2.3 Tajming signala za vertikalnu sinhronizaciju za 640 x 480 na 60Hz
Slika 2.4 Tajming signala za horizontalnu sinhronizaciju za 640 x 480 na 60Hz
Mnogi VGA monitori će se isključiti ako dva sinhronizaciona signala nemaju tačne vrijednosti. Većina PC
(Personal Computer) monitora imaju LED (Light-Emitting Diode) koja je zelene boje kada detektuju validne
signale za sinhronizaciju i žute boje u suprotnom. Kod grafičkih PC kartica, dodjeljene lokacije video
memorije se koriste za skladištenje vrijednosti boja svakog piksela na ekranu. Da bi se proizveo RGB signal,
video memorija se čita dok snop skenira preko ekrana. Aktuelne generacije FPGA čipova daju mogućnost
razvoja elektronskih kola koja zahtjevaju upotrebu memorije.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
5
2.3 VGA sinhronizacija
Signal horizontalne sinhronizacije se koristi za definisanje kraja svakog reda piksela i ovaj signal
kontroliše horizontalnu poziciju aktivnog piksela. Signal vertikalne sinhronizacije se koristi za definisanje
kraja svakog frejma. Frekvencija signala za vertikalnu sinhronizaciju može biti nazvana frekvencijom
osvježavanja, tj. brojem iscrtavanja ekrana u sekundi.
Svaka linija ekrana počinje aktivnim regionom u kome se prenose RGB vrijednosti za svaki piksel u redu.
Nakon aktivnog regiona slijedi zatamnjeni region u kome pikseli imaju crnu boju. U sredini intervala
zatamnjenja, prenosi se impuls za horizontalnu sinhronizaciju. Interval zatamnjenja prije impulsa
horizontalne sinhronizacije je poznat kao "prednji prilaz", a interval zatamnjenja nakon impulsa je poznat
kao "zadnji prilaz" impulsu. Na Slici 2.5 se može vidjeti da se signal iz kanala za zelenu boju šalje samo u
toku trajanja aktivnog regiona linije piksela.
Slika 2.5 Tajming linije piksela
Frejmovi su izgrađeni od linija na isti način kao što su linije izgrađene od piksela. Jedan frejm sadrži sve
linije koje će zapravo biti prikazane na ekranu, zatim jedan broj crnih linija koje čine "prednji prilaz", sledeći
dolazi impuls za vertikalnu sinhronizaciju koji traje nekoliko redova, a zatim još crnih linija da bi se
formirao "zadnji prilaz". Podjela frejma je prikazana na Slici 2.6.
Slika 2.6 Tajming jednog frejma
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
6
Na slici (Slika 2.7) su ilustrovani dijelovi ekrana kod rezolucije 640 x 480 piksela. Vidljivi dio ekrana je
prikazan kao obojena oblast i on ima dimenzije 640 x 480 piksela. Crne i sive ivice označavaju dijelove
ekrana koji nisu vidljivi, ali su neophodni za sinhronizaciju. Sa ovim oblastima, ukupna širina ekrana je 800
piksela, a ukupna visina je 524 piksela. Ispod je kratak opis svakog dijela ekrana.
• Aktivni video ( Active video). Vidljivi dio ekrana u toku čijeg skeniranja je video izlaz aktivan.
Njegove dimenzije su 640 x 480 piksela.
• Prednji prilaz (Front porch). Kada snop dostigne kraj vidljivog dijela ekrana, video izlaz je izgašen.
Dva prednja prilaza impulsima su na Slici 2.7 označeni kao VFP (Vertical Front Porch) u slučaju
vertikalne sinhronizacije i HFP (Horizontal Front Porch) u slučaju horizontalne sinhronizacije.
• Impuls za sinhronizaciju (Sync pulse). U slučaju horizontalne sinhronizacije (HSYNC), proces
iscrtavanja ekrana se vraća na nultu kolonu, a ako je u pitanju impuls vertikalne sinhronizacije
(VSYNC), proces iscrtavanja se vraća na nulti red i nultu kolonu.
• Zadnji prilaz (Back porch). Ovo je dio ekrana koji se koristi prije nego što počne aktivni video
region. Ove oblasti su na Slici 2.7 označene kao VBP (Vertical Back Porch) i HBP (Horizontal Back
Porch).
Slika 2.7 Dijelovi ekrana kod rezolucije 640 x 480 piksela
Svaki proizvođač u priručniku za svoj monitor daje različit spisak rasporeda dijelova ekrana. Srećom,
vrijednosti date na Slici 2.8 nisu posebno kritične i ne moraju se koristiti njihove tačne vrijednosti i to je
samo jedan od mogućih načina podjele ekrana. Slika 2.8 daje podatke o tome koliko piksela obuhvataju
oblasti horizontalne i vertikalne podjele ekrana. Kod CRT monitora, dužine prednjeg i zadnjeg prilaza
kontrolišu položaj slike na ekranu. Ako se slika pojavi pomjerena desno ili lijevo, gore ili dolje, treba
pokušati podesiti vrijednosti prednjeg i zadnjeg prilaza za odgovarajući smjer (ili koristiti podešavanja
pozicije slike na monitoru, što vrši istu radnju). LCD monitori će uglavnom automatski centrirati aktivni
video region.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
7
Slika 2.8 Raspored dijelova ekrana za različite rezolucije i frekvencije osvježavanja
2.4 VGA Kontroler
VGA Kontroler je kolo koje ima funkciju da generiše RGB signale i signale za horizontalnu i vertikalnu
sinhronizaciju VGA signala. VGA Kontroler generiše 5 aktivnih VGA signala koji su potrebni za rad
monitora. Arhitektura VGA Kontrolera je prikazana na Slici 2.9. Arhitektura VGA Kontrolera sadrži
sinhronizaciono kolo i RGB kolo. Signali koje VGA Kontroler generiše se preko D/A konvertora dovode do
VGA monitora. VGA Kontroler je odgovoran za horizontalnu i vertikalnu sinhronizaciju što obezbjeđuje
stabilnu i jasnu sliku. U ovom radu, VGA Kontroler je realizovan u FPGA tehnologiji.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
8
Slika 2.9 Arhitektura VGA Kontrolera
Sinhronizaciono kolo VGA Kontrolera na svom izlazu generiše signale za sinhronizaciju koji su
neophodni za pravilan rad VGA monitora. H_Sinh je signal za horizontalnu sinhronizaciju, a V_Sinh se
koristi za vertikalnu sinhronizaciju. Sinhronizaciono kolo generiše signale koristeći svoje unutrašnje brojače
čiji su izlazi Piksel_X i Piksel_Y. Vrijednosti Piksel_X i Piksel_Y određuju lokaciju trenutno prikazivanog
piksela. Sinhronizaciono kolo određuje rezoluciju piksela na ekranu, jer njegovi interni brojači koriste
vremenske konstante za podjelu ekrana, poput konstanti prikazanih na Slici 2.8. Ovo kolo proizvodi i signal
Video_Akt koji daje podatak o tome da li je u toku obrada aktivnog, tj. vidljivog dijela ekrana kada se
aktiviraju RGB signali.
RGB kolo određuje boju piksela na ekranu i na svom izlazu generiše signale za crvenu, zelenu i plavu
boju koji su 1-bitni signali. Kombinacijom ova tri izlazna signala određuje se boja svakog piksela na ekranu.
RGB kolo dobija podatke od sinhronizacionog kola, a na svojim RGB ulazima dobija podatke od spoljašnjih
kola sa kojima se kombinovano koristi u dizajnu. Kombinovanjem signala za osnovne boje, na ekranu se
mogu dobiti ostale boje. Pošto opisani VGA Kontroler ima tri 1-bitna izlazna RGB signala, na njegovom
izlazu se može dobiti 23 , tj. osam boja. U Tabeli 2.1 su prikazane tro-bitne kombinacije boja.
Crvena (R) Zelena (G) Plava (B) Rezultujuća boja
0 0 0 Crna
0 0 1 Plava
0 1 0 Zelena
0 1 1 Cijan
1 0 0 Crvena
1 0 1 Magenta
1 1 0 Žuta
1 1 1 Bijela
Tabela 2.1 Tro-bitne kombinacije boja na izlazu VGA Kontrolera
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
9
3 FPGA tehnologija
3.1 Uvod u FPGA
FPGA (Field Programmable Gate Array) kola su digitalna integrisana kola koja sadrže konfigurabilne
(programabilne) logičke blokove sa konfigurabilnim interkonekcijma između ovih blokova. Projektanti
mogu konfigurisati (programirati) ovakve uređaje da izvrše ogroman broj različitih zadataka.
FPGA tehnologija ima veoma značajno mjesto u dizajniranju digitalnih kola zbog činjenice da FPGA
kombinuje najbolje osobine ASIC (Application-Specific Integrated Circuit) kola i procesorski baziranih
sistema. U zavisnosti od toga kako se koriste, neka FPGA kola mogu biti programirana jedan put, dok druga
mogu biti reprogramirana iznova.
Slika 3.1 Fizički izgled FPGA čipova
“Field programmable" dio naziva FPGA se odnosi na činjenicu da se programiranje odvija "na terenu",
za razliku od uređaja čija je interna funkcionalnost definisana od strane proizvođača. To može da znači da
su FPGA kola konfigurisana u laboratoriji, ili se može odnositi i na mijenjanje funkcija uređaja
ugrađenog u elektronski sistem koji je već prenešen u upotrebu.
FPGA kola se dijele na dvije osnovne grupe, a to su Antifuse FPGA kola i SRAM (Static Random Access
Memory) FPGA kola. Actel, Quicklogic, Cypress i Xilinx su najpoznatiji proizvođači Antifuse FPGA kola, dok
su Altera i Xilinx vodeći u proizvodnji SRAM FPGA kola. Prva FPGA familija koju je uveo Xilinx je bila familija
XC2000 iz 1985. godine.
3.2 SRAM FPGA tehnologija
SRAM je trenutno dominantna FPGA tehnologija. Xilinx SRAM FPGA kola imaju strukturu koja se zasniva
na nizovima, što znači da je svaki čip sastavljen od dvo-dimenzionog niza logičkih blokova koji mogu da se
povezuju preko horizontalnih i vertikalnih kanala za konekciju. Ilustracija tipične FPGA arhitekture je
prikazana na Slici 3.2.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
10
Slika 3.2 Ilustracija tipične FPGA arhitekture
SRAM ili Statički RAM je tip poluprovodničke memorije. Kvalifikacija "Statički" u vezi sa SRAM-om znači
da kada je vrijednost ubačena u ćelije SRAM-a, ona ostaje nepromjenjena, osim ako je namjerno
promjenjena ili dok se napajanje ne ukloni iz sistema. Simbol za programabilniu ćeliju na bazi SRAM je
prikazan na Slici 3.3.
Slika 3.3 SRAM-bazirana programabilna ćelija
SRAM ćelija se sastoji od multitranzistorskog SRAM memorijskog elementa za skladištenje čiji izlaz
pokreće dodatni kontrolni tranzistor. U zavisnosti od sadržaja memorijskog elementa (logička ’0’ ili logička
’1’), kontrolni tranzistor će biti ili isključen ili uključen.
Karakteristike SRAM tehnologije programiranja su da nove ideje za dizajn mogu biti brzo sprovedene i testirane, a standardi razvoja i protokoli mogu biti primjenjeni relativno lako. Štaviše, kada je sistem prvi put uključen, FPGA kolo u početku može biti programirano da obavlja jednu funkciju, kao što je samotestiranje, a onda može biti reprogramirano da izvrši svoj glavni zadatak.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
11
Logički blokovi
Postoje dvije osnovne vrste programabilnih logičkih blokova koji se koriste za formiranje FPGA arhitekture: MUX (Multiplexer) i LUT ( Look-Up Table) .
Kao primjer pristupa zasnovanog na MUX-u, treba posmatrati jedan od načina na koji 3-ulazna funkcija y=(a & b)|c, može biti implementirana pomoću bloka koji sadrži samo multipleksere (Slika 3.4).
Slika 3.4 MUX-bazirani logički blok
Osnovni koncept koji stoji iza LUT je relativno jednostavan. Grupa ulaznih signala se koristi kao indeks (pokazivač) na look-up tabelu. Sadržaj ove tabele se uređuje tako da ćelija na koju pokazuje svaka ulazna kombinacija sadrži željenu vrijednost. Na primjer, pretpostavimo da je potrebno implementirati 3-ulaznu funkciju: y=(a & b)|c.
To se može postići dovođenjem odgovarajućih vrijednosti do 3-ulazne LUT. Za potrebe navedenog primjera, pretpostavlja se da je LUT formirana od SRAM ćelija. Najčešće korišćena tehnika, da bi se izabrala željena SRAM ćelija, je da se koriste kaskade prenosnih kapija kao što je prikazano na Slici 3.5. Ako je prenosna kapija aktivna, ona prenosi signal na svom ulazu do svog izlaza. Ako je kapija deaktivirana, njen izlaz je električno odvojen od žice koja je napaja.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
12
Slika 3.5 LUT bazirana na transmisionim kapijama
Logičke Ćelije / Logički Elementi
Svaki proizvođač FPGA kola ima svoje nazive za proizvode. Na primjer, gradivni blok u modernom FPGA kolu kod Xilinx-a se zove LC (Logic Cell) ili logička ćelija, a kod Altere LE (Logic Element) ili logički element. Pored ostalog, LC obuhvata 4-ulaznu LUT (koja takođe može da djeluje kao 16 x 1 RAM ili 16-bitni shift registar), multiplekser i registar (Slika 3.6).
Slika 3.6 Pojednostavljeni izgled Xilinx LC
Ilustracija na Slici 3.6 je grubo uprošćavanje, ali ona zadovoljava potrebe ilustracije arhitekture. Registar se može konfigurisati da radi kao flip-flop, kao što je prikazano na Slici 3.6, ili kao latch. Polaritet takta (aktiviranje na rastućoj ivici ili na opadajućoj ivici) može biti konfigurisan, kao i polaritet clock enable i
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
13
set/reset signala (active high ili active-low). Pored LUT, MUX-a i registra, LC takođe sadrži i druge elemente, uključujući i posebnu brzu prenosnu logiku za upotrebu u aritmetičkim operacijama.
Postoji nekoliko razlika između Xilinx LC i Altera LE, ali ukupni koncepti su veoma slični.
Slice
Sledeći korak u hijerarhiji je ono što Xilinx naziva slice (Altera i drugi proizvođači imaju svoja ekvivalentna imena).
Slika 3.7 Slice koji sadrži dvije logičke ćelije
Na Slici 3.7, interne veze su izostavljene da bi prikaz bio pojednostavljen. Treba napomenuti, da iako LUT, MUX i registar svake logičke ćelije imaju svoje ulaze i izlaze podataka, slice ima jedan clock, clock enable, i set/reset signal zajednički za obje logičke ćelije.
CLB i LAB
Krećući se još jedan nivo nagore po hijerarhiji, dolazimo na ono što Xilinx naziva CLB (Configurable Logic Block) i što Altera naziva LAB (Logic Array Block). Neka Xilinx FPGA kola imaji dva slice-a u svakoj CLB, dok druga imaju četiri.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
14
Slika 3.8 CLB koji sadrži četiri slice-a (broj slice-a zavisi od FPGA familije)
Postoji brza veza između LC-a u slice-u, a zatim malo sporije povezivanje između slice-a u CLB, a zatim se CLB povezuju između sebe. Ideja je da se postigne optimalan kompromis između lakoće povezivanja elemenata zajedno, bez pretjeranog izlaganja kašnjenju zbog interkonekcija.
Ugrađeni RAM
Mnoge aplikacije zahtjevaju korišćenje memorije, tako da sada FPGA kola obuhvataju relativno velike komade ugrađenog RAM-a pod nazivom e-RAM ili blok RAM. U zavisnosti od arhitekture komponente, ovi blokovi mogu biti raspoređeni po periferiji čipa, rasuti po površini čipa u relativnoj izolaciji, ili organizovani u kolonama, kao što je prikazano na Slici 3.9.
Slika 3.9 Pogled na čip sa kolonama ugrađenih RAM blokova
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
15
Ugradjena procesorska jezgra
Činjenica je da većina dizajnerskih realizacija koristi mikroprocesore u jednom ili drugom obliku. Do nedavno, oni su se javljali kao diskretni uređaji na štampanoj ploči. U poslednje vrijeme, postala su dostupna FPGA kola koja sadrže jedan ili više ugrađenih mikroprocesora, koji se obično nazivaju mikroprocesorska jezgra. U ovom slučaju, često ima smisla da se premjeste svi zadaci koje je obavljao spoljašnji mikroprocesor u unutrašnje jezgro. Ovo pruža niz prednosti, jedna je da se smanjuje cijena posjedovanja dva uređaja, a ovo eliminiše veliki broj padova i pinova na ploči, i čini ploču manjom i lakšom. Na Slici 3.10, prikazan je čip sa ugrađenim procesorskim jezgrom van glavnog FPGA fabrikata.
Slika 3.10 Pogled na čip sa ugrađenim jezgrom van glavnog fabrikata
U/I pinovi opšte namjene
Današnja FPGA kola mogu da imaju hiljadu i više pinova koji su poređani kao niz oko osnove kola. Slično tome, kada je u pitanju silikonski čip u kolu, flip-chip strategija pakovanja omogućuje da napajanje, masa, clock, i U/I pinovi budu raspoređeni preko površine čipa. Čisto za svrhu ilustracije, stvari postaju jednostavnije ako se pretpostavi da su sve veze sa čipom ostvarene u vidu prstena oko ivice naprave, kao što su zaista bili mnogo godina. U/I signali opšte namjene se mogu podijeliti u nekoliko grupa, kao na Slici 3.11, gdje je prikazano osam grupa signala.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
16
Slika 3.11 Pogled na čip koji pokazuje grupe pinova opšte namjene
3.3 Cyclone FPGA familija
Cyclone FPGA familija je bazirana na all-layer-copper, 1.5V, 130nm, SRAM procesu. Ovi jeftini uređaji
obezbjeđuju visok obim aplikacino fokusiranih funkcija kao što su ugrađena memorija, spoljni memorijski
interfejs, kao i kola za upravljanje taktom. Najmanja jedinica u Cyclone arhitekturi je logički element (LE)
koji je prikazan na Slici 3.12.
LE sadrži look-up tabelu (LUT) koja može realizovati bilo koju funkciju sa četiri promjenljive,
programabilni registar za pamćenje, carry chain konekciju sa carry select opcijom i register chain
konekciju.
LE ima sposobnost da ostvari sve vrste interkonekcije: lokalnu, rednu, vezu u koloni, vezu u registarski
niz, vezu između LUT-a i direktnu vezu. Izlaz za povezivanje LUT-a u niz se koristi za povezivanje LUT-a u
istom LAB-u, u cilju realizacije funkcije sa više ulaza, a izlaz za povezivanje registara služi za spajanje
registara iz zajedničke LAB. LAB je napravljen od 10 LE-a, LE carry nizova, LAB kontrolnih signala, lokalnih
interkonekcija, LUT nizova i linija za konekciju registarskih nizova.
Ugrađena Cyclone memorija se sastoji od banaka (kolona) M4K blokova, a svaki blok sadrži ukupno
4608 RAM bita. Memorijski blokovi (M4K), su prave memorije sa dualnim portom, što znači da mogu da
se čitaju i pišu na različitim adresama istovremeno.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
17
Slika 3.12 LE Alterine Cyclone serije
Simbol EP1C3 EP1C4 EP1C6 EPC12 EP1C20
Broj LE 2910 4000 5980 12060 20060
M4K RAM Blokovi (4 Kbits +Parnost) 13 17 20 52 64
Ugrađena Memorija(kbit) 59 77 90 234 288
PLL 1 2 2 2 2
Broj I/O pinova 104 301 185 249 301
Tabela 3.1 Karakteristike čipova iz FPGA familije Cyclone
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
18
4 Predloženo rješenje
Cilj istraživanja je realizacija VGA Kontrolera u FPGA tehnologiji. Ovaj dio rada prezentuje hardver i
softver koji su iskorišćeni u toku istraživanja. Za realizaciju datih rješenja je korišćen VHDL (Very High Speed
Integrated Circuits Hardware Description Language) koji je programski jezik za opis elektronskog hardvera.
Svi izvorni kodovi su napisani u VHDL-u. Za dizajniranje kola je upotrebljeno Alterino razvojno okruženje
Quartus II, zajedno sa UP3-1C6 Edukacionim Kompletom. Quartus II je poslužio za kreiranje, kompajliranje
i simulaciju projekata, kao i za programiranje.
4.1 Hardver iskorišćen za realizaciju predloženog rješenja
Opšti opis Edukacionog Kompleta UP3-1C6
UP3-1C6 Education Kit je odličan edukacioni komplet i jeftino rješenje za pravljenje prototipova i brzo
razvijanje proizvoda, uključujući i hardver i softver. Ploča raspolaže moćnim Altera Cyclone FPGA čipom
EP1C6Q240. Ploča inženjerima omogućuje dizajn, projektovanje i testiranje IP (Intelectual Property) core-
ova ili dizajn bilo kog hardvera korišćenjem HDL (Hardware Description Language)-a, kao što su VHDL ili
Verilog. Cijelo okruženje pomaže da se na kompletu brzo implementira bilo koji procesor, kao i svi real
time operativni sistemi. Ploča obezbjeđuje industrijske standarde interkonekcije, memorijski podsistem,
više clock-ova za dizajn sistema, JTAG (Joint Test Action Group) Konfiguraciju, ekspanziona zaglavlja za
veću fleksibilnost i dodatne mogućnosti korisničkog interfejsa. Dalje, ploča može da se koristi za DSP
(Digital Signal Processing) aplikacije, povezivanjem direktno na DSP procesorom ili realizacijom DSP
funkcija unutar FPGA. Na Slici 4.1 je prikazan izgled UP3-1C6 ploče.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
19
Slika 4.1 Izgled UP3-1C6 ploče
Neke od karakteristika UP3-1C6 ploče su:
• Alterin EP1C6Q240 čip i EPCS1 uređaj za konfiguraciju,
• podrška za IP dizajn,
• USB (Universal Serial Bus) 1.1,
• RS 232 Port,
• Paralelni Port (IEEE 1284),
• PS/2 Port,
• VGA port,
• IDE (Integrated Drive Electronics),
• 2Kbytes, I2C PROM (mogućnost proširenja),
• SRAM, 128KB,
• FLASH, 2MB,
• SDRAM, 8MB,
• obezbjeđuje više clock-ova kao što su CPU clock, USB clock, PCI clock i IOAPIC clock,
• mogućnost JTAG i Active Serial download-a,
• 5V Santa Cruz long Expansion Card Header sa 74 I/O,
• jedan 4-bitni switch blok,
• četiri push button switch-a,
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
20
• četiri LED,
• jedan 16 X 2 karaktera LCD Modul,
• I2C Real Time Clock.
Slika 4.2 Komponente UP3-1C6 ploče
U Tabeli 4.1 su prikazane karakteristike čipa EP1C6Q240.
Logički Elementi 5980
RAM Blokovi 20
Ukupno RAM Bita 92160
Broj PLL Kola 2
Maksimum Korisničkih U/I 185
Tabela 4.1 Karakteristike Cyclone EP1C6Q240 uređaja
FPGA koristi ćelije SRAM-a za čuvanje konfiguracionih podataka. Pošto je SRAM nestalna memorija,
prilikom uključenja uređaja podaci se moraju ponovo upisati u Cyclone FPGA. UP3-1C6 ploča podržava dva načina konfiguracije: Active Serial i JTAG. Kod Active Serial moda Quartus II softver automatski generiše .pof fajlove, a kod JTAG moda .sof fajlove koji se mogu download-ovati preko Byte-Blaster II ili USB Blaster Kabla.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
21
VGA Port
UP3-1C6 posjeduje standardni VGA port ( Slika 4.3) koji se povezuje sa VGA konektorom monitora (Slika 4.4). VGA konektor je 15-pinski konektor, ali samo 5 signala su aktivni signali, a to su H_sync, V_sync i tri signala za kontrolu boje.
H_sync i V_sync su TTL signali, tako da je logička jedinica predstavljena sa 5V, a logička nula je
predstavljena sa 0V . Ova dva signala se koriste za horizontalnu i vertikalnu sinhronizaciju. RGB signali su:
signal crvene, signal zelene i signal plave boje. RGB signali su analogni signali. Maksimalni napon koji se
može koristiti je 0.7V peak-to-peak i to rezultira punim intenzitetetom boje.
Broj VGA Pina VGA Interfejs Broj FPGA Pina
1 Red 228
2 Green 122
3 Blue 170
4 NC ---
5 NC ---
6 GND ---
7 GND ---
8 GND ---
9 NC ---
10 GND ---
11 GND ---
12 NC ---
13 H_sync 227
14 V_sync 226
15 NC ---
Tabela 4.2 Konfiguracija VGA Porta
Slika 4.3 VGA Port UP3-1C6 ploče
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
22
Push Button prekidači
SW4, SW5, SW6 i SW7 su Push Button prekidači koji se koriste za stimulus dizajna u Cyclone uređaju.
4.2 Arhitektura predloženog rješenja
4.2.1 Realizacija VGA Kontrolera
VGA Kontroler ima dvije funkcije, a to su sinhronizacija VGA video signala i generisanje RGB signala.
Izlazni signali ovog kola su aktivni VGA signali i oni upravljaju radom VGA monitora. U ovom radu, VGA
Kontroler je realizovan u FPGA tehnologiji.
Slika 4.5 Push Button prekidači
Slika 4.4 VGA kabl
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
23
VGA_Controller
Na Slici 4.6 je prikazan simbol entiteta VGA_Controller. VGA_Controller generiše 5 aktivnih VGA signala.
Slika 4.6 Quartus II simbol VGA_Contoller-a
Ispod je prikazana deklaracija entiteta VGA_Controller.
ENTITY VGA_Controller IS PORT ( clock, red, green, blue : IN STD_LOGIC; red_out, green_out, blue_out, horiz_sync_out, vert_sync_out : OUT STD_LOGIC; video_on_out : OUT STD_LOGIC; pixel_row, pixel_column: OUT STD_LOGIC_VECTOR(9 DOWNTO 0)); END VGA_Controller;
VGA_Controller je realizovan pomoću brojača koji broje piksele na ekranu i on koristi sledeće konstante
za podjelu ekrana:
CONSTANT H_pixels_across: Natural := 800; CONSTANT H_sync_low: Natural := 824; CONSTANT H_sync_high: Natural := 896; CONSTANT H_end_count: Natural := 1024; CONSTANT V_pixels_down: Natural := 600; CONSTANT V_sync_low: Natural := 601; CONSTANT V_sync_high: Natural := 603; CONSTANT V_end_count: Natural := 625;
VGA_Controller je realizovan za rezoluciju 800 x 600 piksela. Prilikom realizacije nisu uzete tačne
vrijednosti konstanti koje definišu granice različitih regiona horizontalne i vertikalne podjele ekrana koje su
navedene na Slici 2.8, jer to nije neophodno. Iskorišćene konstante se mogu promijeniti, ako je potrebna
drugačija rezolucija. Konstante H_pixels_across i V_pixels_down služe za odabir željene rezolucije piksela
na ekranu, a H_end_count i V_end_count se koriste za definisanje krajeva horizontalne i vertikalne podjele
ekrana. Ostale konstante služe za formiranje prednjih i zadnjih prilaza impulsima za sinhronizaciju.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
24
VGA_Controller generiše signale za horizontalnu i vertikalnu sinhronizaciju, horiz_sync_out i
vert_sync_out, koristeći 10-bitne brojače. Unutrašnji signal nazvan H_count je iskorišćen za brojanje
piksela u jednom horizontalnom redu, a unutrašnji signal V_Count broji redove piksela od vrha prema dnu
ekrana. Vrijednosti ovih brojača se mijenjaju brzinom ulaznog clock-a. Generisanje signala horiz_sync_out i
vert_sync_out se vrši između oblasti koje su u drugom poglavlju rada nazvane “prednji prilaz” i “zadnji
prilaz”.
Izlazni signali pixel_column i pixel_row su jednaki unutrašnjim signalima H_Count i V_Count. Signale
pixel_column i pixel_row koriste ostali moduli koji obavljaju svoje funkcije u kombinaciji sa
VGA_Controller-om, a pri tome koriste ove signale kao svoje ulaze. Signali pixel_column i pixel_row se
mogu koristiti za određivanje pozicije trenutno osvjetljavanog piksela, a mogu se upotrebiti i za sve ostale
radnje za čiju realizaciju su potrebni brojači.
Signali red_out, green_out i blue_out su RGB signali koji se zajedno sa signalima horiz_sync_out i
vert_sync_out dovode direktno do VGA konektora monitora. U toku skeniranja aktivnog dijela ekrana
signal video_on_out je postavljen na vrijednost ’1’ i tada se signali sa ulaza VGA_Controller-a, red, green i
blue prosljeđuju na izlaze entiteta, a to su red_out, green_out i blue_out. Signal video_on_out ima
vrijednost ’0’ u toku prelaska na početak linije piksela ili početak ekrana i tada su RGB signali isključeni, a
pikseli se ne prikazuju.
Simulacioni dijagrami rada VGA_Controller-a
Na Slikama 4.7 i 4.8 su prikazani Quartus II simulacioni dijagrami rada VGA_Controller-a. Simulacija na
Slici 4.7 je izvršena na intervalu od 1ms, a simulacija na Slici 4.8 pokazuje generisanje jednog signala za
vertikalnu sinhronizaciju nakon što je izbrojano 600 redova piksela. Obje simulacije potvrđuju da su izlazni
kanali za boje aktivni samo onda ako su prethodno bili stimulisani ulazi za RGB signale.
Slika 4.7 Simulacioni dijagram rada VGA_Controller-a
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
25
Slika 4.8 Simulacioni dijagram rada VGA_Controller-a na intervalu 15ms
4.2.2 Prikazivanje boja na ekranu
Da bi VGA_Controller ostvario funkciju prikazivanja RGB signala na ekranu, njegovi RGB ulazi moraju biti
stimulisani iz nekog spoljašnjeg izvora. VGA_Controller ima tri izlazna RGB signala, tako da se na monitoru
koji on pokreće može dobiti ukupno osam boja.
Kolo za stimulisanje VGA Kontrolera
Na Slici 4.9 je prikazan simbol entiteta RGB_Input koji generiše signale za pobuđivanje VGA_Controller-a.
Slika 4.9 Quartus II simbol RGB_Input-a
RGB_Input koristi svoj unutrašnji brojač da sa svakom promjenom ulaznog clock-a postavi nove
vrijednosti na svoje RGB izlaze. RGB_input je realizovan tako da svaki novi clock prouzrokuje promjenu
stanja izlaznih RGB signala i prikazivanje nove boje na ekranu. Entitet RGB_Input omogućuje prikazivanje
crvene, zelene i plave boje. Ovaj blok je aktivan samo u periodu dok je signal video_on na ulazu bloka
jednak ’1’.
Na Slici 4.10 je prikazana Quartus II simulacija RGB_Input-a. Na simulaciji se može vidjeti način na koji
se smjenjuju boje na izlazima RGB_ Input-a.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
26
Slika 4.10 Quartus II simulacija rada RGB_ Input-a
Aktiviranje VGA Kontrolera
Na Slici 4.11 je prikazan blok dijagram fajl projekta VGA_RGB_Input, koji objedinjuje funkcije
VGA_Controller-a i RGB_Input-a. Da bi se boje na ekranu smjenjivale frekvencijom od 1Hz, ulazni clock od
48MHz je pomoću djelitelja frekvencije podijeljen vrijednošću 48000000. Parametar za podjelu frekvencije
je deklarisan kao generic, tako da se umjesto frekvencije od 1Hz može izabrati neka druga frekvencija.
Slika 4.11 Blok dijagram fajl projekta VGA_RGB_Input
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
27
4.2.3 Skladištenje i prikazivanje slika
VGA Kontroler se može koristiti za prikazivanje slika na ekranu. Slika koja je odabrana za prikazivanje se
prethodno treba sačuvati u obliku koji omogućuje da se aktiviraju RGB ulazi VGA_Controller-a, a to je
matrica nula i jedinica. Za čuvanje slika se može koristiti memorija koja je ugrađena u FPGA kolo, ali za
dizajn koji zahtjeva skladištenje malog broja podataka su dovoljni nizovi. U radu je iskorišćena Slika 4.12.
Slika 4.12 Sačuvana crno-bijela slika
Memorisanje slike
Entitet Image_Storage ima funkciju skladištenja slike koja se može prikazati na ekranu. Na Slici 4.13,
prikazan je simbol entiteta Image_Storage.
Slika 4.13 Quartus II simbol Image_Storage-a
Za memorisanje jedne crno-bijele slike može se koristiti dvo-dimenzioni niz čije dimezije odgovaraju
dimenzijama slike. Redovi niza predstavljaju redove slike, a elementi redova niza predstavljaju piksele slike.
Za sliku dimenzija 64 x 64 piksela niz je deklarisan na sledeći način:
TYPE rom_type IS ARRAY (0 TO 63) OF STD_LOGIC_VECTOR(0 TO 63);
Da bi se sačuvala slika deklarisana je konstanta tipa rom_type, a konstanta je nazvana Stored_Image.
Slika je prethodno pomoću Matlab-a konvertovana u dvo-dimenzioni niz nula i jedinica. Kreiran je fajl
image_2_binary.m koji učitava sliku, konvertuje sliku i upisuje podatke dobijene konverzijom u tekstualni
fajl. Za otvaranje dobijenog tekstualnog fajla je preporučljivo koristiti WordPad.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
28
CONSTANT Stored_Image : rom_type := ( "1111111111111111111111111111111111111111111111111111111111111111", "1111111111111111111111111111111111111111111111111111111111111111", "1111111111111111111111111111111111111111111111111111111111111111", "1111111111111111111111111111111111111111111111111111111111111111", "1111111111111111111111111111111111111111111100000011111111111111", "1111111111111111111111111111111111111111000000000000111111111111", "1111111111111111111111111111111111111100000000000000000111111111", "1111111111111111111111111111111111111000000000000000000011111111", "1111111111111111111111111111111111100000000000000000000000111111", "1111111111111111111111111111111110000000000000000000000000011111", "1111111111111111111111111111110000000000000000000000000000011111", "1111111111111111111111111111000000000000000000011111000000001111", "1111111111111111111111111110000000000000000111111111010000000111", "1111111111111111111111111000000000000000001111111111111100000011", "1111111111111111111111100000000000000000011111111111111111000011", "1111111111111111111110000000000000000001111111111111111111110011", "1111111111111111111000000000000000000011111111111111111111111111", "1111111111111111110000000000000000001111111111111111111111111111", "1111111111111110000000000000000000111111111111111111111111111111", "1111111111111000000000000000001011111111111111111111111111111111", "1111111111100000000000000000111111111111111111111111111111111111", "1111111110000000000000000001111111111111111111111111111111111111", "1111111100000000000000000111111111111111111111111111111111111111", "1111110000000000000001111111111111010111111111111111111111111111", "1111100000000000000011111011010011000011111111111111111111111111", "1111100000000000001110000000000000000000001111111111111111111111", "1111100000000000001110000000100000000000000111111111111111111111", "1111000000000000111000000011111111111110000101111111111111111111", "1111000000000001111000000011111111111111100000111111111111111111", "1110000000000011000000111111101111101111110100001111111111111111", "1110000000000111000001111011100111001111111111000011111111111111", "1110000000001110000001110000000000000111111111100001111111111111", "1110000000011110000000000000000000000110111111111000111111111111", "1110000001111100000000000000000000000000111111111000111111111111", "1110000011110000000000000000000000000000111101111100111111111111", "1110001111110000000000000000000000000000010001111111111111111111", "1111111111110000000000000000000000000000000011111111111111111111", "1111111111100000000000000001100000000000000011111111111111111111", "1111111111000000000000000001100000000000000001001111111111111111", "1111111111000001100000000000100000001000000000001111111111111111", "1111111111000111110000000000000000011100000000001111111111111111", "1111111110001111110000000000000000011111000000001111111111111111", "1111111110001111110000000000000000011111100000000001111111111111", "1111111100011111110000000000000000011111110000000001111111111111", "1111111100011111110000000000000000111111110000000001111111111111", "1111111000111111110000000000000000111111110000000111111111111111", "1111111001111111110000000000000000111111100000011111111111111111", "1111110011111111110000000000000001111111000000111111111111111111", "1111110011111111111000000000000001111110000000111111111111111111", "1111110000001111111100000000000011111100000001111111111111111111", "1111110000000011111110000000000111111000000001111111111111111111", "1111111000000001111011000000000111100000001111111111111111111111", "1111111111011000000001111111111000000000011111111111111111111111", "1111111111111100000000110000100000000000011111111111111111111111", "1111111111111111000000000000000000000000011111111111111111111111", "1111111111111111000000000000000000000110011111111111111111111111", "1111111111111111110000000000001100000111111111111111111111111111", "1111111111111111111100011000001111000111111111111111111111111111", "1111111111111111111101011100011111100111111111111111111111111111", "1111111111111111111101011100011111110111111111111111111111111111", "1111111111111111111111111110011111111111111111111111111111111111", "1111111111111111111111111111111111111111111111111111111111111111", "1111111111111111111111111111111111111111111111111111111111111111",
"1111111111111111111111111111111111111111111111111111111111111111" );
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
29
Svaki bit konstante Stored_Image predstavlja po jedan piksel slike. Pošto je slika dimenzija 64 x 64
piksela za pristupanje redovima i kolonama slike su potrebni 6-bitni signali i oni se koriste za pristupanje
pikselima. Signali za adresiranje piksela su dobijeni iz ulaznih signala entiteta Image_Storage, a to su
pixel_row i pixel_column.
Izlazni signal entiteta Stored_Image je storage_bit i on je tipa STD_LOGIC. Signal storage_bit prenosi
svaki bit iz konstante Stored_Image do bloka za prikazivanje piksela na ekranu, tj. do VGA_Controller-a.
Na Slici 4.14 je prikazana Quartus II simulacija Stored_Image-a. Simulacija prikazuje slanje 25-og reda
slike koja je sačuvana u Stored_Image-u. Za slanje jednog reda iz slike potrebne su 64 promjene signala koji
broji kolone piksela na ekranu.
Slika 4.14 Quartus II simulacija rada Stored_Image-a
Učitavanje i prikazivanje slike
Projekat Display_Image_Storage je napravljen da bi se sačuvana slika prikazala na ekranu. Na Slici 4.15
je prikazan blok dijagram fajl projekta Display_Image_Storage koji povezuje entitete VGA_Controller i
Image_Storage. Na Slici 4.15 se vidi da je povezivanje ostvareno tako da je za prikazivanje slike iskorišćena
žuta boja, a simulacioni dijagram na Slici 4.16 to potvrđuje.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
30
Slika 4.15 Blok dijagram fajl projekta Display_Image_Storage
Na simulacionom dijagramu na Slici 4.16 se može vidjeti da je blue_out izlaz VGA_Controller-a
neaktivan u toku trajanja cijelog frejma, za razliku od red_out i green_out koji su, da bi se na ekranu dobila
žuta boja, aktivirani u toku cijelog aktivnog dijela frejma.
Slika 4.16 Quartus II simulacija rada Display_Image_Storage-a
Sačuvana slika malih dimenzija se veoma lako na ekranu može prikazati u većim dimenzijama. To se
može postići tako što se jedan isti element slike iz Image_Storage-a šalje u toku prikazivanja više redova i
kolona piksela na ekranu. Na ovaj način se štede memorijski resursi, a dobija se prikaz slike u većim
dimenzijama od onih u kojima je sačuvana.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
31
4.2.4 Realizacija ROM memorije za karaktere
Prikazivanje teksta na ekranu je jedna od mogućnosti koju treba da podrži svaki VGA Kontroler. Kod
pristupa koji je realizovan u ovom radu, karakteri su posmatrani kao blokovi piksela i napravljene su šeme
piksela koje obrazuju font koji se koristi za prikazivanje karaktera. Odabrano je da se font sastoji od šema
koje su dimenzija 8 x 8 piksela. U radu VGA Kontrolera se može koristiti memorija za skladištenje podataka
koje treba prikazati na ekranu. Šeme karaktera su sačuvane u RAM memoriji implementiranoj unutar
FPGA čipa. Šema svakog karaktera zahtjeva 8 x 8 bita memorije. Font se sastoji od ukupno 64 karaktera, što
znači da je za skladištenje fonta u memoriji potrebno 4096 bita RAM memorije. Za inicijalizaciju sadržaja
RAM-a tokom download-a iskorišćen je fajl za inicijalizaciju memorije, *. mif, i može se reći da je na ovaj
način napravljena font ROM memorija.
ROM memorija za karaktere
Prilikom realizacije memorije za karaktere, prvo je kreiran fajl karakteri.mif. Mif fajl može biti kreiran
pomoću tekstualnog editora u Quartus-u ili drugih editora (npr. Notepad). Prilikom pravljenja fajla, u
zapisu se može koristiti bilo koja brojna osnova: decimalna, binarna, heksadecimalna i oktalna. Na Slici
4.17 je prikazan dio fajla karakteri.mif koji je iskorišćen u ovom radu. Depth je broj adresa (memorijskih
riječi) u RAM-u, a Width dužina magistrale podataka (broj bita po memorijskoj riječi). Memorijske adrese
su u mif fajlu poređane ispod riječi Begin, lijevo od ’ : ’ , a desno od memorijskih adresa su poređane
memorijske riječi.
Mif fajl se u Quartus-u može napraviti i izborom opcije File | New | Other Files | Memory Initialization
File.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
32
Slika 4.17 MIF fajl karakteri.mif
Entitet Character_ROM_Memory ima funkciju učitavanja podataka iz ROM memorije karaktera i slanja
podataka o izgledu karaktera koje treba prikazati prema VGA_Controller-u. Font ROM sadrži podatke o
fontu karaktera, a VGA_Controller te podatke čita i vrši prenos RGB signala prema monitoru. Na Slici 4.18
je prikazan simbol entiteta Character_ROM_Memory.
Slika 4.18 Quartus II simbol ROM memorije za karaktere
Entitet Character_ROM_Memory je realizovan pomoću komponente lpm_rom iz biblioteke lpm čiji
simbol je prikazan na Slici 4.19. LPM (Library of Parametrized Modules) sadrži 25 funkcija, među kojima je i
lpm_rom (Parametrized Read-Only Memory) koja može biti korišćena kao sinhrona i asinhrona read-only
memorija.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
33
Slika 4.19 Quartus II simbol komponente lpm_rom
U tabeli 4.3 je dat opis portova komponente lpm_rom, a u tabeli 4.4 je dat opis parametara ove
komponente.
Ime porta Tip Potreban Opis
address[] Input Da Adresni ulaz u memoriju. Ovaj port je širine LPM_WIDTHAD.
inclock Input Ne Clock za ulazne registre. Port address[] je sinhron (registered) kada je port inclock povezan, i asinhron (unregistered) kada je port inclock nepovezan.
outclock Input Ne Clock za izlazne registre. Odziv adresiranog sadržaja memorije q[] je sinhron kada je port outclock povezan, i asinhron kada nije povezan.
memenab Input Ne Memory enable ulaz. Visok nivo = izlaz za podatke na q[]. Nizak nivo = visoko-impedansni izlazi.
q[] Output Da Izlaz memorije. Ovaj port je širine LPM_WIDTH.
Tabela 4.3 Portovi komponente lpm_rom
Ime parametra Potreban Vrijednost Opis
LPM_ADDRESS_CONTROL Ne "REGISTERED" "UNREGISTERED"
Kontroliše da li je port address[] registrovan. Podrazumjevana vrijednost je "REGISTERED’’.
LPM_FILE Da ’’ <ime fajla>’’ Ime MIF ili HEX fajla koji sadrži podatke za inicijalizaciju ROM-a.
LPM_NUMWORDS Ne Integer > 0 Generalno, ova vrijednost bi trebala biti (ali nije potrebno da bude) jednaka 2LPM_WIDTH-1<LPM_NUMWORDS≤2LPM_WIDTH. Podrazumjevana vrijednost je 2LPM_WIDTH.
LPM_OUTDATA Ne "REGISTERED" "UNREGISTERED"
Kontroliše da li je port q[] registrovan. Podrazumjevana vrijednost je "REGISTERED’’.
LPM_WIDTH Da Integer > 0 Širina porta q[].
LPM_WIDTHAD Da Integer > 0 Širina porta address[]. LPM_WIDTHAD bi trebao da bude (ali nije potrebno) jednak log2(LPM_NUMWORDS).
Tabela 4.4 Parametri komponente lpm_rom
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
34
Deklaracija entiteta Character_ROM_Memory je obavljena na sledeci način:
ENTITY Character_ROM_Memory IS PORT( clock : IN STD_LOGIC; character_address : IN STD_LOGIC_VECTOR(5 DOWNTO 0); symbol_row, symbol_column : IN STD_LOGIC_VECTOR(2 DOWNTO 0); rom_memory_output : OUT STD_LOGIC); END Character_ROM_Memory ;
Svako slovo, broj ili znak je slika na ekranu koja se dobija iz fonta čiji su elementi dimenzija 8 x 8 bita i
koji su smješteni u font ROM memoriji. U fajlu karakteri.mif svaki simbol je predstavljen kao osam
osmobitnih memorijskih riječi. Izgled svakog piksela koji treba prikazati na ekranu se direktno mapira u
memorijsku riječ, a svaka memorijska riječ ima svoju 9-bitnu memorijsku adresu.
Signal character_address predstavlja šest najviših bita iz 9-bitne memorijske adrese koji su zajednički za
adrese svih osam memorijskih riječi koje obrazuju jedan karakter. Ovaj signal služi za identifikaciju
karaktera.
Signal symbol_column se koristi za izbor bita s lijeva na desno u svakoj memorijskoj riječi u toku
prikazivanja jednog istog reda piksela na ekranu, tj. koristi se za identifikaciju kolone u šemi za karakter.
Vrijednost signala symbol_column se koristi prilikom izbora i upisivanja bita iz memorijske riječi u
rom_memory_output.
Signal symbol_row omogućuje biranje memorijskih lokacija koje pripadaju jednom istom karakteru iz
font ROM-a, tj. za identifikaciju reda u šemi karaktera. Ova vrijednost se mijenja kada se iscrtavanje ekrana
premješta u naredni red.
Izlazni signal ROM memorije je rom_memory_output i on se dovodi do bloka za generisanje RGB signala
tako da ’0’ iz šeme za karaktere na ekranu ima drugačiju predstavu od ’1’, tj. dodjeljuje joj se drugačija
boja.
Pristupanje ROM memoriji za karaktere
Za pristupanje podacima o izgledu karaktera koji treba prikazati na ekranu monitora
Character_ROM_Memory koristi princip zasnovan na dobijanju početne adrese karaktera u memoriji i
formiranju adresa memorijskih riječi konkatenacijom signala character_address i symbol_row . Ova dva
signala zajedno formiraju 9-bitnu memorijsku adresu riječi u memoriji . Na Slici 4.20 je prikazan način
pristupanja fontu karaktera pomoću ROM-a.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
35
Slika 4.20 Pristupanje fontu karaktera pomoću ROM-a
Karakter "A" će se generisati na ekranu korišćenjem sledećih osam memorijskih riječi koje su smještene
u ROM-u za karaktere:
ADRESE PODACI O FONTU 000001000: 00011000; 000001001: 00111100; 000001010: 01100110; 000001011: 01111110; 000001100: 01100110; 000001101: 01100110; 000001110: 01100110; 000001111: 00000000;
Sekvenca "000001" je zajednička za svih osam memorijskih riječi koje su dio šeme koja predstavlja
karakter "A", a tri najniža bita iz adrese imaju vrijednosti između "000" i "111" i oni identifikuju red u šemi.
Simulacioni dijagram rada ROM memorije
Quartus II simulacija (Slika 4.21) prikazuje slanje memorijskih riječi koje formiraju šemu za karakter "A".
Početna adresa u memoriji za karakter "A" je o“01“ i ta vrijednost je postavljena na character_address
ulaz ROM memorije, a na izlazu je dobijeno osam memorijskih riječi koje obrazuju karakter "A". Da bi se
poslala jedna memorijska riječ potrebno je 8 ciklusa ulaznog clock-a.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
36
Slika 4.21 Quartus II simulacija rada modula Character_ROM_Memory
Font i adrese karaktera
Font je napravljen od velikih slova, brojeva, znakova interpunkcije i još nekih simbola i prilikom
kompajliranja i programiranja se smješta u memoriju. Tabela 4.6 prikazuje sve simbole koji se mogu
generisati. Pored simbola su date početne adrese karaktera u oktalnoj formi, a radi se o šest najviših bita iz
adrese koji služe za identifikaciju karaktera. Na primjer, početna adresa karaktera "P" je 20.
Simbol Adresa Simbol Adresa Simbol Adresa Simbol Adresa
@ 00 P 20 Razmak 40 0 60
A 01 Q 21 ! 41 1 61
B 01 R 22 ’’ 42 2 62
C 03 S 23 # 43 3 63
D 04 T 24 $ 44 4 64
E 05 U 25 % 45 5 65
F 06 V 26 & 46 6 66
G 07 W 27 ’ 47 7 67
H 10 X 30 ( 50 8 70
I 11 Y 31 ) 51 9 71
J 12 Z 32 * 52 = 72
K 13 [ 33 + 53 ? 73
L 14 ↓ 34 , 54 : 74
M 15 ] 35 - 55 ¶ 75
N 16 ↑ 36 . 56 trougao 76
O 17 ← 37 / 57 kvadrat 77
Tabela 4.5 Adrese simbola u font ROM-u
4.2.5 Prikazivanje teksta na ekranu
VGA Kontroler se često koristi za prikazivanje teksta. Za prikazivanje teksta na ekranu je potrebno
povezati VGA Kontroler sa ROM memorijom za karaktere. Pored toga je potrebno realizovati kolo koje
određuje pozicije ispisivanja karaktera na ekranu i koje ROM memoriji upućuje adresu karaktera koji VGA
Kontroler treba da prikaže.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
37
Određivanje pozicija karaktera na ekranu
Pošto se ekran stalno osvježava, a slika se formira dok se snop pomijera preko ekrana, da bi se izabrao
karakter koji će biti prikazan na ekranu potrebno je koristiti druge blokove ili čak RAM memoriju unutar
FPGA čipa.
Entitet Char_Pos_And_Addr1 ima ulogu u prikazivanju stalnih tekstualnih natpisa na ekranu. Entitet
Char_Pos_And_Addr1 čuva pozicije karaktera na ekranu i njihove početne adrese u font ROM memoriji.
Ovaj blok na osnovu trenutnih koordinata piksela određuje na kojim pozicijama na ekranu će biti ispisani
karakteri. Na slici 4.22 je prikazan simbol entiteta Char_Pos_And_Addr1.
Slika 4.22 Quartus II simbol bloka Char_Pos_And_Addr1
Ispod je navedena deklaracija entiteta Char_Pos_And_Addr1.
ENTITY Char_Pos_And_Addr1 IS PORT( clock : IN STD_LOGIC; pixel_row,pixel_column : IN STD_LOGIC_VECTOR(9 DOWNTO 0); address_output : OUT STD_LOGIC_VECTOR(5 DOWNTO 0); symbol_row,symbol_column : OUT STD_LOGIC_VECTOR(2 DOWNTO 0)); END Char_Pos_And_Addr1;
Ovo kolo pamti pozicije karaktera na ekranu i prosljeđuje adrese karaktera prema font ROM-u. Ulazi
kola su brojači redova i kolona piksela, pixel_row i pixel_column. Ovaj blok omogućuje da se karakteri
ispisuju na ekranu u 12 redova i 40 kolona. Da bi se odredilo koji red i koja kolona na ekranu se trenutno
iscrtavaju koristi se šest najviših bita signala pixel_row i pixel_column. U cilju proširenja površine za
ispisivanje karaktera na ekranu, može se jednostavno izvršiti modifikacija ovog bloka.
Izlazni signal address_output predstavlja adresu karaktera koji treba prikazati i ovaj signal se dovodi do
character_address ulaza bloka Character_ROM_Memory.
Ovaj blok prosljeđuje tri najniža bita koji pripadaju signalima pixel_row i pixel_column ka bloku
Character_ROM_Memory koji ih koristi za biranje memorijskih lokacija iz font ROM-a i za izbor bita koji
se prosljeđuju iz memorijskih riječi prema VGA_Controller-u. Ovu funkciju blok obavlja preko svojih izlaza
symbol_row i symbol_column.
Da bi simboli koji se prikazuju na ekranu bili veći, svaki bit iz fonta, tj. iz memorijskih riječi se pridružuje
bloku od 2 x 2 piksela tako da jedan karakter zahtjeva 16 x 16 piksela. To je postignuto tako što je šest
najviših bita iz signala pixel_row iskorišćeno pri određivanju pozicije karaktera, jer se vrijednost ove
sekvence od šest bita uvećava za jedan nakon što je prikazano šesnaest redova na ekranu. Kada se
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
38
prikazivanje pomijeri u drugu oblast veličine 16 x 16 piksela odabira se druga memorijska lokacija kako bi
se mogao prikazati drugi karakter. Na ovaj način, na primjer, kod rezolucije 800 x 600 piksela i sa
maksimalnim iskorišćenjem površine ekrana pri prikazu, može se prikazati maksimalno 50 x 37 karaktera.
Prikazan je simulacioni dijagram rada bloka za slanje memorijske adrese (Slika 4.23). Početna adresa u
memoriji za jedan karakter se šalje u toku 16 ciklusa promjene signala za brojanje kolona piksela i tako se
memorisana šema jednog karaktera dimenzija 8 x 8 bita reprezentuje blokom piksela veličine 16 x 16.
Slika 4.23 Quartus II simulacioni dijagram rada bloka Char_Pos_And_Addr1
Prikazivanje karaktera
Blokovi VGA_Controller, Char_Pos_And_Addr1 i Character_ROM_Memory su sastavni dijelovi
projekta nazvanog Character_Display koji objedinjuje funkcije ova tri bloka. Blok dijagram projekta
Character_Display je prikazan na Slici 4.24. Ovaj projekat ima funkciju prikaza stalnih natpisa na ekranu.
VGA_Controller pristupa podacima font ROM-a koji je realizovan u vidu bloka Character_ROM_Memory, a
blok Char_Pos_And_Addr1 šalje memorijske adrese sa kojih treba pročitati memorijske riječi. Rad svakog
bloka se odvija u zavisnosti od koordinata trenutno prikazivanog piksela.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
39
Slika 4.24 Blok dijagram projekta Character_Display
4.2.6 Karakter Generator
Character_Generator je kolo koje ima funkciju prikazivanja karaktera koji se unose preko tastature
računara i karaktera čije se adrese dobijaju od nekog spoljašnjeg kola. Za realizaciju Character_Generator-a
je dizajnirano kolo String_Input (Slika 4.25) koje pruža dvije mogućnosti za unos karaktera. String_Input
ima generički parametar koji je tipa String i zahvaljujući tome omogućuje unos teksta sa tastature
računara. String_Input ima address_input ulaz preko koga od nekog drugog kola može da dobija adrese
karaktera koje treba prikazati. Kolo je dizajnirano tako da za oba načina unosa karaktera omogućuje
prikazivanje po 40 karaktera raspoređenih u dva reda, što znači da istovremeno može prikazati 80
karaktera.
Slika 4.25 Quartus II simbol String_Input-a
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
40
Kolo String_Input preko svog address_output izlaza prenosi adrese karaktera, tj. 6 bita koji služe za
identifikaciju karaktera, do ROM memorije. Ulazi kola su pixel_row i pixel_column, a kolo ih koristi da na
ekranu rasporedi karaktere na osnovu pozicija prikazivanih piksela. Izlazni signal input_length predstavlja
dužinu unešenog stringa.
Da bi se unešeni string pretvorio u niz početnih memorijskih adresa karaktera napisana je funkcija
String_To_Address. Argument ove funkcije je tipa String, a povratni tip podatka je Std_Logic_Vector.
FUNCTION String_To_Address (s : STRING) RETURN STD_LOGIC_VECTOR IS ......... END FUNCTION;
Funkcija String_To_Address formira niz od 40 adresa. Ako unešeni string sadrži više od 40 karaktera
funkcija uzima prvih 40 karaktera, a ako string sadrži manje od 40 karaktera vrši se dopunjavanje
sekvencama koje odgovaraju početnoj adresi karaktera ‘ ‘.
String_Input razdvaja sekvencu početnih adresa karaktera koju vraća funkcija na 40 pojedinačnih adresa
i šalje ih preko porta address_output. Jedna adresa se šalje u toku jednog ciklusa ulaznog clock-a i
karakteri se raspoređuju u 2 reda po 20 karaktera. Simulacija na Slici 4.26 prikazuje prenos 20 adresa
karaktera iz stringa koji je generic parametar.
Slika 4.26 Quartus II simulacioni dijagram rada String_Input-a
Ulaz address_input je port koji je uveden da bi se kolo Character_Generator-a moglo povezati sa nekim
drugim kolom. Kolo preko ovog ulaza može da dobije 40 adresa karaktera, a svaka adresa se uzima sa
uzlaznom ivicom clock-a. Dobijene adrese se prosljeđuju na port address_output, ali tako da se karakteri
raspoređuju u dva reda i prikazuju na definisanim pozicijama na ekranu. Simulacija (Slika 4.27) pokazuje
prenos prvih 20 oktalnih adresa sa ulaza kola prema izlazu kola. Adrese se prenose samo u toku
prikazivanja određenih redova i kolona piksela, a 20 karaktera se prikazuje u jednom redu na ekranu.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
41
Slika 4.27 Quartus II simulacioni dijagram rada String_Input-a - slanje adresa sa ulaza kola
Slika 4.28 Blok dijagram Character_Generator-a
4.2.7 Prikazivanje animacije i upravljanje objektom prikazanim na ekranu
U prethodnim dijelovima rada su predstavljeni načini upotrebe VGA Kontrolera za prikazivanje teksta.
VGA Kontroler se može koristiti za realizaciju znatno složenijih zadataka, kao što su prikazivanje pokretnih
objekata i kontrolisanje kretanja objekata prikazanih na ekranu. Ovaj rad sadrži realizaciju takvih
zadataka koji VGA Kontroleru daju još veću ulogu. Ostvarena je realizacija prikaza kretanja i korisniku je
omogućeno da kontroliše pokrete objekta prikazanog na ekranu pomoću tastera na UP3 ploči.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
42
Realizacija animiranog objekta i upravljanje objektom
Slika 4.29 Quartus II simbol bloka Wall_Racket_And_Ball
Da bi se realizovala arhitektura koja ima funkciju prikazivanja objekta u pokretu i upravljanja objektom,
realizovan je projekat Wall_Racket_And_Ball. Entitet Wall_Racket_And_Ball ima funkciju prikazivanja zida,
reketa i lopte na ekranu. Ovaj blok od VGA_Controller-a dobija signal vertikalne sinhronizacije vert_sync,
zatim signal video_on koji ima vrijednost ‘1’ u toku obrade aktivnog dijela ekrana i signale pixel_row i
pixel_column pomoću kojih dobija koordinate trenutno prikazivanih piksela. Zid je realizovan kao uspravna
crvena linija na ekranu. Reket je realizovan kao objekat plave boje koji se može pomijerati dolje ili gore i to
u zavisnosti od vrijednosti signala pbtn0 i pbtn1. Signali pbtn0 i pbtn1 su iskorišćeni za provjeru stanja
tastera sw4 i sw5 na UP3 ploči. Lopta je realizovana kao zeleni objekat koji se na ekranu kreće
horizontalno. Granica kretanja lopte može biti zid, a može biti i reket ukoliko je pritiskom tastera
postavljen na putanju lopte. Ispod je prikazana deklaracija opisanog entiteta.
ENTITY Wall_Racket_And_Ball IS PORT ( clock :IN STD_LOGIC; pbtn0 :IN STD_LOGIC; pbtn1 :IN STD_LOGIC; vert_sync :IN STD_LOGIC; video_on :IN STD_LOGIC; pixel_row, pixel_column : IN STD_LOGIC_VECTOR(9 DOWNTO 0); red_out, green_out, blue_out : OUT STD_LOGIC ); END Wall_Racket_And_Ball; Wall_Racket_And_Ball na svom izlazu daje RGB signale koji se dovode na RGB ulaze VGA_Controller -a.
Za prikazivanje zida su iskorišćene dvije INTEGER konstante Wall_X_Left i Wall_X_Right koje definišu
poziciju lijeve i desne ivice zida na ekranu. Da bi se promijenila pozicija zida, potrebno je promijeniti ove
dvije konstante.
CONSTANT Wall_X_Left : INTEGER :=700 ; CONSTANT Wall_X_Right : INTEGER :=720 ;
Reket je dizajniran tako da se može pomijerati gore i dolje. Horizontalne ivice reketa su konstantne, a
vertikalne ivice imaju promjenljivu poziciju.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
43
Za realizaciju reketa u entitetu Wall_Racket_And_Ball, iskorišćen je PROCESS koji se izvršava sa svakom
promjenom signala pbtn0 i pbtn1, što znači da se reket pomijera pritiskom tastera na ploči i to ako je signal
vertikalne sinhronizacije vert_sync jednak '1'.
PROCESS ( Racket_Y_Temp_Pos,Racket_Y_Down,Racket_Y_Up,vert_sync,pbtn0,pbtn1) BEGIN Racket_Y_Next_Pos <= Racket_Y_Temp_Pos ; IF vert_sync = '1' THEN IF pbtn0 = '0' AND (Racket_Y_Up < Racket_Y_Size) THEN -- Pomijeranje reketa dolje Racket_Y_Next_Pos <= Racket_Y_Temp_Pos + Racket_Movement; ELSIF pbtn1 = '0' AND (Racket_Y_Up > Racket_Y_Size) THEN -- Pomijeranje reketa gore Racket_Y_Next_Pos <= Racket_Y_Temp_Pos - Racket_Movement ; END IF; END IF; END PROCESS ;
Konstanta Racket_Y_Size određuje dužinu reketa. Racket_Y_Up i Racket_Y_ Down su signali koji
predstavljaju gornju i donju granicu reketa. Pošto je položaj reketa promjenljiv, uveden je signal
Racket_Y_Temp_Pos koji čuva trenutnu poziciju reketa. Kada su tasteri na UP3 ploči pritisnuti oni daju
nizak naponski nivo koji odgovara logičkoj ‘0’. Kada je signal pbtn0 jednak '0', reket se pomijera dolje, a
kada je signal pbtn1 jednak '0', reket se prikazuje u gornjem dijelu ekrana. Za definisanje pomjeraja reketa
prilikom pritiska tastera iskorišćena je konstanta Racket_Movement.
Dizajn lopte je složeniji od dizajna reketa, jer logika lopte zahtjeva realizaciju prikaza objekta u stalnom
pokretu, kao i prikaz promjene smjera i odbijanja od objekte. Da bi se realizovao prikaz objekta koji se
konstantno kreće potrebno je koristiti signale koji čuvaju trenutne x i y koordinate centra pokretnog
objekta. Lopta je dizajnirana tako da se kreće horizontalno i da mjenja svoj smjer prilikom udara o zid ili o
reket. U okviru arhitekture enititeta Wall_Racket_And_Ball kreirana su dva procesa za prikazivanje lopte na
ekranu: Ball_Activation i Ball_Moving.
Ball_Activation: PROCESS (X_Position_Of_Ball, Y_Position_Of_Ball) BEGIN -- Ball_Active ='1' kada se lopta prikazuje IF ('0' & X_Position_Of_Ball <= pixel_column + Size_Of_Ball) AND (X_Position_Of_Ball + Size_Of_Ball >= '0' & pixel_column) AND ('0' & Y_Position_Of_Ball <= v_count+ Size_Of_Ball) AND (Y_Position_Of_Ball + Size_Of_Ball >= '0' & pixel_row) THEN Ball_Active <= '1'; ELSE Ball_Active <= '0'; END IF; END PROCESS Ball_Activation;
Ball_Activation je PROCESS koji postavlja signal Ball_Active na vrijednost '1' kada je u toku iscrtavanja ekrana potrebno prikazati loptu. Size_Of_Ball je signal koji je odgovoran za veličinu lopte. Prikazivanje
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
44
lopte se vrši u zavisnosti od koordinata trenutno prikazivanog piksela, veličine lopte i signala X_Position_Of_Ball i Y_Position_Of_Ball koji čuvaju trenutne koordinate centra lopte. Ball_Moving: PROCESS BEGIN -- Lopta se pomijera jednom u toku svake Vertikalne Sinhronizacije WAIT UNTIL vert_sync'EVENT AND vert_sync = '1'; -- Lopta se odbija od zid ili od reket -- Lopta se kreće u lijevo IF ('0' & X_Position_Of_Ball) >= Barrier_For_Ball - Size_Of_Ball THEN X_Movement_Of_Ball <= N_Speed_Of_Ball; END IF; -- Lopta se kreće u desno IF X_Position_Of_Ball <= Size_Of_Ball THEN X_Movement_Of_Ball <= P_Speed_Of_Ball; END IF; -- Računanje nove X-pozicije lopte X_Position_Of_Ball <= X_Position_Of_Ball + X_Movement_Of_Ball ; END PROCESS Ball_Moving;
Ball_Moving je PROCESS koji pomijera loptu jednom u toku svake vertikalne sinhronizacije i kontroliše
odbijanja lopte od postavljene barijere. Ovaj proces računa novu horizontalnu poziciju lopte tako što
određuje vrijednost signala X_Position_Of_Ball, a ova vrijednost se računa sa svakom vertikalnom
sinhronizacijom. Računanje u toku svake vertikalne sinhronizacije se vrši da bi se na ekranu ostvario prikaz
kretanja. Signal X_Movement_Of_Ball, na osnovu konstantnih vrijednosti P_Speed_Of_Ball i
N_Speed_Of_Ball, usmjerava loptu na lijevu ili desnu stranu. Kada se lopta kreće u desno koristi se
vrijednost P_Speed_Of_Ball, koja predstavlja pozitivnu brzinu lopte, a kada se kreće u lijevo koristi se
vrijednost N_Speed_Of_Ball, koja je negativna brzina lopte. Lopta može promijeniti smjer nakon odbijanja
od lijeve ivice ekrana, od zida, ili od reketa. Lopta se kreće u lijevo nakon udara u barijeru (zid ili reket), a
Barrier_For_Ball je signal koji određuje granicu do koje će se lopta kretati, tj. barijeru do koje se lopta kreće
prije odbijanja. Kada se lopta kreće u desno vrši se provjera na kojem mjestu je postavljena barijera.
Ukoliko reket promaši loptu, lopta nastavlja da se kreće do zida i odbija se. Lopta je dizajnirana tako da se
besprekidno kreće i odbija od postavljene barijere.
U kodu datom ispod se može vidjeti da je granica za kretanje lopte vrijednost koja odgovara lijevoj ivici
reketa, ako je reket podignut, odnosno lijevoj ivici zida, ako je reket spušten.
IF (Racket_Y_Up < 5) THEN Barrier_For_Ball<= CONV_STD_LOGIC_VECTOR(Racket_X_Left,10); ELSE Barrier_For_Ball<= CONV_STD_LOGIC_VECTOR(Wall_X_Left,10); END IF;
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
45
Simulacioni dijagram entiteta Wall_Racket_And_Ball
Na Slici 4.30 je prikazana Quartus II simulacija entiteta Wall_Racket_And_Ball. Simulacija pokazuje da
je zid crvene boje, jer se 710. kolona piksela na ekranu nalazi između ivica zida. Ako se prikazuje 50. red
piksela na ekranu, a prethodno je pritisnut taster za pomijeranje reketa prema dolje, kanal za plavu boju
reketa je neaktivan jer se tada reket ne prikazuje u 50. redu piksela. Reket se prikazuje u 50. redu piksela
ako je signal pbtn1 prethodno postavljen na ’0’, jer je tada reket u gornjem dijelu ekrana. Kanal za zelenu
boju je aktivan u toku prikazivanja lopte.
Slika 4.30 Quartus II simulacioni dijagram rada bloka Wall_Racket_And_Ball
Povezivanje sa VGA Kontrolerom i prikazivanje objekata na ekranu
Projekat VGA_Animation (Slika 4.31) povezuje VGA_Controller koji je sinhronizaciono i RGB kolo sa
kolom Wall_Racket_And_Ball.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
46
Slika 4.31 Blok dijagram projekta VGA_Animation
Slika 4.32 Quartus II simulacija projekta VGA_Animation
Simulacija (Slika 4.32) pokazuje da, ako se pritiskaju tasteri na UP3 ploči, postoje promjene signala
blue_out, jer dolazi do promjene položaja reketa. Signal green_out se koristi za prikazivanje lopte. Lopta
se pomijera jednom u toku jednog signala za vertikalnu sinhronizaciju. Kanal za crvenu boju, tj. signal
red_out je najduže aktivan, jer se koristi za prikazivanje zida čiji se dijelovi nalaze u svim redovima
aktivnog dijela ekrana.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
47
4.2.8 Istovremeno prikazivanje animacije i teksta
Slika 4.33 Blok dijagram projekta VGA_Anim_And_Char_Disp
Projekat VGA_Animation je proširen dijelom za prikazivanje teksta, što znači da su animacija,
upravljanje objektom i prikazivanje teksta ostvareni istovremeno. Napravljen je projekat
VGA_Anim_And_Char_Disp (Slika 4.33 ) koji objedinjuje entitete VGA_Controller, Wall_Racket_And_Ball,
Character_ROM_Memory i Char_Pos_And_Addr2.
Entitet Char_Pos_And_Addr2 ima funkciju konstantnog tekstualnog ispisa na ekranu. Ovaj entitet
prema bloku font ROM memorije, tj. bloku Character_ROM_Memory šalje memorijske adrese karaktera
koji su iskorišćeni za ispis riječi “VGA KONTROLER”, a pored toga određuje pozicije karaktera na ekranu.
Izlaz ROM memorije stimuliše kanal za crvenu boju VGA_Controller-a.
Char_Pos_And_Addr2 je iskorišćen i za prikazivanje zida na ekranu, i upotrebljen je poslednji simbol iz
fajla karakteri.mif koji ima oblik kvadrata. Ovo je urađeno zbog toga što ulazu VGA_Controller-a za crvenu
boju ne mogu biti istovremeno dodjeljena dva različita izvora koja ga pobuđuju, a to važi za sve RGB ulaze
VGA_Controller-a. Jednostavno, ovo znači da jednom signalu ne mogu biti istovremeno dodjeljene dvije
različite vrijednosti.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
48
Data je Quartus II simulacija rada projekta VGA_Anim_And_Char_Disp ( Slika 4.34).
Slika 4.34 Quartus II simulacija rada projekta VGA_Anim_And_Char_Disp
4.2.9 Pregled utrošenih resursa za realizaciju u FPGA tehnologiji
Dat je pregled iskorišćenih resursa upotrebljenog EP1C6Q240C8 FPGA čipa koji posjeduje ukupno 5980
Logičkih Elemenata.
Slika 4.35 Pregled logičkih resursa za realizaciju osnovnih kola iz rada
0 100 200 300 400 500
LogičkiElementi
Wall_Racket_And_Ball
String_Input
Char_Pos_And_Addr2
Char_Pos_And_Addr1
Character_ROM_Memory
Image_Storage
RGB_Input
VGA_Controller
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
49
Slika 4.36 Pregled logičkih resursa za realizaciju kola većeg stepena integracije
Za realizaciju ROM memorije za karaktere je iskorišćeno 4096 bita, što predstavlja 4% ukupnih
memorijskih resursa EP1C6Q240C8 FPGA čipa.
0 100 200 300 400 500 600
LogičkiElementi
VGA_Anim_And_Char_Disp
VGA_Animation
Character_Generator
Character_Display
Display_Image_Storage
VGA_RGB_Input
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
50
5 Rezultati testiranja predloženog rješenja
Realizovana rješenja koja su opisana u prethodnom poglavlju su eksperimentalno testirana pomoću
UP3-1C6 ploče i VGA monitora. Ovo poglavlje sadrži uputstva za testiranje i rezultate obavljenih testiranja.
Pri upotrebi VGA_Controller-a, potrebno je izvršiti dodjelu odgovarajućih pinova čipa EP1C6Q240C8 na
UP3 ploči. Potrebni pinovi su povezani sa VGA konektorom na UP3 ploči i ne mogu se mijenjati. Način na
koji treba ostvariti vezu sa pinovima je prikazan u Tabeli 5.1.
Signal VGA_Controller-a Redni broj FPGA pina
clock 29
red_out 228
green_out 122
blue_out 170
vert_sync_out 226
horiz_sync_out 227
Tabela 5.1 Dodjela FPGA pinova za VGA_Controller
Da bi se tasteri na UP3 ploči povezali sa dizajnom, neophodno je ostvariti dodjelu pinova koja je
navedena u Tabeli 5.2.
Rezultati eksperimentalne verifikacije dizajniranih kola su dati na slikama.
Taster Broj FPGA pina
sw4 48
sw5 49
sw6 57
sw7 62
Tabela 5.2 FPGA pinovi za tastere
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
51
Slika 5.1 Eksperimentalna oprema i testiranje projekta VGA_RGB_Input
Slika 5.2 Rezultat testiranja projekta Display_Image_Storage
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
52
Slika 5.3 a) Testiranje projekta Character_Display pomoću UP3-1C6 ploče i VGA monitora; b) Rezultat testiranja Character_Display-a
Slika 5.4 Testiranje projekta Character_Generator
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
53
Slika 5.5 Prikaz eksperimentalne opreme i testiranje projekta VGA_Animation
Slika 5.6 Rezultati testiranja projekta VGA_Anim_And_Char_Disp
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
54
6 Zaključak
Istraživanje koje je obavljeno u okviru ovog rada je bilo veoma interesantno i donijelo je mnogo novih
ideja. Prvi cilj rada je bila realizacija VGA Kontrolera. Njegova realizacija je omogućila postavljanje novih
zadataka kao što su prikazivanje slika, teksta i animacija. Memorijski resursi FPGA čipa su omogućili
realizaciju ROM memorije za karaktere koja je iskorišćena u svim kolima dizajniranim za prikazivanje
teksta. Najveći poduhvat u segmentu prikazivanja teksta je realizacija Karakter Generator-a. Projekat
VGA_Animation je ostvario ciljeve prikazivanja animiranih objekata i upravljanja kretanjem objekata.
FPGA tehnologija je sasvim pogodna za realizaciju digitalnih kola za prikazivanje video slike. Upotreba
FPGA čipa sa većim brojem pinova za RGB signale omogućuje prikaz mnogo velikog broja boja na ekranu,
kao i njihovih različitih nijansi.
Sva data rješenja su dizajnirana u VHDL-u koji zajedno sa FPGA implementacionom platformom daje
odlične mogućnosti dizajniranja i implementacije digitalnih kola. Testiranje dizajniranih kola je obavljeno u
Laboratoriji za primijenjenu elektroniku na Elektrotehničkom fakultetu u Podgorici.
Postoje mnoge mogućnosti za proširenje ovog rada. U radu je objašnjeno na koji način se može
promijeniti rezolucija piksela na ekranu. Budući rad treba da obuhvati prikazivanje mnogo složenijih
objekata, jer memorijski resursi to omogućuju. Nastavak rada treba da donese i ostvarivanje složenije
interakcije između prikazanih objekata. Jedna od mogućnosti u daljem radu je povezivanje tastature sa
PS/2 Portom na UP3-1C6 ploči, što se može iskoristiti za upravljanje kretanjem objekata prikazanih na
ekranu pomoću tastature. Unapređenje rada može da ide u pravcu kreiranja prave video igre.
Uz male dodatke i izmjene, predstavljeni dizajn se može implementirati na nekoj drugoj razvojnoj ploči,
kao što je DE2-70. Upotrebom Audio izlaza i povezivanjem sa zvučnikom, ovo bi omogućilo proširenje
dizajna uvođenjem zvukova. Audio ulaz omogućuje vizuelizaciju signala na VGA monitoru. Podaci koje
treba prikazati na VGA monitoru bi se mogli dobijati preko Ethernet Port-a ili preko Video ulaza sa kojeg se
mogu preuzimati podaci od video kamere.
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
55
7 Prilog
Prilog radu je CD koji sadrži:
• Elektronsku verziju rada
• Fotografije i video snimke eksperimentalne verifikacije
• Izvorne kodove
Saša Knežević VGA KONTROLER U FPGA TEHNOLOGIJI
56
8 Literatura
[1] http://en.wikipedia.org/wiki/Video_Graphics_Array
[2] http://www-mtl.mit.edu/Courses/6.111/labkit/vga.shtml
[3] Clive "Max" Maxfield, “FPGAs: Instant Access”, Newnes, 2008.
[4] Radovan D. Stojanovic, “Automatizovano Projektovanje Digitalnih Sistema (VHDL i FPGA)”,
TEMPUS CD-40017-2005 Edition, 2008.
[5] System Level Solutions,” UP3-1C6 Education Kit- Reference Manual,Cyclone Edition”, System Level
Solutions Inc., 2004-2005.
[6] Weng Fook Lee,”VHDL Coding and Logic Synthesis with Synopsys”, Academic Press,2000.
[7] James O. Hablen, Tyson S. Hall, Michael D Furman, "Rapid Prototyping of Digital Systems- SOPC
Edition", Springer Science and Business Media, LLC, 2008.
[8] Altera, ”LPM Quick Reference Guide”, Altera Corporation,1996.
[9] Pong P. Chu, “FPGA prototyping by VHDL examples: Xilinx Spartan-3 Version”, John Wiley & Sons,
Inc.,2008.
[10]Volnei A. Pedroni,”Circuit design with VHDL”, Massachusetts Institute of Technology,2004.
[11] http://www.altera.com/