VHDL-Forum - Allgemeines

Umsetzung rising_edge(clk)

Umsetzung rising_edge(clk)

In einem Beitrag habe ich gelesen, dass man statt

if clk'event and clk = '1' then

besser

if rising_edge(clk) then

schreiben sollte. Welchen Grund hat das? Eigentlich sollten beide Varianten das gleiche Ergebnis in Hardware und Simulation haben, oder?
Ich benutze bisher nur Variante 1 in meinen synchronen Umgebungen.

Sven

Re: Umsetzung rising_edge(clk)

Hallo,
soweit ich weiß, ist die zweite Möglichkeit erst in dem neueren VHDL-Standard unterstützt und hat ausser der kürzeren Schreibweise keine Auswirkungen.

Gruß

Bernd

Re: Umsetzung rising_edge(clk)

Die Schreibweise "rising_edge(clk)" würde einzeln ausgeschrieben bedeuten:

clk = '1' AND clk'event AND clk'last_value = '0'

Das heisst bei der einfachen Schreibweise ohne das Attribut "last_event" sind nur die Übergänge von 0 -> 1 abgedeckt, aber nicht z.B. der Übergang von X -> 1. In der Synthese hat dies keine Bedeutung, jedoch in der reinen abstrakten Modellbeschreibung schon.