Tipos de datos en la síntesis
Se dan algunas recomendaciones (¡escritas y propias!) que conviene tener en cuenta cuando se modele para la síntesis
Respecto a los tipos de datos que se recomienda utilizar
Enumerados con boolean, bit y character, enteros
Unidimensionales con bit_vector y string
Std_ulogic, std_ulogic_vector, std_logic, std_logic_vector
Unsigned y signed (definidos en packages numeric_bit y numeric_std)
Recordar que los enteros con rango con valores negativos suelen trabajar con complemento a 2, mientras que los positivos suelen trabajar sin signo
Los tipos enumerados definidos por el usuario suelen codificarse en numeración
binaria creciente.
También permiten codificación por el usuario.
Ejemplo
type estado is (inicio, reposo, paso, stop);
attribute codificacion of estado: type is "00 01 11 10";El número de bits de la codificación viene determinado por el rango de valores del tipo
Los arrays deben ser unidimensionales y los índices acotados por rango y estáticos
No se soportan tipos access, fichero ni reserva dinámica de memoria. De hecho ya no se suele trabajar con ellos, aunque el tipo fichero puede ser útil en la creación de tablas de verdad para el modelo de test
Respecto a funciones de resolución:
En tipos std_logic, '0' y 'L' se interpretan como false y '1' y 'H' como true
El valor '-' (don't care) no siempre se codifica igual. ¡Cuidado!
El valor 'Z' genera un driver tri-state como circuito lógico
Los valores iniciales no tienen ningún uso en síntesis -> ¡Cuidado con su uso y especificación en simulación!
Existe un conjunto de datos, funciones y procedimientos introducidos en paquetes aritméticos que simplifican la operatividad con distintos tipos de datos
Inicialmente introducidos por Synopsis:
std_logic_unsigned -> Para operaciones unsigned
std_logic_signed -> Para operaciones signed
std_logic_arith -> Para operaciones signed i unsignedEstandarizados por IEEE 1076.3
numeric_bit -> Operaciones signed y unsigned sobre bit_vector
numeric_std -> Operaciones signed y unsigned sobre std_logic_vector