2013-01-25 108 views
-1

在verilog文件中實例化模塊時出現錯誤。我實例是這樣的:在Verilog中實例化模塊

module lab3(input clk,set,reset,plus,minus,start,button,output reg [3:0]led,output reg [6:0]y); 

wire [3:0] indicesgu[3:0]; 
reg [1:0] going; 
reg alsogoing,yes; 


if (going==1 && alsogoing) 
begin 
up_counter up_0 ( 
indicesgu , 
indices , 
alsogoing 
); 
end 

endmodule

和我up_counter模塊開始爲:

module up_counter(input [3:0] indices_in [3:0],output [3:0]indices[3:0],output alsogoing); 

reg [3:0]indices[3:0]; 
reg [2:0]current,setting; 

endmodule

當我嘗試在賽靈思編譯,它說,意外的標記up_counter 。 在此先感謝。

回答

2

您的lab3模塊有幾個問題。

  1. 最後需要一個endmodule
  2. 您不應在if內實例化up_counter。 Verilog不支持這樣的條件實例。
  3. 您需要在實例名稱up_0後面打開一個空白符。
+0

Thanx。但是我只想在條件成立的情況下啓動模塊。我如何實現這一目標? – cauthon14

+0

爲模塊添加啓用輸入。 – toolic

+2

把它看作硬件而不是軟件,畢竟它是硬件。當系統處於活動狀態時,您無法插入和拔出模塊。但是您可以啓用和禁用您需要或不需要的模塊。 – vermaete

1

您的代碼中有(多個)語法錯誤。 其中之一是,你需要括號()在你的分量端口列表

up_counter up_0 (indicesgu , 
       indices , 
       alsogoing 
       ); 

檢查Verilog syntax以獲得更多信息。

這至少會解決'意外令牌up_counter'錯誤。

+0

謝謝。但它仍然會說意外的令牌up_counter。實際上,這兩個模塊都有兩個不同的文件。我已經將它們都添加爲源,但由於某種原因,Xilinx不承認其中一個正在被另一個使用。 – cauthon14

相關問題