Fbga
Fbga
Fbga
À la section .خطأ! لم يتم العثور على مصدر المرجع, on a discuté de considérations pour l’implémentation matérielle
de circuits numériques. On a parlé de ce qui affecte l’implémentation d’un circuit, du problème du parti-
tionnement logiciel-matériel et des options pour les solutions matérielles. Dans ce chapitre, on voit ces
options plus en détail.
numéro fonction
7400 4 × NON-ET
7402 4 × NON-OU
7404 8 × NON
7411 3 × ET (3 entrées)
7473 2 × bascule JK avec reset
Tableau 2-1 – exemples de la famille 7400
Figure 2-1 – puce 7400 (source : Wikipédia)
Les circuits MSI incluaient entre autres des multiplexeurs, décodeurs, registres et compteurs. Miraculeu-
sement (pour l’époque), leur coût de fabrication n’était pas significativement supérieur à celui des compo-
santes SSI à cause de l’amélioration continue des processus de fabrication.
Les circuits LSI incluaient entre autres des mémoires, des processeurs simples et les premiers micropro-
cesseurs comme le 4004 d’Intel à plus de 2000 transistors.
À la fin des années 1970 et au début des années 1980, on a vu apparaître les circuits VLSI (pour Very
Large ScaleIntegration) avec 105 transistors. L’acronyme ULSI (pour Ultra) a été peu utilisé, VLSI se
généralisant pour tous les circuits intégrés très complexes.
On utilise encore parfois aujourd’hui les puces SSI-LSI si le circuit à implémenter est très simple, comme
par exemple pour mener une sortie sur une planchette intégrant des composantes plus sophistiquées mais
ne partageant pas de signal commun. Un désavantage de cette approche est que cette partie du circuit ne
peut plus être modifiée une fois fabriquée. On n’imaginerait pas aujourd’hui utiliser les puces SSI-LSI
comme technologie de base pour implémenter un système numérique.
m15
m14
m13
m12
A3 m11
m10
A2 m9
m8
A1 m7
m6
A0 m5
m4
m3
m2
m1
m0
D7 D6 D5 D4 D3 D2 D1 D0
F2 F1 F0
programmable
PLA programmable
(un nombre limité de mintermes peuvent être générés)
fixe
programmable (un nombre limité de
PAL
(un nombre limité de mintermes peuvent être générés) mintermes peuvent être
combinés)
# x y z F entrée Di valeur
z’ 0
0 0 0 0 1
D0 z’ 0 1
1 0 0 1 0 F
z 2
2 0 1 0 0
D1 0 1 3
3 0 1 1 0
4 1 0 0 0 S0
D2 z S1
5 1 0 1 1
6 1 1 0 1 x
D3 1 y
7 1 1 1 1
Figure 2-12 – implémentation d’une fonction logique par multiplexeur
Les CLBs basés sur les tables de conversion utilisent de petites mémoires programmables au lieu de mul-
tiplexeurs. Cette approche est similaire à l’approche par multiplexeurs, mais en supposant que les entrées
du multiplexeur ne peuvent être que des constantes. Effectivement, il faut un multiplexeur deux fois plus
gros pour réaliser la même fonction, mais le routage du circuit est plus simple. De plus, le circuit peut être
plus rapide parce que les entrées du multiplexeur sont constantes.
Les FPGAs de la compagnie Altera étaient à l’origine basés sur une approche par multiplexeurs, alors que
ceux de Xilinx utilisaient des tables de conversion. La plupart des FPGAs récents utilisent des tables de
conversion.Cela ne signifie pas que des multiplexeurs ne sont plus utilisés. Au contraire, ils sont essen-
tiels pour router adéquatement les signaux à l’intérieur d’un CLB en choisissant différentes possibilités de
configuration.
La Figure 2-13 illustre un CLB simplifié d’un FPGA de Xilinx. Le CLB est composé de :
deux tables de conversion (Look-Up Table – LUT) programmables à 4 entrées chacune, F et G, qui
sont effectivement des mémoires de 16 bits chacune;
un multiplexeur ‘H’ et son entrée associée H1 qui permet de choisir la sortie de l’une des deux tables
de conversion;
quatre multiplexeurs dont les signaux de contrôle S0 à S3 sont programmables; et,
deux éléments à mémoire configurables en bascules ou loquets.
G4
YQ
G3 D Q
Table de
conversion
G2 G CLK
16 X 1 S0
G!
H1 S1
F4
XQ
F3 D Q
Table de
conversion
F2 F CLK
16 X 1 S2
F1
S3
CLK
Arrays of
programmable
logic blocks
RAM blocks
Multipliers
Logic blocks
A[n:0]
xx
B[n:0] + Y[(2n - 1):0]
MAC
Figure 2-16 – multiplication-accumulation
(source : fig. 4-11, Maxfield, © Mentor Graphics 2004)
uP uP
uP
uP uP
Special clock
pin and pad
90 o Phase shifted
Clock
Flip-flops
tree
Special clock
pin and pad
2.7.1 Fusibles
La technologie originale utilisée pour les premiers dispositifs programmables, les mémoires ROM, étaient
des fusibles. Le dispositif inclut un fusible à chaque lien programmable, tel que montré à la Figure 2-22.
Le principe du fusible repose sur l’utilisation d’un métal conducteur qui fond et coupe le circuit lorsqu’il
est chauffé par un courant électrique. Pour programmer le dispositif, il faut appliquer une tension élevée
(typiquement 2 à 3 fois la tension nominale du dispositif) à des pattes choisies. Une fois les fusibles fon-
dus, le circuit est programmé, comme montré à la Figure 2-23. L’inconvénient principal de cette techno-
logie est qu’on ne peut programmer le dispositif qu’une seule fois. Les fusibles occupent aussi beaucoup
d’espace sur la puce. Cette technologie n’est plus utilisée.
Fuses Logic 1
Fat
a Pull-up resistors
Faf
NOT
Figure 2-22 – dispositif programmable avec fusibles
(source : fig. 2-2, Maxfield, © Mentor Graphics 2004)
Logic 1
Fat
a Pull-up resistors
b
AND
Fbf
NOT
Figure 2-23 – dispositif programmable avec fusibles fondus
(source : fig. 2-3, Maxfield, © Mentor Graphics 2004)
2.7.2 Anti-fusibles
Les anti-fusibles fonctionnent de façon contraire à un fusible. Le dispositif non programmé ne contient
que des liens qui ne sont pas encore établis, comme montré à la Figure 2-24. Pour effectuer une con-
nexion, il faut faire passer un courant élevé à travers l’anti-fusible pour fermer le circuit, comme montré à
la Figure 2-25.
Logic 1
Unprogrammed
antifuses
a Pull-up resistors
b
AND
NOT
Figure 2-24 – dispositif programmable avec anti-fusibles
(source : fig. 2-4, Maxfield, © Mentor Graphics 2004)
Logic 1
Programmed
antifuses
a Pull-up resistors
b
AND
NOT
Figure 2-25 – dispositif programmable avec anti-fusibles établis
(source : fig. 2-5, Maxfield, © Mentor Graphics 2004)
Un anti-fusible est fabriqué en plaçant du silicium amorphe entre deux conducteurs métalliques. Le sili-
cium amorphe conduit très mal le courant et peut être considéré comme un isolant. En lui appliquant une
tension élevée, cependant, on transforme le silicium amorphe en silicium polycristallin conducteur. Le
circuit électrique ainsi formé entre les deux conducteurs métalliques s’appelle un via. La Figure 2-26 il-
lustre un anti-fusible avant et après sa programmation.
Metal
Oxide
Metal
Substrate
Logic 1
Row
(word) line
Transistor Column
(data) line
Logic 0
Figure 2-27 – connexion programmable à l’aide d’un transistor
(source : fig. 2-8, Maxfield, © Mentor Graphics 2004)
On désire pouvoir établir une connexion entre une ligne horizontale et verticale. La grille du transistor est
reliée à la ligne horizontale, un terminal est relié à la ligne verticale et l’autre à la masse. La ligne verti-
cale est maintenue à une tension élevée par l’entremise d’une résistance connectée à la source
d’alimentation. En contrôlant la connexion entre le drain du transistor et la ligne verticale, on contrôle
effectivement la connexion entre les lignes verticale et horizontale.
Maintenant, même si la ligne verticale est mise à la masse, il n’y a pas de court-circuit entre
l’alimentation et la masse à cause de la résistance en place dans le circuit.
Un transistor PMOS fonctionne comme suit. Quand on applique une tension nulle à sa grille (un ‘0’), un
canal se forme sous celle-ci, permettant au courant de passer entre les deux autres terminaux. Quand on
applique une tension positive (un ‘1’), aucun canal n’est formé et les deux terminaux sont isolés électri-
quement.
Si le lien fusible est en place, une tension nulle sur la ligne horizontale aura pour effet de relier la ligne
verticale à la masse, sans pour autant établir une connexion physique entre les deux lignes. Si le lien n’est
pas là, la ligne verticale a toujours une tension élevée. À la Figure 2-27 on illustre le cas d’un lien fusible,
mais le principe est le même pour toutes les technologies de programmation.
control gate
control gate
Silicon floating gate
dioxide
source drain source drain
Silicon
substrate
grande :
dimension de la cellule très petite
4 ou 6 transistors
2.8 Exercices
1. Considérez un module qui doit réaliser les fonctions logiques suivantes :
F0 m(0,1,3,7)
F1 m(1,3,5,6,7)
F2 m(0,1,4,5)
F3 m(2,4,5,7)
a. Donnez son implémentation en utilisant uniquement des puces 7400 montrées à la Figure 2-1.
b. Donner son implémentation sur le circuit ROM de la Figure 2-2.
c. Donner l’implémentation des trois premières fonctions sur le PLA de la Figure 2-5.
d. Donner son implémentation sur le PAL de la Figure 2-8.
e. Donner son implémentation sur deux blocs configurables comme celui de la Figure 2-13.
2. Consultez des documents en ligne et comparez les slices de Xilinx au LogicElement d’Altera en
termes des ressources logiques disponibles et en complexité.
3. Consultez des ressources en ligne et comparez les familles Spartan et Virtex de Xilinx.
4. Consultez des documents en ligne et faite l’inventaire de toutes les ressources disponibles sur le
FPGA utilisé dans les laboratoires de ce cours.
5. Un des problèmes importants avec les mémoires Flash est qu’elles ne peuvent supporter qu’un
nombre limité de cycles d’écriture. Quelles sont les conséquences de ce fait pour un FPGA destiné au
prototypage? Quels genres d’applications seraient moins susceptibles à ce problème?