You are on page 1of 26

CACHAN

Dpartement dlectronique

Circuits logiques programmables

Copyright (c) 2007, J. Weber.


Le contenu de ce document peut tre redistribu sous les conditions nonces dans la Licence pour Documents Libres
version 1.1 ou ultrieure.
2

Les circuits logiques programmables

Les circuits logiques programmables........................................................................2


1. Les grandes familles .....................................................................................3
2. Quest-ce quun circuit programmable ? ......................................................4
2.1 Des oprateurs gnriques ....................................................................5
2.2 Des technologies .................................................................................10
2.3 Des architectures.................................................................................14
2.4 Des techniques de programmation......................................................17
3. PLDs, CPLDs, FPGAs : Quel circuit choisir ? ...........................................19
3.1 Critres de performances ....................................................................19
3.2 Le rle du fitter .............................................................................24

Index .......................................................................................................................26
Les circuits programmables 3

Lhistoire des circuits programmables commence, peu de chose prs, avec la dcennie quatre-
vingt. A la fin des annes soixante-dix le monde des circuits numriques se rpartit
schmatiquement en quatre grands groupes :
Les fonctions standard sont utilises pour les applications ralises en logique cble. Les
catalogues TTL et CMOS prsentent plusieurs centaines de fonctions dusage gnral, sous
forme de circuits intgrs grande chelle.
Les microprocesseurs, dsormais dusage courant, et sont omniprsents dans les applications
industrielles.
Dans des applications trop complexes pour tre raisonnablement traites en logique cble
traditionnelle, et trop rapides pour avoir une solution base de microprocesseurs, on utilise
des squenceurs micro programms.
Quand les volumes de production importants le justifient, les circuits intgrs spcifiques
(ASICS) offrent une alternative aux cartes cbles classiques.
Le dveloppement des microprocesseurs stimule une volution rapide des technologies de
ralisation des mmoires semi-conducteurs ; les circuits logiques programmables ont hrit
directement des mmoires pour ce qui concerne les aspects technologiques. Leurs architectures
internes sont, en revanche, trs diffrentes. Il nest donc pas surprenant que le premier fabriquant de
circuits programmables ait t un fabriquant de mmoires (MMI, monolithic memories inc.).
Notons, pour la petite histoire, que cette socit a fusionn1 avec lun des leaders des
fabriquants de processeurs rapides, processeurs micro programms, processeurs spcialiss dans le
traitement de signal, processeurs RISCs, AMD (advanced micro devices).
Ce chapitre est consacre un tour dhorizon gnral au cours duquel nous tenterons de donner
au lecteur une vision densemble de ce que sont les membres de la famille (nombreuse) des circuits
programmables.
Les aspects structurels internes ne seront abords que dans la mesure o ils clairent la
comprhension du fonctionnement. Lutilisateur dun circuit a principalement besoin de bien
dominer son architecture, les technologies de fabrication appartiennent au domaine du fondeur.

1. Les grandes familles


Indpendamment de sa structure interne et des dtails de la technologie concerne, une
mmoire est caractrise par son mode de programmation et sa facult de retenir linformation
quand lalimentation est interrompue. Les catgories de mmoires qui ont donn naissance aux
circuits programmables sont :
Les mmoires de type PROM (programmable memory) sont programmables une seule fois au
moyen dun appareil spcial, le programmateur2. Les donnes qui y sont inscrites ne sont pas
modifiables. Elles conservent les informations quand lalimentation est interrompue.
Leur inconvnient majeur est limpossibilit de modifier les informations quelles
contiennent.
Les mmoires de type EPROM (erasable programmable memory) sont programmables par
lutilisateur au moyen dun programmateur, effaables par une exposition aux rayons
ultraviolets et reprogrammables aprs avoir t effaces. Elles aussi conservent les
informations quand lalimentation est interrompue.

1
Fusion entre un gant et un nain.
2
Quelle que soit la technologie, la programmation dun circuit consiste lui faire subir des niveaux de tension et de
courant qui sortent du cadre de son utilisation normale. Typiquement, les tensions mises en jeu vont de 10 (CMOS)
20 volts (bipolaires), les courants correspondants de quelques dizaines quelques centaines de milliampres, pour des
circuits aliments sous 5 volts en fonctionnement ordinaire.
4

Leur botier doit tre quip dune fentre transparente, ce qui en augmente le cot. La
modification de leur contenu est une opration longue qui ncessite des manipulations :
plusieurs minutes pour leffacement des donnes anciennes, sur un premier appareil, et
transfert de nouvelles informations sur un second appareil.
Les mmoires de type EEPROM (electricaly erasable programmable memory), ou FLASH,
sont effaables et reprogrammables lectriquement. Non alimentes, elles conservent les
informations mmorises.
La diminution des tensions appliquer pour programmer les mmoires FLASH permet mme
de saffranchir du programmateur : il est intgr dans le circuit. On parle alors de mmoires
programmables in situ (ISP, pour in situ programming), cest dire sans dmonter la mmoire
de la carte sur laquelle elle est implante.
Mme programmable in situ, une mmoire FLASH fonctionne dans un mode tout fait
diffrent du mode utilisation quand elle est en cours de programmation. Les technologies
FLASH sont de loin les plus sduisantes pour les circuits programmables pas trop complexes.
Les mmoires RAM (random access memory) statiques3, ou SRAM, sont constitues de
cellules accessibles, en mode normal, en lecture et en criture. Elles sont utilises dans
certains circuits programmables complexes pour conserver la configuration (qui dfinit la
fonction ralise) du circuit.
Ces mmoires perdent leur information quand lalimentation est supprime. Les circuits qui
les utilisent doivent donc suivre un cycle dinitialisation chaque mise sous tension. Ces
circuits peuvent tre reconfigurs dynamiquement, changeant ainsi de fonction la demande,
en cours dutilisation.
Comme tout domaine spcialis, le monde des circuits programmables comporte une
terminologie, dorigine anglo-saxonne le plus souvent, difficile viter. Pour compliquer les
choses, de nombreux termes sont lorigine des noms propres, proprits des socits qui sont la
source des produits concerns. Qui se souvient encore que frigidaire est un nom dpos par la
socit General Motors ?
Les sigles utiliss dans la suite semblent communment admis par la majorit des fabricants :
PLD (programmable logic device) est un terme gnrique qui recouvre lensemble des
circuits logiques programmables. Il est le plus souvent employ pour dsigner les plus
simples dentre eux (quivalent de quelques centaines de portes logiques).
CPLD (complex programmable logic device) dsigne videmment un circuit relativement
complexe (jusqu une ou deux dizaines de milliers de portes), mais dont larchitecture drive
directement de celle des PLDs simples.
FPGA (field programmable gate array) marque un saut dans larchitecture et la technologie,
il dsigne un circuit qui peut tre trs complexe (jusqu cent mille portes quivalentes) ; la
complexit des FPGAs rejoint celle des ASICs (application specific integrated circuits).
Notons que la complexit dun circuit nest pas mesurable simplement : il ne suffit pas quun
circuit contienne un grand nombre de portes pour tre puissant ; encore faut-il que ces portes soient
utilisables dans une grande proportion. Ce dernier point est la fois un problme darchitecture et
de logiciels daide la conception.

2. Quest-ce quun circuit programmable ?


Un circuit programmable est un assemblage doprateurs logiques combinatoires et de bascules
dans lequel la fonction ralise nest pas fixe lors de la fabrication. Il contient potentiellement la
3
Ladjectif statique soppose dynamique. Les mmoires dynamiques stockent les informations dans des capacits -
intrinsquement lies aux structures MOS - qui ncessitent un processus dynamique de rafrachissement. Les cellules
des mmoires statiques sont des bistables, qui conservent leur tat tant que lalimentation est prsente.
Les circuits programmables 5

possibilit de raliser toute une classe de fonctions, plus ou moins large suivant son architecture. La
programmation du circuit consiste dfinir une fonction parmi toutes celles qui sont
potentiellement ralisables.
Comme dans toute ralisation en logique cble, une fonction logique est dfinie par les
interconnexions entre des oprateurs combinatoires et des bascules (synchrones, cela va presque
sans dire), et par les quations des oprateurs combinatoires. Ce qui est programmable dans un
circuit concerne donc les interconnexions et les oprateurs combinatoires. Les bascules sont le plus
souvent de simples bascules D, ou des bascules configurables en bascules D ou T.
La ralisation doprateurs combinatoires utilise des oprateurs gnriques, cest eux que
nous allons nous intresser dans la suite.

2.1 Des oprateurs gnriques


Les oprateurs combinatoires gnriques qui interviennent dans les circuits programmables
proviennent soit des mmoires (rseaux logiques) soit des fonctions standard (multiplexeurs et ou
exclusif).

Rseaux logiques programmables


Un rseau logique programmable (PLA, pour programmable logic array4) utilise le fait que
toute fonction logique combinatoire peut se mettre sous forme dune somme (OU logique) de
produits (ET logique), cest ce que lon appelle classiquement la premire forme normale, ou forme
disjonctive.

e1 e2

'1'

connexion
modifiable

Figure1 : Un PLA simple

Le schma de la figure III-1 reprsente une structure de PLA simple. La programmation du


circuit consiste supprimer certaines des connexions marques dune croix. Si une connexion est
supprime, une valeur constante 1 est applique lentre correspondante de la porte ET, cest ce
que symbolise le rseau de rsistances reli cette valeur constante.

4
Que lon ne confondra pas avec PAL (programmable array logic), qui dsigne les PLDs historiques de MMI...Ni avec
GAL (gate array logic) nom dpos par la socit Lattice, etc.
6

Un tel schma permet de raliser nimporte quelle fonction boolenne s(e1,e2), de deux
variables binaires e1 et e25, pourvu quelle ne dpasse pas deux termes.
En effet, si toutes les connexions sont prsentes, en notant par + et les oprateurs OU et ET,
respectivement, s scrit :
s(e1,e2) = e1 e1 e2 e2 + e1 e1 e2 e2
qui vaut trivialement 0.
Un oprateur ou exclusif, par exemple, obit lquation :
e1 e2 = e1 e2 + e1 e2
do la programmation du PLA de la figure III-2.

e1 e2

'1'

e1 e2

connexion
supprime

Figure 2 : PLA ralisant un ou exclusif

Le plus simple des PLDs, un 16L8 par exemple, utilise des oprateurs ET 32 entres et des
oprateurs OU 8 entres. Un schma tel que celui des figures prcdentes deviendrait, dans de
telles conditions, illisible. Pour viter cet cueil, les notices de circuits utilisent des symboles
simplifis, pour reprsenter les rseaux logiques programmables.
La figure III-3 reprsente le PLA prcdent avec ces symboles.

connexions programmables
e1
s
e2
connexions permanentes

Figure 3 : symbole d'un PLA 246

5
Dans tout cet ouvrage, sauf prcision contraire, nous utiliserons les valeurs 0 et 1 pour reprsenter les tats possibles
dune variable binaire. Les oprateurs ET et OU sont dfinis avec la convention 0FAUX et 1VRAI. Les circuits
associent bien sr les valeurs logiques des niveaux lectriques ; sauf prcision contraire, nous prendrons une
convention logique positive qui associe 1 un niveau haut (H pour high) et 0 un niveau bas (L pour low).
6
Le nombre 24 indique la dimension de la matrice de fusibles : deux lignes et quatre colonnes.
Les circuits programmables 7

Dans un tel schma, toutes les entres (et leurs complments) peuvent tre connectes tous les
oprateurs ET par programmation. Par rfrence la premire technologie utilise, ces connexions
programmables portent le nom de fusibles, mme quand leur ralisation nen comporte aucun.
Quand il sagit uniquement dillustrer la structure dun circuit programmable, et non la ralisation
dune fonction particulire, les croix qui symbolisent les fusibles ne sont mme pas reprsentes.
Dans cette vocation simplifie, le schma de loprateur ou exclusif devient celui de la figure
III-4, dans laquelle une croix reprsente une connexion programmable maintenue, labsence de
croix une connexion supprime.

connexions maintenues
e1
e1 e2
e2
connexions permanentes

Figure 4 : PLA 24 ralisant un ou exclusif

Multiplexeurs
Un multiplexeur est un aiguillage dinformations. Dans sa forme la plus simple, il comporte
deux entres de donnes, une sortie et une entre de slection, conformment au symbole de la
figure III-5.

in1 1
s
in0 0

sel

Figure 5 : un multiplexeur lmentaire

Le fonctionnement de cet oprateur se dcrit trs simplement sous une forme algorithmique :
si sel = 0 s in0 ;
si non (sel = 1) s in1 ;
Certains constructeurs notent sur le symbole, comme nous lavons fait, la valeur de lentre de
slection en regard de lentre correspondante.
La premire utilisation des multiplexeurs dans les circuits programmables est, videmment, de
crer des chemins de donnes. La programmation consiste alors fixer des valeurs aux entres de
slection.
Une autre utilisation de la mme fonction consiste remarquer quun multiplexeur est, en soi,
un oprateur gnrique. Reprenant lexemple prcdent du ou exclusif, on peut le dcrire sous
forme algorithmique :
8

si e1= 0 e1 e2 e2 ;
si non (e1 = 1) e1 e2 e2 ;
Do une ralisation possible de loprateur ou exclusif au moyen dun multiplexeur dans le
schma de la figure III-6.

1
e2 e1 e2
0

e1

Figure 6 : ou exclusif ralis par un multiplexeur

Lexemple prcdent peut tre gnralis sans peine : un multiplexeur n entres de slection,
soit 2n entres de donnes, permet de raliser nimporte quelle fonction combinatoire de n + 1
entres, pourvu que lune, au moins, de ces entres existe sous forme directe et sous forme
complmente.
Dans un circuit programmable dont les briques de base sont des multiplexeurs (cest le cas
de beaucoup de FPGAs) la programmation consiste fixer des chemins de donnes, cest dire
tablir des interconnexions entre des cellules de calcul et des signaux dentre et de sortie. Cette
opration de cration dinterconnexions entre des cellules gnriques sappelle le routage dun
circuit ; laffectation des cellules des fonctions souhaites par lutilisateur sappelle le placement.

Ou exclusif
Loprateur lmentaire ou exclusif, ou somme modulo 2, dont nous avons rappel lexpression
algbrique prcdemment, est disponible en tant que tel dans certains circuits.
Cet oprateur intervient naturellement dans de nombreuses fonctions combinatoires relies de
prs ou de loin larithmtique : additions et soustractions, contrles derreurs, cryptages en tout
genre, etc. Or ces fonctions se prtent mal une reprsentation en somme de produits, car elles ne
conduisent aucune minimisation de leurs quations7. Un simple gnrateur de parit sur 8 bits, qui
rajoute un bit de parit un octet de donnes, ne ncessite pas moins de 128 (28-1) produits, quand il
est mis plat , pour tre ralis au moyen dune couche de ETs et dune couche de OUs. De
nombreuses familles de circuits programmables disposent, en plus des PLAs, doprateurs ou
exclusifs pour faciliter la ralisation de ces fonctions arithmtiques.
Une autre application de loprateur ou exclusif est la programmation de la polarit dune
expression. Quand on calcule une fonction combinatoire quelconque sous forme disjonctive, il peut
arriver quil soit plus conomique, en nombre de produits ncessaires, de calculer le complment de
la fonction et de complmenter le rsultat obtenu.
Par exemple, si (cba)2 reprsente lcriture en base 2 dun nombre N, compris entre 0 et 7, on
peut exprimer par une quation logique que N est premier avec 3 :
prem3 = c b + b a + c a + c b a

7
Au moyen de tableaux de Karnaugh, ou, de faon plus raliste, par des programmes de minimisation qui utilisent des
algorithmes comme celui de Queene et Mc Cluskey ou ESPRESSO.
Les circuits programmables 9

On peut galement remarquer que si N est premier avec 3 cest quil nest pas multiple de 3,
soit :
prem3 = mul3 = c b a + c b a + c b a
La deuxime forme, apparemment plus complexe, ncessite un produit de moins que la
premire pour sa ralisation. Dans des circuits o le nombre de produits disponibles est limit, cela
peut prsenter un avantage.
Un oprateur ou exclusif permet de passer, par programmation, dune expression son
complment, comme lindique la figure III-7. Comme cet oprateur peut tre ralis avec un
multiplexeur, lune ou lautre de ces formes peut se trouver dans les notices !

sortie polarit programmable


'1'
fonction

fusible '0'

Figure 7 : polarit programme par un ou exclusif

Bascules
Qui dit logique dit logique squentielle. Les circuits programmables actuels offrent tous la
possibilit de crer des fonctions squentielles, synchrones dans leur immense majorit. La brique
de base de toute fonction squentielle est la bascule, cellule mmoire lmentaire susceptible de
changer dtat quand survient un front actif de son signal dhorloge.
Bascule D, T ou J-K ? La premire est toujours prsente. Comme certaines fonctions se
ralisent plus simplement avec la seconde, les compteurs par exemple, de nombreux circuits
permettent, toujours par programmation, de choisir entre bascule D et bascule T8, voire entre lun
des trois types de base. La figure III-8 rappelle, par un diagramme de transitions, le fonctionnement
de ces trois types de bascules.

8
Cest un (bon) exercice de logique squentielle lmentaire que de trouver le schma de nimporte quel type de
bascule en utilisant nimporte quel autre type.
10

Ck Q Ck Q Ck Q

D T J
K

D=1 T=1 J=1


Q=0 Q=1 Q=0 Q=1 Q=0 Q =1
D=0 D=0 D=1 T=0 T=1 T=0 J=0 K=1 K=0

Figure 8 : les trois types fondamentaux de bascules

Le programmeur na, en ralit, que rarement se proccuper de ce genre de choix, les


optimiseurs dterminent automatiquement le type de bascule le mieux adapt lapplication.

2.2 Des technologies


Premier critre de choix dun circuit programmable, la technologie utilise pour matrialiser les
interconnexions dtermine les aspects lectriques de la programmation : maintien (ou non) de la
fonction programme en labsence dalimentation, possibilit (ou non) de modifier la fonction
programme, ncessit (ou non) dutiliser un appareil spcial (un programmateur, bien sr).

Fusibles
Premire mthode employe, la connexion par fusibles, est en voie de disparition. On ne la
rencontre plus que dans quelques circuits de faible densit, de conception ancienne.

+5

fusible

e1

e2

Figure 9 : Pld lmentaire fusibles

La figure III-9 en illustre le principe ; toutes les connexions sont tablies la fabrication. Lors
de la programmation le circuit est plac dans un mode particulier par le programmateur9, mode dans
lequel des impulsions de courant sont aiguilles successivement vers les fusibles dtruire.

9
Ce mode est activ par une tension suprieure la normale, applique sur une broche particulire du circuit. Dans ce
mode, les autres broches servent fournir au circuit le numro du fusible dtruire et appliquer une impulsion qui
Les circuits programmables 11

Pour programmer un circuit, il faut transfrer dans le programmateur une table qui indique par
un chiffre binaire ltat de chaque fusible : la table des fusibles. Cette table est gnralement
transfre entre le systme de CAO et le programmateur sous forme dun fichier au format
normalis : le format JEDEC.
Lexemple ci-dessous est un extrait du fichier JEDEC, gnr par un compilateur VHDL, qui
implmente un compteur binaire 10 bits dans un circuit de type 22V10 :
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 PAL22V10G-5PC*
NOTE PINS hor:1 oe:2 en:3 raz:4 compte_6:14 compte_8:15 compte_9:16
compte_3:17 *
NOTE PINS compte_1:18 compte_0:19 compte_2:20 compte_4:21 compte_7:22 *
NOTE PINS compte_5:23 *
NOTE NODES *
L00000
00000000000000000000000000000000000000000000
* Node hor[1] => BANK : 1 *

L00044
11110111111111111111111111111111111111111111
11011111011010101110111011101111111111111111
11101111110110111111111111111111111111111111
11101111111110111111111111011111111111111111
11101111111110011111111111111111111111111111
11101111111110111111110111111111111111111111
11101111111110111101111111111111111111111111
11101111101110111111111111111111111111111111
00000000000000000000000000000000000000000000
* Node compte_5[23] => OE : 1 ,LOGIC : 8 *

L00440
11110111111111111111111111111111111111111111
...
C72EB* Note: Fuse Checksum*
9604

Pour chacun des 5828 fusibles de ce circuit, un '0' indique un fusible intact, un '1' un fusible
programm.
Lexamen du dbut de la table prcdente met en vidence un dfaut majeur de cette
technologie : la programmation dtruit plus de fusibles quelle nen conserve, et de loin. Cela se
traduit par une mauvaise utilisation du silicium, un temps de programmation important (quelques
secondes) et des contraintes thermiques svres imposes au circuit lors de lopration. Cette
technologie nest donc pas gnralisable des circuits dpassant quelques centaines de portes
quivalentes.

provoque une surintensit dans ce fusible. Les caractristiques dtailles des signaux appliquer lors de la
programmation sont consignes, pour chaque circuit et pour chaque fabricant, dans une base de donnes dalgorithmes
du programmateur.
12

Le lecteur averti aura peut-tre remarqu, la lecture de len-tte du fichier JEDEC, quen
ralit le circuit prcdent ne contient aucun fusible. Il sagit en vrit dun circuit CMOS grille
flottante, mais lancienne terminologie est reste.

MOS grille flottante


Les transistors MOS sont des interrupteurs10, commands par une charge lectrique stocke sur
leur lectrode de grille. Si, en fonctionnement normal, cette grille est isole, elle conserve sa charge
ventuelle ternellement11. Il reste au fondeur trouver un moyen de modifier cette charge, pour
programmer ltat du transistor. Le dpt dune charge lectrique sur la grille isole dun transistor
fait appel un phnomne connu sous le nom deffet tunnel : un isolant trs mince (une
cinquantaine dangstrms, 1 = 10-10 m) soumis une diffrence de potentiel suffisamment grande
(une dizaine de volts, suprieure aux 3,3 ou 5 volts des alimentations classiques) est parcouru par
un courant de faible valeur, qui permet de dposer une charge lectrique sur une lectrode
normalement isole. Ce phnomne, rversible, permet de programmer et deffacer une mmoire.
La figure III-10 montre la structure du PLD lmentaire prcdent, dans lequel les fusibles sont
remplacs par des transistors grille isole (technologie FLASH).

+5

EEMOS effa programm


Id
e1

1 6 Vgs
e2

Figure 10 : Pld simple MOS

Les transistors disposent de deux grilles, dont lune est isole. Une charge ngative (des
lectrons) dpose sur cette dernire, modifie la tension de seuil du transistor command par la
grille non isole. Quand cette tension de seuil dpasse la tension dalimentation, le transistor est
toujours bloqu (interrupteur ouvert). Une variante (plus ancienne) de cette structure consiste
mettre deux transistor en srie, lun grille isole, lautre normal. Le transistor grille isole est
programm pour tre toujours conducteur ou toujours bloqu ; on retrouve exactement la fonction
du fusible, la rversibilit en plus.
Le contrle des dimensions gomtriques des transistors permet actuellement dobtenir des
circuits fiables, programmables sous une dizaine de volts, reprogrammables volont (plusieurs
centaines de fois), le tout lectriquement.
Les puissances mises en jeu lors de la programmation sont suffisamment faibles pour que les
surtensions ncessaires puissent tre gnres par les circuits eux-mmes. Vu par lutilisateur, le
circuit devient alors programmable in situ, cest dire sans appareillage accessoire. Dans ces

10
Quand on les utilise en tout ou rien, le rgime source de courant contrle relve du monde des fonctions analogiques.
11
Lternit en question est garantie durer plus de 20 ans.
Les circuits programmables 13

circuits, un automate auxiliaire gre les algorithmes de programmation et le dialogue avec le


systme de dveloppement, via une liaison srie.

Mmoires statiques
Dans les circuits prcdents, la programmation de ltat des interrupteurs, conserve en
labsence de tension dalimentation, fait appel un mode de fonctionnement lectrique particulier.
Dans les technologies mmoire statique, ltat de chaque interrupteur est command par une
cellule mmoire classique quatre transistors (plus un transistor de programmation), dont le schma
de principe est celui de la figure III-11.

tat mmoris
slection commande de
programmation :
l'interrupteur
valeur

deux transistors

Figure 11 : Cellule SRAM

La modification de la configuration dun circuit devient alors une opration logique quasi
ordinaire, qui ne ncessite pas dopration lectrique spciale. Ces circuits permettent des
reconfigurations, partielles ou totales, en nombre illimit. Il est mme envisageable de crer des
fonctions dont certains paramtres sont modifiables en cours de fonctionnement, des filtres
adaptatifs par exemple.
Le prix payer pour cette souplesse est que les cellules SRAM doivent tre recharges
chaque mise sous tension et que chaque interrupteur occupe plusieurs transistors : linterrupteur lui-
mme et les transistors de la cellule mmoire.

Antifusibles
Linverse dun fusible est un anti-fusible. Le principe est, lchelle microscopique, celui de la
soudure lectrique par points. Un point dinterconnexion est ralis au croisement de deux pistes
conductrices (mtal ou semi-conducteur selon les procds de fabrication), spares par un isolant
de faible paisseur. Une surtension applique entre les deux pistes provoque un perage dfinitif du
dilectrique, ce qui tablit la connexion.
Les points dinterconnexions ont un diamtre de lordre de la largeur dune piste, cest dire de
lordre du micron ; il est donc possible de prvoir un trs grand nombre dinterconnexions
programmables. La rsistance du contact cr est trs faible, de lordre dune cinquantaine dohms
(dix fois moins que celle dun transistor MOS), do des retards lis aux interconnexions trs
faibles galement.
Les circuits anti-fusibles partagent, avec ceux SRAM, le sommet de la gamme des circuits
programmables en vitesse et en densit dintgration.
Il est clair que ces circuits ne sont programmables quune fois.
14

2.3 Des architectures


Les diffrences de technologies se doublent de diffrences darchitectures. Nous tenterons ici de
mettre en lumire des grands points de repre, sachant que toute classification a un ct un peu
rducteur. La plupart des circuits complexes panachent les architectures.

Somme de produits
Toute fonction logique combinatoire peut tre crite comme somme de produits, nous avons
voqu ce point propos des PLAs. La partie combinatoire dun circuit programmable peut donc
tre construite en suivant cette dmarche : chaque sortie est une fonction de toutes les entres. Si la
sortie se rapporte un oprateur squentiel, les quations programmables calculent la valeur de la
commande dune bascule en fonction des entres et des tats de toutes les bascules du circuit : nous
retrouvons larchitecture matrielle dune machine dtats gnrique. Les PLDs de premire
gnration suivaient ce principe.
La capacit de calcul de cette architecture est limite par le nombre maximum de produits
runis dans la somme logique, et, dans une moindre mesure, par le nombre de facteurs de chaque
produit. Les valeurs typiques sont respectivement de 16 et 44 pour un 22V10.
Trs efficace pour la ralisation doprateurs relativement simples, cette architecture nest pas
directement gnralisable des circuits complexes : pour augmenter la capacit potentielle de
calcul du circuit, il faut augmenter les dimensions des produits et des sommes logiques. Or mme
dans une fonction complexe, de nombreux sous-ensembles sont simples ; ces sous-ensembles
monopoliseront inutilement une grande partie des potentialits du circuit12.

Cellules universelles interconnectes


Lautre approche, radicalement oppose, est de renoncer la rduction en premire forme
normale des quations logiques. On divise le circuit en blocs logiques indpendants, interconnects
par des chemins de routage. Une fonction logique est rcursivement dcompose en oprations plus
simples, jusqu ce que les oprations lmentaires rentrent dans une cellule. La figure III-12 en
fournit un exemple.

12
Larchitecture du 22V10 contourne cette difficult en utilisant des sommes de dimensions diffrentes (de 8 16).
Mais cette solution impose des contraintes sur laffectation des broches aux sorties dune fonction : les broches
centrales sont plus puissantes que les broches situes aux extrmits dun boitier DIL. Cela peut, par exemple,
interdire la modification dune fonction en conservant le cblage extrieur.
Les circuits programmables 15

cellules
logiques
interconnexions
programmables

Figure 12 : Cellules logiques interconnectes

Les diffrences darchitectures entre les circuits concernent le compromis fait entre capacit de
calcul de chaque cellule et possibilits dinterconnexions :
Cellules de grande taille, la limite lquivalent dun PLD classique, et interconnexions
limites. Cest schmatiquement le choix fait pour les circuits CPLDs, en technologie
FLASH.
A lautre extrme, cellules trs petites (une bascule et un multiplexeur de commande), avec
des ressources de routage importantes. Cest typiquement le choix fait dans les FPGAs anti-
fusibles, dont la figure III-12 est un exemple.
La solution intermdiaire est, sans doute, la plus rpandue : les cellules comportent une ou
deux bascules et des blocs de calcul combinatoires qui traitent de 6 10 entres. Ces cellules
sont optimises pour accrotre lefficacit de traitement doprations courantes, comme le
comptage ou larithmtique. Les circuits FPGAs SRAM sont gnralement associs de
telles cellules de taille moyenne.

Cellules dentre-sortie
Dans les circuits programmables de premire gnration, les sorties taient associes de faon
rigide des noeuds internes du circuit : rsultat combinatoire, tat dune bascule.
Trs vite est apparu lintrt de crer des macrocellules dentre-sortie pourvues dune certaine
capacit de reconfiguration. La figure III-13 reprend le schma de principe des cellules dun PLD
22V10.
16

commande tri-state
0
1 entre sortie
quation issue
des PLAs D Q 2
3
horloge Ck Q

set reset
vers les 0
rtrocouplage interne
PLAs
1
entre externe

f1
f0

Figure 13 : Macrocellule configurable

Les deux fusibles f1 et f0 permettent de configurer la macrocellule en entre-sortie


combinatoire bidirectionnelle, complmente ou non13, ou en sortie registre trois tats. Chaque
sortie du circuit peut disposer de son propre mode, grce aux vingt fusibles de configuration.
Les volutions ultrieures rendent indpendantes les macrocellules et les broches du circuit,
autorisant ainsi la cration de bascules enterres (burried flip flops) et dentres-sorties
bidirectionnelles, quel que soit le mode, registre ou non, attach la sortie. Dans les architectures
cellules universelles interconnectes des FPGAs, les cellules dentre-sortie sont entirement
configurables et routables, au mme titre que les cellules de calcul. Elles disposent de leurs propres
bascules de synchronisation, en entre et en sortie, indpendantes de celles des blocs logiques qui
interviennent dans la fonction programme.

Placement et routage
Le placement consiste attacher des blocs de calcul aux oprateurs logiques dune fonction et
choisir les broches dentre-sorties. Le routage consiste crer les interconnexions ncessaires.
Pour les PLDs simples, le placement est relativement trivial et le routage inexistant. Les
compilateurs gnriques (i.e. indpendants du fondeur) effectuent trs bien ces deux oprations.
Ds les CPLDs, et plus encore pour les FPGAs, ces deux oprations deviennent plus complexes
et ncessitent un outil spcifique du fondeur, qui seul a les comptences ncessaires14. Le
compilateur VHDL sert, dans ces cas, de frontal homogne qui traduit, aprs une premire
optimisation, la description VHDL dans un langage structurel adapt au logiciel spcifique15. Nous
avons vu, propos de la rtroannotation, que les outils des fondeurs fournissent en retour un
modle, VHDL ou VERILOG, du circuit gnr qui prend en compte les temps de propagation
internes.

13
Complmenter une sortie permet, dans certains cas, de simplifier les quations logiques.
14
Pour la simple raison quil est seul connatre ses circuits dans leurs moindres dtails.
15
Une certaine portabilit demeure, mme ce niveau. Il existe des formats de fichiers communs plusieurs fondeurs :
les fichiers PLA ou, plus souvent, des fichiers dans un langage symbolique, EDIF pour electronic data interchange
format for net-lists. Il sagit dun langage de description structurelle, qui ressemble un peu LISP, compris par la
majorit des systmes de CAO.
Les circuits programmables 17

2.4 Des techniques de programmation


Le placeur-routeur transforme la description structurelle du circuit en une table des fusibles
consigne dans un fichier (JEDEC dans les cas simples, LOF, POF, etc. autrement). Pour la petite
histoire, signalons que cette table peut contenir plusieurs centaines de milliers de bits, un par
fusible .
Traditionnellement, la programmation du circuit, opration qui consiste traduire la table des
fusibles en une configuration matrielle, se faisait au moyen dun programmateur, appareil capable
de gnrer les squences et les surtensions ncessaires. La tendance actuelle est de supprimer cette
tape de manipulation intermdiaire, manipulation dautant plus malaise que laugmentation de la
complexit des botiers va de pair avec celle des circuits. Autant il tait simple de concevoir des
supports force dinsertion nulle pour des botiers DIL (dual in line) de 20 40 broches espaces
de 2,54 mm, autant il est difficile et coteux de raliser lquivalent pour des PGA (pin grid array)
et autres BGA (ball grid array), de 200 plus de 300 broches rparties sur toute la surface du
botier, sans parler des botiers miniaturiss, au pas de 0,65 mm, destins au montage en surface.
Une difficult du mme ordre se rencontre pour le test : il est devenu quasi impossible
daccder, par des moyens traditionnels tels que les pointes de contact dune planche clous ,
aux quipotentielles dune carte. De toute faon, les quipotentielles du circuit imprim ne
reprsentent plus quune faible proportion des noeuds du schma global : un circuit de 250 broches
peut contenir 2500 bascules.

Trois modes : fonctionnement normal, programmation et test


Fonctionnement normal, programmation et test : lide sest impose dincorporer ces trois
modes de fonctionnement dans les circuits eux-mmes, comme partie intgrante de leur
architecture. Pour le test de cartes, une norme existe : le standard IEEE 1149.1, plus connu sous le
nom de boundary scan du consortium JTAG (join test action group). Face la quasi impossibilit
de tester de lextrieur les cartes multicouches avec des composants monts en surface, un mode de
test a t dfini, pour les VLSI numriques. Ce mode de test fait appel une machine dtats,
intgre dans tous les circuits compatibles JTAG, qui utilise cinq broches ddies :
Tck, une entre dhorloge ddie au test, diffrente de lhorloge du reste du circuit.
Tms, une entre de mode qui pilote lautomate de test.
Tdi, une entre srie.
Tdo, une sortie srie.
Trst (optionnelle), une entre de rinitialisation asynchrone de lautomate.
18

circuit 1 circuit 2

logique logique
zone
fonction fonction
teste
normale normale

automate automate

Tdi Tck Tms Tdo Tdi Tck Tms Tdo

testeur

Figure 14 : Boudary scan

Lutilisation premire de ce sous-ensemble de test est la vrification des connexions dune


carte. Quand le mode de test est activ, via des commandes ad-hoc sur les entres Tms et Trst, le
fonctionnement normal du circuit est inhib. Les broches du circuit sont connectes des cellules
dentre-sortie ddies au test16, chaque cellule est capable de piloter une broche en sortie et de
capturer les donnes dentre, conformment au schma de principe de la figure III-14.
Toutes les cellules de test sont connectes en un registre dcalage, tant lintrieur dun
circuit quentre les circuits, constituant ainsi une chane de donnes, accessible en srie, qui
parcourt lensemble des broches de tous les circuits compatibles JTAG dune carte. Les oprations
de test sont programmes via des commandes passes aux automates et des donnes entres en
srie. Les rsultats des tests sont rcuprables par la dernire sortie srie.
Les automates de test permettent dautres vrifications que celles des connexions : il est
possible de les utiliser pour appliquer des vecteurs de test internes aux circuits, par exemple. Cest
souvent de cette faon que sont effectus certains des tests la fabrication. Lide tait sduisante
dutiliser la mme structure pour configurer les circuits programmables. Cest ce qui est en train de
se faire : la plupart des fabricants proposent, ou annoncent (en 1997), des solutions plus ou moins
drives de JTAG pour viter lutilisateur davoir recours un appareillage extrieur17.

Programmables in-situ
Les circuits programmables in situ se dveloppent dans le monde des PLDs et CPLDs en
technologie FLASH. Du simple 22V10, des composants de plus de 10000 portes quivalentes et
400 bascules (LATTICE, par exemple), il est possible de programmer (et de modifier) lensemble
dune carte, sans dmontage, partir dun port parallle de PC.
Les technologies FLASH conservent leur configuration en labsence dalimentation.

16
Typiquement, une broche dentre-sortie bidirectionnelle est pilote par 6 bascules : un couple en entre, un couple en
sortie et un couple en commande de trois tats. Les bascules par paires permettent de dcaler les donnes tout en
mmorisant la configuration prcdente de chaque broche.
17
Les pionniers en la matire furent les socits XILINX pour les technologies SRAM et LATTICE pour les
technologies FLASH.
Les circuits programmables 19

Reconfigurables dynamiquement
Les FPGAs cellules SRAM offrent des possibilits multiples de chargement de la mmoire de
configuration :
Chargement automatique, chaque mise sous tension, des donnes stockes dans une
mmoire PROM. Les donnes peuvent tre transmises en srie, en utilisant peu de broches du
circuit, ou en parallle octet par octet, ce qui acclre la phase de configuration mais utilise,
temporairement du moins, plus de broches du circuit. Plusieurs circuits dune mme carte
peuvent tre configurs en coopration, leurs automates de chargement assurent un passage en
mode normal coordonn, ce qui est videmment souhaitable.
Chargement, en srie ou en parallle, partir dun processeur matre. Ce type de structure
autorise la modification rapide des configurations en cours de fonctionnement. Cette
possibilit est intressante, par exemple, en traitement de signal.

3. PLDs, CPLDs, FPGAs : Quel circuit choisir ?


Dans le monde des circuits numriques les chiffres voluent trs vite, beaucoup plus vite que
les concepts. Cette impression de mouvement permanent est accentue par les effets dannonce des
fabricants et par lusage systmatique de la publicit comparative, trs en vogue dans ce domaine.
Il semble que doivent se maintenir trois grandes familles :
Les PLDs et CPLDs en technologie FLASH, utilisant une architecture somme de produits. La
tendance est la gnralisation de la programmation in-situ, rendant inutiles les
programmateurs sophistiqus. Rservs des fonctions simples ou moyennement complexes,
ces circuits sont rapides (jusqu environ 200 MHz) et leurs caractristiques temporelles sont
pratiquement indpendantes de la fonction ralise. Les valeurs de frquence maximum de
fonctionnement de la notice sont directement applicables.
Les FPGAs SRAM, utilisant une architecture cellulaire. Proposs pratiquement par tous les
fabricants, ils couvrent une gamme extrmement large de produits, tant en densits quen
vitesses. Reprogrammables indfiniment, ils sont devenus reconfigurables rapidement (200 ns
par cellule), en totalit ou partiellement.
Les FPGAs antifusibles, utilisant une architecture cellulaire granularit fine. Ces circuits
tendent remplacer une bonne partie des ASICs prdiffuss. Programmables une fois, ils
prsentent lavantage dune trs grande routabilit, do une bonne occupation de la surface
du circuit. Leur configuration est absolument immuable et disponible sans aucun dlai aprs
la mise sous tension ; cest un avantage parfois incontournable.

3.1 Critres de performances


Outre la technologie de programmation, capacit et vitesse sont les matres mots pour comparer
deux circuits. Mais quelle capacit, et quelle vitesse ?

Puissance de calcul
Les premiers chiffres accessibles concernent les nombres doprateurs utilisables.
20

Nombre de portes quivalentes


Le nombre de portes est sans doute largument le plus utilis dans les effets dannonce. En
1997 la barrire des 100000 portes est largement franchie. Plus dlicate est lestimation du nombre
de portes qui seront inutilises dans une application, donc le nombre rellement utile de portes.

Nombre de cellules
Le nombre de cellules est un chiffre plus facilement interprtable : le constructeur du circuit a
optimis son architecture, pour rendre chaque cellule capable de traiter peu prs tout calcul dont la
complexit est en relation avec le nombre de bascules quelle contient (une ou deux suivant les
architectures). Trois repres chiffrs : un 22V10 contient 10 bascules, la famille des CPLDs va de
32 bascules quelques centaines et celle des FPGAs stend dune centaine quelques milliers.
Dans les circuits architectures cellulaires, il est souvent trs rentable daugmenter le nombre
de bascules si cela permet dallger les blocs combinatoires (pipe line, codages one hot, etc.).

Nombre dentre-sorties
Le nombre de ports de communication entre lintrieur et lextrieur dun circuit peut varier
dans un rapport deux, pour la mme architecture interne, en fonction du botier choisi. Les chiffres
vont de quelques dizaines quelques centaines de broches dentre-sorties..

Capacit mmoire
Les FPGAs SRAM contiennent des mmoires pour stocker leur configuration. La plupart des
familles rcentes offrent lutilisateur la possibilit dutiliser certaines de ces mmoires en tant que
telles. Par exemple, la famille 4000 de XILINX permet dutiliser les mmoires de configuration
dune cellule pour stocker 32 bits de donnes ; la cellule correspondante nest videmment plus
disponible comme oprateur logique. Les capacits de mmorisation atteignent quelques dizaines
de kilobits.

Routabilit
Placement et routage sont intimement lis, et le souhait vident de lutilisateur est que ces
oprations soient aussi automatiques que possible. Le critre premier de routabilit est
lindpendance entre la fonction et le brochage. Certains circuits (mais pas tous) garantissent une
routabilit complte : toute fonction intgrable dans le circuit pourra tre modifie sans
modification du cblage externe.
Le routage influe sur les performances dynamiques de la fonction finale. La politique
gnralement adopte est de prvoir des interconnexions hirarchises : les cellules sont regroupes
en grappes (dune ou quelques dizaines) fortement interconnectes, des pistes de communication
reliant les grappes entre elles. Les interconnexions locales nont que peu dinfluence sur les temps
de calcul, contrairement aux interconnexions distantes dont leffet est notable.
A priori cest au placeur-routeur que revient la gestion de ces interconnexions ; condition que
le programmeur ne lui complique pas inutilement la tche. Un optimiseur a toujours du mal
dcouper des blocs de grandes tailles, il lui est beaucoup plus simple de placer des objets de petites
dimensions. En VHDL cela sappelle construction hirarchique ; un ensemble complexe doit tre
conu comme lassemblage dunits de conceptions aussi simples que possibles.

Vitesse de fonctionnement
Nous avons vu, propos de la rtroannotation, que les comportements dynamiques des FPGAs et
des PLDs simples prsentent des diffrences marquantes. Les premiers ont un comportement
Les circuits programmables 21

prvisible, indpendamment de la fonction programme ; les limites des seconds dpendent de la


fonction, du placement et du routage. Une difficult de jeunesse des FPGAs a t la non
reproductibilit des performances dynamiques en cas de modification, mme mineure, du contenu
dun circuit. Les logiciels doptimisation et les progrs des architectures internes ont pratiquement
supprim ce dfaut ; mais il reste que seule une analyse et une simulation post synthse, qui prend
en compte les paramtres dynamiques des cellules, permet rellement de prvoir les limites de
fonctionnement dun circuit.

Modle gnral de dtermination de fmax


Le modle gnral de dtermination de la frquence maximum dun oprateur squentiel prend
en compte les retards dans les circuits et les rgles concernant les instants de changement des
entres vis vis des fronts actifs de lhorloge. La figure III-15 dfinit les temps les plus importants :
tPi pour des temps de propagation et tSU pour le temps de prpositionnement dune bascule.

Horloge

Entres
synchrones
tPe tP2
p tP1
p sorties
Entres tSU
asynchrones tP1 tP3
n
Registre de
synchronisation
(p bascules D) n

Figure 15 : Modle de calcul de la frquence maximum

La frquence maximum de fonctionnement interne est donne par :


Fint = 1/(tP2 + tP1 + tSU)
Pour le calcul de la frquence maximum externe, il convient de rajouter, dans la formule
prcdente, le temps de propagation des cellules de sortie :
Fext = 1/( tP3 + tP2 + tP1 + tSU)
Dans un FPGA le routeur analyse le schma gnr et en dduit les diffrents temps de
propagation, partir dun modle des cellules lmentaires du circuit.
Dans le cas des PLDs simples et de beaucoup (pas tous) des CPLDs, les notices fournissent
directement les valeurs des frquences maximum et/ou des temps de retard et de prpositionnement
entre les signaux appliqus aux broches du circuit et les fronts de lhorloge.

Style de programmation et performances


Pour lauteur dun programme VHDL, quelques guides de programmation sont utiles :
Rflchir au codage des tats, dans la conception des machines dtats. Les sorties directes du
registre dtat sont prfrables ; les codes one hot sont trs efficaces dans les FPGAs. Nous
avons voqu ces points prcdemment.
22

Subdiviser les blocs de calcul combinatoires en tranches spares par des registres ; autrement
dit, penser aux architectures pipe line. Ces architectures gnrent un retard global de plusieurs
priodes dhorloge, mais permettent dobtenir des flots de donnes rapides18.
Savoir que les bibliothques des fondeurs sont riches en modules structurels optimiss en
fonction du circuit cible : les modules LPM (Library of Parameterized Modules).
Les synthtiseurs infrent automatiquement des modules LPM, partir de descriptions
comportementales de haut niveau, sous rserve que le programmeur respecte certaines rgles
dcriture ou indique explicitement quil souhaite utiliser les librairies correspondantes. La
notice de tous les compilateurs explique la dmarche suivre.

Consommation
Les premiers circuits programmables avaient plutt mauvaise rputation sur ce point. Tous les
circuits actuels ont fait dimportants progrs en direction de consommations plus faibles.

Le compromis vitesse consommation


Rgle gnrale des circuits numriques, encore plus vraie dans le monde des technologies MOS
que dans celui des technologies bipolaires : pour aller vite il faut de la puissance. Les notices
fournissent communment des courbes de consommation pour des lments classiques, comme un
compteur synchrone 16 bits, en fonction de la frquence dhorloge. Le passage 3,3 V des tensions
dalimentation permet une conomie non ngligeable de puissance, pour les mmes valeurs de
courant.
Les cellules de certains circuits sont programmables en deux modes : faible consommation ou
vitesse maximum (bit turbo). Le gain de vitesse se paye par une consommation nettement plus
leve (pratiquement un facteur 2 pour un EPM7032 cadenc 60Mhz, par exemple).
De faon gnrale, le courant moyen consomm par un circuit est de la forme :
ICC = ICC0 + knLF + nSCSVF/2
O ICC0 reprsente le courant statique consomm au repos, nL le nombre moyen de cellules
logiques qui commutent simultanment chaque front dhorloge, nS le nombre moyen de sorties
qui commutent chaque front dhorloge, CS la capacit de charge moyenne des sorties, V
lexcursion de la tension de sortie, F la frquence dhorloge et k un coefficient de consommation
par cellule par hertz.

Quelques chiffres
Un ordre de grandeur du paramtre k prcdent est, pour un FPGA de la famille FLEX 8000
dALTERA, de 150 A par MHz et par cellule.
Un circuit cadenc 50 MHz, dans lequel 100 cellules commutent, en moyenne, chaque front
dhorloge, consomme, sans charge extrieure, un courant moyen de lordre de 750 mA. Ce qui est
loin dtre ngligeable.
A titre de confrontation, la valeur prcdente doit tre compare la consommation de 50
compteurs binaires19. Un compteur binaire de la famille TTL-AS (il faut prendre des circuits de
vitesses comparables) consomme 35 mA. Les chiffres parlent deux-mmes.

18
Limage classique est le principe de la fabrication des voitures la chane : mme si une voiture sort toutes les dix
minutes, il faut plus de dix minutes pour fabriquer une voiture prise isolment. Le dbit est trs suprieur linverse du
temps de fabrication dune seule voiture.
19
Dans un compteur binaire deux cellules commutent, en moyenne, chaque priode dhorloge. Nous laissons au
lecteur le soin de le dmontrer.
Les circuits programmables 23

Toujours dans le mme ordre, un PLD 22V10 rapide, 10 cellules, consomme un courant de
lordre de 100 mA. Dans ce dernier cas, la fonction programme et la frquence dhorloge nont
quune incidence faible sur le courant consomm.

Lorganisation PREP
Nombre de portes, de cellules, de bascules, frquence maximum, dans quelle condition ? Avec
quel logiciel ? Les comparaisons ne sont pas simples.
Le consortium PREP (programmable electronics performance corporation) regroupait jusquen
1996 la plupart des fabricants de circuits programmables. Cet organisme a dfini un ensemble de
neuf applications, typiques de lusage courant des circuits programmables, qui servent de test la
fois pour les circuits et le systme de dveloppement associ. Les fruits de la confrontation ce
benchmark sont fournis pour la plupart des CPLDs et FPGAs. Ces rsultats contiennent des
informations de vitesse, frquences maximums interne et externe pour chaque test, et de capacit,
nombre moyen dexemplaire de chaque test que lon peut instancier dans un circuit.

Des applications types


Les 9 preuves de test sont :
Datapath : un chemin de donnes, sur un octet, franchit dans lordre un multiplexeur 4 vers 1,
un registre tampon et un registre dcalage arithmtique (avec extension de signe). Le
schma ne comporte pratiquement pas de calcul entre les bascules des registres ; les
frquences maximum obtenues sont peu de choses prs celles des circuits en boucle ouverte.
Le nombre de vecteurs dentre sollicite beaucoup les ressources de routage.
Counter timer : Un compteur 8 bits chargement parallle parcourt un cycle dfini par une
valeur de chargement et une valeur finale. Un comparateur provoque le rechargement du
compteur quand il a atteint la valeur finale. Le schma comporte, outre le compteur, deux
registres, un comparateur et un multiplexeur, le tout sur un octet. Le fonctionnement place le
comparateur dans la boucle de commande du compteur, limitant par l sa frquence maximum
de fonctionnement.
Small state machine : petite machine dtats, 8 tats, 8 entres, 8 sorties. Beaucoup de CPLDs
arrivent la faire fonctionner leur frquence maximum, les rsultats sont plus variables pour
les FPGAs.
Large state machine : machine 16 tats, 8 entres et 8 sorties. La plupart des CPLDs doivent
abandonner leur frquence de fonctionnement maximum : le nombre de variables est trop
grand pour autoriser les calculs en une seule passe dans la logique combinatoire.
Arithmetic : un multiplieur de deux nombres de 4 bits, rsultat sur 8, suivi par un additionneur
accumulateur sur 8 bits. La structure en somme de produits des CPLDs les rend trs
inefficaces dans les problmes darithmtique. Les FPGAs montrent une supriorit
architecturale nette face ces problmes.
Accumulateur : accumulateur-additionneur sur 16 bits. Un additionneur de deux nombres de
16bits est suivi par un registre dont le contenu est pris comme lun des oprandes de
laddition. Ce test gnre un schma moins complexe que le prcdent.
16-bit counter : un classique compteur 16 bits, chargement parallle synchrone et remise
zro asynchrone. Cest un peu un test de vitesse pure dans une application standard.
16-bit prescaled counter : compteur 16 bits prdiviseur synchrone. Pour acclrer le
comptage, une technique consiste traiter part ltage de poids faible dun compteur, quitte
perdre la possibilit deffectuer le chargement parallle en un seul cycle. Pour les CPLDs il
ny a aucune diffrence avec lpreuve prcdente ; pour les FPGAs larchitecture en petites
cellules conduit une acclration nette du fonctionnement.
24

Dcodeur dadresses : un dcodeur dadresse gnre 8 signaux de dcodage mmoriss dans


un registre partir dun signal dentre sur 16 bits ; il dcoupe ainsi lespace dadresses en
huit pages. Le traitement de ce schma favorise les circuits qui disposent de portes ET grand
nombre dentres. Larchitecture CPLD se prte mieux cette preuve que celle des FPGAs.

chacun son interprtation


Les rsultats ces preuves sont gnralement prsents sous forme de tableaux comparatifs.
Chaque constructeur veillant, videmment, citer les rsultats de la concurrence qui illustrent sa
propre supriorit.
Une analyse gnrale, propose par beaucoup de fabricants, consiste calculer pour chaque
circuit les moyennes des frquences maximums de fonctionnement, et des nombres dinstances de
chaque preuve implantable dans le circuit. Ces deux chiffres fournissent une information globale
de vitesse et une information globale de capacit. Sans entrer dans des comparaisons chiffres qui
ne valent qu un instant donn, il est intressant de dlimiter dans le plan frquence/capacit les
zones de prdilection des diffrentes catgories de circuits programmables. Cest le sens de la
figure III-16.
Les petits circuits sont incapables de contenir les preuves PREP, ils se concentrent une
capacit moyenne nulle. Nous les avons malgr tout plac dans ce plan, bien que la comparaison
entre des moyennes dun ct et une information ponctuelle de lautre soit un peu trompeuse20.

MHz moyenne des frquences max

200 PLDs simples

100

CPLDs
FPGAs

0 10 20 30 40
moyenne du nombre d'instances

Figure 16 : Moyennes des tests PREP

3.2 Le rle du fitter


Nous avons un peu explor les aspects matriels des circuits programmables. Terminons en
retrouvant, travers quelques remarques, laspect logiciel des choses. Un circuit nest rien sans son
logiciel de dveloppement ; un rsultat surprenant aux preuves PREP nous en fournit un exemple.

20
Il nest pas difficile de trouver dans un data book un exemple particulier de montage avec lequel un FPGA dpasse
trs largement les 200 MHz.
Les circuits programmables 25

Mise plat ou logique multi-couches ?


Lune de ces preuves concerne larithmtique : pour cette preuve un CPLD qui nest ni moins
performant que son concurrent direct, ni plus petit, sest vu attribuer, en 1995, la note zro en
frquence maximum de fonctionnement. Un zro dans une moyenne, cela pse lourd. La rgle est la
synthse automatique, optimisation comprise. Le fitter du fondeur concern sest
vraissemblablement fourvoy dans la mise plat, sous forme somme de produits logiques, des
oprateurs arithmtiques. Nous avons eu loccasion dvoquer le caractre explosif de cette
dmarche.
La bonne approche tait, pour cet exemple, de conserver plus de couches logiques, au dtriment
de la vitesse.
Les performances des FPGAs ne se dgradent que trs progressivement quand la complexit
dun schma augmente ; cette facult est lie leur architecture granularit fine, qui impose de
toute faon de passer des structures multi-couches, mme pour des fonctions combinatoires de
complexit moyenne. Les constructeurs de circuits ont optimis les passages de retenues dune
cellule lautre, qui autorisent des structures de propagation des retenues sans trop ralentir le
systme.
Certains logiciels donnent lutilisateur le loisir de rgler manuellement le seuil de
ddoublement dquations logiques trop larges. Il est possible de spcifier le nombre maximum de
facteurs dans un produit et le nombre maximum de termes dans une somme, par exemple. Ce genre
de rglages manuels peut, bien quun peu dlicat manipuler, donner de bons rsultats quand les
choix automatiques ne conviennent plus.

Surface ou vitesse
Les options de rglage standard dun fitter permettent de privilgier la surface (de silicium) ou
la vitesse. Les deux choix sont, en effet, souvent contradictoires : pour diminuer la surface il faut
augmenter le nombre de couches, ce qui pnalise la vitesse21.

Librairies de macro fonctions


Rappelons limportance des librairies de modules optimiss en fonction du circuit cible. Lidal
est quelles soient explores automatiquement par lanalyseur de code VHDL, mais cette recherche
automatique suppose que le code source ne brouille pas les cartes.

Le meilleur des compilateurs ne peut donner que ce que le circuit possde


Ultime remarque : le meilleur des compilateurs ne peut quorganiser ce qui prexiste dans un
circuit, il ne cre rien. Trivialement, tenter dimplanter un compteur 16 bits dans un 22V10 est un
objectif inaccessible. Cet exemple en fera sourire plus dun ; Transpos un circuit de compression
de la parole, implanter dans un circuit plus consquent, le problme reste le mme ; mme si
lanalyse de faisabilit est plus ardue, elle doit pourtant tre poursuivie.

21
La situation relle est un peu plus complexe : quand on diminue le nombre de couches logiques, la sortance impose
aux oprateurs augmente. Dans les technologies MOS les temps de propagation de ces oprateurs dpendent beaucoup
de leurs capacits de charge, donc du nombre dentres quils doivent commander. Les fitter contrlent galement ce
type de contraintes.
26

Index

anti-fusible ...................................................12 JTAG............................................................16


bascules LPM .............................................................21
types ...........................................................8 macrocellules ...............................................14
burried flip flops ..........................................15 MOS (grilles flottantes) ...............................11
cellules SRAM .............................................12 multiplexeur
CPLD .............................................................3 principe ......................................................6
EEPROM .......................................................3 placement.....................................................15
EPROM..........................................................2 PLD................................................................3
fitter..............................................................15 polarit programmable...................................8
son rle.....................................................24 PREP............................................................22
FLASH ...........................................................3 programmable in situ ...................................12
FPGA .............................................................3 programmable logic array.............................4
frquence maximum PROM ............................................................2
modle......................................................20 RAM ..............................................................3
fusibles ...........................................................9 rseau logique programmable........................4
JEDEC..........................................................10 routage .........................................................15