Ich benutzte einen 10 Bit-Vektor, dessen Wert auf maximal 511 limitiert wird und der als Basis für eine Rechnung dienen soll. Der Einfachheit halber wandle ich ihn in einen unsigned und multipliziere ihn mit einer 7 bit-Zahl ("127). Da der Vektor auf 9 bit eingeschränkt wird (8 downto 0), kommen maximal 16 bit zusammen. Ergebnis <= std_logic_vector(unsigned(Wert(8 downto 0)) * 127 ); ModelSIM meldet aber, daß ein Fehler vorliegt. "Length of expected is 16; length of actual is 18." Warum rechnet der sich hier 18 aus? Warum kommt das nicht als Warning? Bitte keine Hinweise auf die Methodik, ich weiß dass man nicht mit Vektoren direkt rechnen sollte, aber normalerweise geht es. (numeric Standard - die wird verwendet.)
Du musst die 127 noch mit to_unsigned und der gewünschten Länge auf die 7 Bit bringen.
Christian R. schrieb: > Du musst die 127 noch mit to_unsigned und der gewünschten Länge auf die > 7 Bit bringen. Das wäre die saubere Lösung, allerdings frage ich mich auch, woher er sich bei der 127 ausgerechnet 9 Bit herzieht. Ich nehme an, er hat dieselbe Einstellung genommen, die auch von vorne her kommt. Richtig(er) wäre natürlich, direkt auf Integerwerten zu arbeiten, dann hat man keine Längenprobleme.
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.