Transformada Rápida de Fourier
para FPGA
Aluno: Arthur Umbelino Alves Rolim(auar@cin.ufpe.br)
Orientador: Manoel Eusébio de Lima(mel@cin.ufpe.br)
Roteiro
• FFT
• FloPoCo
• Trabalho realizado
–
–
–
–
–
–
–
Test Bench
Complex Adder
Complex Multiplier
Butterfly
Butterfly (1,0)
Butterfly (0,-1)
FFT8
• Trabalho a ser realizado
Fast Fourier Transform(FFT)
• Maneira mais eficiente de calcular um DFT com
complexidade O(nlogn )
• Domínio do Tempo -> Domínio da Freqüência
• Uma família de algoritmos
–
–
–
–
–
Cooley-Tukey
Prime-factor
Bruun's
Rader's
Bluestein's
Fast Fourier Transform(FFT)
• Extensivamente utilizada em várias aplicações de DSP
–
–
–
–
–
–
Análise de espectro
Convolução de alta-velocidade (filtro linear)
Detecção e estimativa de sinais
Identificação de sistemas
Compressão de áudio
Síntese de modelo espectral de som
FFT
Radix-2 FFT
• Diagrama Borboleta
DIF(Decimation in Frequency)
outUP  inUP  inLOW
outLOW  w  (inUP  inLOW)
DIT(Decimation in Time)
outUP  inUP  w  inLOW
outLOW  inUP  w  inLOW
FloPoCo (Floating-Point Cores)
• Gerador de cores aritméticos em VHDL com opções de:
–
–
–
–
Frequência
Fabricante do FPGA( Altera ou Xilinx )
Pipeline
Uso ou não de blocos DSP
• Padrão IEEE e LNS (logarithm number system)
• Implementa todas as operações(+,*,/,sqr)
• Parametrizada( tamanho de expoente e mantissa
variáveis )
• Tratamento de exceções(+∞,-∞,NaN)
Trabalho realizado
•
•
•
•
•
•
Implementação dos algoritmos de DFT e FFT em C++
Construção do modelo de referência em SystemC
Testes na biblioteca FloPoCo
Construção dos blocos básicos da FFT no FPGA
Geração de test benchs
Construção da FFT
Test bench
Modelo de
Referência
C++
Saída
Comparador
Entrada
Relatório
Simulador
HDL
Saída
Complex Adder
a
c
+
real
z1  a  bi
z2  c  di
b
d
+
imag
z1  z2  (a  c)  (b  d )i
Relatório de Síntese Complex Adder
•32 bits
Logic Utilization
Used
Available Utilization
Number of Slice Registers
1008
28800
3%
Number of Slice LUTs
1314
28800
4%
Frequência
303.538MHz
•64 bits
Logic Utilization
Used
Available Utilization
Number of Slice Registers
2098
28800
7%
Number of Slice LUTs
2702
28800
9%
Frequência
304.095MHz
Complex Multiplier
a
c
x
+
b
d
real
z1  a  bi
x
z2  c  di
a
d
x
b
c
x
z1  z2  (ac  bd)  (ad  bc)i
+
imag
Relatório de Síntese Complex Multiplier
•32 bits
Logic Utilization
Used
Available
Utilization
Number of Slice Registers
1256
28800
4%
Number of Slice LUTs
2252
28800
7%
16
48
33%
Number of DSP48Es
Frequência
173.136MHz
•64 bits
Logic Utilization
Used
Available
Utilization
Number of Slice Registers
3202
28800
11%
Number of Slice LUTs
6854
28800
23%
36
48
75%
Number of DSP48Es
Frequência
125.653MHz
ButterFly
z 'UP  zUP  z LOW
z 'LOW  w  ( zUP  z LOW )
zUP
z LOW
Complex
Adder
Complex
Adder
z'UP
w
Complex
Mult
z'LOW
Relatório de Síntese Butterfly
•32 bits
Logic Utilization
Used
Number of Slice Registers
3648
28800
12%
Number of Slice LUTs
4952
28800
17%
16
48
33%
Number of DSP48Es
Available Utilization
Frequência
173.136MHz
•64 bits
Logic Utilization
Used
Number of Slice Registers
8159
28800
28%
Number of Slice LUTs
12652
28800
43%
36
48
75%
Number of DSP48Es
Available Utilization
Frequência
125.653MHz
ButterFly (1,0)
z 'UP  zUP  z LOW
w  1  0i
z 'LOW  w  ( zUP  z LOW )  ( zUP  z LOW )
zUP
z LOW
Complex
Adder
z'UP
Complex
Adder
z'LOW
Relatório de Síntese Butterfly (1,0)
•32 bits
Logic Utilization
Used
Available Utilization
Number of Slice Registers
2392
28800
8%
Number of Slice LUTs
2832
28800
9%
Frequência
303.538MHz
•64 bits
Logic Utilization
Used
Available Utilization
Number of Slice Registers
4957
28800
17%
Number of Slice LUTs
5836
28800
20%
Frequência
304.095MHz
ButterFly (0,-1)
z 'UP  zUP  z LOW
w  0  1i
z 'LOW  w  ( zUP  z LOW )  i  ( zUP  z LOW ) 
 i  (a  bi)  (b  ai)
zUP
z LOW
Complex
Adder
z'UP
Complex
Adder
Change
z'LOW
Relatório de Síntese Butterfly (0,-1)
•32 bits
Logic Utilization
Used
Available Utilization
Number of Slice Registers
2392
28800
8%
Number of Slice LUTs
2832
28800
9%
Frequência
303.538MHz
•64 bits
Logic Utilization
Used
Available Utilization
Number of Slice Registers
4957
28800
17%
Number of Slice LUTs
5837
28800
20%
Frequência
304.095MHz
FFT8
Relatório de Síntese FFT8 32 bits
•Normal
Logic Utilization
Used
Available
Utilization
Number of Slice Registers
43336
28800
150%
Number of Slice LUTs
59771
28800
207%
48
48
100%
Number of DSP48Es
Frequência
162.633MHz
•Otimizado
Logic Utilization
Used
Available
Utilization
Number of Slice Registers
30718
28800
106%
Number of Slice LUTs
36653
28800
127%
32
48
66%
Number of DSP48Es
Frequência
172.662MHz
Relatório de Síntese FFT8 64 bits
•Normal
Logic Utilization
Used
Available
Utilization
Number of Slice Registers
91014
28800
316%
Number of Slice LUTs
141447
28800
491%
Frequência
48
48
100%
126.276MHz
Logic Utilization
Used
Available
Utilization
Number of Slice Registers
65474
28800
227%
Number of Slice LUTs
89650
28800
311%
Frequência
48
48
100%
172.662MHz
Number of DSP48Es
•Otimizado
Number of DSP48Es
Quantidade de Blocos Aritméticos
Op. de ponto
flutuante
FFT-2
FFT-4
FFT-8
Somadores
6
24
72
Multiplicadores
4
12
48
Somadores Ot.
4
16
52
Multiplicadores Ot.
0
0
8
Trabalho a ser realizado
• Finalizar implementação de um case para validação
• Finalizar escrita da dissertação
Dúvidas
Download

Apresentacao FFT 2