Procedure überladen: Variable vs. Konstante

Gast #1834457
Lesenswert?
• ▲
▼
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...
#1837033
Lesenswert?
• ▲
▼
TheFish schrieb:
> (Meine Güte, wie bescheuert
> ist das eigentlich - Konstante --> Variable sollte immer möglich sein!)

Doch wohl eher umgekehrt. Dort wo man eine Konstante angeben kann, 
sollte es möglich sein, den aktuellen Wert einer Variablen anzugeben.
Dort wo man eine Variable angeben muss, kann man nicht einen Konstante 
übergeben, eine Variable hat ja einen Speicherplatz, eine Konstante 
nicht.

VHDL]
myprocedure (constant : in std_logic);
[/VHDL]

sollte gehen. Damit kannst Du auch dem Wert einer Variablen übergeben.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren