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