2014-12-02 63 views
0

在我設計的頂層模塊中,我調用兩個其他模塊,但它們並行運行。我想要一個接一個地跑,所以一旦完成,另一個開始。如何讓模塊順序運行?

我該怎麼做?

感謝

+1

請分享一些您正在嘗試執行的示例代碼。 – Greg 2014-12-02 17:47:42

+2

你不調用你實例化它們的模塊。您正在描述兩個並行的硬件塊。如果你需要一個序列,那麼你需要創建一個狀態機來控制它。 – Morgan 2014-12-02 18:56:22

回答

0

使第一個模塊輸出一個DONE信號,它在忙時保持低電平,並在完成時驅動1個信號。第二個模塊應該等到DONE變爲1後再執行任何操作。對於例如

module A (
    output reg done 
); 
    initial begin 
     done = 0; 

     // Do all procesing 

     done = 1; 
    end 
endmodule 

module B (
    input done 
); 
    initial begin 
     @(done == 1); // Wait till done goes high 

     // Start processing 
    end 
endmodule 

順便說一句,這個簡單的例子假定模塊中的所有代碼都在初始塊內。如果有多個始終/初始塊或組合邏輯,確定何時驅動DONE高可能會變得更復雜

0

使用推送信號在第一實例運行,並等待推送信號變爲高電平信號第二實例

0

開始也許你可以使用使能信號來控制你的模塊。

例如,如果模塊B需要模塊A完成之後被激活,

可以

模塊A完成後使模塊A輸出一個信號作爲模塊B的使能信號。 A的輸出信號可以通過復位信號進行初始化。