Puedes convertir valores enteros para escribir valores de tiempo. Cada valor de tiempo se representa como un número de posición en la escala numérica. Por lo tanto, VHDl ofrece los atributos 'val(...)
y 'pos(...)
. Cada unidad entera representa una unidad de tiempo primaria. Esta unidad primaria se define como femtosegundo (fs). Pero muchos simuladores como ModelSim eligieron una unidad primaria mayor como picosegundo (ps). Puede establecer este límite de resolución de tiempo mínimo en femtosegundos con la opción de línea de comando -t 1fs
.
Convertir números enteros en tiempo:
constant myInt : integer := 10000;
constant myTime : time := time'val(myInt);
Esto es igual a 10 ps
, porque es 10,000 fs. Puede volver a convertir con el atributo 'pos
de un valor de tipo físico a un valor de entero universal .
Lo mismo se puede lograr al multiplicar los valores de tiempo con un entero, porque el paquete std.standard
contiene sobrecargas de operadores para *
para permitir las operaciones time * integer
y integer * time
.
constant myInt : integer := 5;
constant myTime : time := 10 ns * myInt;
esto da como resultado 50 ns. Por la causa hay más operadores sobrecargados como división o módulo.
Si te gusta jugar más con el tipo de tiempo o experimentar otro tipo físico como frecuencia , echa un vistazo a la PoC Library y el paquete PoC.physical .