systemverilog 学习笔记(一)数据类型

一、内建数据类型

小结:
1.逻辑类型logic
2.双状态和四状态类型

1.逻辑类型(logic)
logic功能
(1)被作为变量
(2)连续赋值
(3)门单元
(4)模块驱动
logic注意:
不能有多个结构性的驱动,如双向总线建模,双向总线建模只能用wire类型。
*2.双状态数据类型(bit,shortint,byte,int,longint)和四状态数据类型(integer)
(1)bit 双状态,(即只有两个状态,1或者0)无符号

bit	b;//单比特;
bit	[31:0]	b;//32比特无符号整数

……
(2)int 双状态,有符号,32比特
(3)byte 双状态,有符号,8比特
(4)shortint 双状态,有符号,16比特
(5)longint 双状态,有符号,64比特
(6)integer 四状态,有符号,32比特
(7)real 双状态,双精度浮点数
注意:byte的引入可以减少内存,其大小最大值为127,因为它有符号。

二、定宽数组

小结:
1.定宽数组的声明和初始化
2.常量数组
3.基本的数组操作——for 和foreach,比较
4.同时使用位下标和数组下标
5.合并数组
6.合并数组和非合并数组的选择

1.定宽数组的声明和初始化
(1)一维数组的声明和使用

int	a	[0:15];//16个int类型的整数
int	a [16];//同上
int	a[0]=1;//设置第一个元素

(2)多维数组的声明和使用

int	a	[0:5] [0:2];//6行3列
int	a	[6]	[3];//同上
a[5][1]=1;//设置其中一个元素

(3)非合并数组的声明

bit	[7:0]		a	[3];

2.常量数组
一个单引号加大括号来初始化数组。

int a	[4]='{0,1,2,4};//对4个元素进行初始化

3.基本的数组操作——for 和foreach
(1)for和freach主要用来循环,是操作数组最常见的方式。
其中forreach 语法使用多维数组,不是[i][j],而是[i,j].

//打印一个多维数组
initial	begin
	byte	a[4][6];
	foreach(a[4,6])
		a[i][j]=i*10+j;

foreach	(a[i])        //遍历第一个维度
	begin
		$write("%2d:",i);
		foreach(a[ ,j]);//遍历第二个维度
			$write("%3d",a[i][j]);
		$display;
	end
end

(2)正在不使用循环的情况下对数组进行聚合比较和复制。其中的比较只限于等于比较或不等于比较。
注意:sv仿真器一般存放数组元素使用32比特的字边界,而上述bit 只声明了8个bit,所以前面高位都不实用,低8位来存储数据。
4.同时使用位下标和数组下标

initial	begin
	bit	[31:0]  a[4]={1,2,3,4};
end

5.合并数组
三、动态数组
四、队列

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值