Synchronisation:
---------------------
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;
---------------------
Was ist im letzten Schritt der Vorteil der Verwendung temporärer Signale? Man könnte die gleiche Ausgabe mit Ports direkt erreichen ( rotary_b & rotary_a
)
In diesem Beispiel keine und ja.
Es gibt einen Unterschied: Das Signal rotary_in wird einen Delta-Zyklus früher erzeugt, wenn Sie die offensichtliche Änderung vornehmen.
Wenn im Rest des Designs noch etwas anderes zwielichtig ist; beispielsweise Zuweisungen an ein Taktsignal (Verzögerung um einen unnötigen Delta-Zyklus) können die beiden Versionen unterschiedliche Ergebnisse in der Simulation zeigen.
Es wäre besser, das eigentliche Problem zu beheben; B. Taktsignal, aber wenn Sie IP verwenden, über das Sie keine Kontrolle haben, müssen Sie möglicherweise gelegentlich auf solche Fehler zurückgreifen. Dann ist es besser zu sagen
rotary_a_in <= rotary_a after 1 ps;
und kommentiere warum...
Apalopohapa