Ein Kanal, mehrere Samples
- Aktualisiert2023-02-17
- 7 Minute(n) Lesezeit
Ein Kanal, mehrere Samples
Berechnet anhand eines FFT-Algorithmus die schnelle Fourier-Transformation (FFT) eines Eingangsdatenstroms, der mehrere Samples pro Periode enthält.
Mit diesem Knoten können Sie FPGA-I/O mit mehreren Samples pro Datentaktperiode verarbeiten. Dieser Knoten erreicht einen höheren Datendurchsatz, verbraucht jedoch wesentlich mehr FPGA-Ressourcen als der Knoten "FFT (Ein Kanal, ein Sample)".
Ein-/Ausgänge

Eingabe gültig
Boolescher Wert, der anzeigt, ob das nächste Datenelement zur Verarbeitung eingetroffen ist. Verbinden Sie den Ausgang Ausgabe gültig eines vorgelagerten Knotens mit diesem Eingang, um Daten von einem vorgelagerten Knoten an diesen Knoten zu übergeben.
| True | Das nächste Datenelement ist zur Verarbeitung eingetroffen. |
| False | Das nächste Datenelement ist noch nicht zur Verarbeitung eingetroffen. |

Für Ausgabe bereit
Boolescher Wert, der festlegt, ob nachgelagerte Knoten für einen neuen Ausgabewert von diesem Knoten bereit sind. Verwenden Sie einen Rückkopplungsknoten zum Verbinden des Ausgangs Für Eingabe bereit eines nachgelagerten Knotens mit diesem Eingang des aktuellen Knotens.
| True | Nachgelagerte Knoten sind bereit für einen neuen Ausgabewert von diesem Knoten. |
| False | Nachgelagerte Knoten sind nicht bereit für einen neuen Ausgabewert von diesem Knoten. |
Default value: True

Daten (Ausgang)
FFT-Ergebnisse des anliegenden Streams von Signalen.
Die maximale Wortlänge für jedes FFT-Ergebnis beträgt 32 Bit.
Anpassen der Wortlänge der FFT-Ergebnisse
Typischerweise ist die Wortlänge für jedes FFT-Ergebnis log2 (N)+1 Bits größer als die entsprechenden Eingangsdaten, wobei N die FFT-Größe ist. Sie können die Wortlänge der FFT-Ergebnisse anpassen, indem Sie auf der Registerkarte Objekt auf die Schaltfläche Konfiguration komplexer Festkommawerte neben dem Element Genauigkeit im Abschnitt Anschlüsse klicken.
Das Verringern der Ausgabewortlänge spart FPGA-Ressourcen, reduziert aber die Genauigkeit. Es wird empfohlen, dass Sie eine bestimmte Konfiguration simulieren, um sicherzustellen, dass die erreichte Genauigkeit den Anforderungen Ihrer Anwendung entspricht.

Datenindex
Indizes der von diesem Knoten ausgegebenen FFT-Intervalle.

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 Eingang Eingabe gültig eines nachgelagerten Knotens, um Daten vom Knoten an den nachgelagerten Knoten zu übertragen.
| True | Nachgelagerte Knoten können das Ergebnis verwenden, das dieser Knoten berechnet. |
| False | Dieser Knoten gibt einen undefinierten Wert aus, der für nachgelagerte Knoten unbrauchbar ist. Hinweis Die ausgegebenen undefinierten Werte können im Simulationsmodus und auf der Hardware unterschiedlich sein. |

Für Eingabe bereit
Ein boolescher Wert, der bestimmt, ob dieser Knoten bereit ist für das Annehmen neuer Eingangsdaten. Verwenden Sie einen Rückkopplungsknoten um diesen Eingang mit dem Anschluss Für Ausgabe bereit eines vorgelagerten Knotens zu verbinden.
| True | Dieser Knoten ist bereit, neue Eingangsdaten anzunehmen. |
| False | Dieser Knoten kann keine neuen Eingangsdaten annehmen. |

Daten (Eingang)
Anliegender Stream von Signalen, für deren FFT berechnet werden soll.
- Vorzeichenbehafteter 8-Bit-Integer
- Vorzeichenloser 8-Bit-Integer
- Vorzeichenbehafteter 16-Bit-Integer
- Vorzeichenloser 16-Bit-Integer
- Vorzeichenbehafteter 32-Bit-Integer
- Festkommazahl
- Komplexe Festkommazahl
Die Größe des Arrays muss 2, 4, 8 oder 16 haben. Die maximale Wortlänge jedes Array-Elements beträgt 32 Bit.

Zurücksetzen
Boolescher Wert, mit dem festgelegt wird, ob der interne Zustand des Knotens zurückgesetzt werden soll.
| True | Setzt den internen Zustand des Knotens zurück. |
| False | Setzt den internen Zustand des Knotens nicht zurück. |
Default value: False
Funktionsweise mit Handshaking-Ein- und -Ausgängen
Die Handshaking-Ein- und -Ausgänge an diesem Knoten funktionieren während den Perioden folgendermaßen, wobei Zurücksetzen auf "True" gesetzt ist:
- Eingabe gültig wird ignoriert.
- Für Ausgabe bereit wird ignoriert.
- Ausgabe gültig ist "False".
- Für Eingabe bereit ist "False". Damit werden Fälle verarbeitet, in denen Zurücksetzen für mehr als eine Periode auf "True" gesetzt ist. Dieser Knoten ist bereit für Eingaben, nachdem das Zurücksetzen abgeschlossen ist und Zurücksetzen "False" ausgibt.
Diagramm zur Zeitsteuerung
Dieser Knotens arbeitet mit einem Durchsatz von einer Periode pro Eingabe. Der Knoten nimmt also in jeder Taktperiode neue Daten an. Im folgenden Diagramm wird das Timing des Knotens veranschaulicht.
Vermeiden von Datenverlust während der FFT-Analyse
Während der FFT-Berechnung nimmt dieser Knoten weder Werte an, noch werden Werte ausgegeben. Wenn das System oder ein anderer Knoten während dieser Zeit Daten an diesen Knoten sendet, werden diese Daten verworfen. Dies kann passieren, wenn dieser Knoten Daten als Teil eines komplizierten oder nicht einheitlichen Musters empfängt.
Um Datenverlust zu vermeiden, erstellen Sie einen FIFO, in dem die Daten gespeichert werden, bis dieser Knoten erneut Werte akzeptiert. Vergewissern Sie sich, dass der von Ihnen erstellte FIFO groß genug ist, um alle Datenpunkte aufzunehmen, die während der FFT-Berechnung eingehen. Um die Größe des zu erstellenden FIFO grob zu schätzen, teilen Sie die Latenz dieses Knotens durch den durchschnittlichen Systemdurchsatz. Die Wartezeit kann im Abschnitt Ausführungsgeschwindigkeit auf der Registerkarte Objekt des Konfigurationsfensters eingestellt werden.
Ein-/Ausgabe-Indizierungsschema
Im Abschnitt Schnittstelle der Registerkarte Objekt des Konfigurationsbereichs kann für den Knoten zwischen den Indizierungsschemata Eingabe kontinuierlich/Ausgabe im M-Intervall und Eingabe im M-Intervall/Ausgabe kontinuierlich ausgewählt werden.
Die folgende Tabelle vergleicht und veranschaulicht die Indizierungsschemata anhand eines Eingangsdatenstroms mit 4 Samples pro Eingabe und einer FFT-Größe von 4096 (was bedeutet, dass M gleich 1024 ist).
| Indizierungsschema | Beschreibung | Beispiel | Kommentar |
|---|---|---|---|
| Eingabe kontinuierlich/Ausgabe im M-Intervall | Die Indizes im FFT-Rahmen sind für die Eingangsdaten kontinuierlich und umfassen für die Ausgangsdaten Intervalle der Größe M, wobei M = FFT-Größe/Größe von Daten (Eingang) ist. |
|
Die eingehenden Samples in der ersten gültigen Eingangsperiode werden nach dem Schema 0, 1, 2, 3 nummeriert, die Samples der zweiten gültigen Eingangsperiode nach dem Schema 4, 5, 6, 7, usw. Bei ausgehenden Samples lauten die Indizes in der ersten gültigen Ausgangsperiode 0, 1024, 2048, 3072, in der zweiten gültigen Ausgangsperiode 1, 1025, 2049, 3073, usw. |
| Eingabe im M-Intervall/Ausgabe kontinuierlich | Die Indizes im FFT-Rahmen werden für die Eingangsdaten in Intervallen der Größe M zugewiesen, wobei M = FFT-Größe/Größe von Daten (Eingang) ist, und sind für Ausgangsdaten kontinuierlich. |
|
Die Indizes der Ein- und Ausgangsdaten sind gegenüber dem Indizierungsschema Eingabe kontinuierlich/Ausgabe im M-Intervall vertauscht. |
Wenn die Datenquelle eine FPGA-I/O mit mehreren Samples pro Periode ist, wählen Sie das Indizierungsschema Eingabe kontinuierlich/Ausgabe im M-Intervall aus. Wenn die Datenquelle der Ausgang eines anderen Knotens des Typs "FFT (Ein Kanal, mehrere Samples)" ist, z. B. wenn die Umkehrung der FFT-Ergebnisse eines anderen Knotens des Typs "FFT (Ein Kanal, mehrere Samples)" berechnet wird, muss das Eingabe-Indizierungsschema dieses Knotens mit dem Ausgabe-Indizierungsschema des anderen Knotens übereinstimmen.
Optimierung für Genauigkeit, Ressourcenverbrauch oder Timing
Sie können diesen Knoten im Abschnitt Optimierung auf der Registerkarte Objekt zur Optimierung von Genauigkeit, minimalem Ressourcenverbrauch oder Ausführungsgeschwindigkeit konfigurieren.
Im Abschnitt Ziel können Sie diesen Knoten so konfigurieren, dass beim Festlegen der Wortlängen der Ausgangsdaten entweder die Genauigkeit der Ausgangsdaten optimiert oder der Ressourcenverbrauch minimiert wird. In der folgenden Tabelle finden Sie Richtlinien dafür, welche Option für Ihren spezifischen Anwendungsfall zu verwenden ist.
| Anwendungszweck | Empfohlene Option | Funktionsweise des Knotens | Ergebnis |
|---|---|---|---|
| Sie möchten die Genauigkeit der letzten Bits der Ausgabedaten auf Kosten eines erhöhten FPGA-Ressourcenverbrauchs optimieren. | Genauigkeit | Dieser Knoten erweitert die Wortlänge der Eingangsdaten auf die Ausgangswortlänge durch Auffüllen mit Nullen. Diese Wortlänge wird von allen internen komplexen Multiplikationsoperationen verwendet. | Verglichen mit der Option Ressourcenverbrauch behalten die komplexen Multiplizierer mehr Bits bei und die erhöhten log2(N)+1 Bits in den Ausgangsdaten sind genauer. |
Wenn beide Anwendungsfälle zutreffen:
|
Ressourcenverbrauch | Dieser Knoten erhöht die Wortlänge stufenweise von Eingabe zur Ausgabe. Daher erhöht sich die Bitbreite von komplexen Multiplizierern ebenfalls stufenweise. | Verglichen mit der Option Genauigkeit sind die Bitbreiten der komplexen Multiplizierer und internen Register kleiner, wodurch FPGA-Ressourcen gespart werden und möglicherweise eine höhere FPGA-Taktrate während der Kompilierung erzielt wird. |
Wenn dieser Knoten nach der Konfiguration des Optimierungsziels immer noch nicht Ihre Anforderungen an Genauigkeit, Ressourcenverbrauch oder Ausführungsgeschwindigkeit erfüllt, können Sie die Werte von Drehfaktor-Wortlänge und Anzahl von Pipelining-Stufen in Butterfly anpassen, um die Ausführungsgeschwindigkeit dieses Knotens zu verbessern.