复位电路设计——利用PLL锁定信号(lock)产生复位信号

利用PLL锁定信号(lock)产生复位信号

在FPGA刚上电的时候,系统所需的时钟一般都要经过PLL倍频,在时钟锁定(即稳定输出)以前,整个系统应处于复位状态。因此,我们可以利用PLL的锁定信号来产生复位信号,具体代码实现和testbench如下。

module sys_rst(
    input  sys_clk,
    input  clk_locked,

    output rst
);

parameter CNT_LEN = 16'hffff;

reg  [15:0] cnt;
reg         rst_out;

always @(posedge sys_clk)
    if(cnt == CNT_LEN)
        rst_out <= 1'b0;
    else
        rst_out <= 1'b1;

always @(posedge sys_clk)
    if(cnt == CNT_LEN)
        cnt <= cnt;
    else if(clk_locked)
        cnt <= cnt + 1'b1;
    else
        cnt <= 0;

assign rst = rst_out;

endmodule



`timescale 1ns/1ns

module tb_sys_rst();
   
reg  clk;
reg  clk_locked;
wire rst;

initial begin
    clk = 0;
    clk_locked = 1'b0;
    #500;
    clk_locked = 1'b1;

end

always #25 clk = ~clk;

sys_rst u_sys_rst(
  .sys_clk    (clk ),
  .clk_locked (clk_locked),
  .rst        (rst )
);

endmodule

问题:

寄存器在上电后默认值是什么?在综合工具中如何设置?

原文地址:https://www.cnblogs.com/dpc525/p/4562433.html