Een in het veld programmeerbare gate array (vaak ingekort tot FPGA) is een elektronische component die wordt gebruikt om herconfigureerbare digitale schakelingen te bouwen. Dat betekent dat een FPGA anders is dan een logische poort, omdat een logische poort een vaste functie heeft. Een FPGA heeft daarentegen een ongedefinieerde functie op het moment van fabricage. Voordat de FPGA in een schakeling kan worden gebruikt, moet deze eerst worden geprogrammeerd, dus opnieuw worden geconfigureerd.

FPGA's zijn geïntegreerde schakelingen in de categorie programmeerbare logische apparaten of PLD's. FPGA's zijn de hoogst presterende, meest flexibele en ook de duurste van de PLD-types. Een nadeel van FPGA's in vergelijking met andere PLD's is dat ze hun ontwerp niet onthouden wanneer de stroom wordt verwijderd. Een FPGA heeft daarom een aparte configuratie geheugenchip nodig die het FPGA-ontwerp vasthoudt. Wanneer de stroom terug wordt gegeven aan de FPGA leest een vast onderdeel van de FPGA de configuratie uit de configuratiegeheugenchip. Nadat de FPGA is geconfigureerd zal deze de functie kunnen uitvoeren die het ontwerp hem heeft gegeven.

Een FPGA is anders dan een microprocessor of microcontroller. Een FPGA in zijn basisvorm is niet in staat om software te draaien. Alleen wanneer de FPGA een configuratie krijgt die een processor-architectuur bevat, kan hij software draaien.

FPGA-fabrikanten leveren engineering software voor Windows en soms ook Linux, om ontwerpen voor FPGA's te ontwikkelen. Het ontwerp wordt meestal geschreven in menselijk leesbare computerbestanden die een Hardware Description Language (HDL) worden genoemd. De meest populaire zijn VHDL en Verilog. Hardwarebeschrijvingstalen zijn sterk vergelijkbaar met programmeertalen. Maar de bedoeling van HDL's is om digitale logische circuits te ontwerpen terwijl programmeertalen software ontwerpen.

De FPGA-engineeringssoftware moet de abstracte HDL-code vertalen naar de logische elementen die beschikbaar zijn in de geselecteerde FPGA. Dat heet logica synthese. Vervolgens wordt een proces van plaats en route gedaan om de logische elementen in de FPGA te positioneren. Het resultaat is een bitfile die in de FPGA of het configuratiegeheugen kan worden geprogrammeerd. Dit wordt meestal gedaan met een USB-programmeur die op de JTAG-poort van de FPGA is aangesloten.

Omdat de FPGA een geïntegreerde schakeling is, kan een FPGA-fabrikant besluiten om andere veelgebruikte componenten van de geïntegreerde schakeling toe te voegen. Deze vaste onderdelen worden kernen genoemd. Dit zijn bijvoorbeeld Ethernet-controllers of zelfs een complete processor-architectuur. Voor verschillende marktsegmenten zoals defensie, medisch, communicatie en robotica probeert de FPGA-fabrikant de meest waardevolle set van deze extra kernen toe te voegen.