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.
Jeroen3
Benutzer3528438
Alexander von Werner