Verilog error: value is not a constant?
Verilog error: value is not a constant?
我有一个程序,其输入和输出指定如下:
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];
'data [0:31]' 是之后声明的数组,在声明之后我尝试按如下方式分配输出:
assign op1 = data[rs];
assign rtData = data[rt];
assign data[WriteRegIn] = WriteRegData;
我不断收到 "WriteRegData" 不是常量的错误。由于它只是在程序开头声明为输入,所以我不确定问题出在哪里。我正在使用 Xilinx ISE。
当您使用连续赋值时:
assign data[WriteRegIn] = WriteRegData;
您不能更改左侧的索引。你可能想在 always 过程中使用过程赋值来实现你想要的:
always @(*)
data[WriteRegIn] = WriteRegData;
我有一个程序,其输入和输出指定如下:
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];
'data [0:31]' 是之后声明的数组,在声明之后我尝试按如下方式分配输出:
assign op1 = data[rs];
assign rtData = data[rt];
assign data[WriteRegIn] = WriteRegData;
我不断收到 "WriteRegData" 不是常量的错误。由于它只是在程序开头声明为输入,所以我不确定问题出在哪里。我正在使用 Xilinx ISE。
当您使用连续赋值时:
assign data[WriteRegIn] = WriteRegData;
您不能更改左侧的索引。你可能想在 always 过程中使用过程赋值来实现你想要的:
always @(*)
data[WriteRegIn] = WriteRegData;