VHDL: Señal vs Puerto

4

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 la misma salida usando puertos directamente ( rotary_b & rotary_a )

    
pregunta IljaBek

1 respuesta

4

En este ejemplo, ninguno y sí.

Habrá una diferencia: la señal rotary_in se generará un ciclo delta más temprano si realiza el cambio obvio.

Si hay algo más confuso 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 arreglar el problema real; p.ej. señal de reloj, pero si está utilizando IP sobre la cual no tiene control, es posible que ocasionalmente deba recurrir a bodegas como esta. Entonces es mejor decir

rotary_a_in <= rotary_a after 1 ps;

y comenta por qué ...

    
respondido por el Brian Drummond

Lea otras preguntas en las etiquetas