Seltsame Vektorinterpretation durch ModelSIM

Gast #4598511
Lesenswert?

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.)
Gast #4598812
Lesenswert?

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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren