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)".

1378

Ein-/Ausgänge

datatype_icon

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.
datatype_icon

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.
Hinweis Wenn dieser Eingang während einer Ausführungsperiode "False" ist, gibt der Ausgang Ausgabe gültig für diese Periode "False" aus.

Default value: True

datatype_icon

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.

datatype_icon

Datenindex

Indizes der von diesem Knoten ausgegebenen FFT-Intervalle.

datatype_icon

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.
datatype_icon

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.
Hinweis Wenn der Ausgang während einer Taktperiode "False" ausgibt, verwirft der Knoten in der nachfolgenden Taktperiode die von anderen Knoten gesendeten Daten. Der Knoten verwirft auch Daten, wenn Eingabe gültig bei der nachfolgenden Taktperiode auf "True" wechselt.
datatype_icon

Daten (Eingang)

Anliegender Stream von Signalen, für deren FFT berechnet werden soll.

Der Eingang arbeitet mit Arrays aus Elementen folgenden Datentyps:
  • 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.

datatype_icon

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.


1378

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.
1378

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.
1378

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:
  • Sie möchten den FPGA-Ressourcenverbrauch auf Kosten weniger genauer Ausgabedaten reduzieren.
  • Die Größe des Eingangs Daten (Eingang) ist 16 und die FFT-Größe ist 16384 oder höher.
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.