Este exemplo descreve uma transformação fourier rápida de 32 K(FFT) usando o núcleo FFT Intel® FPGA propriedade intelectual (IP). O FFT é um algoritmo de transformação de Fourier (DFT) discreto que reduz o número de computação necessária de O(N2) para O(NlogN) por decomposição. A DFT de uma sequência x(n) é dada pela seguinte equação:
onde k = 0, 1, ... N-1 e N é o comprimento da transformação.
Neste exemplo de projeto, o comprimento da transformação, N, é 32768. Usando o método de dizimação no tempo (DIT), o projeto divide a sequência de entrada em amostras estranhas e até mesmo que se alimentam dos dois blocos FFT individuais de 16 K-point implementados em paralelo usando o núcleo FFT Intel FPGA IP. Os resultados do núcleo Intel FPGA IP FFT são recombinados e reordenados para obter a saída FFT final. Isso é mostrado na Figura 1. Semelhante ao núcleo de Intel FPGA IP FFT, o exemplo de design usa interfaces de entrada e saída compatíveis com a Atlantic.
Baixe os arquivos usados neste exemplo:
O uso deste design é regido e sujeito aos termos e condições do Contrato de licença de design de referência de hardware da Intel® Hardware .
Os arquivos no zip download incluem:
- fft_32K.v — arquivo de projeto de alto nível que implementa o FFT de 32 K-point
- parse_fft_input.v — reordena a amostra de entrada em amostras ainda e ímpares para se alimentar nos dois blocos FFT menores de 16 K-point
- fft_small.v — arquivo Wrapper gerado pelo arquivo FFT Intel FPGA IP. O núcleo é configurado para implementar o comprimento de transformação de 16K e usa a estrutura de fluxo de dados de E/S de transmissão.
- combine_fft.v — recombine a saída dos blocos FFT individuais de 16 K-point usando os fatores de twiddle apropriados
- fft_32K_streaming_tb.v — Testbench para simulação de RTL
- fft_32K_streaming_vo_msim.tcl — script TCL para automatizar o processo de simulação de RTL no software ModelSim-Intel FPGA
- fft_32K_tb.m — modelo MATLAB para verificar os resultados da simulação de RTL
A Figura 1 mostra o diagrama de alto nível do exemplo de projeto FFT de 32 K.
A Tabela 1 lista as portas e fornece uma descrição para cada uma.
Tabela 1. Lista de portas FFT de 32 K-Point
Descrição do tipo do | nome da | porta |
---|---|---|
data_real_in[15:0], data_imag_in[15:0] |
Entrada | Entradas de dados complexas de 16 bits |
Clk | Entrada | Clock do sistema FFT |
Redefinir | Entrada | Reinicialização alta ativa |
master_sink_dav | Entrada | Sinal de dados de pia mestre disponível: afirmado pela fonte de dados escravo FFT para indicar a disponibilidade de amostra de dados para entrada na função FFT |
master_sink_ena | Saída | Sinal de habilitação de gravação de pia mestre: afirmado pela função FFT para indicar que os dados podem ser escritos na função |
master_sink_sop | Entrada | Início de entrada do pacote: indica para a função FFT o início de um bloco de dados de entrada. Deve ser afirmado para um ciclo de clock síncrono com a primeira amostra de dados de entrada |
fft_real_out[15:0], fft_imag_out[15:0] | Saída | Saídas de dados complexas de 16 bits |
exponent_out[5:0] | Saída | Expoente de bloco assinado: contas para escalonamento de valores de sinal interno durante a computação FFT |
master_source_dav |
Entrada | Afirmado pelo dissipador de escravos na saída da função FFT para indicar que ele pode aceitar um bloco de amostras de saída |
master_source_ena | Saída | Habilitar a fonte principal: afirmada pela função FFT quando os dados estão disponíveis para serem produzidos pelo FFT |
master_source_sop | Saída | Início da saída do pacote: afirmado na primeira amostra de saída de cada bloco |
master_source_eop | Saída | Final de saída do pacote: afirmada na última amostra de saída de cada bloco |
Links relacionados
Para obter mais informações sobre recursos relacionados usados neste exemplo de projeto em seu projeto, acesse: