-1

Verilog で順序回路を実装しています。期間 10 の時計が必要です。それを実装するために、私は次のようなことをしました

 initial begin
       forever begin
            clk=0;
            #5
            clk=1;
            #5
            clk=0;
       end
   end 

しかし、コードを実行すると、出力が表示されずに実行され続けます。上記の実装にエラーはありますか?

4

2 に答える 2

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を参照してください。

于 2015-09-30T05:27:19.013 に答える