Un FPGA ( Field-Programmable Gate Array ) est un type de circuit intégré configurable , reprogrammable à plusieurs reprises après sa fabrication. Les FPGA font partie des dispositifs logiques programmables (PLD). Ils sont constitués d'une matrice de blocs logiques programmables , interconnectés en grille, et configurables « sur site » pour s'interconnecter et réaliser diverses fonctions numériques. Les FPGA sont souvent utilisés pour la production en petite série de produits sur mesure, ainsi que dans la recherche et le développement, où le coût élevé des FPGA individuels est moins problématique et où la création et la fabrication d'un circuit personnalisé seraient irréalisables. Les FPGA trouvent également des applications dans les télécommunications, l'automobile, l'aérospatiale et l'industrie, qui tirent parti de leur flexibilité, de leur vitesse de traitement du signal élevée et de leurs capacités de traitement parallèle.
La configuration d'un FPGA est généralement décrite à l'aide d'un langage de description de matériel (HDL), par exemple VHDL , similaire à ceux utilisés pour les circuits intégrés spécifiques à une application (ASIC). Auparavant, on utilisait des schémas de circuits pour décrire cette configuration.
Les blocs logiques d'un FPGA peuvent être configurés pour réaliser des fonctions combinatoires complexes ou fonctionner comme des portes logiques simples telles que ET et OU exclusif . Dans la plupart des FPGA, les blocs logiques comprennent également des éléments de mémoire , qui peuvent être de simples bascules ou des blocs de mémoire plus sophistiqués. De nombreux FPGA peuvent être reprogrammés pour implémenter différentes fonctions logiques , permettant ainsi une reconfiguration flexible , à l'instar des logiciels informatiques .
Les FPGA jouent également un rôle dans le développement des systèmes embarqués grâce à leur capacité à démarrer le développement du logiciel système simultanément avec le matériel, à permettre des simulations de performances du système à une phase très précoce du développement et à permettre divers essais du système et itérations de conception avant de finaliser l'architecture du système.
Les FPGA sont également couramment utilisés lors du développement des ASIC pour accélérer le processus de simulation.
mémoires mortes programmables (PROM) et des dispositifs logiques programmables (PLD). Les PROM et les PLD pouvaient être programmés par lots en usine ou sur le terrain (programmables sur site).Altera a été fondée en 1983 et a livré le premier dispositif logique reprogrammable de l'industrie en 1984 – l'EP300 – qui comportait une fenêtre en quartz dans le boîtier permettant aux utilisateurs de faire briller une lampe ultraviolette sur la puce pour effacer les cellules EPROM qui contenaient la configuration du dispositif.
Xilinx (désormais propriété d' AMD ) a produit le premier FPGA (Field-Programmable Gate Array) commercialisable en 1985 : le XC2064 . Le XC2064 comportait des portes programmables et des interconnexions programmables entre les portes, marquant ainsi le début d'une nouvelle technologie et d'un nouveau marché . Le XC2064 disposait de 64 blocs logiques configurables (CLB) et de deux tables de correspondance (LUT) à trois entrées
En 1987, le Naval Surface Warfare Center a financé une expérience proposée par Steve Casselman visant à développer un ordinateur doté de 600 000 portes reprogrammables. Casselman a réussi et un brevet relatif au système a été délivré en 1992.
Altera et Xilinx ont continué à dominer le marché sans concurrence et ont connu une croissance rapide de 1985 au milieu des années 1990, période à laquelle l'émergence de concurrents a érodé une part importante de leurs parts de marché. En 1993, Actel (devenue Microsemi , puis Microchip ) détenait environ 18 % du marché.
Les années 1990 ont été une période de croissance rapide pour les FPGA, tant en termes de sophistication des circuits que de volume de production. Au début des années 1990, les FPGA étaient principalement utilisés dans les télécommunications et les réseaux . À la fin de la décennie, ils ont trouvé leur place dans les applications grand public, automobiles et industrielles.
En 2013, Altera (31 %), Xilinx (36 %) et Actel (10 %) représentaient ensemble environ 77 % du marché des FPGA.
Des entreprises comme Microsoft ont commencé à utiliser des FPGA pour accélérer les systèmes à hautes performances et à forte intensité de calcul (tels que les centres de données qui exploitent leur moteur de recherche Bing ), grâce à l' avantage de performances par watt qu'offrent les FPGA. Microsoft a commencé à utiliser des FPGA pour accélérer Bing en 2014 et, en 2018, a commencé à déployer des FPGA pour d'autres charges de travail de centres de données sur sa plateforme de cloud computing Azure .
Depuis 2019, les générations modernes de FPGA ont été intégrées à d'autres architectures comme les moteurs d'IA pour cibler les charges de travail dans le domaine de l'intelligence artificielle.
Croissance
Les chronologies suivantes indiquent les progrès réalisés dans différents aspects de la conception des FPGA.
Portes
- 1987 : 9 000 portes, Xilinx
- 1992 : 600 000, Département de la guerre de surface navale
- Début des années 2000 : millions
- 2013 : 50 millions, Xilinx
Taille du marché
- 1985 : Premier FPGA commercial : Xilinx XC2064
- 1987 : 14 millions de dollars
- de portes logiques et de blocs RAM permettant d'implémenter des calculs numériques complexes. Ils peuvent être utilisés pour implémenter toute fonction logique réalisable par un ASIC . La possibilité de mettre à jour les fonctionnalités après livraison, la reconfiguration partielle d'une partie de la conception et les faibles coûts d'ingénierie non récurrents par rapport à une conception ASIC (malgré un coût unitaire généralement plus élevé) offrent des avantages pour de nombreuses applications.
Les FPGA utilisant des débits d'E/S très rapides et des bus de données bidirectionnels , il devient difficile de vérifier la synchronisation correcte des données valides pendant les temps d'établissement et de maintien. L'optimisation de l'implantation permet d'allouer les ressources au sein des FPGA afin de respecter ces contraintes de synchronisation.
Certains FPGA possèdent des fonctionnalités analogiques en plus de leurs fonctions numériques. La fonctionnalité analogique la plus courante est la vitesse de balayage programmable sur chaque broche de sortie. Ceci permet à l'utilisateur de définir des vitesses faibles sur les broches faiblement chargées qui, autrement, présenteraient des oscillations ou un couplage inacceptables, et des vitesses plus élevées sur les canaux haute vitesse fortement chargés qui, autrement, fonctionneraient trop lentement. On trouve également fréquemment des circuits de commande d'oscillateurs à quartz, des oscillateurs RC intégrés et des boucles à verrouillage de phase (PLL) avec oscillateurs commandés en tension (VCO) intégrés , utilisés pour la génération et la gestion d'horloge, ainsi que pour les horloges d'émission et de récupération d'horloge des sérialiseurs/désérialiseurs (SERDES) haute vitesse. Les comparateurs différentiels sur les broches d'entrée, conçus pour être connectés à des canaux de signalisation différentiels , sont assez courants . Quelques FPGA mixtes intègrent des convertisseurs analogique-numérique (CAN) et numérique-analogique (CNA) périphériques avec des blocs de conditionnement de signaux analogiques, ce qui leur permet de fonctionner comme un système sur une puce (SoC). De tels dispositifs brouillent la frontière entre un FPGA, qui transporte des 0 et des 1 numériques sur sa matrice d'interconnexion programmable interne, et un réseau analogique programmable sur le terrain (FPAA), qui transporte des valeurs analogiques sur sa matrice d'interconnexion programmable interne.
Blocs logiques
Illustration simplifiée d'une cellule logique (LUT – table de consultation , FA – additionneur complet , DFF – bascule de type D ) L'architecture FPGA la plus courante se compose d'un réseau de blocs logiques appelés blocs logiques configurables (CLB) ou blocs de réseau logique (LAB) (selon le fabricant), de pastilles d'E/S et de canaux de routage. Généralement, tous les canaux de routage ont la même largeur (nombre de signaux). Plusieurs pastilles d'E/S peuvent tenir sur la hauteur d'une ligne ou la largeur d'une colonne du réseau.
Un circuit d'application doit être implémenté dans un FPGA doté de ressources adéquates. Si le nombre de blocs logiques et d'E/S requis est facilement déterminable à partir de la conception, le nombre de canaux de routage nécessaires peut varier considérablement, même pour des conceptions présentant la même quantité de logique. Par exemple, un commutateur matriciel nécessite beaucoup plus de routage qu'une matrice systolique comportant le même nombre de portes. Étant donné que les canaux de routage inutilisés augmentent le coût (et diminuent les performances) du FPGA sans apporter aucun avantage, les fabricants de FPGA s'efforcent de fournir juste assez de canaux pour que la plupart des conceptions compatibles en termes de tables de correspondance (LUT) et d'E/S puissent être routées . Ce nombre est déterminé par des estimations, telles que celles dérivées de la règle de Rent, ou par des expérimentations avec des conceptions existantes.
En général, un bloc logique est constitué de plusieurs cellules logiques. Une cellule typique comprend une LUT à 4 entrées, un additionneur complet et une bascule D. La LUT peut être divisée en deux LUT à 3 entrées. En mode normal, ces LUT sont combinées en une LUT à 4 entrées par le premier multiplexeur . En mode arithmétique , leurs sorties sont transmises à l'additionneur. Le mode de fonctionnement est programmé dans le deuxième multiplexeur. La sortie peut être synchrone ou asynchrone , selon la programmation du troisième multiplexeur. En pratique, l'additionneur entier ou une partie de celui-ci est stocké sous forme de fonctions dans les LUT afin d'optimiser l'espace mémoire .
Blocs durs
Les familles de FPGA modernes étendent les capacités mentionnées ci-dessus en intégrant des fonctionnalités de haut niveau directement dans le silicium. L'intégration de ces fonctions communes au sein du circuit permet de réduire la surface requise et d'améliorer leurs performances par rapport à une conception basée sur des primitives logiques. On peut citer comme exemples les multiplicateurs , les blocs DSP génériques , les processeurs embarqués , les circuits d'E/S haute vitesse et les mémoires embarquées .
Les FPGA haut de gamme peuvent intégrer des émetteurs-récepteurs multigigabits à haut débit et des cœurs IP matériels tels que des cœurs de processeur , des unités de contrôle d'accès au support Ethernet , des contrôleurs PCI ou PCI Express et des contrôleurs de mémoire externe . Ces cœurs coexistent avec la matrice programmable, mais sont construits à partir de transistors plutôt que de tables de correspondance (LUT). Ils offrent ainsi des performances et une consommation énergétique comparables à celles des ASIC, sans pour autant monopoliser les ressources de la matrice, libérant ainsi davantage de ressources pour la logique spécifique à l'application. Les émetteurs-récepteurs multigigabits intègrent également des circuits de conditionnement de signal hautes performances , ainsi que des sérialiseurs et désérialiseurs à haut débit, des composants qui ne peuvent être réalisés à partir de LUT. Les fonctionnalités de la couche physique (PHY) de haut niveau, telles que le codage de ligne, peuvent être implémentées ou non, en parallèle des sérialiseurs et désérialiseurs, dans la logique matérielle, selon le FPGA.
Soft core

Système sur puce entièrement programmable Xilinx Zynq - 7000 Une autre approche consiste à utiliser des cœurs IP de processeurs logiciels implémentés au sein de la logique FPGA. Nios II , MicroBlaze et Mico32 sont des exemples de processeurs logiciels répandus. De nombreux FPGA modernes sont programmés à l' exécution , ce qui a donné naissance au concept de calcul reconfigurable , ou systèmes reconfigurables : des processeurs qui se reconfigurent automatiquement en fonction de la tâche à accomplir. Par ailleurs, de nouvelles architectures non-FPGA commencent à émerger. Les microprocesseurs configurables par logiciel, tels que le Stretch S5000, adoptent une approche hybride en proposant sur une même puce un ensemble de cœurs de processeur et de cœurs programmables de type FPGA.
Intégration
En 2012, l'approche architecturale à gros grains a franchi une étape supplémentaire en combinant les blocs logiques et les interconnexions des FPGA traditionnels avec des microprocesseurs embarqués et des périphériques associés, afin de former un système complet sur une puce programmable . On trouve des exemples de telles technologies hybrides dans le SoC entièrement programmable Xilinx Zynq-7000 , qui intègre un processeur ARM Cortex-A9 MPCore bicœur à 1 GHz au sein de la matrice logique du FPGA , ou encore dans le FPGA Altera Arria V, qui comprend un processeur ARM Cortex-A9 MPCore bicœur à 800 MHz . L' Atmel FPSLIC est un autre exemple de ce type de dispositif, utilisant un processeur AVR associé à l'architecture logique programmable d'Atmel. Les dispositifs Microsemi SmartFusion intègrent un cœur de processeur ARM Cortex-M3 (avec jusqu'à 512 ko de mémoire flash et 64 ko de RAM) et des périphériques analogiques tels que des convertisseurs analogiques-numériques multicanaux et des convertisseurs numériques-analogiques dans leur matrice FPGA basée sur la mémoire flash .de circuits synchrones nécessitant un signal d'horloge . Les FPGA intègrent des réseaux de routage globaux et régionaux dédiés à l'horloge et à la réinitialisation, généralement implémentés sous forme d' arbre H , permettant ainsi une distribution avec un déphasage minimal . Les FPGA peuvent contenir des boucles à verrouillage de phase (PLL) ou à verrouillage de délai (DLL) analogiques pour synthétiser de nouvelles fréquences d'horloge et gérer la gigue . Les conceptions complexes peuvent utiliser plusieurs horloges avec des relations de fréquence et de phase différentes, formant chacune un domaine d'horloge distinct . Ces signaux d'horloge peuvent être générés localement par un oscillateur ou extraits d'un flux de données . Il convient d'être vigilant lors de la conception des circuits de transition entre domaines d'horloge afin d'éviter la métastabilité . Certains FPGA contiennent des blocs RAM à double port capables de fonctionner avec différentes horloges, facilitant ainsi la construction de FIFO et de tampons à double port assurant la transition entre les domaines d'horloge.
Architectures 3D
Pour réduire la taille et la consommation d'énergie des FPGA, des fournisseurs tels que Tabula et Xilinx ont introduit des architectures 3D ou empilées . Suite à l'introduction de ses FPGA de la série 7 de interposeur en silicium – une seule pièce de silicium qui supporte les interconnexions passives. Cette construction multi-puces permet également de réaliser différentes parties du FPGA avec des technologies de fabrication différentes, car les exigences de fabrication diffèrent entre la matrice FPGA elle-même et les émetteurs-récepteurs série à très haut débit ( hétérogène .
L'approche hétérogène d'Altera consiste à utiliser une seule puce FPGA monolithique et à connecter d'autres puces et technologies au FPGA à l'aide de la technologie EMIB (Embedded Multi-die Interconnect Bridge) d'Intel.
Programmation
À l'aide d'un outil de conception assistée par ordinateur (CAO) , une netlist adaptée à la technologie est générée. Cette netlist est ensuite placée sur l'architecture FPGA par un processus appelé placement et routage , généralement réalisé par le logiciel propriétaire du fabricant du FPGA. L'utilisateur valide les résultats par analyse temporelle , simulation et autres techniques de vérification et de validation . Une fois la conception et la validation terminées, le fichier binaire généré, généralement par le logiciel propriétaire du fabricant du FPGA, sert à (re)configurer le FPGA. Ce fichier est transféré vers le FPGA via une interface série ( JTAG ) ou vers un périphérique de mémoire externe tel qu'une EEPROM .
Les langages de description matérielle (HDL) les plus courants sont VHDL et Verilog . Le langage de programmation graphique LabVIEW de National Instruments (parfois appelé G ) dispose d'un module complémentaire pour FPGA permettant de cibler et de programmer le matériel FPGA. Verilog a été créé pour simplifier le processus, rendant les HDL plus robustes et flexibles. Verilog possède une syntaxe similaire à celle du C , contrairement à VHDL qui est basé sur Ada .
Pour simplifier la conception de systèmes complexes sur FPGA, il existe des bibliothèques de fonctions et de circuits complexes prédéfinis, testés et optimisés pour accélérer le processus de conception. Ces circuits prédéfinis sont généralement appelés cœurs de propriété intellectuelle (IP) et sont disponibles auprès des fabricants de FPGA et de fournisseurs tiers d'IP. Ils sont rarement gratuits et généralement distribués sous des licences propriétaires. D'autres circuits prédéfinis sont disponibles auprès de communautés de développeurs telles qu'OpenCores (généralement distribués sous des licences libres et open source comme la GPL , la BSD ou une licence similaire). Ces conceptions sont connues sous le nom de matériel open source .
Dans un flux de conception classique , un développeur d'applications FPGA simule la conception à plusieurs étapes du processus. Initialement, la description RTL en VHDL ou Verilog est simulée par la création de bancs de test permettant de simuler le système et d'observer les résultats. Ensuite, une fois que le moteur de synthèse a mappé la conception sur une netlist, celle-ci est traduite en une description au niveau des portes logiques , et la simulation est répétée pour vérifier que la synthèse s'est déroulée sans erreur. Enfin, la conception est implémentée dans le FPGA, ce qui permet d' annoter les valeurs de temps de propagation sur la netlist et de relancer la simulation avec ces valeurs.
Plus récemment, OpenCL (Open Computing Language) est utilisé par les programmeurs pour tirer parti des performances et de l'efficacité énergétique offertes par les FPGA. OpenCL permet aux programmeurs de développer du code en langage C. [ plus d'informations, voir la synthèse de haut niveau et la conversion C vers HDL .
La plupart des FPGA utilisent une approche basée sur la SRAM pour leur programmation. Ces FPGA sont programmables et reprogrammables en système, mais nécessitent des dispositifs de démarrage externes. Par exemple, des mémoires flash ou EEPROM peuvent charger des données dans la SRAM interne qui contrôle le routage et la logique. L'approche SRAM est basée sur la technologie CMOS .
Parmi les alternatives plus rares à l'approche SRAM, on peut citer :
- Fusible : programmable une seule fois. Bipolaire. Obsolète.
- Antifusible : programmable une seule fois. CMOS. Exemples : familles Actel SX et Axcelerator ; famille Quicklogic Eclipse II.
- PROM : technologie de mémoire morte programmable. Programmable une seule fois en raison de son boîtier en plastique. EPROM : mémoire morte programmable et effaçable. Programmable une seule fois, mais avec une fenêtre permettant son effacement par ultraviolets (UV). Technologie CMOS. Obsolète.
- EEPROM : mémoire morte programmable et effaçable électriquement. Effaçable même dans un boîtier plastique. Certaines EEPROM, mais pas toutes, sont programmables en système. Technologie CMOS.
- Mémoire flash : technologie EPROM effaçable à chaud. Effaçable même dans les boîtiers plastiques. Certaines mémoires flash, mais pas toutes, sont programmables en système. Généralement, une cellule flash est plus petite qu’une cellule EEPROM équivalente et, par conséquent, moins coûteuse à fabriquer. Technologie CMOS. Exemple : famille Actel ProASIC.
Fabricants
En 2016, Xilinx (désormais intégré à AMD ) et Altera, rivaux de longue date dans le secteur, étaient les leaders du marché des FPGA. À cette époque, ils contrôlaient près de 90 % du marché.
Xilinx et Altera proposent tous deux des logiciels propriétaires de conception électronique automatisée pour Windows et Linux ( ISE / Vivado et Quartus ) qui permettent aux ingénieurs de concevoir , d'analyser, de simuler et de synthétiser ( compiler ) leurs conceptions.
En mars 2010, Tabula a annoncé sa technologie FPGA utilisant une logique et une interconnexion à multiplexage temporel , promettant des économies potentielles pour les applications haute densité. Le 24 mars 2015, Tabula a officiellement cessé ses activités.
Le 1er juin 2015, Intel a annoncé son intention d'acquérir Altera pour environ 16,7 milliards de dollars américains et a finalisé l'acquisition le 30 décembre 2015.
Le 27 octobre 2020, AMD a annoncé son intention d'acquérir Xilinx et a finalisé l'acquisition d'une valeur d'environ 50 milliards de dollars américains en février 2022.
En février 2024, Altera est redevenue indépendante d'Intel.
Parmi les autres fabricants, on peut citer :
- Achronix , fabricant de FPGA à base de SRAM avec une vitesse de fabrication de 1,5 GHz
- Altium fournit un environnement de conception matériel-logiciel pour systèmes sur FPGA.
- Cologne Chip, concepteur et producteur de FPGA soutenu par le gouvernement allemand
- Lattice Semiconductor fabrique des FPGA basse consommation basés sur la SRAM, dotés d'une mémoire flash de configuration intégrée, d'un démarrage instantané et d' une reconfiguration à chaud.
- SiliconBlue Technologies fournit des FPGA à base de SRAM à très faible consommation avec mémoire de configuration non volatile intégrée en option ; acquis par Lattice en 2011
- Puce électronique :
- Microsemi (anciennement Actel ), fabricant de FPGA mixtes à base de mémoire flash et d' antifusibles ; acquis par Microchip en 2018.
- Atmel , une deuxième source de certains dispositifs compatibles avec Altera ; également FPSLIC calculable . Les FPGA peuvent servir à implémenter un microprocesseur logiciel , comme le Xilinx MicroBlaze ou l'Altera Nios II . Leur principal avantage réside dans leur vitesse d'exécution nettement supérieure pour certaines applications, grâce à leur nature parallèle et à l'optimisation du nombre de portes logiques utilisées pour certains processus.
Les FPGA ont été initialement conçus pour concurrencer les circuits logiques programmables complexes (CPLD) et implémenter la logique d'interface des cartes de circuits imprimés . Avec l'augmentation de leur taille, de leurs capacités et de leur vitesse, les FPGA ont pris en charge des fonctions supplémentaires, au point que certains sont désormais commercialisés comme des systèmes sur puce (SoC) complets. En particulier, avec l'introduction de multiplicateurs dédiés dans les architectures FPGA à la fin des années 1990, des applications qui étaient traditionnellement réservées aux processeurs de signaux numériques (DSP) ont commencé à utiliser les FPGA.
L'évolution des FPGA a favorisé l'essor de ces dispositifs, dont l'architecture permet le développement de solutions matérielles optimisées pour des tâches complexes, telles que la segmentation d'images IRM 3D, la transformée en ondelettes discrètes 3D, la reconstruction d'images tomographiques ou les systèmes TEP/IRM. Les solutions développées peuvent effectuer des calculs intensifs grâce au traitement parallèle, sont reprogrammables dynamiquement et présentent un faible coût, tout en répondant aux exigences strictes de temps réel liées à l'imagerie médicale.
Une autre tendance dans l'utilisation des FPGA est l'accélération matérielle , qui permet d'utiliser un FPGA pour accélérer certaines parties d'un algorithme et de répartir une partie des calculs entre le FPGA et un processeur classique. Le moteur de recherche Bing est connu pour avoir adopté l'accélération FPGA pour son algorithme de recherche en 2014. accélérateurs d'IA, notamment dans le cadre du projet Catapult de Microsoft , et pour accélérer les réseaux neuronaux artificiels pour les applications d'apprentissage automatique .
À l'origine, les FPGA étaient réservés à des applications verticales spécifiques à faible volume de production. Pour ces applications, le surcoût matériel unitaire d'une puce programmable est plus abordable que les ressources de développement nécessaires à la création d'un ASIC. Souvent, une puce sur mesure serait moins chère en grande quantité, mais les FPGA peuvent être privilégiés pour une mise sur le marché rapide. L'évolution des coûts et des performances a élargi le champ des applications possibles.
Les FPGA peuvent également être utilisés pour d'autres applications :
- Espace (avec durcissement aux radiations )
- Modules de sécurité matériels
- Transactions financières à haute vitesse
- Rétroinformatique (par exemple les projets MARS et MiSTer FPGA)
- Analyseurs différentiels numériques intégrés à grande échelle , une forme d' ordinateur analogique basé sur des éléments de calcul numérique
Utilisation par l'armée américaine
Les FPGA jouent un rôle crucial dans les communications militaires modernes, notamment dans des systèmes comme le Joint Tactical Radio System (JTRS) et dans des dispositifs proposés par des entreprises telles que Thales et Harris Corporation . Leur flexibilité et leur programmabilité les rendent idéaux pour les communications militaires, offrant un traitement du signal personnalisable et sécurisé. Dans le JTRS, utilisé par l'armée américaine, les FPGA assurent l'adaptabilité et le traitement en temps réel, essentiels pour répondre aux différentes normes de communication et méthodes de chiffrement.
Sécurité
En matière de sécurité matérielle , les FPGA présentent des avantages et des inconvénients par rapport aux ASIC ou aux microprocesseurs sécurisés. Leur flexibilité réduit le risque de modifications malveillantes lors de la fabrication . Auparavant, pour de nombreux FPGA, le flux de bits de conception était exposé lors de son chargement depuis une mémoire externe, généralement à la mise sous tension. Tous les principaux fabricants de FPGA proposent désormais aux concepteurs une gamme de solutions de sécurité, telles que le chiffrement et l'authentification du flux de bits . Par exemple, Altera et Xilinx offrent le chiffrement AES (jusqu'à 256 bits) pour les flux de bits stockés dans une mémoire flash externe. Les fonctions physiques non clonables (PUF) sont des circuits intégrés dotés de signatures uniques qui permettent de sécuriser les FPGA tout en occupant un espace matériel minimal.
Les FPGA qui stockent leur configuration en mémoire flash non volatile, comme les dispositifs programmables ProAsic 3 de Microsemi ou XP2 de Lattice , ne présentent pas le flux de bits et ne nécessitent aucun chiffrement . Les clients souhaitant une protection accrue contre la falsification peuvent opter pour des FPGA à écriture unique et antifusibles, proposés par des fournisseurs tels que Microsemi .
Avec ses FPGA et SoC Stratix 10, Altera a introduit un gestionnaire de périphériques sécurisé et des fonctions physiques non clonables pour fournir des niveaux élevés de protection contre les attaques physiques.
En 2012, les chercheurs Sergei Skorobogatov et Christopher Woods ont démontré que certains FPGA pouvaient être vulnérables à des actes malveillants. Ils ont découvert une faille de sécurité critique intégrée au silicium du ProAsic 3 d'Actel/Microsemi, le rendant vulnérable à plusieurs niveaux : reprogrammation des clés de chiffrement et d'accès , accès au flux binaire non chiffré, modification des fonctionnalités de bas niveau du silicium et extraction des données de configuration .
En 2020, une vulnérabilité critique (nommée Starbleed) a été découverte dans tous les FPGA de la série 7 de Xilinx, rendant le chiffrement du flux binaire inopérant. Aucune solution de contournement n'a été trouvée. Xilinx n'a pas produit de révision matérielle. Les dispositifs Ultrascale et ultérieurs, déjà commercialisés à l'époque, n'ont pas été affectés.
Technologies similaires
Historiquement, les FPGA étaient plus lents, moins économes en énergie et offraient généralement moins de fonctionnalités que leurs homologues ASIC. Une étude de 2006 a montré que les conceptions implémentées sur FPGA nécessitaient en moyenne 40 fois plus de surface, consommaient 12 fois plus d'énergie dynamique et fonctionnaient à un tiers de la vitesse des implémentations ASIC correspondantes.
Les FPGA présentent l'avantage de pouvoir reprogrammer les équipements sur site pour corriger des bogues ou apporter d'autres améliorations. Certains FPGA permettent une reconfiguration partielle , autorisant la reprogrammation d'une partie du dispositif tandis que d'autres parties continuent de fonctionner. Parmi les autres avantages, on peut citer un délai de commercialisation plus court et des coûts d'ingénierie non récurrents réduits . Les fournisseurs peuvent également opter pour une solution intermédiaire : le prototypage sur FPGA . Ils développent leur prototype matériel sur FPGA, mais fabriquent la version finale sous forme d'ASIC une fois la conception validée. C'est souvent le cas pour les nouvelles conceptions de processeurs.
Les principales différences entre les CPLD et les FPGA sont d'ordre architectural . Un CPLD possède une structure relativement restrictive, composée d'une ou plusieurs matrices logiques de type somme de produits programmables alimentant un nombre relativement restreint de registres cadencés . De ce fait, les CPLD sont moins flexibles, mais présentent l'avantage d' un temps de propagation plus prévisible . Les architectures FPGA, quant à elles, sont dominées par l'interconnexion. Cela les rend beaucoup plus flexibles, mais aussi beaucoup plus complexes à concevoir, ou du moins exige des logiciels de conception électronique (CAO) plus sophistiqués. Une autre distinction entre les FPGA et les CPLD réside dans leur taille : les FPGA sont généralement beaucoup plus volumineux en termes de ressources que les CPLD. En règle générale, seuls les FPGA intègrent des fonctions embarquées plus complexes , telles que des additionneurs , des multiplicateurs , de la mémoire et des sérialiseurs/désérialiseurs . Enfin, les CPLD intègrent une mémoire flash pour stocker leur configuration, tandis que les FPGA stockent généralement leur configuration dans de la SRAM et nécessitent une mémoire non volatile externe pour leur initialisation à la mise sous tension. Lorsqu'une conception requiert une mise en marche instantanée simple, les CPLD sont généralement préférés. Il arrive que des CPLD et des FPGA soient utilisés simultanément dans une même conception de système. Dans ces conceptions, les CPLD assurent généralement les fonctions logiques d'interface.