当前位置: 首页 > article >正文

SystemVerilog学习笔记(一):数据类型

在systemverilog中,主要包含以下数据类型: 

  • 4值类型
  • 2值类型
  • 数组
  • 字符串
  • 结构体和联合体
  • 枚举
  • 自定义类型

  1. 无符号数:无符号数的符号不使用任何标志,即无符号数只能存储正数。无符号二进制数的范围从 0 到 ((2^n) - 1),n 表示位数。
  2. 有符号数:通过有符号数中的符号标志来区分正值和负值。有符号位的零有两种可能表示形式(正 (0) 和负 (1))。有符号二进制数的范围从 -2^(n-1) 到 2^(n-1)-1,n表示位数。有符号二进制数在计算机系统中,一般用补码来表示。

4 值数据类型

序号数据类型2值/4值有符号/无符号
1.reg4>=1unsigned
2.wire4>=1unsigned
3.logic4>=1unsigned
4.integer432signed
5.time464unsigned
6.real464unsigned
状态描述
0状态 0
1状态 1
x or X未知状态 (与 reg 有关)
z or Z高阻态 (与 wire 有关)
  1.  reg 变量用于对锁存器、触发器和存储器等存储元件进行建模,它存储一个值并用于程序赋值。 reg 的默认值为 x
  2. wire 是一种 Verilog 数据类型,用于连接元件以及连接由单个门或连续分配驱动的网络。导线的默认值为 z
  3. Logic 类型是 4 值类型,可以取值 0、1、x 和 z。Logic 类型,可以用来代替 wire 和 reg,因为 wire 数据类型没有多个 driver。默认情况下 Logic 类型是无符号的,其初始值为 x。z。Logic 类型可以在过程块和连续赋值语句中驱动。
  4. 整数是 4 态数据类型,整数可以是 0,1,x 和 z,表示 32 位有符号数。整数的默认值为 x。整数可以保存范围从 -2^31 到 (2^31)-1 的值。
  5. time 是用于模拟时间测量的特殊数据类型。它是 4 值类型,表示 64 位无符号整数,可以与 $time 系统函数结合使用来保存当前的仿真时间。
  6. real 是以 64 位实数实现的实数数据类型。实数可以用十进制记数法 (4.43) 或科学记数法 (42e8) 指定。 real 数据类型的默认值为 0。

2 值数据类型

序号数据类型2值/4值有符号/无符号
1.bit2>=1unsigned
2.byte28signed
3.shortint216signed
4.int232signed
5.longint264signed
  1.  bit 可以是 0 或 1,代表单个位。bit 数据类型的默认值为 0。
  2. byte 可以是 0 或 1,表示 8 位有符号整数。byte 的默认值为0。
  3. shortint 可以是 0 或 1,表示 16 位有符号整数。 shortint 的默认值为 0。
  4. int 可以是 0 或 1,表示 32 位有符号整数。 int 的默认值是 0。
  5. longint 可以是 0 或 1,表示 64 位有符号整数。 longint 的默认值为 0。

数据类型转换

转换意味着将一种数据类型转换为另一种数据类型。 转换有两种类型:

  • 静态转换
  • 动态转换

静态转换 : 转换发生在编译时,不会出现任何运行时错误。静态转换仅适用于固定数据类型。它不适用于面向对象的编程概念。

语法 :data_type'(variable or expression or value);

动态转换 : 转换发生在运行时。如果转换无效,则会报告错误。动态转换用于将分配的值转换为通常无效的变量。 $cast 是系统方法。 $cast 可以是函数或任务。

语法 :$cast(destination_variable, source_expression_or_variable);

 枚举 enum

 枚举数据类型定义一组命名值。

  • 除非指定为其他类型,否则枚举类型存储为“int”类型。
  • 此类型会自动为列表中的每个名称赋予唯一值。
  • 值默认为“int”类型,从 0 开始,然后递增 1。
  • 如果没有为名称指定值,它将获取列表中前一个名称的值并加 1。

语法 :

enum enum_base_type(optional) {
<enum_name_declaration> = constant_expr(optional)...
}<enum_type_identifier>;

 

枚举函数:

序号函数描述
1first()返回枚举的第一个成员的值
2last()返回枚举最后一个成员的值
3next()返回枚举的下一个成员的值
4prev()返回枚举中前一个成员的值
5num()返回给定枚举中的元素数量
6name()返回给定枚举值的字符串表示形式

typedef 枚举数据类型

在 typedef 中可以给出类型名称,以便可以在许多地方使用相同的类型。

语法 :

typedef enum enum_base_type(optional) {
<enum_name_declaration> = constant_expr(optional)...
} <enum_type_identifier>;

String

 字符串类型是可变长度的有序字符集合。字符串的长度是集合中字符的数量。

  • 字符串的内存空间是动态分配的。
  • 字符串变量的索引应从 0 到 N–1(其中 N 是字符串的长度)进行编号,以便索引 0 是字符串的第一个(最左边)字符,索引 N–1 是最后一个(最右边)字符字符串的。
  • 未初始化或空字符串用特殊值 "" 表示。空字符串的长度为 0。
操作操作符描述
等于str1==str2如果两个字符串相等则返回 1,否则返回 0
不等str1!=str2如果两个字符串不相等则返回 1,如果相等则返回 0
比较str1 < str2, str1 <= str2, str1 > str2, str1 >= str2如果相应条件为 true,则返回 1;如果为 false,则返回 0
级联{str1, str2, …, strN}所有字符串将连接成一个结果字符串
复制{N{str}}将字符串复制 N 次
索引str[index]返回一个字节,即给定索引处的 ASCII 代码。如果给定索引超出范围,则返回 0

 

函数描述
str.len()返回字符串的长度。
str.putc()修改字符串的一个字符
str.getc()返回一个字符。
str.tolower()返回字符串的小写字母。
str.toupper()返回字符串的大写字母。
str.compare(s)以 ascii 值形式返回字符串比较结果。
str.icompare(s)以 ascii 值的形式返回不区分大小写的字符串比较结果。
str.substr(i,j)返回主字符串的子字符串。

http://www.kler.cn/a/390559.html

相关文章:

  • 在 Ubuntu 上安装 `.deb` 软件包有几种方法
  • 《MYSQL45讲》kill不掉的线程
  • 大数据技术之HBase中的HRegion
  • 【秋招笔试-支持在线评测】11.13花子秋招(已改编)-三语言题解
  • 字节跳动核心技术:TT推荐系统从0-1落地应用
  • 动态规划与贪心算法:核心区别与实例分析
  • (C++)验证累加非原子操作以及vector和thread的结合使用(附fitten code插件安装方法,AI插件,帮忙填充代码)
  • Layui layui.treeTable 树表格组件 去除图标展示
  • rust模式和匹配
  • Redis经典面试题-深度剖析
  • Android dagger的使用
  • spring -第十四章 spring事务
  • D-Link NAS account_mgr.cgi 未授权RCE漏洞复现(CVE-2024-10914)
  • 48651
  • uni-app 封装刘海状态栏(适用小程序, h5, 头条小程序)
  • C#基础-区分数组与集合
  • 微信小程序原生 canvas画布截取视频帧保存为图片并进行裁剪
  • 24/11/12 算法笔记<强化学习> Policy Gradient策略梯度
  • IT运维的365天--019 用php做一个简单的文件上传工具
  • go 下划线 _ 被称为“空白标识符
  • 【Lucene】全文检索 vs 顺序扫描,为何建立索引比逐个文件搜索更高效?
  • 第 4 章 - Go 语言变量与常量
  • 构造函数原型对象语法、原型链、原型对象
  • hadoop开发环境搭建
  • 【论文速看】DL最新进展20241112-3D、异常检测、车道线检测
  • Python科学计算的利器:Scipy库深度解析