• Nenhum resultado encontrado

O porte de um algoritmo muito importante em várias áreas de pesquisa e na indústria foi projetado e desenvolvido neste trabalho. O algoritmo da FFT foi adaptado para ser executado num FPGA. Esse passo foi bastante importante, pois com as características que os FPGAs possuem, um grande avanço no volume de dados processados pode ser atingido devido ao alto poder de paralelismo intrínseco a estes dispositivos.

Com a metodologia de desenvolvimento adotada durante a execução do trabalho, podemos partir de um modelo muito testado e difundido, a FFTW, passando por muitas fases e testes de equivalência, para uma implementação em FPGA equivalente, porém, com uma implementação totalmente diferente.

Com o auxílio do gerador de código foi possível implementar as operações da

FFT com ponto flutuante com precisão simples e dupla, o que garante uma melhor

precisão aos resultados computados. Com estes dois níveis de precisão, cresce muito o número de aplicações que podem fazer uso deste projeto, principalmente as cientificas.

Entretanto, mesmo com todas as otimizações que levaram a uma grande redução da área ocupada pelo core principal e um aumento da freqüência final, uma FFT com oito dados complexos de entrada não pode ser baixado no FPGA que dispomos no projeto, pois, infelizmente, sua área disponível é bastante reduzida em relação a outras opções do mercado. Este problema impediu a implementação deste core, junto com toda a infra-estrutura necessária para alimentação de seus dados, controlador de memória e interface PCI da plataforma alvo.

Este trabalho ainda pode ser complementado com o uso mais profundo do gerador de cores aritméticos. Cada unidade butterfly pode ser desenvolvida de acordo com o twiddle factor que ela possui como parâmetro de entrada, otimizando ainda mais a área utilizada e a quantidade de blocos DSPs utilizados. Também com o gerador, pode ser implementadas sem muitas dificuldades várias operações aritméticas num único core, isso pode levar para os FPGAs o núcleo de várias operações aritméticas de ponto flutuante, assim, acelerando-as.

O core ainda pode ser aproveitado para fazer parte de uma biblioteca de cálculos científicos que precisam ser acelerados. Utilizando-se de um plataforma que permita a

transferência de dados entre aplicação e FPGAs de maneira transparente ao desenvolvido, ela pode ser facilmente incorporada e acelerar as aplicações realizando processamento paralelo.

Bibliografia

[1] XCell Journal. Second Quarter 2006.

[2] Altera White Paper. Designing and Using FPGAs for Double-Precision Floating- Point Math. Agosto 2007.

[3] Yong Dou, S. Vassiliadis, G. K. Kuzmanov, G. N. Gaydadjiev, 64-bit Floating- Point FPGA Matrix Multiplication - FPGA’05, February 20–22, 2005, Monterey, California, USA. ACM 1-59593-029-9/05/0002.

[4] K. Scott Hemmert, Keith D. Underwood, An Analysis of the Double-Precision Floating-Point FFT on FPGAs - Sandia National Laboratories - Proceedings of the 13th Annual IEEE Symposium on Field-Programmable Custom Computing Machines (FCCM’05).

[5] IEEE Standard for Binary Floating-Point Arithmetic (ANSI/IEEE Std 754-1985). [6] Shengmei Mou, Xiaodong Yang, Design of a High-speed FPGA-based 32-bit

Floating-point FFT Processor - School of Computer Science, National University of Defense Technology - Eighth ACIS International Conference on Software Engineering, Artificial Intelligence, Networking, and Parallel/Distributed Computing. 0-7695-2909-7/07 2007 IEEE.

[7] Hilal Kaptan, Ali Tangel, Suhap Sahin, FPGA Implementation of FFT Algorithms Using Floating Points Numbers - Kocaeli University, College of Engineering, Department of Electronics and Communication Engineering and Department of Computer Engineering - Eleco'2007 5th International Conference On Electrical And Electronics Engineering Papers.

[8] A VHDL Library of Parametrisable Floating-Point and LNS Operators for FPGA. Disponível em: <http://www.ens-lyon.fr/LIP/Arenaire/Ware/FPLibrary/> Acesso em: 08 mar. 2009.

[9] Jean Baptiste Joseph Fourier. Disponível em <http://www-history.mcs.st- andrews.ac.uk/Biographies/Fourier.html> Acesso em maio 2009.

[10] B. P. Lathi, Linear Systems and Signals. Oxford University Press, segunda edição, 2004.

[11] Paul Embree, Damon Danieli. C++ Algorithms for Digital Signal Processing. Prentice Hall PTR, segunda edição, 1998.

[12] Eleanor Chu, Discrete And Continuous Fourier Transforms - Analysis, Applications And Fast Algorithms. Crc Press, 2008

[13] Fast Fourier Transform. Disponível em <http://cnx.org/content/col10550/> Acesso em maio 2009.

[14] FloPoCo. Disponível em < http://www.ens-

lyon.fr/LIP/Arenaire/Ware/FloPoCo/> Acesso em maio 2009.

[15] Xilinx, Virtex II Plataform FPGAs: Introduction and Overview, Datasheet DS031-1 (v 1.9), Setembro 26, 2002.

[16] Zhi Guo, Walid Najjar, Frank Vahid, Kees Vissers, A Quantitative Analysis of the Speedup Factors of FPGAs over Processors - FPGA ’04, February 22-24, 2004, Monterey, California, USA. ACM 1-58113-829-6/04/0002

[17] M. L. Overton, Numerical Computing with IEEE Floating Point Arithmetic, SIAM, Philadelphia, 2001.

[18] Transformada de Fourier. Disponível em

<http://www.if.ufrgs.br/ast/med/imagens/node41.htm> Acesso em junho 2009. [19] Cooley, James W., and John W. Tukey, An algorithm for the machine

calculation of complex Fourier series. 1965, Math. Comput, 19: 297–301.

[20] The FFT Demystified. Disponível em <

http://www.engineeringproductivitytools.com/stuff/T0001/index.html> Acesso em junho 2009.

[21] Introduction to FPGA Technology. Disponível em

<http://www.techonline.com/learning/techpaper/193102057> Acesso em junho 2009.

[22] Xilinx. Disponível em <http://www.xilinx.com/> Acesso em junho 2009.

[23] Douglas Chang, Marek Sadowska, “Partitioning Sequential Circuits on Dynamically Reconfigurable FPGAs”, IEEE Transactions on Computer, vol. 48, no. 6, June 1999

[25] OpenCores.org. Disponível em <http://www.opencores.org/> Acesso em junho 2009.

[26] FFTW. Disponível em < http://www.fftw.org/ > Acesso em junho 2009.

[27] Matteo Frigo, Steven G. Johnson, “The Fastest Fourier Transform in the West”, (MIT-LCS-TR-728), setembro de 1997.

[28] Elementos de complexidade computacional. Disponível em < http://www.consiste.dimap.ufrn.br/~david/ENSEIGNEMENT/SUPPORT/013- complexidade.pdf > Acesso em julho 2009.

[29] O algoritmo de Karatsuba. Disponível em < http://www.mat.puc- rio.br/~nicolau/papers/mersenne/node25.html > Acesso em julho 2009.

[30] ALDEC. < http://www.aldec.com> Acesso em julho 2009.

[31] C. M. Rader, Discrete Fourier transforms when the number of data samples is prime, Proc. IEEE 56, 1107–1108 (1968).

[32] Leo I. Bluestein, A linear filtering approach to the computation of the discrete Fourier transform, Northeast Electronics Research and Engineering Meeting Record 10, 218-219 (1968).

[33] The Prime-factor Algorithm. < http://cnx.org/content/m12033/ > Acesso em julho 2009.

Documentos relacionados