¿Por qué hay un controlador de sistema y un microcontrolador en la misma FPGA?

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?

Ingrese la descripción de la imagen aquí

El SmartFusion2 no es su FPGA típico. Es un híbrido entre un MCU normal y un FGPA.
Obviamente, el controlador del sistema no puede hacer nada de lo que hace el M3.
Por ejemplo, para reducir la complejidad durante el diseño del chip. Para reducir la complejidad del propio chip para el usuario. Hacer que los componentes sean reutilizables.

Respuestas (3)

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

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

Esa 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 realizar tareas de mantenimiento del sistema, que, si no tuviera la MCU, haría. implementando una pequeña CPU dentro de la FPGA y dejando que ejecute el software.

Además, el silicio dedicado que implementa exactamente la misma funcionalidad que la implementada en un FPGA generalmente es más rápido y usa menos energía. Entonces, si solo necesita su microcontrolador para, por ejemplo, recibir paquetes de comando a través de SPI, luego extraer el comando de ellos y activar los cálculos correctos que se realizarán dentro del FPGA, puede ahorrar mucha energía porque muchos más componentes de su sistema se pueden poner a dormir, y los que siempre se despiertan usan menos energía.

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

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

En un tejido combinado de FPGA/MCU, esto generalmente se extiende para cargar todo el programa de la aplicación desde la configuración flash, ya que necesitamos hacer esto para las tablas de FPGA, por lo que cargar un poco más de RAM no agrega mucha complejidad.

Tenga en cuenta que los FPGA deben arrancar muy rápido, para 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 por completo en unos pocos milisegundos.

Arrancar la MCU y luego hacer que transfiera datos desde flash a las tablas de FPGA simplemente llevaría demasiado tiempo; esto iniciaría los PLL de FPGA después del PLL de CPU en lugar de hacerlo en paralelo.