Forum: FPGA, VHDL & Co. Funktion STD_LOGIC zu STD_LOGIC_VECTOR übergeben


von Hansatic (Gast)


Lesenswert?

Hallo benötige Hilfe bei der Umsetzung von folgendem Package

PACKAGE GATE_PACKAGE IS
  ----------------------------------------------------------------
  FUNCTION REDUCE_AND(DIN : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC;
  FUNCTION REDUCE_OR(DIN  : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC;
  FUNCTION REDUCE_XOR(DIN : IN STD_LOGIC_VECTOR) RETURN STD_LOGIC;
  ----------------------------------------------------------------
END PACKAGE GATE_PACKAGE;

Wie rufe ich die Funktionen auf mit drei STD_LOGIC Variablen (a,b,c)?
REDUCE_XOR(a,b,c)  funktioniert nicht.

Danke für eure Hilfe.

von Dietmar S. (df8de)


Lesenswert?

Hallo Hansatic,

konkateniere die 3 STD_LOGIC zu einem STD_LOGIC_VECTOR :

REDUCE_XOR(a & b & c)

Gruss

Dietmar

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Hansatic schrieb:
> Wie rufe ich die Funktionen auf mit drei STD_LOGIC Variablen (a,b,c)?
Wenn man drei einzelne STD_LOGIC hat, dann ist es ein wenig seltsam, 
diese zum Vektor zusammenfügen mit dem Ziel, wieder einen STD_LOGIC 
zurückzubekommen...

Ich würde da eher sowas schreiben:
1
   r <= a xor b xor c;

: Bearbeitet durch Moderator
von Hansatic (Gast)


Lesenswert?

Danke euch beiden.

@Lothar Miller im Prinzip kann man noch mehr als drei Variablen 
übergeben, sie werden in der Funktion miteinander iterativ XOR 
verarbeitet.

von Hansatic (Gast)


Lesenswert?

Bekomme jetzt folgenden Fehler beim Compilieren

**Ambiguous type in infix expression; 
ieee.std_logic_1164.STD_LOGIC_VECTOR or 
ieee.std_logic_1164.STD_ULOGIC_VECTOR.
**Illegal type conversion to ieee.std_logic_1164.STD_LOGIC_VECTOR 
(operand type is not known).
**Type conversion (to ieee.std_logic_1164.STD_LOGIC_VECTOR) conflicts 
with expected type ieee.std_logic_1164.STD_LOGIC.

von Hansatic (Gast)


Lesenswert?

Sorry mein Fehler die Lösung von Dietmar klappt.

Danke nochmal.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.