Verilog 以下代码的输出是意外的:
我试着显示时间。但它返回的值为0。怎么了 代码: 输出: 寄存器中的0值=010Verilog 以下代码的输出是意外的:,verilog,Verilog,我试着显示时间。但它返回的值为0。怎么了 代码: 输出: 寄存器中的0值=010 没什么不对的。当$monitor语句输出其行时,模拟时间为0 我想您知道,$monitor在任何输入发生变化时都会输出一行。但是,它不会在$time内这样做,因为这样做没有什么意义。(何时输出一行?每ns?每ps?每fs?) 因此,您的代码将_reg中的设置为3'd2,然后$monitor显示该值。然后模拟结束。没有别的事情发生。没有什么不对的。当$monitor语句输出其行时,模拟时间为0 我想您知道,$moni
没什么不对的。当
$monitor
语句输出其行时,模拟时间为0
我想您知道,$monitor
在任何输入发生变化时都会输出一行。但是,它不会在$time内这样做,因为这样做没有什么意义。(何时输出一行?每ns?每ps?每fs?)
因此,您的代码将_reg中的
设置为3'd2
,然后$monitor
显示该值。然后模拟结束。没有别的事情发生。没有什么不对的。当$monitor
语句输出其行时,模拟时间为0
我想您知道,$monitor
在任何输入发生变化时都会输出一行。但是,它不会在$time内这样做,因为这样做没有什么意义。(何时输出一行?每ns?每ps?每fs?)
因此,您的代码将_reg
中的设置为3'd2
,然后$monitor
显示该值。然后模拟结束。没有其他情况发生。尝试此操作,下面的代码将每隔10ns以_reg contents打印10次,模拟时间将显示为10,20,…等
`timecale 1ns/1ps
module hello_world;
integer in_reg;
initial
begin
in_reg = 3'd2;
repeat(10)
begin
#10;
$display($time, " In register value = %b\n",in_reg);
end
end
endmodule
尝试此操作,下面的代码将每隔10ns以_reg内容打印10次,模拟时间将显示为10,20…等
`timecale 1ns/1ps
module hello_world;
integer in_reg;
initial
begin
in_reg = 3'd2;
repeat(10)
begin
#10;
$display($time, " In register value = %b\n",in_reg);
end
end
endmodule
当我将$time替换为$display时,输出保持为0。我刚开始使用verilog,所以尝试了很多东西。仅供参考,这是我提到的书中的问题陈述!使用$display
,输出将为0。在这种情况下,$display
语句在时间0执行,因此0是$time
系统函数输出的值。模拟不会占用任何时间(因为代码中没有延迟),因此模拟将在时间0.5完成。知道了!非常感谢。当我用$display替换$time时,输出仍然为0。我刚开始使用verilog,所以尝试了很多东西。仅供参考,这是我提到的书中的问题陈述!使用$display
,输出将为0。在这种情况下,$display
语句在时间0执行,因此0是$time
系统函数输出的值。模拟不会占用任何时间(因为代码中没有延迟),因此模拟将在时间0.5完成。知道了!谢谢。