Este ejemplo describe una transformación rápida de Fourier (FFT) de 32K con el núcleo FFT Intel® FPGA propiedad intelectual (IP). El FFT es un algoritmo discreto de transformación de Fourier (DFT) que reduce la cantidad de computación necesaria de O(N2) a O(NlogN) por la degradación. El DFT de una secuencia x(n) se da mediante la siguiente ecuación:
donde k = 0, 1, ... N-1 y N son la longitud de la transformación.
En este ejemplo de diseño, la extensión de transformación, N, es 32768. Utilizando el método de diezmación en tiempo (DIT), el diseño divide la secuencia de entrada en muestras extrañas e incluso que se alimentan en dos bloques FFT individuales de 16K punto implementados en paralelo utilizando el núcleo FFT Intel FPGA IP. Los resultados del núcleo de Intel FPGA IP FFT se recombinan y reordenan para obtener el resultado final de FFT. Esto se muestra en la Figura 1. Al igual que el núcleo de Intel FPGA IP FFT, en el ejemplo de diseño se utilizan interfaces de entrada y salida compatibles con La 10.
Descargue los archivos utilizados en este ejemplo:
El uso de este diseño se rige por los términos y condiciones del Contrato de licencia de diseño de referencia de hardware de Intel® .
Los archivos de la descarga zip incluyen lo siguiente:
- fft_32K.v: Archivo de diseño de nivel superior que implementa la FFT de 32K de puntos
- parse_fft_input.v: reordena la muestra de entrada en muestras pares e impares para alimentarlos en dos bloques FFT más pequeños de punto de 16 K
- fft_small.v: archivo contenedor generado por la Intel FPGA IP FFT. El núcleo está configurado para implementar la longitud de transformación de 16 K, y utiliza la estructura de flujo de datos de E/S de transmisión.
- combine_fft.v: Recombina la salida de los bloques FFT individuales de punto de 16K utilizando los factores de twita elote adecuados.
- fft_32K_streaming_tb.v: Testbench para simulación de RTL
- fft_32K_streaming_vo_msim.tcl: script de TCL para automatizar el proceso de simulación de RTL en el software ModelSim- Intel FPGA
- fft_32K_tb.m: modelo de MATLAB para verificar los resultados de la simulación RTL
La Figura 1 muestra el diagrama de nivel superior del ejemplo de diseño FFT de punto de 32K.
La Tabla 1 enumera los puertos y ofrece una descripción de cada uno.
Tabla 1. Listado de puertos FFT de puntos 32K
del tipo de | nombrede | puerto |
---|---|---|
data_real_in[15:0], data_imag_in[15:0] |
Entrada | Entradas de datos complejas de 16 bits |
Clk | Entrada | Reloj del sistema FFT |
Restablecer | Entrada | Reinicio alto activo |
master_sink_dav | Entrada | Señal de datos disponibles del sumidero maestro: Afirmado por la fuente de datos esclavo FFT para indicar la disponibilidad de la muestra de datos para la entrada a la función FFT |
master_sink_ena | Salida | Señal de habilitación de escritura del sumidero maestro: Afirmado por la función FFT para indicar que los datos se pueden escribir en la función |
master_sink_sop | Entrada | Inicio de entrada del paquete: Indica a la función FFT el inicio de un bloque de datos de entrada. Debe afirmarse para un ciclo de reloj sincronizado con la primera muestra de datos de entrada |
fft_real_out[15:0], fft_imag_out[15:0] | Salida | Salidas de datos complejas de 16 bits |
exponent_out[5:0] | Salida | Exponente de bloques firmados: Cuentas para la ampliación de valores de señal internos durante la computación de FFT |
master_source_dav |
Entrada | Afirmado por el sumidero esclavo en la salida de la función FFT para indicar que puede aceptar un bloque de muestras de salida |
master_source_ena | Salida | Habilitar fuente maestra: Afirmado por la función FFT cuando los datos están disponibles para ser salidas por el FFT |
master_source_sop | Salida | Inicio de salida del paquete: Afirmado en la primera muestra de salida de cada bloque |
master_source_eop | Salida | Final de salida del paquete: Afirmado en la última muestra de salida de cada bloque |
Enlaces relacionados
Para obtener más información sobre las características relacionadas que se utilizan en este ejemplo de diseño en su proyecto, vaya a: