Warum gibt es einen Systemcontroller und einen Mikrocontroller im selben FPGA?

Ich fange an, mich in die FPGA-Welt einzuarbeiten. Bei der Erforschung der FPGA SmartFusion2- Architektur fand ich heraus, dass es einen Mikrocontroller (ARM Cortex-M3) und gleichzeitig einen Systemcontroller gibt . Warum braucht es beides? Kann nicht einer den anderen ersetzen?

Geben Sie hier die Bildbeschreibung ein

Das SmartFusion2 ist kein typisches FPGA. Es ist ein Hybrid zwischen einer normalen MCU und einem FGPA.
Offensichtlich kann der Systemcontroller nichts tun, was der M3 tut.
ZB um die Komplexität beim Design des Chips zu reduzieren. Um die Komplexität des Chips selbst für den Benutzer zu reduzieren. Um Komponenten wiederverwendbar zu machen.

Antworten (3)

Der Systemcontroller ist eine Gruppe dedizierter Hardwarefunktionen, die den internen Betrieb des gesamten Chips verwalten. Es kann eine CPU haben oder nicht, aber in jedem Fall ist es nicht vom Benutzer programmierbar.

Im Gegensatz dazu besteht die Hauptfunktion des ARM-Prozessorsubsystems darin, Anwendungscode auszuführen.

Das ist keine FPGA-Architektur, das ist ein System-on-Chip, das zufällig einen Mikrocontroller und ein FPGA enthält.

Eine Hardware-MCU darin zu haben, ist sehr sinnvoll: In Wirklichkeit benötigen Systeme, die ein FPGA enthalten, oft eine MCU, um die Konfiguration in das FPGA zu laden und Systemwartungsaufgaben durchzuführen, was Sie tun würden, wenn Sie die MCU nicht hätten indem eine kleine CPU im FPGA implementiert wird und diese Software laufen lässt.

Außerdem ist dediziertes Silizium, das genau die gleiche Funktionalität wie in einem FPGA implementiert, normalerweise schneller und verbraucht weniger Energie. Wenn Sie also Ihren Mikrocontroller nur benötigen, um beispielsweise Befehlspakete über SPI zu empfangen, dann den Befehl daraus zu extrahieren und die richtigen Berechnungen im FPGA durchzuführen, können Sie viel Energie sparen, da viel mehr Komponenten Ihres Systems vorhanden sind können eingeschlafen werden, und diejenigen, die immer aufwachen, verbrauchen weniger Strom.

Der Systemcontroller ist unter anderem für das Booten sowohl des FPGA als auch der ARM-CPU zuständig.

Eigenständige ARM-CPUs haben auch eine ähnliche Logik, um eine minimale Speicherzuordnung und eine konservative Takt-PLL-Einstellung zu konfigurieren, bevor der CPU-Kern gestartet wird, der dann den Rest des Setups übernimmt.

In einem kombinierten FPGA/MCU-Fabric wird dies normalerweise erweitert, um das gesamte Anwendungsprogramm aus dem Konfigurations-Flash zu laden, da wir dies bereits für die FPGA-Tabellen tun müssen, sodass das Laden von etwas mehr RAM nicht viel Komplexität hinzufügt.

Denken Sie daran, dass FPGAs für PCIe- und USB-Anwendungen, bei denen der Standby-Modus nicht über das Energiebudget verfügt, um den Speicherinhalt zu erhalten, sehr schnell booten müssen, das Gerät jedoch voraussichtlich innerhalb weniger Millisekunden wieder voll funktionsfähig ist.

Die MCU zu booten und sie dann Daten aus dem Flash in die FPGA-Tabellen schaufeln zu lassen, würde einfach zu lange dauern – dies würde die FPGA-PLLs nach der CPU-PLL starten und nicht parallel.