Programowalna przez użytkownika tablica bramek (często skrócona do FPGA) jest elektronicznym komponentem używanym do budowy rekonfigurowalnych obwodów cyfrowych. Oznacza to, że FPGA różni się od bramki logicznej, ponieważ bramka logiczna ma stałą funkcję. W przeciwieństwie do tego FPGA ma nieokreśloną funkcję w momencie produkcji. Zanim FPGA może być używany w obwodzie, musi być zaprogramowany, to znaczy skonfigurowany.
FPGA to układy scalone w kategorii programowalnych urządzeń logicznych lub PLD. FPGA to układy o najwyższej wydajności, najbardziej elastyczne i jednocześnie najdroższe z typów PLD. Wadą układów FPGA w porównaniu do innych PLD jest to, że nie pamiętają one swojej konstrukcji po odłączeniu zasilania. Dlatego też FPGA potrzebuje oddzielnego układu pamięci konfiguracyjnej, który utrzyma konstrukcję FPGA. Gdy zasilanie jest oddawane do FPGA, stała część FPGA odczytuje konfigurację z układu pamięci konfiguracyjnej. Po skonfigurowaniu FPGA będzie ona w stanie wykonać funkcję, którą nadała jej konstrukcja.
FPGA różni się od mikroprocesora lub mikrokontrolera. FPGA w swojej podstawowej formie nie jest w stanie uruchomić oprogramowania. Tylko wtedy, gdy FPGA otrzyma konfigurację, która zawiera strukturę procesorowo-architekturową, ma zdolność do uruchamiania oprogramowania.
Producenci FPGA dostarczają oprogramowanie inżynierskie dla Windows, a czasem także dla Linuksa, w celu opracowania projektów dla FPGA. Projekt jest powszechnie zapisywany w czytelnych dla człowieka plikach komputerowych zwanych Hardware Description Language (HDL). Najbardziej popularne to VHDL i Verilog. Języki opisu sprzętu są silnie porównywalne z językami programowania. Jednak intencją HDL jest projektowanie cyfrowych układów logicznych podczas projektowania oprogramowania w językach programowania.
Oprogramowanie inżynierskie FPGA ma za zadanie przetłumaczyć abstrakcyjny kod HDL na elementy logiczne dostępne w wybranym FPGA. Jest to tzw. synteza logiczna. Następnie wykonywany jest proces lokalizacji i przebiegu elementów logicznych w FPGA. Wynikiem tego jest plik bitowy, który można zaprogramować w FPGA lub w pamięci konfiguracyjnej. Zazwyczaj odbywa się to za pomocą programatora USB podłączonego do portu JTAG w FPGA.
Ponieważ FPGA jest układem scalonym, producent FPGA może zdecydować się na dodanie innych powszechnie stosowanych elementów układu scalonego. Te stałe części nazywane są rdzeniami. Są to na przykład kontrolery sieci Ethernet lub nawet kompletna architektura procesora-architektura. Dla różnych segmentów rynku, takich jak obronność, medycyna, komunikacja i robotyka, producent FPGA stara się dodać najbardziej wartościowy zestaw tych dodatkowych rdzeni.

