Cuprins:

Program de pictură VGA: 5 pași
Program de pictură VGA: 5 pași

Video: Program de pictură VGA: 5 pași

Video: Program de pictură VGA: 5 pași
Video: Cum știi dacă ai iertat cu adevărat. Chestionar în 5 pași. Pr. Nicolae Dima 2024, Iulie
Anonim
Program de pictură VGA
Program de pictură VGA

Proiect de: Adam Klein, Ian Strachan, Brandon Slater

Proiectul pe care ne-am propus să-l finalizăm a fost acela de a stoca, analiza și afișa informații de pe un mouse USB sub forma unui program de pictură. Ideea din spatele proiectului este să puteți conecta mouse-ul și cablurile VGA la placa Basys din porturile sale încorporate și să afișați mouse-ul ca un pătrat mobil de pictură pe monitor, schimbând diferite culori atunci când sunt făcute clicuri stânga și dreapta. folosit. În esență, am crea un driver pentru utilizarea mouse-ului cu placa de bază și vom avea monitorul ca verificare a funcționalității noastre. Ceea ce s-a întâmplat cu adevărat a fost crearea unui program de desen cu placa de bază ca sistem de intrare și un sistem semi-funcțional de captare a datelor pentru mouse.

În acest instructable, vom descompune pașii de la intrarea mouse-ului la ieșirea vga.

Pasul 1: Motivație și problemă

Motivație și problemă
Motivație și problemă

Motivație:

Principala motivație a proiectului nostru a fost să creăm un driver de mouse pentru placa Basys3 pe care viitorii studenți CPE 133 să-l poată utiliza pentru proiectele lor finale în viitor. Cu toate acestea, am făcut această idee cu un pas mai departe prin crearea unui program de pictură, unul pe care viitorii studenți să-l poată construi.

Problemă:

Problema pe care am descoperit-o a fost că nu există un modul clar al mouse-ului gata de descărcare și utilizare pentru placa Basys3. Pentru a rezolva această problemă, am încercat să creăm una singură. Procedând astfel, ne-am străduit să creăm un modul mouse care să permită viitorilor studenți să implementeze mai ușor intrarea mouse-ului în proiectele lor.

Pasul 2: Obținerea informațiilor despre bitul brut de pe USB-ul de bază

Obținerea informațiilor despre bitul brut de pe USB-ul de bază
Obținerea informațiilor despre bitul brut de pe USB-ul de bază
  • O mare parte din ceea ce am făcut pentru mouse în acest proiect a venit din documentația Basys3. Din micul ghid de pe portul USB Basys din acel pdf, am constatat că placa Basys are un ceas încorporat pentru citirea biților la viteza corectă de pe dispozitivele USB.
  • În esență, mouse-ul trimite biți către usb pornind de la o stare inactivă, citește 32 de biți reprezentând starea mouse-urilor, poziția x și poziția y și, în cele din urmă, se termină cu un alt bit inactiv. Pentru a face acest lucru, componenta de intrare a mouse-ului folosește un registru de schimbare și un contor de 32 de biți, unde registrul de schimbare este utilizat pentru a stoca 32 de biți de date primite de la mouse, iar contorul de 32 de biți este utilizat pentru a număra numărul de biți stocați permițând starea Înregistrați-vă pentru a reseta și stoca următorul set de 32 de biți de intrare.
  • Codul pentru registrul de schimbare, contorul de 32 biți și cititorul de date pot fi descărcate mai jos, precum și fișierul de constrângeri adaptat utilizării portului USB ca intrare

Pasul 3: Analizarea informațiilor USB

Analizarea informațiilor USB
Analizarea informațiilor USB
Analizarea informațiilor USB
Analizarea informațiilor USB
  • După crearea intrării mouse-ului către componenta USB, următorul pas a fost crearea biților USB către componenta de informații vectoriale care ar face ca datele primite de mouse să fie lizibile pentru vga.
  • Această componentă folosește o mașină de stare care preia setul de biți ieșiți de intrarea mouse-ului în USB și se deplasează prin stări în funcție de dacă au fost introduși biți noi care modifică starea și poziția mouse-ului.
  • Schema bloc pentru primii doi pași ai proiectului este prezentată aici, iar cele două fișiere vhdl sunt pentru testarea implementării mouse-ului folosind LED-urile de bază (un test care, din păcate, nu a fost trecut niciodată) și pentru proiectarea fluxului de biți de pe USB port pentru viteza și poziționarea vectorilor pe care VGA le poate utiliza.
  • Imaginea de lângă diagrama bloc de mai sus este un mic instantaneu (Instructables nu ne permite să afișăm imaginea largă completă) a informațiilor despre biți pe care le-am găsit în documentația de bază pentru finalizarea acestui pas.

Pasul 4: Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat

Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
Afișarea imaginii pictate peste VGA și editarea a ceea ce este desenat
  • Cablul VGA are 14 biți de ieșire, 4 biți pentru fiecare dintre cele trei culori și un bit pentru sincronizare orizontală și sincronizare verticală.
  • OtherVGA este modulul VGA furnizat și funcționează după cum urmează:

    • Monitorul este împărțit în blocuri de 40x30 de 16x16 pixeli pentru un ecran de rezoluție 640x480, așa cum se vede în imaginea de mai sus. Modulul selectează o adresă de bloc pentru a reprezenta unul dintre cele 1200 de blocuri de pe monitor. Adresa blocului este selectată prin următoarea ecuație: adresa = 40y + x
    • Culoarea este reprezentată de un semnal de 12 biți care se corelează cu o valoare RRRRGGGGBBBB care colorează blocul selectat.
  • Codul nostru de control, VGAtest și VGAtestconst, funcționează după cum urmează:

    • Mai întâi setează blocul selectat în centrul monitorului.
    • Culoarea blocului este determinată de 12 comutatoare de pe placă, setând valoarea RRRRGGGGBBBB.
    • Cele patru butoane direcționale de pe placă modifică adresa selectată. De exemplu, apăsând butonul din dreapta se va adăuga 1 la adresă, selectând blocul unul din dreapta blocului anterior. Apăsarea butonului în jos va adăuga 40 la adresă, selectând blocul unul sub blocul anterior.
    • Butonul central este utilizat pentru a seta toate valorile culorilor la 0 atunci când este apăsat. Acesta este menit să se comporte ca un buton de ștergere ușor de utilizat de către utilizator, astfel încât utilizatorul nu trebuie să întoarcă fiecare comutator la 0 pentru a șterge.
  • Ultima imagine este schema bloc pentru controler. Este destul de larg, deoarece include componente ale modulului și este posibil să nu fie afișat complet.

Pasul 5: Bucurați-vă de creația voastră

Legat aici este un timelapse rapid al distracției pe care o puteți avea cu proiectul final, chiar și doar folosind comutatoarele și butoanele de pe placa de bază ca intrare.

Mulțumesc pentru lectură!

Recomandat: