Hallo Leute,
meine Frage wurde hier zumindest so ähnlich schon mal gestellt, aber es
gab keine Antwort (Beitrag "Procedure überladen").
An folgender Beispielprozedur erläutere ich kurz, was ich möchte:
1 | myprocedure (variable : in std_logic);
|
"myprocedure" soll jetzt entweder mit einer Konstante oder eben einer
Variable als Parameter aufgerufen werden:
1 | variable myvariable : std_logic := '0'
|
2 | |
3 | myprocedure ('0');
|
4 | myprocedure (myvariable);
|
Die Tools beschweren sich jetzt allerdings beim ersten Aufruf, dass das
Aufzählungsliteral '0' keine Variable ist. (Meine Güte, wie bescheuert
ist das eigentlich - Konstante --> Variable sollte immer möglich sein!)
Wenn ich die Prozedur wie folgt überlade, bekomme ich - entsprechend dem
oben zitiertem Beitrag - einen Fehler, dass dieser Prozedurname bereits
verwendet würde.
1 | myprocedure (variable : in std_logic);
|
2 | myprocedure (constant : in std_logic);
|
Ganz schön dämlich. Kann ich mit VHDL irgendwie erreichen was ich
möchte, ohne x-mal die selbe Prozedur zu implementieren (und jeweils den
Namen leicht abzuwandeln)? Irgendwie muss es doch möglich sein, denn
viele Standarfunktionen wie to_unsigned() nehmen sowohl Konstanten als
auch Variablen als Parameter an...