Ich "untersuche" gerade FPGAs, was sie können, wie sie es tun usw.
An mehr als einer Stelle (hier zum Beispiel ) habe ich Projekte gesehen, die einen einfachen Mikrocontroller mit FPGA implementieren.
Also meine Frage:
Ich würde gerne wissen, wozu solche Implementierungen dienen? Warum sollte man einen in FPGA implementierten Mikrocontroller verwenden, anstatt ein Mikro an Bord zu haben? Was sind Vorteile? Und vielleicht auch was sind die Nachteile?
microcontroller
fpga
design
James C
quelle
quelle
Antworten:
Leistungen:
Nachteile:
quelle
Wenn Ihr Projekt ein FPGA für die Grunzarbeit verwenden wird und es über die freie Kapazität verfügt, warum würden Sie dann auf die Kosten eines zusätzlichen Chips gehen, wenn Sie es einfach im FPGA implementieren können?
In vielen prozeduralen Steuerungsumgebungen kann es erheblich einfacher sein, das erforderliche Setup in einer Sprache wie C zu implementieren, als dies in VHDL oder Verilog zu versuchen. Durch Hinzufügen des Mikrocontrollers zum FPGA erhalten Sie das Beste aus beiden Welten - die Leistung von VHDL / Verilog usw. für die Logik- und Schnittstellensysteme und die Einfachheit einer prozeduralen Sprache für die zentralen Steuerungs- und Verwaltungssysteme.
quelle
In Ergänzung zu den Antworten von Majenko und PkP:
Dieser Trend, eine CPU in das FPGA-Design einzubetten, hat zu mehreren heterogenen Systemen geführt, wie:
Auf dem Markt ist auch ein Intel Atom + Altera FPGA-Chip erhältlich: http://www.altera.com/devices/processor/intel/e6xx/proc-e6x5c.html
Die meisten freien Mikrocontroller für FPGA leiden unter einer schlechten Werkzeugkettenunterstützung. Eingebettete ARM-CPUs bieten Trace- / Debug-Unterstützung, Compiler (GCC-Toolkette) und vollständige Linux-Unterstützung. Hier ist eine Umfrage, die auf der FPL 2014 vorgestellt wurde: http://dx.doi.org/10.1109/FPL.2014.6927482
Edit 1:
Es gibt auch die Klasse der PSoC-Geräte (Programmable System on Chip) von Cypress. Zu diesen Geräten gehören ein Mikrocontroller (M8C, 8051, ARM Cortex M0 oder Cortex M3) und klassische integrierte SoC-E / A-Controller oder -Geräte (I²C, SPI, Timer, CAN, DAC, ADC, OpAmp, ...) sowie ein programmierbares Modul Teil. Dieser Teil ist nicht so feinkörnig programmierbar wie klassische FPGAs, kann jedoch zur Implementierung zusätzlicher E / A-Controller oder eingebauter Hardwarebeschleuniger verwendet werden. Mit PSoC können Sie analoge Komponenten in Ihrem Design verwenden.
http://www.cypress.com/psoc/?source=CY-ENG-HEADER
PSoC-Übersicht:
quelle
Wenn Sie nur einen Mikrocontroller benötigen und kein FPGA haben, ist es ungewöhnlich, ein FPGA mit Mikrocontroller-Firmware zu verwenden. Es wachsen jedoch nicht alle Projekte in diese Richtung. Viele Aufgaben benötigen eindeutig ein FPGA, stoßen aber schließlich auf eine Aufgabe, die für eine VHDL-Lösung wirklich nicht geeignet ist. Manchmal wird ein Problem am besten von einer Allzweck-CPU gelöst. Oder manchmal ist es umgekehrt: Einige Aufgaben sind einfach nicht für eine Allzweck-CPU geeignet - sie benötigen Parallelität.
Zu diesem Zeitpunkt haben Sie die Wahl. Sie können entweder einen zusätzlichen Chip zu Ihrem Gerät hinzufügen oder feststellen, dass auf dem FPGA, den Sie nicht verwenden, eine Reihe von Ersatzgates vorhanden sind. Lizenzieren Sie ein wenig IP, und Sie können in kürzester Zeit eine funktionierende Allzweck-CPU haben!
Ein weiteres interessantes Detail ist, dass Sie einige Mikrocontroller-Firmwares anpassen können. Ich kenne Projekte, die einen Power-PC eingebettet haben, aber alle für die Gleitkommaunterstützung erforderlichen Gates entfernt haben, und einen guten Teil der Verzweigungsvorhersage. Dadurch war es so klein, dass es neben der VHDL-basierten Firmware eingesetzt werden konnte.
quelle
Es gibt mehrere triftige Gründe, einen Mikroprozessor oder Mikrocontroller in einem FPGA zu instanziieren. Hier sind drei:
Sie möchten nur etwas über die Funktionsweise eines Prozessors erfahren. Mit FPGAs können Sie auf unendliche Weise prüfen, was im Prozessor bei der Ausführung von Code geschieht. Dies ist nur zum Lernen.
Sie implementieren ein großes System, das die Geschwindigkeiten eines FPGA auf Hardware-Ebene erfordert (schneller als die auf einem Mikroprozessor ausgeführte Software). Ihr Design erfordert jedoch eine komplexe Zustandsmaschine, die mithilfe von Software, die auf einem einfachen Prozessor wie dem Xilinx PicoBlaze ausgeführt wird, einfacher implementiert werden kann als in einem Hardware-FSM. Beachten Sie, dass ein PicoBlaze mit den neuesten FPGA-Prozesstechnologien bis zu 240 MHz arbeiten kann und der PicoBlaze-Prozessor alle zwei Taktzyklen einen Befehl ausführt, sodass Sie eine schnelle, konsistente Zustandsmaschine erhalten, die einfach in der Software programmiert werden kann.
Wenn Sie (2) erweitern, benötigen Sie eine Zustandsmaschine, die Interrupts verarbeiten kann. Prozessoren sind dafür sehr gut geeignet, da sie bereits wissen, wie sie den Zustand vor und nach dem Warten des Interrupts sicher speichern und wiederherstellen.
Hier ist eine Einschränkung: Wenn Sie einen schnellen Prozessor mit einem Standardbefehlssatz und einem großen Entwicklungsumfeld benötigen, benötigen Sie einen schnellen Hardcore-Prozessor wie die beiden ARM Cortex-A9 in einem Xilinx Zynq SoC. Die FPGA-Struktur im Zynq SoC ermöglicht es Ihnen weiterhin, mehr Prozessorkerne in programmierbarer Logik zu instanziieren, aber der ARM Cortex-A9 kann Standardbetriebssysteme wie Linux und Standard-IDEs wie Android ausführen.
Zwischen dem ARM Cortex-A9 und PicoBlaze gibt es viele Softprozessoren, die Sie mit programmierbarer Logik aus vielen Quellen implementieren können. Einige Leute lieben es, ihre eigenen Prozessoren zu rollen, und das ist eine großartige pädagogische Aktivität. Mikroprozessoren benötigen jedoch Softwareentwicklungstools, und das Erstellen / Debuggen dieser Tools erfordert einen um Größenordnungen höheren Aufwand als das Erstellen des Prozessors. Sie müssen immer den möglichen Nutzen eines benutzerdefinierten Mikroprozessors gegen die Zeit und den Aufwand abwägen, die zum Erstellen / Debuggen des Prozessorkerns und der Tools erforderlich sind.
Vollständige Offenlegung: Ich arbeite für Xilinx, aber ich bin mir ziemlich sicher, dass FPGAs nicht immer die Lösung sind. Wenn ein 50-Cent-Mikrocontroller das kann, ist das besser. FPGAs und Zynq-SoCs eignen sich für Projekte, bei denen über die Fähigkeiten von Mikrocontrollern hinaus ein hohes Gewicht erforderlich ist.
quelle
Manchmal können Sie ein FPGA verwenden, weil Sie Software auf einem veralteten und nicht verfügbaren physischen Prozessor haben, den Sie wiederherstellen möchten. Dies ist zwar nicht pin-kompatibel (obwohl DIP-artige Halterungen zu sehen sind), ermöglicht es Ihnen jedoch, zyklengenau zu arbeiten. Eine reine Software-Emulation auf einem Commodity-Mikroprozessor dürfte es nicht sein. Zum Beispiel apple2fpga
quelle