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