V0 第5节 数据类型

2023-12-10 19:38
文章标签 数据类型 v0

本文主要是介绍V0 第5节 数据类型,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

1. Verilog的数据类型

  • Verilog语言提供两种基本的数据类型, 变量类型variables和线网类型nets,这两种类型都是四值逻辑,即可表示0、1、X和Z值
  • 例如reg,integer和time等变量类型可以用来存储组合逻辑或者时序逻辑的值
  • 例如wire,wor,wand和其它线网类型用来连接硬件模块,以及提供特殊的线网驱动解决方案

1.1 Verilog线网类型

  • 线网用于建模硬件设计中的连接线路,而线网的值由线网驱动器所决定
  • 驱动器可以是门或模块的实例,或者连续赋值的输出

1.2 Verilog变量类型

  • 变量类型保存在initial、always、task和function内赋的值
  • 变量只能用过程赋值来完成
  • 类型是integer或time 的变量一般像有相同数量位数的reg一样运转
  • 在表达式中integer的值作为有符号数处理,而reg或time的值作为无符号数处理
  • 用reg描述逻辑,integer描述循环变量和计算,real在系统模型中使用,time和realtime保存测试装置的仿真时间

2. SV新添加的数据类型

  • Verilog中的变量和线网类型均是四值逻辑
  • SV添加了新的数据类型来帮助设计和验证工程师
  • SV将硬件信号区分为类型数据类型
  • 类型即表示该信号为变量var或者线网类型wire
  • 数据类型则表示该数据是四值逻辑logic或者二值逻辑bit

2.1. 四值逻辑数据类型

  • 在Verilog中,reg经常用来表示存储组合逻辑或者时序逻辑的变量,初学者容易混淆其综合后的硬件单元,实际上,reg并不一定会被综合为register,而它只是用来与线网类型相对,表示存储数据的变量

  • 在SV中,我们可以直接使用logic(数据类型)来实现通用的存储硬件数据
    logic resetN; //1位宽的四值逻辑
    logic [63:0] data; //64位宽的变量
    logic [0:7] array [0:255]; //由8位向量元素构成的数组, 256个8位的数组

  • logic虽然只是表示数据类型,而在声明时,它默认会表示变量类型variable,用户也可以显式声明其类型:
    var logic [63:0] addr; //64位宽的变量类型
    wire logic [63:0] data; //64位完的线网类型

2.2. 二值逻辑数据类型

  • 在RTL级别,X值用来捕捉设计错误,例如寄存器未初始化,Z值用来表示未连接或者三态的设计逻辑,但是在系统级或者事务级,Z和X少被使用
  • 类似于logic类型默认为变量类型,bit类型默认也为变量类型

3.有符号类型和无符号类型

  • logic或者bit构成的向量vector是无符号类型
  • integer、byte、shortint、int、longint为有符号类型
  • 可以在有符号类型后添加 unsigned来表示无符号类型,例如:
    byte有符号类型,表示的数值范围是[-128,127]
    byte unsigned 表示无符号类型,等同于bit[7:0],表示的数值范围是[0,255]
  • 在构建验证驱动组件时,无需关注硬件底层逻辑(X或者Z值),所以可使用二值逻辑实现
  • SV在与C在发生交互时,也可以使用二值逻辑来使得两种语言的函数接口参数类型传输更为简单

4. 仿真行为

  • 四值逻辑变量例如reg、logic或者integer等,在仿真开始时的初值为X
  • 二值逻辑变量例如bit等,在仿真开始时的初值为0
  • 如果四值逻辑与二值逻辑的数据类型之间发生的默认转换,那么Z和X值将转换为0
4-state valueconverts To
00
01
Z0
X0
  • 二值逻辑也可以用来实现可综合电路,只是二值逻辑由于没有X和Z值,因此可能会出现仿真行为同综合电路结果不一致的情况

5. 其它类型

  • SV添加void类型来表示空类型,经常用在函数定义时表示不会返回数值,同C语言的void使用方法
  • SV添加shortreal表示32位单精度浮点类型,同C语言float,而Verilog的real类型表示双精度浮点类型,同C语言的double

这篇关于V0 第5节 数据类型的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/478142

相关文章

MySQL数据类型与表操作全指南( 从基础到高级实践)

《MySQL数据类型与表操作全指南(从基础到高级实践)》本文详解MySQL数据类型分类(数值、日期/时间、字符串)及表操作(创建、修改、维护),涵盖优化技巧如数据类型选择、备份、分区,强调规范设计与... 目录mysql数据类型详解数值类型日期时间类型字符串类型表操作全解析创建表修改表结构添加列修改列删除列

Python标准库datetime模块日期和时间数据类型解读

《Python标准库datetime模块日期和时间数据类型解读》文章介绍Python中datetime模块的date、time、datetime类,用于处理日期、时间及日期时间结合体,通过属性获取时间... 目录Datetime常用类日期date类型使用时间 time 类型使用日期和时间的结合体–日期时间(

详解MySQL中JSON数据类型用法及与传统JSON字符串对比

《详解MySQL中JSON数据类型用法及与传统JSON字符串对比》MySQL从5.7版本开始引入了JSON数据类型,专门用于存储JSON格式的数据,本文将为大家简单介绍一下MySQL中JSON数据类型... 目录前言基本用法jsON数据类型 vs 传统JSON字符串1. 存储方式2. 查询方式对比3. 索引

Python变量与数据类型全解析(最新整理)

《Python变量与数据类型全解析(最新整理)》文章介绍Python变量作为数据载体,命名需遵循字母数字下划线规则,不可数字开头,大小写敏感,避免关键字,本文给大家介绍Python变量与数据类型全解析... 目录1、变量变量命名规范python数据类型1、基本数据类型数值类型(Number):布尔类型(bo

通过C#获取Excel单元格的数据类型的方法详解

《通过C#获取Excel单元格的数据类型的方法详解》在处理Excel文件时,了解单元格的数据类型有助于我们正确地解析和处理数据,本文将详细介绍如何使用FreeSpire.XLS来获取Excel单元格的... 目录引言环境配置6种常见数据类型C# 读取单元格数据类型引言在处理 Excel 文件时,了解单元格

C语言中的数据类型强制转换

《C语言中的数据类型强制转换》:本文主要介绍C语言中的数据类型强制转换方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录C语言数据类型强制转换自动转换强制转换类型总结C语言数据类型强制转换强制类型转换:是通过类型转换运算来实现的,主要的数据类型转换分为自动转换

Redis中的常用的五种数据类型详解

《Redis中的常用的五种数据类型详解》:本文主要介绍Redis中的常用的五种数据类型详解,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录Redis常用的五种数据类型一、字符串(String)简介常用命令应用场景二、哈希(Hash)简介常用命令应用场景三、列表(L

python多种数据类型输出为Excel文件

《python多种数据类型输出为Excel文件》本文主要介绍了将Python中的列表、元组、字典和集合等数据类型输出到Excel文件中,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参... 目录一.列表List二.字典dict三.集合set四.元组tuplepython中的列表、元组、字典

Rust 数据类型详解

《Rust数据类型详解》本文介绍了Rust编程语言中的标量类型和复合类型,标量类型包括整数、浮点数、布尔和字符,而复合类型则包括元组和数组,标量类型用于表示单个值,具有不同的表示和范围,本文介绍的非... 目录一、标量类型(Scalar Types)1. 整数类型(Integer Types)1.1 整数字

v0.dev快速开发

探索v0.dev:次世代开发者之利器 今之技艺日新月异,开发者之工具亦随之进步不辍。v0.dev者,新兴之开发者利器也,迅速引起众多开发者之瞩目。本文将引汝探究v0.dev之基本功能与优势,助汝速速上手,提升开发之效率。 何谓v0.dev? v0.dev者,现代化之开发者工具也,旨在简化并加速软件开发之过程。其集多种功能于一体,助开发者高效编写、测试及部署代码。无论汝为前端开发者、后端开发者