Lastnosti dokumenta
- Naslov
- Preprosta grafična kartica
- Del
- -
- Datum vsebine
- 28. 01. 2008
- Original
- Preprosta grafična kartica
- Vrsta
- seminarska naloga
- Jezik
- slovenščina
- Različica
- 1.0
- Ustanova
- Fakulteta za računalništvo in informatiko, Univerza v Ljubljani
- Študij
- Računalništvo in informatika, Logika in sistemi, 5. letnik
- Predmet
- Programirni logični sistemi
- Mentor
- doc. dr. Patricio Bulić
- Avtor
- Tine Lesjak, Borut Lesjak, Janez Cergolj
- Ocena
- 10 od 1-10
Priloge
- izvorna_koda.zip
- Izvorna koda vezja v VHDL-ju.
Uvod
Seminarska naloga je namenjena boljšemu spoznavanju strojne opreme, predvsem njenemu obnašanju in programiranju. Za nalogo smo si zadali izdelati zelo preprosto grafično kartico, ki zna na zaslon narisati daljico med dvema točkama.
Lastnosti
Pri snovanju in preizkušanju vezja smo uporabljali Xilinx ISE razvojno okolje in Xilinx ploščo s FPGA čipom Spartan-3E.
- Za daljico sta lahko podani katerikoli dve točki (v 2 dimenzionalnem koordinatnem sistemu).
- Točki se lahko vneseta neposredno prek tipkovnice, priključene na PS/2 priključek, ali prek serijskih vrat (RS232).
- Za daljico se vnese tudi barva - ima lahko 8 osnovnih barv.
- Zaslon se na vezje priključi prek standardnega VGA priključka.
Zgradba
Shema 1: Zelo poenostavljena shema vezja z osnovnimi funkcionalnostmi.
"VGA Controller" prikazuje poseben krmilnik, ki skrbi za komunikacijo z monitorjem po VESA standardu. Omogočena je samo osnovna (VGA) resolucija 640 x 480 pri osveževanju 60 Hz.
"UART Controller" skrbi za serijsko asinhrono komunikacijo po RS232 standardu z zunanjo napravo (računalnikom). Terminalski program za komunikacijo na računalniku je treba nastaviti na hitrost 115.200 bitov na sekundo.
V izvorni kodi sicer lahko generic baudrate v modulu gc_top.vhd nastavite tako, da bo znal UART krmilnik komunicirati tudi z drugimi hitrostmi:
baudrate | Hitrost |
---|---|
"00" | 115.200 b/s |
"01" | 19.200 b/s |
"10" | 9.600 b/s |
"11" | 4.800 b/s |
"PS/2 Controller" skrbi za komunikacijo s tipkovnico.
V izvorni kodi z genericom ps2_use v modulu gc_top.vhd nastavite, kateri vmesnik boste uporabljali za vnos podatkov (hkrati lahko uporabite samo en vmesnik):
ps2_use | Vmesnik v uporabi |
---|---|
'0' | RS232 |
'1' | PS/2 |
Modul "Graphics Processing Unit" skrbi za risanje daljice. Modul je sestavljen iz dekoderja podatkov in iz grafične krmilne enote.
Grafična krmilna enota
Pri risanju daljice uporabljamo Bresenhamov postopek, s katerim se lahko izognemo operaciji množenja (z izjemo množenja z 2).
Diagram 1: Diagram poteka algoritma Bresenhamovega postopka.
Diagram 2: Diagram stanj Bresenhamovega postopka v vezju.
Navodila za uporabo
- Povežite računalnik in Xilinx razvojno ploščo s "serijskim" kablom ali priključite tipkovnico na PS/2 priključek na plošči, odvisno od tega, kateri vmesnik ste nastavili v izvorni kodi.
- Priključite monitor na VGA priključek na plošči.
- Priključite električno napajanje na ploščo in vklopite vezje s stikalom.
- Z uporabo programskega razvojnega okolja Xilinx ISE prevedite izvorno kodo in jo "naložite" na FPGA čip.
- Z uporabo štirih stikal na plošči določite, katere podatke boste vnesli:
- Vklopite samo prvo stikalo (gledano iz leve proti desni), ostala izklopite. Sedaj prek terminala za serijsko komunikacijo vnesite en znak, če ste ploščo povezali s "serijskim" kablom ali pritisnite tipko na tipkovnici, če ste na ploščo priključili tipkovnico.
Opomba: Koda vnesenega znaka neposredno pomeni podatek.
LED diode (nad stikali) svetijo trenutni podatek v dvojiški obliki - najbolj leva dioda je najbolj pomemben bit.
S to kombinacijo stikal vnesete barvo. Barva je "velika" samo 3 bite. Prvi bit je rdeča, drugi zelena in tretji modra barva (RGB). - Vklopite samo tretje stikalo, ostala izklopite. Sedaj vnašate X koordinato prve točke. Koordinata je "velika" 7 bitov. Točka (0, 0) se nahaja v levem zgornjem kotu.
- Vklopite tretje in četrto stikalo, ostala izklopite. Sedaj vnašate Y koordinato prve točke.
- Vklopite samo drugo stikalo, ostala izklopite. Sedaj vnašate X koordinato druge točke.
- Vklopite drugo in četrto stikalo, ostala izklopite. Sedaj vnašate Y koordinato druge točke.
- Vklopite samo prvo stikalo (gledano iz leve proti desni), ostala izklopite. Sedaj prek terminala za serijsko komunikacijo vnesite en znak, če ste ploščo povezali s "serijskim" kablom ali pritisnite tipko na tipkovnici, če ste na ploščo priključili tipkovnico.
- Pritisnite severni gumb (V4 push-button), da sprožite risanje. Na zaslonu boste zagledali daljico od prve do druge točke z ustrezno barvo, debeline 1 točka, na črnem ozadju.
Dodatno:
- Vklopite samo četrto stikalo, ostala izklopite. Sedaj vnašate način risanja (cmd_i). Način risanja je "velik" samo 1 bit. Če je način risanja nastavljen na 0 (privzeto), potem se ob vsakem proženju risanja risalna plošča najprej pobriše. Če nastavite način risanja na 1, se ob vsakem proženju risanja na obstoječo risalno ploščo dodatno nariše daljica.
- Če je kombinacija stikal kakorkoli drugače nastavljena kot v zgornjih omenjenih primeri, LED diode prikazujejo 8 bitno kodo znaka, ki je bil vnesen.
- Pritisnite južni gumb (K17 push-button), če želite resetirati vezje. Pri tem bodo vsi podatki izgubljeni (nastavljeni na 0).
Tehnične lastnosti
Programski jezik: | VHDL |
Programsko razvojno okolje: | Xilinx ISE WebPACK 9.2i |
Strojno razvojno okolje: | Xilinx Spartan-3E Starter Kit |
FPGA čip: | Xilinx Spartan-3E (XC3S500E-4FG320C) |
Vhod: | RS232, PS/2 |
Izhod: | VGA, 640 x 480 @ 60 Hz |
Velikost risalne ploskve: | 128 x 128 točk |