verilog 怎么对 寄存器组 赋初值

用verilog定义一个寄存器组后,想对他赋值,该怎么办??

我写了如下程序
reg [7:0] mem [15:1];

assign lut[ 1 ] = 8'd52;
assign lut[ 2 ] = 8'd1;
assign lut[ 3 ] = -8'd29;
assign lut[ 4 ] = -8'd106;
assign lut[ 5 ] = -8'd45;
assign lut[ 6 ] = 8'd96;
assign lut[ 7 ] = 8'd77;
assign lut[ 8 ] = 8'd8;
assign lut[ 9 ] = -8'd13;
assign lut[ 10 ] = -8'd89;
assign lut[ 11 ] = -8'd82;
assign lut[ 12 ] = 8'd66;
assign lut[ 13 ] = 8'd98;
。。。。

编译后老是提示我错误:
Error (10673): SystemVerilog error at signal.v(5): assignments to unpacked arrays must be aggregate expressions

怎么回事?

一般这样的寄存器初始化都在复位时候:
always@(poesdge clk or negedge N_rst)
begin
if(!N_rst)
begin
lut[ 1 ]< = 8'd52;
lut[ 2 ] <= 8'd1;
……
end
else
……
end
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-03-03
有一个系统任务可以支持初始化一个寄存器阵列的.好像是$readmemb (寄存器组名,初始化文件名).这个系统任务本身的资料建议你去看一下夏宇文的书,而产生的效果则跟你用的芯片所对应的开发软件有关,比如说用于初始化的数据文件应该保存在什么地方,是否需要加后缀名等等.
第2个回答  2011-02-17
你的定义和赋值冲突了,你既然定义了reg型,就不能用assign语句对其赋值,assign只能为wire型参数进行赋值
第3个回答  2011-02-17
要是你准备按assign赋值,就把最上头的定义改成wire [7:0] mem [15:1];
要么就改下面的assign为always
第4个回答  2011-02-17
放在ALWAYS里面赋值。REG型不能用ASSIGN。
相似回答