Sie sind auf Seite 1von 29

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 toto.mpf (des informations sur le projet, internes ModelSim). Nous devons maintenant crer notre fichier VHDL alu.vhd 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 exemplar.log.

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