ASIC vs FPGA
Ein vor Ort programmierbares Gate-Array kann als Prototyping-Stadium für anwendungsspezifische integrierte Schaltkreise angesehen werden: ASICs sind sehr teuer in der Herstellung, und wenn sie erst einmal hergestellt sind, gibt es kein Zurück mehr (da die Masken die teuersten Fixkosten sind) "] und ihre Entwicklung). FPGAs sind viele Male umprogrammierbar. Da jedoch ein generisches Array von Gattern angeschlossen ist, um Ihr Ziel zu erreichen, wird es nicht wie ASICs optimiert. FPGAs sind von Haus aus dynamische Geräte. Wenn Sie sie ausschalten, verlieren Sie nicht nur den aktuellen Status, sondern auch Ihre Konfiguration. Es gibt jetzt jedoch Boards, die einen FLASH-Chip und / oder einen Mikrocontroller hinzufügen, um die Konfiguration beim Start zu laden. Daher ist dies eher ein weniger wichtiges Argument. Sowohl ASICs als auch FPGAs können mit Hardware Description Languages konfiguriert werden. und manchmal werden FPGAs für das Endprodukt verwendet. Aber in der Regel setzen ASICs ein, wenn das Design feststeht.
FPGA vs Mikrocontroller
Was den Unterschied zwischen einem Mikrocontroller und einem FPGA betrifft, können Sie einen Mikrocontroller als einen ASIC betrachten, der im Grunde Code in FLASH / ROM sequentiell verarbeitet. Sie können Mikrocontroller mit FPGAs erstellen, auch wenn diese nicht optimiert sind, aber nicht umgekehrt. FPGAs sind wie elektronische Schaltkreise verdrahtet, sodass Sie wirklich parallele Schaltkreise haben können, nicht wie bei einem Mikrocontroller, bei dem der Prozessor von einem Codeteil zum nächsten springt, um eine hinreichend gute Parallelität zu simulieren. Da FPGAs jedoch für parallele Aufgaben entwickelt wurden, ist es nicht so einfach, sequentiellen Code zu schreiben wie in einem Mikrocontroller.
Wenn Sie beispielsweise im Pseudocode schreiben, dass "C A XOR B sein soll", wird auf einem FPGA, das in "Bauen eines XOR-Gatters mit den enthaltenen Legosteinen (Nachschlagetabellen und Latches)" übersetzt wird, A / B als Eingaben verbunden und C als Ausgabe ", die bei jedem Taktzyklus aktualisiert wird, unabhängig davon, ob C verwendet wird oder nicht. Während auf einem Mikrocontroller, der in einen "Lesebefehl" übersetzt wird - es ist ein XOR von Variablen an der Adresse A und der Adresse B des RAM, das Ergebnis an der Adresse C zu speichern. Lade arithmetische Logikeinheitenregister und fordere dann die ALU auf, ein XOR durchzuführen Kopieren Sie das Ausgangsregister an die Adresse C des RAM ". Auf der Benutzerseite waren beide Anweisungen eine Codezeile. Wenn wir dies tun würden, DANN etwas anderes, müssten wir in HDL definieren, was als Prozess bezeichnet wird, um Sequenzen künstlich auszuführen - getrennt vom parallelen Code. Während in einem Mikrocontroller nichts zu tun ist. Andererseits müsste man mit Threads jonglieren, um "Parallelität" (wirklich ein- und ausschalten) von einem Mikrocontroller zu bekommen, was nicht trivial ist. Unterschiedliche Arbeitsweisen, unterschiedliche Zwecke.
Zusammenfassend:
ASIC vs FPGA: Fest, teurer für eine kleine Anzahl von Produkten (billiger für große Mengen), aber optimierter.
ASIC vs Microcontroller: sicherlich wie ein Werkzeug mit einem Hammer zu vergleichen.
FPGA vs Mikrocontroller: Nicht für die sequentielle Codeverarbeitung optimiert, kann aber auch sehr einfach parallele Aufgaben ausführen. In der Regel werden FPGAs in HDL, Mikrocontroller in C / Assembly programmiert
Wann immer die Geschwindigkeit paralleler Aufgaben ein Thema ist, nehmen Sie ein FPGA, entwickeln Sie Ihr Design weiter und machen Sie es schließlich zu einem ASIC, wenn es auf lange Sicht für Sie günstiger ist (Massenproduktion). Wenn sequentielle Aufgaben in Ordnung sind, nehmen Sie einen Mikrocontroller. Ich vermute, Sie könnten daraus einen noch anwendungsspezifischeren IC machen, wenn er auf lange Sicht auch für Sie günstiger ist. Die beste Lösung wird wahrscheinlich ein bisschen von beidem sein.
Was für eine schnelle Suche nach dem Schreiben gab mir:
FPGA vs Microcontroller, in diesem Forum