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.

5.2 Unterprogramme<br />

Overloading<br />

Wie in einigen Programmiersprachen können auch in <strong>VHDL</strong> Funktionen und Prozeduren<br />

überladen werden, indem sie mehrfach definiert sind, sich dabei aber durch unterschiedliche<br />

Typen oder die Anzahl der Parameter unterscheiden. Beim Aufruf wird dann, entsprechend<br />

Anzahl und Typ der Argumente, die entsprechende Funktion/Prozedur ausgewählt. Durch<br />

Overloading können, trotz strikter Typbindung, Operatoren und Funktionen sehr allgemein<br />

benutzt werden.<br />

Argument-Typ Zwischen den Unterprogrammen wird durch den Typ der Argumente unterschieden.<br />

Beispiel<br />

function DECR (X: integer) return integer is integerArgument<br />

begin<br />

return (X - 1);<br />

end function DECR;<br />

function DECR (X: real) return real is realArgument<br />

begin<br />

return (X - 1.0);<br />

end function DECR;<br />

...<br />

variable A, B: integer;<br />

...<br />

B := DECR(A); benutzt erste Funktion<br />

Argument-Anzahl Zwischen der Unterprogrammen wird durch die Anzahl der Argumente<br />

unterschieden.<br />

Beispiel<br />

function MAX (A0, A1: integer) return integer is<br />

begin 2 Argumente<br />

...<br />

end function MAX;<br />

function MAX (A0, A1, A2: integer) return integer is<br />

begin 3 Argumente<br />

...<br />

end function MAX;<br />

function MAX (A0, A1, A2, A3: integer) return integer is<br />

begin 4 Argumente<br />

...<br />

end function MAX;<br />

Auch die bestehenden Operatoren können noch weiter überladen werden, was insbesondere<br />

bei zusätzlichen Arithmetiken (numeric_bit, numeric_std) oft benutzt wird.<br />

Aber auch andere, herstellerspezifischen Packages nutzen diese Möglichkeit, dabei werden<br />

neben eigenen Typen auch logische (and, or. . . ), arithmetische (+, -, *. . . ) und Vergleichsoperatoren<br />

(=, /=, >,. . . ) auf diesen Typen definiert. Beispielsweise stellt SYNOPSYS für<br />

39

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

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!