FPGA_VIVADO_SI_VHDL_Mihael_Cristian_Ignat

(Cristian I.K_ntXI) #1
50

valoare pentru pixelii P0,7, P1,7, P2,7 ... P767, atunci coloana 7 va avea aceeași culoare.


Pentru generarea unui astfel de exemplu vom afișa mai întâi culoarea roșie cu o intensitate crescătoare
de la stânga la dreapta, apoi verde, după care albastru, iar în al 4-lea ciclu le vom afișa pe toate, astfel
creându-se nuanțe de gri.


Pentru aceasta, se va utiliza noțiunea “when” din vhdl. Spre exemplu, semnalul roșu va primi valoarea
adresei de orizontală de pe pozițiile [3:0] dacă en_q este ‘1’ și adresa de pe pozițiile [5:4] este “00” sau “11”,
în rest va primi valoarea “0000”. Sunt utilizați biții 5 și 4 ca selecție, deoarece aceștia sunt ca și niște
numărătoare. Practic, prin acești doi biți ne putem da seama de câte ori s-a făcut overflow (s-a depășit
valoarea) pentru biții [3:0]. Astfel, când acești biți [5:4] vor avea valoarea “00”, va fi selectată culoarea roșie,
când vor avea valoarea “01” va fi selectată culoarea verde, la “10” va fi selectată culoarea albastră, iar la
“11”, pentru a fi afișată nuanța de gri, vor fi selectate toate cele 3 culori. Trebuie reamintit faptul că pe
întreaga zonă invizibilă semnalele RGB trebuie să aibă valoarea 0 și astfel trebuie utilizat semnalul en_q.


Implementarea arhitecturii acestui comportament este realizat cu următorul cod:

Codul complet, dar și o variantă un pic optimizată pot fi găsite în VGA_pattern.vhd. Pentru testarea
acestei componente, la fel ca și în cazul Sync_VGA, nu trebuie generat decât clock-ul. Codul de test al
componentei poate fi găsit la testB_VGA_pattern.vhd.


În Fig. 60 se vede rezultatul simulării acestei componente. Se observă că fereastra este împărțită în 4
zone: prima zonă reprezintă afișarea culorii roșii, cea de-a doua zonă este afișarea culorii verzi, a 3-a zonă,
afișarea culorii albastre, iar a 4-a zonă reprezintă afișarea tuturor celor trei culori, aceasta, de fapt,
reprezentând nuanța de gri.

Free download pdf