En Field-programmable gate array (ofta förkortat FPGA) är en elektronisk komponent som används för att bygga omkonfigurerbara digitala kretsar. Det innebär att en FPGA skiljer sig från en logisk grind, eftersom en logisk grind har en fast funktion. En FPGA har däremot en odefinierad funktion vid tillverkningstillfället. Innan FPGA:n kan användas i en krets måste den programmeras, dvs. omkonfigureras.

FPGA:er är integrerade kretsar i kategorin programmerbara logiska enheter eller PLD:er. FPGA:er är de mest flexibla och flexibla, men också de dyraste av PLD-typerna. En nackdel med FPGA:er jämfört med andra PLD:er är att de inte kommer ihåg sin konstruktion när strömmen tas bort. En FPGA behöver därför ett separat konfigurationsminneschip som håller FPGA-konstruktionen. När strömmen återförs till FPGA:n läser en fast del av FPGA:n konfigurationen från konfigurationsminneschipet. När FPGA:n är konfigurerad kan den utföra den funktion som den fick genom konstruktionen.

En FPGA skiljer sig från en mikroprocessor eller mikrokontroller. En FPGA i sin grundform kan inte köra programvara. Det är först när FPGA:n får en konfiguration som innehåller en processorarkitektur som den kan köra programvara.

FPGA-tillverkare tillhandahåller programvara för Windows och ibland även för Linux för att utveckla konstruktioner för FPGA:er. Konstruktionen skrivs vanligen i människoläsbara datafiler som kallas HDL (Hardware Description Language). De mest populära är VHDL och Verilog. Hårdvarubeskrivningsspråk är starkt jämförbara med programmeringsspråk. Men syftet med HDL:er är att konstruera digitala logikkretsar medan programmeringsspråk konstruerar programvara.

FPGA-programvaran måste översätta den abstrakta HDL-koden till de logikelement som finns tillgängliga i den valda FPGA:n. Detta kallas logiksyntes. Därefter sker en process med place and route för att placera logikelementen i FPGA:n. Resultatet är en bitfil som kan programmeras i FPGA:n eller konfigurationsminnet. Detta görs vanligtvis med en USB-programmerare som är ansluten till FPGA:ns JTAG-port.

Eftersom FPGA:n är en integrerad krets kan FPGA-tillverkaren besluta att lägga till andra vanliga integrerade kretsar. Dessa fasta delar kallas kärnor. Dessa är till exempel Ethernet-kontroller eller till och med en komplett processorarkitektur. För olika marknadssegment, t.ex. försvar, medicin, kommunikation och robotteknik, försöker FPGA-tillverkaren att lägga till den mest värdefulla uppsättningen av dessa extra kärnor.