FPGA, ou arranjo de portas programáveis em campo, é um circuito integrado de semicondutores no qual a funcionalidade elétrica é personalizada para acelerar cargas de trabalho importantes.

FPGA é um circuito integrado de semicondutor no qual a vasta maioria das funcionalidades elétricas dentro do dispositivo pode ser modificada, pelo engenheiro de projeto, durante o processo de montagem do PCB, ou mesmo após o envio do equipamento para os clientes.

Os dispositivos de FPGA SoC integram as arquiteturas de processador e FPGA em um único dispositivo.

Integrar a funcionalidade de gerenciamento de alto nível de processadores e as operações rigorosas em tempo real, processamento extremo de dados ou funções de interface de um FPGA (Matriz de porta de campo programável) em um único dispositivo forma uma plataforma de computação embarcada ainda mais poderosa.

Assim, eles oferecem maior integração, menor potência, menor tamanho de placa e uma maior banda de comunicação entre o processador e o FPGA. Eles também incluem um conjunto rico de periféricos, memória no chip, uma matriz lógica com estilo FPGA e transceptores de alta velocidade.

Flexibilidade

A funcionalidade do FPGA pode mudar em cada inicialização do dispositivo.

Aceleração

Coloque os produtos no mercado mais rapidamente e/ou aumente o desempenho do seu sistema.

Integração

Os FPGAs atuais incluem processadores on-die, transceptores E/S a 28 Gbps (ou mais rápido), blocos de RAM, mecanismos DSP e muito mais.

Custo total de propriedade (TCO)

Embora os ASICs possam custar menos por unidade do que um FPGA equivalente, construi-los requer uma despesa não recorrente (NRE), ferramentas caras de software, equipes de design especializadas e longos ciclos de fabricação.

Os processadores em SoC FPGAs podem ser "rígidos" ou "flexíveis" Processadores rígidos são implementados na lógica de silício fixo do SoC FPGA semelhante aos transceptores seriais. No SoC FPGAs, no entanto, o processador está cercado por lógica programável que pode ser usada para funções personalizadas ou específicas do aplicativo. Processadores rígidos oferecem melhor desempenho da CPU em comparação a processadores flexíveis, dependendo de alguns fatores como, arquitetura de processador, taxa de clock e tecnologia de processamento. Como o nome sugere, os conjuntos de recursos para processadores rígidos são normalmente oferecidos apenas como uma variação específica de um SoC FPGA. O número e tipo de processadores rígidos em um SoC FPGA também são fixados como uma função desse SoC FPGA em particular. A Altera® oferece processadores rígidos nas famílias FPGA SoC Intel® Stratix® 10, FPGA SoC Intel® Arria® 10, FPGA SoC Arria® V e FPGA Soc Cyclone® V.

Processadores flexíveis como o processador Nios® II são implementados em lógica programável, usam recursos no chip, como elementos lógicos, multiplicadores e memória, e podem ser instanciados em quase qualquer família FPGA. O desempenho e o custo de um processador flexível depende principalmente do FPGA no qual o processador é instanciado, mas o desempenho e o custo são normalmente menores do que nos processadores rígidos. O número de processadores flexíveis que podem ser instanciados em um único dispositivo é limitado apenas pelos recursos do dispositivo (ou seja, sua lógica e memória). FPGAs de alta densidade, por exemplo, podem conter centenas de processadores flexíveis. Da mesma forma, diferentes tipos de processadores flexíveis podem ser implementados: 16 ou 32 bits, desempenho otimizado, área lógica otimizada e assim por diante. Você pode escolher migrar seus projetos de processador flexível para implementações de processador rígido ao mover para matrizes de portas ou projetos baseados na célula. Da mesma forma, um ou mais processadores flexíveis podem ser usados na parte FPGA de um FPGA SoC.

Há muitas maneiras de usar os FPGAs em um sistema embarcado. Os usos mais comuns incluem:

  • E/S e expansão periférica - adicione periféricos ausentes do seu processador atual, como LCD ou controladores de memória, ou aumente o número de canais de E/S no seu sistema adicionando Ethernet, E/S de uso geral (GPIO) ou portas UART.
  • Coprocessamento - aumente o desempenho do sistema movendo algoritmos de computação intensiva do software executado em um processador para o hardware no FPGA. Os aplicativos de processamento de sinal, processamento de imagem e processamento de pacote alcançam uma melhoria de desempenho de ordens de magnitude, executando em hardware em vez de software.
  • Controlador embarcado personalizado - você decide quais (e quantos) processadores, periféricos, interfaces, canais de acesso de memória direta (DMA) e memórias para incluir em seu controlador embarcado personalizado.
  • Multiprocessador - acelere o desenvolvimento de seu software, melhore a confiabilidade do código e aumente a capacidade de manutenção, distribuindo tarefas em várias CPUs. É possível projetar um sistema multriprocessador como um sistema personalizado dentro de um único FPGA ou para aumentar uma CPU externa ou um processador de sinal digital.