Dominando constructos Loop y Exit en VHDL: Guía práctica
En el tutorial previo cubrimos delays de timing con la sentencia wait for y exploramos bucles de proceso. Ahora nos enfocaremos en un constructo core de VHDL que permite ejecutar código una vez y luego repetir un bloque hasta que se cumpla una condición específica: la sentencia loop.
Mientras un proceso puede correr indefinidamente, a menudo necesitas un bucle controlado del que puedas salir graciosamente. La sentencia loop en VHDL es la forma más simple de tal constructo, y termina solo cuando se encuentra un exit.
Sintaxis de un loop simple
loop -- statements end loop;
Cada exit rompe el bucle más interno en el que reside, y puede aparecer en cualquier tipo de bucle.
Ejercicio
Este tutorial demuestra cómo construir un bucle básico y salir de él tras una sola iteración.
Código de ejemplo
entity T03_LoopTb is end entity; architecture sim of T03_LoopTb is begin process is begin report "Hello!"; loop report "Peekaboo!"; exit; -- Break out after first iteration end loop; report "Goodbye!"; wait; -- Suspend the process indefinitely end process; end architecture;
Salida de simulación (ModelSim)
VSIM 2> run # ** Note: Hello! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Peekaboo! # Time: 0 ns Iteration: 0 Instance: /t03_looptb # ** Note: Goodbye! # Time: 0 ns Iteration: 0 Instance: /t03_looptb
La consola muestra que todos los mensajes ocurren en tiempo 0 ns, confirmando que sentencias distintas de wait consumen cero tiempo de simulación. La sentencia exit detiene el bucle tras una iteración, tras lo cual el proceso llega al wait final y permanece idle.
Análisis
Inspeccionando los timestamps, ves el orden preciso de ejecución: report "Hello!" → report "Peekaboo!" → exit → report "Goodbye!". Este ejemplo demuestra cómo usar loop y exit para control de flujo sin depender de máquinas de estado complejas.
Conclusiones clave
- loop crea un bucle infinito que corre hasta que
exites invocado. - exit termina inmediatamente el bucle actual, sin importar nivel de anidamiento.
VHDL
- Microcontroladores PIC18: Características, Rendimiento y Cómo Usarlos
- Entendiendo Designadores de Referencia: Cómo Etiquetar Conexiones en Ensamblaje PCB
- Aprovechando procedimientos en-proceso para diseños FSM más limpios en VHDL
- Uso de funciones impuras en VHDL: Mejorando legibilidad y mantenibilidad de FSM
- Dominando funciones VHDL: Guía práctica para diseño eficiente
- Uso de procedimientos en VHDL: Simplifique su diseño con código reutilizable
- Construya un temporizador fiable en VHDL: Contar ciclos de reloj hasta horas
- Aprovechando constantes y generic maps en VHDL para diseño de módulos flexibles
- Dominando la instanciación con port map en VHDL: Guía práctica
- Dominando la sentencia Case-When en VHDL: Diseño eficiente de multiplexores
- Configuración gratis de simulador y editor VHDL: Guía para estudiantes