Matrizes de portas programáveis em campo (FPGAs) versus microcontroladores: qual é a diferença?
3 de junho de 2024
6 min. de leitura

Matrizes de portas programáveis em campo (FPGAs) e unidades de microcontrolador (MCUs) são dois tipos de circuitos integrados (ICs) comumente comparados que são normalmente utilizados em sistemas embarcados e design digital. Tanto os FPGAs quanto os microcontroladores podem ser considerados "pequenos computadores" que podem ser integrados a dispositivos e sistemas maiores.

Como processadores, a principal diferença entre FPGAs e microcontroladores se resume à capacidade de programação e processamento. Embora os FPGAs sejam mais poderosos e versáteis, são também mais caros. Os microcontroladores são menos personalizáveis, mas também menos caros. Em muitas aplicações, os microcontroladores são excepcionalmente capazes e econômicos. No entanto, para certas aplicações exigentes ou em desenvolvimento, como aquelas que requerem processamento paralelo, os FPGAs são necessários.

Ao contrário dos microcontroladores, os FPGAs oferecem reprogramação no nível do hardware. Seu design exclusivo permite que os usuários configurem e reconfigurem a arquitetura do chip dependendo da tarefa. O design do FPGA também pode lidar com entradas paralelas simultaneamente, enquanto os microcontroladores só podem ler uma linha de código de cada vez. Um FPGA pode ser programado para executar as funções de um microcontrolador; no entanto, um microcontrolador não pode ser reprogramado para funcionar como um FPGA.

O que é uma matriz de portas programáveis em campo (FPGA)?

Introduzidos pela primeira vez pelo fabricante Xilinx em 1985, os FPGAs são altamente valorizados por sua versatilidade e poder de processamento. Consequentemente, eles são a escolha preferencial em muitas aplicações de computação de alto desempenho (HPC), processamento de sinal digital (DSP) e prototipagem.

Ao contrário dos circuitos integrados específicos de aplicações (ASICs) tradicionais, os FPGAs são projetados para serem configurados (e reconfigurados) "no campo" após a conclusão do processo inicial de fabricação. Embora a personalização seja a oferta de maior valor dos FPGAs, deve-se notar que os FPGAs não apenas permitem a programabilidade, eles a exigem. Ao contrário dos ASICs, os FPGAs não são soluções "prontas para uso" e devem ser configurados antes do uso com uma linguagem de descrição de hardware (HDL), como verilog ou VHDL. A programação de um FPGA exige conhecimento especializado, o que pode aumentar os custos e atrasar as implementações. Embora alguns FPGAs ofereçam memória não volátil que pode reter instruções de programação quando desligados, normalmente os FPGAs devem ser configurados na inicialização.

Benefícios dos FPGAs

Apesar desses desafios, FPGAs ainda permanecem úteis em aplicações que exigem alto desempenho, baixa latência e flexibilidade em tempo real. Os FPGAs são particularmente adequados para aplicações que exigem o seguinte:

  • Prototipagem rápida: Os FPGAs podem ser configurados rapidamente em vários tipos de circuitos digitais personalizados, permitindo implantações, avaliações e modificações rápidas sem a necessidade de processos de fabricação caros e demorados. 
  • Aceleração de hardware: aplicações exigentes se beneficiam dos recursos de processamento paralelo do FPGA. Os FPGAs podem oferecer melhorias consideráveis de desempenho para tarefas computacionalmente intensivas, como processamento de sinal, criptografia e algoritmos de aprendizado de máquina.
  • Personalização: FPGAs são uma solução de hardware flexível que pode ser facilmente otimizada para atender aos requisitos específicos do projeto. 
  • Longevidade: Os projetos baseados em FPGA podem se beneficiar de uma vida útil mais longa do hardware, pois os FPGAs podem ser atualizados e reconfigurados para atender às demandas de projetos e aos padrões tecnológicos em constante evolução. 

Componentes do FPGA

Para alcançar a reconfiguração, os FPGAs são compostos por uma matriz de blocos lógicos programáveis interconectados por uma malha de roteamento programável. Os principais componentes de um FPGA típico são os seguintes:

  • Blocos lógicos configuráveis (CLBs): os CLBs oferecem funcionalidade de computação e podem conter um pequeno número de elementos lógicos primitivos, como portas lógicas, pequenas tabelas de consulta (LUTs), multiplexadores e flip-flops para armazenamento de dados. 
  • Interconexões programáveis: compostas por segmentos de fios unidos por comutadores eletricamente programáveis, essas ligações oferecem os caminhos de roteamento entre os vários recursos do FPGA, permitindo diferentes configurações e a criação de circuitos digitais personalizados. 
  • IOBs (blocos de E/S): A interface entre um FPGA e outros dispositivos externos é habilitada por blocos de entrada e saída (E/S), que permitem que o FPGA receba dados e controle periféricos 

Casos de uso do FPGA

Versáteis por natureza, os FPGAs são comuns em uma ampla variedade de setores e aplicações:

  • Aeroespacial e defesa: Oferecendo processamento paralelo de alta velocidade valioso para aquisição de dados, os FPGAs são a escolha preferida para sistemas de radar, processamento de imagens e comunicações seguras. 
  • Sistemas de controle industrial (ICS): sistemas de controle industrial utilizados para monitorar infraestrutura, como redes elétricas, refinarias de petróleo e plantas de tratamento de água, utilizam FPGAs que podem ser facilmente otimizados para atender às necessidades exclusivas de vários setores. Nesses segmentos críticos, os FPGAs podem ser utilizados para implementar várias automações e funcionalidades de criptografia baseados em hardware para uma cibersegurança eficiente.
  • Desenvolvimento de ASIC: Os FPGAs são frequentemente utilizados na prototipagem de novos chips ASIC. 
  • Automotivo: O processamento Advanced de sinais também torna os FPGAs adequados para aplicações automotivas, incluindo sistemas Advanced de assistência ao motorista (ADAS), fusão de sensores e GPS.
  • Data centers: os FPGAs agregam valor aos data centers otimizando servidores de alta largura de banda e baixa latência, rede e infraestrutura de armazenamento.

Características do FPGA

  • Núcleo de processamento: blocos lógicos configuráveis
  • Memória: interface de memória externa 
  • Periféricos: blocos configuráveis de E/S
  • Programação: linguagem de descrição de hardware (VHDL, Verilog) 
  • Reconfigurabilidade: lógica altamente reconfigurável e reprogramável
O que é um microcontrolador?

Os microcontroladores são um tipo de ASIC compacto e pronto para uso que contêm um núcleo de processador (ou núcleos), memória (RAM) e memória apagável programável somente para leitura (EPROM) para armazenar os programas personalizados executados no microcontrolador. Conhecidos como solução de “sistema em um chip (SoC)”, os microcontroladores são essencialmente pequenos computadores integrados em uma única peça de hardware que podem ser utilizados de forma independente ou em sistemas embarcados maiores.

Microcontroladores de nível de consumidor, como o Arduino Starter Kit ou o Microchip Technology PIC, podem ser configurados com linguagem assembly ou linguagens de programação comuns (C, C++) e são preferidos por amadores e educadores por sua acessibilidade econômica. Os microcontroladores também são capazes de lidar com tarefas mais complexas e críticas e são comuns em aplicações industriais. No entanto, a redução do poder de processamento e dos recursos de memória pode limitar a eficácia do microcontrolador em aplicações mais exigentes.

Vantagens dos microcontroladores

Apesar de suas limitações, os microcontroladores oferecem muitas vantagens, incluindo as seguintes:

  • Design compacto: os microcontroladores integram todos os componentes necessários em um único chip pequeno, oferecendo uma pegada pequena valiosa em aplicações onde o tamanho e o peso são uma prioridade.
  • Eficiência energética: projetados para operar com baixa energia, os microcontroladores são adequados para dispositivos alimentados por bateria e outras aplicações em que o consumo de energia é uma preocupação.
  • Econômico: os microcontroladores oferecem uma solução SoC completa que reduz a necessidade de periféricos e componentes adicionais. Os microcontroladores de baixo custo e de uso geral podem reduzir muito as despesas gerais do projeto.
  • Flexibilidade: embora não sejam tão versáteis quanto os FPGAs, os microcontroladores são programáveis para uma ampla gama de aplicações diversas. Embora não possam ser reprogramados em nível de hardware, os microcontroladores podem ser facilmente reconfigurados, atualizados e otimizados em nível de software.

Componentes do microcontrolador

Quando a reprogramabilidade não é uma prioridade, os microcontroladores autônomos oferecem uma alternativa compacta e capaz. A seguir estão os principais componentes de um microcontrolador:

  • Unidade central de processamento (CPU): coloquialmente chamada de "cérebro", a unidade central de processamento (CPU) atua como o componente central responsável pela execução de instruções e controle de operações.
  • Memória: os microcontroladores contêm memória volátil (RAM), que armazena dados temporários que podem ser perdidos se o sistema ficar sem energia, e memória não volátil (ROM, FLASH) para armazenar o código de programação do microcontrolador.
  • Periféricos: dependendo da aplicação pretendida, um microcontrolador pode conter vários componentes periféricos, como interfaces de entrada/saída (E/S), como timers, contadores, transformadores analógico-digitais (ADCs) e protocolos de comunicação (UART, SPI, I2C ).

Casos de uso de microcontroladores

Ao contrário dos FPGAs, microcontroladores pequenos, acessíveis e não voláteis estão em toda parte na eletrônica moderna, frequentemente implementados para tarefas específicas, incluindo as seguintes:

  • Sistemas automotivos: microcontroladores são utilizados no controle do motor, na implantação do airbag e em sistemas de infoentretenimento no carro.
  • Eletrônicos de consumo: Os microcontroladores são essenciais em smartphones, TVs inteligentes e outros eletrodomésticos, especialmente em dispositivos que se integram à Internet das Coisas (IoT).
  • Automação industrial: os microcontroladores são adequados para aplicações industriais, como controle de máquinas, sistemas de monitoramento e automação de processos.
  • Dispositivos médicos: os microcontroladores são frequentemente implementados em dispositivos de salvamento de vidas, como Pacemaker, monitores de glicose no sangue e ferramentas de diagnóstico.

Recursos do microcontrolador

  • Núcleo de processamento: CPU fixa
  • Memória: RAM e ROM/Flash integrados 
  • Periféricos: interfaces de E/S integradas para
  • Programação: Software (C, Assembly) 
  • Reconfigurabilidade: limitada, atualizações de firmware
Principais diferenças entre FPGAs e microcontroladores

Na comparação de FPGAs e microcontroladores, é importante considerar uma série de diferenças importantes, incluindo arquitetura de hardware, recursos de processamento, consumo de energia e requisitos do desenvolvedor.

  • Estrutura do hardware
    • FPGA: blocos lógicos programáveis altamente configuráveis e interconexões, permitindo circuitos digitais reprogramáveis e personalizados.
    • Microcontrolador: arquitetura fixa com componentes predefinidos (CPU, memória, periféricos) integrados em um único chip.
  • Recursos de processamento
    • FPGA: o processamento paralelo Advanced permite várias operações simultâneas.
    • Microcontrolador: projetados para processamento sequencial, os microcontroladores só podem executar as instruções uma de cada vez.
  • Consumo de energia
    • FPGA: normalmente consome mais energia que microcontroladores.
    • Microcontrolador: otimizado para baixo consumo de energia, adequado para aplicações alimentadas por bateria.
  • Programação
    • FPGA: exige conhecimento especializado em linguagens de descrição de hardware para configurar e depurar.
    • Microcontrolador: pode ser programado usando linguagens de desenvolvimento de software, incluindo Javascript, Python, C, C++ e linguagens assembly.
  • Custo
    • FPGA: oferecendo maior potência, mas exigindo habilidades avançadas, o hardware do FPGA geralmente é mais caro, com o custo adicional do maior consumo de energia e conhecimentos especializados do programador.
    • Microcontrolador: geralmente uma solução mais econômica com disponibilidade pronta para uso, menor consumo de energia e suporte para linguagens de programação mais acessíveis.
  • Versatilidade
    • FPGA: o FPGA é muito mais flexível do que o microcontrolador, permitindo a personalização no nível do hardware.
    • Microcontrolador: embora sejam adequados para uma ampla gama de aplicações, os microcontroladores oferecem somente uma personalização superficial em comparação com os FPGAs.
Explore as soluções de infraestrutura da IBM

Seja procurando um processador FPGA versátil e poderoso ou um microcontrolador compacto e econômico, considere como a IBM pode ajudar a elevar sua empresa ao próximo patamar com soluções de infraestrutura de ponta. O novo IBM FlashSystem 5300 oferece melhor desempenho e resiliência cibernética. O novo IBM Storage Assurance simplifica a propriedade do armazenamento e ajuda a enfrentar os desafios do ciclo de vida de TI.

 
Autor
Josh Schneider Senior Writer, IBM Blog