`timescale 1ns/1ns

module clk_divider
    #(parameter dividor = 5)
( 	input clk_in,
	input rst_n,
	output clk_out
);

reg	[$clog2(dividor)-1:0]	cnt;
reg	clk_n,clk_p;

always@(posedge clk_in or negedge rst_n)
	if(!rst_n)
		cnt	<=	0;
	else	if(cnt ==dividor - 1)
		cnt	<=	0;
	else	
		cnt	<=	cnt + 1;


always@(posedge clk_in or negedge rst_n)
	if(!rst_n)
		clk_p	<=	1'b0;
	else	if(cnt==dividor >> 1)
		clk_p	<=	1'b1;
	else	if(cnt==dividor - 1)
		clk_p	<=	1'b0;

always@(negedge clk_in or negedge rst_n)
	if(!rst_n)
		clk_n	<=	1'b0;
	else	if(cnt==dividor >> 1)
		clk_n	<=	1'b1;
	else	if(cnt==dividor - 1)
		clk_n	<=	1'b0;

assign	clk_out	= (clk_p | clk_n);


endmodule