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 unsigned

Estandarizados por IEEE 1076.3

numeric_bit -> Operaciones signed y unsigned sobre bit_vector
numeric_std -> Operaciones signed y unsigned sobre std_logic_vector

Anterior
Volver a inicio curso
Volver a inicio capítulo
Siguiente


WcN - Joan Oliver. Diseño de circuitos digitales con VHDL: Síntesis