Innehållsförteckning:
- Steg 1: Motivation och problem
- Steg 2: Skaffa Raw Bit -informationen från Basys USB
- Steg 3: Analysera USB -informationen
- Steg 4: Visa den målade bilden över VGA och redigera vad som ritas
- Steg 5: Njut av din skapelse
Video: VGA -målningsprogram: 5 steg
2024 Författare: John Day | [email protected]. Senast ändrad: 2024-01-30 12:46
Projekt av: Adam Klein, Ian Strachan, Brandon Slater
Projektet som vi tänkte slutföra var att lagra, analysera och visa information från en USB -mus i form av ett målningsprogram. Tanken bakom projektet är att kunna ansluta musen och VGA-kablarna till Basys-kortet i dess inbyggda portar, och få musen att visas som en rörlig målningsruta på monitorn, ändra olika färger när vänster och höger klick är Begagnade. I huvudsak skulle vi skapa en drivrutin för att använda musen med grundkortet och ha bildskärmen som vår verifiering av funktionalitet. Det som slutligen verkligen hände var skapandet av ett ritprogram med basyboardet som inmatningssystem och ett halvfunktionellt datainsamlingssystem för musen.
I denna instruerbara del bryter vi ner stegen från musinmatning till vga -utgång.
Steg 1: Motivation och problem
Motivering:
Den främsta motivationen för vårt projekt var att skapa en musdrivrutin för Basys3 -kortet som framtida CPE 133 -studenter skulle kunna använda för sina slutprojekt i framtiden. Vi tog dock denna idé ett steg längre genom att skapa ett målningsprogram, ett som framtida studenter också kan bygga på.
Problem:
Problemet vi upptäckte var att det inte finns någon tydlig musmodul redo att ladda ner och använda för Basys3 -kortet. För att lösa detta problem försökte vi skapa ett själv. Genom att göra det strävar vi efter att skapa en musmodul som gör att framtida studenter lättare kan implementera musinmatning i sina projekt.
Steg 2: Skaffa Raw Bit -informationen från Basys USB
- Mycket av det vi gjorde för musen i detta projekt kom från Basys3 -dokumentationen. Från den lilla guiden på Basys USB -port i den pdf -filen fann vi att Basys -kortet har en inbyggd klocka för att läsa bitar med rätt hastighet från USB -enheter.
- I huvudsak skickar musen bitar till usb med utgångspunkt från ett viloläge, läser 32 bitar som representerar musens status, x -position och y -position och slutar slutligen med en annan inaktiv bit. För att göra detta använder musens ingångskomponent ett skiftregister och 32 bitars räknare där skiftregistret används för att lagra 32 bitar inkommande data från musen och 32 bitars räknaren används för att räkna antalet bitar som lagras så att tillståndet registrera för att återställa och lagra nästa uppsättning av 32 inkommande bitar.
- Koden för skiftregistret, 32 -bitarsräknaren och dataläsaren kan laddas ner nedan, liksom begränsningsfilen anpassad till vår användning av USB -porten som ingång
Steg 3: Analysera USB -informationen
- Efter att ha skapat musinmatningen till usb -komponenten var nästa steg att skapa usb -bitarna till vektorinformationskomponenten som skulle göra data som mottogs av musen läsbar för vga.
- Denna komponent använder en tillståndsmaskin som tar in uppsättningen bitar som matas ut från musens ingång till usb och rör sig genom tillstånden baserat på om nya bitar som ändrar musens status och position matades in.
- Blockdiagrammet för de två första stegen i projektet visas här, och de två vhdl -filerna är för att testa implementeringen av musen med basys LED: er (ett test som tyvärr aldrig klarades) och för att kasta bitströmmen från USB port till hastighets- och positionsvektorer som VGA kan använda.
- Bilden bredvid blockdiagrammet ovan är en liten ögonblicksbild (Instructables tillåter inte att vi visar hela bredbilden) av bitinformationen som vi hittade i grunddokumentationen för att slutföra detta steg.
Steg 4: Visa den målade bilden över VGA och redigera vad som ritas
- VGA -kabeln har 14 bitar utgång, 4 bitar för var och en av de tre färgerna och en bit för horisontell synkronisering och vertikal synkronisering.
-
OtherVGA är den medföljande VGA -modulen och den fungerar som följande:
- Skärmen är uppdelad i 40x30 block med 16x16 pixlar för en skärm med en upplösning på 640x480 som visas på bilden ovan. Modulen väljer en blockadress för att representera ett av de 1200 blocken på monitorn. Blockadressen väljs genom följande ekvation: address = 40y + x
- Färgen representeras av en 12 bitars signal som korrelerar till ett RRRRGGGGBBBB -värde som färgar det valda blocket.
-
Vår kontrollkod, VGAtest och VGAtestconst, fungerar som följande:
- Det sätter först det valda blocket i mitten av monitorn.
- Färgen på blocket bestäms av 12 omkopplare på kortet, som ställer in RRRRGGGGBBBB -värdet.
- De fyra riktningsknapparna på tavlan ändrar den valda adressen. Till exempel, genom att trycka på höger knapp läggs 1 till adressen, markera blocket ett till höger om det föregående blocket. Genom att trycka på nedåtknappen läggs 40 till i adressen, markera blocket under föregående block.
- Mittknappen används för att ställa in alla färgvärden till 0 när den trycks in. Detta är tänkt att bete sig som en raderingsknapp som är lätt för användaren att använda, så att användaren inte behöver vända varje omkopplare till 0 för att radera.
- Den sista bilden är blockdiagrammet för styrenheten. Den är ganska bred eftersom den innehåller komponenter i modulen och kanske inte visas helt.
Steg 5: Njut av din skapelse
Länkad här är en snabb tidsfördröjning av det roliga du kan ha med det slutliga projektet, till och med bara genom att använda omkopplarna och knapparna på basys -kortet som ingång.
Tack för att du läser!
Rekommenderad:
Alternativt slutande dikoptisk modifierare av stereoskopisk överföring 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: 6 steg
Alternativt slutande dikoptisk modifierare för stereoskopisk överföring 32 [STM32F103C8T6+STMAV340 VGA Superimposer]: Under en tid har jag arbetat med en efterträdare till den ursprungliga AODMoST. Ny enhet använder snabbare och bättre 32-bitars mikrokontroller och snabbare analog videobrytare. Det gör att AODMoST 32 kan arbeta med högre upplösningar och implementera nya funktionella
Alternativt tillslutande dikoptisk modifierare för stereoskopisk överföring [ATmega328P+HEF4053B VGA Superimposer]: 7 steg
Alternativt tillslutande dikoptisk modifierare för stereoskopisk överföring [ATmega328P+HEF4053B VGA Superimposer]: Efter mina experiment med flytande kristallglas som används för att stänga ögonen (här och där) bestämde jag mig för att bygga något som är lite mer sofistikerat och som inte tvingar användaren heller att bära PCB på hans eller hennes panna (människor kan ibland bete sig
Extern VGA / GPU för bärbara datorer som använder EXP GDC Beast: 15 steg (med bilder)
Extern VGA / GPU för bärbara datorer som använder EXP GDC Beast: Hej killar .. Detta är min första handledning om instruktioner. Engelska är inte mitt första språk så förlåt mina grammatiska fel. Jag gjorde detta baserat på min erfarenhet av att uppgradera min bärbara dator. Och jag kommer inte att uttråkas med lång introduktion eftersom jag inte vet
ESP32 VGA arkadspel och joystick: 6 steg (med bilder)
ESP32 VGA Arcade Games och Joystick: I den här instruktören kommer jag att visa hur man reproducerar fyra arkadspel som spel - Tetris - Snake - Breakout - Bomber - med hjälp av en ESP32, med utgång för en VGA -bildskärm. Upplösningen är 320 x 200 pixlar, i 8 färger. Jag har tidigare gjort en version med
Arduino Basic PC med VGA -utgång: 5 steg (med bilder)
Arduino Basic PC med VGA-utgång: I min tidigare Instructable har jag visat hur man bygger en retro 8-bitars dator som kör BASIC, med hjälp av två Arduino, och med en utsignal i B & W för en TV-skärm. Nu ska jag visa hur man bygger samma dator, men med utsignalen i