Como usar Loop e Exit em VHDL
No tutorial anterior, aprendemos como atrasar o tempo usando o
wait for
declaração. Também aprendemos sobre o loop de processo. Agora sabemos que, se permitirmos, o “thread” do processo entrará em loop dentro do processo para sempre. Mas e se quisermos fazer algo apenas uma vez no início do processo? E, em seguida, fazer um loop sobre algum outro código no final? O tipo mais simples de loop em VHDL pode ser criado usando o
loop
declaração. Esta postagem do blog faz parte da série de tutoriais básicos de VHDL.
A sintaxe para o loop simples é:
loop
end loop;
Esse loop continuará indefinidamente, ou até que um
exit;
é encontrado. O exit
A instrução pode ser usada para interromper qualquer loop. Exercício
Este tutorial em vídeo ensina como criar um loop simples e como sair dele:
O código final que criamos neste tutorial:
entity T03_LoopTb is end entity; architecture sim of T03_LoopTb is begin process is begin report "Hello!"; loop report "Peekaboo!"; exit; end loop; report "Goodbye!"; wait; end process; end architecture;
A saída para o console do simulador quando pressionamos o botão de execução no ModelSim:
VSIM 2> run # ** Note: Hello! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Peekaboo! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Goodbye! # Time: 0 ns Iteration: 0 Instance: /t03_looptb
Análise
Ao executar o código final no simulador vimos que o primeiro “Hello!” foi impresso no console do ModelSim. Então, o “Peekaboo!” entre o
loop;
e end loop;
foi impresso. Na próxima linha, o programa atingiu o exit;
instrução, fazendo com que o programa saia do loop. Finalmente, “Adeus!” foi impresso. Depois disso nada mais acontece porque o programa é pausado para sempre no wait;
declaração. Podemos ver pelos timestamps das impressões que tudo aconteceu no tempo de simulação de 0 ns. Como aprendemos no tutorial anterior, tudo menos
wait
instruções consomem zero tempo. Retirada
- Os
loop
declaração implementa um loop infinito - O
exit
declaração vai quebrar de qualquer laço
Ir para o próximo tutorial »
VHDL
- Como usar um procedimento em um processo em VHDL
- Como usar uma função impura em VHDL
- Como usar uma função em VHDL
- Como usar um procedimento em VHDL
- Como criar um temporizador em VHDL
- Como usar constantes e mapa genérico em VHDL
- Como usar a instanciação do mapa de portas em VHDL
- Como instalar um simulador e editor VHDL gratuitamente
- Microcontrolador PIC18:o que é e como usá-lo
- O que é um designador de referência e como o usamos na montagem?