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

Ich weiß, dass die FPGA-DSP-Kombination typischerweise für High-End-Leistungselektronik/Ultraschall/MRT/usw. verwendet wird. Ist es möglich, dass der Softprozessor den DSP auch auf FPGAs der unteren Preisklasse wie Spartan 3/6 vollständig ersetzt?

Hinzugefügt: Was wäre der Grund dafür, mehrere Softcore-Prozessoren in einem FPGA zu haben?

Hängt im Grunde davon ab, wie DSP-intensiv Ihre Anwendung ist.
Die verhassten Winmodems kommen einem in den Sinn, obwohl man dort eine Allzweck-CPU hatte, die das DSPing erledigte.
Anscheinend kann man Software Defined Radio auf einer Virtex 5 und auch auf der Altera Stratix machen .
Und anscheinend haben das einige an einem Spartan 6 LX45 ausprobiert. An welche Anwendung denken Sie?
Das Hauptproblem, das ich in diesem Thread gesehen habe, ist die hilfreiche (PC-basierte) Vivado-Software, die zum Generieren von Filtern usw. funktioniert, denn der Virtex lässt Sie nicht auf den Spartan zielen. Ich bin mir nicht sicher, ob das nur eine Marketingentscheidung [Segmentierung] war oder ob die Spartan-Hardware zu niedrig ist.

Antworten (2)

Fühlen Sie sich frei, es zu überfliegen oder bis zum Ende zu springen. Ich merke, ich habe ein bisschen weitergemacht!


Im Allgemeinen würden Sie keinen Softprozessor verwenden, um DSP-Sachen zu ersetzen . Dedizierte Hardware kann im Allgemeinen höhere Datenmengen schneller verarbeiten, da Sie sie so entwerfen würden, dass sie eine bestimmte Aufgabe sehr gut erledigt, anstatt eine Allzweck-CPU zu sein.

Wo Softprozessoren in ihr Element kommen, ist Kontrolle und Koordination.

Wenn Sie ein System entwickeln müssten, das eine große Datenmenge verarbeiten müsste, sagen wir, Bilderfassung 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. Was Sie tun würden, wäre, eine dedizierte Firmware zu entwickeln, um die spezifische erforderliche Erfassungsaufgabe zu erledigen (z. B. die Daten filtern, im Speicher speichern usw.).

Sie müssen jedoch immer noch eine Möglichkeit haben, es anzuweisen, wann es etwas tun soll - wann möchten Sie erfassen, wurde das Gerät angewiesen, die Daten auszulagern usw. Diese Dinge sind bei dedizierter Hardware nicht sehr einfach zu erledigen, nicht wenn es sie gibt 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 (echtes) Beispiel: Ich habe an einem Ultraschallerfassungssystem gearbeitet, das Daten über PCIe streamt. 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, sodass es gut für eine Softcore-CPU geeignet ist, die in diesem Fall mit C programmiert ist. Das Gleiche in physischer Hardware zu tun, würde enorme Mengen an Ressourcen erfordern Die meisten davon würden selten verwendet und würden im Vergleich zu einer CPU keinen Vorteil sehen.

Es ist erwähnenswert, dass einige Aufgaben je nach Benutzereingabe variieren können, aber in dedizierter Hardware immer noch besser sind. Tatsächlich wurde ein Teil des Codes (Programmierung von DMA-Controllern zum Speichern von Daten beim Triggern) ursprünglich in der CPU in etwa 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 aber zu einer massiven 500-Zeilen-Zustandsmaschine mit etwa 15 Zuständen und einer ganzen Menge unterstützender Logik - nein wirklich. Aber obwohl es viel mehr Ressourcen verbraucht, ist es zeitkritisch und somit eine Notwendigkeit.

In ähnlicher Weise benötige ich eine taktzyklusgenaue Triggererzeugung, daher ist ein Modul zum Ausführen dieser Aufgabe Teil des Systems und nicht in einer CPU. Sowohl dieser als auch der obige Kern sind Beispiele dafür, wie Sie eine CPU verwenden können, um einige Aufgaben zu erledigen, aber für andere kritische Aufgaben können Sie Hardware entwickeln, um die CPU zu ergänzen - auf die gleiche Weise wie Sie Timer usw. in einem Mikrocontroller haben.


Also zusammenfassend:

FPGAs sind großartige flexible Werkzeuge, 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 wiederholende Aufgaben ausführen, die für verschiedene Eingaben konfiguriert werden können - Timer-Module, Zeichenanzeigen, Tastenentprellung usw. Diese könnten problemlos mit einer CPU ausgeführt werden, aber wenn Sie 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.

Dedizierte DSP, Datenübertragung (DMA) – im Grunde jede Aufgabe, die immer wieder dasselbe mit hohen Geschwindigkeiten tut – kann wirklich von dedizierter Logik in Bezug auf Geschwindigkeit und möglicherweise auch Leistung profitieren. Diese sind wie die Muskeln des Geräts, die das ganze schwere Heben erledigen.

Sie müssen das Geschwätz ein wenig entschuldigen, aber ich mag dieses Feld von EE. Hoffentlich ist das Obige verständlich und gibt Ihnen einen zusätzlichen Einblick in die wunderbare Welt der FPGAs.

@tcrosley Ich verstehe Ihren Standpunkt, aber wenn Sie beispielsweise zwei 128-Bit-Zahlen auf einem 32-Bit-Prozessor hinzufügen möchten, dauert dies mehrere Zyklen. Die Betonung lag auf Macht . Aber in Wirklichkeit hängt es ganz davon ab, was Sie als Ganzes tun. Wenn Sie nur hinzufügen wollten, wäre es sinnlos, eine ganze CPU in einem FPGA zu haben - instanziieren Sie einfach einen Addierer. Also denke ich, dass ich diesen Teil entfernen werde.

Wie Tom bereits erwähnt hat, geht es beim MicroBlaze nicht so sehr darum, einen DSP zu ersetzen, sondern um einen herkömmlichen Mikrocontroller zu ersetzen, der sich sonst auf der Platine befinden könnte.

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

Daher wäre ein separater DSP-Softcore, wie er in diesem Artikel für den Xilinx Virtex-4 beschrieben wird, die bessere Wahl.

Viele DSP-Designs würden davon profitieren, beide Softcores zu haben, 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 der MicroBlaze nicht nur einen Teil der Stückliste (und natürlich die damit verbundenen Kosten), sondern machen auch Pins auf dem FPGA frei, da es welche gibt es ist keine Verbindung zwischen dem FPGA und einem Mikrocontroller erforderlich. Der Platz, der für Leiterbahnen zwischen den beiden Teilen benötigt wird, wird ebenfalls freigegeben.

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 etwa 600 LUTs und kann auf bis zu 4000 anwachsen, wenn eine FPU, MMU, 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 selbst die Einbeziehung dieser beiden Softcores nur einen Bruchteil des Chips aus. Das Integrieren von beiden ermöglicht es, dass sowohl herkömmliche als auch DSP-Operationen parallel stattfinden, falls dies gewünscht wird, auf Kosten einer gewissen zusätzlichen Komplexität für die Synchronisation zwischen den beiden.

Das IP für MicroBlaze ist kostenlos, solange Sie es auf einem Xilinx FPGA verwenden und die ISE Design Suite Embedded Edition (oder gleichwertig) lizenziert haben.