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?
Beneficios:
Desventajas:
Si su proyecto va a utilizar un FPGA para el trabajo duro y tiene capacidad adicional, ¿por qué gastaría un chip adicional cuando 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, obtiene lo mejor de ambos mundos: el poder de VHDL / Verilog, etc. para los sistemas lógicos y de interfaz, y la simplicidad de un lenguaje de procedimientos para los sistemas centrales de control y administración.
En extensión a las respuestas de Majenko y PkP:
Esta tendencia de incorporar una CPU en el diseño de FPGA ha dado lugar 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 una mala compatibilidad con 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 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.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER
Descripción general de PSoC: (fuente: electronicdesign.com )
Si solo necesita un microcontrolador y no tiene 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 finalmente 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 uso general: necesitan paralelismo.
En ese momento, usted tiene 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. Obtenga una licencia de IP pequeña y podrá tener una CPU de uso general que funcione en muy poco tiempo.
Otro detalle interesante es que puedes personalizar algunos firmwares de microcontroladores. Sé de proyectos que incrustaron una Power PC, pero eliminaron todas las puertas necesarias para el soporte de punto flotante y una buena parte de la predicción de bifurcación. Esto lo hizo lo suficientemente pequeño como para caber lado a lado con el firmware basado en VHDL.
Existen varias razones válidas para instanciar un microprocesador o microcontrolador en una FPGA. Aquí hay tres:
Solo quiere aprender 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.
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 usando software que se ejecuta en un procesador simple como Xilinx PicoBlaze. que en una FSM de hardware. Tenga en cuenta que un PicoBlaze puede funcionar 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 estado rápida y consistente que se programa fácilmente en el software.
Ampliando (2), necesita una máquina de estado que pueda manejar interrupciones. Los procesadores son realmente buenos para esto porque ya saben cómo guardar y restaurar el estado de manera segura antes y después de atender 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 Xilinx Zynq SoC. El tejido FPGA en el Zynq SoC aún le permite instanciar más núcleos de procesador en lógica programable, pero 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 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 mucho más esfuerzo que crear el propio procesador. Siempre debe compensar 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 use. Los FPGA y los SoC Zynq son para proyectos que requieren un trabajo pesado más allá de las capacidades de los microcontroladores.
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 pines (aunque se han visto monturas de estilo DIP), esto le permite ser preciso en el ciclo. Es poco probable que lo sea una emulación de software puro en un microprocesador básico. Por ejemplo apple2fpga
chris stratton
Jaime C.
chris stratton
rberteig
krambo