Compare a implementação de um projeto de automação simples em um MCU versus um FPGA / CPLD

8

Trabalho com MCUs desde os anos 90, e recentemente me aventurei no cenário FPGA com os chips da série Spartan6 da Xilinx. Supondo que um projeto simples de automação de fábrica com sensores e motores e alguma inteligência para vincular tudo, em que tipo de dispositivo eu poderia terminar o projeto com mais rapidez e facilidade, MCUs ou FPGAs? Pontos pequenos ou "óbvios" também são apreciados porque sou novo no FGPA em geral.

Kevin Boyd
fonte
Mesmo uma solução FPGA quase certamente envolveria um processador, próximo ao FPGA, implementado dentro dele ou em um computador maior conectado. As estruturas de programas armazenados são muito mais prontamente direcionadas para a implementação de partes complexas de algoritmos do que as máquinas especializadas de lógica ou de estado; portanto, você salva as últimas apenas para coisas que devem ser rápidas (ou massivamente paralelas), mas simples.
22612 Chris Stratton
Ótimas respostas de Richard & Martin abaixo. Pode ser tentador tentar aplicar uma habilidade ou tecnologia recém-aprendida ao próximo problema, mas neste caso (pelas razões descritas pelos senhores acima), acho que um MCU é o caminho a seguir.
Radian

Respostas:

11

Não há motivo para usar FPGAs, a menos que você precise . Até dois engenheiros com talento semelhante nos campos MCU e FPGA usariam um MCU para uma tarefa de automação relativamente simples.

Pro MCU:

  • As MCUs geralmente têm todos os periféricos para o mundo externo prontos para serem usados
  • A compilação leva segundos (os FPGAs levam minutos a horas)
  • Há uma ordem de magnitude (ou duas!) Mais engenheiros que podem ajudar ou continuar de onde você parou. (Para uma comparação divertida, não necessariamente válida estatisticamente - compare o número de perguntas e respostas no Stack Overflow para C vs VHDL ou FPGA )

Use um FPGA se for necessário, porque:

  • O processamento de números necessário não pode ser atendido no orçamento de potência, peso, tamanho ou custo com um microprocessador
  • Existem prazos rígidos em tempo real que não podem ser garantidos com o software (tempos de resposta no domínio de microssegundos, por exemplo)
  • O uso da lógica FPGA pode facilitar a criação de afirmações robustas sobre os tempos de resposta
  • Você pode economizar muito em custos, energia etc. usando tipos de dados personalizados (como um ponto flutuante de 12 bits, por exemplo)

Ou:

  • Sua tarefa diz que você precisa :)
Martin Thompson
fonte
+1 Para o terceiro marcador com "uma ordem de magnitude (ou duas!) Mais engenheiros que podem ajudar". A última vez que usei esse critério foi para escolher a linguagem de programação.
Nick Alexeev
5

Algumas razões pelas quais acredito que usar um microcontrolador (MCU) seria mais fácil para você:

  • Você tem experiência com MCUs. Aprender os meandros de qualquer novo chip leva tempo.
  • Os MCUs possuem periféricos embutidos que você precisaria implementar (ou comprar) em um FPGA. Por exemplo, a maioria dos MCUs possui uma porta I2C que será útil se você ler em um sensor I2C. Além disso, a maioria dos MCUs possui algum tipo de conversor analógico para digital e modulador de largura de pulso, os quais provavelmente serão necessários para um bom controle do motor.
  • Algoritmos complexos são mais fáceis de expressar em C do que em VHDL (não tenho experiência com Verilog).
  • Atrasos na escala humana são fáceis em um MCU, mas requerem recursos significativos em um FPGA.
  • Para automação de fábrica simples, as larguras de bits curtas e padrão e as velocidades lentas das MCUs provavelmente são suficientes.

Em ambos os casos, é necessário ter cuidado com o código que você escreve, para que ele funcione corretamente em todas as situações, especialmente em condições perigosas.

richarddonkin
fonte