我想捕捉事件之间的时间。然后我必须将此值用于另一个事件。 我的问题是我的程序中time_2的单位是多少。我如何在if循环中使用此值。我认为这个值不是实际值。
`timescale 1ns / 1ps
module time_control( input clk );
reg [7:0] memory [0:15] ;
integer k=0;
realtime time_1 =0;
realtime time_2 =0;
always @ ( posedge clk)
begin
time_2=time_1 ;
time_1 = $realtime ;
if( time_2 < 500) //Comparison Not working
begin
memory[k] <=k;
k <=k+1 ;
end
end
endmodule
在启动中的编程部分不起作用。我的问题是使用tine_2的值,我可以填补内存。只要time_2的值大于500 ns,它就不应该将值放在内存中。我不想存储时间的价值。
这仅用于模拟。
答案 0 :(得分:1)
如果您的数组要存储实时,或者基于实时的时间差异,则需要使用适当的类型。
reg [7:0] memory [0:15] ;
应该是
realtime memory [0:15];
为了比较时间,请使用时间:
if( time_2 < 500) begin
成为:
if( time_2 < 500ns ) begin
注意:第一个版本对我来说很好,因为默认的时间单位通常是'ns',或者使用`timescale
指定为'ns'。
你的例子将成为:
module time_control( input clk );
realtime memory [0:15] ;
integer k=0;
realtime time_1 =0;
realtime time_2 =0;
always @( posedge clk) begin
time_2 = time_1 ;
time_1 = $realtime ;
if( time_2 < 500ns ) begin
memory[k] <=k;
k <=k+1 ;
end
end
endmodule