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 while-loop em VHDL


No tutorial anterior, aprendemos como usar um For-Loop para iterar em um intervalo de inteiros. Mas e se quisermos um controle mais detalhado do loop do que apenas um intervalo de inteiros fixo? Podemos usar um While-Loop para isso.

O While-Loop continuará a iterar sobre o código incluído, desde que a expressão que ele testa seja avaliada como true . Portanto, o While-Loop é adequado para situações em que você não sabe exatamente quantas iterações serão necessárias antecipadamente.

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

A sintaxe do While-Loop é:
while <condition> loop
end loop;

O <condition> é um booleano true ou false . Também pode ser uma expressão avaliada como true ou false . A condição é avaliada antes de cada iteração do loop, e o loop continuará somente se a condição for true .

Expressão de exemplo que é true se i é menor que 10:
i < 10

Expressão de exemplo que é true se i não é 10:
i /= 10

Expressão de exemplo que é true se i é maior ou igual a 0 e menor que 2 8 =256:
i >= 0 and i < 2**8;

Operadores relacionais:
= igual
/= diferente
menor que
<= menor ou igual
> maior que
>= maior ou igual

Operadores lógicos:
não um true se um é falso
a e b true se um e b são verdadeiras
a ou b true se um ou b são verdadeiras
a ne b true se um ou b é falso
a nem b true se um e b são falsos
a xor b true se exatamente um de a ou b são verdadeiras
a xnor b true se um e b são iguais

Exercício


Neste tutorial em vídeo, aprendemos a usar uma variável para controlar um While-Loop:



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

architecture sim of T05_WhileLoopTb is
begin

    process is
        variable i : integer := 0;
    begin

        while i < 10 loop
            report "i=" & integer'image(i);
            i := i + 2;
        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=0
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=2
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=4
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=6
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb
# ** Note: i=8
#    Time: 0 ns  Iteration: 0  Instance: /t05_whilelooptb




Análise


Criamos uma variável inteira i e demos um valor inicial de 0. Usamos uma expressão no While-Loop que é verdadeira enquanto i é menor que 10. Porque estávamos incrementando i por 2 em cada iteração, o último número que foi impresso foi 8.

Na próxima iteração, o i < 10 avaliado para false porque 10 não é menor que 10. Depois que o loop terminou, o programa atingiu o wait; onde parou infinitamente.


Retirada


Faça o Basic VHDL Quiz – parte 1 »
ou
Vá 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