2017-02-18 126 views
0

我想了解一些VHDL代碼和我被困在理解這一部分:vhdl中pipeline和rising_edge的區別?

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

對我來說是一樣的:

if rising_edge(input_x) then 

但是,當我更換這樣的,它不起作用,然後這意味着它不一樣,爲什麼?

+1

您需要提供更多的背景。這可能是有關背後的'...'什麼隱藏。 – mkrieger1

回答

0

rising_edge對於只有一個無限短時間(正式,增量循環)是正確的。

瞎猜,你的兩行

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

是一個時鐘的過程中,(通過使用的標題是「管道」作爲暗示,那麼這if條件將是真正爲整個時鐘週期。

這就是區別。有什麼區別意味着你的設計是不可能說給我們的資料。

0

rising_edge對合成工具有特定的含義。它用於表示該信號是設計的時鐘。

有一些很好的解釋herehere(我已經包括第二個鏈接,因爲我假設你已經有一個域時鐘和合成器工具拋出錯誤)。