ES2315735T3 - Arquitectura y procedimiento fft. - Google Patents
Arquitectura y procedimiento fft. Download PDFInfo
- Publication number
- ES2315735T3 ES2315735T3 ES04812920T ES04812920T ES2315735T3 ES 2315735 T3 ES2315735 T3 ES 2315735T3 ES 04812920 T ES04812920 T ES 04812920T ES 04812920 T ES04812920 T ES 04812920T ES 2315735 T3 ES2315735 T3 ES 2315735T3
- Authority
- ES
- Spain
- Prior art keywords
- fft
- memory
- values
- partial
- row
- Prior art date
- Legal status (The legal status 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 status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F17/00—Digital computing or data processing equipment or methods, specially adapted for specific functions
- G06F17/10—Complex mathematical operations
- G06F17/14—Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
- G06F17/141—Discrete Fourier transforms
- G06F17/142—Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L27/00—Modulated-carrier systems
- H04L27/26—Systems using multi-frequency codes
- H04L27/2601—Multicarrier modulation systems
- H04L27/2647—Arrangements specific to the receiver only
- H04L27/2649—Demodulators
- H04L27/265—Fourier transform demodulators, e.g. fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators
- H04L27/2651—Modification of fast Fourier transform [FFT] or discrete Fourier transform [DFT] demodulators for performance improvement
Abstract
Un procedimiento para determinar una Transformada Rápida de Fourier (FFT) de una dimensión, de raíz r y de r n puntos, comprendiendo del procedimiento: a) escribir muestras que vayan a ser transformadas en una memoria (210) que tenga r muestras por fila; b) leer r filas de la memoria (210); c) determinar r FFT parciales de raíz r para generar r 2 valores de FFT parciales; d) aplicar factores de rotación a los r 2 valores de FFT parciales para generar r 2 valores de FFT parciales ponderados: y caracterizado por: e) escribir los r 2 valores de FFT parciales ponderados en un banco de registros (230); f) trasponer los r 2 valores de FFT parciales ponderados en el banco de registros (230) para generar valores traspuestos; g) escribir los valores traspuestos en la memoria (210); y h) determinar los valores de FFT a partir del contenido de la memoria (210): en el que el paso c) es llevado a cabo por medio de un motor FFT en cadena de r puntos (220) que realiza una FFT parcial de r puntos sobre las muestras de cada una de las mencionadas r filas.
Description
Arquitectura y procedimiento FFT.
La divulgación se refiere al campo del procesado
de la señal. En particular, la divulgación se refiere a un aparato
y a procedimientos para implementar una Transformada Rápida de
Fourier (FFT).
La transformada rápida de Fourier se puede usar
para hacer corresponder una señal en el dominio del tiempo a su
homóloga en el dominio de la frecuencia. Por el contrario, una
Transformada de Fourier Inversa se puede usar para hacer
corresponder una señal en el dominio de la frecuencia con su
homóloga en el dominio del tiempo. Las transformadas de Fourier son
particularmente útiles para el análisis espectral de señales en el
dominio del tiempo. De manera adicional, los sistemas de
comunicaciones, tales como los que implementan la Multiplexación
por División de Frecuencia Ortogonal (OFDM) pueden usar las
propiedades de las transformadas de Fourier para generar múltiples
símbolos en el dominio del tiempo a partir de tonos linealmente
espaciados y para recuperar las frecuencias a partir de los
símbolos.
Un sistema de datos muestreados puede
implementar una Transformada Discreta de Fourier (DFT) para permitir
a un procesador realizar la transformada sobre un número
predeterminado de muestras. Sin embargo, la DFT es intensa desde el
punto de vista de cálculo y requiere de una tremenda cantidad de
potencia de procesado para realizarse. El número de cálculos
necesarios para realizar una DTF de N punto es del orden de N^{2},
denotado por O(N^{2}). En muchos sistemas, la cantidad de
potencia de procesado dedicada a realizar una DTF puede reducir la
cantidad de procesado disponible para otras operaciones del sistema.
De manera adicional, los sistemas que están configurados para
funcionar como sistemas en tiempo real puede que no tengan una
suficiente potencia de procesado para realizar una DTF del tamaño
deseado dentro de un tiempo asignado para el cálculo.
La Transformada Rápida de Fourier (FFT) es una
implementación discreta de la transformada de Fourier que permite
realizar una transformada de Fourier en significativamente menos
operaciones 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 raíz r está de manera típica
del orden de N x log_{t}(N), denotado como
O(Nlog_{r}(N)).
En el pasado, los sistemas que implementaban una
FFT pueden haber usado un procesador de propósito general o un
Procesador Digital de Señal (DSP) autónomo para realizar la FFT. Sin
embargo, los sistemas están incorporando de manera creciente
Circuitos Integrados Específicos de Aplicación (ASIC)
específicamente diseñados para implementar la mayoría de la
funcionalidad requerida de un dispositivo. La implementación de la
funcionalidad del sistema dentro de un ASIC minimiza la cuenta de
circuitos integrados y la lógica de pegamento requerida para
hacer de interfaz de múltiples circuitos integrados. La cuenta
reducida de circuitos integrados permite de manera típica una
huella física más pequeña para dispositivos sin sacrificar nada de
su funcionalidad.
La cantidad de área dentro de un molde ASIC está
limitada, y los bloques funcionales que son implementados dentro de
un ASIC necesitan ser optimizados en tamaño, velocidad y potencia
para mejorar la funcionalidad del diseño ASIC global. La cantidad
de recursos dedicados a la FFT se debería minimizar para limitar el
porcentaje de recursos disponibles dedicados a la FFT. Aún se
necesitan dedicar recursos suficientes a la FFT para asegurar que
se puede realizar la transformada con una velocidad suficiente para
soportar los requisitos del sistema. De manera adicional, se
necesita minimizar la cantidad de potencia consumida por el módulo
FFT para minimizar los requisitos de fuente de alimentación y la
disipación de calor asociada. Por lo tanto, puede que sea deseable
optimizar una arquitectura FFT para su implementación dentro de un
circuito integrado, tal como un ASIC.
En el documento de D. S. Dawoud, "An effective
memory addressing scheme for multiprocessor FFT System", Actas
de la 6ª Conferencia IEEE AFRICON, del 2 al 4 de octubre de 2002,
George, Sudáfrica, se considera la organización de memoria de
procesadores FFT. Se da un nuevo esquema de direccionamiento de
memoria. El esquema propuesto considera el caso usando dos módulos
de memoria de dos puertos y permite el procesado de mariposas en
forma de grupos de dos. La asignación de direccionamiento permite,
sin ningún conflicto, acceder de manera simultánea a los datos
necesarios para las dos mariposas y escribir las cuatro salidas a
los mismos lugares. Las ventajas de este esquema de
direccionamiento de memoria recaen en el hecho de que se reduce el
número de ciclos de cálculos de mariposa de la FFT a la mitad y se
reduce el retardo de la generación de direcciones al mínimo.
En el documento de II. Steckenbiller y K. Holz,
"A traspose-register for a 2D-FFT
of 64x64 pixel blocks", Actas de la Conferencia Europea de 1992
sobre Circuitos Integrados Específicos de Aplicación (Euro ASIC
'92), del 1 al 5 de junio de 1992, París, Francia, se describe un
registro de trasposición, parte de un sistema para la reducción de
datos de señales HDTV digitales. Esta aproximación está conduciendo
a una solución de un único circuito integrado para la señal de
luminancia. El algoritmo implementado se basa en la codificación de
transformada de dos dimensiones de grandes subbloques. Usando la
aproximación de dos columnas para la FFT de dos dimensiones (2D),
se requiere un registro de trasposición que realice un acceso de
lectura y escritura para 2048 bit en \mus. El tamaño del registro
de trasposición es de 131072 bit (128*64*16 bit). El tiempo de
ciclo del registro es de 80 ns para la lectura o la escritura de 512
bits (-6,4 Gbit/s) de una fila o columna de bloque de imagen. De
esta manera, el modo de acceso por fila y columna se implementa por
medio de una célula de memoria de doble puerto más líneas de bits
horizontales y verticales. Usando una tecnología CMOS de 1,5
\mus, el área del registro es de 128 mm^{2} y está determinada
por las líneas de bits.
\vskip1.000000\baselineskip
Una implementación y un procedimiento hardware
FFT como los que se declaran en las reivindicaciones anejas,
proporciona un eficiente procesado FFT, a la vez que minimiza el
área de molde necesaria en un circuito integrado (CI). El hardware
FFT se puede usar para implementar una FFT de N puntos, en la que N
= I^{n} es una función de una raíz (r). La implementación
hardware incluye una memoria de muestreo que tiene N/r filas, cada
una de las cuales almacena r muestras. Una memoria usada para
almacenar factores de rotación tiene k factores de rotación por
fila, en la que 0 < k < r representa el número de
multiplicadores de rotación complejos disponibles. Un módulo FFT,
lee r filas de la memoria (siendo la dirección de fila una función
de la etapa de la FFT), realiza una FFT compleja de r puntos
parcial sobre las muestras de cada fila seguida por la
multiplicación de rotación (excepto para la última etapa) y escribe
al resultado en una memoria de matriz de dimensión r x r (banco de
registro). El contenido de la memoria de matriz de dimensión r x r
se escribe, en orden traspuesto u opcionalmente sin trasposición,
de nuevo en la memoria de muestras. Esta operación se repite
N/r^{2} veces para cada etapa y después se repite para las n
etapas para producir la FFT de N puntos.
En las reivindicaciones anejas se establecen
aspectos de la invención.
\vskip1.000000\baselineskip
Las características, objetos, y ventajas de las
realizaciones de la descripción serán más aparente es a partir de
la descripción detallada que se declara más adelante cuando se tome
junto con los dibujos, en los que idénticos elementos llevan
idénticos números de referencia.
La figura 1 es un diagrama de flujo de una FFT
de raíz 2 de 8 puntos.
La figura 2 es un diagrama de bloques funcional
de una realización de un módulo FFT.
Las figuras 3A a 3D son diagramas de flujo de
realizaciones de un proceso FFT.
La figura 4 es un diagrama de bloques funcional
del contenido de memoria para las etapas de una realización de una
FFT de raíz 2 de 8 puntos.
Las figuras 5A a 5B son diagramas de bloques
funcionales de realizaciones de componentes de sistema OFDM que
usan el módulo FFT descrito en este documento.
\vskip1.000000\baselineskip
Se describen una arquitectura hardware adecuada
para una FFT o para una FFT inversa (IFFT), un dispositivo que
incorpora un módulo FFT, y un procedimiento para realizar una FFT o
una IFFT. La arquitectura FFT está generalizada para permitir la
realización de una FFT de cualquier raíz. La arquitectura FFT
permite minimizar el número de ciclos usado para realizar la FFT a
la vez que mantiene una pequeña área de circuito integrado. En
particular, la arquitectura FFT configura espacio en memoria y
registro para optimizar el número de accesos a memoria realizado
durante de una FFT parcial. La arquitectura FFT proporciona una
flexibilidad adicional en su implementación y permite variaciones
en la raíz y en el número de multiplicadores complejos, dependiendo
de las restricciones de diseño particulares. En implementaciones que
sean sensibles a la velocidad, pero que sean menos sensibles al
área de molde, la arquitectura FFT se puede implementar con
multiplicadores complejos adicionales y con una raíz superior. En
implementaciones que sean más sensibles al área de molde, se puede
reducir la raíz y el número de multiplicadores complejos.
La arquitectura FFT incluye una memoria de
muestras que está configurada para tener una anchura de filas de
memoria que sea suficiente como para almacenar un número de muestras
igual a la raíz FFT. De esta manera, la memoria de muestras está
configurada para tener N/r filas de r muestras por fila donde N
representa al tamaño de la FFT y r representa la raíz de la FFT. Un
bloque FFT está configurado para recuperar filas de la memoria y
para realizar una FFT de r puntos sobre las muestras de cada fila.
El bloque FFT recupera un número de filas igual a la raíz de la
FFT, pero realiza la FFT de r puntos sobre las muestras de cada fila
individual.
El bloque FFT escribe los resultados de las FFT
de r puntos en un banco de registros que está configurado para
almacenar r^{2} muestras. Los multiplicadores complejos acoplados
al banco de registros y a una memoria de factor de rotación
ponderan los resultados de la FFT con los factores de rotación
apropiados. Los factores ponderados son devueltos a los mismos
registros.
Los contenidos del banco de registros son
traspuestos antes de ser reescritos en las filas originales en la
memoria de muestras. La trasposición de los valores en el banco de
registros permite realizar la FFT parcial por medio del
mantenimiento de la relación de las muestras de la FFT en la misma
fila de la memoria de muestras. Las muestras en la memoria de
muestras son recuperadas, procesadas y devueltas a la memoria de
muestras durante un número suficiente de etapas para realizar la
FFT de N puntos.
Es de interés primero examinar la complejidad
aritmética de varios algoritmos FFT antes de proceder con una
discusión de los compromisos basados en hardware en la arquitectura
descrita. Se examinan los algoritmos de
Cooley-Tukey de raíz 2, 4, 8, 16 y algoritmos de
raíz dividida. Los algoritmos basados en el primer factor no son
considerados porque no tienen una estructura regular y son más
sensibles a la cuantificación, incluso aunque la complejidad de
estos algoritmos puede ser más baja que la de los algoritmos basados
en los algoritmos de Cooley-Tukey.
La complejidad de los algoritmos se evalúa en
este documento en base al número de multiplicaciones y sumas reales
existentes requeridas. Una multiplicación compleja se supone que es
igual a cuatro multiplicaciones reales y a dos sumas reales.
El número de multiplicaciones y sumas reales
requerido por los algoritmos de raíz r se puede determinar haciendo
notar que estos algoritmos dividen el cálculo de una DFT de r^{n}
puntos en el cálculo de r DFT de r^{n-1} puntos a
un coste de (r^{n-1} -
1)\cdot(r-1) multiplicadores de
rotación y el procesado adicional por medio de
r^{n-1} FFT de r puntos. 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.
Mediante la denotación del número de
multiplicaciones reales requeridas para una FFT de r^{n} puntos
por M^{T}_{n} y el número de sumas reales requeridas por
A^{T}_{n}, la complejidad del procesado se define por medio de
las recursiones
\vskip1.000000\baselineskip
con las condiciones iniciales:
La complejidad del algoritmo de raíz dividida se
evalúa de una manera similar. El algoritmo de raíz dividida divide
una FFT de N puntos en una FFT de tamaño N/2 y dos FFT de tamaño N/4
al coste de algunos multiplicadores de rotación. La complejidad del
algoritmo se define por medio de la recursión:
En base a estas recursiones, se puede tabular y
comparar la complejidad de varios algoritmos FFT comunes. Las
tablas 1 y 2 compilan los resultados de complejidad para los
algoritmos FFT comunes. La tabla incluye celdas vacías para
aquéllas configuraciones que no se evaluaron.
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
\vskip1.000000\baselineskip
La complejidad aritmética de las tablas 1 y 2 no
da una imagen completa del coste hardware de implementar la FFT en
diferentes algoritmos. Se necesita considerar el coste del acceso a
datos y factores de rotación desde la memoria y de escribir datos
en la memoria. La siguiente tabla muestra el número de accesos a
memoria (solamente se cuentan los accesos a datos) requeridos por
los diferentes algoritmos para diferentes tamaños de raíz. El
número de accesos a datos se obtiene haciendo notar que para una
implementación de raíz r de una FFT/IFFT de N puntos, el número
total de etapas es log_{r}(N) y que cada etapa requiere 2N
operaciones de lectura y escritura, lo que conduce a
2N\cdotlog_{r}(N) operaciones de acceso a muestras complejas de memoria.
2N\cdotlog_{r}(N) operaciones de acceso a muestras complejas de memoria.
\vskip1.000000\baselineskip
Un análisis de la implementación FFT en hardware
muestra que el coste dominante en términos de ciclos usados se
gasta en los accesos a memoria. El número de accesos a memoria se
reduce con el aumento de la raíz. Sin embargo, el acceso a una
muestra/ciclo complejos puede no ser suficiente para muchas
aplicaciones. Un sencillo ejemplo ilustra un problema potencial.
Considérese el problema de implementar una FFT
de 64 puntos para un sistema Múltiplex por División en Frecuencia
Ortogonal (OFDM) que tiene una duración de símbolo de 4 \mus y una
velocidad de reloj de 40 MHz. Dicho sistema puede ser por ejemplo,
un sistema IEEE 802.11a con un reloj de 40 MHz. La duración de
símbolo OFDM de 4 \mus en combinación con la velocidad de reloj
de 40 MHz se traduce en 160 ciclos disponibles entre símbolos.
En primer lugar, se examina el coste de
implementar una FFT de 64 puntos por medio de la utilización de
algoritmos de raíz 2. El número total de accesos a memoria
requerido es de 768, como se muestra en la tabla anterior. Por lo
tanto, la implementación de un algoritmo de raíz 2 que use memoria
con solamente una lectura o escritura de muestra por ciclo costaría
un mínimo de 768 ciclos, lo que es aproximadamente 5 veces el número
de ciclos disponible para el cálculo. Los algoritmos de raíz
dividida sufren el mismo problema de necesitar cantidades
comparables de acceso a memoria que los algoritmos de raíz 2.
Sin embargo, para una FFT de 64 puntos que use
un algoritmo de raíz 4, el número de accesos a memoria requerido es
de 384. Esto es mejor, pero es aún mucho más alto que el número de
ciclos disponible. Cuanto más aumenta la raíz del algoritmo FFT,
más se reduce la cantidad de accesos a memoria requeridos, mientras
disminuye el número de etapas en la FFT.
Se puede conseguir una implementación de alta
velocidad para cualquier algoritmo de raíz por medio del uso de una
estructura de memoria que haga posible la lectura y escritura en
paralelo. Para un algoritmo de raíz r particular, una estructura de
memoria que permita el acceso, ya sea para una operación de lectura
como para una operación de escritura, de r valores en un ciclo,
mejora la capacidad de procesado de salida del algoritmo. De manera
conceptual, se puede pensar en el acceso en paralelo como una RAM
que tenga r palabras en cada fila. Sin embargo, para obtener el
máximo beneficio de esta estructura de memoria, la r muestras
requeridas para calcular una FFT de r puntos necesitan estar en la
misma fila en cada etapa del algoritmo. Esto se puede conseguir por
medio de la lectura de r filas de memoria de muestras, calculando r
FFT de r puntos y escribiendo los resultados después de la
trasposición en la memoria de muestras. La operación de trasposición
se puede realizar en una memoria de matriz de r^{2} registros. A
medida que aumenta la raíz r, aumenta el tamaño del motor FFT y el
tamaño de la memoria de matriz. Se puede llegar a un compromiso
entre el área y la velocidad para cualquier implementación
particular.
La figura 2 es un diagrama de bloques funcional
de una realización de un módulo FFT 200. El módulo FFT 200 puede
estar configurado como un módulo IFFT solamente con pequeños
cambios, debido a la simetría entre las transformadas directa e
inversa. El módulo FFT 200 puede estar implementado sobre un único
molde de circuito integrado, y puede estar implementado como parte
de un ASIC. De manera alternativa, el módulo FFT 200 puede estar
implementado como múltiples elementos que están en comunicación unos
con otros. De manera adicional, el módulo FFT 200 no está limitado
a una estructura FFT particular. Por ejemplo, el módulo FFT 200
puede estar configurado para realizar una FFT con decimación en el
tiempo o una FFT con decimación en frecuencia.
El módulo FFT 200 incluye una memoria 210 que
está configurada para almacenar las muestras que se van a
transformar. De manera adicional, como el módulo FFT 200 está
configurado para realizar un cálculo parcial de la transformada, la
memoria 210 se usa para almacenar los resultados de cada etapa de la
FFT y la salida del módulo de FFT 200.
La memoria 210 puede estar dimensionada en base
en parte al tamaño de la FFT y a la raíz de la FFT. Para una FFT de
N puntos de raíz r, donde N = r^{n}, la memoria 210 puede estar
dimensionada para almacenar las N muestras de las
r^{n}-1 filas, con r muestras por fila. La memoria
210 puede estar configurada para tener una anchura que sea igual al
número de bits por muestra multiplicada por el número de muestras
por fila. La memoria 210 está configurada de manera típica para
almacenar muestras como componentes reales e imaginarias. De esta
forma, para una FFT de raíz 2, la memoria 210 está configurada para
almacenar dos muestras por fila, y puede 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 una de las componentes de
una muestra está configurada como 10 bits, la memoria 210 usa 40
bits por fila. La memoria 210 puede ser una memoria de acceso
aleatorio (RAM) de velocidad suficiente para soportar el
funcionamiento del módulo.
La memoria 210 está acoplada a un motor FFT 220
está configurado para realizar una FFT de r puntos. El módulo FFT
200 puede estar configurado para realizar una FFT similar a la
estructura que se muestra la figura 1, en la que la ponderación por
medio de los factores de rotación se realiza después de la FFT
parcial, a la que también se hace referencia como una mariposa FFT.
Dicha configuración permite al motor de la FFT 220 ser configurado
usando un número mínimo de multiplicadores, minimizando de esta
manera el tamaño de la complejidad del motor FFT 220. El motor FFT
220 puede estar configurado para recuperar una fila desde la memoria
210 y para realizar una FFT sobre las muestras de la fila. De esta
manera, el motor de la FFT 220 puede recuperar todas las muestras
para una FFT de r puntos en un único ciclo. El motor de la FFT 220,
siendo un motor FFT en cadena, es capaz de manipular los valores de
las filas en diferentes fases del reloj.
La salida del motor de la FFT 220 está acoplada
a un banco de registros 230. El banco de registros 230 está
configurado para almacenar un número de valores en base a la raíz de
la FFT. En una realización, el banco de registros 230 puede estar
configurado para almacenar r^{2} valores. Como fue el caso con las
muestras, los valores almacenados en el banco de registros son de
manera típica valores complejos que tienen una componente real y una
componente imaginaria.
El banco de registros 230 se usa como un
almacenamiento temporal, pero está configurado para el acceso rápido
y proporciona una localización dedicada para el almacenamiento a la
que no se necesita acceder a través del bus de direcciones. Por
ejemplo, cada bit de un registro del banco de registros 230 puede
estar implementado por medio de un circuito biestable. Como
consecuencia de esto, un registro usa mucha más área de molde en
comparación con una localización de memoria de tamaño comparable.
Como no hay de manera efectiva un coste de ciclo para acceder al
espacio de registros, una implementación particular del módulo FFT
200 puede encontrar un compromiso entre la velocidad y el área de
molde por medio de la manipulación del tamaño del banco registros
230 y la memoria 210.
El banco de registros 230 puede de manera
ventajosa estar dimensionado para almacenar r^{2} valores de forma
que se pueda realizar directamente una trasposición de los valores,
por ejemplo, por medio de escribir valores por filas y leer valores
por columnas, o viceversa. La trasposición de valores se usa para
mantener la alineación de filas de los valores FFT en la memoria
210 para todas las etapas de la FFT.
Una segunda memoria 240 está configurada para
almacenar los factores de rotación que se usan para ponderar las
salidas del motor FFT 220. En algunas realizaciones, el motor FFT
220 puede estar configurado para usar los factores de rotación
directamente durante el cálculo de las salidas parciales de la FFT
(mariposas FFT). Los factores de rotación pueden estar
predeterminados para cualquier FFT. Por lo tanto, la segunda memoria
240 puede ser implementada como una memoria de sólo lectura (ROM),
una memoria no volátil, una RAM no volátil, o una memoria
flash programable, aunque la segunda memoria 240 también
puede estar configurada como una RAM o algún otro tipo de memoria.
La segunda memoria 240 puede estar dimensionada para almacenar N x
(n-1) factores de rotación complejos para una FFT
de N puntos, donde N = r^{n}. Algunos de los factores de rotación
tales como 1, -1, j o -j, puede ser omitidos de la segunda memoria
240. De manera adicional, se pueden omitir también los duplicados
del mismo valor de la segunda memoria 240. Por lo tanto, el número
de factores de rotación en la segunda memoria 240 puede ser menor
de N x (n-1). Una implementación eficiente
puede sacar ventaja del hecho de que los factores de rotación para
todas las etapas de una FFT sean subconjuntos de los factores de
rotación usados en la primera etapa o en la etapa final de una FFT,
dependiendo de si la FFT implementa un algoritmo de decimación en
frecuencia o un algoritmo de decimación en el tiempo.
Los multiplicadores complejos 250a - 250b están
acoplados al banco de registros y a la segunda memoria 240. Los
multiplicadores complejos 250a - 250b están configurados para
ponderar las salidas del motor de la FFT 220, que se almacenan en
el banco de registros 230, con el factor de rotación apropiado de la
segunda memoria 240. La realización que se muestra la figura dos 2
incluye dos multiplicadores complejos 250a y 250b. Sin embargo, el
número de multiplicadores complejos, por ejemplo 250a, que se
incluyen en el modulo FFT 200 se puede seleccionar en base a un
compromiso entre la velocidad y el área de molde. Se pueden
implementar un número mayor de multiplicadores complejos sobre un
molde con el fin de acelerar la ejecución de la FFT. Sin embargo,
el aumento de la velocidad es a costa del área de molde. Cuando el
área de molde sea crítica, se puede reducir el número de
multiplicadores complejos. De manera típica, un diseño no incluiría
más de r-1 multiplicadores complejos, cuando se
implemente un motor de FFT de r puntos 220, ya que
r-1 multiplicadores complejos son suficientes para
aplicar todos los factores de rotación no triviales a las salidas
del motor de la FFT 220 en paralelo. Como un ejemplo, un módulo FFT
200 configurado para realizar una FFT de raíz 2 de 8 puntos, tal
como el que se muestra la figura 1, puede implementar 2
multiplicadores complejos, pero puede implementar solamente 1
multiplicador complejo.
Cada multiplicador complejo, por ejemplo 250a,
opera sobre un único valor del banco de registros 230 y de manera
correspondiente sobre un factor de rotación Almacenado en la segunda
memoria 240 durante cada operación de multiplicación. Si hay menos
multiplicadores complejos que multiplicaciones complejas que se
tengan que realizar, un multiplicador complejo realizará la
operación sobre múltiples valores FFT del banco de registros
230.
La salida del multiplicador complejo, por
ejemplo 250a, se escribe en el banco de registros 230, de manera
típica en la misma posición que la proporcionada en la entrada al
multiplicador complejo. Por lo tanto, después de las
multiplicaciones complejas, el contenido del banco de registros
representa la salida de la etapa FFT que es la misma con
independencia de si los multiplicadores complejos fueron
implementados dentro del motor FFT 220 o están asociados con el
banco de registros 230 como se muestra en la figura 2.
Un módulo de trasposición 232 acoplado al banco
de registros 230 realiza una trasposición sobre el contenido del
banco de registros 230. El módulo de trasposición 232 puede
trasponer el contenido del registro por medio de la redisposición
de los valores de registros. De manera alternativa, el módulo de
trasposición 232 puede trasponer el contenido del bloque de
registros 230 a medida que se leen los contenidos del bloque de
registros 230. Los contenidos del banco de registros 230 son
traspuestos antes de ser escritos de nuevo en la memoria 210 en las
filas que suministraron las entradas al motor FFT 220. La
trasposición de los valores del banco de registros 230 mantiene la
estructura por filas para las entradas FFT a través de todas las
etapas de la FFT.
Se puede configurar un procesador 262 en
combinación con la memoria de instrucciones 264 para realizar el
flujo de datos entre módulos, y se puede configurar para realizar
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 sean utilizables por el procesador como software
que dirija al procesador 262 para manipular los datos en el módulo
FFT 200.
El procesador 262 y la memoria de instrucciones
264 se pueden implementar como parte del módulo FFT 200 o pueden
ser externos al módulo FFT 200. De manera alternativa, el procesador
262 puede ser externo al módulo FFT 200 pero la memoria de
instrucciones 264 puede ser interna al módulo FFT 200 y puede ser,
por ejemplo, común con la memoria 210 usada para las muestras, o la
segunda memoria 240 en la que se almacenan los factores de
rotación.
La realización que se muestra en la figura 2
caracteriza un compromiso entre una velocidad y un área a medida
que cambia la raíz del algoritmo. Para implementar una FFT de N =
r^{v} puntos, el número de ciclos requerido se puede estimar
como:
N_{ciclos}
\approx \left(\frac{N}{r^{2}} \cdot \nu \right) \cdot r \cdot
N_{FFT}
donde,
\left(\frac{N}{r^{2}} \cdot \nu
\right)= número de r, FFT de raíz r que se tienen que
calcular,
rN_{FFT} = r x tiempo que dura la realización
de una lectura, FFT, multiplicación de rotación y escritura para un
vector de r elementos.
Se supone que N_{FFT} es constante
independiente de la raíz. La cuenta de ciclo disminuye en el orden
de 1/r (O (1/r)). El área requerida para la implementación aumenta
O(r^{2}) a medida que aumenta el número de registros
requeridos para la trasposición como r^{2}. El número de registros
y el área requerida para implementar los registros domina el área
para un N grande.
Se puede elegir la raíz mínima que proporciona
la velocidad deseada para implementar FFT para diferentes casos de
interés. Por medio de minimizar la raíz, con tal de que la velocidad
del módulo sea la suficiente, se minimiza al área de molde para
implementar el módulo.
Las figuras 3A a 3D son diagramas de flujo de la
realización de un proceso FFT 300. El proceso 300 se puede
realizar, por ejemplo, por medio del módulo FFT 200 de la figura 2.
De manera alternativa, el proceso 300 se puede implementar como una
o más instrucciones adecuadas para un procesador y ejecutadas por un
procesador junto con la memoria. En otras realizaciones, partes del
proceso 300 pueden ser realizadas en hardware y otras partes pueden
ser realizadas en software.
El proceso 300 comienza en el bloque 302 en el
que el módulo FFT, que usa por ejemplo un procesador, escribe los
datos que se van a transformar en memoria que tiene una anchura que
es suficiente para almacenar al menos un número de muestras igual a
la raíz FFT. Por ejemplo, si el módulo FFT está configurado para
realizar una FFT de raíz 2 de 8 puntos, como se muestra en la
figura 1, la memoria está configurada como 4 filas de 2 columnas y
cada columna puede estar configurada para almacenar dos muestras
complejas. El procesador puede, por ejemplo, escribir las muestras
en la memoria columna por columna comenzando con la primera columna
y continuando con la segunda columna cuando se rellene la primera
columna.
Una vez que se escriban los datos de muestra en
la memoria, el módulo FFT procede con el bloque 304 en el que el
procesador inicializa un contador de etapas. Como se describe a
continuación y como se muestra en la figura 1, una FFT de N=r^{n}
puntos incluye n etapas. Al comienzo de una FFT, el procesador puede
inicializar el contador de etapas a uno. Después de inicializar el
contador de etapas, el módulo FFT procede con el bloque 310 y el
procesador inicializa los contadores parciales de FFT y de bloques.
Los contadores parciales de FFT y de bloques pueden ser, por
ejemplo, inicializados a cero.
Como se muestra en el ejemplo de la figura 1, el
número de FFT parciales realizadas en cada una de las etapas de la
FFT permanece constante, pero un contador que hace un seguimiento
del índice de las muestras implicadas en cada cálculo FFT cambia
dependiendo de la etapa.
Después de la inicialización de los contadores
parciales de FFT y de bloques, el módulo FFT procede con el bloque
312 en el que el procesador inicializa un puntero de dirección de
fila. El puntero de dirección de fila determina la fila de memoria
sobre la que está operando el motor FFT. Por ejemplo, el procesador
puede determinar el valor del puntero de dirección de fila
como:
p_{fila} =
c_{k} \cdot r^{n-k} +
f_{k}
El módulo FFT procede con el bloque 314 y lee
filas de la memoria de muestras en base al valor del puntero de
dirección de fila. Por ejemplo, el procesador puede leer las filas
de una memoria de muestras y escribirlas en localizaciones en el
motor FFT. El procesador puede leer filas determinadas por el
puntero de direcciones:
a_{i} =
p_{fila} + i\cdot r^{n-k-1},
\hskip0,5cm i =
0...(r-1),
donde n representa el número total
de etapas y k representa el contador de
etapas.
Una vez que se han leído las filas en el motor
FFT, el módulo FFT procede con el bloque 320 y calcula las FFT de r
puntos sobre las muestras recuperadas. El número de FFT de r puntos
realizadas por el motor FFT en la realización es igual al número de
filas leídas de la memoria, y es igual a la raíz, r. La salida del
motor FFT se escribe en un banco de registros de r x r.
El módulos FFT procede con el bloque 322 y
aplica los factores de rotación almacenados en una memoria de
factores de rotación a los valores de salida FFT para ponderar los
valores con los factores de rotación. Los factores de rotación se
pueden aplicar usando uno o más multiplicadores, y los
multiplicadores pueden estar configurados como multiplicadores
complejos. Después de la ponderación con los factores de rotación,
los multiplicadores escriben los resultados en el banco de
registros r x r en el paso 324.
El módulo FFT procede entonces con el paso 330 y
traspone el orden de los valores en el registro de bancos. En una
realización, el procesador puede trasponer el orden de los valores
almacenados en el banco de registros. En otra realización, la
trasposición puede ocurrir cuando se hayan leído los valores del
banco de registros. Por ejemplo, la salida de los multiplicadores
se puede escribir en el banco de registros en un orden por filas, y
se puede leer del banco de registros en un orden por columnas, dando
como resultado una trasposición con relativamente poco
procesado.
El conector A 331 que se muestra en las figuras
3A y 3B se usa para conectar las partes del diagrama de flujo que
se muestra en las dos páginas de figuras y no forma una parte
sustancial del proceso 300. El módulo FFT procede con el paso 332,
a través del conector A 331, y escribe los resultados traspuestos
provenientes del banco de registros en la memoria de muestreo. Los
resultados traspuestos provenientes del banco de registros se
escriben en las filas identificadas por el puntero de direcciones
determinado en el bloque 314. Si la trasposición se realiza a
través de la conversión de columnas a filas, el módulo FFT, usando
el procesador, puede leer las columnas del banco de registros y
escribir los resultados en filas para la dirección identificada por
el puntero de direcciones.
El módulo FFT procede con el bloque 334 y
actualiza los contadores parciales FFT y de bloques. Como se ha
tratado anteriormente, cada etapa de la FFT es realizada como uno o
más bloques de FFT parciales de raíz r. En el paso 334, el módulo
FFT actualiza la FFT parcial y los contadores de bloques. El
procesador puede actualizar, por ejemplo, un contador de FFT
parcial f_{k} =
(f_{k}+1)mod(r^{n-k-1})
y si el contador FFT parcial es cero, aumentar el contador de
bloques.
El módulo FFT procede con el bloque de decisión
340 y determina si se han calculado todas las FFT parciales y todos
los bloques. No todas las FFT parciales han sido determinadas si el
contador de bloques es menor que el número de bloques de la etapa,
c_{k} < r^{n-1}. Si no se han calculado todas
las FFT parciales y todos los bloques, el módulo FFT procede con el
bloque 342 para actualizar la FFT parcial y los contadores de
bloques para proceder con las FFT parciales adicionales. El módulo
FFT hace entonces un bucle de retorno, a través del conector C 343
al bloque 310 para continuar con el procesado de las FFT parciales
para el bloque actual FFT o el siguiente bloque FFT. El conector C
343 no es una parte sustancial del proceso 300, sino que en lugar
de esto, se usa para conectar el diagrama de flujos a través de las
páginas.
Si el módulo FFT en el bloque de decisión 340
determina que se han calculado todos los bloques de la etapa
actual, el módulo FFT procede con el bloque de decisión 350 para
determinar si se han procesado n-1 etapas. Si no es
así, el módulo FFT procede con el bloque 352 para actualizar el
contador de etapas y vuelve, a través del conector B 353, al bloque
310. El conector B 353 no es una parte sustancial del proceso 300,
sino que en lugar de esto, se usa para conectar el diagrama de
flujo a través de las páginas.
Si, en el bloque de decisión 350, el módulo FFT
determina que se han procesado n-1 etapas, el módulo
FFT procede con el procesado de la etapa final de la FFT a través
del conector D 351. El módulo FFT puede implementar la etapa final
de la FFT en diferentes realizaciones. La figura 3C ilustra una
realización en la que el módulo FFT puede implementar la etapa FFT
final. La figura 3D ilustra una realización alternativa para
implementar la etapa final de la FFT. De esta manera, el módulo FFT
puede proceder desde el conector D 351 en la figura Figure 3B al
conector D 351 en la figura 3C ó 3D, pero no con ambos, porque las
figuras 3C y 3D ilustran realizaciones de la misma etapa final
FFT.
En una realización, el módulo FFT puede
implementar el proceso de la etapa final FFT que se muestra en la
figura 3C. En el proceso de la etapa final que se ilustra en la
figura 3C, el módulo FFT va a por las filas de manera consecutiva,
pero no realiza ninguna trasposición que siga a las FFT parciales.
El resultado es un resultado de FFT que tiene muestras en cada una
de las filas separadas como en la etapa inicial FFT, pero con filas
que están en orden inverso de la raíz. La ordenación es ventajosa si
hay una etapa IFFT que siga a la FFT. El módulo FFT puede tener en
cuenta el orden inverso de la raíz cuando se vaya a acceder a los
resultados FFT, o, si se desean resultados en orden, puede
implementar un motor de reordenación de filas para reordenar las
filas.
Para realizar el proceso de la etapa final que
se muestra en la figura 3C, el módulo FFT procede desde el conector
D 351 en la figura 3B al conector D 351 en la figura 3C. El módulo
FFT procede con el bloque 362 e inicializa un puntero de dirección
de fila. El puntero de dirección de fila se puede inicializar a
p_{fila} = c_{n}\cdotr, donde c_{n} se fina inicialmente a
cero, y r es la raíz de la FFT.
El módulo FFT procede entonces con la etapa
final FFT de la misma manera en la que se procesaron las etapas FFT
anteriores. En el bloque 364, el módulo FFT lee las filas de la
memoria identificadas por un puntero de fila de direcciones que se
puede calcular como: a_{i} = p_{fila} + i, i = 0,
...(r-1).
El módulo FFT procede con el bloque 366 y
calcula la FFT parcial para los valores de las filas recuperadas.
El motor FFT calcula r FFT parciales de r puntos sobre las filas
recuperadas.
El módulo FFT procede con el bloque 368 y
escribe los valores de salida de FFT parciales al banco de
registros. El módulo FFT procede con el bloque 370 y escribe los
valores del bloque de registros en las filas de memoria de muestras
que facilitaron los datos al motor FFT. El módulo FFT incrementa el
contador c_{n} en el bloque 370.
El módulo FFT procede con el bloque de decisión
372 y determina si todas las FFT parciales del bloque final se han
procesado. Si no es así, el módulo FFT vuelve al bloque 362 para
continuar el procesado de las filas de la memoria de muestras. Si
se han procesado todas las FFT parciales de la etapa final, el
módulo FFT procede desde el bloque de decisión 372 al bloque de
reordenación de filas opcional 374, en el que el módulo FFT realiza
la reordenación de filas. El módulo FFT procede entonces con el
bloque 399 y se hace la FFT de N puntos.
Como una etapa FFT final alternativa, el módulo
FFT puede en lugar de lo anterior, realizar el procesado que se
muestra en la figura 3D. En la etapa final FFT que se ilustra en el
diagrama de flujo de la figura 3D, el módulo FFT va a por las
muestras de las filas de acuerdo con el mismo orden usado para la
primera etapa de la FFT. Los resultados son filas que tienen
muestras en orden consecutivo, pero con las filas en un orden
inverso a la raíz parcial. De manera adicional, el orden inverso a
la raíz parcial solamente ocurre cuando el número de etapas de la
FFT es mayor de tres. A pesar del orden de filas inverso de la raíz
parcial, este proceso de etapa final puede tener ventajas porque
las muestras de cada fila son consecutivas.
Para realizar el proceso de la etapa final de la
figura 3D, el módulo FFT procede desde el conector D 351 de la
figura 3B al conector D 351 de la figura 3D. el módulo de la FFT
procede con el bloque 382 y fija el puntero de dirección de filas
usando el mismo algoritmo usado para la etapa inicial de la FFT.
El módulo FFT procede con el bloque 384 y lee
las filas identificadas por el puntero y procede con el bloque 386
y realiza una FFT parcial FFT sobre las filas. El módulo de la FFT
procede entonces con el bloque 388 y escribe los resultados de la
FFT parcial en el banco de registros. El módulo de la FFT procede
entonces con el bloque 390 y traspone el orden de los valores en el
banco de registros.
\newpage
\global\parskip0.900000\baselineskip
El módulo de la FFT procede después con el
bloque 392 y escribe los valores traspuestos en la memoria de
muestras. El módulo de la FFT procede después con el bloque de
decisión 396 para determinar si se han calculado todas las FFT
parciales del bloque de la etapa final. Si no se han calculado
todas, el módulo de la FFT procede con el bloque 382 y actualiza el
puntero para la siguiente FFT parcial.
Si, en el bloque de decisión 396, el módulo de
la FFT determina que se han calculado todas las FFT parciales en la
etapa final, el módulo de la FFT procede con el bloque 398 y realiza
una reordenación de filas. Como con la realización de la etapa
final anterior que se muestra 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 FFT procede con el bloque 399 y se hace
la FFT.
La figura 4 es un diagrama de bloques funcional
del contenido de la memoria y del contenido del bloque de registros
para una realización 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
usa una memoria de muestras de cuatro filas y dos columnas. El
bloque de registro está configurado como una matriz r x r, que en
este caso es una matriz de 2 x 2.
El contenido inicial de la memoria de muestras
410 se muestra dispuesto en dos columnas, 412 y 414. La memoria de
muestras se puede escribir en orden de columnas, escribiendo valores
en una primera columna 412 hasta que esté llena y después
escribiendo valores en una segunda columna 414. Cada fila de la
memoria de muestras 410 incluye los valores de muestra correctos
para realizar las FFT de 2 puntos iniciales.
Las filas a0 y a2 son inicialmente recuperadas
desde la memoria de muestras y se realizan las FFT sobre los
valores almacenados en las filas. Los resultados son ponderados con
factores de rotación apropiados, y el resultado se escribe en el
banco de registros 422. Los valores del banco de registros 422 son
después traspuestos antes de ser escritos en la memoria de
muestras. De manera similar, las filas a1 y a3 son recuperadas de la
memoria, procesadas en el motor FFT, ponderadas con factores de
rotación apropiados, y descritas en el banco de registros 424. Los
valores de registro en 424 sobrescriben los valores de registro
previos del registro 422 que ya han sido traspuestos y reescritos
en la memoria de muestras. Los nuevos valores del bloque de
registros 424 son traspuestos y reescritos en la memoria.
La memoria de muestras 430 muestra los
contenidos después de la finalización de la primera etapa y de la
primera trasposición. Los datos están aún organizados en dos
columnas 432 y 434, pero los valores están ajustados en base a la
trasposición para mantener la relación de filas de las muestras que
vayan a ser procesadas juntas.
Las filas a0 y a1 son recuperadas de manera
inicial desde la memoria de muestras y se realizan las FFT sobre
los valores almacenados en las filas. Los resultados son ponderados
con factores de rotación apropiados, y los resultados son escritos
en el banco de registros 442. Los valores del banco de registros 442
son transpuestos antes de ser escritos en la memoria de muestras.
De manera similar, las filas a2 y a3 son recuperadas de la memoria,
son procesadas en el motor FFT, ponderadas con los factores de
rotación apropiados, y escritas en el banco de registros 444. Los
valores son traspuestos y reescritos en la memoria de muestras.
La memoria de muestras 450 muestra los
contenidos después de acabar la segunda etapa y la segunda
trasposición. Desde la tercera disposición de la memoria de
muestras 450, se recuperan de manera inicial las filas a0 y a1
desde la memoria de muestras y se realizan las FFT sobre los valores
almacenados en las filas. los resultados son ponderados con
factores de rotación apropiados, y los resultados son escritos en el
banco de registros 462. Los valores del banco de registros 462 son
después traspuestos antes de ser escritos en la memoria de
muestras. De manera similar, se recuperan las filas a2 y a3 de la
memoria, se procesan en el motor FFT, se ponderan con los factores
de rotación apropiados, y se escriben en el banco de registros 464.
Los valores son traspuestos y reescritos en la memoria de muestras.
Los resultados traspuestos 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
funcionales de componentes de sistema OFDM que pueden incorporar el
módulo FFT como se describe en este documento. Se tratan un
transmisor OFDM 500 y un receptor OFDM 540. Cada uno de ellos, el
transmisor OFDM 500 o el receptor OFDM 540 se pueden implementar
dentro de un dispositivo o de un aparato configurado para comunicar
dentro de un sistema OFDM. Dichos dispositivos incluyen, pero no
están limitados a, teléfonos móviles, tales como teléfonos
celulares, asistentes digitales personales y similares, 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 FFT de la
figura 2 y el proceso 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 único circuito integrado o ASIC.
El transmisor OFDM 500 incluye una fuente de
datos 502 que de manera típica incluye 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 usando un
conversor analógico a digital (ADC) (que no se muestra) acoplado a
un dispositivo de memoria.
Un único flujo de datos puede estar
caracterizado como un flujo de datos serie. Se acopla un conversor
serie a paralelo 510 a la fuente de datos 502 y forma flujos de
datos paralelos para cada portadora ortogonal en el transmisor OFDM
500. La salida del conversor serie a paralelo 510 se acopla a un
modulador, en el que cada uno de los flujos de datos paralelos
puede modular a una portadora correspondiente de las portadoras
OFDM.
\global\parskip1.000000\baselineskip
Las múltiples portadoras OFDM moduladas son
después acopladas a un módulo IFFT 520, que puede estar configurado
a partir del módulo FFT de la figura 2, y que puede usar el proceso
de las figuras 3A y 3B. El módulo IFFT 520 transforma las
frecuencias ortogonales en un símbolo OFDM en el dominio del tiempo.
La salida del módulo IFFT 520 se acopla a un conversor paralelo a
serie 522 para convertir la salida paralelo a un único símbolo
serie. La salida del conversor paralelo a serie 522 puede acoplarse
a un transmisor 530, que puede ser un transmisor sin hilos.
La figura 5B es un diagrama de bloques funcional
de un receptor OFDM 540 que es el complemento al transmisor OFDM
500 de la figura 5A. Como fue el caso con el transmisor OFDM 500, el
receptor OFDM 540 puede ser implementado en un único circuito
integrado o ASIC.
El receptor OFDM 540 incluye un receptor 542 que
se puede configurar como un receptor sin hilos que reciba la
difusión de símbolos OFDM por parte de un transmisor. El receptor
542 puede estar configurado para amplificar, filtrar, y hacer una
conversión a una frecuencia inferior la señal recibida para
recuperar una señal en banda base.
La señal en banda base se acopla a un conversor
serie a paralelo 544 que funciona para convertir el flujo de datos
en banda base serie en flujos de datos paralelos para su procesado.
La salida del conversor serie a paralelo 544 se acopla a un módulo
FFT 550, que puede ser el módulo FFT de la figura 2 realizando el
proceso de las figuras 3A y 3B.
El módulo FFT 550 transforma el símbolo en el
dominio del tiempo en las múltiples componentes de frecuencia
ortogonales. La salida del módulo FFT 550 se acopla a un demodulador
560 que funciona para demodular las frecuencias ortogonales para
recuperar los datos.
Se acopla un conversor paralelo a serie 562 a la
salida del módulo FFT 550 y convierte los datos paralelos a un
flujo de datos serie. El flujo de datos serie se acopla a un
procesador de datos para su procesado adicional. Por ejemplo, los
datos de voz se pueden convertir a un formato analógico para su
amplificación y su entrega a un altavoz. Los datos de vídeo se
pueden procesar de manera adicional y dirigir a un dispositivo de
visualización.
Un módulo FFT que implementa una arquitectura
FFT puede realizar una transformada parcial en un número reducido
de instrucciones en comparación con las implementaciones FFT
anteriores. El módulo FFT incluye memoria de muestras que dispone
múltiples valores en una única fila. El funcionamiento FFT se
realiza sobre las muestras de una única fila y se escriben en un
bloque de registros. Se pueden usar uno o más multiplicadores
complejos para aplicar factores de rotación a los resultados FFT
parciales.
Los resultados FFT parciales ponderados en el
banco de registros son traspuestos y reescritos en la memoria de
muestras. La trasposición mantiene la relación de las entradas FFT
para una única FFT parcial en la misma fila de la memoria de
muestras. El proceso se repite para múltiples etapas de la FFT hasta
que se complete la FFT deseada.
Los pasos de un procedimiento, proceso o
algoritmo descritos junto con las realizaciones que se describen en
este documento pueden ser realizados de manera directa en hardware,
en un módulo software ejecutado por un procesador o en una
combinación de los dos.
Un módulo software puede residir en memoria RAM,
en memoria flash, en memoria no volátil, en memoria ROM, en
memoria EPROM, en memoria EEPROM, en registros, en disco duro, en un
disco extraíble, en un CD-ROM o en cualquier
formato de medio de almacenamiento conocido en la técnica. Un medio
de almacenamiento de ejemplo se acopla al procesador de forma que
el procesador pueda leer la información del mismo, y escribir
información en el mismo. En la alternativa, el medio de
almacenamiento puede ser integrado en el procesador. Además, los
varios procedimientos se pueden realizar en el orden que se muestra
en las realizaciones o se pueden realizar usando un orden de pasos
modificado. De manera adicional, se pueden omitir uno o más pasos
proceso o de procedimiento o se pueden añadir uno o más pasos de
proceso o de procedimiento a los procedimientos y procesos. Se puede
añadir un paso adicional, un bloque adicional o una acción
adicional al comienzo, al final o intermedio de los elementos
existentes de los procedimientos y procesos.
La descripción anterior de las realizaciones
descritas se proporciona para hacer posible que una persona experta
en la técnica haga o use la divulgación. Varias modificaciones a
estas realizaciones serán rápidamente obvias para los expertos en
la técnica, y los principios genéricos definidos en este documento
se pueden aplicar a otras realizaciones sin salirse del ámbito de
la divulgación. De esta manera, la divulgación no está destinada a
estar limitada a las realizaciones mostradas en este documento, sino
que esté de acuerdo con el ámbito más amplio consecuente con los
principios y las características novedosas divulgados en este
documento.
Claims (27)
1. Un procedimiento para determinar una
Transformada Rápida de Fourier (FFT) de una dimensión, de raíz r y
de r^{n} puntos, comprendiendo del procedimiento:
- a)
- escribir muestras que vayan a ser transformadas en una memoria (210) que tenga r muestras por fila;
- b)
- leer r filas de la memoria (210);
- c)
- determinar r FFT parciales de raíz r para generar r^{2} valores de FFT parciales;
- d)
- aplicar factores de rotación a los r^{2} valores de FFT parciales para generar r^{2} valores de FFT parciales ponderados:
y caracterizado por:
- e)
- escribir los r^{2} valores de FFT parciales ponderados en un banco de registros (230);
- f)
- trasponer los r^{2} valores de FFT parciales ponderados en el banco de registros (230) para generar valores traspuestos;
- g)
- escribir los valores traspuestos en la memoria (210); y
- h)
- determinar los valores de FFT a partir del contenido de la memoria (210):
- \quad
- en el que el paso c) es llevado a cabo por medio de un motor FFT en cadena de r puntos (220) que realiza una FFT parcial de r puntos sobre las muestras de cada una de las mencionadas r filas.
\vskip1.000000\baselineskip
2. El procedimiento de la reivindicación 1, en
el que la escritura de las muestras en la memoria (210) comprende
la escritura de las muestras que se vayan a transformar columna por
columna en una memoria (210) teniendo r^{n-1}
filas y r columnas.
3. El procedimiento de la reivindicación 1, en
el que la escritura de muestras en la memoria (210) comprende la
escritura de muestras complejas para la transformada en la memoria
(210).
4. El procedimiento de la reivindicación 1, en
el que la lectura de r filas de la memoria (210) comprende:
- \quad
- determinar r índices de fila; y
- \quad
- leer filas de la memoria (210) correspondientes a los r índices de fila.
\vskip1.000000\baselineskip
5. El procedimiento de la reivindicación 4, en
el que la determinación de r índices de fila comprende la
determinación de un índice de fila correspondiente a la fórmula
a_{i} = i x r^{n-k-1} donde, k
representa una etapa de la FFT, para i-0 hasta
(r-1).
6. El procedimiento de la reivindicación 1, en
el que la aplicación de factores de rotación a los r^{2} valores
FFT parciales comprende:
- \quad
- recuperar al menos un factor de rotación complejo; y calcular una multiplicación compleja del al menos uno, factor de rotación complejo con un valor correspondiente de los r^{2} valores FFT parciales.
\vskip1.000000\baselineskip
7. El procedimiento de la reivindicación 1, en
el que la escritura de los r^{2} valores de FFT parciales
ponderados en el banco de registros (230) comprende la escritura de
los r^{2} valores de FFT parciales ponderados en un banco de
registros (230) configurado como r filas y r columnas.
8. El procedimiento de la reivindicación 7, en
el que la trasposición de los r^{2} valores de FFT parciales
ponderados comprende:
- \quad
- recuperar un valor de FFT parcial ponderado correspondiente a una fila y columna del banco de registros (230);
- \quad
- trasponer los índices de fila y de columna; y
- \quad
- escribir el valor de FFT parcial ponderado en la fila y columna correspondientes a los índices traspuestos.
9. El procedimiento de la reivindicación 1 en el
que antes de leer r filas de la memoria (210), el procedimiento
comprende de manera adicional:
- ai)
- inicializar un contador de etapas;
- aii)
- inicializar un contador de bloques y un contador FFT parcial;
y en el que las r filas son recuperadas de la
memoria (210) en base a los valores de los contadores de etapas, de
bloque y contador FFT parcial;
y en el que después del paso de escribir los
valores traspuestos en la memoria (210), el procedimiento comprende
de manera adicional los pasos de:
- gi)
- actualizar el contador FFT parcial y el contador de bloques:
- gii)
- repetir los pasos aiii) al gi) en base al valor del contador de bloques y al valor del contador FFT parcial:
- giii)
- actualizar el valor del contador de etapas;
- giv)
- repetir los pasos aii) al giii) en base al valor del contador de etapas antes de determinar los valores de FFT desde el contenido de la memoria (210).
\vskip1.000000\baselineskip
10. Un aparato para determinar una transformada
rápida de Fourier de una dimensión, de raíz r y r^{n} puntos,
comprendiendo del aparato:
- a)
- un medio para escribir muestras que van a ser transformadas en una memoria (210) teniendo r muestras por fila;
- b)
- un medio para leer r filas de la memoria (210);
- c)
- un medio (220) para determinar r FFT parciales de raíz r para generar r^{2} valores de FFT parciales;
- d)
- un medio para aplicar factores de rotación a los r^{2} valores de FFT parciales para generar r^{2} valores de FFT parciales ponderados;
y caracterizado por:
- e)
- un medio para escribir los r^{2} valores de FFT parciales ponderados en un banco de registros (230);
- f)
- un medio (232) para trasponer los r^{2} valores de FFT parciales ponderados en el banco de registros (230) para generar valores traspuestos;
- g)
- un medio para escribir los valores traspuestos en la memoria (210); y
- h)
- un medio para determinar valores de FFT a partir de los contenidos de la memoria (210); en el que el medio (220) para determinar las r FFT parciales de raíz r es un motor FFT en cadena de r puntos (220) que realiza una FFT parcial de r puntos sobre las muestras de cada una de las mencionadas r filas.
\vskip1.000000\baselineskip
11. El aparato de la reivindicación 10, en el
que el medio para escribir las muestras en la memoria (210)
comprende un medio para escribir muestras que vayan a ser
transformadas columna por columna en una memoria (210) que tiene
r^{n-1} filas y r columnas.
12. El aparato de la reivindicación 10, en el
que el medio para escribir muestras en la memoria (210) comprende
un medio para escribir muestras complejas que van a ser
transformadas en la memoria (210).
13. El aparato de la reivindicación 10, en el
que el medio para leer r filas de la memoria (210) comprende:
- \quad
- un medio para determinar r índices de fila; y
- \quad
- un medio para leer las filas de la memoria (210) correspondientes a los r índices de fila.
\vskip1.000000\baselineskip
14. El aparato de la reivindicación 13, en el
que el medio para determinar r índices de fila comprende un medio
para determinar un índice de fila correspondiente a la fórmula
a_{i} = i x r^{n-k-1}, donde k
representa una etapa de la FFT, para i-0 hasta
(r-1).
15. El aparato de la reivindicación 10, en el
que el medio para aplicar los factores de rotación a los r^{2}
valores de FFT parcial comprende:
- \quad
- un medio para recuperar al menos uno de los factores de rotación complejos; y
- \quad
- un medio (250a, 250b) para calcular una multiplicación compleja de al menos un factor de rotación complejo con un correspondiente valor de los r^{2} valores de FFT parciales.
16. El aparato de la reivindicación 10, en el
que el medio para escribir los r^{2} valores de FFT parciales
ponderados en el banco de registros (230) comprende la escritura de
los r^{2} valores de FFT parciales ponderados en un banco de
registros (230) configurado como r filas y r columnas.
17. El aparato de la reivindicación 16, en el
que el medio (232) para trasponer los r^{2} valores de FFT
parciales ponderados comprende:
- \quad
- un medio para recuperar un valor de FFT parcial ponderado correspondiente a una fila y columna del banco de registros (230),
- \quad
- un medio para trasponer los índices de fila y de columna; y
- \quad
- un medio para escribir el valor de FFT parcial ponderado en la fila y columna correspondientes a los índices traspuestos.
18. El aparato de la reivindicación 10
comprendiendo de manera adicional:
- \quad
- una memoria (210) configurada para almacenar r^{n} muestras con r muestras por fila de memoria;
- \quad
- un banco de registros (230) que tiene r^{2} registros configurados como r filas de r columnas, y configurados para recibir valores de salida desde el motor FFT (220); y
- \quad
- un módulo de trasposición (232) configurado para trasponer los valores en el banco de registros (230) y para escribir valores traspuestos en las r filas desde la memoria sobre la que se opera por parte del motor FFT (220).
19. El aparato de la reivindicación 18,
comprendiendo de manera adicional:
- \quad
- una memoria de factores de rotación (240) configurada para almacenar al menos un factor de rotación FFT; y
- \quad
- al menos un multiplicados (250a, 250b) configurado para multiplicar un valor de un registro en el banco de registros (230) por un factor de rotación FFT de la memoria de factores de rotación (240), y configurado para escribir un valor de salida en los registros.
20. El aparato de la reivindicación 19, en el
que al menos un multiplicador (250a, 250b) comprende al menos un
multiplicador complejo.
21. El aparato de la reivindicación 19, en el
que el al menos un multiplicador (250a, 250b) comprende
r-1 multiplicadores complejos.
22. El aparato de la reivindicación 19, en el
que la memoria de factores de rotación (240) comprende al menos una
memoria seleccionada del grupo que comprende ROM, RAM,
NV-RAM, y memoria flash.
23. El aparato de la reivindicación 18, en el
que las r^{n} muestras comprenden r^{n} muestras complejas.
24. El aparato de la reivindicación 18, en el
que la memoria (210) comprende una RAM.
25. El aparato de la reivindicación 18, en el
que el módulo de trasposición (232) traspone los valores del banco
de registros (230) por medio de la lectura de los valores de una
manera columna por columna y escribiendo los valores en la memoria
(210) de una manera fila por fila.
26. El aparato de la reivindicación 18, en el
que el módulo de trasposición (232) traspone los valores del banco
de registros (230) por medio de la lectura de un valor de registro
correspondiente a un valor de fila y a un valor de columna del
banco de registros (230), trasponiendo el valor de fila y el valor
de columna; y escribiendo el valor de registro en el registro
correspondiente al valor de fila y al valor de columna
traspuestos.
27. Uno o más dispositivos de almacenamiento que
almacenan una o más instrucciones utilizables por un procesador,
que cuando son ejecutadas por un procesador (262) provocan que el
aparato de la reivindicación 10 realice el procedimiento de la
reivindicación 1.
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US52719603P | 2003-12-05 | 2003-12-05 | |
US527196P | 2003-12-05 |
Publications (1)
Publication Number | Publication Date |
---|---|
ES2315735T3 true ES2315735T3 (es) | 2009-04-01 |
Family
ID=34676710
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
ES04812920T Active ES2315735T3 (es) | 2003-12-05 | 2004-12-03 | Arquitectura y procedimiento 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)
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)
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 | 삼성전자주식회사 | 고속 푸리에 변환 장치 |
-
2004
- 2004-12-01 US US11/002,478 patent/US7702712B2/en not_active Expired - Fee Related
- 2004-12-03 TW TW093137558A patent/TW200534121A/zh unknown
- 2004-12-03 DE DE602004017351T patent/DE602004017351D1/de active Active
- 2004-12-03 CN CNA2004800413795A patent/CN1914607A/zh active Pending
- 2004-12-03 KR KR1020067013515A patent/KR20060096511A/ko not_active Application Discontinuation
- 2004-12-03 AU AU2004297978A patent/AU2004297978A1/en not_active Abandoned
- 2004-12-03 AR ARP040104527A patent/AR046869A1/es not_active Application Discontinuation
- 2004-12-03 AT AT04812920T patent/ATE412220T1/de not_active IP Right Cessation
- 2004-12-03 RU RU2006123934/09A patent/RU2006123934A/ru not_active Application Discontinuation
- 2004-12-03 JP JP2006542780A patent/JP2007513431A/ja active Pending
- 2004-12-03 BR BRPI0417222-1A patent/BRPI0417222A/pt not_active IP Right Cessation
- 2004-12-03 CA CA002547488A patent/CA2547488A1/en not_active Abandoned
- 2004-12-03 ES ES04812920T patent/ES2315735T3/es active Active
- 2004-12-03 MX MXPA06006391A patent/MXPA06006391A/es unknown
- 2004-12-03 EP EP04812920A patent/EP1690196B1/en not_active Not-in-force
- 2004-12-03 WO PCT/US2004/040498 patent/WO2005057423A2/en active Search and Examination
-
2006
- 2006-05-31 IL IL176050A patent/IL176050A0/en unknown
Also Published As
Publication number | Publication date |
---|---|
ATE412220T1 (de) | 2008-11-15 |
WO2005057423A2 (en) | 2005-06-23 |
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 |
MXPA06006391A (es) | 2006-08-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 |
---|---|---|
ES2315735T3 (es) | Arquitectura y procedimiento fft. | |
US7164723B2 (en) | Modulation apparatus using mixed-radix fast fourier transform | |
KR101045713B1 (ko) | 멀티―포트 혼합―라딕스 fft | |
JP2009535678A (ja) | パイプラインfftのアーキテクチャおよび方法 | |
US20050177608A1 (en) | Fast Fourier transform processor and method using half-sized memory | |
US20080288569A1 (en) | Pipelined fft processor with memory address interleaving | |
Chen et al. | Continuous-flow parallel bit-reversal circuit for MDF and MDC FFT architectures | |
US7428564B2 (en) | Pipelined FFT processor with memory address interleaving | |
US20170149589A1 (en) | Fully parallel fast fourier transformer | |
CN101149730A (zh) | 使用主要因素算法的最佳离散傅利叶转换方法及装置 | |
US20100128818A1 (en) | Fft processor | |
EP2144172A1 (en) | Computation module to compute a multi radix butterfly to be used in DTF computation | |
JP5486226B2 (ja) | ルリタニアマッピングを用いるpfaアルゴリズムに従って種々のサイズのdftを計算する装置及び方法 | |
US6728742B1 (en) | Data storage patterns for fast fourier transforms | |
EP2144173A1 (en) | Hardware architecture to compute different sizes of DFT | |
US6460061B1 (en) | 2-dimensional discrete cosine transform using a polynomial transform | |
US6631167B1 (en) | Process and device for transforming real data into complex symbols, in particular for the reception of phase-modulated and amplitude-modulated carriers transmitted on a telephone line | |
Järvinen et al. | Stride permutation networks for array processors | |
JPWO2011102291A1 (ja) | 高速フーリエ変換回路 | |
KR100602272B1 (ko) | 고속으로 데이터를 처리하는 고속 퓨리에 변환 장치 및 방법 | |
US8572148B1 (en) | Data reorganizer for fourier transformation of parallel data streams | |
JPH06260890A (ja) | 高分解能ディジタルフィルタおよびディジタルコードサンプル信号のろ波方法 | |
Baek et al. | A continuous flow mixed-radix FFT architecture with an in-place algorithm | |
CN106970895B (zh) | 基于fpga的fft装置及方法 | |
CN111291315A (zh) | 一种数据处理方法、装置及设备 |