¿Cómo disparar en ambos bordes en VHDL?

0

En Verilog si usamos

  

siempre @ (reloj)

podemos activar un módulo en ambos lados ascendente y descendente. ¿Hay algún método para hacer lo mismo en VHDL.

    
pregunta tollin jose

2 respuestas

1

Verifique explícitamente los flancos de reloj ascendentes y descendentes dentro del proceso:

process (clk)
begin
  if (clk'event and (clk = '1' or clk = '0')) then
    null; -- Do stuff.
  end if;
end process;

O usando las funciones respectivas:

process (clk)
begin
  if (rising_edge(clk) or falling_edge(clk)) then
    null; -- Do stuff.
  end if;
end process;

Sin embargo, hay diferencias sutiles entre las dos variantes (por ejemplo, enlace ).
Tampoco esperes que esto sea sintetizable.

    
respondido por el damage
0

En VHDL, puede usar una sentencia PROCESS para hacer cosas cuando cambia una señal de entrada. Para desencadenar los bordes ascendentes y descendentes, utilizarías las funciones falling_edge () y rising_edge () junto con una instrucción OR.

es decir.

ENTITY example IS
PORT(
    a, clk : IN BIT;
    b : OUT BIT);
END example;

ARCHITECTURE behavior OF example IS
BEGIN
    PROCESS (clk) -- Whenever the clock signal changes....
    BEGIN
        IF (rising_edge(clk) OR falling_edge(clk)) THEN
            -- do something 
    END PROCESS;
END behavior;

fuente: enlace

    
respondido por el Tom

Lea otras preguntas en las etiquetas