Académique Documents
Professionnel Documents
Culture Documents
Composants programmables
Cours de 3 Bachelier en Electronique applique
D. DECKERS
2008-2009
2me partie :
Composants programmables
PLDs, CPLDs et FPGAs
5
Gnralits et conventions
II.1.3 :
II.1.4 :
10
II.1.5 :
13
II.1.6 :
14
17
17
III.1.1 :
Cellules fusibles
17
III.1.2 :
Cellules antifusibles
18
III.2 :
18
III.2.1 :
Cellules UVPROM
19
III.2.2 :
20
III.2.3 :
Cellules SRAM
23
III.3 :
24
III.4 :
25
III.5 :
Fusible de scurit
25
III.6 :
26
III.7 :
26
III.7.1 :
La synthse
26
III.7.2 :
Loptimisation
26
III.7.3 :
Le fitting
27
III.7.4 :
Placement et routage
27
III.7.5 :
28
33
35
V.1 :
35
V.2 :
37
40
VI.1 :
Architecture
40
VI.2 :
42
VI.3 :
43
VI.4 :
43
VI.5 :
44
Bibliographie :
Annexes:
COMPOSANTS PROGRAMMABLES
I. INTRODUCTION :
ASIC : Application Specific Integrated Circuits
Cette dnomination dASIC regroupe tous les circuits dont les fonctions peuvent tre
personnalises dune manire ou dune autre en vue dune application spcifique.
Avant lapparition des circuits logiques programmables, toute application tait construite
partir de composants logiques standards dont les fonctions taient bien dfinies par le
constructeur dans les data sheets. La complexit et le nombre de circuits standards ncessaires
une application rendaient la mise au point dune carte lectronique longue et coteuse et la
moindre erreur de conception entranait une refonte du circuit imprim.
Dans les annes 80 apparaissent des composants logiques programmables qui permettent
de remplacer plusieurs composants standards. Malgr le degr dintgration assez faible
(quelques centaines de portes) de ces premiers composants, ils sont bien accueillis en raison de
lutilisation de composants homognes et de leur souplesse dutilisation. Au milieu des annes
80 viennent alors les FPGAs (Field Programmable Gate Array), nouvelle technologie de
composants programmables alliant souplesse dutilisation (car programmables par lutilisateur) et
trs grande densit dintgration (quelques centaines de milliers de portes logiques).
Evolution : 1963 : premiers circuits TTL
sa technologie de programmation
Composants programmables
page 1
Dans le cadre de ce cours intitul Circuits logique programmable et VHDL , nous nous
proposons de nous limiter ltude des composants semi-spcifiques que sont les rseaux
programmables et aux mthodes de conception dune application sur circuit programmable qui
reposeront sur un langage de description hardware incontournable : le VHDL (Very high speed
integrated circuits Hardware Description Language).
Etude
des
architectures
internes
des
composants
programmables
PLDs
Composants programmables
page 2
Circuits logiques
programmables par lutilisateur
(semi-spcifiques)
PAL
GAL
EPLD
CPLD
FPGA
>
Densit croissante
Figure II.1
Les PALs (Programmable Array Logic) ou rseaux logiques programmables sont les PLDs les
plus anciens (1970). Cest une marque dpose qui est passe dans le langage courant (socit
MMI). La premire gnration de PALs tait compose de PALs fusibles programmables une
seule fois (OTP : One Time Programmable) qui ne ralisaient que des fonctions combinatoires.
Vinrent ensuite les PALs CMOS programmables et effaables lectriquement.
Les GALs (Generic Array Logic) sont les premires PALs CMOS apparues sur le march. Le
terme GAL tant une marque dpose de la firme Lattice Semiconductor, les autres fabricants de
PALs programmables et effaables lectriquement appellent leurs composants PALs CMOS. Bien
que quelques diffrences dorganisation interne existent, on peut donc dire que les GALs et les
PALs CMOS font parties de la mme famille.
Les EPLDs sont des circuits logiques programmables lectriquement et effaables par
rayonnement ultra-violet.
La tendance la miniaturisation et laugmentation du nombre de fonctions lectroniques
prsentes sur une mme carte a rendu les composants SSI (Single Scale Integration : jusqu 20
portes) et MSI (Medium Scale Integration: jusqu 100 portes) que sont les PALs un peu trop
limits. La rponse des fabricants fut donc de construire des CPLDs (Complex PLDs) : ce sont des
botiers renfermant plusieurs structures de base PAL associes une matrice dinterconnexion
programmable (Rq. : LSI : Large Scale Integration jusqu 30.000 portes-, VLSI : Very Large
Scale Integration ).
Composants programmables
page 3
Au dbut des annes 80 sont apparus les FPGAs (Field Programmable Gate Array) qui
sont de gros ensembles de portes logiques lmentaires dont linterconnexion est programmable
par lutilisateur.
II.1 Les PALs :
II.1.1 : Gnralits et conventions :
Lide de base des circuits programmables et donc de leur premier modle, la PAL, tait de
construire un circuit, ensemble de portes logiques compltement interconnectes par des fusibles,
et de pouvoir faire fondre certains de ceux-ci lors de la programmation (personnalisation du circuit)
de manire ce quil ne reste que les connexions souhaites.
Structure :
On retrouve, sur le schma de la figure II.2, une
partie de la structure interne dune PAL. Deux
entres (dont on produit linverse) et une sortie
totalement combinatoire. Des fusibles permettent,
par fusion (programmation), de dconnecter
les
Le
schma
transforme
vu
donc,
prcdemment
en
vertu
se
des
Figure II.3
Rq. : la programmation de ce type de circuit passera par la cration, par outil logiciel, dun fichier
JEDEC (*.jed) qui contiendra la liste des fusibles liminer.
Composants programmables
page 4
I 1 I 2 = 1 . I 2 + I1 . 2
Figure II.4
La fonction OU EXCLUSIF implante sur une PAL donnera donc la cellule de base dans
laquelle 4 fusibles ont ts dtruits.
La structure schmatique complte et non programme dune PAL combinatoire est donne
la figure II.5 :
Figure II.5
Composants programmables
page 5
Il sagit dune zone logique ET programmable et dune zone logique OU fixe en sortie.
Lexemple donn reprsente une PAL capable de gnrer, en direct, des fonctions logiques
somme de quatre produits maximum.
La quantit de termes produit ncessaires coder nimporte quelle fonction de N variables
(entres) est de 2N 2 entres : 4 lignes produit et un OU quatre entres.
10 entres : 1024 lignes produit et un OU 1024 entres (par sortie)!!
La ralisation dun tel circuit nest pas envisageable. En pratique, le nombre de termes produit en
entre des portes OU est limit.
Il existe aussi des circuits dans lesquels cest la matrice OU qui est programmable et la
matrice ET est fixe : ce sont les PROMs (voir figure II.6) :
Le
rseau
dcodage
ET
dadresse
adresses
fixe
sert
(toutes
possibles
au
les
sont
reprsentes).
Figure II.6
De mme, il existe des circuits o les deux rseaux logiques sont programmables : ce sont les
FPLAs (Field Programmable Logic Array). Ces dernires structures, trs souples demploi, ne sont
utilises que dans les circuits spcifiques car il sont plus difficiles programmer (synthse).
Composants programmables
page 6
Figure II.7
-
la sortie de la porte OU est relie la patte dentre / sortie du circuit via un buffer tristate dont ltat est command par une ligne de produit.
La broche de sortie du circuit est relie, via un inverseur / non-inverseur sur le rseau
ET dentre. Toute sortie est donc rinjecte dans la matrice programmable. Dautre
part, cette broche peut servir dentre (I/O) condition de faire passer le buffer tri-state
en haute impdance.
Seuls varient dune PAL combinatoire une autre le nombre dentres, d I/Os et le nombre
de lignes de produit lentre de la porte OU.
La figure II.8 donne la reprsentation de la structure de sortie dune PAL registre (sous
entendu synchrone ) :
Figure II.8
-
les commandes dhorloge et les validations des buffers de sortie (output enable) sont
communes chaque bloc lmentaire.
Pour tre complet, on peut aussi citer les PALs sortie OU exclusif qui sont moins utilises
(figure II.9) :
Figure II.9
II.1.3 : Dnomination des PALs :
La nomenclature des PALs est la suivante :
PAL (CE) XX AB YY C ZZ DEF
|
|------------------ consommation
R registre
RA registre asynchrone
X registre ou-excl.
V versatile
PAL 16R8H15PC
Composants programmables
page 8
Figure II.10
Composants programmables
page 9
Figure II.11
Composants programmables
page 10
Figure II.12
Composants programmables
page 11
Figure II.13
Les sorties peuvent tre actives haut ou bas suivant la configuration S0 (XOR).
Il est donc possible de configurer nimporte quelle sortie dune PAL asynchrone registres soit
comme une sortie combinatoire, soit comme une sortie registres. Les diffrentes
configurations permises sont reprises la figure II.14.
Ce type de PAL permet, nombre dentres et de sorties identiques, de remplacer
nimporte quelle PAL classique ( registre ou combinatoire).
Composants programmables
page 12
Figure II.14
II.1.6 : Les PALs versatiles :
Evolution des PALs vers des circuits programmables de plus haut niveau. Cette volution
se marque sur les structures des cellules de sortie (voir figure II .15).
Figure II.15
On y retrouve pratiquement le mme schma que pour les PALs RA avec, en plus, 2
multiplexeurs. Le multiplexeur quatre entres permet de configurer la cellule de sortie suivant
les quatre modes dj vus (registres, actif haut et bas, combinatoire, actif haut et bas). Voir
figure II.16. De mme, le feed-back des signaux de sortie peut se faire de la sortie registre ou
Composants programmables
page 13
Figure II.16
La structure interne dune PAL CMOS 22V10 est reprsente la figure II.17 (document
Cypress). Les data-sheets compltes de la PAL 22V10 sont donnes en annexe.
Composants programmables
page 14
Figure II.17
Composants programmables
page 15
Figure III.1
Figure III.2
Llimination de la connexion est obtenue par claquage du fusible (tension ses bornes de 12
25V) dans le programmateur. Lorsque le fusible est maintenu il y a formation dun et cbl
entre la ligne et la colonne du rseau (cfr. Technologie DL) . La figure III.2 montre la forme relle
dun fusible : les principaux dsavantages de cette technologie sont la surface occupe par ces
cellules qui est importante (700 m), le matriaux utilis pour la zone fusible (mlange de titane et
de tungstne qui doit pouvoir tre facilement dpos lors du processus de fabrication et avoir les
qualits de fusion requises), la pollution engendre par le claquage du fusible (rsidus) et, enfin, la
technologie utilise dans ce type de circuit est une technologie transistors bipolaires et donc
gourmande en puissance.
Composants programmables
page 16
La technologie CMOS, qui est apparue plus tardivement, permet de remdier plusieurs
problmes. Cest pourquoi cette technologie est devenue obsolte et est remplace par la
technologie dinterconnexion antifusible.
III.1.2 : Cellules antifusible :
Depuis le milieu des annes 80, la technique des antifusibles est utilise. Il sagit du contraire
du fusible, cest--dire que, par dfaut, les connexions nexistent pas dans le composant non
programm. La programmation sopre par claquage dun dilectrique dispos entre deux couches
de silicium dopes. La gomtrie dune telle cellule (fusible vertical) est donne la figure III.3.
Figure III.3
Plusieurs avantages cette technologie : le matriau utilis est dj prsent dans les process
de composants CMOS standards et la surface rduite occupe par cette cellule (1,8 m). La
programmation consiste donc claquer lisolant (nitrure de silicium de 90 dpaisseur) par
application dune tension de 16 V pendant une dure de lordre de la milliseconde.
Composants programmables
page 17
Figure III.4
Le produit est initialement tir 1 par une rsistance de pull-up, mais ds quun des
transistors conduit (tat logique de la grille 1), le produit tombe 0. La fonction ralise est
donc, en ralit une fonction NOR, mais comme de chaque entre dun circuit logique
programmable on construit le complment, on peut raliser des ET cbls :
/(a + b) = /a . /b
/(/a + /b) = a . b
Pour raliser lquivalent dun fusible dans les circuits reprogrammables, les transistors utiliss
dans les cellules EPROM possdent deux grilles : une grille de slection et une grille flottante. La
structure schmatique dun tel transistor est donne la figure III.5 :
Des charges peuvent tre accumules et piges dans la grille flottante par un mcanisme
appel injection par avalanche. Lapplication dune tension de lordre de 13V entre la grille de
slection et la source et dune tension de ~ 5.5V entre le drain et la source permet la
programmation.
Composants programmables
page 18
Figure III.5
La tension VGS est suffisante pour crer un canal entre le drain et la source. La tension VDS
permet alors le passage dlectrons de la source vers le drain. Ces lectrons vont tre soumis au
fort champ lectrique cre par VGS et vont acqurir une nergie suffisante pour traverser la faible
couche disolant (~200m) et rester pigs dans la grille flottante. Ce type de transistor est appel
FAMOS (Floating gate Avalanche injection MOS transistor).
Leffet de cette charge pige dans la grille flottante est daugmenter la tension de seuil
ncessaire pour rendre le transistor passant (Vtn). En effet, les lectrons pigs dans la grille
flottante crent un champ lectrique qui soppose au champ cr par la grille de slection. Donc,
en fonctionnement, un 1 sur la grille de slection dun FAMOS dont la grille flottante aura t
programme ne rendra plus le transistor passant. Les entres se trouvant dconnectes par cette
programmation ne participeront donc plus au produit (rle des fusibles dans les cellules bipolaires).
Les autres transistors se conduiront comme des MOS normaux.
Pour effacer le circuit, une exposition de ~20 min. aux ultraviolet est ncessaire. Cet
effacement est reproductible plus dun millier de fois. Les botiers des composants EPROM ont
donc la particularit de possder une petite fentre transparente (quartz) pour permettre le
passage des ultraviolets. Sans rayonnement (fentre obture pour viter leffacement), la
rsistance de lisolant est telle que la constante de temps de dcharge naturelle de la grille
flottante se chiffre en dizaines dannes.
III.2.2 : Cellules Flash EEPROM (programmables et effaables lectriquement) :
La figure III.6 reprsente une fonction ET cble partir de cellules Flash EEPROM :
Composants programmables
page 19
Figure III.6
Le principe de base est le mme que pour les cellules EEPROM si ce nest que le transistor
FAMOS est ici remplac par un MOS de slection et un transistor FLOTOX (FLOating gate Tunnel
OXyde transistor) de programmation. La structure dun flotox est donne la figure III.7 :
Figure III.7
La structure du FLOTOX est similaire celle du FAMOS sauf quici, loxyde de grille entre le
drain et la grille flottante est beaucoup plus fin (100 contre 200 pour le FAMOS).Cette
structure autorise laccumulation de charges dans la grille flottante par un mcanisme physique
appel Fowler-Nordheim tunneling. Pour la programmation (voir figure III.8 a), une tension de 12
V est amene sur la grille du transistor de programmation commune toutes les cellules. La
Composants programmables
page 20
source est relie la masse. Une tension de 5 V est ncessaire sur le drain du flotox afin
dacclrer les lectrons. Pour cela, le drain du MOS de slection doit tre port 5 V. Cette
tension ne sera transmise au drain du flotox D que si le MOS de slection est passant, cest--dire
si la cellule est adresse (grille du transistor de slection 5 V). Ce mcanisme permet donc la
programmation slective des cellules. Pour leffacement (slectif lui aussi), une tension de 12 V est
ncessaire sur le drain du flotox tandis que toutes les grilles de programmation sont la masse
(voir figure III.8 b). Leffacement ne sera effectif que si la cellule est adresse.
+5V
+12V
Data
Slection
Slection
D
12V
0V
Programmation
Programmation
Figure III.8 a
Figure III.8 b
Figure III.9
Composants programmables
page 21
quand la grille flottante du flotox nest pas charge, celui-ci conduit pour la tension de
grille (quivalent un fusible non dtruit). Alors, le niveau logique de la grille du MOS
de slection intervient dans le produit final.
Quand la grille flottante du flotox est charge, il est bloqu pour la tension de grille
(quivalent un fusible dtruit). Alors, le niveau logique de la grille du MOS de
slection intervient dans le produit final.
La surface dune cellule de ce type est de ~25 m2 (en technologie CMOS 0,6 m). Ce genre
de cellule peut tre reprogramm jusqu 1 million de fois.
III.2.3 : Cellules SRAM (RAM Statique) :
Dans cette technologie, la programmation est ralise partir de cellules RAM, ce qui signifie
quelle est perdue chaque mise hors tension du composant programmable. Le schma de la
figure III.10 en prcise le dispositif lectrique.
Figure III.10
Dans ce schma, llment dinterconnexion est un MOS canal n. Il se comporte comme un
interrupteur ferm lorsquune tension proche de VDD est applique sur sa grille. A linverse, lorsque
la tension grille-source est de 0V, il se comporte comme un interrupteur ouvert. La programmation
de cet interrupteur est ralise grce un point mmoire SRAM compos de 5 transistors MOS.
Un couple dinverseurs CMOS ralise un bistable statique. Linterrupteur T2 permet la
programmation et la relecture de la configuration du point mmoire.
En mode programmation, la cellule est adresse par un niveau haut sur lentre de slection.
Si lentre Data est un niveau haut, T3 et T6 sont rendus passants tandis que T4 et T5 sont
bloqus. Le retour de la tension Select un niveau bas fige la configuration du point mmoire et
la grille G de T1 est un niveau bas (interrupteur ouvert). Inversement, lorsque lentre Data est
Composants programmables
page 22
un niveau bas pendant la programmation (cellule slectionne entre Select un niveau haut),
les transistors T4 et T5 sont rendus passant tandis que T3 et T6 sont bloqus. La grille de T1 est
alors un niveau haut et linterrupteur est ferm.
Les intrts de cette technique sont nombreux :
Technologie CMOS classique (que des transistors MOS) dont on bnficie des progrs
en terme dintgration (surface de 50 m2 par cellule) et de rapidit.
Soit une pile sur la carte de manire maintenir lalimentation du circuit SRAM pendant
larrt du systme.
Soit une reprogrammation chaque mise sous tension partir dune mmoire ou dun
microcontrolleur prsent sur la plaque.
composants
intgrant
une
technologie
de
programmation
EEPROM
sont
reprogrammables sur le PCB (sans recours au passage par un appareil programmateur). Ce sont
les composants ISP (In Situ Reprogrammation). Les donnes de configuration proviennent
directement dun PC sous forme srie (voir figure III.11).
La tension de 12V ncessaire la programmation, si
une telle tension nest pas prsente sur le circuit
imprim, doit tre cre partir dun convertisseur DCDC (5V 12V). Les avantages sont nombreux : pas de
ncessit dun programmateur onreux, pas de support
pour les circuits (meilleure connexion et possibilit de
reprogrammation des circuits sans support),
Figure III.11
Composants programmables
page 23
De plus, si plusieurs de ces composants sont prsents simultanment sur un mme PCB, ils
peuvent tre chans et programms en une seule fois grce un mme bus de programmation
(voir figure III.12 : dessin Cypress).
Figure III.12
III.4 : Comparaison et choix des diffrentes technologies :
Diffrents critres peuvent guider le choix dune technologie de programmation. Le tableau
suivant prsente les diffrentes technologies suivant divers critres :
Type
EEPROM
Antifusible
SRAM
Rapidit
Densit
--
Facilit
Reprogrammabilit
--
++
La rapidit de programmation des cellules SRAM est telle quun circuit peut tre programm en
un temps de lordre de la milliseconde et cette programmation peut tre faite en fonctionnement.
Ceci autorise la reprogrammation faire partie intgrante des fonctionnalits du montage
lectronique intgrant de tels circuits.
La densit (inverse de la place occupe par la cellule de programmation) dintgration donne
lavantage aux circuits antifusible. Il ont lunique dsavantage de ntre programmables quune
seule fois.
III.5: Fusible de scurit :
Lorsque lon place un circuit programmable sur un programmateur, il est possible, videmment,
de la programmer mais aussi den relire le contenu. Les fabricants ont donc prvu un fusible de
Composants programmables
page 24
scurit qui, une fois dtruit, rend impossible la relecture de la configuration de programmation.
Ceci dans le but vident dviter le recopiage illicite du travail dun programmeur. Ce fusible de
scurit peut tre prsent aussi bien sur les PALs bipolaires que sur les circuits CMOS
reprogrammables et effaables !! Dans ce dernier cas, le fusible de scurit est effaable
lectriquement mais uniquement en compagnie de la totalit de la configuration.
III.6: Les outils de dveloppement :
De nombreux logiciels et programmes existent pour fournir le fichier JEDEC ncessaire la
programmation. Citons PALASM (MMI), Orcad-PLD (Orcad), Warp (Cypress), Xilinx Foundation
(Xilinx), ... Tous ces logiciels permettent la programmation de circuit PLDs partir de certaines
interfaces: soit schmatique, soit VHDL (langage de description hardware), soit graphe dtat, soit
quations logiques, soit une combinaison de ces diffrentes interfaces (voir laboratoire de VHDL et
laboratoire de CCAO).
III.7: Du code VHDL la programmation :
Ce paragraphe decrit brivement les diffrentes oprations ncessaires la cration du fichier
JEDEC partir de la description hardware (VHDL) dun design.
III.7.1 : La synthse :
Cest la rduction de la description du design un niveau plus bas. Cest un processus qui
accepte en entre une description dun design et qui restitue, en sortie, des quations logiques ou
une netlist (lensemble des quations logiques devant tre intgre dans un PLD / CPLD tandis
quune netlist devra tre route et place dans un FPGA). Cette synthse doit tenir compte du
circuit cible spcifi car la forme des quations logiques de sortie du synthtiseur peut tre
diffrente suivant la technologie et les ressources disponibles sur celui-ci.
Avant cette synthse une vrification de la syntaxe et de la smantique du code VHDL devra
tre ralise (parser). La sortie du synthtiseur fournit ce que lon appelle une description RTL
(Register Transfer Level). Cette description spcifie les registres, les signaux dentre, de sortie et
la logique combinatoire qui rgit lensemble.
Composants programmables
page 25
III.7.2 : Loptimisation :
Cest lopration qui va rellement optimiser la forme des quations logiques pour le circuit
cible spcifi. En gnral, la synthse et loptimisation sont intimement lies. Par exemple,
limplmentation dune somme de produits sera plus efficiente pour une PAL tandis quun nombre
minimum de produits de sommes sera plus efficace pour une autre technologie de circuit.
Loptimisation a donc pour but de rduire au maximum le nombre d quations logiques et
dutiliser la forme la plus adquate de manire minimiser les ressources internes du circuit cible.
III.7.3 : Le fitting (intgration) :
Le fitting est lopration qui peut tre effectue sur le rsultat de la synthse et de loptimisation
pour placer (intgrer) la reprsentation RTL optimise dans le circuit, cest--dire que cest le fitter
qui va allouer les ressources internes du circuit cible au design (fitting uniquement pour les PLDs
et CPLDs).
III.7.4 : Placement et routage :
Le placement et routage est utilis pour les architectures de type FPGA. En effet, dans ce type
de circuit, on retrouve un grand nombre de blocs logiques, tous identiques, qui peuvent tre
programms et qui devront tre interconnects. Le placement est lopration par laquelle on
dcide de lattribution des diffrents blocs logiques et le routage spcifie linterconnexion de ceuxci.
La procdure de placement et de routage a un impact important sur les performances du circuit
final programm. En effet, les temps de propagation dpendent significativement de la
configuration interne du circuit (distances parcourir). Des outils logiciels permettent de visualiser
la structure des FPGAs programms et den effectuer (ou modifier) le placement et le routage de
manire manuelle (rserv aux spcialistes).
Dans le programme WARP (Cypress), par exemple, le fichier de rapport de compilation
(nom_design.rpt )donne des indications trs prcises sur ce qui sest pass pendant ce
processus. Voir labo (quations logiques, attribution des broches, utilisation des ressources, ).
La figure III.13 dcrit les phases successives du dveloppement dune application sur circuits
programmables :
Composants programmables
page 26
librairie de
composants
Librairie de
composants
Entre VHDL
(syntaxique)
Entre
schmatique
Librairie de
modles
Simulation
fonctionnelle
Synthse gnrique
Fichier Netlist
Outils gnriques
Contraintes
(circuit cible)
Optimisation
Contraintes
(user-directives)
FPGA
Optimisation
PLD, CPLD
Placement
Fitting
Routage
Analyse temporelle
Fichier netlist
Outils spcifiques
Fichier JEDEC
Programmation ISP
Figure III.13
Composants programmables
page 27
QP24*
Number of Pins*
QF5828*
Number of Fuses*
F0*
G0*
count(3):14 *
NOTE PINS count(1):15 count(0):22 count(2):23 *
NOTE PINS *
NOTE NODES *
L00000
00000000000000000000000000000000000000000000
* Node clk[1] => BANK : 1 *
L00044
11111111111111111111111111111111111111111111
11011110101111111111111111111111111011111111
11101101101111111111111111111111111111111111
11101111101111111111111111111111110111111111
11111111011101111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node count(2)[23] => OE : 1 ,LOGIC : 8 *
L00440
11111111111111111111111111111111111111111111
11111111011111111111011111111111111111111111
11111101101111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node count(0)[22] => OE : 1 ,LOGIC : 10 *
Composants programmables
page 28
L00924
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[21] => OE : 1 ,LOGIC : 12 *
L01496
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[20] => OE : 1 ,LOGIC : 14 *
L02156
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[19] => OE : 1 ,LOGIC : 16 *
Composants programmables
page 29
L02904
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[18] => OE : 1 ,LOGIC : 16 *
L03652
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[17] => OE : 1 ,LOGIC : 14 *
L04312
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Not Used #[16] => OE : 1 ,LOGIC : 12 *
Composants programmables
page 30
L04884
11111111111111111111111111111111111111111111
11111101101111111111111111111111111011111111
11111110101111111111111111111111110111111111
11111111011111110111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node count(1)[15] => OE : 1 ,LOGIC : 10 *
L05368
11111111111111111111111111111111111111111111
11101110101111111111111111111111111011011111
11111101101111111111111111111111111111101111
11111111101111111111111111111111110111101111
11011111101111111111111111111111111111101111
11110111011111111111111111111111111111111111
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
00000000000000000000000000000000000000000000
* Node count(3)[14] => OE : 1 ,LOGIC : 8 *
L05764
00000000000000000000000000000000000000000000
* Node data(3)[2] => BANK : 1 *
L05808
10* Note: 23 *
L05810
10* Note: 22 *
L05812
00* Note: 21 *
L05814
00* Note: 20 *
L05816
00* Note: 19 *
L05818
00* Note: 18 *
L05820
00* Note: 17 *
L05822
00* Note: 16 *
L05824
10* Note: 15 *
L05826
10* Note: 14 *
C5D62*
7BD0
Composants programmables
page 31
Composants programmables
page 32
setup time
------------------------- ts (min.)
hold time
------------------------- th (min.)
tpd : cest le dlai maximum entre le moment o les entres sont fournies au circuit et le moment
o la sortie combinatoire est valide.
ts : cest la dure minimale pendant laquelle une entre dun flip-flop doit rester stable avant que le
flanc actif du signal dhorloge ne soit applique au flip-flop.
th : cest la dure minimale pendant laquelle une entre dun flip-flop doit rester stable aprs que le
flanc actif du signal dhorloge ait t appliqu au flip-flop.
Rq. : ts et th sont des paramtres importants pour la stabilit des systmes. Une violation de ces
paramtres peut conduire des tats mtastables.
tco :
cest le dlai maximal entre le moment o le signal dhorloge est appliqu au flip-flop et le
moment o la sortie de ce registre est valide sur la broche de sortie du circuit.
sortie et le moment o la sortie est valide dans le cas o la sortie de ce registre doit repasser
par la matrice logique (avec sortie finale combinatoire).
tscs : cest le dlai minimum devant sparer deux signaux dhorloge pour les oprations de registre
registre avec feed-back interne.
Ces diffrentes notions sont reprises graphiquement la figure IV.I :
Rq. : cest la valeur du paramtre tscs qui conditionne gnralement la frquence maximale de
travail.
Composants programmables
page 33
Figure IV.1
Exemple : PALC22V10D-25
tpd :
min : 3ns
ts :
min : 15ns
th :
0ns
tco :
min : 2ns
tco2 :
max : 40ns
tscs :
max : 28ns
max : 25ns
max : 15ns
Composants programmables
page 34
V. LES CPLDS :
V.1 : Architecture et ressources dinterconnexion :
Les CPLDs sont des PLDs complexes (Complex Programmable Logic Devices). Par ce
concept, on peut arriver un plus grand niveau dintgration. Plutt que dagrandir les PLDs
classiques en les dotant de plus de cellules de sortie, de lignes de produit et de macrocellules, les
CPLDs se prsentent comme un ensemble de fonctions de type PAL (style 22V10). Ces diffrents
blocs logiques communiquent entre-eux en utilisant des signaux internes pouvant tre routs
laide dune matrice programmable (voir figure V.I). La complexit, le nombre de macrocellules
dans un bloc ainsi que le nombre de blocs varient dun composant lautre.
Figure V.I
Grce ce concept, on utilise plus efficacement le volume de silicium, ce qui conduit de
meilleures performances et un cot rduit.
Figure V.II
Composants programmables
page 35
Figure V.III
Composants programmables
page 36
Figure V.IV
V.2 : Exemple : la structure des CY7C37xi (CPLDs Cypress) :
La famille CY7C37xi de chez Cypress est une famille de CPLDs ISR dont les membres sont
repris dans le tableau de la figure V.V :
Figure V.V
Pour chaque densit, il existe 2 options : une qui privilgie le nombre dI/Os et une autre qui
privilgie le nombre de registres . La matrice dinterconnexion est de type rseau
(interconnexion totale). Le dlai de propagation dans la matrice dinterconnexion est transparent
lutilisateur.
Composants programmables
page 37
Larchitecture schmatique du plus imposant composant de cette famille est donne la figure
V.VI :
Figure V.VI
Chaque bloc logique reoit 36 entres (et leur complment) de la PIM (Programmable
Interconnect Matrix). Cela autorise des oprations 32 bits en une seule passe dans le bloc logique.
Il nexiste pas de dlai supplmentaire (par rapport aux spcifications) pour le passage des
signaux par la PIM. On dit que ce composant prdictible (en terme de dlai). Le schma interne
dun bloc logique est donn la figure V.VII (CY7C375).
Figure V.VII
Composants programmables
page 38
Il existe 2 types de blocs logiques dans la famille FLASH370 : ceux qui ont un mme nombre
de macrocells et dI/Os cells (applications gourmandes en entres / sorties) et ceux qui ont plus de
macrocells que dI/Os cells (applications gourmandes en registres registres enterrs).
Chaque bloc logique est capable de gnrer 86 produits des 72 entres. Dans ces 86 produits,
80 sont utiliss par les macrocells, 4 pour commander les sorties tri-state et 2 pour les set et reset
asynchrones. Le bloc de distribution des termes produit aiguille ces produits vers les macrocells
(maximum 16 par macrocell) pour en raliser la somme (quation logique sous forme somme de
produits ). Les structures dune macrocell et dune I/O cell sont reprsentes sur la figure V.III :
Figure V.III
Larchitecture utilise pour chaque couple macrocell I/O cell reprend toutes les possibilits de
configurations dj vues dans les PAL versatiles (+ configuration D/T/L du registre). De plus ces
composants admettent plusieurs broches clock . Les diffrentes macrocells peuvent donc
travailler des frquences diffrentes (choix par multiplexeur ).
Ces composants peuvent se programmer avec la suite Warp de chez Cypress.
Dautres familles de CPLDs sont disponibles chez Cypress. Citons la famille Delta39K
(maximum : 350K portes logiques, 5376 macrocells, 520 I/Os et 233 MHz 0,18m), la famille
Quantum38K (maximum : 100K portes logiques, 1536 macrocells, 302 I/Os et 125 MHz
0,18m) et la famille Ultra37000 (maximum : 512 macrocells, 264 I/Os et 200 MHz). Chaque
famille a ses particularits parmi lesquelles on peut citer :
Composants programmables
page 39
La technologie AnyVolt : VCC accept : 3.3V, 2.5V, 1.8V (tension de travail interne=1.8V
grce un rgulateur incorpor).
Norme des I/Os programmable (3.3V, 2.5V, 1.8V, 1.5V) en LVCMOS, LVTTL, 3.3V PCI,
SSTL2, SSTL3, HSTL et GTL+.
Slew rate programmable.
Bus hold programmable.
ISR.
Interface JTAG.
....
Dautres constructeurs fournissent aussi des CPLDs (voir internet et bibliographie).
Composants programmables
page 40
Figure VI.I
Cest donc bien le nombre de connexions (de 50 800 par connexion) et non la longueur du
trac entre 2 blocs logiques qui dgrade les dlais de propagation. Ainsi, plusieurs sortes de
rseaux existent au milieu du circuit (ex. : des rseaux spcifiques globaux, composs uniquement
de segments mtalliques longs sont ddis aux horloges de manire limiter les dlais et
permettre la ralisation de systmes synchrones).
Figure VI.II
Composants programmables
page 41
La figure VI.II montre linterconnexion de 2 fois 2 blocs logiques : la liaison A B utilise une
multitude de segments courts, les points dinterconnexion sont nombreux et le dlai important. La
liaison C D utilise des segments longs avec seulement 2 points dinterconnexion. Le dlai est
alors optimis. Contrairement aux CPLDs, les FPGA sont dits imprdictibles en terme de dlai.
En effet, les chemins utiliss peuvent tre trs diffrents pour une mme fonction, et ce sera donc
le rle de loutil de placement et de routage de minimiser ces dlais.
VI.2 : FPGA de type SRAM :
Dans les FPGA type dinterconnexion SRAM, la structure dun bloc est complexe. Les
fonctions logiques sont ralise partir de LUT (Look Up Table) : ce sont des blocs de mmoire
SRAM 16x1 dans lesquels on peut stocker une table de transposition (figure VI.III). La capacit
dun bloc logique est donc conditionne par le nombre dentres et non par la complexit.
Figure VI.III
Dautre part, chaque bloc logique de ce type peut aussi tre configur comme une RAM double
ports. Le caractre volatil de la configuration oblige la reconfiguration chaque mise sous
tension du circuit (PROM, processeur, ou maintien par pile). Mais cet inconvnient apparent
autorise aussi la reconfiguration en mode opration (suivant le mode de fonctionnement du
systme, un mme FPGA peut faire plusieurs choses diffrentes suivant sa reconfiguration au vol).
Composants programmables
page 42
Figure VI.IV
VI.4 : Comparaison des 2 types de FPGA :
SRAM
Antifuse
Composants programmables
page 43
VI.5 : Exemple : la structure des FPGAs XC4000 (FPGAs de type SRAM Xilinx):
Le bloc logique lmentaire des FPGAs de cette srie se nomme CLB (Configurable Logic
Bloc). Il est dcrit la figure VI.V. Les diffrents CLBs ralisent lessentiel des fonctions logiques
du composant : 2 gnrateurs de fonction 4 variables (G et F) sont prsents lentre de ces
blocs logiques. Un troisime gnrateur de fonction (H) permet, si ncessaire, de raliser une
combinaison des sorties des 2 premiers gnrateurs et dune autre variable logique (H1).
Figure VI.V
Chaque CLB contient deux bascules dont les entres sont les sorties des gnrateurs de
fonctions ou DIN (configurables en bascules D ou en latch). Il peut coder diffrentes fonctions :
2 fonctions de 4 variables (F1..4 et G1..4) plus une fonction de 3 variables (H0..2).
1 fonction de 5 variables (plusieurs possibilits).
1 fonction de 4 variables (G1..4) et une fonction de 6 variables (F1..4, H0 et H1).
Certaines fonctions de 9 variables (G1..4, F1..4 et H1).
Les gnrateurs sont raliss base de LUT SRAM (table de vrit de la fonction code) et
donc, la vitesse de propagation ne dpend nullement de la fonction code. Des modes opratoires
spcifiques permettent dutiliser les LUT en mmoires accessibles en lecture et en criture avec
Composants programmables
page 44
dclenchement sur niveau ou sur front. Chaque CLB peut tre transform en rseau RAM 16x2,
32x1 ou 16x1. La figure VI.VI illustre la topologie dun CLB en RAM simple port.
Figure VI.VI
Dans ce mode, les variables G1..4 (F1..4) dfinissent les adresses de lecture ou dcriture de la
LUT du haut (du bas). Chaque partie du CLB est dfinie comme une RAM 16x1.
Les blocs dE/S sont dnomms IOB (I/O Bloc). Ils sont videmment programmables tout
comme les E/S des PAL versatiles. Les niveaux de sortie peuvent tre rendus compatibles TTL ou
CMOS. Ils sont illustrs la figure VI.VII pour les composants de la srie XC4000E.
Figure VI.VII
Composants programmables
page 45
On y retrouve 2 bascules D (une en entre et une en sortie) dont les signaux dhorloge peuvent
tre diffrents (flanc montant ou flanc descendant). La validation du signal dhorloge, quant elle,
est commune aux 2 bascules. Chaque sortie peut tre programme individuellement pour tre soit
combinatoire (active haut ou bas), soit registre. Le signal T est la commande du buffer tri-state
de sortie. Lentre possde un dlai optionnel permettant de compenser les dlais de distribution
ventuels du signal dhorloge en interne. Les deux derniers blocs sont : la programmation possible
et individuelle du slew-rate de chaque sortie (faible ou lev) et des rsistances de tirage haut ou
bas.
Du point de vue des ressources dinterconnexion propres chaque CLB, on retrouve des
segments mtalliques de diffrentes longueurs : notamment, les lignes simples correspondent
des longueurs de segment de la largeur de 1 CLB tandis que les lignes doubles correspondent
des longueurs de 2 CLB (figure VI.VIII).
Figure VI.VIII
Les
segments
peuvent
tre
connects
entre-eux
par
lintermdiaire
de
Figure VI.IX
Composants programmables
page 46
matrices
Citons encore des familles plus volues de chez Xilinx : les familles Spartan et Virtex (voir
internet et bibliographie).
Composants programmables
page 47
Bibliographie :
-
Composants programmables
page 48
ANNEXES:
Data
sheets
CYPRESS.
Xilinx
FPGAs:
technical
overview
for
Xilinx
product
family