domingo, 26 de junio de 2011

ieee.numeric_std.all - Funciones de Conversión / Cast

Anteriormente en el blog ieee.numeric_std.all vs. ieee.std_logic_arith.all expliqué el porque del uso de la paquete ieee.numeric_std.all;.en este blog describo en un simple diagrama cuales son las diferentes funciones de conversión de tipo disponibles en el paquete numeric_std y su modo de uso para las conversiones respectivas. También se detalla el uso de cast para conversiones entre tipos relacionados como std_logic_vector y unsigned.




El uso de este diagrama para la conversión de tipos es bastante sencillo.
Por ejemplo, para convertir un tipo integer a un tipo  std_logic_vector, hay que seguir la línea amarilla junto con las funciones respectivas: se comienza con la función to_unsigned(int, unsigned'length) y luego se usa el cast std_logic_vector sobre el unsigned obtenido previamenteunsigned'length significa el número de bits necesarios para representar el respectivo integer. Por ejemplo 4 bits para el entero mayor que 7 y menor o igual que 15; 3 bits para un entero entre 0 y 7; etc.  
Para ir del tipo std_logic_vector al tipo signed, solo hace falta aplicar el cast signed sobre el slv (std_logic_vector), es decir la línea verde entre ambos. 

Espero que sea de utilidad . . . . ah!, si querés el pdf de la figura, acá lo encontrás. y el pdf de este blog y del anterior aca :)  ..

2 comentarios:

  1. Hola, tengo una pregunta estoy haciendo un 1 programa que incluye 2 tipos de archivos diferentes el primero es una memoria ROM con salida std_logic_vector y el otro es un multiplexor con 22 entradas, mi pregunta es si existe alguna forma de pasar ese vector de 22 datos a un bit_vector de igual 22bits para poder unir ambos programas.

    ResponderEliminar