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

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!