'事件的必要性

3 vhdl

我经常使用以下声明.但是,我想知道

  if ( clock'event and clock = '1' ) then 
             [do something]
Run Code Online (Sandbox Code Playgroud)

我们真的需要在上面的语句中写出clock'event吗?如果是,为什么?

Phi*_*ppe 5

你可以让模拟在没有clock'event条件的情况下完美地工作,但合成将会出错.

关于可综合VHDL的IEEE标准要求您添加clock'event.if rising_edge(clock)相反,写作是一种普遍接受的良好做法.这样可以更好地传达您的意图.允许将两者rising_edge和falling_edge函数作为可合成的VHDL构造.

用于模拟:

process (clock) is
-- stuff
begin
if clock='1' then -- EVIL! don't do this
  -- do things
end if;
end process;
Run Code Online (Sandbox Code Playgroud)

假设clock只是从"0"切换回"1"并返回(没有元值),行为将与您在clock'event条件中获得的行为相同.同样,这不会合成你想要的!你可能会得到一个锁存器,而不是D触发器.

(对于任何人试图合成这个并获得结果的奖励积分!)