Incrementa el contador presionando un botón con salida a leds

-1

Tengo este código simple que no se comporta como debería y no puede entender por qué.

entity test is
port (D0        : in  std_logic;
        output      : out unsigned(6 downto 0));
end test;

architecture Behavioral of test is
    signal clk_Cent_i : unsigned(6 downto 0);
begin

    gen_clk : process (D0)
    begin
    if  D0 = '1' then
    clk_Cent_i<=clk_Cent_i + "1";
    end if;
    end process gen_clk;
output<= clk_Cent_i; 
end Behavioral;

Quiero presionar un botón para incrementar un contador y mostrar el número de contadores a 7 leds.

    
pregunta traveller

1 respuesta

3

Si desea contar pulsaciones individuales, debe reaccionar en los bordes de la señal. Así que, en lugar de

if  D0 = '1' then

necesitas escribir

if(rising_edge(D0)) then

Advertencia: esto solo funcionará si D0 está correctamente rebotado , es decir, se produce un único flanco ascendente en cada pulsación.

    
respondido por el Dmitry Grigoryev

Lea otras preguntas en las etiquetas