module clk_divider (
clk_in,
reset_n,
clk_div8,
clk_div16,
clk_div32
);
input clk_in;
input reset_n;
output clk_div8;
output clk_div16;
output clk_div32;
//register output
//assign clk_div8 = counter[2];
//assign clk_div16 = counter[3];
//assign clk_div32 = counter[4];
// only for xilinx
BUFG BUFG_U0 ( .I(counter[2], .O(clk_div8));
BUFG BUFG_U1 ( .I(counter[3], .O(clk_div16));
BUFG BUFG_U2 ( .I(counter[4], .O(clk_div32));
reg [4:0] counter;
always @(posedge clk_in or negedge reset_n)
if (!reset_n)
counter <= 5'b00000;
else
counter <= counter + 1;
endmodule