Nesses componentes é possível definir ligações entre portas lógicas, blocos de memória, praticamente é possível criar qualquer circuito digital. Um código para FPGA chamamos de descrição de hardware, escritos em alguma linguagem de descrição de hardware (HDL), como por exemplo, Verilog e VHDL.
A tradução dos arquivos HDL, de descrição de hardware são transformadas em um binário através de um processo que se chama síntese. Nesse binário são configuradas todas as ligações internas. Além disso, nesse arquivo também está descrita a função determinada para cada unidade lógica.
Esses componentes acabam se tornando "lentos" e um pouco caros, mas necessários algumas vezes. Eu coloquei lento entre aspas pois de lentos não tem nada. Só são lentos se comparados com circuitos integrados especializados. Os FPGAs inclusive são utilizado em situações onde velocidade de processamento de uma informação é extremamente necessária. Mais que velocidade, um componente desse traz determinismo. Ou seja, você garante quando uma determinada operação será executada. Ainda mais: você consegue saber toda sucessividade de operações que acontecerá e o que a causou.
As aplicações, por isso, são diversas, como:
Outras são aplicações, vamos dizer... "não tão sérias", são possíveis também. Olha esse Game Boy gigante feito utilizando FPGA. Coloquei no minuto certo para você ver o resultado.
Espero que tenham gostado dessa introdução.