Forum: FPGA, VHDL & Co. [XST] Immer ein Bit zu breiter Multiplizierer verwendet


von dito (Gast)


Lesenswert?

Hallo!

Also mir ist was beim Synthesieren mit XST aufgefallen, was ich mir 
nicht erklären kann.

Für folgende Multiplikation
1
z := (to_integer(x) * 60);
wird ein 12x7 Bit Multiplizierer verwendet, obwohl für die Konstante 60 
ja 6 Bit ausreichend wären. x hingegen, welches als 12 Bit deklariert 
ist, ist korrekt.
Scheinbar wird für alle Konstanten immer genau ein Bit zuviel gezählt.

Sichelich gibt es dafür einen guten Grund. Könnte mir den jemand nennen?

Danke,
dito

von Jan M. (mueschel)


Lesenswert?

Ich gehe mal davon aus, das Konstanten immer als signed angenommen 
werden, nicht als unsigned - und ein signed-Wert braucht natürlich ein 
Bit mehr.

von dito (Gast)


Lesenswert?

Ja, das könnte eine Erklärung sein. Ich habe schon versucht XST mittels
1
positive
 zu überzeugen, aber klappt auch nicht.

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

vieleicht noch nen to_unsigned dazu packen? Gff hängt es ja garnicht an 
der Konstanten sondern an der to_integer(x) wenn er da annimmt das die 
Zahl Signed ist muß/wird auch der zweite Operand (die Konstante) als 
Signed angenommen werden.

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.