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
loopdeclaração implementa um loop infinito - O
exitdeclaraçã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?