mikrocontroller.net

Forum: FPGA, VHDL & Co. Procedure überladen: Variable vs. Konstante


Autor: TheFish (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:
myprocedure (variable : in std_logic);

"myprocedure" soll jetzt entweder mit einer Konstante oder eben einer 
Variable als Parameter aufgerufen werden:
variable myvariable : std_logic := '0'

myprocedure ('0');
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.
myprocedure (variable : in std_logic);
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...

Autor: Klaus Falser (kfalser)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: TheFish (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tjaa, da habe ich vielleicht zu oft in Software programmiert... was du 
sagst klingt logisch - werde ich versuchen ;)

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.