Forum: FPGA, VHDL & Co. multiplikation: bound check failed


von Tim (Gast)


Lesenswert?

jetzt weiss ich wieder, wieso ich VHDL in der Uni nicht mochte...

ich habe drei Signale, alle signed:

signal wert: signed (10 downto 0);
signal multiplikator: signed (7 downto 0);
signal ergebnis: signed (30 downto 0);


innerhalb eines process rechne ich dann:

ergebnis <= wert * multiplikator;

Wenn ich mich richtig erinnere kann das Ergebnis einer n- und einer 
k-bit-langen Zahl maximal eine n+k-bit lange Zahl sein, oder? In meinem 
Fall sollte das Produkt einer 8-Bit-Zahl und einer 11-Bit-Zahl also 
locker in mein 31-bit grosses Ergebnis passen, gell? Nur bloederweise 
schmeisst mir mein Simulationsknecht (ghdl) fuer die 
Multiplikationszeile folgenden Fehler raus:

./testbench:error: bound check failure at sine.vhdl:54

Was ist hier falsch?

Danke, Tim

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Es passt zwar locker rein, aber es muß genau rein passen. VHDL ist 
da so pingelig. Besser also so:
ergebnis(18 downto 0) <= wert * multiplikator;

von Tim (Gast)


Lesenswert?

Ohm man, was fuer einen Grund gibt es denn dafuer?

Immerhin, das funktioniert. Was allerdings nicht funktioniert ist, wenn 
ich das ergebnis direkt als 18 downto 0 deklarieren. Dann bekomme ich 
wieder die selbe Fehlermeldung. Das verstehe mal einer.
Tim

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.