¿Por qué hay un controlador de sistema y un microcontrolador en el mismo FPGA?

2

Estoy empezando a profundizar en el mundo FPGA. Mientras exploraba la arquitectura FPGA SmartFusion2 descubrí que hay un microcontrolador (ARM Cortex-M3) y al mismo tiempo un controlador del sistema . ¿Por qué hay una necesidad de ambos? ¿No puede uno de ellos reemplazar al otro?

    
pregunta Lavender

3 respuestas

7

El controlador del sistema es un grupo de funciones de hardware dedicadas que administran el funcionamiento interno del chip en general. Puede o no tener una CPU, pero en cualquier caso, no es programable por el usuario.

En contraste, la función principal del subsistema de procesador ARM es ejecutar el código de la aplicación.

    
respondido por el Dave Tweed
6

Eso no es una arquitectura FPGA, es un sistema en chip que contiene un microcontrolador y un FPGA.

Tener una MCU de hardware allí tiene mucho sentido: en realidad, los sistemas que contienen una FPGA a menudo necesitan una MCU para cargar la configuración en la FPGA y para realizar tareas de mantenimiento del sistema, que, de no ser así, no tendría la MCU. lo haría implementando una pequeña CPU dentro del FPGA y dejando que ese software se ejecute.

Además, el silicio dedicado que implementa exactamente la misma funcionalidad que se implementó en un FPGA generalmente es más rápido y consume menos energía. Entonces, si solo necesitas tu microcontrolador para, por ejemplo. reciba paquetes de comandos a través de SPI, luego extraiga el comando de ellos y establezca los cálculos correctos que se realizarán dentro del FPGA, puede ahorrar mucha energía porque muchos más componentes de su sistema pueden ponerse en suspensión, y los que Siempre despierta usa menos energía.

    
respondido por el Marcus Müller
3

El controlador del sistema es responsable de arrancar tanto el FPGA como la CPU ARM, entre otras cosas.

Las CPU ARM autónomas también tienen una lógica similar para configurar un mapa de memoria mínima y una configuración PLL de reloj conservadora antes de iniciar el núcleo de la CPU, que luego realizará el resto de la configuración.

En una estructura de FPGA / MCU combinada, esto generalmente se extiende a cargar todo el programa de aplicación desde la configuración flash, ya que ya tenemos que hacer esto para las tablas de FPGA, así que cargar un poco más de RAM no agrega mucha complejidad.

Tenga en cuenta que los FPGA deben arrancar realmente rápido, para las aplicaciones PCIe y USB donde el modo de espera no tiene el presupuesto de energía para mantener el contenido de la memoria, pero se espera que el dispositivo vuelva a funcionar en unos pocos milisegundos.

Arrancar la MCU y luego trasladarla desde flash a las tablas FPGA simplemente tomaría demasiado tiempo, esto iniciaría las PLL FPGA después de la CPU PLL en lugar de en paralelo.

    
respondido por el Simon Richter

Lea otras preguntas en las etiquetas