MXPA06006391A - Arquitectura y metodo de fft. - Google Patents

Arquitectura y metodo de fft.

Info

Publication number
MXPA06006391A
MXPA06006391A MXPA06006391A MXPA06006391A MXPA06006391A MX PA06006391 A MXPA06006391 A MX PA06006391A MX PA06006391 A MXPA06006391 A MX PA06006391A MX PA06006391 A MXPA06006391 A MX PA06006391A MX PA06006391 A MXPA06006391 A MX PA06006391A
Authority
MX
Mexico
Prior art keywords
fft
values
memory
partial
block
Prior art date
Application number
MXPA06006391A
Other languages
English (en)
Inventor
Chinnappa K Ganapathy
Original Assignee
Qualcomm Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Qualcomm Inc filed Critical Qualcomm Inc
Publication of MXPA06006391A publication Critical patent/MXPA06006391A/es

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L27/00Modulated-carrier systems
    • H04L27/26Systems using multi-frequency codes
    • H04L27/2601Multicarrier modulation systems
    • H04L27/2647Arrangements specific to the receiver only
    • H04L27/2649Demodulators
    • H04L27/265Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
    • H04L27/2651Modification of fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators for performance improvement

Abstract

Una implementacion y un metodo de hardware de transformacion de Fourier Rapida (FFT) proporciona procesamiento de FFT eficiente mientras que reduce al minimo el area de chip necesaria en un Circuito Integrado (CI). El hardware de FFT puede implementar una FFT de punto N, en donde N = rn es una funcion de una raiz (r). La implementacion de hardware incluye una memoria de muestras que tiene N/r filas, cada una que almacena r muestras. Una memoria de factor de giro puede almacenar k factores de giro por fila, en donde 0 < k < r representa el numero de multiplicadores de giro complejo disponibles. Un modulo de FFT le r filas desde al memoria, realiza una FFT compleja de punto r sobre las muestras, seguido por una multiplicacion de giro, y escribe los resultados en un banco de registro rxr. Los contenidos del banco de registro se escriben en orden transpuesto de regreso a la memoria de muestras. Esta operacion se repite N/r2 veces para cada etapa y luego se repite n- etapas para producir la FFT de punto N.

Description

ARQUITECTURA Y MÉTODO DE FFT CAMPO DE LA INVENCIÓN La exposición se relaciona con el campo de un procesamiento de señales. En particular, la exposición se relaciona con un aparato y con los métodos para implementar una Transformación de Fourier Rápida (FFT, por sus siglas en inglés) .
ANTECEDENTES DE LA INVENCIÓN La Transformación de Fourier se puede utilizar para mapear una señal de dominio de tiempo con su contraparte de dominio de frecuencia. Inversamente, una Transformación de Fourier Inversa se puede utilizar para mapear una señal de dominio de frecuencia a su contraparte de dominio de tiempo. Las transformaciones de Fourier son particularmente útiles para un análisis espectral de señales de dominio de tiempo. Adicionalmente, los sistemas de comunicaciones, tales como por ejemplo, aguellos que implementan una Multiplexión por División de Frecuencia Ortogonal (OFDM, por sus siglas en inglés) pueden utilizar las propiedades de las transformaciones de Fourier para generar múltiples símbolos de dominio de tiempo a partir de los tonos separados linealmente y recuperar las frecuencias de los símbolos.
Un sistema de datos muestreados puede implementar una Transformación de Fourier Discreta (DFT, por sus siglas en inglés) para permitir que un procesador realice la transformación sobre un número predeterminado de muestras. Sin embargo, la DFT es computacionalmente intensiva y requiere de una enorme cantidad de potencia de procesamiento para realizarse. El número de cálculos requerido para realizar una DFT de punto N está en el orden de N2, denotado 0(N2). En muchos sistemas, la cantidad de la potencia para procesamiento dedicada para realizar una DFT puede reducir la cantidad del procesamiento disponible para otras operaciones del sistema. Adicionalmente, los sistemas que se configuran para funcionar como sistemas de tiempo real pueden no tener suficiente potencia de procesamiento para realizar una DFT de la magnitud deseada dentro de un tiempo asignado para el cálculo. La Transformación de Fourier Rápida (FFT) es una implementación discreta de la Transformación de Fourier que permite que se realice una Transformaciones de Fourier en operaciones significativamente menores en comparación con la implementación de la DFT . Dependiendo de la implementación particular, el número de cálculos requeridos para realizar una FFT de raiz r está típicamente en el orden de Nxlogr(N), denotado como 0(Nlogr(N)). En el pasado, los sistemas que implementan una FFT pueden haber utilizado un procesador de usos múltiples o un Procesador de Señal Digital (DSP, por sus siglas en inglés) independiente para realizar la FFT. Sin embargo, los sistemas están incorporando cada vez más Circuitos Integrados de Aplicación Especifica (ASIC, por sus siglas en inglés) diseñados específicamente para implementar la mayoría de la funcionalidad requerida de un dispositivo. La funcionalidad del sistema de implementación dentro de un ASIC, reduce al minimo el conteo de chips y la lógica de cola requerida para entrelazar múltiples circuitos integrados . El conteo reducido de chips típicamente permite una menor zona de recepción física para dispositivos sin sacrificar ninguna funcionalidad. La cantidad de área dentro de un chip ASIC se limita, y los bloques funcionales que se implementan dentro de un ASIC se tienen que dimensionar, dar velocidad, y potencia optimizada para mejorar la funcionalidad del diseño ASIC total. La cantidad de recursos dedicados a la FFT se debe reducir al mínimo para limitar el porcentaje de recursos disponibles dedicados a la FFT. Se tienen que dedicar a la FFT recursos suficientes para asegurar que la transformación se pueda realizar con una velocidad suficiente para soportar las necesidades del sistema. Adicionalmente, la cantidad de potencia consumida por el módulo de FFT necesita reducirse al minimo para reducir al mínimo las necesidades de suministro de potencia y la dispersión de calor asociada. Por lo tanto, puede ser conveniente optimizar una arquitectura de FFT para implementación con un circuito integrado, tal como por ejemplo, un ASIC.
SUMARIO DE LA INVENCIÓN Una implementación y un método de hardware para FFT proporciona un procesamiento de FFT eficiente mientras que reduce al minimo el área de chip necesaria en un Circuito Integrado (IC, por sus siglas en inglés) . El hardware de FFT se puede utilizar para implementar una FFT de punto N en donde N = rn es una función de una raíz (r) . La implementación de hardware incluye una memoria de muestras que tiene N/r filas, cada una que almacena r muestras. Una memoria utilizada para almacenar factores de giro tienen k factores de giro por fila, en donde 0 < k < r representa el número de multiplicadores de giro complejo disponibles. Un módulo de FFT, lee r filas desde la memoria (con la dirección de filas que es una función de la etapa de la FFT) , realiza una FFT compleja de punto r en el lugar sobre las muestras de cada fila seguido por una multiplicación de giro (excepto para la última etapa) y describe los resultados en una memoria de matriz dimensionada rxr (banco de registros) . Los contenidos de la memoria de la matriz dimensionada rxr se escriben, en orden transpuesto u opcionalmente sin transposición, de regreso a la memoria de muestras. Esta operación se repite N/r2 veces para cada etapa y luego se repite para n-etapas para producir la FFT de punto N. En un aspecto, se expone un método para determinar un punto rn, una raíz r, una FFT. El método incluye escribir las muestras que serán transformadas en una memoria que tenga r muestras por fila, leer las r muestras desde la memoria, determinar las FFT parciales r de la raiz r para generar los valores de FFT parciales r2, aplicar factores de giro a los valores de la FFT parcial r2 para generar valores FFT parciales ponderados r2, escribir los valores FFT parciales ponderados r2 a un bloque de registro, transponer los valores FFT parciales ponderados r2 en el bloque de registros para generar valores transpuestos, escribir los valores transpuestos a la memoria, y determinar los valores de la FFT provenientes de los contenidos de la memoria. En otro aspecto, se expone un método para determinar un punto r , la raíz r, la FFT. El método incluye escribir las muestras que serán transformadas en una memoria que tiene r muestras por fila, inicializar un valor de etapa, inicializar un valor de bloque, procesar una etapa de la FFT, repetir el procesamiento de la etapa de FFT n veces, y determinar los valores FFT a partir de los contenidos de la memoria. El procesamiento de la etapa de FFT incluye a) determinar un número de bloques con base en el valor de la etapa, b) recuperar r filas de la memoria, c) determinar las FFT parciales r de raíz r para generar los valores de la FFT parcial r2, d) aplicar factores de giro a los valores de la FFT parciales r2 para generar los valores de la FFT parciales ponderados r2, e) "transponer los valores de la FFT parciales ponderados r2 en el bloque de registro para generar los valores transpuestos, f) escribir los valores transpuestos a la memoria, g) repetir los pasos b) hasta f) con base en los valores de bloque y etapa, y aumentar el valor de etapa. Todavía en otro aspecto, se proporciona un método para determinar un punto rn raíz r, FFT. El método incluye describir muestras que serán transformadas en una memoria que tiene r muestras por fila, a) inicializar un contador de etapas, b) inicializar un contador de bloques y un contador de salida de FFT parcial, c) recuperar r filas de la memoria con base en la etapa, bloque y valores parciales del contador de FFT, d) determinar las FFT parciales r de raíz de r para generar valores de FFT parciales r2, e) aplicar factores de giro a los valores- de FFT parciales de r2 para generar valores de FFT parciales ponderados de r2, f) escribir los valores de FFT parciales ponderados r2 a un bloque de registros, g) transponer los valores FFT parciales ponderados r2 en el bloque de registro para generar los valores transpuestos, i) escribir los valores transpuestos a la memoria, j) actualizar el contador de FFT parcial y el contador de bloques, k) repetir los pasos c) hasta j ) con base en el valor del contador de bloques y el contador de FFT parcial, 1) actualizar el valor del contador de etapas, m) repetir los pasos b) hasta k) con base en el valor del contador de etapas, y determinar los valores de FFT a partir de los contenidos de la memoria. En otro aspecto, se expone un punto x11, una raíz r, una FFT. El aparato incluye una memoria configurada para almacenar tn muestras con r muestras por fila de la memoria, un motor de FFT configurado para realizar r FFT parcial de punto r sobre las muestras de r filas de la memoria, un banco de registros que tenga registros r2 configurados como filas r de columnas r, y configurado para recibir valores de salida provenientes del motor FFT, y un módulo de transposición configurado para transponer los valores en el banco de registros y escribir los valores transpuestos a las filas r de la memoria operada por el motor FFT.
BREVE DESCRIPCIÓN DE LOS DIBUJOS Las características, objetivos, y ventajas de las modalidades de la exposición se harán más evidentes a partir de la descripción detallada establecida más adelante cuando se tome en conjunto con los dibujos en los cuales elementos similares portan números de referencia similares. La Figura 1 es una gráfica de flujo de una FFT de raíz 2 de 8 puntos. La Figura 2 es un diagrama de bloques funcional de una modalidad de un módulo de FFT. Las Figura 3A-3D son diagramas de flujo de modalidades de un proceso de FFT. La Figura 4 es un diagrama de bloques funcional de los contenidos de memoria para las etapas de una modalidad de una FFT de raíz 2 de 8 puntos. Las Figuras 5A-5B son diagramas de bloque funcional de modalidades de los componentes del sistema OFDM utilizando el módulo de FFT expuesto en la presente.
DESCRIPCIÓN DETALLADA DE LA INVENCIÓN Se exponen una arquitectura de hardware adecuada para una FFT o FFT inversa (IFFT, por sus siglas en inglés) , un dispositivo que incorpora un módulo de FFT, y un método para realizar una FFT o IFFT. La arquitectura de FFT se generaliza para permitir la implementación de una FFT o cualquier raíz. La arquitectura de FFT permite el número de ciclos utilizados para realizar la FFT que se minimizará mientras que mantenga un área pequeña de chip. En particular, la arquitectura de FFT configura la memoria y el espacio de registro para optimizar el número de accesos de memoria realizados durante una FFT en el lugar. La arquitectura de FFT proporciona flexibilidad adicional en su implementación y permite variaciones de raíz y número de multiplicadores complejos, dependiendo de las restricciones particulares de diseño. En implementaciones que son sensibles a la velocidad, pero que son menos sensibles al área de chip, la arquitectura de FFT se puede implementar con multiplicadores complejos adicionales y una raíz mayor. En implementaciones que son más sensibles al área de chip, la raíz se puede reducir y se reduce el número de multiplicadores complejos. La arquitectura de FFT incluye una memoria de muestras que se configura para que tenga un ancho de fila de memoria que sea suficiente para almacenar varias muestras iguales a la raíz de FFT. De esta forma, la memoria de muestra se configura para que tenga N/r filas o r muestras por fila, cuando N representa la magnitud de la FFT y r representa la raíz de FFT. Un bloque de FFT se configura para que recupere filas de la memoria y realice una FFT de punto r sobre las muestras en cada fila. El bloque de FFT recupera varias de las filas iguales a la raíz de FFT, aunque realiza la FFT de punto r sobre las muestras de cada fila individual. El bloque FFT escribe los resultados de las FFT de punto r a un banco de registros que se configura para que almacene r2 muestras. Los multiplicadores complejos acoplados al banco de registros y a una memoria de factor de giro pondera los resultados de FFT con los factores de giro adecuados. Los factores ponderados se regresan a los mismos registradores. Los contenidos del banco de registros se transponen antes de ser escritos para las filas originales en la memoria de muestra. La transposición de los valores en el banco de registros permite que se realice la FFT en lugar de mantener la relación de las muestras de FFT en la misma fila de la memoria de muestra. Las muestras en la memoria de muestras se recuperan, se procesan, y se regresan a la memoria de muestras durante varias etapas suficientes para realizar la FFT de punto N. Es de interés examinar primero la complejidad aritmética de diversos algoritmos de FFT antes de proceder al análisis de los compromisos con base en el hardware en la arquitectura expuesta. Se examinan los algoritmos Cooley-Tukey de la raíz 2,4, 8, 16 y un algoritmo de raíz dividida. Los algoritmos con base en un divisor primo no se consideran "debido a que no tienen una estructura regular y son más sensibles a la cuantificación, incluso la complejidad de estos algoritmos puede ser menor que los algoritmos con base en Cooley-Tukey. La complejidad de los algoritmos se evalúa con base en el número de multiplicaciones reales actuales y las adiciones requeridas. Se asume que una multiplicación compleja es igual a cuatro multiplicaciones reales y dos adiciones reales. El número de multiplicaciones y adiciones reales requerido por los algoritmos de raíz r se puede determinar al observar que estos algoritmos dividen el cálculo de una DFT de punto rn en el cálculo de la DFT de punto r, rn~x en el costo de multiplicaciones de giro (rp_1-l) . (r-1) y un procesamiento adicional por las FFT de punto r11-1. La Figura 1 es un ejemplo de un flujo de señal de una FFT de raíz 2 de 8 puntos que demuestra esta estructura. Denotar el número de multiplicaciones reales requerido para una FFT de punto r11 por Mrn y el número de adiciones reales requeridas por Arn, la complejidad del procesamiento se define por las recursiones: Mrn = r.Mrn-?+ (zn'1-l) . (r-1) . 4+rn~1 .Mr1 Axp = r. Axn-1+ (rn~1-l) . (r-1) . 4-frn"1 , Ar con las condiciones iniciales: M41=o,Nts1=4 ,ML 61=24 M2?=M22=0,M23=4 A2 ?=4 ,A4 !=1 6 ,A8 x=52 ,A16 !=144 La complejidad del algoritmo de raíz dividida se evalúa de forma similar. El algoritmo de raíz dividida divide una FFT de punto N en una FFT de magnitud N/2 y dos de las FFT de magnitud N/4 en el costo de algunas multiplicaciones de giro. La complejidad del algoritmo se define por la recursión: M3!! = Vfn-?+2 fn-2+ (2ti'1-4) . 4+4 + 72.2 n+\ Con base en estas recursiones, la complejidad de varios algoritmos de FFT común se puede tabular y comparar.
Las tablas 1 y 2 recopilan los resultados de complejidad para los algoritmos de FFT común. La tabla incluye celdas vacías para aquellas configuraciones que no se evaluaron.
Tabla 1: Multiplicaciones reales por diferentes algoritmos de FFT Tabla 2: Adiciones reales para diferentes algoritmos de FFT La complejidad aritmética de las Tablas 1 y 2 no proporciona una ilustración completa del costo del hardware para implementar la FFT en diferentes algoritmos. Es necesario considerar el costo para tener acceso a los datos y a los factores de giro de la memoria y los datos de escritura en la memoria. La siguiente tabla muestra el número de accesos a la memoria (sólo se cuentan los accesos a datos) requeridos por diferentes algoritmos para diferentes magnitudes de raíz. El número de accesos a los datos se obtiene al observar que para una implementación de raíz r de una FFT/IFFT de punto N, el número total de etapas es logr(JW) y cada etapa requiere leer y escribir 2N operaciones, lo que conduce a 2Nlogr (N) operaciones de acceso de muestra compleja en memoria.
Tabla 3: Accesos en memoria para diferentes algoritmos de FFT Un análisis de la implementación de FFT en hardware muestra que el costo dominante en términos de ciclos utilizados en el gasto de los accesos a la memoria. El número de accesos a la memoria se reduce con el aumento de la raíz. Sin embargo, tener acceso a una muestra compleja/ciclo puede no ser suficiente para muchas aplicaciones. Un ejemplo simple ilustra un problema potencial. Considerar el problema de implementar una FFT de 64 puntos para un sistema de Multiplexión por División de Frecuencia Ortogonal (OFDM) que tiene una duración de símbolo de 4 µs y una frecuencia de reloj de 40 MHz. Este sistema por ejemplo, puede ser un sistema IEEE 802.11a con un reloj de 40 MHz. La duración de símbolo OFDM de 4 µs en combinación con la frecuencia de reloj de 40 MHz se produce en 160 ciclos disponibles entre símbolos. Se examina primero el costo de implementar una FFT de 64 puntos al utilizar algoritmos del raíz 2. El número total de accesos a la memoria requerido es 768, como se mostró en la tabla anterior. Por lo tanto, implementar un algoritmo de raiz 2 utilizando la memoria con sólo una lectura o escritura de muestras por ciclo podría costar un mínimo de 768 ciclos que es aproximadamente 5 veces el número de ciclos disponible para el cálculo. Los algoritmos de raíz dividida adolecen del mismo problema de requerir cantidades comparables de accesos a la memoria como algoritmos de raíz 2.
Sin embargo, para una FFT de 64 puntos utilizando un algoritmo de raíz 4, el número de accesos a la memoria requerido es 384. Esto es mejor aunque todavía mucho mayor que el número de ciclos disponibles. Los aumentos adicionales en la raíz del algoritmo de FFT, reducen adicionalmente la cantidad de memoria de acceso requerida, a medida que fracasa el número de etapas en la FFT. Una implementación a alta velocidad para cualquier algoritmo de raíz se puede alcanzar a través del uso de una estructura de memoria que permita lectura y escritura paralela. Para un algoritmo de raíz r particular, una estructura de memoria que permita el acceso, ya sea para una operación de lectura o una de escritura, o valores r en un ciclo mejora el rendimiento del algoritmo. Conceptualmente, el acceso paralelo puede ser a través de una RAM que tenga r palabras en cada fila. Sin embargo, para obtener el beneficio máximo de esta estructura de memoria, las muestras r requeridas para calcular una FFT de punto r necesita estar en la misma fila en cada etapa del algoritmo. Esto se puede alcanzar al leer las filas r de la memoria de muestra, calcular r, las FFT de punto r y escribir los resultados después de la transposición en una memoria de muestras. La operación de transposición se puede realizar en una memoria matriz de r2 registradores. A medida que la raíz r aumenta, la magnitud del motor de FFT y la magnitud de la memoria matriz aumentan. El compromiso de área a velocidad se puede realizar mediante cualquier implementación particular. La Figura 2 es un diagrama de bloques funcional de una modalidad de un módulo de FFT 200. El módulo de FFT 200 se puede configurar como un módulo de IFFT con sólo pequeños cambios, debido a la simetría entre las transformaciones directa e inversa. El módulo de FFT 200 se puede implementar en un chip IC individual, y se puede implementar como parte de un ASIC. Alternativamente, el módulo de FFT 200 se puede implementar como múltiples elementos que estén en comunicación entre sí. Adicionalmente, el módulo de FFT 200 no se limita a una estructura de FFT particular. Por ejemplo, el módulo de FFT 200 se puede configurar para que realice una decimación en tiempo o una decimación en la FFT de frecuencia. El módulo de FFT 200 incluye una memoria 210 que se configura para almacenar las muestras que serán transformadas. Adicionalmente, debido a que el módulo de FFT 200 se configura para que realice un cálculo en el lugar de la transformación, la memoria 210 se utiliza para almacenar los resultados de cada etapa de la FFT y la salida del módulo de FFT 200. La memoria 210 se puede dimensionar con base en parte sobre la magnitud de la FFT y la raíz de la FFT.
Para una FFT de punto N de la raíz r en donde N=rn, la memoria 210 se puede dimensionar para que almacene las N muestras en las filas r11-1, con r muestras por fila. La memoria 210 se puede configurar para que tenga una anchura que sea igual al número de bits por muestra multiplicado por el número de muestras por fila. La memoria 210 típicamente se configura para que almacene muestras como componentes reales e imaginarios. De esta forma, para una FFT de raíz 2, la memoria 210 se configura para que almacene dos muestras por fila, y pueda almacenar las muestras como la parte real de la primera muestra, la parte imaginaria de la primera muestra, la parte real de la segunda muestra, y la parte imaginaria de la segunda muestra. Si cada componente de una muestra se configura como 10 bits, la memoria 210 utiliza 40 bits por fila. La memoria 210 puede ser una Memoria de Acceso Aleatorio (RAM, por sus siglas en inglés) de velocidad suficiente para soportar la operación del módulo. La memoria 210 se acopla a un motor de FFT 220 que se configura para que realice una FFT de punto r. El módulo de FFT 200 se puede configurar para que realice una FFT similar a la estructura mostrada en la Figura 1, en donde la ponderación por los factores de giro se realiza después de la FFT parcial, también denominada como FFT mariposa. Esta configuración permite que el motor FFT 220 se configure utilizando un número mínimo de multiplicadores, reduciendo al mínimo de esta forma la magnitud y complejidad del motor FFT 220. El motor FFT 220 se puede configurar para que recupere una fila de la memoria 210 y realice una FFT sobre las muestras en la fila. De esta forma, el motor FFT 220 puede recuperar todas las muestras de una FFT de punto r en un solo ciclo. El motor FFT 220 por ejemplo, puede ser, un motor de FFT canalizada y puede ser capaz de manipular los valores en las filas sobre diferentes fases de un reloj . La salida del motor FFT 220 se acopla a un banco de registros 230. El banco de registros 230 se configura para que almacene varios valores con base en la raíz de la FFT. En una modalidad, el banco de registros 230 se puede configurar para que almacene valores r2. Como fue el caso con las muestras, los valores almacenados en el banco de registros típicamente son valores complejos que tienen un componente real y uno imaginario. El banco de registros 230 se utiliza como almacenamiento temporal, aunque se configura para que tenga un acceso rápido y proporcione una ubicación dedicada para almacenamiento que no necesite tener acceso a través de un bus de direcciones. Por ejemplo, cada bit de un registrador en el banco de registros 230 se puede implementar con un biestable. Como consecuencia, un registrador utiliza mucho más área de chips en comparación con una ubicación de memoria de tamaño comparable. Debido a que no existe eficazmente costo de ciclo para tener acceso al espacio del registrador, una implementación del módulo de FFT 200 particular puede comprometer la velocidad del área de chips al manipular la magnitud del banco de registros 230 y la memoria 210. El banco de registros 230 se puede dimensionar ventajosamente para que almacene valores r2 de tal forma que se pueda realizar directamente una transposición de los valores, por ejemplo, al escribir los valores en filas y leer los valores por columnas, o viceversa. La transposición de valor se utiliza para mantener la alineación de filas de los valores de FFT en la memoria 210 para todas las etapas de la FFT. Una segunda memoria 240 se configura para que almacene los factores de giro que se utilizan para ponderar las salidas del motor de FFT 220. En algunas modalidades, el motor de FFT 220 se puede configurar para que utilice los factores de giro, directamente durante el cálculo de las salidas de FFT parciales (FFT mariposas) . Los factores de giro se pueden predeterminar para cualquier FFT. Por lo tanto, la segunda memoria 240 se puede implementar como una Memoria Sólo de Lectura (ROM, por sus siglas en inglés) , memoria no volátil, RAM no volátil, o memoria programable flash, aunque la segunda memoria 240 también se puede configurar como RAM o algún otro tipo de memoria. La segunda memoria 240 se puede dimensionar para que almacene Nx(n-1) factores de giro complejos para una FFT de punto N, en donde N=rn. Algunos de los factores de giro tales como por ejemplo, 1, -1, o -j , se pueden omitir de la segunda memoria 240. Adicionalmente, los replicados del mismo valor se pueden omitir de la segunda memoria 240. Por lo tanto, el número de factores en giro en la segunda memoria 240 puede ser menor a Nx(n-1). Una implementación eficiente puede aprovechar el hecho de que los factores de giro para todas las etapas de una FFT son subconjuntos de factores de giro utilizados en la primera etapa o la etapa final de una FFT, dependiendo de que la FFT implemente o no una decimación en la frecuencia o una decimación en el algoritmo de tiempo. Los multiplicadores complejos 250a-250b se acoplan al banco de registros y la segunda memoria 240. Los multiplicadores complejos 250a-250b se configuran para que ponderen las salidas del motor de FFT 220, que se almacenan en el banco de registros 230, con el factor de giro adecuado desde la segunda memoria 240. La modalidad mostrada en la Figura 2 incluye dos multiplicadores complejos 250a y 250b. Sin embargo, el número de multiplicadores complejos, por ejemplo 250a, que se incluyen en el módulo de FFT 200 se puede seleccionar con base en un compromiso de la velocidad para el área de chips . Se puede implementar un número mayor de multiplicadores complejos sobre un chip con el fin de ejecutar la velocidad de la FFT. Sin embargo, la velocidad aumentada viene en el costo del área de chips . En donde el área de chips es decisiva, se puede reducir el número de multiplicadores complejos. Típicamente, un diseño podría no incluir más de r-1 multiplicadores complejos cuando se implementa un motor de FFT 220 de punto r, debido a que los multiplicadores complejos r-1 son suficientes para aplicar todos los factores de giro no triviales a las salidas del motor de FFT 220 en paralelo. Como un ejemplo, un módulo de FFT 200 configurado para que realice una FFT de raíz 2 de 8 puntos, tal como por ejemplo, aquel mostrado en la Figura 1, puede implementar 2 multiplicadores complejos, aunque puede implementar 1 solo multiplicador complejo. Cada multiplicador complejo, por ejemplo 250a, opera sobre un valor individual proveniente del banco de registros 230 y correspondiente al factor de giro almacenado en la segunda memoria 240 durante cada operación de multiplicación. Si existen menos multiplicadores complejos de las multiplicaciones complejas que se. puedan realizar, un multiplicador complejo realizará la operación sobre múltiples valores de FFT a partir del banco de registros 230. La salida del multiplicador complejo, por ejemplo 250a, se escribe al banco de registros 230, típicamente a la misma posición que la proporcionada en la entrada del multiplicador complejo. Por lo tanto, después de las multiplicaciones complejas, los contenidos del banco de registros representan la salida de la etapa de FFT que es la misma sin importar si los multiplicadores complejos se implementaron dentro del motor de FFT 220 o se asociaron con el banco de registros 230 según se muestra en la Figura 2. Un módulo de transposición 232 acoplado al banco de registros 230 realiza una transposición sobre los contenidos del banco de registros 230. El módulo de transposición 232 puede transponer los contenidos de registro al volver a disponer los valores de registro. Alternativamente, el módulo transposición 232 puede transponer los contenidos del bloque de registros 230 a medida que los contenidos se leen desde el bloque de registros 230. Los contenidos del banco de registros 230 se transponen antes de que se escriban de regreso en la memoria 210 en las filas que suministran las entradas al motor de FFT 220. La transposición de los valores del banco de registros 230 mantiene la estructura de la fila de las entradas de FFT a través de todas las etapas de la FFT.
Un procesador 262 en combinación con la memoria de instrucciones 264 se puede configurar para que realice el flujo de datos entre módulos, y se puede configurar para que realice algunos o todos de uno o más de los bloques de la Figura 2. Por ejemplo, la memoria de instrucciones 264 puede almacenar una o más instrucciones que pueda utilizar el procesador como el software que dirige al procesador 262 para manipular los datos en el módulo de FFT 200. El procesador 262 y la memoria de instrucciones 264 se pueden implementar como parte del módulo de FFT 200 o pueden ser externos al módulo de FFT 200. Alternativamente, el procesador 262 puede ser externo al módulo de FFT 200 aunque la memoria de instrucciones 264 puede ser interna al módulo de FFT 200 y por ejemplo, puede ser común con la memoria 210 utilizada para las muestras, o la segunda memoria 240 en la cual se almacenan los factores de giro. La modalidad mostrada en la Figura 2 caracteriza un compromiso entre la velocidad y el área a medida que la raíz del algoritmo cambia. Para implementar una FFT de punto N = r7 , el número de ciclos requerido se estimar como: -*" ciclos r.N FFT r ) en donde, N —.v = Número de r, las FFT de raíz r que serán calculadas r2 rNFFT = rX tiempo tomado para realizar una lectura, FFT, multiplicación de giro y escritura para un vector de r elementos . NFFT se asume que será constante independiente de la raíz. El conteo de cíclicos disminuye en el orden de 1/r (0(l/r)). El área requerida para la implementación de aumentos 0(r2) como el número de registradores requeridos para transposición aumenta como r2. El número de registradores y el área requerida para implementar los registradores domina el área para N grande. La raíz mínima que proporciona la velocidad deseada se puede seleccionar para que implemente la FFT para diferentes casos de interés. Reducir al mínimo la raíz, con la condición de que la velocidad del módulo sea suficiente, reduce al mínimo el área de chip utilizada para implementar el módulo. Las Figura 3A-3D son diagramas de flujo de la modalidad de un proceso de FFT 300. El proceso 300 se puede realizar, por ejemplo, por el módulo de FFT 200 de la Figura 2. Alternativamente, el proceso 300 se puede implementar como una o más instrucciones que pueda utilizar el procesador y se puede ejecutar por un procesador junto con la memoria. En otras modalidades, las porciones del proceso 300 se pueden realizar en hardware y otras porciones realizadas desde el software. El proceso 300 inicia en el bloque 302 en donde el módulo de FFT, utilizando por ejemplo, un procesador, escribe los datos que serán transformados en la memoria que tiene una anchura que sea suficiente para almacenar al menos varias de las muestras iguales a la raíz de FFT. Por ejemplo, si el módulo de FFT se configura para que realice una FFT de raíz 2 de 8 puntos, según se muestra en la Figura 1, la memoria se configura como 4 filas de dos columnas y cada columna se puede configurar para que almacene dos muestras complejas. El procesador por ejemplo, puede escribir las muestras en la columna de memoria iniciando con la primera columna y continuando en la segunda columna a medida que se llena la primera columna . Una vez que los datos de muestra se escriben en la memoria, el módulo de FFT procede al bloque 304 en donde el procesador inicializa un contador de etapas. Como se describió anteriormente y se muestra en la Figura 1, una FFT de punto N=rn incluye n etapas. Al inicio de una FFT, el procesador puede inicializar el contador de etapas a uno. Después de inicializar el contador de etapas, el módulo de FFT procede al bloque 310 y el procesador inicializa la FFT parcial y los contadores de bloques. La FFT parcial y los contadores de bloques, por ejemplo, se pueden inicializar a cero. Como se muestra en el ejemplo de la Figura 1, el número de las FFT parciales realizadas en cada etapa de la FFT sigue siendo constante, aunque un contador que rastrea el índice de muestras implicadas en cada cálculo de FFT cambia dependiendo de la etapa. Después de inicializar los contadores de FFT parcial y de bloque, el módulo de FFT procede al bloque 312 en donde el procesador inicializa un indicador de direcciones de fila. El indicador de dirección de fila determina la fila de memoria que se opera por el motor de FFT. Por ejemplo, el procesador puede determinar el valor del indicador de direcciones de fila como: Pfila = k . r11'" + fk .
El módulo de FFT procede al bloque 314 y lee las filas a partir de la memoria de muestras con base en el valor del indicador de direcciones de fila. Por ejemplo, el procesador puede leer las filas a partir de la memoria de muestras y escribirlas para ubicaciones en el motor de FFT. El procesador puede leer las filas determinadas por el indicador de direcciones: ai = pfila+i . rn~k'x , i - 0...(r-l) donde n representa el número total de etapas y k representa el contador de etapas . Una vez que las filas se hayan leído en el motor de FFT, el módulo de FFT procede al bloque 320 y calcula las FFT de punto r sobre las muestras recuperadas. El número de las FFT de punto r realizada por el motor de FFT en la modalidad es igual al número de filas leídas desde la memoria, y es igual a la raíz r. La salida del motor de FFT se escribe sobre un banco de registros rxr. El módulo de FFT procede al bloque 322 y aplica los factores de giro almacenados en una memoria de factores de giro de los valores de salida de FFT para ponderar los valores con los factores de giro. Los factores de giro se pueden aplicar utilizando uno o más multiplicadores, y los multiplicadores se pueden configurar como multiplicadores complejos. Después de la ponderación con los factores de giro, los multiplicadores escriben los resultados de regreso en el banco de registro rxr en el paso 324. El módulo de FFT entonces procede al paso 330 y transpone el orden de los valores en el banco de registros. En una modalidad, el procesador puede transponer el orden de los valores almacenado en el banco de registros. En otra modalidad, la transposición se puede presentar cuando los valores se leen desde el banco de registros. Por ejemplo, la salida de los multiplicadores se puede escribir en el banco de registros en un orden de filas y lee desde el banco de registros en un orden de columna, dando por resultado en una transposición relativamente con poco procesamiento. El conector A 331 mostrado en las Figuras 3A y 3B se utiliza para conectar las porciones del diagrama de flujo mostrado en las dos páginas de figuras y no forma parte substantiva del proceso 300. El módulo de FFT procede al paso 332, vía el conector A 331, y escribe los resultados transpuestos desde el banco de registros en la memoria de muestra. Los resultados transpuestos desde el banco de registros se escriben en las filas identificadas por el indicador de direcciones determinado en el bloque 314. Si la transposición se realiza a través de una conversión de columna a fila, el módulo de FFT, utilizando el procesador, puede leer las columnas del banco de registros y escribir los resultados en filas para la dirección identificada por el indicador de direcciones. El módulo de FFT procede al bloque 334 y actualiza la FFT parcial y los contadores de bloques. Como se analizó anteriormente, cada etapa de la FFT se realiza como uno o más bloques de las FFT parciales de raíz r. En el paso 334, el módulo de FFT actualiza la FFT parcial y los contadores de bloque. El procesador puede actualizar, por ejemplo, un contador de FFT parcial fk — (f?+l)mod(rn_ _1) y si el contador de FFT parcial es cero, aumentar el contador de bloques. El módulo de FFT procede al bloque de decisión 340 y determina si todas las FFT parciales y los bloques se han calculado. No todas las FFT parciales se han determinado si el contador de bloques es menor al número de bloques en la etapa, c* < r11-1. Si no se han calculado todas las FFT parciales y los bloques, el módulo de FFT procede al bloque 342 para actualizar la FFT parcial y los contadores de bloques para procesar las FFT parciales adicionales. El módulo de FFT entonces regresa, vía el conector C 343 hacia el bloque 310 para continuar procesando las FFT parciales para el presente o siguiente bloque de FFT. El conector C 343 no es una parte substantiva del proceso 300, aunque su lugar, se utiliza para conectar el diagrama de flujo a través de las páginas. Si el módulo de FFT en el bloque de decisión 340 determina que todos los bloques de la etapa actual se han calculado, el módulo de FFT procede al bloque de decisión 350 para determinar si se han procesado las etapas n-1. Si no es así, el módulo de FFT procede al bloque 352 para actualizar el contador de etapas y regresa, vía el conector B 353, al bloque 310. El conector B 353 no es una parte substantiva del proceso 300, aunque en su lugar, se utiliza para conectar el diagrama de flujo a través de las páginas. Si, en el bloque de decisión 350, el módulo de FFT determina que las etapas n-1 se han procesado, el módulo de FFT procede al proceso de la etapa final de FFT vía el conector D 351. El módulo de FFT puede implementar la etapa final de la FFT en diferentes modalidades. La Figura 3C ilustra una modalidad en la cual el módulo de FFT puede implementar la etapa de FFT final. La Figura 3D ilustra una modalidad alternativa para implementar la etapa final de la FFT. De esta forma, el módulo de FFT puede proceder del conector D 351 de la Figura 3B al conector D 351 en la Figura 3C o 3D, aunque no ambos, debido a que las Figura 3C y 3D ilustran modalidades alternativas de la misma etapa de FFT final. En una modalidad, el módulo de FFT puede implementar el proceso de la etapa de FFT final mostrado en la Figura 3C. En el proceso de la etapa final ilustrado en la Figura 3C, el módulo de FFT solicita las filas consecutivamente, aunque no realiza ninguna transposición después de las FFT parciales. El resultado es un resultado de FFT que tiene muestras en cada fila separada al igual que en la etapa de FFT inicial, aunque con filas que están en un orden inverso de raíz. El ordenamiento es ventajoso si existe una etapa de IFFT después de la FFT. El módulo de FFT puede tomar en cuenta el orden inverso de raíz cuando tiene acceso a los resultados de FFT, o, si son convenientes los resultados de orden, puede implementar un motor para reordenación de filas para reordenar las filas. Para realizar el proceso de etapa final mostrado en la Figura 3C, el módulo de FFT procede al conector D 351 de la Figura 3B al conector D 351 de la Figura 3C. El módulo de FFT procede al bloque 362 e inicializa un indicador de direcciones de fila. El indicador de direcciones de fila se puede inicializar para Pfna = cn . r, en donde cO se inicializa a cero y r es la raíz de FFT. El módulo de FFT entonces procede al proceso de la etapa de FFT final en la misma forma que se procesaron las etapas de FFT anteriores. En el bloque 364, el módulo de FFT lee las filas de la memoria identificada por un indicador de filas de direcciones que se puede calcular como: a± = Pfua + i r i = 0... (r-1) . El módulo de FFT procede al bloque 366 y calcula la FFT parcial para los valores en las filas recuperadas. El motor de FFT calcula la FFT parcial de punto r de diferentes r sobre las filas recuperadas. El módulo de FFT procede al bloque 368 y escribe los valores de salida de FFT parciales al banco de registros. El módulo de FFT procede al bloque 370 y escribe los valores de bloque de registros a las mismas filas de memoria que suministran los datos al motor de FFT.
El módulo de FFT aumenta el contador en en el bloque 370. El módulo de FFT procede al bloque de decisión 372 y determina si todas las FFT parciales en el bloque final se han procesado. Si no es así, el módulo de FFT regresa al bloque 362 para seguir procesando las filas de la memoria de muestra. Si todas las FFT parciales en la etapa final se han procesado, el módulo de FFT procede al bloque de decisión 372 hacia el bloque para reordenación de fila 374 opcional, en donde el módulo de FFT realiza la reordenación de filas. El módulo de FFT entonces procede al bloque 399 y se realiza la FFT de punto N. Como una etapa de FFT alternativa final, el módulo de FFT en su lugar puede realizar el proceso mostrado en la Figura 3D. En la etapa de FFT final ilustrada en el diagrama de flujo de la Figura 3D, el módulo de FFT solicita las muestras en las filas de acuerdo con el mismo orden utilizado para la primera etapa de la FFT. Los resultados son las filas que tienen muestras en orden consecutivo, aunque con las filas en un orden inverso de raíz parcial. Adicionalmente, orden inverso de raíz parcial sólo se presenta cuando el número de etapas de FFT es mayor de tres. A pesar del orden de filas inversas de raíz parcial, este proceso de etapa final puede ser ventajoso debido a que las muestras en cada fila son consecutivas.
Para realizar el proceso de etapa final de la Figura 3D, el módulo de FFT procede del conector D 351 de la Figura 3D, al conector D 351 de la Figura 3D. El módulo de FFT procede al bloque 382 y ajusta el indicador de direcciones de fila utilizando el mismo algoritmo utilizado para la etapa inicial de la FFT. El módulo de FFT procede al bloque 384 y lee las filas identificadas por el indicador y procede al bloque 386 y realiza una FFT parcial sobre las filas. El módulo de FFT entonces procede al bloque 388 y escribe los resultados de la FFT parcial en el banco de registros. El módulo de FFT puede proceder al bloque 390 y transpone el orden de los valores en el banco de registros. El módulo de FFT entonces procede al bloque 392 y escribe los valores transpuestos de regreso a la memoria de muestra. El módulo de FFT entonces procede al bloque de decisión 396 para determinar si todas las FFT parciales en el bloque de etapa final se han calculado. Si no es así, el módulo de FFT procede de regreso al bloque 382 y actualiza el indicador para la siguiente FFT parcial. Si en el bloque de decisión 396, el módulo de FFT determina que todas las FFT parciales en la etapa final se han calculado, el módulo de FFT procede al bloque 398 y realiza la reordenación de filas. Al igual que con la modalidad de etapa final anterior mostrada en la Figura 3C, el paso de reordenación de filas es opcional. Si no se realiza una reordenación de filas, o después de realizar una reordenación de filas opcional, el módulo de FFT procede al bloque 399 y se realiza la FFT. La Figura 4 es un diagrama de bloques funcional de los contenidos de la memoria y los contenidos del bloque de registro para una modalidad de FFT de raíz 2 de 8 puntos realizada de acuerdo con el proceso de las Figuras 3A-3B. la FFT de 8 puntos utiliza una memoria de muestras de cuatro filas y dos columnas. El bloque de registros se configura como una matriz rxr, que en este caso es una matriz 2x2. Los contenidos iniciales de la memoria de muestra 410 se señalan dispuestos en dos columnas, 412 y 414. La memoria de muestras se puede escribir en orden de columnas, escribir los valores en una primera columna 412 hasta que se llena y luego escribir los valores en una segunda columna 414. Cada fila de memoria de muestras 410 incluye los valores correctos de muestra para realizar las FFT de 2 puntos iniciales. Las filas aO y a2 se recuperan inicialmente de la memoria de muestras y las FFT realizadas sobre los valores almacenados en las filas. Los resultados se ponderan con los factores de gira adecuados, y los resultados escritos en el banco de registros 422. Los valores del banco de registro 422 entonces se transponen antes de que se escriban de regreso a la memoria de muestras. De manera similar, las filas al y a3 se recuperan de la memoria, se procesan en el motor de FFT, se ponderan con factores de giro adecuados, y se escriben en el banco de registros 424. Los valores de registro en 424 sobre-escriben los valores de registro 422 anteriores que ya se hayan transpuesto y se reescriben en la memoria de muestras. Los nuevos valores de bloque de registro 424 se trasponen y se reescriben en la memoria. La memoria de muestras 430, señala los contenidos después de terminar la primera etapa y la primera transposición. Los datos se organizan en dos columnas 432 y 434, aunque los valores se ajustan con base en la transposición para mantener la relación de filas de las muestras que se procesaran conjuntamente. Las filas aO y al se recuperan inicialmente de la memoria de muestras y las FFT realizadas sobre los valores almacenados en las filas. Los resultados " se ponderan con factores de giro adecuados, y los resultados se escriben en el banco de registros 442. Los valores de banco de registros 442 luego se trasponen antes de que se escriban de regreso a la memoria de muestra. Similarmente, las filas a2 y a3 se recuperan de la memoria, se procesan en el motor de FFT, se ponderan con los factores de giro adecuados, y se es-criben en el banco de registros 444. Los valores se transponen y se reescriben en la memoria de muestras. La memoria de muestras 450 señala los contenidos después de terminar la segunda etapa y la segunda transposición. A partir de la disposición de la tercera memoria de muestras 450, las filas aO y al se recuperan inicialmente de la memoria de muestras y las FFT realizadas sobre los valores almacenados en las filas. Los resultados se ponderan con factores de giro adecuados, y los resultados se escriben en el banco de registros 462. Los valores de bajo de registros 462 luego se trasponen antes de ser escritos de regreso a la memoria de muestras. De manera similar, las filas a2 y a3 se recuperan de la memoria, se procesan en el motor de FFT, se ponderan con los factores de giro adecuados, y se escriben en el banco de registros 464. Los valores se transponen y se reescriben en la memoria de muestra. Los resultados transpuestos escritos en la memoria de muestras 470 representan la salida de la FFT de 8 puntos. Las Figuras 5A y 5B son diagramas de bloque funcional de los componentes del sistema OFDM que pueden incorporar el módulo de FFT según se describe en la presente. Se analizan un transmisor OFDM 500 y un receptor OFDM 540. Cada uno del transmisor OFDM 500 o receptor 540 se puede implementar dentro de un dispositivo o aparato configurado para comunicarse dentro de un sistema OFDM. Estos dispositivos incluyen de manera enunciativa: teléfonos inalámbricos, tales como por ejemplo, teléfonos celulares, asistentes digitales personales, y lo semejante, o algún otro dispositivo de comunicaciones. La Figura 5A es un diagrama de bloques funcional de un transmisor OFDM 500 que puede implementar el módulo de FFT de la Figura 2 y el proceso de FFT de las Figuras 3A y 3B. Algunos o todos los bloques del transmisor OFDM 500 de la Figura 5A se pueden implementar en un IC o ASIC individual . El transmisor OFDM 500 incluye una fuente de datos 502 que incluye típicamente algún tipo de dispositivo de almacenamiento configurado para almacenar muestras de datos. Las muestras de datos se pueden generar externas al transmisor OFDM 500 o se pueden generar internas al transmisor OFDM 500 utilizando un Convertidor Analógico a Digital (ADC, por sus siglas en inglés) (no mostrado) acoplado a un dispositivo de memoria. Una corriente de datos individual se puede caracterizar como una corriente de datos seriales. Un convertidor serial a paralelo 510 se acopla a la fuente de datos y forma corriente de datos paralelas para cada portadora ortogonal en el transmisor OFDM 500. La salida del convertidor serial a paralelo 510 se acopla a un modulador, en donde cada una de las corrientes de datos paralelas puede modular una portadora correspondiente de las portadoras OFDM. Las múltiples portadoras OFDM moduladas entonces se acoplan a un módulo de IFFT 520 que se puede configurar a partir del módulo de FFT de la Figura 2 y las cuales pueden utilizar el proceso de las Figuras 3A y 3B. El módulo de IFFT 520 transforma las frecuencias ortogonales en un símbolo OFDM de dominio de tiempo. La salida del módulo IFFT 520 se acopla a un convertidor paralelo a serial 522 para convertir la salida paralela a un símbolo serial individual. La salida del convertidor paralelo a serial 522 se puede acoplar a un transmisor 530, que puede ser un transmisor inalámbrico. La Figura 5B es un diagrama de bloques funcional de un receptor OFDM 540 que es el complemento para el transmisor OFDM 500 de la Figura 5A. Como fue el caso con el transmisor OFDM 500, el receptor OFDM 540 se puede implementar en un IC o ASIC individual. El receptor OFDM 540 incluye un receptor 542 que se puede configurar como un receptor inalámbrico que recibe los símbolos OFDM propagados por un transmisor. El receptor 542 se puede configurar para amplificar, filtrar, y subconvertir la señal recibida para recuperar una señal de banda base. La señal de banda base se acopla a un convertidor serial a paralelo 544 que opera para convertir la corriente de datos de banda base serial en corriente de datos paralelos para procesamiento. La salida del convertidor serial a paralelo 544 se acopla a un módulo de FFT 550, que puede ser el módulo de FFT de la Figura 2 que realiza el proceso de las Figuras 3A y 3B. El módulo de FFT 550 transforma el símbolo de dominio de tiempo en los múltiples componentes de frecuencia ortogonal. La salida del módulo de FFT 550 se acopla a un desmodulador 560 que opera para desmodular las frecuencias ortogonales para recuperar los datos. Un convertidor paralelo a serial 562 se acopla a la salida del módulo de FFT 550 y convierte los datos paralelos a una corriente de datos seriales. La corriente de datos seriales se acopla a un procesador de datos para un procesamiento adicional. Por ejemplo, los datos de voz se pueden convertir a un formato analógico para amplificación y suministro a una bocina. Los datos de video se pueden procesar adicionalmente y dirigir a un dispositivo de pantalla. Un módulo de FFT que implementa una arquitectura de FFT puede realizar una transformación en el lugar en un número reducido de instrucciones en comparación con las implementaciones de FFT anteriores. El módulo de FFT incluye una memoria de muestras que dispone múltiples valores en una sola fila. La operación de FFT se realiza sobre las muestras de una fila individual y se escriben a un bloque de registro. Se pueden utilizar uno o más multiplicadores completos para aplicar factores de giro a los resultados de la FFT parcial. Los resultados de la FFT parcial ponderados en el banco de registros se transponen y se reescriben a la memoria de muestras. La transposición mantiene la relación de las entradas de FFT para una FFT parcial individual en la misma fila de la misma memoria. El proceso se repite para múltiples etapas de la FFT hasta que se completa la FFT deseada. Los pasos de un método, proceso, o algoritmo descritos junto con las modalidades expuestas en la presente se pueden incorporar directamente en hardware, en un módulo de software ejecutado por un procesador, o en una combinación de los dos. Un módulo de software puede residir en memoria RAM, memoria flash, memoria no volátil, memoria ROM, memoria EPROM, memoria EEPROM, registradores, disco duro, un disco extraíble, un CD-ROM, o cualquier otra forma de medio de almacenamiento conocido en la técnica. Un medio de almacenamiento de ejemplo se acopla al procesador, de tal forma que el procesador pueda leer la información del mismo y escribir la información al medio de almacenamiento. Alternativamente, el medio de almacenamiento puede ser integral al procesador. Además, se pueden realizar diversos métodos en el orden mostrado en las modalidades o se pueden realizar utilizando un orden modificado de pasos. Adicionalmente, uno o más pasos de proceso o métodos se pueden omitir o uno o más pasos de proceso o método se pueden agregar a los métodos y procesos. Un paso, bloque, o acción adicional se pueden agregar al inicio, final o ente los elementos existentes de los métodos y procesos. La descripción anterior de las modalidades expuestas se proporciona para permitir que cualquier persona con experiencia en la técnica realice o utilice la exposición. Diversas modificaciones de estas modalidades serán fácilmente evidentes para aquellos con experiencia en la técnica, y se pueden aplicar los principios genéricos definidos en la presente a otras modalidades sin apartarse del espíritu o alcance de la exposición. De esta forma, la exposición no pretende estar limitada a las modalidades mostradas en la presente, sino que más bien estar de acuerdo con el alcance más amplio consistente con los principios y características novedosos expuestos en la presente.

Claims (31)

  1. NOVEDAD DE LA INVENCIÓN Habiendo descrito el presente invento, se considera como una novedad y, por lo tanto, se reclama como propiedad lo contenido en las siguientes REIVINDICACIONES : 1. Un método para determinar un punto rO una raíz r, una Transformación de Fourier Rápida (FFT) , el método caracterizado porque comprende: escribir las muestras que serán transformadas en una memoria que tenga r muestras por fila; leer las r filas desde la memoria; determinar las FFT parciales r de raíz r para generar los valores de FFT parciales r2; aplicar factores de giro a los valores de FFT parciales r2 para generar valores de FFT parciales ponderados r2; escribir los valores de FFT parciales ponderados r2 a un bloque de registro; transponer los valores de FFT parciales ponderados r2 en el bloque de registros para generar los valores transpuestos; escribir los valores transpuestos a la memoria; y determinar los valores de FFT a partir de los contenidos de la memoria.
  2. 2. El método según la reivindicación 1, caracterizado porque las muestras de escritura en la memoria comprenden muestras de escritura que se transformarán por columna en una memoria que tenga r11"1 filas y r columnas.
  3. 3. El método según la reivindicación 1, caracterizado porque escribir las muestras en la memoria comprende escribir las muestras complejas que serán transformadas en la memoria.
  4. 4. El método según la reivindicación 1, caracterizado porque leer las filas r de la memoria comprende : determinar los índices de la fila r; leer las filas de la memoria que correspondan a los índices de la fila r.
  5. 5. El método según la reivindicación 4, caracterizado porque la determinación de los índices de la fila r comprende determinar un índice de fila que corresponda a la fórmula a¿ = ixrr?~'fc_I, donde k representa una etapa de la FFT, para i=0 hasta (r-1) .
  6. 6. El método según la reivindicación 1, caracterizado porque la aplicación de factores de giro ha los valores de FFT parciales r2 comprende: recuperar al menos un factor de giro complejo, y calcular una multiplicación compleja de al menos un factor de giro complejo con uno correspondiente de los valores de FFT parciales r2.
  7. 7. El método según la reivindicación 1, caracterizado porque escribir los valores de FFT parciales ponderados r2 al bloque de registros comprende escribir los valores de FFT parciales ponderados r2 a un bloque de registros configurado como filas r y columnas r.
  8. 8. El método según la reivindicación 7, caracterizado porque transponer los valores de FFT parciales ponderados r2 comprende: recuperar un valor de FFT parciales ponderado correspondientes a una fila y columna del banco de registros; transponer los índices de fila y columna; y escribir el valor de FFT parcial ponderado a la fila y columna correspondientes a los índices transpuestos.
  9. 9. Un método para determinar un punto rn, una raíz r, una Transformación de Fourier Rápida (FFT) , el método caracterizado porque comprende: escribir las muestras que serán transformadas en una memoria que tenga r muestras por fila; inicializar un valor de etapa; inicializar un valor de bloque; procesar una etapa de FFT, el procesamiento comprende : a) determinar un número de bloques con base en el valor de etapa; b) recuperar r filas de la memoria; c) determinar las FFT parciales r de raíz r para generar los valores de FFT parciales r2; d) aplicar factores de giro a los valores de FFT parciales r2 para generar los valores de FFT parciales ponderados r2; e) transponer los valores de FFT parciales ponderados r2 en el bloque de registros para generar valores transpuestos; f) escribir los valores transpuestos a la memoria; y g) repetir los pasos b) hasta f) con base en los valores de bloque y etapa; h) incrementar el valor de etapa; y repetir el procesamiento de la etapa de FFT n veces; y determinar los valores de FFT a partir de los contenidos de la memoria.
  10. 10. Un método para determinar un punto xn, una raiz r, una Transformación de Fourier Rápida (FFT) , el método caracterizado porque comprende: escribir las muestras que serán transformadas en una memoria que tenga r muestras por fila; a) inicializar un contador de etapas; b) inicializar un contador de bloques y un contador de FFT parcial; c) recuperar r filas de la memoria con base en la etapa, bloque y valores del contador de FFT parcial; d) determinar las FFT parciales r de raíz r para generar valores de FFT parciales r2; e) aplicar factores de giro a los valores de FFT parciales r2 para generar valores de FFT parciales ponderados r2; f) escribir los valores de FFT parciales ponderados r2 a un bloque de registros; g) transponer los valores de FFT parciales ponderados r2 en el bloque de registros para generar valores transpuestos; i) escribir los valores transpuestos a la memoria; j ) actualizar el contador de FFT parcial y el contador de bloques; k) repetir los pasos c) hasta j) con base en el valor del contador de bloques y el contador de FFT parcial; 1) actualizar el valor del contador de etapas; m) repetir los pasos b) hasta k) con base en el valor del contador de etapas; y determinar los valores de FFT provenientes de los contenidos de la memoria.
  11. 11. Un aparato de punto r11 de raíz r, de Transformación de Fourier Rápida (FFT) ; el aparato caracterizado porque comprende: una memoria configurada para almacenar rn muestras con r muestras por fila de memoria; un motor de FFT configurado para que realice la FFT parcial de la FFT de punto r sobre las muestras de r filas de la memoria; un banco de registros que tenga registros r2 configurado como filas r de columnas r, y configurado para recibir los valores de salida del motor de FFT, y un módulo de transposición configurado para transponer los valores en el banco de registros y escribir los valores transpuestos a las filas r provenientes de la memoria operada por el motor de FFT.
  12. 12. El aparato según la reivindicación 11, caracterizado además porque comprende: una memoria de factores de giro configurada para almacenar al menos un factor de giro de FFT; y al menos un multiplicador configurado para multiplicar un valor de un registro en el banco de registros por un factor de giro de FFT proveniente de la memoria de factores de giro, y configurados para escribir un valor de salida al registro.
  13. 13. El aparato según la reivindicación 12, caracterizado porque al menos un multiplicador comprende al menos un multiplicador complejo.
  14. 14. El aparato según la reivindicación 12, caracterizado porque al menos un multiplicado comprende multiplicadores complejos r-1.
  15. 15. El aparato según la reivindicación 12, caracterizado porque la memoria de factores de giro comprende al menos una memoria seleccionada del grupo que comprende ROM, RAM, NV-RAM, y memoria flash.
  16. 16. El aparato según la reivindicación 11, caracterizado porque las muestras xn comprenden muestras complejas rn.
  17. 17. El aparato según la reivindicación 11, caracterizado porque la memoria comprende RAM.
  18. 18. El aparato según la reivindicación 11, caracterizado porque el motor de FFT comprende un motor de FFT canalizada.
  19. 19. El aparato según la reivindicación 11, caracterizado porque el módulo de transposición transpone los valores en el banco de registros al leer los valores de una forma en columnas y escribir los valores a la memoria de una forma en filas .
  20. 20. El aparato según la reivindicación 11, caracterizado porque el módulo de transposición transpone los valores en el banco de registros al leer un valor de registro correspondiente a un valor de fila y un valor de columna del banco de registros, transponer el valor de fila y el valor de columna; y escribir el valor del registro al registro correspondiente con el valor de filas y el valor de columna transpuestos.
  21. 21. Uno o más dispositivos de almacenamiento configurados para almacenar una o más instrucciones que se puedan utilizar para un procesador, cuando se ejecuta por uno o más procesadores, llevar a cabo el método caracterizado porque comprende: escribir muestras que serán transformadas en una memoria que tenga r muestras por fila; leer r muestras desde la memoria; determinar las FFT parciales r de raíz r para generar valores de FFT parciales r2; aplicar factores de giro a los valores de FFT parciales r2 para generar valores de FFT parciales ponderados r2; escribir los valores de FFT parciales ponderados r2 a un bloque de registros; transponer los valores de FFT parciales ponderados r2 en el bloque de registro para generar valores transpuestos; escribir los valores transpuestos a la memoria; y determinar los valores de FFT a partir de los contenidos de la memoria.
  22. 22. Un aparato para determinar un punto rn, una raíz r, una Transformación de Fourier Rápida (FFT) , el aparato caracterizado porque comprende: medios para escribir muestras que serán transformadas en una memoria que tenga r muestras por fila; medios para leer r filas de la memoria; medios para determinar las FFT parciales r de raíz r para generar valores de FFT parciales r2; medios para aplicar factores de giro a los valores de FFT parciales r2 para generar valores de FFT parciales ponderados r2; medios para escribir los valores de FFT parciales ponderados r2 a un bloque de registros; medios para transponer los valores de FFT parciales ponderados r2 en el bloque de registros para generar valores transpuestos; medios para escribir los valores transpuestos a la memoria; y medios para determinar los valores de FFT a partir de los contenidos de la memoria.
  23. 23. El aparato según la reivindicación 22, caracterizado porque los medios para escribir muestras en la memoria comprenden escribir muestras que serán transformadas a manera de columna en una memoria que tenga rn-? fj2_as y r columnas .
  24. 24. El aparato según la reivindicación 22, caracterizado porque los medios para escribir muestras en la memoria comprenden escribir muestras complejas que serán 5 transformadas en la memoria.
  25. 25. El aparato según la reivindicación 22, caracterizado porque los medios para leer r filas de la memoria comprenden : medios para determinar r índices de fila; y '10 medios para leer filas a partir de la memoria correspondiente para los índices de r filas.
  26. 26. El aparato según la reivindicación 24, caracterizado porque los medios para determinar los índices de r filas comprenden determinar un índice de fila que 15 corresponda a la fórmula a± = ixrp_c_I, en donde k representa una etapa de la FFT, para i = 0 hasta (r-1) .
  27. 27. El aparato según la reivindicación 22, caracterizado porque los medios para aplicar factores de giro a los valores de FFT parciales r2 comprenden: 20 medios para recuperar al menos un factor de giro complejo; y medios para calcular una multiplicación compleja de al menos un factor de giro complejo con uno correspondiendo a los valores de FFT parciales r2. 25
  28. 28. El aparato según la reivindicación 22, caracterizado porque los medios para escribir los valores de FFT parciales ponderados r2 al bloque de registros comprende escribir los valores de FFT parciales ponderados r2 a un bloque de registros configurados como r filas y r columnas .
  29. 29. El aparato según la reivindicación 28, caracterizado porque los medios para transponer los valores de FFT parciales ponderados r2 comprenden: medios para recuperar un valor de FFT parcial ponderado que corresponda a una fila y una columna del banco de registros; medios para transponer los índices de fila y columna; y medios para escribir el valor de FFT parcial ponderado a la fila y columna que correspondan a los índices transpuestos.
  30. 30. Un aparato para determinar un punto rn de raíz r, de Transformación de Fourier Rápida (FFT) , el aparato caracterizado porque comprende: medios para escribir muestras que serán transformadas en una memoria que tenga r muestras por fila; medios para inicializar un valor de etapas; medios para inicializar un valor de bloques; medios para procesar una etapa de FFT, el procesamiento comprende: a) medios para determinar un número de bloques con base en el valor de etapa; b) medios para recuperar r filas de la memoria; c) medios para determinar las FFT parciales r de raíz r para generar valores de FFT parciales r2; d) medios para aplicar factores de giro a los valores de FFT parciales r2 para generar valores de FFT parciales ponderados r2; e) medios para transponer los valores de FFT parciales ponderados r2 en el bloque de registros para generar valores transpuestos; f) medios para escribir los valores transpuestos a la memoria; y g) medios para repetir los pasos b) hasta f) con base en los valores de bloque y etapa; h) medios para aumentar el valor de etapas; y medios para repetir el procesamiento de la etapa de FFT n veces; y medios para determinar los valores de FFT a partir de los contenidos de la memoria.
  31. 31. Un aparato para determinar un punto r11 de raíz r, de Transformación de Fourier Rápida (FFT) , el aparato caracterizado porque comprende: medios para escribir muestras que serán transformadas en una memoria que tenga r muestras por fila; a) medios para inicializar un contador de etapas; b) medios para inicializar un contador de bloques y un contador de FFT parcial; c) medios para recuperar r filas de la memoria con base en la etapa, bloque y valores del contador de FFT parcial; d) medios para determinar las FFT parciales r de raíz r para generar valores de FFT parciales r2; e) medios para aplicar factores de giro a los valores de FFT parciales r2 para generar valores de FFT parciales ponderados r2; f) medios para escribir los valores FFT parciales ponderados r2 a un bloque de registros; g) medios para trasponer los valores de FFT parciales ponderados r2 en el bloque de registros para generar valores transpuestos; i) medios para escribir los valores transpuestos a la memoria; j) medios para actualizar el contador de FFT parcial y el contador de bloques; k) medios para repetir los pasos c) hasta j) con base en el valor del contador de bloques y el contador de FFT parcial; 1) medios para poner actualizar el valor del contador de etapas; m) medios para repetir los pasos de b) hasta k) con base en el valor del contador de etapas; y medios para determinar los valores de FFT a partir de los contenidos de la memoria.
MXPA06006391A 2003-12-05 2004-12-03 Arquitectura y metodo de fft. MXPA06006391A (es)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US52719603P 2003-12-05 2003-12-05
PCT/US2004/040498 WO2005057423A2 (en) 2003-12-05 2004-12-03 Fft architecture and method

Publications (1)

Publication Number Publication Date
MXPA06006391A true MXPA06006391A (es) 2006-08-23

Family

ID=34676710

Family Applications (1)

Application Number Title Priority Date Filing Date
MXPA06006391A MXPA06006391A (es) 2003-12-05 2004-12-03 Arquitectura y metodo de fft.

Country Status (17)

Country Link
US (1) US7702712B2 (es)
EP (1) EP1690196B1 (es)
JP (1) JP2007513431A (es)
KR (1) KR20060096511A (es)
CN (1) CN1914607A (es)
AR (1) AR046869A1 (es)
AT (1) ATE412220T1 (es)
AU (1) AU2004297978A1 (es)
BR (1) BRPI0417222A (es)
CA (1) CA2547488A1 (es)
DE (1) DE602004017351D1 (es)
ES (1) ES2315735T3 (es)
IL (1) IL176050A0 (es)
MX (1) MXPA06006391A (es)
RU (1) RU2006123934A (es)
TW (1) TW200534121A (es)
WO (1) WO2005057423A2 (es)

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7430575B2 (en) * 2003-12-19 2008-09-30 Fujitsu Limited One-dimensional fourier transform program, method and apparatus
US7720162B2 (en) * 2005-03-10 2010-05-18 Qualcomm Incorporated Partial FFT processing and demodulation for a system with multiple subcarriers
US8266196B2 (en) * 2005-03-11 2012-09-11 Qualcomm Incorporated Fast Fourier transform twiddle multiplication
US8229014B2 (en) * 2005-03-11 2012-07-24 Qualcomm Incorporated Fast fourier transform processing in an OFDM system
WO2007066964A1 (en) * 2005-12-08 2007-06-14 Electronics And Telecommunications Research Institute Memory address generating method and twiddle factor generator using the same
KR100762281B1 (ko) * 2005-12-08 2007-10-01 한국전자통신연구원 고속 푸리에 변환 시스템의 메모리 주소 생성 방법 및 그를이용한 트위들 팩터 생성 장치
US7702713B2 (en) * 2006-03-24 2010-04-20 Debashis Goswami High speed FFT hardware architecture for an OFDM processor
US20070239815A1 (en) * 2006-04-04 2007-10-11 Qualcomm Incorporated Pipeline fft architecture and method
US20070266070A1 (en) * 2006-05-12 2007-11-15 Chung Hua University Split-radix FFT/IFFT processor
US8503545B2 (en) * 2006-08-31 2013-08-06 Advanced Micro Devices, Inc. I/Q imbalance compensation
KR100836624B1 (ko) * 2006-12-08 2008-06-10 한국전자통신연구원 가변 고속 푸리에 변환 장치 및 그 방법
US8738680B2 (en) 2008-03-28 2014-05-27 Qualcomm Incorporated Reuse engine with task list for fast fourier transform and method of using the same
US8959133B2 (en) * 2008-04-18 2015-02-17 Nxp, B.V. System and method for configurable mixed radix FFT architecture for multimode device
KR20110081971A (ko) * 2008-09-10 2011-07-15 코-오퍼레이티브 리서치 센터 포 어드밴스드 오토모티브 테크놀로지 리미티드 이산 푸리에 변환 계수의 행렬을 계산하는 방법 및 장치
CN101478785B (zh) * 2009-01-21 2010-08-04 华为技术有限公司 资源池管理系统及信号处理方法
CN102238348B (zh) * 2010-04-20 2014-02-05 上海华虹集成电路有限责任公司 一种可变数据个数的fft/ifft处理器的基4模块
TWI402695B (zh) * 2010-07-12 2013-07-21 Novatek Microelectronics Corp 分裂基數-2/8快速傅立葉轉換裝置及方法
CN102339272A (zh) * 2010-07-16 2012-02-01 联咏科技股份有限公司 分裂基数-2/8快速傅立叶转换装置及方法
US8819097B2 (en) * 2011-09-09 2014-08-26 Texas Instruments Incorporated Constant geometry split radix FFT
US8825729B1 (en) * 2011-09-19 2014-09-02 Altera Corporation Power and bandwidth efficient FFT for DDR memory
US9275013B2 (en) * 2012-03-16 2016-03-01 Qualcomm Incorporated System and method for analysis and reconstruction of variable pulse-width signals having low sampling rates
KR101335367B1 (ko) * 2012-04-26 2013-12-02 숭실대학교산학협력단 메모리 제어 장치 및 방법
US9275014B2 (en) 2013-03-13 2016-03-01 Qualcomm Incorporated Vector processing engines having programmable data path configurations for providing multi-mode radix-2x butterfly vector processing circuits, and related vector processors, systems, and methods
US9098449B2 (en) * 2013-03-15 2015-08-04 Analog Devices, Inc. FFT accelerator
US9311274B2 (en) * 2013-10-17 2016-04-12 Texas Instruments Incorporated Approach for significant improvement of FFT performance in microcontrollers
WO2018170400A1 (en) * 2017-03-16 2018-09-20 Jaber Technology Holdings Us Inc. Apparatus and methods of providing an efficient radix-r fast fourier transform
US10783216B2 (en) 2018-09-24 2020-09-22 Semiconductor Components Industries, Llc Methods and apparatus for in-place fast Fourier transform
CN109558638B (zh) * 2018-10-23 2023-03-24 清华大学 Fft处理器
US11221397B2 (en) * 2019-04-05 2022-01-11 Texas Instruments Incorporated Two-dimensional FFT computation
KR20200143030A (ko) 2019-06-14 2020-12-23 한국전자통신연구원 입력 신호의 특정 주파수 성분들을 분석하기 위한 고속 푸리에 변환 장치
CN115859003A (zh) * 2021-09-27 2023-03-28 华为技术有限公司 执行fft的方法、装置及设备

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS59189474A (ja) 1983-04-13 1984-10-27 Yokogawa Medical Syst Ltd 高速フ−リエ変換演算装置
JP3749022B2 (ja) * 1997-09-12 2006-02-22 シャープ株式会社 高速フーリエ変換を用いて短い待ち時間でアレイ処理を行う並列システム
US6088714A (en) * 1998-07-27 2000-07-11 Agilent Technologies Mechanism for calculating one-dimensional fast fourier transforms
US6839728B2 (en) * 1998-10-09 2005-01-04 Pts Corporation Efficient complex multiplication and fast fourier transform (FFT) implementation on the manarray architecture
US6609140B1 (en) * 1999-11-30 2003-08-19 Mercury Computer Systems, Inc. Methods and apparatus for fast fourier transforms
KR100481852B1 (ko) * 2002-07-22 2005-04-11 삼성전자주식회사 고속 푸리에 변환 장치

Also Published As

Publication number Publication date
ATE412220T1 (de) 2008-11-15
WO2005057423A2 (en) 2005-06-23
ES2315735T3 (es) 2009-04-01
US20050182806A1 (en) 2005-08-18
AR046869A1 (es) 2005-12-28
RU2006123934A (ru) 2008-01-10
US7702712B2 (en) 2010-04-20
CN1914607A (zh) 2007-02-14
KR20060096511A (ko) 2006-09-11
JP2007513431A (ja) 2007-05-24
AU2004297978A1 (en) 2005-06-23
DE602004017351D1 (de) 2008-12-04
EP1690196B1 (en) 2008-10-22
WO2005057423A3 (en) 2006-06-01
CA2547488A1 (en) 2005-06-23
EP1690196A2 (en) 2006-08-16
TW200534121A (en) 2005-10-16
IL176050A0 (en) 2006-10-05
BRPI0417222A (pt) 2007-02-21

Similar Documents

Publication Publication Date Title
MXPA06006391A (es) Arquitectura y metodo de fft.
EP2013772B1 (en) Multi-port mixed-radix fft
JP2009535678A (ja) パイプラインfftのアーキテクチャおよび方法
US7464127B2 (en) Fast fourier transform apparatus
US20050177608A1 (en) Fast Fourier transform processor and method using half-sized memory
KR100989797B1 (ko) Fft/ifft 연산코어
US6356926B1 (en) Device and method for calculating FFT
WO2001055896A2 (en) Butterfly-processing element for efficient fast fourier transform method and apparatus
US20060200513A1 (en) Fast Fourier transform processor and method capable of reducing size of memories
EP2144172A1 (en) Computation module to compute a multi radix butterfly to be used in DTF computation
Lo et al. Design of an efficient FFT processor for DAB system
CN113378108B (zh) 音频处理装置的快速傅立叶变换电路
EP2144173A1 (en) Hardware architecture to compute different sizes of DFT
Lee et al. Modified sdf architecture for mixed dif/dit fft
US8015226B2 (en) Methods and apparatus for performing reduced complexity discrete fourier transforms using interpolation
TW200811672A (en) Optimized multi-mode DFT implementation
Hassan et al. Implementation of a reconfigurable ASIP for high throughput low power DFT/DCT/FIR engine
CN103870437A (zh) 数字信号处理装置及其处理方法
US8346836B2 (en) Apparatus and method for area and speed efficient fast fourier transform (FFT) processoring with runtime and static programmability of number of points
WO1999053417A1 (en) Device for converting series of data elements
US6959222B1 (en) Accelerator engine for processing functions used in audio algorithms
Ku et al. A design methodology of buffer-memory architectures for FFT computation
CN118051709A (zh) 一种fft处理器及运算方法
TWI390416B (zh) 快速傅立葉變換/反快速傅立葉變換運算核之裝置
Cariolaro et al. Signal Analysis via Digital Signal Processing