Indholdsfortegnelse:

VGA -maleprogram: 5 trin
VGA -maleprogram: 5 trin

Video: VGA -maleprogram: 5 trin

Video: VGA -maleprogram: 5 trin
Video: The Giulietta VGA-3D and VGA-3PS 2024, November
Anonim
VGA -maleprogram
VGA -maleprogram

Projekt af: Adam Klein, Ian Strachan, Brandon Slater

Det projekt, vi satte os for at fuldføre, var at gemme, analysere og vise information fra en USB -mus i form af et maleprogram. Ideen bag projektet er at kunne tilslutte musen og VGA-kablerne til Basys-kortet i sine indbyggede porte, og få musen vist som en bevægelig malerfirkant på skærmen og ændre forskellige farver, når venstre og højre klik er Brugt. I det væsentlige ville vi oprette en driver til brug af musen med basys -kortet og have skærmen som vores verifikation af funktionalitet. Det, der virkelig endte med at ske, var oprettelsen af et tegningsprogram med basys boardet som inputsystem og et semi-funktionelt datafangstsystem til musen.

I denne instruktive nedbryder vi trinene fra mus input til vga output.

Trin 1: Motivation og problem

Motivation og problem
Motivation og problem

Motivering:

Hovedmotiveringen for vores projekt var at oprette en musedriver til Basys3 -tavlen, som fremtidige CPE 133 -studerende ville kunne bruge til deres afsluttende projekter i fremtiden. Vi tog imidlertid denne idé et skridt videre ved at oprette et maleprogram, som fremtidige studerende også kunne bygge ud af.

Problem:

Problemet, vi opdagede, var, at der ikke er noget klart musemodul klar til download og brug til Basys3 -kortet. For at løse dette problem forsøgte vi at oprette et selv. Ved at gøre det, stræbte vi efter at oprette et musemodul, der ville give fremtidige studerende lettere ved at implementere mus input i deres projekter.

Trin 2: Få oplysninger om rå bit fra Basys USB

Få oplysninger om rå bit fra Basys USB
Få oplysninger om rå bit fra Basys USB
  • Meget af det, vi gjorde for musen i dette projekt, stammede fra Basys3 -dokumentationen. Fra den lille guide på Basys USB -port i den pdf fandt vi ud af, at Basys -kortet har et indbygget ur til læsning af bits med den rigtige hastighed fra USB -enheder.
  • I det væsentlige sender musen bits til usb fra en inaktiv tilstand, læser 32 bits, der repræsenterer musens status, x -position og y -position, og slutter til sidst med en anden inaktiv bit. For at gøre dette bruger musens inputkomponent et skiftregister og en 32 bit tæller, hvor skiftregistret bruges til at gemme 32 bits indgående data fra musen, og 32 bit tælleren bruges til at tælle det antal bits, der gemmes, hvilket tillader tilstanden registrer dig for at nulstille og gemme det næste sæt med 32 indgående bits.
  • Koden til skiftregistret, 32 bit -tælleren og datalæseren kan downloades herunder samt begrænsningsfilen tilpasset vores brug af USB -porten som input

Trin 3: Parsing af USB -oplysninger

Parsing af USB -oplysninger
Parsing af USB -oplysninger
Parsing af USB -oplysninger
Parsing af USB -oplysninger
  • Efter at have oprettet mus input til usb komponent, var det næste trin at oprette usb bits til vektor information komponent, der ville gøre data modtaget af musen læsbar for vga.
  • Denne komponent anvender en tilstandsmaskine, der optager det sæt bits, der udsendes af musens input til usb og bevæger sig gennem tilstande baseret på, om nye bits, der ændrer musens status og position, blev indtastet.
  • Blokdiagrammet for de to første trin i projektet er vist her, og de to vhdl -filer er til test af implementeringen af musen ved hjælp af basys LED'erne (en test, der desværre aldrig blev bestået) og til at caste bitstrømmen fra USB port til hastigheds- og positionsvektorer, som VGA kan bruge.
  • Billedet ved siden af blokdiagrammet ovenfor er et lille øjebliksbillede (Instructables tillader os ikke at vise hele det brede billede) af de bitoplysninger, vi fandt i grundlæggende dokumentation for at fuldføre dette trin.

Trin 4: Visning af det malede billede over VGA og redigering af, hvad der tegnes

Visning af det malede billede over VGA og redigering af, hvad der tegnes
Visning af det malede billede over VGA og redigering af, hvad der tegnes
Visning af det malede billede over VGA og redigering af, hvad der tegnes
Visning af det malede billede over VGA og redigering af, hvad der tegnes
Visning af det malede billede over VGA og redigering af, hvad der tegnes
Visning af det malede billede over VGA og redigering af, hvad der tegnes
  • VGA -kablet har 14 bits output, 4 bit for hver af de tre farver og en smule for vandret synkronisering og lodret synkronisering.
  • OtherVGA er det medfølgende VGA -modul, og det fungerer som følgende:

    • Skærmen er opdelt i 40x30 blokke med 16x16 pixels til en skærm med en opløsning på 640x480 som vist på billedet ovenfor. Modulet vælger en blokadresse til at repræsentere en af de 1200 blokke på skærmen. Blokadressen vælges gennem følgende ligning: adresse = 40y + x
    • Farven repræsenteres af et 12 bit signal, der korrelerer med en RRRRGGGGBBBB værdi, der farver den valgte blok.
  • Vores kontrolkode, VGAtest og VGAtestconst, fungerer som følgende:

    • Den indstiller først den valgte blok til midten af skærmen.
    • Blokkens farve bestemmes af 12 kontakter på kortet, der indstiller RRRRGGGGBBBB -værdien.
    • De fire retningsknapper på tavlen ændrer den valgte adresse. Hvis du f.eks. Trykker på den højre knap, tilføjes 1 til adressen og vælger blokken en til højre for den forrige blok. Hvis du trykker på ned -knappen, tilføjes 40 til adressen og vælger blokken en under den forrige blok.
    • Midtknappen bruges til at indstille alle farveværdierne til 0, når der trykkes på den. Dette er beregnet til at opføre sig som en sletningsknap, der er let for brugeren at bruge, så brugeren ikke behøver at vende hver switch til 0 for at slette.
  • Det sidste billede er blokdiagrammet for controlleren. Det er ret bredt, da det indeholder komponenter i modulet og muligvis ikke vises fuldstændigt.

Trin 5: Nyd din skabelse

Linket her er en hurtig timelapse af det sjove, du kan have med det endelige projekt, selv bare ved at bruge kontakterne og knapperne på basys boardet som input.

Tak fordi du læste!

Anbefalede: