Inhoudsopgave:
- Stap 1: Motivatie en probleem
- Stap 2: De Raw Bit-informatie ophalen van de Basys USB
- Stap 3: De USB-informatie ontleden
- Stap 4: De geschilderde afbeelding weergeven via VGA en bewerken wat er wordt getekend
- Stap 5: Geniet van je creatie
Video: VGA-schilderprogramma: 5 stappen
2024 Auteur: John Day | [email protected]. Laatst gewijzigd: 2024-01-30 11:18
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:
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
- 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
- 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 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:
Afwisselend afsluitende dichoptische modificatie van stereoscopische transmissie 32 [STM32F103C8T6+STMAV340 VGA-superimposer] - Ajarnpa
Afwisselend afsluitende dichoptische modificatie van stereoscopische transmissie 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: Ik werk al een tijdje aan een opvolger van de originele AODMoST. Nieuw apparaat maakt gebruik van snellere en betere 32-bits microcontroller en snellere analoge video-switch. Het stelt AODMoST 32 in staat om met hogere resoluties te werken en nieuwe functionele
ESP32 VGA-slang: 5 stappen
ESP32 VGA Snake: In deze instructable laat ik zien hoe je een klassiek arcadespel - Snake - kunt reproduceren met een ESP32, met de uitgang voor een VGA-monitor. De resolutie is 640x350 pixels, in 8 kleuren. Ik heb eerder een versie gedaan met een Arduino Uno (zie hier), maar
ESP32 VGA Tetris: 3 stappen
ESP32 VGA Tetris: In deze Instructables zal ik laten zien hoe je een kloon van het klassieke spel Tetris kunt bouwen, met behulp van een ESP32 en het genereren van de output voor een VGA-monitor. Deze game wordt mogelijk gemaakt door de verbazingwekkende ESP32Lib Arduino-bibliotheek van bitluni. Je hebt de ESP32 b
Arduino Snake op een VGA-monitor: 5 stappen
Arduino Snake op een VGA-monitor: Nou… ik heb een Arduino gekocht. Aanvankelijk was de investering gemotiveerd met iets waardoor mijn dochter geïnteresseerd zou raken in programmeren. Het bleek echter dat dit ding voor mij leuker was om mee te spelen. Na wat spelen met het maken van LED's
Hoe maak je een VGA-splitter: 5 stappen
Hoe maak je een VGA-splitter: In deze instructable laat ik je zien hoe je een VGA-splitter maakt die kan schakelen tussen twee ingangen of twee uitgangen. dit instructable is een wijziging van een printer (parallelle) splitter