$大小,$位的Verilog($size, $bits, verilog)

2019-07-03 18:23发布

是什么区别$size$bits的Verilog操作? 如果我已经变量, [9:0]a [6:0]b [31:0]c

c <= [($size(a)+$size(b)-1]-:$bits(b)];

将是什么在“C”从上面的表达式的输出是什么?

Answer 1:

$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]



Answer 2:

$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()是同样的事情。



文章来源: $size, $bits, verilog