Étape 1: Première Finite State Machine
Le premier FSM, nous avons créé deux États étaient affichage et attente pour afficher correctement un motif sur les LEDs.
Le FSM commence dans l’état d’attente et une fois le signal de départ est pressé, il se déplacerait à l’état d’affichage pour afficher le modèle. Une fois que l’affichage a été généré, le programme serait revenir à l’état d’attente basée sur la valeur de compteur max étant haute qu'elle transférerait ensuite plus à la deuxième FSM qui comparerait l’utilisateur d’entrée à l’écran.
État d’affichage :
Dans notre projet, nous avons voulu créer un motif aléatoire pour les LEDs. Pour ce faire, le code doit avoir un générateur de nombres aléatoires. Nous avons utilisé vhdl pour un LFSR (Registre à décalage rétroaction linéaire) qui fut faite nous en classe par le professeur Danowitz pour le générateur de nombres aléatoires.
Ce générateur de nombres aléatoire doit être relié aux LED, où les différentes sorties du générateur sont associés à chacun des 4 LEDs. Notre générateur de nombres aléatoires crée un nombre aléatoire de 32 bits, et nous avons divisé chaque LED pour mettre en marche selon ce que la valeur de la générateur de nombres aléatoires était en hexadécimal.
Il est important dans le vhdl pour avoir un signal de départ, qui nous avons attribué à un bouton. Dans ce cas, chaque fois que le bouton est enfoncé puis commencerait le générateur de nombres aléatoires, et donc les LEDs seraient afficherait. Avec cela, l’utilisateur a la possibilité de démarrer le jeu, chaque fois qu’ils sont prêts.
En outre, nous avons créé une minuterie pour ralentir l’horloge afin que l’affichage LED être visible à l’oeil humain au lieu d’être allumés pour une nanoseconde. Nous avons trouvé un exemple d’un timer en ligne qui nous modifiés pour travailler pour notre jeu qui se trouvent dans les références. La minuterie crée également un signal max compteur : cela se produit lorsque l’horloge passe à travers un cycle.
Nous avons également introduit un d-flip-flop pour verrouiller la valeur générée de la LFSR pour cycle d’horloge. Cette sortie devenue alors l’entrée d’un multiplexeur pour que la LED devrait être soit activée ou désactivé pour cycle d’horloge. En raison du multiplexeur, nous avons un signal select qui est déterminé par l’état de la FSM ; Si l’État est affichage puis sélectionnez serait élevé, si c’était à l’affût, il serait plus faible. Il s’agit d’une technique que nous avons utilisé pour que la LED puisse rester allumée pendant une courte période de temps et avant de s’éteindre pour créer un modèle.
État d’attente :
Le but de l’état d’attente était pour l’affichage LED indiquer au programme lorsque le modèle est prêt à être générée, puis continuer sur le prochain FSM quand c’était fini afficher le modèle.