是什么区别$size
和$bits
的Verilog操作? 如果我已经变量, [9:0]a
[6:0]b
[31:0]c
。
c <= [($size(a)+$size(b)-1]-:$bits(b)];
将是什么在“C”从上面的表达式的输出是什么?
是什么区别$size
和$bits
的Verilog操作? 如果我已经变量, [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(a)+$size(b)-1]-:$bits(b)];
?它是在RHS有效的表达你谈论阵列范围表达, [n +: m]
或[n -: m]
$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
你的情况,你只需要1个维数组,而不是记忆或结构使$size()
和$bits()
是同样的事情。