【发布时间】:2015-01-21 05:42:39
【问题描述】:
我已使用以下代码生成时钟(无论我通过任务传递的哪个值都会创建该频率),但该代码仅在我使用 CLKSEL_global = clksel_local(即阻塞分配)时才有效,但这会产生增量延迟。
如何在不引入增量延迟的情况下生成可变时钟?是他们使用任务的另一种方式。我正在使用任务,以便我可以传递真实值
`timescale 1ns/1ps
module tb();
real CLKSEL_global;
reg CLK7;
new dut(clk,clk_out);
task task_CLOCK;
input real clksel_local;
begin
CLKSEL_global = clksel_local;
end
endtask
initial begin
CLK7 = 0;
forever begin
#(500.0/CLKSEL_global) CLK7 = 1;
#(500.0/CLKSEL_global) CLK7 = 0;
end
end
initial begin
task_CLOCK(340.0);
end
initial begin
#100 $finish ;
end
endmodule
【问题讨论】:
-
是的,它不是部分,可以删除
-
只需要同时删除行`new dut(clk,clk_out);` 那么问题就是
CLK7。