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 条件将在整个时钟周期内为真。

这就是区别。鉴于我们掌握的信息,无法说明这种差异对您的设计意味着什么。