Gast
#836607
Hi Leute,
ich bin's wieder mit meinem Vektorprozessor :-)
Ich habe ein Problem mit der Multiplikation. Ich bin jetzt dahinter
gekommen, was der Multiplizierer macht. Das ist ein 16-bit
Multiplizierer. Wenn ich 16x16-bit multipliziere, liefert er mir nur die
LBSs. Ich will aber die MSBs. Wenn ich das um 16-bit nach rechts
schiebe, bekomme ich Müll.
Hier der Code:
for (i=0;i<vecEl-1;i++{
resVec[i] = (aVec[i]*bVec[i]);
resVec[i] = resVec[i]>>16; //shift by 16, to keep the MSB-part
}
Ich habe das mit diesen Werten in Hex probiert:
Vec1= 0x837;Vec2=0x5b7f;
Das Ergebnis vom Multiplizierer ist: a049
Der erwartete Wert ist: 2efa049. Wie zu sehen ist, nur die unteren Bits
wurden geliefert.
Wenn ich das um 16 Stellen nach rechts schiebe, ist das Ergebnis:
ffffffff
Was ist daran falsch?
Ich danke euch für eure Hilfe!