Uma distinção que eu não vi elaborada aqui é que os FPGAs são usados e se comportam de uma maneira completamente diferente dos processadores.
Um FPGA é realmente bom em executar exatamente a mesma tarefa, repetidamente. Por exemplo, processamento de sinais de vídeo, áudio ou RF. Ou roteando pacotes Ethernet. Ou simulando o fluxo de fluido. Qualquer situação em que você tenha muitos dados do mesmo tipo sendo lançados muito rapidamente e deseja lidar com tudo da mesma maneira. Ou você deseja executar o mesmo algoritmo repetidamente. O FPGA realmente não tem 'tarefas' que iniciam e param [1], todo o seu trabalho é fazer a mesma coisa com todos os dados que obtiver, enquanto estiver ligado. Não muda de marcha, não faz mais nada. É o melhor funcionário da linha de produção. Ele fará a mesma coisa repetidamente, o mais rápido possível, para sempre.
As CPUs, por outro lado, são o epítome da flexibilidade. Eles podem ser programados para fazer qualquer coisa, e podem ser programados para fazer várias coisas diferentes ao mesmo tempo. Eles têm tarefas que iniciam e param, mudam de marcha, multitarefa, estão constantemente mudando e mudando funções.
O FPGA e a CPU são opostos completos. A mercadoria da CPU é tempo - ela deve fazer as coisas mais rapidamente. Quanto mais rápido o aplicativo for executado, melhor.
A mercadoria do FPGA é o espaço. Seu FPGA é tão grande e existem tantos portões disponíveis para executar a tarefa que você deseja. Na maioria das vezes, a questão é mais do que velocidade [2].
É possível fazer um FPGA agir como uma CPU. Você pode colocar um núcleo de IP da CPU em um FPGA, no entanto, é muito difícil justificar por causa dos motivos que outros descreveram [3]. O FPGA e a CPU são opostos, ambos tendo suas próprias forças e fraquezas, e ambos tendo seu próprio lugar como resultado.
Notas:
1) Um FPGA poderia ser projetado para executar tarefas diferentes, mas mesmo assim seria um número específico para o qual foi pré-projetado.
2) A velocidade também é uma especificação de design do FPGA. É realmente uma troca entre velocidade e tamanho.
3) A inserção de uma CPU em um FPGA é feita com relativa frequência, no entanto, é feita caso a caso, dependendo dos aplicativos específicos. Por exemplo, se você precisar de um microcontrolador muito pequeno e tiver espaço FPGA extra.
E finalmente: Esta resposta é uma grande simplificação - os FPGAs são usados de maneiras enormemente variadas e complexas e esta é uma breve visão geral sobre como eles são usados em geral.