sv基础-数据类型(一)
前言
system verilog 对比verilog 增加了大量的数据类型,目标就是让更多会c c++的人员可以来做设计或者验证。
正文
数据类型分类
数据类型主要可以通过四值类型和二值类型
四值类型:输入输出的值可以为四种情况 0、1·、 x、z(没有人驱动的输出就是x,无人驱动输出为z)
二值类型: 输入输出的值可以为两种情况 0 、1
对比verilog 的两种数据类型:寄存器类型reg 和线网类型wire ,sv 引入了相当多的数据类型,
数值类型 | 数据类型 |default 值
-------- | -----
二值数据 | integer logic reg wire tri | 0
四值类型| byte shortint int longint bit | x
有无符号位 | 数据类型 |
---|---|
有符号 | integer shortint longint int byte |
无符号 | bit logic reg wire tri |
数据转换
数据类型使用需要的注意点:
数据赋值:不同的数据类型转换需要注意,无符号想有符号转换时先扩展符号位在进行赋值。尽量避免不同的数据类型之间数据进行操作,稍不注意就容易出错。
数据类型转换:type’(expression)
例如:
bit [2:0] a;
integer b;
b = integer’ (a);
位宽转换: size’(expression)
例如:
logic [15:0] a;
logic [16:0] b;
//扩展到相同位宽之后进行加计算
b = a + 16’(3);
符号转换 :signed’(expression) unsigned’(expression)
logic a;
int sum;
sum = signed’(a) + signed’(a);
数组
数组是sv 中新增的一个数据类型,更有利于数据保存处理。
声明方法
一维数据
int a [0:15]//16个cell
int a[16] //同样是16个cell
多维数组
int a[0:7][0:6]
int a[8][7]
初始化方法
int a[2] = '{0,1};//初始化两个cell a[0] =0,a[1] =1
int a[2] = '{0};//仅初始化第一个cell
int a[2] = '{2{0}};//初始化两个cell相同之0,a[0] =0,a[1] =0
int a[2] = '{1,default:0};//初始化第一个cell 为1,后面的都设置为0
基本操作方法
- for 循环方法
bit a[5];
for(int i =0;i<$size(a);i++)
a[i] = i; - foreach 方法:自动循环所有cell
foreach(a[i])
a[i] = i;
动态数组
声明方法
int a[]
a = new[5] //分配5个cell
初始化方法
与静态数组相同
销毁方法
int a[]
a = new[5] //分配5个cell
a = new[6] //重新分配6个cell ,前面的就回收了
另一种方法:
a.delete()
队列
队列可以在在任何cell中间添加和删除cell。
声明和初始化方法
int a[$] ={3,4}
操作方法
int b=1;
a.insert(1,b);//在第1个元素后添加1
a.delete(1,b);//删除第一个元素之后的元素也就是a[1]
a.push_front(1);//重队列的头插入数据1结果{1,3,4}
a.push_back(1);//重队列的头插入数据1 结果{3,4,1}
c = a.pop_back()//从队列的末尾开始取队列,相当于倒序,
c = a.pop_front()//从队列的头开始取队列,相当于复制读取。
a.delete();//删除队列
关联数组
数组都是紧凑排列的,为了实现散列表的数组方式这里给出了一个关联数组的数据结构。
声明方法
通过方括号中放置数据类型实现 int a[bit] : int为存储数据类型,bit为寻址的类型.
初始化方法
'{};在大括号内写入cell和值,中间使用:
a = '{0:12,3:2}; //初始化cell0 cell3
操作方法
操作方法和数组类似
- 遍历
同样适用foreach
foreach(a[i])
$display(“a %h”,a[i])
a.first(1) //第一个cell
a.delete(1) //删除第一个cell
sv基础-数据类型(一)相关推荐
- 初识mysql数据字段属性_MySQL数据库~~~~初识、基础数据类型
一 数据库初识 1.1 什么是数据库 数据库(DataBase,简称DB),简而言之可视为电子化的文件柜----存储电子文件的处所,用户可以对文件中的数据运行新增,截取,更新,删除等操作. 所谓数据库 ...
- 基础数据类型之集合和深浅copy,还有一些数据类型补充
集合 集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的.以下是集合最重要的两点: 去重,把一个列表变成集合,就自动去重了. 关系 ...
- Python 基础三:基础数据类型和字符串的常用函数操作
基础数据类型 数字int 数字主要用于计算,有加减乘除等操作,下面介绍一种使用方法 #bit_length(),将十进制数转换成二进制数的二进制数位数 v = 9 data = v.bit_lengt ...
- js基础--数据类型检测的相关知识
欢迎访问我的个人博客:www.xiaolongwu.cn 前言 最近工作有点忙,好几天都没更新技术博客了. 周末起床打开有道云笔记,发现自己的博客todolist里躺了一堆只有名字的文件. 话不多说, ...
- python的历史 常量 注释 基础数据类型等基本操作 和if 判断语句
# Day1内容大纲 cpu 内存 硬盘 操作系统 cpu:计算机运算和计算中心,相当于人类大脑. 内存:暂时存储数据,临时加载数据应用程序,速度快,断电即消失 硬盘:磁盘,长期存储数据. 操作系统: ...
- C语言中定义加号的数据类型,C/C++知识点之c语言基础数据类型及命名规范
本文主要向大家介绍了C/C++知识点之c语言基础数据类型及命名规范,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助.1. 常量是程序运行期间不能被改变的量; 变量代表一个存储区域,存 ...
- 二、Windows基础数据类型
六.Windows Data Types 简介: 6.1.这些数据类型都是C语言数据类型的再次的进行包装. 6.2.因为考虑到如果使用的是C中的基础数据类型可能无法表示,想表示的精准的含义. 6.3. ...
- Java 基础数据类型
Java 提供的基础数据类型(也称内置数据类型)包含:整数类型.浮点类型.字符类型.布尔类型. 整数类型 整数类型变量用来表示整数的数据类型.整数类型又分为字节型(byte).短整型(short).整 ...
- Python基础数据类型之set集合
Python基础数据类型之set集合 一.set数据类型介绍 二.set集合演示 三.set集合中hash介绍 1.哈希定义 2.数据类型的hash和不可hash 3.set中hash示例 四.set ...
最新文章
- Linux下怎么诊断网站性能异常
- First day in 聚美
- ABAP Pattern usage - define own custom user exit
- 智能集群理论优化控制_探索群体智能的奥妙——ROB-MAS多智能体协作
- matlab调用ansys需要安装mpi,Ansys 14中Fluent并行计算MPI全程详解
- jqueryui 1.8.19引用顺序(及var basePrototype = new base()错误)
- 国内首份千款主流安卓应用耗电指标评测报告新鲜出炉!
- 如何执行静默(无人参与)Java 安装?
- java8 新特性_Java8新特性系列之-日期处理详解(二)
- 如何设置电脑的固定IP地址
- atlas 1.1.0 的本地开发文档(编译)
- 怎么使用JavaScript进行进制…
- Device disconnected
- 移动端键盘弹起底部固定模块会被顶上去
- 广角相机app哪个比较好用_专业广角镜头相机app下载
- 交互式电子沙盘数字沙盘大数据系统开发第8课
- 高校浴室预约小程序的设计与实现
- swal弹框出现的瞬间就消失了
- 做企业网站设计制作用什么软件
- 知识图谱学习笔记三(知识存储)
热门文章
- 高效学习-笔记-左耳听风
- 大话西游手游服务器合服信息查询,大话西游手游合区查询 6月21日合区服务器列表...
- CAD手机看图软件使用技巧:CAD快捷命令功能
- Gartner发布中国人工智能软件市场指南,激烈竞争下走向差异化
- 【greenplum】greenplum pg_largeobject 大对象处理实践
- 国家卫健委: 建设电子印章系统,推进电子证照与电子合同等融合应用
- team网卡绑定以及模式切换
- python怎么在图片上写字_python如何实现内容写在图片上
- CEF中文教程(google chrome浏览器控件) -- CEF简介
- 2023 软考中级 数据库系统工程师 考试题型