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 usar um For-Loop em VHDL


No tutorial anterior aprendemos a criar um loop infinito usando o loop declaração. Também aprendemos como sair de um loop usando o exit declaração. Mas e se quisermos que o loop seja repetido um certo número de vezes? O For-Loop é a maneira mais fácil de fazer isso.

O For-Loop permite iterar em um intervalo fixo de inteiros ou itens enumerados. O item pertencente à iteração atual estará disponível dentro do loop por meio de uma constante declarada implicitamente.

Esta postagem do blog faz parte da série de tutoriais básicos de VHDL.

A sintaxe do For-Loop é:
for <c> in <r> loop
end loop;

O <c> é um nome arbitrário para uma constante que estará disponível dentro do loop. O <r> é um intervalo de inteiros ou valores enumerados sobre os quais o loop irá iterar. Um intervalo de inteiros pode ser incrementado ou decrementado.

O código VHDL para um intervalo de incremento incluindo todos os 10 números de 0 a 9:
0 to 9

O código VHDL para um intervalo decrescente incluindo todos os 10 números de 9 a 0:
9 downto 0

O código VHDL para um intervalo incluindo apenas o número 0:
0 to 0

O código VHDL para um intervalo vazio que não possui nenhum número:
0 to -1

Exercício




O código final que criamos neste tutorial:
entity T04_ForLoopTb is
end entity;

architecture sim of T04_ForLoopTb is
begin

    process is
    begin

        for i in 1 to 10 loop
            report "i=" & integer'image(i);
        end loop;
        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: i=1
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=2
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=3
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=4
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=5
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=6
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=7
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=8
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=9
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb
# ** Note: i=10
#    Time: 0 ns  Iteration: 0  Instance: /t04_forlooptb




Análise


Não totalmente inesperadamente, nosso For-Loop iterou dez vezes antes de terminar. O valor de i é impresso no console do simulador dez vezes no tempo de simulação 0. Não há instrução de espera dentro do loop e, portanto, o loop leva zero tempo para ser concluído. Finalmente, o programa entra em uma pausa infinita no wait; .

Aprendemos como converter um inteiro em uma string usando integer'image() , e usamos o & caractere para unir as duas strings.


Retirada


Ir para o próximo tutorial »

VHDL

  1. Como usamos o molibdênio?
  2. Como criar uma lista de strings em VHDL
  3. Como parar a simulação em um testbench VHDL
  4. Como criar um controlador PWM em VHDL
  5. Como gerar números aleatórios em VHDL
  6. Como usar um procedimento em um processo em VHDL
  7. Como usar uma função impura em VHDL
  8. Como usar uma função em VHDL
  9. Como criar uma máquina de estado finito em VHDL
  10. Como usar um moedor de corte