`include
"definitions.sv"
module
genafic
(
input
logic
i_clk,
input
logic
i_rst_n,
output
t_clk_rst
t_gene
);
logic
l_locked;
clk_wiz_0
inst_clk_wiz_0
(
.
clk_out1
(t_gene.
l_clk_50M
),
.
clk_out2
(t_gene.
l_clk_100M
),
.
reset
(
~
i_rst_n),
.
locked
(l_locked),
.
clk_in1
(i_clk)
);
logic
l_rst_50M
=
1'b1
;
logic
[
9
:
0
] l_cnt_50M
=
'0
;
always_ff
@
(
posedge
t_gene.l_clk_50M)
begin
if
(
!
i_rst_n)
l_cnt_50M
<=
'0
;
else
if
(l_cnt_50M
==
'd200
)
l_cnt_50M
<=
l_cnt_50M;
else
l_cnt_50M
<=
l_cnt_50M
+
'd1
;
end
always_ff
@
(
posedge
t_gene.l_clk_50M)
begin
if
(
!
l_locked)
l_rst_50M
<=
1'b1
;
else
if
(l_cnt_50M
==
'd200
)
l_rst_50M
<=
1'b0
;
end
logic
l_rst_100M
=
1'b1
;
logic
[
9
:
0
] l_cnt_100M
=
'0
;
always_ff
@
(
posedge
t_gene.l_clk_100M)
begin
if
(
!
i_rst_n)
l_cnt_100M
<=
'0
;
else
if
(l_cnt_100M
==
'd200
)
l_cnt_100M
<=
l_cnt_100M;
else
l_cnt_100M
<=
l_cnt_100M
+
'd1
;
end
always_ff
@
(
posedge
t_gene.l_clk_100M)
begin
if
(
!
l_locked)
l_rst_100M
<=
1'b1
;
else
if
(l_cnt_100M
==
'd200
)
l_rst_100M
<=
1'b0
;
end
assign
t_gene.l_rst_50M
=
l_rst_50M;
assign
t_gene.l_rst_100M
=
l_rst_100M;
endmodule
:
genafic