Recentemente, montei um conversor de tensão de alta potência para um cliente e, durante o projeto, estava tentando evitar o uso de um MCU. Quando o cliente quis adicionar um recurso de dimmer à placa, fui obrigado a adicionar um pequeno componente com uma EEPROM de 100.000 ciclos. Para mim, isso não foi um grande problema, pois era simples gastar $0,33 por placa para adicionar essa função, permitindo também que o sistema fosse reconfigurado mais tarde. Isso me fez pensar em uma questão interessante: quando você deve escolher um FPGA em vez de um MCU?
Os designers com quem trabalho vivem e respiram módulos/SoCs de MCU da Arm, STM, TI e Nordic, graças principalmente ao suporte do fabricante por meio de SDKs. E quanto aos FPGAs? Você pode esperar o mesmo nível de suporte e deve escolher usar um FPGA para um componente embutido? A resposta para esse tipo de pergunta nem sempre é simples. Aqui está o que você deve considerar ao selecionar um FPGA vs. MCU e onde você pode encontrar novos componentes para suas placas.
Lembro-me de quando comecei a trabalhar seriamente com design eletrônico e comecei a ler a sopa de letrinhas de siglas para diferentes componentes. No início, era difícil ver as diferenças entre alguns processadores digitais, mas entender os limites de cada componente para diferentes aplicações me serviu bem. Os limites do que você pode programar nesses processadores também foram críticos para entender quando escolher cada tipo de componente.
Entrarei nesses aspectos em breve, mas ainda às vezes recebo a ocasional pergunta de um designer mais jovem: o que são FPGAs e MCUs? Ambos fornecem poder de computação, então eles devem ser substitutos perfeitos, certo? Depende da aplicação que você precisa realizar.
Para ter uma noção das diferenças entre componentes FPGA vs. MCU, ajuda compará-los com ASICs. O “A” em ASIC diz que o componente é projetado para uma aplicação específica dentro de um sistema maior. Exemplos incluem:
A lista só continua a partir daí. Qualquer ASIC fornecerá funções muito específicas, às vezes programáveis, para uma gama estreita de tarefas. O nível de integração em um ASIC também varia de chip para chip. Um microcontrolador também é programável até certo ponto, embora as tarefas que podem ser realizadas sejam mais amplas do que o que está embutido no firmware de um ASIC. Os MCUs são construídos para serem adaptáveis e realizar qualquer tarefa que você possa programar no dispositivo com o SDK do fabricante.
A diversão e complicação vem com os FPGAs. Gosto de pensar nos FPGAs como ASICs personalizáveis. Se o oxímoro te incomoda, saiba apenas que você pode usar um FPGA como parte do protótipo ao projetar um ASIC. Isso porque todos os blocos lógicos em um FPGA são configuráveis (eles são basicamente células SRAM). Você está construindo o firmware do zero, e pode definir como as tarefas são executadas no dispositivo no nível do hardware. Isso é algo que você não pode fazer com um MCU ou ASIC.
FPGA vs. MCU vs. ASICs: o espectro específico vs. genérico.
O curioso sobre os SoCs é que eles podem variar de específicos a genéricos em termos de capacidades computacionais. Os fabricantes de componentes vão anexar o termo “SoC”, “SoM” ou “SiP” a um novo circuito integrado que realiza uma gama de tarefas, desde que essas tarefas antes exigissem múltiplos circuitos integrados separados. Esses componentes são altamente integrados, e podem cair em qualquer lugar no espectro de específico vs. genérico.
Em algum lugar à direita do FPGA no gráfico acima estariam os MPUs. Esses dispositivos executam um sistema operacional, interagem com múltiplos periféricos, e são os cavalos de batalha da computação de propósito geral. Alguns podem argumentar que o MCU e o FPGA deveriam trocar de lugares em termos de genericidade (veja o motivo abaixo), mas nem um FPGA ou MCU são projetados para o mesmo tipo de computação geral como um MPU.
A tabela abaixo mostra uma breve comparação de alguns dos aspectos mais importantes dos MCUs e FPGAs. Cada tipo de componente tem suas vantagens, e cabe ao projetista determinar qual é o melhor para o seu sistema. Pessoalmente, prefiro MCUs porque tenho alguma experiência trabalhando em C e nunca aprendi HDL. No entanto, FPGAs podem ser programados para ter algumas das mesmas funções que ASICs especializados, desde que você saiba como codificá-los.
| | FPGA | MCU | | ---------- | ---------- | ---------- | | Reprogramação| Totalmente reprogramável no nível do hardware | Varia: depende do sistema operacional embutido, dinâmico | | Tempo de programação | Mais longo: requer recodificação e recompilação de tudo para código de máquina | Mais curto: auxiliado por SDKs e bibliotecas do fabricante | | Facilidade de programação | Visto como tendo uma curva de aprendizado mais acentuada | Fácil: qualquer pessoa familiarizada com linguagens comuns pode programar | | Consumo de energia | Maior | Menor | | Paralelização | Pode ser configurado durante a programação | Limitado pela arquitetura de hardware | | Ponto fixo vs. ponto flutuante | Configurado para ponto fixo, mas ponto flutuante pode ser implementado durante a programação | Ambos são acessíveis | | Linguagens | Linguagem de descrição de hardware (HDL) | Linguagem C/Assembly, outras se suportadas por RTOS (ex. Python) |
Porque os FPGAs são frequentemente vistos como difíceis de programar por desenvolvedores mais novos, um MCU é tipicamente visto como o melhor processador para um dispositivo embutido. Isso foi em grande parte auxiliado pela comunidade de código aberto, e alguns projetos de código aberto podem ser usados como a arquitetura básica ou prova de conceito para um novo produto. Some a isso o suporte dos fabricantes, e você terá à disposição muitas ferramentas para programar MCUs.
Apesar da curva de aprendizado na programação de FPGAs, eles são muito mais configuráveis em termos de arquitetura de firmware. A paralelização pode ser programada no dispositivo, dependendo do número de LUTs e ALUs disponíveis. Isso faz com que os FPGAs sejam uma ótima escolha quando seu firmware precisa ser projetado para aplicações muito específicas. Exemplos incluem inferência em IA, processamento de imagens, algoritmos de controle de hardware e outras tarefas que requerem computação repetitiva (ou paralela).
Seu próximo sistema embutido não irá a lugar algum sem os componentes certos, e você pode encontrar os componentes de que precisa ao usar um motor de busca de peças eletrônicas como o Octopart. As funções avançadas de filtragem ajudam você a restringir aos componentes de que precisa e podem ajudá-lo a escolher rapidamente entre um FPGA vs. MCU para o seu próximo sistema. Você pode encontrar FPGAs e MCUs no Octopart.
Mantenha-se atualizado com nossos últimos artigos ao assinar nossa newsletter.