Inhaltsverzeichnis:
- Schritt 1: Motivation und Problem
- Schritt 2: Abrufen der Raw-Bit-Informationen vom Basys USB
- Schritt 3: Analysieren der USB-Informationen
- Schritt 4: Anzeigen des gemalten Bildes über VGA und Bearbeiten des Gezeichneten
- Schritt 5: Genießen Sie Ihre Kreation
Video: VGA-Malprogramm - Gunook
2024 Autor: John Day | [email protected]. Zuletzt bearbeitet: 2024-01-30 07:20
Projekt von: Adam Klein, Ian Strachan, Brandon Slater
Das Projekt, das wir abschließen wollten, bestand darin, Informationen von einer USB-Maus in Form eines Malprogramms zu speichern, zu analysieren und anzuzeigen. Die Idee hinter dem Projekt ist, die Maus- und VGA-Kabel in die integrierten Anschlüsse des Basys-Boards einstecken zu können und die Maus als bewegliches Malquadrat auf dem Monitor anzeigen zu lassen, das bei Links- und Rechtsklick unterschiedliche Farben ändert Gebraucht. Im Wesentlichen würden wir einen Treiber für die Verwendung der Maus mit dem basys-Board erstellen und den Monitor als Überprüfung der Funktionalität verwenden. Am Ende entstand ein Zeichenprogramm mit dem basys board als Eingabesystem und ein semifunktionales Datenerfassungssystem für die Maus.
In diesem anweisbaren werden wir die Schritte von der Mauseingabe bis zur VGA-Ausgabe aufschlüsseln.
Schritt 1: Motivation und Problem
Motivation:
Die Hauptmotivation für unser Projekt war es, einen Maustreiber für das Basys3-Board zu entwickeln, den zukünftige CPE 133-Studenten in Zukunft für ihre Abschlussarbeiten verwenden können. Wir gingen jedoch noch einen Schritt weiter und entwickelten ein Malprogramm, auf dem auch zukünftige Studenten aufbauen konnten.
Problem:
Das Problem, das wir entdeckten, war, dass es kein klares Mausmodul zum Herunterladen und Verwenden für das Basys3-Board gibt. Um dieses Problem zu lösen, haben wir versucht, selbst eine zu erstellen. Auf diese Weise wollten wir ein Mausmodul erstellen, das es zukünftigen Studenten ermöglicht, Mauseingaben einfacher in ihre Projekte zu implementieren.
Schritt 2: Abrufen der Raw-Bit-Informationen vom Basys USB
- Vieles von dem, was wir in diesem Projekt für die Maus gemacht haben, stammte aus der Basys3-Dokumentation. Aus der kleinen Anleitung zum Basys USB-Port in diesem PDF haben wir herausgefunden, dass das Basys-Board eine eingebaute Uhr zum Lesen von Bits mit der richtigen Geschwindigkeit von USB-Geräten hat.
- Im Wesentlichen sendet die Maus ausgehend von einem Ruhezustand Bits an USB, liest 32 Bits, die den Mausstatus, die x-Position und die y-Position darstellen, und endet schließlich mit einem anderen Ruhebit. Zu diesem Zweck verwendet die Mauseingabekomponente ein Schieberegister und einen 32-Bit-Zähler, wobei das Schieberegister verwendet wird, um 32 Bits der eingehenden Daten von der Maus zu speichern, und der 32-Bit-Zähler verwendet wird, um die Anzahl der gespeicherten Bits zu zählen, die den Status erlauben registrieren, um den nächsten Satz von 32 eingehenden Bits zurückzusetzen und zu speichern.
- Der Code für das Schieberegister, den 32-Bit-Zähler und den Datenleser kann unten heruntergeladen werden, ebenso wie die Constraint-Datei, die an unsere Verwendung des USB-Ports als Eingang angepasst ist
Schritt 3: Analysieren der USB-Informationen
- Nachdem die Mauseingabe für die USB-Komponente erstellt wurde, bestand der nächste Schritt darin, die USB-Bits zur Vektorinformationskomponente zu erstellen, die die von der Maus empfangenen Daten für die VGA lesbar macht.
- Diese Komponente verwendet eine Zustandsmaschine, die den Satz von Bits aufnimmt, die durch die Mauseingabe an usb ausgegeben werden, und sich durch die Zustände bewegt, basierend darauf, ob neue Bits eingegeben wurden, die den Status und die Position der Maus ändern.
- Das Blockschaltbild für die ersten beiden Schritte des Projekts ist hier gezeigt, und die beiden vhdl-Dateien dienen zum Testen der Implementierung der Maus mit den basys-LEDs (ein Test, der leider nie bestanden wurde) und zum Casting des Bitstroms vom USB Port auf Geschwindigkeits- und Positionsvektoren, die der VGA verwenden kann.
- Das Bild neben dem obigen Blockdiagramm ist ein kleiner Schnappschuss (Instructables erlaubt uns nicht, das volle Bild anzuzeigen) der Bit-Informationen, die wir in der basys-Dokumentation für diesen Schritt gefunden haben.
Schritt 4: Anzeigen des gemalten Bildes über VGA und Bearbeiten des Gezeichneten
- Das VGA-Kabel hat 14 Bit Ausgabe, 4 Bit für jede der drei Farben und ein Bit für horizontale Synchronisierung und vertikale Synchronisierung.
-
OtherVGA ist das mitgelieferte VGA-Modul und funktioniert wie folgt:
- Der Monitor ist in Blöcke von 40x30 mit 16x16 Pixeln für einen Bildschirm mit einer Auflösung von 640x480 unterteilt, wie im obigen Bild zu sehen ist. Das Modul wählt eine Blockadresse aus, um einen der 1200 Blöcke auf dem Monitor darzustellen. Die Blockadresse wird durch die folgende Gleichung ausgewählt: Adresse = 40y + x
- Die Farbe wird durch ein 12-Bit-Signal dargestellt, das mit einem RRRRGGGGBBBB-Wert korreliert, der den ausgewählten Block färbt.
-
Unser Steuercode VGAtest und VGAtestconst funktioniert wie folgt:
- Es setzt zuerst den ausgewählten Block in die Mitte des Monitors.
- Die Farbe des Blocks wird durch 12 Schalter auf der Platine bestimmt, die den Wert RRRRGGGGBBBB einstellen.
- Die vier Richtungstasten auf der Platine ändern die ausgewählte Adresse. Wenn Sie zum Beispiel die rechte Taste drücken, wird der Adresse 1 hinzugefügt und der Block rechts vom vorherigen Block ausgewählt. Durch Drücken der Abwärtstaste wird der Adresse 40 hinzugefügt, wodurch der Block unter dem vorherigen Block ausgewählt wird.
- Mit der mittleren Taste werden beim Drücken alle Farbwerte auf 0 gesetzt. Dies soll sich als Löschtaste verhalten, die für den Benutzer einfach zu verwenden ist, sodass der Benutzer nicht jeden Schalter auf 0 stellen muss, um zu löschen.
- Das letzte Bild ist das Blockschaltbild für den Controller. Es ist ziemlich breit, da es Komponenten des Moduls enthält und möglicherweise nicht vollständig angezeigt wird.
Schritt 5: Genießen Sie Ihre Kreation
Hier ist ein kurzer Zeitraffer des Spaßes, den Sie mit dem endgültigen Projekt haben können, auch wenn Sie nur die Schalter und Tasten auf dem basys-Board als Eingabe verwenden.
Danke fürs Lesen!