VHDL Kompakt - CES
VHDL Kompakt - CES
VHDL Kompakt - CES
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
6.3 Implizite Typauflösungen und Bustreiber<br />
Bei Signalzuweisungen auf ein Signal des aufgelösten Typs wird implizit die damit verbundene<br />
Funktion aufgerufen. Sie berechnet den effektiven Wert des Signals aus allen Treibern.<br />
Analog zu dem subtype kann auch ein aufzulösendes Signal deklariert werden als:<br />
Syntax<br />
signal 〈identifier list〉 : 〈sub typeId〉;<br />
signal 〈identifier list〉 : 〈functionId〉 〈typeId〉;<br />
In dem Beispiel wird eine Auflösungsfunktion in Form eines wired-or auf einem 4-wertigen<br />
Datentyp beschrieben. Zwei Prozesse, die tristate-Treiber modellieren, benutzen ein gemeinsames<br />
Ausgangssignal.<br />
SEL1<br />
SIG1<br />
SEL2<br />
SIG2<br />
DRV1_P<br />
DRV2_P<br />
SIGR<br />
WIRED_OR<br />
Beispiel<br />
4-wertiger Typ und entsprechender Array-Typ für Funktion<br />
type FOURVAL is (’X’, ’0’, ’1’, ’Z’);<br />
type FOUR_VECTOR is array (integer range ) of FOURVAL;<br />
Auflösungsfunktion<br />
function WIRED_OR (INP: FOUR_VECTOR) return FOURVAL is<br />
variable RESULT : FOURVAL := ’0’; Ergebnis, Bus mit pull-down<br />
begin<br />
for I in INP’range loop für alle Eingänge<br />
if INP(I) = ’1’ then return ’1’; fertig<br />
elsif INP(I) = ’X’ then RESULT := ’X’;<br />
-- else null; INP(I)=’Z’ oder ’0’<br />
end if;<br />
end loop;<br />
return RESULT; also: ’X’ oder ’0’<br />
end function WIRED_OR;<br />
Untertyp mit Auflösungsfunktion<br />
subtype FOUR_RES is WIRED_OR FOURVAL;<br />
45