counter source
Transcription
counter source
Faculté des Sciences Département de physique Option : InfoTronique Circuits Numériques Avancés TP n°4 : Introduction au langage VHDL 1. Objectif L’objectif de ce laboratoire est d’énumérer et de décrire les étapes pour : 1. Créer un projet dans l’environnement ISE de Xilinx. 2. Décrire un circuit numérique (compteur Up/Down), à l’aide du langage VHDL et l’intégrer au projet. 3. Synthétiser le circuit. 4. Configurer les contraintes de temps. 5. Vérifier et valider le comportement du circuit en effectuer des simulations comportementales et temporelles. 2. Introduction Le VHDL (VHSIC Hardware Description Language) est un langage de description matériel. Le langage VHDL est principalement utilisé pour : 1) Décrire les spécifications de systèmes numériques. 2) Modéliser les systèmes numériques à plusieurs niveaux d’abstraction. 3) Simuler et vérifier le comportement des systèmes numériques. 4) Synthétiser les systèmes numériques. La synthèse d’un circuit numérique est l’étape qui permet d’aller d’un niveau d’abstraction plus élevé à un niveau d’abstraction plus bas. Le VHDL permet de décrire le comportement et la structure système numérique à plusieurs niveaux d’abstraction qui sont : 1) Description haut niveau ou comportementale ou algorithmique : la description comportementale permet de décrire le comportement d’un système numérique à un haut niveau d’abstraction. La description comportementale est souvent utilisée pour la spécification, modélisation, la vérification et la simulation de systèmes numériques. 2) Description RTL (Register Transfert Level) : la description niveau registre (RTL) permet de décrire au niveau comportemental les blocs combinatoires connectant les registres d’un système numérique. C’est le niveau RTL qui permet de décrire les machines à états finis (FSM). Le niveau RTL est beaucoup plus utilisé pour la synthèse de circuits numériques. 3) Description structurelle : la description structurelle permet de décrire un système numérique comme une interconnexion de modules et de portes numériques. ______________________________________________________________________________________________________________ Circuits Numériques Avancés – TP4 1/6 3. Description VHDL du compteur 3.1. Lancement du logiciel Toutes les fonctions de la suite ISE sont accessibles à partir du navigateur Xilinx ISE. 1. Avant de lancer le navigateur ISE, il faut créer sur le disque D:\ votre répertoire de travail. , ou cliquer sur le menu 2. Pour lancer le navigateur, il faut double-cliquer sur l’icône Démarrer > Programmes > Xilinx ISE 9.2i > Project Navigator. 3.2. Création d’un nouveau projet 1. Après l’ouverture du navigateur ISE, il faut faire File > New Project. L’écran de saisie de nouveau projet apparaîtra. 2. Entrer tp4 pour « Project Name ». Noter que le nom du projet est ajouté automatiquement au nom du répertoire contenant le projet « Project Location ». 3. Sélectionner le répertoire créé précédemment dans le champ « Project Location ». 4. Sélectionner HDL pour « Top-Level Source Type », et cliquer sur Next. 5. Sélectionner les valeurs suivantes dans la fenêtre « New Project Wizard - Device Properties »: Product Category: All Family: Spartan3A and Spartan3AN Device: XC3S700A Package: FG484 Speed: -4 Synthesis Tool: XST (VHDL/Verilog) Simulator: ISE Simulator (VHDL/Verilog) Preferred Language: VHDL Vérifier que Enable Enhanced Design Summary est sélectionnée. 6. Cliquer sur Next 3 fois, et ensuite Finish pour compléter la création du nouveau projet. 3.3. Création d’un fichier VHDL 1. 2. 3. 4. 5. 6. Cliquer sur project > New Source. Sélectionner VHDL Module. Taper dans le nom de fichier le nom du compteur qui est counter. Cliquer sur Next. Déclarer les ports du compteur comme il est montré à la Figure 1. Cliquer sur Next, et ensuite sur Finish. _____________________________________________________________________________________________________________ Circuits Numériques Avancés – TP4 2/6 Figure 1 : Fenêtre ‘New source Wizard –Define Module’. Le fichier source (counter.vhd) va contenir la description VHDL de notre compteur. Les textes en vert sont des commentaires et les textes en bleu sont des mots clés du langage VHDL. Le code VHDL est généralement composé de trois parties : 1) La partie library qui décrit les bibliothèques utilisées par notre circuit. 2) La partie entity qui décrit l’interface de notre circuit (c’est-à-dire les entrées et les sorties de notre circuit). 3) La partie architecture qui décrit l’architecture de notre circuit. Figure 2 : Fichier ‘counter.vhd’ contenant le code VHDL du circuit. _____________________________________________________________________________________________________________ Circuits Numériques Avancés – TP4 3/6 3.4. Utilisation du template du langage VHDL 1. Placer le curseur en dessous du begin de l’architecture. 2. Ouvrir le Language Templates en sélectionnant Edit >Language Templates… 3. Selectionner VHDL >Synthesis Constructs > Coding Examples > Counters > Binary > Up/Down Counters > Simple Counter. 4. Sélectionner Edit >Use in File (cette étape copie le template vers le fichier counter.vhd) 5. Ajouter au dessus de l’architecture et au dessous du premier begin (entre architecture et le premier begin) la déclaration suivante: signal count_int : std_logic_vector(3 downto 0) := "0000"; 6. Remplacer dans le fichier : <clock> par CLOCK <count_direction> par DIRECTION <count> par count_int 7. Ajouter la ligne suivante au dessus de end process : COUNT_OUT <= count_int; 8. Enregistrer le fichier par File > Save. À la fin des modifications, vous devez obtenir le fichier ci-dessous : library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL; ---Uncomment the following library instantiating ---- any Xilinx primitives in this code. --library UNISIM; --use UNISIM.VComponents.all; declaration if entity counter is Port ( CLOCK : in STD_LOGIC_VECTOR (0 downto 0); DIRECTION : in STD_LOGIC_VECTOR (0 downto 0); COUNT_OUT : out STD_LOGIC_VECTOR (3 downto 0)); end counter; architecture Behavioral of counter is signal count_int : std_logic_vector(3 downto 0) := "0000"; begin process (CLOCK) begin if CLOCK='1' and CLOCK'event then if DIRECTION='1' then count_int <= count_int + 1; else count_int <= count_int - 1; end if; end if; end process; COUNT_OUT <= count_int; end Behavioral; _____________________________________________________________________________________________________________ Circuits Numériques Avancés – TP4 4/6 Synthèse et implémentation du compteur (counter.vhd) 1. Dans la fenêtre « Sources », sélectionner Synthesis\Implementation dans le champ « Sources for ». 2. Sélectionner le fichier schématique (counter-Behavioural). 3. Dans la fenêtre « processes », double cliquer Synthesize-XST. 4. Dans la fenêtre « processes », double cliquer Implement Design. Visualisez le rapport de synthèse et répondre aux questions suivantes : 1) Avec quels circuits logiques de bases le synthétiseur à t’il réalisé le circuit ? 2) Quel est le nombre de slices nécessaires au circuit ? 3) Quel est le nombre de bascules D nécessaires au circuit ? 4) Quel est le nombre de LUT nécessaires au circuit ? 5) Quel est le nombre d’entrées sorties nécessaires au circuit ? 6) Quel est le nombre d’horloges nécessaires au circuit ? 7) Quel est le temps de parcours du chemin critique du circuit ? 8) Quelle est la fréquence maximale de fonctionnement ? 9) Regardez le schéma RTL (Register Transfert Level) vérifiez qu’il correspond bien au circuit que vous avez décrits. 4. Simulation et vérification du compteur 3.5. Création des vecteurs de test (testbench) et initialisation des contraintes de temps 1. Dans la fenêtre Sources sélectionner counter-Behavioural. 2. Créer un nouveau fichier en sélectionnant Project > New Source. 3. Dans la fenêtre New Source Wizard, sélectionner Test Bench WaveForm, et taper counter_tb dans le champ File Name. 4. Cliquer sur Next, puis cliquer sur Finish. 5. Entrer dans la fenêtre Initial Timing and Clock Wizard – Initializs Timing les valeurs ci-dessous et ensuite cliquer sur Finish. • Rising Edge • Clock High Time: 20 ns. • Clock Low Time: 20 ns. • Input Setup Time: 10 ns. • Output Valid Delay: 10 ns. • Offset: 0 ns. • Global Signals: GSR (FPGA) • Single Clock : CLOCK • Initial Length of Test Bench: 1500 ns. 1) Selon les valeurs entrées, quelle est la période d’horloge du compteur ? 2) Est-ce que cette période respecte la contrainte de fréquence maximale du compteur ? justifier votre réponse. 3) Proposer un chronogramme permettant de tester le compteur, modifier le fichier des vecteurs de test (testbench) en conséquence et le sauvegarder. 3.6. Simulation comportementale _____________________________________________________________________________________________________________ Circuits Numériques Avancés – TP4 5/6 1. Dans la fenêtre Sources, sélectionner Behavioral Simulation (remarquer que le testbench est ajouté à votre projet automatiquement). 2. Vérifier que Behavioral Simulation et counter_tb sont sélectionnés dans la fenêtre Sources. 3. Dans l’onglet Processes, clicquer sur “+” pour développer Xilinx ISE Simulator puis double-cliquer sur Simulate Behavioral Model. Le simulateur ISE s’ouvre et lance la simulation. 4. Pour consulter votre résultat de simulation, sélectionner l’onglet Simulation. 3.7. Simulation temporelle Contrairement à la simulation comportementale, la simulation temporelle permet de vérifier le comportement d’un circuit en tenant compte des temps de réponses et des contraintes de temps. Après implémentation du circuit, pour lancer la simulation temporelle il faut : 1. Dans la fenêtre « Sources », sélectionner Post-Route Simulation dans le champ « Sources for ». 2. Sélectionner le fichier de stimuli (counter_tb). 3. Dans la fenêtre « processes », cliquer sur + à coté de « Xilinx ISE Simulator ». 4. Cliquer avec le bouton droit sur Simulate Post-Place & Route Model. 5. Sélectionner Properties. 6. Sélectionner la catégorie Simulation Model Properties. 7. Pour commencer la simulation temporelle, double cliquer sur Simulate Post-Place and Route Model. 8. Pour consulter les résultats de simulation, sélectionner l’onglet Simulation dans la fenêtre principale. Après simulation du circuit, vérifier les résultats de la simulation temporelle et donner les délais de réponse des deux sorties du circuit. 5. Exploitation des résultats du TP : Compteur 8 bits Concevoir un compteur Up/Down 8 bits avec signal d’activation, chargement parallèle et un reset synchrone actif sur état haut. 1) 2) 3) 4) 5) Quel est le délai du chemin critique de ce compteur ? Quel est le temps de setup ? Quel est le délai de propagation du front de l’horloge vers la sortie du registre ? Quelle est la fréquence de fonctionnement maximum ? Simuler le comportement du compteur avec une fréquence de fonctionnement de 20 Mhz, un temps de setup de 10 ns et un délai du front d’horloge vers la sortie de 10 ns. _____________________________________________________________________________________________________________ Circuits Numériques Avancés – TP4 6/6