¿Por qué implementar el microcontrolador en FPGA?

16

Actualmente estoy "investigando" los FPGA, qué pueden hacer, cómo lo hacen, etc.

En más de un lugar ( por ejemplo aquí ) He visto proyectos que implementan un simple microcontrolador con FPGA.

Entonces, mi pregunta:
Me gustaría saber, ¿cuál es el propósito de hacer tales implementaciones? ¿Por qué usar un microcontrolador implementado en FPGA en lugar de tener un micro a bordo? ¿Qué son los beneficios? Y tal vez también ¿cuáles son las desventajas?

    
pregunta James C

6 respuestas

24

Beneficios:

  • interfaz increíblemente rápida entre el microcontrolador y cualquier interfaz personalizada o lógica de E / S en el chip.
  • interfaces personalizables de procesador y depuración
  • también, a menudo la lógica de control es más fácil que escribir el código de control con, por ejemplo, VHDL

Desventajas:

  • Es posible que se necesite un FPGA más costoso para adaptarse tanto al microcontrolador como a la lógica personalizada, en comparación con el simple hecho de tener la lógica personalizada en el FPGA
  • Posiblemente sea más difícil de implementar, especialmente con las memorias y si el núcleo es complejo, que un microcontrolador listo en un chip separado.
respondido por el PkP
26

Si su proyecto va a utilizar un FPGA para el trabajo duro, y tiene la capacidad de reserva, ¿por qué lo haría que pagaría un chip adicional cuando solo puede implementarlo en el FPGA?

Para muchos entornos de control de procedimientos, puede ser mucho más fácil implementar la configuración requerida en un lenguaje como C que intentar hacerlo en VHDL o Verilog. Al agregar el microcontrolador al FPGA, obtiene lo mejor de ambos mundos: el poder del VHDL / Verilog, etc., para la lógica y los sistemas de interfaz, y la simplicidad de un lenguaje de procedimiento para los sistemas de control y administración centrales.

    
respondido por el Majenko
13

En extensión a las respuestas de Majenko y PkP:

Esta tendencia de incrustar una CPU en el diseño de FPGA ha llevado a varios sistemas heterogéneos como:

  • Familia Xynix 'Zynq-7000
  • Arria / Cyclon / Stratix SoC FPGAs de Altera
  • SmartFusion FPGAs de MicroSemi

También hay un chip FPGA Intel Atom + Altera en el mercado: enlace

La mayoría de los microcontroladores libres para FPGA sufren un mal soporte de la cadena de herramientas. Las CPU ARM integradas vienen con soporte de seguimiento / depuración, compiladores (cadena de herramientas gcc) y soporte completo de Linux. Aquí hay una encuesta presentada en FPL 2014: enlace

Edición 1:
También existe la clase de dispositivos PSoC (Sistema Programable en Chip) de Cypress. Estos dispositivos incluyen un microcontrolador (M8C, 8051, ARM Cortex M0 o Cortex M3) y controladores o dispositivos de E / S integrados SoC clásicos (I²C, SPI, temporizador, CAN, DAC, ADC, OpAmp, ...) y una parte programable. Esta parte no es programable como los FPGA clásicos, pero se puede usar para implementar controladores de E / S adicionales o aceleradores de hardware integrados. PSoC le permite utilizar componentes analógicos en su diseño.
enlace

Visión general de PSoC:

    
respondido por el Paebbels
10

Si solo necesitara un microcontrolador y no tuviera un FPGA, sería raro utilizar un FPGA con firmware para el microcontrolador. Sin embargo, no todos los proyectos crecen en esa dirección. Muchas tareas tienen una clara necesidad de un FPGA, pero eventualmente se encuentran con una tarea que realmente no es adecuada para una solución VHDL. A veces, un problema se maneja mejor con una CPU de propósito general. O, a veces es al revés: algunas tareas simplemente no son adecuadas para una CPU de propósito general, necesitan paralelismo.

En ese momento, tienes una opción. Puedes agregar un chip adicional a tu dispositivo o darte cuenta de que tienes un montón de puertas de repuesto en el FPGA que no estás utilizando. Obtenga una pequeña licencia de IP, ¡y puede tener una CPU de propósito general en funcionamiento en cualquier momento!

Otro detalle interesante es que puede personalizar algunos firmwares de microcontroladores. Sé de proyectos que incorporaron una Power PC, pero eliminaron todas las puertas necesarias para el soporte de punto flotante y una buena parte de la predicción de la rama. Esto lo hizo lo suficientemente pequeño como para que coincidiera con el firmware basado en VHDL.

    
respondido por el Cort Ammon
9

Hay varias razones válidas para crear una instancia de un microprocesador o microcontrolador en un FPGA. Aquí hay tres:

  1. Solo desea obtener información sobre el funcionamiento de un procesador. Los FPGA le brindan infinitas formas de probar lo que sucede dentro del procesador a medida que ejecuta el código. Esto es solo para aprender.

  2. Está implementando un gran sistema que requiere las velocidades a nivel de hardware de un FPGA (más rápido que el software que se ejecuta en un microprocesador) pero su diseño requiere una máquina de estados compleja, que se implementa más fácilmente usando software que se ejecuta en un Procesador simple como el Xilinx PicoBlaze que en un FSM de hardware. Tenga en cuenta que un PicoBlaze puede ejecutarse a una velocidad de hasta 240 MHz en las últimas tecnologías de proceso FPGA y que el procesador PicoBlaze ejecuta una instrucción cada dos ciclos de reloj, por lo que obtiene una máquina de estados rápida y consistente que se programa fácilmente en el software.

  3. Al expandirse en (2), necesita una máquina de estados que pueda manejar las interrupciones. Los procesadores son realmente buenos para esto porque ya saben cómo guardar y restaurar el estado de forma segura antes y después de dar servicio a la interrupción.

Aquí hay una advertencia: si desea un procesador rápido con un conjunto de instrucciones estándar y un gran ecosistema de desarrollo, entonces desea un procesador rápido y de núcleo duro como los dos ARM Cortex-A9s en un SoC Xilinx Zynq. El tejido FPGA en el Zynq SoC aún le permite crear una instancia de más núcleos de procesador en la lógica programable, pero el ARM Cortex-A9s puede ejecutar sistemas operativos estándar como Linux e IDE estándar como Android.

Entre ARM Cortex-A9 y PicoBlaze, hay muchos procesadores de software que puede implementar con lógica programable disponible desde muchas fuentes. A algunas personas les gusta enrollar sus propios procesadores y eso es una gran actividad educativa. Sin embargo, los microprocesadores necesitan herramientas de desarrollo de software y la creación / depuración de esas herramientas requiere más esfuerzo que la creación del propio procesador. Siempre debe intercambiar el posible beneficio de un microprocesador personalizado por el tiempo y el esfuerzo necesarios para crear / depurar el núcleo del procesador y las herramientas.

Revelación completa: trabajo para Xilinx pero estoy bastante seguro de que no dije que los FPGA son siempre la solución. Si un microcontrolador de 50 centavos puede hacer el trabajo, es mejor que lo uses. Los FPGA y los SoC de Zynq son para proyectos que requieren un trabajo pesado más allá de las capacidades de los microcontroladores.

    
respondido por el Steven Leibson
2

En ocasiones, podría usar un FPGA porque tiene un software que se ejecuta en un procesador físico obsoleto y no disponible que desea resucitar. Si bien no es compatible con pin (aunque se han visto montajes de estilo DIP), esto le permite tener un ciclo preciso. Es poco probable que una emulación de software puro en un microprocesador básico sea así. Por ejemplo, apple2fpga

    
respondido por el shuckc

Lea otras preguntas en las etiquetas

Comentarios Recientes

¿Es una pregunta abierta? Si el microcontrolador se puede usar en FPGA y no hacemos nada relacionado con el software dentro de ese espacio, entonces sí, FPGA es la plataforma para el microcontrolador. No consideraremos que necesite microcontrolador en microcontrolador ... Pregunta: ¿Hay alguna ventaja o desventaja de FPGA frente al diseño de circuito en FPGA? Andy: Podría, por supuesto. Sin embargo, el diseño de IC es un desafío, especialmente para el tamaño del proyecto FPGA. Los núcleos no hay absolutamente... Lees verder