La "ley general" es que
cualquier cosa que su proceso necesita saber acerca de los cambios de tiene que estar en la lista de sensibilidad.
Para un registro synthesisable típico con un restablecimiento sincrónica:
process (clk) is
begin
if rising_edge(clk) then
if reset = '1' then
-- do reset things
else
-- read some signals, assign some outputs
end if;
end if;
end process;
Sólo el reloj tiene que estar en la lista, como todo lo demás sólo se mira cuando el reloj cambia (debido a la declaración if rising_edge(clk)
.
Si necesita un asíncrono reinicio:
process (clk, reset) is
begin
if reset = '1' then
-- do reset things
elsif rising_edge(clk) then
-- read some signals, assign some outputs
end if;
end process;
entonces la señal reset
también debe estar en la lista de sensibilidad, ya que su diseño tiene que comprobar el valor de la misma cada vez que se cambia, con independencia de lo que el reloj está haciendo.
para la lógica combinatoria, evito utilizando procesos completamente debido a los problemas de mantenimiento de la lista de sensibilidad-up-hasta la fecha, y el potencial para la simulación entonces comportarse de manera diferente al código sintetizada. Esto se ha aliviado con la palabra clave all
en VHDL-2008, pero todavía no me he encontrado queriendo escribir lógica combinatoria larga y complicada de modo que un proceso ayudaría.
¡No es correcto! _ "la lista de sensibilidad no tiene influencia sobre el comportamiento de su diseño una vez que se ha sintetizado." _ Dependiendo de la herramienta de síntesis, la lista de sensibilidad puede ignorarse, o puede deducirse un enganche. – Philippe
Ok, "no tiene influencia en muchas * herramientas de síntesis", donde "muchas" son las que he usado. –