利用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
问题:
寄存器在上电后默认值是什么?在综合工具中如何设置?