Syntax 为Verilog中的参数化数组赋值

Syntax 为Verilog中的参数化数组赋值,syntax,verilog,register-transfer-level,Syntax,Verilog,Register Transfer Level,假设我有下面的模块定义 module foo(b) input b; parameter length = 8; reg [length-1:0] dummy ; 现在,我想给这个虚拟数组赋值。例如,我想把它全部设为1。如果长度没有参数化,我可以这样做 always @(posedge b) dummy <= 8'hFF; 始终@(posedge b) 虚拟你可以写 always @(posedge b) dummy <= ~1'b0; always @(posedge

假设我有下面的模块定义

module foo(b)
input b;
parameter length = 8;

reg [length-1:0] dummy ;
现在,我想给这个虚拟数组赋值。例如,我想把它全部设为1。如果长度没有参数化,我可以这样做

always @(posedge b)
 dummy <= 8'hFF;
始终@(posedge b)
虚拟你可以写

always @(posedge b)
 dummy <= ~1'b0;
always @(posedge b)
 dummy <= '1;
始终@(posedge b)

dummy您可以执行位扩展:

always @ (posedge b)
  dummy <= {length{1'b1}};
始终@(posedge b)

你真的是指压缩数组吗<代码>注册[length-1:0]假人您的声明已解包,您不能将这些类型的赋值给解包数组,参数化或非参数化。@dave_59我的错,我刚刚修复了声明。写入
dummy有什么区别?这个表达式没有区别。但是一定要意识到
0
与编写
32'sd0
always @ (posedge b)
  dummy <= {length{1'b1}};
always @ (posedge b)
  dummy <= {1'b1,1'b1,1'b1,1'b1....};