x393  1.0
FPGAcodeforElphelNC393camera
sync_resets.v
Go to the documentation of this file.
1 
40 `timescale 1ns/1ps
41 
42 module sync_resets#(
43  parameter WIDTH = 1,
44  parameter REGISTER = 4 // number of registers used at crossing clocks >1
45  )(
46  input arst, // async reset
47  input [WIDTH-1:0] locked, // clk[i] MMCM/PLL is locked
48  input [WIDTH-1:0] clk, // clk[0] - master clock generation should not depend on resets)
49  output [WIDTH-1:0] rst // resets matching input clocks
50 );
51  reg en_locked=0; // mostly for simulation, locked[0] is 1'bx until the first clock[0] pulse
52  wire [WIDTH-1:0] rst_w; // resets matching input clocks
55  assign rst = rst_w;
56  reg mrst = 1;
57  always @ (posedge arst or posedge clk[0]) begin
58 
59  if (arst) en_locked <= 0;
60  else en_locked <= 1;
61 
62  if (arst) mrst <= 1;
63  else mrst <= ~(locked[0] && en_locked);
64  end
65  always @(posedge clk[0]) begin
67  end
69  .WIDTH (1),
71  ) level_cross_clocks_mrst_i (
72  .clk (clk[0]), // input
73  .d_in (mrst), // input[0:0]
74  .d_out (rst_early_master_w) // output[0:0]
75  );
76 
77  generate
78  genvar i;
79  for (i = 1; i < WIDTH; i = i + 1) begin: rst_block
81  .WIDTH (1),
82  .REGISTER ((i==5) ? 1: REGISTER), // disable for aclk
83 // .REGISTER (REGISTER), // disable for aclk - aclk is now (0)
84  .FAST1 (1) // Switch to next cycle, to 0 - regeisterd
85  ) level_cross_clocks_rst_i (
86  .clk (clk[i]), // input
87  .d_in (mrst || rst_early_master || ~locked[i] ), // input[0:0]
88  .d_out (rst_w[i]) // output[0:0]
89  );
90  end
91  endgenerate
92 
93  assign rst_w[0]= rst_early_master;
94 
95 endmodule
96 
11043rst_early_master_wwire
Definition: sync_resets.v:53
[WIDTH-1:0] 10629d_out
[WIDTH-1:0] 11040rst
Definition: sync_resets.v:49
11044rst_early_masterreg
Definition: sync_resets.v:54
[WIDTH-1:0] 10628d_in
level_cross_clocks_rst_i level_cross_clocks[generate]
Definition: sync_resets.v:80
11042rst_wwire[WIDTH-1:0]
Definition: sync_resets.v:52
[WIDTH-1:0] 11039clk
Definition: sync_resets.v:48
[WIDTH-1:0] 11038locked
Definition: sync_resets.v:47
11041en_lockedreg
Definition: sync_resets.v:51