Étape 6: Descriptions de Modules VHDL
Compteur de la minuterie :
Minuterie dépend de plusieurs variables. La principale variable est la fr, qui a été parlée dans la machine à états finis. Ce programme est le programme qui permet de s’assurer qu’après une certaine quantité de cycle (dans notre cas 4), le programme se termine. Si le fr = 1, puis le module ajoute un à un nombre binaire de 3 bits, qui est au départ à zéro, sur le lever du CLK. sinon le compteur est remis à zéro. Il y a aussi une sortie à afficher si le temps est écoulé ou si vous avez appuyé sur le bouton droit.
Compteur de score :
D’un point de vue fonctionnel, le compteur totalise 1 au score total s’il reçoit un signal de match. Sinon il la partition est définie à la note précédente. Le score est initialement défini à zéro. Le score est de réinitialisations à zéro dans l’état d’inactivité de la machine à états finis.
Comparateur :
Le comparateur prend dans deux bus de 3 bits et compare ceux aux bus lorsque l’en est 1. Sur des autobus représente l’inclinomètre et l’autre est les LEDs. Ce comparateur est essentiellement de vérifier si l’inclinomètre et les voyants répondent. S’ils le font, il envoie un signal de match, dans le cas contraire le non match de signal est d’être envoyer. Si l’élément de comparaison voit que le btn n’ont pas été de presse, il ne donnera pas égaler ou ne correspond pas à n’importe quel signal.
sseg_dec :
Code a été créé par Bryan Mealy. Ce code comporte peu de composants. Il convertit de binaire en décimal, gère l’affichage à sept segments avec la valeur d’entrée, et il contient aussi un diviseur d’horloge.
Division de l’horloge :
Le code de diviseur d’horloge a été écrit par Bryan Mealy. Un diviseur d’horloge ralentit ou augmente la fréquence de l’horloge. Nous avons peaufiné les valeurs max afin de correspondre le laps de temps / cycle nous cherchaient. Notre diviseur d’horloge modifiés s’exécute sur un trimestre une deuxième période.
Décodeurs :
Nous n'avons qu’un seul décodeur qui assigne la valeur aléatoire de 8 bits vers des valeurs différentes 3 bits. Le bit 8 nombre représente la valeur aléatoire que nous obtenons par le générateur de bits aléatoires que nous serons parlé davantage dans les détails plus tard. Le nombre de bits 3 représente la LED qui va être illuminé.
Driver de LED :
Ce module était censé être le pilote pour l’indicateur de touche et le tempo de LED. Le tempo LED simplement copiée le signal d’horloge ralenti de notre diviseur d’horloge et flashé sur le rythme du jeu. Le voyant du bouton LED clignote sur les deux premiers des quatre beats indiqués par l’indicateur de tempo, comme il copié le signal de notre horloge super lent (période de quatre temps).
Sélecteur de bouton au hasard :
Le sélecteur bouton aléatoire que nous avions utilisé un pseudo random bit générateur, créé par un registre à décalage rétroaction linéaire (LFSR ou pour faire court). Ce LFSR est simplement une chaîne de d-flip flops avec quelques sorties de sélectionner flip-flop menant à portes XOR qui mènent vers le premier flop d-flip. Cette chaîne crée une séquence semi-aléatoire qui se répète à un certain moment (mais pas rapidement). Ce LFSR crée un nombre binaire au hasard huit bits (au format décimal, quelque part entre 0 et 255), que nous envoyons ensuite notre décodeur choisir un bouton. (Nos PRBG a été modélisé après PRBG de 16 bits de Debashish Mohapatra, qui se trouve herehttp://www.debashish.info/index.php/e-learning/vlsi-design/vhdl-codes/174-prbs-pseudo-random-binary-sequence-generator-vhdl-code-and-vhdl-testbench-creation)