domingo, 2 de enero de 2011

Bloque FFT

La FFT (Fast Fourier Transform, Transformada rápida de Fourier) es un algoritmo de alta eficiencia para el cálculo de Transformada de Fourier de tiempo Discreto DFT. Es de alta eficiencia porque, como se expuso en el capítulo 1, en la sección 1.7, la FFT logra disminuir el número de operaciones necesarias con relación al a DFT de N2 a Nlog2N, siendo N el número de muestras de la Transformada o tamaño de la transformada.
Este bloque de FFT toma N número de muestras, con 14 bits de longitud por muestra, de acuerdo a lo que se obtiene del bloque ADC, y en la salida entrega dos vectores en complemento a dos, uno para la componente real y otro para la componente imaginaria, ambos de tamaño bxk=bxn+log2N+1, para una implementación de la FFT sin escalamiento[1], donde bxn es la longitud de cada muestra y N como ya se ha dicho, es el tamaño de la transformada. En este caso, como el ADC entrega 14 bits por muestra, bxn = 14, así que, por ejemplo, para una FFT de N= 512 tendremos que, el tamaño de las salidas, tanto la parte real como la parte imaginaria, será de 24bits.
El tamaño de la transformada no se define en esta etapa del diseño del prototipo debido a que es necesario realizar pruebas con los diferentes tamaños para determinar cuál es el más apropiado, que tenga el mayor rendimiento y un eficiente uso de recursos, ya que, en una implementación de este algoritmo de FFT se utilizan gran cantidad de recursos del dispositivo programable, en especial se utilizan muchos bloques multiplicadores y acumuladores, así que, si no se consideran los demás componentes de la implementación, como memorias, bloques de operaciones y los recursos utilizados en tiempo de ejecución, el sistema podría tener un mal desempeño, comportamiento errático (bloqueos, salidas inconsistentes, etc.), no podría funcionar al momento de procesar señales o  simplemente no sería sintetizado a componente hardware.


[1] en una implementación de un algoritmo de FFT, el escalamiento consiste en fijar las salidas en un tamaño igual al de la entrada y dividir estas salidas por un vector de escalamiento cuyo máximo valor  se calcula con 2log2N para evitar que las salidas excedan el tamaño fijado. Tiene múltiples inconvenientes, por ejemplo problemas de desbordamiento y menor exactitud que otros tipos de implementación de FFT.

No hay comentarios:

Publicar un comentario