`timescale 1ns/1ns module div_M_N( input wire clk_in, input wire rst, output wire 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 [$clog2(M_N) - 1 : 0] cnt; reg flag; always@(posedge clk_in or negedge rst) begin if(~rst) begin cnt <= '0; end else cnt <= cnt == M_N - 1 ? 0 : cnt + 1; end reg clk_out_r; always@(posedge clk_in or negedge rst) begin if(~rst) begin clk_out_r <= '0; end else clk_out_r <= cnt < c89 ? ((cnt % div_e) < (div_e >> 1)) : (((cnt - c89) % div_o) < (div_o >> 1)); end assign clk_out = clk_out_r; //*************code***********// endmodule