Dieses Beispiel beschreibt eine 32K-Punkt schnelle Fourier-Transformation (FFT), die den FFT-Intel® FPGA IP-Kern verwendet. Der FFT ist ein separater Fourier-Transform-Algorithmus (DFT), der die Anzahl der benötigten Rechenvorgänge von O(N2) zu O(NlogN) durch Zersetzung reduziert. Die DFT einer Sequenz x(n) wird durch die folgende Gleichung gegeben:
wobei k = 0, 1, ... N-1 und N ist die Transformationslänge.
In diesem Designbeispiel beträgt die Transformationslänge N 32768. Mit der Dezimierung-in-Time-Methode (DIT) unterbricht das Design die Eingabesequenz in ungerade und sogar Proben, die in die beiden einzelnen 16K-Punkt-FFT-Blöcke einspeist, die parallel unter Verwendung des FFT-Intel FPGA IP kerns implementiert werden. Die Ergebnisse des FFT Intel FPGA IP kerns werden neu kombiniert und neu geordnet, um die endgültige FFT-Ausgabe zu erhalten. Dies wird in Abbildung 1 angezeigt. Das Designbeispiel ähnelt dem FFT-Intel FPGA IP kern und verwendet die konformen Input- und Output-Schnittstellen von "Pakt".
Laden Sie die in diesem Beispiel verwendeten Dateien herunter:
Die Verwendung dieses Designs unterliegt den Bedingungen der Intel® Hardware-Referenzdesignlizenzvereinbarung.
Zu den Dateien im zip-Download gehören:
- fft_32K.v – Top-Level-Designdatei zur Implementierung des 32K-Punkt-FFT
- parse_fft_input.v – Sortiert die Eingabeprobe in gerade und ungerade Proben um, um sie in die beiden kleineren 16K-Punkt-FFT-Blöcke einfließen zu können
- fft_small.v – Wrapper-Datei, die vom FFT-Intel FPGA IP generiert wird. Der Kern ist so konfiguriert, dass er die Transform-Länge von 16K implementiert, und er verwendet die Streaming-I/O-Datenflussstruktur.
- combine_fft.v – Kombiniert die Ausgabe der einzelnen 16K-Punkt-FFT-Blocks unter Verwendung der entsprechenden Twiddle-Faktoren neu
- fft_32K_streaming_tb.v – Testbench für RTL-Simulation
- fft_32K_streaming_vo_msim.tcl –TCL-Skript zur Automatisierung des RTL-Simulationsprozesses in der ModelSim- Intel FPGA-Software
- fft_32K_tb.m – MODELL VON "MODEL" zur Verifizierung der RTL-Simulationsergebnisse
Abbildung 1 zeigt das Top-Level-Diagramm des 32K-Punkt FFT-Designbeispiels.
Tabelle 1 listet die Ports auf und gibt eine Beschreibung für die einzelnen Ports.
Tabelle 1. 32K-Point FFT Port Listung
Beschreibung des Port-Namentyps | ||
---|---|---|
data_real_in[15:0], data_imag_in[15:0] |
Eingabe | Komplexe 16-Bit-Dateneingaben |
Clk | Eingabe | FFT-Systemuhr |
Zurücksetzen | Eingabe | Aktives High-Reset |
master_sink_dav | Eingabe | Verfügbares Master-Sink-Datensignal: Wird von der FFT-Slave-Datenquelle bestätigt, um die Verfügbarkeit von Datenproben für die Eingabe in die FFT-Funktion anzuzeigen |
master_sink_ena | Ausgabe | Aktivierungssignal für Master-Sink-Schreibzugriffe: Wird von der FFT-Funktion bestätigt, um anzuzeigen, dass Daten in die Funktion geschrieben werden können |
master_sink_sop | Eingabe | Eingabestart des Pakets: Zeigt der FFT-Funktion den Start eines Eingabedatenblocks an. Sollte für einen Taktzyklus synchron mit dem ersten Eingabedatenbeispiel eingefügt werden |
fft_real_out[15:0], fft_imag_out[15:0] | Ausgabe | Komplexe 16-Bit-Datenausgänge |
exponent_out[5:0] | Ausgabe | Exponent für unterzeichneten Block: Belegung der Skalierung interner Signalwerte während der FFT-Berechnung |
master_source_dav |
Eingabe | Vom Slave-Sink an der Ausgabe der FFT-Funktion bestätigt, um anzuzeigen, dass er einen Block von Ausgabeproben annehmen kann |
master_source_ena | Ausgabe | Master-Quelle aktiviert: Durch die FFT-Funktion bestätigt, wenn Daten zur Ausgabe durch das FFT verfügbar sind |
master_source_sop | Ausgabe | Ausgabestart des Pakets: Beim ersten Ausgabebeispiel jedes Blocks bestätigt |
master_source_eop | Ausgabe | Ausgabeende des Pakets: In der letzten Ausgabeprobe jedes Blocks bestätigt |
Weiterführende Links
Weitere Informationen zu verwandten Funktionen, die in diesem Designbeispiel in Ihrem Projekt verwendet werden, siehe: