Soy nuevo en VHDL y tengo problemas para averiguar qué tipos de datos son apropiados para dónde. Si entiendo correctamente, para la síntesis, todos los puertos de entidad de nivel superior deben declararse como std_logic_vector o std_logic y nunca como cualquier otro tipo.¿Cuándo debería usar std_logic_vector y cuándo debería usar otros tipos de datos?
Pero std_logic_vector no admite aritméticos, entonces, ¿cómo debo manejar esto?
Mi intuición me dice que simplemente debería usar std_logic_vector en el nivel superior y luego convertir esto ay desde los tipos de datos integrales al pasarlo a otras entidades. ¿Es esto correcto?
¿Y qué tipo de datos integrales (entero, sin signo, firmado) debe utilizarse donde? Entiendo la diferencia entre firmado y sin firmar, pero ¿cuándo debo usar un número entero?
Entonces, ¿no tiene nada de malo utilizar solo números enteros? –
@Emil. Así es (subtipos enteros restringidos, por supuesto). Sin embargo, los números enteros tienen un límite (perturbador) de 32 bits en la práctica, lo que significa que puede preferir firmar sin firmar/firmar, por ejemplo. si le preocupa la parametrizabilidad o la coherencia. –
Nitpick (sé que Jan lo sabe, pero lo señalaré por completo): los enteros están garantizados por el estándar como "no del todo 32 bits", van desde - ((2 ** 31) -1) a + ((2 ** 31) -1). Muchos proveedores ofrecen el rango int32_t completo, pero no está garantizado :( –