blob: 6310274455e5e57b02d4fdad2ee9ebdbfe0830cf [file] [log] [blame]
Tim Edwardscd64af52020-08-07 11:11:58 -04001module striVe_clkrst(
2 input ext_clk_sel,
3 input ext_clk,
4 input pll_clk,
5 input reset,
6 input ext_reset,
7 output clk,
8 output resetn
9);
10
11 // Clock assignment (to do: make this glitch-free)
12 assign clk = (ext_clk_sel == 1'b1) ? ext_clk : pll_clk;
13
14 // Reset assignment. "reset" comes from POR, while "ext_reset"
15 // comes from standalone SPI (and is normally zero unless
16 // activated from the SPI).
17
18 // Staged-delay reset
19 reg [2:0] reset_delay;
20
21 always @(posedge clk or posedge reset) begin
22 if (reset == 1'b1) begin
23 reset_delay <= 3'b111;
24 end else begin
25 reset_delay <= {1'b0, reset_delay[2:1]};
26 end
27 end
28
29 assign resetn = ~(reset_delay[0] | ext_reset);
30
31endmodule