Étape 2: Modules VHDL
Machine à états finis de LED (led_fsm.vhd)
Ce module est utilisé pour contrôler les LEDs. Dans son état par défaut, tandis que son input enable est élevé, ce module ne fait que déplacer la diode allumée actuelle à la droite d’un espace sur le front montant de l’entrée d’horloge (var_clk_div.vhd ci-dessous). Si l’entrée enable est faible, les LEDs tiendront leur état actuel. Lorsque la fin est atteinte, les LEDs « enveloppement » au début. Après que le dernier palier est passé, lorsque le signal de la victoire est élevé, tous les voyants sont allumés. Si à tout moment réinitialiser est élevé, y compris dans l’état de la victoire, les LEDs seront réinitialise à leur état par défaut.
Machine à états finis de niveau (level_fsm.vhd)
Ce module stocke une valeur binaire de 4 bits qui représente le niveau actuel. La sortie de ce module est affichée sur l’afficheur 7 segments sur les 3 Nexys. La sortie est également utilisée pour déterminer la vitesse de la lumière en mouvement. Pour modifier la valeur de l’échelon, envoyer une impulsion sur le signal enable causant le niveau d’incrémenter par « 0001 ». Si à tout moment le signal de réinitialisation est élevé, la valeur du niveau revient à « 0000 ».
Décodeur 7 segments (sseg_dec.vhd)
Ce module est le œuvre du professeur de Cal Poly, Bryan Mealy. Il prend en entrée un binaire de 8 bits et affiche la valeur décimale correspondante sur l’afficheur 7 segments Nexys 3. Il est utilisé pour afficher la sortie de level_fsm.vhd.
Diviseur d’horloge variable (var_clk_div.vhd)
Ce module est basé sur un module fourni par le professeur de Cal Poly, Bryan Mealy. Ce module prend le niveau actuel (de level_fsm.vhd) comme entrée et génère un signal d’horloge correspondant. La fréquence de cette horloge augmente avec le niveau pour rendre le jeu plus difficile.
Jeu de LED (led_game.vhd)
Nous y voilà ! Le module principal du jeu ! Ce module vise à connecter tous les modules ci-dessus et à fournir la logique intermédiaire afin de jouer le jeu. Ce module envoie des signaux différents pour les modules pertinents lorsque le bouton est enfoncé. Il gère également l’état d’attente après que le bouton est enfoncé. Cet état d’attente fait une pause le jeu pendant deux secondes avant l’autre, plus vite, et grisant, niveau commence. Cet état d’attente ignore également pousse bouton arrêt supplémentaire pour éviter les debouncing questions. Un diagramme montrant les liens entre les modules constitutifs est attaché (LED jeu bloc diagramme).