Les FPGA (
Field Programmable Gate Arrays
) sont des
circuits intégrés
dont la fonctionnalité est entièrement programmable par l'utilisateur après fabrication. Ils constituent une alternative aux circuits ASIC (
Application Specific Integrated Circuits
) dont la fonctionnalité est totalement figée en fonderie.
Les FPGA sont un type particulier d'
architecture reconfigurable
. On parle de
configuration
pour leur processus de programmation. Différents types d'architectures reconfigurables se distinguent par le niveau de
granularité
des éléments programmables internes. Dans les FPGA, les éléments ont une fonctionnalité programmable à
grain fin
, c'est-à-dire pour chaque bit individuellement. Il existe des architectures reconfigurables à
grain épais
où la fonctionnalité est programmable au niveau des mots (par exemple 16 ou 32 bits).
Les FPGA utilisent les technologies les plus avancées disponibles à un moment donné (gravure 28 nm en 2012). Concevoir un ASIC dans ces technologies permettrait d'obtenir un système extrêmement performant, mais au prix d'un investissement colossal. Il faut, en effet, une équipe de conception importante, des outils coûteux et complexes, plusieurs mois de conception et enfin un budget important pour la fabrication. De plus, les délais de fabrication chez le fondeur peuvent être importants (quelques mois). Le temps de conception et vérification d'une solution FPGA est beaucoup plus court qu'en ASIC et nécessite moins d'efforts et de personnel. Bon nombre de détails techniques sont réglés par le fabricant du FPGA.
Les FPGA sont fabriqués en grands volumes, ce qui permet de partager les coûts de conception par tous les clients. Un FPGA coûte quelques euros, pour les plus simples, à quelques centaines (voire milliers) pour les plus complexes. Pour des petites séries, les FPGA sont bien plus accessibles que des ASIC. Bien entendu, pour des grands volumes, une solution ASIC est plus rentable.
Les mécanismes de configuration des FPGA réduisent les performances par rapport à des solutions ASIC. La vitesse est moindre et la consommation d'énergie supérieure. Mais le caractère reconfigurable permet d'optimiser le système dans le temps. On peut imaginer de mettre rapidement sur le marché une première solution, puis de l'améliorer dans le temps (
Time-To-Market
réduit) ou bien de supporter des nouveaux standards dans le temps sans...