
Qu’est ce que le FPGA ?
Les FPGA (Field Programmable Gate Arrays) occupent une place à part dans l'électronique numérique. Ce ne sont ni des processeurs qui exécutent un programme, ni des circuits figés en usine : ce sont des circuits intégrés dont on configure la logique interne après fabrication, pour obtenir un circuit numérique taillé sur mesure. Leur polyvalence explique qu'on les retrouve aujourd'hui aussi bien dans le traitement du signal que dans la vision ou le contrôle moteur. Voici comment ils fonctionnent, comment on les programme et ce qu'il faut surveiller lorsqu'on conçoit avec.
Un circuit dont on programme le câblage
Un FPGA contient un grand nombre de blocs logiques, des ressources de mémoire et un réseau d'interconnexions programmables. Concevoir pour un FPGA consiste à définir ce que fait chaque bloc et comment les blocs sont reliés entre eux. Le résultat n'est pas un logiciel qui s'exécute, mais un véritable circuit numérique, spécifique à l'application.
C'est la grande différence avec un ASIC (circuit intégré spécifique à une application) : une fois gravé, l'ASIC ne peut plus évoluer, alors qu'un FPGA reconfigurable peut être reprogrammé autant de fois que nécessaire. Cette souplesse en fait un choix naturel pour les applications qui ont besoin de logique personnalisée, pour le prototypage ou pour les produits dont les fonctions doivent pouvoir évoluer sur le terrain.
Les blocs logiques élémentaires réalisent les opérations combinatoires (ET, OU exclusif, etc.) et intègrent des multiplexeurs, qui sélectionnent une entrée parmi plusieurs, ainsi que des éléments de mémorisation. En les combinant, on construit des compteurs, des machines d'état ou des fonctions arithmétiques. Les FPGA embarquent en outre des blocs de RAM dédiés pour stocker des données au plus près de la logique. Ils peuvent ainsi implémenter des fonctions complexes comme des multiplicateurs, des diviseurs ou des chaînes complètes de traitement numérique du signal (DSP).
Fusibles, flash ou SRAM : deux grandes familles
On distingue les FPGA selon la technologie qui retient leur configuration. Les FPGA à configuration dite statique utilisent des fusibles ou des antifusibles : la programmation est définitive, le circuit ne peut être configuré qu'une fois. Les FPGA à configuration dynamique stockent leur configuration en mémoire flash ou en SRAM et peuvent être reprogrammés de nombreuses fois. C'est cette seconde famille qui offre la flexibilité généralement associée aux FPGA, la première étant réservée aux cas où l'on veut une configuration figée.
Avantages et domaines d'application
Face à un ASIC, le FPGA se distingue d'abord par sa capacité à être reprogrammé, ce qui permet de corriger ou de faire évoluer un design sans refaire le composant. Il demande aussi moins de compétences spécialisées en conception de circuits intégrés : le travail se fait avec des langages et des outils de haut niveau, sans passer par la fabrication d'une puce.
Ces qualités expliquent leur présence dans les systèmes de traitement du signal, les communications sans fil, les radars et les sonars, où la logique dédiée permet de traiter de gros flux en parallèle. On les utilise aussi pour des circuits numériques hautes performances comme les processeurs de signal et le traitement vidéo, pour le contrôle de mouvement (contrôleurs de moteur, régulateurs de vitesse) et pour le traitement d'image dans des équipements comme les caméras numériques ou les scanners à plat.
Langages et outils de développement
Un FPGA se programme principalement avec un langage de description matérielle (HDL). Les deux références sont le VHDL (Very High-Speed Integrated Circuit Hardware Description Language) et le Verilog. Ils décrivent à la fois le comportement du circuit et sa structure. Il est également possible de partir de langages de haut niveau comme le C ou le C++, qui décrivent la fonction de façon plus abstraite et laissent aux outils le soin de produire le circuit correspondant.
La chaîne de développement comprend un éditeur pour écrire le code, un simulateur pour vérifier le comportement du circuit avant de le charger, et un outil de synthèse qui traduit le code HDL en circuit. Les outils prennent aussi en charge la configuration de l'environnement, la génération des fichiers de configuration du composant et le suivi des erreurs. Les principaux fabricants, dont Xilinx, Altera et Lattice, fournissent chacun leurs propres environnements.
Les contraintes à surveiller en conception
Trois contraintes dominent la conception sur FPGA. Le temps d'abord : les signaux mettent un temps fini à traverser les blocs logiques et les interconnexions programmables, et ce temps de propagation limite la fréquence atteignable. Les ressources ensuite : le nombre de blocs logiques et la quantité de mémoire disponibles sur la puce bornent la taille du design. La consommation enfin, car un FPGA peut consommer beaucoup d'énergie ; elle dépend de l'activité des blocs logiques, des interconnexions et des blocs mémoire, et doit être anticipée dès le choix du composant, y compris pour la dissipation thermique.
Le FPGA est donc l'outil de choix lorsque votre application a besoin de logique dédiée et de parallélisme, mais il demande un savoir-faire spécifique. Si vous hésitez avec une solution à base de microcontrôleur, notre comparatif FPGA vs microcontrôleur détaille les critères de choix, et nos équipes peuvent vous accompagner dans l'analyse de votre besoin.
