集成电路技术分享

 找回密码
 我要注册

QQ登录

只需一步,快速开始

搜索
查看: 1425|回复: 2

Verilog HDL 的时间度量系统函数$time

[复制链接]
afei6969 发表于 2021-3-31 19:07:31 | 显示全部楼层 |阅读模式
在Verilog HDL中有两种类型的时间系统函数:$time和$realtime。用这两个时间系统函数可以得到
当前的仿真时刻。
• 系统函数$time
$time可以返回一个64比特的整数来表示的当前仿真时刻值。该时刻是以模块的仿真时间尺度为基准
的。下面举例说明。
[例1]:`timescale 10ns/1ns
module test;
reg set;
parameter p=1.6;
initial
begin
$monitor($time,,"set=",set);
#p set=0;
#p set=1;
end
endmodule
输出结果为:
0 set=x
2 set=0
3 set=1
在这个例子中,模块test想在时刻为16ns时设置寄存器set为0,在时刻为32ns时设置寄存器set为1。
但是由$time记录的set变化时刻却和预想的不一样。这是由下面两个原因引起的:

1) $time显示时刻受时间尺度比例的影响。在上面的例子中,时间尺度是10ns,因为$time
输出的时刻总是时间尺度的倍数,这样将16ns和32ns输出为1.6和3.2。
2) 因为$time总是输出整数,所以在将经过尺度比例变换的数字输出时,要先进行取整。
在上面的例子中,1.6和3.2经取整后为2和3输出。注意:时间的精确度并不影响数字的
取整。
• $realtime系统函数
$realtime和$time的作用是一样的,只是$realtime返回的时间数字是一个实型数,该数字也是以时
间尺度为基准的。下面举例说明:
[例2]: `timescale10ns/1ns
module test;
reg set;
parameter p=1.55;
initial
begin
$monitor($realtime,,"set=",set);
#p set=0;
#p set=1;
end
endmodule
输出结果为:
0 set=x
1.6 set=0
3.2 set=1
从上面的例子可以看出,$realtime将仿真时刻经过尺度变换以后即输出,不需进行取整操作。所以
$realtime返回的时刻是实型数。
zhangyukun 发表于 2021-4-1 09:21:41 | 显示全部楼层
Verilog HDL 的时间度量系统函数$time
zxopenljx 发表于 2022-10-9 20:23:20 | 显示全部楼层
Verilog HDL 的时间度量系统函数$time
您需要登录后才可以回帖 登录 | 我要注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

QQ|小黑屋|手机版|Archiver|fpga论坛|fpga设计论坛 ( 京ICP备20003123号-1 )

GMT+8, 2024-11-28 16:32 , Processed in 0.056322 second(s), 19 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表