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 forpelo tempo exato especificado - Todas as instruções, exceto
waitdeclaraçõ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?