27 lines
599 B
Coq
27 lines
599 B
Coq
![]() |
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
|