Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> VHDL

Dominando bucles For en VHDL: Guía práctica

En el tutorial previo exploramos cómo crear un bucle infinito usando la sentencia loop y salir de él con exit. ¿Qué pasa si necesitamos que el bucle corra un número específico de veces? El For-Loop es la solución más directa.

Un For-Loop itera sobre un rango fijo de enteros o items enumerados. El valor de iteración actual está automáticamente disponible dentro del bucle a través de una constante declarada implícitamente.

Este artículo es parte de la serie Tutoriales Básicos VHDL.

Sintaxis

for <constant> in <range> loop -- loop body end loop;

Aquí, <constant> es un nombre definido por usuario para el contador del bucle, y <range> puede ser un rango de enteros (ascendente o descendente) o un conjunto de valores enumerados.

Rangos de enteros

Código de ejemplo

 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; 

Salida de simulación (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álisis

El For-Loop ejecutó exactamente diez iteraciones, imprimiendo el valor del contador en tiempo de simulación 0. Como no hay wait dentro del bucle, el bucle completo completa instantáneamente. El wait; final coloca el proceso en pausa infinita, común en testbenches.

También demostramos dos operaciones de string esenciales:

Conclusiones clave

Proceda al siguiente tutorial para conceptos VHDL más profundos.

VHDL

  1. Dominando las Técnicas de Afiladora de Herramientas: Guía Práctica
  2. Cómo el molibdeno moldea la industria moderna: usos, beneficios y dinámica de suministro
  3. Creación de listas de cadenas en VHDL: Buenas prácticas y ejemplo
  4. Finalizar elegantemente una simulación de testbench VHDL
  5. Implementación de un controlador PWM en VHDL: Diseño, simulación y demo en FPGA
  6. Generación de números aleatorios en VHDL: De uniforme a OSVVM
  7. Aprovechando procedimientos en-proceso para diseños FSM más limpios en VHDL
  8. Uso de funciones impuras en VHDL: Mejorando legibilidad y mantenibilidad de FSM
  9. Dominando funciones VHDL: Guía práctica para diseño eficiente
  10. Diseño de máquina de estados finitos en VHDL: Ejemplo práctico de semáforo
  11. Uso de procedimientos en VHDL: Simplifique su diseño con código reutilizable