Como atrasar o tempo em VHDL:Aguarde
No tutorial anterior, aprendemos que um processo pode ser pensado como um encadeamento de programa. Também aprendemos que um
wait;
instrução faz com que o programa seja pausado indefinidamente. Mas existe uma maneira de fazer um programa esperar por qualquer outro valor de tempo que não seja para sempre? Se removermos o
wait;
completamente e tentar compilar o programa, o compilador irá reclamar sobre um loop infinito. O loop ao qual o compilador está se referindo é o loop de processo . Um encadeamento de processo em VHDL nunca terminará, ele fará um loop contínuo entre o begin
e end process;
declarações. Deve haver um wait
declaração em algum lugar dentro do loop do processo. Esta postagem do blog faz parte da série de tutoriais básicos de VHDL.
Enquanto
wait;
fará com que o programa pause para sempre, o wait for
pode ser usada para atrasar o programa por qualquer período de tempo. A sintaxe do
wait for
declaração é:wait for <time_value> <time_unit>;
onde
<time_value>
é número e <time_unit>
é uma das seguintes unidades de tempo:fs | femtossegundos |
ps | picossegundos |
ns | nanossegundos |
nós | microssegundos |
ms | milissegundos |
segundo | segundos |
min | minutos |
hora | horas |
Exercício
Este vídeo tutorial mostrará como usar o
wait for
instrução para pausar o processo por um determinado tempo. O código que criamos neste 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;
A saída para o console do simulador quando pressionamos o botão de execução no 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álise
Neste exemplo usamos
10 ns
, o que significa 10 nanossegundos. Ao trabalhar com lógica digital que funciona em frequências de clock de MHz, você normalmente estará trabalhando com incrementos de nanossegundos. Quando executamos o código no simulador, ele imprimiu “Peekaboo!” ao console a cada 10 ns. Como esta é uma simulação, o
report
A instrução leva zero tempo, e o mesmo acontece com o loop. Retirada
- O encadeamento do processo fará uma pausa em
wait for
pelo tempo exato especificado - Todas as instruções, exceto
wait
declarações levam tempo de simulação zero
Ir para o próximo tutorial »
VHDL
- Resolvendo para tempo desconhecido
- Como criar uma lista de strings em VHDL
- Como criar um testbench orientado por Tcl para um módulo de bloqueio de código VHDL
- Como usar um procedimento em um processo em VHDL
- Como instalar um simulador e editor VHDL gratuitamente
- Quantos detalhes para planos de trabalho?
- Como saber a hora certa para a manutenção dos freios do guindaste
- Como reduzir o tempo de treinamento para soldagem de robôs
- Como obter o seguro automóvel pela primeira vez?
- Quanto tempo seu processo de fabricação requer?