Page 1
Eduardo Sanchez
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
FLAG
RESULTAT
ENTREEB 0 ENTREEA
0 1
INALU START
OPALU
ALU
FLAG LDFLAG RESULTAT CLK
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;
Page 3
Eduardo Sanchez
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
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.
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
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:
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:
Page 7
Eduardo Sanchez
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:
Page 9
Eduardo Sanchez
Page 10
Eduardo Sanchez
Dmarrer lapplication Leonardo Spectrum: Start Programs LeonardoSpectrum v1999.1f Leonardo Spectrum
Page 11
Eduardo Sanchez
Choisir la cible de la synthse: type de circuit (FPGA), fabricant (Xilinx), numro du circuit (4013E HQ240-4)
Page 12
Eduardo Sanchez
Choisir le dossier (directory) de travail, le fichier VHDL synthtiser et le type de codage pour les machines squentielles
Page 13
Eduardo Sanchez
Page 14
Eduardo Sanchez
Spcifier le format de sortie de la netlist (le format par dfaut, Auto, produit un fichier en format EDIF)
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
Page 16
Eduardo Sanchez
Afficher le logigramme gnr en cliquant sur le bouton RTL Schematic de la barre doutils
Page 17
Eduardo Sanchez
Dmarrer lapplication Xilinx Alliance Design Manager: Start Programs Xilinx Alliance Series 2.1i Design Manager
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):
Page 19
Eduardo Sanchez
Modifier les options pour gnrer un fichier de simulation compatible avec Model Sim: Design Options...
Page 20
Eduardo Sanchez
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...
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...
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
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):
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):
Page 25
Eduardo Sanchez
Page 26
Eduardo Sanchez
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
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.
Page 29
Eduardo Sanchez