Was sind die Unterschiede und Gemeinsamkeiten zwischen FPGA, ASIC und General Microcontrollern?


25

Ich habe diesen Beitrag gelesen und er beantwortet meine Frage nicht vollständig:

Ich stelle mir einen Mikrocontroller vor, der über Speicher verfügt, sich registriert und Befehle wie LOAD, STORE und ADD verarbeiten kann. Es enthält logische Gatter und dergleichen, um seine Rolle zu erfüllen, aber seine Hauptaufgabe ist es, ein universeller Prozessor für Bits zu sein. Ich stelle mir einen Mikrocontroller als ein System aus miteinander verbundenen ASIC-Designs vor, mit denen Anweisungen gespeichert und verarbeitet werden können.

Ich stelle mir ein ASIC-Gerät als eine Schaltung vor, die speziell unter Verwendung logischer und elektrischer Komponenten konstruiert wurde, um eine einzelne Aufgabe auszuführen, ohne dass eine andere Aufgabe in Betracht gezogen oder zusätzliche Hardware enthalten wäre.

Ich stelle mir ein FPGA-Gerät als ein ASIC-Gerät (ein Low-Level-Gerät) + ein Bündel unbenutzter Dinge, die zum Implementieren einer bestimmten Wahrheitstabelle verwendet werden.

Trotz seines Namens fühlt sich ein FGPA sehr "anwendungsspezifisch" an, da es neu verkabelt werden muss, um eine neue und andere Aufgabe auszuführen. Dies führt zu Verwechslungen mit ASIC. Bei einer Neuverdrahtung eines FPGAs sollte jedoch die gesamte erforderliche Hardware vorhanden sein. FPGAs sollen auch programmierbar sein, aber ist das nicht das, wofür ein Mikrocontroller gedacht ist?

In dem Beitrag, auf den ich oben verwiesen habe, wird auch HDL erwähnt, mit dem ich vertraut bin. Kann HDL nicht sowohl für ASIC als auch für FPGA und als Proxy zum Entwerfen eines gesamten Mikrocontrollers verwendet werden?


1
Es ist nicht sehr klar, was Ihre Frage ist. Haben Sie verwandte Fragen zu FPGA vs ASIC gelesen? HDL wird tatsächlich zum Entwerfen von ASICs und FPGA-Implementierungen verwendet, und Sie können einen Mikrocontroller in HDL entwerfen.
pjc50

3
Altera bietet ein kostenloses eBook namens FPGAs for Dummies an , das den Unterschied zwischen FPGAs, ASICs und Mikrocontrollern gut erklärt.
kkrambo

@kkrambo Du nennst mich einen Dummy? :) Sorry, konnte nicht widerstehen ... Ich werde es überprüfen.
user58446

Ich habe dem Fragentitel das Wort "Ähnlichkeiten" hinzugefügt, da es den Anschein hat, dass es winzige technische Fachjargon-Details gibt, die die Beziehung zwischen den drei verschiedenen Geräten verwechseln können: Beispielsweise kann ein Gerät eines der beiden anderen Geräte enthalten, oder es kann viele enthalten ähnliche Komponenten, unterscheiden sich jedoch in einigen wichtigen Aspekten. Dies wurde bereits in einigen der vorhandenen Antworten angesprochen. Vielen Dank.
user58446

Antworten:


28

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: Bildbeschreibung hier eingeben Bildbeschreibung hier eingeben

FPGA vs Microcontroller, in diesem Forum


14

FPGAs können durch Neuprogrammierung "neu verkabelt" werden. Ein FPGA lädt seine Konfiguration unter Spannung in seine konfigurierbaren Logikzellen . Dies bedeutet, dass es ohne Änderungen an der Hardware neu programmiert werden kann.

ASICs können nur durch Modifizieren der photolitografischen Masken in der Siliziumgießerei neu verdrahtet werden.

Ein Mikrocontroller ist eine Art ASIC, der ein Programm ausführt und dadurch generische Dinge tun kann. Wenn Sie jedoch den Befehlssatz ändern oder etwas Ähnliches tun möchten, müssen Sie das tatsächliche Silizium-IC-Layout ändern.


Der Unterschied zwischen einem FPGA und einer MCU ist unscharfer. Grundsätzlich besteht ein FPGA auf Hardwareebene aus vielen kleinen SRAM-Zellen, die alle mit einer dichten Matrix von Multiplexern verbunden sind. Grundsätzlich ist ein FPGA ein ganzer Haufen diskreter Logik, die elektronisch "neu verdrahtet" werden kann **, indem die Multiplexer und SRAM-Zellen neu programmiert werden.

Als solches können Sie eine MCU tatsächlich in einem FPGA implementieren , da eine MCU nur eine bestimmte Konfiguration von Logikzellen ist. Tatsächlich werden FPGAs sehr häufig im Entwurfsprozess von MCUs verwendet.

Ein Mikrocontroller ist eine Implementierung einer bestimmten Logikkonfiguration. Der Grund dafür liegt darin, dass durch die Implementierung einer MCU direkt im Silizium der Gesamtbedarf an Silizium-Chip-Platz erheblich optimiert werden kann und bestimmte Leistungsoptimierungen vorgenommen werden können, die die erforderliche "Generizität" eines FPGA verbietet. Auf diese Weise können die Produktionskosten einer MCU drastisch gesenkt werden. Infolgedessen ist die herkömmliche MCU viel billiger als ein FPGA, das die entsprechende Logik enthält.


FPGAs sind in bestimmten Anwendungen nützlich, da sie Logikstrukturen auf eine Weise implementieren können, die MCUs nicht können. Zum Beispiel, wenn Sie X1 + Y1, X2 + Y2, X3 + Y3 und X4 + Y4 hinzufügen müssen, wird die MCU hat jede Operation zu tun in Folge *. Ein FPGA kann einfach 4 separate ALUs gleichzeitig haben , sodass in einem Viertel der Zeit derselbe Vorgang ausgeführt werden kann (vorausgesetzt, die beiden Geräte werden mit der gleichen Taktrate getaktet).

Hier können FPGAs (oder ASICs, die für dieselbe Aufgabe entwickelt wurden) wirklich glänzen, da Sie viele, viele Dinge gleichzeitig ausführen können , die ein einzelner Prozess nur nacheinander ausführen kann.

* (Anmerkung: Ich ignoriere hier einige Dinge wie SIMD)


Ich denke nicht, dass die FPGA / ASIC-Unterscheidung unscharf ist. In einem FPGA arbeiten die Schaltkreise, deren "Verdrahtung" geändert werden kann, gleichzeitig und unabhängig. Eine MCU hat eine große Menge von Schaltungen, deren Verdrahtung nicht geändert werden kann, deren Verhalten durch Informationen gesteuert wird, auf die stückweise von einem programmierbaren Speicherarray zugegriffen wird. Zu jedem Zeitpunkt ist eine CPU im Allgemeinen nur in der Lage, eine Operation aus einer Liste von einigen Tausend bis zu einigen Milliarden Auswahlen auszuführen, aber die MCU ist so ausgelegt, dass das Zusammenfügen solcher Operationen nacheinander möglich wird nützliche Arbeit.
Superkatze

Vielen Dank. Sehr nah dran, die Antwort zu sein ... wenn auch 10 Monate später. +1, um Wiedergutmachung zu leisten.
user58446

6

Das ist eine gute Frage,

Grundsätzlich haben ein Mikrocontroller und ein ASIC Hardware (oft als Silizium bezeichnet), die in Stein gemeißelt ist und nicht geändert werden kann. Ein FPGA kann so konfiguriert werden , dass er viele verschiedene Arten von Hardware repräsentiert (dies kann Mikrocontroller umfassen).

Sie denken vielleicht, dass ein Mikrocontroller viele verschiedene Aufgaben ausführen kann, aber dies wird alles durch Ausführen verschiedener Programme erreicht - technisch gesehen Software, aber manchmal auch als Firmware bezeichnet - die Hardware selbst ändert sich nicht wesentlich, sie führt dieselben Vorgänge aus, aber in einer unterschiedliche Reihenfolge mit unterschiedlichen Eingaben.

FPGAs werden normalerweise verwendet, um die Designs zu generieren, die für ASICs festgeschrieben sind. Der Unterschied zwischen ihnen besteht darin, dass Sie zum Aktualisieren der Funktionsweise eines FPGAs oder zum Hinzufügen / Entfernen von Funktionsblöcken lediglich die Firmware aktualisieren müssen. Dies ist nicht möglich auf ASICs durchgeführt werden, da das Innenleben auf Silizium festgelegt wurde, ist es nicht rekonfigurierbar.

Kurz gesagt, mit einem Mikroprozessor verwenden Sie dieselbe Hardware, um verschiedene Programme auszuführen, und mit einem FPGA konfigurieren Sie die Hardware neu, um verschiedene Funktionen auszuführen. ASICs ähneln einem Mikrocontroller dahingehend, dass die Hardware nicht geändert werden kann, sondern in der Regel für die Ausführung ausgelegt ist eine einzige Funktion äußerst effizient.

Sowohl ASICs als auch FPGAs können Mikrocontroller enthalten. In diesem Fall können Sie Programme für diese wie für einen eigenständigen Mikrocontroller schreiben. Ein Beispiel hierfür ist der eingebettete NIOS II-Prozessor von Altera.

Wenn dies immer noch verwirrend ist, lassen Sie mich wissen, was unklar ist, und ich werde mein Bestes tun, um meine Antwort zu klären.

Zigeuner


3

Nun, ein FPGA wird nicht durch elektrische Signale programmiert, wenn er sich wie eine bestimmte Sammlung von Gattern verhält. Einige FPGAs enthalten einen Flash-Speicher zum Speichern dieser Konfiguration. Einige müssen nach jedem Neustart der Stromversorgung neu programmiert werden.

Ein ASIC wird von der bereits konfigurierten Produktionslinie ausgeliefert.

FPGA-Fehler können mit einem Firmware-Upgrade behoben werden, ASIC-Fehler können nicht wirtschaftlich repariert werden.


2

Trotz seines Namens fühlt sich ein FGPA sehr "anwendungsspezifisch" an, da es neu verkabelt werden muss, um eine neue und andere Aufgabe auszuführen.

Das ist das Gegenteil von dem, was "anwendungsspezifisch" bedeutet. Sie können ein FPGA für mehr als eine Anwendung verwenden, indem Sie es neu verkabeln. Sie können einen ASIC nicht ändern, sodass er nur auf eine Task angewendet werden kann (diese Task implementiert möglicherweise einen Mikrocontroller).

Bei einer Neuverdrahtung eines FPGAs sollte jedoch die gesamte erforderliche Hardware vorhanden sein.

Nicht sicher, was das bedeutet. Normalerweise gibt es eine Softwareschnittstelle zur Neuprogrammierung eines FPGA. Es ist ein ASIC, der Millionen von [Währungseinheiten] Hardware benötigt.

FPGAs sollen programmierbar sein, aber ist das nicht das, wofür ein Mikrocontroller gedacht ist?

Mit einem Mikrocontroller können Sie sequentielle Software für eine feste Hardware programmieren. Genau wie ein normaler Computer, aber sehr klein und ressourcenbeschränkt. Mit einem FPGA können Sie jede gewünschte Hardware mit einem HDL programmieren.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.