Vous êtes sur la page 1sur 120

UNIVERSITÉ HASSAN II CASABLANCA

FACULTÉ DES SCIENCES ET TECHNIQUES

DÉPARTEMENT GÉNIE ÉLECTRIQUE

Master : Ingénierie des Systèmes Embarqués & Réseaux et Télécommunications

Elément :
Conception et Programmation
des
Circuits Numériques

Animé par le professeur:


Mohammed NAHID
Types des circuits logiques
Un système électronique numérique pourra être implémenté avec des circuits logiques de divers types :
Circuit numérique

STANDARD (Conçu et SPECIFIQUE à


réalisé par le fabricant) L’application

Configurables
(Semi-custom) Séquentiables
une fonction (Full-custom)
par circuit
PLA, PAL, EPLD ou CPLD
FPGA Microprocesseurs
à mémoire Microcontrôleurs
DSP
Spécialisés

RAM, ROM Mixtes : FPGA + MICRO + RAM

Périphériques standards,
SOC (System On Chip) ASICs
PLDs
2
Types des circuits logiques (2)

Les circuits Full custom:

Possèdent une architecture dédiée à chaque application et ils sont donc


complètement définis par les concepteurs.
 Les circuits à la demande (spécifiques et répondent à un besoin pour une
application particulière).
 Les circuits à base de cellules précaractérisées ou compilées.

Les circuits Semi-custom:

 Les circuits prédiffusés("gate-array", les réseaux mer-de-portes ou « sea of


gates » et les ASICs structurés).
Les circuits programmables qui se décomposent en deux familles (les
PROM, les PLA, les PAL, les EPLD et les FPGA).

3
Types des
circuits
logiques

Les composants Programmables


à configuration interne à configuration interne
figée programmable
(microprocesseurs) (PLDs, CPLDs, FPGA,...)

Langages de Langages de
programmation : Méthodes & description :
Assembleur, Outils de Abel, AHDL
langage haut niveau conception langage haut niveau
(C, java...) (VHDL,Verilog)

Séquence Fichier de
d'instructions configuration
4
Types des
circuits
logiques Vocabulaire (1)
PAL, GAL ( Programmable Array Logic, Généric Array Logic).

EPLD-CPLD (Erasable PLD ou Complex PLD)


Les EPLD sont programmables électriquement et effaçables aux UV ;
Les EEPLD sont effaçables électriquement
Principe similaire aux PAL mais avec interconnexions réalisées en techno
UVPROM On trouve également les pLSI et ispLSI (in situ programmable).

FPGA (Field Programmable Gate Array)


C ’est un ensemble de blocs logiques élémentaires que l ’utilisateur peut
interconnecter pour réaliser les fonctions logiques de son choix
La densité des portes est importante et sans cesse en évolution.
ASIC (Application Specific Integrated Circuit)
Circuit intégré conçu à la demande
CPLD (Complex Programmable Logic Device)
Réseau logique programmable complexe.

5
Types des
circuits Vocabulaire (2)
logiques
DRAM Dynamic Random Access Memory - Mémoire dynamique à accès aléatoire
DSP Digital Signal Processor - Processeur orienté vers le traitement du signal
EDIF Electronic Design Interchange Format
EEPLD Electrically Erasable Programmable Logic Device - PLD effaçable électriquement
FPGA Field Programmable Gate Array - Réseau de portes programmables
GAL Generic Array Logic - PAL générique
ISP In-System (In Situ) Programmable - Composant programmable sur carte
JEDEC Joint Electronic Device Engineering Council - Organisme de normalisation
JTAG Joint Test Action Group - Bus de test des composants
LCA Logic Cell Array (Xilinx) - Réseau de cellules logiques
LUT Look-Up Table
MAX Multiple Array Matrix - Megapals d'Altera
NOVRAM ou NVRAM NonVolatile Random Access Memory - RAM non volatile
OTP One Time Programmable - Programmable une seule fois
PAL Programmable Array Logic - Réseau logique programmable
PGA Programmable Gate Array - Réseau de portes programmable
PLA Programmable Logic Array - Réseau logique programmable
PLD Programmable Logic Device - Dispositif logique programmable, EPLD : Erasable PLD : PLD Effacable
ROM Read Only Memory, Mémoire à lecture seule, PROM : Programmable ROM,. EPROM: Erasable : Effacable,
EEPROM : Electricaly EPROM : Mémoire à lecture seule, électriquement effaçable.
RAM Random Access Memory - Mémoire à accès aléatoire
SDF Standard Delay File
SOG Sea-of-Gates - Mer de portes : réseau actif logique prédiffusé
SRAM Static Random Access Memory - Mémoire statique à accès aléatoire
TTL Transistor Transistor Logic - Logique transistor-transistor
6 VHDL VHSIC Hardware Description Language - Langage de description matérielle VHSIC
Technologie utilisée pour les interconnexions
Les cellules standards implantées dans les circuits "Semi-custom" vont de la
simple porte jusqu'à une structure complexe utilisant un grand nombre de
transistors. Il existe plusieurs méthodes servant à interconnecter ces cellules :
▬ par masque (le fondeur),
▬ par fusible,
▬ par anti-fusible,
▬ par cellule mémoire : EPROM, EEPROM, flash EPROM et SRAM..

Dans la méthode dite « interconnexion par masque », le fondeur réalise les


interconnexions par métallisation en créant les derniers masques de fabrication (n'est
utilisée que pour les circuits prédiffusés).

Les autres méthodes sont utilisées dans les PLD. Dans ces circuits, les fils de liaison
existent déjà (organisée en lignes et en colonnes), mais ils ne sont reliés ni entre eux,
ni avec les éléments logiques du circuit. Il faut donc arriver à créer une interconnexion
entre deux fils.

7
Technologie utilisée pour les interconnexions (2)

Interconnexion: Deux possibilités existent :

les interconnexions directes les interconnexions par cellule mémoire.

Direct Par cellule mémoire

8
Types des
circuits
logiques
Composants programmables à configuration interne
• Un réseaux logique programmable (circuit logique programmable ) est
un circuit qui peut être configuré par l’utilisateur pour avoir une ou
plusieurs fonctions logiques.
• Un circuit programmable est constitué d’un ensemble d’opérateurs ET
et OU organisés sous forme de deux matrices.
• La matrice des ET est un ensemble de portes AND qui permet de relier
les différentes variables d’entrées.
• La matrice des OU est un ensemble de portes OR qui permet de relier
les différents termes AND.
• Une matrice peut être programmable ( paramétrable ) ou figée
( préconfigurée ).
• La programmation consiste à faire bruler (sauter) les fusibles des termes
9 ( ou des variables ) qu’on veut pas utiliser  laisser les fusibles utiles .
Types des
circuits

Schéma général d’un réseau logique programmable


logiques

Matrice ET Matrice OU
10
Types des
circuits
logiques

Classification des réseaux programmables

• Selon le type des deux matrices on peut distinguer les trois


types suivants :

– Matrice ET figée et OU programmable  PROM (Programmable


Read-Only Memory)

– Matrice ET programmable et OU figée  PAL(Programmable


Array Logic)

– Matrice ET programmable et OU programmable  FPLA (Field


Programmable Array Logic)
11
Types des
circuits
logiques
Les PROM

A B

figée
La matrice ET est figée : les produits
sont déterminés A.B

La matrice des ET nous permet de A.B


générer toutes les combinaisons A.B
possibles A.B
La programmation consiste a choisir des
termes et les relier par des OU.
F1 F2 F3

12
Types des
circuits
logiques
Les PROM : exemple

A B

F1  A.B  A.B
F 2  A.B  A.B
F 3  A.B  A.B

F1 F2 F3
13
Types des
circuits
logiques
Les PAL

Liaison non programmable


Liaison programmable
14
Types des
circuits
logiques
Les PAL
Réference des PALs
Lettres (s), code(s) Structure de sortie
L Combinatoire actif bas
H Combinatoire actif haut
R Registre
RA Registre asynchrone
X Registre et XOR
V Versatile

Ex: PAL 16 L 8 A B C

Exemple

F1( a, b, c)  a.b  a.b.c


F 2( a, b, c)  a.b.c  0

15
Ce terme donne un 0.
F1 F2
Intérêt des PLDs

PLDs (Programmable Logic Devices) : acronyme générique de tout


ce qui est circuit logique programmable (SPLDs, CPLDs, FPGA).

L’intérêt que présentent les circuits programmables par rapport


aux circuits à structure figée tient essentiellement à des impératifs
technico-économiques, résumés en quelques mots clés :

Intégration

Temps réel
Développement

Confidentialité

16
Intérêt
des
PLDs Intégration de systèmes par les PLDs
x10 portes

Moins de
boîtiers :

Moins de cartes

x100 portes
Cartes plus
petites

Consommation
réduite
1000 à 10000 portes 1000 à x1000 000 portes
17
Intérêt des
PLDs

Intégration fonctionnelle

Il est courant d’implémenter avec le même circuit plusieurs fonctions


distinctes

Contrôleur Port série Contrôleur


I2C VGA

Contrôleur Préprocesseur Contrôleur


caméra pixels RAM

A la limite on crée un SOC : Système On Chip


18
Intérêt des
PLDs

Intégration fonctionnelle

Il est courant d’implémenter avec le même circuit plusieurs fonctions


distinctes

Contrôleur Port série Contrôleur


I2C VGA

Contrôleur Préprocesseur Contrôleur


caméra pixels RAM

A la limite on crée un SOC : System On Chip


19
Intérêt des
PLDs

Temps réel : parallélisme

Les unités fonctionnelles d’un PLD peuvent réagir simultanément et


sans délai au même signal

Unité
1

Unité
2

Unité
3

20
Intérêt des
PLDs

Temps réel : pipeline

Les unités fonctionnelles d’un PLD peuvent travailler simultanément


de façon concurrentes

Unité Unité Unité


1 2 3

Unité Unité Unité


4 5 6

Unité Unité Unité


7 8 9

21
Intérêt des
PLDs

Développement aisé

Existence d’outils de développement totalement dédiés à la conception de


systèmes sur PLDs.

Possibilité de portage de projets déjà implémentés sur d’autres cibles.

Possibilité d’utiliser des noyaux de propriété intellectuelle (IP)* pour


des fonctions standards.

Le marché offre de plus en plus de PLDs intégrant des fonctions


complexes jusqu’alors implémentées par des circuits spécialisés (RAM,
multiplieurs…)
...
* ou libres…
22
Intérêt des
PLDs

Développement flexible

Un modification même majeure des spécifications techniques n’entraîne


pas nécessairement une modification de l’environnement externe des
PLDs (circuit imprimé en particulier)

Les PLDs actuels sont reconfigurables indéfiniment soit in situ «ISP: In-
System (In Situ) Programmable – Composant programmable sur
carte» soit par leur mémoire (PROM ou FLASH) de configuration.

...

23
Intérêt des
PLDs

Coûts

Tous les arguments cités en faveur des PLDs ont une incidence sur les côuts :

Intégration : réduction des coûts d ’industrialisation (surface PCB:


Printed Circuit Board , manipulations)

Développement : réduction des délais de développement et de coût des


avenants de modifications

Portabilité des projets : les investissements intellectuels sont


récupérables pour d’autres projets ou même commercialisables sous
forme d’IP.

24
Intérêt des
PLDs

Confidentialité

Sauf recopie intégrale d’un système intégrant des PLDs il est


difficile d’en refaire la synthèse logique au seul examen des
circuits et de leur fonctionnement...

Les PLDs directement configurables disposent en général de la


possibilité d’être programmés sans possibilité de relecture de
leur configuration (bit de sécurité).

25
Intérêt des
PLDs

Microcontrôleur ou PLDs ?

La réalisation d’un système logique séquentiel peut amener


à faire un choix entre microcontrôleur et PLD.
D’où la nécessité d’en connaître quelques différences
fondamentales :

Un PLD est capable de réagir en temps réel à un


changement d’état de ses entrées.

Un PLD est capable d’implémenter plusieurs processus


fonctionnant en parallèle

Un PLD offre beaucoup plus de ports E/S qu’un


microcontrôleur.
26
Intérêt des
PLDs
Limites des PLDs

Tout en présentant d’indéniables qualités, les PLDs présentent également des


limites :

Rapidité : les fréquences d ’horloge sont limitées au mieux à quelques


centaines de MHz en raison des délais de propagation induits par le
routage.
Coût total
PLDs
Coût : si le coût de développement
est en général avantageux, le coût en
quantité peut s’avérer plus lourd que Asics
celui d’une solution à base d’ASICs.

Quantité

27
Les PLDS : Approche

Circuit programmable : circuit capable de recevoir une configuration


programmée de ses ressources intégrées.

La majorité des circuits programmables du marché sont des circuits


logiques (peu d’analogiques)

Principaux constructeurs du marché :

Actel Altera
AMD Philips
Vantis Xilinx
28
Les PLDS : Un ancêtre, le FPLA (1982)
Entrées

* fusibles titanium-tungstène
82S100 (Signetics) : 16 entrées (e1..e16), 8 sorties (S1..S8),
48 termes produits (P1..P48).
48x16x2 + 48 x 8 = 1920 points de configuration
29
Un ancêtre :
le FPLA
FPLA : analyse de la configuration
Compte tenu des points de configuration activés (ou plutôt coupés),
par exemple :
+5V

Le terme produit P1 est issu


d’un ET câblé tel que : e1

P1  e1.e2.e3 e2 P1

e3
La sortie S1 est issue
d’un OU câblé tel que : +5V

S1  P1  P3 P1 P2 P3

S1
Ici P3 = 0 ; il reste :

30
S1  e1.e2.e3
Un ancêtre :
le FPLA
FPLA : représentation symbolique

Pour schématiser l’organisation et la configuration d’un PLD, on utilise


en général la représentation suivante :

e1 e2 e3

P1

P2

P3

S1 S2

31
Un ancêtre :
le FPLA
FPLA : synthèse

Au final, l’organisation d’un FPLA s’appuie sur deux matrices


programmables :
e1 e2 e3
Matrice
de OU
P1

P2

P3

Matrice de ET
S1 S2

La matrice de ET fournit n termes produits à la matrice de OU.


32
Les PLDS actuels : désignation

Les circuits logiques programmables du marché sont


classés en gros selon 3 grandes familles :

SPLDs (Simple Programmable Logic devices)


CPLDs (Complex Programmable Logic Devices)
FPGAs (Field Programmable Gates Array)

Les critères de cette classification seront présentés


lors de la synthèse finale de cet exposé.
33
Les SPLDs

Les SPLDs

Faible volume de ressource : quelques centaines de portes

Pas de chemin d’interconnexion interne programmable (pas de


« routage » nécessaire entre les E/S et les ressources du PLD)

Unique réseau programmable de ET commun à un certain


nombre de structures répétitives.

Exemples : PAL, GAL, EPLD

34
SPLD: Classification selon la structure de sortie
Il existe 3 structures de sortie qui peuvent-être aussi des entrées/sorties :
– Combinatoires
– Séquentielles (à registres)
– Versatiles
 Entrées/sorties combinatoires
Fusibles

La sortie 3 états rebouchée vers la matrice:


– une sortie peut servir de variable intermédiaire.
35 – une sortie peut servir d’entrée (en mode haute impédance).
SPLD: Classification selon la structure de sortie (2)

 Entrées/sorties séquentielles (à registres)

Une bascule D permet la logique séquentielle:


– sorties séquencées sur une horloge H.
– une sortie ne peut pas servir d’entrée.
– une commande OE (Ouput Enable) permet de désactiver la sortie.
36
SPLD: Classification selon la structure de sortie (3)

 Entrées/sorties versatiles (VPAL)

S1 S0 Configuration des sorties


0 0 Registre, actif bas
0 1 Registre, actif haut
1 0 Combinatoire, actif bas
1 1 Combinatoire, actif haut

On peut configurer par programmation le mode d’utilisation


de la broche de sorties.
37
Les SPLDs

Un SPLD : le PAL (Programmable Array Logic)


Exemple : PAL16L8
(représentation partielle)

Le réseau programmable est ici constitué d’une matrice de 32 colonnes x 64


lignes. Les colonnes donnent accès à toutes les entrées (directes et inverses) .
38
Les SPLDs

PAL16L8 : la cellule
L pour Logique combinatoire

Les lignes sont regroupées


ici par 10 pour former un motif
répétitif, la cellule logique.

Chaque cellule peut ici :


Faire la somme de 7 termes produits

Configurer la borne I/O en entrée ou en sortie


39
Les SPLDs

PAL16L8 : l ’organisation

10 Entrées externes 6 Entrées externes


ou rétroactions

Cellule logique (10 lignes)


Pin I/O
Buffer
3 états

Réseau programmable
8x10 lignes /
32 colonnes

8 cellules logiques chevauchent un réseau de 32 colonnes


40
Les SPLDs

Programmation d ’un SPLD : synthèse


Cahier des charges

Analyse du problème

Résolution du problème par mise


en équations ou algorithmes

Choix du PLD en fonction


du nombre d’E/S

Saisie des équations ou algorithme

Compilation -> équations réduites

Génération d’un fichier de configuration


41
Les SPLDs

Un PAL pour le séquentiel : PAL16R8

R comme Register

clock OE

Le réseau programmable est identique


à celui du PAL16L8.
L’architecture finale de la cellule
intègre une bascule D, dont l’horloge
est commune à toutes les cellules.
42
Les SPLDs

Un PAL plus flexible : PALCE16V8


Les PALs présentés en introduction aux SPLDs à titre d ’exemple ne sont
pratiquement plus disponibles. Ils sont remplacés par un PAL plus flexible,
plus performant, le PALCE16V8 (CE : CMOS Erasable ; V : versatile)

Réseau identique à celui


des PAL16L8 et PAL16R8

43
Les SPLDs

PALCE16V8 : la cellule

Les 8 cellules logiques de ce PAL sont configurables en :


- sortie combinatoire
- sortie séquentielle(registre)
- en entrée
44 grâce à 4 multiplexeurs programmables.
Les SPLDs
PALCE16V8 : le XOR programmable

La sortie traverse un XOR programmable.

Ce dispositif permet d’inverser la somme


fournie par le OU pour faire face aux cas
où le nombre de termes produits en entrée
serait supérieur à 8, ceci en utilisant les
propriétés du théorème de Morgan.
Ce système se retrouve pratiquement dans
45 toutes les cellules des PLDs.
Les SPLDs
Rôle du XOR programmable
Exemple : soit l ’équation réduite :
E 8  init. pbd . x . y .test. E 8
 init. pbc. x . y .test. E 8
 init. pba. x . y .test. E 8
 init. pba. x . y .test. E 8
 init. pbd . x . y . E 7
 init. pbc. x . y . E 7
 init. pba. x . y . E 7
 init. pba. x . y . E 7
 init. pbd . x . y . E 7
 init.test. E 7
Une seule cellule logique d’un PALCE16V8 sera incapable d’implémenter
directement cette somme : il y a 9 termes produits et le OU de la cellule ne
46 comporte que 8 entrées.
Les SPLDs
Rôle du XOR programmable (2)
Solution au problème : si le même terme E8 est exprimé par son inverse, le
résultat ne comportera plus ici que 7 termes produits :
E 8  init
 pbd . x . y .test
 pbc. x . y .test
 pba. x . y .test
 pba. x . y .test
 E 7.E 8
 E 7 .test
Le OU d’une cellule peut implémenter cette somme et le résultat doit
par la suite être inversé grâce au XOR programmable.
Cette opération d ’inversion est en général laissée au compilateur qui
choisit l’expression directe ou inversée de la somme selon les cas,
47
quand c’est possible.
Les SPLDs
Saturation de la cellule : problème

La saturation d’une cellule par excès de termes produits de la


somme à implémenter, non résolue par l’inversion, est un
problème récurrent.

La solution consiste en général à décomposer la somme autant


d’expressions que nécessaire pour permettre leur implémentation
chacun par une cellule distincte.

48
Les SPLDs
Saturation de la cellule : exemple

abcde

cellule1 /aux
/Y

cellule2 /Y

/Y = P1 + P2 + P3 + P4 + P5 + P6 + P7 + P8 + P9 + P10;

/aux = P1 + P2 + P3 + P4 + P5 + P6 + P7 + P8;

/Y = /aux + P9 + P10;

49
Les SPLDs
Une variante aux PALs : le GAL
Autre solution au problème précédent : utiliser des circuits dont les cellules
logiques comportent des OU possédant un nombre supérieur d’entrées, tel
le GAL22V10 de VANTIS (représentation partielle à 50%).

Réseau 130 x 44

50
Les SPLDs
GAL22V10 : la cellule

La cellule logique donne à quelques détails près les mêmes possibilités de


configuration qu’un PALCE grâce à 2 multiplexeurs programmables.

8 à 16 entrées

51
Les CPLDs

Volume moyen de ressources : quelques milliers de


portes.

Cellules logiques organisées en plusieurs blocs logiques


identiques ayant chacun leur réseau programmable
indépendant et non relié directement aux pins E/S.

Chaque bloc logique est équivalent à un SPLD sans pins.

52
Les CPLDs

Les CPLDs (2)

Chemin d’interconnexion interne programmable par une


matrice d’interconnexion commune. (« routage » nécessaire
entre les E/S et les blocs du CPLD)

Pour une même puce, choix du boîtier en fonction des pins


E/S nécessaires.

Exemple : famille EPM7000 de Altera

53
Les CPLDs
Famille EPM7000 (Altera) : organisation
LAB : logic Array Block
PIA : Programmable
Interconnection Array

54
Les CPLDs
Famille EPM7000 (Altera) : la cellule

En plus d’une structure finale classique, la cellule possède accède à un


réseau local (16 colonnes) et possède deux dispositifs permettant
55
l’implémentation des grosses équations combinatoires, les expanders.
Les CPLDs
Famille EPM7000 (Altera) : les expanders

Expansion partagée par le bloc logique

Une ligne par cellule peut servir à fournir une colonne supplémentaire
56 au réseau local du bloc logique concerné.
Les CPLDs
Famille EPM7000 (Altera) : les expanders (2)

Expansion parallèle

Chaque cellule peut fournir un terme supplémentaire au OU de la cellule voisine.


57
Les CPLDs
Famille EPM7000S (Altera) : les blocs E/S

I/O Block

Compatible
5Vet 3.3V

(dépendant de
VCCINT et VCCIO)

Les buffers de sorties sont à triple contrôle.


58
Les CPLDs
Famille EPM7000 (Altera) : les puces

• tH (hold time) of memory controller EPM7xxxS : programmable in situ


• tPD (propagation delay) of board trace La programmation in-situ (In-System Programming ou
• tCO (clock to output delay) of SRAM ISP) est une fonctionnalité qui permet aux composants
• tDOH (output data hold time) of SRAM électroniques (microcontrôleurs en particulier) d'être
• tSKEW (clock skew) of clock generator programmés ou reprogrammés alors qu'ils sont déjà en
• tJIT (cycle-to-cycle jitter) of clock generator place dans un système électronique complet. Ceci évite
• tCYC (cycle time) of clock generator d'avoir besoin de programmer le composant en dehors du
59 • tSU (setup time) of memory controller montage complet à l'aide d'un programmateur dédié.
Les CPLDs
Famille EPM7000 (Altera) : rapidité

-5 correspond à un temps de propagation tpd = 5ns


60
Les CPLDs
Famille EPM7000 (Altera) : les boîtiers

61
Les FPGAs
(Field Programmable Gate Array)

Volume élevé de ressources : de quelques milliers à


quelques millions de portes

Cellules logiques de petite taille, jusqu’à plusieurs


dizaines de milliers.
(pas de réseau logique programmable)

Cellules organisées en une unique matrice Ou en


matrice de petits blocs de cellules (LAB : logic arrays
blocks)
62
Les FPGAs

Les FPGAs (2)


Combinatoire implémentable par des
L.U.T. (Look Up Table) = mémoire

Entrées Sortie
n 1

adresse

donnée
LUT

Lignes et colonnes d’interconnexion programmables entre les


cellules et les blocs E/S
La configuration (routage et LUTs) est faite par des points mémoire volatils, il est nécessaire de
sauvegarder le design du FPGA dans une mémoire non volatile externe, généralement une mémoire
Flash série, compatible « JTAG ». Certains fabricants se distinguent toutefois par l'utilisation de cellules
EEPROM pour la configuration, éliminant le recours à une mémoire externe, ou par une configuration
par anti-fusibles (la programmation par une tension élevée fait « claquer » un diélectrique, créant un
63 contact). Cette dernière technologie n'est toutefois pas reconfigurable.
Les FPGAs

Les FPGAs (3)

(Field Programmable Gate Array)

Ressources RAM embarquées

Sur certaines familles :


- Multiplieurs câblés
- noyau microprocesseur

Configuration interne par une SRAM

Contrairement aux CPLDs et SPLDs dont la configuration est basée sur


une EEPROM, celle d’un FPGA est VOLATILE.

64
Les FPGAs
FPGAs : structure générale

Cellule logique

Blocs E/S

Lignes
d’interconnexions

NB :La matrice va de 10x10 à 100x100 et plus !


65
Les FPGAs
FPGAs : structure détaillée

66
Les FPGAs
FPGAs : RAM embarquée

Position
centrale:
minimisation
desTpd

67
Les FPGAs
FPGAs : structure fonctionnelle

Un FPGA possède en fait 3 couches structurelles :

SRAM de
configuration
Interconnexions
configurables
Ressources
(Cellules, RAM)

Chaque bit de la SRAM est vu soit par un nœud des interconnexions,


soit par un multiplexeur ou une LUT des ressources.
68
Les FPGAs
FPGA Exemple 1 : XC4000 (Xilinx)

Portes : de 1600 à 85000

Cellules : de 64 (8x8) à 3136 (56x56)

RAM : de 2 kbits à 100 kbits

Fréquence système : jusqu’à 80 MHz

69
Les FPGAs
XC4000 : la cellule CLB : Configurable Logic Block

(version combinatoire : 3 générateurs de fonctions F,G,H)


70
Les FPGAs
XC4000 : la mémoire répartie

(version mémoire : organisation 16x2 bits)


71
Les FPGAs
XC4000 : les interconnexions

72
PSM : Programmable Switches Matrice
Les FPGAs
XC4000 : les interconnexions, détail

73
Les FPGAs
XC4000 : Bloc E/S

74
Les FPGAs
XC4000 : exemple de routage

75
Les FPGAs
XC4000 : la famille

* 20 à 30 % de la RAM est utilisée dans un projet.


76
Les FPGAs
FPGA Exemple 2 : ACEX (Altera)

77
Les FPGAs
FPGA Exemple 2 : ACEX (Altera)

78
Les FPGAs
FPGA Exemple 2 : ACEX (Altera)

79
Les FPGAs
FPGA Exemple 2 : ACEX (Altera)

3 à 12 EAB (Embedded Array Block)


1 EAB 12 288 bits

80
Les FPGAs
FPGA Exemple 3 : Virtex 2 pro (Xilinx)

81
Les FPGAs

Virtex 2 pro :
organisation
générale

82
Les FPGAs
Virtex 2 pro : la cellule logique

83
Les FPGAs

Virtex 2 pro : les


slices

Slice = Tranche
84
Les FPGAs

Virtex 2 pro :
détail du slice

85
CPLD
vs
FPFGA
CPLD ou FPGA ?
CPLD et FPGA, pareil ?

NON ! Tous les deux sont des circuits logiques programmables,


fabriqués par les mêmes constructeurs. Mais ils sont différents :

Les FPGAs ont des cellules logiques de petite taille avec une
ou deux bascules et en possèdent plusieurs milliers.

Les CPLDs ont des cellules logiques de grande taille avec une
bascule et n’en possèdent que quelques centaines.

86
CPLD
vs
FPFGA
CPLD ou FPGA : configuration

La configuration des FPGAs est basée sur une SRAM, qui a besoin d’être
rechargée à chaque mise sous tension.

La configuration des CPLDs est basée sur une EEPROM, dont le contenu
enregistré depuis la dernière configuration persiste indéfiniment.

87
CPLD
vs
FPFGA
CPLD ou FPGA : routage

Les FPGAs contiennent de larges ressources d’interconnexions


entre les cellules logiques et les blocs d ’entrées sorties.

La capacité de routage des CPLDs est limitée à peu de choses,


rendant vite difficile l’intégration de projets complexes.

88
CPLD
vs
FPFGA
CPLD ou FPGA : rapidité

À fonction logique égale un CPLD pourra être plus rapide qu’un


FPGA car sa capacité à réaliser une logique combinatoire en un
seul étage est meilleure que celle d’un FPGA.

Une cellule logique de CPLD peut intégrer une grosse


équation logique grâce à son réseau programmable,
ce que possèdent pas les cellules de FPGA.

89
CPLD
vs
FPFGA
CPLD ou FPGA : taille projet

Petit projet : SPLD ou CPLD

Gros projet : FPGA

90
CPLD
vs
FPFGA Synthèse : les SPLDs et sCPLD
entrées rétroactions

Pins reliées au réseau


Cellule I/O et aux cellules
SPLD

Pins et cellules à relier


via des réseaux programmables
d’interconnexion

CPLD
Réseau
de ET
Configuration
Cellules associées à non volatile
un réseau commun de ET
91
CPLD
vs
FPFGA Synthèse : les FPGAs

Nombreuses petites cellules


Organisées matriciellement
sans réseau de ET

FPGA

Configuration sur SRAM


volatile

92
Modes de programmation des PLDs

Une fois le fichier de configuration disponible, la programmation du


PLD peut correspondre à plusieurs cas de figure :

SPLDs (PAL, GAL) :


sur programmateur
CPLDs :
sur programmateur ou in situ

FPGA :
in situ (SRAM ou FLASH)
93
Programmation
des SPLD DIP sur programmateur
PLDs

94
Programmation
des
PLDs SPLD CMS sur programmateur

95
Programmation
des
PLDs Programmation des CPLDs

Utilisation d’un programmateur


Démarche pratiquement obsolète

In Situ (Boîtiers ISP : In System Programmable)


Le circuit possède alors un interface approprié.

L’interface le plus connu est celui du JTAG avec ses 4


signaux : TCK, TMS, TDI et TDO.
Cet interface permet d’écrire (et de lire) directement
l’EEPROM de configuration interne du CPLD.

96
Programmation
des
PLDs Programmation in situ (ISP)

Nécessité de prévoir sur le PCB le connecteur destiné au câble de configuration.

97
Programmation
des
PLDs Principe de la programmation EPROM

Principe du point de contact programmable :


transistor N-MOS à grille « flottante » à injection de charge.

98
Programmation
des
PLDs Cellule EPROM : structure

Largeur du canal :
finesse de la gravure (<1µ)

Par défaut, cette structure est conductrice : la résistance entre drain et


source du transistor N-MOS est faible.

La programmation consistera à rendre non conducteurs (mise « off ») les


points appropriés du PLD.
99
Programmation
des
PLDs
Cellule EPROM : mise « off »

En portant la grille à un potentiel suffisamment élevé, le champ créé


« aspire » des électrons qui se font piéger dans la grille flottante.
100
Programmation
des
PLDs
Cellule EPROM : effacement
Vg = 0

Vss >0

Il suffit par exemple d’inverser le potentiel Vgs pour « vider » la grille


flottante de ses électrons.

101
Programmation
des
PLDs Programmation des FPGA

In Situ

La SRAM interne du FPGA est écrite (ou lue)


via l’interface JTAG du circuit.

Intérêt : opération relativement rapide

Inconvénient : configuration volatile.

102
Programmation
des
PLDs Programmation des FPGAs

Par PROM ou EEPROM de configuration série

La SRAM interne du FPGA reçoit à la mise sous tension le contenu


d’une mémoire ROM externe via un interface spécialisé (qui peut
être distinct du JTAG).

Intérêt : opération très rapide et automatique à chaque mise sous


tension.

Inconvénient : configuration de la PROM lente.

103
Programmation
des
PLDs Exemple matériel : photo 1

Câble de
configuration

104
Programmation
des
PLDs Exemple matériel : photo 2

Oscillateur
à quartz
JTAG

2.5V

SSRAM
3.3V

FPGA
EEPROM

105
Programmation
des Exemple matériel : photo 3
PLDs

Boîtier PQFP
106
Programmation
des
PLDs Exemple matériel : photo 4

Boîtier TQFP

DIP switch
Boîtier PLCC

107
Programmation
des
PLDs Schéma d’un système de configuration
Les deux dispositifs peuvent être
combinés

EEPROM de
configuration
Connecteur
Choix du JTAG de
mode configuration

108
Alimentations des FPGAs

La plupart des FPGAS actuels nécessitent plusieurs alimentations :

VCCINT

de 1,2 V à 2,5 V. Alimente le noyau du FPGA,

VCCIO

de 3,3 V à 5 V. Alimente les cellules d’entrées sorties.

109
Représentation d’un
système logique

… ou comment représenter une système


autrement que par un schéma, en faisant une
description textuelle.

110
Système logique : définitions

e s
m p
SYTEME
LOGIQUE
e s
2 2
e s
1 1

E = { e1, e2, ... , em } est l'alphabet d'entrée du système


S = { s1, s2, ... , sp } est l'alphabet de sortie du système
 Si S(t) = f [E(t)] quelque soit t,
le système logique est un circuit combinatoire
 Si S(t) = f[E(t), M(t)]
le système est alors un circuit séquentiel
111
Implémentation
d’un
système Implémentation d’un système séquentiel
séquentiel

Etat futur Etat présent

E Q*
G M Q
F
S

Entrées Variables Commande Variables internes


(Variables primaires) d'excitation écriture (ou secondaires)

S(t) = f[E(t), M(t)]

M(t) représente l ’état du système à l ’instant t, mémorisé par le bloc


mémoire M à n bits, capable de représenter 2n états différents.

G et F sont des circuits combinatoires.


112
Implémentation
d’un
système
séquentiel
Système séquentiel : fonctionnement

Etat futur Etat présent

E Q*
G M F
Q S

Commande d’écriture

Sur commande d’écriture la mémoire M prend l’état Q* présent


à son entrée. Cet état est fonction à la fois des variables externes
(E) et de l’état Q récédant le front.
Les sorties (S) sont fonctions de l’état Q de la mémoire et
éventuellement des variables externes (E).

113
Implémentation
d’un
système
séquentiel
Système séquentiel : horloge
Etat futur Etat présent
La commande d’écriture est
Q* Q généralement le front (montant
M ou descendant) d’un signal
Horloge périodique appelé horloge.

Horloge

Q* data1 data2 data3 data4 data5

Q data0 data1 data2 data3 data4

Les changements d’état du bloc M sont dits synchrones de l’horloge.


114
Implémentation
d’un
système
séquentiel
Cellule logique : système élémentaire 1 bit

Horloge

Fonction combinatoire D Strap ou


inverseur
Bloc G Bloc M Bloc F

Une cellule logique d’un PLD se prête parfaitement à l’implémentation


d’une machine d’état de Moore de 1 bit.

115
Implémentation

Implémentation d’un système n bits


d’un
système
séquentiel

Horloge
Bloc G Bloc M Bloc F

combinatoire 1 D Q1
combinatoire 2 D Q2
Réseau
du PLD
combinatoire n D Qn

L’association de n cellules logiques permet l’implémentation d’une


machine d ’état n bits, capable de produire jusqu’à 2n états distincts.
Cette construction est idéale pour construire des compteurs
synchrones ou des séquenceurs synchrones
spécifiques.
116
Implémentation
d’un
système
séquentiel
Système n bits et combinatoire
Dans le système précédent, le bloc F est réduit à sa plus simple expression :
les sorties sont directement les bits mémoire.
Horloge
Réseau Bloc M
du PLD D
combinatoire 1
combinatoire 2 D

combinatoire n D
Bloc G
S1
combinatoire F1
Bloc F S2
combinatoire F2

Cet exemple de système n bits possède 2 sorties, chacune étant fonction


combinatoire des états du bloc M grâce aux 2 cellules qui implémentent le bloc
117
F par les fonctions combinatoires F1 et F2
Langages de description

La nécessité de pouvoir décrire un système logique sous formes


d’expressions compilables plus ou moins évoluées a abouti à
l’élaboration de langages de description textuelle :

Langages de très bas niveau : PALASM, ABEL


Non propriétaires, ils servent encore à programmer les SPLDs

Langages propriétaires : AHDL (Altera), MINC (Xilinx)


Destinés surtout aux CPLDs ou aux petites unités fonctionnelles
pour une description performante de niveau moyen.
Langages de très haut niveau : VHDL, VERILOG
Non propriétaires et normalisés, donc portables
118
Langages
de description
Structure générale d’une description

Les langages évolués, propriétaires ou non, présentent tous


une structure commune pour la description d’un système logique :

Description externe

C’est la vue externe du « composant », avec l’énumération des


signaux d’entrée / sortie et leurs dimensions, avec éventuellement
les numéros de broches de circuit auxquelles ils sont assignés.
Description interne

Organisée différemment selon les langages, cette section a pour but


d’énumérer de façon explicite ou implicite les ressources internes
du système et d’en décrire le comportement ou la structure.

119
MERCI ...

120

Vous aimerez peut-être aussi