Uma matriz de portões programáveis em campo (muitas vezes abreviada para FPGA) é um componente eletrônico usado para construir circuitos digitais reconfiguráveis. Isso significa que uma FPGA é diferente de uma porta lógica, porque uma porta lógica tem uma função fixa. Em contraste, uma FPGA tem uma função indefinida no momento da fabricação. Antes que a FPGA possa ser usada em um circuito, ela deve ser programada, ou seja, reconfigurada.
As FPGAs são circuitos integrados na categoria de dispositivos lógicos programáveis ou PLDs. Os FPGAs são os de maior desempenho, mais flexíveis e também os mais caros dos tipos de PLD. Uma desvantagem dos FPGAs em comparação com outros PLDs é que eles não se lembram de seu projeto quando a energia é removida. Portanto, uma FPGA precisa de um chip de memória de configuração separado que contenha o projeto da FPGA. Quando a energia é devolvida à FPGA, uma parte fixa da FPGA lê a configuração a partir do chip de memória de configuração. Depois que a FPGA for configurada, ela será capaz de fazer a função que lhe foi dada pelo projeto.
Uma FPGA é diferente de um microprocessador ou microcontrolador. Uma FPGA em sua forma básica não é capaz de executar um software. Somente quando a FPGA recebe uma configuração que contém uma arquitetura de processador é que ela tem a capacidade de executar software.
Os fabricantes de FPGA fornecem software de engenharia para Windows e às vezes também Linux, para desenvolver projetos para FPGAs. O projeto é comumente escrito em arquivos de computador legíveis por humanos chamados de linguagem de descrição de hardware (HDL). As mais populares são VHDL e Verilog. As linguagens de descrição de hardware são fortemente comparáveis às linguagens de programação. Mas a intenção das HDLs é projetar circuitos lógicos digitais enquanto as linguagens de programação projetam software.
O software de engenharia FPGA tem que traduzir o código HDL abstrato para os elementos lógicos disponíveis na FPGA selecionada. Isso é chamado de síntese lógica. Em seguida, é feito um processo de lugar e rota para posicionar os elementos lógicos na FPGA. O resultado é um arquivo de bits que pode ser programado na FPGA ou na memória de configuração. Isto geralmente é feito com um programador USB conectado à porta JTAG da FPGA.
Como a FPGA é um circuito integrado, um fabricante de FPGA pode decidir adicionar outros componentes de circuito integrado comumente usados. Estas peças fixas são chamadas núcleos. Estes são, por exemplo, controladores Ethernet ou mesmo uma arquitetura de processador completa. Para diferentes segmentos de mercado como defesa, médico, comunicações e robótica, o fabricante FPGA tenta adicionar o conjunto mais valioso destes núcleos adicionais.

