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

3

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

    
pregunta user1547129

4 respuestas

5

En general, un núcleo duro se ejecutará 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).

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

También es muy probable que existan diferencias comerciales asociadas con la licencia de IP para un núcleo blando compatible con (por ejemplo) una cadena de herramientas ARM.

    
respondido por el Spehro Pefhany
3

Otra razón por la que a veces se usa un procesador externo es que puede estar conectado 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 del diseño de FPGA. (Eso podría ser una actualización directamente al FPGA o podría ser una actualización a un chip FLASH en serie que está interconectado con el esquema de carga de encendido del FPGA.

    
respondido por el Michael Karas
1

Algunos de los procesadores de núcleo duro tienen un entorno de desarrollo más maduro cuando se trata de depurar, 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 la PCB y una complejidad reducida de la lista de materiales utilizando solo un FPGA. Es bastante fácil desarrollar un sistema (FPGA con una memoria SPI) con un cargador de arranque que puede usar para actualizar el sistema de manera segura sin usar un procesador externo.

    
respondido por el Rikard Larking
1

Las diferentes tareas requieren diferentes tipos de herramientas. Podría forzar la carga de trabajo de un tipo de herramienta sobre 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 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 desea hacer lo mismo en un FPGA, está comenzando en un nivel mucho más bajo y primero tiene que diseñar (o obtener el diseño para) un núcleo de procesador. Si el FPGA tiene que hacer la mayor parte de lo que necesita hacer, y el procesador termina haciendo muy poco, usted podría invertir el esfuerzo en extraer el procesador y colocar el núcleo en el FPGA. Del mismo modo, lo contrario es posible. Sin embargo, en la práctica, normalmente terminas dividiendo el trabajo de forma más equitativa entre los dos.

También es útil entender para qué se usaron los FPGA originalmente. Fueron (y en muchos aspectos todavía), piezas de hardware genéricas que pueden usarse para probar nuevos diseños de núcleos y circuitos especializados con la intención de convertirlos en ASIC en última instancia. La razón por la que puede formular la pregunta ahora es porque la economía ha cambiado algo en términos de precios, y hay muchas aplicaciones hoy en día que son lo suficientemente específicas como para no necesitar los altos volúmenes para garantizar 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, más rápido y más eficiente en términos de costo, tiempo de desarrollo y habilidades necesarias para usar una combinación de FPGA, ASIC y procesador que sería empujar todo en un FPGA.

    
respondido por el Chintalagiri Shashank

Lea otras preguntas en las etiquetas