05.07.2013 Aufrufe

VHDL Kompakt - CES

VHDL Kompakt - CES

VHDL Kompakt - CES

MEHR ANZEIGEN
WENIGER ANZEIGEN

Erfolgreiche ePaper selbst erstellen

Machen Sie aus Ihren PDF Publikationen ein blätterbares Flipbook mit unserer einzigartigen Google optimierten e-Paper Software.

6.4 Attribute<br />

Als Beispiel für den Umgang mit bidirektionalen Bussen, wurde ein Bustreiber/-Empfänger<br />

in einem Prozessorkern beschrieben. Die dabei verwendete bedingte Signalzuweisung (siehe<br />

folgendes Kapitel) ist eine Kurzschreibweise, die den Prozessen DRV._P des ersten Beispiels<br />

entspricht.<br />

Bei der bisher vorgestellten Beschreibung aufgelöster Signale, werden die Treiber durch die<br />

explizite Zuweisung von ’Z’ deaktiviert. <strong>VHDL</strong> besitzt noch weitere Mechanismen, um Signaltreiber<br />

ein- und auszuschalten. Da sich in der Praxis, speziell auch für die Synthese, die<br />

oben vorgestellte Beschreibung etabliert hat, werden diese hier nicht weiter erläutert.<br />

6.4 Attribute<br />

Neben den typgebundenen Attributen gibt es in <strong>VHDL</strong> auch Attribute, die sich auf Signale<br />

beziehen. Mit Hilfe dieser Attribute wird das dynamische Signalverhalten im <strong>VHDL</strong>-Code<br />

berücksichtigt, indem man zur Laufzeit des Simulators und Zeitpunkte auswertet.<br />

Syntax<br />

aktueller Zeitpunkt, liefert Wert<br />

〈signal〉’event : 〈boolean〉 -Signaländerung<br />

〈signal〉’active : 〈boolean〉 -Signalaktivität<br />

vorheriger Zeitpunkt, liefert Wert<br />

〈signal〉’last_event : 〈time〉 -Zeit seit letzter Signaländerung<br />

〈signal〉’last_active : 〈time〉 - –”– Signalaktivität<br />

〈signal〉’last_value : 〈value〉 -Wert vor letzter Signaländerung<br />

abgeleitete Signale<br />

〈signal〉’delayed[(〈timeExpr〉)] signal:〈type〉 -Verzögerung 〈timeExpr〉<br />

〈signal〉’stable [(〈timeExpr〉)] signal:boolean -keine Änderung seit 〈timeExpr〉<br />

〈signal〉’quiet [(〈timeExpr〉)] signal:boolean -keine Aktivität seit 〈timeExpr〉<br />

〈signal〉’transaction signal:bit -Wertewechsel bei Aktivität<br />

Beispiel<br />

entity FLIPFLOP is<br />

port ( CLK : in std_logic;<br />

D : in std_logic;<br />

Q : out std_logic);<br />

end entity FLIPFLOP;<br />

architecture BEHAV of FLIPFLOP is<br />

begin<br />

FF_P: process (CLK)<br />

begin<br />

if CLK’event and CLK = ’1’ and CLK ist 1 und der Wert hat sich geändert<br />

CLK’last_value = ’0’ und der letzte Wert war 0 (wegen ‘X‘)<br />

then Q

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!