Diseño de arquitectura digital Pregunta: Forma rápida de realizar una operación exponencial de punto flotante

0

¿Alguien sabe cómo es la forma rápida de realizar una operación exponencial de punto flotante? (como esto y = 2.71 ^ (3.45)) Gracias a todos los posibles enlaces a referencias o artículos.

EDIT:

Estoy considerando varias posibilidades:

Haciendo por System Generator (estoy usando la versión 9.2.01)

Usando algunos IP de Xilinx gratis

Usando algunas bibliotecas abiertas como:

Utilizando una ALU de código abierto

    
pregunta Peterstone

2 respuestas

1

Bueno, no sé si esta es la manera rápida de realizar una operación exponencial. Pero puedes intentar hacer una LUT. Tienes que pensar en el rango dinámico de tu señal, el valor máximo y el valor mínimo. Y depende de la precisión que quieras tener en tu diseño. Por ejemplo, imagine que el rango dinámico de la señal es (-1,1) y la precisión es de tres 3 dígitos, (0.567, -0.237,0.457 ...) Por lo tanto, hay 2000 valores posibles. Así que la LUT tendrá 2000 archivos.

    
respondido por el Peterstone
1

El primer paso para realizar una operación exponencial de punto flotante es escalar las cosas para que esté intentando calcular 2 ^ (someInteger / powerOfTwo). Esto reducirá fácilmente el problema a uno de convertir un valor entre 0 y 1, en un valor entre 1.00 y 1.99+. Supongamos que tenemos un entero de 32 bits y un factor de escala de 2 ^ 24. Los 8 bits superiores de ese entero pueden producir fácilmente el exponente para el resultado. Como una aproximación aproximada (para mostrar cómo se hacen las cosas), escale las cosas para que los 20 bits inferiores del exponente rindan un valor entre 1.0 exactamente y 1.04427378. Use los bits 20-21 del exponente para elegir una entrada de la tabla (1.0, 1.04427378, 1.09050773, 1.13878863) y multiplique por eso, y luego use los bits 22-23 para elegir una entrada de (1.00, 1.18920711, 1.41421356, 1.68179283) y multiplica por eso.

Tenga en cuenta que este enfoque no producirá resultados precisos, pero puede lograr resultados razonablemente rápidos con una cantidad razonable de hardware. El uso de más pasos en la tabla de búsqueda puede aumentar la precisión a expensas del tiempo y el hardware. El uso de tablas de búsqueda más grandes puede aumentar la precisión a una velocidad determinada a expensas del hardware.

    
respondido por el supercat

Lea otras preguntas en las etiquetas