FPGA vs. MCU: Welchen Prozessor sollten Sie verwenden?

Erstellt: Juni 18, 2020
Aktualisiert am: Juli 1, 2024
fpgavcmu breit

Ich habe kürzlich einen Hochleistungs-Spannungswandler für einen Kunden zusammengestellt und während des Designs versucht, die Verwendung eines MCUs zu vermeiden. Als der Kunde jedoch Dimmen zur Platine hinzufügen wollte, war ich gezwungen, eine kleine Komponente mit einem EEPROM mit 100.000 Zyklen hinzuzufügen. Für mich war das nicht so ein großes Problem, da es eine einfache Angelegenheit war, $0,33 pro Platine für diese Funktion auszugeben, während das System später auch neu konfiguriert werden konnte. Das brachte mich zu einer interessanten Frage: Wann sollte man sich für ein FPGA anstelle eines MCU entscheiden?

Die Designer, mit denen ich arbeite, leben und atmen Arm, STM, TI und Nordic MCU-Module/SoCs, hauptsächlich dank der Herstellerunterstützung durch SDKs. Was ist mit FPGAs? Kann man dieselbe Unterstützungsstufe erwarten und sollte man sich für ein FPGA für eine eingebettete Komponente entscheiden? Die Antwort auf diese Art von Frage ist nicht immer einfach. Hier sind einige Überlegungen, die man anstellen sollte, wenn man zwischen FPGA und MCU wählt und wo man neue Komponenten für seine Platinen finden kann.

FPGA vs. MCU-Fähigkeiten

Ich erinnere mich, als ich ernsthaft mit dem Elektronikdesign begann und durch den Buchstabensalat der Akronyme für verschiedene Komponenten las. Anfangs war es schwierig, die Unterschiede zwischen einigen digitalen Prozessoren zu erkennen, aber das Verständnis der Grenzen jeder Komponente für verschiedene Anwendungen hat mir gut gedient. Die Grenzen dessen, was man in diese Prozessoren programmieren kann, waren auch entscheidend für das Verständnis, wann man jede Art von Komponente wählen sollte.

Ich werde gleich auf diese Aspekte eingehen, aber ich bekomme immer noch gelegentlich eine Frage von einem jüngeren Designer: Was sind FPGAs und MCUs? Sie bieten beide Rechenleistung, also müssen sie perfekte Ersatzteile sein, richtig? Es hängt davon ab, welche Anwendung man durchführen muss.

Um einen Sinn für die Unterschiede zwischen FPGA- und MCU-Komponenten zu bekommen, hilft es, sie mit ASICs zu vergleichen. Das „A“ in ASIC sagt Ihnen, dass die Komponente für eine spezifische Anwendung innerhalb eines größeren Systems entworfen wurde. Beispiele umfassen:

Die Liste geht noch weiter. Jedes ASIC bietet sehr spezifische, manchmal programmierbare Funktionen für eine schmale Palette von Aufgaben. Das Integrationsniveau in einem ASIC variiert auch je nach Chip. Ein Mikrocontroller ist ebenfalls in gewissem Umfang programmierbar, obwohl die Aufgaben, die ausgeführt werden können, breiter sind als das, was in die Firmware eines ASIC eingebaut ist. MCUs sind darauf ausgelegt, anpassbar zu sein und jede Aufgabe auszuführen, die man mit dem SDK des Herstellers in das Gerät programmieren kann.

Der Spaß und die Komplikation kommen mit FPGAs. Ich betrachte FPGAs gerne als anpassbare ASICs. Wenn Sie das Oxymoron stört, sollten Sie wissen, dass Sie ein FPGA als Teil des Prototyping beim Entwurf eines ASIC verwenden könnten. Dies liegt daran, dass alle Logikblöcke auf einem FPGA konfigurierbar sind (es sind im Grunde SRAM-Zellen). Sie bauen die Firmware von Grund auf neu auf, und Sie können definieren, wie Aufgaben auf dem Gerät auf Hardwareebene ausgeführt werden. Das ist etwas, was Sie mit einem MCU oder ASIC nicht tun können.

Vergleich von FPGA und MCU Komponenten

FPGA vs. MCU vs. ASICs: das Spezifische vs. das Generische Spektrum.

Was ist mit SoCs/SiPs/SoMs?

Das Lustige an SoCs ist, dass sie in Bezug auf die Rechenfähigkeiten irgendwo zwischen spezifisch und generisch liegen können. Komponentenhersteller werden den Begriff „SoC“, „SoM“ oder „SiP“ einem neuen integrierten Schaltkreis beifügen, der eine Reihe von Aufgaben ausführt, solange diese Aufgaben früher mehrere getrennte integrierte Schaltkreise erforderten. Diese Komponenten sind hochintegriert und können irgendwo auf dem spezifischen vs. generischen Spektrum liegen.

MPUs: Noch generischer

Irgendwo rechts vom FPGA in der obigen Grafik wären MPUs. Diese Geräte führen ein Betriebssystem aus, interagieren mit mehreren Peripheriegeräten und sind die Arbeitspferde der allgemeinen Datenverarbeitung. Einige könnten argumentieren, dass der MCU und FPGA in Bezug auf die Generik (siehe unten) die Plätze tauschen sollten, aber weder ein FPGA noch ein MCU sind für die gleiche Art von allgemeiner Datenverarbeitung wie eine MPU konzipiert.

Auswahl zwischen FPGA und MCU

Die untenstehende Tabelle zeigt einen kurzen Vergleich einiger der wichtigsten Aspekte von MCUs und FPGAs. Jeder Komponententyp hat seine Vorteile, und es liegt am Designer zu bestimmen, welcher für ihr System am besten geeignet ist. Persönlich bevorzuge ich MCUs, da ich etwas Erfahrung in C habe und nie HDL gelernt habe. FPGAs können jedoch so programmiert werden, dass sie einige der gleichen Funktionen wie spezielle ASICs haben, solange Sie wissen, wie man sie codiert.

| | FPGA | MCU | | ---------- | ---------- | ---------- | | Neuprogrammierung| Vollständig auf Hardwareebene neu programmierbar | Variiert: abhängig vom eingebetteten Betriebssystem, dynamisch | | Programmierzeit | Länger: erfordert Neucodierung und Neukompilierung alles in Maschinencode | Kürzer: unterstützt durch SDKs und Bibliotheken des Herstellers | | Programmierfreundlichkeit | Wird als steilere Lernkurve angesehen | Einfach: jeder, der mit gängigen Sprachen vertraut ist, kann programmieren | | Energieverbrauch | Höher | Niedriger | | Parallelisierung | Kann während der Programmierung konfiguriert werden | Begrenzt durch die Hardwarearchitektur | | Fest- vs. Gleitkomma | Für Festkomma konfiguriert, aber Gleitkomma kann während der Programmierung implementiert werden | Beide sind zugänglich | | Sprachen | Hardwarebeschreibungssprache (HDL) | C/Assembly-Sprache, andere, wenn unterstützt durch RTOS (z.B. Python) |

Da FPGAs oft als schwierig zu programmieren von neuen Entwicklern angesehen werden, gilt ein MCU typischerweise als der beste Prozessor für ein eingebettetes Gerät. Dies wurde weitgehend durch die Open-Source-Gemeinschaft unterstützt, und einige Open-Source-Projekte können als die grundlegende Architektur oder Proof-of-Concept für ein neues Produkt verwendet werden. Hinzu kommt die Unterstützung von Herstellern, und Sie haben viele Werkzeuge zur Verfügung, um MCUs zu programmieren.

Trotz der Lernkurve bei der Programmierung von FPGAs sind sie in Bezug auf die Firmware-Architektur viel konfigurierbarer. Parallelisierung kann je nach Anzahl der LUTs und ALUs in das Gerät programmiert werden. Das macht FPGAs zu einer großartigen Wahl, wenn Ihre Firmware für sehr spezifische Anwendungen konzipiert werden muss. Beispiele hierfür sind Inferenz in KI, Bildverarbeitung, Hardware-Steuerungsalgorithmen und andere Aufgaben, die repetitive (oder parallele) Berechnungen erfordern.

Ihr nächstes eingebettetes System kommt ohne die richtigen Komponenten nicht weiter, und Sie können die benötigten Komponenten finden, wenn Sie eine elektronische Teilesuchmaschine wie Octopart verwenden. Die fortgeschrittenen Filterfunktionen helfen Ihnen, die benötigten Komponenten einzugrenzen und können Ihnen schnell helfen, zwischen einem FPGA vs. MCU für Ihr nächstes System zu wählen. Sie können FPGAs und MCUs auf Octopart finden.

Bleiben Sie mit unseren neuesten Artikeln auf dem Laufenden, indem Sie sich für unseren Newsletter anmelden.

Ähnliche Resourcen

Zur Startseite
Thank you, you are now subscribed to updates.