Was sind die Vorteile eines separaten Prozessors, wenn ein FPGA vorhanden ist?

Betrachten Sie eine eingebettete Anwendung mit sowohl einem diskreten Prozessor (ARM, AVR, PIC usw.) als auch einem FPGA, um einen Teil der Arbeit zu entlasten oder eine Schnittstelle mit bestimmter Hardware herzustellen. Unter der Annahme, dass im FPGA genügend Ressourcen vorhanden sind, um ein Soft-Core-Äquivalent des externen Prozessors unterzubringen, welche Vorteile bietet die Verwendung eines Hard-Prozessors anstelle eines Soft-Core?

Die Möglichkeit, auf ein kleineres und billigeres FPGA umzusteigen.

Antworten (4)

Im Allgemeinen läuft ein harter Kern schneller, verbraucht weniger Strom und verbraucht weniger Chipfläche.

Das kann bedeuten, dass es billiger oder besser ist, ein kleineres FPGA und einen harten Prozessor (entweder auf einem Chip oder auf zwei) zu verwenden.

Einige FPGAs haben harte Kerne auf dem Chip (z. B. die Zynq-Serie von Xilinx), sodass Sie einen oder beide der beiden harten ARM9-Kerne verwenden und/oder einen PicoBlaze- oder MicroBlaze-Soft-Prozessor (oder einen anderen Typ) implementieren können.

Es gibt auch höchstwahrscheinlich geschäftliche Unterschiede im Zusammenhang mit der Lizenzierung von IP für einen Softcore, der mit (sagen wir) einer ARM-Toolchain kompatibel ist.

Ein weiterer Grund, warum manchmal ein externer Prozessor verwendet wird, besteht darin, dass er mit einer externen Schnittstelle wie USB oder Ethernet verbunden sein kann und eine Produktaktualisierung über einen Remote-Download ermöglicht. In diesen Fällen kann der externe Prozessor eine neue FPGA-Programmdatendatei empfangen und sich an das FPGA-Subsystem binden, um eine Aktualisierung des FPGA-Entwurfsinhalts zu implementieren. (Das kann ein Update direkt auf das FPGA sein oder es kann ein Update auf einen seriellen FLASH-Chip sein, der mit dem Power-on-Load-Schema des FPGA verbunden ist.

Für den Remote-Download allein benötigen Sie keinen separaten Prozessor. Das FPGA selbst kann die Operation durchführen; vorausgesetzt, es verfügt über Controller, um auf die anvisierten Flash-Chips in sich selbst zuzugreifen. Zusammen mit einer Option für Multi-Boot oder ausfallsicheres Image im Flash (das jetzt von den meisten FPGAs unterstützt wird) haben Sie eine Lösung, die sich um alle Probleme kümmert, die entstehen, wenn das Image während Upgrades beschädigt wird.

Einige der Hard-Core-Prozessoren haben eine ausgereiftere Entwicklungsumgebung, wenn es um Debugging usw. geht. Sie können mehr Programmierer finden, die mit der Toolkette vertraut sind. Andererseits können Sie möglicherweise etwas Platz auf der Leiterplatte sparen und die Stücklistenkomplexität reduzieren, indem Sie nur ein FPGA verwenden. Es ist recht einfach, ein System (FPGA mit SPI-Speicher) mit einem Bootloader zu entwickeln, mit dem Sie das System auf sichere Weise aktualisieren können, ohne einen externen Prozessor zu verwenden.

Unterschiedliche Aufgaben erfordern unterschiedliche Arten von Werkzeugen. Sie könnten die Arbeitslast einer Art von Tool einem anderen aufzwingen, aber mit der Zeit wird dies zu einer ineffizienten Vorgehensweise. In diesem speziellen Fall gibt es viele Dinge, die auf einem Prozessor einfach einfacher zu erledigen sind. Sie müssen nur den erforderlichen Code in einer relativ komfortablen Sprache wie C schreiben und über eine ausgereifte Toolchain verfügen, die ihn kompilieren kann. Wenn Sie dasselbe auf einem FPGA machen möchten, beginnen Sie auf einer viel niedrigeren Ebene und müssen zuerst einen Prozessorkern entwerfen (oder anderweitig das Design dafür erhalten). Wenn der Großteil dessen, was Sie tun müssen, vom FPGA erledigt werden muss und der Prozessor am Ende nur sehr wenig tut, könnten Sie die Mühe investieren, den Prozessor zu entfernen und den Kern selbst in das FPGA zu verkeilen. Ebenso ist das Umgekehrte möglich. In der Praxis jedoch

Es ist auch nützlich zu verstehen, wofür FPGAs ursprünglich verwendet wurden. Sie waren (und sind es in vielerlei Hinsicht immer noch) generische Hardwareteile, mit denen neue Kerndesigns und spezialisierte Schaltungen ausprobiert werden können, mit der Absicht, die Designs letztendlich in ASICs umzuwandeln. Sie können die Frage jetzt stellen, weil sich die Wirtschaftlichkeit in Bezug auf die Preisgestaltung etwas verändert hat und es heutzutage viele Anwendungen gibt, die spezifisch genug sind, um die hohen Stückzahlen nicht zu benötigen, um die Produktion eines ASIC zu rechtfertigen. Wenn es jedoch einen ASIC (oder sogar einen generischen Prozessor) gibt, erweist es sich oft als billiger, schneller und effizienter in Bezug auf Kosten, Entwicklungszeit und erforderliche Fähigkeiten, eine Kombination aus einem FPGA, ASICs und einem Prozessor zu verwenden als es wäre, alles in ein FPGA zu schieben.