在看一些代码我维持系统数我看到一些信号所定义是这样的:

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}}

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top