ES2762747A1 - Dispositivo electronico calculador de funciones trigonometricas - Google Patents

Dispositivo electronico calculador de funciones trigonometricas Download PDF

Info

Publication number
ES2762747A1
ES2762747A1 ES201831134A ES201831134A ES2762747A1 ES 2762747 A1 ES2762747 A1 ES 2762747A1 ES 201831134 A ES201831134 A ES 201831134A ES 201831134 A ES201831134 A ES 201831134A ES 2762747 A1 ES2762747 A1 ES 2762747A1
Authority
ES
Spain
Prior art keywords
com
cosine
sin
sine
electronic device
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.)
Pending
Application number
ES201831134A
Other languages
English (en)
Inventor
Martos David Guerrero
Calderón Alejandro Millán
Chico Jorge Juan
Cortés Julián Viejo
Díaz Manuel Jesús Bellido
De Clavijo Vázquez Paulino Ruiz
Arangüena Enrique Ostúa
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Universidad de Sevilla
Original Assignee
Universidad de Sevilla
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 de Sevilla filed Critical Universidad de Sevilla
Priority to ES201831134A priority Critical patent/ES2762747A1/es
Publication of ES2762747A1 publication Critical patent/ES2762747A1/es
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations
    • G06F17/14Fourier, Walsh or analogous domain transformations, e.g. Laplace, Hilbert, Karhunen-Loeve, transforms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F17/00Digital computing or data processing equipment or methods, specially adapted for specific functions
    • G06F17/10Complex mathematical operations

Landscapes

  • Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Theoretical Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Mathematical Analysis (AREA)
  • Pure & Applied Mathematics (AREA)
  • Mathematical Optimization (AREA)
  • Computational Mathematics (AREA)
  • Algebra (AREA)
  • Databases & Information Systems (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Complex Calculations (AREA)

Abstract

En este documento se detalla un dispositivo electrónico que permite calcular una serie de funciones matemáticas, más concretamente una serie de funciones trigonométricas mediante la implementación de una serie de circuitos especializados. El dispositivo objeto de la invención permite calcular funciones trigonométricas de la suma de dos ángulos A y B. En particular, las funciones trigonométricas que calcula el dispositivo son sen(A+B) y com(A+B), siendo com la función complemento del coseno definida por com(x)=1-cos(x). El dispositivo recibe como entrada los senos y los complementos de los cosenos de A y B.

Description

DESCRIPCIÓN
Dispositivo electrónico calculador de funciones trigonométricas
OBJETO DE LA INVENCIÓN
La presente invención, según lo expresa el enunciado de esta memoria descriptiva, se refiere a un método y dispositivo electrónico digital para cálculo de funciones trigonométricas y tratamiento digital de señales e imágenes. Más concretamente, el objeto de la invención es un dispositivo, basado en un circuito electrónico digital, que permite calcular el seno y el y el complemento del coseno de la suma de dos ángulos a partir de los senos y complementos de los cosenos de dichos ángulos, entendiéndose el complemento del coseno de un ángulo como el resultado de restar a la unidad el coseno de dicho ángulo.
Esta invención tiene su aplicación dentro de la industria dedicada a la fabricación de dispositivos electrónicos y/o informáticos que requieran el cálculo de funciones trigonométricas, incluyendo de forma no exhaustiva a aquellos dedicados al tratamiento digital de señales e imágenes.
ANTECEDENTES DE LA INVENCIÓN
Entre los principales objetivos de los diseñadores de circuitos electrónicos digitales se encuentran la reducción del área ocupada por los mismos, así como la reducción de su consumo de energía y el aumento de su velocidad. La reducción de área permite reducir los costes de producción de los chips y generalmente acarrea una reducción de consumo. Esto último es especialmente importante en equipos portátiles alimentados por baterías de cara a aumentar su autonomía. En los sistemas dedicados al tratamiento digital de señales e imágenes resulta esencial el computo de funciones trigonométricas. En particular, muchos de estos sistemas integran dispositivos que calculan senos y/o cosenos de múltiplos de un ángulo constante 0, es decir, calculan sen(n$) y/o cos(n$), siendo n un número entero que se proporciona como entrada al dispositivo. A continuación, se describen algunas de las aplicaciones de estos dispositivos:
• Calcular la transformada de Fourier. El cómputo de esta transformada emplea una serie de coeficientes complejos denominados factores de pivote (twiddle factors) cuyos valores se obtienen de los correspondientes pares seno/coseno de determinados múltiplos de un mismo ángulo 0. Para una transformada de longitud L dicho ángulo es 0 = - 2 n/L. Expresado formalmente, los factores de pivote son las potencias del número complejo e(~2n/L)i. Así, el factor de pivote de índice n será (e(~2nlL l^)n = en(~2n/L^ 1 = sen[n(-2nlL)]i cos[n(—2n/L)], es decir, el par seno/coseno de n0 siendo 0 = -2n/L.
• Implementar sistemas digitales cuya función sea proporcionar el seno y/o coseno de un ángulo expresado en una determinada unidad. Para ilustrarlo, supongamos uno de estos sistemas cuya entrada denominaremos /. Es evidente que I tiene un número finito de bits, por lo que el conjunto de ángulos que puede representar es también finito. Sea C el conjunto de los valores absolutos de los ángulos representables distintos de cero y sea 0 el elemento más pequeño de C, todos los ángulos representables son múltiplos positivos o negativos de 0, independientemente de si la entrada del dispositivo se representa en punto fijo, punto flotante o alguna notación entera. Por tanto la funcionalidad del sistema equivale a proporcionar el seno y/o coseno de n0 siendo n un entero.
En adelante consideraremos que el entero n se representa en notación base 2 sin signo. No obstante, dadas las propiedades de periodicidad y simetría de las funciones seno y coseno es irrelevante si la notación empleada permite valores de n positivos y negativos. Para ilustrarlo con un ejemplo, veamos la funcionalidad del circuito descrito por F. de Dinechin en su artículo "Fixed-Point Trigonometric Functions on FPGAs” de la publicación ACM SIGARCH Computer Architecture News Vol. 41, No. 5 de diciembre de 2013. Dicho circuito calcula el seno y el coseno de nx siendo x un número en el intervalo [-1,1) representado en complemento a 2. Si llamamos I a la entrada del circuito, w al número de bits de I y S al valor representado por I en complemento a 2 tenemos que x = S/2W~1 ^ nx = Sn/2W~1. Por tanto el circuito calcula el seno y el coseno de S0 siendo 0 = n /2W_1. Si n es el valor representado por I en notación base 2 sin signo, es fácil ver que el seno/coseno de S0 coincide con el de n0, por lo que la funcionalidad de este circuito equivale a calcular el seno y el coseno de n0. Esto se ilustra a continuación para w = 3.
Figure imgf000004_0001
Volviendo al ejemplo de cálculo de la transformada de Fourier, dado que el cálculo de funciones trigonométricas resulta costoso en tiempo, en implementaciones hardware de la transformada donde la velocidad es crítica los factores de pivote se encuentran precalculados en memorias de acceso directo (normalmente de tipo ROM). Estas memorias pueden tener gran número de posiciones pues se requieren tantos coeficientes como muestras tenga la serie. Esto supone una grave penalización en área y consumo en el hardware de cálculo de transformadas de secuencias largas siendo el tamaño de las memorias muy grande en comparación con el resto de componentes tal y como señala O. Gustafsson en su trabajo "Analysis of Twiddle Factor Memory Complexity of Radix-2i Pipelined FFTs” (Conference Record of the Forty-Third Asilomar Conference on Signals, Systems and Computers, 2009, páginas 217-220). Por ello se han propuesto varias formas de reducir el número de posiciones requeridas cuando la longitud de la transformada es potencia de 2:
• En 1976, D. Cohen mostró que sólo era necesario un número de posiciones igual a la mitad del número de muestras en su artículo "Simplified control of FFT hardware” de la revista IEEE Trans. Acoust. Speech Signal Process (páginas 577­ 579).
• Entre 1999 y 2000, Y. Ma, L. Wanhammar, Y. Chang y K. K. Parhi redujeron el número de posiciones a la cuarta parte al almacenar únicamente los coeficientes de ángulos en un intervalo de un cuarto de circunferencia. El resto se obtiene de forma fácil y rápida mediante relaciones trigonométricas simples que sólo requieren permutar y complementar los valores almacenados. Véase su artículo "Efficient FFT implementation using digit-serial arithmetic” del IEEE Workshop on Signal Processing Systems de 1999 (páginas 645-653) así como "Hardware efficient control of memory addressing for high performance FFT processors” de la revista IEEE Trans. Signal Process (páginas 917-921) del 2000.
• En 2002 M. Hasan y T. Arslan redujeron el número de posiciones a aproximadamente un octavo del número de muestras almacenando únicamente los coeficientes en un intervalo de un octavo de circunferencia. De nuevo los coeficientes restantes pueden calcularse rápidamente a partir de ellos aplicando relaciones trigonométricas. Esto se hace patente en su artículo "Scheme for reducing size of coefficient memory in FFT processor” del ejemplar del 14 de febrero de la revista Electronics Letters (páginas 907-911).
• En 2006 T. Sansaloni, A. Pérez-Pascual, V. Torres y J. Valls redujeron el número de posiciones a exactamente un octavo del número de muestras usando hardware específico para detectar y tratar los coeficientes cuyas parte real/imaginaria tiene una magnitud igual a 1/V2. Esto permite evitar los problemas derivados de implementar una memoria semiconductora cuyo tamaño no es una potencia de 2. Su esquema es presentado en su artículo "Scheme for Reducing the Storage Requirements of FFT Twiddle Factors on FPGAs” publicado en 2007 en la revista Journal of VLSI Signal Processing (páginas 183­ 187).
Estas optimizaciones se basan en propiedades de simetría y periodicidad de las funciones seno y coseno que también son aprovechadas por F. de Dinechin para simplificar su circuito de cálculo de seno y coseno de nx en una optimización que denomina reducción de argumentos. Desgraciadamente, aun aplicando todas estas mejoras la implementación de la transformada sigue requiriendo una memoria de un número de posiciones que crece linealmente con el número de muestras. Esto supone un inconveniente en aplicaciones en las que la secuencia de datos es larga tales como PLC o DVB-T2 (con longitudes del orden de 213 y 215 respectivamente) o muy larga como es el caso de las aplicaciones basadas en conteo de fotones o en el uso de radiotelescopios (con longitudes del orden de 227 y 230 respectivamente). Esto se solucionó en la patente P201600865 presentada en octubre de 2016. La patente requiere memorias cuyo número total de posiciones crece de forma logarítmica con el número de muestras en lugar de crecer de forma lineal. La patente empleaba un dispositivo que calcula el complejo en<t>i, es decir, el seno y el coseno de n0 siendo n un número codificado en base 2 que se suministra como entrada y 0 un ángulo constante que puede elegirse de forma arbitraria dependiendo de la aplicación. El dispositivo comprendía los siguientes componentes:
• memorias semiconductoras (normalmente de tipo ROM)
• multiplicadores complejos
Para describir el dispositivo de la patente P201600865, en adelante usaremos la siguiente notación:
w: número de bits de entrada del dispositivo
I = lw- 1lw- 2.../i/0: entrada del dispositivo
n = Et/=o1^t2í: valor representado por la entrada
m: número de memorias empleadas
M0,M1,_,M m_1: las m memorias empleadas
Mk[d\. contenido de la posición de la memoria Mk cuya dirección es d
L(k): número de líneas de dirección de la memoria Mk
A(k) = A(k.)L(k)_i ...A(k)0: líneas de dirección de la memoria Mk
nk = £tio)_1^ (k ) t2t : dirección representada por A(k)
Figure imgf000006_0001
número total de líneas de
dirección de las memorias de índice inferior a k
0 fc: ángulo definido por (2Si(fc))0
Las memorias se eligen de forma que el número total de líneas de dirección coincide con el número de bits de entrada del dispositivo, de modo que
Figure imgf000006_0002
El valor precalculado que contienen las posiciones de memoria se define de la forma siguiente:
Mk[d] = ed^kl = sen(d$k)i cos(d$ k)
Una memoria de acceso directo pone en su salida el contenido de la posición cuya dirección coincida con el número indicado por sus líneas de dirección. Por lo tanto, cada memoria Mk pondrá en su salida el seno y el coseno del ángulo nfc0 fc. Por otro lado, las líneas de dirección de cada memoria Mk se conectan a las líneas de entrada del dispositivo que van de ISL(k) a ISL(k+i) - i, es decir, cada línea de dirección A(k)t está conectada a la línea de entrada It+SL(k) de modo que
Figure imgf000007_0004
Debido a esto, el valor n representado por la entrada podemos escribirlo de la forma siguiente:
Figure imgf000007_0001
de modo que el múltiplo del ángulo cuyo seno y coseno se desea calcular puede escribirse así:
Figure imgf000007_0002
Así que el ángulo n0 es la suma de los subángulos nk$k. Como los senos y cosenos de estos subángulos se encuentran a las salidas de las memorias, el seno y el coseno de n0 puede obtenerse a partir de los mismos aplicando las siguientes fórmulas trigonométricas:
Figure imgf000007_0005
Una forma alternativa de decirlo es que la salida de cada memoria Mk proporciona el complejo sen(nk<pk)i cos(nk<pk) — enk^kl y que el valor de en$l puede calcularse mediante el producto
Figure imgf000007_0003
En efecto, el cálculo del producto de dos complejos de módulo unidad equivale al cálculo del seno y el coseno de la suma de dos ángulos a partir de los senos y cosenos de dichos ángulos e implica cuatro productos simples, una suma y una resta. Teniendo esto en cuenta, el grafo del dispositivo descrito en la patente tiene forma de árbol binario dirigido con m hojas en el que cada nodo intermedio tiene exactamente dos hijos. Cada nodo se corresponde con un componente que tiene como salida un complejo de módulo unidad. Las hojas se corresponden con las m memorias y proporcionan los complejos enk^ kl. El resto de los nodos se corresponden con multiplicadores complejos que calculan el producto de las salidas de los componentes correspondientes a sus nodos hijos. La salida del dispositivo corresponde a la del nodo raíz. En adelante denominaremos H a la altura de dicho árbol. A continuación se comentan recomendaciones que, aunque no son necesarias para que el dispositivo funcione, mejoran la eficiencia del diseño:
• Para reducir la latencia del dispositivo conviene minimizar la altura del árbol H.
Esto se consigue usando un árbol binario completo o semicompleto. Este tipo de árboles se caracteriza porque el nivel de cualquier par de hojas difiere en no más de la unidad.
• El número total de posiciones de memoria se minimiza cuando el número de líneas de dirección de cada par de memorias difiere como mucho en la unidad. Para conseguir esto, sea q el cociente de dividir el número de líneas de entrada w entre m y sea r el resto de dicha división, de entre las m memorias, r deberán tener q 1 líneas de dirección y las demás deberán tener q líneas de dirección.
• Si se sigue la recomendación anterior, el número total de posiciones de memoria disminuye a medida que aumenta el número de memorias m. Para una altura de árbol fija H, el valor máximo de m es 2H, por lo que el número total de posiciones de memoria se minimiza para dicho valor de m.
Una aplicación obvia de este dispositivo es el cálculo de los factores de pivote de la transformada de Fourier. Para ello bastaría tomar 0 = - 2 n/L, siendo L la longitud de la transformada. El número de bits de la entrada w sería la parte entera por exceso de log2(L) de modo que w < 21og2(L). Si se toma como altura del árbol H la parte entera por defecto de log2(w) se tendrían no más de w memorias de no más de dos líneas de dirección cada una, con lo que el número de posiciones de memoria totales estará acotado superiormente por 22w < 8log2(L). Esta cota crece de forma logarítmica con L. Aunque esto por si solo permite ahorrar gran cantidad de recursos, si L es potencia de 2 se puede emplear un circuito de cálculo de factores de pivote aún más optimizado. El circuito optimizado para L = 2f se muestra en la figura 1. Su entrada se ha denominado B = By_1By_2 ,^B1B0. Comprende los siguientes componentes:
• un dispositivo como el descrito anteriormente para calcular el seno y el coseno de múltiplos de 2n/L (1)
• cinco multiplexores 2:1 (2)
• un sumador (3)
• un conjunto de puertas lógicas (4)
Este circuito emplea un esquema similar al presentado por T. Sansaloni de forma que los casos en los que el múltiplo de - 2 n/L corresponde a los ángulos n/4, 3n/4, Sn/4 y 7n/4 se detectan con una simple puerta lógica (4a) y se tratan de forma separada. La puerta se limita a comprobar si el bit fiy_3 vale 1 y el resto de bits menos significativos de B valen 0, en cuyo caso la magnitud devuelta para el seno y el coseno es 1/V2 gracias a un par de multiplexores (2b). A diferencia del esquema de T. Sansaloni, este circuito no usa una ROM para obtener los senos y cosenos de los múltiplos de 0 = - 2 n/L en el intervalo ( - n/4, 0]. En lugar de eso se emplea un dispositivo como el descrito anteriormente para calcular los pares seno/coseno de los múltiplos de 0 = 2n/L en el intervalo [0, n/4). Esto hace posible reducir enormemente la memoria necesaria para implementar el sistema. Además, al ser positivos los senos y cosenos de todos los ángulos en el intervalo [0, n/4), los multiplicadores complejos pueden implementarse usando multiplicadores de magnitud sin signo. Cuando fiy_3 = 0 la entrada al dispositivo que devuelve los senos y cosenos se hace igual a la subcadena fiy_4fiy_5...B0. En caso contrario se hace igual al complemento a dos de dicha subcadena siguiendo el esquema de M. Hasan. Para ello se emplean el multiplexor (2a) y el sumador (3). En la última etapa una puerta lógica (4b) calcula la operación or exclusiva de fiy_3 y fiy_2. Si el resultado vale 0, un par de multiplexores (2c) harán la magnitud de la parte imaginaria y de la parte real igual a las del seno y el coseno calculadas por el dispositivo respectivamente. En caso contrario las magnitudes imaginaria y real serán las del coseno y el seno respectivamente. El signo de la parte real y la imaginaria se calcula con puertas lógicas simples (4c) en función de B/ _2 y B/ _1.
En el dispositivo descrito en la patente P201600865, las memorias de menor índice codifican los pares seno/coseno de ángulos muy pequeños. Esto implica que sus senos serán muy próximos a cero y sus cosenos muy próximos a uno, lo que permite llevar a cabo ciertas optimizaciones. Para ilustrarlo, veamos cómo podría aplicarse la patente P201600865 en el cálculo de los factores de pivote de una transformada de longitud L = 211. En este ejemplo las componentes seno y coseno de cada coeficiente se proporcionan en notación de punto fijo con 8 bits de parte fraccionaria sin bit para la parte entera, por lo que el valor uno se aproxima por 1 - 2_8. Se usará el circuito optimizado de la figura 1 que incluirá un dispositivo de 11 -3 = 8 líneas de entrada para calcular los pares seno/coseno de los múltiplos de 0 = 2n/2xl = n /210 en el intervalo [0, n/4). Si el dispositivo está estructurado en forma de árbol de altura unidad tendrá la apariencia que se muestra en la figura 2. Nótese que, para compensar los errores de redondeo, las memorias (5) deben almacenar los valores con una precisión de 17 bits. La memoria M0 codificará los senos y cosenos de los ángulos múltiplos de 0 O = 2°0 = ^ /210, mientras que la memoria Mt codificará los senos y cosenos de los ángulos múltiplos de
Figure imgf000010_0001
= 240 = ^ /26. Los ángulos correspondientes a la memoria M0 son mucho más pequeños que los correspondientes a la memoria Mt , y se encuentran en el intervalo [0, 15^/210]. Dado que en [0, n/4) el seno es creciente, el seno más grande codificado en M0 es el de 15^/210, la representación de ese seno tiene los cuatro bits más significativos a cero. Esto implica que todos los senos de la memoria M0 tienen dichos bits a cero, por lo que no es necesario almacenarlos. Por otro lado, dado que el coseno es decreciente en [0, ^/4), el coseno más pequeño codificado en M0 es el de 15^/210. La representación de este coseno tiene los nueve bits más significativos a uno, lo que implica que todos los cosenos de la memoria M0 tienen dichos bits a uno y no es necesario almacenarlos. Las mismas observaciones podrían hacerse con la memoria Mt pero, al ser los ángulos correspondientes a ésta más grandes, en Mt solo es posible ahorrar un bit por pivote.
Dicho bit es el más significativo de los cosenos ya que vale 1 en todos los cosenos codificados en Mx. Nótese que los ceros comunes en los bits más significativos de los senos permiten reducir el tamaño de la circuitería aritmética. En este caso concreto, en lugar de cuatro multiplicadores de 17 x 17 bits han sido necesarios dos de 17 x 17 (6b) y dos de 13 x 17 (6a). Una observación importante es que los unos comunes en los bits más significativos de los cosenos no permiten una optimización semejante en la circuitería aritmética. La invención propuesta ayuda a resolver esta limitación.
DESCRIPCIÓN DE LA INVENCIÓN
El dispositivo objeto de la invención, al que en algunas partes del texto se refiere como sumador trigonométrico, permite calcular funciones trigonométricas de la suma de dos ángulos A y B. En particular, las funciones trigonométricas que calcula el dispositivo son sen(A B) y com(A B), siendo com la función complemento del coseno definida por com(x) = 1 - cos(x). El dispositivo recibe como entrada los senos y los complementos de los cosenos de A y B. Para implementarlo, partiendo de las siguientes fórmulas trigonométricas
sen(A B) = sen(A)cos(B) cos(A)sen(B) cos(A B) = cos(A)cos(B) — sen(A)sen(B) se obtienen las siguientes
sen(A B) = sen(A) sen(B) — [sen(A)com(B) com(A)sen(B)] com(A B) = com(A) com(B) [sen(A)sen(B) — com(A)com(B)]
Por tanto, un sumador trigonométrico puede construirse a partir de multiplicadores, sumadores y restadores tal y como se muestra en la figura 3. Aunque no se muestra en dicha figura, entre los distintos circuitos aritméticos pueden situarse registros que almacenen valores intermedios si se desea una implementación en pipeline o secuencial. En este último caso, uno o más de uno de los circuitos aritméticos puede reutilizarse para calcular más de un valor durante el cómputo de una misma salida del dispositivo. Los multiplicadores empleados en la invención propuesta son más pequeños de los que se requerirían para calcular el seno y el coseno de A B a partir de los senos y cosenos de A y B, de modo que puede usarse para mejorar la eficiencia de los sistemas descritos en los antecedentes.
DESCRIPCIÓN DE LOS DIBUJOS
Para complementar la descripción que se está realizando y con objeto de ayudar a una mejor comprensión de las características de la invención, de acuerdo con un ejemplo preferente de realización práctica de la misma, se acompaña como parte integrante de dicha descripción, un juego de dibujos en donde, con carácter ilustrativo y no limitativo, se ha representado lo siguiente:
• Figura 1.- Muestra un diagrama donde se aprecia un circuito que calcula los factores de pivote de la transformada de Fourier para muestras de longitud L = 2? siguiendo el esquema de T. Sansaloni. El índice del coeficiente a calcular se codifica en la entrada B = Bf _íBf _2...B0. El circuito comprende un dispositivo que calcula el seno y coseno de un múltiplo de 0 = 2n/2f en el intervalo [0, n/4) (1). Un multiplexor (2a) y un sumador (3) se emplean para que el dispositivo que devuelve los senos y cosenos reciba como entrada fiy_4fiy_5...B0 cuando fiy_3 = 0, o su complemento a dos cuando fiy_3 = 1. Una puerta lógica (4a) comprueba si el bit Bf _3 = 0 vale 1 y el resto de bits menos significativos de B valen 0, en cuyo caso la magnitud devuelta para el seno y el coseno es 1/V2 gracias a un par de multiplexores (2b). En la última etapa otra puerta lógica (4b) calcula la operación or exclusiva de fiy_3 y fiy_2. Si la salida de dicha puerta es 0, un par de multiplexores (2c) harán la magnitud de la parte imaginaria y de la parte real igual a las del seno y el coseno calculadas por el subcircuito (1) respectivamente. En caso contrario las magnitudes imaginaria y real serán las del coseno y el seno respectivamente. El signo de la parte real y la imaginaria se calculan fácilmente con puertas lógicas simples (4c) en función de Bf _2 y Bf _t .
Figura 2.- Muestra un diagrama donde se aprecia un ejemplo de uso del dispositivo de la patente P201600865 que calcula los senos y los cosenos de los múltiplos de 0 = ln /211 = n /210 en el intervalo [0, ^/4). La entrada del circuito se denomina I y tiene 11 -3 = 8 bits. El circuito pone en su salida el seno y el coseno de n0 siendo n el número representado por I en base 2. En este ejemplo las salidas se proporcionan en notación de punto fijo con 8 bits de parte fraccionaria sin bit para la parte entera, por lo que el valor 1 se aproxima por 1 -2-8. El dispositivo de este ejemplo está estructurado en forma de árbol de altura unidad (H = 1) y comprende dos memorias pequeñas (m = 2H = 2), denominadas M0 y Mt (5). La memoria M0 codifica los senos y cosenos de los ángulos múltiplos de 0O = 2°0 = tc/ 210, mientras que la memoria codifica los senos y cosenos de los ángulos múltiplos de 0X = 240 = ^ /26.
Nótese que, para compensar los errores de redondeo, las memorias deben almacenar los valores con una precisión de 17 bits. Los ángulos correspondientes a la memoria M0 son mucho más pequeños que los correspondientes a la memoria Mt , y se encuentran en el intervalo [0,15^/210]. Dado que en [0, n/4) el seno es creciente, el seno más grande codificado en M0 es el de 15^/210, y la representación de ese seno tiene los cuatro bits más significativos a cero. Esto implica que todas las representaciones de los senos de la memoria M0 tienen dichos bits a cero, por lo que no es necesario almacenar esos bits. Por otro lado, dado que el coseno es decreciente en [0, rc/4), el coseno más pequeño codificado en M0 es el de 15^/210.
La representación de este coseno tiene los nueve bits más significativos a uno, lo que implica que todas las representaciones de los cosenos de la memoria M0 tienen dichos bits a uno y no es necesario almacenar esos bits. Las mismas observaciones podrían hacerse con la memoria Mt pero, al ser los ángulos correspondientes a ésta más grandes, en solo es posible ahorrar un bit por pivote. Dicho bit es el más significativo de los cosenos ya que vale 1 en todos los cosenos codificados en Mt .
Los cuatro bits menos significativos de I se conectan a las líneas de dirección de M0 y los restantes a las líneas de dirección de
Figure imgf000013_0001
de modo que n = n0 n124 siendo n0 y n1 el valor representado por las líneas de dirección de M0 y Mt respectivamente, por tanto n0 = no0 n124<p = n0<p0 n1$1. El seno y el coseno de n0 se obtienen a partir de las salidas de las memorias usando cuatro multiplicadores (6), un sumador (3) y un restador (7). Como el seno y coseno de todos los ángulos en el intervalo [0, n/4) son positivos, estos circuitos aritméticos usan notación sin signo. Los ceros comunes en los bits más significativos de los senos permiten reducir el tamaño de la circuitería aritmética. En este caso concreto, en lugar de cuatro multiplicadores de 17 x 17 bits han sido necesarios dos de 17 x 17 (6b) y dos de 13 x 17 (6a).
• Figura 3.- Muestra un diagrama donde se aprecia un circuito, denominado sumador trigonométrico, que calcula el seno y el complemento del coseno de la suma de dos ángulos denominados A y B a partir de los senos y el complemento de los cosenos de dichos ángulos. El complemento del coseno de un ángulo se define como el resultado de restar a la unidad el coseno de dicho ángulo. El circuito emplea sumadores (3), restadores (7) y multiplicadores (6) para obtener los resultados aplicando las fórmulas
sen(A B) = sen(A) sen(B) — [sen(A)com(B) com(A)sen(B)]
com(A B) = com(A) com(B) [sen(A)sen(B) — com(A)com(B)]
En estas fórmulas com denota la función complemento del coseno, es decir, com(x) = 1 — cos(x).
REALIZACIÓN PREFERENTE DE LA INVENCIÓN
En una realización preferente del objeto de la invención se implementó sobre una FPGA (Field Programable Gate Array) modelo Virtex 7 XC7VX485T-2FFG1761 del fabricante Xilinx, un circuito que calcula los factores de pivote de la transformada de Fourier para muestras de longitud L = 215 en notación punto fijo de 16 bits para la parte fraccionaria y 0 bits para la parte entera. La síntesis se ha realizado mediante la herramienta Vivado Design Suite de Xilinx. En dicha síntesis se usaron las unidades DSP integradas en la FPGA para implementar los multiplicadores. Siguiendo el esquema de T. Sansaloni, el circuito usa un dispositivo con una entrada de 15 - 3 = 12 bits que calcula el seno y coseno de los múltiplos de 0 = 2n/2is en el intervalo [0, rc/4). Dicho dispositivo se ha implementado usando la invención propuesta para calcular el seno y el complemento del coseno de los múltiplos de 0 = 2^/215. Este ejemplo de la invención comprende dos tablas de consulta que se han implementado usando las LUT de la FPGA. Cada una de las ellas tiene 12/2 = 6 bits de entrada. Un circuito aritmético trivial resta a la unidad el complemento del coseno para obtener el coseno. La implementación requirió 7 unidades de DSP.
Para realizar una comparación con el estado de la técnica, se ha implementado un circuito con idéntica funcionalidad pero que, en lugar de usar la invención propuesta, usa el dispositivo descrito en el documento anteriormente comentado P201600865 para calcular el seno y coseno de 0 = 2n/2is en el intervalo [0, rc/4). Usando la misma FPGA y la misma herramienta de síntesis que en el caso anterior, el diseño requirió 12 unidades de DSP. Por tanto la invención propuesta proporciona un ahorro de casi un 42% en dichos recursos.

Claims (6)

REIVINDICACIONES
1. Dispositivo electrónico digital calculador de funciones trigonométricas caracterizado por que comprende:
- entradas por las que recibe el seno y el complemento del coseno de dos ángulos denominados A y B, definiéndose el complemento del coseno de un ángulo x como com(x) = 1 — cos(x).
- salidas por las que proporciona el seno y el complemento del coseno de la suma de los ángulos A y B anteriormente mencionados, y
- dispositivos digitales configurados para realizar los cálculos siguientes: sen(A B) = sen(A) sen(B) — [sen(A)com(B) com(A)sen(B)] com(A B) = com(A) com(B) [sen(A)sen(B) — com(A)com(B)]
2. Dispositivo electrónico digital según reivindicación 1 caracterizado porque comprende registros donde se escriben los resultados de cálculos intermedios.
3. Dispositivo electrónico digital según reivindicación 2 caracterizado porque el número de circuitos aritméticos que comprende es inferior al número operaciones intermedias requeridas para calcular sen(A B) y com(A B), reutilizándose al menos uno de ellos para realizar dos o más cálculos intermedios.
4. Dispositivo electrónico digital según una cualquiera de las reivindicaciones anteriores caracterizado por usar una codificación numérica que solo permite representar valores mayores o iguales a cero.
5. Dispositivo electrónico digital según una cualquiera de las reivindicaciones anteriores caracterizado porque los circuitos aritméticos que comprende no realizan operaciones con signo.
6. Uso del dispositivo electrónico digital descrito en cualquiera de las reivindicaciones 1 a 5 para calcular funciones trigonométricas de un ángulo arbitrario.
ES201831134A 2018-11-22 2018-11-22 Dispositivo electronico calculador de funciones trigonometricas Pending ES2762747A1 (es)

Priority Applications (1)

Application Number Priority Date Filing Date Title
ES201831134A ES2762747A1 (es) 2018-11-22 2018-11-22 Dispositivo electronico calculador de funciones trigonometricas

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
ES201831134A ES2762747A1 (es) 2018-11-22 2018-11-22 Dispositivo electronico calculador de funciones trigonometricas

Publications (1)

Publication Number Publication Date
ES2762747A1 true ES2762747A1 (es) 2020-05-25

Family

ID=70740836

Family Applications (1)

Application Number Title Priority Date Filing Date
ES201831134A Pending ES2762747A1 (es) 2018-11-22 2018-11-22 Dispositivo electronico calculador de funciones trigonometricas

Country Status (1)

Country Link
ES (1) ES2762747A1 (es)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273483A1 (en) * 2004-06-04 2005-12-08 Telefonaktiebolaget Lm Ericsson (Publ) Complex logarithmic ALU
US20140337401A1 (en) * 2011-12-31 2014-11-13 Institute Of Automation, Chinese Academy Of Sciences Data access method and device for parallel fft computation
WO2018104566A1 (es) * 2016-10-10 2018-06-14 Universidad De Sevilla Circuito electrónico digital para el cálculo de senos y cosenos de múltiplos de un ángulo

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050273483A1 (en) * 2004-06-04 2005-12-08 Telefonaktiebolaget Lm Ericsson (Publ) Complex logarithmic ALU
US20140337401A1 (en) * 2011-12-31 2014-11-13 Institute Of Automation, Chinese Academy Of Sciences Data access method and device for parallel fft computation
WO2018104566A1 (es) * 2016-10-10 2018-06-14 Universidad De Sevilla Circuito electrónico digital para el cálculo de senos y cosenos de múltiplos de un ángulo

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
FAHAD QURESHI ET AL. 4k-point FFT algorithms based on optimized twiddle factor multiplication for FPGAs. Microelectronics and Electronics (PrimeAsia), 2010 Asia Pacific Conference on Postgraduate Research in, 20100922 IEEE, Piscataway, NJ, USA. , 22/09/2010, Páginas 225 - 228 ISBN 978-1-4244-6735-8 ; ISBN 1-4244-6735-7, Todo el documento.<br /><br /> *

Similar Documents

Publication Publication Date Title
Fu et al. FPGA designs with optimized logarithmic arithmetic
Liu et al. A logarithmically completely monotonic function involving the gamma function and originating from the Catalan numbers and function
KR102449169B1 (ko) 나눗셈 연산을 수행하는 장치, 그것을 포함하는 시스템 온 칩 및 그것의 방법
CN103135960A (zh) 一种基于fpga的集成浮点运算器的设计方法
Zhang et al. Area‐and power‐efficient iterative single/double‐precision merged floating‐point multiplier on FPGA
ES2762745B2 (es) Dispositivo electronico calculador de funciones trigonometricas y usos del mismo
ES2762747A1 (es) Dispositivo electronico calculador de funciones trigonometricas
Wang et al. $(M, p, k) $-Friendly Points: A Table-Based Method to Evaluate Trigonometric Function
Echeverría et al. Customizing floating-point units for FPGAs: Area-performance-standard trade-offs
Ismail et al. Hybrid logarithmic number system arithmetic unit: A review
ES2663168B2 (es) Circuito electrónico digital para el cálculo de senos y cosenos de múltiplos de un ángulo
Furuya Design methodologies of comparators based on parallel hardware algorithms
Liebig et al. Low-latency double-precision floating-point division for FPGAs
Varghese et al. FPGA implementation of area-efficient IEEE 754 complex divider
Gustafsson et al. Arithmetic
González-Concejero et al. A portable hardware design of a FFT algorithm
Chen et al. A dynamic non-uniform segmentation method for first-order polynomial function evaluation
Yan et al. Improved Goldschmidt division method using mapping of divisors
Risse It’s time for UNUMs–an alternative to IEEE 754 floats and doubles
Tahir et al. CAMs and high speed high precision data for trigonometric functions
ES2396673B2 (es) Aparato y método para calcular operaciones de potenciación y extracción de raíces
Kalra et al. Vedic multiplication based efficient OFDM FFT processor
Lei et al. Special-purposed VLIW architecture for IEEE-754 quadruple precision elementary functions on FPGA
Singh et al. Design of Partial Product Generator Circuit for Approximate Radix-8 Booth Multiplier with Lower Delay
Faraz et al. Design and Synthesis of Restoring Technique Based Dual Mode Floating Point Divider for Fast Computing Applications

Legal Events

Date Code Title Description
BA2A Patent application published

Ref document number: 2762747

Country of ref document: ES

Kind code of ref document: A1

Effective date: 20200525

FC2A Grant refused

Effective date: 20220201