Usando Instruções Wait-For para Atrasar Execução em VHDL
No tutorial anterior, comparamos um processo VHDL a uma thread de programa e introduzimos a instrução wait;, que suspende um processo indefinidamente. Mas e se você precisar que um processo pause por uma duração específica?
Remover o wait; completamente dispara um erro de compilador porque todo processo VHDL é um loop infinito que deve conter pelo menos uma instrução wait. O loop roda continuamente entre os delimitadores begin e end process;.
Este artigo faz parte da série Tutoriais Básicos de VHDL.
Enquanto wait; halta a execução para sempre, o construto wait for permite atrasar um processo por qualquer intervalo de tempo desejado.
A sintaxe de wait for é:
wait for <valor_tempo> <unidade_tempo>;
onde <valor_tempo> é um literal numérico e <unidade_tempo> pode ser uma das seguintes:
| fs | femtossegundos |
| ps | picossegundos |
| ns | nanossegundos |
| us | microssegundos |
| ms | milissegundos |
| sec | segundos |
| min | minutos |
| hr | horas |
Exercício
Assista ao tutorial em vídeo para ver wait for em ação, pausando um processo por um período definido pelo usuário.
O exemplo de VHDL que construímos é mostrado abaixo:
entity T02_WaitForTb is end entity; architecture sim of T02_WaitForTb is begin process is begin -- "Thread" do processo começa aqui report "Cucú!"; wait for 10 ns; -- Volta ao início end process; end architecture;
Executando isso no ModelSim produz a seguinte saída do console:
VSIM 2> run # ** Note: Cucú! # Time: 0 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Cucú! # Time: 10 ns Iteration: 0 Instance: /t02_waitfortb # ** Note: Cucú! # Time: 20 ns Iteration: 0 Instance: /t02_waitfortb ...
Análise
Neste exemplo, o atraso de 10 ns é típico para lógica operando em frequências MHz, onde granularidade de nanossegundos alinha com períodos de clock.
Durante a simulação, a instrução report e controle de loop consomem tempo zero; apenas a instrução wait for avança o tempo de simulação.

Conclusão
- Um processo VHDL pausa precisamente pela duração especificada em
wait for. - Todas as outras instruções em um processo executam instantaneamente em tempo de simulação.
Prossiga para o próximo tutorial →
VHDL
- Calculando o Tempo para Atingir uma Tensão Alvo em Circuitos RC e RL
- Criando Listas de Strings em VHDL: Boas Práticas e Exemplo
- Criando um Testbench Dirigido por Tcl para um Módulo Code-Lock VHDL
- Aproveitando Procedimentos In-Process para Design de FSM em VHDL Mais Limpo
- Configuração Gratuita de Simulador e Editor VHDL: Guia para Estudantes
- Equilibrando Detalhe e Eficiência no Planejamento de Trabalhos de Manutenção
- Quando Agendar a Manutenção dos Freios do Guindaste: Indicadores-Chave
- Acelere o Treinamento de Soldagem Robótica: Reduza Tempo, Aumente Eficiência
- Seguro Auto para Primeira Vez: Guia Passo a Passo para Cobertura Acessível
- Estimativas Precisas de Prazo de Entrega para Terceirização de Fabricação de Metais