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触发器
(无论是谁,只要试图综合这一点并得到结果,都会获得额外的积分!)不正确,只有当灵敏度列表中的一个信号发生变化时,才会触发该过程。