题
在看一些代码我维持系统数我看到一些信号所定义是这样的:
node [range_hi:range_lo]x;
和其他人的定义是这样的:
node y[range_hi:range_lo];
我明白了 x
被定义为包装,同时 y
被定义为解包。然而,我们不知道这意味着什么。
之间的区别是什么包装和解压载系统电气电子工程师学会?
编辑: 应对@Empi的回答,为什么应该有的硬件设计师是谁写的SV护理有关的内部表示的阵?是否有任何时候,我 不应该 或 不能 使用包装的信号?
解决方案
这篇文章提供了更多详细信息关于这个问题:http://electrosofts.com/systemverilog/arrays.html, ,特别是第5.2.
填充阵列是一个机制,用于细分的矢量转子可以方便地访问阵列的要素。因此,填充阵列保证可表示为一个连续的一套比特。一个解包阵列可以或不可以这样来表示的。填充阵列不同于解包阵列,当一个拥挤的阵列的出现作为一个主要的,它被视为一个向量。
其他提示
知道究竟是什么包装,拆包阵列之前,让我们也看看你能怎么知道哪个数组是什么,只是他们的声明。 盒装阵列有一个对象名称大小声明之前。例如:
bit [3][7] a;
解压缩后的数组有一个对象的名字来自大小声明之后。例如:
bit a[3];
盒装阵列使存储器而解压缩后的不。 可以访问/声明解压阵列这样也
reg unpacked_array [7:0] = '{0,0,0,0,0,0,0,1};
可以混合两者包装和拆包阵列使多维存储器。例如:
bit [3:0][7:0]a[2:0].
它使阵列4(即4×8)字节为3的深度。
盒装阵列主要用于有效内存使用情况时,我们正在编写一个[3:0] [7:0] A [4:0],这意味着在32位存储器位置4slices每8位的被包装以形成32位。右侧值意味着有5个这样的切片在那里。
压缩数组会给你更多的编译时间错误比堆积阵列检查。
我看到这个原因模块的端口定义解包阵列。如果信号的尺寸并不完全相同,与压缩数组端口编译器会出错。随着堆积阵列,它通常只是继续前进,电线的东西最好是可以的,不是发出错误。
bit[3:0] a
- >堆积阵列
填充阵列可被用作一个完整的阵列(a='d1
)或阵列(a[0]='b1
)的只是部分
bit a [3:0]
- >解包阵列
解压后的阵列不能用作a[0]='b1
,它已被用作全a={8{'b1}}