Démarche de projet avec Quartus II

Documents pareils
SIN-FPGA DESCRIPTION PAR SCHEMA

Manipulations du laboratoire

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

1 Démarrer L écran Isis La boite à outils Mode principal Mode gadget Mode graphique...

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

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

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

Introduction à Eclipse

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

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

Once the installation is complete, you can delete the temporary Zip files..

FONCTION COMPTAGE BINAIRE ET DIVISION DE FRÉQUENCE

Le langage VHDL. Eduardo Sanchez EPFL

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

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

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

Gestion des certificats en Internet Explorer

Espace pro. Installation des composants avec Firefox. Pour. Windows XP Vista en 32 et 64 bits Windows 7 en 32 et 64 bits

Manuel de formation Spaceman 1 ère journée

Acronymes et abréviations. Acronymes / Abbréviations. Signification

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

Instructions Mozilla Thunderbird Page 1

Comment sauvegarder ses documents

TP Blender n 2 : Importation d un modèle SketchUp et animation

- Visioconférence - Utiliser NetMeeting au quotidien. Richard BONMARIN DSO/DSI/EMC-EBZ

EVOLUTION 7.1 Déroulement DREAM INFO 1 Dossier 23 Ciel Gestion Commerciale.

Eclipse atelier Java

Fiche Mémo : Options d accessibilité sous Windows et Internet Explorer 5

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

1 ) INSTALLATION DE LA CONSOLE 2 2 ) PREMIER DÉMARRAGE DE LA CONSOLE 3 3 ) LES JOBS 4 4 ) LES ORDINATEURS 6

Groupe Eyrolles, 2003, ISBN : X

ACTIVITÉ DE PROGRAMMATION

MANUEL D UTILISATION - Précis Poste de Traitement d Images 1 - Déconvolution

Déploiement de SAS Foundation

SUGARCRM MODULE RAPPORTS

ARDUINO DOSSIER RESSOURCE POUR LA CLASSE

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

Contrôleur de communications réseau. Guide de configuration rapide DN

FileZilla. Sauvegarder son site Guppy à l aide de. Sommaire:

Installation et utilisation de Cobian Backup 8

Le langage C. Séance n 4

Nouveautés CRM 2015 & Migration. By Tanguy Touzard MVP CRM

1 Modélisation d être mauvais payeur

WebSpy Analyzer Giga 2.1 Guide de démarrage

CONFIGURATION DE L AUTOMATE SIEMENS

Installation et compilation de gnurbs sous Windows

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Installer Enterprise Miner 5.1 en SAS environnement Windows

Tutoriel Création d une source Cydia et compilation des packages sous Linux

Création du projet : 1 sur 13

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

ATELIER IMAGEJ. Différentes applications vous sont proposées pour apprendre à utiliser quelques fonctions d ImageJ :

Notice ARES Version 5.20 Française

KWISATZ LA GESTION DES REMISE EN BANQUE

Contrôler plusieurs ordinateurs avec un clavier et une souris

VIII- Circuits séquentiels. Mémoires

wxwidgets dans un environnement Microsoft Windows

Tutoriel première utilisation ICEM-CFD. Couche limite et modification du maillage en 2D

Universal Robots. Fiche Méthode : Installation du simulateur Polyscope

Mendeley, pour gérer sa bibliographie et la partager. Patricia Volland-Nail

Votre premier projet Android

INSTRUCTIONS D INSTALLATION SOUS WINDOWS 7 / WINDOWS VISTA / WINDOWS XP

MANUEL D INSTALLATION DES PRE REQUIS TECHNIQUES SALLE DES MARCHES V.7

Chaque ordinateur est constitué de différentes unités de stockage de données (Disque dur, Graveur ) que l on peut imaginer comme de grandes armoires.

Gestion des références bibliographiques. Comment simplifier la gestion des références bibliographiques?

Utilisation de GCM (Google Cloud Messaging) pour Android. Partie préliminaire éventuelle : Création d'un AVD lisant GCM

Millenium3 Atelier de programmation

MANUEL D INSTRUCTION

Construire des plug-ins pour SAS Management Console SAS 9.1

TP1 : Initiation à Java et Eclipse

Software and Hardware Datasheet / Fiche technique du logiciel et du matériel

Manuel BlueFolder ADMINISTRATION

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

Les différentes méthodes pour se connecter

Durée estimée :1 journée Date de la réalisation : Description Fournisseur Référence Nombre PU HT LM35CZ, LM35AZ LM35DZ

Direction des Systèmes d'information

Insérer des images dans Base

TD/TP 1 Introduction au SDK d Android

MS SQL Express 2005 Sauvegarde des données

GUIDE UTILISATEUR SYSTEMES CCTV

INSERER DES OBJETS - LE RUBAN INSERTION... 3 TABLEAUX

SUR MODULE CAMÉRA C38A (OV7620)

ET 24 : Modèle de comportement d un système Introduction à Labview et initiation à la réalisation d un Instrument Virtuel (VI).

Alors pour vous simplifiez la vie, voici un petit tuto sur le logiciel de sauvegarde (gratuit) SyncBack.

BIRT (Business Intelligence and Reporting Tools)

1) Installation de Dev-C++ Téléchargez le fichier devcpp4990setup.exe dans un répertoire de votre PC, puis double-cliquez dessus :

Logitech Tablet Keyboard for Windows 8, Windows RT and Android 3.0+ Setup Guide Guide d installation

MANUEL UTILISATEUR SOPISAFE V 3.5

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

Paxton. ins Net2 desktop reader USB

Création de Sous-Formulaires

Note de cours. Introduction à Excel 2007

Connexions à un projet CVS via Eclipse en accès local et distant. 15 Mai 2007

Tutoriel de formation SurveyMonkey

Travaux Pratiques de Commande par ordinateur 1 TRAVAUX PRATIQUES

Proteus Design Suite V7 Instruments virtuels

OpenOffice.org Calc Ouvrir un classeur

Procédure d installation des logiciels EBP sous environnement ESU4. Serveur SCRIBE ou Windows

CREATION D UNE EVALUATION AVEC JADE par Patrick RUER (

ENVOI EN NOMBRE DE MESSAGES AUDIO

Transcription:

Démarche de projet avec Quartus II Lors de la séance précédente, notre description ne comprenait qu un fichier VHDL ; nous allons maintenant voir comment gérer un projet comprenant plusieurs sous-ensembles, à travers l implantation d un chronomètre sur notre carte de développement. 1 Description d un chronomètre 1.1 Structure du projet Dans un premier temps, l affichage de notre chronomètre se fera sur un seul afficheur, puis nous ferons évoluer notre projet vers un affichage sur deux chiffres: oscillateur à quartz 25,175 MHz diviseur de fréquence compteur BCD décodeur BCD / 7 segments CPLD Un diviseur de fréquence semblable à celui de la séance précédente permettra d abaisser la fréquence de 25 MHz à 1 Hz, puis un compteur BCD attaquera un décodeur BCD / 7 segments pour commander l afficheur. Bien que pour un projet aussi simple il serait facile d avoir un seul fichier VHDL décrivant l ensemble, nous nous imposerons dans un premier temps l assemblage d éléments simple. Le diviseur et le décodeur seront décrits par deux fichiers VHDL, alors que pour le compteur nous utiliserons une fonction disponible dans les bibliothèques du logiciel. L ensemble sera assemblé au sein d un graphique. Pour réaliser notre projet de chronomètre, la solution la plus simple consisterait à faire attaquer l horloge d un compteur par la sortie S du diviseur. Cette solution conduirait à un système asynchrone, ce qui n est pas très gênant aux fréquences où nous travaillons. Cette possibilité parfaitement réalisable avec le logiciel Maxplus+ II (la génération précédente chez Altera) ne fonctionne pas avec Quartus si le rapport de division est aussi élevé. Le compilateur de Quartus a été optimisé pour les FPGA et non pour des CPLD comme notre circuit cible (voir détails en annexe). Il va donc être nécessaire que notre description générale soit synchrone, tous les sous-ensembles séquentiels devant avoir la même horloge. 1.2 Ouverture d un nouveau projet Ouvrir un nouveau projet que l on nommera CHRONO par exemple, au sein du répertoire du même nom ; à l aide de l assistant, y inclure le fichier du diviseur VHDL de la séance précédente (div.vhd), ainsi que le fichier de décodage (decodeur.vhd) que l on trouvera au sein du répertoire RESSOURCE\TP2. Le circuit cible est toujours le EPM7128LC84-7 pour une carte UP1 ou UP2 et le EP2C35F896C6 pour la carte DE2 ou EP2C70F896C6 pour la carte DE2-70. Sauvegarder les deux fichiers VHDL dans le répertoire du projet et supprimer du projet les fichiers du répertoire RESSOURCE\TP2. 1.3 Navigation dans le projet Contrairement à la séance précédente où notre projet était décrit par un unique fichier VHDL, nous allons cette fois travailler avec plusieurs descriptions au sein d un même projet comme on peut le Programmation des CPLD et FPGA en VHDL avec Quartus II 1/11

constater dans la fenêtre du «Project Navigator», onglet «Files». Il est donc primordial de savoir à un instant donné quelle description nous compilons ou nous simulons. Une seule description est active à un instant donné, celle placée en haut de la hiérarchie, que l on retrouve donc dans la fenêtre du «Project Navigator», onglet «Hierarchy». L opération décrite ci-après, peut se faire plus simplement en tapant «Ctrl Shift J» dans la fenêtre de la de la description que l on souhaite rende active. Pour éviter toute confusion, avant de lancer une «analyse et synthèse» ou une compilation, il est conseillé de systématiquement faire «Ctrl Shift J» afin de placer la description active (donc celle que vous avez sous les yeux sur votre écran) en haut de la hiérarchie du projet. 1.4 Modification du diviseur Pour rendre synchrone notre projet, nous allons modifier la description du diviseur afin qu il génère un signal C_OUT (pour Carry Out) autorisant le comptage du compteur. Ce signal passera à 1 lorsque le signal X du diviseur est au maximum ( soit M-1) et reste à 0 le reste du temps. On gardera le signal S du diviseur afin de faire clignoter les points décimaux des afficheurs (cartes UP) ou une DEL (cartes DE2), mais on supprimera le signal SEG (les bornes non utilisées pourront être placées en haute impédance au niveau du compilateur par exemple). Effectuer les modifications nécessaires et tester votre solution en imposant par exemple un modulo de 6 pour la simulation (en cas de problème, voir un exemple de solution en annexe). La fenêtre de la description VHDL étant active, créer un symbole graphique associé à ce fichier ; ce symbole nous servira pour la description générale de notre projet. Programmation des CPLD et FPGA en VHDL avec Quartus II 2/11

1.5 Analyse du décodeur Etudier le programme VHDL associé au décodeur, puis lancer une «analyse et synthèse» par «Ctrl Shift J» puis «Ctrl K» et créer un symbole pour cette description. 1.6 Implantation de la description générale Pour cette description, nous allons ouvrir un «fichier schéma» : Par un clic droit au centre de la feuille qui vient de s ouvrir, nous pouvons implanter les symboles associés à notre diviseur et à notre décodeur, créés précédemment. 1.7 Synthèse du compteur Le logiciel Quartus II propose des bibliothèques de fonctions complexes (mémoires, multiplieurs, comparateurs etc ) paramétrables, sous le nom de «LPM functions» (Library of Parameterized Modules). Notre compteur sera réalisé à l aide de la LPM_COUNTER à laquelle on accède par la même méthode que précédemment, en suivant ensuite «altera / 72 / quartus / librairies / megafunctions / arithmetic». Lancer ensuite l assistant de configuration en double cliquant sur le nom du composant choisi. Programmation des CPLD et FPGA en VHDL avec Quartus II 3/11

Paramétrer un compteur 4 bits de modulo 10 avec une entrée d autorisation de comptage (qui sera la sortie de retenu de notre diviseur). La documentation permet de voir l effet de chaque entrée sortie sélectionnée : Programmation des CPLD et FPGA en VHDL avec Quartus II 4/11

Sur les fenêtres suivantes cliquer sur Next et Finish pour implanter notre compteur. 1.8 Synthèse générale Nous complèterons ensuite le graphique au moyen d entrée sortie (bibliothèques altera / 72 / quartus / librairies / primitive / pin), puis en traçant les connections à l aide des outils «Orthogonal Nodes Tools» pour les lignes simples et «Orthogonal Bus Tools» pour les bus (attention à ne pas confondre avec «line tool» qui sert simplement à tracer des lignes). Après avoir sélectionné un bus ou une ligne, on peut lui attribuer un nom en le tapant au clavier ; toutes les lignes de même nom sont reliées électriquement. Attention à la syntaxe pour les bus : SEGU[6..0] est un bus de nom SEGU dont le bit de poids fort de SEG[6]. Pour vérifier si un nom est bien attribué à un nœud, sélectionner ce dernier, le nom doit aussi s afficher en sur brillance. A l aide de la loupe, on peut agrandir (clic gauche) ou rétrécir à volonté la feuille suivant le nombre de composant à placer. On obtient alors le schéma suivant, que l on va enregistrer par exemple sous le nom Plan_gnl_simul.bdf qui va nous servir pour une simulation fonctionnelle : Les sorties Q et C_OUT permettent de visualiser simplement ces signaux sans avoir à faire une recherche au niveau RTL. Vérifier que la simulation répond bien à vos attentes. Remarque : par un clic sur le signe «+» devant le nom d un bus, on peut «déplier» ce bus pour accéder à chaque signal, ce qui peut faciliter l interprétation du bus SEGU. Modifier ensuite le schéma comme ci-après et affecter les entrées sorties à des numéros de broches ; sauvegarder sous un nom différent du précédent (Plan_gnl.bdf par exemple) afin de pouvoir refaire Programmation des CPLD et FPGA en VHDL avec Quartus II 5/11

une simulation le cas échéant (le symbole Vcc de mise à 1 se trouve dans la bibliothèque «altera / 72 / quartus / librairies / primitive / other»). Par un double clic sur le symbole du diviseur, ouvrir le fichier div.vhd, remettre le modulo à 25175000 ou 50000000 suivant la carte utilisée et lancer une «Analyse et vérification» Compiler l ensemble et programmer le circuit cible. Remarques : - il est possible de s affranchir de la mise au NL1 du bus SEGD en demandant au compilateur de mettre les entrées non utilisées en haute impédance, comme lors de la séance précédente («Assignments / Settings / Device / Device and Pins Options / Unused Pins» puis «Reserve All Unused Pin : As Input Tristated») ; - l assignement du numéro de broches des entrées sorties peut être simplifié en leur donnant le même nom que le constructeur de la carte DE2, puis «Assignments / Import Assignments» en précisant la localisation de DE2_pins_assignments.csv. 1.9 Chronomètre à 2 chiffres On souhaite maintenant compter de 0 à 99 sur les deux afficheurs en utilisant deux compteurs et deux décodeurs identiques. Modifier le paramétrage du compteur (on rappelle que le système doit rester synchrone) en double cliquant sur son symbole puis modifier le schéma général (garder l ancienne version pour pouvoir éventuellement y revenir). Tester votre solution. Remarque : le paramétrage de «lpm_counter» laisse trois possibilités pour l entrée de validation de comptage : «Clock Enable», «Count Enable» et «Carry-in». Bien que ces trois entrées ont la même fonctionnalité d autorisation du comptage lorsqu elles passent au NL1 (générer les chronogrammes dans la documentation en ligne pour s en convaincre), seule l entré «Carry-in» fonctionne correctement dans tous les cas de figure. Remplacer ensuite le compteur par une description VHDL et tester votre solution. Programmation des CPLD et FPGA en VHDL avec Quartus II 6/11

Annexe 1 : programme VHDL du décodeur -- la bibliothèque ieee contient les paquetages dont la déclaration suit library ieee; --ce paquetage permet l'utilisation des types STD_LOGIC et STD_LOGIC_VECTOR use ieee.std_logic_1164.all; -- permet d'utiliser le type STD_LOGIC_VECTOR avec des entiers use ieee.std_logic_unsigned.all; entity DECODEUR is port (BCD : in STD_LOGIC_VECTOR (3 downto 0); SEG : out STD_LOGIC_VECTOR ( 6 downto 0) ); end DECODEUR; -- ---------------- -- l 0 l -- 5 l l 1 -- l l -- ----------------- -- l 6 l -- 4 l l 2 -- l l -- ----------------- -- 3 architecture ARCH_DEC of DECODEUR is begin -- attention les leds s'allument pour une sortie à 0 SEG <= "1000000" when BCD=0 else "1111001" when BCD=1 else "0100100" when BCD=2 else "0110000" when BCD=3 else "0011001" when BCD=4 else "0010010" when BCD=5 else "0000010" when BCD=6 else "1111000" when BCD=7 else "0000000" when BCD=8 else "0010000" when BCD=9 else "1111111" ; end ARCH_DEC ; Programmation des CPLD et FPGA en VHDL avec Quartus II 7/11

Annexe 2 : exemple de solution pour le diviseur LIBRARY ieee; USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --les paquetages std_logic_1164 et std_logic_unsigned de la bibliothèque ieee --permettent respectivement l'utilisation du type std_logic et l'addition avec ce type ENTITY div IS --H est le signal d'horloge à 25,175 MHz (carte UP1 et UP2) --S est le résultat de la division de la fréquence de H par 25 175 000 -- pour l horloge à 50 MHz de la carte DE2, passer M à 50 000 000 -- et le nombre de bit de X à 26 port ( H C_OUT S : IN STD_LOGIC; : OUT STD_LOGIC; : OUT STD_LOGIC); END div; ARCHITECTURE archdiv OF div IS --pour compter jusqu'a (25 175 000-1) il faut 25 bits (2^25=33 554 432) SIGNAL X : STD_LOGIC_VECTOR (24 downto 0); CONSTANT M: INTEGER :=25175000 ; BEGIN PROCESS (H) BEGIN --compteur modulo M IF (H'EVENT AND H = '1') THEN IF X >= M-1 THEN X <= (others=>'0'); --mise à 0 de tous les bits de X ELSE X <= X + 1 ; END IF; END IF; END PROCESS; --à la moitié du comptage on change la valeur de S (rapport cyclique 1/2) S<='1' when X>=M/2 else '0'; --mise à 1 de la retenue lorsque X passe à 0 C_OUT<='1' when X=M-1 else '0'; END archdiv; Programmation des CPLD et FPGA en VHDL avec Quartus II 8/11

Annexe 3 : exemple de solution pour le schéma général sur 2 chiffres Programmation des CPLD et FPGA en VHDL avec Quartus II 9/11

Annexe 4 : exemple de solution pour la description VHDL du compteur USE ieee.std_logic_1164.all; USE ieee.std_logic_unsigned.all; --les paquetages std_logic_1164 et std_logic_unsigned de la bibliothèque ieee --permettent respectivement l'utilisation du type std_logic et l'addition avec ce type ENTITY compteur IS port ( H : IN STD_LOGIC; C_IN : IN STD_LOGIC; C_OUT : OUT STD_LOGIC; Q : OUT STD_LOGIC_VECTOR (3 downto 0)); END compteur; ARCHITECTURE archdiv OF compteur IS SIGNAL QX : STD_LOGIC_VECTOR (3 downto 0); BEGIN PROCESS (H) BEGIN --compteur modulo M IF (H'EVENT AND H = '1') THEN IF C_IN='1' THEN IF QX >= 9 THEN QX <= (others=>'0'); ELSE QX <= QX + 1 ; END IF; ELSE QX<=QX; END IF; END IF; END PROCESS; C_OUT<='1' when QX=9 and C_IN='1' else '0'; Q<=QX; END archdiv; Programmation des CPLD et FPGA en VHDL avec Quartus II 10/11

Annexe 5 : exemple de solution ne fonctionnant pas (système asynchrone) Message d avertissement généré par le compilateur : Aide associée à ce message : Circuit may not operate. Detected <number> non-operational path(s) clocked by clock "<name>" with clock skew larger than data delay. See Compilation Report for details. CAUSE: ACTION: The clock skew of the specified number of non-operational path(s), clocked by the specified clock between two registers, is greater than the delay between the same two registers plus the t CO and t SU. As a result, the circuit may not operate. In addition, this warning may appear if either the source register or the destination register is controlled by an inverted undefined clock. When this condition occurs, the Classic Timing Analyzer cannot accurately compute the correct hold relationship without a specified clock requirement. View the timing analysis results in the Report window and list the specified paths in the Messages window. If possible, correct the clock skew in the design by using internally registered write/read enables, or by adding LCELL primitives to increase the data path delay. If the warning is related to an undefined, inverted clock, Altera recommends defining the clock by specifying clock settings or by specifying a global default required f MAX before rerunning timing analysis. Programmation des CPLD et FPGA en VHDL avec Quartus II 11/11