掌握 VHDL Loop 与 Exit 构造:实用指南
上一教程介绍了用 wait for 语句进行时序延迟并探讨了进程循环。现在聚焦于一个核心 VHDL 构造,它让你执行一次代码然后重复某块直到满足特定条件:loop 语句。
进程可无限运行,但你常需要受控循环并能优雅退出。VHDL 中的 loop 语句是此类结构的最简形式,仅在遇到 exit 时终止。
简单循环语法
loop
-- statements
end loop;
每个 exit 立即跳出其所在的最内层循环,可出现在任何循环类型中。
练习
本教程演示如何构建基本循环并在单次迭代后退出。
示例代码
entity T03_LoopTb is end entity;
architecture sim of T03_LoopTb is
begin
process is
begin
report "Hello!";
loop
report "Peekaboo!";
exit; -- 首次迭代后跳出
end loop;
report "Goodbye!";
wait; -- 无限挂起进程
end process;
end architecture;
仿真输出 (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
控制台显示所有消息均发生在 0 ns,确认除 wait 外的语句不消耗仿真时间。exit 在一次迭代后停止循环,随后进程遇到最终 wait 保持空闲。
分析
通过时间戳可见精确执行顺序:report "Hello!" → report "Peekaboo!" → exit → report "Goodbye!"。此例演示如何用 loop 和 exit 控制流程,无需复杂状态机。
关键要点
- loop 创建无限循环,直到调用
exit才终止。 - exit 立即终止当前循环,无论嵌套层级。
VHDL