# fsic_coreclk_phase_cnt.v
- there are 4 ioclks in a core clock.
- output ioclk count from 0 to 3

## Code
```
module fsic_coreclk_phase_cnt#(
parameter pCLK_RATIO =4
) (
input axis_rst_n,
input ioclk,
input coreclk,
output [$clog2(pCLK_RATIO)-1:0] phase_cnt_out
);
assign phase_cnt_out = phase_cnt;
reg core_clk_toggle;
always @(posedge coreclk or negedge axis_rst_n) begin
if ( !axis_rst_n ) begin
core_clk_toggle <= 0;
end
else begin
core_clk_toggle <= ~core_clk_toggle;
end
end
reg [pCLK_RATIO-1:0] clk_seq;
reg [$clog2(pCLK_RATIO)-1:0] phase_cnt;
always @(posedge ioclk or negedge axis_rst_n) begin
if ( !axis_rst_n ) begin
clk_seq <= 0;
end
else begin
clk_seq[pCLK_RATIO-1:1] <= clk_seq[pCLK_RATIO-2:0];
clk_seq[0] <= core_clk_toggle;
end
end
always @(posedge ioclk or negedge axis_rst_n) begin
if ( !axis_rst_n) begin
phase_cnt <= 0;
end
else begin
if ( (clk_seq == 4'h8) || (clk_seq == 4'h7) )
phase_cnt <= 0;
else
phase_cnt <= phase_cnt + 1;
end
end
endmodule
```