Principes de base des FPGA : architecture, applications et utilisations
Le Field Programmable Gate Array (FPGA) est un circuit intégré composé de blocs matériels internes avec des interconnexions programmables par l'utilisateur pour personnaliser le fonctionnement pour une application spécifique.
Qu'est-ce qu'un FPGA ?
Le Field Programmable Gate Array (FPGA) est un circuit intégré composé de blocs matériels internes avec des interconnexions programmables par l'utilisateur pour personnaliser le fonctionnement d'une application spécifique. Les interconnexions peuvent être reprogrammées facilement, permettant à un FPGA de s'adapter aux modifications d'un design ou même de prendre en charge une nouvelle application pendant la durée de vie de la pièce.
Le FPGA trouve ses origines dans des dispositifs antérieurs tels que les mémoires programmables en lecture seule (PROM) et les dispositifs logiques programmables (PLD). Ces dispositifs pouvaient être programmés soit en usine, soit sur le terrain, mais utilisaient une technologie de fusible (d'où l'expression « graver une PROM ») et ne pouvaient pas être modifiés une fois programmés. En revanche, le FPGA stocke ses informations de configuration dans un support reprogrammable tel que de la mémoire statique RAM (SRAM) ou de la mémoire flash. Les fabricants de FPGA incluent Intel, Lattice Semiconductor, Microchip Technology et Microsemi.
Architecture FPGA
Une architecture FPGA de base (Figure 1) se compose de milliers d'éléments fondamentaux appelés blocs logiques configurables (CLBs), entourés d'un système d'interconnexions programmables, appelé une structure, qui achemine les signaux entre les CLBs. Les blocs d'entrée/sortie (I/O) assurent l'interface entre le FPGA et les dispositifs externes.
Selon le fabricant, le CLB peut également être désigné comme un bloc logique (LB), un élément logique (LE) ou une cellule logique (LC).
L'architecture fondamentale des FPGA (Source de l'image : National Instruments)
Figure 1
Un CLB individuel (Figure 2) est constitué de plusieurs blocs logiques. Une table de correspondance (LUT) est une caractéristique propre à un FPGA. Une LUT stocke une liste prédéfinie de sorties logiques pour toute combinaison d'entrées : les LUT comportant de quatre à six bits d'entrée sont largement utilisées. Les fonctions logiques standard telles que les multiplexeurs (mux), les additionneurs complets (FAs) et les bascules sont également courantes.
Un CLB simplifié : La LUT à quatre entrées est constituée de deux unités à trois entrées. (Source de l'image : Wikipedia)
Figure 2
Le nombre et la disposition des composants dans le CLB varient selon le dispositif ; l'exemple simplifié de la Figure 2 contient deux LUTs à trois entrées (1), un FA (3) et un bascule de type D (5), ainsi qu'un multiplexeur standard (2) et deux multiplexeurs, (4) et (6), qui sont configurés lors de la programmation de l'FPGA.
Ce CLB simplifié dispose de deux modes de fonctionnement. En mode normal, les LUT sont combinées avec le Mux 2 pour former une LUT à quatre entrées ; en mode arithmétique, les sorties des LUT sont utilisées comme entrées pour le FA avec une entrée de report provenant d'un autre CLB. Le Mux 4 sélectionne entre la sortie du FA ou la sortie des LUT. Le Mux 6 détermine si l'opération est asynchrone ou synchronisée avec l'horloge FPGA via le bascule D.
Les FPGA de génération actuelle incluent des CLB plus complexes capables d'effectuer plusieurs opérations avec un seul bloc ; les CLB peuvent se combiner pour des opérations plus complexes telles que des multiplicateurs, des registres, des compteurs et même des fonctions de traitement de signal numérique (DSP).
CPLD vs FPGA
À l'origine, les FPGA comprenaient les blocs de la Figure 1 et peu d'autres choses, mais désormais les concepteurs peuvent choisir parmi des produits avec une large gamme de fonctionnalités. Les dispositifs moins complexes tels que les dispositifs logiques programmables simples (SPLD) et les dispositifs logiques programmables complexes (CPLD) comblent le fossé entre les dispositifs logiques discrets et les FPGA d'entrée de gamme.
Les FPGA d'entrée de gamme mettent l'accent sur une faible consommation d'énergie, une faible densité logique et une faible complexité par puce. Les dispositifs à fonctions avancées ajoutent des blocs fonctionnels dédiés à des tâches spécifiques : des exemples incluent des composants de gestion d'horloge, des boucles à verrouillage de phase (PLLs), des sérialiseurs et désérialiseurs haute vitesse, des MAC Ethernet, des contrôleurs PCI express et des émetteurs-récepteurs haute vitesse. Ces blocs peuvent être soit implémentés avec des CLB—appelés IP souple—soit conçus comme des circuits distincts, c'est-à-dire des IP matériel. Les blocs IP matériel gagnent en performance au détriment de la reconfigurabilité.
À l'extrémité supérieure, la famille de produits FPGA comprend des composants complexes de type système sur puce (SoC) qui intègrent l'architecture FPGA, le hard IP et un cœur de microprocesseur CPU dans un seul composant. Par rapport à des dispositifs séparés, un FPGA SoC offre une intégration plus élevée, une consommation d'énergie réduite, une taille de carte plus petite et une communication à plus large bande passante entre le cœur et les autres blocs.
SoC FPGAs
Les SoC FPGA incluent une large gamme de capacités de traitement pour répondre à différentes applications. Un SoC FPGA économique et à faible consommation d’énergie, comme le Cyclone V d’Intel, cible par exemple des applications à grand volume telles que les entraînements de contrôle moteur industriel, les passerelles de protocoles, les cartes de traitement vidéo et les appareils portables. Le dispositif (Figure 3) comporte deux parties distinctes : la portion FPGA et un système de processeur intégré (HPS) basé sur un ou deux cœurs Arm Cortex-A9 MPCORE 32 bits fonctionnant à 925 MHz. Chaque partie contient son propre ensemble de périphériques, qui inclut des IP intégrées provenant de fournisseurs tiers.
Le diagramme en blocs interne du Cyclone V SoC (Source de l'image : Cornell University)
Figure 3
À l'autre extrémité de l'échelle, le Stratix 10 SX vise les applications haute performance dans les communications, l'accélération des centres de données, le calcul haute performance (HPC), le traitement radar et le prototypage ASIC ; ce FPGA comprend un processeur quadricœur 64 bits Arm Cortex-A53 fonctionnant jusqu'à 1,5 GHz.
Conception FPGA
Comment transformons-nous cette collection de milliers de blocs matériels en une configuration correcte pour exécuter l'application ? Une conception basée sur FPGA commence par la définition des tâches de calcul requises dans l'outil de développement, puis leur compilation dans un fichier de configuration contenant des informations sur la manière de connecter les CLB et autres modules. Le processus est similaire à un cycle de développement logiciel, sauf que l'objectif est de concevoir le matériel lui-même plutôt qu'un ensemble d'instructions à exécuter sur une plate-forme matérielle prédéfinie.
Les concepteurs ont traditionnellement utilisé un langage de description matériel (HDL) tel que VHDL (Figure 4) ou Verilog pour concevoir la configuration du FPGA.
Exemple de code VHDL pour un additionneur signé (Source de l'image : Wikipedia)
Figure 4
Une fois la conception FPGA créée et vérifiée à l'aide de HDL, le compilateur prend le fichier basé sur du texte et génère un fichier de configuration contenant des informations sur la manière dont les composants doivent être câblés ensemble. Même si le code HDL ne comporte aucune erreur, choisir le mauvais FPGA peut tout de même entraîner l'échec de la compilation—par exemple, si le FPGA manque d'un type de ressource spécifique ou si le compilateur ne peut pas créer les routes nécessaires entre les composants.
Un défi avec une approche HDL est que la configuration d'un FPGA nécessite à la fois des compétences en codage et une connaissance détaillée du matériel sous-jacent, et l'expertise requise n'est pas largement disponible.
En conséquence, les fournisseurs proposent des kits de développement logiciel (SDK) qui permettent aux concepteurs de développer des solutions FPGA dans des langages de haut niveau populaires tels que C/C++, Python et OpenCL. Des outils de conception de synthèse de haut niveau (HLS) sont également disponibles ; ceux-ci fonctionnent sur une plateforme telle que LabVIEW de National Instrument et utilisent des diagrammes de blocs graphiques au lieu de lignes de code.
Utilisations des FPGA : Un choix attractif pour certaines applications
La capacité de configurer le matériel du FPGA, de le reconfigurer si nécessaire et de l'optimiser pour un ensemble particulier de fonctions rend le FPGA attrayant dans de nombreuses applications.
Les FPGA sont souvent utilisés pour offrir une solution personnalisée dans des situations où le développement d'un ASIC serait trop coûteux ou prendrait trop de temps. Une application FPGA peut être configurée en quelques heures ou quelques jours au lieu de plusieurs mois. Bien sûr, la flexibilité du FPGA a un coût : un FPGA est susceptible d'être plus lent, de nécessiter plus de surface de PCB et de consommer plus d'énergie qu'un ASIC équivalent.
Même lorsqu'un ASIC est conçu pour une production en grande série, les FPGAs sont largement utilisés pour la validation des systèmes, y compris la validation pré-silicium, la validation post-silicium et le développement de firmware. Cela permet aux fabricants de valider leur conception avant que la puce ne soit produite en usine.
Applications FPGA
De nombreuses applications reposent sur l'exécution parallèle d'opérations identiques ; la capacité à configurer les CLB du FPGA en centaines ou milliers de blocs de traitement identiques a des applications dans le traitement d'images, l'intelligence artificielle (AI), les accélérateurs matériels de centres de données, les réseaux d'entreprise et les systèmes avancés d'aide à la conduite (ADAS) dans le secteur automobile.
De nombreux domaines d'application évoluent très rapidement à mesure que les exigences changent et que de nouveaux protocoles et standards sont adoptés. Les FPGA permettent aux fabricants de mettre en œuvre des systèmes pouvant être mis à jour en cas de besoin.
Un bon exemple d'utilisation des FPGA est la recherche à haute vitesse : Microsoft utilise des FPGA dans ses centres de données pour exécuter les algorithmes de recherche Bing. Le FPGA peut être modifié pour prendre en charge de nouveaux algorithmes à mesure qu'ils sont créés. Si les besoins évoluent, le design peut être réaffecté pour exécuter des routines de simulation ou de modélisation dans une application HPC. Cette flexibilité est difficile voire impossible à atteindre avec un ASIC.
Les autres utilisations des FPGA incluent l’aérospatiale et la défense, l’électronique médicale, la télévision numérique, l’électronique grand public, le contrôle des moteurs industriels, les instruments scientifiques, les systèmes de cybersécurité et les communications sans fil.
Historique des FPGA : Quelle est la prochaine étape ?
Avec ces applications émergentes, le marché des FPGA connaît une croissance soutenue : il a été évalué à 5,34 milliards de dollars en 2016 et devrait atteindre 9,50 milliards de dollars en 2023, selon les chercheurs du secteur MarketsandMarkets. Cela représente un taux de croissance annuel composé (CAGR) de 8,5 %, comparé à un CAGR d'environ 2 % pour le marché beaucoup plus important (74 milliards de dollars) des microprocesseurs généraux.
La croissance exponentielle des données, et l'émergence de domaines en évolution rapide tels que l'IA, l'apprentissage automatique, le calcul haute performance (HPC) et la génomique, nécessitent des architectures rapides, flexibles et adaptables. Les FPGAs sont bien positionnés pour tirer parti de ces nouvelles opportunités.
Étiquettes d'article