Forum: FPGA, VHDL & Co. Addition Signed Überlauf / Übertrag, loop


von Carsten (Gast)


Lesenswert?

Hallo Leute,
ich hab folgendes Problem

a : 16 bit lang, b: 16 bit lang, y: 33 bit lang

diese Variablen werden im folgenden Ausdruck verwendet

for i in 0 to 5 loop
y := y + b * a
end loop;

Das Problem sind die Überträge, wenn man eine Variable zu sich selbst 
addiert. Ich habe mir folgendes überlegt:

for i in 0 to 5 loop
y := resize(y(32 downto 1),33)+resize(b*a),33);
end loop;

Habe ich damit alle Überträge beachtet? Ist das überhaupt richtig?
Ist der Fehler durch das Abschneiden des letzten Bits zu groß?
Gibt es eine elegantere Lösung?
Folgende Bedingung noch: Die Bitlänge der Summanden muss laut 
Entwicklungsungsumgebung gleich der Länge der Summe sein.

Besten Dank, ich hoffe ich habe mich verständlich ausgedrückt.

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.