Tengo dificultades para entender cómo funciona el mecanismo de retardo (principalmente retardo de inercia: DESPUÉS) en VHDL. Comenzaré con esto:
target <= waveform AFTER 3 NS;
Mientras que waveform
sea un pulso más largo que 3ns, solo se retrasará 3ns, de lo contrario no aparecerá nada en target
. Pero eso es solo el resultado de cómo VHDL interpreta la asignación de señal anterior. ¡Quiero saber qué sucede exactamente allí! Por ejemplo, qué sucede si tenemos una asignación condicional que define waveform
en sí, como esto:
waveform <= '1' AFTER 2 NS WHEN (waveform = '0' AND NOW < 10 NS)
ELSE '0' AFTER 5 NS;
(¡Me dejé llevar un poco al escribir la condición!), lo que quiero decir es qué time
y el valor para waveform
se tienen en cuenta al evaluar la condición para asignar waveform
a target
. O simplemente se evalúa (dibuja) waveform
para obtener una WAVEFORM real y luego se aplica a target
como dije anteriormente (menos de 3ns se tira, de lo contrario simplemente se desplaza 3ns); [Sé que obviamente no es la segunda forma, solo quería hacer mi punto.]