+1 500 000 produtos na nossa oferta
7000 encomendas enviadas diariamente
+300 000 clientes de 150 países
Data de publicação: 18-11-2025 🕒 9 min de leitura
Os dispositivos FPGA estão disponíveis comercialmente há muitos anos, mas, apesar de muitas vantagens, não se pode dizer que sejam populares em aplicações. As principais razões são o alto custo da solução e a falta de conhecimento sobre as aplicações. A primeira dessas características afeta negativamente o projetista ou outro tomador de decisão em relação aos componentes, enquanto a última afeta, na maioria das vezes, o programador ou designer de sistemas embarcados, que é proficiente em linguagens orientadas a objetos, mas não entende a linguagem de descrição de hardware. Neste texto, examinaremos características práticas selecionadas dos dispositivos FPGA e as compararemos com microcontroladores muito mais conhecidos e aceitos. Também apontaremos aplicações onde o uso de FPGA é indispensável e aquelas onde se torna "excessivo".
FPGA é o nome de um grupo de circuitos integrados derivados das primeiras letras das palavras Field-Programmable Gate Array. Esses dispositivos podem ser programados após a produção. O processo de programação de FPGA é chamado de configuração, pois envolve a realização de conexões entre blocos funcionais prontos disponíveis dentro da estrutura. Ao contrário dos circuitos integrados digitais típicos (portas, registradores, flip-flops, contadores, etc.) que têm funcionalidade fixa, os FPGAs podem ser programados repetidamente, proporcionando flexibilidade no design e teste de diferentes aplicações.
Os FPGAs consistem em blocos lógicos programáveis e interconexões programáveis entre eles. Esses dispositivos podem conter não apenas blocos digitais, mas também conversores analógico-digital, conversores digital-analógico, núcleos de processadores (de uso geral ou DSP), blocos de interface que permitem a cooperação com dispositivos externos, ou até mesmo unidades de suporte à IA conectadas via Network-on-Chip (NoC), uma rede de interconexão embutida que transmite pacotes de dados entre blocos e componentes do dispositivo. Graças a recursos ricos e conexões flexíveis, os dispositivos FPGA podem ser configurados para realizar várias funções, como processamento de sinais, controle de sistemas embarcados ou aceleração de processamento de dados.
Uma das vantagens mais importantes do FPGA é a velocidade de computação. Esses dispositivos operam de forma diferente de um microprocessador, que busca e executa instruções sequencialmente. No FPGA, o resultado do processamento pode aparecer "imediatamente", atrasado apenas por um pequeno tempo de propagação. Também é significativo que muitas operações possam ser realizadas em paralelo, ao contrário de um microcontrolador, que raramente suporta a execução simultânea de muitas instruções.
Todo dispositivo FPGA consiste em três grupos de componentes:
Figura 1. Diagrama de bloco simplificado ilustrando a estrutura de um dispositivo FPGA
Os dispositivos CPLD (Complex Programmable Logic Device) foram os precursores dos dispositivos FPGA e (apesar de terem menos funcionalidade) são oferecidos hoje para aplicações menos complexas. A maioria dos principais fornecedores oferece uma ampla gama, começando pelas versões mais simples designadas como PAL, contendo elementos programáveis e partes fixas predispostas a realizar uma determinada função lógica. Isso permite usar um único circuito integrado em vez de vários funtores lógicos, mas não fornece grande flexibilidade para aplicações.
Comparado ao PAL, os dispositivos CPLD são mais complexos. Eles contêm mais portas, são equipados com memória não volátil e RAM, tornando-os adequados para aplicações mais complexas. Por exemplo, a Intel® colocou muitos blocos PAL chamados macrocells em um único pacote de circuito unificado, onde todas as entradas estão disponíveis para cada célula, e cada macrocell pode controlar qualquer saída. A estrutura de conexão é armazenada em memória programável eletricamente chamada memória de configuração, assim como no FPGA. Então, se os CPLDs têm macrocells, um barramento de conexão programável e memória de configuração, como eles diferem dos FPGAs?
Comparado aos FPGAs, os CPLDs contêm significativamente menos elementos lógicos e não têm matrizes LUT (look up tables). Eles têm uma arquitetura mais integrada, com um número muito menor de blocos lógicos, e implementam funções lógicas mais complexas em cada bloco. Muitas conexões entre blocos no CPLD são pré-definidas no processo de fabricação e não podem ser alteradas durante a configuração do dispositivo. Eles não são usados para criar aplicações tão complexas quanto os FPGAs, que podem conter milhões de funtores lógicos. Para ilustrar, um FPGA pode modelar um núcleo de processador, enquanto um CPLD é útil para implementar um decodificador de endereço que coopera com ele.
Figura 2. Macrocell do dispositivo da série MAX7000 (fonte: documentação do fabricante)
Na maioria dos dispositivos FPGA, a configuração é armazenada em memória externa, geralmente conectada via uma interface serial. Os dados de configuração são copiados para a RAM do FPGA a cada inicialização ou reset completo. Isso cria um atraso na inicialização do dispositivo, maior para FPGAs mais complexos, o que não acontece com os CPLDs que têm configuração armazenada em memória EEPROM.
Uma desvantagem do FPGA em comparação ao CPLD é o maior custo de aplicação.
Tabela 1. Comparação de parâmetros selecionados dos dispositivos FPGA e CPLD
| Recurso/parâmetro | CPLD | FPGA |
|---|---|---|
| Flexibilidade de aplicação | Baixa | Alta |
| Preço | Baixo | Alto ou muito alto |
| Segurança da aplicação | Alta | Suscetível a acessos não autorizados |
| Velocidade de operação | Alta | Alta |
| Capacidade/tamanho da aplicação | Baixa | Alta ou muito alta |
| Aplicação de hardware | Simples | Complexa ou muito complexa |
| Programação | Em linguagens de configuração de hardware ou por esquemas funcionais | |
Os blocos funcionais embutidos no FPGA, especialmente conversores A/D, conversores D/A, ou módulos de interface para dispositivos externos, podem se assemelhar ao entorno de um núcleo de microcontrolador. Um FPGA pode ter RAM embutida e memória Flash não volátil, mas essa semelhança é enganosa.
Os dispositivos FPGA modernos e avançados são funcionalmente mais complexos do que microcontroladores avançados e complexos. Por exemplo, a conexão de blocos funcionais dentro de um FPGA pode usar tecnologia NoC (Network on Chip), onde dentro da estrutura do circuito integrado, pacotes de dados são transmitidos usando barramentos gerenciados por switches embutidos. Isso é útil para processamento e condicionamento de sinais e para algoritmos que empregam aprendizado de máquina e inteligência artificial.
A velocidade de operação do FPGA em comparação a um microcontrolador é realmente surpreendente. Isso ocorre porque um núcleo típico de microcontrolador busca e executa instruções uma a uma. Para acelerar o processamento de dados, ele descarrega algumas operações para unidades periféricas (por exemplo, transmissão de dados para e da memória via DMA), mas isso não muda seu ritmo operacional. Nos FPGAs, dependendo da configuração, o FPGA geralmente transmite a resposta imediatamente após receber os dados e, além disso, pode executar muitos threads simultaneamente. Lembre-se, por exemplo, que avaliar um sinal não envolve pegar uma amostra e depois avaliá-la no próximo passo, mas refere-se a um determinado esquema de avaliação disponível como uma rede de funtores lógicos conectados, de modo que pode estar disponível com precisão até o tempo de propagação do dispositivo.
Um microcontrolador contém um núcleo de processador, RAM, ROM, Flash e periféricos, como portas de entrada/saída, temporizadores, conversores A/D e D/A em um único circuito integrado. Ele é projetado para realizar tarefas específicas. Embora alguns módulos possam ser habilitados/desabilitados para economizar energia, sua funcionalidade não pode ser redefinida. É fixa durante a produção, incluindo a operação e conexão de blocos. Um microcontrolador é um pouco como um microcomputador montado em uma pequena placa de circuito impresso dentro de um único pacote. Mudar sua configuração requer modificar a placa, incluindo trilhas de circuito, colocação de componentes e suas interconexões.
Um dispositivo FPGA é construído a partir de blocos lógicos programáveis conectados por interconexões configuráveis. Funtores podem ser combinados em vários blocos funcionais capazes de realizar diferentes operações lógicas, e dispositivos FPGA modernos e avançados utilizam tecnologias de conexão muito avançadas, como NoC.
Programar FPGA (e CPLD) consiste em definir conexões lógicas e funções usando linguagens de descrição de hardware (HDL) como VHDL ou Verilog. A configuração, especialmente para dispositivos mais simples, também pode ser feita usando um esquema lógico, colocando e conectando componentes lógicos típicos. Configurar FPGA requer conhecimento de design de circuitos digitais. Programar um microcontrolador utiliza linguagens de programação estruturais ou orientadas a objetos. Hoje, a maioria das aplicações se afasta do assembler de baixo nível em direção a linguagens de alto nível como C, C++, Java e outras. A programação de microcontroladores se assemelha à programação de "grandes" computadores, facilitando para a maioria dos programadores, que muitas vezes carecem de conhecimento sobre a operação e otimização de blocos lógicos. A memória do programa FPGA armazena a configuração, enquanto a memória do microcontrolador armazena comandos e parâmetros.
Tabela 2. Comparação de parâmetros selecionados de microcontroladores e FPGA
| Recurso/parâmetro | Microcontrolador | FPGA |
|---|---|---|
| Flexibilidade de aplicação | Alta | Alta |
| Preço | Baixo ou médio | Alto ou muito alto |
| Segurança da aplicação | Suscetível a acessos não autorizados | Suscetível a acessos não autorizados |
| Velocidade de operação | Baixa em comparação ao FPGA | Alta |
| Capacidade de memória / tamanho da aplicação | De muito pequeno a muito grande | Alta ou muito alta |
| Aplicação de hardware | Simples | Complexa ou muito complexa |
| Possibilidade de operação analógica | Nenhuma ou limitada | |
| Programação | Em assembler ou linguagens de alto nível | Em linguagens de configuração de hardware |
A característica mais importante dos dispositivos ASIC, como indicado pelo nome, é que eles são projetados para realizar uma tarefa específica. Isso poderia ser, por exemplo, receber e decodificar um sinal de rádio, controlar um modelo de display específico, ou outros. Note que o ASIC não precisa necessariamente ser programável, embora existam disponíveis comercialmente que contenham um núcleo de processador para o qual aplicações podem ser criadas.
A fronteira entre um circuito integrado típico e um dispositivo ASIC é muito fina. Eles são separados principalmente pelo volume de produção; os ASICs são produzidos em números menores em comparação com circuitos integrados produzidos em massa. Muitos fabricantes oferecem circuitos integrados sem indicar se são produzidos em massa ou ASICs.
A arquitetura de um ASIC é definida pelo projetista e não pode ser alterada após a fabricação. Normalmente, quando os ASICs têm um núcleo de processador, nenhum desenvolvimento de programa é necessário, apenas a configuração de alguns parâmetros específicos. Da mesma forma, o tipo de comunicação com o ambiente e os formatos de dados são definidos durante o design, e mesmo que a troca entre diferentes tipos seja possível, mudanças não podem ser introduzidas.
Comparado à configuração de FPGA, o processo de design de ASIC é mais complexo e caro, podendo exigir conhecimento especializado além do design de circuitos digitais, mas o produto final é mais otimizado para aplicações específicas, desempenho e eficiência energética.
Os ASICs são usados em aplicações que requerem alto desempenho com baixo consumo de energia e dimensões miniaturizadas. A especialização permite que eles ofereçam excelentes parâmetros práticos. Além disso, os ASICs geralmente estão prontos para uso imediatamente após a soldagem ou colocação em um soquete e não precisam carregar configuração de memória externa. Eles também podem ter funcionalidade mista ou ser puramente analógicos. Isso não é possível com FPGAs, que fornecem desempenho muito alto por meio do processamento paralelo de dados digitais, após conversão de analógico para digital e vice-versa.
ASICs prontos para uso podem ser muitas vezes mais baratos que FPGAs. Eles são muito mais caros e demorados para projetar, mas esses custos são amortizados em volumes tipicamente grandes. Isso vem à custa da falta de capacidade de reconfiguração, mas nem sempre é necessário. Semelhante aos microcontroladores, os FPGAs podem ser usados para prototipar ASICs, mas os ASICs não podem modelar a operação do FPGA. Claro, aqui nos referimos a modelagem que permite gravar uma configuração útil para FPGA, não apenas alcançar funcionalidade semelhante.
Tabela 3. Comparação de parâmetros selecionados de ASIC e FPGA
| Recurso/parâmetro | ASIC | FPGA |
|---|---|---|
| Flexibilidade de aplicação | Muito baixa | Alta |
| Preço | Baixo ou médio | Alto ou muito alto |
| Segurança da aplicação | Alta | Suscetível a acessos não autorizados |
| Velocidade de operação | Alta | Alta |
| Capacidade/tamanho da aplicação | Baixa ou nenhuma | Alta ou muito alta |
| Aplicação de hardware | Simples | Complexa ou muito complexa |
| Possibilidade de operação analógica | Depende do design | Nenhuma ou limitada |
| Programação | Capacidade limitada ou não necessária | Em linguagens de configuração de hardware |
Bibliografia:
A Transfer Multisort Elektronik (TME) é um dos maiores distribuidores globais de componentes eletrônicos, peças eletrotécnicas, equipamentos de oficina e automação industrial. O catálogo inclui mais de 1.500.000 de produtos de 1.300 fabricantes líderes. Os modernos centros logísticos da TME em Łódź e Rzgów (Polónia), com uma área total superior a 40.000 m², enviam quase 6.000 pacotes diariamente para clientes em mais de 150 países.
A TME também investe no desenvolvimento do conhecimento e das competências de jovens engenheiros e entusiastas da eletrónica através do projeto TME Education e apoia a comunidade tecnológica organizando a série de eventos TechMasterEvent, promovendo a inovação e a troca de experiências.