system Verilog 学习(1)

本文介绍了System Verilog中的数据类型,包括逻辑类型logic及其与双状态数据类型的区别,详细阐述了定宽数组的声明、初始化、常量数组的设定,以及基本的数组操作如复制、比较和合并。讲解了for和foreach在遍历数组中的应用,并提醒了在数组运算中需要注意的事项。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第2章 数据类型

2.1内建数据类型

2.1.1逻辑类型 logic

1. 什么是logic?

sv对reg进行了改动,使得它除了作为一个变量外,还可以被连续赋值、门单元和模块所驱动这种改动后的数据类型称为logic。任何使用线网的地方都可以使用logic,但要求logic不能有多个结构性驱动。

2.1.2 双状态数据类型

双状态数据类型:bit(无符号), byte, shortint, int, longint。

2.2 定宽数组

2.2.1定宽数组的声明和初始化

声明: int lo_hi[0:15];  //16个整数

            int c_style[16]; //16个整数

多维数组声明:int array1[0:7][0:3]; //完整的声明

                         int array2[8][4]; //紧凑的声明

                         array1[7][3]=1; //设置最后一个元素

如果你的代码从一个越界的地址中读取数据,那么system verilog将返回数组元素类型的缺省值。

仿真器通常使用两个或两个以上连续的字来存放logic和integer等四状态类型。

2.2.2 常量数组

  desend[0:2]='{1,2,3}; //全部设值

desend[0:2]='{3{1}}; //设置为3个1

desend[0:2]='{1,default : 2};//第一个数为1,其他为2

2.2.3基本的数组操作 - for和foreach

遍历方法:

for(int i = 0; i < $size(src); i ++)

src[i] = i;

foreach(dst[j])

dst[j] = src[j] * 2;

2.2.4 基本的数组操作-复制和比较

bit[32:0] src[5] = '{1,2, 3}, drc[5] = '{1,2, 3};

if (src = drc) // 比较

dsc = src; //复制

对数组的算数运算不能使用聚合操作,要使用循环操作。

2.2.5 合并数组

bit[0:3][0:7] barray[3];//合并:3*32比特

bit[31:0] lw = 32'h0123_4567;

barray[0] = lw;

barray[0][3]=8'h01;

barray[0][2][3]=1‘b1;

合并数组和非合并数组如何选择?

如果你需要和标量进行转换时,使用合并数组会非常方便;如果需要等待数组中的变化,必须使用合并数组。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值