O matrice de porți programabile pe teren (adesea prescurtat FPGA) este o componentă electronică utilizată pentru a construi circuite digitale reconfigurabile. Aceasta înseamnă că un FPGA este diferit de o poartă logică, deoarece o poartă logică are o funcție fixă. În schimb, un FPGA are o funcție nedefinită în momentul fabricării. Înainte ca FPGA să poată fi utilizat într-un circuit, acesta trebuie programat, adică reconfigurat.

FPGA-urile sunt circuite integrate din categoria dispozitivelor logice programabile sau PLD-uri. FPGA-urile sunt cele mai performante, cele mai flexibile și, de asemenea, cele mai scumpe dintre tipurile de PLD. Un dezavantaj al FPGA-urilor, în comparație cu alte PLD-uri, este că acestea nu-și amintesc designul atunci când sunt scoase de sub tensiune. Prin urmare, un FPGA are nevoie de un cip de memorie de configurare separat care să păstreze proiectul FPGA. Atunci când FPGA este alimentat din nou, o parte fixă a FPGA citește configurația din cipul de memorie de configurare. După ce FPGA este configurat, acesta va putea îndeplini funcția care i-a fost atribuită prin proiect.

Un FPGA este diferit de un microprocesor sau de un microcontroler. În forma sa de bază, un FPGA nu este capabil să ruleze software. Numai atunci când FPGA primește o configurație care conține o arhitectură de procesor, are capacitatea de a rula software.

Producătorii de FPGA oferă software de inginerie pentru Windows și, uneori, și pentru Linux, pentru a dezvolta proiecte pentru FPGA-uri. Proiectarea este de obicei scrisă în fișiere informatice lizibile de către om, denumite limbaj de descriere hardware (HDL). Cele mai populare sunt VHDL și Verilog. Limbajele de descriere hardware sunt foarte asemănătoare cu limbajele de programare. Dar intenția HDL-urilor este de a proiecta circuite logice digitale, în timp ce limbajele de programare proiectează software.

Software-ul de inginerie FPGA trebuie să traducă codul HDL abstract în elementele logice disponibile în FPGA-ul selectat. Acest lucru se numește sinteză logică. Apoi, pentru a poziționa elementele logice în FPGA, se realizează un proces de plasare și rutare. Rezultatul este un fișier de biți care poate fi programat în FPGA sau în memoria de configurare. Acest lucru se face de obicei cu un programator USB conectat la portul JTAG al FPGA.

Deoarece FPGA este un circuit integrat, un producător de FPGA poate decide să adauge alte componente de circuit integrat utilizate în mod obișnuit. Aceste părți fixe se numesc nuclee. Acestea sunt, de exemplu, controlere Ethernet sau chiar o arhitectură completă de procesor. Pentru diferite segmente de piață, cum ar fi apărarea, medicina, comunicațiile și robotica, producătorul FPGA încearcă să adauge cel mai valoros set de nuclee suplimentare.