Concurrency 如何使用VHDL在组合逻辑中并发执行语句?

Concurrency 如何使用VHDL在组合逻辑中并发执行语句?,concurrency,vhdl,Concurrency,Vhdl,我想知道如何使用VHDL在组合逻辑中并发执行信号分配语句?例如,对于下面的代码,这三条语句应该同时运行。我所怀疑的是,当我运行模拟时,“y”输出信号如何立即改变,尽管如果同时运行语句,“y”将看不到“wire1”和“wire2”的效果(仅当语句执行多次时) 实体test1是端口(a、b、c、d:输入位;y:输出位); 终端实体test1; ------------------------------------------------------ test1的基本架构是 信号线1,线2:位; 开

我想知道如何使用VHDL在组合逻辑中并发执行信号分配语句?例如,对于下面的代码,这三条语句应该同时运行。我所怀疑的是,当我运行模拟时,“y”输出信号如何立即改变,尽管如果同时运行语句,“y”将看不到“wire1”和“wire2”的效果(仅当语句执行多次时)

实体test1是端口(a、b、c、d:输入位;y:输出位);
终端实体test1;
------------------------------------------------------
test1的基本架构是
信号线1,线2:位;
开始

wire1由于VHDL用于模拟数字电路,因此其工作原理必须与实际电路类似,在实际电路中(在模拟中通常忽略一个小延迟后)电路连续跟踪其输入

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

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


因此,当
a
更改时,
wire1
将被更新,并反过来触发对
y
的更新。只要有必要进行组合更新,这种情况就会持续。因此,在模拟中,更新确实是有序的,尽管没有经过模拟时间。此类更新之间的“时间”通常称为“增量周期”。

将每个此类语句视为一个过程,并查看IEEE Std 1076-2008 11.6并发信号分配语句“并发信号分配语句表示为信号分配值的等效过程语句。“e”…如果有表达式(时间表达式除外)在并发信号分配语句中引用一个信号,然后进程语句包含一个带有显式敏感度子句的最终等待语句。敏感度子句是通过将10.2的规则应用于上述每个表达式而构造的集合的并集来构造的……”
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;