Vous êtes sur la page 1sur 6

USTHB/FEI/M1-Instrum.

TP2

Faculté d’électronique & d’informatique


Département Instrumentation
Master 1

TP2
Développement d’un système numérique :
Exploitation du simulateur en VHDL

1. But du TP
Dans ce TP, vous allez réaliser votre première conception
simple qui va vous permettre de découvrir les entrées et
Consignes
sorties de la carte Nexys2. Par la même occasion, ce TP
Faire valider le code par l’enseignant
vise à fournir une initiation à l’utilisation des outils de
avant la programmation de la carte ;
Xilinx et Digilent. De par sa simplicité, c’est aussi un bon
exemple pour comprendre le fonctionnement de la chaîne
Faire valider chacune des applications
par l’enseignant ;
de transformation : comment à partir d’un code de
description ou un schéma de circuit vous allez, par ISE, Il vous est conseillé de faire un compte-
produire un fichier toplevel.bit. Ce fichier est ensuite rendu et le rendre à la fin de séance TP.
chargé sur la carte afin d’implanter sur celle-ci le circuit
spécifié dans ISE.

2. Rappel du cours : Structure d’un module VHDL


2.1 Description d’un système numérique :
Par le biais du langage VHDL, la description passe par 3 étapes différentes. L’ensemble est
contenu dans un fichier source portant l’extension *.vhd.
a) La déclaration des ressources externes
-- On retrouve en en-tête du fichier source *.vhd
(bibliothèques) ; library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
use IEEE.STD_LOGIC_ARITH.ALL;
use IEEE.STD_LOGIC_UNSIGNED.ALL;

b) La description de l’entité du système, correspondant à la liste des entrées/sorties ;


L’entité permet de spécifier les différents ports entityTP2i s
d’entrées/sorties du système. Pourchacun d’entre eux, il est port(
indispensable de donner sa direction : a , b :inSTD_LOGIC ;
inentrée simple ;outsortie simple s :outSTD_LOGIC) ;
Buffersortie rétroactive ;inoutentrée-sortie bidirectionnelle endTP2

c) La description de l’architecture correspondant à la définition des fonctionnalités du système.


Une architecture est reliée à une entité et permet de décrire architectureBehavorial of
lefonctionnement du système. Cette description peutêtre de TP2 is
--déclaration des signaux
deux types :
Begin
Description comportementale: le comportement du système Processus1 ;
est décrit (description la plus couramment utilisée Processus2 ;
enVHDL) ;Description structurelle: descriptionréservée à des …
fonctions simples ou pré-calculées. End Behavorial
D. ADDOU 1
USTHB/FEI/M1-Instrum. TP2

2.2 Objets en VHDL 2.3 Types en VHDL


Signal objet physique, associé à des événements bit, bit_vector, integer, boolean : type de base
Variable intermédiaire de calcul, non physique std_logic, std_logic_vector, signed, unsigned : type IEEE
constant

2.4 Opérations en VHDL 2.5 Notations


LOGIQUES :and, nand, or, nor, xor, xnor, not bit : '0' ou '1' ;
DÉCALAGE :sll, slr, sla, sra, rol, ror bit_vector : "0100";
RELATIONNELS : =, /=, <, >, <=, >= ASCII : "Texte";
ARITHMÉTIQUES : +, -, *, /, MOD Décimal : 423;
AFFECTATION : <= Hexadécimal : x"1A"

2.6 Instructions en VHDL


Affectation >>> conditionnelle sélective For… generate
x<= a when cond1 else withexpr select for iinMIN to MAX generate
b whencond2 else, x<= a whenval1, Instructions de description;
Hors processus … b when val2, end loop;
z; …
z when others ;

Test>>> SI CAS Blocs répétitifs Temporisation


If x="0" then casex is for iin 0 to 5loop wait until
y <=’0’; when "00" => y<="0"; instructions; Clk ‘event and clk=’1’;
Dans elsif x="01" when "01" => y<="10"; end generate; instructions;
processus then when others => y<="11"; whilei<5loop
y <=’0’; end case instructions;
end if ; end loop;

Syntaxe :
Remplissage d’un
Label : process(liste des signaux de sensibilité) Détecteur d’un front
bit_vector
Nom des objets internes : types ; -- si nécessaire
--Front montant --tous les bits à 0
begin
ifclk ‘event andclk=’1’ then … X<= (others=>’0’);
...
--Front descendant --tous les bits à 1
endprocess;
ifclk ‘event andclk=’0’ then … X<= (others=>’1’);

3. Manipulation : Décodeur Hexa - 7 segments


Pour cette première expérience, nous aborderons les dispositifs les plus fondamentaux de la carte NEXSYS, le
segment de switch et l’afficheur LED 7-segment. La première partie est assez simple: utiliser 4 interrupteurs SW0
à SW3 pour représenter un nombre de 4-bit binaire dont la valeur peut évidemment s’afficher en hexa entre 0-F.
Pour commencer, il faut créer un décodeur hexadécimal vers 7 segments qui transforme un codebinaire
sur 4 bits en 7 signaux qui affichent le caractère correspondant sur l'afficheur.
3.1Dresser la table de vérité du décodeur Hexa-7seg. Les segments de l’afficheur sont notés A B C D
E F G comme indiqué sur la figure 1 suivante. Il faut imposerun niveau 0 pour allumer un segment et un
niveau 1 pour l'éteindre.

D. ADDOU 2
USTHB/FEI/M1-Instrum. TP2

Fig. 1 : Affichage sur 4 bits 7 segments

3.2Créer un nouveau projet. La phase de démarrage est la même que pour le premier TP à savoir :
Créer un nouveau projet que vous appelez "TP2". Tapez le nom du projet TP2 dans le champ « Project
Name » et sélectionnez le type HDL pour le design principal (Fig. 2).

Fig. 2: Écran de saisie des caractéristiques du projet.

3.3Ajouter une nouvelle source de type VHDL Module dans lequel on décrira en langage VHDLle
comportement du décodeur. Nommer ce fichier hex_7seg. Cliquer sur Next. Une nouvelle fenêtre
s'ouvre, il faut indiquer les noms, tailles et sens des différentes entréeset sorties du composant logique.
Les entrées sont les 4 bits du code hexadécimal switchs(3 :0),les sorties sont les 7 segments nommés
seg(6 :0) permettant d'afficher le caractère et 4 anodes nommées anodes(4 :0).

Fig. 3: Écran du module de définition entrées et sorties


Un nouveau fichier nommé hex_7seg.vhd s'ouvre. Une partie du code VHDL est déjà écrite.Ce code est
composé de deux blocs : un bloc ENTITY qui reprend les entrées et les sorties spécifiées précédemment
et un bloc ARCHITECTURE qui décrit le comportement des sortiesen fonction des entrées.

D. ADDOU 3
USTHB/FEI/M1-Instrum. TP2

3.4Compléter la partie ARCHITECTURE. (fig. 4)

entity hex_7seg is
Port ( switches : in STD_LOGIC_VECTOR (3 downto 0);
seg : out STD_LOGIC_VECTOR (6 downto 0);
anodes : out STD_LOGIC_VECTOR (3 downto 0));
end hex_7seg;
architectureBehavioral of hex_7seg is
begin
withswitches select
seg<=
"1000000" when x"0" ,
"1111001" when x"1" ,

Fig. 4 : Code VHDL du décodeur Hex-7seg


Enregistrer le fichier hex_7seg.vhd. Le sélectionner puis vérifier la syntaxe en cliquant surCheck
Syntax, sous la rubrique “Synthesize-XST” dans le volet Process. Corriger les erreurs éventuelles.

3.5Synthèse et implémentation :

Viens ensuite la phase de synthèse ("Synthetize XST") puis de placement et de routage ("Implement
Design"). Cesétapes nécessitent la connaissance, d’une part, de la cible (FPGA) et, d’autre part, de
l’environnement du circuit(entrées/sorties associées aux autres composants de la maquette). Il est donc
nécessaire, avant de réaliser ces étapes-là,de faire l’assignation des broches du composant avec la
description fournie. Pour cela, vous pouvez vous aider de lafonction "Assign Package Pins" dans la
partie "User Constraints" et de la documentation de la maquette fournie.
Sachant que l’assignation des ports se fait par l’entremise d’un fichier de contraintes avec l’extension
"UCF". Vous pouvez remplir la table de location des ports (partie location " LOC "), comme le montre
la figue 5 et vérifier bien ces derniers sur la carte elle-même (Fig. 5).

"anodes<0>" LOC = "F17";


"anodes<1>" LOC = "H17";
"anodes<2>" LOC = "C18";
"anodes<3>" LOC = "F15";
"seg<0>" LOC = "L18";
"seg<1>" LOC = "F18";
"seg<2>" LOC = "D17";
"seg<3>" LOC = "D16";
"seg<4>" LOC = "G14";
"seg<5>" LOC = "J17";
"seg<6>" LOC = "H14";
"switchs<0>" LOC = "G18";
"switchs<1>" LOC = "H18";
"switchs<2>" LOC = "K18";
"switchs<3>" LOC = "K17";

Fig. 5 : La table de location des ports

D. ADDOU 4
USTHB/FEI/M1-Instrum. TP2

Il est aussi possible à ce stade de lancer différentes simulations :


Fonctionnelle : permettant de savoir si le fonctionnement du système est celui décrit ;
Post-synthèse : permettant, après synthèse, de vérifier à nouveau le fonctionnement du système ;
Temporelle : permettant, après l’étape de routage, de valider les contraintes temporelles
associées au placement des"composants".
Ces différentes phases doivent être répétées pour l’ensemble des modules composant l’application. La
dernière étapeconsiste à produire le fichier de programmation ("GenerateProgramming File") et à le
transférer dans la mémoire duFPGA.

Fig. 6 : Différentes phases du développement d’un système numérique

L'implémentation est l'étape de transformation de la description du circuit en fichier de


programmation "BIT file". Donc, il vous reste à positionner le mode de l’horloge utilisé lors du
chargement du FPGA. Sélectionnez hex_7seg.vhd, puis dans la fenêtre processes, cliquez droit sur
GenerateProgramming File et dans le menu déroulant sur ProcessProperties. Positionnez la FPGA
Start-UPClock à JTAGClock dans Startup Options (fig. 7).A nepasoublier, pour chaque nouveau
projet, il faudra lors de la première compilation vérifier ce paramètre.

Fig. 7 : Option JTAG

D. ADDOU 5
USTHB/FEI/M1-Instrum. TP2

Une fois que toutes les étapes de "compilation" sont réussies (Fig. 8), le fichier binaire *.bit est généré
(avec un double clic sur GenerateProgramming File) et peut alors êtreimplanté dans le FPGA.Pour cela, il
est nécessaire de relier la carte sur un des ports USB de l’ordinateur et d’allumer la carte
d’étude(interrupteur le plus à gauche - SW8).

Fig. 8 : Chaine de compilation

Le fichier généré se trouve dans votre projet et se nomme ici hex_7seg.bit. L’utilitaire Adept (Digilent)
sera alors utiliser pour transférer le fichier binaire vers le FPGA.Pour cela, lancez Adept depuis le menu
démarrer de votre PC. Il vous suffit de sélectionner le bon fichier avec Browse et une fois effectué
vous pouvez charger le code produit par ISE sur le FPGA de la carte Nexys. Cliquez sur Program.

Enfin, Tester et vérifier le fonctionnement de votre circuit.Le faire valider par votre enseignant.

4. Applications
On se propose ici de reprendre en main le logiciel Xilinx ISE. Pour cela, il vous est demandé de réaliser
les systèmes suivants et faire valider leurs fonctionnements par votre enseignant :
4.1 Réaliser un soustracteur complet à 1 bit.Conformément à la description utilisée en TP1, les entrées
seront réalisées à l’aide des switchs et les sorties seront visualisées sur des LEDs.
4.2 Réaliserun multiplexeur 4 vers 1. Les entrées seront réalisées par des interrupteurs et les sorties par
des LEDs.

D. ADDOU 6

Vous aimerez peut-être aussi