Sie sind auf Seite 1von 7

Annee 2015-2016

Tutorial Xilinx - Vivado

Camille LEROUX

Fili`ere : TELECOM Annee : 2015-2016 Semestre : 6

1 Objectif
Lobjectif de ce tutorial est de donner les principales clefs pour utiliser la suite doutils Vivado
de la societe Xilinx. Nous allons realiser un simple additionneur complet (full adder) en utilisant
un language de description materielle: le VHDL. Nous allons ensuite tester le full adder sur la
carte Basys 3 de la societe Digilent. A la fin de ce tutorial, vous devez etre capable de :
Lancer loutil,
Creer un nouveau projet,
Decrire un circuit combinatoire simple en VHDL,
Creer un fichier de contraintes .xdc,
Faire la synth`ese, le placement, le routage et la generation du bit stream,
Reconfigurer le circuit FPGA de la carte.

2 Introduction au logiciel Xilinx Vivado


Ce document a pour but de vous familiariser avec loutil Vivado, il ne presente que quelques
aspects de ce panel doutils tr`es riche et dont la parfaite matrise demande de nombreuses heures
de manipulation. Cependant il est possible dacquerir rapidement une matrise partielle avec
quelques manipulations de bases.

2.1 Lancement de loutil


Ouvrez un terminal et tapez la commande suivante : launch vivado
La fenetre Vivado souvre alors :

Si cette fenetre nest pas vide, faites :

File>Close Project

Generalement, loutil souvre avec le dernier projet ouvert.

1
2.2 Cr
eation dun nouveau projet
Creez un projet :

File>New Project

La fenetre New Project apparat:

Cliquez sur Next


Project Name : nom de votre projet : TP EN101 (attention pas despace)
Project Location : chemin de sauvegarde du projet et des fichiers associes
Cliquez sur Next
S
electionnez RTL Project
Cliquez sur Next
A laide des filtres, selectionnez le circuit FPGA que nous allons utiliser : xc7a35tcpg236-
1
Cliquez sur Next
Cliquez sur Finish
NB : A tout moment il est possible de changer ces informations en cliquant sur Project Set-
tings dans la fenetre Flow Navigator sur la gauche.

Le projet vide est maintenant cree. Nous allons `a present creer un fichier source qui contriendra
la description du full adder, et lajouter au projet.

2.3 Ajouter des fichiers sources


Pour ajouter une nouvelle source faites :
File > Add Sources.
Selectionnez Add or Create Design Sources.
Cliquez sur Create File
File Type: VHDL
File name: full adder
File location: Local to Project
Cliquez sur Create File
Cliquez sur Finish
Definissez les port dentree / sortie :
A : in 1 bit
B : in 1 bit
2
CIN : in 1 bit
S : out 1 bit
COUT : out 1 bit
Cliquez sur OK
Une fois le fichier VHDL cree, celui-ci apparait dans larboresence de la fenetre Sources.

Double cliquez sur le fichier full adder.vhd.

Le fichier VHDL apparait alors. On peut modifier la specification des ports dentree/sortie dans
la partie entity du fichier: Par exemple pour un port dentree TOTO sur 1 bit:
TOTO : in STD LOGIC;

Pour un port de sortie TATA sur 3 bits:


TATA : out STD LOGIC VECTOR(2 downto 0);

2.4 Description de larchitecture


Une fois les ports dentree/sortie definis, il nous faut decrire larchitecture de notre full adder.
Le circuit combinatoire implementant un full adder est donnee sur la Figure 1.

Figure 1: Schema de ladditionneur complet

Pour decrire ce circuit en VHDL, nous avons besoin de portes logiques de base. En VHDL,
tous les operateurs logiques de base sont disponibles: not, and, or, nand, nor, xor, xnor. Par
exemple pour generer AXORB = A B, il suffit de taper apr`es le mot clef begin:
AXORB <= A xor B; Nous avons egalement besoin de declarer le fil AXORB. Pour cela, il suffit
de le declarer avant le mot clef begin:
signal AXORB : std logic;

Modifiez le fichier VHDL pour obtenir la description du full adder suivante:


library IEEE;

3
use IEEE.STD_LOGIC_1164.ALL;

entity full_adder is
Port ( A : in STD_LOGIC;
B : in STD_LOGIC;
CIN : in STD_LOGIC;
S : out STD_LOGIC;
COUT : out STD_LOGIC);
end full_adder;

architecture Behavioral of full_adder is

signal AXORB : std_logic;

begin

AXORB <= A xor B;


S <= AXORB xor CIN;
COUT <= (A and B) or (CIN and AXORB);

end Behavioral;

3 Implantation du Full Adder sur le FPGA


3.1 Ajout du fichier etape 0.vhd
Maintenant que larchitecture du Full Adder est decrite en VHDL, nous allons limplanter sur
le circuit FPGA.
Pour tester le fonctionnement du full adder, nous allons connecter 3 interrupteurs de la carte
Basys 3 aux entrees (A, B en CIN) et 2 LEDs aux sorties (S et COUT). Larchitecture de
etape 0.vhd est decrite sur la Figure 2.

La description VHDL etape 0.vhd a dej`a ete ecrite. Telechargez l`a (cleroux.vvv.enseirb-matmeca.fr/EN101/
puis ajoutez l`a au projet:
File > Add Sources
Selectionnez Add or Create Design Sources
Cliquez sur Next
Cliquez sur Add Files
Allez chercher le fichier etape 0.vhd `a lendroit ou vous lavez telecharge
Cliquez sur Finish
Une fois que le fichier etape 0.vhd a ete ajoute, il doit apparaitre dans la fenetre Sources et le
fichier full adder.vhd doit se trouver sous le fichier etape 0.vhd, ce qui montre que larchitecture
du bloc etape 0 contient/instancie un module de type full adder.
4
3.2 Ajout du fichier de contraintes
Le FPGA sur lequel nous allons implanter le circuit comporte un grand nombre de pattes
dentree/sortie. Il faut donc maintenant connecter les entrees sw(0), sw(1) et sw(2) et sorties
led(0) et led(1) du bloc etape 0 aux pattes du FPGA qui sont physiquement connectees aux
LEDs et aux interrupteurs sur la carte (Cf Figure 2). Ceci est specifie dans un fichier .xdc
(Xilinx Design Constraints). Ajouter le fichier Basys3.xdc fournit `a votre projet:

File > Add Sources


Selectionnez Add or Create Constraints
Cliquez sur Add Files
Allez chercher le fichier de contraintes Basys3.xdc l`a ou vous lavez telecharge
Cliquez sur Finish
Apr`es lajout, votre fichier de contrainte apparait dans larborescence de la fenetre Sources,
dans le repertoire Constaints. En louvrant, vous devez retrouver les directives suivantes qui
permettent de connecter les entrees/sorties du module etape 0 aux pattes du FPGA.
set_property PACKAGE_PIN V17 [get_ports {sw[0]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[0]}]
set_property PACKAGE_PIN V16 [get_ports {sw[1]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[1]}]
set_property PACKAGE_PIN W16 [get_ports {sw[2]}]
set_property IOSTANDARD LVCMOS33 [get_ports {sw[2]}]

3.3 Synth`
ese logique
Une fois ceci fait, selectionnez le module etape 0 dans la fenetre Sources, puis clique droit et
Set as Top. Ceci permet de dire `a loutil que cest ce module ci et ses eventuels sous-modules
quil va falloir implementer sur le FPGA. Le module etape 0 doit alors apparaitre en gras dans
larborescence. Ceci fait, nous allons voir ce que produit letape de synth`ese logique a` partir de
la description VHDL:
Selectionner le module etape 0 (simple clique dessus)
Dans la fenetre Project Manager, dans la rubrique Synthesis, cliquez sur Schematic.

Le processus de synth`ese se lance et vous voyez apparaitre un schema logique compose de LUT
et de buffer. Vous pouvez verifiez le contenu de chaque LUT :
Clique droit sur une LUT
Cell properties

5
Carte Basys

LED0
FPGA U16 LED1
E19
switch
switch
0
1
Etape 0 LED2
switch 2 Full Adder
V17 sw(0)
switch 3 A S LED3
V16 sw(1) led(0)
switch 4 B
W16 sw(2)
switch 5 CIN COUT LED4
led(1)
switch 6
switch 7 LED5

LED6

LED7

Figure 2: Connexion des I/O du module Full Adder aux I/O du FPGA

3.4 Placement et routage


Une fois la synth`ese logique effectuee, loutil va affecter les 2 LUTs synth`etisees sur les LUTs
disponibles sur le FPGA (ce FPGA en contient un peu plus de 20000). Il va ensuite configurer
les interconnexions pour relier les entrees du circuit FPGA aux LUTs et les sorties des LUTs
aux sorties du circuit. Pour lancer la phase de placement/routage:
Selectionner le module etape 0 (simple clique dessus)
Dans la rubrique Implementation, cliquez sur Run Implementation
Apr`es quelques secondes, une fenetre de Warning apparait, cliquez sur OK
Apr`es quelques secondes supplementaires, un fenetre apparait, s
electionnez Open Im-
plemented Design, puis OK
Une fenetre device apparait. En zoomant sur le circuit essayez de retrouver les LUTs, les entrees
sw(2:0) et les sorties led(1:0).

3.5 G
en
eration du bitstream et configuration du FPGA
La derni`ere etape du processus dimplantation consiste `a generer un bit stream, cest a` dire un
fichier binaire qui va etre telecharge sur le FPGA et qui va permettre de configurer le contenu de
6
chaque LUT et de chaque interconnexion du FPGA pour que celui-ci implemente larchitecture
que vous avez visualisee apr`es la phase de placement routage.
Pour generer ce bit stream:
Branchez la carte `a votre PC, et allumez votre carte (interrupteur a` cote du cable mini
USB)
Dans la rubrique Program and Debug, cliquez sur Generate Bitstream
Apr`es quelques secondes, une fenetre apparait, selectionnez Open Hardware Manager,
puis OK
Clique droit sur la cible (xc7a35t), puis Program Device
Le bitstream est transfere sur le circuit FPGA via le cable USB. Une fois le circuit configure,
vous pouvez changer la valeur des interupteurs et verifier que votre full adder fonctionne.
NB: Il est possible de realiser toutes les etapes de limplementation jusqu`a la generation du
bitstream en cliquant directement sur Generate Bitstream.

Das könnte Ihnen auch gefallen