VHDL Kompakt - CES
VHDL Kompakt - CES
VHDL Kompakt - CES
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