3 vhdl
我经常使用以下声明.但是,我想知道
if ( clock'event and clock = '1' ) then
[do something]
Run Code Online (Sandbox Code Playgroud)
我们真的需要在上面的语句中写出clock'event吗?如果是,为什么?
你可以让模拟在没有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触发器.
(对于任何人试图合成这个并获得结果的奖励积分!)
| 归档时间: |
|
| 查看次数: |
598 次 |
| 最近记录: |