Fühlen Sie sich frei, das Lesen zu überfliegen oder bis zum Ende zu springen. Mir ist klar, dass ich ein bisschen weitergemacht habe!
Im Allgemeinen würden Sie keinen Soft-Prozessor verwenden, um DSP-Daten zu ersetzen . Dedizierte Hardware kann im Allgemeinen höhere Datenmengen schneller verarbeiten, da Sie sie so konzipiert haben, dass sie eine bestimmte Aufgabe sehr gut erledigt, anstatt eine Allzweck-CPU zu sein.
Wo weiche Prozessoren in ihr Element kommen, ist Kontrolle und Koordination.
Wenn Sie ein System entwerfen würden, das ein großes Datenvolumen verarbeiten muss, beispielsweise eine Bildaufnahme mit hoher Bildrate, wäre es nicht möglich, einen Softcore-Prozessor zu verwenden, um alle Daten zu verarbeiten. Es wäre einfach zu viel Overhead in der CPU. Sie würden eine dedizierte Firmware entwerfen, um die spezifische Erfassungsaufgabe zu erfüllen (z. B. Daten filtern, im Speicher speichern usw.).
Sie müssen es jedoch noch anweisen, wann Dinge zu tun sind - wann Sie erfassen möchten, wurde das Gerät angewiesen, die Daten auszulagern usw. Diese Dinge sind in dedizierter Hardware nicht sehr einfach zu tun, nicht wenn dies der Fall ist Abfolgen von Ereignissen mit Benutzereingaben, im Grunde Aufgaben, die nicht immer wieder dasselbe tun. In diesem Fall würden Sie einen Softcore-Prozessor verwenden, da es für einige Aufgaben viel einfacher ist, prozeduralen Code zu schreiben.
Ein weiteres (reales) Beispiel: Ich habe an einem Ultraschall-Erfassungssystem gearbeitet, das Daten über PCIe überträgt. Die Aufgaben, die es ausführt, werden vom Benutzer mitgeteilt, und verschiedene Teile des Systems müssen konfiguriert werden. Die Koordination des Systems erfordert keine großen Datenmengen, sondern Flexibilität. Daher eignet es sich gut für eine in diesem Fall mit C programmierte Softcore-CPU. Dasselbe bei physischer Hardware zu tun, würde enorme Ressourcen erfordern Die meisten davon würden selten verwendet, so dass im Vergleich zu einer CPU kein Vorteil zu verzeichnen wäre.
Es ist erwähnenswert, dass einige Aufgaben je nach Benutzereingabe variieren können, bei dedizierter Hardware jedoch immer noch besser sind. Tatsächlich wurde ein Teil des Codes (Programmieren von DMA-Controllern zum Speichern von Daten auf dem Trigger) ursprünglich in der CPU in ungefähr 15 Codezeilen ausgeführt, aber da dieses Bit in dem Moment ausgeführt werden muss, in dem ein Trigger auftritt, wird möglicherweise eine CPU verwendet beschäftigt mit anderen Sachen ist nicht ideal. Die Aufgabe wird stattdessen in ein Verilog-Modul programmiert, wird dabei jedoch zu einer massiven 500-Zeilen-Zustandsmaschine mit etwa 15 Zuständen und einer ganzen Menge unterstützender Logik - nein, wirklich. Obwohl es viel mehr Ressourcen verbraucht, ist es zeitkritisch, ebenso wie eine Notwendigkeit.
Ebenso benötige ich eine taktzyklusgenaue Triggergenerierung, sodass ein Modul zur Ausführung dieser Aufgabe Teil des Systems ist und nicht in einer CPU ausgeführt wird. Sowohl dieser als auch der oben genannte Kern sind Beispiele dafür, wie Sie eine CPU für einige Aufgaben verwenden können. Für andere wichtige Aufgaben können Sie jedoch Hardware entwickeln, die die CPU ergänzt - genauso wie Sie Timer usw. in einem Mikrocontroller haben.
Um es zusammenzufassen:
FPGAs sind großartige flexible Tools, aber die meisten Designs erfordern eine Kombination aus Softcore-CPUs, konfigurierbaren Modulen (z. B. Timern) und dedizierter Single-Task-Hardware.
CPUs eignen sich hervorragend für die Benutzerinteraktion, die Steuerung der Reihenfolge von Ereignissen und die Konfiguration von Controllern. Sie sind wie der Koordinator, das Gehirn.
Einige Designs müssen möglicherweise einige sich ziemlich wiederholende Aufgaben ausführen, die für verschiedene Eingaben konfiguriert werden können - Timermodule, Zeichenanzeigen, Entprellen von Schaltflächen usw. Diese können problemlos mit einer CPU ausgeführt werden, wenn Sie jedoch mehrere davon genau ausführen möchten Sobald es schwieriger wird, teilen sie sich die gleichen CPU-Ressourcen. Sie können sie also in dedizierte Hardware verschieben, die eng mit der CPU verbunden ist. Geben Sie der CPU die Möglichkeit, andere Aufgaben zu erledigen. Diese helfen der CPU, ihre Arbeit zu erledigen und wie ihre Sinne mit ihrer Umgebung zu interagieren.
Dedicated DSP, Data Transfer (DMA) - im Grunde genommen jede Aufgabe, die bei hohen Geschwindigkeiten immer wieder dasselbe tut - kann wirklich von dedizierter Logik in Bezug auf Geschwindigkeit und möglicherweise auch Leistung profitieren . Diese sind wie die Muskeln des Gerätes, die das ganze schwere Heben erledigen.
Sie müssen das Wandern ein wenig entschuldigen, aber ich mag dieses Feld von EE. Hoffentlich ist das oben Genannte verständlich und gibt Ihnen einen zusätzlichen Einblick in die wunderbare Welt der FPGAs.