Innholdsfortegnelse:

VGA -malingsprogram: 5 trinn
VGA -malingsprogram: 5 trinn

Video: VGA -malingsprogram: 5 trinn

Video: VGA -malingsprogram: 5 trinn
Video: VGA Bengt legger gulv 2024, Juli
Anonim
VGA -malingsprogram
VGA -malingsprogram

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 og problem
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

Få informasjon om råbit fra Basys USB
Få informasjon om råbit 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

Parsing av USB -informasjon
Parsing av USB -informasjon
Parsing av USB -informasjon
Parsing av USB -informasjon
  • 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

Vise det malte bildet over VGA og redigere det som tegnes
Vise det malte bildet over VGA og redigere det som tegnes
Vise det malte bildet over VGA og redigere det som tegnes
Vise det malte bildet over VGA og redigere det som tegnes
Vise det malte bildet over VGA og redigere det som tegnes
Vise det malte bildet over VGA og redigere 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: