亿迅智能制造网
工业4.0先进制造技术信息网站!
首页 | 制造技术 | 制造设备 | 工业物联网 | 工业材料 | 设备保养维修 | 工业编程 |
home  MfgRobots >> 亿迅智能制造网 >  >> Industrial programming >> VHDL

掌握 VHDL While 循环:动态迭代控制

在早前探讨 for 循环的基础上,本教程深入 while 循环——一种基于动态条件而非预定范围控制迭代的强大结构。

while 循环只要指定条件保持 true 就反复执行循环体。这使其成为迭代次数取决于运行时数据或复杂逻辑场景的理想选择。

本文属于基础 VHDL 教程系列。

语法

while <condition> loop
-- loop body
end loop;

<condition> 必求值为布尔值。可以是简单比较或更复杂的表达式。条件在每次迭代前检查,确保仅当其保持 true 时继续循环。

条件示例

关系运算符

=等于
/=不等于
<小于
<=小于或等于
>大于
>=大于或等于

逻辑运算符

not aa 为假时为真
a and ba 和 b 均为真时为真
a or ba 或 b 为真时为真
a nand ba 或 b 为假时为真
a nor ba 和 b 均为假时为真
a xor ba 和 b 恰好一个为真时为真
a xnor ba 和 b 相等时为真

练习

观看下方视频教程,了解变量如何驱动 while 循环:

示例代码

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;

仿真输出

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

分析

我们将 i 初始化为 0,以 i < 10 作为循环守卫。因循环每轮将 i 加 2,最后打印值为 8。下一轮条件求值为假(10 不小于 10),循环退出。随后的 wait; 使进程无限挂起,这是测试平台常用模式。

掌握 VHDL While 循环:动态迭代控制

关键要点

参加 基础 VHDL 测验 – 第 1 部分 或 继续下一教程。

VHDL

  1. 刀具磨床实战技法指南:从入门到精通
  2. 钼如何塑造现代工业:用途、优势与供应动态
  3. VHDL 字符串列表创建:最佳实践与示例
  4. 优雅结束 VHDL 测试平台仿真
  5. VHDL 实现 PWM 控制器:设计、仿真与 FPGA 演示
  6. VHDL 生成随机数:从均匀分布到 OSVVM
  7. 利用进程内过程简化VHDL状态机设计
  8. 使用VHDL不纯函数提升FSM可读性与可维护性
  9. 掌握VHDL函数:高效设计实战指南
  10. 用VHDL设计有限状态机:红绿灯实战范例
  11. 在VHDL中使用过程:用可复用代码简化设计
  12. 构建可靠VHDL计时器:从时钟周期计数到小时