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