Uso de sentencias Wait-For para retrasar ejecución en VHDL
En nuestro tutorial previo comparamos un proceso VHDL a un hilo de programa e introdujimos la sentencia wait;, que suspende un proceso indefinidamente. Pero ¿qué pasa si necesitas que un proceso pause por una duración específica?
Remover el wait; completamente dispara error de compilador porque todo proceso VHDL es un bucle infinito que debe contener al menos una sentencia wait. El bucle corre continuamente entre los delimitadores begin y end process;.
Este artículo es parte de la serie Tutoriales Básicos VHDL.
Mientras wait; halta ejecución para siempre, el constructo wait for permite retrasar un proceso por cualquier intervalo de tiempo deseado.
La sintaxis de wait for es:
wait for <time_value> <time_unit>;
donde <time_value> es un literal numérico y <time_unit> puede ser uno de los siguientes:
| fs | femto segundos |
| ps | pico segundos |
| ns | nano segundos |
| us | micro segundos |
| ms | mili segundos |
| sec | segundos |
| min | minutos |
| hr | horas |
Ejercicio
Mira el tutorial de video para ver wait for en acción, pausando un proceso por período definido por usuario.
El ejemplo VHDL que construimos se muestra abajo:
entity T02_WaitForTb is end entity; architecture sim of T02_WaitForTb is begin process is begin -- Process "thread" starts here report "Peekaboo!"; wait for 10 ns; -- Loop back to the start end process; end architecture;
Ejecutando esto en ModelSim produce la siguiente salida de consola:
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 el delay de 10 ns es típico para lógica operando a frecuencias MHz, donde granularidad nanosegundo alinea con periodos de clock.
Durante simulación, la sentencia report y control de bucle consumen tiempo cero; solo la sentencia wait for avanza tiempo de simulación.

Conclusión
- Un proceso VHDL pausa precisamente por la duración especificada en
wait for. - Todas las demás sentencias en un proceso ejecutan instantáneamente en tiempo de simulación.
Proceda al siguiente tutorial →
VHDL
- Equilibrando Detalle y Eficiencia en la Planificación de Trabajos de Mantenimiento
- Primer seguro de coche: guía paso a paso para conseguir cobertura asequible
- Cálculo del tiempo para alcanzar un voltaje objetivo en circuitos RC y RL
- Estimaciones precisas de plazos de entrega para externalización de fabricación de metales
- Acelera la Formación en Soldadura Robótica: Reduce Tiempos y Aumenta la Eficiencia
- Cuándo programar el mantenimiento de frenos de grúa: indicadores clave
- Creación de listas de cadenas en VHDL: Buenas prácticas y ejemplo
- Creación de un testbench dirigido por Tcl para un módulo VHDL de cerradura por código
- Aprovechando procedimientos en-proceso para diseños FSM más limpios en VHDL
- Dominando funciones VHDL: Guía práctica para diseño eficiente
- Configuración gratis de simulador y editor VHDL: Guía para estudiantes