2012-2013
Fascicule de Travaux Pratiques
Systèmes Embarqués
EEA3
Habib HAMDI
Jamel BAILI
Sommaire général
1 Travaux pratiques
TP1 Initiation aux outils ISE d’Xilinx et ModelSim de Mentor Graphics 2
2 Bibliographie 29
Année universitaire 201/201 TP Systèmes Electroniques Reconfigurables
La fenêtre New Project Wizard – Device Properties apparaît, renseignez la avec les valeurs voulues
comme indiqué sur la capture d’écran. Puis Next
Remarque : A tout moment il est possible de changer ces informations en faisant
Source>Properties
Cependant certaines phases du flot de conception seront alors remisent en cause (synthèse, placement,
routage).
La fenêtre New Project Wizard – Create New Source apparaît. Si vous souhaitez créer des fichiers
sources qui seront automatiquement ajouté au projet vous pouvez le faire à ce moment. Mais vou s
pourrez aussi à tout moment ajouter de nouveaux fichiers au projet. Dans tous les cas la fen être New
Source Wizard – Select Source type s’ouvre.
Vous devez spécifier le nom et l’emplacement du nouveau fichier (il est recommandé de le sauvegarder
dans le dossier du projet). Vous devez spécifier le type de fichier, par exemple VHDL Module pour un
fichier de VHDL classique.
En cliquant sur NEXT vous avez la possibilité de définir les entrées sorties du fichier si c’est un fichier
VHDL (l’entité sera alors automatiquement générée), mais c’est facultatif.
Une fois les différentes sources créés vous pouvez aussi ajouter des sources existantes avec la fenêtre
New Project Wizard – Add Existing Sources. En cliquant sur Add Source vous ouvrez une fenêtre
dans laquelle vous indiquez le chemin vers le dossier de sauvegarde du fichier à ajouter au dossier.
Vous pourrez à tous moment ajouter un fichier au projet si vous ne le faites pas lors de la création du
projet.
Une fois le projet créé (avec ou sans fichiers liés) vous visualisez dans la fenêtre sources le projet et sa
hiérarchie. Avec une clique droite sur le projet (cliquez sur la ligne avec une icône en forme de circuit
intégré) apparait une liste déroulant. Vous pouvez ajouter un fichier (vhd, ucf, …) au projet ou en créer
un nouveau, vous pouvez aussi modifier les propriétés du projet (par exemple le type de circuit utilisé).
Remarquez que vous pouvez aussi ajouter des sources à un fichier et modifier ces propriétés.
Pour obtenir ce menu déroulant faire un clique droit sur le fichier concerné.
1.3 Synthèse
Vous pouvez maintenant effectuer la synthèse du fichier sélectionné dans la fenêtre Sources (attention
à sélectionner le bon fichier). Pour cela vous devez sélectionner la tâche de synthèse dans la fenêtre
Processes, comme indiqué sur la capture d’écran suivante.
On peut voir que le processus de synthèse (comme tout les autres processus) est hiérarchique et qu’il
comporte plusieurs sous-processus (tous ne sont pas nécessaire à la réali sation complète de
l’application). En double cliquant à gauche sur la ligne Synthesize–XST vous lancer automatiquement
Le choix des options demande une bonne connaissance des contraintes de l’application développée
(optimisation en puissance, temporelle, en surface par exemple).
Une fois la synthèse réussie avec succès, il est possible de visualiser le rapport de synthèse qui
comporte toutes les informations sur le résultat de synthèse, à savoir comment le synthétiseur à
transformer la description en un circuit au niveau RTL (Register Transfert Level). Vous pouvez aussi le
schéma RTL (sc héma avec des fonctions simple de l’électronique numérique) ou le schéma
Technologique (schéma avec les éléments internes du FPGA, LUT ou registre par exemple). Pour cela
cliquer sur la ligne correspondant dans la liste des sous-processus de la synthèse. Nous vous conseillons
avant de passer à l’implémentation (et pour éviter de perdre inutilement du temps) de passer à ce
moment à la simulation fonctionnelle avec ModelSim (voir la suite du document pour l’utilisation du
logiciel de simulation ModelSim). Une fois cette simulation effectuée et validée vous pouvez passer à
l’implémentation du circuit.
1.4 Implémentation
Vous pouvez maintenant effectuer l’implémentation du fichier sélectionné dans la fenêtre Sources
(attention à sélectionner le bon fichier). Pour cela vous devez sélectionner la tâche de synthèse dans la
fenêtre Processes, comme indiqué sur la capture d’écran suivante.
La tâche d’implémentation est bien plus conséquente que la phase de synthèse. C’est pourquoi il faut
bien veiller à valider le fonctionnement du système avant de lancer cette tâche (particulièrement vraie
dans le cas de projet de grande taille). Cette tâche peut effectivement prendre beaucoup de temps.
Nous pouvons regarder la sous-tâche de placement routage qui comporte de nombreuses étapes
intéressantes :
Lorsque, dans cette liste, un nom apparait entre parenthèses cela signifie que ce processus va ouvrir un
outil complémentaire. Il est très intéressant d’effectuer une simulation post-placement routage pour
valider le circuit avant configuration du FPGA. Pour cela le processus Generate Post-Place & Route
A partir de ce p rocessus vous pouvez lancer l’outil iMPACT de configuration du FPGA. Avec ce
même outil vous pouvez générer un fichier de configuration pour le stockage dans la
ROM de configuration et programmer cette mémoire (voir figure ci-dessous).
sources du projet et un onglet Library qui donne la liste des librairies, dont la librairie work qui est la
librairie de configuration par défaut.
En cliquant sur l’entité du testbench on peut lancer la simulation en chargeant les différents fichiers. Un
nouvel onglet, sim, apparait dans la fenêtre workspace. Celui nous permet de sélectionner les modules
dont on souhaite voir apparaitre les signaux lors de la simulation (il e st aussi possible de voir les
variables). Par une clique droite sur le module voulu on peut ajouter directement tous ces signaux à la
fenêtre de visualisation, comme sur la capture d’écran ci-dessous.
Dans la barre des tâches les commandes suivantes permettent de lancer la simulation
pendant le temps indiqué. Automatiquement la fenêtre wave de visualisation des simulations se met à
jour :
1- Introduction
1.1 Survol
ISE Foundation 9.2 est un environnement intégré de développement de systèmes numériques ayant pour
but une implémentation matérielle sur FPGA de la compagnie Xilinx. Les designs peuvent être décrits sous
trois formes principales :
• schémas;
• langage de description matérielle (HDL) comme VHDL et Verilog; et,
• diagrammes d’états. ISE intègre donc différents outils permettant de passer à travers tout le flot
de conception d’un système numérique :
• un éditeur de textes, de schémas et de diagrammes d’état;
• un compilateur VHDL/Verilog;
• un outil de simulation;
• des outils pour la gestion des contraintes temporelles;
• des outils pour la synthèse;
• des outils pour la vérification; et,
• des outils pour l’implantation sur FPGA.
5. Si vous désirez faire un design à base d’un code HDL, choisir HDL comme Top_Level Source Type.
Family permet de choisir la famille de FPGA, et Device permet de sélectionner le sous-type (nombre de
portes logiques). Package définit le type de boitier : dans le cas présent, nous utilisons un FPGA Spartan 3
XC3S200 à 256 pattes.
Appuyer sur Next.
8. Appuyer sur Next deux autres fois pour les deux autres fenêtres et sur Finnish.
On peut dériver les équations pour les sorties retenue et somme grâce à un tableau de Karnaugh, et, à l’aide
de manipulations algébriques, obtenir une version plus efficace pour l’implémentation matérielle. Un
schéma d’un circuit réalisant ces deux fonctions est donné ici :
2. Sélectionner schematic comme source et entrer le nom du schéma que vous allez créer.
6. La première fois qu’on ajoute un fichier source au projet, on obtient une fenêtre semblable à la figure ci-
contre.
7. Cliquer sur l’onglet sources si nécessaire (partie gauche et en haut de l’écran), puis dans la fenêtre
sources cliquer deux fois sur votre fichier pour ouvrir l’éditeur de schémas.
8. Pour ajouter des composantes cliquer sur le symbole : ou dans la barre d’outils AddSymbol
10. Répéter l’étape 8 pour les portes xor2 et or2 correspondant respectivement à un « OU EXCLUSIF »
à deux entrées et à un « OU » à deux entrées.
11. Relier les portes à l’aide d’un fil en cliquant sur le symbole (ou avec le menu AddWire).
Placer ensuite les ports d’entrée et de sortie à l’aide du symbole
(ou avec le menu Add I/OMarquers).
12. Cliquer sur bouton de droite de la souris et renommer les Entrées/Sorties (bit0, bit1, bit2 / Somme,
Retenue) avec l’option Rename Port. Il est à noter que le choix de la direction des ports (en entrée ou en
sortie) s’effectue automatiquement.
14. Pour finir, vérifier votre schéma avec le bouton de la barre d’outil de dessin ou en sélectionnant
Tools Check Schematic du menu. Vérifier les messages dans la console au bas de l’écran.
4 Simulation du design
La simulation du design permet de vérifier qu’il fonctionne de la façon prévue par les spécifications. La
simulation à faire à cette étape est la simulation comportementale. Pour simuler le design il faut créer un
banc d’essai contenant les stimuli d’entrée.
1. Sélectionner le fichier à simuler (Schema_additionneur).
2. Créer un nouveau banc d’essai en sélectionnant ProjectNew Source.
3. Dans la fenêtre qui s’ouvre, sélectionner Test Bench WaveForm comme source, et donner un nom au
fichier comme ci-contre :
5. La page suivante montre quel fichier source est associé au banc d’essai; il s’agit de notre fichier à
simuler.
6. Cliquer Next, puis Finish.
7. Une fenêtre permettant d’effectuer une initialisation temporelle (détermination des paramètres de
l’horloge et de certaines contraintes temporelles) apparaît. Vu que nous travaillons en combinatoire, il faut
cocher l’option combinatorial (or internal clock) dans le cadreclock information.
9. Avec le bouton droit de droite, cliquer sur le début de la courbe (juste à côté de la zone grise)
correspondant au signal bit0; et sélectionner set value.
11. Modifier les valeurs de pulse width et initial delay à une valeur 4 cycles.
14. Sauvegarder le banc d’essai avec File >Save, qui devrait ressembler au schéma ci-contre.
16. Assurez-vous que le banc d’essai est bien sélectionné dans la fenêtre sources.
19. Corriger votre design si vous obtenez des erreurs. Vous ne devriez quitter la simulation que lorsque
celle-ci donne des résultats conformes aux spécifications.
2. Dans la fenêtre Processes, dérouler le menu User Constraints et double-cliquer sur Assign
Package Pins.
3. Dans la fenêtre suivante cliquer sur Yes pour créer automatiquement le fichier
d’assignation (.ucf) des ports du FPGA.
4. Une fenêtre d’assignation de pattes va s’ouvrir. Entrer, dans la section Loc du menu
Design Object List – I/O Pins, les numéros des pattes reliant le FPGA à votre design (f12
pour bit0, g12 pour bit1, h14 pour bit2, p14 pour retenue, k12 pour somme).
Cela a pour effet de connecter les entrées aux commutateurs SW0, SW1, et SW2, et les sorties aux
diodes émettrice de lumière LD1 et LD0 de la planchette.
5. Sauver les allocations effectuées en sélectionnant File_Save. Sélectionner XST Default:<> pour le
type de sauvegarde. Cliquer sur Ok.
1. Informer votre enseignant que vous êtes prêt à utiliser la planchette pour qu’on vous
indique comment effectuer les connexions.
10. Vous devrez obtenir le schéma suivant indiquant que la programmation du FPGA s’est
bien déroulée.
11. Vous pouvez maintenant tester votre design sur le FPGA! Vérifier toutes les combinaisons
possibles d’entrées et vérifier que les sorties sont bien conformes au tableau de vérité.
3. Sélectionner VHDL Module comme source et entrer le nom du schéma que vous allez
créer.
7. Cliquer sur Next et ensuite sur Finish. Une ébauche du fichier apparaît avec la
description de l’entité et de l’architecture.
Une fois le fichier VHDL édité, il est conseillé de vérifier la syntaxe du design afin de
trouver des erreurs de syntaxe, de typographie :
1. Vérifier que synthesis/implementation est sélectionné dans la liste déroulante de la
fenêtre sources.
2. Sélectionner le fichier VHDL VHDL_didacticiel pour afficher les processus liés dans
la fenêtre processes.
3. Cliquer sur le « + » à coté de synthesize-XST.
4. Double-cliquer sur le processus check syntax. Si tout va bien, un crochet vert apparaît.
Sinon, consulter les messages d’erreur dans la console au bas de l’écran.
5. Corriger les erreurs s’il y a lieu, puis fermer le fichier VHDL.
6. Refaire le étapes des sections 4- et 5-
[2] Jaques Weber, Maurice Meaudre, Le longuge VHDL, cours et exercices, édition Dunod, 1997
[3] N. Julien, circuits logiques programmables, Université de Bretagne Sud - Lorient Maîtrise EEA, 1999
29