在verilog中永远使用时钟实现

时间:2015-09-25 08:02:00

标签: verilog hardware-programming

我正在verilog中实现顺序电路。我想要一个时间段为10的时钟。为了实现我做了类似的事情

$('#datetimepicker6').datetimepicker();

但是当我运行代码时,它会继续运行而不显示任何输出。上述实施中是否有任何错误?

2 个答案:

答案 0 :(得分:2)

实现它的一种方法如下(假设您在测试平台中使用它):

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

答案 1 :(得分:2)

您的代码一直在运行,因为没有$ finish。所以这是一个自由运行的振荡器。

以下是一些时钟生成方法。或多或少,它们都是一样的。

方法1:

        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

有关详细信息,您可能需要查看CummingsSNUG2006Boston_SystemVerilog_Events Paper第4节