11.6.1.1 : Qu'est-ce qu'un FPGA ?



Le FPGA est un composant électronique qui fait partie de la famille des circuits logiques programmables (c'est-à-dire programmables après leur fabrication). Un FPGA contient un grand nombre de portes (ou cellules) logiques qui constituent des briques élémentaires nécessaires à la construction de schémas logiques plus complexes. La particularité d'un FPGA est la possibilité de définir le routage entre les différents éléments logiques dans la phase de conception et créer ainsi un processeur sur mesure, adapté à une tâche de calcul particulière.

Un bloc logique est généralement constitué d'une table de correspondance (look-up-table, LUT) qui peut effectuer des opérations logiques simples sur 4 à 6 entrées. Ces blocs logiques en très grand nombre (jusqu'à 10 millions) sont connectés entre eux par une matrice de routage configurable, où chaque connexion peut être rendue fermée ou ouverte par le biais d'un circuit de type bascule (flip-flop, FF). La matrice de routage est gérée par une passerelle informatique spécifique (Avalon, pour les FPGA Altera/Intel), qui occupe une surface assez importante sur le silicium. Le circuit FPGA fonctionne comme une mémoire volatile, alors il est nécessaire de sauvegarder son design sur un support externe non-volatile (comme une mémoire flash), d'où la même configuration peut être à nouveau chargée sur le FPGA à la demande (équivalent à un reset chaud du FPGA). La communication de configuration avec le FPGA se fait par un protocole appelé JTAG (Joint Test Action Group), capable de lire un fichier image binaire et effectuer la configuration du routage et des blocs logiques.