guide d’utilisation des outils de conception vhdl - fpgalsl...vhdl - fpga eduardo sanchez epfl -...

29
Guide des outils de conception Page 1 Eduardo Sanchez Guide d’utilisation des outils de conception VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000

Upload: others

Post on 20-Jan-2021

26 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 1 Eduardo Sanchez

Guide d’utilisation des outils de conception

VHDL - FPGA

Eduardo Sanchez EPFL - LSL

2000

Page 2: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 2 Eduardo Sanchez

Exemple de programme VHDL: Une ALU 8 bits

C’est une ALU très simple, avec seulement deux opérations possibles, choisies à l’aide de la variable de contrôle OPALU:

OPALU opération 0 A + B 1 A - B

Les deux entrées (ENTREEA et ENTREEB) ainsi que le résultat (RESULTAT) sont des variables à 8 bits. L’opération de soustraction produit un flag qui est chargé dans un registre si la variable de contrôle LDFLAG est active.

ENTREEA ENTREEB

RESULTAT

CLK INALU OPALU

LDFLAG FLAG

START

ALU

0

INALU

LDFLAG FLAG

OPALU

CLK

ENTREEA ENTREEB

0 1

RESULTAT

START

Page 3: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 3 Eduardo Sanchez

library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_arith.all; use ieee.std_logic_unsigned.all; entity alu is port (clk : in std_logic; start, inalu, opalu, ldflag : in std_logic; flag : out std_logic; entreea, entreeb : in std_logic_vector(7 downto 0); resultat : out std_logic_vector(7 downto 0)); end alu; architecture synt of alu is signal vraib : std_logic_vector(7 downto 0); signal zero : std_logic; begin process (entreeb, inalu) begin if inalu='0' then vraib <= entreeb; else vraib <= (others => '0'); end if; end process; process (opalu, entreea, vraib) variable bidon : std_logic_vector(7 downto 0); begin zero <= '0'; if opalu='0' then resultat <= entreea + vraib; else bidon := entreea - vraib; resultat <= bidon; if (bidon = "00000000") then zero <= '1'; end if; end if; end process; process (clk, ldflag, start) begin if (clk'event and clk='1') then if start='1' then flag <= '0'; else if ldflag='1' then flag <= zero; end if; end if; end if; end process; end synt;

Page 4: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 4 Eduardo Sanchez

Simulation VHDL avec ModelSim (avant placement - routage du circuit FPGA)

u Démarrer l’application ModelSim: Start → Programs → ModelSim SE-EE 5.4c → ModelSim

Les commandes du simulateur peuvent être exécutées depuis la barre de menus,

depuis la barre d’outils ou en les écrivant dans la fenêtre de contrôle

barre de menus barre d’outils

écriture de commandes et affichage de résultats

Page 5: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 5 Eduardo Sanchez

v Créer un projet, en indiquant son emplacement et son nom : File → New → New Project

En créant un projet, ModelSim crée en fait un dossier (directory) de travail, au nom du projet, et la bibliothèque (library) de travail (work). Les fichiers VHDL à compiler et à simuler doivent se trouver à l’intérieur du projet..

Dans notre exemple, après la création du projet toto, nous aurons un nouveau dossier toto avec, à son intérieur, un nouveau dossier work (la bibliothèque de travail) et un nouveau fichier toto.mpf (des informations sur le projet, internes à ModelSim). Nous devons maintenant créer notre fichier VHDL alu.vhd à l’intérieur du dossier toto.

w Créer le fichier VHDL de travail: File → New → New Source

Après avoir introduit le nom du nouveau fichier, un éditeur de texte est appelé. Bien entendu, il est possible d’utiliser des fichiers source déjà existants: il suffit

pour cela de les importer dans le projet:

Options → Edit Project

Page 6: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 6 Eduardo Sanchez

Le fichier source est cherché à l’aide du bouton Browse; une fois trouvé, il est importé dans le projet à l’aide du bouton Import.

x Compiler les programmes VHDL dans la bibliothèque work: Design → Compile Project

ou icône Compile sur la barre d’outils:

Page 7: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 7 Eduardo Sanchez

Avant de choisir les fichiers à compiler, vérifier que l’option de compilation

Use explicit declarations only est active (avec le bouton Default options du dialogue précédent):

Les fichiers doivent être compilés dans le bon ordre hiérarchique, de bas en haut. A la fin de la compilation, presser le bouton Done.

y Charger l’architecture que l’on veut simuler: Design → Load Design

ou icône Load Design sur la barre d’outils:

Page 8: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 8 Eduardo Sanchez

z Afficher toutes les fenêtres de simulation: View → All

Page 9: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 9 Eduardo Sanchez

{ Déplacer dès la fenêtre signals vers la fenêtre wave tous les signaux que l’on veut suivre en simulation. Il peut être nécessaire de changer de module dans la fenêtre structure pour voir apparaître à la fenêtre signals les signaux recherchés.

Si nécessaire, modifier la base pour l’affichage des valeurs numériques des

signaux. Pour passer à la base hexadécimale, par exemple, il faut sélectioner le signal voulu et exécuter la commande:

Format → Radix → Hexadecimal | Exécuter les commandes de simulation. Ceci peut être fait en les écrivant dans la

fenêtre de commande ou en exécutant un script: do NomDuScript Un exemple de script de commande pour l’ALU du chapitre précédent est le

suivant:

force clk 0 0, 1 40 -repeat 80 force start 1 0, 0 60 force entreea 16#39 0, 16#0 60, 16#39 140 force inalu 0 0, 1 60, 0 140 force entreeb 16#12 0, 16#39 140 force opalu 1 0, 0 140, 1 220 force ldflag 0 0, 1 60 run 300 ns

Le résultat de cette simulation est illustré par la figure suivante:

Page 10: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 10 Eduardo Sanchez

Page 11: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 11 Eduardo Sanchez

Synthèse avec Leonardo u Démarrer l’application Leonardo Spectrum: Start → Programs → LeonardoSpectrum v1999.1f →

Leonardo Spectrum

v Exécuter le wizard depuis la barre d’outils

Page 12: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 12 Eduardo Sanchez

w Choisir la cible de la synthèse: type de circuit (FPGA), fabricant (Xilinx), numéro du circuit (4013E HQ240-4)

Page 13: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 13 Eduardo Sanchez

x Choisir le dossier (directory) de travail, le fichier VHDL à synthétiser et le type de codage pour les machines séquentielles

Page 14: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 14 Eduardo Sanchez

y Spécifier la vitesse voulue de fonctionnement (fréquence d’horloge)

Page 15: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 15 Eduardo Sanchez

z Spécifier le format de sortie de la netlist (le format par défaut, Auto, produit un fichier en format EDIF)

Page 16: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 16 Eduardo Sanchez

{ Le bouton Finish du dialogue précédent termine l’introductions des données et démarre la synthèse. Les résultats sont affichés dans la fenêtre principale (faire attention aux éventuels warnings et messages d’erreurs). Ces résultats sont sauvés également dans le fichier exemplar.log.

Le fichier VHDL peut être modifié directement dans Leonardo: il suffit de cliquer sur un message d’erreur pour ouvrir une fenêtre avec le code source. Dans ce cas, après correction on doit relancer le wizard

utilisation du FPGA

fréquence d’horloge

Page 17: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 17 Eduardo Sanchez

| Afficher le logigramme généré en cliquant sur le bouton RTL Schematic de la barre d’outils

} Sauver le projet: File → Save project

Page 18: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 18 Eduardo Sanchez

Placement-routage du FPGA avec Xilinx Alliance u Démarrer l’application Xilinx Alliance Design Manager: Start → Programs → Xilinx Alliance Series 2.1i →

Design Manager

Page 19: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 19 Eduardo Sanchez

v Créer un nouveau projet, dans votre dossier (directory) de travail:

File → New Project...

Le fichier d’entrée est celui avec la netlist en format EDIF:

Ensuite on peut choisir le nom de la version et le type de circuit (en principe, il ne faut rien faire: les valeurs par défaut sont correctes):

Page 20: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 20 Eduardo Sanchez

w Modifier les options pour générer un fichier de simulation compatible avec Model Sim:

Design → Options...

x Démarrer le processus de placement-routage, avec le bouton Implement de la

barre d’outils

Page 21: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 21 Eduardo Sanchez

Simulation VHDL avec ModelSim (après placement - routage du circuit FPGA)

u Démarrer l’application ModelSim: Start → Programs → ModelSim EE 5.3a_p1 → ModelSim

Les commandes du simulateur peuvent être exécutées depuis la barre de menus,

depuis la barre d’outils ou en les écrivant dans la fenêtre de contrôle v Choisir le dossier (directory) de travail (c’est le dossier où se trouvent les

programmes VHDL à compiler et à simuler): File → Change Directory...

barre de menus barre d’outils

écriture de commandes et affichage de résultats

Page 22: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 22 Eduardo Sanchez

w Créer la bibliothèque simprim_lib, nécessaire à la simulation temporelle: Design → Create a New Library...

Créer un lien logique (mapping) de simprim_lib avec simprim, le nom de

la bibliothèque fournie par Xilinx avec les modèles VHDL de ses composants: Design → Create a New Library...

Page 23: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 23 Eduardo Sanchez

x Compiler les éléments de la bibliothèque simprim. Ces éléments, fournis par Xilinx, se trouvent dans trois fichiers, que l’on doit compiler dans l’ordre suivant:

<Xilinx_dir>\vhdl\src\simprims\simprim_Vpackage.vhd <Xilinx_dir>\vhdl\src\simprims\simprim_VITAL.vhd <Xilinx_dir>\vhdl\src\simprims\simprim_Vcomponents.vhd La bibliothèque de compilation doit être simprim et non pas work. Design → Compile...

ou icône Compile

Page 24: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 24 Eduardo Sanchez

y Compiler, dans la bibliothèque work, le fichier time_sim.vhd, qui contient la netlist créée par l’outil de placement-routage de Xilinx (Alliance):

Page 25: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 25 Eduardo Sanchez

z Charger (icône Load Design) le système que l’on veut simuler.

Pour commencer, il faut ajouter le fichier time_sim.sdf, écrit dans le dossier de travail par l’outil de placement-routage (Xilinx Alliance):

Page 26: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 26 Eduardo Sanchez

Ensuite, il faut charger l’architecture que l’on veut simuler:

Page 27: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 27 Eduardo Sanchez

{ Afficher toutes les fenêtres de simulation: View → All

Page 28: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 28 Eduardo Sanchez

| Déplacer dès la fenêtre signals vers la fenêtre wave tous les signaux que l’on veut suivre en simulation. Il peut être nécessaire de changer de module dans la fenêtre structure pour voir apparaître à la fenêtre signals les signaux recherchés.

Si nécessaire, modifier la base pour l’affichage des valeurs numériques des signaux. Pour passer à la base hexadécimale, par exemple, il faut sélectioner le signal voulu et exécuter la commande:

Prop → Radix → Hexadecimal

Page 29: Guide d’utilisation des outils de conception VHDL - FPGAlsl...VHDL - FPGA Eduardo Sanchez EPFL - LSL 2000 Guide des outils de conception Page 2 Eduardo Sanchez Exemple de programme

Guide des outils de conception Page 29 Eduardo Sanchez

} Exécuter les commandes de simulation. Ceci peut être fait en les écrivant dans la fenêtre de commande ou en exécutant un script:

do NomDuScript Un exemple de script de commande pour l’ALU de notre exemple est le suivant:

force clk 0 0, 1 40 -repeat 80 force start 1 0, 0 60 force entreea 16#39 0, 16#0 60, 16#39 140 force inalu 0 0, 1 60, 0 140 force entreeb 16#12 0, 16#39 140 force opalu 1 0, 0 140, 1 220 force ldflag 0 0, 1 60 run 300 ns

Le résultat de cette simulation est illustré par la figure suivante:

Ces résultats de simulation sont différents de ceux obtenus avant le placement-routage: les retards sont maintenant visibles, notamment dans le bus resultat et le signal flag.