Multiplikation (wieder mal)

Gast #3157060
Lesenswert?

Ich verwende in einem uraltdesign, das nicht mit numeric arbeitet, eine 
Multiplikation auf der Basis von e <= std_logic_vector (signed (x) * 
sigend(y));

und hadere ein wenig mit den Bitbreiten, bzw ich bin mir unklar, wie und 
wo ich das Ergebnis absägen muss.

Z.B. ergibt ein 10 Bit Wert als signed maximal (511 x 511), was in einen 
18 bit Vektor passt, während es "brutto" ja 20 Bit sind.

Wie geht man da vor, wenn sich die Rechung durch etliche 
Zwischenrechungen durchzieht?

Das maximale-Ergebnis zu simulieren ist schwer, weil ich diesen Fall 
nicht sicher einstellen kann, da zuviel abgezogen und hin und her 
gerechnet wird.

Fehlerrechung?
Gast #3157502
Lesenswert?

FPGA-Programmierer schrieb im Beitrag #3157060:
> Fehlerrechung?

Die ist bei Differenzen, insbesondere bei unbekanntem Verhältnis von 
Minuend zu Subtrahend, schwierig.

Eine Monte-Carlo-Simulation auf einem leistungsfähigen Rechner, kann dir 
die Wertebereiche zeigen. Wenn Überläufe vorkommen dürfen, brauchst du 
eine Überlauferkennung und ein Flag für ungültige Ergebnisse. Sonst 
hilft nur die worst-case Betrachtung.
Persönliche Seite #3158101
Lesenswert?

FPGA-Programmierer schrieb im Beitrag #3157060:
> Z.B. ergibt ein 10 Bit Wert als signed maximal (511 x 511), was in einen
>
> 18 bit Vektor passt, während es "brutto" ja 20 Bit sind.

Das stimmt nur, wenn nicht der negativste Wert -512 auftritt. Ansonsten 
hast Du Recht mit Deiner Überlegung. Daher empfehle ich ja immer, diesen 
wegzulassen, um real mit n-1 Vektorbreite arbeiten zu können. Dann sind 
es wieder (n-1) + (n-1) = n-2 Bit - (vorzeichenbereinigt).

Am Besten macht man sich fpr komplizierte Systeme ein Excel-Sheet und 
lässt sich die Ergebnisse durchrechnen. Mit schnell durchgespielten 
worst case Betrachtungen am Eingang erhält man dann an jeder Stelle die 
benötigte Auflösung.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren