Multiplizieren (hoher Durchsatz)
- Aktualisiert2023-02-17
- 5 Minute(n) Lesezeit
Multiplizieren (hoher Durchsatz)
Berechnet das Produkt zweier Werte.
Zum Aktivieren von Handshaking wählen Sie 4-Draht auf der Registerkarte Objekt aus.
Ein-/Ausgänge

x
Multiplikand
Der Eingang arbeitet mit folgenden Datentypen:
- Festkommazahl
- Komplexe Festkommazahlen
- 1D-Array aus Festkommazahlen
- 1D-Array aus komplexen Festkommazahlen

y
Multiplikator.
Der Eingang arbeitet mit folgenden Datentypen:
- Festkommazahl
- Komplexe Festkommazahlen
- 1D-Array aus Festkommazahlen
- 1D-Array aus komplexen Festkommazahlen

Eingabe gültig
Boolescher Wert, mit dem festgelegt wird, ob der nächste Datenpunkt gültig ist und verarbeitet werden kann.
Verbinden Sie Ausgabe gültig eines vorgelagerten Knotens mit diesem Eingang, um Daten von dem vorgelagerten Knoten an diesen Knoten zu übertragen.
Dieser Eingang ist nur verfügbar, wenn Sie auf der Registerkarte Objekt die Option 4-Draht aktivieren.
| True | Der Datenpunkt ist gültig und kann verarbeitet werden. |
| False | Der Datenpunkt ist nicht gültig. |

Für Ausgabe bereit
Boolescher Wert, der angibt, ob nachgelagerte Knoten für einen neuen Ausgabewert von diesem Knoten bereit sind.
Verwenden Sie einen Rückkopplungsknoten zum Verbinden des Anschlusses Für Eingabe bereit eines nachgelagerten Knotens mit diesem Eingang des aktuellen Knotens. Wenn dieser Eingang während einer Ausführungsperiode "False" ist, gibt Ausgabe gültig für diese Periode "False" aus.
Dieser Eingang ist nur verfügbar, wenn Sie auf der Registerkarte Objekt die Option 4-Draht aktivieren.
| True | Der nachgelagerte Knoten ist bereit für den nächsten Datenpunkt. |
| False | Der nachgelagerte Knoten ist nicht bereit für den nächsten Datenpunkt. |
Default value: True

Operationsüberlauf
Boolescher Wert, der anzeigt, ob der theoretische berechnete Wert den gültigen Bereich des Ausgabedatentyps überschreitet.
| True | Der theoretische berechnete Wert überschreitet den gültigen Bereich des Ausgabedatentyps. |
| False | Der theoretische berechnete Wert liegt im gültigen Bereich des Ausgabedatentyps. |
Dieser Ausgang kann einen booleschen Wert oder ein 1D-Array aus booleschen Werten ausgeben.

x*y
Produkt von x und y.
Dieser Ausgang kann einen der folgenden Datentypen ausgeben:
- Festkommazahl
- Komplexe Festkommazahlen
- 1D-Array aus Festkommazahlen
- 1D-Array aus komplexen Festkommazahlen
Wenn x oder y eine komplexen Festkommazahl ist, ist x*y eine komplexe Festkommazahl.

Ausgabe gültig
Boolescher Wert, der angibt, ob dieser Knoten ein Ergebnis berechnet hat, das von nachgelagerten Knoten verwendet werden kann.
Verbinden Sie diesen Ausgang mit dem Anschluss Eingabe gültig eines nachgelagerten Knotens, um Daten vom Knoten an den nachgelagerten Knoten zu übertragen.
Dieser Ausgang ist nur verfügbar, wenn Sie auf der Registerkarte Objekt das Feld 4-Draht aktivieren.
| True | Der Knoten hat ein Ergebnis berechnet, das von nachgelagerten Knoten verwendet werden kann. |
| False | Dieser Knoten hat kein Ergebnis berechnet, das von nachgelagerten Knoten verwendet werden kann, und der Knoten gibt einen undefinierten Wert aus. Hinweis Die ausgegebenen undefinierten Werte können je nach Arbeitsweise des Knotens (im Simulationsmodus oder mit Hardware) variieren. |

Für Eingabe bereit
Ein boolescher Wert, der anzeigt, ob dieser Knoten bereit ist für das Annehmen neuer Eingangsdaten.
Verwenden Sie einen Rückkopplungsknoten, um diesen Ausgang mit dem Anschluss Für Ausgabe bereit eines vorgelagerten Knotens zu verbinden.
Dieser Ausgang ist nur verfügbar, wenn Sie auf der Registerkarte Objekt das Feld 4-Draht aktivieren.
| True | Der Knoten ist bereit, neue Eingangsdaten anzunehmen. |
| False | Der Knoten kann keine neuen Eingangsdaten annehmen. |
Funktionsweise des Knotens, wenn x und y Arrays sind
Wenn x und y Arrays sind, werden Berechnungen an den zwei Arrays elementweise durchgeführt. Wenn die beiden Arrays unterschiedlich groß sind, führt dieser Knoten die Berechnung an den ersten n Elementen durch, wobei n die Anzahl der Elemente des kleineren Arrays ist. Wenn ein Eingang ein Array und der andere Eingang ein Skalar ist, wird die Berechnung an jedem Element des Arrays mit dem Skalar durchgeführt.
Wann verwirft dieser Knoten Daten?
Wenn Für Eingabe bereit während einer Taktperiode "False" ausgibt, verwirft dieser Knoten in der nachfolgenden Taktperiode die von anderen Knoten gesendeten Daten. Das gilt auch, wenn Eingabe gültig bei der nachfolgenden Taktperiode auf "True" wechselt.
Erzielen der gewünschten Taktrate, wenn x und y komplexe Festkommazahlen sind
Wenn x und y komplexe Fließkommazahlen sind, kann dies zu einer verringerten Taktrate während der Kompilierung führen. Wenn Sie die gewünschte Taktrate nicht mit diesem Knoten erzielen können, gehen Sie nach folgenden Schritten vor:
- Aktivieren Sie Handshaking durch Auswahl von 4-Draht auf der Registerkarte Objekt.
- Erhöhen Sie die Anzahl der Pipeline-Stufen auf der Registerkarte Objekt.
Wenn Sie die gewünschte Ausführungsgeschwindigkeit immer noch nicht erzielen können, kann der Funktionsumfang evtl. mit Hilfe der Xilinx-IP-Knoten umgesetzt werden.
Verbessern des Timings durch Pipelining
Sie können die Ausführungsgeschwindigkeit dieses Knotens auf einem FPGA-Zielsystem verbessern, indem Sie die Anzahl der Pipeline-Stufen anpassen. Der Funktionsumfang des Pipelinings von Multiplizierern ist äquivalent zur Multiplikation ohne Pipelining kaskadiert um eine bestimmte Anzahl von Registern. Die Anzahl der Register entspricht der Anzahl der Pipeline-Stufen.
Verbessern der maximalen Taktrate durch Pipelining
Im Allgemeinen wird durch eine größere Anzahl von Pipeline-Stufen auch die maximal mögliche Taktrate für diesen Knoten erhöht. Die tatsächliche Rate kann jedoch von mehreren Umständen abhängen, wie zum Beispiel:
- dem verwendeten FPGA-Zielsystem
- der Größe des Faktors
- den Rundungs- und Überlaufbedingungen, die Sie in der Festkommakonfiguration für den Knoten festgelegt haben
- dem Modus, der für Ressource im Abschnitt Pipelining-Optionen auf der Registerkarte Objekt ausgewählt wurde
- anderem FPGA-Programmcode, der zusätzlich zum Multiplizierer existiert