如何使用VHDL在组合逻辑中同时执行语句?

时间:2018-01-30 13:51:08

标签: concurrency vhdl

我想知道如何使用VHDL在组合逻辑中同时执行信号分配语句?例如,对于以下代码,三个语句应该同时运行。我有一个疑问是,当我运行模拟时,'y'输出信号是如何立即改变的,尽管如果语句同时运行'y'将不会看到'wire1'和'wire2'的效果(仅当语句时)执行不止一次)。

entity test1 is port (a, b, c, d : in bit; y : out bit);
end entity test1;
------------------------------------------------------
architecture basic of test1 is
signal wire1, wire2 : bit;
begin
    wire1 <= a and b;
    wire2 <= c and d;
    y <= wire1 and wire2;
end architecture basic;

1 个答案:

答案 0 :(得分:2)

由于VHDL用于模拟数字电路,因此必须与实际电路类似地工作,其中(在模拟中通常忽略的小延迟之后)电路不断跟随其输入。

我假设你想知道实现是如何实现这种行为的:

模拟器将跟踪哪个信号取决于哪个其他符号,并在其中一个输入发生变化时重新评估表达式。

因此,当a发生变化时,wire1将会更新,然后会触发对y的更新。只要需要组合更新,这将继续。因此,在模拟中,尽管没有经过模拟时间,但更新确实很有序。 &#34;时间&#34;这些更新之间通常称为&#34; delta周期&#34;。