Estoy tratando de implementar un contador de un dígito de 0 a 9 utilizando una placa FPGA. El dígito se incrementa cuando se establece la señal "pulso". La señal de "pulso" se establece cada número fijo N de ciclos de reloj. La frecuencia de reloj es de 5 MHz. Sin embargo, el contador salta de manera inconsistente en función del período de "pulso". Por ejemplo, cuando se establece en 1000000, el el contador funciona bien y el dígito se incrementa cada 1/5 de segundo. Cuando el período es diferente, no se comporta como se espera. Incluso si el período es más largo, cada 5000000 ciclos de reloj, salta de 0 a 1 a 0 ... ¡el incremento es de 10!
Aquí está el código VHDL que incrementa el contador según el pulso.
process(clk, reset)
begin
if (reset = '1') then
digit_reg <= (others => '0');
elsif rising_edge(clk) then
digit_reg <= next_digit;
end if;
end process;
process(pulse, digit_reg)
begin
if (pulse = '1') then
if (digit_reg >= 9) then
next_digit <= (others => '0');
else
next_digit <= digit_reg + 1;
end if;
end if;
end process;
¿Alguna idea de cuál podría ser el problema?
Gracias.