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
53
wire
rst_early_master_w
;
54
reg
rst_early_master
;
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
66
rst_early_master
<=
rst_early_master_w
|
mrst
;
67
end
68
level_cross_clocks
#(
69
.
WIDTH
(
1
),
70
.
REGISTER
(
REGISTER
)
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
80
level_cross_clocks
#(
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
sync_resets.11043rst_early_master_w
11043rst_early_master_wwire
Definition:
sync_resets.v:53
level_cross_clocks.10629d_out
[WIDTH-1:0] 10629d_out
Definition:
level_cross_clocks.v:49
sync_resets.11040rst
[WIDTH-1:0] 11040rst
Definition:
sync_resets.v:49
sync_resets.11044rst_early_master
11044rst_early_masterreg
Definition:
sync_resets.v:54
level_cross_clocks.10628d_in
[WIDTH-1:0] 10628d_in
Definition:
level_cross_clocks.v:48
sync_resets.level_cross_clocks
level_cross_clocks_rst_i level_cross_clocks[generate]
Definition:
sync_resets.v:80
level_cross_clocks.10627clk
10627clk
Definition:
level_cross_clocks.v:47
sync_resets
Definition:
sync_resets.v:42
sync_resets.11042rst_w
11042rst_wwire[WIDTH-1:0]
Definition:
sync_resets.v:52
sync_resets.11035WIDTH
11035WIDTH1
Definition:
sync_resets.v:43
sync_resets.11036REGISTER
11036REGISTER4
Definition:
sync_resets.v:44
sync_resets.11045mrst
11045mrstreg
Definition:
sync_resets.v:56
sync_resets.11039clk
[WIDTH-1:0] 11039clk
Definition:
sync_resets.v:48
sync_resets.11038locked
[WIDTH-1:0] 11038locked
Definition:
sync_resets.v:47
sync_resets.11037arst
11037arst
Definition:
sync_resets.v:46
sync_resets.11041en_locked
11041en_lockedreg
Definition:
sync_resets.v:51
util_modules
sync_resets.v
Generated by
1.8.12