Was sind die typischen Verwendungszwecke für einen Softprozessor wie MicroBlaze?

8

Ich weiß, dass die FPGA-DSP-Kombination normalerweise für High-End-Leistungselektronik / Ultraschall / MRT / etc. Verwendet wird. Kann der Softprozessor den DSP auch bei FPGAs der unteren Preisklasse wie Spartan 3/6 vollständig ersetzen?

Hinzugefügt: Was wäre der Grund für mehrere Softcore-Prozessoren in einem FPGA?

SunnyBoyNY
quelle
Hängt im Grunde davon ab, wie DSP-intensiv Ihre Anwendung ist.
Fizz
Die verhassten Winmodems kommen mir in den Sinn, obwohl Sie dort eine Allzweck-CPU hatten, die das DSPing durchführte.
Fizz
Anscheinend können Sie softwaredefiniertes Radio auf einem Virtex 5 und auch auf dem Altera Stratix machen .
Fizz
Und anscheinend haben einige das auf einem Spartan 6 LX45 versucht . Welche Anwendung haben Sie im Sinn?
Fizz
Das Hauptproblem, das ich in diesem Thread gesehen habe, ist die hilfreiche (PC-basierte) Vivado-Software, mit der Filter usw. für den Virtex generiert werden können. Sie können nicht auf den Spartaner zielen. Ich bin mir nicht sicher, ob dies nur eine Marketingentscheidung war oder ob die spartanische Hardware zu niedrig ist.
Fizz

Antworten:

11

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.

Tom Carpenter
quelle
@tcrosley Ich verstehe Ihren Standpunkt, aber wenn Sie sagen, Sie wollten zwei 128-Bit-Zahlen auf einem 32-Bit-Prozessor hinzufügen, dauert es mehrere Zyklen. Der Schwerpunkt lag auf einer Macht . In Wirklichkeit hängt es jedoch ganz davon ab, was Sie als Ganzes tun. Wenn Sie nur hinzufügen möchten, wäre es in einem FPGA sinnlos, eine gesamte CPU zu haben - instanziieren Sie einfach einen Addierer. Also denke ich, dass ich dieses Bit entfernen werde.
Tom Carpenter
1

Wie Tom bereits erwähnt hat, geht es beim MicroBlaze weniger darum, einen DSP zu ersetzen, als vielmehr darum, einen herkömmlichen Mikrocontroller zu ersetzen, der sich ansonsten möglicherweise auf der Platine befindet.

Dies liegt daran, dass der MicroBlaze-Softprozessorkern kein besonders guter Ersatz für einen DSP ist, da ihm spezielle DSP-Funktionen wie ein MAC-Befehl (Multiplizieren und Akkumulieren), zirkuläre Puffer, bitumgekehrte Adressierung und Sättigungslogik fehlen.

Ein separater DSP-Softcore, wie der in diesem Dokument für den Xilinx Virtex-4 beschriebene, wäre daher die bessere Wahl.

Viele DSP-Designs würden von beiden Soft Cores profitieren, da viele, wenn nicht die meisten digitalen Designs, die ein FPGA enthalten, auch einen allgemeinen Mikrocontroller benötigen. Solange im FPGA genügend Ressourcen verfügbar sind (siehe unten), eliminieren Softprozessoren wie MicroBlaze nicht nur einen Teil der Stückliste (und natürlich die damit verbundenen Kosten), sondern setzen auch Pins im FPGA frei, da dies der Fall ist Es ist nicht erforderlich, eine Verbindung zwischen dem FPGA und einem Mikrocontroller herzustellen. Der für Spuren zwischen den beiden Teilen erforderliche Platz wird ebenfalls frei.

Der MicroBlaze kann auf einem Virtex-5 mit 210 MHz betrieben werden . Versionen mit einer MMU können Linux ausführen. Ein Minimum von MicroBlaze benötigt ungefähr 600 LUTs und kann bis zu 4000 wachsen, wenn eine FPU, eine MMU, ein Cache und andere Extras hinzugefügt werden. Der oben erwähnte DSP-Softprozessor verwendete 1700 LUTs.

Da ein Virtext-5-FPGA zwischen 30.000 und über 200.000 LUTs haben kann, macht das Einbeziehen dieser beiden Soft Cores nur einen Bruchteil des Chips aus. Durch die Integration von beiden können auf Wunsch sowohl konventionelle als auch DSP-Operationen parallel durchgeführt werden, was auf Kosten einer zusätzlichen Komplexität für die Synchronisation zwischen beiden Kosten führt.

Die IP-Adresse für MicroBlaze ist kostenlos, solange Sie sie auf einem Xilinx-FPGA verwenden und die ISE Design Suite Embedded Edition (oder eine gleichwertige Version) lizenziert haben.

tcrosley
quelle