17

$sizeverilogのと演算子の違いは何$bitsですか?変数が[9:0]aある場合、、、。[6:0]b[31:0]c

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

上記の式からの「c」での出力はどうなりますか?

4

2 に答える 2

31

$size()1次元のビット数を示します。$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()同じことになるでしょう。

于 2012-11-12T14:58:22.153 に答える
14

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

于 2012-11-12T13:28:30.363 に答える