进程和"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
在每次更新任何参数(a
或 b
)时进行评估,并且该过程也会在每次任何参数时进行评估敏感列表中的已更新(a
或 b
)。
在简单的例子中不需要使用process
,但是对于更复杂的表达式,process
的优点是if
和[=18=这样的控制结构] 可以使用,这在并发信号分配中是不可能直接实现的。此外,对于时序逻辑,需要 process
。
您可以将任何 VHDL 单行视为一个隐含的过程,其参数位于敏感列表中 <= 的 RHS 上。
这就是为什么您编写的两个代码片段实际上是等价的。
我正在练习 VHDL,我有一个关于 "simple" 不需要过程的语句的基本问题。
我想知道两者的区别
c <= a and b;
其中语句不在进程内,刚好写在架构开始之后,并且
process(a,b)
begin
c <= a and b;
end process;
这些结果会产生相同的结果吗? 泰 :)
是的,这两个描述是等价的。
并发信号分配 c <= a and b
在每次更新任何参数(a
或 b
)时进行评估,并且该过程也会在每次任何参数时进行评估敏感列表中的已更新(a
或 b
)。
在简单的例子中不需要使用process
,但是对于更复杂的表达式,process
的优点是if
和[=18=这样的控制结构] 可以使用,这在并发信号分配中是不可能直接实现的。此外,对于时序逻辑,需要 process
。
您可以将任何 VHDL 单行视为一个隐含的过程,其参数位于敏感列表中 <= 的 RHS 上。 这就是为什么您编写的两个代码片段实际上是等价的。