+1 500 000 produits offerts
6000 colis expédiés chaque jour
+300 000 clients de 150 pays
Date de publication: 18-11-2025 🕒 10 min de lecture
Les dispositifs FPGA sont commercialement disponibles depuis de nombreuses années, mais malgré de nombreux avantages, on ne peut pas dire qu'ils soient populaires dans les applications. Les principales raisons sont le coût élevé de la solution et le manque de connaissances sur les applications. La première de ces caractéristiques affecte négativement le concepteur ou un autre décideur concernant les composants, tandis que la dernière affecte le plus souvent le programmeur ou le concepteur de systèmes embarqués, qui maîtrise les langages orientés objet mais ne comprend pas le langage de description matérielle. Dans ce texte, nous examinerons certaines caractéristiques pratiques des dispositifs FPGA et les comparerons à des microcontrôleurs beaucoup mieux connus et acceptés. Nous soulignerons également les applications où l'utilisation de FPGA est indispensable et celles où elle devient "excessive".
FPGA est le nom d'un groupe de circuits intégrés dérivés des premières lettres des mots Field-Programmable Gate Array. Ces dispositifs peuvent être programmés après leur production. Le processus de programmation des FPGA est appelé configuration, car il implique de créer des connexions entre des blocs fonctionnels prêts à l'intérieur de la structure. Contrairement aux circuits intégrés numériques typiques (portes, registres, bascules, compteurs, etc.) qui ont une fonctionnalité fixe, les FPGA peuvent être programmés plusieurs fois, offrant ainsi une flexibilité dans la conception et le test de différentes applications.
Les FPGA se composent de blocs logiques programmables et d'interconnexions programmables entre eux. Ces dispositifs peuvent contenir non seulement des blocs numériques mais aussi des convertisseurs analogique-numérique, des convertisseurs numérique-analogique, des cœurs de processeur (à usage général ou DSP), des blocs d'interface permettant la coopération avec des dispositifs externes, ou même des unités de support AI connectées via Network-on-Chip (NoC), un réseau d'interconnexion embarqué transmettant des paquets de données entre les blocs et les composants du dispositif. Grâce à des fonctionnalités riches et des connexions flexibles, les dispositifs FPGA peuvent être configurés pour effectuer diverses fonctions, telles que le traitement de signaux, le contrôle de systèmes embarqués ou l'accélération du traitement de données.
Un des avantages les plus importants des FPGA est la vitesse de calcul. Ces dispositifs fonctionnent différemment d'un microprocesseur, qui récupère et exécute des instructions de manière séquentielle. Dans un FPGA, le résultat du traitement peut apparaître "immédiatement", retardé seulement par un petit temps de propagation. Il est également significatif que de nombreuses opérations peuvent être effectuées en parallèle, contrairement à un microcontrôleur, qui prend rarement en charge l'exécution simultanée de nombreuses instructions.
Chaque dispositif FPGA se compose de trois groupes de composants :
Figure 1. Schéma bloc simplifié illustrant la structure d'un dispositif FPGA
Les dispositifs CPLD (Complex Programmable Logic Device) étaient les précurseurs des dispositifs FPGA et (malgré une fonctionnalité moindre) sont proposés aujourd'hui pour des applications moins complexes. La plupart des principaux fournisseurs offrent une large gamme, à partir des versions les plus simples désignées comme PAL, contenant des éléments programmables et des parties fixes prédisposées à effectuer une certaine fonction logique. Cela permet d'utiliser un seul circuit intégré au lieu de plusieurs foncteurs logiques, mais ne fournit pas une grande flexibilité pour les applications.
Comparés aux PAL, les dispositifs CPLD sont plus complexes. Ils contiennent plus de portes, sont équipés de mémoire non volatile et de RAM, ce qui les rend adaptés à des applications plus complexes. Par exemple, Intel® a placé de nombreux blocs PAL appelés macrocells dans un seul boîtier de circuit unifié, où toutes les entrées sont disponibles pour chaque cellule, et chaque macrocell peut contrôler n'importe quelle sortie. La structure de connexion est stockée dans une mémoire programmable électriquement appelée mémoire de configuration, tout comme dans les FPGA. Donc, si les CPLD ont des macrocells, un bus de connexion programmable et une mémoire de configuration, en quoi diffèrent-ils des FPGA ?
Comparés aux FPGA, les CPLD contiennent significativement moins d'éléments logiques et n'ont pas de tableaux LUT (look up tables). Ils ont une architecture plus intégrée, avec un nombre beaucoup plus petit de blocs logiques, et implémentent des fonctions logiques plus complexes dans chaque bloc. De nombreuses connexions entre les blocs dans les CPLD sont prédéfinies lors du processus de fabrication et ne peuvent pas être modifiées lors de la configuration du dispositif. Ils ne sont pas utilisés pour créer des applications aussi complexes que les FPGA, qui peuvent contenir des millions de foncteurs logiques. Pour illustrer, un FPGA peut modéliser un cœur de processeur, tandis qu'un CPLD est utile pour implémenter un décodeur d'adresse coopérant avec lui.
Figure 2. Macrocell du dispositif de la série MAX7000 (source : documentation du fabricant)
Dans la plupart des dispositifs FPGA, la configuration est stockée dans une mémoire externe, généralement connectée via une interface série. Les données de configuration sont copiées dans la RAM du FPGA à chaque démarrage ou réinitialisation matérielle. Cela crée un délai au démarrage du dispositif, plus important pour les FPGA plus complexes, ce qui n'est pas le cas avec les CPLD ayant la configuration stockée dans une mémoire EEPROM.
Un inconvénient des FPGA par rapport aux CPLD est le coût d'application plus élevé.
Tableau 1. Comparaison de certains paramètres des dispositifs FPGA et CPLD
| Caractéristique/paramètre | CPLD | FPGA |
|---|---|---|
| Flexibilité d'application | Faible | Élevée |
| Prix | Faible | Élevé ou très élevé |
| Sécurité de l'application | Élevée | Susceptible d'accès non autorisé |
| Vitesse de fonctionnement | Élevée | Élevée |
| Capacité/taille de l'application | Faible | Élevée ou très élevée |
| Application matérielle | Simple | Complexe ou très complexe |
| Programmation | Dans des langages de configuration matérielle ou par schémas fonctionnels | |
Les blocs fonctionnels intégrés dans les FPGA, en particulier les convertisseurs A/D, convertisseurs D/A, ou les modules d'interface pour dispositifs externes, peuvent ressembler à l'environnement d'un cœur de microcontrôleur. Un FPGA peut avoir de la RAM intégrée et de la mémoire Flash non volatile, mais cette ressemblance est trompeuse.
Les dispositifs FPGA modernes et avancés sont fonctionnellement plus complexes que les microcontrôleurs avancés et complexes. Par exemple, la connexion des blocs fonctionnels à l'intérieur d'un FPGA peut utiliser la technologie NoC (Network on Chip), où, au sein de la structure du circuit intégré, des paquets de données sont transmis à l'aide de bus gérés par des commutateurs intégrés. Cela est utile pour le traitement et le conditionnement des signaux et pour les algorithmes utilisant l'apprentissage automatique et l'intelligence artificielle.
La vitesse de fonctionnement des FPGA par rapport à un microcontrôleur est vraiment étonnante. Cela est dû au fait qu'un cœur de microcontrôleur typique récupère et exécute des instructions une par une. Pour accélérer le traitement des données, il décharge certaines opérations vers des unités périphériques (par exemple, transmission de données vers et depuis la mémoire via DMA), mais cela ne change pas son rythme opérationnel. Dans les FPGA, selon la configuration, le FPGA transmet généralement la réponse immédiatement après avoir reçu des données et peut en outre exécuter de nombreux fils simultanément. Rappelons, par exemple, que l'évaluation d'un signal ne consiste pas à prendre un échantillon puis à l'évaluer dans l'étape suivante, mais fait référence à un certain schéma d'évaluation disponible sous forme de réseau de foncteurs logiques connectés, de sorte qu'il peut être disponible avec une précision allant jusqu'au temps de propagation du dispositif.
Un microcontrôleur contient un cœur de processeur, de la RAM, de la ROM, de la Flash et des périphériques, tels que des ports d'entrée/sortie, des minuteries, des convertisseurs A/D et D/A sur un seul circuit intégré. Il est conçu pour effectuer des tâches spécifiques. Bien que certains modules puissent être activés/désactivés pour économiser de l'énergie, leur fonctionnalité ne peut pas être redéfinie. Elle est fixe lors de la production, y compris le fonctionnement et la connexion des blocs. Un microcontrôleur est en quelque sorte comme un micro-ordinateur monté sur un petit circuit imprimé dans un seul boîtier. Changer sa configuration nécessite de modifier la carte, y compris les traces de circuit, le placement des composants et leurs interconnexions.
Un dispositif FPGA est construit à partir de blocs logiques programmables connectés par des interconnexions configurables. Les foncteurs peuvent être combinés en divers blocs fonctionnels capables d'effectuer différentes opérations logiques, et les dispositifs FPGA modernes et avancés utilisent des technologies de connexion très avancées telles que NoC.
La programmation des FPGA (et des CPLD) consiste à définir des connexions et des fonctions logiques à l'aide de langages de description matérielle (HDL) tels que VHDL ou Verilog. La configuration, en particulier pour les dispositifs plus simples, peut également être effectuée à l'aide d'un schéma logique, en plaçant et en connectant des composants logiques typiques. La configuration des FPGA nécessite des connaissances en conception de circuits numériques. La programmation d'un microcontrôleur utilise des langages de programmation structurels ou orientés objet. Aujourd'hui, la plupart des applications s'éloignent de l'assembleur de bas niveau vers des langages de haut niveau tels que C, C++, Java, et d'autres. La programmation des microcontrôleurs ressemble à la programmation d'ordinateurs "grands", ce qui la rend plus facile pour la plupart des programmeurs, qui manquent souvent de connaissances sur le fonctionnement et l'optimisation des blocs logiques. La mémoire de programme du FPGA stocke la configuration, tandis que la mémoire du microcontrôleur stocke les commandes et les paramètres.
Tableau 2. Comparaison de certains paramètres des microcontrôleurs et FPGA
| Caractéristique/paramètre | Microcontrôleur | FPGA |
|---|---|---|
| Flexibilité d'application | Élevée | Élevée |
| Prix | Faible ou moyen | Élevé ou très élevé |
| Sécurité de l'application | Susceptible d'accès non autorisé | Susceptible d'accès non autorisé |
| Vitesse de fonctionnement | Faible par rapport aux FPGA | Élevée |
| Capacité mémoire / taille de l'application | De très petite à très grande | Élevée ou très élevée |
| Application matérielle | Simple | Complexe ou très complexe |
| Possibilité de fonctionnement analogique | Aucune ou limitée | |
| Programmation | En assembleur ou en langages de haut niveau | Dans des langages de configuration matérielle |
La caractéristique la plus importante des dispositifs ASIC, comme l'indique leur nom, est qu'ils sont conçus pour effectuer une tâche spécifique. Cela pourrait être, par exemple, la réception et le décodage d'un signal radio, le contrôle d'un modèle d'affichage spécifique, ou d'autres. Notez qu'un ASIC n'a pas nécessairement à être programmable, bien qu'il en existe des versions commercialement disponibles contenant un cœur de processeur pour lequel des applications peuvent être créées.
La frontière entre un circuit intégré typique et un dispositif ASIC est très fine. Ils sont principalement séparés par le volume de production ; les ASIC sont produits en plus petites quantités par rapport aux circuits intégrés produits en masse. De nombreux fabricants proposent des circuits intégrés sans indiquer s'ils sont produits en masse ou s'il s'agit d'ASIC.
L'architecture d'un ASIC est définie par le concepteur et ne peut pas être modifiée après la fabrication. En général, lorsque les ASIC ont un cœur de processeur, aucun développement de programme n'est requis, seulement le réglage de certains paramètres spécifiques. De même, le type de communication avec l'environnement et les formats de données sont définis lors de la conception, et même si le passage entre différents types est possible, des modifications ne peuvent pas être introduites.
Comparé à la configuration des FPGA, le processus de conception des ASIC est plus complexe et coûteux, nécessitant éventuellement des connaissances spécialisées au-delà de la conception de circuits numériques, mais le produit final est plus optimisé pour des applications spécifiques, des performances et une efficacité énergétique.
Les ASIC sont utilisés dans des applications nécessitant des performances élevées avec une faible consommation d'énergie et des dimensions miniatures. La spécialisation leur permet d'offrir d'excellents paramètres pratiques. De plus, les ASIC sont généralement prêts à l'emploi immédiatement après soudage ou placement dans un support et n'ont pas besoin de charger une configuration depuis une mémoire externe. Ils peuvent également avoir une fonctionnalité mixte ou être purement analogiques. Cela n'est pas possible avec les FPGA, qui offrent des performances très élevées par le traitement parallèle de données numériques, après conversion de l'analogique au numérique et vice versa.
Les ASIC prêts à l'emploi peuvent être plusieurs fois moins chers que les FPGA. Ils sont beaucoup plus coûteux et longs à concevoir, mais ces coûts sont amortis sur des volumes généralement importants. Cela se fait au détriment de la capacité de reconfiguration, mais cela n'est pas toujours nécessaire. De même que pour les microcontrôleurs, les FPGA peuvent être utilisés pour prototyper des ASIC, mais les ASIC ne peuvent pas modéliser le fonctionnement des FPGA. Bien sûr, ici nous parlons de modélisation qui permet d'enregistrer une configuration utile pour le FPGA, et non simplement d'atteindre une fonctionnalité similaire.
Tableau 3. Comparaison de certains paramètres des ASIC et FPGA
| Caractéristique/paramètre | ASIC | FPGA |
|---|---|---|
| Flexibilité d'application | Très faible | Élevée |
| Prix | Faible ou moyen | Élevé ou très élevé |
| Sécurité de l'application | Élevée | Susceptible d'accès non autorisé |
| Vitesse de fonctionnement | Élevée | Élevée |
| Capacité/taille de l'application | Faible ou nulle | Élevée ou très élevée |
| Application matérielle | Simple | Complexe ou très complexe |
| Possibilité de fonctionnement analogique | Dépend de la conception | Aucune ou limitée |
| Programmation | Capacité limitée ou non requise | Dans des langages de configuration matérielle |
Bibliographie :
Transfer Multisort Elektronik (TME) est l’un des plus grands distributeurs mondiaux de composants électroniques, de pièces électrotechniques, d’équipements d’atelier et d’automatisation industrielle. Le catalogue comprend plus de 1 500 000 de produits provenant de 1 300 fabricants leaders. Les centres logistiques modernes de TME à Łódź et Rzgów (Pologne), avec une superficie totale de plus de 40 000 m², expédient près de 6 000 colis par jour à des clients dans plus de 150 pays.
TME investit également dans le développement des connaissances et compétences des jeunes ingénieurs et passionnés d’électronique grâce au projet TME Education et soutient la communauté technologique en organisant la série d’événements TechMasterEvent, promouvant l’innovation et l’échange d’expériences.