Manufaturação industrial
Internet das coisas industrial | Materiais industriais | Manutenção e reparo de equipamentos | Programação industrial |
home  MfgRobots >> Manufaturação industrial >  >> Industrial programming >> VHDL

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


Ir para o próximo tutorial »

VHDL

  1. Resolvendo para tempo desconhecido
  2. Como criar uma lista de strings em VHDL
  3. Como criar um testbench orientado por Tcl para um módulo de bloqueio de código VHDL
  4. Como usar um procedimento em um processo em VHDL
  5. Como instalar um simulador e editor VHDL gratuitamente
  6. Quantos detalhes para planos de trabalho?
  7. Como saber a hora certa para a manutenção dos freios do guindaste
  8. Como reduzir o tempo de treinamento para soldagem de robôs
  9. Como obter o seguro automóvel pela primeira vez?
  10. Quanto tempo seu processo de fabricação requer?