¿Cómo se convierte un número entero como un tiempo en VHDL?

3

Con el propósito de simplificar un banco de pruebas, me gustaría establecer varios retrasos cambiando los valores numéricos en la parte superior del archivo. Me gustaría hacer algo como:

input_frequency : integer := 1000000;
...
constant t_per : time := (1. / input_frequency * 1000000000.) ns;

... que no compila.

Ahora mismo estoy codificado:

constant t_per : time := 1000 ns;

Tampoco he podido obtener el ejemplo superior para trabajar con la palabra clave variable .

¿Hay alguna manera de evitar los tiempos de codificación en VHDL?

    
pregunta schadjo

2 respuestas

4

multiplica (u opera de otra manera) por la unidad de tiempo

constant t_per : time := (1 / input_frequency * 1000000000) * 1ns; (o sus variaciones)

    
respondido por el CapnJJ
4

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 .

    
respondido por el Paebbels

Lea otras preguntas en las etiquetas