[英]Verilog:Procedural Continuous Assignment to register is not supported
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,我想分配一个我从write reg。得到的索引。错误说你不能做我认为总是由always @(*)引起的连续分配,但是如果我删除了
它说分配左侧的对象“寄存器”必须具有网络类型,这是另一个错误。
assign
的总块里面的procedural assignment
。 它是不可合成的,不应使用。 它用于非常特殊的建模案例。
continuous assignment
,或assign
外 always块是有连接nets
和各地使用的地方。 这样的分配必须是网络类型,即wire 。 它不能是reg。
另一方面, 始终块中的所有lh 都必须为“ reg”类型。
在这种情况下,您要做的就是删除关键字assign :
input [31:0] write_data;
input [4:0] write_reg;
reg [31:0] registers [31:0];
always @(*)
registers[write_reg] = write_data;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.