Forum: FPGA, VHDL & Co. Seltsame Vektorinterpretation durch ModelSIM


von Markus F. (Gast)


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.)

von Christian R. (supachris)


Lesenswert?

Du musst die 127 noch mit to_unsigned und der gewünschten Länge auf die 
7 Bit bringen.

von Weltbester FPGA Pongo (Gast)


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.

von Markus F. (Gast)


Lesenswert?

Danke an alle!

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.