Funciones de resolución
Funciones sobrecargadas
La libería ieee contiene funciones de resolución útiles.
Así, las funciones “+”, “-”, “*”, “=”, “<”, “>”, “<=”, “>=”, “/=” están sobrecargadas para el tipo std_logic_vector en el package std_logic_unsigned (_signed)
Los packages std_logic_unsigned y std_logic_signed contienen funciones sobrecargadas para el std_logic_vector
Cuando en la misma arquitectura se usan valores signed y unsigned es conveniente utilizar la librería std_logic_arith
Funciones de resolución
Debido a que VHDL es altamente tipado, a menudo es necesario tener que realizar funciones de conversión entre tipos
La misión de la función de resolución es resolver el valor final de una señal en función de los valores de las fuentes
La función de resolución no se llama de forma explícita, sino que se ejecuta de forma automática cada vez que hay algún evento que requiere calcular el valor del nuevo valor del driver. En particular, cualquier interconexión no especificada puede requerir su función de resolución.
El subtipo resuelto IEEE std_logic_1164
IEEE std_logic_1164 es un subtipo resuelto que presenta las ventajas
Contiene la tabla de resolución cuando se usan señales que proceden de distinta fuente
No es necesario, por consiguiente, realizar ninguna función de resolución
Es un tipo optimizado para simuladores
Facilita la detección de errores en tiempo de simulación cuando se opera con datos sin función de resolución
Ejemplo: El subtipo resuelto ieee std_logic_1164
Conclusión
El uso de tipos de datos no definidos en el estándar puede comportar "bastantes complicaciones" en la resolución del tipo en el momento de operar. Por ello, basarse en los tipos de datos definidos en los estándares simplifica y agiliza el desarrollo del sistema. ¡Crear nuevos tipos de datos y/o funciones de resolución sólo cuando sea realmente necesario!
|