Vous êtes sur la page 1sur 65

Chapitre II:

Technologies de logique programmable

Filière: STIC3
Pierre Langlois
Wajdi Elhamzi
http://creativecommons.org/licenses/by-nc-sa/2.5/ca/ elhamziwajdi@yahoo.fr

INF3500 : Conception et implémentation de systèmes numériques


Partie1: Circuits intégrés numériques
Quelques bases

INF3500 : Conception et implémentation de systèmes numériques 2


Sujets de ce thème

• Transistors CMOS
• Portes logiques réalisées avec des transistors
CMOS
• Circuits intégrés SSI, MSI, LSI et VLSI

INF3500 : Conception et implémentation de systèmes numériques 3


Transistors CMOS : structure générale

• Un transistor MOS (Métal-Oxyde-Semiconducteur)


a trois terminaux:
– Une source
– Un drain
– Une grille de contrôle
• En situation normale la source et le drain sont
isolés électriquement. grille

• Le courant peut passer entre la source et le drain si


des charges électriques sont attirées dans le canal source canal drain
sous l’action d’une tension électrique appliquée à
la grille de contrôle. oxyde (isolant)
• Il y a deux types complémentaires de transistors
substrat
MOS: nMOS et pMOS, d’où l’acronyme CMOS.

INF3500 : Conception et implémentation de systèmes numériques 4


Transistors nMOS et pMOS

• Un transistor CMOS conduit quand des charges


électriques sont attirées dans son canal. 1 0

• Un transistor nMOS conduit quand une tension


positive (‘1’ logique) est appliquée à sa grille de
contrôle. nMOS

• Un transistor pMOS conduit quand sa grille de conduit ne conduit pas


contrôle est reliée à la masse (‘0’ logique).
1 0

pMOS

ne conduit pas conduit

INF3500 : Conception et implémentation de systèmes numériques 5


Inverseur CMOS

VCC
• Un inverseur CMOS contient:
– un transistor pMOS relié à l’alimentation; et
– un transistor nMOS relié à la masse.
• Le signal d’entrée est appliqué à la grille des
transistors.
• Le signal de sortie est relié aux drains des
A F
transistors.
• Quand A = ‘1’, le transistor nMOS conduit et la
sortie F est reliée à la masse pour un ‘0’.
• Quand A = ‘0’, le transistor pMOS conduit et la
sortie F est reliée à l’alimentation pour un ‘1’.
A F

INF3500 : Conception et implémentation de systèmes numériques 6


Portes logiques NON-ET et NON-OU avec transistors CMOS

VCC VCC
A B G = (A + B)’
A B B 0 0
0 1
1 0
F
1 1
A
A

A B F = (AB)’ G

0 0
0 1
B A B
1 0
1 1

INF3500 : Conception et implémentation de systèmes numériques 7


Forme générale d’un circuit CMOS

VCC

• Un circuit CMOS est composé de deux réseaux


complémentaires A

– Un réseau pMOS de charge - ‘pull-up’


B
C
– Un réseau nMOS de décharge - ‘pull-down’ D
réseau de charge PMOS

• Un et un seul des deux réseaux doit conduire le


courant en tout moment.
– Si les deux réseaux sont ouverts au même moment, F = f(A, B, C, D)’
la sortie est alors flottante ou considérée en ‘haute
impédance’.
– Si les deux réseaux conduisent au même moment, il
y a un court-circuit entre l’alimentation et la masse.
réseau de décharge NMOS

INF3500 : Conception et implémentation de systèmes numériques 8


Circuits CMOS: exemple 1 – analyse

VCC

• Donnez la fonction logique réalisée par le circuit


suivant, sous forme d’une équation et sous forme B
de diagramme de portes logiques.
• La fonction est composée de deux sous-réseaux en C VCC

cascade.
A

A B

INF3500 : Conception et implémentation de systèmes numériques 9


Circuits CMOS: exemple 2 – conception

Donnez un diagramme de circuit CMOS pour


implémenter la fonction logique suivante.
• F = (A + B + C)’

INF3500 : Conception et implémentation de systèmes numériques 10


Circuits intégrés de 1960 à nos jours

• Les premiers circuits numériques intégrés sont Terme Année # Transistors Exemples
apparus sur le marché dans les années 1960. SSI 1960 < 102 Portes logiques
• On les classifiait alors selon le nombre de Multiplexeurs,
MSI Fin 1960s < 103
transistors qu’ils intégraient. Les trois acronymes décodeurs
de base, SSI, MSI et LSI, référaient respectivement Mémoires,
à Small, Medium et Large Scale Integration. LSI 1975 104 processeurs (p.ex.
Intel 4004)
VLSI 1980 105+
ULSI
Fin 1980s 106
(peu usité)

INF3500 : Conception et implémentation de systèmes numériques 11


Circuits SSI, MSI et LSI: série 7400

• Une famille de circuits SSI/MSI très populaire


jusqu’au début des années 1990 était la série
7400.
• Normalisés dans l’industrie, ils étaient
manufacturés par plusieurs fournisseurs.
• Les deux derniers chiffres reflétaient la fonction
logique réalisée et la position des signaux sur les
pattes de la puce.
• Ne sont plus vraiment utilisés de nos jours.
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
INF3500 : Conception et implémentation de systèmes numériques
Wikipédia 12
Un système numérique avec des composantes discrètes

Wikipédia
INF3500 : Conception et implémentation de systèmes numériques 13
INF3500 : Conception et implémentation de systèmes numériques
Prototype de Macintosh, ca 1980
Un système numérique avec des composantes discrètes

Macintosh Wire Wrap Logic Board #5 1980-1983, Digibarn Computer Museum. Consulté le 18 juin
2014, images tirées de http://www.digibarn.com/collections/parts/mac-wirewrap5-board/index.html
14
Circuits intégrés de 1960 à nos jours

• Wikipédia a une page contenant une liste de puces


et leur nombre de transistors.
• http://en.wikipedia.org/wiki/Transistor_count

INF3500 : Conception et implémentation de systèmes numériques Wgsimon, Wikipédia 15


Partie2: Logique programmable
Mémoires mortes: PROM, EPROM, EEPROM

INF3500 : Conception et implémentation de systèmes numériques 16


Sujets de ce thème

• Structure interne d’une mémoire morte


programmable PROM
Technologies de circuits intégrés à application spécifique (ASIC)
• Analyse d’une fonction logique implémentée sur
une PROM Logique fixe Logique programmable
Mémoire morte
• Implémentation d’une fonction logique sur une Programmable Read Only Memory – PROM
Electrically Programmable ROM – EPROM
PROM Erasable EPROM – EEPROM
• EPROM et EEPROM: ASIC sur mesure Réseau de logique programmable
Full-custom ASIC Programmable Logic Array - PLA
les mémoires mortes programmables plusieurs fois Circuit PAL
ASIC à cellules normalisées
Cell-based ASIC Programmable Array Logic™ - PAL
Réseau pré-diffusé de portes Circuit GAL
Gate Array Generic Array Logic™ - GAL
Circuit logique programmable complexe
Complex Programmable Logic Device – CPLD
Réseau prédiffusé programmable par l’utilisateur
Field-Programmable Gate Array – FPGA

INF3500 : Conception et implémentation de systèmes numériques 17


Mémoires mortes programmables : PROM

Exemple: ROM 16 × 8
• Mémoire morte programmable
(Programmable Read Only Memory – PROM) décodeur 4:16

une seule fois m15


m14
(One Time Programmable – OTP). m13
m12
• Une PROM consiste en : A3 m11
m10
– un décodeur avec n signaux d’entrée et 2n sorties; A2 m9
m8
– un réseau d’interconnexions programmables entre A1 m7
2n rangées et m colonnes; et, m6
A0 m5
– m portes OU à 2n entrées. m4
m3
• On indique une connexion entre une ligne m2
horizontale et une ligne verticale par un point. m1
m0

D7 D6 D5 D4 D3 D2 D1 D0

INF3500 : Conception et implémentation de systèmes numériques 18


Mémoires mortes programmables : PROM

• On utilise une représentation compacte des portes


logiques avec plusieurs entrées.

INF3500 : Conception et implémentation de systèmes numériques 19


Rappel : décodeur
A2 A1 A0

• Un décodeur active une sortie unique qui


correspond à la valeur du code binaire en entrée. F0

Décodeur 3:8

F7 # A 2 A1 A0 F7 F6 F5 F4 F3 F2 F1 F0 F1

F6 0 0 0 0 0 0 0 0 0 0 0 1
1 0 0 1 0 0 0 0 0 0 1 0 F2
F5 2 0 1 0 0 0 0 0 0 1 0 0
A2
F4 3 0 1 1 0 0 0 0 1 0 0 0 F3
A1 4 1 0 0 0 0 0 1 0 0 0 0
A0
F3
5 1 0 1 0 0 1 0 0 0 0 0
F2 6 1 1 0 0 1 0 0 0 0 0 0 F4

7 1 1 1 1 0 0 0 0 0 0 0
F1
F5
F0 F0 = m0 = A2’A1’A0’
F1 = m1 = A2’A1’A0 F6

F2 = m2 = A2’A1A0’
etc. F7

INF3500 : Conception et implémentation de systèmes numériques 20


PROM : connexions programmables dans un circuit intégré

• Les lignes horizontales et verticales sont reliées


par des diodes et des fusibles connectés en série.
• Au départ, tous les fusibles sont en place.
• On effectue la programmation en faisant passer un
fort courant dans les fusibles des connexions à
F1
couper.
• Les lignes verticales sont mises à la masse par
défaut (configuration pull-down).
• Les portes OU sont implicites par ce circuit. F0
• Quatre cas à considérer:
– Cas 0: F1 = 0, F0 = 0
– Cas 1: F1 = 0, F0 = 1
– Cas 2: F1 = 1, F0 = 0
– Cas 3: F1 = 1, F0 = 1 D1 D0
INF3500 : Conception et implémentation de systèmes numériques 21
PROM : connexions programmées sur une planchette

• Mémoire ROM 32 × 16 d’un PDP-11.

22
© David Fischer. Diode Matrix. http://www.cca.org/blog/20120222-Diode-Matrix.shtml. Avec permission.
INF3500 : Conception et implémentation de systèmes numériques
PROM : exemple 1 – analyse des fonctions logiques réalisées

• Donner les fonctions logiques réalisées par cette


décodeur 4:16
mémoire PROM.
m15
D7 = m13 + m9 = A3A2A1’A0 + A3A2’A1’A0 m14
m13
m12
D2 = m12 + m8 + m4 + m0 = A1’A0’ A3 m11
m10
A3A2 D2
A2 m9
A1A0 00 01 11 10 m8
A1 m7
00 1 1 1 1 m6
0 4 12 8
A0 m5
m4
01 0 0 0 0 m3
1 5 13 9
m2
m1
11 0 0 0 0 m0
3 7 15 11

10 0 0 0 0
2 6 14 10
D7 D6 D5 D4 D3 D2 D1 D0
INF3500 : Conception et implémentation de systèmes numériques 23
Retour: le problème du vote

A B C D F
Un comité composé de quatre personnes a besoin 0 0 0 0 0
d’un mécanisme de vote secret pour les 0 0 0 1 0
amendements sur la constitution du comité. 0 0 1 0 0
Un amendement est approuvé si au moins 3 0 0 1 1 0
personnes votent pour. 0 1 0 0 0
Concevoir un circuit logique qui accepte 4 entrées 0 1 0 1 0
représentant les votes. La sortie du circuit doit 0 1 1 0 0
indiquer si l’amendement est accepté. 0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
INF3500 : Conception et implémentation de systèmes numériques 24
PROM : exemple 2 – implémentation d’une fonction logique

Programmer la PROM 16 × 8 pour implémenter le


circuit du problème du vote.
décodeur 4:16
Étapes: m15
1. Choisir les ports d’entrée et de sortie. m14
m13
2. Écrire les équations de sortie en somme de A m12
A3 m11
produits B m10
A2 m9
3. Indiquer quelles connexions établir. C m8
A1 m7
D A0
m6
m5
m4
Observations: m3
• La minimisation des équations n’est pas toujours utile. m2
m1
• L’ordre dans lequel on place les entrées est crucial. m0
• L’utilisation d’une ROM 16 × 8 n’est pas efficace pour ce
circuit.
D7 D6 D5 D4 D3 D2 D1 D0
INF3500 : Conception et implémentation de systèmes numériques F 25
EPROM: Erasable Programmable Read Only Memory
EPROM 32 KB, STMicroelectronics M27C256B

• Une mémoire EPROM est programmable à


plusieurs reprises, et effaçable en exposant son
réseau de connexions à des rayons ultraviolets
• Elle est facile à reconnaître à sa petite fenêtre.

INF3500 : Conception et implémentation de systèmes numériques 26


CC-BY-SA-2.5, Bill Bertram, Wikipédia.
Connexions programmables pour mémoires EPROM (et EEPROM)

• Les connexions programmables des mémoires VCC VCC


EPROM et EEPROM utilisent des transistors au lieu
de diodes et de fusibles.
• Les lignes verticales sont reliées à l’alimentation
par une résistance de rappel vers le niveau haut.
F1
• Les transistors de connexion permettent d’amener
la ligne verticale à zéro si la ligne horizontale
correspondante est à 1.
• Les transistors peuvent être désactivés en les
programmant.
F0
• Quatre cas à considérer:
– Cas 0: F1 = 0, F0 = 0
– Cas 1: F1 = 0, F0 = 1
– Cas 2: F1 = 1, F0 = 0
– Cas 3: F1 = 1, F0 = 1

INF3500 : Conception et implémentation de systèmes numériques


D1 D1 27
EPROM et grilles flottantes

• Dans un transistor MOS, la tension appliquée à la • Pour effacer le dispositif, on l’expose à un


grille détermine si un canal est formé entre la rayonnement ultra-violet qui dissipe la charge
source et le drain. accumulée sur les grilles flottantes et réactive les
• Un transistor MOS d’une mémoire EPROM inclut transistors.
une grille flottante supplémentaire.
Source Control gate Drain Source Control gate Drain
• On désactive le transistor à grille flottante en terminal terminal terminal terminal terminal terminal

plaçant une tension élevée entre sa grille et l’un de


ses terminaux. Cette tension induit un courant qui
attire des charges sur la grille flottante. Une fois
control gate

control gate
Silicon floating gate

celle-ci chargée, il n’est plus possible de créer un


dioxide
source drain source drain
Silicon
canal sous la grille et les deux terminaux sont substrate

effectivement isolés électriquement. (a) Standard MOS transistor (b) EPROM transistor
Maxfield, © Mentor Graphics, 2004

INF3500 : Conception et implémentation de systèmes numériques 28


EEPROM et mémoires Flash

• Les mémoires EEPROM et Flash sont similaires aux • Pour ‘programmer’ la cellule, on place une tension
mémoires EPROM, mais peuvent être effacées élevée sur la grille de contrôle et le drain du
électriquement, sans rayons ultraviolets. transistor. Comme un courant élevé circule dans le
• L’isolant autour de la grille flottante est plus mince canal, des électrons sont attirés par la grille de
que dans le cas d’une cellule EPROM, et la grille contrôle et vont s’emmagasiner sur la grille
flottante chevauche partiellement le drain du flottante, désactivant le transistor.
transistor.

Source: wikipédia
INF3500 : Conception et implémentation de systèmes numériques 29
ROM : exemple 3 – implémentation de fonctions logiques – exercice en classe

S=
Programmer la ROM 16 × 8 pour implémenter le
circuit donné ici. Cout =
décodeur 4:16
Étapes: m15
1. Choisir les ports d’entrée et de sortie. m14
m13
2. Écrire les équations de sortie en somme de 0 m12
A3 m11
produits Cin m10
A2 m9
3. Indiquer quelles connexions établir. X m8
A1 m7

Cin
Y A0
m6
m5
S
m4
m3
T3 m2
X T1
m1
Y m0
T2 Cout

D7 D6 D5 D4 D3 D2 D1 D0
INF3500 : Conception et implémentation de systèmes numériques S Cout 30
Partie 3: Logique programmable
Réseaux et circuits PLA, PAL, GAL et CPLD

INF3500 : Conception et implémentation de systèmes numériques 31


Sujets de ce thème

• Réseaux de logique programme PLA


• Circuit PAL
Technologies de circuits intégrés à application spécifique (ASIC)
• Circuit GAL
Logique fixe Logique programmable
• Circuits logiques programmables complexes CPLD Mémoire morte
Programmable Read Only Memory – PROM
Electrically Programmable ROM – EPROM
Erasable EPROM – EEPROM
ASIC sur mesure Réseau de logique programmable
Full-custom ASIC Programmable Logic Array - PLA
ASIC à cellules normalisées Circuit PAL
Cell-based ASIC Programmable Array Logic™ - PAL
Réseau pré-diffusé de portes Circuit GAL
Gate Array Generic Array Logic™ - GAL
Circuit logique programmable complexe
Complex Programmable Logic Device – CPLD
Réseau prédiffusé programmable par l’utilisateur
Field-Programmable Gate Array – FPGA

INF3500 : Conception et implémentation de systèmes numériques 32


Réseaux de logiques programmable : PLA, PAL et GAL

• L’implémentation de circuits logiques avec des


circuits SSI, MSI et LSI nécessite beaucoup de
travail pour choisir, disposer et relier les
composantes discrètes.
• Certaines fonctions logiques complexes peuvent
être remplacées par des PROM, mais une mémoire
est en général trop grande et pas assez flexible
pour bien convenir à la tâche.
• Les PLA (1970), et PAL (1978) étaient plus efficaces
que les PROM; ils pouvaient être programmés chez
le manufacturier ou une fois par l’utilisateur.
• Les GAL sont la version améliorée des PLA et PAL
et sont programmables par l’utilisateur.

INF3500 : Conception et implémentation de systèmes numériques 33


ROM vs PLA: problème d’efficacité de la ROM

ROM 16 × 8 PLA à 4 entrées, 3 sorties et 6 termes

A3 A2 A1 A0
décodeur 4:16

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
INF3500 : Conception et implémentation de systèmes numériques 34
Réseaux de logiques programmables : PLA
Exemple: PLA à 4 entrées, 3 sorties et 6 termes
A3 A2 A1 A0
• Un PLA (Programmable Logic Array) est similaire à
une ROM, mais il ne réalise pas tous les produits
de termes comme une ROM.
• Un PLA à n entrées et m sorties peut réaliser m
fonctions de n variables, en autant que chacune
requiert un nombre limité de produits des
variables en entrée.
• Un PLA est composé de deux réseaux
programmables, ET et OU. Le réseau ET
programmable est effectivement un décodeur
programmable incomplet.

• Chaque intersection d’une ligne horizontale et d’une ligne verticale est programmable.
• Seuls 6 termes (produits – ET logique) peuvent être réalisés à partir des quatre entrées et de leurs compléments.
• Seules trois fonctions de sortie peuvent être réalisées. F2 F1 F0

• Chaque fonction peut utiliser n’importe lequel des six termes programmés

INF3500 : Conception et implémentation de systèmes numériques 35


Réseaux de logiques programmables : PLA

• On utilise une représentation compacte des portes


logiques avec plusieurs entrées.

INF3500 : Conception et implémentation de systèmes numériques 36


Retour: le problème du vote

A B C D F
Un comité composé de quatre personnes a besoin 0 0 0 0 0
d’un mécanisme de vote secret pour les 0 0 0 1 0
amendements sur la constitution du comité. 0 0 1 0 0
Un amendement est approuvé si au moins 3 0 0 1 1 0
personnes votent pour. 0 1 0 0 0
Concevoir un circuit logique qui accepte 4 entrées 0 1 0 1 0
représentant les votes. La sortie du circuit doit 0 1 1 0 0
indiquer si l’amendement est accepté. 0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
INF3500 : Conception et implémentation de systèmes numériques 37
Réseau PLA: exemple – implémentation d’une fonction logique

Programmer le circuit PAL 4 – 3 – 6 pour implémenter


le circuit du problème du vote.
Étapes: A B C D
A3 A2 A1 A0

1. Choisir les ports d’entrée et de sortie.


2. Écrire les équations de sortie en somme de
produits
3. Indiquer quelles connexions établir.

Observations:
• La minimisation des équations n’est pas toujours utile.
• L’ordre dans lequel on place les entrées est crucial.
• L’utilisation d’un circuit PAL 4-3-6 est mieux qu’une ROM
16 × 8 pour ce circuit.
F2 F1 F0

INF3500 : Conception et implémentation de systèmes numériques F 38


Réseaux logiques programmables :
circuit PAL (Programmable Array Logic)

• Dans un circuit PAL, le réseau ET est


programmable et le réseau OU est fixe.
• Chaque intersection d’une ligne horizontale et
d’une ligne verticale est programmable.
• Les portes ET ont une sortie de 0 par défaut.
• Chaque patte de sortie est menée par un tampon
inverseur contrôlé par une fonction logique.
• Un PAL16L8 a:
– 10 entrées dédiées (pattes 1-9 et 11)
– 2 sorties dédiées (pattes 12 et 19)
– 6 pattes pouvant être utilisées comme
entrée ou sortie (pattes 13-18)

INF3500 : Conception et implémentation de systèmes numériques 39


Tampons inverseurs à la sortie

• Les pattes de sortie d’un PAL 16L8 incluent un


tampon inverseur.
• La sortie peut donc être:
– l’inverse de la porte OU à laquelle elle est reliée; ou 0
– une haute impédance (« Z »).
A F = “Z”

A F = A’

INF3500 : Conception et implémentation de systèmes numériques 40


Réseaux logiques programmables : circuit PAL

• On programme un PAL en
établissant des connexions
entre les lignes verticales et
horizontales pour former des
sommes de produits.
• Les sorties sont toujours
inversées, il faut en tenir
compte.

INF3500 : Conception et implémentation de systèmes numériques 41


PAL 16R8

• Un PAL peut avoir des bascules en sortie.


• Un PAL16R8 a:
– 8 entrées (pattes 2-9);
– 8 sorties avec bascule (pattes 12-19);
– une patte d’horloge (CLK); et,
– une patte de contrôle de la sortie (OE’).

INF3500 : Conception et implémentation de systèmes numériques 42


Réseaux logiques programmables :
circuits GAL

• Circuits GAL (Generic Array Logic):


– dispositifs programmables par l’utilisateur;
– mis en marché par Lattice Semiconductors en 1985;
– peuvent émuler différents types de PAL.
• Les circuits GAL ont longtemps remplacé les
composantes SSI-LSI, mais ne sont plus
manufacturés.

INF3500 : Conception et implémentation de systèmes numériques 43


Circuits GAL: macro-cellule

• Le schéma montre une macro-cellule (Output


Logic Macro Cell – OLMC).
• La sortie de la OLMC peut être:
– En haute impédance;
– sortie combinatoire inversée ou non;
– sortie de bascule inversée ou non; ou,
– renvoyée dans le réseau programmable.

INF3500 : Conception et implémentation de systèmes numériques 44


Circuits logiques programmables complexes (CPLD)

• Les ROM, PLA, PAL et GAL sont parfois appelés des


circuits logique programmable simples (Simple
Programmable Logic Devices – SPLD).
• Les Complex Programmable Logic Devices – CPLD –
sont une extension naturelle des circuits PAL.
• Un CPLD incorpore plusieurs PAL sur une seule
puce avec un réseau d’interconnexions.
• Le réseau permet de relier les pattes de la puce à
différents blocs internes et de relier les blocs entre
eux.

INF3500 : Conception et implémentation de systèmes numériques 45


Exemple : famille CPLD XC9500XL de Xilinx

• Chaque bloc fonctionnel est un PAL à 54


entrées et 18 sorties.
• Les macro-cellules contiennent un
élément programmable à mémoire.
• Le circuit comprend peut comprendre de 2
à 16 blocs fonctionnels.
• Le réseau d’interconnexions permet
d’établir des connexions entre les blocs
d’entrées-sorties reliés aux pattes de la
puce et les blocs fonctionnels.

INF3500 : Conception et implémentation de systèmes numériques Source: Roth, 5e éd., © Brooks/Cole 2004 46
Partie 4: Réseaux pré-diffusés programmables par
l’utilisateur: FPGA

INF3500 : Conception et implémentation de systèmes numériques 47


Sujets de ce thème

• Structure interne d'un FPGA et composantes


principales
Technologies de circuits intégrés à application spécifique (ASIC)
• Le bloc de logique programmable d'un FPGA
Logique fixe Logique programmable
• Composantes secondaires présentes dans un
Mémoire morte
FPGA. Programmable Read Only Memory – PROM
Electrically Programmable ROM – EPROM
• Programmer un FPGA. Erasable EPROM – EEPROM
ASIC sur mesure Réseau de logique programmable
Full-custom ASIC Programmable Logic Array - PLA
ASIC à cellules normalisées Circuit PAL
Cell-based ASIC Programmable Array Logic™ - PAL
Réseau pré-diffusé de portes Circuit GAL
Gate Array Generic Array Logic™ - GAL
Circuit logique programmable complexe
Complex Programmable Logic Device – CPLD
Réseau prédiffusé programmable par l’utilisateur
Field-Programmable Gate Array – FPGA

INF3500 : Conception et implémentation de systèmes numériques 48


La planchette Spartan 3an starter kit

INF3500 : Conception et implémentation de systèmes numériques 49


La planchette Genesys de Digilent équipée d’un FPGA Virtex-5

INF3500 : Conception et implémentation de systèmes numériques 50


Réseaux pré-diffusés programmables (par l’utilisateur):
Field-Programmable Gate Arrays (FPGA)

• Un FPGA est composé à la base de :


– un réseau de blocs de logique programmable IOB IOB IOB IOB IOB IOB

(Configurable Logic Block − CLB);


– un réseau d’interconnexions programmables entre
les blocs; et, CLB CLB CLB CLB CLB

– des blocs d’entrée et de sortie avec le monde


extérieur (Input/Output Block – IOB).
• Dans la figure, on a: CLB CLB CLB CLB CLB

– 12 IOBs, 3 × 5 CLBs
• Le FPGA XC5VLX50T a plutôt: CLB CLB CLB CLB CLB

– 480 IOBs, 120 × 30 CLBs

IOB IOB IOB IOB IOB IOB

INF3500 : Conception et implémentation de systèmes numériques 51


Virtex 5: bloc de logique programmable

• Un CLB est composé de deux tranches (‘slices’).


• Chaque tranche est reliée au réseau
d’interconnexions.
• Les tranches sont reliées entre elles verticalement.

INF3500 : Conception et implémentation de systèmes numériques 52


Virtex 5: tranche de type L (SLICEL)

• Une tranche comprend:


– Quatre tables de correspondance (Look-up Table –
LUT) à 6 entrées, pouvant être programmées
comme:
• fonction logique
• mémoire ROM
– Quatre éléments à mémoire: bascule ou loquet.
– Des multiplexeurs pour router les signaux.
– Des portes logiques pour l’addition rapide.
• Il existe aussi des tranches de type M pour
lesquelles les tables de correspondances peuvent
en plus être programmées comme:
• mémoire RAM à un ou plusieurs ports
• registre à décalage

INF3500 : Conception et implémentation de systèmes numériques 53


Modèle simplifié d’une tranche
(~ une tranche du Virtex 2 Pro)
G4

• Deux tables de correspondance à 4 entrées: G3 D Q


YQ

Table de
– fonction logique G2
correspondance
G CLK

mémoire RAM 16 X 1 S0
– G!

– mémoire ROM Y

– décalage H

• Deux éléments à mémoire, bascule ou loquet. H1 S1

• Des multiplexeurs pour router les signaux. F4


XQ
F3 D Q
Table de
correspondance
F2 F CLK
16 X 1 S2
F1

S3
CLK

INF3500 : Conception et implémentation de systèmes numériques 54


Comment une LUT implémente une fonction logique

Portion of gate-level netlist Contents of 3-input LUT


XOR a b c y
a d 0 0 0 0
| XNOR
b 0 0 1 1
0 1 0 1
| y 0 1 1 0
NOT
e 1 0 0 1
c 1 0 1 0
1 1 0 0
1 1 1 1

INF3500 : Conception et implémentation de systèmes numériques 55


Retour: le problème du vote

A B C D F
Un comité composé de quatre personnes a besoin 0 0 0 0 0
d’un mécanisme de vote secret pour les 0 0 0 1 0
amendements sur la constitution du comité. 0 0 1 0 0
Un amendement est approuvé si au moins 3 0 0 1 1 0
personnes votent pour. 0 1 0 0 0
Concevoir un circuit logique qui accepte 4 entrées 0 1 0 1 0
représentant les votes. La sortie du circuit doit 0 1 1 0 0
indiquer si l’amendement est accepté. 0 1 1 1 1
1 0 0 0 0
1 0 0 1 0
1 0 1 0 0
1 0 1 1 1
1 1 0 0 0
1 1 0 1 1
1 1 1 0 1
1 1 1 1 1
INF3500 : Conception et implémentation de systèmes numériques 56
FPGA: exemple – implémentation d’une fonction logique

Programmer la tranche du FPGA pour implémenter le A G4

circuit du problème du vote.


YQ
G3 D Q
B Table de

Étapes:
correspondance
G2 G
C 16 X 1 S0
CLK

1. Choisir les ports d’entrée et de sortie. G!

D F
2. Indiquer quelles connexions établir.
Y

3. Donner le contenu des tables de H1 S1

correspondances. (Ici: la table de correspondance


contient la table de vérité désirée). F4
XQ
F3 D Q
Table de

Observations:
correspondance
F2 F CLK
S2
• La minimisation des équations n’est pas toujours utile.
16 X 1
F1

• L’ordre dans lequel on place les entrées est crucial. X

• Des fonctions à plus de 4 entrées nécessiterait plus d’un


niveau de logique. S3
CLK

INF3500 : Conception et implémentation de systèmes numériques 57


FPGA: composantes secondaires

• Les 3 composantes principales d’un FPGA sont:


– les blocs de logique programmable (CLB/tranches);
– le réseau d’interconnexions; et,
– les blocs d’entrée et de sortie (IOB).
• Parmi les composantes secondaires on retrouve:
1. Des blocs de mémoire intégrée
2. Des fonctions arithmétiques avancées
3. Des modules de génération d’horloge
4. Des réseaux de distribution d’horloges
5. Des microprocesseurs fixes

INF3500 : Conception et implémentation de systèmes numériques 58


1. Blocs de mémoire intégrée

• De plus en plus de transistors … les manufacturiers Columns of embedded


ajoutent de la mémoire. RAM blocks

• Avantage: mémoire accessible directement à Arrays of


programmable
l’intérieur de la puce. logic blocks

• Colonnes de blocs de mémoire intégrées à travers


les CLBs.
• Par exemple, le FPGA XC5VLX50T contient:
– 60 blocs de 36 Kb = 2160 Kb

INF3500 : Conception et implémentation de systèmes numériques Source: Maxfield, © Mentor Graphics, 2004 59
2. Fonctions arithmétiques avancées

• Les FPGA ont prouvé leur utilité dans les RAM blocks
applications de traitement de signal. Multipliers
• La multiplication est une opération fondamentale Logic blocks
dans ces applications.
• Les manufacturiers de FPGAs ont donc rajouté des
multiplicateurs dédiés.
• Par exemple, le FPGA XC5VLX50T contient:
– 48 tranches DSP48E avec multiplicateurs de 25 × 18
bits signés

INF3500 : Conception et implémentation de systèmes numériques 60


3. Génération d’horloge

• La génération et la distribution du signal d’horloge


est un problème difficile.
• Un circuit peut nécessiter une dizaine d’horloges
de fréquences différentes.
• Le générateur accepte en entrée une horloge
externe et génère une ou plusieurs horloges Clock signal from

internes.
outside world Daughter clocks
used to drive
Clock
internal clock trees
Manager
or output pins
etc.

Special clock
pin and pad

INF3500 : Conception et implémentation de systèmes numériques 61


4. Distribution d’horloge

• Pour distribuer l’horloge à travers la puce tout en


minimisant le déphasage d’horloge, on utilise un
réseau en arbre dédié.
• Ce réseau est alimenté soit par une patte spéciale Clock
Flip-flops
du FPGA à laquelle est associé un amplificateur
tree

dédié, ou bien par l’entremise de signaux internes


pouvant être routés au même amplificateur.

Special clock
pin and pad

Clock signal from


outside world

INF3500 : Conception et implémentation de systèmes numériques 62


5. Microprocesseurs fixes

• Plusieurs FPGA intègrent des microprocesseurs


fixes, ex. PowerPC.
• N’utilisent pas de CLB ni de mémoire du FPGA.
• Architecture résultante très performante, SoC-sur-

Xilinx, Virtex-II Pro and Virtex-II Pro X Platform FPGAs: Complete Data Sheet, Nov. 2007.
FPGA.
• Accès rapide entre le microprocesseur fixe et le
reste de la logique, les multiplicateurs et la
mémoire.

Un ou deux PPC dans la série XC5VFX.


Aucun dans le XC5VLX

INF3500 : Conception et implémentation de systèmes numériques 63


Systèmes sur puces avec tissu programmable

• Une tendance plus récente est d’intégrer de la


logique programmable à un microprocesseur.
• Architecture résultante très performante de
System-on-Chip (SoC).
• Accès rapide entre le microprocesseur fixe et le
reste de la logique.
• Exemple: Xilinx – famille Zynq-7000

INF3500 : Conception et implémentation de systèmes numériques 64


Technologie de programmation pour FPGA

• La technologie SRAM est de loin la plus populaire


pour les FPGAs.
• Une cellule de mémoire SRAM comporte 4 ou 6
transistors.
• L’information est perdue quand l’alimentation est
coupée.
• Le fichier de configuration doit être entreposé
dans une mémoire ROM sur la planchette.
• La technologie SRAM est affectée par les
radiations, donc elle n’est pas appropriée pour les
applications spatiales.

INF3500 : Conception et implémentation de systèmes numériques 65

Vous aimerez peut-être aussi