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

8

He estado trabajando con MCU desde los años 90, y recientemente me he aventurado 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 o "obvios" también son apreciados porque soy nuevo en FGPA en general.

Kevin Boyd
fuente
Incluso una solución FPGA casi seguramente también implicaría un procesador, ya sea junto al FPGA, implementado dentro de él o en una computadora más grande conectada. Las estructuras de programa almacenadas son mucho más fáciles de implementar para la implementación de partes complejas de algoritmos de lo que serían las máquinas especializadas de lógica o de estado, por lo que guarda la última solo para cosas que deben ser rápidas (o masivamente paralelas) pero simples.
Chris Stratton
Grandes respuestas de Richard y 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 por los caballeros) creo que un MCU es el camino a seguir.
Radian

Respuestas:

11

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

MCU profesional:

  • Las MCU generalmente tienen todos los periféricos del 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 retomar donde lo dejó. (Para una comparación divertida, no necesariamente estadísticamente válida, compare el número de preguntas y respuestas sobre Stack Overflow para C frente a VHDL o FPGA )

Use un FPGA si es necesario porque:

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

O:

  • Tu tarea te dice que tienes que :)
Martin Thompson
fuente
+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.
Nick Alexeev
5

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.
  • Las 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 lees desde un sensor I2C. Además, la mayoría de las MCU tienen algún tipo de convertidor analógico a digital y modulador de ancho de pulso, que probablemente sean 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 simple de fábrica, es probable que los anchos de bits cortos y estándar y las velocidades lentas de MCU 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.

richarddonkin
fuente