进程和"vanilla" VHDL之间的区别

Difference between process and "vanilla" VHDL

我正在练习 VHDL,我有一个关于 "simple" 不需要过程的语句的基本问题。

我想知道两者的区别

c <= a and b;

其中语句不在进程内,刚好写在架构开始之后,并且

process(a,b)
begin
    c <= a and b;
end process;

这些结果会产生相同的结果吗? 泰 :)

是的,这两个描述是等价的。

并发信号分配 c <= a and b 在每次更新任何参数(ab)时进行评估,并且该过程也会在每次任何参数时进行评估敏感列表中的已更新(ab)。

在简单的例子中不需要使用process,但是对于更复杂的表达式,process的优点是if和[=18=这样的控制结构] 可以使用,这在并发信号分配中是不可能直接实现的。此外,对于时序逻辑,需要 process

您可以将任何 VHDL 单行视为一个隐含的过程,其参数位于敏感列表中 <= 的 RHS 上。 这就是为什么您编写的两个代码片段实际上是等价的。