Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> VHDL

Cómo retrasar el tiempo en VHDL:Esperar

En el tutorial anterior aprendimos que un proceso puede considerarse como un hilo de programa. También aprendimos que un wait; hace que el programa se detenga indefinidamente. Pero, ¿hay alguna manera de hacer que un programa espere por cualquier otro valor de tiempo que no sea para siempre?

Si quitamos el wait; por completo e intentar compilar el programa, el compilador se quejará de un bucle infinito. El ciclo al que se refiere el compilador es el ciclo de proceso . Un subproceso de proceso en VHDL nunca terminará, se repetirá continuamente entre el begin y end process; declaraciones. Tiene que haber un wait declaración en algún lugar dentro del ciclo del proceso.

Esta publicación de blog es parte de la serie Tutoriales básicos de VHDL.

Mientras que wait; hará que el programa se detenga para siempre, el wait for puede usarse para retrasar el programa por cualquier cantidad de tiempo.

La sintaxis del wait for declaración es:
wait for <time_value> <time_unit>;
donde <time_value> es número y <time_unit> es una de las siguientes unidades de tiempo:

fs femtosegundos
ps picosegundos
ns nanosegundos
nosotros microsegundos
ms milisegundos
segundo segundos
min minutos
hr horas

Ejercicio

Este video tutorial le mostrará cómo usar el wait for instrucción para pausar el proceso durante un tiempo determinado.

El código que creamos en este tutorial:

entity T02_WaitForTb is
end entity;

architecture sim of T02_WaitForTb is
begin

    process is
    begin
        -- This is the start of the process "thread"
 
        report "Peekaboo!";
        
        wait for 10 ns;
        
        -- The process will loop back to the start from here
    end process;

end architecture;

La salida a la consola del simulador cuando presionamos el botón ejecutar en ModelSim:

VSIM 2> run
# ** Note: Peekaboo!
#    Time: 0 ns  Iteration: 0  Instance: /t02_waitfortb
# ** Note: Peekaboo!
#    Time: 10 ns  Iteration: 0  Instance: /t02_waitfortb
# ** Note: Peekaboo!
#    Time: 20 ns  Iteration: 0  Instance: /t02_waitfortb
...

Análisis

En este ejemplo usamos 10 ns , lo que significa 10 nanosegundos. Cuando se trabaja con lógica digital que se ejecuta en frecuencias de reloj de MHz, generalmente se trabaja con incrementos de nanosegundos.

Cuando ejecutamos el código en el simulador, imprimió “¡Peekaboo!” a la consola cada 10 ns. Debido a que esto es una simulación, el report declaración toma tiempo cero, y también lo hace el bucle.

Para llevar

Ir al siguiente tutorial »


VHDL

  1. Resolviendo el tiempo desconocido
  2. Cómo crear una lista de cadenas en VHDL
  3. Cómo crear un banco de pruebas controlado por Tcl para un módulo de bloqueo de código VHDL
  4. Cómo usar un procedimiento en un proceso en VHDL
  5. Cómo usar una función en VHDL
  6. Cómo instalar un simulador y editor VHDL gratis
  7. ¿Cuántos detalles para los planes de trabajo?
  8. Cómo saber si es hora de realizar el mantenimiento de los frenos de la grúa
  9. Cómo reducir el tiempo de capacitación para la soldadura robótica
  10. ¿Cómo contratar un seguro de coche por primera vez?
  11. ¿Cuánto tiempo requiere su proceso de fabricación?