Créer un jeu en petits groupes utilisant des accélérateurs et des matériaux de FPGA utilisant les cartes Vivado et Nexys4.
Langage de programmation primaire: VHDL.
Connexions :
On déclare les entrées et les sorties dans l’ « entity ». Ensuite, on fait des connections en utilisant « entity work._nomdel’entity_(behavioral) port map » et déclarer les entrées et les sorties intémédiares en tant que signals.
Conversion de Fréquence :
Pour faire la connection de l’entité Objet on a dû utiliser un « clk5Hz ». D’où, on a fait un code de conversion de 25MHz à 5Hz en utilisant un code de compteur.
Avec la relation inversement proportionnelle de la fréquence et la période, on a pu trouver que 5 x 106 périodes de 25MHz = 1 période de 5Hz. Donc pour une moitié des périodes de clk25 on donne la valeur ‘1’ et pour l’autre moitié la valeur ‘0’ au clk5Hz.
Mouvement de Raquette :
Pour le mouvement de raquette, left i et right i, on a crée un code qui dépend d’un signal de mouvement d’accéléromètre qui est l’ « acc(10) ». On a choisit celui-ci comme il était moins sensible comparé aux autres signals quand on les a testé avec un code d’accéléromètre.
Nous avons apporté une amélioration supplémentaire en augmentant la sensibilité de l'accéléromètre.
Affichage du score :
Afficheur 7 Segments :
Pour réaliser
ceci, il fallait comprendre le fonctionnement des anodes et des cathodes (comme
dans le figure 2). D’où on a crée les chiffres de 0 à 9 en utilisant les 7
segments.
Il était également important de comprendre la
« Période de Rafraîchissement » qui est de 1ms à 16ms. Cela
correspond à la « Fréquence de Rafraîchissement » de 62.5Hz à 1kHz. On a décidé de récupérer une fréquence d’environ 1kHz
en conversant le clk25.
Affichage de 2 digits indépendants :
Cette « Fréquence de Rafraîchissement » est nécessaire pour afficher plus de 2 digits indépendants en même temps. Donc avec ce code, à chaque front montant de fréquence, on a une boucle infinie qui choisit le 1er digit et le 2eme digit un après l’autre.
Pour le Compteur de Nombre de Briques Cassées, on a crée une variable dans le fichier brick_bounce qui s’increment chaque fois quand une brique est cassée.
De coup, avec les
2 équations mathématiques, on récupère le 1er digit et le 2eme
digit de ce nombre séparément. (Nombres
en base 10 - > Code BCD (Binary Coded
Decimal))
Affichage d'un message (en Pixels) : WIN or LOSE
Changement de Niveau :
- Vitesse de la balle
- Couleur du damier
VHDL Implémentation :
GitHub Code