在verilog中使用永远的时钟实现
clock implementation using forever in verilog
我正在用 verilog 实现时序电路。我想要一个时间段为 10 的时钟。为了实现这一点,我做了类似
的事情
initial begin
forever begin
clk=0;
#5
clk=1;
#5
clk=0;
end
end
但是当我 运行 代码时,它一直 运行ning 而没有显示任何输出。以上实现有没有错误?
实现它的一种方法如下(假设您在测试台中使用它):
parameter clock_period=10;
always
#(clock_period/2) clock=~clock;
initial begin
clock=0;
#1000 $finish; // You can put the delay as per your requirement.
end
您的代码保持 运行 因为没有 $finish。所以这是一个免费的 运行 振荡器。
以下是时钟生成的一些方法。或多或少,都是一样的。
方法一:
parameter int clk_tgl_period = 5;
parameter timeout = 500;
module clkgen1;
reg clk;
initial begin
clk <= '0;
forever #(clk_tgl_period) clk = ~clk;
end
initial begin
#(timeout) $finish
end
endmodule
方法 - 2
parameter int clk_tgl_period = 5;
parameter timeout = 500;
module clkgen2;
reg clk;
initial begin
clk = 0;
#(timeout) $finish;
end
always #(clk_tgl_period) clk = ~clk;
endmodule
方法 - 3
parameter int clk_tgl_period = 5;
parameter timeout = 500;
module clkgen3;
reg clk;
initial begin
clk = 0;
#(timeout) $finish;
end
always #(clk_tgl_period) clk++;
endmodule
有关详细信息,您可能想查看 第 4 部分 CummingsSNUG2006Boston_SystemVerilog_Events Paper。
我正在用 verilog 实现时序电路。我想要一个时间段为 10 的时钟。为了实现这一点,我做了类似
的事情 initial begin
forever begin
clk=0;
#5
clk=1;
#5
clk=0;
end
end
但是当我 运行 代码时,它一直 运行ning 而没有显示任何输出。以上实现有没有错误?
实现它的一种方法如下(假设您在测试台中使用它):
parameter clock_period=10;
always
#(clock_period/2) clock=~clock;
initial begin
clock=0;
#1000 $finish; // You can put the delay as per your requirement.
end
您的代码保持 运行 因为没有 $finish。所以这是一个免费的 运行 振荡器。
以下是时钟生成的一些方法。或多或少,都是一样的。
方法一:
parameter int clk_tgl_period = 5;
parameter timeout = 500;
module clkgen1;
reg clk;
initial begin
clk <= '0;
forever #(clk_tgl_period) clk = ~clk;
end
initial begin
#(timeout) $finish
end
endmodule
方法 - 2
parameter int clk_tgl_period = 5;
parameter timeout = 500;
module clkgen2;
reg clk;
initial begin
clk = 0;
#(timeout) $finish;
end
always #(clk_tgl_period) clk = ~clk;
endmodule
方法 - 3
parameter int clk_tgl_period = 5;
parameter timeout = 500;
module clkgen3;
reg clk;
initial begin
clk = 0;
#(timeout) $finish;
end
always #(clk_tgl_period) clk++;
endmodule
有关详细信息,您可能想查看 第 4 部分 CummingsSNUG2006Boston_SystemVerilog_Events Paper。