9,Verilog-2005标准篇:变量(variable)信号类型

对reg变量的赋值是通过过程赋值(procedural assignment)完成的,而不是前面网络信号使用的连续赋值(continuous assignment)。由于reg变量在两次赋值间隔保持一个值,因此可以用来模拟硬件寄存器。边沿敏感型(即触发器)和电平敏感型(即复位-置位和透明锁存器)存储元件都可以建模。但reg不必表示硬件存储元件,因为它也可以用来表示组合逻辑(这句话非常重要!)。

integer, real, time, and realtime变量

除了reg变量的硬件建模,verilog中的变量还有其他用途。虽然 reg 变量可用于一般用途,但Integer,real,time,和realtime变量类型能够提供整数和时间数据,更加方便,并使代码描述更具文档性。下图1列出了声明integer变量、time变量、real变量和realtime变量的语法:

图1:整数、时间、实数和实时变量声明的语法

integer是一种通用变量,用于操作不被视为硬件寄存器的量。

time变量用于存储和处理需要时序检查的仿真时间量,以及用于诊断和调试。这种数据类型通常与 $time 系统函数结合使用。

integer变量和time变量的赋值方式与 reg 相同,应使用过程赋值来触发它们的值变化。

time变量的行为应与至少64位的 reg变量相同。time变量应为无符号量,并对其进行无符号运算。与此相反,integer变量应被视为有符号reg变量。

verilog允许对矢量reg、integer变量和time变量进行位选择和部分选择。设计者可以自行限制integer变量的最大位宽,但至少应为 32 位。

Verilog HDL 除支持integer和time变量数据类型外,还支持real常量和real变量数据类型。除以下限制外,声明为real的变量可用于与integer和time变量相同的地方:

- 并非所有 Verilog HDL 运算符都可用于实数值。有关实数和实数变量的有效和无效运算符列表,后文再详细介绍。

- 实数变量在声明中不得使用位宽范围。

- 实数变量的默认初始值应为零。

real声明与realtime声明同义,在使用时可交替使用。例如下面例子:

在real和real变量上使用逻辑或关系运算符的结果是单bit标量值。并非所有 Verilog HDL 运算符都能用于涉及real和real变量的表达式。以下情况就禁止使用real常量和real变量:

- 应用于real变量的边沿描述符(posedge、negedge)

- 声明为实数变量的位选(Bit-select)或部分位选(part-select)引用

- 矢量位选或部分位选引用的实数索引值

real转换为integer时,应将实数四舍五入为最接近的整数,而不是截断实数。将实数赋值为整数时,应进行隐式转换。在将表达式赋值给实数时,同样应进行隐式转换。网络或变量中 x 或 z 在转换时应视为零。

点赞加关注博主(ID:FPGA小飞)的博文,咱们一起系统学习verilog最终标准IEEE Std 1364-2005吧!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值