How to implement the design of odd frequency dividers in Verilog?

There are two common, FPGA -friendly ways to “divide by an odd number” in Verilog: Stay in one clock domain and generate a clock-enable (CE) pulse every N cycles. (Best practice.) If you truly need a new clock with ~50% duty, use both clock edges (posedge + negedge) to alternate half-period lengths. (Use sparingly; route through a clock buffer.) 1) Preferred: odd divider as a clock-enable pulse This avoids creating a new clock domain and all the CDC/timing pain. Your logic runs on the original clock, gated by a CE that goes high every N cycles. // Odd (or even) divider -> 1-cycle clock-enable pulse each N cycles module ce_divider #( parameter integer N = 5 // N >= 2 (odd or even) ) ( input wire clk, input wire rst_n, // active-low synchronous reset output reg ce // 1-cycle pulse every N cycles ); localparam W = $clog2(N); reg [W-1:0] cnt; always @(posedge clk) begin if (!rst_n) begin ...