zek*_*eke 0 syntax verilog register-transfer-level
假设我有以下模块定义,
module foo(b)
input b;
parameter length = 8;
reg [length-1:0] dummy ;
Run Code Online (Sandbox Code Playgroud)
现在,我想为这个虚拟数组赋值。例如,我想将其全部设为 1。如果长度没有参数化,我可以这样做,
always @(posedge b)
dummy <= 8'hFF;
Run Code Online (Sandbox Code Playgroud)
但是当长度被参数化时,我希望这样做,
always @(posedge b)
dummy <= length'hFFFF //won't even compile. even if it did, how many F's should there be?
Run Code Online (Sandbox Code Playgroud)
如何将一个(或零)分配给长度已参数化的整个数组?或者更一般地说,如何在指定参数化数组的长度时分配值?
小智 5
你可以做位扩展:
always @ (posedge b)
dummy <= {length{1'b1}};
Run Code Online (Sandbox Code Playgroud)
{} 内的内容由“parameter-1”扩展,与具有相同:
always @ (posedge b)
dummy <= {1'b1,1'b1,1'b1,1'b1....};
Run Code Online (Sandbox Code Playgroud)