38
Logique combinatoire et s´ equentielle EN102 / EN103 epartement Electronique 1 ` ere ann´ ee Semestre 5 Fascicule de TD et TP 1

Fascicule de TD et TP

  • Upload
    others

  • View
    8

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Fascicule de TD et TP

Logique combinatoire et sequentielleEN102 / EN103

Departement Electronique 1ere annee Semestre 5

Fascicule de TD et TP

1

Page 2: Fascicule de TD et TP

Contents

I Organisation des enseignements 4

1 Objectifs, deroulement et evaluation 51.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.2 Deroulement . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.3 Evaluation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Contenu pedagogique 62.1 Le cours . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Les TD et TP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.3 Le projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6

II Travaux Diriges 7

3 Exercices preparatoires pour les TP 83.1 Exercice 1 : Du Full adder a l’additionneur/soustracteur . . . . . . . . 83.2 Exercice 2 : Bascule D et circuit synchrone . . . . . . . . . . . . . . . . . 103.3 Exercice 3 : Detection de front . . . . . . . . . . . . . . . . . . . . . . . . . 123.4 Exercice 4 : Compteur/decompteur universel . . . . . . . . . . . . . . . . 133.5 Exercice 5 : Look Up Table (LUT) a base de bascules D . . . . . . . . . 143.6 Exercice 6 : Controleur d’afficheur 7 segments . . . . . . . . . . . . . . . 163.7 Exercice 7 : Synthese d’une machine a etats finis . . . . . . . . . . . . . 18

4 Exercices complementaires 194.1 Exercice 8 : Digicode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 194.2 Exercice 9 : Analyse d’un Linear Feedback Shift Register (LFSR) . . . 194.3 Exercice 10 : Conception d’un multiplieur . . . . . . . . . . . . . . . . . . 204.4 Exercice 11 : Synthese d’un circuit combinatoire . . . . . . . . . . . . . . 204.5 Exercice 12 : Synthese avec des multiplexeurs . . . . . . . . . . . . . . . 204.6 Exercice 13 : Comparateur N bits . . . . . . . . . . . . . . . . . . . . . . . 214.7 Exercice 14 : Tri parallele . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22

III Travaux Pratiques 23

5 TP 1 : Tutoriel Vivado 245.1 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

2

Page 3: Fascicule de TD et TP

5.2 Lancement de l’outil Xilinx Vivado 2018 . . . . . . . . . . . . . . . . . . . . . . 245.3 Creation d’un nouveau projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245.4 Ajouter des fichiers sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 255.5 Description de l’architecture . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 265.6 Ajout du fichier top level . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.7 Simulation du Full Adder a l’aide d’un test bench . . . . . . . . . . . . . . . . . 285.8 Implantation du Full Adder sur le FPGA . . . . . . . . . . . . . . . . . . . . . . 28

6 TP 2 : Un additionneur/soustracteur avec transcodage en signe et magni-tude 316.1 Description structurelle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 316.2 Description comportementale . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

7 TP 3 : Un compteur/decompteur universel 33

8 TP 4 : Controleur d’afficheurs 7 segments 34

9 TP 5 : Machine d’etats pour controleur de Bus 35

IV Projet 369.1 Jeu de conversion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

3

Page 4: Fascicule de TD et TP

I. Organisation des enseignements

4

Page 5: Fascicule de TD et TP

1. Objectifs, deroulement et evaluation

1.1 Objectifs

Voici les principaux objectifs des modules EN102 et EN103:

• Maıtriser la representation de l’information dans les bases binaires, octales et hexadecimales.

• Maıtriser l’arithmetique binaire elementaire : complement a 2, addition, soustraction,multiplication.

• Concevoir des circuits numeriques integrant a la fois de la logique combinatoire et de lalogique sequentielle synchrone.

• Analyser un circuit numerique et en deduire son comportement dans le temps (chrono-gramme).

• Decrire le comportement d’architectusres de circuits numeriques en utilisant le langageVHDL.

• Simuler le comportement d’architectures de circuits numeriques.

• Synthetiser et implementer sur circuit FPGA des ciruits numeriques.

1.2 Deroulement

Les enseignements se deroulent en plusieurs phases.

• 5 Cours d’1h20 (6h40)

• 1 QCM d’1h20

• 6 seances de TD + TP de 4h (24h00)

• 4 seances de Projet de 4h (16h00)

1.3 Evaluation

L’evaluation inclut un QCM, un rapport de projet et un examen ecrit de 2h.Une partie des concepts vus en cours sont evalues lors d’un QCM (Algebre de Boole, arithmetiquebinaire). L’autre partie des concepts est utilisee en TD, TP et projet (circuits numeriques). LesTP servent a introduire les principes de conception numeriques necessaires pour la realisationdu projet. Le projet est evalue par un rapport ecrit. L’ensemble des concepts vus dans lesenseignements font egalement l’objet d’un examen ecrit de 2h.

5

Page 6: Fascicule de TD et TP

2. Contenu pedagogique

2.1 Le cours

Le cours a pour objectif de donner les fondements theoriques et quelques cles sur les aspectspratiques afin d’aborder les TD et les TP de maniere sereine.

• CM1 : Representation de l’information binaire + arithmetique binaire

• CM2 : Algebre de Boole

• CM3 : Circuits combinatoires

• CM4 : Circuits sequentiels

• CM5 : FSM

• QCM : Sur la partie algebre et arithmetique uniquement

2.2 Les TD et TP

Les TD et TP ont pour objectif de s’initier a la conception de circuits numeriques. Les 6seances sont guidees par l’enseignant et permettent d’aborder les principes fondamentaux dela conception de circuits numeriques synchrones sur FPGA. Ils aboutissent a la conception 4mini-systemes numeriques:

• Un additionneur/soustracteur avec transcodage en signe et magnitude

• Un compteur/decompteur universel

• Controleur d’afficheurs 7 segments

• Un controleur de bus (machine d’etats)

NB: Les TP commencent par une initiation a l’utilisation de la suite d’outils Xilinx Vivado.

2.3 Le projet

Le projet s’inscrit dans la continuite des TD et TP. L’objectif est de concevoir un jeu deconversion binaire. Un cahier des charges et une decoupe architecturale sont fourni et doiventpermettre aux eleves de concevoir et de tester un tel systeme sur une carte de developpementFPGA. Le projet se deroule dans une plus grande autonomie que les TD/TPs.

6

Page 7: Fascicule de TD et TP

II. Travaux Diriges

7

Page 8: Fascicule de TD et TP

3. Exercices preparatoires pour les TP

3.1 Exercice 1 : Du Full adder a l’additionneur/soustracteur

Question 1 Donnez la table de verite d’un Full Adder dont l’interface est representee sur laFigure 3.1

Full Adder

A

B

C

SUM

CARRY

1

1

1

1

1

Figure 3.1: Interface du Full adder

Question 2 Dessinez le circuit logique permettant d’implementer le Full Adder.

Question 3 Soit les nombres A et B representes en CA2 sur 4 bits : (a3a2a1a0) et (b3b2b1b0).Posez l’addition de ces deux nombres pour faire apparaıtre la somme S = (s4s3s2s1s0) et lesbits de retenues c0, c1, c2 et c3.

Question 4 Deduisez-en un circuit constitue de 4 Full adders qui permet d’implementer unadditionneur 4 bits dont l’interface est donnee sur la Figure 3.2

Question 5 On souhaite a present, convertir le resultat S en un nombre au format Signe etMagnitude. Donnez la table de verite qui permet d’effectuer cette conversion.

Question 6 Implementez cette conversion en utilisant un additionneur 4 bits et un multi-plexeur.

Question 7 Quelles sont les valeurs maximales et minimales que peut prendre la somme S ?

8

Page 9: Fascicule de TD et TP

adder 4bA(3:0)

B(3:0)

S(3:0)4

4

4

Figure 3.2: Interface de l’additionneur 4 bits

Question 8 Modifiez votre circuit pour que celui-ci detecte un debordement (overflow). Unenouvelle sortie, nommee OVF devra etre positionnee a 1 si un tel evenement se produit, a 0sinon.

Question 9 On souhaite a present concevoir un additionneur / soustracteur. Rappelez com-ment calculer la difference des deux nombres A et B.

Question 10 Ajouter une entree ADD SUB a l’additionneur 4 bits. Si ADD SUB = 0, lasortie S doit donner la somme des deux valeurs, si ADD SUB = 1, la sortie S doit donner ladifference A−B.

Question 11 Nous souhaitons maintenant convertir le resultat S en un nombre au formatsigne et magnitude. Etablissez la table de verite d’une telle conversion.

Question 12 Proposez un circuit qui implemente cette conversion en utilisant des inverseurs,un additionneur 4 bits, un multiplexeur.

9

Page 10: Fascicule de TD et TP

3.2 Exercice 2 : Bascule D et circuit synchrone

D Q

D Q

D Q

CLK

CLK

CLK

A

B

CA’

B’

C’

Figure 3.3: Circuit synchrone

CLK

A

A’

B

B’

C

C’

Figure 3.4: Chronogramme.

Question 1 Soit le circuit de la Figure 3.3 constitue de bascule D Flip-Flop. Completez lechronogramme de la Figure 3.4.

Question 2 On suppose maintenant que les bascules disposent d’une entree RST de remisea zero asynchrone active a 1 ainsi que d’une entree d’activation CE active a 1. Completez lechronogramme de la Figure 3.5.

Question 3 Quelle est l’utilite du mecanisme de remise a zero asynchrone ?

Question 4 Quelle est l’utilite du mecanisme d’activation ?

10

Page 11: Fascicule de TD et TP

CLK

RST

CE

A

A’

B

B’

C

C’

Figure 3.5: Chronogramme.

11

Page 12: Fascicule de TD et TP

3.3 Exercice 3 : Detection de front

Le circuit de la Figure 3.6 constitue de bascule D Flip-Flop et d’une porte logique. Ce circuita pour but de detecter un front montant sur l’entree A.

Question 1 Completez le chronogramme de la Figure 3.7.

D Q

CLK

A A’D Q

CLK

A”SPorte logique

Figure 3.6: Circuit logique pour la detection de front.

CLK

A

A”

S

A’

Figure 3.7: Chronogramme detection d’evenement.

Question 2 En observant le signal S, deduisez-en le type d’evenement detecte par ce circuit ?

Question 3 Deduisez-en l’equation logique de S en fonction de A’ et A” ainsi que la portelogique associee.

Question 4 Quelle modification faudrait-il faire pour detecter un front descendant sur A ?

Question 5 Meme question pour un changement d’etat quelconque ?

Question 6 En supposant que l’entree A soit connectee a un bouton poussoir, quelle estl’utilite d’un tel circuit ? Proposez une application.

12

Page 13: Fascicule de TD et TP

3.4 Exercice 4 : Compteur/decompteur universel

Question 1 Faites la synthese d’un compteur binaire modulo 6 synchrone.

Question 2 Modifiez ce compteur pour lui ajouter une entree de remise a zero asynchrone etune entree d’activation enable.

Question 3 Ajoutez une entree logique UP DOWN qui permet de compter ou decompter,puis modifez le compteur pour qu’il puisse a la fois compter et decompter.

Question 4 Modifiez de nouveau le circuit pour lui ajouter une entree d’initialisation syn-chrone. Expliquez pourquoi il est interessant de disposer d’une telle fonctionalite alors que l’ona deja une remise a zero asynchrone.

Question 5 Ajoutez une entree de chargement parallele.

13

Page 14: Fascicule de TD et TP

3.5 Exercice 5 : Look Up Table (LUT) a base de bascules D

D Q

D Q

CLK

CLK

D Q

CLK

D Q

CLK

EN

EN

EN

D3 D2 D1 D0 LOAD

0

1

0

1

0

1

A0

A0

A1

S

Figure 3.8: Look Up Table.

Considerons le circuit de la Figure 3.8. Il est constitue d’un registre 4 bits dont le contenu estmodifiable grace a une entree de chargement LOAD. Un etage de multiplexage permet ensuited’aller lire un des bits du registre. On peut ainsi voir ce circuit comme une memoire de capacite4 bits ayant un adressage sur deux bits. NB: Il est possible de lire les elements de la memoireindependamment les uns des autres. Pour l’ecriture il faut neanmoins ecrire tout le contenu dela memoire.Nous allons voir que ce type de circuit peut etre vu comme de la logique reconfigurable tresutile dans les circuits FPGA.

Question 1 Suposons que le signal LOAD reste a 1 pendant quelques cycles d’horloges alorsque l’entree D = ”1000” (MSB a gauche). On suppose que le signal LOAD passe et reste a 0ensuite. Completez la table de verite suivante.

A1 A0 S0 00 10 00 1

14

Page 15: Fascicule de TD et TP

Question 2 Deduisez-en a quoi est equivalent le circuit dans ce cas precis ?

Question 3 Supposons que l’on charge la valeur D = 1110, que devient l’equivalence etablita la question precedente.

Question 4 Determinez la valeur a charger pour obtenir l’equivalent des portes suivantes :NAND, NOR, XOR, NOT.

Question 5 Proposez une modification de l’architecture pour pouvoir modeliser n’importequ’elle fonction logique a 3 variables.

15

Page 16: Fascicule de TD et TP

3.6 Exercice 6 : Controleur d’afficheur 7 segments

seg(0)

seg(1)

seg(2)

seg(3)

seg(4)

seg(5)seg(6)

Figure 3.9: Afficheur 7 segments

Un afficheur 7 segments permet d’afficher un symbole quelconque en allumant ou eteignant les7 segments lumineux qui le constituent. En supposant que chaque segment est allume lorsqu’un0 logique lui est applique, pour afficher le symbole ’3’ sur l’afficheur de la Figure 3.9, il fautappliquer la valeur seg=”0110000”.

Question 1 Quelle valeur faudrait-il appliquer pour afficher le chiffre 4 ?Considerons que l’on souhaite afficher un nombre entier 0 ≤ A ≤ 9 sur un afficheur 7 segments.Avant de pouvoir fournir a l’afficheur un vecteur binaire sur 7 bits qui code l’allumage de chaquesegment, il faut d’abord transcoder la valeur de l’entier (code en bianire naturel) en un vecteur”7 segments”.

Question 2 A l’aide de tableaux d’une table de verite et de tableaux de Karnaugh, determinezles equations logiques d’un tel transcodeur.

Question 3 Supposons maintenant que nous disposons de 2 afficheurs a anodes communes.Si l’on souhaite afficher un chiffre sur l’afficheur AFF0, il faut positionner la valeur 7 segmentssur le bus seg. Il faut d’autre part positionner AN(0)=1 et AN(1)=0 afin de selectionneruniquement l’afficheur AFF0. Dans le cas ou l’on souhaiterait afficher deux chiffres distinctssur les deux afficheurs, il faut alors afficher sequentiellement les valeurs sur les afficheurs aune frequence suffisemment elevee. De cette maniere, la persistance retinienne et le temps dereponse des afficheurs donnera l’impression d’un affichage simultanee des deux chiffres.

Question 4 Completez le circuit de la Figure 3.10 afin qu’un tel mecanisme soit possible. Vouspouvez utiliser le transcodeur deja realise ainsi que des fonctions numeriques de base (registres,compteurs, multiplexeurs, etc...)

Question 5 Afin d’eviter un scintillement des segments normalement eteints, il est souventpreferable de synchroniser ce systeme a une frequence pas trop elevee, par exemple 1kHz.Proposez une modification du controleur afin de reduire le rythme avec lequel les segments sontallumes a une frequence proche de 1kHz.

16

Page 17: Fascicule de TD et TP

seg(6:0)7

1

1

AN(1)

AN(0)

AFF0AFF1A(3:0) 4

4B(3:0)

Controleur Afficheur

Figure 3.10: Double afficheur 7 segments

17

Page 18: Fascicule de TD et TP

3.7 Exercice 7 : Synthese d’une machine a etats finis

Carte C1 Carte C2Bus BD1 D2

P2P1

Figure 3.11: Bus partage.

La Figure 3.11 montre deux cartes electroniques C1 et C2 qui ont acces a un meme bus B.Chacune des deux cartes demande sa connexion au bus en activant une entree D qui est main-tenue a 1 jusqu’a la fin de l’utilisation du bus. Lorsque le bus etablit la connexion avec l’unedes cartes, le signal P correspondant est active. Ce signal reste a 1 pendant toute la dureede la liaison. La carte qui a utilise le bus en dernier n’est pas prioritaire en cas de demandesimultanee du bus.(a l’initialisation C1 est prioritaire) Sachant qu’une demande de connexiondoit etre servie le plus rapidement possible, realiser un automate synchrone, dont les entreessont D1 et D2 et les sorties P1 et P2, qui permet de gerer l’acces au bus.

Question 1 Completez les chronogrammes de la Figure 3.12.

CLK

D1

Etat Present

D2

Etat Futur

P1

P2

Figure 3.12: Chrnogramme FSM.

Question 2 Etablir un graphe d’etats permettant de decrire le comportement de l’automate.

Question 3 Faire la synthese logique de l’automate a l’aide d’operateurs logiques elementaires.

18

Page 19: Fascicule de TD et TP

4. Exercices complementaires

4.1 Exercice 8 : Digicode

On souhaite concevoir une machine d’etat qui soit en mesure de detecter l’appui successif surun clavier a 4 boutons poussoirs. Le systeme dispose ainsi de 4 entrees binaires A,B,C et Dchacune associee a un bouton. Un appui sur un bouton genere une valeur a 1 sur l’entreecorrespondante. Une sortie binaire S doit passer a 1 si et seulement si la sequence A,D,B,C estcomposee sur le clavier.

Question 1 Concevez la machine d’etat qui permet d’implementer ce comportement.

4.2 Exercice 9 : Analyse d’un Linear Feedback Shift Register (LFSR)

D Q D Q

CLK CLK

CD Q

CLK

D Q

CLK

Figure 4.1: LFSR 1.

D Q D Q

CLK CLK

CD Q

CLK

D Q

CLK

Figure 4.2: LFSR 2.

Question 1 Soit le circuit de la Figure 4.1. En supposant que les bascules D qui le composentsont initialisees a la valeur ”0001”, decrivez l’evolution du contenu des bascules au cours dutemps.

19

Page 20: Fascicule de TD et TP

Question 2 Quelle est la propriete de la sequence generee ?

Question 3 Citez une ou plusieurs applications possible pour ce type de circuit.

Question 4 Sous les memes hypotheses, decrivez l’evolution du contenu des bascules au coursdu temps pour le circuit de la Figure 4.2.

4.3 Exercice 10 : Conception d’un multiplieur

Considerons deux nombres entiers positifs sur 3 bits A = (A2A1A0) et B = (B2B1B0).

Question 1 Supposons que A=”101” et B=”110”, posez la multiplication.

Question 2 Proposez une architecture a base d’additioneurs binaires et de portes AND.

4.4 Exercice 11 : Synthese d’un circuit combinatoire

A14 S = 1 si 3 ≤ A ≤ 9

Figure 4.3: Circuit combinatoire.

On desire realiser un systeme logique tel que la sortie S soit a 1 lorsque le nombre A de 4 bitspresent en entree est strictement scompris entre 3 et 9.

Question 1 Donner la (ou les) 1ere et 2eme forme canonique de S.

Question 2 Reprendre la meme question si l’on suppose maintenant que A est code en BCD.

Question 3 Etablir le schema technologique le plus simple avec des portes NOR et/ou NAND.

4.5 Exercice 12 : Synthese avec des multiplexeurs

Question 1 Combien de bits faut-il pour assurer l’adressage d’un MUX 2:1 ?20

Page 21: Fascicule de TD et TP

Question 2 Donnez la table de verite d’un MUX 2:1.

Question 3 Donner l’expression logique de la sortie d’un MUX2:1 a partir de la table de veriteet en appliquant une simplification a l’aide d’un tableau de Karnaugh.

Question 4 En deduire un logigramme avec les portes logiques de base.

Question 5 Faites la synthese d’un MUX 4:1 de la fonction S definie par la table de veritesuivante :

A B S0 0 00 1 10 0 10 1 1

Les 0 et 1 logiques seront respectivement modelises par la masse (GND) et la tension d’alimentationdu circuit (VDD).

Question 6 Faites la synthese de la meme fonction logique a l’aide de MUX 2:1.

4.6 Exercice 13 : Comparateur N bits

N

N

A

B

SN

IN

EN

1

1

1

Comparateur

N bits

Figure 4.4: Comparateur N bits.

On souhaite realiser un comparateur de deux mots de N bits dont l’interface est donnee sur laFigure 4.4. Les 2 mots d’entree sont A = (AN−1AN−2...A1A0) et B = (BN−1BN−2...B1B0).Les sorties du comparateurs sont :

• SN = 1 ssi A > B

• IN = 1 ssi A < B

• EN = 1 ssi A = B

Question 1 Dans un premier temps, on souhaite realiser un comparateur elementaire de deuxmots de 1 bit (N = 1). Etablissezles equations des sorties S0, I0, et E0 en fonction des entreesA0 et B0.

21

Page 22: Fascicule de TD et TP

Question 2 Dessinez le schema de ce comparateur a partir d’operateurs elementaires (INV,NAND, AND, NOR, OR a 2, 3 ou 4 entrees).

Question 3 On souhaite maintenant etendre l’amplitude du comparateur a deux mots de2 bits. Apres avoir etabli les equations de S1 , I1, et E1 en fonction des bits A0,A1, B0 etB1, concevez le schema de ce comparateur en associant des comparateurs elementaires et unminimum d’operateurs (NAND, AND, NOR, OR a 2, 3 ou 4 entrees).

Question 4 A partir des equations trouvees precedemment, etablir les relations de recurrenceci-dessous :SN = f(SN−1, AN , BN)IN = g(IN−1, AN , BN)EN = h(EN−1, AN , BN)

4.7 Exercice 14 : Tri parallele

Question 1 En utilisant des comparateurs et des multiplexeurs, proposez un circuit qui permetde comparer deux valeurs et de sortir la valeur la plus grande et la valeur la plus petite (operateur”compare and select”).

Question 2 En utilisant uniquement des operateurs CS, proposez un circuit qui permet detrier 4 nombres signes sur codes 4 bits. Le circuit aura ainsi 4 entrees A,B,C et D sur 4 bits et4 sorties S,T ,U et V sur 4 bits avec S < T < U < V .

22

Page 23: Fascicule de TD et TP

III. Travaux Pratiques

23

Page 24: Fascicule de TD et TP

5. TP 1 : Tutoriel Vivado

5.1 Objectifs

L’objectif de ce tutoriel est de donner les principales clefs pour utiliser la suite d’outils Vivadode la societe Xilinx. Vous allez, dans un premier temps, realiser un simple additionneur complet(full adder) en utilisant un language de description materielle: le VHDL. Nous allons ensuitesimuler le fonctionnement du full adder et le tester sur une carte de developpement integrantun circuit FPGA. A la fin de ce tutoriel, vous devez etre capable de :

• Lancer l’outil Vivado,

• Creer un nouveau projet,

• Decrire un circuit combinatoire simple en VHDL,

• Creer un fichier de contraintes .xdc,

• Creer un testbench pour votre description VHDL,

• Simuler le comportement de votre description,

• Faire la synthese, le placement, le routage et la generation du bit stream,

• Reconfigurer le circuit FPGA de la carte pour tester votre systeme.

5.2 Lancement de l’outil Xilinx Vivado 2018

En fonction du systeme d’exploitation sur lequel vous travaillez, vous pouvez lancer l’outil encliquant sur l’icone ou bien depuis une fenetetre de commande. Apres avoir lance l’outil Vivado2018, une fenetre apparait. Si cette fenetre n’est pas vide, faites :

File>Close Project

Generalement, l’outil s’ouvre avec le dernier projet ouvert.

5.3 Creation d’un nouveau projet

Durant toute la duree des TP, vous allez travailler sur un seul projet dans lequel vous ajouterezles elements des differents TP au fur et a mesure. Creez un projet :

File>Project>New

24

Page 25: Fascicule de TD et TP

La fenetre New Project apparaıt:

• Cliquez sur Next

• Project Name : nom de votre projet : TP 1 (attention pas d’espace)

• Project Location : chemin de sauvegarde du projet et des fichiers associes

• Cliquez sur Next

• Selectionnez RTL Project

• Cliquez sur Next

• Cliquez sur Next

• Cliquez sur Next

• A l’aide des filtres, selectionnez la reference du circuit FPGA present sur votre carte dedeveloppement : par exemple pour la carte Nexys A7 : xc7a100tcsg324-1

• Cliquez sur Next

• Cliquez sur Finish

NB : A tout moment il est possible de changer ces informations, et bien d’autres encore, dansle menu Tools > Settings.

Le projet vide est maintenant cree. Nous allons a present creer un fichier source VHDL quicontriendra la description du full adder, et l’ajouter au projet.

5.4 Ajouter des fichiers sources

Pour ajouter une nouvelle source faites :

• File > Add Sources.

• Selectionnez Add or Create Design Sources.

• Cliquez sur Next

• Cliquez sur Create File

• File Type: VHDL

• File name: full adder

• File location: Local to Project

• Cliquez sur Ok

• Cliquez sur Finish

• Definissez les port d’entree / sortie :

– A : in 1 bit

– B : in 1 bit25

Page 26: Fascicule de TD et TP

– C : in 1 bit

– SUM : out 1 bit

– CARRY : out 1 bit

• Cliquez sur OK

Une fois le fichier VHDL cree, celui-ci apparait dans l’arboresence de la fenetre Sources. Ilse trouve a la fois dans le repertoire Design Sources et dans le repertoire Simulation Sources

Double cliquez sur le fichier full adder.vhd.

Le fichier VHDL apparait alors dans l’editeur. On peut modifier la specification des portsd’entree/sortie dans la partie entity du fichier: Par exemple, pour un port d’entree TOTO sur1 bit:

TOTO : in STD_LOGIC;

Pour un port de sortie TATA sur 3 bits:

TATA : out STD_LOGIC_VECTOR(2 downto 0);

5.5 Description de l’architecture

Une fois les ports d’entree/sortie definis, il nous faut decrire l’architecture de notre full adder.Un circuit combinatoire implementant un full adder est donnee sur la Figure 5.1.

A

B

C

SUM

CARRY

A XOR B

A XOR B

A

A

B

B

C

C

Figure 5.1: Architecture de l’additionneur 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. Parexemple pour generer AXORB = A⊕B, il suffit de taper apres 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 lemot clef begin:

signal AXORB : std_logic;

26

Page 27: Fascicule de TD et TP

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

-- Declaration des librairies

library IEEE;

use IEEE.STD_LOGIC_1164.ALL;

-- Declaration de l'interface (entity)

entity full_adder is

Port ( A : in STD_LOGIC;

B : in STD_LOGIC;

C : in STD_LOGIC;

SUM : out STD_LOGIC;

CARRY : out STD_LOGIC);

end full_adder;

architecture Behavioral of full_adder is

-- declaration des fils (signal) et d'eventuels composants (component)

signal AXORB : std_logic;

begin

-- description du contenu de l'architecture

AXORB <= A xor B;

SUM <= AXORB xor C;

CARRY <= (A and B) or (C and AXORB);

end Behavioral;

5.6 Ajout du fichier top level

Nous allons a present ajouter un fichier VHDL communement appele top level dans lequel vaetre instancie notre full adder. Ce fichier represente l’interface entre notre systeme (full adder)et les entrees/sorties du circuit FPGA.

• File > Add Sources.

• Selectionnez Add or Create Design Sources.

• Cliquez sur Next

• Cliquez sur Add Files

• Allez chercher le fichier top level TP1.vhd la ou vous l’avez telecharge.

• Cliquez sur OK

• Cocher la case Copy sources into project

• Cliquez sur Finish

Le fichier top level TP1.vhd doit apparaitre dans l’arborescence de la fenetre Sources. L’interfacedu top level contient toutes les entrees/sorties que nous allons utiliser durant les TP : boutons,switchs, LED, afficheurs 7 segments...

27

Page 28: Fascicule de TD et TP

5.7 Simulation du Full Adder a l’aide d’un test bench

Avant d’implementer le Full adder sur le circuit FPGA, vous allez simuler le comportementde la description VHDL. Pour cela, nous allons utiliser un autre fichier VHDL particulier :le test bench. Celui-ci n’a pas d’entrees/sorties, il instancie le composant a tester (ici le toplevel qui contient lui-meme le full adder) et permet de generer des stimuli logiques qui serontenvoyes sur les entrees. La simulation consistera alors a observer l’etat des sorties en fonctiondes stimuli appliques en entree. Par habitude/convention, on nomme le fichier test bench dunom du composant a tester avec le prefixe tb .Comme pour le top level, ajouter le test bench tb top level TP1.vhd a votre projet. Verifiezque tb top level TP1.vhd apparait en gras dans la fenetre Sources>Simulation Sources>Sim 1.Si ce n’est pas le cas, faites Clique droit>Set as Top. Ouvrez ce fichier et reperer ou se trouvela generation des stimuli logiques. Dans le Flow Navigator sur la gauche, lancez la simulationen cliquant sur Run Simulation>Run Behavioral Simulation. Apres quelques secondes,la simulation se lance et un chronogramme apparait. Utilisez les outils de zoom et verifiez quele full adder fonctionne. Si certains signaux n’apparaissent pas dans le chronogramme, il fautrelancer la simulation pour que l’outil re-simule et affiche ces signaux : Run > RelaunchSimulation.

5.8 Implantation du Full Adder sur le FPGA

5.8.1 Ajout du fichier de contraintes

Full Adder

FPGA

A

B

CIN

SUM

CARRY

Carte FPGA

switch 0

LED0

LED1

LED2

LED3

LED4

LED5

LED6

LED7

J15

L16

M13

H17

K15

top level TP1switch 1

switch 2

switch 3

switch 4

switch 5

switch 6

switch 7

sw(0)

sw(1)

sw(2)

led(0)

led(1)

Figure 5.2: Exemple de connexion des I/O du module Full Adder aux I/O d’un FPGA sur une carte dedeveloppement Basys

Maintenant que l’architecture du Full Adder est decrite en VHDL et validee en simulation,vous allez l’implanter sur le circuit FPGA. Avant cela, il faut definir un fichier de contraintes(fichier .xdc). En effet, notre circuit decrit dans l’architecture top level TP1 va etre implantea l’interieur du FPGA. Il faut donc indiquer a l’outil a quelles entrees/sorties du FPGA il fautconnecter les entrees/sorties de notre systeme (Figure 5.2). Cela est fait dans le fichier .xdc.

28

Page 29: Fascicule de TD et TP

Telechargez le fichier de contraintes .xdc correspondant a votre carte de developpement etajouter le a votre projet:

• File > Add Sources

• Selectionnez Add or Create Constraints

• Cliquez sur Add Files

• Allez chercher le fichier .xdc la ou vous l’avez telecharge

• Cliquez sur Finish

Apres l’ajout, votre fichier de contrainte apparait dans l’arborescence Constraints de la fenetreSources. Ouvrez-le fichier de contrainte et verifiez que les lignes specifiant les connexions atoutes les entrees sorties de votre top level sont bien decommentees.

5.8.2 Elaboration RTL

Definissez le fichier top level TP1.vhd comme top level en faisant Clique droit>Set AsTop, le nom du fichier doit alors apparaitre en gras dans l’arboresence Design Sources.Attention, le top level pour la simulation (tb top level TP1.vhd) et pour l’implementation(top level TP1.vhd) ne sont pas les memes.Dans le Flow Navigator, cliquez sur Open Elaborated Design. Apres quelques secondes,vous devez voir apparaitre le circuit constitue de portes logiques.

5.8.3 Synthese logique

Dans le Flow Navigator, cliquez sur Run Synthesis. Le processus de synthese se lance. unefois termine, vous pouvez observer le schema logique compose de LUT et de buffer en cliquantsur Schematic. Vous pouvez verifiez le contenu de chaque LUT :

• Clique droit sur une LUT

• Cell properties

5.8.4 Placement et routage

Une fois la synthese logique effectuee, l’outil va affecter les 2 LUTs synthetisees sur les LUTsdisponibles sur le FPGA (ce FPGA en contient plusieurs dizaines de milliers). Il va ensuiteconfigurer les interconnexions pour relier les entrees du circuit FPGA aux LUTs et les sorties desLUTs aux sorties du circuit. Pour lancer la phase de placement/routage, dans le Flow Navigator,cliquez sur Run Implementation. Une fois le placement routage termine, vous pouvez voir lecircuit implemente dans le FPGA en cliquant sur Schematic.Une fenetre device apparait. En zoomant sur le circuit essayez de retrouver les LUTs, les entreessw(2:0) et les sorties led(1:0).

5.8.5 Generation du bitstream et configuration du FPGA

La derniere etape du processus d’implantation consiste a generer un bit stream, c’est a dire unfichier binaire qui va etre transfere sur le FPGA et qui va permettre de configurer le contenu dechaque LUT et de chaque interconnexion du FPGA pour que celui-ci implemente l’architectureque vous avez visualisee apres la phase de placement routage.Pour generer ce bit stream:

29

Page 30: Fascicule de TD et TP

• Branchez la carte a votre PC, et allumez votre carte (interrupteur a cote du cable miniUSB)

• Dans la rubrique Program and Debug, cliquez sur Generate Bitstream

• Apres quelques secondes, une fenetre apparait, selectionnez Open Hardware Manager,puis OK

• Clique droit sur la cible, 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 l’implementation jusqu’a la generation dubitstream en cliquant directement sur Generate Bitstream.Avant de continuer les TP, vous devez a present, etre en mesure de :

• Creer une nouvelle source VHDL

• Ajouter une source VHDL existante

• Decrire un circuit combinatoire simple

• Instancier un component dans une description VHDL

• Creer un test bench avec quelques stimuli simples

• Mettre a jour un fichier de contraintes .xdc

• Lancer une simulation logique

• Implanter et tester un systeme sur carte FPGA

Dans la suite, n’hesitez pas a revenir vers ce tutoriel si certains concepts ne sont pas encoreclairs.

30

Page 31: Fascicule de TD et TP

6. TP 2 : Additionneur/soustracteur avec transcodage ensigne et magnitude

L’objectif de ce TP est d’implanter sur un composant FPGA l’additionneur/soustracteur definien TD dans l’exercice 1. Les entrees devront etre connectees aux switchs de la carte et lessorties aux LEDs.

6.1 Description structurelle

6.1.1 Additionneur/soustracteur sur 4 bits

Creez une source VHDL avec l’interface suivante :

entity add_sub_4b is

Port ( A : in STD_LOGIC_VECTOR (3 downto 0);

B : in STD_LOGIC_VECTOR (3 downto 0);

ADD_SUB : in STD_LOGIC;

SUM_DIFF : out STD_LOGIC_VECTOR (3 downto 0);

OVF : out STD_LOGIC);

end add_sub_4b;

Declarez un component de type full adder puis instanciez et interconnectez 4 full adders afind’implementer l’additionneur/soustracteur defini en TD.

Creez un nouveau top level : top level TP2.vhd et son test bench associe : tb top level TP2.vhd.

Simulez le test bench et testez le top level de votre systeme sur carte.

6.1.2 Conversion CA2 => SM

Creez une nouvelle source CA2 to SigMag.vhd avec l’interface suivante :

entity CA2_to_SigMag is

Port ( CA2_val : in STD_LOGIC_VECTOR (3 downto 0);

signe : out STD_LOGIC;

mag : out STD_LOGIC_VECTOR (3 downto 0));

end CA2_to_SigMag;

Decrivez l’architecture definie en TD basee sur un additionneur et un multiplexeur. Vous pou-vez reutiliser l’additionneur que vous venez de valider.

Connectez ce bloc a la sortie de l’additionneur/soustracteur pour afficher les resultats sur lesLEDs au format signe et magnitude. Validez en simulation avant de tester sur carte.

31

Page 32: Fascicule de TD et TP

6.2 Description comportementale

La description structurelle d’une architecture peut devenir rapidement fastidieuse. Elle per-met de structurer un systeme a haut niveau. Neanmoins les circuits numeriques elementaires(arithmetique, transcodage, registres, compteurs, machines d’etats, ...) sont tres souvent decritsde maniere comportementale. Cela signifie que l’on decrit le comportement du systeme plutotque sa structure.L’outil de simulation va alors nous permettre de verifier que le comportement de notre systemecorrespond a notre cahier des charges.L’outil de synthese va, quant a lui, generer un circuit numerique qui a le comportement quel’on a decrit.

Creez 2 nouvelles sources : add sub 4b bhv.vhd et CA2 to SigMag.vhd dans lesquelles vousallez decrire le comportement de ces deux blocs. Connectez ces deux blocs en parallele deadd sub 4b.vhd et CA2 to SigMag.vhd afin de verifier l’equivalence strict entre ces deux manieresde decrire une architecture.

32

Page 33: Fascicule de TD et TP

7. TP 3 : Compteur/decompteur universel

L’objectif de ce TP est de commencer a decrire des systemes numeriques qui utilisent de lalogique sequentielle synchrone.

Creez une nouvelle source counter decounter.vhd et decrivez le comportement d’un simplecompteur modulo 16.De maniere analogue aux TPs precedents, creez un nouveau top level : top level TP3.vhd etson test bench associe : tb top level TP3.vhd.

Verifiez le comportement en simulation.

Comme vu dans l’exercice 4 du TD, ajoutez

• une entree d’initialisation init synchrone (priorite la plus forte),

• une entree de chargement load

• une entree d’activation enable,

• une entree de comptage/decompatge up down (priorite la plus faible).

Une fois le systeme verifie en simulation, creez une source edge detect qui permet de detecterun front montant sur une entree de maniere synchrone (Cf Exercice 3) ou un front descendant:

entity edge_detect is

Port (rst : in STD_LOGIC;

clk : in STD_LOGIC;

probe : in STD_LOGIC;

rising_detect : out STD_LOGIC;

falling_detect : out STD_LOGIC);

end edge_detect;

Inserer ensuite ce bloc entre un bouton poussoir et l’entree enable du compteur afin que lecompteur ne change de valeur que lorsqu’on appuie sur le bouton.

Testez le systeme complet sur carte.

Modifiez le compteur afin que l’on puisse choisir la valeur de l’increment/decrement sur lesswitchs. Validez sur carte.

33

Page 34: Fascicule de TD et TP

8. TP 4 : Controleur d’afficheurs 7 segments

En vous appuyant sur l’Exercice 6 du TD, decrivez l’architecture d’un controleur d’afficheur 7segments ayant l’interface suivante :

component ctrl_7seg is

port( clk : in std_logic; -- assuming 100MHz input clock signal

rst : in std_logic;

data_aff0 : in std_logic_vector(6 downto 0);

data_aff1 : in std_logic_vector(6 downto 0);

data_aff2 : in std_logic_vector(6 downto 0);

data_aff3 : in std_logic_vector(6 downto 0);

AN : out std_logic_vector(3 downto 0);

Sseg : out std_logic_vector(6 downto 0)); -- 1.5 Hz signal

end component;

Simulez et validez sur carte.

En fonction du temps restant, vous pouvez inclure ce controleur dans les TP2 et 3 pour afficherles resultats sur les afficheurs 7 segments plutot que sur les LEDs.

34

Page 35: Fascicule de TD et TP

9. TP 5 : Machine d’etats pour controleur de Bus

Implementez la machine d’etat definie en TD. Les signaux D1 et D2 seront connectes a 2 switchset les signaux de sortie P1 et P2 a deux LEDs. Veillez a utiliser un detecteur de front sur unbouton pour generer un pulse d’enable uniquement lors d’un appui bouton.

35

Page 36: Fascicule de TD et TP

IV. Projet

36

Page 37: Fascicule de TD et TP

9.1 Jeu de conversion

Compteur

Modulo 10

4 Random Digit

Register

load

rst

rst

clk

clk

Digit 0

Register

load

rstclk

init

Digit 1

Register

load

rstclk

init

Transcodeur

Unsigned 2 7seg

Transcodeur

Unsigned 2 7seg

4

4 7

7

4

10

Comparateur Score Counter

enable

rstclk

Transcodeur

Unsigned 2 7seg7

77

FSM

Controleur

7 segments

clkrst

4

7

AN

7 Seg

SW(6:0)

...

4

BTNC

BTND

1

Figure 9.1: Decoupe architecturale.

9.1.1 Jeu de conversion binaire

L’objectif du projet est de concevoir un jeu pour tester sa maıtrise de la conversion d’un nom-bre decimal (sur 2 chiffres) en un nombre binaire (7 bits). Le systeme genere deux chiffresde maniere aleatoire, les affiche sur les afficheurs 7 segments. L’utilisateur doit alors convertirla valeur affichee (nombre entre 0 et 99) en binaire puis l’indiquer sur les interrupteurs. Lesysteme verifie alors l’equivalence entre la valeur binaire proposee par l’utilisateur et le nombreaffiche. Le systeme incremente le score de 1 uniquement si la reponse est correcte et affiche lescore mis a jour sur un afficheur.

9.1.2 Fonctionnement

A l’initialisation, le systeme affiche le score (0) sur l’afficheur 3, ainsi que la valeur 00 sur lesafficheurs 0 et 1. Un premier appui sur BTNC affiche le premier nombre tire aleatoirement surl’afficheur 0. Un deuxieme appui sur BTNC affiche le deuxieme nombre sur l’afficheur 1. Apartir de la, l’utilisateur positionne les switchs a la valeur binaire qu’il pense etre equivalente ala valeur decimale sur 2 chiffres affichee puis il appuie sur BTND afin de lancer la verification.Si les deux valeurs binaires (calculee et proposee) sont identiques, alors on incremente le scorede 1, sinon le score ne bouge pas.

37

Page 38: Fascicule de TD et TP

9.1.3 Decoupe architecturale

La decoupe architecturale est presentee sur la Figure 9.1.

• Pour tirer un chiffre aleatoirement, on fait fonctionner un compteur modulo 10 a 100MHz.Lorsqu’un appui bouton est detecte, on vient charger la valeur courante du compteur dansun registre (Random Digit Register).

• Deux registres sont ainsi necessaires pour stocker le nombre a deux chiffres qu’il faudraessayer de convertir. L’affichage de ce nombre est assure par deux transcodeurs non-signes=> 7 segments suivi du controleur d’affichage 7 segments.

• Pour convertir le nombre decimal en binaire, on multiplie les dizaines par 10 et on ajouteles unites.

• Cette valeur est comparee a la valeur presente sur les switches.

• La machine d’etat a pour entree les boutons ainsi que le resultat de la comparaison. Ellepermet de controler tous les composants sequentiels du systeme (signaux de chargement,initialisation, ...).

• Le score est stocke et mis a jour dans un compteur qui n’est incremente que lorsque lareponse est correcte.

9.1.4 Ameliorations

Une fois que votre projet fonctionne, il est possible d’ameliorer le systeme de diverses manieres:

• Donner la possibilite de jouer avec un seul chiffre, deux chiffres ou bien meme trois chiffres.

• Rajouter la conversion hexadecimale => binaire

• Indiquer avec des LEDs si la reponse est correcte ou non.

• Donner un nombre limite d’essais global.

• Ajouter une limite de temps en ajoutant un chronometre.

• Afficher le meilleur score.

• etc ...

A vous de personnaliser votre systeme avec les fonctionalites de votre choix.

38