Un array di gate programmabile sul campo (spesso abbreviato in FPGA) è un componente elettronico utilizzato per costruire circuiti digitali riconfigurabili. Ciò significa che un FPGA è diverso da un gate logico, perché un gate logico ha una funzione fissa. Al contrario, un FPGA ha una funzione non definita al momento della produzione. Prima che l'FPGA possa essere utilizzato in un circuito deve essere programmato, cioè riconfigurato.

Gli FPGA sono circuiti integrati nella categoria dei dispositivi logici programmabili o PLD. Gli FPGA sono i più performanti, i più flessibili e anche i più costosi tra i tipi di PLD. Uno svantaggio degli FPGA rispetto agli altri PLD è che non ricordano il loro design quando viene tolta l'alimentazione. Un FPGA ha quindi bisogno di un chip di memoria di configurazione separato che contenga il progetto dell'FPGA. Quando l'alimentazione viene restituita all'FPGA una parte fissa dell'FPGA legge la configurazione dal chip di memoria di configurazione. Dopo che l'FPGA è stato configurato, sarà in grado di svolgere la funzione che gli è stata data dal progetto.

Un FPGA è diverso da un microprocessore o da un microcontrollore. Un FPGA nella sua forma di base non è in grado di eseguire il software. Solo quando all'FPGA viene data una configurazione che contiene un processore-architettura ha la capacità di eseguire il software.

I produttori di FPGA forniscono software di ingegneria per Windows e talvolta anche Linux, per sviluppare progetti per FPGA. Il progetto è comunemente scritto in file di computer leggibili dall'uomo chiamati Hardware Description Language (HDL). I più popolari sono VHDL e Verilog. I linguaggi di descrizione dell'hardware sono fortemente paragonabili ai linguaggi di programmazione. Ma l'intenzione degli HDL è quella di progettare circuiti logici digitali mentre i linguaggi di programmazione progettano il software.

Il software di ingegneria FPGA deve tradurre il codice astratto HDL negli elementi logici disponibili nell'FPGA selezionato. Questo si chiama sintesi logica. Poi viene fatto un processo di luogo e percorso per posizionare gli elementi logici nell'FPGA. Il risultato è un bitfile che può essere programmato nell'FPGA o nella memoria di configurazione. Questo viene di solito fatto con un programmatore USB collegato alla porta JTAG dell'FPGA.

Poiché l'FPGA è un circuito integrato, un produttore di FPGA può decidere di aggiungere altri componenti di circuito integrato di uso comune. Queste parti fisse sono chiamate nuclei. Questi sono per esempio controllori Ethernet o anche una completa architettura di processore. Per diversi segmenti di mercato come la difesa, il medicale, le comunicazioni e la robotica, il produttore di FPGA cerca di aggiungere l'insieme più prezioso di questi nuclei aggiuntivi.