Verilog 数据类型

verilog知识点(一) 一、Verilog_HDL模型 所谓不同的抽象类别,实际上是指同一个物理电路,可以在不同层次上用Verilog语言来描述。如果只从行为功能的角度来描述某一电路模块,就称作行为模块。如果从电路结构的角度来描述该电路模块,就称作结构模块。根据抽象的级别将Verilog的模块分为5种不同的等级: (1)系统级(system-level):用语言提供的高级结构能够实现待设定模块的外部性能的模型; (... 阅读详情
AI摘要

本文详细介绍了Verilog语言中的数据类型,包括物理数据类型(连线型、寄存器型、存储器型)和抽象数据类型(整型、时间型、实型、参数型)。文章深入解析了每种数据类型的特性及其应用场景。

Verilog 数据类型

Verilog中,数据类型主要分为两类:物理数据类型(主要包括连线型和寄存器型)和抽象数据类型(主要包括:整型、时间型、实型和参数型)

物理数据类型与实际硬件电路的硬件关系比较明显,抽象程度比较低

抽象数据类型是进行辅助设计和验证的数据类型

1 物理数据类型

Verilog中主要的物理数据类型是:连线型、寄存器型、存储器型

使用四种逻辑电平(0,1,x,z)和八种信号强度(strength)对实际的电路进行建模

四种逻辑电平是对信号的抽象

信号强度表示数字电路中不同强度的驱动源,用来解决不同驱动强度下的赋值冲突,八种强度如下,自上往下,强度递减

标记符号名称类型
supply电源级驱动驱动
strong强驱动驱动
pull上拉级驱动驱动
large大容性存储
weak弱驱动驱动
medium中性驱动存储
small小容性存储
highz高容性高祖

1.1 连线型

连线表示逻辑单元的物理连接,可以对应电路中的物理信号连线,这种变量不能保持电荷(trireg除外)

连线型变量必须要有驱动源,一种是连接到一个门或者模块的输出端,另一种是用assign对它进行赋值,若没有驱动源,将保持高阻态z

连线型有如下几种:

连线型数据类型功能说明
wire,tri标准连线(缺省为该类型)
wor,trior多重驱动时,具有线或特性的连线型
trireg具有电荷保持特性的连线型数据
tri1上拉电阻
tri0下拉电阻
supply0电源线,用于对“地”建模,为低电平0
supply1电源线,用于对电源线建模,为高电平1
wand, trand多重驱动时,具有线与特性的连线型
1.1.1 wire和tri

wire(连线)和tri(三态线)是最常见的,语法和语义是一致的。

不同之处如下:

  • wire型变量通常用来表示单个驱动门或assign赋值语句的连线

  • tri型变量用来表示多驱动器驱动的连线型数据,主要用于定义三态的线网

    wire/tri01xz
    00xx0
    1x1x1
    xxxxx
    z01xz

    上述真值表是:同时有两个驱动强度相同的驱动源来驱动wire或tri变量时的输出结果

    注意:这里并非是与逻辑,可以理解为都想给线赋值,因此当出现0和1同时赋值时,由于驱动强度相同,因此最终结果是不定值x

1.1.2 wor和trior
wor/trior01xz
001x0
11111
xx111
z01xz
1.1.3 wand和triand
wand/triand01xz
00000
101x1
x0xxx
z01xz

wand和triand便是与逻辑,因此当0和1同时出现时,结果是0&1的结果

1.1.4 tri0和tri1

tri的特征是,若无驱动源,其值为紧跟的数字

tri0/tri101xz
00xx0
1x1x1
xxxxx
z01x0/1
1.1.5 supply0和supply1

supply0表示GND,supply1表示VCC

1.1.6 trireg线网

trireg线网型可以存储数值,类似于寄存器数据类型,用于电容节点的建模。

当三态寄存器(trireg)的所有驱动源都处于高阻态z时,trireg保持作用在线网的最后一个逻辑值。

trireg的缺省初始值为x

存储电荷强度有如下几个关键字控制:

small、medium、large,默认电荷强度为medium

对于trireg型数据,仿真时其电荷衰减时间应制定为延迟时间

1.2 寄存器型

reg型变量对应的硬件电路元件具有状态保持作用,能够存储数据

reg型变量常用于行为级描述,由过程赋值语句对其进行赋值

reg和wire的区别:

  • reg保持最后一次的赋值,wire需要持续的驱动
  • reg默认初始值为不定值x,wire默认初始值为不定值z

reg型变量一般是无符号的,若将负数赋值给reg型变量,会自动转成其补码形式

1.3 连线型和寄存器型数据声明对比

1.3.1 连线型数据声明

语法为<net_declaration><drive_strength><range><delay><list_of_variables>

drive_strength、range、delay是可选项目,list_of_variables为必选项

  • net_declaration:数据的类型,可以是wire、tri、tri0、tri1、wand、triand、trior、wor、trireg中的任意一个
  • drive_strength:驱动强度
  • range:用来指定数据位标量或矢量。默认表示数据类型为1bit的标量,超过1bit就为矢量形式
  • delay:指定仿真延迟时间
  • list_of_variables:变量名称
1.3.2 寄存器型数据声明

语法为:reg <range><list_of_variables>

  • range:可选项,确定变量位宽
  • list_of_variables:变量名称

1.4 存储器型

存储器型本质上是寄存器型变量的阵列,所以用reg型变量建立寄存器组实现存储器功能。

存储器变量声明格式:reg<range1><name_of_list><range2>

其中,range1和range2是可选项,缺省是都为1

说明:

  • range1:表示存储器中寄存器的位宽
  • range2:表示寄存器的个数

例如:reg [7:0] mem [255:0]表示由256个位宽为8bit的寄存器组成的存储器

2 抽象型数据类型

抽象型数据类型有:整型(integer)、时间型(time)、实型(real)和参数型(parameter)

2.1 整型

整型数据常用于对循环控制变量的说明,在算术运算中被视为二进制补码形式的有符号数

整型数据默认为32bit有符号数

2.2 时间型

时间型与整型数据类似,不过时间型是64bit无符号数

时间型数据主要用于对模拟时间的存储与计算处理,常与系统函数$time一起使用

2.3 实型

Verilog支持实型常量与变量,实型数据在机器码表示法中是浮点型数据,可用于对延迟时间的计算

2.4 参数型

参数型数据属于常量,在仿真开始之前就被赋值,并在仿真过程中保持不变

参数定义方法可以提高程序可可读性和可维护性,常用来定义延迟时间和变量的位宽

04 verilog基础语法-数据类型、常量及变量 一、学习内容(下半部分) 二、数据类型 三、常量 (1)整数型变量 (2)x和z (3)负数 (4)符号常量(parameter和localparam) 四、变量 (1)nets型变量 (2)register型变量 (3)memory型变量(数组) 五、思考和小结 (1)思考 (2)小结 阅读详情

相关推荐

FPGA之道(33)Verilog数据类型

在Verilog语言中,主要有三大类数据类型,即寄存器数据类型、线网数据类型和参数数据类型。从名称中,我们可以看出,真正在数字电路中起作用的数据类型应该是寄存器数据类型和线网数据类型,它们共同遵守Verilog的四值逻辑系统。

Reborn Lee 5583

Verilog Tutorial(2)数据类型和数组简介

Verilog 数据类型和数组简介

孤独的单刀 6462

Verilog中输入数据范围的判断

在上述代码中,我们定义了一个模块range_check,该模块有一个8位的输入信号input和一个输出信号out_of_range。在always块中,我们使用if语句判断输入信号是否小于0或大于255,如果是,则将out_of_range置为1,表示输入数据超出了范围;当设计一个模块时,我们通常需要对输入数据的范围进行判断,以确保输入数据在合理的范围内。首先,我们需要定义输入信号的范围。假设我们设计了一个模块,其中有一个8位的输入信号input,我们希望输入数据的范围在0到255之间。

AtmiSmalltalk的博客 745

verilog基础:数据类型定义

verilog中的数据类型大体可以分成net types和variable types。

qq_50738746的博客 2130

[Verilog]Verilog逻辑值系统及数据类型超详解析

Verilog语言中的逻辑值系统与数据类型详解:文章首先介绍了Verilog四值逻辑系统,然后重点解析三类主要数据类型。1) net类型(如wire、tri等)表示物理连接,需要持续驱动;2) 寄存器类型(reg等)保持原值直至被赋值;3) 参数类型(parameter)用于定义可变常量。文章还提供了数据类型选择指南,并总结了常见错误类型,如误用过程语句给net赋值、错误声明端口类型等。最后指出正确判断信号类型的方法,强调端口和内部信号的不同声明规则,避免常见的类型声明错误。

元直的博客 1868

EDA/PLD中的Verilog HDL中wor和trior线网

线或指如果某个驱动源为1,那么线网的值也为1。线或和三态线或(trior)在语法和功能上是一致的。wor [MSB:LSB] Art;trior [MAX-1: MIN-1] Rdx, Sdx, Bdx;如果多个驱动源驱动这类网,网的有效值由下表决定。wor (或 trior) 0 1 x z0 0 1 x 01 1 1 1 1x x 1 x xz 0 1 x z   

Verilog中基本的数据类型

Verilog中共有19种数据类型。 基本的四种类型: reg型、wire型、integer型、parameter型。 其他类型:large型、medium型、small型、scalared型、time型、tri型、trio型、tril型、triand型、trior型、trireg型、vectored型、wand型和wor型。 这14中数据类型除time外都与基本逻辑单元建库有关。 ...

坚持 1万+

ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置

ESXI添加硬盘时提示 无法创建 VMFS 数据存储 - 无法更改主机配置1.打开ESXI的SSH2.找到不能添加的硬盘路径3.用SSH操作 1.打开ESXI的SSH 2.找到不能添加的硬盘路径 我的是第一个,找到你要添加但是不能添加的那个硬盘,点进去。 完整的路劲为:1/2 比如我的: /vmfs/devices/disks/t10.ATA_____ST500LT0122D1DG142___________________________________S3PHRNHQ (比较长哈!) 3.用SSH

AI_DOG的博客 2万+

Verilog数据类型详解

本文摘要: Verilog HDL基础知识概述,重点介绍数值表示、数据类型和存储结构。数值输入支持四种进制和科学计数法,包含0、1、x、z四种逻辑值。数据类型分为线网(wire)和寄存器(reg),其中wire表示物理连线,reg作为存储单元。文章详细介绍了向量定义、位选择和拼接操作,以及整数、实数、时间等特殊数据类型的使用方法。同时阐述了数组和存储器的声明与赋值规则,包括多维数组的访问方式。此外,还介绍了常量的parameter声明和字符串的特殊处理方式。这些基础知识为Verilog硬件描述语言的应用提供

微小冷的学习笔记 1213

MIL-STD-1553B协议解析与工程实践指南

MIL-STD-1553B作为军用航空电子系统的核心通信协议,采用命令/响应式串行总线架构,通过双冗余设计实现高可靠性数据传输。该协议定义了三类终端设备(总线控制器、远程终端、总线监视器)和六种标准消息格式,典型应用包括飞行控制系统、导航设备等关键航电组件的实时数据交互。深入解析模式代码机制和状态字位域定义,其中传输向量字(10000)和同步命令(00001)等关键指令在分布式系统时间对齐、故障诊断等场景发挥重要作用。工程实践中需特别注意78Ω终端阻抗匹配、4-12μs响应时间窗口等硬性指标,结合变压器耦合

weixin_33431149的博客 435

画个板子玩一玩STM32F030F4P6,也许是最便宜的32bit MCU

前言,什么是STM32F030F4P6 STM32目前最便宜的芯片之一应该就是这一块,STM32F030F4P6,这一个芯片没有USB,但是其他都有,引脚少,价格低廉,如果找不到原厂,可以买替代的国产芯片,性能也一样。 不管怎么样也是Cortex-M0,比8bit和16bit的性能都强,总的来说就是低价,引脚少,体积小的同时,还容易开发,有很多模拟输入可玩,还有SPI,硬件I2C等等 所以,这一款MCU真的是从理论来说又便宜又好用,非常适合把玩。 画个板,最小系统 STM32F030其..

arenascat的博客 2万+

Verilog 2:数据类型

在 Verilog 语言中,数据类型的主要用途是表示像触发器中的比特这样的数据存储元素,以及像连接逻辑门和时序结构之间的导线这样的传输元素。

qq_49833809的博客 1152

帆软报表JS导出避坑指南:如何正确处理sessionid和参数传递

本文深入探讨了帆软报表中通过JavaScript实现一键导出的关键技术,重点解析了如何正确获取并传递sessionid以确保会话不丢失,以及如何构造包含必要参数的导出URL。文章详细对比了预览后导出与直接URL导出两种方式的差异,并提供了从参数拼接、前端触发下载到高级场景(如SPA集成)的完整避坑指南,帮助开发者构建稳定可靠的自定义导出功能。

weixin_42522857的博客 162

【verilog】verilog数据类型

菜鸟教程《verilog教程》第5章,《verilog数据类型》学习笔记。

老大小的博客 1399

数字IC设计避坑指南:为什么477条net的DRV问题无法修复?解析don‘t touch hierarchy的影响

本文深入解析了数字IC后端实现中,因“don't touch hierarchy”约束导致大量DRV违规(如477条net)无法自动修复的根本原因。文章以Cadence Innovus工具为例,详细阐述了DRV修复机制与设计保护约束的冲突原理,并提供了从日志定位、风险评估到分级解除约束的完整实战策略,帮助工程师有效解决此类设计收敛难题。

hope8的博客 290

ROS新手必看:5分钟搞定URDF小车建模(附Rviz可视化调试技巧)

本文为ROS新手提供了快速构建URDF机器人模型的实战指南。通过一个完整的两轮差速小车建模案例,详细解析了URDF的核心语法、Rviz可视化调试技巧以及常见问题排查方法,帮助初学者快速掌握ROS机器人建模与可视化调试的核心技能。

weixin_29079643的博客 250

Verilog学习——数据类型

Verilog中的语法类似于C,包含标记流。一个词法标记由一个或多个字符组成,标记可以是注释、关键字、数字、字符串或者空格,所有行都应以分号结尾,verilog区分大小写。两种方式://单行注释,可嵌套在多行注释里;/* */多行注释,不能嵌套;用于表示空格、制表符、换行符和表单馈送的字符;一元运算符,二元运算符,三元运算符或条件运算符;数字可以用小数、二进制、八进制、十六进制表示,默认情况下,视为小数;Size用十进制书写,表示数字中的位数;

LXY241638的博客 1018

Coze知识库搭建:智能化管理与高效检索实践

知识管理系统是现代企业信息资产管理的核心基础设施,其核心原理是通过结构化存储和智能检索技术实现知识的快速流转。在技术实现上,基于NLP的语义理解引擎和知识图谱构建是关键,能够显著提升检索准确率和知识关联性。以Coze平台为例,其针对中文场景优化的分词算法和多模态处理能力,可有效解决技术文档管理中的术语识别和格式兼容问题。这类系统在开发团队知识沉淀、新员工培训等场景中价值显著,特别是当集成RBAC权限模型和自动化备份策略后,既能保障信息安全,又能实现持续的知识迭代。通过合理配置同义词扩展和权重调整,可使搜索命

weixin_29041195的博客 262

verilog和system verilog常用数据类型以及常量汇总

常量本身并不属于数据类型,而是属于值的范畴。它们是通过特定的数据类型来存储和表示的。换句话说,常量是指其值在定义后不能被改变的实体,而数据类型决定了这些常量(以及变量)可以存储什么样的值及如何解释这些值。,它并不是 Verilog-2001 的标准数据类型,而是 SystemVerilog 引入的一个新特性。都是用于定义常量的关键字,但它们的使用场景和作用范围有所不同。在 Verilog-2001 和 SystemVerilog 中,的特性,而不是 Verilog-2001 的一部分。

soulermax的博客 1165

药物对接仿真软件:HADDOCK_(16).实践项目:抗体-抗原对接案例

定义分子结构文件。

kkchenjj的博客 580

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

verilog基础语法之数据类型

请注意,尽管data_out是reg类型并且可以使用非阻塞赋值,但data_in和clk作为wire类型,它们的值是由测试模块生成的信号所驱动的,而不是在d_flip_flop模块内部的always块中赋值。localparam 也是用于定义常量,但它的作用域是文件级别的,即在定义它的文件内任何地方都可见,而 parameter 的作用域限制在模块内部,这意味着每个模块实例可以有不同的 parameter 值。在仿真环境中,reg类型的变量行为与实际硬件中的寄存器类似,用于模拟寄存器的行为。

starmier的博客 3989

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

深入浅出学Verilog--数据类型

深入浅出学Verilog--数据类型

孤独的单刀 6135

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Verilog基础知识-数据类型

枚举数据类型使用enum关键字定义,可以表示一组固定的值,如颜色、星期等。参数化数据类型使用parameter或localparam关键字定义,可以在模块实例化时传递和修改参数。自定义类型使用typedef关键字可以定义用户自定义的数据类型,如自定义的结构体、枚举等。

captain 1744

Verilog--数据类型

在 Verilog 语言中,主要有三大类数据类型: 寄存器数据类型、线网数据类型和参数数据类型。 从名称中,我们可以看出,真正在数字电路中起作用的数据类型应该是 寄存器数据类型和线网数据类型。 寄存器类型: 寄存器表示一个抽象的数据存储单元,通过赋值语句可以改变寄存器储存的值 寄存器数据类型的关键字是 reg,reg 类型数据的默认初始值为不定值x reg类型的数据只能在 always 语句和 initial 语句中被赋值。 如果该过程语句描述...

s375527511的博客 923

在Verilog中如何给端口选择正确的数据类型

今天要介绍的知识点相信很多同学都已经很清楚了,在这里做介绍只是对我和一些新手做一下知识的巩固。 那么到底如何理解输入和输出端口到底是使用reg类型还是wire类型? 如图1 所示,对于输入A和输入B来说,我们只能使用线网类型,但是,输入A和输入B这两个端口可以由寄存器和线网所驱动。也就是说,寄存器和线网可以连接到这两个输入端口作为输入源。对于输出端口Y来讲,可以是线网,也可以是...

qq_27386569的博客 2906
上一篇: SystemVerilog联合体
下一篇: SystemVerilog静态变量和动态变量
行走的BUG永动机
博客等级 码龄7年 61粉丝 54原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值