# Raiz cuadrada en VHDL



## JFMORALEST (Feb 15, 2011)

Alguien sabe como puedo sacar una raiz cuadrada en VHDL?..
He encontrado en internet que existe un paquete llamado    ieee math_real que se supone que tiene definido el comando sqrt, pero cuendo se incluye el encabezado del paquete y se trata de usar la funcion bota un error en la linea en la que se llama a la funcion sqrt.

Para usar el paquete coloco en los encabezados:

use IEEE.math_real.all;

y la libreria incluso esta en las carpetas que se instalan cuando se instala el softare..

Les agradesco por adelantado.


----------



## Ferny (Feb 15, 2011)

Es una operación muy compleja de realizar en *código sintetizable (*)*, tienes que buscarte un algoritmo que converja hacia la raiz cuadrada e implementarlo. Buscando un poco por google recomiendan usar un cordic modificado o el algoritmo Dijkstra. Me parece bastante complejo.

Una alternativa es hacerte un contador e ir sumando de uno en uno y calculando el cuadrado, hasta conseguir que te dé el valor que tienes... en ese caso la raiz cuadrada sería el valor del contador. Con un poco de maña lo haces para que te "genere decimales". Es un algoritmo lento, pero dado que la FPGA es un dispositivo muy rápido, puede ser viable.


(*) Digo códido sintetizable porque al final lo que estás creando es un circuito eléctrico que calcula la raiz cuadrada, no un "programa", por eso la mayoría de funciones de math_real no son sintetizables (raiz cuadrada, logaritmos, división, exponencial, y algunas más). Todas esas funciones no tienen problemas en código no sintetizable (el que se usa para simulación, por ejemplo).


----------

