Guide dutilisation des outils de conception VHDL - FPGA
Eduardo Sanchez EPFL - LSL 2000
Guide des outils de conception
Page 1
Eduardo Sanchez
Exemple de programme VHDL: Une ALU 8 bits
Cest une ALU trs simple, avec seulement deux oprations possibles, choisies laide de la variable de contrle OPALU: OPALU 0 1 opration A + B A - B
Les deux entres (ENTREEA et ENTREEB) ainsi que le rsultat (RESULTAT) sont des variables 8 bits. Lopration de soustraction produit un flag qui est charg dans un registre si la variable de contrle LDFLAG est active.
ENTREEA
ENTREEB
CLK START INALU OPALU LDFLAG
FLAG
RESULTAT
ENTREEB 0 ENTREEA
0 1
INALU START
OPALU
ALU
FLAG LDFLAG RESULTAT CLK
Guide des outils de conception
Page 2
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;
Guide des outils de conception
Page 3
Eduardo Sanchez
Simulation VHDL avec ModelSim
(avant placement - routage du circuit FPGA)
Dmarrer lapplication ModelSim: Start Programs ModelSim SE-EE 5.4c ModelSim
barre de menus
barre doutils
criture de commandes et affichage de rsultats Les commandes du simulateur peuvent tre excutes depuis la barre de menus, depuis la barre doutils ou en les crivant dans la fentre de contrle
Guide des outils de conception
Page 4
Eduardo Sanchez
Crer un projet, en indiquant son emplacement et son nom : File New New Project
En crant un projet, ModelSim cre en fait un dossier (directory) de travail, au nom du projet, et la bibliothque (library) de travail (work). Les fichiers VHDL compiler et simuler doivent se trouver lintrieur du projet.. Dans notre exemple, aprs la cration du projet toto, nous aurons un nouveau dossier toto avec, son intrieur, un nouveau dossier work (la bibliothque de travail) et un nouveau fichier [Link] (des informations sur le projet, internes ModelSim). Nous devons maintenant crer notre fichier VHDL [Link] lintrieur du dossier toto.
Crer le fichier VHDL de travail: File New New Source
Aprs avoir introduit le nom du nouveau fichier, un diteur de texte est appel. Bien entendu, il est possible dutiliser des fichiers source dj existants: il suffit pour cela de les importer dans le projet: Options Edit Project
Guide des outils de conception
Page 5
Eduardo Sanchez
Le fichier source est cherch laide du bouton Browse; une fois trouv, il est import dans le projet laide du bouton Import.
Compiler les programmes VHDL dans la bibliothque work: Design Compile Project ou icne Compile sur la barre doutils:
Guide des outils de conception
Page 6
Eduardo Sanchez
Avant de choisir les fichiers compiler, vrifier que loption de compilation Use explicit declarations only est active (avec le bouton Default options du dialogue prcdent):
Les fichiers doivent tre compils dans le bon ordre hirarchique, de bas en haut. A la fin de la compilation, presser le bouton Done.
Charger larchitecture que lon veut simuler: Design Load Design ou icne Load Design sur la barre doutils:
Guide des outils de conception
Page 7
Eduardo Sanchez
Afficher toutes les fentres de simulation: View All
Guide des outils de conception
Page 8
Eduardo Sanchez
Dplacer ds la fentre signals vers la fentre wave tous les signaux que lon veut suivre en simulation. Il peut tre ncessaire de changer de module dans la fentre structure pour voir apparatre la fentre signals les signaux recherchs.
Si ncessaire, modifier la base pour laffichage des valeurs numriques des signaux. Pour passer la base hexadcimale, par exemple, il faut slectioner le signal voulu et excuter la commande: Format Radix Hexadecimal
Excuter les commandes de simulation. Ceci peut tre fait en les crivant dans la fentre de commande ou en excutant un script: do NomDuScript Un exemple de script de commande pour lALU du chapitre prcdent 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 rsultat de cette simulation est illustr par la figure suivante:
Guide des outils de conception
Page 9
Eduardo Sanchez
Guide des outils de conception
Page 10
Eduardo Sanchez
Synthse avec Leonardo
Dmarrer lapplication Leonardo Spectrum: Start Programs LeonardoSpectrum v1999.1f Leonardo Spectrum
Excuter le wizard depuis la barre doutils
Guide des outils de conception
Page 11
Eduardo Sanchez
Choisir la cible de la synthse: type de circuit (FPGA), fabricant (Xilinx), numro du circuit (4013E HQ240-4)
Guide des outils de conception
Page 12
Eduardo Sanchez
Choisir le dossier (directory) de travail, le fichier VHDL synthtiser et le type de codage pour les machines squentielles
Guide des outils de conception
Page 13
Eduardo Sanchez
Spcifier la vitesse voulue de fonctionnement (frquence dhorloge)
Guide des outils de conception
Page 14
Eduardo Sanchez
Spcifier le format de sortie de la netlist (le format par dfaut, Auto, produit un fichier en format EDIF)
Guide des outils de conception
Page 15
Eduardo Sanchez
Le bouton Finish du dialogue prcdent termine lintroductions des donnes et dmarre la synthse. Les rsultats sont affichs dans la fentre principale (faire attention aux ventuels warnings et messages derreurs). Ces rsultats sont sauvs galement dans le fichier [Link].
utilisation du FPGA
frquence dhorloge
Le fichier VHDL peut tre modifi directement dans Leonardo: il suffit de cliquer sur un message derreur pour ouvrir une fentre avec le code source. Dans ce cas, aprs correction on doit relancer le wizard
Guide des outils de conception
Page 16
Eduardo Sanchez
Afficher le logigramme gnr en cliquant sur le bouton RTL Schematic de la barre doutils
Sauver le projet: File Save project
Guide des outils de conception
Page 17
Eduardo Sanchez
Placement-routage du FPGA avec Xilinx Alliance
Dmarrer lapplication Xilinx Alliance Design Manager: Start Programs Xilinx Alliance Series 2.1i Design Manager
Guide des outils de conception
Page 18
Eduardo Sanchez
Crer un nouveau projet, dans votre dossier (directory) de travail: File New Project... Le fichier dentre 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 dfaut sont correctes):
Guide des outils de conception
Page 19
Eduardo Sanchez
Modifier les options pour gnrer un fichier de simulation compatible avec Model Sim: Design Options...
Dmarrer le processus de placement-routage, avec le bouton Implement de la barre doutils
Guide des outils de conception
Page 20
Eduardo Sanchez
Simulation VHDL avec ModelSim
(aprs placement - routage du circuit FPGA)
Dmarrer lapplication ModelSim: Start Programs ModelSim EE 5.3a_p1 ModelSim
barre de menus
barre doutils
criture de commandes et affichage de rsultats Les commandes du simulateur peuvent tre excutes depuis la barre de menus, depuis la barre doutils ou en les crivant dans la fentre de contrle
Choisir le dossier (directory) de travail (cest le dossier o se trouvent les programmes VHDL compiler et simuler): File Change Directory...
Guide des outils de conception
Page 21
Eduardo Sanchez
Crer la bibliothque simprim_lib, ncessaire la simulation temporelle: Design Create a New Library...
Crer un lien logique (mapping) de simprim_lib avec simprim, le nom de la bibliothque fournie par Xilinx avec les modles VHDL de ses composants: Design Create a New Library...
Guide des outils de conception
Page 22
Eduardo Sanchez
Compiler les lments de la bibliothque simprim. Ces lments, fournis par Xilinx, se trouvent dans trois fichiers, que lon doit compiler dans lordre 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 bibliothque de compilation doit tre simprim et non pas work. Design Compile... ou icne Compile
Guide des outils de conception
Page 23
Eduardo Sanchez
Compiler, dans la bibliothque work, le fichier time_sim.vhd, qui contient la netlist cre par loutil de placement-routage de Xilinx (Alliance):
Guide des outils de conception
Page 24
Eduardo Sanchez
Charger (icne Load Design) le systme que lon veut simuler. Pour commencer, il faut ajouter le fichier time_sim.sdf, crit dans le dossier de travail par loutil de placement-routage (Xilinx Alliance):
Guide des outils de conception
Page 25
Eduardo Sanchez
Ensuite, il faut charger larchitecture que lon veut simuler:
Guide des outils de conception
Page 26
Eduardo Sanchez
Afficher toutes les fentres de simulation: View All
Guide des outils de conception
Page 27
Eduardo Sanchez
Dplacer ds la fentre signals vers la fentre wave tous les signaux que lon veut suivre en simulation. Il peut tre ncessaire de changer de module dans la fentre structure pour voir apparatre la fentre signals les signaux recherchs.
Si ncessaire, modifier la base pour laffichage des valeurs numriques des signaux. Pour passer la base hexadcimale, par exemple, il faut slectioner le signal voulu et excuter la commande: Prop Radix Hexadecimal
Guide des outils de conception
Page 28
Eduardo Sanchez
Excuter les commandes de simulation. Ceci peut tre fait en les crivant dans la fentre de commande ou en excutant un script: do NomDuScript Un exemple de script de commande pour lALU 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 rsultat de cette simulation est illustr par la figure suivante:
Ces rsultats de simulation sont diffrents de ceux obtenus avant le placementroutage: les retards sont maintenant visibles, notamment dans le bus resultat et le signal flag.
Guide des outils de conception
Page 29
Eduardo Sanchez