返回介绍

4.4 数组的索引与分片

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

一个表达式可以选取压缩数组的一部分,或者选取任何整数类型,并假定具有趋向0的编号方式。

SystemVerilog使用术语“部分选择(part selet)”来表示从一个单维压缩数组中选取一个或多个连续的位。这与Verilog中对术语“部分选择”的使用是一致的。

reg [63:0] data;
reg [7:0] byte2;
byte2 = data[23:16]; // 从data中进行8位的部分选择

SystemVerilog使用术语“分片(slice)”来表示从一个数组中选取一个或更多的连续的元素。Verilog仅允许选择数组的单个元素,并且对这种选择没有专用的术语。

压缩数组或非压缩数组的单个元素可以使用被索引的名字来选择。

bit [3:0][7:0] j; // j是一个压缩数组
byte k;
k = j[2];         // 从j中选择单个8位元素

SystemVerilog可以使用一个分片名字来选择一个或多个连续的元素。一个压缩数组的分片名字就是一个压缩数组。一个非压缩数组的分片名字就是一个非压缩数组。

bit busA [7:0][31:0];  // 包含8个32位向量的非压缩数组
int busB [1:0];        // 两个整数的非压缩数组
busB = busA[7:6];      // 从busA中选择一个分片

部分选择或分片的尺寸必须是一个常量,但其位置可以发生变化,并使用与Verilog-2001相同的语法。

int i = bitvec[j +: k]; // k必须是一个常量
int a[x:y], b[y:z], e;
a = {b[c -: d], e};     // d必须是常量

一个数组的分片仅仅适用于一个维数,但其它的维数可以在表达式中具有单个索引值。

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

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

发布评论

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