Problema con comando "after" en VHDL

Hola a todos.

¿Alguien sabe si el comando after solo funciona en la simulación?.. he estado tratando de utilizarlo, y funciona muy bien en la simulación, pero no trabaja cuando se programa la FPGA.

¿alguien sabe si es que es solo aplicable a señales y no fuinciona bien apra entradas y salidas?

El código con el que he estado probando es muy sencillo:

---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------

use IEEE.STD_LOGIC_1164.ALL;

entity con_retardos is
Port ( ctrl : in STD_LOGIC;
a : in STD_LOGIC;
b : in STD_LOGIC;
salida : out STD_LOGIC);
end con_retardos;

architecture Behavioral of con_retardos is

constant SIM_TIME : time := 1000 ms;

BEGIN

with ctrl select

salida <= TRANSPORT a after SIM_TIME when '0',
b after SIM_TIME when '1',
'0' when others;

end Behavioral;

---------------------------------------------------------------------------------------
---------------------------------------------------------------------------------------

En la simulación la señal "salida" aparece después de un retardo, pero cuando programo la FPGA no funciona. Yo pensaba que este comando trabajaba conectando varios buffers en serie para cuadrar los retardos.

Gracias por adelantado.
 
Hola

El comando after NO funciona al compilar el código, tan sólo para simulación. Igualmente hay más comandos que tampoco te compilarán, y hasta operadores donde un ejemplo típico es el operador división ("/").

Tienes que tener en cuenta que el compilador no es tan listo como para "generarte el hardware que produzca el efecto de ese after", sino que tienes que configurarte el retardo tú (por ejemplo con un contador, si quieres temporizar 1s y la frecuencia de reloj son 50MHz, tendrías que contar 50.000.000 de veces y después de ello generar el evento).

Saludos
 
Atrás
Arriba