Vektormultiplizierer

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!
Gast #836750
Hi,

das kann aber nicht sein. vecRes ist kein skalarer Wert. vecRes ist 32 
breit aber unterteilt in einen Vektor, in 16bit. Die obere Hälfte 
enthält das Ergebnis von vecA(1)*vecB(1) und die untere Hälfte 
vecA(2)*vecB(2).

Ich verstehe das garnicht mehr. Ich bin fast dabei diesen Prozessor 
aufzugeben :-(
#836856
Gast wrote:

> Hi,
>
> vecRes ist kein skalarer Wert. vecRes ist 32
> breit aber unterteilt in einen Vektor, in 16bit.

Häh? Wie issn der definiert, mail mal den kompletten Code. Neulich hieß 
vecRes auch noch resVec !?

> Ich verstehe das garnicht mehr. Ich bin fast dabei diesen Prozessor
> aufzugeben :-(

Der Prozessor ist völlig unschuldig, der tut, was Du ihm sagst.

Cheers
Detlef
Gast #836872
Hi Detlev,


der Prozessor ist in einer anderen Sprache geschrieben. Da wird andere 
Syntax verwendet. Ich habe den Fehler jetzt. Ich musste nur das Ergebnis 
in 32-bit casten (wie du das empfohlen hattest) und dann shiften. Jetzt 
ist alles korrekt.



Ich danke dir herzlichst!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.