对象类型和数据类型

对象类型和数据类型

Verilog数据类型
Verilog语言具有针对硬件的变量类型和线网类型。这些类型具有特定的仿真和综合语义,表示芯片或系统中的实际连接行为。
(1)Verilog的reg、integer和time变量的每一位都有四种逻辑:0、1、Z、X
(2)Verilog的wire、wor、wand和其他线网(net)类型的每一位有120种值及专用线逻辑决断函数。

SystemVerilog的数据类型
数据声明具有类型和数据类型
“类型”定义了数据是线网还是变量
类型指示信号是线网还是变量
“数据类型”定义了数据是两态还是四态的
数据类型指示线网或变量的值系统:对两态数据类型是0或1,对四态数据类型是0、1、Z、X。SystemVerilog关键字logic定义对象是四态数据类型。在SystemVerilog-2005标准中,变量类型可是两态的也可以是四态的,而线网类型只能是四态数据类型。

SystemVerilog四态变量
SystemVerilog使用logic关键字来描述通用的针对硬件的数据类型

logic resetN;//1位4态变量
logic[63:0] data; //64位宽变量
logic [0:7] array [0:255]; //8位数组变量

关键字logic实际上并不是一个变量类型,它是一个数据类型,表示信号具有四态值。但是,当logic关键字单独使用时,则暗示这是一个变量。四态变量可以使用一对关键字var logic进行显示声明

var logic [63:0] addr; //一位64位宽变量

线网也可以用logic关键字显示声明为四态数据类型

wire logic[63:0] addr;//一位64位宽线网

SystemVerilog两态变量
SystemVerilog增加了几个新的两态类型,更适合于比RTL更抽象的层次,如系统级和交易级建模。
(1)bit:1位两态整数
(2)byte:8位两态整数,类似于C语言的char
(3)shortint:16位两态整数,类似于C语言的short
(4)int:32位两态整数,类似于C语言的int
(5)longint:64位两态整数,类似于C语言的longlong

使用两态bit类型
抽象建模不需要四态值
reg和logic数据类型的 变量用来在过程中对硬件进行建模。这些数据类型储存四态逻辑值:0、1、Z、X。可综合RTL硬件模型中,更愿意使用四态类型。Z用于表示连接或三态逻辑。X值有助于检测和隔离设计错误。更高级建模,如系统级和交易级中,几乎不需要逻辑值Z和X。
两态bit类型可以代替reg或logic类型
SystemVerilog允许变量声明为bit数据类型。从语法上来说,任何使用reg和logic的地方都可以使用bit数据类型。但是,从语义上讲,bit数据类型是不同的,它只要两态值:0和1。bit数据类型对更高抽象的硬件建模非常有用。

bit restN; //1位两态变量
bit [63:0] data;//64位宽的两态变量
bit [0:7] array [0:255]; //8位两态数组变量

关键字bit实际上并不是一种变量类型,而是一种数据类型,表示变量具有两态值。但是,当bit变量单独使用时,就暗示这是一个变量。一个两态变量可以用关键字var bit显示声明

var bit [63:0] addr;//64位宽的变量

两态仿真语义
四态类型从逻辑值X开始仿真
仿真开始时,四态变量,如reg、logic、和integer的所有位缺省为逻辑值X。这些变量认为没有被初始化,因此直到赋给变量第一个值之前它们的值都是不确定的。四态变量可以通过内嵌初始化定义开始仿真时的值,但这是不可综合的。

两态类型从逻辑值0开始仿真
所有的两态数据类型从逻辑0开始仿真。由于两态类型不存储X值,它们不能描述未初始化状态。这也是更喜欢用四态类型描述可综合RTL模型的原因之一

两天类型X和Z值会被指定为0
给一个两态变量赋值是合法的。例如,模块输入端口的四态值可以赋给模块内的两态bit类型。四态类型任何位的X或Z值赋给两态时对应为会转换为逻辑0

其他抽象类型
void类型代表无储存
SystemVerilog增加了void类型表示无储存。void类型可以用在标签联合体中以及用来定义无返回值的函数
shortreal等效于C中的float
SystemVerilog还增加了类似Verilog的real类型的shortreal变量类型。
shortreal是一个32位单精度浮点数,与C语言的float相同,而Verilog的real是一个双精度变量,与C语言的double相同。real和shortreal类型是不可综合的,但是在硬件抽象建模和测试程序中和有用。

显示及隐式变量和线网类型
SystemVerilog具有线网和变量类型以及两态和四态数据类型
在SystemVerilog术语中,变量和线网是具有两态或四态“数据类型”。四态数据类型用关键字logic表示。两态数据类型用关键字bit表示。当这些四态或两态数据类型没哟显示指定数据类型是变量还是线网时,则推断为隐式变量。

logic [7:0] busA;//推断出一个四态数据类型的变量
bit [31:0] busA;//推断出一个两态数据类型的变量

Verilog关键字integer和time是具有预定义向量宽度的四态数据类型的变量。SystemVerilog关键字int、byte、shortint和longint是具有预定义向量宽度的两态数据类型的变量。
SystemVerilog允许在任何数据类型前选择性的使用var关键字

var logic [7:0] a; //四态8位变量
var bit [31:0] b; //两态32位变量
var int i;//两态32位变量

var关键字(variable的简称)表示对象是一个变量。var关键字并不影响变量的仿真或综合行为。它的用途是使代码能自成文档。这一显示描述方式可以在变量为用户自定义类型时,代码更易读。

typedef enum bit {FALSE,TRUE} bool_t;
var bool_t c;//用户定义类型的变量

还可以用不含显示数据类型的var声明变量。在这种情况下,变量为logic数据类型

var [7:0] d;//四态8位变量

所有的Verilog线网类型(wire、uwire、wand、wor、tri、triand、trior、tri0、tri1、trireg、supply0、supply1)都是隐含为四态逻辑数据类型。

wire [31:0] busB;//声明了一个线网类型,隐含为四态逻辑数据类型

线网可以选择使用线网型和logic数据类型进行声明

wire logic [31:0] busC;

为了避免混淆关键字组合,SystemVerilog不允许reg关键字直接与任何线网型关键字成对使用

wire reg [31:0] busD;//非法的关键字配对

两态类型与四态类型同样综合
综合会忽略两态类型的默认初始值
四态logic类型和两态bit、byte、shorint、int和longint类型都是可综合的。综合编译器对两态和四态类型同样对待。两态类型的使用主要影响仿真。
两态类型从默认逻辑值0开始仿真。综合忽略这一默认初始值,使用两态类型时,综合后的设计不能保证加电后为0,就和综合前一样。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/243324.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

尺度空间(Scale space)理论

尺度空间方法的基本思想是:在视觉信息处理模型中引入一个被视为尺度的参数,通过连续变化尺度参数获得不同尺度下的视觉处理信息,然后综合这些信息以深入地挖掘图像的本质特征。尺度空间方法将传统的单尺度视觉信息处理技术纳入尺度不断变化的…

[转] Windows CE 6.0 启动过程分析

看到这么好的文章,小郭觉得不转载就是天理不容,转了!!!! *************************************************************************************** 在Windows CE 6.0中,内核(Ke…

数据类型规则的放宽

数据类型规则的放宽 SystemVreilog放宽了使用变量的限制 SystemVreilog放宽了变量的使用规则,大大简化了模型中数据类型的使用。在SystemVreilog中共,任何数据类型的变量都可以通过下列方式赋值,但只能采用其中的一种方式。 (1&a…

真实,让文学回到原点:关于非虚构写作的思考

任何一种文学主张,其实都是先有实践,而后再有理论和命名。“非虚构写作”也是如此。如果大胆猜想,“非虚构写作”可能要追溯到远古的口传心记和结绳记事。当时的人类记录下身边发生的事情,应该就是非虚构,而口头讲述的…

4位16色灰度图像处理

定义几个辅助的宏,如下。 // 拆分合并BYTE #define HIBITS(w) ((BYTE)((((BYTE)(w)) >> 4) & 0xf)) #define LOBITS(w) ((BYTE)(((BYTE)(w)) & 0xf)) #define MAKEBITS(a, b) ((BYTE)(((BYTE)(((BYTE)(a)) & 0xf)) | ((…

[转] 常见WinCE启动失败原因分析

*********************************************** 一般情况下,为设计中的IC开发SW方案,难免会碰到Bootloader/EBoot/OS启动失败的情况,对于Bootloader和EBoot,由于源代码很少,直接使用Trace32调试是最佳方法&#xff…

树莓派安装mariadb redis

安装软件 sudo apt install mariadb-server mariadb-client sudo apt install redis 二. 配置 1, mariadb 配置 配置远程访问 maridb configuration: sudo mysql_secure_installation # 设置root密码 vim.tiny mariadb.conf.d/50-server.cnf # 设置去除本地绑定 #bind-addre…

Google云服务降价,整合持续集成工具,支持Windows和托管虚拟机

本周二,Google举行了云平台的现场活动(点击查看视频记录),展示了一系列新特性、改进和全新定价模型。\u0026#xD;\n定价\u0026#xD;\nGoogle认为,云计算价格应该跟随硬件领域的摩尔定律,而且在过去数年间硬件…

静态和自动变量

静态和自动变量 自动变量–也可以称为动态变量,主要是用来描述在测试程序、抽象系统级、交易级或总线功能模型中的验证程序。自动变量的另一个用途就是编写可重入的任务,当一个任务的前一次调用仍然在执行时,可以再次对其调用。 自动变量也允…

图像拉普拉斯金字塔融合(Laplacian Pyramid Blending)

转摘的&#xff0c;修改了下程序&#xff0c;图像融合看不太懂 。。。。http://blog.csdn.net/abcjennifer/article/details/7628655#comments // 转摘的别人的程序 // #include <stdio.h> #include <cv.h> #include <cxcore.h> #include <highgui.h>…

[转]GIS简介

************************************************** 最近论坛上经常有人讨论GIS&#xff0c;特意从别人的blog中转了一篇GIS简介的帖子************************************************** 地理信息系统(GIS,Geographic Information System)是一门用计算机来研究地理的学科…

debug设计

debug设计 会用到debug设计的阶段 (1)RTL级设计仿真 (2)实施后的设计模拟 (3)在系统调试 使用网表插入调试探测流动 (1)最高级别是一个简单的向导,用于创建和配置集成逻辑分析仪 (ILA)内核会根据选定的一组网络自动进行调试。 (2)下一级是主调试窗口,允许控制单个…

ASA 9.21 in Vmware Workstation 10

There is old post “ASA 8.02 in Vmware Workstation “ in this blog posted on Dec 2011. Anothe post “How to Make your own ASA 8.42 in VMware”. Here are all related posts in this blog: ASA 8.02 in Vmware WorkstationASA 8.42 in VMware WorkstationASA 9.21 i…

MMU及PTS说明

MMU与PTS表格 最近在FPGA上仿真调试Virgo&#xff08;基于ARM11的一款处理器&#xff09;芯片。MMU部分总是出错&#xff0c;具体的现象是查看物理地址和虚拟地址的映射时候芯片经常会挂掉。先是怀疑MMU的寄存器配置有问题&#xff0c;后来又怀疑MMU映射使用的PTS表格有问题&a…

bug?VS2010中CImageList::DrawIndirect总是返回失败

//VS2010 #if _MSC_VER > 1600pImageList->Draw(pDC, nImage, point, ILD_NORMAL); #elseSIZE size;size.cx rect.Width() < sizeImage.cx ? rect.Width() : sizeImage.cx;size.cy rect.Height() < sizeImage.cy ? rect.Height() : sizeImage.cy;pImageList-&g…

VHDL基本结构

VHDL基本结构 (1)实体(Entity):描述所设计的系统的外部接口信号,定义电路设计中得到所有的输入和输出端口。 (2)结构体(Architecture):描述系统内部的结构和行为 (3)包集合(Package):存放各设计模块能共享的数据类型、常数和子程序等; (4)配置(Configurat…

Source Code Collection for Reproducible Research

转自&#xff1a;http://www.csee.wvu.edu/~xinl/source.html “It doesnt matter how beautiful your theory is, it doesnt matter how smart you are. If it doesnt agree with experiment, its wrong” - Richard Feynman "As a method for finding things out, scien…

IClass与电源管理

IClass与电源管理 前段时间为J9项目上添加电源管理&#xff0c;中间走了一些弯路。之前错误的认为&#xff0c;IClass只是与电源状态的改变方法有关&#xff0c;也就是说IClass的正确与否只会影响到设备电源状态的正确与否&#xff0c;而不会造成设备是否可以支持设备电源状态的…

状态机在VHDL中的实现

状态机在VHDL中的实现 1、Moore状态机的VHDL描述 输出仅取决于所处的状态 LIBRARY IEEE; --库、程序包的说明调用 USE IEEE.STD_LOGIC_1164.ALL;ENTITY Moore IS PORT (RESET,CLOCK,DIN : IN STD_LOGIC;DOUT : OUT STD_LOGIC_VECTOR(2 DOWNTO 0) ); END;ARCHITECTURE Mo…

Linux : find big file in the all directories

1. Juniper Firewall find . -type f -size 10000 -exec ls -lh {} ; Sample output: [email protected]% find . -type f -size 10000 -exec ls -lh {} ; -rw-r–r– 1 930 929 134M Jan 5 17:34 ./cf/packages/junos-11.4R6.6-domestic-rw-r–r– 1 root wheel 1…