【发布时间】:2018-01-12 21:17:09
【问题描述】:
我有以下来自初学者的 VHDL 教程:
rising_edge: block(clk’event and clk = ‘1’)
begin
result <= guarded input or force after 10ns;
end block rising_edge
说明文字是
“基本上我有一个叫做rising_edge的块,它是一个带有保护条件的块,它执行以下操作,它检查我们在时钟上有一个事件,并且时钟等于1,所以我们'正在有效地寻找所谓的上升沿。我们正在寻找时钟从 0 变为 1 的事件,如果是,那么我们可以有条件地分配结果,所以你会看到这里的结果变量说在 10 ns 后它是一个受保护的输入或强制可能看起来有点令人困惑,但考虑一下没有受保护的关键字。我们所做的只是分配输入或强制的评估结果,我们正在做所以,在这种情况下,信号结果的赋值只有在保护信号为真时才会执行,在我们的例子中,这意味着表达式的赋值,即输入或强制,只会发生在时钟的上升沿,因为它处于警戒状态。”
现在我一遍又一遍地阅读并在网上搜索,但对于这实际上在做什么却一无所知。有人可以温和地解释一下它的目的吗?
【问题讨论】:
-
这是一个什么样的初学者教程?谨慎的表达方式......在我的经验中并不常见......
-
clk’event and clk = ‘1’不保证模拟器中的“0”到“1”转换(使用rising_edge(clk)可以)。 clk'event 就是在这种情况下,clk 上的任何事件都从任何其他值变为“1”。上升沿确保从“0”到“1”的转换。 -
IEEE Std 1076-2008 11.2 Block statement "如果保护条件出现在保留字块之后,则在声明部分的开头隐式声明具有预定义类型 BOOLEAN 的简单名称 GUARD 的信号块,并且保护条件定义了该信号在任何给定时间的值(见 14.7.4)。保护条件的类型应为 BOOLEAN 类型。信号 GUARD 可用于控制在块(见 11.6)。{ 11.6 并发信号赋值语句)。你的教程来自哪里?
-
"rising_edge" 是 std_logic_1164 库中常用函数的名称。我不会重复使用这个词作为某个过程的标签...
-
您正在使用的教程的链接可能有用。
标签: vhdl