TP3 : Compteur Hexadécimal

Documents pareils
FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Manipulations du laboratoire

IFT1215 Introduction aux systèmes informatiques

VIII- Circuits séquentiels. Mémoires

SIN-FPGA DESCRIPTION PAR SCHEMA

QUESTION 1 {2 points}

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Cours Informatique 1. Monsieur SADOUNI Salheddine

GPA770 Microélectronique appliquée Exercices série A

Projet audio. Analyse des Signaux ELE2700

Comme chaque ligne de cache a 1024 bits. Le nombre de lignes de cache contenu dans chaque ensemble est:

Université de La Rochelle. Réseaux TD n 6

PIC EVAL Dev Board PIC18F97J60

Conception et réalisation d'une pédale MIDI

Le langage VHDL. Eduardo Sanchez EPFL

Représentation d un entier en base b

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

Transmissions série et parallèle

1 Description générale de VISFIELD

Cours 1 : Qu est-ce que la programmation?

MAC-TC: programmation d un plate forme DSP-FPGA

TABLE DES MATIÈRES 1. DÉMARRER ISIS 2 2. SAISIE D UN SCHÉMA 3 & ' " ( ) '*+ ", ##) # " -. /0 " 1 2 " 3. SIMULATION 7 " - 4.

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

Les portes logiques. Voici les symboles des trois fonctions de base. Portes AND. Portes OR. Porte NOT

Tout savoir sur le matériel informatique

Matériel & Logiciels (Hardware & Software)

Mini_guide_Isis.pdf le 23/09/2001 Page 1/14

REALISATION D UNE CALCULATRICE GRACE AU LOGICIEL CROCODILE CLIPS 3.

T. BLOTIN Lycée Paul-Eluard SAINT-DENIS

ÉCOLE POLYTECHNIQUE DE MONTRÉAL. Département de Génie Électrique. La technologie de TEXAS INSTRUMENTS DSP pour le cours Analyse des Signaux ELE2700

On distingue deux grandes catégories de mémoires : mémoire centrale (appelée également mémoire interne)

CONVERTISSEURS NA ET AN

Conception de circuits numériques et architecture des ordinateurs

Atelier C TIA Portal CTIA04 : Programmation des automates S7-300 Opérations numériques

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Cours de Génie Logiciel

Projet Active Object

Système binaire. Algèbre booléenne

Conventions d écriture et outils de mise au point

Cours 1 : Introduction Ordinateurs - Langages de haut niveau - Application

La programmation des PIC en C. Les fonctions, les interruptions.

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

Une version javascript sera disponible directement dans le cours prochainement.

Ordinateurs, Structure et Applications

TP Modulation Démodulation BPSK

Initiation au binaire

MICROCONTROLEURS PIC PROGRAMMATION EN C. V. Chollet - cours-pic-13b - 09/12/2012 Page 1 sur 44

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Cours 1 : La compilation

Fiche technique CPU 314SC/DPM (314-6CG13)

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

Annexe : La Programmation Informatique

Proteus Design Suite V7 Instruments virtuels

Présentation du PL/SQL


Mentions légales (non traduites) Introduction Légendes Schémas de raccordement Configuration de la S16...

USTL - Licence ST-A 1ère année Codage de l information TP 1 :

MICROINFORMATIQUE NOTE D APPLICATION 1 (REV. 2011) ARITHMETIQUE EN ASSEMBLEUR ET EN C

Série D65/D75/D72 Afficheurs digitaux modulaires

Prototypage électronique

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

SUR MODULE CAMÉRA C38A (OV7620)

Nom de l application

Le codage informatique

Concept de machine virtuelle

INTRODUCTION AUX SYSTEMES D EXPLOITATION. TD2 Exclusion mutuelle / Sémaphores

Cours d algorithmique pour la classe de 2nde

Éléments d'architecture des ordinateurs

ANALYSE TRAMEs LIAISON SERIE

J AUVRAY Systèmes Electroniques TRANSMISSION DES SIGNAUX NUMERIQUES : SIGNAUX EN BANDE DE BASE

PREMIERE UTILISATION D IS-LOG

Programmation en langage C d un µcontrôleur PIC à l aide du compilateur C-CCS Sommaire

Flowcode - Mode d'emploi

Initiation à la programmation en Python

Définition 0,752 = 0,7 + 0,05 + 0,002 SYSTÈMES DE NUMÉRATION POSITIONNELS =

Informatique Générale

Conception Systèmes numériques VHDL et synthèse automatique des circuits

Mini_guide_Isis_v6.doc le 10/02/2005 Page 1/15

PROGRAMMATION EVENEMENTIELLE sur EXCEL

Le service FTP. M.BOUABID, Page 1 sur 5

Ordinateurs, Structure et Applications

Tests de performance du matériel

AMICUS 18 (2ème partie) 4) Présentation du logiciel Amicus IDE

Algorithmique I. Algorithmique I p.1/??

Débuter avec PsoC ou PsoC niveau 0

Dossier technique. Présentation du bus DMX et Utilisation des options EL13 / EL14 ERM AUTOMATISMES INDUSTRIELS 1 LE PROTOCOLE DMX 2

L'instruction if permet d'exécuter des instructions différentes selon qu'une condition est vraie ou fausse. Sa forme de base est la suivante:

Conception Systèmes numériques VHDL et synthèse automatique des circuits

Conférence sur les microcontroleurs.

Hiérarchie matériel dans le monde informatique. Architecture d ordinateur : introduction. Hiérarchie matériel dans le monde informatique

SoMachine. Solution logicielle pour votre architecture Machine Atelier de découverte. SoMachine

V- Manipulations de nombres en binaire

ELP 304 : Électronique Numérique. Cours 1 Introduction

Network Shutdown Module V3 Extension du Manuel Utilisateur pour architecture Virtualisée VMWare ESX Server

Architecture des ordinateurs

Cours Informatique Master STEP

Transcription:

TP3 : Compteur Hexadécimal Introduction : En logique séquentielle, les sorties ne dépendent pas seulement des entrées, mais également des séquences des entrées passées. Pour ce faire, le circuit utilise une partie mémoire qui va lui permettre de retrouver l état induit par les entrées passées. La sortie est par conséquent calculée en fonction de l état présent et des entrées qui arrivent au système. Le langage VHL possède un jeu d instructions séquentielles très complet, mais uniquement utilisable au sein d un processus. Comme instructions séquentielles il y a l instruction wait, la structure de boucle, la structure conditionnelle (if then else ) et l instruction case. Notons qu en structure conditionnelle, une description incomplète (absence de : else ) crée l effet mémoire, un effet propre au système séquentiel. En hardware, cela se traduit par la présence d une bascule. Objectif du TP : L objectif de ce TP est de décrire en VHL puis implémenter sur une carte FPGA un compteur Hexadécimal (Figure 1). Un compteur Hexadécimal est un circuit basé sur un «Compteur binaire 4-bit» à cycle complet (compte de 0 jusqu à 15) et qui affiche les valeurs de sortie en format hexadécimal sur un afficheur 7-segments à travers un «écodeur». Le circuit contient aussi un module «iviseur de Fréquence» dont le rôle est de générer l horloge nécessaire au fonctionnement du compteur 4-bit à partir de l horloge principale de la carte FPGA. La figure ci-dessous présente le travail à réaliser Horloge 50Hz de la carte FPGA iviseur de Fréquence Horloge du compteur Compteur 4-bit 4 ecodeur 12 d'afficheur 7-segments Programme VHL à réaliser Figure 1 : Schéma du compteur Hexadécimal Remarque: Il est important de comprendre que cette figure vous donne l'architecture de votre programme VHL : on utilisera la programmation structurelle. Ce style consiste à assembler des composants créés séparément. Plan du TP : 1. Le compteur 4-bit 2. Le diviseur de fréquence 3. Le décodeur de l afficheur 7-segments 4. Programme principal : Compteur hexadécimal Remarque importante : Vous allez compléter chacune des 3 premières parties du TP dans son propre dossier. Pour la 4 ème partie, c.à.d. le programme principal, vous allez rassembler les fichiers.vhd développés précédemment (copier/coller les de leurs sources vers le dossier «Principal»). Tous les fichiers nécessaires au TP se trouvent dans le dossier TP3_work. ENICAR (2015/2016) 1

1. Le compteur 4-bit Un compteur est un circuit intégré numérique destiné à compter le nombre d'impulsions d horloge appliquées à son entrée. En VHL, les compteurs sont des éléments très utiles qui permettent de gérer tout ce qui est temporisation et bien sur le comptage. Clock Compteur 4-bit (3..0) Figure 2 : Schéma représentatif d un compteur 4-bit Le compteur asynchrone est basé sur le diviseur de fréquence. Il s'agit d'une bascule dont la sortie inverseuse () est envoyée sur son entrée (figure 3). Ainsi, à chaque front montant de l'entrée d'horloge, la donnée transférée sur la sortie est complémentée (change d'état). La fréquence du signal est donc divisée par deux (figure 4). Clk Clk Clr Clr Figure 3 : iviseur de fréquence Figure 4 : Chronogramme du diviseur de fréquence Un compteur est constitué de plusieurs diviseurs de fréquences (autant que de bits requis) monté en cascade (la sortie de l'un pilotant la du suivant). Un compteur à N sorties ( 0 à N-1 ) permet de compter au maximum (2 N - 1) impulsions d'entrées. L architecture d un compteur 4-bit (compte de 0 à 15) est présentée sur la figure 5. 0 1 2 3 Clock Figure 5 : Architecture d un compteur binaire 4 bits Figure 6 : Chronogrammes du compteur 4-bit Comme on peut observer sur la figure 6, les sorties 0 1 2 3 sont successivement égales à 0000, 0001, 0010,..., 1111, puis à nouveau 0000, 0001, 0010,... c'est-à-dire 0, 1, 2,..., 15, 0, 1, 2,... Ce cycle continue indéfiniment, aussi longtemps que le signal d'horloge est présent. ENICAR (2015/2016) 2

1.1) écrire en VHL une bascule active sur front montant avec un reset active à l état haut (ff.vhd). 1.2) Maintenant, décrire en VHL le compteur binaire 4-bit de la figure 5, basé sur 4 bascules (counter4.vhd). Indice : utiliser l instruction concurrente for generate. 1.3) Compléter le testbench du compteur (counter4_tb.vhd) et simuler le avec ModelSim de la façon suivante : - Créer une horloge (Clock) de période T = 20 ns. - Mettre clear à 1 pendant 10 ns. - Mettre clear à 0. - ans ModelSim, Spécifier 350 ns comme durée totale de simulation. Lancer la simulation, observer les chronogrammes et vérifier que le compteur fonctionne comme prévu. 2. Le diviseur de fréquence Un circuit qui divise une fréquence de signal est appelé un diviseur de fréquence. iviser indique une conversion de la fréquence d'un signal numérique, tel qu'une horloge, en le réduisant à 1/N. Comme on a vu dans la première partie du TP, un compteur est un diviseur de 1/2 n (où n est le nombre de bits). Figure 7 : Compteur/iviseur de Fréquence En effet, si on observe les chronogrammes des signaux de sortie d un compteur 4-bits (Figure 7), on peut voir que la sortie O 1, le bit de poids le plus faible, a une fréquence égale à la moitié de la fréquence du signal d horloge commandant le compteur (). e même pour la sortie O 2 qui a une fréquence égale à la moitié de celle du signal qui la précède et ¼ de la fréquence d horloge, et ainsi de suite. Ainsi, étant donnée la fréquence f de l horloge, la fréquence d une sortie O i peut s écrire : f = f / 2 i+1 Par exemple un simple compteur 26-bits peut être utilisé comme diviseur de fréquence qui produit un large choix de fréquences, allant de 25Mhz à moins d 1Hz, à partir de l'horloge 50Mhz de la carte, comme le montre le Tableau 1, q(i) étant le bit d indice i de la sortie q du compteur. Tableau 1 Fréquences produites par un compteur 26-bit q(i) Fréquence Période Période Fréquence Période q(i) Fréquence (Hz) q(i) (Hz) (ms) (ms) (Hz) (ms) i 50000000.00 0.00002 8 97656.25 0.01024 17 190.73 5.24288 0 25000000.00 0.00004 9 48828.13 0.02048 18 95.37 10.48576 1 12500000.00 0.00008 10 24414.06 0.04096 19 47.68 20.97152 2 6250000.00 0.00016 11 12207.03 0.08192 20 23.84 41.94304 3 3250000.00 0.00032 12 6103.52 0.16384 21 11.92 83.88608 4 1562500.00 0.00064 13 3051.76 0.32768 22 5.96 167.7721 5 781250.00 0.00128 14 1525.88 0.65536 23 2.98 335.5443 6 390625.00 0.00256 15 762.94 1.31072 24 1.49 671.0886 7 195312.50 0.00512 16 381.47 2.62144 25 0.74 1 342.177 ENICAR (2015/2016) 3

Pour notre compteur binaire 4-bits, on a besoin d un signal d horloge ayant une fréquence suffisamment faible. Sans cela, il ne sera pas possible d observer le changement de la sortie du compteur à l œil humain. On aura donc besoin de transformer la fréquence de l horloge très élevé de la carte FPGA (50 Mhz) en une fréquence de quelques Hertz. Pour générer cette fréquence, on va avoir besoin d un circuit diviseur de fréquence (Figure 8). 50 Mhz mclk clr iviseur de Fréquence (Compteur 26-bit) Figure 8 : iviseur de fréquence mclk : C est l entrée d horloge du diviseur de fréquence. Elle est de 50 Mhz. clr : Cette entrée sert à remettre à zéro le diviseur de fréquence. Clk_ctr : La fréquence de sortie. 2.1) On désire créer une horloge ayant une fréquence égale à 0.74 Hz (T 1.34 seconde). ans le fichier freq_div.vhd, modifier le code du compteur 4-bit (counter4.vhd) pour créer un compteur générant cette fréquence. 2.2) Compléter le testbench (freq_div_tb.vhd) et simuler le avec ModelSim de la façon suivante : - Créer une horloge (mclk) de période T = 20 ns (Ceci correspond à une fréquence de 50Mhz). - Mettre clr à 1 pendant 10 ns. - Mettre clr à 0. - ans ModelSim, spécifier 1400 ms comme durée totale de simulation. 3. Le décodeur de l afficheur 7-segments À la sortie du compteur 4-bit, les signaux doivent être décodés pour pouvoir commander l afficheur 7-segments. Pour cela, on utilisera un «décodeur» (Figure 9). clk_ctr Figure 9 : Le écodeur et l'afficheur 7-segments Figure 10 : Entrées écodeur/ Sorties Afficheur ENICAR (2015/2016) 4

Le décodeur doit transformer le nombre reçu en entrée sur 4 bits en 7 bits afin de l afficher en écriture hexadécimal (0 jusqu à F) sur un afficheur 7-segment, comme le montre la figure 10. La carte FPGA «Spartan-3 Starter Kit» possède 4 afficheurs 7-segments à LEs commandables par l utilisateur via les broches de l FPGA, comme indiqué dans la Figure 11. Chaque afficheur partage huit signaux de commandes avec les 3 autres afficheurs qui servent à allumer les segments LEs. Chaque afficheur a également une entrée de commande d'anode distincte (ANx). L indice des broches de l FPGA connectées aux afficheurs apparaît entre parenthèses devant ANx. Pour allumer individuellement un segment LE d un afficheur, il faut mettre au niveau logique bas l entrée de contrôle de ce segment aussi bien que le signal de commande de l anode associée à cet afficheur. Figure 11 : Contrôles des afficheurs de la carte FPGA Par exemple, ans la figure 11 le premier afficheur en partant de gauche affiche le chiffre '2'. Les valeurs numériques contrôlant l'affichage dans cet exemple sont indiquées en bleu. Le signal de commande de l anode AN3 est au niveau logique bas, ce qui permet à ces valeurs de cibler l afficheur en question. Ainsi, les entrées de commande des segments, A à G et P, contrôlent les segments de l afficheur. Un niveau logique bas allume un segment individuel, un niveau haut l éteint. Par exemple, en mettant un 0 sur le signal d'entrée A, on allume le segment «a». Les contrôleurs d'anode pour les afficheurs restants, AN [2:0] sont tous maintenus à 1. Ainsi, ces 3 afficheurs ignorent les valeurs présentées sur les entrées A à G et P. En VHL on pourra utiliser un std_logic_vector(3 downto 0) pour le sélecteur de l afficheur (AN). La variable correspondante sera dénommée "sel_aff". 3.1) Compléter la description VHL du décodeur de la figure 12 qui permettra d'afficher le contenu de 4 bits en écriture Hexadécimal sur l afficheur d indice AN3. Consultez le Tableau 2 pour avoir les valeurs des entrées nécessaires pour afficher des caractères hexadécimaux sur les 7 segments de l afficheur. (3..0) ecodeur de l'afficheur Seg(0) Seg(1) Seg(2) Seg(3) Seg(4) Seg(5) Seg(6) P sel_aff Figure 12 : écodeur 4-bit vers 7 segments 3.2) Compléter le testbench du décodeur et simuler le avec ModelSim. Tableau 2 Caractère Héxadécimal a b c d e f g 0 0 0 0 0 0 0 1 1 1 0 0 1 1 1 1 2 0 0 1 0 0 1 0 3 0 0 0 0 1 1 0 4 1 0 0 1 1 0 0 5 0 1 0 0 1 0 0 6 0 1 0 0 0 0 0 7 0 0 0 1 1 1 1 8 0 0 0 0 0 0 0 9 0 0 0 0 1 0 0 A 0 0 0 1 0 0 0 B 1 1 0 0 0 0 0 C 0 1 1 0 0 0 1 1 0 0 0 0 1 0 E 0 1 1 0 0 0 0 F 0 1 1 1 0 0 0 ENICAR (2015/2016) 5

4. Programme principal : Compteur hexadécimal Maintenant que les différents modules du compteur hexadécimal sont prêts, vous allez les assembler dans un seul programme principal. 4.1) ans le dossier nommé «Principal», transférer tous les fichiers des modules complétés précédemment : counter4.vhd, freq_div.vhd ET decoder.vhd. 4.2) Faire la description structurelle du compteur hexadécimal «hex_counter.vhd» en y instanciant et en y reliant les 3 modules comme le montre le schéma ci-dessous: 50 Mhz mclk iviseur de Fréquence clk_ctr Seg(0) Seg(1) (0) Seg(2) Compteur 4-bit (1) (2) ecodeur de l'afficheur Seg(3) Seg(4) Seg(5) (3) Seg(6) P sel_aff Figure 13 : Schéma complet du compteur Hexadécimal 4.3) Compléter le testbench du compteur Hexadécimal («hex_counter_tb.vhd ) et simuler le avec ModelSim. Remarque : Penser à utiliser un indice i faible pour la sortie du iviseur de fréquence (q(i)) pour pouvoir visualiser les sorties sur le simulateur. Après la simulation, ne pas oublier de restaurer l ancienne valeur de i. 4.4) Avec Xilinx ISE, implémenter le «compteur hexadécimal» sur la carte Spartan-3 (Suivre les étapes du Tutorial). Lors de l étape d assignation des broches (Assign Package Pins), connecter les ports du compteur hexadécimal aux broches de la carte comme suit: L entrée «clear» au bouton poussoir BTN0. L horloge d entrée du diviseur de fréquence (mclk) à l horloge de la carte FPGA *. Les sorties du décodeur aux broches du bloc des afficheurs 7-segments * et choisir l afficheur d indice AN3. Pour résumer : ENICAR (2015/2016) 6

Compteur_Hex (VHL) Entrées : mclk Clr Carte FPGA Clock Oscillator(50Mhz) BTN0 Sorties : sel_aff Seg(6) Seg(5) Seg(4) Seg(3) Seg(2) Seg(1) Seg(0) dp AN0,AN1,AN2,AN3 A B C E F G P BTN0 Afficheur AN3 (*) : Vous trouverez les indices des broches de l FPGA qui contrôlent les segments LE d un afficheur 7-segments dans les Tableaux 3-1 et 3-2 de la page 16 du document «Spartan-3 Starter Kit Board User Guide.pdf». L indice de l horloge de l FPGA est dans le chapitre 8 du même document. 4.5) Vérifier que votre compteur fonctionne correctement. ENICAR (2015/2016) 7