如何使用 VHDL 在组合逻辑中并发执行语句?
How statements are executed concurrently in combinational logic using 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;
由于 VHDL 用于模拟数字电路,因此它必须与实际电路类似地工作,其中(在模拟中通常忽略的小延迟之后)电路连续跟随其输入。
我假设您想知道实现是如何实现这种行为的:
模拟器将跟踪哪个信号取决于哪个其他符号,并在其中一个输入发生变化时重新计算表达式。
所以当a
改变时,wire1
会被更新,进而触发对y
的更新。只要需要组合更新,这种情况就会继续。所以在模拟中,更新确实是有序的,尽管模拟时间还没有过去。此类更新之间的 "time" 通常称为 "delta cycle"。
我想知道如何使用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;
由于 VHDL 用于模拟数字电路,因此它必须与实际电路类似地工作,其中(在模拟中通常忽略的小延迟之后)电路连续跟随其输入。
我假设您想知道实现是如何实现这种行为的:
模拟器将跟踪哪个信号取决于哪个其他符号,并在其中一个输入发生变化时重新计算表达式。
所以当a
改变时,wire1
会被更新,进而触发对y
的更新。只要需要组合更新,这种情况就会继续。所以在模拟中,更新确实是有序的,尽管模拟时间还没有过去。此类更新之间的 "time" 通常称为 "delta cycle"。