Sincronización:
---------------------
Port ( ...
rotary_a : in std_logic;
rotary_b : in std_logic;
...);
...
signal rotary_a_in : std_logic;
signal rotary_b_in : std_logic;
signal rotary_in : std_logic_vector(1 downto 0);
...
rotary_a_in <= rotary_a;
rotary_b_in <= rotary_b;
...
rotary_in <= rotary_b_in & rotary_a_in;
---------------------
en el último paso, ¿cuál es la ventaja de usar señales temporales? uno podría lograr el mismo resultado usando los puertos directamente ( rotary_b & rotary_a
)
En este ejemplo, ninguno y sí.
Habrá una diferencia: la señal de entrada rotativa se generará un ciclo delta antes si realiza el cambio obvio.
Si hay algo más dudoso en el resto del diseño; por ejemplo, asignaciones en una señal de reloj (retrasándola por un ciclo delta innecesario), las dos versiones pueden mostrar resultados diferentes en la simulación.
Sería mejor solucionar el problema real; por ejemplo, señal de reloj, pero si está utilizando IP sobre la cual no tiene control, es posible que de vez en cuando necesite recurrir a bodges como este. Entonces es mejor decir
rotary_a_in <= rotary_a after 1 ps;
y comenta porque...
apalopohapa