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 For em VHDL: Um Guia Prático

No tutorial anterior, exploramos como criar um loop infinito usando a instrução loop e sair dele com exit. E se precisarmos que o loop execute um número específico de vezes? O Loop For é a solução mais direta.

Um Loop For itera sobre um intervalo fixo de inteiros ou itens enumerados. O valor da iteração atual fica automaticamente disponível dentro do loop através de uma constante declarada implicitamente.

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

Sintaxe

for <constante> in <intervalo> loop -- corpo do loop end loop;

Aqui, <constante> é um nome definido pelo usuário para o contador do loop, e <intervalo> pode ser um intervalo de inteiros (crescente ou decrescente) ou um conjunto de valores enumerados.

Intervalos de Inteiros

  • Intervalo crescente: 0 to 9 – itera 0,1,2,…,9.
  • Intervalo decrescente: 9 downto 0 – itera 9,8,7,…,0.
  • Valor único: 0 to 0 – itera apenas 0.
  • Intervalo vazio: 0 to -1 – corpo do loop nunca executa.

Código de Exemplo

 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; 

Saída da Simulação (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

O Loop For executou exatamente dez iterações, imprimindo o valor do contador no tempo de simulação 0. Como não há wait dentro do loop, o loop inteiro completa instantaneamente. O wait; final coloca o processo em pausa infinita, o que é comum em testbenches.

Também demonstramos duas operações essenciais de string:

  • integer'image(i) – converte um inteiro para string.
  • & – concatena duas strings.

Principais Conclusões

  • Loops For podem iterar sobre intervalos crescentes (to) e decrescentes (downto).
  • Valores inteiros são convertidos para strings com integer'image().
  • Concatenação de strings usa o operador &.

Prossiga para o próximo tutorial para conceitos mais profundos de VHDL.

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