vhdl 中管道和 rising_edge 之间的区别?
Differences between pipeline and rising_edge in vhdl?
我正在尝试理解一些 VHDL 代码,但我无法理解这部分内容:
...
accumulated_x <= input_x;
...
if accumulated_x = '0' and input_x = '1' then
对我来说是一样的:
if rising_edge(input_x) then
但是当我这样替换时,它不起作用,然后就意味着不一样了,为什么?
rising_edge
对综合工具有特定的意义。用来表示这个信号是设计的时钟。
有一些很好的解释here and here(我已经包含了第二个link,因为我假设您已经有一个域时钟并且合成工具正在抛出错误)。
rising_edge
仅适用于一个无限短的时刻(正式地,delta cycle)。
胡乱猜测你的两条线
accumulated_x <= input_x;
if accumulated_x = '0' and input_x = '1' then
在时钟进程内,(如标题中使用 "pipeline" 所暗示的,那么此 if
条件将在整个时钟周期内为真。
这就是区别。鉴于我们掌握的信息,无法说明这种差异对您的设计意味着什么。
我正在尝试理解一些 VHDL 代码,但我无法理解这部分内容:
...
accumulated_x <= input_x;
...
if accumulated_x = '0' and input_x = '1' then
对我来说是一样的:
if rising_edge(input_x) then
但是当我这样替换时,它不起作用,然后就意味着不一样了,为什么?
rising_edge
对综合工具有特定的意义。用来表示这个信号是设计的时钟。
有一些很好的解释here and here(我已经包含了第二个link,因为我假设您已经有一个域时钟并且合成工具正在抛出错误)。
rising_edge
仅适用于一个无限短的时刻(正式地,delta cycle)。
胡乱猜测你的两条线
accumulated_x <= input_x;
if accumulated_x = '0' and input_x = '1' then
在时钟进程内,(如标题中使用 "pipeline" 所暗示的,那么此 if
条件将在整个时钟周期内为真。
这就是区别。鉴于我们掌握的信息,无法说明这种差异对您的设计意味着什么。