`timescale 1ns/1ns

module div_M_N(
 input  wire clk_in,
 input  wire rst,
 output reg clk_out
);
parameter M_N = 8'd87; 
parameter c89 = 8'd24; // 8/9时钟切换点
parameter div_e = 5'd8; //偶数周期
parameter div_o = 5'd9; //奇数周期
//*************code***********//
reg[7:0]cnt;
reg[7:0]cnt_e;
reg[7:0]cnt_o;
always@(posedge clk_in or negedge rst)
begin if(!rst)
 cnt<=0;
else if(cnt==M_N-1)
   cnt<=0;
   else cnt<=cnt+1;
end
always@(posedge clk_in or negedge rst)
begin if(!rst)
   begin 
         cnt_e<=0;
         cnt_o<=0;
   end
else if(cnt<c89)
 if (cnt_e==div_e-1)
     begin  cnt_e<=0; cnt_o<=0;  end 
  else begin  cnt_e<=cnt_e+1; cnt_o<=0; end

else  if(cnt_o==div_o-1)
   begin cnt_o<=0;
cnt_e<=0; end 
  else begin 
    cnt_o<=cnt_o+1; cnt_e<=0; end
end

always@(posedge clk_in or negedge rst)
begin if(!rst)
    clk_out<=0;
    else if(cnt<=c89)
     begin if((cnt_e==0)|(cnt_e==4))
     clk_out<=~clk_out; end
     else if((cnt_o==0)|((cnt_o==4)))
    clk_out<=~clk_out;
     end

//*************code***********//
endmodule