Table des matières:

Programme de peinture VGA : 5 étapes
Programme de peinture VGA : 5 étapes

Vidéo: Programme de peinture VGA : 5 étapes

Vidéo: Programme de peinture VGA : 5 étapes
Vidéo: DESSINER UN MONSTRE EN 5 ÉTAPES FACILES SUR KRITA 2024, Novembre
Anonim
Programme de peinture VGA
Programme de peinture VGA

Projet de: Adam Klein, Ian Strachan, Brandon Slater

Le projet que nous avons entrepris de réaliser consistait à stocker, analyser et afficher des informations à partir d'une souris USB sous la forme d'un programme de peinture. L'idée derrière le projet est de pouvoir brancher la souris et les câbles VGA sur la carte Basys dans ses ports intégrés, et d'avoir la souris affichée comme un carré de peinture mobile sur le moniteur, changeant de couleurs différentes lorsque les clics gauche et droit sont utilisé. Essentiellement, nous créerions un pilote pour utiliser la souris avec la carte basys et utiliser le moniteur comme vérification de fonctionnalité. Ce qui s'est finalement produit, c'est la création d'un programme de dessin avec la carte basys comme système d'entrée et un système de capture de données semi-fonctionnel pour la souris.

Dans cette instructable, nous allons décomposer les étapes de l'entrée de la souris à la sortie vga.

Étape 1: Motivation et problème

Motivation et problème
Motivation et problème

Motivation:

La motivation principale de notre projet était de créer un pilote de souris pour la carte Basys3 que les futurs étudiants du CPE 133 pourraient utiliser pour leurs projets de fin d'études à l'avenir. Cependant, nous avons poussé cette idée un peu plus loin en créant un programme de peinture, sur lequel les futurs étudiants pourraient également s'appuyer.

Problème:

Le problème que nous avons découvert était qu'il n'y avait pas de module de souris clair prêt à être téléchargé et utilisé pour la carte Basys3. Pour résoudre ce problème, nous avons tenté d'en créer un nous-mêmes. Ce faisant, nous nous efforcions de créer un module de souris qui permettrait aux futurs étudiants d'implémenter plus facilement la saisie de la souris dans leurs projets.

Étape 2: Obtenir les informations brutes sur les bits à partir de l'USB Basys

Obtenir les informations brutes sur les bits à partir de l'USB Basys
Obtenir les informations brutes sur les bits à partir de l'USB Basys
  • Une grande partie de ce que nous avons fait pour la souris dans ce projet provient de la documentation Basys3. D'après le petit guide sur le port USB Basys dans ce pdf, nous avons constaté que la carte Basys a une horloge intégrée pour lire les bits à la bonne vitesse à partir des périphériques USB.
  • Essentiellement, la souris envoie des bits à l'usb à partir d'un état inactif, lit 32 bits représentant l'état de la souris, la position x et la position y, et se termine enfin par un autre bit inactif. Pour ce faire, le composant d'entrée de la souris utilise un registre à décalage et un compteur 32 bits où le registre à décalage est utilisé pour stocker 32 bits de données entrantes de la souris et le compteur 32 bits est utilisé pour compter le nombre de bits stockés permettant à l'état registre pour réinitialiser et stocker le prochain ensemble de 32 bits entrants.
  • Le code du registre à décalage, du compteur 32 bits et du lecteur de données sont téléchargeables ci-dessous, ainsi que le fichier de contraintes adapté à notre utilisation du port USB en entrée

Étape 3: Analyser les informations USB

Analyser les informations USB
Analyser les informations USB
Analyser les informations USB
Analyser les informations USB
  • Après avoir créé l'entrée de la souris vers le composant usb, l'étape suivante consistait à créer les bits usb vers le composant d'informations vectorielles qui rendraient les données reçues par la souris lisibles pour le vga.
  • Ce composant utilise une machine d'état qui prend l'ensemble de bits sortis par l'entrée de la souris sur USB et se déplace à travers les états en fonction de l'entrée de nouveaux bits qui modifient l'état et la position de la souris.
  • Le schéma fonctionnel des deux premières étapes du projet est présenté ici, et les deux fichiers vhdl servent à tester l'implémentation de la souris à l'aide des LED basys (un test qui n'a malheureusement jamais été réussi) et à diffuser le flux de bits à partir de l'USB port pour accélérer et positionner les vecteurs que le VGA peut utiliser.
  • L'image à côté du schéma fonctionnel ci-dessus est un petit instantané (Instructables ne nous permet pas d'afficher l'image large complète) des informations sur les bits que nous avons trouvées dans la documentation de basys pour terminer cette étape.

Étape 4: Affichage de l'image peinte sur VGA et édition de ce qui est dessiné

Affichage de l'image peinte sur VGA et édition de ce qui est dessiné
Affichage de l'image peinte sur VGA et édition de ce qui est dessiné
Affichage de l'image peinte sur VGA et édition de ce qui est dessiné
Affichage de l'image peinte sur VGA et édition de ce qui est dessiné
Affichage de l'image peinte sur VGA et édition de ce qui est dessiné
Affichage de l'image peinte sur VGA et édition de ce qui est dessiné
  • Le câble VGA a 14 bits de sortie, 4 bits pour chacune des trois couleurs et un bit pour la synchronisation horizontale et la synchronisation verticale.
  • OtherVGA est le module VGA fourni et il fonctionne comme suit:

    • Le moniteur est divisé en blocs de 40x30 de 16x16 pixels pour un écran de résolution 640x480 comme le montre l'image ci-dessus. Le module sélectionne une adresse de bloc pour représenter l'un des 1200 blocs sur le moniteur. L'adresse du bloc est sélectionnée par l'équation suivante: adresse = 40y + x
    • La couleur est représentée par un signal de 12 bits qui correspond à une valeur RRRRGGGGBBBB qui colore le bloc sélectionné.
  • Notre code de contrôle, VGAtest et VGAtestconst, fonctionne comme suit:

    • Il place d'abord le bloc sélectionné au centre du moniteur.
    • La couleur du bloc est déterminée par 12 commutateurs sur la carte, définissant la valeur RRRRGGGGBBBB.
    • Les quatre boutons directionnels du tableau modifient l'adresse sélectionnée. Par exemple, appuyer sur le bouton droit ajoutera 1 à l'adresse, en sélectionnant le bloc un à droite du bloc précédent. Appuyer sur le bouton bas ajoutera 40 à l'adresse, en sélectionnant le bloc un sous le bloc précédent.
    • Le bouton central est utilisé pour définir toutes les valeurs de couleur sur 0 lorsqu'il est enfoncé. Ceci est censé se comporter comme un bouton d'effacement facile à utiliser pour l'utilisateur, de sorte que l'utilisateur n'a pas à basculer chaque commutateur sur 0 pour effacer.
  • La dernière image est le schéma fonctionnel du contrôleur. Il est assez large car il inclut des composants du module et peut ne pas être affiché entièrement.

Étape 5: Profitez de votre création

Lié ici est un timelapse rapide du plaisir que vous pouvez avoir avec le projet final, même en utilisant simplement les commutateurs et les boutons de la carte basys comme entrée.

Merci d'avoir lu!

Conseillé: