Vhdl 需要';事件

Vhdl 需要';事件,vhdl,Vhdl,我经常使用下面的语句。然而,我想知道 if ( clock'event and clock = '1' ) then [do something] 我们真的需要在上面的语句中写上时钟事件吗? 如果是,原因是什么?是的,否则以下代码将在时钟信号高的整个时间内执行,而不仅仅是在时钟的上升沿。您可以让模拟在没有时钟事件的情况下完美地工作,但合成将出错 关于可合成VHDL的IEEE标准要求添加时钟事件。 通常公认的良好做法是,如果上升沿(时钟),则编写。这能更好地表达你

我经常使用下面的语句。然而,我想知道

  if ( clock'event and clock = '1' ) then 
             [do something]
我们真的需要在上面的语句中写上时钟事件吗?
如果是,原因是什么?

是的,否则以下代码将在时钟信号高的整个时间内执行,而不仅仅是在时钟的上升沿。

您可以让模拟在没有
时钟事件的情况下完美地工作,但合成将出错

关于可合成VHDL的IEEE标准要求添加
时钟事件
。 通常公认的良好做法是,如果上升沿(时钟)
,则编写
。这能更好地表达你的意图。
上升沿
下降沿
函数都可以作为可合成的VHDL结构

对于模拟:

process (clock) is
-- stuff
begin
if clock='1' then -- EVIL! don't do this
  -- do things
end if;
end process;
假设
clock
只是从“0”切换到“1”再切换回来(没有meta值),行为将与
clock'event
条件相同。再说一次,这不会合成你想要的!你可能会得到一个闩锁,而不是D触发器


(无论是谁,只要试图综合这一点并得到结果,都会获得额外的积分!)

不正确,只有当灵敏度列表中的一个信号发生变化时,才会触发该过程。