1 `timescale 1 ns / 1 ns
2 module system_ctrl
3 (
4 //globol clock
5 input clk,
6 input rst_n,
7
8 //synced signal
9 output clk_ref, //clock output
10 output sys_rst_n //system reset
11 );
12
13 //----------------------------------------------
14 //rst_n sync, only controlled by the main clk
15 reg rst_nr1, rst_nr2;
16 always @(posedge clk)
17 begin
18 if(!rst_n)
19 begin
20 rst_nr1 <= 1'b0;
21 rst_nr2 <= 1'b0;
22 end
23 else
24 begin
25 rst_nr1 <= 1'b1;
26 rst_nr2 <= rst_nr1;
27 end
28 end
29
30
31 //----------------------------------
32 //component instantiation for system_delay
33 wire delay_done; //system init delay has done
34 system_init_delay
35 #(
36 .SYS_DELAY_TOP (24'd2500000)
37 // .SYS_DELAY_TOP (24'd256) //Just for test
38 )
39 u_system_init_delay
40 (
41 //global clock
42 .clk (clk),
43 .rst_n (1'b1), //It don't depend on rst_n when power up
44 //system interface
45 .delay_done (delay_done)
46 );
47
48 assign clk_ref = clk;
49 assign sys_rst_n = rst_nr2 & delay_done; //active High
50
51 endmodule