Innholdsfortegnelse:
- Trinn 1: Motivasjon og problem
- Trinn 2: Få råbitinformasjonen fra Basys USB
- Trinn 3: Parsing av USB -informasjonen
- Trinn 4: Visning av det malte bildet over VGA og redigering av det som tegnes
- Trinn 5: Nyt skapelsen din
Video: VGA -malingsprogram: 5 trinn
2024 Forfatter: John Day | [email protected]. Sist endret: 2024-01-30 11:24
Prosjekt av: Adam Klein, Ian Strachan, Brandon Slater
Prosjektet som vi skulle fullføre var å lagre, analysere og vise informasjon fra en USB -mus i form av et maleprogram. Ideen bak prosjektet er å kunne koble musen og VGA-kablene til Basys-kortet i de innebygde portene, og få musen vist som et bevegelig malingsfelt på skjermen, og endre forskjellige farger når venstre og høyre klikk er brukt. I hovedsak ville vi lage en driver for å bruke musen med grunnkortet, og ha skjermen som vår verifisering av funksjonalitet. Det som virkelig endte opp med å skje var opprettelsen av et tegneprogram med basistavlen som inngangssystem, og et semi-funksjonelt datafangstsystem for musen.
I denne instruksen vil vi bryte ned trinnene fra musinngang til vga -utgang.
Trinn 1: Motivasjon og problem
Motivasjon:
Hovedmotivasjonen for prosjektet vårt var å lage en musedriver for Basys3 -tavlen som fremtidige CPE 133 -studenter ville kunne bruke til sine siste prosjekter i fremtiden. Imidlertid tok vi denne ideen et skritt videre ved å lage et maleprogram, som fremtidige studenter også kunne bygge ut av.
Problem:
Problemet vi oppdaget var at det ikke er noen klar musemodul klar til nedlasting og bruk for Basys3 -kortet. For å løse dette problemet, prøvde vi å lage et selv. Ved å gjøre det, forsøkte vi å lage en musemodul som gjør at fremtidige studenter lettere kan implementere musemottak i prosjektene sine.
Trinn 2: Få råbitinformasjonen fra Basys USB
- Mye av det vi gjorde for musen i dette prosjektet, kom fra Basys3 -dokumentasjonen. Fra den lille guiden på Basys USB -port i den pdf -filen fant vi ut at Basys -kortet har en innebygd klokke for å lese biter med riktig hastighet fra USB -enheter.
- I hovedsak sender musen bits til usb fra en inaktiv tilstand, leser 32 bits som representerer musens status, x -posisjon og y -posisjon, og ender til slutt med en annen inaktiv bit. For å gjøre dette bruker musens inngangskomponent et skiftregister og en 32 -bitsteller der skiftregisteret brukes til å lagre 32 biter innkommende data fra musen, og 32 -bitstelleren brukes til å telle antall biter som lagres slik at tilstanden registrer deg for å tilbakestille og lagre det neste settet med 32 innkommende biter.
- Koden for skiftregisteret, 32 -bitstelleren og dataleseren kan lastes ned nedenfor, samt begrensningsfilen tilpasset vår bruk av USB -porten som inngang
Trinn 3: Parsing av USB -informasjonen
- Etter å ha opprettet musinngangen til usb -komponenten, var neste trinn å lage usb -bitene til vektorinformasjonskomponenten som ville gjøre dataene mottatt av musen lesbare for vga.
- Denne komponenten bruker en tilstandsmaskin som tar inn settet med biter som blir sendt ut av musen til USB og beveger seg gjennom tilstandene basert på om nye biter som endrer musens status og posisjon ble lagt inn.
- Blokkediagrammet for de to første trinnene i prosjektet er vist her, og de to vhdl -filene er for å teste implementeringen av musen ved hjelp av basys LED -er (en test som dessverre aldri ble bestått) og for å kaste bitstrømmen fra USB port til hastighets- og posisjonsvektorer som VGA kan bruke.
- Bildet ved siden av blokkdiagrammet ovenfor er et lite øyeblikksbilde (Instructables lar oss ikke vise hele det brede bildet) av bitinformasjonen vi fant i grunnleggende dokumentasjon for å fullføre dette trinnet.
Trinn 4: Visning av det malte bildet over VGA og redigering av det som tegnes
- VGA -kabelen har 14 bits utgang, 4 bits for hver av de tre fargene og litt for horisontal synkronisering og vertikal synkronisering.
-
OtherVGA er den medfølgende VGA -modulen, og den fungerer som følger:
- Skjermen er delt opp i 40x30 blokker med 16x16 piksler for en skjerm med oppløsning på 640x480 som vist på bildet ovenfor. Modulen velger en blokkadresse for å representere en av de 1200 blokkene på skjermen. Blokkadressen velges gjennom følgende ligning: adresse = 40y + x
- Fargen representeres av et 12 -biters signal som korrelerer til en RRRRGGGGBBBB -verdi som farger den valgte blokken.
-
Vår kontrollkode, VGAtest og VGAtestconst, fungerer som følger:
- Den setter først den valgte blokken til midten av skjermen.
- Blokkens farge bestemmes av 12 brytere på brettet, som angir RRRRGGGGBBBB -verdien.
- De fire retningsknappene på brettet endrer den valgte adressen. For eksempel vil et trykk på høyre knapp legge til 1 i adressen, velge blokken en til høyre for forrige blokk. Ved å trykke på ned -knappen vil du legge til 40 i adressen, og velge blokken under den forrige blokken.
- Midtknappen brukes til å sette alle fargeverdiene til 0 når du trykker på den. Dette er ment å oppføre seg som en sletteknapp som er enkel for brukeren å bruke, så brukeren trenger ikke å snu hver bryter til 0 for å slette.
- Det siste bildet er blokkdiagrammet for kontrolleren. Den er ganske bred siden den inneholder komponenter i modulen og kanskje ikke vises fullt ut.
Trinn 5: Nyt skapelsen din
Her er en rask timelapse av moroa du kan ha med det siste prosjektet, til og med bare ved å bruke bryterne og knappene på grunnkortet som inngang.
Takk for at du leste!
Anbefalt:
Alternativt okkludert dikoptisk modifikator for stereoskopisk overføring 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 trinn
Alternativt okkludert dikoptisk modifikator for stereoskopisk overføring 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: En stund har jeg jobbet med en etterfølger til den originale AODMoST. Ny enhet bruker raskere og bedre 32-biters mikrokontroller og raskere analog videobryter. Det gjør at AODMoST 32 kan jobbe med høyere oppløsninger og implementere nye funksjonelle
Alternativt okkludert dikoptisk modifikator for stereoskopisk overføring [ATmega328P+HEF4053B VGA Superimposer]: 7 trinn
Alternativt okkludert dikoptisk modifikator for stereoskopisk overføring [ATmega328P+HEF4053B VGA Superimposer]: Etter mine eksperimenter med flytende krystallglass som ble brukt for å stenge øynene (her og der), bestemte jeg meg for å bygge noe som er litt mer sofistikert og som heller ikke tvinger brukeren å ha PCB på pannen (noen ganger kan folk oppføre seg
Ekstern VGA / GPU for bærbare datamaskiner som bruker EXP GDC Beast: 15 trinn (med bilder)
Ekstern VGA / GPU for bærbare datamaskiner som bruker EXP GDC Beast: Hei gutter .. Dette er min første opplæring om instrukser. Engelsk er ikke mitt morsmål, så tilgi mine grammatiske feil. Jeg lagde dette basert på min erfaring med å oppgradere min bærbare. Og jeg kommer ikke til å kjede deg med lang introduksjon siden jeg vet nei
ESP32 VGA arkadespill og joystick: 6 trinn (med bilder)
ESP32 VGA Arcade Games og Joystick: I denne instruksjonsfilen vil jeg vise hvordan du reproduserer fire arkade som spill - Tetris - Snake - Breakout - Bomber - ved hjelp av en ESP32, med utgang for en VGA -skjerm. Oppløsningen er 320 x 200 piksler, i 8 farger. Jeg har tidligere gjort en versjon med
Arduino Basic PC med VGA -utgang: 5 trinn (med bilder)
Arduino Basic PC Med VGA-utgang: I min forrige Instructable har jeg vist hvordan jeg bygger en retro 8-biters datamaskin som kjører BASIC, ved hjelp av to Arduino, og med et utgangssignal i B & W for en TV-skjerm. Nå skal jeg vise hvordan du bygger den samme datamaskinen, men med utgangssignalet i