我需要 2 个以不同频率运行的时钟。我试过了:
forever
begin
#5ns clk1=~clk1;
#4ns clk2=~clk2;
end
使用此代码,clk2
将在clk1
完成后生成,但它们不会同时生成。
如何编写 Verilog 代码以确保两个时钟 (clk1
和clk2
) 将同时生成?
我需要 2 个以不同频率运行的时钟。我试过了:
forever
begin
#5ns clk1=~clk1;
#4ns clk2=~clk2;
end
使用此代码,clk2
将在clk1
完成后生成,但它们不会同时生成。
如何编写 Verilog 代码以确保两个时钟 (clk1
和clk2
) 将同时生成?
一种方法是使用 2 个单独的initial
块:
module tb;
bit clk1, clk2;
initial forever #5ns clk1 = ~clk1;
initial forever #4ns clk2 = ~clk2;
endmodule
另一种方法是使用带有/而不是/的单个initial
块。fork
join
begin
end
块中的语句begin / end
是按顺序计算的。您需要forever
为它们创建两个块以并行运行。
forever begin
#5ns clk1 = ~clk1;
end
forever begin
#4ns clk2 = ~clk2;
end
尝试使用非阻塞赋值
forever
begin
#5ns clk1 <= ~clk1;
#4ns clk2 <= ~clk2;
end