Objectif :
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
        Level 1         Level 2         Level 3

VHDL Implémentation :
GitHub Code