25 lines
516 B
Systemverilog
25 lines
516 B
Systemverilog
`timescale 1ns/100ps
|
|
`default_nettype none
|
|
`include "assert.vh"
|
|
|
|
module pll_lock_reset #(parameter RESET_LEN = 8)
|
|
(input wire pll_clock,
|
|
input wire pll_lock,
|
|
output wire reset);
|
|
|
|
initial begin
|
|
`assert(RESET_LEN > 1);
|
|
end
|
|
|
|
logic [RESET_LEN:0] rst_sr;
|
|
|
|
initial rst_sr = '0;
|
|
|
|
always_ff @(posedge pll_clock, negedge pll_lock)
|
|
if (~pll_lock) rst_sr <= '0;
|
|
else rst_sr <= { 1'b1, rst_sr[RESET_LEN:1] };
|
|
|
|
assign reset = ~rst_sr[0];
|
|
|
|
endmodule // pll_lock_reset
|