首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >$size、$bits、verilog

$size、$bits、verilog
EN

Stack Overflow用户
提问于 2012-11-12 16:19:35
回答 2查看 66.1K关注 0票数 16

verilog中的$size运算符和$bits运算符有什么区别?如果我有变量,[9:0]a[6:0]b[31:0]c

代码语言:javascript
运行
复制
c <= [($size(a)+$size(b)-1]-:$bits(b)];

上面的表达式在'c‘处的输出是什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-11-12 21:28:30

$size需要返回维度中的元素个数,相当于$high - $low + 1。它是与维度相关的,而不仅仅是位数。如果类型为一维压缩数组或整型,则等于$bits

$bits系统函数以位流的形式返回保存表达式所需的位数。

代码语言:javascript
运行
复制
$bits ( [expression|type_identifier] )

当使用当前为空的动态大小类型调用时,它返回0。直接将$bits系统函数与动态调整大小的类型标识符一起使用是错误的。

我不知道你的问题,c <= [($size(a)+$size(b)-1]-:$bits(b)];。它是RHS中的有效表达式吗?你说的是数组范围表达式,[n +: m]还是[n -: m]

票数 14
EN

Stack Overflow用户

发布于 2012-11-12 22:58:22

$size()给出了单个维度的位数。$bits()给出了完全表示变量的位数。

例如:

代码语言:javascript
运行
复制
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

提供:

代码语言:javascript
运行
复制
a Size          10
a Bits          10
b Size           6 // Depth of memory
b Bits          60 // Width * Depth

在您的例子中,您只有一维数组,而不是内存或结构,所以$size()$bits()应该是一回事。

票数 31
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13340301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档