Funktion mit mehreren Rückgabewerten

OP (Firma: Hochschule Bonn-Rhein-Sieg) #3997632
Hallo zusammen,

gibt es eine Möglichkeit mehrere Rückgabewerte aus Funktionen zu 
erhalten oder ein Array eines bestimmten Typs zurück zu geben?.

Habe jetzt folgenden Code:

Funktionskopf:
1
function test (...) return std_logic;

Funktion:
1
function test (...) return std_logic is 
2
    type arraytype is array (0 to 1) of std_logic;
3
    variable output : arraytype;
4
--...
5
      return output;
6
    end test;

Ich bekomme dabei immer folgende Fehlermeldung:
HDLCompiler:1728
Type error near output ; current type arraytype; expected type std_logic

Wenn ich den Typ-Namen als Rückgabewert im Kopf und Körper der Funktion 
nehme also,
1
function test (...) return arraytype;
dann bekomme ich die Fehlermeldung, dass arraytype nicht deklariert ist.

Was kann ich machen, um den Fehler zu beheben?

Ich hoffe ihr könnt mir weiter helfen und bedanke mich schon mal an 
dieser Stelle für die Hilfe

VG

Nico Brinkmann
Gast #3997696
>function test (...) return arraytype;
<
>dann bekomme ich die Fehlermeldung, dass arraytype nicht deklariert ist.

Da deklarier doch einfach Funktion und Typ (außerhalb der Funktion) in
einem Package
Moderator (Firma: Titel) Persönliche Seite #3997704
Nico Brinkmann schrieb:
> gibt es eine Möglichkeit mehrere Rückgabewerte aus Funktionen zu
> erhalten oder ein Array eines bestimmten Typs zurück zu geben?.
Es gibt auch Prozeduren, die können mehrere Werte gleichzeititg 
bearbeiten.

> dann bekomme ich die Fehlermeldung, dass arraytype nicht deklariert ist.
Klar, die Deklaration ist ja auch komplett unterschiedlich. Ein 
arraytype ist kein std_logic:
1
 ... return std_logic is
2

3
 variable output : arraytype;
4
 ... return output;


Probiers einfach mal so:
1
function test (...) return std_logic_vector;
2

3
...
4

5
function test (...) return std_logic_vector is 
6
    variable output : std_logic_vector(1 downto 0);
7
      
8
    return output;
9
end test;

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 11 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [vhdl]VHDL-Code[/vhdl]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.