Vous êtes sur la page 1sur 33

Master 2 Automatique et Informatique

industrielle (AII)

FPGA et
programmation VHDL
Crédits:4, Coefficient: 2

Support de cours (2018/2019)

Sami HEBIB
sami.hebib@univ-blida.dz

Déroulement
3H/Semaine : Cours + TD

Dimanche 11H10->14h15

Cours/TD >>Salle 4 P24

Notation: Note TD(40%) + Examen final (60%)

1
Pourquoi ce cours « FPGA et
programmation VHDL »?
• FPGA présents dans de plus en plus
d applications:
d’applications:
Industriel (Contrôle, systèmes embarqués, ….)
Médical (Imagerie, ….)
Télécommunications (filaires et sans fils)
Aérospatial et défense(radar, missile, GPS,..)
….
• Besoin croissant des entreprises d’avoir
du personnel qualifié
3

Présentation du cours
Objectifs:
- Connaître l’architecture
l architecture et le principe de fonctionnement
d’un circuit logique programmable et plus particulièrement
un FPGA
- Maitriser les bases du langage VHDL

Pré-requis:
q
Cours d’électronique et de logique (logique booléenne,
portes logiques, fonctions combinatoires et séquentielles,
représentation des nombres en binaire, table de Karnaugh)

2
Plan sommaire du cours

• Quelques rappels

• Circuits logiques programmables et FPGA

• VHDL

Rappels (1/3)
• Circuits logiques combinatoires
Leur sortie est déterminée uniquement par la
valeur
l courante
t dde l'l'entrée

Portes logiques, multiplexeurs, demultiplexeurs,
décodeurs, circuits arithmétiques
Exemple:
( A  B ).( A  C )

Exercice: -Donner la table de vérité de la fonction « ou exclusif »


-Représenter cette fonction à l’aide de portes logiques
A  B  A.B  A.B 6

3
Rappels (2/3)
• Circuits logiques séquentielles
Leur sortie est partiellement déterminée par
l'évolution de l'entrée. La réponse du circuit dépend
de l'histoire plus ou moins récente du fonctionnement
du circuit. Fonction MEMOIRE interne.
Bascule D, registres, mémoires RAM, compteurs
Exemple:
compteur 4bits

Exercice: Réaliser ce compteur en utilisant des bascules D en7


logique séquentielle asynchrone et synchrone

Rappels (3/3)
• Compteur 4 bits asynchrone (bascule D)

Plus simple mais moins rapide (accumulation de retard >>>Glitch!)

• Compteur 4 bits synchrone (bascule D)

Plus rapide mais architecture plus complexe

Devoir: Réaliser un compteur 4 bits modulo 10 avec une entrée « Enable » en 8


utilisant des bascules D en logique séquentielle synchrone

4
Circuits logiques programmables et
FPGA

Circuits Logiques Programmables


(PLD)
• PAL
PAL: Les plus anciens, programmables qu’une fois, de
Simple PLDs

moins en moins utilisés


(SPLD)

• GAL
GAL: PAL effaçables électriquement (programmables
plusieurs fois), marque déposée de Lattice
Semiconductor
Complex PL

• CPLD
CPLD: capacité en nombre de portes et de configuration
(CPLD)

supérieure à SPLD, programmables plusieurs fois « in


situ » (directement sur la carte électronique où ils sont
LDs Field PLDs

câblés)
• FPGA
FPGA: les plus récents, capacité et flexibilité supérieures
(FPLD)

à celles des CPLD, programmables plusieurs fois « in


situ »
10
Différents techniques de programmation: Fusible , Flash, RAM

5
Techniques de programmation des
PLD

11

Pourquoi un PLD?
• De plus en plus de la logique programmée (μP,
mémoires, μC, ...)
• Besoin d’interfaces à base de fonctions logiq
logiques
es
élémentaires (compteurs, registres, ..)
• Nombre de fonctions nécessaires élevé

Coût de fabrication↓↓ développement ↓maintenance ↓


Circuits Logiques Programmables (PLD)
Réaliser plusieurs fonctions logiques dans
un seul circuit
Circuiterie classique: nombre de circuits élevé
+ Modifier le fonctionnement = refaire le circuit!12

6
PAL (Programmable Array Logic)
combinatoires (simples) à registres(séquenceur)
Logique combinatoire
L i
Logique combinatoire
bi t i
Logique séquentielle (registre)
Réseau logique constitué d’une matrice de conducteurs
connectés en lignes et colonnes avec des portes « ET ».
Programmation par destruction de fusible
(OTP: One Time Programmable )

PAL en boitier DIL


( Référence PAL16R6CN) 13

PAL (Programmable Array Logic)


Exemple: Représentation d'un « ou Exclusif ».

I 1  I 2  I 1.I 2  I 1.I 2
Schéma simplifié

PAL sont programmés en utilisant un circuit programmateur


spécial permettant de détruire les fusibles internes sélectionnés

Exemple d’un programmateur 14


Fusible intact Fusible détruit
de PAL

7
Exercices
Soit le PAL suivant:

1) Implémenter les fonctions suivants:


O3 = A.B.C.D, O2 = A+B+C+D,
O1 = A.B.C.D et O0 =AB  C

2) Réaliser sur ce PAL un convertisseur code


BCD → code Gray à 4 entrées.

15

Exercice
Soit le PAL suivant:
Réaliser sur ce PAL le
convertisseur suivant:

les LED réalisant l’afficheur sont


16
allumées si la cathode est à 0 V

8
PAL (Programmable Array Logic)
Référence (MMI seulement)

17

Différentes types de sorties (PAL)


Sortie combinatoire
simple (O)

Sortie combinatoire
utilisable également
en entrée (I/O)

Sortie séquentielle
simple (O)

Sortie séquentielle
utilisable également en PAL Polyvalent
entrée (I/O) (ex. PAL22V10)
18

9
PAL16R6CN
Schéma logique

A registres
16 entrées max
6 sorties

19

GAL (Generic Array Logic)


• Similaires aux PAL mais reprogrammables

• Technologie CMOS EEPROM (Consommation )

• GAL sont ainsi utiles pour le développement d’un


nouveau produit (prototypage) et l’apprentissage.

• Marque déposée de Lattice Semiconductor

GAL en boitier DIL 20


( Référence GAL22V10-25LP)

10
GAL (Generic Array Logic)
Référence:

GAL en boitier DIL 21


( Référence GAL22V10-25LP)

GAL (Generic Array Logic)

Output Logic MacroCell (OLMC)

GAL en boitier 24 pin DIL 22


( Référence GAL22V10-25LP)

11
CPLD (Complex Programmable
Logic Device )
• CPLD sont principalement constitués de plusieurs Logic Array
Blocks (LABs
(LABs=réseaux
réseaux SPLDs) interconnectés avec un réseaux
d’interconnexion programmable (PIA)

Logic array Logic array


I/O block (LAB) block (LAB) I/O
Le routage d’un CPLD est SPLD SPLD

déterminé par un langage de


PIA
programmation
ti haut-niveau
h t i Logic array
block (LAB)
Logic array
block (LAB)
I/O I/O
appelé langage de description SPLD SPLD

matérielle (hardware description


language (HDL)).
Logic array Logic array
I/O block (LAB) block (LAB) I/O
SPLD SPLD
23

Exemple d’un CPLD(1/3)


Altera MAX 7000-series

Référence 7128S (Caractéristiques):

• Boitier 84-Pin PLCC


• CMOS, EEPROM
• 2500 Portes
• 128 Macrocells
• 8 LABs
• 100 broches E/S utilisables (max)

24

12
Exemple d’un CPLD(2/3)
Altera MAX 7000-series (Architecture)
I/O pins I/O pins
I/O Logic array block PIA Logic array block I/O (8-16)
(8-16) control (LAB A) (LAB B) control
block block
Macrocell 1 Macrocell 1

8Ð16 Macrocell 2 36 36 Macrocell 2 8-16

16 16

Macrocell 16 Macrocell 16
8-16 8-16

Portion de l’architecture d’un CPLD Altera MAX 7000

Densités, taille, vitesse, éléments internes (macrocells, ..) peuvent varier d’un
constructeur à l’autre 25

Exemple d’un CPLD(3/3)


Altera MAX 7000-series (Macrocell)
Peuvent être configurées individuellement soit pour un fonctionnement logique,
séquentiel ou combinatoire
Macrocells de l’Altera MAX 7000 series peuvent générer des produit jusqu’à cinq termes.
Si plus, la sortie peut être élargie ( voir ci-dessous)

Parallel expanders
from other
macrocells

Product-term To I/O
Associated
selection control
logic
matrix block

Expander example
Shared A
expander B
C ABC(E + F)=ABCE + ABCF

36 lines from PIA 15 expander


product terms E +F
from other EF Product term from another 26
macrocells macrocell in same LAB

13
FPGA (Field-Programmable Gate Array)
• Lancé sur le marché en 1985 par Xilinx Inc
• Capacité et flexibilité supérieures à celles des CPLD
• Architecture différente qu’un CPLD
Besoin d’une mémoire
•Deux types de FPGA: externe (PROM)
• A base de mémoire (SRAM ou flash EEPROM)
• A base d’anti-fusible (OTP FPGA)

• Principaux fabricants FPGA: Xilinx (Virtex, Spartan),


Altera(Stratix, Cyclone), Lattice Semiconductor(Lattice
ECP), Actel, QuickLogic.
27
Spartan III de Xilinx Stratix IV de Altera

Marché mondial des FPGA

Source: http://www.fpgadeveloper.com/2011/07/list-and-comparison-of-fpga-companies.html
28

14
FPGA (Field-Programmable Gate Array)
FPGA est constitué principalement de plusieurs:

Program
Bloc logique configurable (Configurable Logic Block (CLB))
Bloc d’entrées/sorties
d entrées/sorties (Input/Output Block (IOB))

mmables
Interconnexions

CLBs
disposés en
matrice

Global column
interconnect
29
Global row interconnect

Configurable Logic Block (CLB)


CLB est formé de modules logiques reliés par des
interconnexions locales
Généralement un module logique est composé d’une table
de correspondance (Look-Up Table (LUT)), une bascule (FF),
et un MUX (utilisé pour contourner la bascule pour une
fonction logique strictement combinatoire)
Module logique (config.)
CLB CLB •Logique combinatoire
Logic module Logic module •Logique séquentielle
Logic module Logic module •Les deux
Logic module Logic module

Local Local Interconnexions Globales


interconnect interconnect
Distribution de signaux entre
Logic module Logic module CLBs (y compris CLK)

30

15
Configurable Logic Block (CLB)
Exemple d’un module logique simplifié d’un FPGA XILINX

Multiplexeur

LUT

Bascule
Table de vérité

31

Configurable Logic Block (CLB)


Exemple d’un LUT (Look-
(Look-up Table) de type SRAM 16 x 1

Réalisation de n’importe quelle fonction à 4 variables

Extension à une fonction combinatoire à 6 variables

Utilisation de :
4 LUT 16x1
3 multiplexeurs

 Gain de vitesse significatif : Rechercher une valeur en mémoire est souvent plus
rapide qu'effectuer un calcul important
 Peu efficace pour les fonctions simples (une fonction à 2 variables utilise une 32
LUT entière)

16
Input/Output Block (IOB)
• IOB: portes vers l’extérieur du FPGA
• Chaque bloc IOB contrôle une broche du
composantt ett il peutt être
êt défini
défi i en entrée,
t é en
sortie, en signaux bidirectionnels ou être inutilisé
(haute impédance).
• Plusieurs spécifications d’interface (e.g.
TTL,CMOS, ECL...) peuvent être programmés
avec ces blocs
blocs.
• Entrées/sorties directes ou mémorisées
• Inverseur programmable
• …..
33

Input/Output Block (IOB)


Exemple d’un IOB (FPGA
(FPGA XILINX XC3000)
XC3000)

34

17
Interconnexions programmables
Exemple simplifié d’une connexion entre 3 CLB:

35

FPGA modernes
• En plus des blocs de base précédents, les
FPGA modernes peuvent inclure:
– Mémoires intégrés(RAM, ..) >>Facilité d’accès
– Blocs logiques pour les calculs arithmétiques
(addition, multiplication ,…) >> Rapidité
– Blocs logiques DSP >>Implémentation aisée de
fonctions DSP sur FPGA
– Microprocesseurs intégrés >> Facilité de
communication avec d’autres μp)
Conception d’applications plus facile et efficace
36
Gain de temps et de mémoire

18
Quelques FPGAs de Xilinx

37

Spartan II

Blocs de
mémoire RAM
intégres

DLL(Delay Lock Loop)


Boucle à verrouillage de délais

Réduire les retards de propagation et


la désynchronisation entre les différents
signaux d’horloge distribués à l’intérieur
du FPGA
Utilisables également comme doubleur/
diviseur de fréquences d’horloge 38
IOBs

19
Spartan II
IOB d’un Spartan II

39

Spartan II
Slice de Spartan II:

Une slice (Spartan II) contient


deux module logiques

CLB (Spartan II) contient deux


slices identiques
Blocs d’opérations arithmétiques
(additionneurs, soustracteurs,
(additionneurs soustracteurs ..))
+ multiplexeurs

40

20
Programmation CPLD/FPGA
Les constructeurs de circuits logiques programmables fournissent
généralement les logiciels pour la programmation de leurs produits.

Le processus d’une telle programmation est le suivant:

Design entry
Schematic
HDL
Synthesis

Timing
Functional simulation
simulation

Implementation

La première étape consiste donc à introduire la Device


programming
conception logique sur PC. Ceci est réalisé (downloading)
avec une des deux manières:
1) Schématique 41
2) Langage de description matérielle ( HDL)

Programmation CPLD/FPGA
Design entry
Schematic
HDL

Avec l’entrée schématique, la conception est dessinée à l’écran du PC


en plaçant les composants et les connecter. Pas besoin de connaitre les
détails du HDL. Une fois la schématique est introduite, elle peut être
réduite à un bloc d’un seul symbole:

42

21
Programmation CPLD/FPGA
Design entry
Schematic
HDL

Avec une entrée textuelle, la conception est introduite via un


langage
g g de description
p matérielle comme le VHDL ou Verilog. g

VHDL possède 2 éléments clés: l’entité (entity) et A


LED1
l’architecture(architecture). La section entité
décrit les entrées/sorties et les variables. La section B
architecture définit les relations entres les variables
en utilisant les équations logiques. L’équation en
VHDL peut
pe t être comprise,
comprise même si le C
D
programmateur ne maitrise pas le VHDL

Par exemple, l’expression en VHDL de la LED 1 est:


LED1 <= ((D XOR C) XOR B) XOR A;
43

Programmation CPLD/FPGA
Design entry
Schematic
HDL

VHDL permet la descreption des composants dans un programme et


de les utiliser ensuite dans un autre programme.
programme

Par exemple, un élément de sauvegarde (latch) S-R actif à l’état bas


peut être représenté par:

S Q
A Q

Q QNot
B R

44

22
Programmation CPLD/FPGA
Design entry
Schematic
HDL

Section entity S_RLatch is


entité port (A, B: in bit; Q, QNot: inout bit);
end entity S_RLatch; Noms et types des
Variables entrée/sortie

Section architecture Behavior of S_RLatch is


architecture begin
Q <<= nott A or nott QNot;
QN t
QNot <= not B or not Q;
} Description logique
du circuit
end architecture Behavior;
S Q Q
A
Affecter une expression (à
Q QNot droite) à une variable (à
R 45
B gauche)

Programmation CPLD/FPGA
Functional
simulation

Simulation fonctionnelle (indépendante du circuit cible):


Après ll’introduction
introduction du circuit avec HDL (e(e.g.
g VHDL)
VHDL), il sera testé
avec une simulation fonctionnelle. Cette simulation fait partie du
HDL. Il est possible de tester le circuit avec des formes d’ondes
dans le but de vérifier son fonctionnement.

Exemple: Test fonctionnel d’un compteur avec un outil spécifique

46

23
Programmation CPLD/FPGA
Synthesis

Synthèse:
Après simulation,
simulation le logiciel de programmation optimise la conception
logique en éliminant les termes redondants et générant ensuite une
netlist (une liste de connections) qui décrit complètement le circuit.
Exemple: net2
net1
net3 and1
net5
Netlist (Logic3)
net4 net<name>: instance<name>, <from>; <to>;
net6 instances: and1, and2, and3, and4, and5, or1, inv2,
net7 and2 net10 inv3, inv4;
Input/outputs: I1, I2, I3, I4, O1;
net9 net8 net1: and1, inport1; I1;
net11 net2: and1,, inport2;
p ; I2;;
i 1
inv1 O1
I1 net12 and3 net15 or1 Z net3: and1, inport3; I3;
net14 net26 net4: and1, inport4; I4;
A0
net13 net5: and1, outport1; or1, inport1;
inv2 net6: and2, inport1; I1;
I2 net16
net17 net20 net7: and2, inport2; I3;
A1 net18 and4 net8: and2, inport3; inv2,outport1
inv3 net19 net9: and2, inport4; inv4,outport1
I3 net10: and2, outport1; or1,inport2;
net23
A2 net11: and3, inport1; inv2,outport1
net21 net12: and3, inport2; inv3,outport1
inv4 net22 and5 net25
I4 net13: and3, inport3; I4;
A3 net14: and3, inport4; I1;
net24
5: and3 47

Programmation CPLD/FPGA
Implementation

Implémentation:
La conception
p contenue dans la « netlist » est adaptée
p afin de
correspondre au circuit logique à programmer. Les données
correspondants aux circuits logiques programmables sont contenues
dans les librairies du logiciel de programmation.

48

24
Programmation CPLD/FPGA
Timing
simulation
Simulation temporelle (Post routage)
Après implémentation, une simulation temporelle est réalisée.
C tt simulation
Cette i l ti prendd en compte t les
l différents
diffé t retards
t d du
d circuit
i it
logique à programmer et permet ainsi de vérifier l’absence de
problème avec le timing.
Waveform Editor

Name: 1 s 4 s 8 s 12 s 16 s

A0 0
Si un problème a été détecté, il
A1 0
n’est pas trop tard pour le
corriger avant de télécharger la A2 0

conception logique sur circuit A3 0


Glitch
Z X

49

Programmation CPLD/FPGA
Device
Téléchargement du programme programming
(downloading)

La dernière étape consiste à envoyer le fichier de programmation


d PC vers lle circuit
du i i logique
l i à programmer et faire
f i ensuite
i des
d tests

Des connections ont été


ajoutées à la carte à partir d’un
générateur d’impulsions et un
oscilloscope afin de tester le
circuit programmé. La carte de
dé l
développement contient
i sa
propre source d’alimentation
de plus des connecteurs
d’interface, d’entrées/sortie,
….
Carte de développement (prototypage) PLDT-2 intégrant un CPLD 50
Altera (cible à programmer)

25
Annexes

51

Propriétés opérateurs logiques (1/2)

52

26
Propriétés opérateurs logiques (2/2)

53

Table de Karnaugh (Rappel)

54

27
Mémoires (Rappel)

55

Solution exercice (Planche 16)

56

28
57

58
58

29
Carte développement SPARTAN-3E

59

De la conception à la
programmation du circuit (1/3)

60

30
De la conception à la
programmation du circuit (2/3)

61

De la conception à la
programmation du circuit (3/3)

62

31
Lexique (1/3)

63

Lexique (2/3)

64
64

32
Lexique (3/3)

65

Quelques références
• John W. Carter, « Digital Designing with Programmable
Logic Devices », Prentice Hall, 1997

• Alexandre Nketsa, « Circuits logiques programmables


Mémoires PLD, CPLD et FPGA », Ellipses, 1998

• FPGA Prototyping by VHDL Examples: Xilinx Spartan-3


Version, Pong P. Chu, Wiley

• http://www.xilinx.com/

66

33

Vous aimerez peut-être aussi