当前位置:  开发笔记 > 前端 > 正文

在系统verilog中打包vs unpacked向量

如何解决《在系统verilog中打包vsunpacked向量》经验,为你挑选了2个好方法。

看一下我在System Verilog中维护的一些代码,我看到一些定义如下的信号:

node [range_hi:range_lo]x;

和其他定义如下:

node y[range_hi:range_lo];

据我所知,它x被定义为packed,而y被定义为unpacked.但是,我不知道这意味着什么.

System Verilog中的打包和解包矢量有什么区别?

编辑:回应@Empi的答案,为什么要在SV中编写的硬件设计师关心数组的内部表示?有没有时候我不应该不能使用打包信号?



1> empi..:

本文提供了有关此问题的更多详细信息:http: //electrosofts.c​​om/systemverilog/arrays.html,尤其是第5.2节.

打包数组是一种将矢量细分为子字段的机制,可以方便地将其作为数组元素进行访问.因此,保证打包数组被表示为连续的位组.解包的阵列可能会也可能不会如此表示.打包数组与解压缩数组的不同之处在于,当打包数组作为主数组出现时,它被视为单个向量.



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.


“打包的阵列可以存储内存,而未打包的则不可以。” 这意味着什么?有许多FPGA综合工具可将解压缩后的阵列转换为某种存储器(FF或RAM)。
推荐阅读
135369一生真爱_890
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有