input [31:0] write_data;
input [4:0] write_reg;
reg [31:0] registers [31:0];
always @(*)
assign registers[write_reg] = write_data;
我有一个32位输入write_data,我想分配相应的索引,我从写reg.Error说你不能做连续分配,我认为原因总是@(*),但如果我删除< / p>
它说 对象&#34;寄存器&#34;在任务的左侧必须有一个网络类型 而它的另一个错误。
答案 0 :(得分:0)
答案 1 :(得分:0)
assign
内部始终阻止的是procedural assignment
。 不可合成,不应使用。它适用于非常特殊的建模案例。
continuous assignment
或assign
在之外始终阻止用于连接nets
并在所有地方使用。这种分配的lhs必须是 net 类型,即 wire 。它不能是一个注册表。
另一方面,总是块中的所有lhs必须是&#39; reg&#39;类型。
您需要做的就是删除关键字 assign :
input [31:0] write_data;
input [4:0] write_reg;
reg [31:0] registers [31:0];
always @(*)
registers[write_reg] = write_data;