vhdl中管道和rising_edge之间的差异?

时间:2017-02-18 22:49:18

标签: vhdl

我试图了解一些VHDL代码,并且我仍然坚持理解这一部分:

...
accumulated_x <= input_x;
...
     if accumulated_x = '0' and input_x = '1' then

对我而言,它与:

相同
if rising_edge(input_x) then

但是当我像这样替换它时,它不起作用然后它意味着它不一样,为什么?

2 个答案:

答案 0 :(得分:0)

rising_edge对综合工具具有特定含义。它用于表示此信号是设计的时钟。

有一些很好的解释herehere(我已经包含了第二个链接,因为我假设你已经有了一个域时钟,并且合成工具会抛出错误)。

答案 1 :(得分:0)

rising_edge只适用于一个无限短暂的时刻(正式来说, delta cycle )。

疯狂猜测你的两行

accumulated_x <= input_x;
if accumulated_x = '0' and input_x = '1' then

在一个时钟进程内部(如标题中使用“管道”所暗示的那样),这个if条件在整个时钟周期内都是正确的。

这就是区别。鉴于我们的信息,这种差异对您的设计意味着什么是不可能的。