¿Cuáles son las ventajas de un procesador separado cuando hay un FPGA presente?

Considere una aplicación integrada con un procesador discreto (ARM, AVR, PIC, etc.) y un FPGA para descargar parte del trabajo o interactuar con hardware específico. Suponiendo que hay suficientes recursos en la FPGA para adaptarse a un núcleo blando equivalente al procesador externo, ¿cuáles son las ventajas de usar un procesador duro en lugar de un núcleo blando?

La capacidad de cambiar a un FPGA más pequeño y económico.

Respuestas (4)

En términos generales, un núcleo duro funcionará más rápido, usará menos energía y usará menos área de chip.

Eso puede significar que es más barato o mejor usar un FPGA más pequeño y un procesador duro (ya sea en un chip o en dos).

Algunas FPGA tienen núcleos duros en el chip (por ejemplo, la serie Xilinx Zynq), por lo que puede usar uno o ambos núcleos ARM9 duros y/o podría implementar un procesador PicoBlaze o MicroBlaze soft (o algún otro tipo).

También existen diferencias comerciales muy probables asociadas con la concesión de licencias de propiedad intelectual para un núcleo blando compatible con (digamos) una cadena de herramientas ARM.

Otra razón por la que a veces se usa un procesador externo es que se puede conectar a una interfaz externa como USB o Ethernet y permitir la actualización del producto a través de una descarga remota. En estos casos, el procesador externo puede recibir un nuevo archivo de datos del programa FPGA y comprometerse con el subsistema FPGA para implementar una actualización del contenido de diseño de FPGA. (Eso podría ser una actualización directa a la FPGA o puede ser una actualización a un chip FLASH en serie que está interconectado con el esquema de carga de encendido de la FPGA.

Solo para la descarga remota, no necesita tener un procesador separado. La propia FPGA puede realizar la operación; siempre que tenga controladores para acceder a los chips flash específicos en sí mismo. Combinándolo con una opción de arranque múltiple o imagen a prueba de fallas en el flash (que ahora es compatible con la mayoría de los FPGA), tiene una solución que se ocupa de cualquier problema que surja de la corrupción de la imagen durante las actualizaciones.

Algunos de los procesadores de núcleo duro tienen un entorno de desarrollo más maduro en lo que respecta a la depuración, etc. Puede encontrar más programadores que estén familiarizados con la cadena de herramientas. Por otro lado, es posible que pueda ahorrar algo de espacio en PCB y reducir la complejidad de la lista de materiales utilizando solo un FPGA. Es bastante fácil desarrollar un sistema (FPGA con memoria SPI) con un cargador de arranque que puede usar para actualizar el sistema de forma segura sin usar un procesador externo.

Diferentes tareas requieren diferentes tipos de herramientas. Puede imponer la carga de trabajo de un tipo de herramienta a otra, pero con el tiempo tiende a convertirse en una forma ineficiente de hacer las cosas. En este caso específico, hay muchas cosas que simplemente son más fáciles de hacer en un procesador. Solo tiene que escribir el código requerido en un lenguaje relativamente cómodo como C y tener una cadena de herramientas madura que pueda compilarlo. Si quisiera hacer lo mismo en un FPGA, está comenzando en un nivel mucho más bajo y primero tiene que diseñar (u obtener el diseño para) un núcleo de procesador. Si la FPGA tiene que hacer la mayor parte de lo que necesita hacer, y el procesador termina haciendo muy poco, podría invertir el esfuerzo en quitar el procesador y encajar el núcleo en la FPGA. Del mismo modo, lo contrario es posible. Sin embargo, en la práctica,

Es útil comprender, también, para qué se usaron originalmente los FPGA. Eran (y en muchos sentidos aún lo son) piezas genéricas de hardware que se pueden usar para probar nuevos diseños de núcleos y circuitos especializados con la intención de convertir los diseños en ASIC. La razón por la que puede hacer la pregunta ahora es porque la economía ha cambiado un poco en términos de precios, y hoy en día hay muchas aplicaciones que son lo suficientemente específicas como para no necesitar grandes volúmenes para justificar la producción de un ASIC. Aún así, cuando hay un ASIC (o incluso un procesador genérico), a menudo resulta más barato, rápido y eficiente en términos de costo, tiempo de desarrollo y habilidades necesarias para usar una combinación de FPGA, ASIC y un procesador que sería empujar todo a un FPGA.