进程和并发语句之间的区别
Difference between process and concurrent statements
当我在这样的过程中将信号 F 分配给信号 B 的补码时:
architecture V1 of E is
signal B: bit;
begin
process (A) begin
B<=A;
F<=not b;
end process;
end architecture;
然后F将在第一个循环中保持B的旧取反值。
但是为什么我只是使用并发语句的这个例子不一样呢?
architecture V1 of E is
signal B : bit;
begin
B<=A;
F<=not b;
end architecture;
当我想到硬件组件 F 将接收来自 B 的信号时,那么在第一个周期中 F 也应该保持 B 的旧否定值?
并发信号分配只是 shorthand 进程。您的第二个代码与:
process(A)
begin
B <= A;
end process;
process(b)
begin
F <= not b;
end process;
行为不同的原因是,对于您的第一个代码,进程仅在信号 A
发生变化时恢复,而对于第二个代码,每次其敏感列表中的信号发生变化时,每个进程都会恢复。
当我在这样的过程中将信号 F 分配给信号 B 的补码时:
architecture V1 of E is
signal B: bit;
begin
process (A) begin
B<=A;
F<=not b;
end process;
end architecture;
然后F将在第一个循环中保持B的旧取反值。
但是为什么我只是使用并发语句的这个例子不一样呢?
architecture V1 of E is
signal B : bit;
begin
B<=A;
F<=not b;
end architecture;
当我想到硬件组件 F 将接收来自 B 的信号时,那么在第一个周期中 F 也应该保持 B 的旧否定值?
并发信号分配只是 shorthand 进程。您的第二个代码与:
process(A)
begin
B <= A;
end process;
process(b)
begin
F <= not b;
end process;
行为不同的原因是,对于您的第一个代码,进程仅在信号 A
发生变化时恢复,而对于第二个代码,每次其敏感列表中的信号发生变化时,每个进程都会恢复。