¿Cuál es la forma más óptima de hacer un contador de mods que no sea una potencia de 2? El incremento del contador es una variable
Mi enfoque en un contador mod-13 por ejemplo:
wire [3:0] counter_d ;
reg [3:0] counter_q ;
wire [4:0] counter_plus_increment ;
wire overflow ;
assign counter_plus_increment = counter_q + increment ; //small increments
assign overflow = counter_plus_increment[4] ;
assign counter_d = overflow ? 4'd3 : counter_plus_increment ;
always @ (posedge clk or negedge resetn) begin
if (!resetn)
counter_q <= 4'd3 ;
else
counter_q <= counter_d ;
end
¿Crees que esto es correcto? ¿Alguna sugerencia mejor y más eficiente?