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
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;
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.