返回介绍

4.1 简介(一般信息)

发布于 2020-09-09 22:55:44 字数 823 浏览 923 评论 0 收藏 0

数组是变量的集合,这些变量具有相同的数据类型,并可以使用相同的名字加上一个或多个索引来访问。

在C语言中,数组从0开始并以整数的形式进行索引,或者将其转换成指针。尽管整个数组可以作为一个整体被初始化,但在过程语句中,它的每一个元素必须被分离地读或写。

在Verilog-2001中,数组使用从左边界到右边界的顺序进行索引。如果它们是向量,它们还可以作为一个整体赋值,而如果他们是数组则不允许这样做。在Verilog-2001中允许多维数组。

在Verilog-2001中,所有的数据类型都可以声明成数组。reg、wire以及所有其它线网类型还可以具有向量宽度。在对象名字之前声明的尺寸被称作是“向量宽度”尺寸。在对象名字之后声明的尺寸被称为“数组”尺寸。

reg [7:0] r1 [1:256]; // [7:0]是向量宽度,[1:256]是数组尺寸

SystemVerilog使用术语“压缩数组”来指代在对象名字之前声明尺寸(在Verilog-2001中称为向量宽度)的数组。而在对象名字之后声明尺寸的数组则称为“非压缩数组”。

bit [7:0] c1;  // 压缩数组
real u [7:0];  // 非压缩数组

通过允许使用多个数组维数,SystemVerilog增强了压缩数组。SystemVerilog提供了过程化地改变一个非压缩数组某一维尺寸的能力。固定尺寸的非压缩数组可以是多维的,并为所有元素都分配固定的存储空间。非压缩数组的每一维都可以声明成固定尺寸的数组或非固定尺寸的数组。动态数组在运行时为元素分配存储空间并提供了选项来改变某一维的尺寸。联合数组在写入的时候独立地为元素分配存储空间。联合数组可以使用任意数据类型进行索引。队列类型的数组可以在运行时根据写入元素的数目自动增长或缩减。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文