Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie
est strictement interdite. © Editions T.I. H 1 196 – 1
Architectures reconfigurables FPGA
par Olivier SENTIEYS
Professeur à l’École nationale supérieure des sciences appliquées
et de technologie (ENSSAT) de l’Université de Rennes 1 à Lannion
Chercheur et responsable du département architecture
et de l’équipe-projet CAIRN commune au laboratoire IRISA
et au Centre de recherche INRIA Rennes – Bretagne Atlantique
et Arnaud TISSERAND
Chercheur au Centre national de la recherche scientifique (CNRS) dans le laboratoire IRISA
et l’équipe-projet CAIRN à Lannion
Enseignant vacataire à l’École nationale supérieure des sciences appliquées
et de technologie (ENSSAT) et l’École normale supérieure de Rennes
es FPGA (Field Programmable Gate Arrays) sont des circuits intégrés dont
la fonctionnalité est entièrement programmable par l’utilisateur après fabri-
cation. Ils constituent une alternative aux circuits ASIC (Application Specific
Integrated Circuits) dont la fonctionnalité est totalement figée en fonderie.
Les FPGA sont un type particulier d’architecture reconfigurable. On parle de
configuration pour leur processus de programmation. Différents types d’architec-
tures reconfigurables se distinguent par le niveau de granulari des éléments
programmables internes. Dans les FPGA, les éléments ont une fonctionnalité pro-
grammable à grain fin, c’est-à-dire pour chaque bit individuellement. Il existe des
architectures reconfigurables à grain épais la fonctionnalité est programmable
au niveau des mots (par exemple 16 ou 32 bits).
1. Historique et terminologie..................................................................... H 1 196 - 3
2. Architecture générique d’un FPGA ..................................................... — 3
2.1 Blocs logiques configurables ...................................................................... 4
2.2 Interconnexions programmables ............................................................... 4
2.3 Blocs matériels dédiés................................................................................. 5
2.4 Processeurs dans les FPGA......................................................................... 6
2.5 Blocs entrées/sorties et horloges programmables ................................... 6
2.6 Configuration des FPGA .............................................................................. 6
3. Exemples de familles de FPGA............................................................. — 7
3.1 FPGA Altera .................................................................................................. 7
3.2 FPGA Xilinx................................................................................................... 10
3.3 FPGA Actel/Microsemi................................................................................. 15
3.4 FPGA Achronix ............................................................................................. 15
3.5 Autres types de FPGA.................................................................................. 15
3.6 Cartes de développement et d’accélération .............................................. 16
3.7 Conversion de technologies FPGA vers ASIC ........................................... 16
4. Outils de développement ....................................................................... — 16
4.1 Langages de description ............................................................................. 17
4.2 Synthèse logique ......................................................................................... 17
4.3 Synthèse de haut niveau ............................................................................. 17
4.4 Placement/routage ....................................................................................... 18
4.5 Bibliothèques et macrogénérateurs de blocs IP........................................ 19
5. Applications............................................................................................... — 19
6. Conclusion.................................................................................................. — 20
Pour en savoir plus ........................................................................................... Doc. H 1 196
L
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie
H 1 196 2est strictement interdite. © Editions T.I.
ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________
Les FPGA utilisent les technologies les plus avancées disponibles à un
moment donné (gravure 28 nm en 2012). Concevoir un ASIC dans ces techno-
logies permettrait d’obtenir un système extrêmement performant, mais au prix
d’un investissement colossal. Il faut, en effet, une équipe de conception impor-
tante, des outils coûteux et complexes, plusieurs mois de conception et enfin
un budget important pour la fabrication. De plus, les délais de fabrication chez
le fondeur peuvent être importants (quelques mois). Le temps de conception et
vérification d’une solution FPGA est beaucoup plus court qu’en ASIC et néces-
site moins d’efforts et de personnel. Bon nombre de détails techniques sont
réglés par le fabricant du FPGA.
Les FPGA sont fabriqués en grands volumes, ce qui permet de partager les
coûts de conception par tous les clients. Un FPGA coûte quelques euros, pour
les plus simples, à quelques centaines (voire milliers) pour les plus complexes.
Pour des petites séries, les FPGA sont bien plus accessibles que des ASIC. Bien
entendu, pour des grands volumes, une solution ASIC est plus rentable.
Les mécanismes de configuration des FPGA réduisent les performances par
rapport à des solutions ASIC. La vitesse est moindre et la consommation
d’énergie supérieure. Mais le caractère reconfigurable permet d’optimiser le
système dans le temps. On peut imaginer de mettre rapidement sur le marché
une première solution, puis de l’améliorer dans le temps (Time-To-Market
réduit) ou bien de supporter des nouveaux standards dans le temps sans
devoir les « émuler » en logiciel.
Les FPGA fournissent les très hautes performances du matériel mais avec
une utilisation simple et rapide par configuration logicielle. Ainsi, on les
retrouve dans de nombreux domaines d’applications : calcul à hautes perfor-
mances, systèmes embarqués, télécommunications, routeurs de réseaux,
réseaux sans fil, traitement du signal et des images, imagerie médicale, vision
par ordinateur, cryptologie, dispositifs de sécurité, capteurs biomédicaux,
bioinformatique, prototypage de circuits, etc. Les FPGA sont devenus le
support matériel de base de systèmes sur puce complets ou SoC (System on
Chip). Toutes les fonctionnalités sont alors intégrées dans le FPGA.
Liste des acronymes en anglais
ADC Analog to Digital Converter
AES Advanced Encryption Standard
ALM Adaptive Logic Module
ASIC Application Specific Integrated Circuit
BRAM Block RAM
CLB Configurable Logic Block
CMOS Complementary Metal Oxide Semiconductor
CPA Carry Propagation Adder
CPLD Complex Programmable Logic Device
DAC Digital to Analog Converter
DSP Digital Signal Processing
FIFO First-In First-Out
FPGA Field Programmable Gate Array
FSM Finite State Machine
GMAC Giga Multiply and Accumulate
IO Input/Output
IP Intellectual Property
ISP In System Programming
LAB Logic Array Block
LE Logic Element
LUT Look-Up Table
MAC Multiply and Accumulate
NMOS Negative Metal Oxide Semiconductor Transistor
PLA Programmable Logic Array
PMOS Positive Metal Oxide Semiconductor Transistor
OTP One Time Programming
P&R Place and Route
RAM Random Access Memory
RISC Reduced Instruction Set Computer
SoC System on Chip
SRAM Static Random Access Memory
Liste des acronymes en anglais (suite)
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5tiwekacontentpdf_h1196
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie
est strictement interdite. © Editions T.I. H 1 196 – 3
______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA
1. Historique et terminologie
Les circuits intégrés permettent d’atteindre des très hautes
performances pour une faible consommation d’énergie
comparativement à des solutions logicielles. Cela s’explique par la
spécialisation des fonctionnalités intégrées dans le circuit. Par
contre, un circuit intégré est dédié à une tâche, ou un petit ensemble
de tâches, alors qu’un processeur a une flexibilité quasiment sans
limite. Les architectures reconfigurables, en particulier les FPGA,
offrent, dans une certaine mesure, des compromis entre flexibilité,
coût et performances inaccessibles aux ASIC et aux processeurs.
Très tôt dans l’histoire de la micro-électronique, plusieurs dispo-
sitifs ont été proposés pour rendre les circuits intégrés plus flexi-
bles par programmation ou configuration. Deux niveaux de
programmation ont été proposés : une programmation directe et
totale par l’utilisateur et une programmation partielle en fonderie.
Les premiers à apparaître furent les PLA (Programmable Logic
Arrays ), des dispositifs très simples et totalement programmables
par l’utilisateur. L’apparition de ces circuits date du début des
années 1970. Leur principe est illustré en figure 1.
Le « plan ET » est composé de deux réseaux de fils qui se
croisent (sans contact avant configuration) : celui des fils des
entrées xi (et leurs complémentaires ), et celui des fils en entrée
des six portes ET. Le « plan OU » est composé de deux réseaux de
fils : celui des produits pi et celui des entrées des deux portes OU.
La configuration se fait en créant un contact électrique entre les
fils des plans aux bons endroits (les petits carrés noirs sur la
figure). La figure 1 illustre une configuration avec les produits :
et les sorties :
En pratique, on utilise des portes NON-ET, NON-OU et des inver-
seurs à la place des portes ET et OU, car ces dernières sont moins
efficaces en technologie CMOS (Complementary Metal Oxide
Semiconductor ).
Les circuits prédiffusés (Gate Array) sont des circuits dont la fonc-
tionnaliest définie par l’utilisateur mais « configurée » par le fon-
deur. Dans ces circuits, il y a deux types de masques pour la
fabrication : les masques communs et les masques personnalisables.
Les masques communs sont identiques pour tous les circuits et
clients. Ils sont utilisés pour les couches basses du circuit (dopages,
isolants et grilles des transistors). Ce sont les couches les plus coûteu-
ses à la fabrication. Des plaquettes (Wafers) sont produites en grands
volumes pour ces masques communs afin de réduire les coûts par
mutualisation. Les masques personnalisables correspondent aux
couches supérieures du circuit (niveaux de métallisation, connexions
et isolants). Ces masques dépendent du circuit et du client (qui les
spécifie). Le nombre d’étapes, et donc le coût, pour la fabrication est
réduit car les étapes de réalisation des plaquettes « prédiffusées »
sont faites pour des grands volumes. Le temps de fabrication est
donc plus court pour le client. Bien entendu, la flexibilité est limitée.
Les circuits CPLD (Complex Programmable Logic Device) sont
une évolution des PLA. Ces circuits contiennent des portes logiques
programmables et du routage, lui aussi programmable. Des bascu-
les sont disponibles mais uniquement sur les entrées/sorties du cir-
cuit. Ils sont beaucoup utilisés comme interfaces logiques entre
différents circuits.
2. Architecture générique
d’un FPGA
Cette mémoire, qu’elle soit de type volatile ou non-volatile, peut
être programmée directement par l’utilisateur (d’où le terme Field
Programmable ) sans nécessiter un passage coûteux en fonderie.
D’une façon générale, un FPGA peut être vu comme un tableau
d’éléments logiques élémentaires (d’où le terme Gate Array ) dont
la fonctionnalité d’un élément et sa connexion avec un
sous-ensemble d’éléments, voisins ou distants, dépendent de la
configuration chargée dans le plan mémoire. La figure 2 donne
une vue générique de l’architecture d’un FPGA. On y voit une zone
homogène prenant la forme d’une large matrice connectant :
– des blocs logiques (BL) ;
– des blocs d’entrée/sortie (E/S) ;
– des blocs de routage (R) selon des motifs variant selon les
familles et les fabricants (§ 3).
La taille de cette matrice dépasse maintenant facilement les
105 BL. À cette architecture très régulière s’ajoutent depuis
quelques années différents éléments permettant de rendre le sys-
tème implanté dans le FPGA beaucoup plus efficace en termes de
performance ou d’énergie consommée. On trouve par exemple :
– des blocs mémoire (RAM) de tailles diverses ;
– des blocs arithmétiques optimisés pour les principales fonctions
du traitement du signal ou de l’image (DSP) ;
Figure 1 – Exemple de PLA (Programmable Logic Arrays )
x
i
( , , , ) ( , , ,
)
p p p p x x x x x x x x x
1 2 3 4 1 2 2 3 1 3 1 2 3
=
y x x x x x x y x x x x x
1 1 2 2 3 1 3 2 2 3 1 2 3
= + + = +et
x1
x2
x3
y1
y2
p1p2p3p4p5p6
Plan ET Plan OU
Nous donnons le vocabulaire technique principal en français
et en anglais quand la traduction n’est pas immédiate, par
exemple : bascule (Flip-Flop). Nous avons pris le parti de ne pas
traduire en français les acronymes ou abréviations en anglais du
fait de leur très large utilisation dans les documents en français.
Les différentes informations quantitatives données sont
tirées d’analyses personnelles des auteurs. Elles sont poten-
tiellement erronées et ne représentent en rien les informations
officielles fournies par les fabricants.
Un FPGA est un circuit intégré dont la fonctionnalité peut
être « imprimée » dans le matériel grâce à une configuration
chargée dans une mémoire.
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5
ARCHITECTURES RECONFIGURABLES FPGA ______________________________________________________________________________________________
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie
est strictement interdite. © Editions T.I.
H 1 196 – 4
– des blocs de génération d’horloges programmables par l’utili-
sateur (horloge) ;
– des blocs contenant un périphérique spécifique (PERI) ;
– ou, de plus en plus, des processeurs enfouis dans le FPGA
(PROC).
Ces derniers peuvent être présents en plusieurs exemplaires
dans la puce et permettent de contrôler, de façon très efficace, le
système complet. Il est donc maintenant possible de réaliser de
véritables systèmes multiprocesseurs au sein de certains gros
FPGA.
La reconfiguration matérielle du FPGA a cependant un coût
puisqu’elle ajoute de nombreux composants d’interconnexion (R
dans la figure 2) qui impliquent des pertes importantes en termes
de surface et de performances (fréquence d’horloge, consommation
d’énergie). On estime par exemple à plus de 90 % de la surface
totale celle occupée par les éléments servant aux interconnexions et
à mémoriser la configuration. De même, les fréquences de fonction-
nement typiques des FPGA n’atteignent que quelques centaines de
MHz tandis que les microprocesseurs peuvent fonctionner à quel-
ques GHz. Une opération arithmétique implantée en dur dans un
microprocesseur ou un ASIC peut donc être environ 10 fois plus effi-
cace que sur un FPGA. Cependant, grâce au parallélisme massif dis-
ponible dans les FPGA récents, ceux-ci peuvent contrebalancer ces
inconvénients au niveau de l’exécution de l’application complète et
dépasse ainsi souvent les performances des microprocesseurs pour
de nombreuses applications. De plus, la flexibilité de grain très fin
permet par exemple d’implanter des contrôleurs très efficaces en
comparaison d’un processeur complexe, ou de tirer partie des
tailles de données de façon ad hoc.
2.1 Blocs logiques configurables
L’élément de calcul de base présent depuis les premiers FPGA
est un bloc logique (BL) programmable. La figure 3 montre un
exemple représentatif de BL. Celui-ci comprend en général une
petite mémoire programmable que l’on appelle une LUT (Look-Up
Table ) associée à une bascule (FF). Celle-ci peut être utilisée ou
non selon la position (programmable par la configuration) du mul-
tiplexeur en sortie de la cellule. La LUT (ici une LUT à quatre
entrées) permet de réaliser n’importe quelle fonction logique à
quatre entrées et une sortie.
Comme les fonctions arithmétiques sont souvent critiques dans
les applications ciblées, un chemin spécifique pour la propagation
de la retenue (CL) est prévu dans le BL afin de calculer la retenue
sortante Cout en fonction des entrées Ai et de la retenue entrante
Cin. Cela permet donc de réaliser efficacement des structures
d’additions à propagation de la retenue CPA (Carry Propagate
Adder ) car celle-ci est propagée directement aux BL voisins sans
passer par des blocs de routage généraux, ce qui serait pénalisant
en termes de performance. Un additionneur 16 bits à propagation
de la retenue peut donc être réalisé à l’aide de 16 BL de façon
assez efficace et très régulière dans une colonne de la matrice de
BL.
La configuration d’un BL est donc constituée d’un ensemble de
bits permettant de spécifier :
– la fonction de la LUT ;
– la présence ou non de la bascule ;
– la provenance des signaux de reset et d’horloge (Clock) ;
– l’utilisation ou non du bloc logique de propagation de la retenue
(CL) ;
– et bien d’autres fonctionnalités pour les BL des FPGA récents.
On voit donc que plus de 20 bits sont nécessaires pour
configurer un BL très simple, ce qui représente une taille mémoire
importante pour les gros FPGA de plus de 105 BL.
2.2 Interconnexions programmables
Afin de programmer une fonctionnalité spécifique dans un FPGA,
il est nécessaire de connecter les BL entre eux et les BL avec d’autres
blocs du FPGA (par exemple, des blocs DSP, des mémoires ou des
Figure 2 – Vue générique d’un FPGA
Exemple : un filtre sur 7 bits est bien plus efficace sur un FPGA car
configuré pour cette largeur, alors qu’un processeur 32 bits est
largement surdimensionné.
Horloge
BL : bloc logique
R : bloc de routage
E/S : bloc d'entrée/sortie
RAM : bloc mémoire
DSP : bloc arithmétique de traitement du signal
Horloge : bloc de génération d'horloges
PERI : bloc contenant un périphérique spécifique
PROC : processeur enfoui dans le FPGA
E/S
BL
PERI
R
A
M
D
S
P
R
PROC
Figure 3 – Vue générique d’un bloc logique (BL) de FPGA
Exemple : on peut configurer :
Exemple : 24 = 16 bits pour une LUT 4 1
A0
A1
A2
A3
Cout
Clock
Reset
S
Cin
LUT CL FF
LUT :
CL :
FF :
Look-Up Table
Carry Logic
Flip-Flop
S A A A A S A A A A
=+=⋅ ⋅ 0 1 2 3 0 1 2 3ou
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5tiwekacontentpdf_h1196
Toute reproduction sans autorisation du Centre français d’exploitation du droit de copie
est strictement interdite. © Editions T.I. H 1 196 – 5
______________________________________________________________________________________________ ARCHITECTURES RECONFIGURABLES FPGA
entrées/sorties du composant). Pour cela, un FPGA s’appuie sur une
structure d’interconnexions programmables dont l’objectif est de
créer un chemin qui soit le plus court possible entre deux points du
FPGA (par exemple, la sortie d’un BL avec l’entrée d’un autre BL). La
figure 4 représente une structure possible d’un bloc d’intercon-
nexion programmable d’un FPGA. La figure 4a représente un exem-
ple de structure élémentaire permettant de connecter quatre signaux
(notés nord, sud, est et ouest) entre eux. Les losanges sont des bits
de configuration qui permettent de configurer le schéma de
connexions entre les quatre entrées/sorties. Grâce aux interrupteurs
représentés sur la figure par deux transistors NMOS et PMOS en
parallèle, il est donc possible de connecter n’importe quel signal à
un, deux ou trois de ses voisins (par exemple, le signal issu de
l’entrée nord peut être connecté vers les sorties sud et est). Il est
important de noter que chaque signal peut être considéré soit
comme une entrée, soit comme une sortie. La figure 4b prolonge la
structure élémentaire (représentée ici par un point noir) afin de
connecter quatre blocs de quatre signaux entre eux. Cette structure,
appelée SB (Switch Box ) dans la littérature, peut prendre diverses
formes selon la complexi du routage envisagé. On voit sur cet
exemple que 6 bits sont nécessaires pour configurer un
commutateur élémentaire et donc 96 bits pour le commutateur 4 × 4
de la figure 4a. À nouveau, cela représente une taille mémoire très
importante pour les gros FPGA actuels de plus de 105 blocs logiques.
La structure pour les interconnexions programmables dans les
circuits FPGA est donc principalement composée de Switch Box
(SB) réparties sur la totalité du circuit. Celles-ci sont interconnectées
entre elles et connectées aux différents BL à l’aide de fils métallisés.
Parallèlement à ces lignes, nous trouvons des matrices programma-
bles horizontalement et verticalement entre les divers BL. Le rôle de
cette structure d’interconnexions est de relier avec un maximum
d’efficacité les blocs logiques et les entrées/sorties afin que le taux
d’utilisation dans un circuit donné soit le plus élevé possible. La plu-
part du temps, cette structure n’est pas homogène mais hiérarchi-
que et contient différents motifs de connexion.
– Tout d’abord, un ensemble limité de BL peut être regroupé au
sein d’un cluster à l’aide d’un réseau d’interconnexion totalement
connecté, ce qui permet ainsi de réaliser des fonctions logiques de
type table à un plus grand nombre d’entrées sans utiliser des res-
sources de routage qui pénalisent les performances.
– Les connexions les plus classiques sont les interconnexions
directes entre une SB et une autre SB voisine, un BL voisin ou un
bloc d’entrée/sortie, selon une topologie matricielle régulière
proche de celle de la figure 2. Grâce à cette structure, il est par
exemple possible de connecter la sortie d’un BL à l’entrée d’un autre
BL plus ou moins proche en passant à travers un nombre faible de
SB.
– Enfin, il existe des lignes métallisées plus longues qui par-
courent toute la longueur et la largeur du FPGA et qui permettent
de transmettre, avec un temps de propagation plus faible, les
signaux entre différents éléments plus éloignés. On peut citer par
exemple le routage des horloges, mais aussi les connexions aux
mémoires, aux blocs DSP ou aux entrées/sorties. Ces longues
lignes, bien que plus performantes, sont en nombre limité et
doivent donc être utilisées en priorité pour les signaux critiques
par les outils de routage du circuit FPGA.
2.3 Blocs matériels dédiés
La réalisation d’éléments de mémoire est primordiale dans bon
nombre d’applications soit pour stocker temporairement des
petites quantités données, soit pour augmenter le débit en utilisant
des techniques de pipeline. Dans les FPGA des premières géné-
rations, les mémoires pouvaient être réalisées à l’aide de deux
éléments : les bascules et les LUT des blocs logiques. L’utilisation
massive des bascules permet de réaliser des mémoires syn-
chrones tels que des régistres, des bancs de registres, ou encore
des FIFO (First-In First-Out ), tandis que les LUT peuvent être
configurées en structures de type SRAM. L’utilisation des bascules
ou des LUT pose deux problèmes majeurs pour faire des blocs
mémoires : leur nombre limité et l’important délai engendré par le
passage dans le routage programmable. Ainsi, la plupart des fabri-
cants de FPGA a intégré des petites mémoires câblées directement
dans la matrice de blocs logiques de leurs circuits. Ces blocs sont
des mémoires très denses en termes de nombres de bits par unité
de surface de silicium. Cet ajout de blocs dédiés à la mémorisation
permet à la fois d’augmenter significativement les performances et
la quantité de mémoire utilisable. Des petits blocs de mémoires,
regroupés en colonnes, sont insérés régulièrement dans la
matrice. L’architecture du FPGA est alors un peu moins homogène,
ce qui peut compliquer un peu la tâche des outils de CAO (§ 4).
Dans la plupart des cas, ces blocs mémoire sont configurables
selon plusieurs tailles (par exemple, des blocs de 1 024 × 8 bits ou
de 256 × 32 bits pour un bloc RAM de 8 Ko).
La très grande flexibilité permise par les blocs logiques
configurables des FPGA se paye en terme de vitesse. En effet, le
passage des signaux électriques de l’utilisateur à travers la logique
de configuration (même une fois celle-ci configurée) engendre des
Figure 4 – Bloc d’interconnexion programmable d’un FPGA
Nord (i)
Sud (i)
Est (i)Ouest (i)
Bits de configuration
Nord
Sud
Est
Ouest
commutateur élémentaire
a
commutateur d'interconnexion
b
Exemple : les circuits Altera regroupent 8 BL au sein d’un bloc
appelée LAB.
Ce document a été délivré pour le compte de 7200092269 - cerist // 193.194.76.5
1 / 22 100%
Study collections
La catégorie de ce document est-elle correcte?
Merci pour votre participation!

Faire une suggestion

Avez-vous trouvé des erreurs dans linterface ou les textes ? Ou savez-vous comment améliorer linterface utilisateur de StudyLib ? Nhésitez pas à envoyer vos suggestions. Cest très important pour nous !