WO2008125708A1 - Storage-free method and architecture for computing fft rotations - Google Patents

Storage-free method and architecture for computing fft rotations Download PDF

Info

Publication number
WO2008125708A1
WO2008125708A1 PCT/ES2008/000220 ES2008000220W WO2008125708A1 WO 2008125708 A1 WO2008125708 A1 WO 2008125708A1 ES 2008000220 W ES2008000220 W ES 2008000220W WO 2008125708 A1 WO2008125708 A1 WO 2008125708A1
Authority
WO
WIPO (PCT)
Prior art keywords
fft
rotations
rotation
calculation
stages
Prior art date
Application number
PCT/ES2008/000220
Other languages
Spanish (es)
French (fr)
Other versions
WO2008125708A8 (en
Inventor
Mario GARRIDO GÁLVEZ
Jesús GRAJAL DE LA FUENTE
Original Assignee
Universidad Politécnica de Madrid
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 Universidad Politécnica de Madrid filed Critical Universidad Politécnica de Madrid
Publication of WO2008125708A1 publication Critical patent/WO2008125708A1/en
Publication of WO2008125708A8 publication Critical patent/WO2008125708A8/en

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
    • G06F17/141Discrete Fourier transforms
    • G06F17/142Fast Fourier transforms, e.g. using a Cooley-Tukey type algorithm

Definitions

  • the Fourier transform is one of the fundamental operations in the field of signal processing, especially in spectral analysis.
  • the DFT Discrete Fourier Transform
  • N indicates the number of points on which the DFT is calculated
  • x [n] are the samples in the time domain
  • k is a discrete variable that represents the frequency
  • X [k] is the signal in the frequency domain, which is defined for the values of .fe from 0 to N - 1.
  • the name FFT (Fast Fourier Transform) encompasses a set of algorithms that reduce the number of operations required by the DFT.
  • the decomposition can be performed following different methods. The most common are time decimated (DIT) and frequency decimated (DIF). In this way a reduction in the number of operations is achieved, which goes from an order 0 (N 2 ) in the DFT, to an order O ( ⁇ ⁇ og r N) in the FFT.
  • Each of the n stages of the FFT is characterized by having to calculate a set of additions, subtractions and rotations in the complex plane. Addition and subtraction are carried out through elements called butterflies, and complex rotations through rotators.
  • Each butterfly receives r input data and offers r outputs that represent the FFT of r points of the inputs.
  • the 2-point FFT and the 4-point FFT can be performed by trivial rotations (0 or , 90 °, 180 ° and 270 °)
  • the most common is to use radix 2 or 4 FFTs, since in other cases it is necessary include rotators inside the butterflies to carry out the non-trivial rotations that appear.
  • N / r butterflies and N rotations are calculated.
  • all butterflies are usually calculated with a single circuit, taking advantage of the fact that the data arrives sequentially.
  • rotations it is necessary to know the angle of rotation (or any data related to it) that each of the samples that reach the rotator must be rotated.
  • the CORDIC algorithm is used to efficiently calculate complicated mathematical operations in digital systems. This algorithm is based on transforming these operations into a set of sums and displacements, which are easy to carry out in digital circuits.
  • the CORDlC algorithm breaks down the angle of rotation, ⁇ , into a sum of angles, ⁇ ⁇ :
  • m and M are respectively the indices of the first and last angle considered, and is the error of the approximation
  • is outside this range, trivial rotations of 180 ° and 90 ° are used to place it. In fact, by these rotations it is possible to leave the remaining angle of rotation, z, in the range [-45 °, 45 °].
  • V ⁇ + l V ⁇ + X ⁇ ⁇ 2 ⁇ l
  • the rotations are calculated using a modification of the CORDIC algorithm that allows simplifying the blocks of calculation of the micro-rotations with respect to other existing options [MGBS02, Hu92].
  • This invention presents a method for calculating the rotations of any decomposed FFT according to the Cooley-Tukey algorithm, and whose number of points, N, and radix, r, are both power of 2, with the following Steps:
  • circuit architecture that includes:
  • An angle generation module that includes a single counter (1) for the entire FFT, from which the rotation angles of all stages of the FFT are obtained without resorting to any previously stored data, • a module of calculation of the rotations for each of the stages of the FFT.
  • the rotations of some of the FFT stages can be trivial, in which case the rotational calculation module of said stage can be dispensed with.
  • ⁇ s 0, 0, 0, 0,. . ., 0, 1, 2, 3,. . . ,
  • sequence of angles can be generated by concatenating r sub-sequences:
  • this representation of ⁇ as a value between 0 and JV-1 is advantageous for two reasons.
  • the represented angle is exact and the number of bits used is minimal; If the angle of rotation is represented in radians, an error would always be made in the approximation because the number of bits is finite.
  • the JV value is equivalent to a full circle turn, so that, since JV is a power of 2, multiplying by 2 ⁇ radians becomes a bit shift.
  • the explained method serves to generate both the angles of the DIT decomposition (decimated in time) and those of the DIF decomposition (decimated in frequency), considering that s - 1 is the input stage of the FFT in the case of the DIT decomposition , and the exit stage in the DIF case.
  • the angle generation module represented in Figure 1 is used.
  • the angle generation module comprises, in addition to the counter (1), the following elements:
  • combinational logic (3) which operates on the counter value, m an accumulator block (4) for each stage of the FFT, for the calculation of the sequences at s .
  • each accumulator block (4) comprises the following elements:
  • the counter (1) is a binary counter that counts from 0 to N - 1 periodically. This is considered divided into parts (2) of log bits. Each of them contains the p-value of one of the stages, and s ⁇ corresponds to the input (41) of the accumulator block of said stage. Specifically, the value of p for a stage s includes the bits ranging from the position (s - 1) • Iog 2 (r) + 1 to the s • log% r of the counter, considering that the least significant bit is the bit 1
  • the register (45) will increase according to the value of p provided that the control signal (42) is not activated.
  • the less significant (s - 1) • log 2 r bits of the counter (1) perform a cyclic count from 0 to ⁇ r ⁇ 1 - 1).
  • the control signal (42) is activated which causes the register value (45) to be set to zero, which provides the values of the sequence at s .
  • the generation of the rotation angle sequences ⁇ s of all stages of the FFT is carried out by means of a simple circuit that does not require any type of memory or the realization of multiplications.
  • the next step of the procedure described is the calculation of the rotations corresponding to each of the stages of the FFT from the generated rotation angles.
  • the way to proceed is the same for each of the stages of the FFT, and is composed of the following steps:
  • the 180 ° rotations are easily calculated by changing the real and imaginary components of the input data, and the 90 ° one with a sign change and exchanging those components.
  • m is the index corresponding to the first micro rotation and M the one corresponding to the last micro rotation.
  • ⁇ ou ⁇ and you ⁇ respectively the real and imaginary part of the data resulting from applying the micro-rotations
  • the rotational calculation module of the FFT is represented in Figure 3 and is composed of the following blocks:
  • the generator of the rotation vector (6) determines whether the rotator input data has to be rotated 180 ° and / or 90 ° and obtains the rotation vector, ⁇ , all from the rotation angle, ⁇ , that Ie arrives from the angle generation module.
  • the 180 ° and / or 90 ° rotations calculation blocks (8) rotate the input data those angles (in the negative direction) if necessary, according to the value of ⁇ .
  • the rotation of 180 ° can be done by changing the sign of the real and imaginary components of the data and the one of 90 ° with a change of sign and exchanging said components.
  • FIG 4 shows the scheme of the microarotation calculation block (9).
  • the inputs (91) and (92) correspond respectively to the values of a t and b % described in the procedure, while the switch (93) is controlled by the signal ⁇ [(94). After the switch, the data is shifted and positions (95). Since the value is fixed for each micro rotation stage, the signals are wired, which does not constitute any physical element.
  • the circuit consists of an adder (96) and a subtractor (97).
  • the rotated data leaves the scaled circuit by a constant factor and, therefore, can be compensated.
  • the compensation factor will be:
  • the scaling compensation can be done exclusively using two subtractors.
  • Figure 1 Scheme of the angle generation module, which includes a counter (1), combinational logic (3), accumulator blocks (4) and scaling blocks (5).
  • Figure 2 Scheme of the accumulator block (4), which is composed of an adder (43), s a register (45) and a logic gate (44).
  • Figure 3 Scheme of the rotation calculation module, which includes a generator of the rotation vector (6), an adapter of the rotation vector (7), calculation blocks, of the 180 ° and 90 ° rotations (8) and calculation blocks of micro rotations (9).
  • Figure 4 Scheme of the micro-rotation calculation block (9), which is composed of a switch (93), shifters (95), an adder (96) and a subtractor (97).
  • the following table shows the way to obtain the rotation sequences ⁇ s from the values taken by the counter. .
  • the first two columns of the table indicate the value of the counter in decimal and in binary respectively.
  • the value of p ⁇ corresponds to that of the least significant bit of the counter, that of ⁇ i with the next, and that of P 3 with the most significant.
  • the sequence at 3 begins with O 'and increases with the value of p $.
  • the sequence is reset and then increased again with the value of P 3 until the counter returns to 0, where the sequence is reset again.
  • the adapted rotation vector is calculated in accordance with the procedure described:
  • ⁇ ' 1, -1, -1, 1, 1, 1, -1, 1, 1
  • the rotator input data is the complex number 10 + 3j
  • VOUT -10.69,. ,
  • the data to be multiplied by K will be taken, the same data shifted by 3 bits and finally the data shifted by 6 bits. They will then be subtracted from the data without shifting the offset values.
  • bit shifts are fixed, only two testers are needed to carry out the scaling compensation.
  • the presented invention can be applied in numerous communications and signal processing systems.
  • the proposed architecture is useful when it is intended to build FFTs on hardware platforms, such as FPGAs (Field Programmable Gate Array).
  • FPGAs Field Programmable Gate Array
  • the invention provides a great advantage over other designs in applications where it is necessary to calculate FFTs of a high number of points.

Landscapes

  • Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computational Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Optimization (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Analysis (AREA)
  • Theoretical Computer Science (AREA)
  • Discrete Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Algebra (AREA)
  • Complex Calculations (AREA)
  • Image Processing (AREA)
  • Editing Of Facsimile Originals (AREA)

Abstract

A storage-free method and architecture for computing FFT rotations makes it possible to compute the FFT decomposed according to the Cooley-Tukey algorithm without using stored data. The rotation angles of the FFT steps are generated by a single counter (1) and a circuit comprising adders and logic gates, eliminating the need to store data related to rotation angles. Rotations are computed using a modified CORDIC algorithm which makes it possible to simplify the micro-rotation computing blocks. Moreover, a system is disclosed which uses only two subtracters to compensate for the typical scaling of the CORDIC algorithm.

Description

Procedimiento y arquitectura sin memoria para el cálculo de las rotaciones de Ia Procedure and architecture without memory for the calculation of the rotations of Ia
FFTFFT
Sector técnico.Technical Sector
La invención que se describe se enmarca dentro del campo del procesado de se- nal, más en concreto en Io referente a Ia elaboración de algoritmos y el desarrollo de arquitecturas de circuito eficientes para llevar a cabo dichos algoritmos. >The invention described is framed within the field of signal processing, more specifically in relation to the elaboration of algorithms and the development of efficient circuit architectures for carrying out said algorithms. >
Estado de Ia técnica.State of the art.
La transformada de Fourier es una de las operaciones fundamentales en el campo del procesado de señal, especialmente en análisis espectral. Para su aplicación en sis- temas digitales se hace uso de Ia DFT (Discrete Fourier Transform), que permite realizarThe Fourier transform is one of the fundamental operations in the field of signal processing, especially in spectral analysis. For its application in digital systems, the DFT (Discrete Fourier Transform) is used, which allows
Ia transformada de Fourier sobre datos almacenados en un ordenador o muestreados mediante un conversor analógico-digital,, y cuya fórmula es:
Figure imgf000003_0001
The Fourier transform on data stored in a computer or sampled through an analog-digital converter, and whose formula is:
Figure imgf000003_0001
En Ia ecuación, el valor N indica el número de puntos sobre los que se calcula Ia DFT, x[n] son las muestras en el dominio del tiempo, k es una variable discreta que representa Ia frecuencia, y X[k] es Ia señal en el dominio de Ia frecuencia, que se define para los valores de .fe desde 0 a N — 1. 'In the equation, the value N indicates the number of points on which the DFT is calculated, x [n] are the samples in the time domain, k is a discrete variable that represents the frequency, and X [k] is the signal in the frequency domain, which is defined for the values of .fe from 0 to N - 1. '
Con el objetivo de calcular Ia DFT de forma eficiente, el nombre FFT (Fast Fourier Transform) engloba un conjunto de algoritmos que reducen el número de operaciones requerido por lá DFT. De todos ellos, el algoritmo de Cooley-Tukey [CT65] es el más utilizado. Éste se basa en descomponer Ia DFT en n = logrN etapas de cálculo en cascada, donde r es el radix empleado en Ia descomposición. Por otra parte, Ia descomposición se puede realizar siguiendo distintos métodos. Los más comunes son el diezmado en tiempo (DIT) y el diezmado en frecuencia (DIF). De esta forma se consigue una reducción en el número de operaciones, que pasa de un orden 0(N2) en Ia DFT, a un orden O(Ñ\ogr N) en Ia FFT.In order to calculate the DFT efficiently, the name FFT (Fast Fourier Transform) encompasses a set of algorithms that reduce the number of operations required by the DFT. Of all of them, the Cooley-Tukey algorithm [CT65] is the most used. This is based on decomposing the DFT into n = log r N stages of cascading calculation, where r is the radix used in the decomposition. On the other hand, the decomposition can be performed following different methods. The most common are time decimated (DIT) and frequency decimated (DIF). In this way a reduction in the number of operations is achieved, which goes from an order 0 (N 2 ) in the DFT, to an order O (Ñ \ og r N) in the FFT.
Cada una de las n etapas de Ia FFT se caracteriza por tener que calcular un conjunto de sumas, restas y rotaciones en el plano complejo. Las sumas y restas se realizan mediante elementos denominados mariposas, y las rotaciones complejas mediante rotadores.Each of the n stages of the FFT is characterized by having to calculate a set of additions, subtractions and rotations in the complex plane. Addition and subtraction are carried out through elements called butterflies, and complex rotations through rotators.
Cada mariposa recibe r datos de entrada y ofrece r salidas que representan Ia FFT de r puntos de las entradas. Como Ia FFT de 2 puntos y Ia de 4 puntos se pueden realizar mediante rotaciones triviales (0o, 90°, 180° y 270°), Io más habitual es utilizar FFTs de radix 2 ó 4, ya que en otros casos es necesario incluir rotadores dentro de las mariposas para llevar a cabo las rotaciones no triviales que aparecen.Each butterfly receives r input data and offers r outputs that represent the FFT of r points of the inputs. As the 2-point FFT and the 4-point FFT can be performed by trivial rotations (0 or , 90 °, 180 ° and 270 °), the most common is to use radix 2 or 4 FFTs, since in other cases it is necessary include rotators inside the butterflies to carry out the non-trivial rotations that appear.
En cada etapa s de Ia FFT1 s e {1 . . . n}, se calculan N/r mariposas y N rotaciones. Sin embargo, en las arquitecturas de los circuitos de cálculo de Ia FFT, todas las mariposas se suelen calcular con un único circuito, aprovechando que los datos llegan de formas secuencial. Lo mismo ocurre con las rotaciones: un único rotador es suficiente para llevar a cabo todas las rotaciones de una etapa. De esta forma, se consigue un ahorro importante de componentes. Sin embargo, en el caso de las rotaciones es necesario conocer el ángulo de rotación (o algún dato relacionado con él) que hay que rotar cada una de las muestras que van llegando al rotador.At each stage s of the FFT 1 se {1. . . n}, N / r butterflies and N rotations are calculated. However, in the architectures of the FFT calculation circuits, all butterflies are usually calculated with a single circuit, taking advantage of the fact that the data arrives sequentially. The same goes for rotations: a single rotator is enough to carry out all the rotations of a stage. In this way, significant component savings are achieved. However, in the case of rotations it is necessary to know the angle of rotation (or any data related to it) that each of the samples that reach the rotator must be rotated.
Existen dos métodos principales para Ia realización de las rotaciones de Ia FFT. El primero consiste en rotar el dato de entrada aplicando directamente Ia fórmula de una rotación, mediante el empleo de multiplicadores reales y sumadores. La otra opción, más utilizada por requerir en general menos recursos, es emplear el algoritmo CORDIC, propuesto por J.E.Volder [Vol59], y que se describe brevemente a continuación.There are two main methods for performing FFT rotations. The first is to rotate the input data by directly applying the formula of a rotation, using real multipliers and adders. The other option, more commonly used to require less resources in general, is to use the CORDIC algorithm, proposed by J.E. Volder [Vol59], and described briefly below.
El algoritmo CORDIC se utiliza para calcular de forma eficiente operaciones matemáticas complicadas en sistemas digitales. Este algoritmo se basa en transformar estas operaciones en un conjunto de sumas y desplazamientos, que son fáciles de llevar a cabo en los circuitos digitales.The CORDIC algorithm is used to efficiently calculate complicated mathematical operations in digital systems. This algorithm is based on transforming these operations into a set of sums and displacements, which are easy to carry out in digital circuits.
Si se utiliza para realizar rotaciones en el plano complejo, el algoritmo CORDlC descompone el ángulo de rotación, θ, en una suma de ángulos, ατ:If used to perform rotations in the complex plane, the CORDlC algorithm breaks down the angle of rotation, θ, into a sum of angles, α τ :
MM
donde m y M son respectivamente los índices del primer y último ángulo considerado, e es el error de Ia aproximación y
Figure imgf000005_0001
where m and M are respectively the indices of the first and last angle considered, and is the error of the approximation and
Figure imgf000005_0001
Habitualmente m = 0 y, por Io tanto, el primer ángulo es «o = tg~1(l) = 45°, Io que hace que el algoritmo sea válido para cualquier valor de θ en el intervalo [—90°, 90°]. s Cuando θ se encuentra fuera de este intervalo se utilizan las rotaciones triviales de 180° y 90° para situarlo en él. De hecho, mediante estas rotaciones es posible dejar el ángulo restante de rotación, z, en el intervalo [-45°, 45°]. De acuerdo con esta idea, es posible prescindir de Ia rotación de 45° y considerar que Ia primera rotación del algoritmo CORDIC es para el caso m = l, siendo ai = tg~1(2~1) « 26,5°.Usually m = 0 and, therefore, the first angle is «o = tg ~ 1 (l) = 45 °, which makes the algorithm valid for any value of θ in the interval [—90 °, 90 ° ]. s When θ is outside this range, trivial rotations of 180 ° and 90 ° are used to place it. In fact, by these rotations it is possible to leave the remaining angle of rotation, z, in the range [-45 °, 45 °]. In accordance with this idea, it is possible to dispense with the 45 ° rotation and consider that the first rotation of the CORDIC algorithm is for the case m = l, where ai = tg ~ 1 (2 ~ 1 ) «26.5 °.
io La rotación del dato de entrada al rotador se lleva a cabo mediante una serie de etapas llamadas microrrotaciones, en cada una de las cuales se rota un ángulo aτ de acuerdo con las ecuaciones:io The rotation of the input data to the rotator is carried out through a series of stages called micro rotations, in each of which an angle to τ is rotated according to the equations:
X1+1 = xτ - yτδι2 X 1 + 1 = x τ - y τ δ ι 2 ~ τ
Vτ+l = Vτ + Xιδτ2~l Vτ + l = Vτ + Xιδ τ 2 ~ l
i5 donde S1 indica el sentido de Ia microrrotación y se calcula de acuerdo con:i5 where S 1 indicates the direction of the micro rotation and is calculated according to:
S1 — SIgTi(Z1) Zι+i — Zi — S1 aτ S 1 - SIgTi (Z 1 ) Zι + i - Zi - S 1 a τ
siendo sιgn(η) = 1 si η > 0, y sιgn(η) = — 1 si η < 0. Como S1 E {— 1, 1}, se realiza una rotación en cada una de las etapas, bien en sentido positivo o bien en sentido negativo. 20 Ello da lugar a una ganancia constante en el rotador, que puede ser compensada, en caso de que sea necesario, simplemente multiplicando las muestras de salida por:where sιgn (η) = 1 if η> 0, and sιgn (η) = - 1 if η <0. As S 1 E {- 1, 1}, a rotation is made in each of the stages, either in the direction positive or in a negative sense. 20 This results in a constant gain in the rotator, which can be compensated, if necessary, simply by multiplying the output samples by:
M M
Figure imgf000005_0002
ι=m i=m
MM
Figure imgf000005_0002
ι = mi = m
Para poder rotar adecuadamente cada uno de los datos de entrada al rotador se almacenan en una memoria los valores de los vectores de rotaciones, <5, correspondientesIn order to properly rotate each of the rotator input data, the corresponding rotation vector values are stored in a memory, <5,
25 a cada una de las rotaciones que debe realizar el rotador. Estos datos son leídos de Ia memoria secuencialmente de tal forma que cada dato de entrada al rotador sea rotado el ángulo de rotación correspondiente. Cuando el número de rotaciones que realiza el rotador de una cierta etapa de Ia FFT es elevado, Ia memoria de rotaciones deberá almacenar una gran cantidad de datos, Io que repercute negativamente en el área y en Ia velocidad de Ia FFT. Este problema es análogo en el caso de emplear multiplicadores para calcular las rotaciones, puesto que25 to each of the rotations that the rotator must perform. These data are read from the memory sequentially in such a way that each input data to the rotator is rotated by the corresponding rotation angle. When the number of rotations performed by the rotator of a certain stage of the FFT is high, the rotation memory must store a large amount of data, which negatively affects the area and the speed of the FFT. This problem is similar in the case of using multipliers to calculate the rotations, since
5 deben ser almacenados los valores del seno y el coseno de los ángulos de rotación.5 The sine and cosine values of the rotation angles must be stored.
Ciertas investigaciones han conseguido reducir Ia memoria de rotaciones a log^N [YCC06], ó 0,5N [CP03]. Además, se han utilizado otros métodos de descomposición de Ia FFT (distintos al algoritmo de Cooley-Tukey) para reducir el número de rotaciones que hay que calcular, como ocurre en [ZH05], donde se emplea el método de descomposición0 en factores primos, el cual sólo es aplicable cuando el número de puntos de Ia FFT se puede representar como producto de factores primos entre sí.Certain investigations have managed to reduce the memory of rotations to log ^ N [YCC06], or 0.5N [CP03]. In addition, other methods of decomposition of the FFT (other than the Cooley-Tukey algorithm) have been used to reduce the number of rotations to be calculated, as in [ZH05], where the decomposition method0 in prime factors is used, which is only applicable when the number of points of the FFT can be represented as a product of prime factors to each other.
Por el contrario, con el procedimiento y Ia arquitectura propuestos se consigue reemplazar las memorias de rotaciones de todas las etapas de Ia FFT por un sencillo circuito compuesto por un contador (único para toda Ia FFT), y unos pocos sumadores y puertass lógicas. Así, a partir del valor del contador se calculan las rotaciones de todas las etapas de Ia FFT aprovechando características comunes entre ellas. De esta forma, se consigue mejorar significativamente las prestaciones de Ia FFT, principalmente en cuanto a área. Además, Ia mejora es más significativa cuanto mayor sea el número de puntos de Ia FFT que se desea calcular, Io que hace que este procedimiento sea muy adecuado para elo cálculo de FFTs de un elevado número de puntos.On the contrary, with the proposed procedure and architecture, it is possible to replace the rotation memories of all stages of the FFT with a simple circuit consisting of a counter (unique for the entire FFT), and a few adders and logic gates. Thus, from the counter value, the rotations of all stages of the FFT are calculated taking advantage of common characteristics between them. In this way, it is possible to significantly improve the performance of the FFT, mainly in terms of area. In addition, the improvement is more significant the greater the number of points of the FFT that it is desired to calculate, which makes this procedure very suitable for the calculation of FFTs of a high number of points.
Por otra parte, las rotaciones se calculan empleando una modificación del algoritmo CORDIC que permite simplificar los bloques de cálculo de las microrrotaciones respecto a otras opciones existentes [MGBS02, Hu92].On the other hand, the rotations are calculated using a modification of the CORDIC algorithm that allows simplifying the blocks of calculation of the micro-rotations with respect to other existing options [MGBS02, Hu92].
Descripción detallada de Ia invención s Esta invención presenta un procedimiento para el cálculo de las rotaciones de cualquier FFT descompuesta según el algoritmo Cooley-Tukey, y cuyo número de puntos, N, y radix, r, son ambos potencia de 2, con los siguientes pasos:DETAILED DESCRIPTION OF THE INVENTION s This invention presents a method for calculating the rotations of any decomposed FFT according to the Cooley-Tukey algorithm, and whose number of points, N, and radix, r, are both power of 2, with the following Steps:
« obtener las secuencias de ángulos de rotación de todas las etapas de Ia FFT,«Obtain the sequences of rotation angles of all stages of the FFT,
• calcular las rotaciones correspondientes a cada una de las etapas de Ia FFT a partir de los ángulos de rotación generados, donde a partir de un único contador se obtienen las secuencias de ángulos de rotacipn , de todas las etapas de Ia FFT. Este procedimiento tiene Ia ventaja de que no es necesario recurrir a ningún dato previamente almacenado.• calculate the rotations corresponding to each of the stages of the FFT from of the generated rotation angles, where from a single counter the sequences of rotation angles are obtained, from all stages of the FFT. This procedure has the advantage that it is not necessary to resort to any previously stored data.
Para implementar el procedimiento se utiliza una arquitectura de circuito que comprende:To implement the procedure, a circuit architecture is used that includes:
• un módulo de generación de ángulos que incluye un único contador (1 ) para toda Ia FFT, a partir del cual se obtienen los ángulos de rotación de todas las etapas de Ia FFT sin necesidad de recurrir a ningún dato almacenado previamente, • un módulo de cálculo de las rotaciones para cada una de las etapas de Ia FFT. Como se verá posteriormente, las rotaciones de alguna de las etapas de Ia FFT pueden resultar triviales, en cuyo caso se puede prescindir del módulo de cálculo de las rotaciones de dicha etapa.• An angle generation module that includes a single counter (1) for the entire FFT, from which the rotation angles of all stages of the FFT are obtained without resorting to any previously stored data, • a module of calculation of the rotations for each of the stages of the FFT. As will be seen later, the rotations of some of the FFT stages can be trivial, in which case the rotational calculation module of said stage can be dispensed with.
Como se explicó anteriormente, una FFT de N puntos puede ser dividida en n = logrN etapas, donde r es el radix de Ia FFT. Asumiendo que tanto N como r son potencia de 2, Ia secuencia de ángulos, (de longitud N) de cualquier etapa s de lá FFT, s e {1 . . . n}, está, formada por N/rs secuencias iguales de longitud L = rs.As explained above, an FFT of N points can be divided into n = log r N stages, where r is the radix of the FFT. Assuming that both N and r are power of 2, the sequence of angles, (of length N) of any stage s of the FFT, is {1. . . n}, is, formed by N / r s equal sequences of length L = r s .
La secuencia de ángulos depende del radix elegido en Ia descomposición de Ia FFT. Así, para radix 2, Ia secuencia de longitud L será:The sequence of angles depends on the radix chosen in the decomposition of the FFT. Thus, for radix 2, the length sequence L will be:
αs = 0, 0, 0, 0, . . ., 0, 1, 2, 3, . . . ,α s = 0, 0, 0, 0,. . ., 0, 1, 2, 3,. . . ,
y para radix 4,and for radix 4,
αs =
Figure imgf000007_0001
α s =
Figure imgf000007_0001
Generalizando estas expresiones para cualquier valor de radix, la secuencia de ángulos se puede generar concatenando r subsecuencias:By generalizing these expressions for any radix value, the sequence of angles can be generated by concatenating r sub-sequences:
; 0,^, . . . , (T-"-1 - i)P ; 0, ^,. . . , (T - "- 1 - i) P
donde p = 0, 1, 2, . . . , ?* - 1. Para normalizar las secuencia de todas las etapas de Ia FFT al mínimo ángulo de rotación, Θmιn{rad) = 2π/N, los valores de las secuencias deben ser multiplicados por q = N/ra o, Io que es Io mismo, desplazados Iog2(q) bits:where p = 0, 1, 2,. . . ? * - 1. To normalize the sequence of all stages of the FFT to the minimum angle of rotation, Θ mιn {rad) = 2π / N, the values of the sequences must be multiplied by q = N / r a o, which is the same, shifted Iog 2 (q) bits:
θs = q • as = 0, 0, 0, 0, . . ., 0, q, 2g, 3g, . . .θ s = q • a s = 0, 0, 0, 0,. . ., 0, q, 2g, 3g,. . .
29-i 23-1 La secuencia θs contiene los ángulos de rotación, θ, de Ia etapa s de Ia FFT, y cada ángulo de rotación θ e [0, JV - 1], siendo su equivalencia en radianes: 2 9-i 2 3 - 1 The sequence θ s contains the rotation angles, θ, of the s stage of the FFT, and each rotation angle θ e [0, JV - 1], its equivalence in radians being:
, 0(d) = ~ÉI, 0 ( d) = ~ HE
Desde el punto de vista digital, esta representación de θ como un valor entre 0 y JV — 1 resulta ventajosa por dos motivos. En primer lugar, el ángulo representado es exacto y el número de bits utilizado es mínimo; si el ángulo de rotación se representara en radianes siempre se cometería un error en Ia aproximación debido a que el número de bits es finito. Por otra parte, el valor JV equivale a una vuelta de circunferencia completa, por Io que, como JV es potencia de 2, multiplicar por 2π radianes se transforma en un desplazamiento de bits.From the digital point of view, this representation of θ as a value between 0 and JV-1 is advantageous for two reasons. First, the represented angle is exact and the number of bits used is minimal; If the angle of rotation is represented in radians, an error would always be made in the approximation because the number of bits is finite. On the other hand, the JV value is equivalent to a full circle turn, so that, since JV is a power of 2, multiplying by 2π radians becomes a bit shift.
Considerando ahora que se dispone de un contador, para una etapa cualquiera, s, de Ia FFT, Ia generación de Ia secuencia de ángulos de rotación de dicha etapa, θs, se realiza siguiendo los siguientes pasos:Considering now that a counter is available, for any stage, s, of the FFT, the generation of the sequence of rotation angles of said stage, θ s , is performed following the following steps:
• tomar los s • Iog2τ bits menos significativos proporcionados por el contador,• take the s • Iog 2 τ least significant bits provided by the counter,
" de los bits tomados, multiplicar los (s — 1) logir bits menos significativos por los logir más significativos, obteniendo así los valores de Ia secuencia as. Los bits más significativos se corresponden con el valor de p mientras que los menos significativos contarán de 0 a (rs~x — 1)."of the bits taken, multiply the (s - 1) achieve less significant bits by the most significant ones, thus obtaining the values of the sequence to s . The most significant bits correspond to the value of p while the least significant they will count from 0 to (r s ~ x - 1).
" multiplicar el resultado por N/rs, obteniendo así los valores de Ia secuencia θs."multiply the result by N / r s , thus obtaining the values of the sequence θ s .
El método explicado sirve para generar tanto los ángulos de Ia descomposición DIT (Diezmado en tiempo) como los de Ia descomposición DIF (Diezmado en frecuencia), considerando que s — 1 es Ia etapa de entrada de Ia FFT en el caso de Ia descomposición DIT, y Ia etapa de salida en el caso DIF. Para implementar Ia generación de ángulos se emplea el módulo de generación de ángulos representado en Ia figura 1. El módulo de generación de ángulos comprende, además del contador (1), los siguientes elementos:The explained method serves to generate both the angles of the DIT decomposition (decimated in time) and those of the DIF decomposition (decimated in frequency), considering that s - 1 is the input stage of the FFT in the case of the DIT decomposition , and the exit stage in the DIF case. To implement the generation of angles, the angle generation module represented in Figure 1 is used. The angle generation module comprises, in addition to the counter (1), the following elements:
• lógica combinacional (3), que opera sobre el valor del contador, m un bloque acumulador (4) por cada etapa de Ia FFT, para el cálculo de las secuencias as.• combinational logic (3), which operates on the counter value, m an accumulator block (4) for each stage of the FFT, for the calculation of the sequences at s .
Por otra parte, como se puede observar en Ia figura 2, cada bloque acumulador (4) comprende los siguientes elementos:On the other hand, as can be seen in Figure 2, each accumulator block (4) comprises the following elements:
• un sumador (43), que permite ir actualizando los valores de Ia secuencia aa, m un registro (45) que proporciona los valores de Ia secuencia as,• an adder (43), which allows updating the values of the sequence at a , m a register (45) that provides the values of the sequence at s ,
• una puerta lógica (44) para el control del bloque acumulador.• a logic gate (44) for the control of the accumulator block.
El contador (1) es un contador binario que cuenta de 0 a N - 1 de forma periódica. Éste se considera dividido en s partes (2) de logir bits. Cada una de ellas contiene el valor p de una de las etapas, y s^ corresponde con Ia entrada (41 ) del bloque acumulador de dicha etapa. En concreto, el valor de p para una etapa s incluye los bits que van desde Ia posición (s - 1) Iog2(r) + 1 a Ia s • log%r del contador, considerando que el bit menos significativo es el bit 1.The counter (1) is a binary counter that counts from 0 to N - 1 periodically. This is considered divided into parts (2) of log bits. Each of them contains the p-value of one of the stages, and s ^ corresponds to the input (41) of the accumulator block of said stage. Specifically, the value of p for a stage s includes the bits ranging from the position (s - 1) Iog 2 (r) + 1 to the s • log% r of the counter, considering that the least significant bit is the bit 1
Según Ia estructura del bloque acumulador (4), el registro (45) se irá incrementando de acuerdo con el valor de p siempre que no se active Ia señal de control (42).According to the structure of the accumulator block (4), the register (45) will increase according to the value of p provided that the control signal (42) is not activated.
Por otra parte, los (s - 1) • log2r bits menos significativos del contador (1 ) realizan una cuenta cíclica desde 0 hasta {r^1 - 1). Cuando Ia cuenta de estos bits vuelve a cero, se activa Ia señal de control (42) que hace que se ponga a cero el valor del registro (45), que va proporcionando los valores de Ia secuencia as.On the other hand, the less significant (s - 1) • log 2 r bits of the counter (1) perform a cyclic count from 0 to {r ^ 1 - 1). When the count of these bits returns to zero, the control signal (42) is activated which causes the register value (45) to be set to zero, which provides the values of the sequence at s .
Finalmente, los bloques de escalado (5) no incluyen ningún componente lógico. Ello se debe a que, al ser N y r potencias de 2, el factor de escalado q = N/rs representa únicamente un desplazamiento fijo de bits, para Io cual sólo hay que ajustar el interconexionado de los bits con Ia etapa siguiente.Finally, the scaling blocks (5) do not include any logical components. This is because, being N and r powers of 2, the scaling factor q = N / r s represents only a fixed bit offset, for which only the interconnection of the bits with the next stage must be adjusted.
Así, Ia generación de las secuencias de ángulos de rotación θs de todas las etapas de Ia FFT se lleva a cabo mediante un sencillo circuito que no requiere ningún tipo de memoria ni Ia realización de multiplicaciones. Además, sólo es necesario el empleo de un único contador para toda Ia FFT, a partir de cual se generan todas las secuencias de ángulos de rotación.Thus, the generation of the rotation angle sequences θ s of all stages of the FFT is carried out by means of a simple circuit that does not require any type of memory or the realization of multiplications. In addition, it is only necessary to use a single counter for the entire FFT, from which all the rotation angle sequences are generated.
El siguiente paso del procedimiento descrito es el cálculo de las rotaciones correspon- ' dientes a cada una de las etapas de Ia FFT a partir de los ángulos de rotación generados. La forma de proceder es Ia misma para cada una de las etapas de Ia FFT, y se compone de los siguientes pasos:The next step of the procedure described is the calculation of the rotations corresponding to each of the stages of the FFT from the generated rotation angles. The way to proceed is the same for each of the stages of the FFT, and is composed of the following steps:
" determinar si se deben realizar las rotaciones de 180° y 90°,"determine whether 180 ° and 90 ° rotations should be performed,
" calcular el vector de rotaciones, δ, u obtener el vector de rotaciones adaptado δ',"calculate the rotation vector, δ, or obtain the adapted rotation vector δ ',
• rotar el dato de entrada al rotador.• rotate the rotator input data.
En primer lugar, para cada ángulo de rotación θ perteneciente a Ia secuencia θs se determina si se deben realizar las rotaciones de 180° y 90° con el fin de situar el ángulo restante de rotación, z, en el intervalo de definición del algoritmo CORDIC. Nótese que como θ(rad) = -2πθ/N, las rotaciones deberán realizarse en sentido negativo.In the first place, for each rotation angle θ belonging to the sequence θ s it is determined whether the 180 ° and 90 ° rotations must be performed in order to place the remaining rotation angle, z, in the algorithm definition interval CORDIC Note that as θ (rad) = -2πθ / N, the rotations should be done in the negative direction.
El hecho de representar θ como un valor entero, θ e [0, JV - 1], siendo JV potencia de 2, presenta Ia ventaja de que en Ia arquitectura del circuito resulta muy sencillo determinar las rotaciones de 180° y 90° que permiten situar el ángulo restante de rotación z en el intervalo [— 45° , 45°]. Para ello únicamente hay que sumar al conjunto de los dos bits más t significativos de θ el siguiente bit más significativo. De esta forma, los dos bits resultantes de Ia operación indicarán respectivamente si se deben realizar las rotaciones de 180° y 90°. Además, z se obtiene directamente tomando todos los bits de θ excepto los dos más significativos y considerando que el z está expresado en complemento a 2, y cambiado de signo respecto al ángulo en radianes.The fact of representing θ as an integer value, θ e [0, JV - 1], being JV power of 2, has the advantage that in the circuit architecture it is very easy to determine the 180 ° and 90 ° rotations that allow place the remaining angle of rotation z in the interval [- 45 °, 45 °]. To this must be added only to the set of the two most significant bits more significant than θ t the next bit. In this way, the two bits resulting from the operation will indicate respectively if the 180 ° and 90 ° rotations must be performed. In addition, z is obtained directly by taking all the bits of θ except the two most significant and considering that z is expressed in complement to 2, and changed sign with respect to the angle in radians.
A partir de z se determina el vector de rotaciones, δ, de acuerdo con:From z the rotation vector, δ, is determined according to:
δt = -sign(zt) Z1^-I = Z1 + δt a% δ t = -sign (z t ) Z 1 ^ -I = Z 1 + δ t a %
siendo sign(η) = 1 si η > 0, y sign(η) = -1 si η < 0. Este cálculo se realiza a partir de Z0 = z en el caso de emplear Ia microrrotación de αo = 45° (m = 0); y a partir de z\ — z si se considera que Ia primera microrrotación es Ia de Ct1 = tg~1(2~1) ∞ 26,5°. El cambio de signo respecto al procedimiento habitual del CORDIC se debe únicamente a que, como se ha dicho anteriormente, Ia representación del ángulo en el intervalo [0, N - I] tiene signo contrario a Ia representación del ángulo en radianes.being sign (η) = 1 if η> 0, and sign (η) = -1 if η <0. This calculation is made from Z 0 = z in the case of using the micro rotation of αo = 45 ° (m = 0); and from z \ - z yes the first micro rotation is considered to be that of Ct 1 = tg ~ 1 (2 ~ 1 ) ∞ 26.5 °. The change of sign with respect to the usual procedure of the CORDIC is only due to the fact that, as mentioned above, the representation of the angle in the interval [0, N-I] has a sign opposite to the representation of the angle in radians.
Las, rotaciones de 180° se calculan fácilmente cambiando de signo las componentes real e imaginaria de los datos de entrada, y Ia de 90° con un cambio de signo e intercambiando dichas componentes.The 180 ° rotations are easily calculated by changing the real and imaginary components of the input data, and the 90 ° one with a sign change and exchanging those components.
Habitualmente, a partir de los valores de d, y una vez aplicadas las rotaciones de 180° y 90° sobre los datos de entrada al rotador, se procede a realizar las microrrotaciones de acuerdo con las ecuaciones:Usually, from the values of d, and once the 180 ° and 90 ° rotations have been applied to the rotator input data, the micro rotations are carried out according to the equations:
xι+i - X1 - yιδι2 Vι+i = Vι + «A2"1 x ι + i - X 1 - y ι δ ι 2 ~ ι Vι + i = Vι + «A2 " 1
Sin embargo, es posible modificar este procedimiento para reducir Ia complejidad del módulo de cálculo de las rotaciones. Con esta idea, se propone un paso en el que se obtiene el vector de rotaciones adaptado, δ', a partir del , vector de rotaciones, δ, de Ia siguiente forma:However, it is possible to modify this procedure to reduce the complexity of the rotation calculation module. With this idea, a step is proposed in which the adapted rotation vector, δ ', is obtained from the rotation vector, δ, in the following way:
δ[ = -δt - δt-ι, ι = m + l, . .{ . , M δM+l = δM donde m es el índice correspondiente a la primera microrrotación y M el correspondiente a Ia última microrrotación.δ [= -δ t - δ t -ι, ι = m + l,. . { . , M δM + l = δ M where m is the index corresponding to the first micro rotation and M the one corresponding to the last micro rotation.
Una vez- obtenido el vector δ', el cálculo de las microrrotaciones se realiza de Ia siguiente forma:Once the vector δ 'is obtained, the calculation of the micro-rotations is carried out in the following way:
+ 6, : -1+ 6,: -1
{ { h + a, Si ^i = = 1{{h + a, Si ^ i = = 1
Figure imgf000011_0001
siendo O1 y bz las entradas de Ia ¿-ésima etapa de microrrotación. Las entradas a Ia primera etapa de microrrotación, am y bm , valdrán:
Figure imgf000011_0001
where O 1 and b z are the inputs of the ¿th micro-rotation stage. The entries to the first micro-rotation stage, at m and b m , will be worth:
O-m = XlN bm = V IN siendo XIN e VIN respectivamente Ia parte real e imaginaria del dato sobre el que hay 5 que realizar las microrrotaciones. Por otra parte, χouτ e youτ, respectivamente Ia parte real e imaginaria del dato resultante de aplicar las microrrotaciones, valdrán:Om = XlN b m = V IN being XIN and VIN respectively the real and imaginary part of the data on which there are 5 micro-rotations. On the other hand, χouτ and youτ, respectively the real and imaginary part of the data resulting from applying the micro-rotations, will be worth:
Figure imgf000012_0001
Figure imgf000012_0001
El módulo de cálculo de las rotaciones de Ia FFT se representa en Ia figura 3 y se io compone de los siguientes bloques:The rotational calculation module of the FFT is represented in Figure 3 and is composed of the following blocks:
" un generador del vector de rotaciones (6),"a generator of the rotation vector (6),
" un adaptador del vector de rotaciones (7),"a rotation vector adapter (7),
" bloques de cálculo de las rotaciones de 180° y 90° (8),"180 ° and 90 ° rotation calculation blocks (8),
" varios bloques de cálculo de las microrrotaciones (9)."several blocks of calculation of micro rotations (9).
i5 El generador del vector de rotaciones (6) determina si hay que rotar 180° y/o 90° el dato de entrada al rotador y obtiene el vector de rotaciones, δ, todo ello a partir del ángulo de rotación, θ, que Ie llega del módulo de generación de ángulos.i5 The generator of the rotation vector (6) determines whether the rotator input data has to be rotated 180 ° and / or 90 ° and obtains the rotation vector, δ, all from the rotation angle, θ, that Ie arrives from the angle generation module.
A continuación, el adaptador del vector de rotaciones (7) calcula el vector de rotaciones adaptado, δ', a partir del vector de rotaciones, δ, de acuerdo con el procedimiento 20 descrito. Desde el punto de vista digital, los valores de δt y δt', se representan con un bit, que puede tomar el valor '0' ó '1', en lugar de los valores '-1' y T descritos en el procedimiento. Teniendo esto en cuenta, en Ia ¡mplementación de Ia arquitectura, el procedimiento se transforma en: δm' = δm Next, the rotation vector adapter (7) calculates the adapted rotation vector, δ ', from the rotation vector, δ, according to the procedure described 20. From the digital point of view, the values of δ t and δ t 'are represented with a bit, which can take the value' 0 'or' 1 ', instead of the values'-1' and T described in the process. Taking this into account, in the implementation of the architecture, the procedure is transformed into: δ m '= δ m
2s δ[ = S1 XOR δt-i, i = m + l, . . . ,'M δM' +i = δM . Los bloques de cálculo de las rotaciones de 180° y/o 90° (8) rotan el dato de entrada esos ángulos (en sentido negativo) en caso de que sea necesario, de acuerdo con el valor de θ. La rotación de 180° se puede realizar cambiando de signo las componentes real e imaginaria del dato y Ia de 90° con un cambio de signo e intercambiando dichas componentes.2s δ [= S 1 XOR δ t -i, i = m + l,. . . , ' M δ M ' + i = δ M. The 180 ° and / or 90 ° rotations calculation blocks (8) rotate the input data those angles (in the negative direction) if necessary, according to the value of θ. The rotation of 180 ° can be done by changing the sign of the real and imaginary components of the data and the one of 90 ° with a change of sign and exchanging said components.
En Ia figura 4 se presenta el esquema del bloque de cálculo de las microrrotaciones (9). Las entradas (91 ) y (92) se corresponden respectivamente con los valores de at y b% descritos en el procedimiento, mientras que el conmutador (93) está controlado por Ia señal δ[ (94). Después del conmutador, los datos son desplazados i posiciones (95). Como el valor es fijo para cada etapa de microrrotación, las señales están cableadas, Io que no constituye ningún elemento físico. Finalmente, el circuito se compone dé un sumador (96) y de un restador (97).Figure 4 shows the scheme of the microarotation calculation block (9). The inputs (91) and (92) correspond respectively to the values of a t and b % described in the procedure, while the switch (93) is controlled by the signal δ [(94). After the switch, the data is shifted and positions (95). Since the value is fixed for each micro rotation stage, the signals are wired, which does not constitute any physical element. Finally, the circuit consists of an adder (96) and a subtractor (97).
Así, se consigue simplificar los bloques de cálculo de las microrrotaciones (9) siendo únicamente necesario un conmutador (93), un sumador'(96), y un restador (97) en cada uno de ellos.Thus, it is possible to simplify the calculation blocks of the micro-rotations (9) being only necessary a switch (93), an adder '(96), and a subtractor (97) in each of them.
Como se dijo anteriormente, el dato rotado sale del circuito escalado por un factor constante y, por Io tanto, puede ser compensado. En el caso de m = 1 el factor de compensación será:As stated earlier, the rotated data leaves the scaled circuit by a constant factor and, therefore, can be compensated. In the case of m = 1 the compensation factor will be:
MM
K = J[ cos(tg-1(2-')) « 0,8588K = J [cos (tg- 1 (2- ')) «0.8588
considerando que cos(tg~1(2^1)) « 1,Vi > M, que es una buena aproximación para M ≥ 7. Así, teniendo en cuenta que:considering that cos (tg ~ 1 (2 ^ 1 )) «1, Vi> M, which is a good approximation for M ≥ 7. Thus, taking into account that:
K = 0,8588 ∞ 0,8594 = 1 - 2~3 - 2~6 K = 0.8588 ∞ 0.8594 = 1 - 2 ~ 3 - 2 ~ 6
Ia compensación del escalado se puede realizar exclusivamente empleando dos resta- dores.The scaling compensation can be done exclusively using two subtractors.
Por Io tanto, en el caso de que el primer bloque de cálculo de las microrrotaciones sea el correspondiente a a\ ~ tg'1(2), se puede añadir un módulo adicional de compensación del escalado que consiste en dos restadores. Breve descripción de los dibujosTherefore, in the case that the first block of calculation of the micro-rotations is the one corresponding to a \ ~ tg '1 (2 ~ ι ), an additional scaling compensation module consisting of two subtractors can be added. Brief description of the drawings
Figura 1 : Esquema del rπódulo de generación de ángulos, que incluye un contador (1), lógica combinacional (3), bloques acumuladores (4) y bloques de escalado (5).Figure 1: Scheme of the angle generation module, which includes a counter (1), combinational logic (3), accumulator blocks (4) and scaling blocks (5).
Figura 2: Esquema del bloque acumulador (4), que se compone de un sumador (43), s un registro (45) y una puerta lógica (44).Figure 2: Scheme of the accumulator block (4), which is composed of an adder (43), s a register (45) and a logic gate (44).
Figura 3: Esquema del módulo de cálculo de las rotaciones, que incluye un generador del vector de rotaciones (6), un adaptador del vector de rotaciones (7), bloques de cálculo , de las rotaciones de 180° y 90° (8) y bloques de cálculo de las microrrotaciones (9).Figure 3: Scheme of the rotation calculation module, which includes a generator of the rotation vector (6), an adapter of the rotation vector (7), calculation blocks, of the 180 ° and 90 ° rotations (8) and calculation blocks of micro rotations (9).
Figura 4: Esquema del bloque de cálculo de las microrrotaciones (9), que se compone io de un conmutador (93), desplazadores (95), un sumador (96) y un restador (97).Figure 4: Scheme of the micro-rotation calculation block (9), which is composed of a switch (93), shifters (95), an adder (96) and a subtractor (97).
Exposición de un modo de realización de Ia invenciónExhibition of an embodiment of the invention
A continuación se explica Ia invención para el caso en el que se calculen las rotaciones de una FFT de 8 puntos y radix 2. Como N = 8, el contador contará cíclicamente de 0 a 7, y se incrementará en cada ciclo de reloj. El número de etapas de Ia FFT considerada i5 será n = logrN = 3 y, por Io tanto, s e {1, 2, 3}. , . 'Next, the invention is explained for the case in which the rotations of an FFT of 8 points and radix 2 are calculated. As N = 8, the counter will count cyclically from 0 to 7, and will be increased in each clock cycle. The number of stages of the FFT considered i5 will be n = log r N = 3 and, therefore, be {1, 2, 3}. . '
La siguiente tabla muestra Ia forma de obtener las secuencias de rotación θs a partir de los valores que va tomando el contador. , .The following table shows the way to obtain the rotation sequences θ s from the values taken by the counter. .
Contador s =1 s =2 s =3Counter s = 1 s = 2 s = 3
Dec. Bin. Pi ai θl P2 α2 - "02 Pz α3 θ3 Dec. Bin. Pi ai θl P2 α 2 - " 02 Pz α 3 θ 3
0 000 0 0 0 0 0 0 0 0 00 000 0 0 0 0 0 0 0 0 0
1 001 1 0 0 0 0 0 0 0 01 001 1 0 0 0 0 0 0 0 0
2 010 0 0 0 1 0 0 0 0 02 010 0 0 0 1 0 0 0 0 0
3 011 1 0 0 1 1 2 0 0 03 011 1 0 0 1 1 2 0 0 0
4 100 0 0 0 0 0 0 1 0 oí.4 100 0 0 0 0 0 0 1 0 I heard.
25 , 5 101 1 0 0 0 0 0 1 1 125, 5 101 1 0 0 0 0 0 1 1 1
6 110 0 0 0 1 0 0 1 2 26 110 0 0 0 1 0 0 1 2 2
7 111 1 0 0 1 1 2 1 3 3 Las dos primeras columnas de Ia tabla indican el valor del contador en decimal y en binario respectivamente. Como estamos trabajando con radix 2, el valor de p\ se corresponde con el del bit menos significativo del contador, el de ψi con el siguiente, y el de P3 con el más significativo.7 111 1 0 0 1 1 2 1 3 3 The first two columns of the table indicate the value of the counter in decimal and in binary respectively. As we are working with radix 2, the value of p \ corresponds to that of the least significant bit of the counter, that of ψi with the next, and that of P 3 with the most significant.
Para obtener Ia secuencia a?, se toma el valor de los dos bits menos significativos del contador y se multiplica porp3¡ para obtener a-¿ se multiplica el bit menos significativo del contador por^; y «i vale siempre cero, como debe ocurrir en todas las FFTs para s = 1.To get the sequence a ? , the value of the two least significant bits of the counter is taken and multiplied by p 3 ¡to obtain a-is the least significant bit of the counter multiplied by ^; and «i is always zero, as should happen in all FFTs for s = 1.
Por otra parte, θs = qs • as, siendo qs = N/r\ por Io que gi = 4, q¿ — 2 y q$ — 1.On the other hand, θ s = q s • a s , where q s = N / r \, so that gi = 4, q¿ - 2 and q $ - 1.
A partir de Ia tabla también se puede entender el funcionamiento de Ia arquitectura de circuito que lleva a cabo el procedimiento. Así, por ejemplo, Ia secuencia a3 empieza valiendo O' y se incrementa con el valor de p$. Cuando el contador llega a 4, como los dos bits menos significativos valen cero, Ia secuencia se resetea y a continuación se vuelve a incrementar con el valor de P3 hasta que el contador vuelve a 0, donde se resetea de nuevo Ia secuencia.From the table you can also understand the operation of the circuit architecture that carries out the procedure. Thus, for example, the sequence at 3 begins with O 'and increases with the value of p $. When the counter reaches 4, as the two least significant bits are worth zero, the sequence is reset and then increased again with the value of P 3 until the counter returns to 0, where the sequence is reset again.
Para entender el sistema de rotaciones tomaremos el caso en el que θ = 3 = B' 011, que se corresponde con un ángulo en radianes:
Figure imgf000015_0001
To understand the rotation system we will take the case where en = 3 = B '011, which corresponds to an angle in radians:
Figure imgf000015_0001
Sumando a los dos bits más significativos de θ, '01', el siguiente bit, '1', obtenemos el valqr '10', por Io que habrá que realizar una rotación de 180°, que situará el ángulo restante en z — τr/4.Adding to the two most significant bits of θ, '01', the next bit, '1', we obtain the valqr '10', so it will be necessary to perform a 180 ° rotation, which will place the remaining angle at z - τr /4.
A partir de z se obtiene el vector de rotaciones que, en el caso de que m = l y M = 8 valdrá:From z the rotation vector is obtained which, in case m = l and M = 8 will be worth:
δ = 1, 1, 1, -1, 1, -1, -1, 1δ = 1, 1, 1, -1, 1, -1, -1, 1
A continuación se calcula el vector de rotaciones adaptado de acuerdo con el procedimiento descrito:
Figure imgf000015_0002
The adapted rotation vector is calculated in accordance with the procedure described:
Figure imgf000015_0002
$M+1 SM dando como resultado:$ M + 1 SM resulting:
δ' = 1, -1, -1, 1, 1, 1, -1, 1, 1δ '= 1, -1, -1, 1, 1, 1, -1, 1, 1
Considerando ahora que el dato de entrada al rotador es el número complejo 10 + 3j, se aplicará primero Ia rotación de 180°, con Io que las entradas a Ia primera etapa de s microrrotación (para m = 1) serán:Considering now that the rotator input data is the complex number 10 + 3j, the 180 ° rotation will be applied first, so that the inputs to the first micro-rotation stage (for m = 1) will be:
ai = -10 h = -3ai = -10 h = -3
Aplicando el procedimiento de cálculo de las microrrotaciones:Applying the procedure for calculating micro-rotations:
Figure imgf000016_0001
ι siendo δ' el vector de rotaciones adaptado que se ha calculado, y M = 8, se obtienen los valores de salida:
Figure imgf000016_0001
ι being δ 'the adapted rotation vector that has been calculated, and M = 8, the output values are obtained:
i5 . XOUT = —5,80i5. XOUT = —5.80
VOUT = -10,69 , . , VOUT = -10.69,. ,
' ' i'' i
Se puede comprobar fácilmente que el ángulo que se ha rotado el dato de entrada es:You can easily verify that the angle that the input data has been rotated is:
' ' θ(rad) = -2,3593 PS -— ' ' θ (rad) = -2,3593 PS -—
'. ' 4'. ' 4
20 Por otra parte, el módulo del dato de salida está escalado respecto al módulo del dato de entrada, y es posible compensarlo multiplicando Ia salida por K = 1 - 2~3 - 2~6. También es posible realizar Ia compensación del escalado a Ia entrada de Ia FFT o en cualquier punto intermedio de Ia FFT.20 On the other hand, the output data module is scaled with respect to the input data module, and it is possible to compensate it by multiplying the output by K = 1 - 2 ~ 3 - 2 ~ 6 . It is also possible to perform scaling compensation at the entrance of the FFT or at any intermediate point of the FFT.
Para realizar Ia compensación se tomará el dato que hay que multiplicar por K, el mismo dato desplazado 3 bits y finalmente el dato desplazado 6 bits. A continuación se restarán del dato sin desplazar los valores desplazados. Así, como los desplazamientos de bits son fijos, únicamente hacen falta dos Testadores para llevar a cabo Ia compensación del escalado.To perform the compensation, the data to be multiplied by K will be taken, the same data shifted by 3 bits and finally the data shifted by 6 bits. They will then be subtracted from the data without shifting the offset values. Thus, since the bit shifts are fixed, only two testers are needed to carry out the scaling compensation.
Aplicación industrialIndustrial application
Debido a que Ia FFT es un algoritmo ampliamente utilizado en las tecnologías de Ia información y las comunicaciones, Ia invención presentada puede tener aplicación en numerosos sistemas de comunicaciones y de procesado de señal. En especial, Ia arquitectura propuesta resulta útil cuando se pretende construir FFTs en plataformas hardware, como pueden ser las FPGAs (Field Programmable Gate Array). Por otra parte,Because the FFT is an algorithm widely used in information and communications technologies, the presented invention can be applied in numerous communications and signal processing systems. In particular, the proposed architecture is useful when it is intended to build FFTs on hardware platforms, such as FPGAs (Field Programmable Gate Array). On the other hand,
Ia invención aporta una gran ventaja respecto a otros diseños en aplicaciones donde es necesario calcular FFTs de un elevado número de puntos. The invention provides a great advantage over other designs in applications where it is necessary to calculate FFTs of a high number of points.
ReferenciasReferences
[CP03] Yun-Nan Chang and Keshab K. Parhi. An efficient pipelined FFT architectu- re. IEEE Transactions on Circuits and Systems II: Analog and Digital Signal Processing, 50:322-325, Jun 2003.[CP03] Yun-Nan Chang and Keshab K. Parhi. An efficient pipelined FFT architecture. IEEE Transactions on Circuits and Systems II: Analog and Digital Signal Processing, 50: 322-325, Jun 2003.
s [CT65] J. W. Cooley and J.W Tukey. An algorithm for machine computation of complex fourier series. Math. Computation, 19:297-301 , Apr. 1965.s [CT65] J. W. Cooley and J.W Tukey. An algorithm for machine computation of complex fourier series. Math Computation, 19: 297-301, Apr. 1965.
[Hu92] • Y. H. Hu. CORDIC-based VLSI Architectures for Digital Signal Processing. IEEE Signal Processing Magazine, 9, Ju1 1992.[Hu92] • Y. H. Hu. CORDIC-based VLSI Architectures for Digital Signal Processing. IEEE Signal Processing Magazine, 9, Ju1 1992.
[MGBS02] K. Maharatna, E. Grass, S. Banerjee, and A. Sundar. CORDIC UNIT. Patente « US 20060059215A1, 20.12. 2002.[MGBS02] K. Maharatna, E. Grass, S. Banerjee, and A. Sundar. CORDIC UNIT. Patent "US 20060059215A1, 20.12. 2002
[Vol59] J. E. Volder. The CORDIC trigonometric computing technique. IRE Trans. Electronic Computers, EC-8:330-334, Sep. 1959.[Vol59] J. E. Volder. The CORDIC trigonometric computing technique. IRE Trans. Electronic Computers, EC-8: 330-334, Sep. 1959.
[YCC06] Cheng-Ying Yu, Sau-Gee Chen, and Jen-Chuan Chih. Efficient CORDIC Designs for Multi-Mode OFDM FFT. Proc. IEEE International Conference on is Acoustics, Speech and Signal Processing, 3:1036-1039, May 2006.[YCC06] Cheng-Ying Yu, Sau-Gee Chen, and Jen-Chuan Chih. Efficient CORDIC Designs for Multi-Mode OFDM FFT. Proc. IEEE International Conference on is Acoustics, Speech and Signal Processing, 3: 1036-1039, May 2006.
[ZH05] Li Zou and Xiao Huang. 3780-point Discrete Fourier Transformation proces- sor. Patente EP 1750206A1, 04.08. 2005. [ZH05] Li Zou and Xiao Huang. 3780-point Discrete Fourier Transformation processor. EP Patent 1750206A1, 04.08. 2005

Claims

Reivindicaciones Claims
1. Procedimiento para el cálculo de las rotaciones de cualquier FFT descompuesta según el algoritmo Pooley-Tukey, y cuyo número de puntos, N, y radix, r, son ambos potencia de 2, con los siguientes pasos: s m obtener las secuencias de ángulos de rotación de cada una de las etapas de Ia FFT,1. Procedure for calculating the rotations of any decomposed FFT according to the Pooley-Tukey algorithm, and whose number of points, N, and radix, r, are both power of 2, with the following steps: sm obtain the sequences of angles of rotation of each of the stages of the FFT,
• calcular las rotaciones de cada una de las etapas de Ia FFT a partir de los ángulos de rotación generados, caracterizado porque a partir de un único contador se obtienen las secuencias de ánguloso de rotación de todas las etapas de Ia FFT, y para una etapa cualquiera, s, de Ia FFT, Ia generación de Ia secuencia de ángulos de rotación de dicha etapa, θs, se realiza siguiendo íos siguientes pasos:• calculate the rotations of each of the stages of the FFT from the generated rotation angles, characterized in that the rotation angle sequences of all the stages of the FFT are obtained from a single counter, and for one stage Any, s, of the FFT, the generation of the sequence of rotation angles of said stage, θ s , is performed by following these steps:
" tomar los s • Iog2r bits menos significativos proporcionados por el contador,"take the least significant s • Iog2r bits provided by the counter,
• de los bits tomados, multiplicar los (s — 1) • logir bits menos significativos por loss log'zr más significativos, obteniendo así los valores de Ia secuencia αs,• of the bits taken, multiply the (s - 1) • achieve less significant bits by the most significant loss log ' zr, thus obtaining the values of the sequence α s ,
" multiplicar el resultado por N/ra, obteniendo así los valores de Ia secuencia θs."multiply the result by N / r a , thus obtaining the values of the sequence θ s .
2. Procedimiento según Ia reivindicación 1 , caracterizado por que para el cálculo de las rotaciones de cada una de las etapas de Ia FFT, se obtiene el vector de rotaciones t adaptado, δ', a partir del vector de rotaciones, δ, de Ia siguiente forma: 0 δ'm - δm δ[ = -δi ÍÍ-I , i = m + l, . . . , M i δM+i[- δM donde m es el índice correspondiente a Ia primera microrrotación y M el correspondiente a Ia última microrrotación. 5 3. Procedimiento según las reivindicaciones 1 a 2, caracterizado por que para el cálculo de las rotaciones de cada una de las etapas de Ia FFT, el cálculo de las microrrotaciones se realiza de Ia siguiente forma:2. Method according to claim 1, characterized in that for the calculation of the rotations of each of the stages of the FFT, the adapted rotation vector t , δ ', is obtained from the rotation vector, δ, of Ia following form: 0 δ ' m - δ m δ [= -δi Í Í -I, i = m + l,. . . , M i δM + i [ - δ M where m is the index corresponding to the first micro rotation and M the one corresponding to the last micro rotation. Method according to claims 1 to 2, characterized in that for the calculation of the rotations of each of the stages of the FFT, the calculation of the micro rotations is carried out as follows:
Figure imgf000019_0001
6, - 0,2-* si <J( = -l aτ - bτ2 si δ[ = 1 siendo aτ y bt las entradas de Ia z-esima etapa de microrrotación.
Figure imgf000019_0001
6, - 0.2- * if <J (= -la τ - b τ 2 ~ ι if δ [= 1 with τ and b t being the inputs of the z-th micro-rotation stage.
4. Arquitectura de circuito para implementar el procedimiento descrito en las reivindicaciones 1 a 3, caracterizada por que comprende: s « un módulo de generación de ángulos que incluye un único contador (1 ) para toda Ia FFT, a partir del cual se obtienen los ángulos de rotación de todas las etapas de Ia FFT sin necesidad de recurrir á ningún dato almacenado previamente,4. Circuit architecture for implementing the method described in claims 1 to 3, characterized in that it comprises: s «an angle generation module that includes a single counter (1) for the entire FFT, from which the rotation angles of all stages of the FFT without resorting to any previously stored data,
« un módulo de cálculo de las rotaciones para cada una de las etapas de Ia FFT.«A module for calculating rotations for each of the stages of the FFT.
5. Arquitectura de circuito según Ia reivindicación 4, caracterizada por que el módulo io de generación de ángulos comprende, además del contador (1 ), los siguientes elementos:5. Circuit architecture according to claim 4, characterized in that the angle generation module io comprises, in addition to the counter (1), the following elements:
" lógica combinacional (3), que opera sobre el valor del contador,"combinational logic (3), which operates on the counter value,
" un bloque acumulador (4) por cada etapa de Ia FFT, para el cálculo de las secuencias as."an accumulator block (4) for each stage of the FFT, for the calculation of the sequences a s .
6. Arquitectura de circuito según las reivindicaciones 4 y 5, caracterizada por que, i5 dentro del módulo de generación de ángulos, cada bloque acumulador (4) comprende los siguientes elementos:6. Circuit architecture according to claims 4 and 5, characterized in that, i5 within the module for generating angles, each accumulator block (4) comprises the following elements:
• un sumador (43), que permite ir actualizando los valores de Ia secuencia as, " un registro (45) que proporciona los valores de Ia secuencia as, m una puerta lógica (44) para el control del bloque acumulador.• an adder (43), which allows updating the values of the sequence to s , "a register (45) that provides the values of the sequence to s , m a logic gate (44) for the control of the accumulator block.
20 7. Arquitectura de circuito según las reivindicaciones 4 a 6, caracterizada por que el módulo de cálculo de las rotaciones de Ia FFT, comprende bloques de cálculo de las microrrotaciones (9) que consisten en un conmutador (93), un sumador (96), y un restador (97).A circuit architecture according to claims 4 to 6, characterized in that the rotational calculation module of the FFT comprises blocks of calculation of the micro rotations (9) consisting of a switch (93), an adder (96 ), and a subtractor (97).
8. Arquitectura de circuito para el cálculo de las rotaciones de Ia FFT según las 25 reivindicaciones 4' a 7, caracterizada por que en el caso de que el primer bloque de cálculo de las microrrotaciones sea el correspondiente a ai = tg~1(2~1), se puede añadir un módulo adicional de compensación del escalado que consiste en dos Testadores. 8. Circuit architecture for the calculation of the rotations of the FFT according to the 25 claims 4 'to 7, characterized in that in the case that the first block of calculation of the micro rotations is the one corresponding to ai = tg ~ 1 (2 ~ 1 ), an additional scaling compensation module consisting of two testers can be added.
PCT/ES2008/000220 2007-04-12 2008-04-10 Storage-free method and architecture for computing fft rotations WO2008125708A1 (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
ESP200700983 2007-04-12
ES200700983A ES2283236B2 (en) 2007-04-12 2007-04-12 PROCEDURE AND ARCHITECTURE WITHOUT MEMORY FOR THE CALCULATION OF FFT ROTATIONS.

Publications (2)

Publication Number Publication Date
WO2008125708A1 true WO2008125708A1 (en) 2008-10-23
WO2008125708A8 WO2008125708A8 (en) 2008-12-31

Family

ID=38556505

Family Applications (1)

Application Number Title Priority Date Filing Date
PCT/ES2008/000220 WO2008125708A1 (en) 2007-04-12 2008-04-10 Storage-free method and architecture for computing fft rotations

Country Status (2)

Country Link
ES (1) ES2283236B2 (en)
WO (1) WO2008125708A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016007069A1 (en) * 2014-07-09 2016-01-14 Mario Garrido Galvez Device and method for performing a fourier transform on a three dimensional data set

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050216540A1 (en) * 2004-03-25 2005-09-29 Wen Kuei-Ann Novel CORDIC circuit

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050216540A1 (en) * 2004-03-25 2005-09-29 Wen Kuei-Ann Novel CORDIC circuit

Non-Patent Citations (4)

* Cited by examiner, † Cited by third party
Title
DICK C.: "Computing the Discrete Fourier Transform on FPGA Based Systolic Arrays", FIELD-PROGRAMMABLE GATE ARRAYS, 1996. FGPA'96. PROCEEDINGS OF THE 1996 ACM FOURTH INTERNATIONAL SYMPOSIUM, 1996, pages 129 - 135, Retrieved from the Internet <URL:http://www.ieeexplore.ieee.org/iel5/9475/30061/01377297.pdf?tp=&arnumber=1377297&isnumber=30061> *
GROGINSKY H.L. ET AL.: "A Pipeline Fast Fourier Transform", COMPUTERS, IEEE TRANSACTIONS, vol. C-19, no. 11, November 1970 (1970-11-01), pages 1015 - 1019, Retrieved from the Internet <URL:http://www.ieeexplore.ieee.org/iel5/12/35041/01671419.pdf?tp=&arnumber=1671419&isnumber=35041> *
SUNG T.-Y.: "Memory-efficient and high-speed split-radix FFT/IFFT processor based on pipelined CORDIC rotations", VISION, IMAGE AND SIGNAL PROCESSING, IEE PROCEEDINGS, vol. 153, no. 4, August 2006 (2006-08-01), pages 405 - 410, Retrieved from the Internet <URL:http://www.ieeexplore.ieee.org/iel5/2200/35271/01677109.pdf=tp=&arnumber=1677109&isnumber=35271> *
YU C.-Y. ET AL.: "Efficient CORDIC Designs for Multi-Mode OFDM FFT", ACOUTICS, SPEECH AND SIGNAL PROCESSING, 2006. ICASSP 2006 PROCEEDINGS. 2006 IEEE INTERNATIONAL CONFERENCE, vol. 3, 14 May 2006 (2006-05-14) - 19 May 2006 (2006-05-19), pages III, Retrieved from the Internet <URL:http://www.ieeeexplore.ieee.org/iel5/11024/34759/01660834.pdf?tp=&arnumber=1660834&isnumber=34759> *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2016007069A1 (en) * 2014-07-09 2016-01-14 Mario Garrido Galvez Device and method for performing a fourier transform on a three dimensional data set

Also Published As

Publication number Publication date
ES2283236B2 (en) 2008-03-16
ES2283236A1 (en) 2007-10-16
WO2008125708A8 (en) 2008-12-31

Similar Documents

Publication Publication Date Title
Lakshmi et al. CORDIC architectures: A survey
KR0146334B1 (en) Cordic complex multiplier
CN104254833B (en) Mould exponentiation based on vector sum scalar
Maharatna et al. Virtually scaling-free adaptive CORDIC rotator
Guoqiang et al. Asymptotic expansion for the trapezoidal nyström method of linear volterra—fredholm equations
Garrido et al. Efficient memoryless CORDIC for FFT computation
CN108021781A (en) The FFT IP core designs and optimization method of a kind of parameterisable
Li et al. MeNTT: A compact and efficient processing-in-memory number theoretic transform (NTT) accelerator
CN111443893A (en) N-time root calculation device and method based on CORDIC algorithm
Pitkänen et al. Low-power application-specific processor for FFT computations
US6728742B1 (en) Data storage patterns for fast fourier transforms
ES2283236B2 (en) PROCEDURE AND ARCHITECTURE WITHOUT MEMORY FOR THE CALCULATION OF FFT ROTATIONS.
Kulshreshtha et al. CORDIC-based high throughput sliding DFT architecture with reduced error-accumulation
Szapudi et al. Fast edge-corrected measurement of the two-point correlation function and the power spectrum
Ferizi et al. Design and implementation of a fixed-point radix-4 FFT optimized for local positioning in wireless sensor networks
US20050256918A1 (en) Rotational sliding aperture fourier transform
CN104951279A (en) Vectorized Montgomery modular multiplier design method based on NEON engine
Ray et al. CORDIC-based VLSI architectures of running DFT with refreshing mechanism
Saha et al. ASIC implementation of high speed processor for calculating discrete fourier transformation using circular convolution technique
Glittas et al. Pipelined FFT architectures for real-time signal processing and wireless communication applications
Schwarzbacher13 et al. Optimisation and implementation of the arctan function for the power domain
Hazarika et al. Energy efficient VLSI architecture of real‐valued serial pipelined FFT
Guerrero-Ramírez et al. Hardware design of an eigensolver based on the QR method
Baghaie et al. DHT algorithm based on encoding algebraic integers
Kulshreshtha et al. Improved VLSI architecture for triangular windowed sliding DFT based on CORDIC algorithm

Legal Events

Date Code Title Description
121 Ep: the epo has been informed by wipo that ep was designated in this application

Ref document number: 08761467

Country of ref document: EP

Kind code of ref document: A1

NENP Non-entry into the national phase

Ref country code: DE

122 Ep: pct application non-entry in european phase

Ref document number: 08761467

Country of ref document: EP

Kind code of ref document: A1