如何使用 Verilog 从 100MHz 时钟生成 400MHz 和 500MHz 时钟?
How to generate 400MHz & 500MHz clocks from 100MHz clock using Verilog?
对于 400 MHz:
realtime delay =1.25;
always begin
#delay clk=0;
#delay clk=1;
这不起作用。
这是生成 3 个时钟的一种方法,其中 100MHz 时钟与其他两个时钟同步:
`timescale 1ns/10ps
module tb;
reg clk1, clk2, clk3;
initial begin : clk_100MHz
clk1 = 0;
forever #5 clk1 <= ~clk1;
end
initial begin : clk_500MHz
clk2 = 0;
forever #1 clk2 <= ~clk2;
end
initial begin : clk_400MHz
clk3 = 0;
forever #1.25 clk3 <= ~clk3;
end
endmodule
您没有显示完整的代码。我能想到您的代码不起作用的两个原因:
- 您将
clk
声明为 4 态信号,如 reg
,但未将其初始化为 0 或 1,并且它在您的模拟中保持 x
。
- 您没有正确设置时间刻度以生成所需的频率。
对于 400 MHz:
realtime delay =1.25;
always begin
#delay clk=0;
#delay clk=1;
这不起作用。
这是生成 3 个时钟的一种方法,其中 100MHz 时钟与其他两个时钟同步:
`timescale 1ns/10ps
module tb;
reg clk1, clk2, clk3;
initial begin : clk_100MHz
clk1 = 0;
forever #5 clk1 <= ~clk1;
end
initial begin : clk_500MHz
clk2 = 0;
forever #1 clk2 <= ~clk2;
end
initial begin : clk_400MHz
clk3 = 0;
forever #1.25 clk3 <= ~clk3;
end
endmodule
您没有显示完整的代码。我能想到您的代码不起作用的两个原因:
- 您将
clk
声明为 4 态信号,如reg
,但未将其初始化为 0 或 1,并且它在您的模拟中保持x
。 - 您没有正确设置时间刻度以生成所需的频率。