27 lines
599 B
Verilog
27 lines
599 B
Verilog
module rst_sync #(
|
||
parameter SYNC_STAGE = 2 // 同步级数(推荐2级)
|
||
) (
|
||
input wire clk,
|
||
input wire rst_n_in,
|
||
output reg rst_n_out
|
||
);
|
||
|
||
reg [SYNC_STAGE-1:0] rst_sync_reg;
|
||
|
||
always @(posedge clk or negedge rst_n_in) begin
|
||
if (!rst_n_in) begin
|
||
rst_sync_reg <= {SYNC_STAGE{1'b0}};
|
||
end else begin
|
||
rst_sync_reg <= {rst_sync_reg[SYNC_STAGE-2:0], 1'b1};
|
||
end
|
||
end
|
||
|
||
always @(posedge clk or negedge rst_n_in) begin
|
||
if (!rst_n_in) begin
|
||
rst_n_out <= 1'b0;
|
||
end else begin
|
||
rst_n_out <= rst_sync_reg[SYNC_STAGE-1];
|
||
end
|
||
end
|
||
|
||
endmodule |