FPGA_VIVADO_SI_VHDL_Mihael_Cristian_Ignat

(Cristian I.K_ntXI) #1
52

Afișarea poate fi făcută de asemenea utilizând o memorie RAM sau ROM. În acest caz, memoria RAM se
folosește pentru date care vin dinamic, ce necesită o reîmprospătare periodică a datelor, pe când memoria
ROM are date fixe, fără a putea să le modificăm. Un bun exemplu al implementării unei memorii ROM o
reprezintă crearea unui bitmap (hartă de biți), cu caractere sau diferite imagini. Astfel va fi accesată
memoria ROM de la locația dorită, specifică unui anumit caracter, iar data extrasă din acea memorie va fi
trimisă către afișare la semnalele RGB. Acest lucru va fi explicat mai în detaliu în subcapitolele următoare.


Probleme propuse :


  1. În proiectul ce afișează dungi orizontale, realizați selecția culorilor adăugând 3 switch- uri.
    Astfel, SW0 va selecta culoarea roșie, SW1 culoarea verde și SW2 culoarea albastră. În cazul
    nuanței de alb / gri, dacă unul dintre switchuri va fi 0, culoarea respectivă va fi invalidată și se
    vor afișa doar celelalte două culori.

  2. Afișați dungi similare, oblice. Indicație: tot timpul, valoarea transmisă liniei următoare va
    trebui scăzută cu 1 față de linia curentă pentru a se putea realiza o deplasare a dungilor.


5.12. Implementarea unui ROM


Ca și componentă a FPGA-ului, în realitate nu există noțiunea de ROM. Fizic, pentru implementarea unui
ROM se utilizeaza tot un RAM (BRAM sau DRAM), însă fără a oferi prin cod posibilitatea de a scrie în acea
memorie. Concret, datele vin de la o memorie Flash externă FPGA-ului ce reține fișierul .bit și, la inițializare,
datele ce vor fi salvate în ROM vor fi, de fapt, salvate într-un RAM la care lipsește conexiunea către porturile
de scriere. Astfel, putem spune că aceasta are comportamentul unui ROM deoarece nu există posibilitatea
scrierii datei în această memorie.


Respectând dimensiunile următoare, vom putea crea o hartă de biți (bitmap). Din această hartă se alege
bitul corespunzător și se afișează pe ecran.


Pentru implementarea unui ROM se utilizează un array de tip STD_LOGIC_VECTOR. Dimensiunea
STD_LOGIC_VECTOR trebuie să fie egală cu numărul biților de la ieșirea memoriei. În cazul de față, dorim ca
fiecare caracter afișat să fie pe 16 biți pe orizontală și 16 biți pe verticală, astfel, memoria va avea

Free download pdf