'事件的必要性

时间:2011-07-31 10:03:13

标签: vhdl

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

  if ( clock'event and clock = '1' ) then 
             [do something]

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

2 个答案:

答案 0 :(得分:5)

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

关于可综合VHDL 的IEEE标准要求您添加clock'event。 编写if rising_edge(clock)代替了普遍接受的良好做法。这样可以更好地传达您的意图。允许rising_edgefalling_edge函数作为可合成的VHDL结构。

用于模拟:

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

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

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

答案 1 :(得分:-3)

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