SystemVerilog 数据类型(一)

您所在的位置:网站首页 变量默认数据类型 SystemVerilog 数据类型(一)

SystemVerilog 数据类型(一)

2023-07-28 23:44| 来源: 网络整理| 查看: 265

数据类型 一、变量类型二、数组2.1.固定数组2.2.动态数组2.3.数组方法2.4.数组定位方法 三、队列四、结构体五、枚举六、字符串

一、变量类型

四值变量: (0、1、x、z)四种状态

四值逻辑类型:integer、reg、logic、reg、net-type(如wire、tri);

SV并不太常用变量类型是wire(assign语句中)还是reg(initial和always语句中)。logic用的比较多。可以被连续赋值语句驱动,可用在assign、initial、always语句中。

四值变量与二值变量的特性:

四值变量的默认初始值为x,二值变量的默认初始值为0,在initial中可以直接使用~clk变成1,但是如果是logic,必须设置初值为0、或者1.**

将四值变量赋值给二值变量,x和z状态会转变为0;

二值变量: (0、1)两种状态

二值逻辑类型:byte、shortint、int、longint、bit。

有符号类型:byte、shortint、int、longint、integer。

无符号类型:bit、logic、reg、net-type(如wire、tri)。

对于转换方式,可以分为隐式转换和显式转换。显式转换又可以分为静态转换和动态转换

静态转换:unsigned’(signed);注意单引号。动态转换:$cast(tgt,src) 二、数组 2.1.固定数组

静态数组是指其数组的大小在定义时被显性地指定。

sv引入两种类型的数组:压缩数组 (packedarray)和非压缩数组 (unpackedarray)。

压缩(合并)数组,维数定义在变量标识符之前,如: bit [7:0] c1; //压缩数组 (c1在左边)

在这里插入图片描述

非压缩数组,维数的定义在变量标识符之后,如: bit [7:0] up_array [3]; //非压缩数组

在这里插入图片描述

更深入理解

在这里插入图片描述

答案:2WORD、3WORD(logic 2位存储)

24x2 = 48位 2word ; 3x(8x2) 3word;

字 word : 1字=2字节(1 word = 2 byte ) 字长是指字的长度字节byte :1字节=8位(1 byte = 8 bit)位 bit

一个字的字长为16 一个字节的字长是8

混合数组

在这里插入图片描述

2.2.动态数组 声明时使用 [ ] 进行动态数组声明;在仿真过程中进行分配内存空间和设置数组元素个数;使用 new[]来分配内存空间,传递数组元素的个数;通过数组名称可以实现整个数组的赋值;$size系统函数返回数组元素个数;动态数组和固定数组之间可以进行相互赋值,但需要满足:(数据类型相同,元素数目相同);

在这里插入图片描述

2.3.数组方法

求和sum、求积product、与and、或or、异或xor

a.sum——单bit数组的求和返回单bit的数值;

求最大值max,求最小值min,唯一化unique;

在这里插入图片描述

2.4.数组定位方法 查找元素:find查找第一个元素:find_first查找第一个元素的索引:find_first_with_index

在这里插入图片描述

三、队列 声明时使用 [$] 进行队列声明;能够迅速分配额外的空间和额外的元素;不需要new[]进行分配空间;支持 push(数据入队——写)和 pop(数据出对——读)操作;push时自动增补空间,pop后空间不消失;具有排序和搜索的功能;支持add和remove元素操作;

在这里插入图片描述

在这里插入图片描述

四、结构体 结构体相当于是对一组数据类型的封装,是一组变量的集合,可以作为一个整体进行操作;一般使用结构体的名字对其中的变量进行操作;结构体默认情况下是非填充的,当然也可以使用关键字packed将其声明为填充型的;可以使用关键词typedef来定义结构体,实现对同一个结构体的多次例化,增强结构体的重用性;

在这里插入图片描述

五、枚举

在这里插入图片描述

数值必须唯一;默认为int型,且会初始化为0。上图INIT缺失代表0,如果赋值{INIT=1,…}报错。 六、字符串 字符串类型(string)是一个大小可变、动态分配的字节数组。字符串文本为一个具有宽度为8的整数倍的压缩数组。在未赋值的情况下,string类型的变量初始值为空字符 “ ”可以使用系统函数$psprintf()生成字符串;字符串类型变量具有内建的操作符和函数,len(), getc(), putc(),substr()等;

在这里插入图片描述 参考: Mr.翟的博客

Systemverilog(绿皮书)



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3