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

如何在 VHDL 中使用 While 循环

在之前的教程中,我们学习了如何使用 For 循环遍历整数范围。但是,如果我们想要对循环进行更详细的控制而不仅仅是一个固定的整数范围呢?我们可以为此使用 While-Loop。

只要它测试的表达式计算结果为 true,While 循环就会继续迭代封闭的代码 .因此,While-Loop 适用于事先不知道具体需要多少次迭代的情况。

这篇博文是基本 VHDL 教程系列的一部分。

While-Loop 的语法是:

while <condition> loop
end loop;

<condition> 是一个布尔值 truefalse .它也可以是计算结果为 true 的表达式 或 false .条件在循环的每次迭代之前进行评估,只有条件为 true 时循环才会继续 .

true 的示例表达式 如果 i 小于10:

i < 10

true 的示例表达式 如果 i 不是10:

i /= 10

示例表达式是 true 如果 i 大于等于0,小于2 8 =256:

i >= 0 and i < 2**8;

关系运算符:

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

逻辑运算符:

不是 一个 如果 a 则为真 是假的
一个 b 如果 a 则为真 和b 是真的
一个 b 如果 a 则为真 或 b 是真的
一个 b 如果 a 则为真 或 b 是假的
一个 也不 b 如果 a 则为真 和b 是假的
一个 异或 b 如果恰好是 a 之一,则为真 或 b 是真的
一个 xnor b 如果 a 则为真 和b 相等

运动

在本视频教程中,我们学习使用变量来控制 While-Loop:

我们在本教程中创建的最终代码:

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;

当我们在 ModelSim 中按下运行按钮时,模拟器控制台的输出:

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。我们在 While-Loop 中使用了一个表达式,只要 i 为真 小于 10。因为我们在递增 i 在每次迭代中乘以 2,最后打印出的数字是 8。

在下一次迭代中,i < 10 评估为 false 因为10不小于10。循环终止后,程序碰到了wait; 在那里无限停顿。

外卖

参加基本 VHDL 测验 - 第 1 部分 »

转到下一个教程 »


VHDL

  1. 我们如何使用钼?
  2. 如何在 VHDL 中创建字符串列表
  3. 如何在 VHDL 测试平台中停止仿真
  4. 如何在 VHDL 中创建 PWM 控制器
  5. 如何在 VHDL 中生成随机数
  6. 如何在 VHDL 中的进程中使用过程
  7. 如何在 VHDL 中使用不纯函数
  8. 如何在 VHDL 中使用函数
  9. 如何在 VHDL 中创建有限状态机
  10. 如何在 VHDL 中使用过程
  11. 如何在 VHDL 中创建计时器
  12. 如何使用刀具磨床