Afin de pouvoir finaliser un FPGA, il est nécessaire d'utiliser un langage de description matériel ou bien un outil de saisie graphique. Après compilation de cette description, on obtient un fichier de configuration pour le FPGA choisi. VHDL et Verilog sont les deux langages de description les plus répandus.
Les FPGA sont utilisés dans diverses applications nécessitant de l'électronique numérique (télécommunications, aéronautique, transports…). Ils sont également utilisés pour le prototypage d'ASIC.
Les FPGA sont généralement plus lents, plus chers à l'unité et consomment d'avantage d'énergie que leur équivalent en ASIC (Application Specific Integrated Circuit). Cependant, ils ont plusieurs avantages :
Il est parfois possible de transformer directement un FPGA en une version ASIC plus rapide, moins chère et consommant moins (car les matrices de routage sont remplacées par une couche de métallisation fixe).
Plusieurs FPGA modernes possèdent la possibilité d'être reconfigurés (on parle de configuration lorsqu'il s'agit de programmation du matériel) partiellement à la volée. Ceci permet d'obtenir des systèmes reconfigurables - par exemple une unité centrale dont les instructions changent dynamiquement en fonction des besoins.
Les FPGA modernes sont assez vastes et contiennent suffisamment de mémoire pour être configurés pour héberger un cœur de processeur ou un DSP, afin d'exécuter un logiciel. On parle dans ce cas de processeur softcore, par opposition aux microprocesseurs hard-core enfouis dans le silicium. Aujourd'hui, les fabricants de FPGA intègrent même un ou plusieurs cœurs de processeur « hard-core » sur un même composant afin de conserver les ressources logiques configurables du composant. Ceci n'exclut pas l'utilisation de processeur softcore possédant de nombreux avantages. On tend donc vers des « Systems On Chip », comme pour le microcontrôleur il y a quelques décennies, avec en plus de la logique configurable selon l'utilisateur. La mémoire des tout derniers FPGA est encore insuffisante pour exécuter des logiciels embarqués un peu complexes et on doit avoir recours à des mémoires externe (ROM, RAM). Cependant, la loi de Moore n'est pas encore à bout de souffle et celles-ci devraient être intégrées dans quelques années et suffiront à une grande partie des applications embarquées.
Parmi les fabricants de tels circuits programmables, on trouve Abound Logic, Achronix, Actel, Altera, Atmel, Cypress, Lattice Semiconductor, Nallatech, QuickLogic, SiliconBlue, Tabula Inc., Tier Logic et Xilinx. D'autres sociétés sont probablement encore à l'état de développement initial et n'ont pas publiquement annoncé de produits.
Les procédés technologiques de base pour les composants programmables sont les suivants :
Dans le cas des technologies à mémoires (SRAM, EEPROM, flash), la mémoire est située à côté du circuit logique proprement dit et chacun de ses bits pilote un interrupteur (en fait, un transistor) de configuration du réseau logique. Dans le cas des technologies à (anti-)fusibles, ceux-ci sont directement dans le réseau logique et ont à la fois la fonction de mémoire non-volatile et d'interrupteur.
Les FPGA haut de gamme sont à la pointe de la technologie : les sauts technologiques, comme la finesse de gravure, sont souvent réalisés sur ces composants avant de passer aux microprocesseurs. En effet, la structure répétitive de la matrice logique est propice au réglage des machines de gravure microélectronique. Ainsi, les premiers composants gravés avec une finesse de 90 nm ont été les FPGA Spartan3 de Xilinx, en 2003.