Vous êtes sur la page 1sur 12

Université Blida 1

Faculté de Technologie
Département d’Electronique
Master 2 AII

TP n°1 : Prise en main de l’outil de développement de FPGA


«XILINX ISE »

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.

I - Réalisation d’un compteur décade sous l’éditeur de schématique


Au démarrage (Xilinx ISE 9.2i*), créer un nouveau projet : choisisser votre répertoire, entrer le
nom du projet et choisir en Top Level Source Type HDL comme dans la fenêtre suivante:

Sélectionner ensuite les paramètres suivants :

* 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.

Faire la synthèse. Regarder le rapport de synthèse et retrouver le taux d’utilisation des


ressources du FPGA cible et la fréquence maximale de fonctionnement.

2/12
II- Simulation fonctionnelle

Réaliser la simulation fonctionnelle en utilisant dans la fenêtre « Sources » la commande


« Behavioral Simulation »:

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

On peut observer l’impulsion qu’on vient de rajouter :

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 ».

III- Utilisation de l’éditeur de FPGA, placement automatique du circuit


On s’intéressera au placement automatique avec observation sous l’Editeur de FPGA.
Le FPGA Editor est un éditeur graphique qui permet de visualiser l’implantation dans le FPGA
de votre circuit; il permet de rentrer dans les fonctions de base du FPGA ainsi que d’accéder
aux temps de propagation dus à ce routage.

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.

V. Utilisation du Floorplanner, placement semi-automatique du circuit


On va maintenant faire un placement routage semi-automatique en imposant une contrainte sur
l’aire de routage. Pour cela supprimer dans le Floorplanner les composants (sauf les IOBs),
puis sélectionner tous les CLBs et les grouper (dans Hierarchy puis Group). On représente
l’aire où l’on souhaite placer les composants (CLBs) en sélectionnant dans Floorplan, assign
area constraints et en dessinant un rectangle dans la fenêtre d’édition :

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.

VI. Utilisation du Floorplanner, placement automatique du circuit avec


contraintes temporelles sur l'horloge

Supprimer les contraintes de placement des composants et des pattes.


On souhaite forcer un temps maximum pour le routage entre deux connections, avec l’horloge
par exemple. Sélectionner donc Create Timing constraints. Sélectionner le signal clk, dans
Global lui imposer 6ns, puis sélectionner un autre onglet avant de sauver pour mémoriser cette
contrainte. Dans le cas où cette contrainte ne peut être respectée quel que soit le routage, le
placement n’a pas lieu et le logiciel renvoie un message d’erreur en ce sens. Par contre, pour
des temps suffisamment petits mais possibles, les routages ont lieu et sont optimisés. C’est ici
le but de l’opération.

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.

VII. Simulation Post-Routage

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

Vous aimerez peut-être aussi