【问题标题】:How to change the clock output speed with a divider?如何用分频器改变时钟输出速度?
【发布时间】:2021-11-02 02:42:52
【问题描述】:

我正在尝试设置一个时钟和一个分频器来为我的代码的另一部分输出一个 2 赫兹的时钟信号。我有两个模块,一个用于时钟,一个用于分频器,我将其设置为时钟的输出是分频器的输入,但是当我取分频器的输出时,它是一样的速度就像有时钟一样。有什么我遗漏的吗?

这是时钟模块的代码:

module clock(clk);

output reg clk; 
 
 always 
     #5 
      clk = ~clk;
 initial 
     clk = 0;
      
endmodule

这里是分隔模块的代码:

module clock_div(clk_in, reset, clk_out);
    input clk_in;
    input reset;
    output reg clk_out;

    parameter divider = 50000000;
    parameter n = 24;
    reg [n-1:0] count;
    
    initial begin
        clk_out <= 1'b0;
    end
    
    always @(posedge clk_in or posedge reset) begin
        if(reset) begin
            count <= 0;
            clk_out <= 1'b0;
        end
        else begin
            if(count == divider) begin
                count <= 0;
                clk_out <= ~clk_out;
            end
            else begin
                count <= count + 1'b1;
            end
        end
    end
    
endmodule

提前感谢您的帮助!

【问题讨论】:

  • 你需要在时钟模块中实例化clock_div。将时钟模块的 clk 输出连接到 clk_div 实例的 clk_in 输入。在时钟模块中创建一条线 clk_out 并将其转换转储到波​​形中。

标签: verilog


【解决方案1】:

您的代码仅代表环境的一部分,不能单独运行。因此,无法理解您是如何模拟它并监控时钟的。

您需要将这些部分连接在一起,以便将时钟馈入分频器模块并监控输出。所以,这里有一个测试台模块的例子。您可以根据此示例创建自己的。

module top;
  wire clk, div_clk;
  reg reset;
  
  // instantiate your module, this part is required for simulation or fpga
  // this instantiates the clock module and generated base clock
  clock clock(.clk(clk));
  // this instantiates the divider module, feeding in the clock from the previous module
  clock_div clock_div(.clk_in(clk), .reset(reset), .clk_out(div_clk)); 
  
  // here is an example of a test bench code for simulation only
  initial begin
    // just prints out values of both clocks; you can generate waveforms instead.
    $monitor(clk, div_clk);
    
    // handle initial reset
    reset = 1;
    #10 reset = 0;

    // let it simulate for a certain amount of time and finish
    #2_0000_0000 $finish; 
  end
endmodule
  

【讨论】:

  • 感谢您的回复!这些模块实际上是使用原理图文件连接的。我这样做是因为这个时钟和分频器是一个较大项目的一部分,该项目具有在原理图文件中完成的其他组件。这样做是不是把我搞砸了?
  • 您没有显示如何连接实例。什么是“原理图文件”?
猜你喜欢
  • 2017-07-04
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 2019-08-29
  • 1970-01-01
  • 1970-01-01
  • 2019-09-15
  • 1970-01-01
相关资源
最近更新 更多