Notions de base sur les FPGA : guide pour les débutants
Pour ceux parmi vous qui ont un esprit binaire, rassurez-vous : vous n'avez rien raté. Voici une petite présentation de mon dispositif électronique préféré : le réseau de portes programmables par l'utilisateur (FPGA). Lorsque je parle des FPGA, on me dit souvent : « Je ne sais pas comment ils fonctionnent », « Ils sont trop compliqués » ou encore « Je ne peux pas les programmer en langage C ». Je ne supporterais pas de voir ces incroyables dispositifs balayés d'un revers de la main. C'est pourquoi je vais essayer d'apporter des solutions à ces préoccupations fréquentes.
Qu'est-ce qu'un réseau de portes programmables par l'utilisateur ?
Voici la réponse, version longue : d'après son nom, on pourrait en déduire qu'il s'agit d'une structure programmable de portes logiques. C'est presque ça, mais cette définition manque de précision. En effet, le réseau logique interne n'est pas implémenté à l'aide de portes. Les blocs qui composent le réseau sont en fait des éléments logiques. Ils sont normalement constitués d'une table de correspondance (LUT) qui implémente une fonction logique arbitraire, ainsi que de circuits de support comme des multiplexeurs, des additionneurs et des bascules. Ce réseau d'éléments logique est souvent appelé « structure FPGA ».
Figure 1 : Exemple d'élément logique FPGA. (Source de l'image : Wikimedia Commons)
Pour simplifier, j'imagine un FPGA comme une boîte remplie de blocs fonctionnels colorés et libres de droits pour créer des circuits numériques. Je peux relier les blocs entre eux comme je le souhaite, pour répondre aux besoins de mon application. Si vous pouvez décrire la manière dont un circuit numérique fonctionne, vous pouvez le créer à l'intérieur d'un FPGA avec suffisamment d'éléments logiques. Vous avez besoin de 25 sorties PWM ? Aucun problème. Il vous faut un protocole de communication spécifique ? Codez du matériel pour qu'il puisse le prendre en charge.
Pourquoi aurais-je besoin d'un FPGA ?
Un FPGA sert à implémenter un système numérique, même si un simple microcontrôleur peut souvent faire l'affaire. Les microcontrôleurs sont peu coûteux et faciles à monter sur une carte à circuit imprimé. Les FPGA sont de puissants outils, mais ne conviennent pas forcément à toutes les applications. Ils présentent davantage d'exigences concernant la puissance, la configuration et le circuit externe, et ces exigences supplémentaires peuvent entraîner un coût prohibitif. Le fait d'utiliser un FPGA beaucoup plus cher et qui implique tout un tas d'exigences spécifiques peut paraître absurde.
Vous avez peut-être déjà deviné la toute première raison pour laquelle vous pourriez avoir besoin d'un FPGA : la flexibilité. Grâce aux blocs logiques configurables, vous ne serez jamais dans une impasse avec votre matériel. Vous ne serez jamais à court de temporisateurs ni d'UART tant que vous aurez des éléments logiques disponibles pour en créer d'autres. Le fait de pouvoir reconfigurer un produit après sa création peut également prolonger son cycle de vie à mesure que la technologie et les exigences évoluent.
Deuxième raison d'utiliser un FPGA : la vitesse. Un microcontrôleur exécute les instructions l'une après l'autre, de manière séquentielle. De par sa nature matérielle, une structure FPGA est fondamentalement parallèle. Plusieurs actions peuvent ainsi être effectuées simultanément, ce qui est utile pour les opérations comme les calculs FFT ou le traitement graphique, qui pourraient coûter cher avec un processeur séquentiel. Les FPGA présentent également plus d'options E/S haut débit qu'un microcontrôleur typique, comme les interfaces LVDS et les émetteurs-récepteurs qui offrent plus de 10 Gbps pour les protocoles comme HDMI.
Comment programmer un FPGA ?
Les FPGA utilisent un type de langage spécial, appelé HDL (Hardware Description Language). Il existe deux variantes principales : Verilog et VHDL. Presque toutes les suites de développement comme Quartus ou Vivado prennent en charge ces deux variantes. Le choix est donc une question de préférence. Ces langages sont ensuite « synthétisés », ce qui équivaut à l'opération de compilation pour les microcontrôleurs. L'outil de synthèse indique au FPGA comment relier les éléments logiques pour créer l'effet décrit par votre code. Lorsque vous débutez, n'oubliez pas un point essentiel : votre code est traduit en instructions matérielles et non en instructions CPU.
Pour simplifier le développement, les fournisseurs de FPGA proposent un catalogue de blocs de code fréquemment utilisés, pouvant facilement être inclus dans une conception. Sont inclus des blocs de communication, de RAM, de multiplicateur, etc. Vous pouvez les configurer et les ajouter à votre conception sans même avoir à vous soucier du code HDL impliqué, ce qui permet d'accélérer le développement.
Figure 2 : Schéma fonctionnel partiel de blocs IP du catalogue de Xilinx et HLS. (Source de l'image : eewiki.net)
Certains fournisseurs proposent également des outils HLS (High Level Synthesis) qui peuvent traduire une fonction écrite en langage C ou C++ en un bloc de code HDL. Ces outils permettent de laisser de côté certains détails de bas niveau, ce qui peut aider les développeurs ayant des compétences logicielles à se lancer plus facilement.
Toujours pas convaincu ? L'une de mes fonctionnalités FPGA préférées est la possibilité d'utiliser un processeur logiciel. Il s'agit d'un processeur complet conçu à partir des éléments logiques du FPGA. Vous pouvez ainsi concevoir du matériel personnalisé de prise en charge pour le processeur et écrire votre application en langage C. La configuration et la programmation d'un système de processeur logiciel simple ne prennent que quelques minutes. Si vous avez tout de même besoin d'un processeur traditionnel, intéressez-vous aux systèmes sur puce dotés d'un FPGA et d'un processeur ARM matériel dans un même boîtier.
Pour résumer, les FPGA sont plus coûteux et plus compliqués à utiliser que les microcontrôleurs standard, mais ils offrent beaucoup plus de puissance et de flexibilité. À mesure que la technologie s'affine et que les FPGA deviennent moins chers et offrent de meilleurs niveaux d'intégration, il se pourrait bien qu'ils remplacent un jour les microcontrôleurs traditionnels. Alors si ces informations vous ont semblé intéressantes, adoptez dès maintenant les FPGA pour avoir une longueur d'avance. Si vous cherchez une carte de développement économique pour vous lancer, jetez un œil à ces modèles proposés par nos fournisseurs de FPGA : DE10-Lite de Terasic, Arty de Digilent, carte de développement mobile de Lattice ou kit Maker de Microsemi.
Have questions or comments? Continue the conversation on TechForum, DigiKey's online community and technical resource.
Visit TechForum


Taylor Roorda, ingénieur d'application associé chez DigiKey, a rejoint l'organisation en 2015 avec pour principaux centres d'intérêt les systèmes embarqués, la logique programmable et le traitement des signaux. Il est titulaire d'une licence en génie électrique de l'Université d'État du Dakota du Nord et il consacre son temps libre à jouer de la guitare et à écrire de la musique.