Forum: FPGA, VHDL & Co. if mit unsigned


von Daniel (Gast)


Lesenswert?

Habe folgendes Problem beim Kombilieren erkennt er nicht das operator 
'='

 if iSel= "000" then
      oY <= iInput(1);
    elsif iSel = "001" then
      oY <= iInput(2);
    elsif iSel = "010" then
      oY <= iInput(3);
    elsif iSel = "011" then.....

Fehlermeldung:

# ** Error: C:/Documents and Settings/BOSS/My  No feasible entries for 
infix operator "=".
# ** Error: C:/Documents and Settings/BOSS/My  Type error resolving 
infix expression "=" as type std.standard.boolean.


Habe einen Subtype in Package erstellt:
subtype sSelect is unsigned (0 to 2);

....
iSel:in sSelect;
....


Mit Case Statements funktioniert es!

Finde den Fehler nicht.

Funktioniert auch mit std_match nicht, findet die Funktion nicht.

von Chris (Gast)


Lesenswert?

Heißt der Befehl nicht else if?

von Daniel (Gast)


Lesenswert?

Nein eigentlich nicht!Ist VHDL nicht C

von der mechatroniker (Gast)


Lesenswert?

Wie willst du einen skalaren Typ mit einem Vektor vergleichen?

Hinweis: unsigned (0 To 2) ist kein Vektor von 3 unsigneds (das wäre 
Array(0 To 2) of unsigned), sondern ein auf den Wertebereich 0 bis 2 
eingeschränktes unsigned.

von CaH (Gast)


Lesenswert?

Wie wär's mit "==" statt "="

...ohne von VHDL eine Ahnung zu haben

Gruß
CaH

von thomas (Gast)


Lesenswert?

Ohne Ahnung sollte man vielleicht keine Antwort geben ... diesen 
Operator gibts nicht in VHDL.
Die Meldung bedeutet, dass der "="-Operator nicht für die verwendeten 
Datentypen existiert. Versuch mal iSel als std_logic_vector(0 to 2) zu 
verwenden und nicht als unsigned(0 to 2).

von Daniel (Gast)


Lesenswert?

Danke!

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.