Inhoudsopgave:

VGA-schilderprogramma: 5 stappen
VGA-schilderprogramma: 5 stappen

Video: VGA-schilderprogramma: 5 stappen

Video: VGA-schilderprogramma: 5 stappen
Video: Голубая стрела (1958) фильм 2024, Juli-
Anonim
VGA-schilderprogramma
VGA-schilderprogramma

Project door: Adam Klein, Ian Strachan, Brandon Slater

Het project dat we wilden voltooien, was het opslaan, ontleden en weergeven van informatie van een USB-muis in de vorm van een tekenprogramma. Het idee achter het project is om de muis- en VGA-kabels op het Basys-bord in de ingebouwde poorten te kunnen aansluiten, en de muis als een verplaatsbaar schilderijvierkant op de monitor te laten weergeven, waarbij verschillende kleuren veranderen wanneer links en rechts klikken zijn. gebruikt. In wezen zouden we een stuurprogramma maken voor het gebruik van de muis met het basys-bord en de monitor hebben als onze verificatie van de functionaliteit. Wat uiteindelijk echt gebeurde, was het maken van een tekenprogramma met het basys-bord als invoersysteem en een semi-functioneel gegevensregistratiesysteem voor de muis.

In deze instructable zullen we de stappen van muisinvoer naar vga-uitvoer opsplitsen.

Stap 1: Motivatie en probleem

Motivatie en probleem
Motivatie en probleem

Motivatie:

De belangrijkste motivatie voor ons project was om een muisdriver voor het Basys3-bord te maken die toekomstige CPE 133-studenten in de toekomst zouden kunnen gebruiken voor hun afstudeerprojecten. We gingen echter een stap verder met dit idee door een schilderprogramma te maken, een programma waar toekomstige studenten ook op konden voortbouwen.

Probleem:

Het probleem dat we ontdekten was dat er geen duidelijke muismodule klaar is om te downloaden en te gebruiken voor het Basys3-bord. Om dit probleem op te lossen, hebben we geprobeerd er zelf een te maken. Door dit te doen, streefden we naar een muismodule waarmee toekomstige studenten muisinvoer gemakkelijker in hun projecten kunnen implementeren.

Stap 2: De Raw Bit-informatie ophalen van de Basys USB

De Raw Bit-informatie ophalen van de Basys USB
De Raw Bit-informatie ophalen van de Basys USB
  • Veel van wat we voor de muis in dit project hebben gedaan, kwam uit de Basys3-documentatie. Uit de kleine handleiding over de Basys USB-poort in die pdf, ontdekten we dat het Basys-bord een ingebouwde klok heeft om bits met de juiste snelheid van USB-apparaten te lezen.
  • In wezen stuurt de muis bits naar usb vanaf een inactieve toestand, leest 32 bits die de muisstatus, x-positie en y-positie vertegenwoordigen, en eindigt uiteindelijk met een andere inactieve bit. Om dit te doen, gebruikt de muisinvoercomponent een schuifregister en een 32-bits teller waarbij het schuifregister wordt gebruikt om 32 bits inkomende gegevens van de muis op te slaan en de 32-bits teller wordt gebruikt om het aantal bits te tellen dat wordt opgeslagen, waardoor de status register om de volgende set van 32 inkomende bits te resetten en op te slaan.
  • De code voor het schuifregister, 32-bits teller en datalezer kunnen hieronder worden gedownload, evenals het bestand met beperkingen dat is aangepast aan ons gebruik van de USB-poort als invoer

Stap 3: De USB-informatie ontleden

De USB-informatie ontleden
De USB-informatie ontleden
De USB-informatie ontleden
De USB-informatie ontleden
  • Na het creëren van de muisinvoer naar de usb-component, was de volgende stap het creëren van de usb-bits naar vectorinformatiecomponent die de door de muis ontvangen gegevens leesbaar zouden maken voor de vga.
  • Dit onderdeel gebruikt een statusmachine die de set bits opneemt die door de muisinvoer naar usb wordt uitgevoerd en door de statussen beweegt op basis van het feit of er nieuwe bits zijn ingevoerd die de status en positie van de muis wijzigen.
  • Het blokschema voor de eerste twee stappen van het project wordt hier getoond, en de twee vhdl-bestanden zijn voor het testen van de implementatie van de muis met behulp van de basys-LED's (een test die helaas nooit werd doorstaan) en voor het casten van de bitstream vanaf de USB poort om vectoren te versnellen en te positioneren die de VGA kan gebruiken.
  • De afbeelding naast het blokdiagram hierboven is een kleine momentopname (Instructables staat ons niet toe om de volledige brede afbeelding weer te geven) van de bitinformatie die we in de basys-documentatie hebben gevonden om deze stap te voltooien.

Stap 4: De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend

De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend
De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend
De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend
De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend
De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend
De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend
  • De VGA-kabel heeft 14 bits output, 4 bits voor elk van de drie kleuren en een bit voor horizontale synchronisatie en verticale synchronisatie.
  • OtherVGA is de meegeleverde VGA-module en werkt als volgt:

    • De monitor is opgedeeld in blokken van 40x30 van 16x16 pixels voor een scherm met een resolutie van 640x480 zoals te zien is in de bovenstaande afbeelding. De module selecteert een blokadres om een van de 1200 blokken op de monitor weer te geven. Het blokadres wordt geselecteerd via de volgende vergelijking: adres = 40y + x
    • De kleur wordt weergegeven door een 12-bits signaal dat correleert met een RRRRGGGGBBBB-waarde die het geselecteerde blok kleurt.
  • Onze controlecode, VGAtest en VGAtestconst, werkt als volgt:

    • Het stelt eerst het geselecteerde blok in op het midden van de monitor.
    • De kleur van het blok wordt bepaald door 12 schakelaars op het bord, die de RRRRGGGGBBBB-waarde instellen.
    • De vier richtingsknoppen op het bord wijzigen het geselecteerde adres. Als u bijvoorbeeld op de rechterknop drukt, wordt 1 aan het adres toegevoegd en wordt het blok rechts van het vorige blok geselecteerd. Als u op de omlaag-knop drukt, wordt 40 aan het adres toegevoegd en wordt het blok onder het vorige blok geselecteerd.
    • De middelste knop wordt gebruikt om alle kleurwaarden in te stellen op 0 wanneer deze wordt ingedrukt. Dit is bedoeld om zich te gedragen als een wisknop die gemakkelijk door de gebruiker kan worden gebruikt, zodat de gebruiker niet elke schakelaar op 0 hoeft te zetten om te wissen.
  • De laatste afbeelding is het blokschema voor de controller. Het is vrij breed omdat het componenten van de module bevat en mogelijk niet volledig wordt weergegeven.

Stap 5: Geniet van je creatie

Hier gelinkt is een snelle time-lapse van het plezier dat je kunt hebben met het uiteindelijke project, zelfs met alleen de schakelaars en knoppen op het basys-bord als invoer.

Bedankt voor het lezen!

Aanbevolen: