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

掌握 VHDL 条件逻辑:If-Then-Elsif-Else 详解

上一教程我们用条件表达式配合 Wait Until 语句,仅在两个计数器信号匹配时触发进程。若需根据不同输入采取不同动作该如何处理?

If-Then-Elsif-Else 结构让我们能分支逻辑。根据变量值或表达式结果,程序可遵循不同路径执行。

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

基本语法

标准形式:

if <condition> then
elsif <condition> then
else
end if;

elsif 和 else 子句可选,elsif 可多次出现。<condition> 可以是布尔字面量或求值为 true/false 的表达式。

示例:MyCounter < 10 在 MyCounter 小于 10 时为真。

关系运算符

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

逻辑运算符

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

练习

下面完整 VHDL 示例演示 If-Then-Elsif-Else 结构的实际运用。

最终代码:

entity T08_IfTb is end entity;
architecture sim of T08_IfTb is
  signal CountUp : integer := 0;
  signal CountDown : integer := 10;
begin
  process is
  begin
    CountUp <= CountUp + 1;
    CountDown <= CountDown - 1;
    wait for 10 ns;
  end process;
  process is
  begin
    if CountUp > CountDown then
      report "CountUp is larger";
    elsif CountUp < CountDown then
      report "CountDown is larger";
    else
      report "They are equal";
    end if;
    wait on CountUp, CountDown;
  end process;
end architecture;

ModelSim 仿真控制台输出:

VSIM 2> run
# ** Note: CountDown is larger
# Time: 0 ns Iteration: 0 Instance: /t08_iftb
# ** Note: CountDown is larger
# Time: 0 ns Iteration: 1 Instance: /t08_iftb
# ** Note: CountDown is larger
# Time: 10 ns Iteration: 1 Instance: /t08_iftb
# ** Note: CountDown is larger
# Time: 20 ns Iteration: 1 Instance: /t08_iftb
# ** Note: CountDown is larger
# Time: 30 ns Iteration: 1 Instance: /t08_iftb
# ** Note: They are equal
# Time: 40 ns Iteration: 1 Instance: /t08_iftb
# ** Note: Countup is larger
# Time: 50 ns Iteration: 1 Instance: /t08_iftb
# ** Note: Countup is larger
# Time: 60 ns Iteration: 1 Instance: /t08_iftb ...

分析

我们将 CountDown 初始化为 10,CountUp 为 0。两个计数器在第一个进程中每 10 ns 同步更新。第二个进程等待这些信号,因此每当它们变化时就会触发。If-Then-Elsif-Else 块随后选择三个分支之一:CountUp > CountDown、CountUp < CountDown 或 CountUp = CountDown。虽然显式 else 非强制,但包含它是最佳实践,确保覆盖所有边界情况。

控制台跟踪确认第二个进程在每次更新后评估条件,打印相应消息。

掌握 VHDL 条件逻辑:If-Then-Elsif-Else 详解

要点

继续下一教程 »

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计时器:从时钟周期计数到小时