Compare la implementación de un diseño de automatización simple en una MCU con un 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 de automatización de fábrica simple 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ácilmente, MCU o FPGA? Los puntos pequeños o "obvios" también se aprecian porque soy nuevo en FGPA en general.

    
pregunta Kevin Boyd

2 respuestas

11

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

Pro MCU:

  • Las MCU generalmente tienen todos los periféricos para el mundo exterior listos para funcionar
  • La compilación toma segundos (los FPGA toman minutos o horas)
  • Hay un orden de magnitud (¡o dos!) más ingenieros que pueden ayudarlo o continuar donde lo dejó. (Para una comparación divertida, no necesariamente válida desde el punto de vista estadístico, compare el número de Q & A en Stack Overflow para C vs < a href="https://stackoverflow.com/search?q=vhdl+fpga&submit=search"> VHDL o FPGA )

Use un FPGA si tiene que hacerlo porque:

  • El procesamiento de números requerido no se puede cumplir en el presupuesto de potencia, peso, tamaño o costo con un microprocesador
  • Hay plazos de tiempo real difíciles que no se pueden garantizar con el software (tiempos de respuesta en el reino 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 asignación te dice que debes :)
respondido por el Martin Thompson
5

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

  • Tienes experiencia con MCUs. 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 lee 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, ambos 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 un FPGA.
  • Para una automatización de fábrica simple, lo más probable es que sean suficientes los anchos de bits cortos y estándar y las velocidades lentas de las MCU.

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

    
respondido por el richarddonkin

Lea otras preguntas en las etiquetas