Vous êtes sur la page 1sur 52

Institut Suprieur Industriel de Mons

Haute Ecole de la Communaut franaise en Hainaut


Unit Electronique

Composants programmables
Cours de 3 Bachelier en Electronique applique

D. DECKERS
2008-2009

2me partie :

Composants programmables
PLDs, CPLDs et FPGAs

TABLE DES MATIERES


Chapitre I : Introduction

Chapitre II : Architecture des circuits logiques programmables

II.1 Les PALs


II.1.1 :

5
Gnralits et conventions

II.1.2 : Structure des entres / sorties

II.1.3 :

Dnomination des PALs

II.1.4 :

Exemples de PALs combinatoires et registres

10

II.1.5 :

Les PALs asynchrones registres

13

II.1.6 :

Les PALs versatiles

14

Chapitre III : Technologie dinterconnexion (de programmation)


III.1 :

Circuits programmables une seule fois (OTP)

17
17

III.1.1 :

Cellules fusibles

17

III.1.2 :

Cellules antifusibles

18

III.2 :

Circuits programmables et reprogrammables

18

III.2.1 :

Cellules UVPROM

19

III.2.2 :

Cellules Flash EEPROM

20

III.2.3 :

Cellules SRAM

23

III.3 :

Circuits EEPROM programmables In Situ

24

III.4 :

Comparaison et choix des diffrentes technologies

25

III.5 :

Fusible de scurit

25

III.6 :

Les outils de dveloppement

26

III.7 :

Du code VHDL la programmation

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 :

Fichier JEDEC (.jed)

28

Chapitre IV : Paramtres temporels

33

Chapitre V : Les CPLDs

35

V.1 :

Architecture et ressources dinterconnexion

35

V.2 :

Exemple : la structure des CY7C37xi (CPLDs Cypress)

37

Chapitre VI : Les FPGAs

40

VI.1 :

Architecture

40

VI.2 :

FPGA de type SRAM

42

VI.3 :

FPGA de type antifuse

43

VI.4 :

Comparaison des 2 types de FPGA

43

VI.5 :

Exemple : la structure des FPGAs XC4000

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

(10 portes logiques, 50 transistors)

1997 : technologie CMOS 0.25 m (250.000 portes logiques, 25.000.000 transistors)


2001 : technologie CMOS 0.15 m (2.000.000 portes logiques)
Les circuits logiques programmables repris dans les catalogues des constructeurs ne sont plus
alors dfinis en termes de fonctionnalits mais bien en termes de possibilits.
On peut dfinir un circuit programmable par :

sa structure de base : rseau programmable, cellule de base, matrice,

les outils logiciels permettant sa personnalisation.

sa densit dintgration : nombre de portes, de cellules lmentaires,

sa technologie de programmation

Composants programmables
page 1

On peut distinguer deux familles dASICs :

les circuits spcifiques :


ce sont des produits non prfabriqus chez le fondeur. Ce sont des composants
coteux que seules la trs haute densit (millions de portes) et un trs grand
volume de production peuvent justifier.
. rseaux pr-diffuss Gate Arrays : pas programmable par
l'utilisateur mais le dernier masque chez le fondeur est sur mesure.
. circuits pr-caractriss Cell-Based ASIC : le fondeur propose
une bibliothque d'lments que l'on peut assembler pour former un circuit
spcifique. Tous les masques sont alors sur mesure.
. circuits Full Custom ASIC : les dopages des diffrentes zones, la
largeur des caissons, la gomtrie des transistors, Tout est dcid par le
concepteur. Le fondeur n'est plus alors qu'un excuteur.

les circuits semi-spcifiques : rseaux programmables par l'utilisateur:


ce sont des produits dj fabriqus chez le fondeur qui ncessitent une
personnalisation (interconnexions) pour raliser la fonction dsire. Ces circuits
peuvent tre obtenus faibles cots.

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

(Programmable Logic Devices), CPLDs (Complex Programmable Logic Devices) et


FPGAs (Field Programmable Gate Array).
-

Etude du langage de description hardware VHDL.

Laboratoires comprenant la conception de petites applications et la ralisation pratique


avec test du circuit programm.

Composants programmables
page 2

II. ARCHITECTURE DES CIRCUITS LOGIQUES PROGRAMMABLES :


La classificaton des diffrentes familles de PLDs (Programmable Logic Devices) est reprise
dans lorganigramme de la figure II.1 :

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

entres non dsires sur lentre dune porte ET.


Chaque porte ET tant elle-mme connecte en
Figure II.2

sortie sur lentre dune porte OU. Cette structure

permet donc de produire une quation logique de type SOMME DE PRODUITS.


Pour plus de lisibilit, on adoptera la notation o les diffrentes lignes dentre de la porte ET
se rduisent une seule ligne sur laquelle chaque fusible intact est reprsent par une croix. Le
nombre de lignes dentre de la porte ET est donc gal au nombre de croix sur le schma.

Le

schma

transforme

vu
donc,

prcdemment
en

vertu

se
des

conventions, en celui de la figure II.3.

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

Exemple : reprsentation dun ou exclusif ()

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

II.1.2 : Structures des entres / sorties :


Toutes les PALs possdent un certain nombre dentres qui se retrouvent sous formes
directe et inverse sur la matrice ET de programmation. Les sorties, par contre, peuvent
appartenir plusieurs types.
La figure II.7 reprsente la forme la plus simple dun bloc lmentaire dune PAL (PAL
combinatoire) :

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
-

la sortie de la porte OU aboutit sur une bascule D (edge trigered).

la sortie /Q de cette bascule peut tre rinjecte via un inverseur / non-inverseur


comme dans une PAL combinatoire. La sortie Q est amene, via un buffer tri-state sur
une broche de sortie de la PAL.
Composants programmables
page 7

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
|

|------- type de botier (ex. : P : Plastic DIP)

|------------- vitesse exprime par Tpd en nS

|------------------ consommation

|----------------------- nombre de sorties

|----------------------------- type de sortie : L

H combinatoire active haut

R registre

RA registre asynchrone

X registre ou-excl.

V versatile

|----------------------------------- nombre dentre et de sortie (I, I/O ou O rinjectes)

combinatoire active bas

|------------------------------------------ technologie de programmation :


-- PAL fusible
C CMOS OTP
CE CMOS reprogrammable
Ex. :

PAL 16R8H15PC

Composants programmables
page 8

II.1.4 : Exemples de PALs combinatoires et registres :


Les figures II.10, II.11 et II.12 donnent respectivement les schmas internes de PAL 16L8,
16R8 et 16R4. Il en existe de nombreuses rfrences dont le nombre dentres, le nombre de
sorties et la structure de ces sorties varient (jusqu 22 I ou I/O).

Figure II.10

Composants programmables
page 9

Figure II.11

Composants programmables
page 10

Figure II.12

Composants programmables
page 11

II.1.5 : Les PALs asynchrones registres :


Les PALs asynchrones registres (notation RA pour la dnomination) constituent une
volution par rapport aux PALs combinatoires et registres vues jusqu prsent. Lvolution se
situe au niveau de la structure plus complexe des sorties : des possibilits supplmentaires sont
donc offertes (voir figure II.13) :

Figure II.13

le registre dispose de 2 lignes de prpositionnement AP (Asynchronous Preset) et AR


(Asynchronous Reset). Ces 2 lignes proviennent du rseau programmable de la PAL :
cest un produit.

si AP et AR sont un niveau 1 logique, le flip-flop est invalid et la structure de sortie


devient combinatoire simple (grce au multiplexeur).

la clock provient aussi de la zone programmable (travail asynchrone).

la sortie tri-state peut tre commande par 2 signaux diffrents : un signal


programmable par la matrice ET et un signal OE (Output Enable), commun toutes
les sorties et provenant dune broche du circuit intgr.

le feed-back P dans le registre est utilis pour les machines dtat.

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

de la sortie combinatoire. Les deux signaux de commande S0 et S1 de ces multiplexeurs sont


gnrs par des fusibles internes. Remarquez que le signal dhorloge est commun tous les
registres (synchrone). Seul le reset peut tre asynchrone.

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

III. TECHNOLOGIES DINTERCONNEXION (DE PROGRAMMATION) :


Ce chapitre passe en revue les diffrentes mthodes de programmation utilises dans les
circuits logiques programmables. Ce terme dinterconnexion dsigne des cellules qui permettent,
suivant la technologie utilise, une connexion temporaire ou dfinitive entre deux rseaux. Un
circuit logique programmable est donc un circuit contenant un ensemble de portes logiques
lmentaires (ou de blocs logiques) dont le cblage, linterconnexion, est laiss aux soins de
lutilisateur final en vue de crer la fonction dsire. Si la technologie utilise est de celles qui
permettent une connexion temporaire, la correction ou lvolution des fonctions implmentes se
fait par simple programmation (ou reprogrammation), sans modification de la carte lectronique.
III.1 : Circuits programmables une seule fois (OTP : One Time Programming) :
Ce sont des rseaux utilisant des cellules fusible ou antifusible pour leur interconnexion.
III.1.1 : Cellules fusible :
Cest la plus ancienne des technologies. Le circuit non programm contient, par dfaut, toutes
les connexions possibles. Ces connexions sont ralises par des fusibles (figure III.1).

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.

III.2 : Circuits programmables et reprogrammables:


Ce sont des circuits utilisant des cellules transistors MOS.
Les qualits dj vues de faible consommation, de grande intgration et lvolution en rapidit
des circuits CMOS (Complementary Metal Oxyde Semiconductor) justifient leur suprmatie sur les
circuits bipolaires. Dautre part, les meilleures technologies dinterconnexion seront celles qui
modifieront le moins possible le process de fabrication CMOS. Celles qui seront prsentes ici
auront toutes la caractristique dtre reprogrammables et dutiliser cette technologie.

Composants programmables
page 17

III.2.1 : Cellules UVPROM (programmables lectriquement et effaables par ultraviolet) :


La figure III.4 montre la cration dun ET cbl partir de cellules EPROM.

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

(De Morgan) et donc :

/(/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

En fonctionnement normal, un FLOTOX se comporte comme un MOS dpltion, cest--dire


quil est normalement passant (pour une tension VGS de 0 V). Toutes les grilles des FLOTOX de
programmation lors du fonctionnement seront donc mises un potentiel tel quil soit totalement
passant si sa grille flottante nest pas charge et bloqu si elle est charge (voir figure III.9).

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.

Consommation nulle en mode utilisation.

Chargement partiel ou total de configuration EN FONCTIONNEMENT (rapidit de


programmation dune cellule de lordre dune dizaine de nS) !!

Linconvnient de ce type de circuit est le fait que la mmorisation de la configuration est


perdue chaque arrt de lalimentation. Il faut donc :

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.

III.3 : Circuits EEPROM programmables in situ (ISP : In Situ Programming) :


Certains

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

Programmation par programmateur

Figure III.13

Composants programmables
page 27

III.7.5 : Fichier JEDEC (.jed) :


Le fichier ci-dessous reprsente le contenu dun fichier JEDEC pour limplmentation dun
compteur 4 bits sur une PALC22V10D-25PC (pal CMOS 22V10 boitier PDIP tpd de 25 ns) :

Cypress C22V10 Jedec Fuse File: cnt4.jed


This file was created on 02/03/2003 at 09:51:04
by PLA2JED.EXE 31/03/2000 [v4.02 ] 6.2 IR 27
 C22V10*

QP24*

Number of Pins*

QF5828*

Number of Fuses*

F0*

Note: Default fuse setting 0*

G0*

Note: Security bit Unprogrammed*

NOTE DEVICE C22V10*


NOTE PACKAGE palc22v10d-25pc*
NOTE PROPERTY BUS_HOLD ENABLE*
NOTE PINS

clk:1 data(3):2 load:3 data(2):4 data(1):5 data(0):6

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*

Note: Fuse Checksum*

 7BD0

Composants programmables
page 31

Les informations contenues dans len-tte du fichier sont :


informations sur la compilation (software revision, date de compilation, nom du fichier)
type de circuit cible, type de botier, nombre de broches et nombre de fusibles
association signaux du code <> broches du circuit-cible
Les informations suivantes sont relatives la programmation proprement dite : adresses
fusibles et donnes de programmation (1=programm, 0=non programm). Chaque champ L du
fichier JEDEC correspond une rgion du circuit-cible. Se rfrer au schma interne de la
PALC22V10 : cette PAL comporte 22 entres (ou I/Os) dont on gnre le complment 44 lignes
verticales. Chaque ligne du fichier correspond donc une ligne de produit de la PAL.
Chaque champ L correspond en fait une sortie particulire. La PAL 22V10 comprend 10 sorties
10 champs L diffrents. Chaque sortie correspond une somme de n produits (n dpend de la
sortie en question). Dans notre cas, nous avons : 1 somme de 8, une de 10, une de 12, une de 14,
deux de 16, une de 14, une de 12, une de 10 et une de 8 produits (dans lordre). A chaque sortie
correspond en outre, une ligne produit programmable grant la sortie tri-state. Cela donne donc :
44 lignes verticales x ((2x(8+1)+2*(10+1)+2*(12+1)+2*(14+1)+2*(16+1)) = 5720 fusibles.
Il faut ajouter cette somme 2 x 44 fusibles correspondant aux deux lignes de produits grant
le reset (AR) et preset (SP) pour les registres de sortie ainsi que les deux bits des cellules de
sortie grant la configuration de celle-ci (S0 et S1).
Nbre fusibles = 5720 + 88 + (2x10) = 5828 fusibles. (cfr. QF5828 du fichier)
Les quations gnres avec Warp pour le compteur taient les suivantes :
count(0).D = data(0) * load + /count(0).Q * /load
count(0).AR = GND
count(0).SP = GND
count(0).C = clk
count(1).D = /count(0).Q * count(1).Q * /load + count(0).Q * /count(1).Q * /load + data(1) * load
count(1).AR = GND
count(1).SP = GND
count(1).C = clk
count(2).D = count(0).Q * count(1).Q * /count(2).Q * /load + /count(0).Q * count(2).Q * /load + /count(1).Q * count(2).Q * /load + data(2) * load
count(2).AR = GND
count(2).SP = GND
count(2).C = clk
count(3).D = count(0).Q * count(1).Q * count(2).Q * /count(3).Q * /load + /count(0).Q * count(3).Q * /load + /count(1).Q * count(3).Q * /load +
/count(2).Q * count(3).Q * /load + data(3) * load
count(3).AR = GND
count(3).SP = GND
count(3).C = clk

Composants programmables
page 32

IV. PARAMETRES TEMPORELS :


Les paramtres de base que lon retrouve dans les data-sheets des circuits logiques
programmables sont :
propagation delay

------------------------- tpd (max.)

setup time

------------------------- ts (min.)

hold time

------------------------- th (min.)

clock to output delay

------------------------- tco (max.)

clock to output delay (through logic array)

------------------------- tco2 (max.)

system clock to system clock delay

------------------------- tscs (max.)

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.

tco2 : cest le dlai maximal entre le moment o

le signal dhorloge est appliqu un registre de

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

Le rseau dinterconnexions programmables (PI : Programmable Interconnect) route les


signaux des sorties des blocs logiques aux entres des mmes ou des autres blocs logiques
(figure V.II). Deux implmentations sont rencontres pour le PI : linterconnexion base sur un
rseau (figure V.III) ou linterconnexion base sur des multiplexeurs (figure V.IV). Dans la
configuration base sur le rseau, toutes les sorties des blocs logiques peuvent tre lentre dun
quelconque des blocs logiques. Chaque ligne verticale reprsente alors une entre. Malgr le fait
que les blocs logiques soient totalement interconnects, cette structure nest pas optimale car la
puissance, les performances et le silicium utilis ne sont pas optimum. La structure base sur les
multiplexeurs assure de meilleures performances avec une routabilit moindre.

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).

VI. LES FPGAs :


VI.1 : Architecture:
Dans la hirarchie des chapitres prcdents, lordre utilis tait celui de la densit dintgration
croissante . Les Field Programmable Gate Array constituent en ce sens les composants
programmables par lutilisateur contenant le plus grand nombre de portes logiques. On peut
classer les FPGAs en 2 catgories suivant la technologie dinterconnexion utilise : les FPGAs de
type SRAM (exemple : la plupart des composants de chez Xilinx) et les FPGAs de type antifuse
(exemple : la plupart des composants de chez Actel). Nous verrons dans ce chapitre que la
technologie dinterconnexion utilise conditionne le type darchitecture des FPGAs.
Par rapport aux CPLDs, les FPGAs utilisent des modules logiques plus rduits mais beaucoup
plus nombreux parsemant le centre du circuit . Des blocs logiques spcifiques dentre/sortie sont
aligns sur le primtre du circuit et la matrice dinterconnexion peut tre vue comme une
multitude de segments mtalliques courant horizontalement et verticalement entre ces blocs
logiques et ces blocs dentre/sortie. Cette matrice permet donc de relier, par programmation, soit
2 segments entre-eux, soit 2 blocs logiques, soit un bloc logique et un bloc dentre/sortie, ( voir
figure VI.I : architecture gnrale dun FPGA de type XC4000 Xilinx).
Dans cette architecture, il existe plusieurs chemins pour relier 2 blocs logiques entre-eux
(figure VI.II). Chaque interconnexion ralise cre, sur la route du signal une rsistance srie
supplmentaire non ngligeable qui, associe aux capacits diverses (systme de connexion,
ligne, connexion aux modules) engendre un dlai limitant la vitesse de fonctionnement.

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

VI.3 : FPGA de type antifuse :


Les blocs logiques dun FPGA de type antifuse sont moins complexes que pour les SRAM. On
en trouvera donc plus sur une mme surface de silicium. Cela est d au fait que le mode
dinterconnexion est programmable une seule fois (les fonctions sont figes). Pour une fonction
logique donne, le nombre de blocs logiques dun FPGA de type antifuse ncessaire est plus
grand que pour un FPGA de type SRAM. On aura donc plus de connexions que pour la mme
fonction en SRAM. Mais la technologie de connexion base dantifusibles prend moins de place et
chaque connexion nengendre quune rsistance de lordre de la cinquantaine dOhms (contre
800 pour les SRAMs). La structure dun FPGA de type antifuse est donc intimement lie sa
technologie dinterconnexon. Plus de blocs logiques moins complexes. Les fonctions logiques
sont ici ralises base de multiplexeurs (figure VI.IV).

Figure VI.IV
VI.4 : Comparaison des 2 types de FPGA :

SRAM

Antifuse

Taille physique du systme dinterconnexion

Taille physique du bloc logique

Quantit de blocs logiques

Capacit fonctionnelle du bloc logique

Quantit de canaux de routage

Efficacit de la technologie (vitesse)

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

dinterconnexion programmables (PSM : Programmable Switch Matrix) (voir figure VI.IX).

Figure VI.IX

Composants programmables
page 46

matrices

Les diffrentes offres pour cette famille sont les suivantes :

Citons encore des familles plus volues de chez Xilinx : les familles Spartan et Virtex (voir
internet et bibliographie).

Composants programmables
page 47

Bibliographie :
-

TAVERNIER Christian, Circuits logiques programmables par lutilisateur , Edition


Radio, Dunod, 1992.

LETOCHA Remy, Circuits numriques , Mac Graw-Hill, 1988.

PIGUET C., STAUFFER A., Synthse de circuits ASIC , Dunod, 1990.

Techniques de lingnieur, ASIC, circuits intgrs pour applications spcifiques .

DUTRIEUX L., DEMIGNY D., Logique programmable : architecture des FPGA et


CPLD. Mthodes de conception : le langage VHDL , Eyrolles, 1997.

SKAHILL Kevin, VHDL for programmable logic , Cypress Semiconductor

Data sheets sur www.actel.com

Data sheets sur www.altera.com

Data sheets sur www.cypress.com

Data sheets sur www.lattice.com

Data sheets sur www.xilinx.com

Composants programmables
page 48

ANNEXES:

PALCE22V10 Data sheets CYPRESS.


CPLD Family: Flash370Tm

Data

sheets

CYPRESS.
Xilinx

FPGAs:

technical

overview

for

the first time user


Application note Xilinx.
Choosing

Xilinx

Application note Xilinx.

product

family