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 microcontrolador simple 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 quizás también cuáles son las desventajas?
microcontroller
fpga
design
James C
fuente
fuente
Respuestas:
Beneficios:
Desventajas:
fuente
Si su proyecto va a utilizar un FPGA para el trabajo pesado, y tiene la capacidad disponible, ¿por qué debería ir a expensas de un chip adicional si solo puede implementarlo en el FPGA?
Para muchos entornos de control de procedimientos, puede ser considerablemente 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, obtienes lo mejor de ambos mundos: la potencia del VHDL / Verilog, etc. para los sistemas lógicos y de interfaz, y la simplicidad de un lenguaje de procedimientos para los sistemas de control y gestión centrales.
fuente
En extensión a las respuestas de Majenko y PkP:
Esta tendencia de incrustar una CPU en el diseño FPGA ha llevado a varios sistemas heterogéneos como:
También hay un chip Intel Atom + Altera FPGA en el mercado: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html
La mayoría de los microcontroladores gratuitos para FPGA sufren de un mal soporte de la cadena de herramientas. Las CPU ARM integradas vienen con soporte de rastreo / depuración, compiladores (cadena de herramientas gcc) y soporte completo de Linux. Aquí hay una encuesta presentada en FPL 2014: http://dx.doi.org/10.1109/FPL.2014.6927482
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, Timer, CAN, DAC, ADC, OpAmp, ...) y un programable parte. Esta parte no es tan programable de grano fino como los FPGA clásicos, pero se puede usar para implementar controladores de E / S adicionales o aceleradores de hardware integrados. PSoC le permite usar componentes analógicos en su diseño.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER
Resumen de PSoC:
fuente
Si solo necesitara un microcontrolador y no tuviera un FPGA, sería inusual usar un FPGA con firmware de 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 simplemente 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 uso general; necesitan paralelismo.
En ese momento, tienes una opción. Puede agregar un chip adicional a su dispositivo, o puede darse cuenta de que tiene un montón de puertas de repuesto en el FPGA que no está utilizando. Licencia un poco de IP, ¡y puedes tener una CPU de propósito general en funcionamiento en poco tiempo!
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 coma flotante, y una buena parte de la predicción de rama. Esto lo hizo lo suficientemente pequeño como para encajar lado a lado con el firmware basado en VHDL.
fuente
Hay varias razones válidas para crear instancias de un microprocesador o microcontrolador en un FPGA. Aquí hay tres:
Solo desea aprender sobre el funcionamiento de un procesador. Los FPGA le brindan infinitas formas de sondear lo que sucede dentro del procesador a medida que ejecuta el código. Esto es solo para aprender.
Está implementando un gran sistema que requiere las velocidades de 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 estado compleja, que se implementa más fácilmente utilizando un software que se ejecuta en un procesador simple como el Xilinx PicoBlaze que en un hardware FSM. Tenga en cuenta que un PicoBlaze puede funcionar tan rápido como 240MHz 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 estado rápida y consistente que se programa fácilmente en el software.
Ampliando en (2), necesita una máquina de estado 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-A9 en un SoC Xilinx Zynq. El tejido FPGA en el Zynq SoC todavía le permite instanciar más núcleos de procesador en lógica programable, pero los ARM Cortex-A9 pueden 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 de muchas fuentes. A algunas personas les gusta rodar sus propios procesadores y esa es una gran actividad educativa. Sin embargo, los microprocesadores necesitan herramientas de desarrollo de software y crear / depurar esas herramientas requiere órdenes de magnitud más esfuerzo que crear el procesador en sí. Siempre debe intercambiar el posible beneficio de un microprocesador personalizado con el tiempo y el esfuerzo necesarios para crear / depurar el núcleo del procesador y las herramientas.
Divulgació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. FPGAs y Zynq SoCs son para proyectos que requieren trabajo pesado más allá de las capacidades de los microcontroladores.
fuente
A veces puede 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 clavijas (aunque se han visto monturas de estilo DIP), esto le permite tener una precisión de ciclo. Es poco probable que una emulación de software puro en un microprocesador básico sea así. Por ejemplo apple2fpga
fuente