DSP48 vs Multiplikation

OP #7550451
Lesenswert?

Ich bin neu in VHDL und Xilinx. Beim durchgehen bin ich über die Sache mit den DSP48-Blöcken gestolpert. Ich habe mich gefragt, warum man eigentlich DSP48-Blöcke anstelle von Logik für Multiplikationen verwendet. Welche Vorteile gibt es hierbei?

Es wäre cool, wenn jemand das für einen DSP-Neuling wie mich aufklären könnte!

#7550527
Lesenswert?

Der H. schrieb:

Ich bin neu in VHDL und Xilinx. Beim durchgehen bin ich über die Sache mit den DSP48-Blöcken gestolpert. Ich habe mich gefragt, warum man eigentlich DSP48-Blöcke anstelle von Logik für Multiplikationen verwendet. Welche Vorteile gibt es hierbei?

Es wäre cool, wenn jemand das für einen DSP-Neuling wie mich aufklären könnte!

DSP48 ist schneller und nimmt weniger FPGA resourcen.

Gast #7550529
Lesenswert?

Der H. schrieb:

Ich habe mich gefragt, warum man eigentlich DSP48-Blöcke anstelle von Logik für Multiplikationen verwendet.

Macht man nicht, ein DSP48-Block beinhaltet einen Multiplizierer (die Kuller mit dem 'X'), schau dir bittedas Blockbild an. Vor dem DSP48 gabs dem MUL18-Block.

https://www.researchgate.net/profile/Bogdan-Pasca/publication/281658777/figure/fig4/AS:669422771515396@1536614234180/Overview-of-the-Xilinx-DSP48.png

Es wäre cool, wenn jemand das für einen DSP-Neuling wie mich aufklären könnte!

Lass Dich auf ne Schulung schicken. Wahrsheinlich verwechselst du

DSP "digital signal processing" mit "Digital signal processor", der DSP48 ist kein DS-Prozessor wie dunnemals der TMS320 .

https://docs.xilinx.com/v/u/en-US/ug479_7Series_DSP48E1

Und macht dich mal schlau, wieviel LUT-Logicresourcen ein MUL schluckt.

#7550548
Lesenswert?

Eine Multiplikation mit 48-bit-Ergebnis in LUTs zu bauen braucht ziemlich viel Platz. Da man Mutliplikationen aber häufig braucht, hat Xilinx die DSP-Blöcke eingebaut, die sind kleiner und viel schneller und können noch mehr als nur multiplizieren. Im Synthesis-Guide steht irgendwo, wie du festlegen kannst, ob bei einer Multiplikation ein DSP-48 oder eine LUT-Struktur verwendet werden soll. Manchmal kann es auch sinnvoll sein, einen Multiplier aus LUTs zu bauen, z.B. bei kleineren Multiplikationen. Und wie schon jemand geschrieben hat, der Begriff DSP-48 ist etwas irreführend. Man kann diese Macros auch für andere Anwendungen als Signalverarbeitung verwenden.

OP #7550696
Lesenswert?

Vielen Dank für die Antworten!

Dass der DSP48 kein Prozessor ist, ist mir klar, das sieht man ja am Blockschaltbild :) Da fehlt der Prozessorkern

Ich habe noch einen Knoten im Kopf warum der DSP48 schneller ist als die Multiplikation - da der DSP48 auch eine Multiplikation enthält

Ich würde es mir nun mit den vorherigen Antworten so erklären, dass der DSP48 eine dezidierte Logik hat während eine reine Multiplikation auf dem FPGA mit den CLBs, also durch LUTs realisiert wird.

Ist das richtig?

#7550700
Lesenswert?

Der H. schrieb:

Vielen Dank für die Antworten!

Dass der DSP48 kein Prozessor ist, ist mir klar, das sieht man ja am Blockschaltbild :) Da fehlt der Prozessorkern

Ich habe noch einen Knoten im Kopf warum der DSP48 schneller ist als die Multiplikation - da der DSP48 auch eine Multiplikation enthält

Ich würde es mir nun mit den vorherigen Antworten so erklären, dass der DSP48 eine dezidierte Logik hat während eine reine Multiplikation auf dem FPGA mit den CLBs, also durch LUTs realisiert wird.

Ist das richtig?

ja.

Gast #7550723
Lesenswert?

Ich würde es mir nun mit den vorherigen Antworten so erklären, dass der DSP48 eine dezidierte Logik hat während eine reine Multiplikation auf dem FPGA mit den CLBs, also durch LUTs realisiert wird.

Ist das richtig?

Es trifft nicht ganz den Kern. Das Problem resp. die Bremse sind weniger die LUT's selbst als die interconnects, also die Laufzeit zwischen den LUT's über die FPGA-routing Resourcen.

Ein Hardware-Multiplizierer kann man sich als ein großes Feld aus mehreren Hundert XOR-Gattern vorstellen. Als extra-Bauelement ist der sehr Kompakt und hat damit eine geringe Durchlaufzeit. Diese Struktur aus Slices nachgebaut, verlangt nun mehrere hundert slices, deren LUT's zwar sehr schnell durchlaufen werden, aber zwischen den LUT fallen zusätzliche pico- bis nanosekunden an.

Ohne die blauen Blöcke im Anhang li.u. müsste man vielleicht jedes vierte von den grünen Blöcken verwenden um einen DSP-Block zu ersetzen. Und dieser Ersatz ist natürlich deutlich langsamer weil die Signal dort weitaus größere Strecken durchlaufen müssen.

Angehängte Dateien:
#7551347
Lesenswert?

Der H. schrieb:

Ich würde es mir nun mit den vorherigen Antworten so erklären, dass der DSP48 eine dezidierte Logik hat während eine reine Multiplikation auf dem FPGA mit den CLBs, also durch LUTs realisiert wird.

Der DSP48-Block kann eine ganze Menge, u.a. Multiplizieren. Also wenn du eine Mutliplikation durchführen musst und noch DSP48 frei sind, kannst du die Multiplikation darauf rechnen. Das verplempert keine LUTs die du für andere Dinge brauchst, und ist viel schneller als mit LUTs.

Im Grunde das gleiche wie mit Speicher im FPGA: Du kannst Speicherarrays aus Flipflops aufbauen, das ist aber nur sinnvoll bei kleinen Speichern. Oder du kannst die LUTs dafür verwenden, oder eben die großen Blockrams, die sind genau dafür gemacht.

Gast #7552613
Lesenswert?

Antti L. schrieb:

DSP48 ist schneller und nimmt weniger FPGA resourcen.

So kann man das nicht sage, denke ich. Durch die ausdrückliche Wahl des DSP-Elementes legt man sich auf diesen Block fest. Bei der einfachen Multiplikation bleibt es erst einmal offen, wie es gemacht wird. Der Synthesizer entscheidet dann, ob er ein DSP-Element nicht oder nicht.

Ich lasse immer alles in nativem VHDL beschreiben, statt einer Festlegung. Dann lässt sich der Code transferieren.

Oder gibt es irgendeinen Vorteil, ein DSP ausdrücklich einzufügen?

#7552810
Lesenswert?

Andi F. schrieb:

Oder gibt es irgendeinen Vorteil, ein DSP ausdrücklich einzufügen?

Nein, Inferenz ist immer die bessere Lösung, weil der Code leichter ztu simulieren und technologieunabhängig ist. Aber manchmal erkennen die Tools nicht, dass die Funktion in einen DSP48 gemapt werden kann, dann muss man die Instanz selbst erzeugen, oder man bekommt ein Kuchenblech mit LUTs geliefert.

#7603172
Lesenswert?

🐻 Bernie - Bär schrieb:

Diese sind aber schneller, als ein BLock-RAM, wie wir getestet haben!

Bei welcher Speichergröße? Und wieviel schneller? Welche FPGA? Kleine Speicher können als FF-Arrays durchaus schneller sein als Blockrams, wenn die Addresslogik und die Multiplexerkaskaden entsprechend klein ausfallen. Aber dass ein Speicher in der Größe eines Blockrams mit FFs schneller ist, scheint mir doch eher seltsam.

Gast #7603322
Lesenswert?

Vancouver schrieb:

dass ein Speicher in der Größe eines Blockrams mit FFs schneller ist, scheint mir doch eher seltsam.

Richtig, die Adressdecoder sind super langsam. Allerdings verteilen sich kleine RAMs mit deren Logik als FFs und LUTs so schön gleichmäßig in der Schaltung, dass kleine RAMs von z.B. nur 128 Speicheradressen sehr viel näher am Geschehen sind, wenn der FPGA voll ist. Deshalb ist das routing kurz und man bekommt die Daten schon im nächsten Takt. Bei langsamen FPGAs von 100MHz abwärts geht es auch mit größeren Speicherflächen und breiteren Multiplexern.

Persönliche Seite #7634758
Lesenswert?

Bernd G. schrieb:

Allerdings verteilen sich kleine RAMs mit deren Logik als FFs und LUTs so schön gleichmäßig in der Schaltung,

nur als sogenannte distributed RAMs. Die BRAMs liegen ja dort, wo sie liegen :-)

Vancouver schrieb:

Kleine Speicher können als FF-Arrays durchaus schneller sein als Blockrams,

die sind sogar ganz ausnahmslos schneller. Die angeblichen 450MHz die z.B. die BRAM in einem A7 bringen, verlieren sich schnell auf dem Weg zur Schaltung. Oft müssen fabric FFs nachgeschaltet werden, um überhaupt wieder die 200 zu packen.

Besonders kritisch sind Schaltungen die Resets brauchen, die tief in kaskadierte BRAMs gehen. Da sind FFs oft die bessere Alternative.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren