2015-11-08 40 views
0

我有與被指定的輸入和輸出的程序如下:Verilog錯誤:值不是一個常量?

module RegBlock(
    input [31:0] WriteRegData, 
    input [4:0] rs, rt, WriteRegIn, 
    output [31:0] op1, rtData 
    ); 

    reg [31:0] op1, rtData, data [0:31]; 

「數據[0:31]」是事後聲明的陣列,並且聲明之後我試圖分配輸出作爲如下:

assign op1 = data[rs]; 
    assign rtData = data[rt]; 
    assign data[WriteRegIn] = WriteRegData; 

我不斷收到一個錯誤,「WriteRegData」不是一個常量。由於它只是在程序開始時聲明爲輸入,所以我不確定問題是什麼。我正在使用Xilinx ISE。

回答

0

當您使用連續賦值語句,如:

assign data[WriteRegIn] = WriteRegData; 

你不能在左手側變化指數。您可能需要在always流程中使用程序分配來實現您想要的功能:

always @(*) 
    data[WriteRegIn] = WriteRegData;