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

Dominando Loops While em VHDL: Controle Dinâmico de Iteração

Com base em nossa exploração anterior de loops for, este tutorial mergulha no loop while — um construto poderoso que permite controlar iteração baseada em condições dinâmicas em vez de um intervalo predeterminado.

O loop while executa seu corpo repetidamente enquanto a condição especificada permanecer true. Isso o torna ideal para cenários onde o número de iterações depende de dados de tempo de execução ou lógica complexa.

Este post faz parte da série Tutoriais Básicos de VHDL.

Sintaxe

while <condição> loop -- corpo do loop end loop;

A <condição> deve avaliar para um valor booleano. Pode ser uma comparação simples ou uma expressão mais elaborada. A condição é verificada antes de cada passagem, garantindo que o loop só continue enquanto permanecer true.

Exemplos de Condições

  • i < 10 – verdadeiro enquanto i for menor que 10.
  • i /= 10 – verdadeiro enquanto i não for igual a 10.
  • i >= 0 and i < 2**8 – verdadeiro para valores de 0 até 255.

Operadores Relacionais

=igual
/=diferente
<menor que
<=menor ou igual
>maior que
>=maior ou igual

Operadores Lógicos

not averdadeiro se a for falso
a and bverdadeiro se a e b forem verdadeiros
a or bverdadeiro se a ou b forem verdadeiros
a nand bverdadeiro se a ou b for falso
a nor bverdadeiro se a e b forem falsos
a xor bverdadeiro se exatamente um de a ou b for verdadeiro
a xnor bverdadeiro se a e b forem iguais

Exercício

Assista ao tutorial em vídeo abaixo para ver como uma variável pode controlar um loop while na prática:

Código de Exemplo

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;

Saída do Simulador

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

Inicializamos i com 0 e usamos i < 10 como guarda do loop. Como o loop incrementa i em 2 a cada ciclo, o último valor impresso é 8. Na próxima passagem, a condição avalia como falsa (10 não é menor que 10), e o loop sai. O subsequente wait; suspende o processo indefinidamente, um padrão comum para testbenches.

Dominando Loops While em VHDL: Controle Dinâmico de Iteração

Principais Conclusões

  • O loop while executa enquanto sua condição permanecer true.
  • A condição é avaliada antes de cada iteração.
  • Variáveis podem ser declaradas dentro de um processo e atualizadas dentro do loop.

Faça o Quiz Básico de VHDL – parte 1 ou continue para o próximo tutorial.

VHDL

  1. Como o Molibdênio Molda a Indústria Moderna: Usos, Benefícios e Dinâmica de Fornecimento
  2. Criando Listas de Strings em VHDL: Boas Práticas e Exemplo
  3. Finalizando Graciosamente uma Simulação de Testbench VHDL
  4. Implementando um Controlador PWM em VHDL: Projeto, Simulação e Demo em FPGA
  5. Gerando Números Aleatórios em VHDL: De Uniforme a OSVVM
  6. Aproveitando Procedimentos In-Process para Design de FSM em VHDL Mais Limpo
  7. Usando Funções Impuras em VHDL: Melhorando Legibilidade e Manutenibilidade de FSM
  8. Dominando Funções VHDL: Guia Prático para Design Eficiente
  9. Projetando uma Máquina de Estados Finitos em VHDL: Exemplo Prático de Semáforo
  10. Dominando Técnicas de Retificadora de Ferramentas e Cortadores: Guia Prático