Table des matières:

Chronomètre de base utilisant VHDL et carte Basys3 : 9 étapes
Chronomètre de base utilisant VHDL et carte Basys3 : 9 étapes

Vidéo: Chronomètre de base utilisant VHDL et carte Basys3 : 9 étapes

Vidéo: Chronomètre de base utilisant VHDL et carte Basys3 : 9 étapes
Vidéo: [Tuto] Comment programmer un microcontrôleur virtuel avec Proteus et MikroC? 2024, Juillet
Anonim
Image
Image

Bienvenue dans l'instructable sur la façon de construire un chronomètre à l'aide de la carte VHDL de base et Basys 3. Nous sommes ravis de partager notre projet avec vous! Il s'agissait d'un projet final pour le cours CPE 133 (Design numérique) à Cal Poly, SLO à l'automne 2016. Le projet que nous avons construit est un simple chronomètre qui démarre, se réinitialise et met le temps en pause. Il prend trois boutons poussoirs sur la carte Basys3 comme entrées, et l'heure est affichée sur l'affichage à sept segments à quatre chiffres de la carte. Le temps écoulé est affiché au format secondes: centisecondes. Il utilise l'horloge système de la carte comme entrée pour suivre le temps écoulé et affiche l'heure sur les quatre chiffres de l'affichage à sept segments.

Étape 1: Matériaux

Réglage des entrées et des sorties
Réglage des entrées et des sorties

Le matériel dont vous aurez besoin pour ce projet:

  • 1 ordinateur avec Vivado Design Suite WebPack installé depuis Xilinx (préférer la version 2016.2)
  • 1 carte FPGA Digilent Basys3 Xilinx Artix-7
  • 1 câble USB

Étape 2: Configuration des entrées et des sorties

La figure ci-dessus montre un schéma fonctionnel de niveau supérieur du module de chronomètre principal. Le chronomètre prend les entrées « CLK » (horloge), « S1 » (bouton de démarrage), « S2 » (bouton de pause) et « RST » (réinitialisation) et a une sortie « Anodes » 4 bits, un sortie « segment » et une sortie à un seul bit « DP » (point décimal). Lorsque l'entrée "S1" est au niveau haut, le chronomètre commence à compter le temps. Lorsque "S2" est bas, le chronomètre met le temps en pause. Lorsque "RST" est élevé, le chronomètre s'arrête et réinitialise l'heure. Il y a quatre sous-modules dans le circuit: le diviseur d'horloge, le compteur de chiffres, le pilote d'affichage à sept segments et le codeur d'affichage à sept segments. Le module principal du chronomètre relie tous les sous-modules entre eux et aux entrées et sorties.

Étape 3: fabrication d'horloges

Faire des horloges
Faire des horloges

Le module diviseur d'horloge prend une horloge système et utilise une entrée diviseur pour créer une horloge dont la vitesse ne dépasse pas celle de l'horloge système. Le chronomètre utilise deux modules d'horloge différents, l'un qui crée une horloge à 500 Hz et l'autre qui crée une horloge à 100 Hz. Le schéma du diviseur d'horloge est illustré dans la figure ci-dessus. Le diviseur d'horloge comprend une entrée à un seul bit "CLK", et une entrée à 32 bits "Divisor" et la sortie à un seul bit "CLKOUT". "CLK" est l'horloge système et "CLKOUT" est l'horloge résultante. Le module comprend également une porte NON, qui bascule le signal "CLKTOG" lorsque le compte atteint la valeur du diviseur.

Étape 4: Compter jusqu'à dix

Compter jusqu'à dix
Compter jusqu'à dix

Le compteur de chiffres compte chaque chiffre de 0 à 10 et crée une autre horloge pour que le chiffre suivant fonctionne à partir de celle qui oscille lorsque le compte atteint 10. Le module prend 3 entrées à bit unique "S", "RST" et "CLK " et se traduit par une sortie à un seul bit "N" et une sortie à 4 bits "D". L'entrée "S" est l'entrée d'activation. L'horloge s'allume lorsque "S" est haut et s'éteint lorsque "S" est bas. "RST" est l'entrée de réinitialisation de sorte que l'horloge se réinitialise lorsque "RST" est haut. "CLK" est l'entrée d'horloge pour le compteur de chiffres. "N" est la sortie d'horloge qui devient l'horloge d'entrée pour le chiffre suivant. La sortie "D" présente la valeur binaire du chiffre auquel se trouve le compteur.

Étape 5: Affichage des nombres

Affichage des nombres
Affichage des nombres

L'encodeur d'affichage à sept segments codera le nombre binaire reçu du module pilote d'affichage à sept segments et le transformera en un flux de bits qui sera interprété comme des valeurs « 1 » ou « 0 » pour chaque segment de l'affichage. Le nombre binaire est reçu par le module en tant que "chiffre" d'entrée à 4 bits et donne lieu à des "segments" de sortie à 7 bits. Le module se compose d'un seul bloc de traitement de cas qui attribue un flux de 7 bits spécifique pour chaque valeur d'entrée possible de 0 à 9. Chaque bit des flux de sept bits représente l'un des sept segments des chiffres affichés. L'ordre des segments dans le flux est « abcdefg » avec des « 0 » représentant les segments qui s'allument pour le nombre donné.

Étape 6: Comment afficher le chronomètre

Comment afficher le chronomètre
Comment afficher le chronomètre

Dans le module pilote d'affichage à sept segments, il y a quatre entrées à 4 bits "D0", "D1", "D2" et "D3", chacune représentant les quatre chiffres à afficher. L'entrée "CLK" est l'entrée d'horloge du système. La sortie à un bit "DP" représente le point décimal sur l'affichage à sept segments. La sortie 4 bits "Anodes" détermine quel chiffre sur l'affichage à sept segments est affiché et la sortie 4 bits "temp" dépend de l'état de l'entrée de commande 2 bits "SEL". Le module utilise 4 multiplexeurs pour l'entrée de contrôle « SEL » et les trois sorties; "Anodes", "temp" et "DP".

Étape 7: Tout rassembler

Un bloc de processus « if » fonctionnant à partir de l'horloge 500 Hz est utilisé pour créer les boutons de démarrage et de pause. Reliez ensuite tous les sous-modules dans le module principal du chronomètre en déclarant les composants de chaque sous-module individuel et en utilisant divers signaux. Les sous-modules numériques prennent en charge la sortie d'horloge du sous-module numérique précédent, le premier prenant en charge l'horloge à 100 Hz. Les sorties "D" des sous-modules digitaux deviennent alors les entrées "D" du module pilote d'affichage à sept segments. Et enfin, la sortie "temp" du module de pilote d'affichage à sept segments devient l'entrée "temp" du module d'encodeur à sept segments.

Étape 8: Contraintes

Contraintes
Contraintes

Utilisez 3 boutons-poussoirs (W19, T17 et U18) pour les entrées "RST", "S1" et "S2". W19 est le bouton de réinitialisation, T17 est le bouton de démarrage (S1) et U18 est le bouton de pause (S2). Une contrainte pour l'entrée d'entrée d'horloge est également requise à l'aide du port W5. N'oubliez pas non plus d'ajouter cette ligne à la contrainte d'horloge:

create_clock -add -name sys_clk_pin -period 10.00 -waveform {0 5} [get_ports {CLK}]

Reliez également les anodes et les segments à la carte afin que le chronomètre s'affiche sur l'affichage à sept segments comme indiqué dans le fichier de contraintes.

Étape 9: Tester

Essai
Essai

Assurez-vous que votre appareil fonctionne en jouant avec les trois boutons: appuyez et maintenez-les dans tous les ordres possibles afin de trouver d'éventuels problèmes avec votre code.

Conseillé: