Exemple de code VHDL pour un compteur connecte a un afficheur 7-segments

Documents pareils
Manipulations du laboratoire

SIN-FPGA DESCRIPTION PAR SCHEMA

Le langage VHDL. Eduardo Sanchez EPFL

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

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

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

IFT1215 Introduction aux systèmes informatiques

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

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

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

QUESTION 1 {2 points}

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

ASR1 TD7 : Un microprocesseur RISC 16 bits

Utilitaires méconnus de StrataFrame

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Ce document décrit la démarche à suivre pour installer les outils de développement et compiler le projet TANAGRA.

Ordinateurs, Structure et Applications

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

SUR MODULE CAMÉRA C38A (OV7620)

SYSTEME DE PALPAGE A TRANSMISSION RADIO ETUDE DU RECEPTEUR (MI16) DOSSIER DE PRESENTATION. Contenu du dossier :

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Paris Airports - Web API Airports Path finding

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

RÉALISATION ET MISE AU POINT D UN SYSTÈME DE TÉLÉSURVEILLANCE VIDÉO

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

Utilisation de JAVA coté Application serveur couplé avec Oracle Forms Hafed Benteftifa Novembre 2008

Système binaire. Algèbre booléenne

Recherche dans un tableau

Partie 7 : Gestion de la mémoire

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

UNIVERSITE CATHOLIQUE DE LOUVAIN École Polytechnique de Louvain

ADÉQUATION ALGORITHME-ARCHITECTURE APPLIQUÉE AUX CIRCUITS RECONFIGURABLES

Plan. École Supérieure d Économie Électronique. Plan. Chap 9: Composants et systèmes de sécurité. Rhouma Rhouma. 21 Juillet 2014

REALISATION d'un. ORDONNANCEUR à ECHEANCES

Algorithmique & programmation

Historisation des données

SOMMAIRE Equipement Instructions générales. 1.Vue générale. 1.1 Face avant. 1.2 Face arrière. 2 Mode D emploi Adressage DMX

IRL : Simulation distribuée pour les systèmes embarqués

SOMe2100 MANUEL D UTILISATION. TRANSMETTEUR GSM/GPRS - M-Bus Master D INSTALLATION. Montage sur rail DIN. Notice simplifiée du module SOMe2100

Génie Logiciel avec Ada. 4 février 2013

Une méthode de conception de systèmes sur puce

ECR_DESCRIPTION CHAR(80), ECR_MONTANT NUMBER(10,2) NOT NULL, ECR_SENS CHAR(1) NOT NULL) ;

NIVEAU D'INTERVENTION DE LA PROGRAMMATION CONCURRENTE

27/11/12 Nature. SDK Python et Java pour le développement de services ACCORD Module(s)

Cours Bases de données 2ème année IUT

Surveillance de Scripts LUA et de réception d EVENT. avec LoriotPro Extended & Broadcast Edition

Présentation Windows Azure Hadoop Big Data - BI

Chap17 - CORRECTİON DES EXERCİCES

Conception de circuits numériques et architecture des ordinateurs

Régler les paramètres de mesure en choisissant un intervalle de mesure 10µs et 200 mesures.

Latitude N Longitude E Altitude 376 m RÉSUMÉ MENSUEL DU TEMPS DE JANVIER 2014

Logiciel Vertec Notes de la Release 5.8

sommaire Archives... Archiver votre messagerie... Les notes... Les règles de messagerie... Les calendriers partagés Les listes de diffusions...

Préparer un état de l art

lundi 3 août 2009 Choose your language What is Document Connection for Mac? Communautés Numériques L informatique à la portée du Grand Public

Chapitre 1 : Introduction aux méthodologies de conception et de vérification pour SE

Projet # 3 Serrure à deux clés

France SMS+ MT Premium Description

Sage 100 CRM - Guide de la Fusion Avancée Version 8. Mise à jour : 2015 version 8

Séminaire RGE REIMS 17 février 2011

Quoi de neuf en LabVIEW FPGA 2010?

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

Algorithmique des Systèmes Répartis Protocoles de Communications

Supervision et infrastructure - Accès aux applications JAVA. Document FAQ. Page: 1 / 9 Dernière mise à jour: 15/04/12 16:14

Chapitre VI- La validation de la composition.

Cette Leçon va remplir ces attentes spécifiques du curriculum :

Micro-ordinateurs, informations, idées, trucs et astuces utiliser le Bureau à distance

Table des matières PRESENTATION DU LANGAGE DS2 ET DE SES APPLICATIONS. Introduction

Guide d'installation rapide TFM-560X YO.13

Les systèmes CDMS. et les logiciels EDC

Direction des Systèmes d'information

Importantes instructions de sécurité

Compilation (INF 564)

SQL MAP. Etude d un logiciel SQL Injection

L identification par radio fréquence principe et applications

Arbres binaires de recherche

Déploiement OOo en environnement Windows Terminal Server

1. CONFIGURATION DE LA CLE WEP CONFIGURATION DE LA CLE WPA CONFIGURATION D UN SSID SANS CHIFFREMENT... 6

CAISSE ENREGISTREUSE ELECTRONIQUE SE-G1

IV- Comment fonctionne un ordinateur?

Le multiplexage. Sommaire

TP a Notions de base sur le découpage en sous-réseaux

Règles et paramètres d'exploitation de Caparmor 2 au 11/12/2009. Pôle de Calcul Intensif pour la mer, 11 Decembre 2009

JES Report Broker. Campus Technologies. SAE de CHALEMBERT 1 Rue Blaise PASCAL JAUNAY-CLAN info@campustec.

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

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

Algorithmique répartie

Module Administration BD Chapitre 1 : Surcouche procédurale dans les SGBDS

CODAGE DES SMS. 2 Commandes «AT» 25 3 Matériels utilisés 55 4 Interfacer un téléphone GSM 73 5 Réalisations électroniques 101

SMARTair Présentation

L ALGORITHMIQUE. Algorithme

CNAM - CRA Nancy 2000/2001. Génie Logiciel. Jacques Lonchamp DEUXIEME PARTIE. Les techniques de spécification.

AutoForm plus R6 : Besoins systèmes

Les Triggers SQL. Didier DONSEZ. Université de Valenciennes Institut des Sciences et Techniques de Valenciennes

TP Modulation Démodulation BPSK

Mesures de temps de propagation de groupe sur convertisseurs de fréquence sans accès aux OL

VTP. LAN Switching and Wireless Chapitre 4

Configuration du driver SIP dans ALERT. V2

Transcription:

Exemple de code VHDL pour un compteur connecte a un afficheur 7-segments Dans cet exemple, nous allons faire un compteur qui compte de 0 a 9 et qui envoie la valeur de son compte a un afficheur a 7 segments. La valeur du compteur augmente a chaque seconde et recommence a 0 après que la valeur atteigne 9. Sur la plaquette DE2, il y a plusieurs afficheurs a 7-segments. Chaque afficheur est contrôle par 7 signaux qui proviennent du FPGA. Ces 7 signaux, qui indiquent si un segment est allume ou non, sont représentés dans la figure suivante comme étant les chiffres allant de 0 a 6. Pour représenter le chiffre 4, par exemple, il faudrait envoyer les bons signaux pour que les segments 1, 2, 5 et 6 soient allumes et que les autres ne le soient pas. Un détail à savoir de ces afficheurs sur le DE2 c est qu ils ont besoin d un 0 pour allumer. Donc, l envoi d un 1 a un segment l éteindrait. Pour l afficheur a 7 segments le plus a droite, les ports de sortie sont énumérés dans le tableau ci-dessous. Les connexions pour les autres afficheurs se trouvent dans la fiche technique du DE2. A ce stade, ce serait un bonne idée de savoir comment représenter chaque chiffre qu on va vouloir afficher. Par exemple, si on voulait afficher le chiffre 1, il faudrait allumer les segments 1 et 2 seulement. On voudra énumérer les segments a allumer pour tous les chiffres allant de 0 a 9. Ceci facilitera notre travail plus tard. Le but du design est de se faire un compteur allant de 0 à 9 qui incrémente à chaque seconde. Sachant que l horloge qui entre dans notre système fonctionne à 50MHz, on devrait le diviser pour faire un compteur opérant à 1Hz. Pour ce faire, on se fait un compteur allant de 0 a 50000000 avant de recommencer. Quand le compte est entre 0 et 25000000, on génère 0 tandis qu on génère 1 si le compte est entre 25000000 et 50000000. Notez en passant que mes valeurs ne sont pas précises puisque 50MHz ne représente pas exactement 50000000 cycles par seconde.

PROCESS (clk) IF clk'event AND clk = '1' THEN IF s_clk_compte > 50000000 THEN s_clk_compte <= (OTHERS => '0'); s_clk_compte <= s_clk_compte + 1; IF s_clk_compte < 25000000 THEN s_clk_lent <= '0'; s_clk_lent <= '1'; Nous obtenons une horloge du nom de s_clk_lent qui oscille à peu près à 1Hz. Nous allons maintenant utiliser cette horloge pour contrôler notre compteur décimal qui va de 0 à 9 avant de recommencer. Cette partie du code ressemble a ceci : PROCESS (s_clk_lent) IF s_clk_lent'event AND s_clk_lent = '1' THEN IF s_decimal > 8 THEN s_decimal <= (OTHERS => '0'); s_decimal <= s_decimal + 1; Pour afficher la valeur du compteur, on utilise un process combinatoire qui observe la valeur du compteur et qui génère les 7 signaux qui sont connectes a l afficheur. Si le compte était égal a 0, les segments 0, 1, 2, 3, 4 et 5 seront allumes. Ceci est décrit dans le morceau de code suivant : PROCESS (s_decimal) CASE s_decimal IS WHEN "0000" => WHEN "0001" =>... Dans un process séquentiel, on va vouloir énumérer TOUS les cas possibles. Cependant, dans notre cas, nous n avons besoin de spécifier que 10 cas allant de 0 à 9. Sachant qu on a besoin de 4 bits, qu arrive-t-il si le compte était égal a 12? Evidemment, cette situation ne devrait pas arriver, mais le VHDL veut quand même qu on spécifie

toutes les situations. Une façon de le faire est de spécifier les sorties pour toutes les valeurs allant de 0 à 8. Ensuite, on va dire «pour tous les autres cas, utilisez la même sortie que pour le chiffre 9. Ceci se fait de la façon suivante :... WHEN "1000" => WHEN OTHERS => END CASE; Le code final ressemblera à ceci : LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY countled IS PORT ( clk : IN STD_LOGIC; HEX00 : OUT STD_LOGIC; HEX01 : OUT STD_LOGIC; HEX02 : OUT STD_LOGIC; HEX03 : OUT STD_LOGIC; HEX04 : OUT STD_LOGIC; HEX05 : OUT STD_LOGIC; HEX06 : OUT STD_LOGIC ); END countled; ARCHITECTURE rtl OF countled IS SIGNAL s_clk_compte : STD_LOGIC_VECTOR(25 DOWNTO 0); SIGNAL s_clk_lent : STD_LOGIC; SIGNAL s_decimal : STD_LOGIC_VECTOR(3 DOWNTO 0); PROCESS (clk) IF clk'event AND clk = '1' THEN IF s_clk_compte > 50000000 THEN s_clk_compte <= (OTHERS => '0'); s_clk_compte <= s_clk_compte + 1;

IF s_clk_compte < 25000000 THEN s_clk_lent <= '0'; s_clk_lent <= '1'; PROCESS (s_clk_lent) IF s_clk_lent'event AND s_clk_lent = '1' THEN IF s_decimal > 8 THEN s_decimal <= (OTHERS => '0'); s_decimal <= s_decimal + 1; PROCESS (s_decimal) CASE s_decimal IS WHEN "0000" => WHEN "0001" => HEX00 <= '1'; WHEN "0010" => HEX02 <= '1'; WHEN "0011" => WHEN "0100" =>

HEX00 <= '1'; WHEN "0101" => HEX01 <= '1'; WHEN "0110" => HEX01 <= '1'; WHEN "0111" => WHEN "1000" => WHEN OTHERS => END CASE; END;