2.SV定宽数组


本文将介绍SV中的常用且非常重要的数据类型 — 定宽数组。介绍内容如下:

1.定宽数组声明格式

常见的定宽数组声明格式为: type name[constant],其中type为存储数据类型
例如 int array[16],array为数组的名字,int为数组的存储类型是int型数据,16是数组的大小,共16个元素

2.一维数组

SV一维数组是常用的数组,一维代表数组的存储数据为一个维度
例如: int array[16],array是数组的名字,数组元素一共16个,索引为0…15,存储的数据类型为int型,即数组中的每个为32位的有符号数
例如: shortint array[32],数组的索引为0…31,共31个元素

016bit:array[0]
116bit:array[1]
216bit:array[2]
16bit:array[…]
3116bit:array[31]

3.二维数据

二维数组亦为SV常用数组,二维可以理解为数组存储的数据为两个维度
例如:int array[8][4], 该数组大小为8行4列共32个元素

0123
032bit32bit32bit32bit
132bit32bit32bit32bit
232bit32bit32bit32bit
332bit32bit32bit32bit
432bit32bit32bit32bit
532bit32bit32bit32bit
632bit32bit32bit32bit
732bit32bit32bit32bit

4.数组的基本操作

4.1 数组初始化

为数组初始化,使用赋值赋值符号:‘{} and ’{n{}}

int ascend[5]='{0,1,2,3,4};    //对数组中的5个元素进行初始化
int descend[4];
descend[4] = '{3,2,1,0};
descend[0:2] = '{5,6,7};  //为前3个元素赋值
ascend = '{5{8}};  // 5个元素的值全部为8 {8,8,8,8}
descend = {9,8,default:-1};    //{9,8,-1,-1}   

4.2数组的基本操作-for

遍历数组的常用方法之一就是for循环。如下例所示:

initail begin 
	bit [31:0] src[5],dst[5];   //表示数组有5个元素 ,每个元素为32位的无符号数
	for(int i =  0 ; i <$size(src);i++}   //在SV中,$size函数返回数组的宽度;并且i变量为for循环内部的局部变量
		src[i] = i ;
end

4.3数组的基本操作 - foreach

使用foreach也可以方便快捷的遍历数组:

initial begin
	bit [31:0] src[5],dst[5];
	foreach(dst[j])
		dst[j] = src[j]*2;
end

5.数组的注意事项

1.byte/short/int类型的数据,都是占据一个字(32位)的存储空间(这个我这么理解,虽然byte只有八位,shortint只有16位,但他们所占的存储空间都是32位的
2.longint占据俩个字的存储空间(64位)
3.如果越界读数组的话,则返回数组元素类型的缺省值
3.1如果数组元素为4值逻辑,如logic,则返回x;
3.2如果数组元素为2值逻辑,如int、bit,则返回0;
4.如果越界写数组的话,则写数据被忽略

文章转载出处:link

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值