mirror of
https://github.com/Gehstock/Mist_FPGA.git
synced 2026-01-25 03:25:52 +00:00
60 lines
982 B
Verilog
60 lines
982 B
Verilog
module RESET_DE(
|
|
CLK, // 50MHz
|
|
SYS_RESET_N,
|
|
RESET_N, // 50MHz/32/65536
|
|
RESET_AHEAD_N // 提前恢复,可以接 FLASH_RESET_N
|
|
);
|
|
|
|
|
|
input CLK;
|
|
input SYS_RESET_N;
|
|
output RESET_N;
|
|
output RESET_AHEAD_N;
|
|
|
|
|
|
wire RESET_N;
|
|
wire RESET_AHEAD_N;
|
|
|
|
reg [5:0] CLK_CNT;
|
|
reg [16:0] RESET_COUNT;
|
|
|
|
wire RESET_COUNT_CLK;
|
|
wire RESET_DE_N;
|
|
wire RESET_AHEAD_DE_N;
|
|
|
|
assign RESET_COUNT_CLK = CLK_CNT[5];
|
|
|
|
assign RESET_DE_N = RESET_COUNT[16]!=1'b0;
|
|
assign RESET_N = SYS_RESET_N && RESET_DE_N;
|
|
|
|
assign RESET_AHEAD_DE_N = RESET_COUNT[16:15]!=2'b00;
|
|
assign RESET_AHEAD_N = SYS_RESET_N && RESET_AHEAD_DE_N;
|
|
|
|
`ifdef SIMULATE
|
|
initial
|
|
begin
|
|
CLK_CNT = 6'b0;
|
|
end
|
|
`endif
|
|
|
|
// 50MHz/32 = 1.5625MHz
|
|
always @ (posedge CLK)
|
|
CLK_CNT <= CLK_CNT+1;
|
|
|
|
// 50MHz/32/65536 = 23.84HZ
|
|
always @ (posedge RESET_COUNT_CLK or negedge SYS_RESET_N)
|
|
begin
|
|
if(~SYS_RESET_N)
|
|
begin
|
|
RESET_COUNT <= 17'h00000;
|
|
end
|
|
else
|
|
begin
|
|
if(RESET_COUNT!=17'h10000)
|
|
RESET_COUNT <= RESET_COUNT+1;
|
|
|
|
end
|
|
end
|
|
|
|
endmodule
|