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

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)返回主字符串的子字符串。

相关文章:

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

在systemverilog中&#xff0c;主要包含以下数据类型&#xff1a; 4值类型2值类型数组字符串结构体和联合体枚举自定义类型 无符号数&#xff1a;无符号数的符号不使用任何标志&#xff0c;即无符号数只能存储正数。无符号二进制数的范围从 0 到 ((2^n) - 1)&#xff0c;n 表…...

Linux软件包管理与Vim编辑器使用指南

目录 一、Linux软件包管理器yum 1.什么是软件包&#xff1f; 2.什么是软件包管理器&#xff1f; 3.查看软件包 4.安装软件 ​编辑 5.卸载软件 Linux开发工具&#xff1a; 二、Linux编辑器---vim 1.vim的基本概念 (1) 正常/普通模式&#xff08;Normal mode&#xff0…...

每日一练 | 包过滤防火墙的工作原理

01 真题题目 包过滤防火墙对哪一层的数据报文进行检查&#xff1f; A. 应用层 B. 物理层 C. 网络层 D. 链路层 02 真题答案 C 03 答案解析 包过滤防火墙是一种基本的安全设备&#xff0c;它通过检查进出网络的数据包来决定是否允许该数据包通过。 这种类型的防火墙主要关注…...

AR眼镜方案_AR智能眼镜阵列/衍射光波导显示方案

在当今AR智能眼镜的发展中&#xff0c;显示和光学组件成为了技术攻坚的主要领域。由于这些组件的高制造难度和成本&#xff0c;其光学显示模块在整个设备的成本中约占40%。 采用光波导技术的AR眼镜显示方案&#xff0c;核心结构通常由光机、波导和耦合器组成。光机内的微型显示…...

SpringBoot(十九)创建多模块Springboot项目(完整版)

之前我有记录过一次SpringBoot多模块项目的搭建,但是那一次只是做了一个小小的测试。只是把各模块联通之后就结束了。 最近要增加业务开发,要将目前的单模块项目改成多模块项目,我就参照了一下我上次搭建的流程,发现总是有报错。上次搭建的比较顺利,很多细枝末节也没有仔细…...

Navicat 17 功能简介 | 单元格编辑器

Navicat 17 功能简介 | 单元格编辑器 本期&#xff0c;我们一起了解 Navicat 17 出色的数据操作功能的单元格编辑器。单元格编辑器支持文本、十六进制、图像和网页四种格式的数据编辑&#xff0c;位于底部的编辑器窗格&#xff0c;为你编辑更大容量的数据信息提供足够的显示和操…...

MySQL【四】

插入数据 向数据表中插入一行数据 INSERT|REPLACE INTO 表名[(字段列表)] VALUES(值列表); ########## 在s表中插入一条记录&#xff1a;学号为s011,姓名为李思&#xff0c;性别为默认值&#xff0c;计算机专业 ########## insert into s(sno,sname,dept)values(s011,李思,计…...

简单叙述 Spring Boot 启动过程

文章目录 1. 准备阶段&#xff1a;应用启动的入口2. 创建 SpringApplication 对象&#xff1a;开始启动工作3. 配置环境&#xff08;Environment&#xff09;&#xff1a;识别开发环境与生产环境4. 启动监听器和初始化器&#xff1a;感知启动的关键事件5. 创建 ApplicationCont…...

微信小程序自定义tabbar;禁用某个tab;修改某个tab的样式

微信小程序自定义tabbar&#xff1b;禁用某个tab&#xff1b;修改某个tab的样式 原本使用本身的tabBar就已经很舒服了&#xff0c;很合适了的&#xff0c;但是总有一些脑洞大开的产品和客户&#xff0c;给你搞点多样式&#xff0c;没办法牛马就得去做咯&#xff0c;现在就给大…...

力扣113:路径总和II

给你二叉树的根节点 root 和一个整数目标和 targetSum &#xff0c;找出所有 从根节点到叶子节点 路径总和等于给定目标和的路径。 叶子节点 是指没有子节点的节点。 示例 1&#xff1a; 输入&#xff1a;root [5,4,8,11,null,13,4,7,2,null,null,5,1], targetSum 22 输出&a…...

JavaScript字符串常用方法

在JavaScript中&#xff0c;字符串是用来表示文本数据的基本数据类型。字符串可以用单引号()、双引号(")、或反引号()包裹。JavaScript中的字符串是不可变的&#xff0c;也就是说&#xff0c;字符串的值一旦创建就无法更改&#xff0c;但可以创建新字符串来替换原有字符串…...

xtu oj 加一

样例输入# 2 4 1 2 3 4 4 3 2 4 1样例输出# 3 5 解题思路&#xff1a;最小操作次数一定是把所有数变成数组中最大值max。 1、找最大值&#xff0c;一开始我把max初始值设为0&#xff0c;如果a[i]>max,maxa[i],WA了。又看了一遍题目&#xff0c;发现所有整数的绝对值小于…...

QTcpSocket 服务端和客户端

前提&#xff1a; pro文件中添加 QT network 服务端主要采用信号槽机制&#xff0c;代码如如下 核心代码头文件#ifndef TCPSERVER_H #define TCPSERVER_H#include <QObject>#include <QTcpServer> #include <QTcpSocket> #include <QDebug> #inclu…...

Isaac Sim+SKRL机器人并行强化学习

目录 Isaac Sim介绍 OmniIssacGymEnvs安装 SKRL安装与测试 基于UR5的机械臂Reach强化学习测评 机器人控制 OMNI GYM环境编写 SKRL运行文件 训练结果与速度对比 结果分析 运行体验与建议 Isaac Sim介绍 Isaac Sim是英伟达出的一款机器人仿真平台&#xff0c;适用于做机…...

项目中用户数据获取遇到bug

项目跟练的时候 Uncaught (in promise) TypeError: Cannot read properties of undefined (reading ‘code’) at Proxy.userInfo (user.ts:57:17) 因此我想要用result接受信息的时候会出错&#xff0c;报错显示为result.code没有该值 导致我无法获取到相应的数据 解决如下 给…...

SpringSecurity+jwt+captcha登录认证授权总结

SpringSecurityjwtcaptcha登录认证授权总结 版本信息&#xff1a; springboot 3.2.0、springSecurity 6.2.0、mybatis-plus 3.5.5 认证授权思路和流程&#xff1a; 未携带token&#xff0c;访问登录接口&#xff1a; 1、用户登录携带账号密码 2、请求到达自定义Filter&am…...

项目技术栈-解决方案-web3去中心化

web3去中心化 Web3 DApp区块链:钱包:智能合约:UI:ETH系开发技能树DeFi应用 去中心化金融P2P 去中心化网络参考Web3 DApp 区块链: 以以太坊(Ethereum)为主流,也包括Solana、Aptos等其他非EVM链。 区块链本身是软件,需要运行在一系列节点上,这些节点组成P2P网络或者半…...

【AI声音克隆整合包及教程】第二代GPT-SoVITS V2:创新与应用

一、引言 随着科技的迅猛发展&#xff0c;声音克隆技术已经成为一个炙手可热的研究领域。SoVITS&#xff08;Sound Voice Intelligent Transfer System&#xff09;&#xff0c;作为该领域的先锋&#xff0c;凭借其卓越的性能和广泛的适用性&#xff0c;正在为多个行业带来前所…...

分清数据链路层、网络层、传输层的区别,以及这些层面的代表协议

目录 数据链路层 网络层 传输层 数据链路层 OSI模型的第二层&#xff0c;负责在相邻节点之间传输帧&#xff0c;处理帧的封装、地址、差错控制和流量控制等。确保数据在物理介质上可靠地传输&#xff0c;并为上层协议提供服务。 以太网&#xff08;Ethernet&#xff09;&…...

git没有识别出大写字母改成小写重命名的文件目录

Git 默认不会跟踪大写字母和小写字母的区别&#xff0c;因为在大多数文件系统中&#xff0c;大写字母和小写字母被认为是相同的文件&#xff0c;只有在区分大小写的文件系统中&#xff08;如 macOS 的 HFS 或 Windows 的 NTFS&#xff09;&#xff0c;这才是一个问题。 如果重命…...

WordPress插件:AI多语言写作与智能配图、免费AI模型、SEO文章生成

厌倦手动写WordPress文章&#xff1f;AI自动生成&#xff0c;效率提升10倍&#xff01; 支持多语言、自动配图、定时发布&#xff0c;让内容创作更轻松&#xff01; AI内容生成 → 不想每天写文章&#xff1f;AI一键生成高质量内容&#xff01;多语言支持 → 跨境电商必备&am…...

大模型多显卡多服务器并行计算方法与实践指南

一、分布式训练概述 大规模语言模型的训练通常需要分布式计算技术,以解决单机资源不足的问题。分布式训练主要分为两种模式: 数据并行:将数据分片到不同设备,每个设备拥有完整的模型副本 模型并行:将模型分割到不同设备,每个设备处理部分模型计算 现代大模型训练通常结合…...

成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战

在现代战争中&#xff0c;电磁频谱已成为继陆、海、空、天之后的 “第五维战场”&#xff0c;雷达作为电磁频谱领域的关键装备&#xff0c;其干扰与抗干扰能力的较量&#xff0c;直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器&#xff0c;凭借数字射…...

基于matlab策略迭代和值迭代法的动态规划

经典的基于策略迭代和值迭代法的动态规划matlab代码&#xff0c;实现机器人的最优运输 Dynamic-Programming-master/Environment.pdf , 104724 Dynamic-Programming-master/README.md , 506 Dynamic-Programming-master/generalizedPolicyIteration.m , 1970 Dynamic-Programm…...

sipsak:SIP瑞士军刀!全参数详细教程!Kali Linux教程!

简介 sipsak 是一个面向会话初始协议 (SIP) 应用程序开发人员和管理员的小型命令行工具。它可以用于对 SIP 应用程序和设备进行一些简单的测试。 sipsak 是一款 SIP 压力和诊断实用程序。它通过 sip-uri 向服务器发送 SIP 请求&#xff0c;并检查收到的响应。它以以下模式之一…...

JS设计模式(4):观察者模式

JS设计模式(4):观察者模式 一、引入 在开发中&#xff0c;我们经常会遇到这样的场景&#xff1a;一个对象的状态变化需要自动通知其他对象&#xff0c;比如&#xff1a; 电商平台中&#xff0c;商品库存变化时需要通知所有订阅该商品的用户&#xff1b;新闻网站中&#xff0…...

视觉slam十四讲实践部分记录——ch2、ch3

ch2 一、使用g++编译.cpp为可执行文件并运行(P30) g++ helloSLAM.cpp ./a.out运行 二、使用cmake编译 mkdir build cd build cmake .. makeCMakeCache.txt 文件仍然指向旧的目录。这表明在源代码目录中可能还存在旧的 CMakeCache.txt 文件,或者在构建过程中仍然引用了旧的路…...

Netty从入门到进阶(二)

二、Netty入门 1. 概述 1.1 Netty是什么 Netty is an asynchronous event-driven network application framework for rapid development of maintainable high performance protocol servers & clients. Netty是一个异步的、基于事件驱动的网络应用框架&#xff0c;用于…...

libfmt: 现代C++的格式化工具库介绍与酷炫功能

libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库&#xff0c;提供了高效、安全的文本格式化功能&#xff0c;是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全&#xff1a…...

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement

Cilium动手实验室: 精通之旅---13.Cilium LoadBalancer IPAM and L2 Service Announcement 1. LAB环境2. L2公告策略2.1 部署Death Star2.2 访问服务2.3 部署L2公告策略2.4 服务宣告 3. 可视化 ARP 流量3.1 部署新服务3.2 准备可视化3.3 再次请求 4. 自动IPAM4.1 IPAM Pool4.2 …...