Hey, ich arbeite mit der std_numeric Bibliothek und habe diesbezüglich eine Frage. Wieso kann ich z.B. einen unsigned Wert + 1 rechnen: variable uns_dummy : unsigned(7 downto 0) := (others => '0'); uns_dummy := uns_dummy + 1; Aber in einer if- oder case-Abfrage nicht mit solch einem Wert vergleichen?: if uns_dummy = 1 then ... end if; Ich muss nämlich in dieser Art und Weise arbeiten: if uns_dummy = "00000001" then ... end if; if uns_dummy = x"01" then ... end if; Vielen Dank!
Update: Die if-Abfrage geht sehr wohl wie oben beschrieben, aber die case-Abfrage nicht.
Vermutung: Der = Operator für unsigned und integer ist in der numeric_std definiert. case nutzt kein = und damit bist du an dessen Restriktionen gebunden.
Digi schrieb: > ich arbeite mit der std_numeric Bibliothek und habe diesbezüglich eine > Frage. So eine Bibliothek gibt's nicht. Du meinst wahrscheinlich numeric_std? Nimm VHDL 2008, dann kannst Du
1 | case t is |
2 | when 8d"1" => |
3 | i <= i + 1; |
4 | when 8d"2" => |
5 | i <= i + 2; |
6 | ...
|
7 | end case |
schreiben. Und wenn dir das nicht gefällt (oder deine Tools kein VHDL2008 können), dann schreib':
1 | case to_integer(t) is |
2 | when 1 => |
3 | ...
|
4 | end case; |
:
Bearbeitet durch User
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.