Forum: FPGA, VHDL & Co. Multiplikation (wieder mal)


von FPGA-Programmierer (Gast)


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?

von Wolfgang (Gast)


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.

von J. S. (engineer) Benutzerseite


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.

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.