【问题标题】:sensitivity list in process in vhdlvhdl 处理中的敏感度列表
【发布时间】:2015-07-26 21:47:11
【问题描述】:

在下面的代码中,如果灵敏度列表中缺少(select),模拟结果会是什么?

process(a,b,select)
begin
if (select = '1') then 
output <= a;
else
output<=b;
end if;
end process;

【问题讨论】:

  • 尝试模拟它,让我们知道会发生什么!这是一个免费的在线模拟器:edaplayground.com/home
  • 谢谢。我在 VHDL 方面并没有那么复杂。我只是想通过星期一的考试。顺便感谢您的回复。
  • 这不起作用,因为select 是关键字。
  • 好的。假设 sel 而不是 select。

标签: vhdl


【解决方案1】:

你会得到一个锁存器,而不是一个多路复用器。

如果sel 发生更改,您的进程当前正在运行,因为它在敏感度列表中。然后进程决定是否应该将ab 路由到输出;这是一个经典的多路复用器。每当absel 发生变化时,输出可能会发生变化,而且它是完全组合的。

如果您将sel 排除在敏感列表之外,则当sel 更改时,该进程将不会运行。当ab 发生变化时,代码只会检查sel 的当前状态;它只是在任何其他时间被忽略。它的作用(在物理硬件方面)很复杂,但请注意必须涉及内存。当ab 发生变化时,模拟器(或正确的硬件)会有效地记住sel 的值,然后忽略sel 的当前值,直到ab 发生另一个变化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 2023-04-08
    • 1970-01-01
    • 2021-03-01
    • 1970-01-01
    相关资源
    最近更新 更多