Field-programmable gate array (sering disingkat FPGA) adalah komponen elektronik yang digunakan untuk membangun sirkuit digital yang dapat dikonfigurasi ulang. Itu berarti FPGA berbeda dengan gerbang logika, karena gerbang logika memiliki fungsi yang tetap. Sebaliknya sebuah FPGA memiliki fungsi yang tidak terdefinisi pada saat pembuatannya. Sebelum FPGA dapat digunakan dalam sirkuit, FPGA harus diprogram, yaitu dikonfigurasi ulang.
FPGA adalah sirkuit terintegrasi dalam kategori perangkat logika yang dapat diprogram atau PLD. FPGA adalah kinerja tertinggi, paling fleksibel dan juga paling mahal dari jenis PLD. Kelemahan FPGA dibandingkan dengan PLD lainnya adalah bahwa FPGA tidak mengingat desainnya ketika daya dilepas. Oleh karena itu, FPGA memerlukan chip memori konfigurasi terpisah yang menyimpan desain FPGA. Ketika daya diberikan kembali ke FPGA, bagian tetap dari FPGA membaca konfigurasi dari chip memori konfigurasi. Setelah FPGA dikonfigurasi, FPGA akan dapat melakukan fungsi yang diberikan oleh desain.
FPGA berbeda dengan mikroprosesor atau mikrokontroler. FPGA dalam bentuk dasarnya tidak mampu menjalankan perangkat lunak. Hanya ketika FPGA diberi konfigurasi yang mengandung arsitektur-prosesor maka ia memiliki kemampuan untuk menjalankan perangkat lunak.
Produsen FPGA menyediakan perangkat lunak teknik untuk Windows dan kadang-kadang juga Linux, untuk mengembangkan desain untuk FPGA. Desain biasanya ditulis dalam file komputer yang dapat dibaca manusia yang disebut Bahasa Deskripsi Perangkat Keras (HDL). Yang paling populer adalah VHDL dan Verilog. Bahasa deskripsi perangkat keras sangat sebanding dengan bahasa pemrograman. Tetapi tujuan HDL adalah untuk merancang sirkuit logika digital sementara bahasa pemrograman merancang perangkat lunak.
Perangkat lunak rekayasa FPGA harus menerjemahkan kode HDL abstrak ke dalam elemen logika yang tersedia di FPGA yang dipilih. Itu disebut sintesis logika. Kemudian dilakukan proses place and route untuk memposisikan elemen-elemen logika dalam FPGA. Hasilnya adalah bitfile yang dapat diprogram ke dalam FPGA atau memori konfigurasi. Hal ini biasanya dilakukan dengan programmer USB yang terhubung ke port JTAG FPGA.
Karena FPGA adalah sirkuit terpadu, produsen FPGA dapat memutuskan untuk menambahkan komponen sirkuit terpadu lain yang umum digunakan. Bagian-bagian tetap ini disebut core. Ini misalnya pengontrol Ethernet atau bahkan arsitektur prosesor lengkap. Untuk segmen pasar yang berbeda seperti pertahanan, medis, komunikasi, dan robotika, produsen FPGA mencoba menambahkan set core tambahan yang paling berharga ini.

