我正在尝试生成一个时钟,它是系统时钟的(3/16)。因此,我决定从系统 clk 生成 3x 时钟,然后从中生成 (1/16)x 时钟。现在,我只能生成 3x 时钟。我通过计算系统时钟的时间段然后每该时间段的 1/6 切换一次 3x 时钟来做到这一点。但是我的模拟永远停滞不前。我没有在forever
任何地方使用过该块,我已经检查过了。因此没有时间结构。以下是我正在处理的代码。
module eec_clk_gen (
input logic arst,
input logic sys_clk,
output logic eec_clk
);
real t0;
real t1;
real sys_clk_tp;
logic eec_clk_x3;
//Calculating clock period of sys_clk
initial
begin
@(posedge sys_clk) t0 = $realtime;
@(posedge sys_clk) t1 = $realtime;
sys_clk_tp = t1 - t0;
end
//Generating clock at 3 times sys_clk freq
initial
begin
@(posedge sys_clk) eec_clk_x3 = 1'b1;
end
always
begin
#(sys_clk_tp/6) eec_clk_x3 <= ~eec_clk_x3;
end
endmodule: eec_clk_gen
我不关心arst
我的代码中缺少的信号。eec_clk
一旦功能正常,它将被实施。请帮忙?