Arrays $size,$bits,verilog
verilog中的Arrays $size,$bits,verilog,arrays,verilog,system-verilog,Arrays,Verilog,System Verilog,verilog中的$size和$bits运算符之间有什么区别。? 如果我有变量,[9:0]a,[6:0]b,[31:0]c c <= [($size(a)+$size(b)-1]-:$bits(b)]; c$size应返回维度中的元素数量,该数量相当于$high-$low+1。它与尺寸有关,而不仅仅是与位计数有关。如果类型为1D压缩数组或整数类型,则等于$bits $bits系统函数返回将表达式保存为位流所需的位数 $bits ( [expression|type_identifier]
$size
和$bits
运算符之间有什么区别。?
如果我有变量,[9:0]a
,[6:0]b
,[31:0]c
c <= [($size(a)+$size(b)-1]-:$bits(b)];
c$size
应返回维度中的元素数量,该数量相当于$high-$low+1
。它与尺寸有关,而不仅仅是与位计数有关。如果类型为1D压缩数组或整数类型,则等于$bits
$bits
系统函数返回将表达式保存为位流所需的位数
$bits ( [expression|type_identifier] )
当使用当前为空的动态大小的类型调用时,它返回0。将$bits
系统功能直接与动态大小的类型标识符一起使用是错误的
我不知道你的问题,c$size()
给出了单个维度的位数$bits()
给出完整表示变量的位数
例如:
reg [9:0] a;
reg [9:0] b [5:0];
initial begin
$display("a Size ", $size(a));
$display("a Bits ", $bits(a));
$display("b Size ", $size(b));
$display("b Bits ", $bits(b)) ;
end
给出:
a Size 10
a Bits 10
b Size 6 // Depth of memory
b Bits 60 // Width * Depth
在你的例子中,你只有一维数组,而不是内存或结构,所以$size()
和$bits()
是一样的。$size(a)
=10,$size(b)=7
,$bits(b)
=7:c你是对的。但我只是不知道是打字错误还是c的真正意图啊,是的,打字错误17+7-1。还要注意的是,这个问题没有变量,它只是一个范围,所以它不是有效的verilog。@jclin,是的。你是对的。我说的是数组范围,[n+:m]和[n-:m]。你能解释一下在这种类型中表示范围的意义吗。感谢数组范围表达式[n+:m]
或[n-:m]
,n
是起始索引,+:
或-:
是递增或递减方向m
是要向上/向下计数的元素数。例如[4+:4]
==[4:7]
,[3-:4]
==[3:0]