Académique Documents
Professionnel Documents
Culture Documents
Faculté de Technologie
Département d’Electronique
Master 2 AII
Objectifs :
- Création et implantation d’un compteur décade avec une remise à zéro asynchrone et une
entrée de validation de comptage dans un FPGA Spartan 3.
- Observation sous l’éditeur de FPGA (FPGA Editor) et sous l’éditeur de placement
(Floorplanner) du placement, du routage et des temps de propagation. On s’intéressera à trois
sortes de placement possibles: le placement automatique avec observation sous l’Editeur de
FPGA, placement manuel sous le Floorplanner, placement sous contraintes indiquées dans le
Floorplanner.
- Edition des contraintes pour des améliorations éventuelles des performances du compteur.
* Dans le cas d’utilisation d’autres versions de Xilinx ISE, quelques fonctionnalités et fenêtres de configuration peuvent être
différentes de celles présentées dans ce TP
1/12
1. Donner la table de vérité du bloc combinatoire du compteur décade synchrone (4 bits) et les
équations déduites de la synthèse (par tables de Karnaugh).
2. Réaliser ce compteur synchrone sous l’éditeur de schématique, à l’aide de bascules D (fdce)
actives sur front montant de l’horloge, mises à zéro de façon asynchrone (entrée CLR mise à 1)
et ayant une entrée de validation (entrée CE = Clock Enable mise à 1).
Ces bascules sont disponibles dans la librairie Flip_Flop. Les inverseurs, portes ET/OU… sont
disponibles dans la librairie Logic.
N.B. Afin d’accéder à l’éditeur de schématique, cliquer sur « Create New Source », sélectionner
« Schematic » et donner un nom correspondant.
2/12
II- Simulation fonctionnelle
Ajouter alors une nouvelle source de simulation dans votre projet (Test Bench WaveForm),
ainsi:
Apparaît alors la fenêtre suivante, pour l’initialisation de(s) horloge(s) et de ses Timing ou celle
des signaux combinatoires :
3/12
Choisir les caractéristiques de l’horloge et valider vos signaux par OK.
La fenêtre suivante (*.tbw) d’édition des stimulis des différentes entrées apparaît :
Pour modifier la forme d’onde sur l’entrée de remise à zéro par exemple, cliquer sur le signal
«CLR» (le signal passe ainsi de 0 à 1 ou vice versa). Cependant, on ne peut changer le niveau
de ce signal qu’au début ou à la fin des zones indiquées en bleu qui correspondent au
minimum input setup que vous avez choisi dans les paramètres d’initialisation de l’horloge.
Il possible de configurer autrement le signal CLR en double cliquant sur sa forme. La fenêtre
suivante apparaît :
4/12
Cliquer sur « Pattern Wizard ». Choisir un « Pattern Type » « Pulse » et ses paramètres :
Nombre de cycle
pour lequel
l’impulsion doit se
répéter
Le nombre 1
correspond à une
période de
l’horloge
Enregistrer alors tout le projet pour qu’apparaisse dans l’arborescence le fichier Testbench
(*.tbw) créé; cliquer ensuite sur ce fichier et dans la fenêtre Process, sélectionner « Simulate
Behavioral Model » (sous le process Xilinx ISE Simulator), puis Rerun All pour accéder au
simulateur et faire apparaître la fenêtre simulation de dessin des signaux.
Vérifier le bon fonctionnement du compteur en simulation.
N.B. Il possible de lancer cette simulation en configurant de manière textuelle (Code VHDL) vos
signaux d’entrée en utilisant la source « VHDL test Bench ».
Pour rentrer dans l’éditeur même du FPGA, appelé FPGA Editor, aller dans la fenêtre
Processes (sous l'onglet Synthesis / Implementation) sur le menu Implement Design, puis
sur le sous menu Place&Route, puis sur View/Edit Routed Design (FPGA Editor) :
5/12
Une fenêtre (appelée World1) représentant le circuit complet, apparaît en bas et à droite de
l'écran. La partie visualisée y est indiquée par un cadre blanc. Pour se déplacer dans le FPGA
(qui apparaît dans la fenêtre Array1), utiliser le zoom (+) dans la barre d'outils horizontale puis,
dans la fenêtre World1, maintenir appuyé le bouton gauche de la souris et la déplacer ; utiliser
le zoom (+) si besoin.
Pour faire apparaître les slices (éléments de CLB) ou les IOB configurés ainsi que le routage,
sélectionner tous les composants dans la fenêtre List et choisir une couleur dans la colonne de
droite Hilite (jaune par exemple).
Localiser les différentes slices et donner les fonctions auxquels elles correspondent et vérifier
qu'elles correspondent à celles que vous avez établies (pour les 4 sorties).
Pour éditer une slice déjà configurée (apparaissant en jaune), sélectionner la avec la souris
(elle apparaît alors en rouge) ; Ensuite, double cliquer dessus (ou sélectionner simplement la
commande EDITBLOCK située dans la barre d'outils verticale à droite) pour rentrer dans une
autre fenêtre appelée Block1 où apparaissent les 2 fonctions combinatoires F et G et les 2
bascules D composant toute slice.
6/12
Nom de la slice Slice sélectionnée
Faire une copie écran (lisible) de la fonction combinatoire correspondant à l’entrée nommée D2
dans Editblock, comme dans l’exemple ci-dessous :
Equation de la LUT F
Mesurer les temps de propagation de l’horloge sur les différentes entrées d’horloge des
différentes slices, comparez aux temps de propagation des autres signaux. Que remarquez-
vous sur les temps de propagation de l'horloge ? Commenter.
Fermer la fenêtre Block1 pour revenir au schéma général du FPGA. Exit (dans la barre d'outils
verticale) permet de sortir de l’éditeur de FPGA ! !
7/12
IV. Utilisation du Floorplanner, placement manuel du circuit
On s’intéressera au placement manuel sous le Floorplanner. Le Floorplanner est un éditeur
graphique de placement.
Pour faire ce placement, aller dans la fenêtre de Process, puis Translate, puis Floorplan
Design (Rerun all). Sélectionner alors les composants un par un et les positionner dans le
FPGA où vous le souhaitez.
Remarques :
Lorsque les composants sont implantés l’icône devant leur nom disparaît, sinon elle est
toujours présente.
Lorsqu’un composant ne peut pas être placé à un endroit adéquat, un symbole d’interdiction
apparaît sur l’écran. Pour placer le BUFGP (buffer réservé aux entrées d’horloge), chercher
les différentes positions.
- Combien y en a-t-il dans le Spartan3 ?
Ne pas placer l’horloge (ici CLK)! L’horloge sera placée automatiquement sur la patte dédiée
qui est l’horloge de 50Mhz propre à la carte de développement « Digilent » (inaccessible par
l’utilisateur).
Faire un premier placement de tous les composants en les positionnant aux quatre coins du
FPGA.
- Faire une recopie d’écran de l’ensemble de l’implantation.
Enregistrer l’emplacement et créer les fichiers *.fnf (netlist du Floorplanner) et *.ucf (fichier de
contraintes) correspondants. Retourner dans le Project Manager, aller dans Process puis
User constraints. Il est possible de visualiser dans le fichier Edit Constraint (text), le fichier
*.ucf qui décrit les contraintes. On peut également éditer manuellement ce fichier pour modifier
la contrainte.
Fermer ensuite la fenêtre et lancer l’implémentation dans Implement Design.
8/12
On souhaite observer les nouveaux temps de propagation optimisés. Pour cela, aller dans
Place and Route, Generate Post Place and Route static Timing puis analyse Post Place
and Route static timing, dans le menu Analyze, sélectionner ensuite Against auto generated
design constraints.
Relever le temps maximum de propagation et la connexion à laquelle il correspond. En déduire
la fréquence max de fonctionnement qui correspond donc à la fréquence max autorisée pour
l'horloge. Observer dans le FPGA Editor si le temps de fanout correspond.
9/12
Enregistrer, puis sélectionner Place and Route puis view edit placed design (floorplanner).
Vérifier si le placement a été fait comme demandé dans la fenêtre de placement. Puis retourner
dans la fenêtre d’édition, dans le menu Floorplan, faire replace all with placement. Relever
dans le fichier de analyse Post Place and Route static timing le nouveau temps max.
Répondre aux mêmes questions que dans le cas du placement manuel. Relever les
nouveaux numéros de pattes des entrées et confirmer en ouvrant le fichier *.ucf et en
l’imprimant.
Faire l'implémentation. Répondre aux mêmes questions que dans le cas du placement
manuel. Jouer sur la contrainte imposée sur le temps d'horloge pour déduire la
fréquence max. de fonctionnement. Conclusions.
Réaliser une simulation tenant compte de l’implantation dans le FPGA en utilisant dans la
fenêtre Sources la commande Post-Route Simulation:
Recréer une nouvelle source de simulation dans votre projet comme indiqué précédemment
(partie II : simulation fonctionnelle).
Après avoir édité les stimulis, sauver alors tout le projet pour qu’apparaisse dans l’arborescence
le nouveau fichier Testbench (*.tbw) créé ; cliquer ensuite sur ce fichier et dans la fenêtre
10/12
Process, sélectionner alors Xilinx ISE Simulator , puis Simulate Post- Place&Route Model
puis Rerun All pour accéder au simulateur et faire apparaître la fenêtre de simulation des
signaux.
Comparer alors les temps de propagation maximum fournis par le simulateur avec ceux
obtenus par FPGA Editor.
Rajouter les signaux d’entrée des bascules (ex D1) en le faisant glisser de Sim Hierarchy- test
(dans la fenêtre de Process) vers la fenêtre de simulation :
11/12
Puis relancer la simulation en utilisant le bouton Restart Simulation, puis Run All :
Mesurer les temps de propagation dans les portes logiques décodant les entrées Di (ex D0).
Mesurer le temps de propagation entre l’horloge et Q0 (par exemple) et les différents temps sur
le chemin parcouru (passage dans la fonction combinatoire, puis dans la bascule puis vers le
bloc de sortie …). En déduire la fréquence maximum de l’horloge possible.
Imprimer les simulations intéressantes.
12/12