Gast
#2464641
Ich hätte zwei Fragen zu dem Thema signed/unsigned hinsichtlich der Multiplikation: Bei der MUL zweier Werte von (7 downto 0) vom Typ unsigned erhalte ich als Maximalergebnis 255*255 und damit weitgehend ausgelastete 16 Bit als Ergebnis. Bei der gleichen MUL vom Typ signed aber maximal (-128)*(-128) und damit einen weitgehend leeren 15 Bit Vektor und eines fürs Vorzeichen. 1) Wenn ich den Wertebereich auf -127 begrenze, könnte ich doch ein Bit sparen und die Dynamik der Rechung erhöhen, oder? Es geht mir um eine MUL im Bereich +/- 99%, die ich mit z.B. 127/64 (ca 1,9) oder 64/64 (1,0) oder auch 32/64 (ca 0,5) realisiere. Ich hätte gern ein Bit mehr, möchte also z.B. den Wert (8 Bit) mit dem Korrekturfaktor (9 Bit) belegen. In einem anderen Modul brauche ich zudem nur Faktor +/- 1,4 damit könnte man noch mal ein Bit weniger im Ergebnis haben, weil 1,4*1,4 < 2. Bzw ich kann den Korrekturfaktor mit 10 Bit codieren, ohne überzulaufen. 2) Kann ich die Wertebereichsbegrenzung in VHDL durch den range irgendwie automatisch berücksichtigen lassen, sodass die Vektorlängen bei der Synthese richtig geprüft werden? Bisher muss ich immer mit einem Zwischenergebnis rechnen und die nicht mehr beweglichen Bits ignorieren. Heinweis: Ich kann keine numeric lib verwenden, weil der Code teilweise mit altem Zeug automatisch erzeugt wird und ich die LIBs nicht ändern kann.