[an error occurred while processing this directive]
|
Согласен, не туда посмотрел. Все работает. Но если не считать время на формирование импульса по переднему фронту, импульс на выходе должен формироваться на такт раньше. Да и счет счетчика при изменении prog на возрастание тоже не очень. (Ну и ресурсов затрачено больше).VHDL не знаю, подставьте верилог.
module my_tb;
reg clk;
reg set;
reg [15:0] prog;
wire out_clk;
always begin
#20 clk = ~clk;
end
initial begin
clk = 1'b0;
prog = 16'd1;
set = 1'b0;
repeat (10) @(posedge clk);
set = 1'b1;
repeat (4) @(posedge clk);
set = 1'b0;
repeat (prog+10) @(posedge clk);
prog = 16'd20;
repeat (22) @(posedge clk);
prog = 16'd2;
repeat (10) @(posedge clk);
set = 1'b1;
repeat (1) @(posedge clk);
set = 1'b0;
repeat (prog+10) @(posedge clk);
prog = 16'd3;
repeat (10) @(posedge clk);
set = 1'b1;
repeat (1) @(posedge clk);
set = 1'b0;
repeat (prog+10) @(posedge clk);
#5 $display ("End");
$stop;
end
del_clk del_clk_inst(
.clk (clk),
.set (set),
.prog (prog),
.out_clk (out_clk)
);
endmodule