Ich habe diesen Beitrag gelesen und er beantwortet meine Frage nicht vollständig:
Ich stelle mir einen Mikrocontroller als etwas vor, das über Speicher verfügt, sich registriert und eine Reihe von Anweisungen wie LOAD, STORE und ADD verarbeiten kann. Es enthält Logikgatter und dergleichen, um seine Rolle zu erfüllen, aber seine Hauptaufgabe besteht darin, ein universeller Prozessor von Bits zu sein. Ich stelle mir einen Microntroller als ein System miteinander verbundener ASIC-Designs vor, um die Fähigkeit zum Speichern und Verarbeiten von Anweisungen zu schaffen.
Ich stelle mir ein ASIC-Gerät als eine Schaltung vor, die speziell unter Verwendung logischer und elektrischer Komponenten konstruiert wurde Eine einzelne Aufgabe, ohne weitere Aufgaben oder zusätzliche Hardware.
Ich stelle mir ein FPGA-Gerät als ASIC-Gerät (ein Low-Level-Gerät) + eine Menge nicht verwendeter Dinge vor, die früher übrig waren Implementieren Sie eine bestimmte Wahrheitstabelle.
Trotz ihres Namens fühlt sich eine FGPA sehr „anwendungsspezifisch“ an, da sie neu verkabelt werden muss, um eine neue und andere Aufgabe auszuführen. Dies führt zu Verwechslungen mit ASIC. Im Falle einer Neuverdrahtung eines FPGA 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 per Proxy zum Entwerfen eines gesamten Mikrocontrollers verwendet werden?
Kommentare
- 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.
- Altera bietet ein kostenloses eBook mit dem Namen FPGAs für Dummies an, das den Unterschied zwischen FPGAs, ASICs und Mikrocontrollern gut erklärt.
- @kkrambo Du rufst ‚ mir einen Dummy an? 🙂 Entschuldigung, konnte ‚ nicht widerstehen … ich Ich werde es überprüfen.
- Ich habe das Wort ‚ Ähnlichkeiten ‚ zum Fragentitel hinzugefügt, weil es so scheint Es gibt winzige technische Fachsprache, die die Beziehung zwischen den drei verschiedenen Geräten verwirren können: Beispielsweise kann ein Gerät eines der beiden anderen Geräte enthalten. oder es kann viele ähnliche Komponenten enthalten, unterscheidet sich jedoch in einem wichtigen Aspekt. Dies wurde bereits von einigen der vorhandenen Antworten angesprochen. Vielen Dank.
Antwort
ASIC vs FPGA
Ein vor Ort programmierbares Gate-Array kann als Prototyping-Phase für anwendungsspezifische integrierte Schaltkreise angesehen werden: Die Herstellung von ASICs ist sehr teuer und wird dort hergestellt ist kein Zurück (da die teuersten Fixkosten die Masken [Art der Herstellung „Schablone“] und ihre Entwicklung sind). FPGAs sind viele Male umprogrammierbar, jedoch aufgrund der Tatsache, dass eine generische Reihe von Gates verbunden ist, um Ihr Ziel zu erreichen Es ist nicht wie ASICs optimiert. Außerdem sind FPGAs von Natur aus dynamische Geräte. Wenn Sie es 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 Laden Sie die Konfiguration beim Start, damit dies ein weniger wichtiges Argument ist. Sowohl ASICs als auch FPGAs können mit Hardwarebeschreibungssprachen konfiguriert werden, und manchmal sind es FPGAs für das Endprodukt verwendet. Aber im Allgemeinen treten ASICs ein, wenn das Design festgelegt ist.
FPGA gegen Mikrocontroller
Was den Unterschied zwischen einem Mikrocontroller und einem betrifft FPGA, Sie können einen Mikrocontroller als ASIC betrachten, der im Grunde genommen Code in FLASH / ROM nacheinander verarbeitet. Sie können Mikrocontroller mit FPGAs herstellen, 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 zu einem anderen springt 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 „Sei C A XOR B“ auf einem FPGA schreiben, das übersetzt wird in „Erstellen Sie ein XOR-Gate mit den enthaltenen Legosteinen (Nachschlagetabellen und Latches)“. und A / B als Eingänge und C als Ausgang verbinden „, die bei jedem Taktzyklus aktualisiert werden, unabhängig davon, ob C verwendet wird oder nicht. Während auf einem Mikrocontroller, der in „Leseanweisung – es“ übersetzt wird, ein XOR von Variablen an Adresse A und Adresse B des RAM erstellt wird, wird an Adresse C gespeichert. Laden Sie die Register der arithmetischen Logikeinheiten und fordern Sie die ALU auf, ein XOR durchzuführen. Kopieren Sie dann das Ausgaberegister an die Adresse C des RAM „. Auf der Benutzerseite waren beide Anweisungen jedoch 1 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. Auf der anderen Seite müssten Sie mit Threads jonglieren, was nicht trivial ist, um „Parallelität“ (wirklich ein- und ausschalten) aus einem Mikrocontroller herauszuholen. 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 Mikrocontroller: sicherlich wie ein Werkzeug mit einem Hammer zu vergleichen.
FPGA vs. Mikrocontroller: Nicht für die sequentielle Codeverarbeitung optimiert, kann aber auch sehr einfach wirklich parallele Aufgaben ausführen. Im Allgemeinen FPGAs sind in HDL programmiert, Mikrocontroller in C / Assembly
Wenn die Geschwindigkeit paralleler Aufgaben ein Problem darstellt, nehmen Sie ein FPGA, entwickeln Sie Ihr Design weiter und machen Sie es schließlich zu einem ASIC, falls dies der Fall ist „ist auf lange Sicht billiger für Sie (Massenproduktion). Wenn sequentielle Aufgaben in Ordnung sind, nehmen Sie einen Mikrocontroller. Ich denke, Sie könnten daraus einen noch anwendungsspezifischeren IC machen, wenn es auf lange Sicht auch für Sie billiger ist.“ . Die beste Lösung wird wahrscheinlich ein bisschen von beidem sein.
Was für eine schnelle Suche nach dem Schreiben hat mir Folgendes gebracht:
Antwort
FPGAs können durch Neuprogrammierung „neu verkabelt“ werden. Ein FPGA lädt seine Konfiguration in die konfigurierbaren Logikzellen, wenn es mit Strom versorgt wird . 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 verkabelt werden.
Ein Mikrocontroller ist ein Typ von ASIC, der ein Programm ausführt und dadurch allgemeine Aufgaben ausführen 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 ist ein FPGA auf Hardwareebene eine Menge kleiner SRAM-Zellen, die alle mit einer dichten Matrix von Multiplexern verbunden sind. Grundsätzlich ist ein FPGA ein ganzer Stapel diskreter Logik, die elektronisch „neu verkabelt“ ** werden kann, indem einfach die Multiplexer und SRAM-Zellen neu programmiert werden.
Als solche können Sie dies tun Implementieren Sie tatsächlich eine MCU innerhalb eines FPGA, 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, warum wir sie haben, ist, dass durch die Implementierung einer MCU direkt im Silizium die Gesamtmenge des erforderlichen Siliziumchip-Raums erheblich optimiert werden kann und bestimmte Leistungsoptimierungen vorgenommen werden können, die die erforderliche „Generizität“ eines FPGA verbietet. Dadurch können die Produktionskosten einer MCU drastisch gesenkt werden, und infolgedessen ist die übliche MCU viel billiger als ein FPGA, das die entsprechende Logik enthalten kann.
FPGAs sind in bestimmten Anwendungen nützlich, da sie Logikstrukturen auf eine Weise implementieren können, die MCUs nicht können. Wenn Sie beispielsweise X1 + Y1, X2 + Y2, X3 + Y3 und X4 + Y4 hinzufügen müssen, können Sie die Die MCU muss jede Operation nacheinander * ausführen. Ein FPGA kann einfach 4 separate ALUs gleichzeitig , sodass in einem Viertel der Zeit dieselbe Operation ausgeführt werden kann (vorausgesetzt, die beiden Geräte werden mit derselben Rate getaktet).
Hier befinden sich FPGAs ( oder ASICs, die für dieselbe Aufgabe entwickelt wurden) können wirklich glänzen, da Sie viele, viele Dinge gleichzeitig ausführen können, was ein einzelner Prozess nur nacheinander ausführen kann.
* (Hinweis: Ich ignoriere hier einige Dinge wie SIMD.)
Kommentare
- Ich ziehe an ‚ Ich glaube nicht, dass die FPGA / ASIC-Unterscheidung unscharf ist. In einem FPGA können die Schaltkreise, deren “ -Verkabelung “ geändert werden kann, gleichzeitig und unabhängig arbeiten. Eine MCU verfügt über eine große Anzahl von Schaltkreisen, deren Verdrahtung nicht geändert werden kann und deren Verhalten durch Informationen gesteuert wird, auf die stückweise von einem programmierbaren Speicherarray aus zugegriffen wird. Zu jedem Zeitpunkt kann eine CPU im Allgemeinen nur einen Vorgang aus einer Liste von einigen Tausend bis einigen Milliarden Auswahlmöglichkeiten ausführen. Die MCU ist jedoch so konzipiert, dass dies möglich ist, wenn solche Vorgänge nacheinander zusammengestellt werden nützliche Arbeit.
- Danke. Sehr nahe daran, die Antwort zu werden … wenn auch 10 Monate später. +1, um Wiedergutmachung zu leisten.
Antwort
Dies ist eine gute Frage,
Grundsätzlich ein Mikrocontroller und ein ASIC verfügen über Hardware (oft als Silizium bezeichnet), die in Stein gemeißelt ist und nicht geändert werden kann. Ein FPGA kann konfiguriert werden um viele verschiedene Arten von Hardware darzustellen (dies kann Mikrocontroller einschließen).
Sie können denken, dass ein Mikrocontroller viele verschiedene Aufgaben ausführen kann, aber dies alles geschieht durch Ausführen verschiedener Programme – technisch gesehen Software aber manchmal auch als Firmware bezeichnet – die Hardware selbst ändert sich nicht im Wesentlichen, sie führt dieselben Operationen aus, sondern in einer anderen Reihenfolge mit unterschiedlichen Eingaben.
FPGAs werden normalerweise verwendet, um die Designs zu generieren, die für ASICs bestimmt sind Der Unterschied zwischen ihnen besteht darin, dass, wenn Sie das Innenleben eines FPGA aktualisieren oder Funktionsblöcke hinzufügen / entfernen möchten, Sie lediglich die Firmware aktualisieren müssen, dies auf ASICs nicht als inneres Problem möglich ist Könige haben sich dem Silizium verschrieben, es ist nicht rekonfigurierbar.
Kurz gesagt, mit einem Mikroprozessor verwenden Sie dieselbe Hardware, um verschiedene Programme auszuführen. Mit einem FPGA konfigurieren Sie die Hardware neu, um verschiedene Funktionen auszuführen, und ASICs sind insofern wie ein Mikrocontroller, als die Hardware nicht sein kann geändert, sind jedoch normalerweise so konzipiert, dass sie eine einzelne Funktion äußerst effizient ausführen.
Sowohl ASICs als auch FPGAs können Mikrocontroller enthalten. Wenn dies der Fall ist, können Sie Programme für sie schreiben, wie Sie es von einem eigenständigen Mikrocontroller gewohnt sind Dies ist Alteras eingebetteter NIOS II-Prozessor.
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
Antwort
Nun, kein FPGA wird durch elektrische Signale programmiert, wenn es sich wie eine bestimmte Sammlung von Gates verhält. Einige FPGAs enthalten Flash Speicher zum Speichern dieser Konfiguration, einige nicht und müssen nach jedem Zurücksetzen der Stromversorgung neu programmiert werden.
Ein ASIC kommt bereits von der Produktionslinie. c onfigured.
FPGA-Fehler können mit einem Firmware-Upgrade behoben werden, ASIC-Fehler können nicht wirtschaftlich repariert werden.
Antwort
Trotz seines Namens fühlt sich eine FGPA sehr“ anwendungsspezifisch „an, da sie 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, daher kann er nur auf eine Aufgabe angewendet werden (diese Aufgabe implementiert möglicherweise einen Mikrocontroller).
Allerdings im Fall von Wenn Sie ein FPGA neu verkabeln, sollte die gesamte erforderliche Hardware vorhanden sein.
Sie sind sich nicht sicher, was dies bedeutet. Normalerweise gibt es eine Softwareschnittstelle zum Neuprogrammieren eines FPGA. Es handelt sich um einen ASIC, der Millionen von [Währungseinheiten] Hardware erfordert.
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 einer HDL programmieren.