Réseaux de portes programmables in situ (FPGA) vs microcontrôleurs : quelle différence ?
3 juin 2024
Temps de lecture : 6 min.

Les réseaux de portes programmables in situ (FPGA) et les unités de microcontrôleur (MCU) sont deux types de circuits intégrés (CI) couramment utilisés dans les systèmes embarqués et la conception numérique. Les FPGA et les microcontrôleurs peuvent être considérés comme des « petits ordinateurs » qui peuvent être intégrés dans des appareils et des systèmes plus grands.

En tant que processeurs, la principale différence entre les FPGA et les microcontrôleurs réside dans la programmabilité et les capacités de traitement. Si les FPGA sont plus puissants et plus polyvalents, ils sont également plus chers. Les microcontrôleurs sont moins personnalisables, mais aussi moins coûteux. Dans de nombreuses applications, les microcontrôleurs sont exceptionnellement efficaces et rentables. Cependant, certaines applications exigeantes ou en développement, comme les applications nécessitant un traitement parallèle, nécessitent des FPGA.

Contrairement aux microcontrôleurs, les FPGA permettent une reprogrammabilité au niveau matériel. Leur conception unique permet aux utilisateurs de configurer et de reconfigurer l’architecture de la puce en fonction de la tâche. La conception des FPGA permet également de gérer des entrées parallèles simultanément, alors que les microcontrôleurs ne peuvent lire qu’une seule ligne de code à la fois. Un FPGA peut être programmé pour exécuter les fonctions d’un microcontrôleur. À l’inverse, un microcontrôleur ne peut pas être reprogrammé pour fonctionner comme un FPGA.

Qu’est-ce qu’un FPGA (réseau de portes programmables in situ) ?

Introduits pour la première fois par le fabricant Xilinx en 1985, les FPGA sont très appréciés pour leur polyvalence et leur puissance de traitement. Par conséquent, ils constituent un choix privilégié dans de nombreuses applications de calcul haute performance (HPC), de traitement numérique du signal (DSP) et de prototypage.

Contrairement aux circuits intégrés spécifiques à une application (ASIC) traditionnels, les FPGA sont conçus pour être configurés (et reconfigurés) « sur le terrain » une fois le processus de fabrication initial terminé. Bien que les possibilités de personnalisation constituent la plus grande valeur ajoutée des FPGA, il convient de préciser qu’ils ne permettent pas seulement la programmabilité, ils l’exigent. Contrairement aux ASIC, les FPGA ne sont pas des solutions prêtes à l’emploi, et ils doivent être configurés avant d’être utilisés avec un langage de description de matériel (HDL), comme verilog ou VHDL. La programmation d’un FPGA nécessite des connaissances spécialisées, ce qui peut augmenter les coûts et retarder les déploiements. Bien que certains FPGA offrent une mémoire non volatile qui peut conserver les instructions de programmation même hors tension, ils doivent généralement être configurés au démarrage.

Les avantages des FPGA

Malgré ces défis, les FPGA trouvent une utilité dans les applications requérant de hautes performances, une faible latence et une flexibilité en temps réel. Ils sont particulièrement bien adaptés aux applications nécessitant les éléments suivants :

  • Prototypage rapide : les FPGA peuvent être rapidement configurés en de multiples types de circuits numériques personnalisés, ce qui permet d’accélérer les déploiements, les évaluations et les modifications sans devoir recourir à des processus de fabrication longs et coûteux. 
  • Accélération matérielle : les applications exigeantes bénéficient des capacités de traitement parallèle des FPGA. Les FPGA peuvent apporter des améliorations significatives en termes de performances pour les tâches à forte intensité de calcul, telles que le traitement des signaux, la cryptographie et les algorithmes de machine learning.
  • Personnalisation : les FPGA sont une solution matérielle flexible qui peut être facilement optimisée pour répondre aux exigences spécifiques d’un projet. 
  • Longévité : les conceptions basées sur les FPGA peuvent bénéficier d’une durée de vie matérielle plus longue car les FPGA peuvent être mis à jour et reconfigurés pour répondre à l’évolution des exigences du projet et des normes technologiques. 

Composants du FPGA

Pour assurer la reconfigurabilité, les FPGA sont composés d’un ensemble de blocs logiques programmables interconnectés par un réseau de routage programmable. Voici les principaux composants d’un FPGA typique :

  • Blocs logiques configurables (CLB) : Les CLB fournissent des fonctionnalités de calcul et peuvent contenir un petit nombre d’éléments logiques primitifs, tels que des portes logiques, des petites tables de recherche (LUT), des multiplexeurs et des bascules pour le stockage des données. 
  • Interconnexions programmables : constituées de segments de fils reliés par des commutateurs électriquement programmables, ces liaisons fournissent des voies de routage entre les différentes ressources du FPGA, ce qui permet différentes configurations et la création de circuits numériques personnalisés. 
  • Blocs d’E/S (IOB) : L’interface entre un FPGA et d’autres périphériques externes est activée par des blocs d’entrée/sortie (E/S) qui permettent au FPGA de recevoir des données de périphériques et de les contrôler. 

Les cas d’utilisation des FPGA

Polyvalents par nature, les FPGA sont fréquemment employés dans un grand nombre de secteurs et d’applications :

  • Aérospatiale et défense : offrant un traitement parallèle à grande vitesse précieux pour l’acquisition de données, les FPGA sont un choix privilégié pour les systèmes radar, le traitement d’images et les communications sécurisées. 
  • Systèmes de contrôle industriel (ICS) : les systèmes de contrôle industriel utilisés pour surveiller les infrastructures telles que les réseaux électriques, les raffineries de pétrole et les stations d’épuration utilisent des FPGA qui peuvent être facilement optimisés pour répondre aux besoins spécifiques des différentes industries. Dans ces secteurs critiques, les FPGA peuvent être utilisés pour mettre en œuvre diverses automatisations et des fonctions de chiffrement basées sur le matériel pour une cybersécurité efficace.
  • Développement d’ASIC : les FPGA sont souvent utilisés pour le prototypage de nouvelles puces ASIC. 
  • Automobile : grâce au traitement avancé des signaux, les FPGA sont également bien adaptés aux applications automobiles, notamment les systèmes avancés d’aide à la conduite (ADAS), la fusion de capteurs et le GPS.
  • Centres de données : les FPGA valorisent les centres de données en optimisant les serveurs à large bande passante et à faible latence, ainsi que l’infrastructure de réseau et de stockage.

Les fonctionnalités des FPGA

  • Cœur de traitement : blocs logiques configurables
  • Mémoire : Interface de mémoire externe 
  • Périphériques : blocs d’E/S configurables
  • Programmation : langage de description de matériel (VHDL, Verilog) 
  • Reconfigurabilité : logique hautement reconfigurable et reprogrammable
Qu’est-ce qu’un microcontrôleur ?

Les microcontrôleurs sont un type d’ASIC compact, prêt à l’emploi, contenant un (ou plusieurs) cœur(s) de processeur, de la mémoire (RAM) et de la mémoire morte programmable effaçable (EPROM) pour stocker les programmes personnalisés qui s’exécutent sur le microcontrôleur. Connus sous le nom de « systèmes sur puce (SoC) », les microcontrôleurs sont essentiellement de petits ordinateurs intégrés dans un seul élément matériel qui peut être utilisé de manière indépendante ou dans des systèmes intégrés plus importants.

Les microcontrôleurs grand public, tels que le kit de démarrage Arduino ou le PIC de Microchip Technology, peuvent être configurés à l’aide du langage d’assemblage ou de langages de programmation standard (C, C++), et ils sont privilégiés par les passionnés et les éducateurs en raison de leur accessibilité à moindre coût. Les microcontrôleurs sont également capables de gérer des tâches plus complexes et critiques et sont courants dans les applications industrielles. Toutefois, la puissance de traitement et les ressources de mémoire réduites peuvent limiter l’efficacité du microcontrôleur dans des conditions d’utilisation plus exigeantes.

Les avantages des microcontrôleurs

Malgré leurs limites, les microcontrôleurs offrent de nombreux avantages, notamment :

  • Conception compacte : les microcontrôleurs intègrent tous les composants nécessaires sur une seule et même puce, ce qui leur confère un faible encombrement, précieux dans les applications où la taille et le poids sont une priorité.
  • Efficacité énergétique : conçus pour fonctionner à faible puissance, les microcontrôleurs sont bien adaptés aux appareils alimentés par batterie et à d’autres applications où la consommation d’énergie est une préoccupation.
  • Rentabilité : les microcontrôleurs offrent une solution SoC complète qui réduit le besoin de périphériques et de composants supplémentaires. Les microcontrôleurs à usage général et à faible coût peuvent considérablement réduire les dépenses globales d’un projet.
  • Flexibilité : Même s’ils ne sont pas aussi polyvalents que les FPGA, les microcontrôleurs peuvent être programmés pour un large éventail d’applications. S’ils ne peuvent pas être reprogrammés au niveau matériel, les microcontrôleurs peuvent être facilement reconfigurés, mis à jour et optimisés au niveau logiciel.

Composants d’un microcontrôleur

Lorsque la reprogrammabilité n’est pas une priorité, les microcontrôleurs autonomes représentent une alternative compacte et performante. Voici les principaux composants d’un microcontrôleur :

  • Unité centrale de traitement (CPU) : Communément désignée comme le « cerveau », l’unité centrale de traitement (CPU) est le composant principal responsable de l’exécution des instructions et du contrôle des opérations.
  • Mémoire : Les microcontrôleurs contiennent à la fois une mémoire volatile (RAM), qui stocke des données temporaires susceptibles d’être perdues en cas de coupure de courant, et une mémoire non volatile (ROM, FLASH) pour le stockage du code de programmation du microcontrôleur.
  • Périphériques : selon l’application envisagée, un microcontrôleur peut contenir divers composants périphériques, tels que des interfaces E/S comme des minuteries, des compteurs, des convertisseurs analogique-numérique (ADC) et des protocoles de communication (UART, SPI, I2C).

Les cas d’utilisation des microcontrôleurs

Contrairement aux FPGA, les microcontrôleurs de petite taille, abordables et non volatiles sont omniprésents dans l’électronique moderne et sont fréquemment déployés pour des tâches spécifiques, notamment dans les domaines suivants :

  • Systèmes automobiles : les microcontrôleurs sont employés dans le contrôle des moteurs, le déploiement des airbags et les systèmes d’infodivertissement des véhicules.
  • Électronique grand public : les microcontrôleurs sont essentiels pour les smartphones, les téléviseurs intelligents et d’autres appareils ménagers, en particulier les appareils qui s’intègrent à l’Internet des objets (IdO).
  • Automatisation industrielle : Les microcontrôleurs sont bien adaptés aux applications industrielles, telles que le contrôle des machines, les systèmes de surveillance et l’automatisation des processus.
  • Dispositifs médicaux : les microcontrôleurs sont souvent déployés dans des dispositifs vitaux, tels que les pacemakers, les moniteurs de glycémie et les outils de diagnostic.

Les fonctionnalités des microcontrôleurs

  • Cœur de traitement : CPU fixe
  • Mémoire : RAM et ROM/mémoire flash intégrées 
  • Périphériques : interfaces d’E/S intégrées
  • Programmation : logiciel (C, assemblage) 
  • Reconfigurabilité : limitée, mises à jour du micrologiciel
Principales différences entre les FPGA et les microcontrôleurs

Pour comparer les FPGA et les microcontrôleurs, il est important de tenir compte d’un certain nombre de différences clés, notamment l’architecture matérielle, les capacités de traitement, la consommation d’énergie et les exigences des développeurs.

  • Structure matérielle
    • FPGA : blocs logiques et interconnexions programmables hautement configurables, permettant de réaliser des circuits numériques reprogrammables et personnalisés.
    • Microcontrôleur : architecture fixe avec des composants prédéfinis (CPU, mémoire, périphériques) intégrés dans une seule puce.
  • Capacités de traitement
    • FPGA : traitement parallèle avancé permettant de multiples opérations simultanées.
    • Microcontrôleur : conçus pour le traitement séquentiel, les microcontrôleurs ne peuvent exécuter qu’une seule instruction à la fois.
  • Consommation électrique
    • FPGA : il consomme généralement plus d’énergie qu’un microcontrôleur.
    • Microcontrôleur : optimisé pour une faible consommation d’énergie, il convient aux applications alimentées par batterie.
  • Programmation
    • FPGA : la configuration et le dépannage exigent des connaissances spécialisées dans les langages de description du matériel.
    • Microcontrôleur : il peut être programmé à l’aide de langages de développement logiciel tels que Javascript, Python, C, C++ et les langages d’assemblage.
  • Coût
    • FPGA : offrant une puissance accrue, mais nécessitant des compétences avancées, le matériel FPGA est souvent plus cher, entraînant des coûts supplémentaires liés à une consommation d’énergie plus élevée et à l’intervention d’un programmeur spécialisé.
    • Microcontrôleur : solution généralement plus rentable, prête à l’emploi, consommant moins d’énergie et prenant en charge des langages de programmation plus accessibles.
  • Polyvalence
    • FPGA : le FPGA est beaucoup plus polyvalent que le microcontrôleur et permet une personnalisation au niveau du matériel.
    • Microcontrôleur : bien qu’il convient à un large éventail d’applications, le microcontrôleur n’offre qu’une personnalisation superficielle par rapport au FPGA.
Découvrez les solutions d’infrastructure d’IBM

Que vous soyez à la recherche d’un processeur FPGA polyvalent et puissant ou d’un microcontrôleur compact et rentable, étudiez comment IBM peut vous aider à faire passer votre entreprise à la vitesse supérieure grâce à des solutions d’infrastructure de pointe. Le nouveau IBM FlashSystem 5300 améliore les performances et la cyber-résilience. Le nouveau IBM Storage Assurance simplifie la propriété du stockage et vous aide à relever les défis du cycle de vie informatique.

 
Auteur
Josh Schneider Senior Writer, IBM Blog