Indholdsfortegnelse:
- Trin 1: Motivation og problem
- Trin 2: Få oplysninger om rå bit fra Basys USB
- Trin 3: Parsing af USB -oplysninger
- Trin 4: Visning af det malede billede over VGA og redigering af, hvad der tegnes
- Trin 5: Nyd din skabelse
Video: VGA -maleprogram: 5 trin
2024 Forfatter: John Day | [email protected]. Sidst ændret: 2024-01-30 08:29
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
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
- 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
- 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
- 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:
Alternativt lukkende dikoptisk modifikator for stereoskopisk transmission 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 trin
Alternativt lukkende dikoptisk modifikator for stereoskopisk transmission 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: I nogen tid har jeg arbejdet på en efterfølger til den originale AODMoST. Ny enhed bruger hurtigere og bedre 32-bit mikrokontroller og hurtigere analog video switch. Det giver AODMoST 32 mulighed for at arbejde med højere opløsninger og implementere nye funktionelle
Alternativt lukkende dikoptisk modifikator for stereoskopisk transmission [ATmega328P+HEF4053B VGA Superimposer]: 7 trin
Alternativt lukkende dikoptisk modifikator for stereoskopisk transmission [ATmega328P+HEF4053B VGA Superimposer]: Efter mine eksperimenter med flydende krystalglas bruges til at lukke øjnene (her og der), besluttede jeg at bygge noget, der er lidt mere sofistikeret og heller ikke tvinger brugeren at bære PCB på panden (folk kan nogle gange opføre sig
Ekstern VGA / GPU til bærbare computere, der bruger EXP GDC Beast: 15 trin (med billeder)
Ekstern VGA / GPU til bærbare computere ved hjælp af EXP GDC Beast: Hej Guys .. Dette er min første tutorial om instruktører. Engelsk er ikke mit første sprog, så tilgiv mine grammatiske fejl. Jeg lavede dette baseret på min erfaring med at opgradere min bærbare computer. Og jeg vil ikke kede dig med lang introduktion, da jeg ikke ved noget
ESP32 VGA Arcade Games og Joystick: 6 trin (med billeder)
ESP32 VGA Arcade Games og Joystick: I denne instruktive vil jeg vise, hvordan man gengiver fire arkade som spil - Tetris - Snake - Breakout - Bomber - ved hjælp af en ESP32, med output til en VGA -skærm. Opløsningen er 320 x 200 pixels, i 8 farver. Jeg har tidligere lavet en version med
Arduino Basic PC med VGA -output: 5 trin (med billeder)
Arduino Basic PC Med VGA Output: I min tidligere Instructable har jeg vist, hvordan man bygger en retro 8-bit computer, der kører BASIC, ved hjælp af to Arduino og med et udgangssignal i B & W til en tv-skærm. Nu vil jeg vise, hvordan man bygger den samme computer, men med udgangssignalet i