system verilog语法(一)

本文详细解析了Verilog与SystemVerilog中的数据类型,包括变量类型如reg、integer,线网类型如wire,以及SystemVerilog中新增的类型如void、shortreal。同时介绍了自定义类型的方法,如通过typedef、enum和struct创建用户定义类型。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

数据类型

verilog

1、Verilog语言提供两种基本的数据类型,即变量类型(variables)和线网类型(nets),这两种类型都是四值逻辑,即可表示0、1、X和Z值。

2、例如reg,integer和time等变量类型可以用来存储组合逻辑或者时序逻辑的值。
例如wire,wor,wand和其它线网类型用来连接硬件模块,以及提供特殊的线网逻辑解决方案。

3、Verilog并没有严格区分信号的类型,变量和线网类型均是四值逻辑。

4、reg并不一定会被综合为register,而它只是用原来与线网类型相对,表示存储数据的变量。

5、Verilog语言自身不提供枚举类型,因此为了提供类似于枚举类型可实现的便利,我们不得不采用parameter常量来表示可取的值范围,或者使用`define来定义各个合法值对应的宏名称

system verilog

SV中
1、logic或者bit构成的向量(vector)是无符号类型。
integer、byte、shortint、int、longint为有符号类型。

2、四值逻辑变量例如reg、logic或者integer等,在仿真开始时的初值为X。
二值逻辑变量例如bit等,在仿真开始时的初值为0。
如果四值逻辑与二值逻辑的数据类型之间发生的默认转换,那么Z和X值将转换为0

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

自定义类型

通过typedef来创建用户自定义类型。
通过enum来创建枚举类型。
通过struct来创建结构体类型。
为了使代码更易读和维护,通常我们对于自定义的类型,都习惯添加“_t”的后缀用来表示它是一个自定义类型(type)。

枚举类型(enum)提供方法来描述抽象变量的合法值范围,其每一个值都需要提供一个用户自定义的名字。
下面的枚举类型RGB可以拥有red、green和blue的三个数值:

enum {red,green,blue} RGB;

默认的枚举类型是int,即32位的二值逻辑数据类型。
为了能够更准确地描述硬件,SV允许指明枚举类型的数据类型,例如:

enum bit {TRUE, FALSE} Boolean;
enum logic [1:0] {WAITE, LOAD, READY} state;

如果一个枚举类型数值被赋值,那么所赋的值必须符合其数据类型。

enum logic [2:0] {WAITE = 3’b001,LOAD = 3’b010,READY = 3’b100} state;

如果枚举类型是四值逻辑数据类型,那么对枚举值赋为X或者Z也是合法的。

enum logic {ON=1’b1, OFF=1’bz} out;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值