VHDL: Signal vs. Port

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)

Schauen Sie sich sigasi.com/content/vhdls-crown-jewel an , es spricht über Delta-Zyklen und vergleicht diesbezüglich vhdl mit Verilog.

Antworten (1)

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...