Compare la implementación de un diseño de automatización simple en una MCU frente a una FPGA/CPLD

He estado trabajando con MCU desde los años 90, y recientemente me aventuré en la escena FPGA con los chips de la serie Spartan6 de Xilinx. Suponiendo un diseño simple de automatización de fábrica con sensores y motores, y algo de inteligencia para vincular todo, ¿en qué tipo de dispositivo podría terminar el diseño más rápido y más fácil, MCU o FPGA? Los puntos pequeños u "obvios" también son apreciados porque soy nuevo en FGPA en general.

Incluso una solución FPGA casi con certeza también involucraría un procesador, ya sea al lado del FPGA, implementado dentro de él, o en una computadora más grande conectada. Las estructuras de programas almacenados son mucho más fáciles de usar para implementar las partes complejas de los algoritmos que la lógica especializada o las máquinas de estado, por lo que guarda lo último solo para cosas que deben ser rápidas (o masivamente paralelas) pero simples.
Excelentes respuestas de Richard & Martin a continuación. Puede ser tentador tratar de aplicar una habilidad o tecnología recién aprendida al siguiente problema, pero en este caso (por las razones descritas anteriormente) creo que una MCU es el camino a seguir.

Respuestas (2)

No hay razón para usar FPGA a menos que sea necesario . Incluso dos ingenieros con talento similar en los campos de MCU y FPGA utilizarían una MCU para una tarea de automatización relativamente simple.

UCM profesional:

  • Las MCU generalmente tienen todos los periféricos para el mundo exterior listos para funcionar
  • La compilación lleva segundos (los FPGA tardan de minutos a horas)
  • Hay un orden de magnitud (¡o dos!) más ingenieros que pueden ayudar, o continuar donde lo dejó. (Para una comparación divertida, no necesariamente válida desde el punto de vista estadístico: compare la cantidad de preguntas y respuestas en Stack Overflow para C vs VHDL o FPGA )

Use un FPGA si es necesario porque:

  • El procesamiento de números requerido no se puede cumplir en el presupuesto de energía, peso, tamaño o costo con un microprocesador
  • Hay plazos estrictos en tiempo real que no se pueden garantizar con el software (tiempos de respuesta en el ámbito de microsegundos, por ejemplo)
  • El uso de la lógica FPGA puede hacer que sea más fácil hacer afirmaciones sólidas sobre los tiempos de respuesta
  • Puede hacer grandes ahorros en costos, energía, etc. mediante el uso de tipos de datos personalizados (como un punto flotante de 12 bits, por ejemplo)

O:

  • Tu tarea te dice que tienes que hacerlo :)
+1 Para la tercera viñeta con "un orden de magnitud (¡o dos!) Más ingenieros que pueden ayudar". La última vez que usé este criterio fue para elegir el lenguaje de programación.

Algunas razones por las que creo que usar un microcontrolador (MCU) sería más fácil para usted:

  • Tienes experiencia con MCU. Aprender los entresijos de cualquier chip nuevo lleva tiempo.
  • Los MCU tienen periféricos incorporados que tendría que implementar usted mismo (o comprar) en un FPGA. Por ejemplo, la mayoría de las MCU tienen un puerto I2C que será útil si lee desde un sensor I2C. Además, la mayoría de los MCU tienen algún tipo de convertidor analógico a digital y modulador de ancho de pulso, los cuales probablemente serán necesarios para un buen control del motor.
  • Los algoritmos complejos son más fáciles de expresar en C que en VHDL (no tengo experiencia con Verilog).
  • Los retrasos a escala humana son fáciles en una MCU, pero requieren recursos significativos en una FPGA.
  • Para una automatización de fábrica simple, los anchos de bit estándar cortos y las velocidades lentas de las MCU probablemente sean suficientes.

En cualquier caso, es necesario tener cuidado con el código que escribe, para que funcione correctamente en todas las situaciones, especialmente en condiciones peligrosas.